summaryrefslogtreecommitdiffstats
path: root/source/include
diff options
context:
space:
mode:
Diffstat (limited to 'source/include')
-rw-r--r--source/include/config.h.in6
-rw-r--r--source/include/profile.h6
-rw-r--r--source/include/proto.h6
-rw-r--r--source/include/vfs.h2
4 files changed, 18 insertions, 2 deletions
diff --git a/source/include/config.h.in b/source/include/config.h.in
index 005cb432225..04bd7718b6b 100644
--- a/source/include/config.h.in
+++ b/source/include/config.h.in
@@ -467,6 +467,12 @@
/* Define if you have the execl function. */
#undef HAVE_EXECL
+/* Define if you have the fchmod function. */
+#undef HAVE_FCHMOD
+
+/* Define if you have the fchown function. */
+#undef HAVE_FCHOWN
+
/* Define if you have the fcvt function. */
#undef HAVE_FCVT
diff --git a/source/include/profile.h b/source/include/profile.h
index b05e1fd9bbf..5916614fb74 100644
--- a/source/include/profile.h
+++ b/source/include/profile.h
@@ -35,7 +35,7 @@ enum flush_reason_enum { SEEK_FLUSH, READ_FLUSH, WRITE_FLUSH, READRAW_FLUSH,
#define PROF_SHMEM_KEY ((key_t)0x07021999)
#define PROF_SHM_MAGIC 0x6349985
-#define PROF_SHM_VERSION 3
+#define PROF_SHM_VERSION 4
/* time values in the following structure are in microseconds */
@@ -80,8 +80,12 @@ struct profile_stats {
unsigned syscall_unlink_time;
unsigned syscall_chmod_count;
unsigned syscall_chmod_time;
+ unsigned syscall_fchmod_count;
+ unsigned syscall_fchmod_time;
unsigned syscall_chown_count;
unsigned syscall_chown_time;
+ unsigned syscall_fchown_count;
+ unsigned syscall_fchown_time;
unsigned syscall_chdir_count;
unsigned syscall_chdir_time;
unsigned syscall_getwd_count;
diff --git a/source/include/proto.h b/source/include/proto.h
index 23a72018e32..701f79d679b 100644
--- a/source/include/proto.h
+++ b/source/include/proto.h
@@ -3806,7 +3806,7 @@ BOOL check_name(char *name,connection_struct *conn);
/*The following definitions come from smbd/files.c */
-files_struct *file_new(void );
+files_struct *file_new(connection_struct *conn);
void file_close_conn(connection_struct *conn);
void file_init(void);
void file_close_user(int vuid);
@@ -3903,6 +3903,8 @@ files_struct *open_file_shared(connection_struct *conn,char *fname, SMB_STRUCT_S
int share_mode,int ofun, mode_t mode,int oplock_request, int *Access,int *action);
files_struct *open_file_stat(connection_struct *conn, char *fname,
SMB_STRUCT_STAT *psbuf, int smb_ofun, int *action);
+files_struct *open_file_fchmod(connection_struct *conn, char *fname, SMB_STRUCT_STAT *psbuf);
+int close_file_fchmod(files_struct *fsp);
files_struct *open_directory(connection_struct *conn, char *fname,
SMB_STRUCT_STAT *psbuf, int smb_ofun, mode_t unixmode, int *action);
BOOL check_file_sharing(connection_struct *conn,char *fname, BOOL rename_op);
@@ -4159,7 +4161,9 @@ int vfswrap_fstat(files_struct *fsp, int fd, SMB_STRUCT_STAT *sbuf);
int vfswrap_lstat(connection_struct *conn, char *path, SMB_STRUCT_STAT *sbuf);
int vfswrap_unlink(connection_struct *conn, char *path);
int vfswrap_chmod(connection_struct *conn, char *path, mode_t mode);
+int vfswrap_fchmod(files_struct *fsp, int fd, mode_t mode);
int vfswrap_chown(connection_struct *conn, char *path, uid_t uid, gid_t gid);
+int vfswrap_fchown(files_struct *fsp, int fd, uid_t uid, gid_t gid);
int vfswrap_chdir(connection_struct *conn, char *path);
char *vfswrap_getwd(connection_struct *conn, char *path);
int vfswrap_utime(connection_struct *conn, char *path, struct utimbuf *times);
diff --git a/source/include/vfs.h b/source/include/vfs.h
index 9ca4bde0c53..51f3df1ec95 100644
--- a/source/include/vfs.h
+++ b/source/include/vfs.h
@@ -78,7 +78,9 @@ struct vfs_ops {
int (*lstat)(struct connection_struct *conn, char *path, SMB_STRUCT_STAT *sbuf);
int (*unlink)(struct connection_struct *conn, char *path);
int (*chmod)(struct connection_struct *conn, char *path, mode_t mode);
+ int (*fchmod)(struct files_struct *fsp, int fd, mode_t mode);
int (*chown)(struct connection_struct *conn, char *path, uid_t uid, gid_t gid);
+ int (*fchown)(struct files_struct *fsp, int fd, uid_t uid, gid_t gid);
int (*chdir)(struct connection_struct *conn, char *path);
char *(*getwd)(struct connection_struct *conn, char *buf);
int (*utime)(struct connection_struct *conn, char *path, struct utimbuf *times);