1 |
/* |
/* |
2 |
* Common RTC functions |
* Common RTC functions |
3 |
|
* |
4 |
|
* Licensed under GPLv2, see file LICENSE in this tarball for details. |
5 |
*/ |
*/ |
6 |
|
|
7 |
#include "libbb.h" |
#include "libbb.h" |
19 |
FILE *f = fopen_for_read(ADJTIME_PATH); |
FILE *f = fopen_for_read(ADJTIME_PATH); |
20 |
|
|
21 |
if (f) { |
if (f) { |
22 |
RESERVE_CONFIG_BUFFER(buffer, 128); |
char buffer[128]; |
23 |
|
|
24 |
while (fgets(buffer, sizeof(buffer), f)) { |
while (fgets(buffer, sizeof(buffer), f)) { |
25 |
int len = strlen(buffer); |
int len = strlen(buffer); |
35 |
} |
} |
36 |
} |
} |
37 |
fclose(f); |
fclose(f); |
|
|
|
|
RELEASE_CONFIG_BUFFER(buffer); |
|
38 |
} |
} |
39 |
|
|
40 |
return utc; |
return utc; |
59 |
return xopen(*default_rtc, flags); |
return xopen(*default_rtc, flags); |
60 |
} |
} |
61 |
|
|
62 |
time_t FAST_FUNC rtc_read_time(int fd, int utc) |
void FAST_FUNC rtc_read_tm(struct tm *ptm, int fd) |
63 |
|
{ |
64 |
|
memset(ptm, 0, sizeof(*ptm)); |
65 |
|
xioctl(fd, RTC_RD_TIME, ptm); |
66 |
|
ptm->tm_isdst = -1; /* "not known" */ |
67 |
|
} |
68 |
|
|
69 |
|
time_t FAST_FUNC rtc_tm2time(struct tm *ptm, int utc) |
70 |
{ |
{ |
71 |
struct tm tm; |
char *oldtz = oldtz; /* for compiler */ |
72 |
char *oldtz = 0; |
time_t t; |
|
time_t t = 0; |
|
|
|
|
|
memset(&tm, 0, sizeof(struct tm)); |
|
|
xioctl(fd, RTC_RD_TIME, &tm); |
|
|
tm.tm_isdst = -1; /* not known */ |
|
73 |
|
|
74 |
if (utc) { |
if (utc) { |
75 |
oldtz = getenv("TZ"); |
oldtz = getenv("TZ"); |
77 |
tzset(); |
tzset(); |
78 |
} |
} |
79 |
|
|
80 |
t = mktime(&tm); |
t = mktime(ptm); |
81 |
|
|
82 |
if (utc) { |
if (utc) { |
83 |
unsetenv("TZ"); |
unsetenv("TZ"); |