On Sun, 25 Feb 2001, John Hay wrote:

> After m4 has been changed to do its temporary work in a subdirectory,
> "make world" leaves a lot of /tmp/m4* directories behind.
> This patch fix it for me. It is not protected by a "#ifndef vms" though.
> I don't know if vms has rmdir() or not and I'm not sure if we care
> about it.

I think remove() is supposed to work for all types of files.  It is
documented to work for directories in FreeBSD.  Using remove() in
both cases can't break the vms case more than it already is (the
previous commit didn't attempt to maintain it).

> Index: usr.bin/m4/main.c
> ===================================================================
> RCS file: /home/ncvs/src/usr.bin/m4/main.c,v
> retrieving revision 1.8
> diff -u -r1.8 main.c
> --- usr.bin/m4/main.c 2000/11/22 11:09:30     1.8
> +++ usr.bin/m4/main.c 2001/02/20 05:58:02
> @@ -227,9 +227,10 @@
>               (void) remove(m4temp);
>  #else
>               (void) unlink(m4temp);
> -             (void) rmdir(m4dir);
>  #endif
>       }
> +     if (m4dir != NULL)
> +             (void) rmdir(m4dir);
>       return 0;
>  }

m4dir is known to be non-NULL here.  If it would be NULL, then we have 
already dumped core for asprintf()'ing it after not checking the value
returned by mkdtemp().  We also follow the null pointer after (void)ing
errors in asprintf().

Cleaning up is also broken in killdev().

Cleaning up doesn't seem to have ever been implemented in the signal
handler.  onintr() has the usual bugs, but it doesn't remove any files.


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to