(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:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user