Mercurial > hg > octave-jordi > gnulib-hg
view lib/rmdir.c @ 11395:5442b2430859
avoid gcc warnings about unused macro definitions
* lib/readtokens.c (STREQ): Remove unused definition.
* lib/xmalloc.c (SIZE_MAX): Likewise.
* lib/openat-die.c (N_): Likewise.
* lib/mountlist.c (SIZE_MAX): Remove definition.
Instead, include <stdint.h>.
* lib/readutmp.c: Likewise.
* modules/readutmp (Depends-on): Add stdint.
* modules/mountlist (Depends-on): Add stdint.
* lib/userspec.c (ISDIGIT): Move definition into #if block where used.
author | Jim Meyering <meyering@redhat.com> |
---|---|
date | Thu, 12 Mar 2009 13:09:42 +0100 |
parents | bbbbbf4cd1c5 |
children | 767d867147de |
line wrap: on
line source
/* BSD compatible remove directory function for System V Copyright (C) 1988, 1990, 1999, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <config.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> /* rmdir adapted from GNU tar. */ /* Remove directory DIR. Return 0 if successful, -1 if not. */ int rmdir (char const *dir) { 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; } }