static bool test_null_time(struct torture_context *tctx) { torture_assert(tctx, null_time(0), "0"); torture_assert(tctx, null_time(0xFFFFFFFF), "0xFFFFFFFF"); torture_assert(tctx, null_time(-1), "-1"); torture_assert(tctx, !null_time(42), "42"); return true; }
CFreshInfo::CFreshInfo() { timeout = 0; depth = 0; CTime_struct null_time(0,0,0,0,0); real_time = null_time; }
/* fill in the dos file attributes for a file */ NTSTATUS pvfs_fill_dos_info(struct pvfs_state *pvfs, struct pvfs_filename *name, unsigned int flags, int fd) { NTSTATUS status; DATA_BLOB lkey; NTTIME write_time; /* make directories appear as size 0 with 1 link */ if (S_ISDIR(name->st.st_mode)) { name->st.st_size = 0; name->st.st_nlink = 1; } else if (name->stream_id == 0) { name->stream_name = NULL; } /* for now just use the simple samba mapping */ unix_to_nt_time(&name->dos.create_time, name->st.st_ctime); unix_to_nt_time(&name->dos.access_time, name->st.st_atime); unix_to_nt_time(&name->dos.write_time, name->st.st_mtime); unix_to_nt_time(&name->dos.change_time, name->st.st_ctime); #ifdef HAVE_STAT_TV_NSEC name->dos.create_time += name->st.st_ctim.tv_nsec / 100; name->dos.access_time += name->st.st_atim.tv_nsec / 100; name->dos.write_time += name->st.st_mtim.tv_nsec / 100; name->dos.change_time += name->st.st_ctim.tv_nsec / 100; #endif name->dos.attrib = dos_mode_from_stat(pvfs, &name->st); name->dos.alloc_size = pvfs_round_alloc_size(pvfs, name->st.st_size); name->dos.nlink = name->st.st_nlink; name->dos.ea_size = 4; /* TODO: Fill this in without hitting the stream bad in pvfs_doseas_load() */ if (pvfs->ntvfs->ctx->protocol >= PROTOCOL_SMB2_02) { /* SMB2 represents a null EA with zero bytes */ name->dos.ea_size = 0; } name->dos.file_id = (((uint64_t)name->st.st_dev)<<32) | name->st.st_ino; name->dos.flags = 0; status = pvfs_dosattrib_load(pvfs, name, fd); NT_STATUS_NOT_OK_RETURN(status); if (flags & PVFS_RESOLVE_NO_OPENDB) { return NT_STATUS_OK; } status = pvfs_locking_key(name, name, &lkey); NT_STATUS_NOT_OK_RETURN(status); status = odb_get_file_infos(pvfs->odb_context, &lkey, NULL, &write_time); data_blob_free(&lkey); if (!NT_STATUS_IS_OK(status)) { DEBUG(1,("WARNING: odb_get_file_infos: %s\n", nt_errstr(status))); return status; } if (!null_time(write_time)) { name->dos.write_time = write_time; } return NT_STATUS_OK; }