diff options
author | Rob Landley <rob@landley.net> | 2008-07-18 05:43:44 -0500 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2008-07-18 05:43:44 -0500 |
commit | f15387d8d3a383cd83f4bae8eb4c7dc6a15210d5 (patch) | |
tree | d636520ce9d648e7ab158c4e007def38ac3bc0c2 /lib | |
parent | 15b231591d3e95d502b2cee1d7d6192177230c15 (diff) | |
download | toybox-f15387d8d3a383cd83f4bae8eb4c7dc6a15210d5.tar.gz |
Roberto Foglietta pointed out that readall() needs fdlength() to restore
the original position before exiting.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/lib.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -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; } |