X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/aca589d972c5c12706d57322e89f9dec2b2a3a00..9754e5ca92d4aa7c9ded57270082ef8348a1ef80:/windows/winpgen.c?ds=sidebyside diff --git a/windows/winpgen.c b/windows/winpgen.c index 7772f55a..dae9f93f 100644 --- a/windows/winpgen.c +++ b/windows/winpgen.c @@ -632,6 +632,7 @@ void load_key_file(HWND hwnd, struct MainDlgState *state, int needs_pass; int type, realtype; int ret; + const char *errmsg = NULL; char *comment; struct PassphraseProcStruct pps; struct RSAKey newkey1; @@ -641,11 +642,11 @@ void load_key_file(HWND hwnd, struct MainDlgState *state, if (type != SSH_KEYTYPE_SSH1 && type != SSH_KEYTYPE_SSH2 && !import_possible(type)) { - char msg[256]; - sprintf(msg, "Couldn't load private key (%s)", - key_type_to_str(type)); + char *msg = dupprintf("Couldn't load private key (%s)", + key_type_to_str(type)); MessageBox(NULL, msg, "PuTTYgen Error", MB_OK | MB_ICONERROR); + sfree(msg); return; } @@ -682,17 +683,17 @@ void load_key_file(HWND hwnd, struct MainDlgState *state, if (type == SSH_KEYTYPE_SSH1) { if (realtype == type) ret = loadrsakey(&filename, &newkey1, - passphrase, NULL); + passphrase, &errmsg); else ret = import_ssh1(&filename, realtype, - &newkey1, passphrase); + &newkey1, passphrase, &errmsg); } else { if (realtype == type) newkey2 = ssh2_load_userkey(&filename, - passphrase, NULL); + passphrase, &errmsg); else newkey2 = import_ssh2(&filename, realtype, - passphrase); + passphrase, &errmsg); if (newkey2 == SSH2_WRONG_PASSPHRASE) ret = -1; else if (!newkey2) @@ -704,8 +705,9 @@ void load_key_file(HWND hwnd, struct MainDlgState *state, if (comment) sfree(comment); if (ret == 0) { - MessageBox(NULL, "Couldn't load private key.", - "PuTTYgen Error", MB_OK | MB_ICONERROR); + char *msg = dupprintf("Couldn't load private key (%s)", errmsg); + MessageBox(NULL, msg, "PuTTYgen Error", MB_OK | MB_ICONERROR); + sfree(msg); } else if (ret == 1) { /* * Now update the key controls with all the @@ -1340,50 +1342,52 @@ static int CALLBACK MainDlgProc(HWND hwnd, UINT msg, case WM_HELP: if (help_path) { int id = ((LPHELPINFO)lParam)->iCtrlId; - char *cmd = NULL; + char *topic = NULL; switch (id) { case IDC_GENERATING: case IDC_PROGRESS: case IDC_GENSTATIC: case IDC_GENERATE: - cmd = "JI(`',`puttygen.generate')"; break; + topic = "puttygen.generate"; break; case IDC_PKSTATIC: case IDC_KEYDISPLAY: - cmd = "JI(`',`puttygen.pastekey')"; break; + topic = "puttygen.pastekey"; break; case IDC_FPSTATIC: case IDC_FINGERPRINT: - cmd = "JI(`',`puttygen.fingerprint')"; break; + topic = "puttygen.fingerprint"; break; case IDC_COMMENTSTATIC: case IDC_COMMENTEDIT: - cmd = "JI(`',`puttygen.comment')"; break; + topic = "puttygen.comment"; break; case IDC_PASSPHRASE1STATIC: case IDC_PASSPHRASE1EDIT: case IDC_PASSPHRASE2STATIC: case IDC_PASSPHRASE2EDIT: - cmd = "JI(`',`puttygen.passphrase')"; break; + topic = "puttygen.passphrase"; break; case IDC_LOADSTATIC: case IDC_LOAD: - cmd = "JI(`',`puttygen.load')"; break; + topic = "puttygen.load"; break; case IDC_SAVESTATIC: case IDC_SAVE: - cmd = "JI(`',`puttygen.savepriv')"; break; + topic = "puttygen.savepriv"; break; case IDC_SAVEPUB: - cmd = "JI(`',`puttygen.savepub')"; break; + topic = "puttygen.savepub"; break; case IDC_TYPESTATIC: case IDC_KEYSSH1: case IDC_KEYSSH2RSA: case IDC_KEYSSH2DSA: - cmd = "JI(`',`puttygen.keytype')"; break; + topic = "puttygen.keytype"; break; case IDC_BITSSTATIC: case IDC_BITS: - cmd = "JI(`',`puttygen.bits')"; break; + topic = "puttygen.bits"; break; case IDC_IMPORT: case IDC_EXPORT_OPENSSH: case IDC_EXPORT_SSHCOM: - cmd = "JI(`',`puttygen.conversions')"; break; + topic = "puttygen.conversions"; break; } - if (cmd) { + if (topic) { + char *cmd = dupprintf("JI(`',`%s')", topic); WinHelp(hwnd, help_path, HELP_COMMAND, (DWORD)cmd); + sfree(cmd); requested_help = TRUE; } else { MessageBeep(0); @@ -1435,7 +1439,7 @@ int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) if (p && p >= r) r = p+1; q = strrchr(b, ':'); if (q && q >= r) r = q+1; - strcpy(r, "putty.hlp"); + strcpy(r, PUTTY_HELP_FILE); if ( (fp = fopen(b, "r")) != NULL) { help_path = dupstr(b); fclose(fp);