diff options
author | Jeremy Allison <jra@samba.org> | 2003-05-07 18:28:26 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2003-05-07 18:28:26 +0000 |
commit | a262aa732981c99dface289922ee5952b4caba6f (patch) | |
tree | 5fbd2a7a4c2be89b5e437ec4ee0b0843518e3174 /source3/smbd/vfs-wrap.c | |
parent | 0627958bd3c6e6e14a48a3674f6577309e244c6e (diff) | |
download | samba-a262aa732981c99dface289922ee5952b4caba6f.tar.gz samba-a262aa732981c99dface289922ee5952b4caba6f.tar.bz2 samba-a262aa732981c99dface289922ee5952b4caba6f.zip |
Make fchown, fchmod conditional for systems that don't have them.
Jeremy.
(This used to be commit 4fe84f61735ee2328e01d2ae864b0e6c7729f51b)
Diffstat (limited to 'source3/smbd/vfs-wrap.c')
-rw-r--r-- | source3/smbd/vfs-wrap.c | 21 |
1 files changed, 16 insertions, 5 deletions
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) |