Make fchown, fchmod conditional for systems that don't have them.
authorJeremy Allison <jra@samba.org>
Wed, 7 May 2003 18:28:26 +0000 (18:28 +0000)
committerJeremy Allison <jra@samba.org>
Wed, 7 May 2003 18:28:26 +0000 (18:28 +0000)
Jeremy.
(This used to be commit 4fe84f61735ee2328e01d2ae864b0e6c7729f51b)

source3/smbd/vfs-wrap.c
source3/web/swat.c

index bae304096cefcf88be82e1b8500eb8c161665e20..491fa70e687ea761129112f3940c8208a9793781 100644 (file)
@@ -298,10 +298,10 @@ int vfswrap_chmod(connection_struct *conn, const char *path, mode_t mode)
 
 int vfswrap_fchmod(files_struct *fsp, int fd, mode_t mode)
 {
-    int result;
+       int result;
        struct vfs_ops *vfs_ops = &fsp->conn->vfs_ops;
        
-    START_PROFILE(syscall_fchmod);
+       START_PROFILE(syscall_fchmod);
 
        /*
         * We need to do this due to the fact that the default POSIX ACL
@@ -319,9 +319,15 @@ int vfswrap_fchmod(files_struct *fsp, int fd, mode_t mode)
                errno = saved_errno;
        }
 
-    result = fchmod(fd, mode);
-    END_PROFILE(syscall_fchmod);
-    return result;
+#if defined(HAVE_FCHMOD)
+       result = fchmod(fd, mode);
+#else
+       result = -1;
+       errno = ENOSYS;
+#endif
+
+       END_PROFILE(syscall_fchmod);
+       return result;
 }
 
 int vfswrap_chown(connection_struct *conn, const char *path, uid_t uid, gid_t gid)
@@ -336,6 +342,7 @@ int vfswrap_chown(connection_struct *conn, const char *path, uid_t uid, gid_t gi
 
 int vfswrap_fchown(files_struct *fsp, int fd, uid_t uid, gid_t gid)
 {
+#ifdef HAVE_FCHOWN
     int result;
 
     START_PROFILE(syscall_fchown);
@@ -343,6 +350,10 @@ int vfswrap_fchown(files_struct *fsp, int fd, uid_t uid, gid_t gid)
     result = fchown(fd, uid, gid);
     END_PROFILE(syscall_fchown);
     return result;
+#else
+    errno = ENOSYS;
+    return -1;
+#endif
 }
 
 int vfswrap_chdir(connection_struct *conn, const char *path)
index fa319bb3ae886f630b6ad4ccac4274fde622c181..7f9492933a540df4cfcfbb7648f37fea62bcacea 100644 (file)
@@ -417,7 +417,11 @@ static int save_reload(int snum)
        /* just in case they have used the buggy xinetd to create the file */
        if (fstat(fileno(f), &st) == 0 &&
            (st.st_mode & S_IWOTH)) {
+#if defined HAVE_FCHMOD
                fchmod(fileno(f), S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH);
+#else
+               chmod(dyn_CONFIGFILE, S_IWUSR | S_IRUSR | S_IRGRP | S_IROTH);
+#endif
        }
 
        write_config(f, False);