hwclock: support /dev/rtc0 etc
This commit is contained in:
parent
7fb8a00341
commit
673d4bbab6
@ -1286,15 +1286,18 @@
|
|||||||
" -d STRING URL decode STRING"
|
" -d STRING URL decode STRING"
|
||||||
|
|
||||||
#define hwclock_trivial_usage \
|
#define hwclock_trivial_usage \
|
||||||
"[-r|--show] [-s|--hctosys] [-w|--systohc] [-l|--localtime] [-u|--utc]"
|
"[-r|--show] [-s|--hctosys] [-w|--systohc]" \
|
||||||
|
" [-l|--localtime] [-u|--utc]" \
|
||||||
|
" [-f FILE]"
|
||||||
#define hwclock_full_usage \
|
#define hwclock_full_usage \
|
||||||
"Query and set the hardware clock (RTC)" \
|
"Query and set a hardware clock (RTC)" \
|
||||||
"\n\nOptions:\n" \
|
"\n\nOptions:\n" \
|
||||||
" -r Read hardware clock and print result\n" \
|
" -r Read hardware clock and print result\n" \
|
||||||
" -s Set the system time from the hardware clock\n" \
|
" -s Set the system time from the hardware clock\n" \
|
||||||
" -w Set the hardware clock to the current system time\n" \
|
" -w Set the hardware clock to the current system time\n" \
|
||||||
" -u The hardware clock is kept in coordinated universal time\n" \
|
" -u The hardware clock is kept in coordinated universal time\n" \
|
||||||
" -l The hardware clock is kept in local time"
|
" -l The hardware clock is kept in local time\n" \
|
||||||
|
" -f FILE Use the specified clock (e.g. /dev/rtc2)"
|
||||||
|
|
||||||
#define id_trivial_usage \
|
#define id_trivial_usage \
|
||||||
"[OPTIONS]... [USERNAME]"
|
"[OPTIONS]... [USERNAME]"
|
||||||
|
@ -35,16 +35,22 @@ struct linux_rtc_time {
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static const char *rtcname;
|
||||||
|
|
||||||
static int xopen_rtc(int flags)
|
static int xopen_rtc(int flags)
|
||||||
{
|
{
|
||||||
int rtc;
|
int rtc;
|
||||||
rtc = open("/dev/rtc", flags);
|
|
||||||
if (rtc < 0) {
|
if (!rtcname) {
|
||||||
rtc = open("/dev/misc/rtc", flags);
|
rtc = open("/dev/rtc", flags);
|
||||||
if (rtc < 0)
|
if (rtc >= 0)
|
||||||
bb_perror_msg_and_die("cannot access RTC");
|
return rtc;
|
||||||
|
rtc = open("/dev/rtc0", flags);
|
||||||
|
if (rtc >= 0)
|
||||||
|
return rtc;
|
||||||
|
rtcname = "/dev/misc/rtc";
|
||||||
}
|
}
|
||||||
return rtc;
|
return xopen(rtcname, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static time_t read_rtc(int utc)
|
static time_t read_rtc(int utc)
|
||||||
@ -175,6 +181,7 @@ static int check_utc(void)
|
|||||||
#define HWCLOCK_OPT_SHOW 0x04
|
#define HWCLOCK_OPT_SHOW 0x04
|
||||||
#define HWCLOCK_OPT_HCTOSYS 0x08
|
#define HWCLOCK_OPT_HCTOSYS 0x08
|
||||||
#define HWCLOCK_OPT_SYSTOHC 0x10
|
#define HWCLOCK_OPT_SYSTOHC 0x10
|
||||||
|
#define HWCLOCK_OPT_RTCFILE 0x20
|
||||||
|
|
||||||
int hwclock_main(int argc, char **argv );
|
int hwclock_main(int argc, char **argv );
|
||||||
int hwclock_main(int argc, char **argv )
|
int hwclock_main(int argc, char **argv )
|
||||||
@ -189,12 +196,13 @@ int hwclock_main(int argc, char **argv )
|
|||||||
{ "show", 0, 0, 'r' },
|
{ "show", 0, 0, 'r' },
|
||||||
{ "hctosys", 0, 0, 's' },
|
{ "hctosys", 0, 0, 's' },
|
||||||
{ "systohc", 0, 0, 'w' },
|
{ "systohc", 0, 0, 'w' },
|
||||||
|
{ "file", 1, 0, 'f' },
|
||||||
{ 0, 0, 0, 0 }
|
{ 0, 0, 0, 0 }
|
||||||
};
|
};
|
||||||
applet_long_options = hwclock_long_options;
|
applet_long_options = hwclock_long_options;
|
||||||
#endif
|
#endif
|
||||||
opt_complementary = "?:r--ws:w--rs:s--wr:l--u:u--l";
|
opt_complementary = "?:r--ws:w--rs:s--wr:l--u:u--l";
|
||||||
opt = getopt32(argc, argv, "lursw");
|
opt = getopt32(argc, argv, "lurswf:", &rtcname);
|
||||||
|
|
||||||
/* If -u or -l wasn't given check if we are using utc */
|
/* If -u or -l wasn't given check if we are using utc */
|
||||||
if (opt & (HWCLOCK_OPT_UTC | HWCLOCK_OPT_LOCALTIME))
|
if (opt & (HWCLOCK_OPT_UTC | HWCLOCK_OPT_LOCALTIME))
|
||||||
|
Loading…
Reference in New Issue
Block a user