Remove the extraneous logic in smb_set_info_standard - we
authorJeremy Allison <jra@samba.org>
Thu, 30 Jul 2009 20:16:40 +0000 (13:16 -0700)
committerJeremy Allison <jra@samba.org>
Thu, 30 Jul 2009 20:16:40 +0000 (13:16 -0700)
do the time twiddling logic at the smb_set_file_time level.
Jeremy.

source3/include/smb.h
source3/smbd/trans2.c

index 11927443bd90bcb6826a0a491b62e6c4710a8f8f..819d3a8c4f5b5fbb9ecfb675f3c6a489332c2c38 100644 (file)
@@ -1895,6 +1895,7 @@ struct smb_extended_info {
 struct smb_file_time {
        struct timespec mtime;
        struct timespec atime;
+       struct timespec ctime;
        struct timespec create_time;
 };
 
index 76b6b3bbe1b174918ca5b24758207963ddd87c26..93bd9107ac9a17ec5be621d18323050d6f3d3f31 100644 (file)
@@ -6055,12 +6055,9 @@ static NTSTATUS smb_set_file_basic_info(connection_struct *conn,
                                        const struct smb_filename *smb_fname)
 {
        /* Patch to do this correctly from Paul Eggert <eggert@twinsun.com>. */
-       struct timespec write_time;
-       struct timespec changed_time;
        struct smb_file_time ft;
        uint32 dosmode = 0;
        NTSTATUS status = NT_STATUS_OK;
-       bool setting_write_time = true;
 
        ZERO_STRUCT(ft);
 
@@ -6075,38 +6072,23 @@ static NTSTATUS smb_set_file_basic_info(connection_struct *conn,
                return status;
        }
 
-       /* access time */
-       ft.atime = interpret_long_date(pdata+8);
-
-       write_time = interpret_long_date(pdata+16);
-       changed_time = interpret_long_date(pdata+24);
-
-       /* mtime */
-       ft.mtime = timespec_min(&write_time, &changed_time);
-
        /* create time */
        ft.create_time = interpret_long_date(pdata);
 
-       if ((timespec_compare(&write_time, &ft.mtime) == 1) &&
-           !null_timespec(write_time)) {
-               ft.mtime = write_time;
-       }
+       /* access time */
+       ft.atime = interpret_long_date(pdata+8);
 
-       /* Prefer a defined time to an undefined one. */
-       if (null_timespec(ft.mtime)) {
-               if (null_timespec(write_time)) {
-                       ft.mtime = changed_time;
-                       setting_write_time = false;
-               } else {
-                       ft.mtime = write_time;
-               }
-       }
+       /* write time. */
+       ft.mtime = interpret_long_date(pdata+16);
+
+       /* change time. */
+       ft.ctime = interpret_long_date(pdata+24);
 
        DEBUG(10, ("smb_set_file_basic_info: file %s\n",
                   smb_fname_str_dbg(smb_fname)));
 
        return smb_set_file_time(conn, fsp, smb_fname, &ft,
-                                setting_write_time);
+                                true);
 }
 
 /****************************************************************************