Mercurial > hg > octave-nkf > gnulib-hg
changeset 13183:5c61cb2df2af
Assume rmdir exists.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Tue, 06 Apr 2010 23:23:00 +0200 |
parents | 9e9ea06edda4 |
children | 57b114748e72 |
files | ChangeLog lib/rmdir.c |
diffstat | 2 files changed, 5 insertions(+), 48 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-04-06 Bruno Haible <bruno@clisp.org> + + Assume rmdir exists. + * lib/rmdir.c (rpl_rmdir): Remove code that invokes the rmdir program. + 2010-04-06 Giuseppe Scrivano <gscrivano@gnu.org> doc: update users.txt
--- a/lib/rmdir.c +++ b/lib/rmdir.c @@ -22,8 +22,6 @@ #include <errno.h> #include <string.h> -#include <sys/stat.h> -#include <sys/types.h> #undef rmdir @@ -33,7 +31,6 @@ int rpl_rmdir (char const *dir) { -#if HAVE_RMDIR /* Work around cygwin 1.5.x bug where rmdir("dir/./") succeeds. */ size_t len = strlen (dir); int result; @@ -51,49 +48,4 @@ if (result == -1 && errno == EINVAL) errno = ENOTDIR; return result; - -#else /* !HAVE_RMDIR */ - /* rmdir adapted from GNU tar. FIXME: Delete this implementation in - 2010 if no one reports a system with missing rmdir. */ - pid_t cpid; - int status; - struct stat statbuf; - - if (stat (dir, &statbuf) != 0) - return -1; /* errno already set */ - - if (!S_ISDIR (statbuf.st_mode)) - { - errno = ENOTDIR; - return -1; - } - - cpid = fork (); - switch (cpid) - { - case -1: /* cannot fork */ - return -1; /* errno already set */ - - case 0: /* child process */ - execl ("/bin/rmdir", "rmdir", dir, (char *) 0); - _exit (1); - - default: /* parent process */ - - /* Wait for kid to finish. */ - - while (wait (&status) != cpid) - /* Do nothing. */ ; - - if (status) - { - - /* /bin/rmdir failed. */ - - errno = EIO; - return -1; - } - return 0; - } -#endif /* !HAVE_RMDIR */ }