~ubuntu-branches/debian/squeeze/putty/squeeze

« back to all changes in this revision

Viewing changes to windows/winpgnt.c

  • Committer: Bazaar Package Importer
  • Author(s): Colin Watson
  • Date: 2008-05-28 09:28:32 UTC
  • mfrom: (4.1.4 hardy)
  • Revision ID: james.westby@ubuntu.com-20080528092832-88epkb3d4s1zsw61
Tags: 0.60-3
* Move putty to Applications/Network/Communication menu sub-section.
* Use dh_desktop.

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
#define IDI_MAINICON 200
25
25
#define IDI_TRAYICON 201
26
26
 
27
 
#define WM_XUSER     (WM_USER + 0x2000)
28
 
#define WM_SYSTRAY   (WM_XUSER + 6)
29
 
#define WM_SYSTRAY2  (WM_XUSER + 7)
 
27
#define WM_SYSTRAY   (WM_APP + 6)
 
28
#define WM_SYSTRAY2  (WM_APP + 7)
30
29
 
31
30
#define AGENT_COPYDATA_ID 0x804e50ba   /* random goop */
32
31
 
156
155
};
157
156
static int cmpkeys_ssh2_asymm(void *av, void *bv);
158
157
 
159
 
#define GET_32BIT(cp) \
160
 
    (((unsigned long)(unsigned char)(cp)[0] << 24) | \
161
 
    ((unsigned long)(unsigned char)(cp)[1] << 16) | \
162
 
    ((unsigned long)(unsigned char)(cp)[2] << 8) | \
163
 
    ((unsigned long)(unsigned char)(cp)[3]))
164
 
 
165
 
#define PUT_32BIT(cp, value) { \
166
 
    (cp)[0] = (unsigned char)((value) >> 24); \
167
 
    (cp)[1] = (unsigned char)((value) >> 16); \
168
 
    (cp)[2] = (unsigned char)((value) >> 8); \
169
 
    (cp)[3] = (unsigned char)(value); }
170
 
 
171
158
#define PASSPHRASE_MAXLEN 512
172
159
 
