X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=gnu%2Frmdir.c;h=ae21d54195adff5e9f7146dcd7c8fff9637294fa;hb=cda5bf32a062c3da43913099f170f0987d780fdf;hp=5b1c09554a207b3d300385d799ee96f81015c350;hpb=3322ff6164a1e9dd3d1622c64a9b9b7c5f303ef6;p=debian%2Ftar diff --git a/gnu/rmdir.c b/gnu/rmdir.c index 5b1c0955..ae21d541 100644 --- a/gnu/rmdir.c +++ b/gnu/rmdir.c @@ -1,8 +1,6 @@ -/* -*- buffer-read-only: t -*- vi: set ro: */ -/* DO NOT EDIT! GENERATED AUTOMATICALLY! */ /* Work around rmdir bugs. - Copyright (C) 1988, 1990, 1999, 2003-2006, 2009-2010 Free Software + Copyright (C) 1988, 1990, 1999, 2003-2006, 2009-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -24,8 +22,8 @@ #include #include -#include -#include + +#include "dosname.h" #undef rmdir @@ -35,7 +33,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; @@ -53,49 +50,4 @@ rpl_rmdir (char const *dir) 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 */ }