aboutsummaryrefslogtreecommitdiff
path: root/util-linux/hwclock.c
diff options
context:
space:
mode:
Diffstat (limited to 'util-linux/hwclock.c')
-rw-r--r--util-linux/hwclock.c33
1 files changed, 18 insertions, 15 deletions
diff --git a/util-linux/hwclock.c b/util-linux/hwclock.c
index 5df56de15..29f51021e 100644
--- a/util-linux/hwclock.c
+++ b/util-linux/hwclock.c
@@ -16,11 +16,6 @@
16//config: shutdown in the hardware clock, so the hardware will keep the 16//config: shutdown in the hardware clock, so the hardware will keep the
17//config: correct time when Linux is _not_ running. 17//config: correct time when Linux is _not_ running.
18//config: 18//config:
19//config:config FEATURE_HWCLOCK_LONG_OPTIONS
20//config: bool "Support long options (--hctosys,...)"
21//config: default y
22//config: depends on HWCLOCK && LONG_OPTS
23//config:
24//config:config FEATURE_HWCLOCK_ADJTIME_FHS 19//config:config FEATURE_HWCLOCK_ADJTIME_FHS
25//config: bool "Use FHS /var/lib/hwclock/adjtime" 20//config: bool "Use FHS /var/lib/hwclock/adjtime"
26//config: default n # util-linux-ng in Fedora 13 still uses /etc/adjtime 21//config: default n # util-linux-ng in Fedora 13 still uses /etc/adjtime
@@ -293,12 +288,12 @@ static void set_system_clock_timezone(int utc)
293} 288}
294 289
295//usage:#define hwclock_trivial_usage 290//usage:#define hwclock_trivial_usage
296//usage: IF_FEATURE_HWCLOCK_LONG_OPTIONS( 291//usage: IF_LONG_OPTS(
297//usage: "[-r|--show] [-s|--hctosys] [-w|--systohc] [-t|--systz]" 292//usage: "[-r|--show] [-s|--hctosys] [-w|--systohc] [--systz]"
298//usage: " [-l|--localtime] [-u|--utc]" 293//usage: " [--localtime] [-u|--utc]"
299//usage: " [-f|--rtc FILE]" 294//usage: " [-f|--rtc FILE]"
300//usage: ) 295//usage: )
301//usage: IF_NOT_FEATURE_HWCLOCK_LONG_OPTIONS( 296//usage: IF_NOT_LONG_OPTS(
302//usage: "[-r] [-s] [-w] [-t] [-l] [-u] [-f FILE]" 297//usage: "[-r] [-s] [-w] [-t] [-l] [-u] [-f FILE]"
303//usage: ) 298//usage: )
304//usage:#define hwclock_full_usage "\n\n" 299//usage:#define hwclock_full_usage "\n\n"
@@ -306,12 +301,18 @@ static void set_system_clock_timezone(int utc)
306//usage: "\n -r Show hardware clock time" 301//usage: "\n -r Show hardware clock time"
307//usage: "\n -s Set system time from hardware clock" 302//usage: "\n -s Set system time from hardware clock"
308//usage: "\n -w Set hardware clock from system time" 303//usage: "\n -w Set hardware clock from system time"
309//usage: "\n -t Set in-kernel timezone, correct system time" 304//usage: IF_LONG_OPTS(
305//usage: "\n --systz Set in-kernel timezone, correct system time"
306//usage: )
310//usage: "\n if hardware clock is in local time" 307//usage: "\n if hardware clock is in local time"
311//usage: "\n -u Assume hardware clock is kept in UTC" 308//usage: "\n -u Assume hardware clock is kept in UTC"
312//usage: "\n -l Assume hardware clock is kept in local time" 309//usage: IF_LONG_OPTS(
310//usage: "\n --localtime Assume hardware clock is kept in local time"
311//usage: )
313//usage: "\n -f FILE Use specified device (e.g. /dev/rtc2)" 312//usage: "\n -f FILE Use specified device (e.g. /dev/rtc2)"
314 313
314//TODO: get rid of incompatible -t and -l aliases to --systz and --localtime
315
315#define HWCLOCK_OPT_LOCALTIME 0x01 316#define HWCLOCK_OPT_LOCALTIME 0x01
316#define HWCLOCK_OPT_UTC 0x02 317#define HWCLOCK_OPT_UTC 0x02
317#define HWCLOCK_OPT_SHOW 0x04 318#define HWCLOCK_OPT_SHOW 0x04
@@ -327,7 +328,7 @@ int hwclock_main(int argc UNUSED_PARAM, char **argv)
327 unsigned opt; 328 unsigned opt;
328 int utc; 329 int utc;
329 330
330#if ENABLE_FEATURE_HWCLOCK_LONG_OPTIONS 331#if ENABLE_LONG_OPTS
331 static const char hwclock_longopts[] ALIGN1 = 332 static const char hwclock_longopts[] ALIGN1 =
332 "localtime\0" No_argument "l" /* short opt is non-standard */ 333 "localtime\0" No_argument "l" /* short opt is non-standard */
333 "utc\0" No_argument "u" 334 "utc\0" No_argument "u"
@@ -337,14 +338,16 @@ int hwclock_main(int argc UNUSED_PARAM, char **argv)
337 "systz\0" No_argument "t" /* short opt is non-standard */ 338 "systz\0" No_argument "t" /* short opt is non-standard */
338 "rtc\0" Required_argument "f" 339 "rtc\0" Required_argument "f"
339 ; 340 ;
340 applet_long_options = hwclock_longopts;
341#endif 341#endif
342 342
343 /* Initialize "timezone" (libc global variable) */ 343 /* Initialize "timezone" (libc global variable) */
344 tzset(); 344 tzset();
345 345
346 opt_complementary = "r--wst:w--rst:s--wrt:t--rsw:l--u:u--l"; 346 opt = getopt32long(argv,
347 opt = getopt32(argv, "lurswtf:", &rtcname); 347 "^lurswtf:" "\0" "r--wst:w--rst:s--wrt:t--rsw:l--u:u--l",
348 hwclock_longopts,
349 &rtcname
350 );
348 351
349 /* If -u or -l wasn't given check if we are using utc */ 352 /* If -u or -l wasn't given check if we are using utc */
350 if (opt & (HWCLOCK_OPT_UTC | HWCLOCK_OPT_LOCALTIME)) 353 if (opt & (HWCLOCK_OPT_UTC | HWCLOCK_OPT_LOCALTIME))