summaryrefslogtreecommitdiff
path: root/source3/include
diff options
context:
space:
mode:
authortodd stecher <todd.stecher@gmail.com>2009-01-23 14:40:19 -0800
committerTim Prouty <tprouty@samba.org>2009-01-23 21:05:38 -0800
commit48b0016cff4bad621b94fc0bf678ec15260dd7d7 (patch)
tree960f825709d1a8eb2af5fb0afb31553262ee290f /source3/include
parent7bb3860f49cd8b09c2015f6646c07fe5ebaa0de3 (diff)
downloadsamba-48b0016cff4bad621b94fc0bf678ec15260dd7d7.tar.gz
samba-48b0016cff4bad621b94fc0bf678ec15260dd7d7.tar.bz2
samba-48b0016cff4bad621b94fc0bf678ec15260dd7d7.zip
Extend NTIMES to allow setting create_time
1) Add in smb_file_time struct to clarify code and make room for createtime. 2) Get and set create time from SMB messages. 3) Fixup existing VFS modules + examples Some OS'es allow for the setting of the birthtime through kernel interfaces. This value is generically used for Windows createtime, but is not settable in the code today.
Diffstat (limited to 'source3/include')
-rw-r--r--source3/include/proto.h5
-rw-r--r--source3/include/smb.h7
-rw-r--r--source3/include/vfs.h4
3 files changed, 13 insertions, 3 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 1554bfdb25..1414ba89ec 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -6688,7 +6688,8 @@ int file_set_dosmode(connection_struct *conn, const char *fname,
uint32 dosmode, SMB_STRUCT_STAT *st,
const char *parent_dir,
bool newfile);
-int file_ntimes(connection_struct *conn, const char *fname, const struct timespec ts[2]);
+int file_ntimes(connection_struct *conn, const char *fname,
+ struct smb_file_time *ft);
bool set_sticky_write_time_path(connection_struct *conn, const char *fname,
struct file_id fileid, const struct timespec mtime);
bool set_sticky_write_time_fsp(struct files_struct *fsp, const struct timespec mtime);
@@ -7424,7 +7425,7 @@ NTSTATUS smb_set_file_time(connection_struct *conn,
files_struct *fsp,
const char *fname,
const SMB_STRUCT_STAT *psbuf,
- struct timespec ts[2],
+ struct smb_file_time *ft,
bool setting_write_time);
void reply_findclose(struct smb_request *req);
void reply_findnclose(struct smb_request *req);
diff --git a/source3/include/smb.h b/source3/include/smb.h
index 19d2208ada..aa2db693a3 100644
--- a/source3/include/smb.h
+++ b/source3/include/smb.h
@@ -1901,4 +1901,11 @@ struct smb_extended_info {
*/
#define CFF_DOS_PATH 0x00000001
+/* time info */
+struct smb_file_time {
+ struct timespec mtime;
+ struct timespec atime;
+ struct timespec create_time;
+};
+
#endif /* _SMB_H */
diff --git a/source3/include/vfs.h b/source3/include/vfs.h
index d02d14b854..5df71da905 100644
--- a/source3/include/vfs.h
+++ b/source3/include/vfs.h
@@ -111,6 +111,7 @@
/* Changed to version 24 - make security descriptor const in fset_nt_acl. JRA. */
/* Changed to version 25 - Jelmer's change from SMB_BIG_UINT to uint64_t. */
/* Leave at 25 - not yet released. Add create_file call. -- tprouty. */
+/* Leave at 25 - not yet released. Add create time to ntimes. -- tstecher. */
#define SMB_VFS_INTERFACE_VERSION 25
@@ -137,6 +138,7 @@ struct security_descriptor;
struct vfs_statvfs_struct;
struct smb_request;
struct ea_list;
+struct smb_file_time;
/*
Available VFS operations. These values must be in sync with vfs_ops struct
@@ -348,7 +350,7 @@ struct vfs_ops {
int (*lchown)(struct vfs_handle_struct *handle, const char *path, uid_t uid, gid_t gid);
int (*chdir)(struct vfs_handle_struct *handle, const char *path);
char *(*getwd)(struct vfs_handle_struct *handle, char *buf);
- int (*ntimes)(struct vfs_handle_struct *handle, const char *path, const struct timespec ts[2]);
+ int (*ntimes)(struct vfs_handle_struct *handle, const char *path, struct smb_file_time *ft);
int (*ftruncate)(struct vfs_handle_struct *handle, struct files_struct *fsp, SMB_OFF_T offset);
bool (*lock)(struct vfs_handle_struct *handle, struct files_struct *fsp, int op, SMB_OFF_T offset, SMB_OFF_T count, int type);
int (*kernel_flock)(struct vfs_handle_struct *handle, struct files_struct *fsp, uint32 share_mode);