(getit): be more suspicious when parsing the result of MDTM. Do the

comparison of timestamps correctly.


git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@6831 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1999-08-18 18:16:05 +00:00
parent 365486cd15
commit c63ae34fd3

View File

@@ -642,41 +642,45 @@ getit(int argc, char **argv, int restartit, char *mode)
return (0); return (0);
} }
restart_point = stbuf.st_size; restart_point = stbuf.st_size;
} else { } else if (ret == 0) {
if (ret == 0) { int overbose;
int overbose; int cmdret;
int yy, mo, day, hour, min, sec;
struct tm *tm;
overbose = verbose; overbose = verbose;
if (debug == 0) if (debug == 0)
verbose = -1; verbose = -1;
if (command("MDTM %s", argv[1]) == COMPLETE) { cmdret = command("MDTM %s", argv[1]);
int yy, mo, day, hour, min, sec; verbose = overbose;
struct tm *tm; if (cmdret != COMPLETE) {
verbose = overbose; printf("%s\n", reply_string);
sscanf(reply_string, return (0);
"%*s %04d%02d%02d%02d%02d%02d",
&yy, &mo, &day, &hour, &min, &sec);
tm = gmtime(&stbuf.st_mtime);
tm->tm_mon++;
if (tm->tm_year > yy%100)
return (1);
if ((tm->tm_year == yy%100 &&
tm->tm_mon > mo) ||
(tm->tm_mon == mo &&
tm->tm_mday > day) ||
(tm->tm_mday == day &&
tm->tm_hour > hour) ||
(tm->tm_hour == hour &&
tm->tm_min > min) ||
(tm->tm_min == min &&
tm->tm_sec > sec))
return (1);
} else {
printf("%s\n", reply_string);
verbose = overbose;
return (0);
}
} }
if (sscanf(reply_string,
"%*s %04d%02d%02d%02d%02d%02d",
&yy, &mo, &day, &hour, &min, &sec)
!= 6) {
printf ("bad MDTM result\n");
return (0);
}
tm = gmtime(&stbuf.st_mtime);
tm->tm_mon++;
tm->tm_year += 1900;
if ((tm->tm_year > yy) ||
(tm->tm_year == yy &&
tm->tm_mon > mo) ||
(tm->tm_mon == mo &&
tm->tm_mday > day) ||
(tm->tm_mday == day &&
tm->tm_hour > hour) ||
(tm->tm_hour == hour &&
tm->tm_min > min) ||
(tm->tm_min == min &&
tm->tm_sec > sec))
return (1);
} }
} }