X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fhwclock.c;h=55b0fa8a0f1c855ade2f9ee26bbc141aaf1f6cf2;hb=bcb161b0230fdd1faf9176f95fee76a7db6afd59;hp=b93855d95704388d4c0a2568b2c679d82fe507a5;hpb=7d5e9c0f60cddf01ec803012cbdc02d2f55b78c1;p=elogind.git diff --git a/src/shared/hwclock.c b/src/shared/hwclock.c index b93855d95..55b0fa8a0 100644 --- a/src/shared/hwclock.c +++ b/src/shared/hwclock.c @@ -41,6 +41,7 @@ #include "log.h" #include "strv.h" #include "hwclock.h" +#include "fileio.h" static int rtc_open(int flags) { int fd; @@ -94,6 +95,11 @@ static int rtc_open(int flags) { continue; p = strappend("/dev/", de->d_name); + if (!p) { + closedir(d); + return -ENOMEM; + } + fd = open(p, flags); free(p); @@ -184,7 +190,7 @@ int hwclock_is_localtime(void) { truncate_nl(line); local = streq(line, "LOCAL"); - } else if (errno != -ENOENT) + } else if (errno != ENOENT) return -errno; return local; @@ -194,14 +200,14 @@ int hwclock_set_timezone(int *min) { const struct timeval *tv_null = NULL; struct timespec ts; struct tm *tm; - int minuteswest; + int minutesdelta; struct timezone tz; assert_se(clock_gettime(CLOCK_REALTIME, &ts) == 0); assert_se(tm = localtime(&ts.tv_sec)); - minuteswest = tm->tm_gmtoff / 60; + minutesdelta = tm->tm_gmtoff / 60; - tz.tz_minuteswest = -minuteswest; + tz.tz_minuteswest = -minutesdelta; tz.tz_dsttime = 0; /* DST_NONE*/ /* @@ -212,7 +218,7 @@ int hwclock_set_timezone(int *min) { if (settimeofday(tv_null, &tz) < 0) return -errno; if (min) - *min = minuteswest; + *min = minutesdelta; return 0; }