Changeset 12ce63 in git for Singular/fehelp.cc
- Timestamp:
- Aug 10, 1999, 7:10:21 PM (25 years ago)
- Branches:
- (u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
- Children:
- f50151ce23f5c9833d0c0a62236718af718e8bb1
- Parents:
- 6fb39af75604d208d83fccb26107e111dc34bd91
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/fehelp.cc
r6fb39a r12ce63 28 28 *****************************************************************/ 29 29 #define MAX_HE_ENTRY_LENGTH 60 30 typedef struct 30 typedef struct 31 31 { 32 32 char key[MAX_HE_ENTRY_LENGTH]; … … 53 53 * 54 54 *****************************************************************/ 55 static char* strclean(char* str); 55 static char* strclean(char* str); 56 56 static BOOLEAN heKey2Entry(char* filename, char* key, heEntry hentry); 57 57 static int heReKey2Entry (char* filename, char* key, heEntry hentry); … … 111 111 heEntry_s hentry; 112 112 char* idxfile = feResource('x' /*"IdxFile"*/); 113 113 114 114 // Try exact match of help string with key in index 115 115 if (!key_is_regexp && idxfile != NULL && heKey2Entry(idxfile, str, &hentry)) … … 120 120 121 121 if (! key_is_regexp && heOnlineHelp(str)) return; 122 122 123 123 // Try to match approximately with key in index file 124 124 if (idxfile != NULL) … … 142 142 found = heReKey2Entry(idxfile, mkey, &hentry); 143 143 } 144 144 145 145 // Print warning and return if nothing found 146 146 if (found == 0) … … 169 169 return; 170 170 } 171 171 172 172 // no idx file, let Browsers deal with it, if they can 173 173 strcpy(hentry.key, str); … … 185 185 186 186 // if no argument, see what we have as value to the option 187 if (which == NULL || *which == '\0') 187 if (which == NULL || *which == '\0') 188 188 which = mainGetSingOptionValue("browser"); 189 189 190 190 // if no argument, choose first available help browser 191 191 if (which == NULL || *which == '\0') … … 193 193 // unles one is already set 194 194 if (heCurrentHelpBrowser != NULL) goto Finish; 195 195 196 196 while (heHelpBrowsers[i].browser != NULL) 197 197 { 198 if (heHelpBrowsers[i].init_proc(0)) 198 if (heHelpBrowsers[i].init_proc(0)) 199 199 { 200 200 heCurrentHelpBrowser = &(heHelpBrowsers[i]); … … 211 211 strcmp(heHelpBrowsers[i].browser, which) != 0) 212 212 {i++;} 213 214 if (heHelpBrowsers[i].browser == NULL) 213 214 if (heHelpBrowsers[i].browser == NULL) 215 215 { 216 216 if (warn) Warn("No help browser '%s' available", which); … … 225 225 } 226 226 } 227 227 228 228 // something went wrong 229 if (heCurrentHelpBrowser == NULL) 229 if (heCurrentHelpBrowser == NULL) 230 230 { 231 231 // choose first available help browser … … 233 233 feHelpBrowser(); 234 234 assume(heCurrentHelpBrowser != NULL); 235 if (warn) 235 if (warn) 236 236 Warn("Setting help browser to '%s'", heCurrentHelpBrowser->browser); 237 237 return heCurrentHelpBrowser->browser; … … 240 240 { 241 241 // or, leave as is 242 if (warn) 242 if (warn) 243 243 Warn("Help browser stays at '%s'", heCurrentHelpBrowser->browser); 244 244 } … … 253 253 int i; 254 254 StringAppendS("Available HelpBrowsers: "); 255 255 256 256 i = 0; 257 257 while (heHelpBrowsers[i].browser != NULL) 258 258 { 259 if (heHelpBrowsers[i].init_proc(warn)) 259 if (heHelpBrowsers[i].init_proc(warn)) 260 260 StringAppend("%s, ", heHelpBrowsers[i].browser); 261 261 i++; … … 263 263 StringAppend("\nCurrent HelpBrowser: %s ", feHelpBrowser()); 264 264 } 265 265 266 266 267 267 /***************************************************************** … … 313 313 while ((c = getc(fd)) != EOF) 314 314 { 315 if (c < k) 315 if (c < k) 316 316 { 317 317 /* Skip line */ 318 318 while (getc(fd) != '\n') {}; 319 if (i) 319 if (i) 320 320 { 321 321 i=0; … … 341 341 } 342 342 if (c == EOF) goto Failure; 343 343 344 344 // get url 345 345 hentry->node[i] = '\0'; … … 362 362 return TRUE; 363 363 } 364 else if (i > kl) 364 else if (i > kl) 365 365 { 366 366 goto Failure; … … 387 387 static BOOLEAN strmatch(char* s, char* re) 388 388 { 389 if (s == NULL || *s == '\0') 389 if (s == NULL || *s == '\0') 390 390 return (re == NULL || *re == '\0' || strcmp(re, "*") == 0); 391 391 if (re == NULL || *re == '\0') return FALSE; … … 395 395 char rs[MAX_HE_ENTRY_LENGTH + 1]; 396 396 char *l, *r, *ll, *rr; 397 397 398 398 // make everything to lower case 399 399 i=1; … … 408 408 ls[i] = '\0'; 409 409 l = &(ls[1]); 410 410 411 411 i=1; 412 412 rs[0] = '\0'; … … 420 420 rs[i] = '\0'; 421 421 r = &(rs[1]); 422 422 423 423 // chopp of exact matches from beginning and end 424 424 while (*r != '*' && *r != '\0' && *l != '\0') … … 447 447 if (*rr == '*' && rr[-1] == '\0') return TRUE; 448 448 if (*ll == '\0') return FALSE; 449 449 450 450 // now *r starts with a * and ends with a * 451 451 r++; … … 455 455 rr = r + 1; 456 456 while (*rr != '*' && *rr != '\0') rr++; 457 if (*rr == '*') 457 if (*rr == '*') 458 458 { 459 459 *rr = '\0'; … … 478 478 FILE* fd; 479 479 char index_key[MAX_HE_ENTRY_LENGTH]; 480 480 481 481 if (filename == NULL || key == NULL) return 0; 482 482 fd = fopen(filename, "r"); … … 531 531 return FALSE; 532 532 } 533 533 534 534 // try help for a library 535 535 int ls = strlen(s); … … 556 556 extern FILE *yylpin; 557 557 lib_style_types lib_style; // = OLD_LIBSTYLE; 558 558 559 559 yylpin = fp; 560 560 #ifdef HAVE_NAMESPACES … … 627 627 * 628 628 *****************************************************************/ 629 629 630 630 static void heBrowserHelp(heEntry hentry) 631 631 { 632 632 // check checksums of procs 633 int kchksum = (hentry != NULL && hentry->chksum > 0 ? 633 int kchksum = (hentry != NULL && hentry->chksum > 0 ? 634 634 heKeyChksum(hentry->key) : 0); 635 if (kchksum && kchksum != hentry->chksum && heOnlineHelp(hentry->key)) 635 if (kchksum && kchksum != hentry->chksum && heOnlineHelp(hentry->key)) 636 636 return; 637 637 638 638 if (heCurrentHelpBrowser == NULL) feHelpBrowser(); 639 639 assume(heCurrentHelpBrowser != NULL); … … 655 655 if (feResource('I') == NULL) 656 656 { 657 if (warn) 657 if (warn) 658 658 WarnS("'info' help browser not available: no 'info' program found"); 659 659 return FALSE; … … 667 667 if (hentry != NULL && *(hentry->key) != '\0') 668 668 { 669 if (*(hentry->node) != '\0') 670 sprintf(sys, "%s -f %s --node='%s'", 669 if (*(hentry->node) != '\0') 670 sprintf(sys, "%s -f %s --node='%s'", 671 671 feResource('I'), feResource('i'), hentry->node); 672 672 else 673 sprintf(sys, "%s -f %s Index '%s'", 673 sprintf(sys, "%s -f %s Index '%s'", 674 674 feResource('I'), feResource('i'), hentry->key); 675 675 } … … 693 693 return FALSE; 694 694 } 695 695 696 696 if (feResource('h' /*"HtmlDir"*/, warn) == NULL) 697 697 { … … 707 707 char* htmldir = feResource('h' /*"HtmlDir"*/); 708 708 char* urltype; 709 710 if (htmldir == NULL) 709 710 if (htmldir == NULL) 711 711 { 712 712 urltype = ""; … … 726 726 sprintf(url, "%s%s/index.htm", urltype, htmldir); 727 727 } 728 sprintf(sys, "%s --remote 'OpenUrl(%s)' > /dev/null 2>&1", 728 sprintf(sys, "%s --remote 'OpenUrl(%s)' > /dev/null 2>&1", 729 729 feResource('N' /*"netscape"*/), url); 730 730 731 731 // --remote exits with status != 0 if netscaep isn't already running 732 732 if (system(sys) != 0) … … 768 768 if (hentry != NULL && *(hentry->key) != '\0') 769 769 { 770 if (*(hentry->node) != '\0') 771 sprintf(sys, "%s -e %s -f %s --node='%s' &", 770 if (*(hentry->node) != '\0') 771 sprintf(sys, "%s -e %s -f %s --node='%s' &", 772 772 feResource('X'), feResource('I'), feResource('i'), hentry->node); 773 773 else 774 sprintf(sys, "%s -e %s -f %s Index '%s' &", 774 sprintf(sys, "%s -e %s -f %s Index '%s' &", 775 775 feResource('X'), feResource('I'), feResource('i'), hentry->key); 776 776 } 777 777 else 778 sprintf(sys, "%s -e %s -f %s --node=Top &", 778 sprintf(sys, "%s -e %s -f %s --node=Top &", 779 779 feResource('X'), feResource('I'), feResource('i')); 780 780 system(sys); … … 806 806 if (hentry != NULL && *(hentry->node) != '\0') 807 807 { 808 sprintf(sys, "%s '(%s)%s' &", 808 sprintf(sys, "%s '(%s)%s' &", 809 809 feResource('T'), feResource('i'), hentry->node); 810 810 } 811 811 else 812 812 { 813 sprintf(sys, "%s %s &", 813 sprintf(sys, "%s %s &", 814 814 feResource('T'), feResource('i')); 815 815 } … … 834 834 { 835 835 WarnS("Your help command could not be executed. Use"); 836 Warn("C-h C-s %s", 836 Warn("C-h C-s %s", 837 837 (hentry != NULL && *(hentry->node) != '\0' ? hentry->node : "Top")); 838 838 Warn("to enter the Singular online help. For general"); … … 851 851 static void heBuiltinHelp(heEntry hentry) 852 852 { 853 char* node = mstrdup(hentry != NULL && *(hentry->node) != '\0' ? 853 char* node = mstrdup(hentry != NULL && *(hentry->node) != '\0' ? 854 854 hentry->node : "Top"); 855 855 singular_manual(node); … … 857 857 } 858 858 859 859 860 860 /* ========================================================================== */ 861 861 // old, stupid builtin_help
Note: See TracChangeset
for help on using the changeset viewer.