svn commit: trunk/busybox: include util-linux

vda at busybox.net vda at busybox.net
Wed Mar 7 23:02:54 UTC 2007


Author: vda
Date: 2007-03-07 15:02:50 -0800 (Wed, 07 Mar 2007)
New Revision: 18029

Log:
hwclock: support /dev/rtc0 etc


Modified:
   trunk/busybox/include/usage.h
   trunk/busybox/util-linux/hwclock.c


Changeset:
Modified: trunk/busybox/include/usage.h
===================================================================
--- trunk/busybox/include/usage.h	2007-03-07 22:49:53 UTC (rev 18028)
+++ trunk/busybox/include/usage.h	2007-03-07 23:02:50 UTC (rev 18029)
@@ -1286,15 +1286,18 @@
        "	-d STRING	URL decode STRING"
 
 #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 \
-       "Query and set the hardware clock (RTC)" \
+       "Query and set a hardware clock (RTC)" \
        "\n\nOptions:\n" \
        "	-r	Read hardware clock and print result\n" \
        "	-s	Set the system time from the hardware clock\n" \
        "	-w	Set the hardware clock to the current system 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 \
        "[OPTIONS]... [USERNAME]"

Modified: trunk/busybox/util-linux/hwclock.c
===================================================================
--- trunk/busybox/util-linux/hwclock.c	2007-03-07 22:49:53 UTC (rev 18028)
+++ trunk/busybox/util-linux/hwclock.c	2007-03-07 23:02:50 UTC (rev 18029)
@@ -35,16 +35,22 @@
 # endif
 #endif
 
+static const char *rtcname;
+
 static int xopen_rtc(int flags)
 {
 	int rtc;
-	rtc = open("/dev/rtc", flags);
-	if (rtc < 0) {
-		rtc = open("/dev/misc/rtc", flags);
-		if (rtc < 0)
-			bb_perror_msg_and_die("cannot access RTC");
+
+	if (!rtcname) {
+		rtc = open("/dev/rtc", flags);
+		if (rtc >= 0)
+			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)
@@ -175,6 +181,7 @@
 #define HWCLOCK_OPT_SHOW        0x04
 #define HWCLOCK_OPT_HCTOSYS     0x08
 #define HWCLOCK_OPT_SYSTOHC     0x10
+#define HWCLOCK_OPT_RTCFILE     0x20
 
 int hwclock_main(int argc, char **argv );
 int hwclock_main(int argc, char **argv )
@@ -189,12 +196,13 @@
 		{ "show",      0, 0, 'r' },
 		{ "hctosys",   0, 0, 's' },
 		{ "systohc",   0, 0, 'w' },
+		{ "file",      1, 0, 'f' },
 		{ 0,           0, 0, 0 }
 	};
 	applet_long_options = hwclock_long_options;
 #endif
 	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 (opt & (HWCLOCK_OPT_UTC | HWCLOCK_OPT_LOCALTIME))




More information about the busybox-cvs mailing list