return;
}
- state->create_time = interpret_long_date((char *)outbuf.data + 0x0);
- state->access_time = interpret_long_date((char *)outbuf.data + 0x8);
- state->write_time = interpret_long_date((char *)outbuf.data + 0x10);
- state->change_time = interpret_long_date((char *)outbuf.data + 0x18);
+ state->create_time = interpret_long_date(BVAL(outbuf.data, 0));
+ state->access_time = interpret_long_date(BVAL(outbuf.data, 0x8));
+ state->write_time = interpret_long_date(BVAL(outbuf.data, 0x10));
+ state->change_time = interpret_long_date(BVAL(outbuf.data, 0x18));
state->mode = IVAL(outbuf.data, 0x20);
state->size = BVAL(outbuf.data, 0x30);
state->ino = BVAL(outbuf.data, 0x40);
return NT_STATUS_INFO_LENGTH_MISMATCH;
}
- finfo->btime_ts = interpret_long_date((const char *)dir_data + 8);
- finfo->atime_ts = interpret_long_date((const char *)dir_data + 16);
- finfo->mtime_ts = interpret_long_date((const char *)dir_data + 24);
- finfo->ctime_ts = interpret_long_date((const char *)dir_data + 32);
+ finfo->btime_ts = interpret_long_date(BVAL(dir_data, 8));
+ finfo->atime_ts = interpret_long_date(BVAL(dir_data, 16));
+ finfo->mtime_ts = interpret_long_date(BVAL(dir_data, 24));
+ finfo->ctime_ts = interpret_long_date(BVAL(dir_data, 32));
finfo->size = IVAL2_TO_SMB_BIG_UINT(dir_data + 40, 0);
finfo->attr = IVAL(dir_data + 56, 0);
namelen = IVAL(dir_data + 60,0);
time_t srv_make_unix_date(const void *date_ptr);
time_t srv_make_unix_date2(const void *date_ptr);
time_t srv_make_unix_date3(const void *date_ptr);
-struct timespec interpret_long_date(const char *p);
+struct timespec interpret_long_date(NTTIME nt);
void TimeInit(void);
void get_process_uptime(struct timeval *ret_time);
void get_startup_time(struct timeval *ret_time);
will be returned as (time_t)-1, whereas nt_time_to_unix returns 0 in this case.
****************************************************************************/
-struct timespec interpret_long_date(const char *p)
+struct timespec interpret_long_date(NTTIME nt)
{
- NTTIME nt;
- nt = BVAL(p, 0);
if (nt == (uint64_t)-1) {
struct timespec ret;
ret.tv_sec = (time_t)-1;
return NT_STATUS_INFO_LENGTH_MISMATCH;
}
- finfo->btime_ts = interpret_long_date((const char *)dir_data + 8);
- finfo->atime_ts = interpret_long_date((const char *)dir_data + 16);
- finfo->mtime_ts = interpret_long_date((const char *)dir_data + 24);
- finfo->ctime_ts = interpret_long_date((const char *)dir_data + 32);
+ finfo->btime_ts = interpret_long_date(BVAL(dir_data, 8));
+ finfo->atime_ts = interpret_long_date(BVAL(dir_data, 16));
+ finfo->mtime_ts = interpret_long_date(BVAL(dir_data, 24));
+ finfo->ctime_ts = interpret_long_date(BVAL(dir_data, 32));
finfo->allocated_size = PULL_LE_U64(dir_data, 40);
finfo->size = PULL_LE_U64(dir_data, 48);
finfo->mode = PULL_LE_U32(dir_data, 56);
return NT_STATUS_INFO_LENGTH_MISMATCH;
}
- finfo->btime_ts = interpret_long_date((const char *)dir_data + 8);
- finfo->atime_ts = interpret_long_date((const char *)dir_data + 16);
- finfo->mtime_ts = interpret_long_date((const char *)dir_data + 24);
- finfo->ctime_ts = interpret_long_date((const char *)dir_data + 32);
+ finfo->btime_ts = interpret_long_date(BVAL(dir_data, 8));
+ finfo->atime_ts = interpret_long_date(BVAL(dir_data, 16));
+ finfo->mtime_ts = interpret_long_date(BVAL(dir_data, 24));
+ finfo->ctime_ts = interpret_long_date(BVAL(dir_data, 32));
finfo->size = IVAL2_TO_SMB_BIG_UINT(dir_data + 40, 0);
finfo->allocated_size = IVAL2_TO_SMB_BIG_UINT(dir_data + 48, 0);
finfo->attr = IVAL(dir_data + 56, 0);
if (pdate) {
struct timespec ts;
- ts = interpret_long_date((char *)outbuf.data);
+ ts = interpret_long_date(BVAL(outbuf.data, 0));
*pdate = ts.tv_sec;
}
if (pserial_number) {
sbuf->st_ex_blocks /= 512;
#endif
/* time of last change */
- sbuf->st_ex_ctime = interpret_long_date((char *)(data + 16));
+ sbuf->st_ex_ctime = interpret_long_date(BVAL(data, 16));
/* time of last access */
- sbuf->st_ex_atime = interpret_long_date((char *)(data + 24));
+ sbuf->st_ex_atime = interpret_long_date(BVAL(data, 24));
/* time of last modification */
- sbuf->st_ex_mtime = interpret_long_date((char *)(data + 32));
+ sbuf->st_ex_mtime = interpret_long_date(BVAL(data, 32));
sbuf->st_ex_uid = (uid_t) IVAL(data, 40); /* user ID of owner */
sbuf->st_ex_gid = (gid_t) IVAL(data, 48); /* group ID of owner */
if (pdate) {
struct timespec ts;
- ts = interpret_long_date((char *)rdata);
+ ts = interpret_long_date(BVAL(rdata, 0));
*pdate = ts.tv_sec;
}
if (pserial_number) {
/* Offset zero is "create time", not "change time". */
p += 8;
- finfo->atime_ts = interpret_long_date(p);
+ finfo->atime_ts = interpret_long_date(BVAL(p, 0));
p += 8;
- finfo->mtime_ts = interpret_long_date(p);
+ finfo->mtime_ts = interpret_long_date(BVAL(p, 0));
p += 8;
- finfo->ctime_ts = interpret_long_date(p);
+ finfo->ctime_ts = interpret_long_date(BVAL(p, 0));
p += 8;
finfo->size = IVAL2_TO_SMB_BIG_UINT(p,0);
p += 8;
if (tevent_req_nterror(req, status)) {
return;
}
- state->create_time = interpret_long_date((const char *)rdata + 0x0);
- state->access_time = interpret_long_date((const char *)rdata + 0x8);
- state->write_time = interpret_long_date((const char *)rdata + 0x10);
- state->change_time = interpret_long_date((const char *)rdata + 0x18);
+ state->create_time = interpret_long_date(BVAL(rdata, 0x0));
+ state->access_time = interpret_long_date(BVAL(rdata, 0x8));
+ state->write_time = interpret_long_date(BVAL(rdata, 0x10));
+ state->change_time = interpret_long_date(BVAL(rdata, 0x18));
state->attr = PULL_LE_U32(rdata, 0x20);
state->size = PULL_LE_U64(rdata, 0x30);
state->ino = PULL_LE_U64(rdata, 0x40);
return;
}
- state->create_time = interpret_long_date((char *)data + 0);
- state->access_time = interpret_long_date((char *)data + 8);
- state->write_time = interpret_long_date((char *)data + 16);
- state->change_time = interpret_long_date((char *)data + 24);
+ state->create_time = interpret_long_date(BVAL(data, 0));
+ state->access_time = interpret_long_date(BVAL(data, 8));
+ state->write_time = interpret_long_date(BVAL(data, 16));
+ state->change_time = interpret_long_date(BVAL(data, 24));
state->attr = PULL_LE_U32(data, 32);
state->size = PULL_LE_U64(data, 48);
return;
}
- state->create_time = interpret_long_date((char *)rdata+0);
- state->access_time = interpret_long_date((char *)rdata+8);
- state->write_time = interpret_long_date((char *)rdata+16);
- state->change_time = interpret_long_date((char *)rdata+24);
+ state->create_time = interpret_long_date(BVAL(rdata, 0));
+ state->access_time = interpret_long_date(BVAL(rdata, 8));
+ state->write_time = interpret_long_date(BVAL(rdata, 16));
+ state->change_time = interpret_long_date(BVAL(rdata, 24));
state->attr = PULL_LE_U32(rdata, 32);
state->size = PULL_LE_U64(rdata,48);
state->ino = PULL_LE_U32(rdata, 64);
return;
}
- state->create_time = interpret_long_date(
- (const char *)outbuf.data + 0x0);
- state->access_time = interpret_long_date(
- (const char *)outbuf.data + 0x8);
- state->write_time = interpret_long_date(
- (const char *)outbuf.data + 0x10);
- state->change_time = interpret_long_date(
- (const char *)outbuf.data + 0x18);
+ state->create_time = interpret_long_date(BVAL(outbuf.data, 0x0));
+ state->access_time = interpret_long_date(BVAL(outbuf.data, 0x8));
+ state->write_time = interpret_long_date(BVAL(outbuf.data, 0x10));
+ state->change_time = interpret_long_date(BVAL(outbuf.data, 0x18));
state->attr = IVAL(outbuf.data, 0x20);
state->size = BVAL(outbuf.data, 0x30);
state->ino = BVAL(outbuf.data, 0x40);
return status;
}
- sbuf->st_ex_btime = interpret_long_date((char *)state->data);
- sbuf->st_ex_atime = interpret_long_date((char *)state->data+8);
- sbuf->st_ex_mtime = interpret_long_date((char *)state->data+16);
- sbuf->st_ex_ctime = interpret_long_date((char *)state->data+24);
+ sbuf->st_ex_btime = interpret_long_date(BVAL(state->data, 0));
+ sbuf->st_ex_atime = interpret_long_date(BVAL(state->data, 8));
+ sbuf->st_ex_mtime = interpret_long_date(BVAL(state->data, 16));
+ sbuf->st_ex_ctime = interpret_long_date(BVAL(state->data, 24));
*attributes = IVAL(state->data, 32);
return NT_STATUS_OK;
}
p += 4; /* fileindex */
/* Offset zero is "create time", not "change time". */
p += 8;
- finfo->atime_ts = interpret_long_date((const char *)p);
+ finfo->atime_ts = interpret_long_date(BVAL(p, 0));
p += 8;
- finfo->mtime_ts = interpret_long_date((const char *)p);
+ finfo->mtime_ts = interpret_long_date(BVAL(p, 0));
p += 8;
- finfo->ctime_ts = interpret_long_date((const char *)p);
+ finfo->ctime_ts = interpret_long_date(BVAL(p, 0));
p += 8;
finfo->size = PULL_LE_U64(p, 0);
p += 8;