/* * \brief C-library back end * \author Josef Soentgen * \date 2014-08-20 */ /* * Copyright (C) 2014 Genode Labs GmbH * * This file is part of the Genode OS framework, which is distributed * under the terms of the GNU General Public License version 2. */ #include #include #include #include #include #include #include #include namespace Libc { extern char const *config_rtc(); time_t read_rtc(); } time_t Libc::read_rtc() { time_t rtc = 0; int fd = open(Libc::config_rtc(), O_RDONLY); if (fd == -1) return rtc; char buf[32]; ssize_t n = read(fd, buf, sizeof(buf)); if (n > 0) { buf[n - 1] = '\0'; struct tm tm; Genode::memset(&tm, 0, sizeof(tm)); if (strptime(buf, "%Y-%m-%d %R", &tm)) { rtc = mktime(&tm); if (rtc == (time_t)-1) rtc = 0; } } close(fd); return rtc; }