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...

Reply via email to