- don't free user-supplied string (via -e)
[oweals/busybox.git] / libbb / rtc.c
index 4cbf32206c79450c4d0f4fb5b7c1a1a86e516791..222d977ca644b61445c1b0b6643f168ea3ba22d4 100644 (file)
 # define ADJTIME_PATH "/etc/adjtime"
 #endif
 
-int rtc_adjtime_is_utc(void)
+int FAST_FUNC rtc_adjtime_is_utc(void)
 {
        int utc = 0;
-       FILE *f = fopen(ADJTIME_PATH, "r");
+       FILE *f = fopen_for_read(ADJTIME_PATH);
 
        if (f) {
                RESERVE_CONFIG_BUFFER(buffer, 128);
@@ -40,24 +40,26 @@ int rtc_adjtime_is_utc(void)
        return utc;
 }
 
-int rtc_xopen(const char *default_rtc, int flags)
+int FAST_FUNC rtc_xopen(const char **default_rtc, int flags)
 {
        int rtc;
 
-       if (!default_rtc) {
-               rtc = open("/dev/rtc", flags);
+       if (!*default_rtc) {
+               *default_rtc = "/dev/rtc";
+               rtc = open(*default_rtc, flags);
                if (rtc >= 0)
                        return rtc;
-               rtc = open("/dev/rtc0", flags);
+               *default_rtc = "/dev/rtc0";
+               rtc = open(*default_rtc, flags);
                if (rtc >= 0)
                        return rtc;
-               default_rtc = "/dev/misc/rtc";
+               *default_rtc = "/dev/misc/rtc";
        }
 
-       return xopen(default_rtc, flags);
+       return xopen(*default_rtc, flags);
 }
 
-time_t rtc_read_time(int fd, int utc)
+time_t FAST_FUNC rtc_read_time(int fd, int utc)
 {
        struct tm tm;
        char *oldtz = 0;