2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
11 #include <afs/param.h>
15 #include "TaAfsUsrMgr.h"
19 #define iswhite(_ch) ( ((_ch) == TEXT(' ')) || ((_ch) == TEXT('\t')) )
24 * VARIABLES ________________________________________________________________
30 uuPTS, // PTS commands
34 // One entry per help context
40 { uuPTS, IDS_COMMAND_PTS_ADDUSER, IDH_USRMGR_COMMAND_PTS_ADDUSER },
41 { uuPTS, IDS_COMMAND_PTS_CHOWN, IDH_USRMGR_COMMAND_PTS_CHOWN },
42 { uuPTS, IDS_COMMAND_PTS_CREATEGROUP, IDH_USRMGR_COMMAND_PTS_CREATEGROUP },
43 { uuPTS, IDS_COMMAND_PTS_CREATEUSER, IDH_USRMGR_COMMAND_PTS_CREATEUSER },
44 { uuPTS, IDS_COMMAND_PTS_DELETE, IDH_USRMGR_COMMAND_PTS_DELETE },
45 { uuPTS, IDS_COMMAND_PTS_EXAMINE, IDH_USRMGR_COMMAND_PTS_EXAMINE },
46 { uuPTS, IDS_COMMAND_PTS_LISTMAX, IDH_USRMGR_COMMAND_PTS_LISTMAX },
47 { uuPTS, IDS_COMMAND_PTS_LISTOWNED, IDH_USRMGR_COMMAND_PTS_LISTOWNED },
48 { uuPTS, IDS_COMMAND_PTS_MEMBERSHIP, IDH_USRMGR_COMMAND_PTS_MEMBERSHIP },
49 { uuPTS, IDS_COMMAND_PTS_REMOVEUSER, IDH_USRMGR_COMMAND_PTS_REMOVEUSER },
50 { uuPTS, IDS_COMMAND_PTS_RENAME, IDH_USRMGR_COMMAND_PTS_RENAME },
51 { uuPTS, IDS_COMMAND_PTS_SETFIELDS, IDH_USRMGR_COMMAND_PTS_SETFIELDS },
52 { uuPTS, IDS_COMMAND_PTS_SETMAX, IDH_USRMGR_COMMAND_PTS_SETMAX },
53 { uuKAS, IDS_COMMAND_KAS_CREATE, IDH_USRMGR_COMMAND_KAS_CREATE },
54 { uuKAS, IDS_COMMAND_KAS_DELETE, IDH_USRMGR_COMMAND_KAS_DELETE },
55 { uuKAS, IDS_COMMAND_KAS_EXAMINE, IDH_USRMGR_COMMAND_KAS_EXAMINE },
56 { uuKAS, IDS_COMMAND_KAS_GETRANDOMKEY, IDH_USRMGR_COMMAND_KAS_GETRANDOMKEY },
57 { uuKAS, IDS_COMMAND_KAS_LIST, IDH_USRMGR_COMMAND_KAS_LIST },
58 { uuKAS, IDS_COMMAND_KAS_SETFIELDS, IDH_USRMGR_COMMAND_KAS_SETFIELDS },
59 { uuKAS, IDS_COMMAND_KAS_SETKEY, IDH_USRMGR_COMMAND_KAS_SETKEY },
60 { uuKAS, IDS_COMMAND_KAS_SETPASSWORD, IDH_USRMGR_COMMAND_KAS_SETPASSWORD },
61 { uuKAS, IDS_COMMAND_KAS_STRINGTOKEY, IDH_USRMGR_COMMAND_KAS_STRINGTOKEY },
62 { uuKAS, IDS_COMMAND_KAS_UNLOCK, IDH_USRMGR_COMMAND_KAS_UNLOCK },
65 // Precalculated hashing values for faster searching through help topics
66 static DWORD aSEARCHVALUES[] = {
67 0x16765627, 0x02D416E6, 0xF657E647, 0x02143636,
68 0x02146435, 0x37162736, 0x452716E6, 0x45865602,
69 0xE6B30000, 0xE6967616, 0x02A45627, 0x86162746,
70 0x02259636, 0xE6022697, 0x96474756, 0xE2007527,
71 0xF6772797, 0xF62602D4, 0x26970224, 0x96563702,
72 0x26271627, 0x5602C696, 0x16479667, 0x96374727,
73 0x46D696E6, 0x00000014, 0xE64796C6, 0x96470257,
74 0x02027516, 0x561647F3, 0x723702E6, 0x02F6E656,
75 0x47869637, 0x96E6B602, 0x12004586, 0x56163756,
76 0x022756C6, 0xE6568747, 0x47865602, 0x56E60000,
77 0x22027786, 0xE616D656, 0x8696E656, 0xA3D61636,
78 0xD6F64756, 0x22F22756, 0x45279702, 0xE647A302,
79 0x12008496, 0x762716D6, 0x020727F6, 0x47869637,
80 0x96E67602, 0x47162747, 0x00000037, 0xD2D2D200,
84 #define nCOMMANDS (sizeof(aCOMMANDS)/sizeof(aCOMMANDS[0]))
85 #define nSEARCHVALUES (sizeof(aSEARCHVALUES)/sizeof(aSEARCHVALUES[0]))
89 * ROUTINES _________________________________________________________________
93 LPCTSTR lstrstr (LPCTSTR pszBuffer, LPCTSTR pszFind)
95 if (!pszBuffer || !pszFind || !*pszFind)
98 for ( ; *pszBuffer; ++pszBuffer)
100 if (*pszBuffer == *pszFind)
102 if (!lstrncmpi (pszBuffer, pszFind, lstrlen(pszFind)))
112 * FIND COMMAND _____________________________________________________________
116 BOOL CALLBACK Help_FindCommand_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
117 void Help_FindCommand_OnInitDialog (HWND hDlg);
118 BOOL Help_FindCommand_OnOK (HWND hDlg);
121 void Help_FindCommand (void)
123 ModalDialog (IDD_HELP_FIND, g.hMain, (DLGPROC)Help_FindCommand_DlgProc);
127 BOOL CALLBACK Help_FindCommand_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
132 Help_FindCommand_OnInitDialog (hDlg);
139 if (Help_FindCommand_OnOK (hDlg))
140 EndDialog (hDlg, LOWORD(wp));
144 EndDialog (hDlg, LOWORD(wp));
154 void Help_FindCommand_OnInitDialog (HWND hDlg)
156 HWND hCombo = GetDlgItem (hDlg, IDC_FIND_COMMAND);
157 CB_StartChange (hCombo, TRUE);
159 for (size_t ii = 0; ii < nCOMMANDS; ++ii)
161 CB_AddItem (hCombo, aCOMMANDS[ii].ids, 0);
164 CB_EndChange (hCombo, -1);
168 LPTSTR Help_FindCommand_Search (UNIXUTIL *puu, LPTSTR pszKeyword)
170 // search for a usable keyword--skip "vos" or "bos" (etc).
174 // strip any initial whitespace
175 while (iswhite(*pszKeyword))
178 // find the end of this word
179 for (LPTSTR pszNext = pszKeyword; *pszNext && !iswhite(*pszNext); )
181 if (!*pszNext) // last word? Gotta use it.
183 *pszNext = TEXT('\0');
186 if (!lstrcmpi (pszKeyword, TEXT("pts")))
191 if (!lstrcmpi (pszKeyword, TEXT("kas")))
198 pszKeyword = 1+pszNext;
207 DWORD NextSearch (int &ii)
209 ii = ((ii>>2) == nSEARCHVALUES) ? 1 : ii+1;
210 return ( (DWORD)(((aSEARCHVALUES[(ii-1)>>2]>>(((ii-1)%4)<<3))>>4)&15) |
211 (DWORD)(((aSEARCHVALUES[(ii-1)>>2]>>(((ii-1)%4)<<3))<<4)&240) );
215 BOOL Help_FindCommand_OnOK (HWND hDlg)
217 HWND hCombo = GetDlgItem (hDlg, IDC_FIND_COMMAND);
220 UNIXUTIL uu = uuUNSPECIFIED;
221 TCHAR szText[ cchRESOURCE ];
222 GetWindowText (hCombo, szText, cchRESOURCE);
226 Message (MB_ICONASTERISK | MB_OK, IDS_FIND_NOTHING_TITLE, IDS_FIND_NOTHING_DESC);
230 LPTSTR pszKeyword = Help_FindCommand_Search (&uu, szText);
232 for (size_t ii = 0; (iiDisplay == -1) && ii < nCOMMANDS; ++ii)
234 TCHAR szCommand[ cchRESOURCE ];
235 GetString (szCommand, aCOMMANDS[ ii ].ids);
237 if (lstrstr (szCommand, pszKeyword) != NULL)
239 if ((uu == uuUNSPECIFIED) || (uu == aCOMMANDS[ ii ].uu))
246 Message (MB_ICONASTERISK | MB_OK, IDS_FIND_UNKNOWN_TITLE, IDS_FIND_UNKNOWN_DESC, TEXT("%s"), pszKeyword);
250 WinHelp (g.hMain, cszHELPFILENAME, HELP_CONTEXT, aCOMMANDS[ iiDisplay ].hid);
256 * FIND ERROR _______________________________________________________________
260 BOOL CALLBACK Help_FindError_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
261 void Help_FindError_OnInitDialog (HWND hDlg);
262 void Help_FindError_OnTranslate (HWND hDlg);
263 void Help_FindError_Shrink (HWND hDlg, BOOL fShrink);
265 void Help_FindError (void)
267 ModalDialog (IDD_HELP_ERROR, g.hMain, (DLGPROC)Help_FindError_DlgProc);
271 BOOL CALLBACK Help_FindError_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
276 Help_FindError_OnInitDialog (hDlg);
282 case IDC_ERROR_TRANSLATE:
283 Help_FindError_OnTranslate (hDlg);
288 EndDialog (hDlg, LOWORD(wp));
298 void Help_FindError_OnInitDialog (HWND hDlg)
300 Help_FindError_Shrink (hDlg, TRUE);
302 SetDlgItemText (hDlg, IDC_ERROR_NUMBER, TEXT(""));
306 void Help_FindError_OnTranslate (HWND hDlg)
308 TCHAR szText[ cchRESOURCE ];
309 GetDlgItemText (hDlg, IDC_ERROR_NUMBER, szText, cchRESOURCE);
311 LPSTR pszTextA = StringToAnsi (szText);
312 DWORD dwError = strtoul (pszTextA, NULL, 0);
313 FreeString (pszTextA, szText);
315 TCHAR szDesc[ cchRESOURCE ];
316 AfsAppLib_TranslateError (szDesc, dwError);
318 // The output string either looks like this (if successful):
319 // successful completion (0x00000000)
322 // Since we list the error code elsewhere, remove it from the
323 // former case. In the latter case, empty the string entirely
324 // so we'll know there was no translation.
327 if ((pszTruncate = (LPTSTR)lstrrchr (szDesc, TEXT('('))) == NULL)
328 pszTruncate = szDesc;
329 else if ((pszTruncate > szDesc) && (*(pszTruncate-1) == TEXT(' ')))
331 *pszTruncate = TEXT('\0');
334 if (szDesc[0] == TEXT('\0'))
335 pszText = FormatString (IDS_ERROR_NOTTRANSLATED, TEXT("%08lX%lu"), dwError, dwError);
337 pszText = FormatString (IDS_ERROR_TRANSLATED, TEXT("%08lX%lu%s"), dwError, dwError, szDesc);
338 SetDlgItemText (hDlg, IDC_ERROR_DESC, pszText);
339 FreeString (pszText);
341 Help_FindError_Shrink (hDlg, FALSE);
345 void Help_FindError_Shrink (HWND hDlg, BOOL fShrink)
347 static BOOL fShrunk = FALSE;
348 static LONG cyShrunk = 0;
354 // shrink the window--move the IDCANCEL button up so that its
355 // top edge is where the IDC_ADVANCED_BOX line's top edge is, and
356 // hide IDC_ADVANCED_BOX and IDC_ERROR_DESC.
359 GetRectInParent (GetDlgItem (hDlg, IDC_ADVANCED_BOX), &rAdvanced);
362 GetRectInParent (GetDlgItem (hDlg, IDCANCEL), &rClose);
364 cyShrunk = rClose.top - rAdvanced.top - 9;
366 ShowWindow (GetDlgItem (hDlg, IDC_ERROR_DESC), SW_HIDE);
368 SetWindowPos (GetDlgItem (hDlg, IDCANCEL), NULL,
369 rClose.left, rClose.top -cyShrunk, 0, 0,
370 SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOZORDER);
373 GetWindowRect (hDlg, &rDialog);
374 SetWindowPos (hDlg, NULL,
375 0, 0, cxRECT(rDialog), cyRECT(rDialog) -cyShrunk,
376 SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER);
382 // expand the window--move the IDCANCEL button down, and
383 // show IDC_ADVANCED_BOX and IDC_ERROR_DESC.
386 GetRectInParent (GetDlgItem (hDlg, IDCANCEL), &rClose);
389 GetWindowRect (hDlg, &rDialog);
390 SetWindowPos (hDlg, NULL,
391 0, 0, cxRECT(rDialog), cyRECT(rDialog) +cyShrunk,
392 SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOZORDER);
394 SetWindowPos (GetDlgItem (hDlg, IDCANCEL), NULL,
395 rClose.left, rClose.top +cyShrunk, 0, 0,
396 SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOZORDER);
398 ShowWindow (GetDlgItem (hDlg, IDC_ERROR_DESC), SW_SHOW);
404 * HELP ABOUT _______________________________________________________________
409 BOOL CALLBACK Help_About_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp);
410 void Help_About_OnInitDialog (HWND hDlg);
411 void Help_About_OnSysCommand (HWND hDlg, int &cmd);
414 void Help_About (void)
416 ModalDialog (IDD_HELP_ABOUT, g.hMain, (DLGPROC)Help_About_DlgProc);
420 BOOL CALLBACK Help_About_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
427 Help_About_OnInitDialog (hDlg);
435 EndDialog (hDlg, LOWORD(wp));
440 case WM_SYSCOMMAND+1:
441 Help_About_OnSysCommand (hDlg, cmd);
449 BOOL CALLBACK Help_About_Proc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp)
451 if (msg == WM_DESTROY)
453 KillTimer (GetParent(hDlg), 1000);
455 else if (msg == WM_DESTROY+0x200)
458 GetWindowRect(GetDlgItem(GetParent(hDlg),0x07E5),&rr);
459 DWORD dw = GetMessagePos();
460 POINT pt = { LOWORD(dw), HIWORD(dw) };
461 if (PtInRect (&rr, pt))
463 SetDlgItemText (GetParent(hDlg), 0x07E6, TEXT("\n\n\n\n\n\n\n"));
464 SetTimer (GetParent(hDlg), 1000, 1000/8, NULL);
467 return CallWindowProc ((WNDPROC)procAbout, hDlg, msg, wp, lp);
471 void Help_About_OnInitDialog (HWND hDlg)
473 HWND hAbout = GetDlgItem (hDlg, IDOK);
474 procAbout = (LONG)GetWindowLong (hAbout, GWL_WNDPROC);
475 SetWindowLong (hAbout, GWL_WNDPROC, (LONG)Help_About_Proc);
477 LPTSTR pszText = FormatString (IDS_HELPABOUT_DESC1);
478 SetDlgItemText (hDlg, IDC_HELPABOUT_DESC, pszText);
479 FreeString (pszText);
483 void Help_About_OnSysCommand (HWND hDlg, int &cmd)
486 TCHAR szSys[cchRESOURCE];
487 TCHAR szSys2[cchRESOURCE];
488 GetDlgItemText (hDlg, 0x07E6, szSys, cchRESOURCE);
489 if ((dw = NextSearch (cmd)) != 0)
491 for (LPTSTR psz = &szSys[ lstrlen(szSys)-1 ]; *(psz-1) != TEXT('\n'); --psz);
492 lstrcpy (szSys2, psz);
493 wsprintf (psz, TEXT("%c%s"), (TCHAR)dw, szSys2);
494 SetDlgItemText (hDlg, 0x07E6, szSys);
498 for (LPTSTR psz = szSys; *psz && (*psz != TEXT('\n')); ++psz);
499 wsprintf (szSys2, TEXT("%s\n"), 1+psz);
500 SetDlgItemText (hDlg, 0x07E6, szSys2);
507 * CONTEXT HELP _____________________________________________________________
511 static DWORD IDD_OPENCELL_HELP[] = {
512 IDC_OPENCELL_CELL, IDH_USRMGR_OPENCELL_CELL,
513 IDC_OPENCELL_OLDCREDS, IDH_USRMGR_OPENCELL_ID_OLD,
514 IDC_OPENCELL_ID, IDH_USRMGR_OPENCELL_ID_NEW,
515 IDC_OPENCELL_PASSWORD, IDH_USRMGR_OPENCELL_PASSWORD,
519 static DWORD IDD_COLUMNS_HELP[] = {
520 IDC_COLUMNS, IDH_USRMGR_COLUMNS_WHICH,
521 IDC_COL_AVAIL, IDH_USRMGR_COLUMNS_AVAIL,
522 IDC_COL_SHOWN, IDH_USRMGR_COLUMNS_SHOWN,
523 IDC_COL_INSERT, IDH_USRMGR_COLUMNS_INSERT,
524 IDC_COL_DELETE, IDH_USRMGR_COLUMNS_DELETE,
525 IDC_COL_UP, IDH_USRMGR_COLUMNS_MOVEUP,
526 IDC_COL_DOWN, IDH_USRMGR_COLUMNS_MOVEDOWN,
530 static DWORD IDD_USER_GENERAL_HELP[] = {
531 IDC_USER_CPW_NOW, IDH_USRMGR_USER_GENERAL_CPW_NOW,
532 IDC_USER_CPW, IDH_USRMGR_USER_GENERAL_CPW,
533 IDC_USER_RPW, IDH_USRMGR_USER_GENERAL_RPW,
534 IDC_USER_PWEXPIRES, IDH_USRMGR_USER_GENERAL_PWEXPIRES,
535 IDC_USER_PWEXPIRATION, IDH_USRMGR_USER_GENERAL_PWEXPIRATION,
536 IDC_USER_FAILLOCK, IDH_USRMGR_USER_GENERAL_FAILLOCK,
537 IDC_USER_FAILLOCK_COUNT, IDH_USRMGR_USER_GENERAL_FAILLOCK_COUNT,
538 IDC_USER_FAILLOCK_INFINITE, IDH_USRMGR_USER_GENERAL_FAILLOCK_INFINITE,
539 IDC_USER_FAILLOCK_FINITE, IDH_USRMGR_USER_GENERAL_FAILLOCK_FINITE,
540 IDC_USER_FAILLOCK_DURATION, IDH_USRMGR_USER_GENERAL_FAILLOCK_DURATION,
541 IDC_USER_UNLOCK, IDH_USRMGR_USER_GENERAL_UNLOCK,
542 IDC_USER_EXPIRES, IDH_USRMGR_USER_GENERAL_EXPIRES,
543 IDC_USER_EXPIRE_DATE, IDH_USRMGR_USER_GENERAL_EXPIRE_DATE,
544 IDC_USER_EXPIRE_TIME, IDH_USRMGR_USER_GENERAL_EXPIRE_TIME,
548 static DWORD IDD_USER_ADVANCED_HELP[] = {
549 IDC_USER_NAME, IDH_USRMGR_USER_ADVANCED_NAME,
550 IDC_USER_NOSEAL, IDH_USRMGR_USER_ADVANCED_NOSEAL,
551 IDC_USER_ADMIN, IDH_USRMGR_USER_ADVANCED_ADMIN,
552 IDC_USER_TGS, IDH_USRMGR_USER_ADVANCED_TGS,
553 IDC_USER_LIFETIME, IDH_USRMGR_USER_ADVANCED_LIFETIME,
554 IDC_USER_GROUP_HASQUOTA, IDH_USRMGR_USER_ADVANCED_GROUP_HASQUOTA,
555 IDC_USER_GROUP_QUOTA, IDH_USRMGR_USER_ADVANCED_GROUP_QUOTA,
556 IDC_USER_PERM_STATUS, IDH_USRMGR_USER_ADVANCED_PERM_STATUS,
557 IDC_USER_PERM_OWNED, IDH_USRMGR_USER_ADVANCED_PERM_OWNED,
558 IDC_USER_PERM_MEMBER, IDH_USRMGR_USER_ADVANCED_PERM_MEMBER,
559 IDC_USER_CREATE_KAS, IDH_USRMGR_USER_ADVANCED_CREATE_KAS,
560 IDC_USER_CREATE_PTS, IDH_USRMGR_USER_ADVANCED_CREATE_PTS,
561 IDC_USER_KEY, IDH_USRMGR_USER_ADVANCED_KEY,
565 static DWORD IDD_USER_MEMBER_HELP[] = {
566 IDC_GROUPS_LIST, IDH_USRMGR_USER_MEMBER_LIST,
567 IDC_MEMBER_REMOVE, IDH_USRMGR_USER_MEMBER_REMOVE,
568 IDC_MEMBER_ADD, IDH_USRMGR_USER_MEMBER_ADD,
569 IDC_USER_SHOW_MEMBER, IDH_USRMGR_USER_MEMBER_SHOWMEMBER,
570 IDC_USER_SHOW_OWNER, IDH_USRMGR_USER_MEMBER_SHOWOWNER,
574 static DWORD IDD_GROUP_GENERAL_HELP[] = {
575 IDC_GROUP_NAME, IDH_USRMGR_GROUP_GENERAL_NAME,
576 IDC_GROUP_PERM_STATUS, IDH_USRMGR_GROUP_GENERAL_PERM_STATUS,
577 IDC_GROUP_PERM_GROUPS, IDH_USRMGR_GROUP_GENERAL_PERM_GROUPS,
578 IDC_GROUP_PERM_MEMBERS, IDH_USRMGR_GROUP_GENERAL_PERM_MEMBERS,
579 IDC_GROUP_PERM_ADD, IDH_USRMGR_GROUP_GENERAL_PERM_ADD,
580 IDC_GROUP_PERM_REMOVE, IDH_USRMGR_GROUP_GENERAL_PERM_REMOVE,
581 IDC_GROUP_OWNER, IDH_USRMGR_GROUP_GENERAL_OWNER,
582 IDC_GROUP_CREATOR, IDH_USRMGR_GROUP_GENERAL_CREATOR,
583 IDC_GROUP_CHANGEOWNER, IDH_USRMGR_GROUP_GENERAL_CHANGEOWNER,
587 static DWORD IDD_GROUP_MEMBER_HELP[] = {
588 IDC_USERS_LIST, IDH_USRMGR_GROUP_MEMBER_LIST,
589 IDC_MEMBER_REMOVE, IDH_USRMGR_GROUP_MEMBER_REMOVE,
590 IDC_MEMBER_ADD, IDH_USRMGR_GROUP_MEMBER_ADD,
591 IDC_GROUP_SHOW_MEMBER, IDH_USRMGR_GROUP_MEMBER_SHOWMEMBER,
592 IDC_GROUP_SHOW_OWNER, IDH_USRMGR_GROUP_MEMBER_SHOWOWNER,
596 static DWORD IDD_MACHINE_ADVANCED_HELP[] = {
597 IDC_USER_NAME, IDH_USRMGR_MACHINE_ADVANCED_NAME,
598 IDC_USER_GROUP_HASQUOTA, IDH_USRMGR_MACHINE_ADVANCED_GROUP_HASQUOTA,
599 IDC_USER_GROUP_QUOTA, IDH_USRMGR_MACHINE_ADVANCED_GROUP_QUOTA,
600 IDC_USER_PERM_STATUS, IDH_USRMGR_MACHINE_ADVANCED_PERM_STATUS,
601 IDC_USER_PERM_OWNED, IDH_USRMGR_MACHINE_ADVANCED_PERM_OWNED,
602 IDC_USER_PERM_MEMBER, IDH_USRMGR_MACHINE_ADVANCED_PERM_MEMBER,
606 static DWORD IDD_MACHINE_MEMBER_HELP[] = {
607 IDC_GROUPS_LIST, IDH_USRMGR_MACHINE_MEMBER_LIST,
608 IDC_MEMBER_REMOVE, IDH_USRMGR_MACHINE_MEMBER_REMOVE,
609 IDC_MEMBER_ADD, IDH_USRMGR_MACHINE_MEMBER_ADD,
610 IDC_USER_SHOW_MEMBER, IDH_USRMGR_MACHINE_MEMBER_SHOWMEMBER,
611 IDC_USER_SHOW_OWNER, IDH_USRMGR_MACHINE_MEMBER_SHOWOWNER,
615 static DWORD IDD_CREDENTIALS_HELP[] = {
616 IDC_CREDS_CELL, IDH_USRMGR_CREDS_CELL,
617 IDC_CREDS_CURRENTID, IDH_USRMGR_CREDS_CURRENTID,
618 IDC_CREDS_EXPDATE, IDH_USRMGR_CREDS_EXPDATE,
619 IDC_CREDS_LOGIN, IDH_USRMGR_CREDS_LOGIN,
620 IDC_CREDS_ID, IDH_USRMGR_CREDS_AFS_ID,
621 IDC_CREDS_PASSWORD, IDH_USRMGR_CREDS_AFS_PASSWORD,
625 static DWORD IDD_BADCREDS_HELP[] = {
626 IDC_BADCREDS_SHUTUP, IDH_USRMGR_BADCREDS_SHUTUP,
627 IDOK, IDH_USRMGR_BADCREDS_YES,
628 IDCANCEL, IDH_USRMGR_BADCREDS_NO,
632 static DWORD IDD_BROWSE_JOIN_HELP[] = {
633 IDC_BROWSE_NAMED, IDH_USRMGR_BROWSE_JOIN_NAMES,
634 IDC_BROWSE_CHECK, IDH_USRMGR_BROWSE_JOIN_LIMIT,
635 IDC_BROWSE_CELL, IDH_USRMGR_BROWSE_JOIN_CELL,
636 IDC_BROWSE_LIST, IDH_USRMGR_BROWSE_JOIN_LIST,
637 IDC_BROWSE_SELECT, IDH_USRMGR_BROWSE_JOIN_OK,
638 IDCANCEL, IDH_USRMGR_BROWSE_JOIN_CANCEL,
642 static DWORD IDD_BROWSE_OWN_HELP[] = {
643 IDC_BROWSE_NAMED, IDH_USRMGR_BROWSE_OWN_NAMES,
644 IDC_BROWSE_CHECK, IDH_USRMGR_BROWSE_OWN_LIMIT,
645 IDC_BROWSE_CELL, IDH_USRMGR_BROWSE_OWN_CELL,
646 IDC_BROWSE_LIST, IDH_USRMGR_BROWSE_OWN_LIST,
647 IDC_BROWSE_SELECT, IDH_USRMGR_BROWSE_OWN_OK,
648 IDCANCEL, IDH_USRMGR_BROWSE_OWN_CANCEL,
652 static DWORD IDD_BROWSE_MEMBER_HELP[] = {
653 IDC_BROWSE_NAMED, IDH_USRMGR_BROWSE_MEMBER_NAMES,
654 IDC_BROWSE_CHECK, IDH_USRMGR_BROWSE_MEMBER_LIMIT,
655 IDC_BROWSE_CELL, IDH_USRMGR_BROWSE_MEMBER_CELL,
656 IDC_BROWSE_LIST, IDH_USRMGR_BROWSE_MEMBER_LIST,
657 IDC_BROWSE_SELECT, IDH_USRMGR_BROWSE_MEMBER_OK,
658 IDC_BROWSE_COMBO, IDH_USRMGR_BROWSE_MEMBER_COMBO,
659 IDCANCEL, IDH_USRMGR_BROWSE_MEMBER_CANCEL,
663 static DWORD IDD_USER_PASSWORD_HELP[] = {
664 IDC_CPW_VERSION_AUTO, IDH_USRMGR_USER_PASSWORD_VERSION_AUTO,
665 IDC_CPW_VERSION_MANUAL, IDH_USRMGR_USER_PASSWORD_VERSION_MANUAL,
666 IDC_CPW_VERSION, IDH_USRMGR_USER_PASSWORD_VERSION,
667 IDC_CPW_BYSTRING, IDH_USRMGR_USER_PASSWORD_BYSTRING,
668 IDC_CPW_STRING, IDH_USRMGR_USER_PASSWORD_STRING,
669 IDC_CPW_BYDATA, IDH_USRMGR_USER_PASSWORD_BYDATA,
670 IDC_CPW_DATA, IDH_USRMGR_USER_PASSWORD_DATA,
671 IDC_CPW_RANDOM, IDH_USRMGR_USER_PASSWORD_RANDOM,
675 static DWORD IDD_GROUP_RENAME_HELP[] = {
676 IDC_RENAME_OLDNAME, IDH_USRMGR_GROUP_RENAME_OLDNAME,
677 IDC_RENAME_NEWNAME, IDH_USRMGR_GROUP_RENAME_NEWNAME,
678 IDC_RENAME_OWNER, IDH_USRMGR_GROUP_RENAME_OWNER,
679 IDC_RENAME_CHOWN, IDH_USRMGR_GROUP_RENAME_CHOWN,
683 static DWORD IDD_BROWSE_OWNER_HELP[] = {
684 IDC_BROWSE_NAMED, IDH_USRMGR_BROWSE_OWNER_NAMES,
685 IDC_BROWSE_CELL, IDH_USRMGR_BROWSE_OWNER_CELL,
686 IDC_BROWSE_LIST, IDH_USRMGR_BROWSE_OWNER_LIST,
687 IDC_BROWSE_SELECT, IDH_USRMGR_BROWSE_OWNER_OK,
688 IDC_BROWSE_COMBO, IDH_USRMGR_BROWSE_OWNER_COMBO,
689 IDCANCEL, IDH_USRMGR_BROWSE_OWNER_CANCEL,
693 static DWORD IDD_BROWSE_OWNED_HELP[] = {
694 IDC_BROWSE_NAMED, IDH_USRMGR_BROWSE_OWNED_NAMES,
695 IDC_BROWSE_CHECK, IDH_USRMGR_BROWSE_OWNED_LIMIT,
696 IDC_BROWSE_CELL, IDH_USRMGR_BROWSE_OWNED_CELL,
697 IDC_BROWSE_LIST, IDH_USRMGR_BROWSE_OWNED_LIST,
698 IDC_BROWSE_SELECT, IDH_USRMGR_BROWSE_OWNED_OK,
699 IDCANCEL, IDH_USRMGR_BROWSE_OWNED_CANCEL,
703 static DWORD IDD_NEWUSER_HELP[] = {
704 IDC_NEWUSER_NAME, IDH_USRMGR_NEWUSER_NAME,
705 IDC_NEWUSER_PW1, IDH_USRMGR_NEWUSER_PW1,
706 IDC_NEWUSER_PW2, IDH_USRMGR_NEWUSER_PW2,
707 IDC_NEWUSER_ID_AUTO, IDH_USRMGR_NEWUSER_ID_AUTO,
708 IDC_NEWUSER_ID_MANUAL, IDH_USRMGR_NEWUSER_ID_MANUAL,
709 IDC_NEWUSER_ID, IDH_USRMGR_NEWUSER_ID,
710 IDC_ADVANCED, IDH_USRMGR_NEWUSER_ADVANCED,
714 static DWORD IDD_NEWGROUP_HELP[] = {
715 IDC_NEWGROUP_NAME, IDH_USRMGR_NEWGROUP_NAME,
716 IDC_NEWGROUP_ID_AUTO, IDH_USRMGR_NEWGROUP_ID_AUTO,
717 IDC_NEWGROUP_ID_MANUAL, IDH_USRMGR_NEWGROUP_ID_MANUAL,
718 IDC_NEWGROUP_ID, IDH_USRMGR_NEWGROUP_ID,
719 IDC_ADVANCED, IDH_USRMGR_NEWGROUP_ADVANCED,
723 static DWORD IDD_NEWMACHINE_HELP[] = {
724 IDC_NEWUSER_NAME, IDH_USRMGR_NEWMACHINE_NAME,
725 IDC_NEWUSER_ID_AUTO, IDH_USRMGR_NEWMACHINE_ID_AUTO,
726 IDC_NEWUSER_ID_MANUAL, IDH_USRMGR_NEWMACHINE_ID_MANUAL,
727 IDC_NEWUSER_ID, IDH_USRMGR_NEWMACHINE_ID,
728 IDC_ADVANCED, IDH_USRMGR_NEWMACHINE_ADVANCED,
732 static DWORD IDD_USER_DELETE_HELP[] = {
733 IDOK, IDH_USRMGR_USER_DELETE_OK,
734 IDCANCEL, IDH_USRMGR_USER_DELETE_CANCEL,
735 IDC_DELETE_KAS, IDH_USRMGR_USER_DELETE_KAS,
736 IDC_DELETE_PTS, IDH_USRMGR_USER_DELETE_PTS,
740 static DWORD IDD_GROUP_DELETE_HELP[] = {
741 IDOK, IDH_USRMGR_GROUP_DELETE_OK,
742 IDCANCEL, IDH_USRMGR_GROUP_DELETE_CANCEL,
746 static DWORD IDD_MACHINE_DELETE_HELP[] = {
747 IDOK, IDH_USRMGR_MACHINE_DELETE_OK,
748 IDCANCEL, IDH_USRMGR_MACHINE_DELETE_CANCEL,
752 static DWORD IDD_CELL_GENERAL_HELP[] = {
753 IDC_CELL_USERMAX, IDH_USRMGR_CELL_GENERAL_USERMAX,
754 IDC_CELL_GROUPMAX, IDH_USRMGR_CELL_GENERAL_GROUPMAX,
758 static DWORD IDD_OPTIONS_HELP[] = {
759 IDC_REGEXP_UNIX, IDH_USRMGR_OPTIONS_REGEXP_UNIX,
760 IDC_REGEXP_WINDOWS, IDH_USRMGR_OPTIONS_REGEXP_WINDOWS,
761 IDC_REFRESH, IDH_USRMGR_OPTIONS_REFRESH,
762 IDC_REFRESH_RATE, IDH_USRMGR_OPTIONS_REFRESH_RATE,
766 static DWORD IDD_SEARCH_USERS_HELP[] = {
767 IDC_SEARCH_ALL, IDH_USRMGR_SEARCH_USERS_SHOWALL,
768 IDC_SEARCH_EXPIRE, IDH_USRMGR_SEARCH_USERS_SHOWEXPIRE,
769 IDC_SEARCH_EXPIRE_DATE, IDH_USRMGR_SEARCH_USERS_EXPIREDATE,
770 IDC_SEARCH_PWEXPIRE, IDH_USRMGR_SEARCH_USERS_SHOWPWEXPIRE,
771 IDC_SEARCH_PWEXPIRE_DATE, IDH_USRMGR_SEARCH_USERS_PWEXPIREDATE,
776 void Main_ConfigureHelp (void)
778 AfsAppLib_RegisterHelpFile (cszHELPFILENAME);
780 AfsAppLib_RegisterHelp (IDD_APPLIB_OPENCELL, IDD_OPENCELL_HELP, IDH_USRMGR_OPENCELL_OVERVIEW);
781 AfsAppLib_RegisterHelp (IDD_COLUMNS, IDD_COLUMNS_HELP, IDH_USRMGR_COLUMNS_OVERVIEW);
782 AfsAppLib_RegisterHelp (IDD_USER_GENERAL, IDD_USER_GENERAL_HELP, IDH_USRMGR_PROP_USER_GENERAL_OVERVIEW);
783 AfsAppLib_RegisterHelp (IDD_USER_ADVANCED, IDD_USER_ADVANCED_HELP, IDH_USRMGR_PROP_USER_ADVANCED_OVERVIEW);
784 AfsAppLib_RegisterHelp (IDD_USER_MEMBER, IDD_USER_MEMBER_HELP, IDH_USRMGR_PROP_USER_MEMBER_OVERVIEW);
785 AfsAppLib_RegisterHelp (IDD_GROUP_GENERAL, IDD_GROUP_GENERAL_HELP, IDH_USRMGR_PROP_GROUP_GENERAL_OVERVIEW);
786 AfsAppLib_RegisterHelp (IDD_GROUP_MEMBER, IDD_GROUP_MEMBER_HELP, IDH_USRMGR_PROP_GROUP_MEMBER_OVERVIEW);
787 AfsAppLib_RegisterHelp (IDD_MACHINE_ADVANCED, IDD_MACHINE_ADVANCED_HELP, IDH_USRMGR_PROP_MACHINE_ADVANCED_OVERVIEW);
788 AfsAppLib_RegisterHelp (IDD_MACHINE_MEMBER, IDD_MACHINE_MEMBER_HELP, IDH_USRMGR_PROP_MACHINE_MEMBER_OVERVIEW);
789 AfsAppLib_RegisterHelp (IDD_APPLIB_BADCREDS, IDD_BADCREDS_HELP, IDH_USRMGR_BADCREDS_OVERVIEW);
790 AfsAppLib_RegisterHelp (IDD_APPLIB_CREDENTIALS, IDD_CREDENTIALS_HELP, IDH_USRMGR_CREDENTIALS_OVERVIEW);
791 AfsAppLib_RegisterHelp (IDD_BROWSE_JOIN, IDD_BROWSE_JOIN_HELP, IDH_USRMGR_BROWSE_JOIN_OVERVIEW);
792 AfsAppLib_RegisterHelp (IDD_BROWSE_OWN, IDD_BROWSE_OWN_HELP, IDH_USRMGR_BROWSE_OWN_OVERVIEW);
793 AfsAppLib_RegisterHelp (IDD_BROWSE_MEMBER, IDD_BROWSE_MEMBER_HELP, IDH_USRMGR_BROWSE_MEMBER_OVERVIEW);
794 AfsAppLib_RegisterHelp (IDD_USER_PASSWORD, IDD_USER_PASSWORD_HELP, IDH_USRMGR_USER_PASSWORD_OVERVIEW);
795 AfsAppLib_RegisterHelp (IDD_GROUP_RENAME, IDD_GROUP_RENAME_HELP, IDH_USRMGR_GROUP_RENAME_OVERVIEW);
796 AfsAppLib_RegisterHelp (IDD_BROWSE_OWNER, IDD_BROWSE_OWNER_HELP, IDH_USRMGR_BROWSE_OWNER_OVERVIEW);
797 AfsAppLib_RegisterHelp (IDD_NEWUSER, IDD_NEWUSER_HELP, IDH_USRMGR_CREATE_USER_OVERVIEW);
798 AfsAppLib_RegisterHelp (IDD_NEWGROUP, IDD_NEWGROUP_HELP, IDH_USRMGR_CREATE_GROUP_OVERVIEW);
799 AfsAppLib_RegisterHelp (IDD_NEWMACHINE, IDD_NEWMACHINE_HELP, IDH_USRMGR_CREATE_MACHINE_OVERVIEW);
800 AfsAppLib_RegisterHelp (IDD_USER_DELETE, IDD_USER_DELETE_HELP, IDH_USRMGR_DELETE_USER_OVERVIEW);
801 AfsAppLib_RegisterHelp (IDD_GROUP_DELETE, IDD_GROUP_DELETE_HELP, IDH_USRMGR_DELETE_GROUP_OVERVIEW);
802 AfsAppLib_RegisterHelp (IDD_MACHINE_DELETE, IDD_MACHINE_DELETE_HELP, IDH_USRMGR_DELETE_MACHINE_OVERVIEW);
803 AfsAppLib_RegisterHelp (IDD_CELL_GENERAL, IDD_CELL_GENERAL_HELP, IDH_USRMGR_PROP_CELL_GENERAL_OVERVIEW);
804 AfsAppLib_RegisterHelp (IDD_OPTIONS, IDD_OPTIONS_HELP, IDH_USRMGR_OPTIONS_OVERVIEW);
805 AfsAppLib_RegisterHelp (IDD_SEARCH_USERS, IDD_SEARCH_USERS_HELP, IDH_USRMGR_SEARCH_USERS_OVERVIEW);