According to the susv2 man pages I have, remove(3) should act as
rmdir(2) on directories and unlink(2) otherwise. This modification, and most of the man page update has been obtined from OpenBSD. This was spotted by someone on a mailing lists a few months ago, but I've lost their mail. Reviewed by: sheldonh
This commit is contained in:
parent
05efdfbfab
commit
ad8c1e6a09
@ -51,12 +51,17 @@
|
||||
.Sh DESCRIPTION
|
||||
The
|
||||
.Fn remove
|
||||
function
|
||||
is an alias for the
|
||||
.Xr unlink 2
|
||||
system call.
|
||||
It deletes the file referenced by
|
||||
function removes the file or directory specified by
|
||||
.Fa path .
|
||||
.Pp
|
||||
If
|
||||
.Fa path
|
||||
specifies a directory,
|
||||
.Fn remove "path"
|
||||
is the equivalent of
|
||||
.Fn rmdir "path" .
|
||||
Otherwise, it is the equivalent of
|
||||
.Fn unlink "path" .
|
||||
.Sh RETURN VALUES
|
||||
Upon successful completion,
|
||||
.Fn remove
|
||||
@ -70,12 +75,18 @@ The
|
||||
function
|
||||
may fail and set
|
||||
.Va errno
|
||||
for any of the errors specified for the routine
|
||||
for any of the errors specified for the routines
|
||||
.Xr lstat 2 ,
|
||||
.Xr rmdir 2
|
||||
or
|
||||
.Xr unlink 2 .
|
||||
.Sh SEE ALSO
|
||||
.Xr rmdir 2 ,
|
||||
.Xr unlink 2
|
||||
.Sh STANDARDS
|
||||
The
|
||||
.Fn remove
|
||||
function conforms to
|
||||
.St -ansiC .
|
||||
.St -ansiC
|
||||
and
|
||||
.St -xpg4.2 .
|
||||
|
@ -42,6 +42,8 @@ static const char rcsid[] =
|
||||
"$FreeBSD$";
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
#include <stdio.h>
|
||||
|
||||
@ -49,5 +51,11 @@ int
|
||||
remove(file)
|
||||
const char *file;
|
||||
{
|
||||
struct stat sb;
|
||||
|
||||
if (lstat(file, &sb) < 0)
|
||||
return (-1);
|
||||
if (S_ISDIR(sb.st_mode))
|
||||
return (rmdir(file));
|
||||
return (unlink(file));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user