diff options
author | Nick Mathewson <nickm@torproject.org> | 2008-12-02 23:26:04 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2008-12-02 23:26:04 +0000 |
commit | 6221bdd294c58399e12d13983cca0f0285033092 (patch) | |
tree | cda6bcc4bfae167cc875318c52a09bba48b5ce40 /src/common/compat.c | |
parent | 330218c7f75ed2a14e5b5cf8322932c9c42ce758 (diff) | |
download | tor-6221bdd294c58399e12d13983cca0f0285033092.tar.gz tor-6221bdd294c58399e12d13983cca0f0285033092.zip |
Add two lseek wrappers to compat.[ch]: one to return current fd position, and one to move the fd to the end of the file.
svn:r17454
Diffstat (limited to 'src/common/compat.c')
-rw-r--r-- | src/common/compat.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/common/compat.c b/src/common/compat.c index 31fbf263e4..a54fded833 100644 --- a/src/common/compat.c +++ b/src/common/compat.c @@ -581,6 +581,37 @@ 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_CUR +#define SEEK_CUR 1 +#endif +#ifndef SEEK_END +#define SEEK_END 2 +#endif + +/** Return the position of fd 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 fd to the end of the file. Return -1 on error, 0 on success. */ +int +tor_fd_seekend(int fd) +{ +#ifdef WIN32 + return _lseek(fd, 0, SEEK_END) < 0 ? -1 : 0; +#else + return lseek(fd, 0, SEEK_END) < 0 ? -1 : 0; +#endif +} + #undef DEBUG_SOCKET_COUNTING #ifdef DEBUG_SOCKET_COUNTING /** A bitarray of all fds that should be passed to tor_socket_close(). Only |