PERFORCE change 123550 for review

Garrett Cooper yanegomi at gmail.com
Sun Jul 15 22:07:53 UTC 2007


M. Warner Losh wrote:
> In message: <200707152008.l6FK8Nr8028280 at repoman.freebsd.org>
>             Garrett Cooper <gcooper at freebsd.org> writes:
> : http://perforce.freebsd.org/chv.cgi?CH=123550
> : 
> : Change 123550 by gcooper at optimus-revised_pkgtools on 2007/07/15 20:07:45
> : 
> : 	Quite simply, works with read, but not fread. Or maybe it's just me :)?
> : 
> : Affected files ...
> : 
> : .. //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/file.c#4 edit
> : 
> : Differences ...
> : 
> : ==== //depot/projects/soc2007/revised_fbsd_pkgtools/usr/src/usr.sbin/pkg_install/lib/file.c#4 (text+ko) ====
> : 
> : @@ -223,7 +223,7 @@
> :  
> :      contents = (char *)malloc(sb.st_size + 1);
> :  
> : -    if ((int) fread(contents, sb.st_size, 1, fd) == FAIL) {
> : +    if (read(fileno(fd), contents, sb.st_size) == FAIL) {
> :  	cleanup(0);
> :  	errx(2, "%s: short read on '%s' - did not get %lld bytes", __func__,
> :  	     fname, (long long)sb.st_size);
>
>
>      The functions fread() and fwrite() advance the file position indicator
>      for the stream by the number of bytes read or written.  They return the
>      number of objects read or written.  If an error occurs, or the end-of-
>      file is reached, the return value is a short object count (or zero).
>
> vs
>
>      If successful, the number of bytes actually read is returned.  Upon read-
>      ing end-of-file, zero is returned.  Otherwise, a -1 is returned and the
>      global variable errno is set to indicate the error.
>
> /me guesses FAIL is defined to be -1...
>
> Warner
>   

Warner,
    Yes, FAIL is -1 according to <lib/lib.h>. What I'm ultimately 
looking for is 0, for the EOF, since this is an attempt to prebuffer as 
many file lines as possible. Should I be doing additional file checking, 
i.e. file doesn't have EOF? I know it shouldn't happen with most file 
writes, but it could (or at least it does from time to time according to 
vim's status bar), and I want to avoid security risks and/or bugs..
    As a sidenote, I was concerned about memory usage but it appears to 
be fairly minimal. I'll discuss it on relevant lists.
Thanks!
-Garrett


More information about the p4-projects mailing list