Alters the behavior of the 'Create NAT on tunnel' to also add the appropriate NAT...
[tomato.git] / release / src / router / busybox / libbb / rtc.c
blob97455e86ae187a359e7dbc4e94f846406bb19cfd
1 /*
2 * Common RTC functions
4 * Licensed under GPLv2, see file LICENSE in this source tree.
5 */
7 #include "libbb.h"
8 #include "rtc_.h"
10 #if ENABLE_FEATURE_HWCLOCK_ADJTIME_FHS
11 # define ADJTIME_PATH "/var/lib/hwclock/adjtime"
12 #else
13 # define ADJTIME_PATH "/etc/adjtime"
14 #endif
16 int FAST_FUNC rtc_adjtime_is_utc(void)
18 int utc = 0;
19 FILE *f = fopen_for_read(ADJTIME_PATH);
21 if (f) {
22 char buffer[128];
24 while (fgets(buffer, sizeof(buffer), f)) {
25 if (strncmp(buffer, "UTC", 3) == 0) {
26 utc = 1;
27 break;
30 fclose(f);
33 return utc;
36 int FAST_FUNC rtc_xopen(const char **default_rtc, int flags)
38 int rtc;
40 if (!*default_rtc) {
41 *default_rtc = "/dev/rtc";
42 rtc = open(*default_rtc, flags);
43 if (rtc >= 0)
44 return rtc;
45 *default_rtc = "/dev/rtc0";
46 rtc = open(*default_rtc, flags);
47 if (rtc >= 0)
48 return rtc;
49 *default_rtc = "/dev/misc/rtc";
52 return xopen(*default_rtc, flags);
55 void FAST_FUNC rtc_read_tm(struct tm *ptm, int fd)
57 memset(ptm, 0, sizeof(*ptm));
58 xioctl(fd, RTC_RD_TIME, ptm);
59 ptm->tm_isdst = -1; /* "not known" */
62 time_t FAST_FUNC rtc_tm2time(struct tm *ptm, int utc)
64 char *oldtz = oldtz; /* for compiler */
65 time_t t;
67 if (utc) {
68 oldtz = getenv("TZ");
69 putenv((char*)"TZ=UTC0");
70 tzset();
73 t = mktime(ptm);
75 if (utc) {
76 unsetenv("TZ");
77 if (oldtz)
78 putenv(oldtz - 3);
79 tzset();
82 return t;