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
This commit is contained in:
Nick Mathewson 2008-12-02 23:26:04 +00:00
parent 330218c7f7
commit 6221bdd294
2 changed files with 34 additions and 0 deletions

View File

@ -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

View File

@ -294,6 +294,9 @@ 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_seekend(int fd);
#ifdef MS_WINDOWS
#define PATH_SEPARATOR "\\"
#else