- /* FIXME: prompt before overwriting */
- saversakey(filename, &state->key, &state->aux,
- *passphrase ? passphrase : NULL);
- /* FIXME: check return value */
+ int ret;
+ FILE *fp = fopen(filename, "r");
+ if (fp) {
+ char buffer[FILENAME_MAX+80];
+ fclose(fp);
+ sprintf(buffer, "Overwrite existing file\n%.*s?",
+ FILENAME_MAX, filename);
+ ret = MessageBox(hwnd, buffer, "PuTTYgen Warning",
+ MB_YESNO | MB_ICONWARNING);
+ if (ret != IDYES)
+ break;
+ }
+ ret = saversakey(filename, &state->key, &state->aux,
+ *passphrase ? passphrase : NULL);
+ if (ret <= 0) {
+ MessageBox(hwnd, "Unable to save key file",
+ "PuTTYgen Error",
+ MB_OK | MB_ICONERROR);
+ }