diff options
author | Roger Dingledine <arma@torproject.org> | 2003-10-20 20:19:59 +0000 |
---|---|---|
committer | Roger Dingledine <arma@torproject.org> | 2003-10-20 20:19:59 +0000 |
commit | 5f1750a2886a8c5e488fa4ecc8140d07ce5b1186 (patch) | |
tree | a637af519d5884335871832568a49a215bc30c38 /src | |
parent | b40d0bffa781b6e212d0ba39c5bf63039762762e (diff) | |
download | tor-5f1750a2886a8c5e488fa4ecc8140d07ce5b1186.tar tor-5f1750a2886a8c5e488fa4ecc8140d07ce5b1186.tar.gz |
include our own timegm() impl, since it's not portable
svn:r635
Diffstat (limited to 'src')
-rw-r--r-- | src/common/util.c | 20 | ||||
-rw-r--r-- | src/common/util.h | 6 | ||||
-rw-r--r-- | src/or/routers.c | 4 |
3 files changed, 24 insertions, 6 deletions
diff --git a/src/common/util.c b/src/common/util.c index ccc130030..098b20157 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -112,13 +112,29 @@ void tv_addms(struct timeval *a, long ms) { a->tv_usec %= 1000000; } +time_t tor_timegm (struct tm *tm) { + time_t ret; + char *tz; + + tz = getenv("TZ"); + setenv("TZ", "", 1); + tzset(); + ret = mktime(tm); + if (tz) + setenv("TZ", tz, 1); + else + unsetenv("TZ"); + tzset(); + return ret; +} + /* * Low-level I/O. */ /* a wrapper for write(2) that makes sure to write all count bytes. * Only use if fd is a blocking fd. */ -int write_all(int fd, const void *buf, size_t count) { +int write_all(int fd, const char *buf, size_t count) { int written = 0; int result; @@ -133,7 +149,7 @@ int write_all(int fd, const void *buf, size_t count) { /* a wrapper for read(2) that makes sure to read all count bytes. * Only use if fd is a blocking fd. */ -int read_all(int fd, void *buf, size_t count) { +int read_all(int fd, char *buf, size_t count) { int numread = 0; int result; diff --git a/src/common/util.h b/src/common/util.h index 6358654bf..01087df87 100644 --- a/src/common/util.h +++ b/src/common/util.h @@ -44,8 +44,10 @@ void tv_addms(struct timeval *a, long ms); void tv_add(struct timeval *a, struct timeval *b); int tv_cmp(struct timeval *a, struct timeval *b); -int write_all(int fd, const void *buf, size_t count); -int read_all(int fd, void *buf, size_t count); +time_t tor_timegm (struct tm *tm); + +int write_all(int fd, const char *buf, size_t count); +int read_all(int fd, char *buf, size_t count); void set_socket_nonblocking(int socket); diff --git a/src/or/routers.c b/src/or/routers.c index 4ecd2fcb9..5acaa4300 100644 --- a/src/or/routers.c +++ b/src/or/routers.c @@ -599,7 +599,7 @@ int router_get_dir_from_string_impl(char *s, directory_t **dest, if (!strptime(tok.val.cmd.args[0], "%Y-%m-%d %H:%M:%S", &published)) { log_fn(LOG_WARN, "Published time was unparseable"); goto err; } - published_on = timegm(&published); + published_on = tor_timegm(&published); NEXT_TOK(); TOK_IS(K_RECOMMENDED_SOFTWARE, "recommended-software"); @@ -857,7 +857,7 @@ routerinfo_t *router_get_entry_from_string(char**s) { if (!strptime(ARGS[0], "%Y-%m-%d %H:%M:%S", &published)) { log_fn(LOG_WARN, "Published time was unparseable"); goto err; } - router->published_on = timegm(&published); + router->published_on = tor_timegm(&published); NEXT_TOKEN(); if (tok->tp != K_ONION_KEY) { |