From: Ralph Boehme Date: Fri, 30 Aug 2019 12:49:47 +0000 (+0200) Subject: s3:lib: add update_stat_ex_from_saved_stat() X-Git-Tag: talloc-2.3.1~934 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ac18730f10ce96a607a3a07e1360b522ebf72f38;p=thirdparty%2Fsamba.git s3:lib: add update_stat_ex_from_saved_stat() BUG: https://bugzilla.samba.org/show_bug.cgi?id=14121 Signed-off-by: Ralph Boehme Reviewed-by: Stefan Metzmacher --- diff --git a/source3/include/proto.h b/source3/include/proto.h index 17ea54fc4fe..7bf921f3476 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -223,6 +223,8 @@ void update_stat_ex_mtime(struct stat_ex *dst, struct timespec write_ts); void update_stat_ex_itime(struct stat_ex *dst, struct timespec itime); void update_stat_ex_create_time(struct stat_ex *dst, struct timespec create_time); void update_stat_ex_file_id(struct stat_ex *dst, uint64_t file_id); +void update_stat_ex_from_saved_stat(struct stat_ex *dst, + const struct stat_ex *src); int sys_stat(const char *fname, SMB_STRUCT_STAT *sbuf, bool fake_dir_create_times); int sys_fstat(int fd, SMB_STRUCT_STAT *sbuf, diff --git a/source3/lib/system.c b/source3/lib/system.c index 251c02bb1ee..def8281fc43 100644 --- a/source3/lib/system.c +++ b/source3/lib/system.c @@ -355,6 +355,26 @@ void update_stat_ex_file_id(struct stat_ex *dst, uint64_t file_id) dst->st_ex_iflags &= ~ST_EX_IFLAG_CALCULATED_FILE_ID; } +void update_stat_ex_from_saved_stat(struct stat_ex *dst, + const struct stat_ex *src) +{ + if (!VALID_STAT(*src)) { + return; + } + + if (!(src->st_ex_iflags & ST_EX_IFLAG_CALCULATED_BTIME)) { + update_stat_ex_create_time(dst, src->st_ex_btime); + } + + if (!(src->st_ex_iflags & ST_EX_IFLAG_CALCULATED_ITIME)) { + update_stat_ex_itime(dst, src->st_ex_itime); + } + + if (!(src->st_ex_iflags & ST_EX_IFLAG_CALCULATED_FILE_ID)) { + update_stat_ex_file_id(dst, src->st_ex_file_id); + } +} + void init_stat_ex_from_stat (struct stat_ex *dst, const struct stat *src, bool fake_dir_create_times)