aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/lib.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/lib.c b/lib/lib.c
index 959cd46c..d1568932 100644
--- a/lib/lib.c
+++ b/lib/lib.c
@@ -474,7 +474,7 @@ long atolx(char *c)
// Return how long the file at fd is, if there's any way to determine it.
off_t fdlength(int fd)
{
- off_t bottom = 0, top = 0, pos;
+ off_t bottom = 0, top = 0, pos, old;
int size;
// If the ioctl works for this, return it.
@@ -485,6 +485,7 @@ off_t fdlength(int fd)
// block devices don't do BLKGETSIZE right.) This should probably have
// a CONFIG option...
+ old = lseek(fd, 0, SEEK_CUR);
do {
char temp;
@@ -506,6 +507,8 @@ off_t fdlength(int fd)
}
} while (bottom + 1 != top);
+ lseek(fd, old, SEEK_SET);
+
return pos + 1;
}