On Thu, Nov 10, 2011 at 9:26 PM, Michael W. Bombardieri <m...@ii.net> wrote: > Hi tech, > > I have a diff for the patch(1) tool which copies > one included in NetBSD two years ago... > > Source: NetBSD src/usr.bin/patch/inp.c revision 1.23 > Purpose: Don't bother mmap'ing an empty file > > Comments/OK? > > - Michael > > > Index: inp.c > =================================================================== > RCS file: /usr/src/cvs/src/usr.bin/patch/inp.c,v > retrieving revision 1.35 > diff -u -r1.35 inp.c > --- inp.c B B B 27 Oct 2009 23:59:41 -0000 B B B 1.35 > +++ inp.c B B B 11 Nov 2011 03:12:10 -0000 > @@ -243,12 +243,16 @@ > B B B B if ((ifd = open(filename, O_RDONLY)) < 0) > B B B B B B B B pfatal("can't open file %s", filename); > > - B B B i_womp = mmap(NULL, i_size, PROT_READ, MAP_PRIVATE, ifd, 0); > - B B B if (i_womp == MAP_FAILED) { > - B B B B B B B perror("mmap failed"); > + B B B if (i_size == 0) > B B B B B B B B i_womp = NULL; > - B B B B B B B close(ifd); > - B B B B B B B return false; > + B B B else { > + B B B B B B B i_womp = mmap(NULL, i_size, PROT_READ, MAP_PRIVATE, > ifd, 0); > + B B B B B B B if (i_womp == MAP_FAILED) { > + B B B B B B B B B B B perror("mmap failed"); > + B B B B B B B B B B B i_womp = NULL; > + B B B B B B B B B B B close(ifd); > + B B B B B B B B B B B return false; > + B B B B B B B } > B B B B } > > B B B B close(ifd); > >
if "if (i_size == 0) {...}" returns, there's still need for an else block?... Just asking...