diff options
author | Nick Mathewson <nickm@torproject.org> | 2018-06-22 11:40:20 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2018-06-22 11:40:20 -0400 |
commit | 79f73ab330c0e643ba1ec2eb0633f0f80525a083 (patch) | |
tree | a4e923238c46a51efdd946bdcc890313d3336db4 /src/common | |
parent | 90a09df5ba7b3e55ea388a4cc9b92161442bb380 (diff) | |
download | tor-79f73ab330c0e643ba1ec2eb0633f0f80525a083.tar.gz tor-79f73ab330c0e643ba1ec2eb0633f0f80525a083.zip |
Finally extract the log library and make it build.
This patch:
- introduces an fdio module for low-level fd functions that don't
need to log.
- moves the responsibility for opening files outside of torlog.c,
so it won't need to call tor_open_cloexec.
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/compat.c | 75 | ||||
-rw-r--r-- | src/common/compat.h | 5 | ||||
-rw-r--r-- | src/common/util.c | 1 |
3 files changed, 1 insertions, 80 deletions
diff --git a/src/common/compat.c b/src/common/compat.c index 1dcd065810..467c51d6ee 100644 --- a/src/common/compat.c +++ b/src/common/compat.c @@ -733,80 +733,6 @@ tor_lockfile_unlock(tor_lockfile_t *lockfile) tor_free(lockfile); } -/** @{ */ -/** Some old versions of Unix didn't define constants for these values, - * and instead expect you to say 0, 1, or 2. */ -#ifndef SEEK_SET -#define SEEK_SET 0 -#endif -#ifndef SEEK_CUR -#define SEEK_CUR 1 -#endif -#ifndef SEEK_END -#define SEEK_END 2 -#endif -/** @} */ - -/** Return the position of <b>fd</b> with respect to the start of the file. */ -off_t -tor_fd_getpos(int fd) -{ -#ifdef _WIN32 - return (off_t) _lseek(fd, 0, SEEK_CUR); -#else - return (off_t) lseek(fd, 0, SEEK_CUR); -#endif -} - -/** Move <b>fd</b> to the end of the file. Return -1 on error, 0 on success. - * If the file is a pipe, do nothing and succeed. - **/ -int -tor_fd_seekend(int fd) -{ -#ifdef _WIN32 - return _lseek(fd, 0, SEEK_END) < 0 ? -1 : 0; -#else - off_t rc = lseek(fd, 0, SEEK_END) < 0 ? -1 : 0; -#ifdef ESPIPE - /* If we get an error and ESPIPE, then it's a pipe or a socket of a fifo: - * no need to worry. */ - if (rc < 0 && errno == ESPIPE) - rc = 0; -#endif /* defined(ESPIPE) */ - return (rc < 0) ? -1 : 0; -#endif /* defined(_WIN32) */ -} - -/** Move <b>fd</b> to position <b>pos</b> in the file. Return -1 on error, 0 - * on success. */ -int -tor_fd_setpos(int fd, off_t pos) -{ -#ifdef _WIN32 - return _lseek(fd, pos, SEEK_SET) < 0 ? -1 : 0; -#else - return lseek(fd, pos, SEEK_SET) < 0 ? -1 : 0; -#endif -} - -/** Replacement for ftruncate(fd, 0): move to the front of the file and remove - * all the rest of the file. Return -1 on error, 0 on success. */ -int -tor_ftruncate(int fd) -{ - /* Rumor has it that some versions of ftruncate do not move the file pointer. - */ - if (tor_fd_setpos(fd, 0) < 0) - return -1; - -#ifdef _WIN32 - return _chsize(fd, 0); -#else - return ftruncate(fd, 0); -#endif -} - #undef DEBUG_SOCKET_COUNTING #ifdef DEBUG_SOCKET_COUNTING /** A bitarray of all fds that should be passed to tor_socket_close(). Only @@ -2641,7 +2567,6 @@ compute_num_cpus(void) return num_cpus; } - /** As localtime_r, but defined for platforms that don't have it: * * Convert *<b>timep</b> to a struct tm in local time, and store the value in diff --git a/src/common/compat.h b/src/common/compat.h index 605438cc62..f91c224254 100644 --- a/src/common/compat.h +++ b/src/common/compat.h @@ -160,11 +160,6 @@ tor_lockfile_t *tor_lockfile_lock(const char *filename, int blocking, int *locked_out); void tor_lockfile_unlock(tor_lockfile_t *lockfile); -off_t tor_fd_getpos(int fd); -int tor_fd_setpos(int fd, off_t pos); -int tor_fd_seekend(int fd); -int tor_ftruncate(int fd); - int64_t tor_get_avail_disk_space(const char *path); #ifdef _WIN32 diff --git a/src/common/util.c b/src/common/util.c index 986792ff2a..fa95f933cb 100644 --- a/src/common/util.c +++ b/src/common/util.c @@ -19,6 +19,7 @@ #include "lib/crypt_ops/crypto_digest.h" #include "lib/cc/torint.h" #include "lib/container/smartlist.h" +#include "lib/fdio/fdio.h" #include "common/address.h" #include "common/sandbox.h" #include "lib/err/backtrace.h" |