summaryrefslogtreecommitdiff
path: root/source3/include
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2009-07-08 17:51:35 -0700
committerJeremy Allison <jra@samba.org>2009-07-08 17:51:35 -0700
commitc9c3d4312d7281904fc4a1cc9abd4831cdf4bfb9 (patch)
tree78a1df33a6276aea076f57424d18729604970253 /source3/include
parent58daaa3d1e7075b23c8709889be9b461c6c6c174 (diff)
downloadsamba-c9c3d4312d7281904fc4a1cc9abd4831cdf4bfb9.tar.gz
samba-c9c3d4312d7281904fc4a1cc9abd4831cdf4bfb9.tar.bz2
samba-c9c3d4312d7281904fc4a1cc9abd4831cdf4bfb9.zip
The migration to struct stat_ex broke the calculation of
create time from the existing timestamps (for systems that need to do this). Once the write time is changed via a sticky write, the create time might need to be recalculated. To do this I needed to add a bool into struct stat_ex to remember if the st_ex_btime field was calculated, or read from the OS. Also fixed the returning of modified write timestamps in the return from NTCreateX, SMBattr and SMBattrE (which weren't taking into account the modified timestamp stored in the open file table). Attempting to fix an issue with Excel 2003 and offline files. Volker and Metze, please review. Jeremy
Diffstat (limited to 'source3/include')
-rw-r--r--source3/include/includes.h2
-rw-r--r--source3/include/proto.h1
2 files changed, 3 insertions, 0 deletions
diff --git a/source3/include/includes.h b/source3/include/includes.h
index 2b36d18257..8fb240f26c 100644
--- a/source3/include/includes.h
+++ b/source3/include/includes.h
@@ -460,6 +460,8 @@ struct stat_ex {
struct timespec st_ex_mtime;
struct timespec st_ex_ctime;
struct timespec st_ex_btime; /* birthtime */
+ /* Is birthtime real, or was it calculated ? */
+ bool st_ex_calculated_birthtime;
blksize_t st_ex_blksize;
blkcnt_t st_ex_blocks;
diff --git a/source3/include/proto.h b/source3/include/proto.h
index 0315f304bb..25a104d82d 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -911,6 +911,7 @@ ssize_t sys_recv(int fd, void *buf, size_t count, int flags);
ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
int sys_fcntl_ptr(int fd, int cmd, void *arg);
int sys_fcntl_long(int fd, int cmd, long arg);
+void update_stat_ex_writetime(struct stat_ex *dst, struct timespec write_ts);
int sys_stat(const char *fname,SMB_STRUCT_STAT *sbuf);
int sys_fstat(int fd,SMB_STRUCT_STAT *sbuf);
int sys_lstat(const char *fname,SMB_STRUCT_STAT *sbuf);