rm/unlink and `how to find out who i am'

Joerg Sonnenberger joerg at britannica.bec.de
Sat Apr 2 06:54:09 PST 2005


On Sat, Apr 02, 2005 at 04:05:50PM +0200, Devon H. O'Dell  wrote:
> Hey,
> 
> I dunno if there are other files that are hard linked together
> and how these are all testing what name they were called by, but
> Liam pointed out the case of rm(1) to me today and asked why it
> was going about that like it was.

At least gzip and compress come to my mind directly.

> I also don't get it.
> 
> To me, it seems that something like:
> 
> if (strncmp("unlink", basename(*argv)) == 0)
> 
> would make more sense than how it's doing it now (with a
> temporary pointer to const char and strrchr). I know that
> basename(3) isn't POSIX -- is this an issue?

Nope, the problem is that basename(3) has a different semantic.
It does strip trailing slashes, which should not happen here.
The easiest and fastest way is calling getprogname(), crt1.c already
did the necessary parsing (with a poor man's version of strrchr BTW).

Joerg





More information about the Kernel mailing list