173
160
struct PassphraseProcStruct {
428
415
        int i, nkeys, bloblen, keylistlen;
429
416
 
430
417
        if (type == SSH_KEYTYPE_SSH1) {
431
 
            if (!rsakey_pubblob(&filename, &blob, &bloblen, &error)) {
 
418
            if (!rsakey_pubblob(&filename, &blob, &bloblen, NULL, &error)) {
432
419
                char *msg = dupprintf("Couldn't load private key (%s)", error);
433
420
                message_box(msg, APPNAME, MB_OK | MB_ICONERROR,
434
421
                            HELPCTXID(errors_cantloadkey));
438
425
            keylist = get_keylist1(&keylistlen);
439
426
        } else {
440
427
            unsigned char *blob2;
441
 
            blob = ssh2_userkey_loadpub(&filename, NULL, &bloblen, &error);
 
428
            blob = ssh2_userkey_loadpub(&filename, NULL, &bloblen,
 
429
                                        NULL, &error);
442
430
            if (!blob) {
443
431
                char *msg = dupprintf("Couldn't load private key (%s)", error);
444
432
                message_box(msg, APPNAME, MB_OK | MB_ICONERROR,
1482
1470
                           rd.right - rd.left, rd.bottom - rd.top, TRUE);
1483
1471
        }
1484
1472
 
1485
 
        if (help_path)
1486
 
            SetWindowLong(hwnd, GWL_EXSTYLE,
1487
 
                          GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_CONTEXTHELP);
 
1473
        if (has_help())
 
1474
            SetWindowLongPtr(hwnd, GWL_EXSTYLE,
 
1475
                             GetWindowLongPtr(hwnd, GWL_EXSTYLE) |
 
1476
                             WS_EX_CONTEXTHELP);
1488
1477
        else {
1489
1478
            HWND item = GetDlgItem(hwnd, 103);   /* the Help button */
1490
1479
            if (item)
1491
1480
                DestroyWindow(item);
1492
1481
        }
1493
 
        requested_help = FALSE;
1494
1482
 
1495
1483
        keylist = hwnd;
1496
1484
        {
1583
1571
          case 103:                    /* help */
1584
1572
            if (HIWORD(wParam) == BN_CLICKED ||
1585
1573
                HIWORD(wParam) == BN_DOUBLECLICKED) {
1586
 
                if (help_path) {
1587
 
                    WinHelp(hwnd, help_path, HELP_COMMAND,
1588
 
                            (DWORD)"JI(`',`pageant.general')");
1589
 
                    requested_help = TRUE;
1590
 
                }
 
1574
                launch_help(hwnd, WINHELP_CTX_pageant_general);
1591
1575
            }
1592
1576
            return 0;
1593
1577
        }
1594
1578
        return 0;
1595
1579
      case WM_HELP:
1596
 
        if (help_path) {
 
1580
        {
1597
1581
            int id = ((LPHELPINFO)lParam)->iCtrlId;
1598
1582
            char *topic = NULL;
1599
1583
            switch (id) {
1600
 
              case 100: topic = "pageant.keylist"; break;
1601
 
              case 101: topic = "pageant.addkey"; break;
1602
 
              case 102: topic = "pageant.remkey"; break;
 
1584
              case 100: topic = WINHELP_CTX_pageant_keylist; break;
 
1585
              case 101: topic = WINHELP_CTX_pageant_addkey; break;
 
1586
              case 102: topic = WINHELP_CTX_pageant_remkey; break;
1603
1587
            }
1604
1588
            if (topic) {
1605
 
                char *cmd = dupprintf("JI(`',`%s')", topic);
1606
 
                WinHelp(hwnd, help_path, HELP_COMMAND, (DWORD)cmd);
1607
 
                sfree(cmd);
1608
 
                requested_help = TRUE;
 
1589
                launch_help(hwnd, topic);
1609
1590
            } else {
1610
1591
                MessageBeep(0);
1611
1592
            }
1799
1780
            }
1800
1781
            break;
1801
1782
          case IDM_HELP:
1802
 
            if (help_path) {
1803
 
                WinHelp(hwnd, help_path, HELP_COMMAND,
1804
 
                        (DWORD)"JI(`',`pageant.general')");
1805
 
                requested_help = TRUE;
1806
 
            }
 
1783
            launch_help(hwnd, WINHELP_CTX_pageant_general);
1807
1784
            break;
1808
1785
          default:
1809
1786
            {
1830
1807
        }
1831
1808
        break;
1832
1809
      case WM_DESTROY:
1833
 
        if (requested_help) {
1834
 
            WinHelp(hwnd, help_path, HELP_QUIT, 0);
1835
 
            requested_help = FALSE;
1836
 
        }
 
1810
        quit_help(hwnd);
1837
1811
        PostQuitMessage(0);
1838
1812
        return 0;
1839
1813
      case WM_COPYDATA:
1959
1933
    assert(!"We shouldn't get here");
1960
1934
}
1961
1935
 
1962
 
void cleanup_exit(int code) { exit(code); }
 
1936
void cleanup_exit(int code)
 
1937
{
 
1938
    shutdown_help();
 
1939
    exit(code);
 
1940
}
1963
1941
 
1964
1942
int flags = FLAG_SYNCAGENT;
1965
1943
 
2017
1995
    /*
2018
1996
     * See if we can find our Help file.
2019
1997
     */
2020
 
    {
2021
 
        char b[2048], *p, *q, *r;
2022
 
        FILE *fp;
2023
 
        GetModuleFileName(NULL, b, sizeof(b) - 1);
2024
 
        r = b;
2025
 
        p = strrchr(b, '\\');
2026
 
        if (p && p >= r) r = p+1;
2027
 
        q = strrchr(b, ':');
2028
 
        if (q && q >= r) r = q+1;
2029
 
        strcpy(r, PUTTY_HELP_FILE);
2030
 
        if ( (fp = fopen(b, "r")) != NULL) {
2031
 
            help_path = dupstr(b);
2032
 
            fclose(fp);
2033
 
        } else
2034
 
            help_path = NULL;
2035
 
    }
 
1998
    init_help();
2036
1999
 
2037
2000
    /*
2038
2001
     * Look for the PuTTY binary (we will enable the saved session
2172
2135
           "&View Keys");
2173
2136
    AppendMenu(systray_menu, MF_ENABLED, IDM_ADDKEY, "Add &Key");
2174
2137
    AppendMenu(systray_menu, MF_SEPARATOR, 0, 0);
2175
 
    if (help_path)
 
2138
    if (has_help())
2176
2139
        AppendMenu(systray_menu, MF_ENABLED, IDM_HELP, "&Help");
2177
2140
    AppendMenu(systray_menu, MF_ENABLED, IDM_ABOUT, "&About");
2178
2141
    AppendMenu(systray_menu, MF_SEPARATOR, 0, 0);
2212
2175
 
2213
2176
    if (advapi)
2214
2177
        FreeLibrary(advapi);
2215
 
    return msg.wParam;
 
2178
 
 
2179
    cleanup_exit(msg.wParam);
 
2180
    return msg.wParam;                 /* just in case optimiser complains */
2216
2181
}