|
|
1.1 root 1: /****************************************************************************
2:
3: PROGRAM: lqh.c
4:
5: MODULE: lqhinit.c
6:
7: FUNCTIONS:
8: Init()
9:
10: COMMENTS:
11: This module contains all the initialization that needs to be done
12: when opening a new database. It returns TRUE if initialization was
13: successful, or FALSE if the requested database could not be found
14: or opened.
15:
16: ****************************************************************************/
17:
18: #include "lqh.h"
19:
20: BOOL Init() {
21: USHORT i;
22: CHAR chMessage[80];
23: BYTE bScanCode;
24: NC ncRequest;
25:
26: if (ncHelp) /* Closes the current data file if its open */
27: HelpClose(ncHelp);
28:
29: /* Open the help data file */
30:
31: if (!(ncHelp = HelpOpen((PCH) chHelpName))) {
32: Dstrcpy(chMessage, "Cannot open ");
33: Dstrcat(chMessage, chHelpName);
34: BoxMessage(chMessage, atWARNING, THIN, hmou, TRUE);
35: return FALSE;
36: }
37:
38: /* A table is maintained of all preloaded topics that includes the
39: * context number, the segment selector, the current top line displayed,
40: * and the current highlighted line (if any). When HelpSearch is called,
41: * it checks this table, and if the context number is found, it uses the
42: * selector associated with that context number to retrieve the
43: * decompressed data. If the context number is not found, it will call the
44: * help-engine routines to decompress the data. Whenever Init() is called,
45: * it deallocates any existing selectors, and clears all the context
46: * numbers, that indicate no data has been preloaded.
47: */
48:
49: for (i = 0; i < MAXPRELOAD; i++) {
50: selTable[i].ncContext = (NC) 0; /* no context */
51: selTable[i].usTopLine = 1; /* default current position */
52: if (selTable[i].sel) /* Frees any allocated memory */
53: DosFreeSeg(selTable[i].sel);
54: }
55:
56: usListPos = 0;
57: if ((ncRequest = HelpNc("List categories", ncHelp))) {
58:
59: /* The list of categories will be small, so both the
60: * compressed and decompressed data are placed in the 64K-memory block
61: * that is used for the character-attribute strings.
62: */
63:
64: HelpLook(ncRequest, MAKEP(selStringTable, 0));
65: HelpDecomp(MAKEP(selStringTable, 0),
66: MAKEP(selStringTable, 32000), ncRequest);
67: while (HelpGetLine(usListPos + 2, MAXCATNAME,
68: (PCH) lstList[usListPos].name, MAKEP(selStringTable, 32000))
69: > 1)
70: usListPos++;
71: }
72:
73: return TRUE;
74: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.