summaryrefslogtreecommitdiff
path: root/lib/libc/stdio
diff options
context:
space:
mode:
authorThorsten Lockert <tholo@cvs.openbsd.org>1996-10-28 04:55:26 +0000
committerThorsten Lockert <tholo@cvs.openbsd.org>1996-10-28 04:55:26 +0000
commitfafff148e10ab137d6494753a47905a2262a870d (patch)
treefe9d3c3198fcc33c4af6deb6066141097ba8270a /lib/libc/stdio
parent4262c8681ff4a9a777733d890435b180b55ab038 (diff)
remove(3) should be able to remove empty directories
Diffstat (limited to 'lib/libc/stdio')
-rw-r--r--lib/libc/stdio/remove.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/libc/stdio/remove.c b/lib/libc/stdio/remove.c
index 189663d80e2..915149bc032 100644
--- a/lib/libc/stdio/remove.c
+++ b/lib/libc/stdio/remove.c
@@ -35,14 +35,21 @@
*/
#if defined(LIBC_SCCS) && !defined(lint)
-static char rcsid[] = "$OpenBSD: remove.c,v 1.2 1996/08/19 08:33:01 tholo Exp $";
+static char rcsid[] = "$OpenBSD: remove.c,v 1.3 1996/10/28 04:55:25 tholo Exp $";
#endif /* LIBC_SCCS and not lint */
-#include <unistd.h>
#include <stdio.h>
+#include <unistd.h>
+#include <sys/stat.h>
remove(file)
const char *file;
{
+ struct stat st;
+
+ if (stat(file, &st) < 0)
+ return (-1);
+ if (S_ISDIR(st.st_mode))
+ return (rmdir(file));
return (unlink(file));
}