Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 15 Feb 2004 10:19:00 -0700 (MST)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        drosih@rpi.edu
Cc:        hackers@freebsd.org
Subject:   Re: Adding 'realclean' target to /usr/src/Makefile
Message-ID:  <20040215.101900.20429400.imp@bsdimp.com>
In-Reply-To: <p0602040fbc54cd0d3342@[128.113.24.47]>
References:  <p0602040fbc54cd0d3342@[128.113.24.47]>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <p0602040fbc54cd0d3342@[128.113.24.47]>
            Garance A Drosihn <drosih@rpi.edu> writes:
: realclean :
: 	rm -Rf ${.OBJDIR}/*

I'd make that be more like:

realclean :
	@chflags -R 0 ${.OBJDIR}/*
	@rm -Rf ${.OBJDIR}/*

since sometimes you wind up files that have flags set on them.  I once
looked into hacking rm to do that in one step, but couldn't figure out
a way to do it race free and punted.  There was no notion of a
funlink.  this is conceptually as close as I got:

	 fd = open(path, O_RDRW);	/*1*/
	 fchflags(fd, 0);
	 unlink(path);			/*2*/

which races between /*1*/ and /*2*/.

If you can tolerate errors in the output, the following is faster
because the chflags has lots less work to do:

realclean :
	@rm -Rf ${.OBJDIR}/*
	@chflags -R 0 ${.OBJDIR}/*
	@rm -Rf ${.OBJDIR}/*


Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040215.101900.20429400.imp>