Mercurial > hg > toybox
changeset 77:8018c40605d9
The fdlength() ioctl apparently doesn't work on files (and the lseek trick
doesn't work on some devices, and we can't always tell _when_ it failed), so
go to the binary search for now.
author | Rob Landley <rob@landley.net> |
---|---|
date | Thu, 25 Jan 2007 16:10:37 -0500 |
parents | e6332139adae |
children | cd1f36a96185 |
files | lib/functions.c |
diffstat | 1 files changed, 4 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/functions.c Tue Jan 23 19:54:01 2007 -0500 +++ b/lib/functions.c Thu Jan 25 16:10:37 2007 -0500 @@ -397,18 +397,6 @@ return itoa_buf; } -off_t fdlength(int fd) -{ - int size; - - if (ioctl(fd, BLKGETSIZE, &size) >= 0) return size*512L; - return -1; -} - -/* - This might be of use or might not. Unknown yet... - - // Return how long the file at fd is, if there's any way to determine it. off_t fdlength(int fd) { @@ -430,7 +418,7 @@ // If we can read from the current location, it's bigger. - if (lseek(fd, pos, 0)>=0 && safe_read(fd, &temp, 1)==1) { + if (lseek(fd, pos, 0)>=0 && read(fd, &temp, 1)==1) { if (bottom == top) bottom = top = (top+1) * 2; else bottom = pos; @@ -447,6 +435,9 @@ return pos + 1; } +/* + This might be of use or might not. Unknown yet... + // Read contents of file as a single freshly allocated nul-terminated string. char *readfile(char *name) {