merge with 3.8
[gnulib.git] / lib / makepath.c
index 98b78a1..e615790 100644 (file)
@@ -43,15 +43,22 @@ char *alloca ();
 #endif
 
 #ifdef STDC_HEADERS
-#include <errno.h>
 #include <stdlib.h>
-#else
+#endif
+
+#ifdef HAVE_ERRNO_H
+#include <errno.h>
+#endif
+
+#ifndef STDC_HEADERS
 extern int errno;
 #endif
 
-#if defined(USG) || defined(STDC_HEADERS)
+#if defined(STDC_HEADERS) || defined(HAVE_STRING_H)
 #include <string.h>
+#ifndef index
 #define index strchr
+#endif
 #else
 #include <strings.h>
 #endif
@@ -93,7 +100,7 @@ make_path (argpath, mode, parent_mode, owner, group, verbose_fmt_string)
   int retval = 0;
   int oldmask = umask (0);
 
-  dirpath = alloca (strlen (argpath) + 1);
+  dirpath = (char *) alloca (strlen (argpath) + 1);
   strcpy (dirpath, argpath);
 
   if (stat (dirpath, &stats))
@@ -145,7 +152,7 @@ make_path (argpath, mode, parent_mode, owner, group, verbose_fmt_string)
 
                  if (owner != (uid_t) -1 && group != (gid_t) -1
                      && chown (dirpath, owner, group)
-#ifdef AFS
+#if defined(AFS) && defined (EPERM)
                      && errno != EPERM
 #endif
                      )