- }
- if (restartit) {
- struct stat stbuf;
- int ret;
- ret = stat(argv[2], &stbuf);
- if (restartit == 1) {
- if (ret < 0) {
- perror(argv[2]);
- return 0;
- }
- restart_point = stbuf.st_size;
- } else {
- if (ret == 0) {
- int overbose;
- overbose = verbose; verbose = -1;
- if (command("MDTM %s", argv[1]) == COMPLETE) {
- int yy, mo, day, hour, min, sec;
- struct tm *tm;
- verbose = overbose;
- sscanf(reply_string,
- "%*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;
- else if (tm->tm_year == yy%100) {
- if (tm->tm_mon > mo)
- return 1;
- } else if (tm->tm_mon == mo) {
- if (tm->tm_mday > day)
- return 1;
- } else if (tm->tm_mday == day) {
- if (tm->tm_hour > hour)
- return 1;
- } else if (tm->tm_hour == hour) {
- if (tm->tm_min > min)
- return 1;
- } else if (tm->tm_min == min) {
- if (tm->tm_sec > sec)
- return 1;
- }
- } else {
- fputs(reply_string, stdout);
- verbose = overbose;
- return 0;
- }
- }
- }
- }
-
- recvrequest("RETR", argv[2], argv[1], mode);
- restart_point = 0;
- return 0;