diff -dNPru w3m/file.c w3m-0.1.9-2000APR23JM01/file.c --- w3m/file.c Thu Apr 20 23:45:53 2000 +++ w3m-0.1.9-2000APR23JM01/file.c Sun Apr 23 19:44:16 2000 @@ -5241,40 +5241,65 @@ char filen[256], msg[LINELEN]; char *p; + int fileSaveCompleted = FALSE; if (fmInitialized) { - p = inputLineHist("(Download)Save file to: ", defstr, IN_FILENAME, SaveHist); - if (p == NULL || *p == '\0') - return; - if (checkOverWrite(p) < 0) - return; - if (checkSaveFile(uf.stream.f, p) < 0) { - sprintf(msg, "Can't save. Load file and %s are identical.", p); - disp_message(msg, FALSE); - return; - } - if (save2tmp(uf, p) < 0) { - sprintf(msg, "Can't save to %s", p); - disp_message(msg, FALSE); - } + while (fileSaveCompleted == FALSE) { + p = inputLineHist("Save downloaded file to: ", defstr, IN_FILENAME, SaveHist); + if (p == NULL || *p == '\0') { + fileSaveCompleted = TRUE; + return; + } + if (checkOverWrite(p) < 0) { + fileSaveCompleted = FALSE; + } + else { + if (checkSaveFile(uf.stream.f, p) < 0) { + fileSaveCompleted = TRUE; + sprintf(msg, "Unable to save. Loaded file and %s are identical.", p); + disp_message(msg, FALSE); + return; + } + if (save2tmp(uf, p) < 0) { + fileSaveCompleted = FALSE; + sprintf(msg, "Press spacebar. Unable to save as %s.", p); + disp_message(msg, FALSE); + } + else { + fileSaveCompleted = TRUE; + } + } + } } else { - printf("(Download)Save file to: "); - fflush(stdout); - fgets(filen, sizeof(filen), stdin); - if (*filen == '\0') - return; - for (p = filen + strlen(filen) - 1; IS_SPACE(*p); p--); - *(p + 1) = '\0'; - p = expandName(filen); - if (checkOverWrite(p) < 0) - return; - if (checkSaveFile(uf.stream.f, p) < 0) { - printf("Can't save. Load file and %s are identical.", p); - return; - } - if (save2tmp(uf, p) < 0) { - printf("Can't save to %s\n", p); - } + while (fileSaveCompleted == FALSE) { + printf("Save downloaded file to: "); + fflush(stdout); + fgets(filen, sizeof(filen), stdin); + if (*filen == '\0') { + fileSaveCompleted = TRUE; + return; + } + for (p = filen + strlen(filen) - 1; IS_SPACE(*p); p--); + *(p + 1) = '\0'; + p = expandName(filen); + if (checkOverWrite(p) < 0) { + fileSaveCompleted = FALSE; + } + else { + if (checkSaveFile(uf.stream.f, p) < 0) { + fileSaveCompleted = TRUE; + printf("Unable to save. Loaded file and %s are identical.", p); + return; + } + if (save2tmp(uf, p) < 0) { + fileSaveCompleted = FALSE; + printf("Press spacebar. Unable to save as %s.\n", p); + } + else { + fileSaveCompleted = TRUE; + } + } + } } }