aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2012-07-11 00:05:21 -0700
committerPaul Eggert2012-07-11 00:05:21 -0700
commitbb3522608f97ac2450f5501164b11adda94e9b5f (patch)
tree4ba437ab0789a2c0f31fa716a4b9b8204b222e58
parent249685df40653f6d48c2c75412ff2fc24ee2d958 (diff)
downloademacs-bb3522608f97ac2450f5501164b11adda94e9b5f.tar.gz
emacs-bb3522608f97ac2450f5501164b11adda94e9b5f.zip
Assume mkdir, rmdir.
-rw-r--r--ChangeLog4
-rw-r--r--admin/CPP-DEFINES2
-rw-r--r--admin/ChangeLog5
-rw-r--r--configure.ac2
-rw-r--r--src/ChangeLog4
-rw-r--r--src/sysdep.c126
6 files changed, 10 insertions, 133 deletions
diff --git a/ChangeLog b/ChangeLog
index af41ed60968..cb722a73485 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,8 +7,8 @@
7 7
82012-07-11 Paul Eggert <eggert@cs.ucla.edu> 82012-07-11 Paul Eggert <eggert@cs.ucla.edu>
9 9
10 Assume rename, strerror. 10 Assume mkdir, rename, rmdir, strerror.
11 * configure.ac (rename, strerror): Remove check. 11 * configure.ac (mkdir, rename, rmdir, strerror): Remove check.
12 12
132012-07-11 Glenn Morris <rgm@gnu.org> 132012-07-11 Glenn Morris <rgm@gnu.org>
14 14
diff --git a/admin/CPP-DEFINES b/admin/CPP-DEFINES
index 7f4aa699895..5676225077b 100644
--- a/admin/CPP-DEFINES
+++ b/admin/CPP-DEFINES
@@ -131,7 +131,6 @@ HAVE_LOGB
131HAVE_LONG_FILE_NAMES 131HAVE_LONG_FILE_NAMES
132HAVE_LRAND48 132HAVE_LRAND48
133HAVE_MENUS 133HAVE_MENUS
134HAVE_MKDIR
135HAVE_MKTIME 134HAVE_MKTIME
136HAVE_MOUSE 135HAVE_MOUSE
137HAVE_PSTAT_GETDYNAMIC 136HAVE_PSTAT_GETDYNAMIC
@@ -139,7 +138,6 @@ HAVE_PWD_H
139HAVE_RANDOM 138HAVE_RANDOM
140HAVE_RES_INIT 139HAVE_RES_INIT
141HAVE_RINT 140HAVE_RINT
142HAVE_RMDIR
143HAVE_SELECT 141HAVE_SELECT
144HAVE_SETLOCALE 142HAVE_SETLOCALE
145HAVE_SETPGID 143HAVE_SETPGID
diff --git a/admin/ChangeLog b/admin/ChangeLog
index c139e99f609..a09e0676207 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,7 +1,8 @@
12012-07-11 Paul Eggert <eggert@cs.ucla.edu> 12012-07-11 Paul Eggert <eggert@cs.ucla.edu>
2 2
3 Assume perror, rename, strerror. 3 Assume mkdir, perror, rename, rmdir, strerror.
4 * CPP-DEFINES (HAVE_PERROR, HAVE_RENAME, HAVE_STRERROR, strerror): 4 * CPP-DEFINES (HAVE_MKDIR, HAVE_PERROR, HAVE_RENAME, HAVE_RMDIR)
5 (HAVE_STRERROR, strerror):
5 Remove. 6 Remove.
6 7
72012-07-10 Dmitry Antipov <dmantipov@yandex.ru> 82012-07-10 Dmitry Antipov <dmantipov@yandex.ru>
diff --git a/configure.ac b/configure.ac
index 4c4c1ea9016..c191caeea70 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2708,7 +2708,7 @@ AC_SUBST(BLESSMAIL_TARGET)
2708 2708
2709 2709
2710AC_CHECK_FUNCS(gethostname \ 2710AC_CHECK_FUNCS(gethostname \
2711closedir mkdir rmdir getrusage get_current_dir_name \ 2711closedir getrusage get_current_dir_name \
2712lrand48 logb frexp fmod cbrt setsid \ 2712lrand48 logb frexp fmod cbrt setsid \
2713fpathconf select euidaccess getpagesize setlocale \ 2713fpathconf select euidaccess getpagesize setlocale \
2714utimes getrlimit setrlimit setpgid getcwd shutdown getaddrinfo \ 2714utimes getrlimit setrlimit setpgid getcwd shutdown getaddrinfo \
diff --git a/src/ChangeLog b/src/ChangeLog
index 140cd54d8cd..0dc0f010066 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -20,6 +20,10 @@
20 20
212012-07-11 Paul Eggert <eggert@cs.ucla.edu> 212012-07-11 Paul Eggert <eggert@cs.ucla.edu>
22 22
23 Assume mkdir, rmdir.
24 * sysdep.c (mkdir) [!HAVE_MKDIR]: Remove.
25 * sysdep.c (rmdir) [!HAVE_RMDIR]: Remove.
26
23 Assume rename. 27 Assume rename.
24 * sysdep.c (rename) [!HAVE_RENAME]: Remove. 28 * sysdep.c (rename) [!HAVE_RENAME]: Remove.
25 29
diff --git a/src/sysdep.c b/src/sysdep.c
index 274e000e9f3..7d0855b543c 100644
--- a/src/sysdep.c
+++ b/src/sysdep.c
@@ -2075,132 +2075,6 @@ set_file_times (int fd, const char *filename,
2075 return fdutimens (fd, filename, timespec); 2075 return fdutimens (fd, filename, timespec);
2076} 2076}
2077 2077
2078/* mkdir and rmdir functions, for systems which don't have them. */
2079
2080#ifndef HAVE_MKDIR
2081/*
2082 * Written by Robert Rother, Mariah Corporation, August 1985.
2083 *
2084 * If you want it, it's yours. All I ask in return is that if you
2085 * figure out how to do this in a Bourne Shell script you send me
2086 * a copy.
2087 * sdcsvax!rmr or rmr@uscd
2088 *
2089 * Severely hacked over by John Gilmore to make a 4.2BSD compatible
2090 * subroutine. 11Mar86; hoptoad!gnu
2091 *
2092 * Modified by rmtodd@uokmax 6-28-87 -- when making an already existing dir,
2093 * subroutine didn't return EEXIST. It does now.
2094 */
2095
2096/*
2097 * Make a directory.
2098 */
2099int
2100mkdir (char *dpath, int dmode)
2101{
2102 pid_t cpid;
2103 int status, fd;
2104 struct stat statbuf;
2105
2106 if (stat (dpath, &statbuf) == 0)
2107 {
2108 errno = EEXIST; /* Stat worked, so it already exists */
2109 return -1;
2110 }
2111
2112 /* If stat fails for a reason other than non-existence, return error */
2113 if (errno != ENOENT)
2114 return -1;
2115
2116 synch_process_alive = 1;
2117 switch (cpid = fork ())
2118 {
2119
2120 case -1: /* Error in fork */
2121 return (-1); /* Errno is set already */
2122
2123 case 0: /* Child process */
2124 /*
2125 * Cheap hack to set mode of new directory. Since this
2126 * child process is going away anyway, we zap its umask.
2127 * FIXME, this won't suffice to set SUID, SGID, etc. on this
2128 * directory. Does anybody care?
2129 */
2130 status = umask (0); /* Get current umask */
2131 status = umask (status | (0777 & ~dmode)); /* Set for mkdir */
2132 fd = emacs_open ("/dev/null", O_RDWR, 0);
2133 if (fd >= 0)
2134 {
2135 dup2 (fd, 0);
2136 dup2 (fd, 1);
2137 dup2 (fd, 2);
2138 }
2139 execl ("/bin/mkdir", "mkdir", dpath, (char *) 0);
2140 _exit (-1); /* Can't exec /bin/mkdir */
2141
2142 default: /* Parent process */
2143 wait_for_termination (cpid);
2144 }
2145
2146 if (synch_process_death != 0 || synch_process_retcode != 0
2147 || synch_process_termsig != 0)
2148 {
2149 errno = EIO; /* We don't know why, but */
2150 return -1; /* /bin/mkdir failed */
2151 }
2152
2153 return 0;
2154}
2155#endif /* not HAVE_MKDIR */
2156
2157#ifndef HAVE_RMDIR
2158int
2159rmdir (char *dpath)
2160{
2161 int cpid, status, fd;
2162 struct stat statbuf;
2163
2164 if (stat (dpath, &statbuf) != 0)
2165 {
2166 /* Stat just set errno. We don't have to */
2167 return -1;
2168 }
2169
2170 synch_process_alive = 1;
2171 switch (cpid = fork ())
2172 {
2173
2174 case -1: /* Error in fork */
2175 return (-1); /* Errno is set already */
2176
2177 case 0: /* Child process */
2178 fd = emacs_open ("/dev/null", O_RDWR, 0);
2179 if (fd >= 0)
2180 {
2181 dup2 (fd, 0);
2182 dup2 (fd, 1);
2183 dup2 (fd, 2);
2184 }
2185 execl ("/bin/rmdir", "rmdir", dpath, (char *) 0);
2186 _exit (-1); /* Can't exec /bin/rmdir */
2187
2188 default: /* Parent process */
2189 wait_for_termination (cpid);
2190 }
2191
2192 if (synch_process_death != 0 || synch_process_retcode != 0
2193 || synch_process_termsig != 0)
2194 {
2195 errno = EIO; /* We don't know why, but */
2196 return -1; /* /bin/rmdir failed */
2197 }
2198
2199 return 0;
2200}
2201#endif /* !HAVE_RMDIR */
2202
2203
2204#ifndef HAVE_STRSIGNAL 2078#ifndef HAVE_STRSIGNAL
2205char * 2079char *
2206strsignal (int code) 2080strsignal (int code)