r5666: winxp will use a NTTIME of -1 to mean "don't change" in setfileinfo
authorAndrew Tridgell <tridge@samba.org>
Sat, 5 Mar 2005 22:50:13 +0000 (22:50 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:10:58 +0000 (13:10 -0500)
basic_info. Add null_nttime() as the equivalent of the existing
null_time() call for cheecking for valid NTTIME values
(This used to be commit 439ce2efbf7d2ba9b17d6b4bfaf651e781140715)

source4/lib/time.c
source4/ntvfs/posix/pvfs_setfileinfo.c
source4/ntvfs/posix/pvfs_xattr.c

index 67397e953a6d9446862247d0ff0dadf1ac5c9d15..7b371f58dd41f67dd2e25f2b5a8d8e5f820af7be 100644 (file)
@@ -112,6 +112,15 @@ BOOL null_time(time_t t)
                t == (time_t)-1;
 }
 
+
+/****************************************************************************
+check if it's a null NTTIME
+****************************************************************************/
+BOOL null_nttime(NTTIME t)
+{
+       return t == 0 || t == (NTTIME)-1;
+}
+
 /*******************************************************************
   create a 16 bit dos packed date
 ********************************************************************/
index 9bc51d1ef438f39a74a61561b5605f1ac27c12c0..31a60fac18ae99576a9886e059231d6a49d79700 100644 (file)
@@ -301,18 +301,18 @@ NTSTATUS pvfs_setfileinfo(struct ntvfs_module_context *ntvfs,
 
        case RAW_SFILEINFO_BASIC_INFO:
        case RAW_SFILEINFO_BASIC_INFORMATION:
-               if (info->basic_info.in.create_time) {
+               if (!null_nttime(info->basic_info.in.create_time)) {
                        newstats.dos.create_time = info->basic_info.in.create_time;
                }
-               if (info->basic_info.in.access_time) {
+               if (!null_nttime(info->basic_info.in.access_time)) {
                        newstats.dos.access_time = info->basic_info.in.access_time;
                }
-               if (info->basic_info.in.write_time) {
+               if (!null_nttime(info->basic_info.in.write_time)) {
                        newstats.dos.write_time = info->basic_info.in.write_time;
                        newstats.dos.flags |= XATTR_ATTRIB_FLAG_STICKY_WRITE_TIME;
                        h->sticky_write_time = True;
                }
-               if (info->basic_info.in.change_time) {
+               if (!null_nttime(info->basic_info.in.change_time)) {
                        newstats.dos.change_time = info->basic_info.in.change_time;
                }
                if (info->basic_info.in.attrib != 0) {
@@ -490,16 +490,16 @@ NTSTATUS pvfs_setpathinfo(struct ntvfs_module_context *ntvfs,
 
        case RAW_SFILEINFO_BASIC_INFO:
        case RAW_SFILEINFO_BASIC_INFORMATION:
-               if (info->basic_info.in.create_time) {
+               if (!null_nttime(info->basic_info.in.create_time)) {
                        newstats.dos.create_time = info->basic_info.in.create_time;
                }
-               if (info->basic_info.in.access_time) {
+               if (!null_nttime(info->basic_info.in.access_time)) {
                        newstats.dos.access_time = info->basic_info.in.access_time;
                }
-               if (info->basic_info.in.write_time) {
+               if (!null_nttime(info->basic_info.in.write_time)) {
                        newstats.dos.write_time = info->basic_info.in.write_time;
                }
-               if (info->basic_info.in.change_time) {
+               if (!null_nttime(info->basic_info.in.change_time)) {
                        newstats.dos.change_time = info->basic_info.in.change_time;
                }
                if (info->basic_info.in.attrib != 0) {
index c930fcbd681bb081ea2817d60e9774b81ab0157d..c2af2e10bdea261f123a478d43a6dd934901d58a 100644 (file)
@@ -190,10 +190,10 @@ NTSTATUS pvfs_dosattrib_load(struct pvfs_state *pvfs, struct pvfs_filename *name
                        name->dos.alloc_size = 
                                pvfs_round_alloc_size(pvfs, info1->alloc_size);
                }
-               if (info1->create_time != 0) {
+               if (!null_nttime(info1->create_time)) {
                        name->dos.create_time = info1->create_time;
                }
-               if (info1->change_time != 0) {
+               if (!null_nttime(info1->change_time)) {
                        name->dos.change_time = info1->change_time;
                }
                name->dos.flags = 0;
@@ -207,10 +207,10 @@ NTSTATUS pvfs_dosattrib_load(struct pvfs_state *pvfs, struct pvfs_filename *name
                        name->dos.alloc_size = 
                                pvfs_round_alloc_size(pvfs, info2->alloc_size);
                }
-               if (info2->create_time != 0) {
+               if (!null_nttime(info2->create_time)) {
                        name->dos.create_time = info2->create_time;
                }
-               if (info2->change_time != 0) {
+               if (!null_nttime(info2->change_time)) {
                        name->dos.change_time = info2->change_time;
                }
                name->dos.flags = info2->flags;