summaryrefslogtreecommitdiff
path: root/source3/libsmb
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2005-11-05 04:21:55 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:05:19 -0500
commit6d5757395a0e54245543794d0d6d6d6a32cd857a (patch)
treecdf48f97df8be03543172690524ddf6332a389a2 /source3/libsmb
parent65ed4d3efda243f526131fd145c72647785f9906 (diff)
downloadsamba-6d5757395a0e54245543794d0d6d6d6a32cd857a.tar.gz
samba-6d5757395a0e54245543794d0d6d6d6a32cd857a.tar.bz2
samba-6d5757395a0e54245543794d0d6d6d6a32cd857a.zip
r11511: A classic "friday night check-in" :-). This moves much
of the Samba4 timezone handling code back into Samba3. Gets rid of "kludge-gmt" and removes the effectiveness of the parameter "time offset" (I can add this back in very easily if needed) - it's no longer being looked at. I'm hoping this will fix the problems people have been having with DST transitions. I'll start comprehensive testing tomorrow, but for now all modifications are done. Splits time get/set functions into srv_XXX and cli_XXX as they need to look at different timezone offsets. Get rid of much of the "efficiency" cruft that was added to Samba back in the day when the C library timezone handling functions were slow. Jeremy. (This used to be commit 414303bc0272f207046b471a0364fa296b67c1f8)
Diffstat (limited to 'source3/libsmb')
-rw-r--r--source3/libsmb/cliconnect.c4
-rw-r--r--source3/libsmb/clifile.c16
-rw-r--r--source3/libsmb/clilist.c14
-rw-r--r--source3/libsmb/cliprint.c2
-rw-r--r--source3/libsmb/clirap.c24
5 files changed, 30 insertions, 30 deletions
diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c
index 8118f073df..b352d3572a 100644
--- a/source3/libsmb/cliconnect.c
+++ b/source3/libsmb/cliconnect.c
@@ -1170,7 +1170,7 @@ BOOL cli_negprot(struct cli_state *cli)
cli->serverzone = SVALS(cli->inbuf,smb_vwv10);
cli->serverzone *= 60;
/* this time is converted to GMT by make_unix_date */
- cli->servertime = make_unix_date(cli->inbuf+smb_vwv8);
+ cli->servertime = cli_make_unix_date(cli,cli->inbuf+smb_vwv8);
cli->readbraw_supported = ((SVAL(cli->inbuf,smb_vwv5) & 0x1) != 0);
cli->writebraw_supported = ((SVAL(cli->inbuf,smb_vwv5) & 0x2) != 0);
cli->secblob = data_blob(smb_buf(cli->inbuf),smb_buflen(cli->inbuf));
@@ -1178,7 +1178,7 @@ BOOL cli_negprot(struct cli_state *cli)
/* the old core protocol */
cli->use_spnego = False;
cli->sec_mode = 0;
- cli->serverzone = TimeDiff(time(NULL));
+ cli->serverzone = get_time_zone(time(NULL));
}
cli->max_xmit = MIN(cli->max_xmit, CLI_BUFFER_SIZE);
diff --git a/source3/libsmb/clifile.c b/source3/libsmb/clifile.c
index ff42e64143..443f515665 100644
--- a/source3/libsmb/clifile.c
+++ b/source3/libsmb/clifile.c
@@ -1106,15 +1106,15 @@ BOOL cli_getattrE(struct cli_state *cli, int fd,
}
if (c_time) {
- *c_time = make_unix_date2(cli->inbuf+smb_vwv0);
+ *c_time = cli_make_unix_date2(cli, cli->inbuf+smb_vwv0);
}
if (a_time) {
- *a_time = make_unix_date2(cli->inbuf+smb_vwv2);
+ *a_time = cli_make_unix_date2(cli, cli->inbuf+smb_vwv2);
}
if (m_time) {
- *m_time = make_unix_date2(cli->inbuf+smb_vwv4);
+ *m_time = cli_make_unix_date2(cli, cli->inbuf+smb_vwv4);
}
return True;
@@ -1158,7 +1158,7 @@ BOOL cli_getatr(struct cli_state *cli, const char *fname,
}
if (t) {
- *t = make_unix_date3(cli->inbuf+smb_vwv1);
+ *t = cli_make_unix_date3(cli, cli->inbuf+smb_vwv1);
}
if (attr) {
@@ -1189,9 +1189,9 @@ BOOL cli_setattrE(struct cli_state *cli, int fd,
cli_setup_packet(cli);
SSVAL(cli->outbuf,smb_vwv0, fd);
- put_dos_date2(cli->outbuf,smb_vwv1, c_time);
- put_dos_date2(cli->outbuf,smb_vwv3, a_time);
- put_dos_date2(cli->outbuf,smb_vwv5, m_time);
+ cli_put_dos_date2(cli, cli->outbuf,smb_vwv1, c_time);
+ cli_put_dos_date2(cli, cli->outbuf,smb_vwv3, a_time);
+ cli_put_dos_date2(cli, cli->outbuf,smb_vwv5, m_time);
p = smb_buf(cli->outbuf);
*p++ = 4;
@@ -1228,7 +1228,7 @@ BOOL cli_setatr(struct cli_state *cli, const char *fname, uint16 attr, time_t t)
cli_setup_packet(cli);
SSVAL(cli->outbuf,smb_vwv0, attr);
- put_dos_date3(cli->outbuf,smb_vwv1, t);
+ cli_put_dos_date3(cli, cli->outbuf,smb_vwv1, t);
p = smb_buf(cli->outbuf);
*p++ = 4;
diff --git a/source3/libsmb/clilist.c b/source3/libsmb/clilist.c
index a0be40bdc9..e09a6514ad 100644
--- a/source3/libsmb/clilist.c
+++ b/source3/libsmb/clilist.c
@@ -49,9 +49,9 @@ static size_t interpret_long_filename(struct cli_state *cli, int level,char *p,f
case 1: /* OS/2 understands this */
/* these dates are converted to GMT by
make_unix_date */
- finfo->ctime = make_unix_date2(p+4);
- finfo->atime = make_unix_date2(p+8);
- finfo->mtime = make_unix_date2(p+12);
+ finfo->ctime = cli_make_unix_date2(cli, p+4);
+ finfo->atime = cli_make_unix_date2(cli, p+8);
+ finfo->mtime = cli_make_unix_date2(cli, p+12);
finfo->size = IVAL(p,16);
finfo->mode = CVAL(p,24);
len = CVAL(p, 26);
@@ -70,9 +70,9 @@ static size_t interpret_long_filename(struct cli_state *cli, int level,char *p,f
case 2: /* this is what OS/2 uses mostly */
/* these dates are converted to GMT by
make_unix_date */
- finfo->ctime = make_unix_date2(p+4);
- finfo->atime = make_unix_date2(p+8);
- finfo->mtime = make_unix_date2(p+12);
+ finfo->ctime = cli_make_unix_date2(cli, p+4);
+ finfo->atime = cli_make_unix_date2(cli, p+8);
+ finfo->mtime = cli_make_unix_date2(cli, p+12);
finfo->size = IVAL(p,16);
finfo->mode = CVAL(p,24);
len = CVAL(p, 30);
@@ -380,7 +380,7 @@ static int interpret_short_filename(struct cli_state *cli, char *p,file_info *fi
finfo->mode = CVAL(p,21);
/* this date is converted to GMT by make_unix_date */
- finfo->ctime = make_unix_date(p+22);
+ finfo->ctime = cli_make_unix_date(cli, p+22);
finfo->mtime = finfo->atime = finfo->ctime;
finfo->size = IVAL(p,26);
clistr_pull(cli, finfo->name, p+30, sizeof(finfo->name), 12, STR_ASCII);
diff --git a/source3/libsmb/cliprint.c b/source3/libsmb/cliprint.c
index 4a5ee5ae08..5798e94554 100644
--- a/source3/libsmb/cliprint.c
+++ b/source3/libsmb/cliprint.c
@@ -97,7 +97,7 @@ int cli_print_queue(struct cli_state *cli,
fstrcpy(job.user,
fix_char_ptr(SVAL(p,4), converter,
rdata, rdrcnt));
- job.t = make_unix_date3(p + 12);
+ job.t = cli_make_unix_date3(cli, p + 12);
job.size = IVAL(p,16);
fstrcpy(job.name,fix_char_ptr(SVAL(p,24),
converter,
diff --git a/source3/libsmb/clirap.c b/source3/libsmb/clirap.c
index 34f73cfafe..172dea4090 100644
--- a/source3/libsmb/clirap.c
+++ b/source3/libsmb/clirap.c
@@ -390,7 +390,7 @@ BOOL cli_qpathinfo(struct cli_state *cli, const char *fname,
char *rparam=NULL, *rdata=NULL;
int count=8;
BOOL ret;
- time_t (*date_fn)(void *);
+ time_t (*date_fn)(struct cli_state *, void *);
char *p;
p = param;
@@ -429,19 +429,19 @@ BOOL cli_qpathinfo(struct cli_state *cli, const char *fname,
}
if (cli->win95) {
- date_fn = make_unix_date;
+ date_fn = cli_make_unix_date;
} else {
- date_fn = make_unix_date2;
+ date_fn = cli_make_unix_date2;
}
if (c_time) {
- *c_time = date_fn(rdata+0);
+ *c_time = date_fn(cli, rdata+0);
}
if (a_time) {
- *a_time = date_fn(rdata+4);
+ *a_time = date_fn(cli, rdata+4);
}
if (m_time) {
- *m_time = date_fn(rdata+8);
+ *m_time = date_fn(cli, rdata+8);
}
if (size) {
*size = IVAL(rdata, 12);
@@ -471,7 +471,7 @@ BOOL cli_setpathinfo(struct cli_state *cli, const char *fname,
char *rparam=NULL, *rdata=NULL;
int count=8;
BOOL ret;
- void (*date_fn)(char *buf,int offset,time_t unixdate);
+ void (*date_fn)(struct cli_state *, char *buf,int offset,time_t unixdate);
char *p;
memset(param, 0, sizeof(param));
@@ -493,15 +493,15 @@ BOOL cli_setpathinfo(struct cli_state *cli, const char *fname,
p = data;
if (cli->win95) {
- date_fn = put_dos_date;
+ date_fn = cli_put_dos_date;
} else {
- date_fn = put_dos_date2;
+ date_fn = cli_put_dos_date2;
}
/* Add the create, last access, and modification times */
- (*date_fn)(p, 0, c_time);
- (*date_fn)(p, 4, a_time);
- (*date_fn)(p, 8, m_time);
+ (*date_fn)(cli, p, 0, c_time);
+ (*date_fn)(cli, p, 4, a_time);
+ (*date_fn)(cli, p, 8, m_time);
p += 12;
/* Skip DataSize and AllocationSize */