From a262aa732981c99dface289922ee5952b4caba6f Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Wed, 7 May 2003 18:28:26 +0000 Subject: Make fchown, fchmod conditional for systems that don't have them. Jeremy. (This used to be commit 4fe84f61735ee2328e01d2ae864b0e6c7729f51b) --- source3/smbd/vfs-wrap.c | 21 ++++++++++++++++----- source3/web/swat.c | 4 ++++ 2 files changed, 20 insertions(+), 5 deletions(-) (limited to 'source3') diff --git a/source3/smbd/vfs-wrap.c b/source3/smbd/vfs-wrap.c index bae304096c..491fa70e68 100644 --- a/source3/smbd/vfs-wrap.c +++ b/source3/smbd/vfs-wrap.c @@ -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) diff --git a/source3/web/swat.c b/source3/web/swat.c index fa319bb3ae..7f9492933a 100644 --- a/source3/web/swat.c +++ b/source3/web/swat.c @@ -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); -- cgit