📄 lyreadcfg.c
字号:
*/PUBLIC void read_cfg ARGS1( char *, cfg_filename){ FILE *fp; char buffer[501]; char temp[501]; char *cp, *cp1; int i, j, len; /* * Locate and open the file. */ if (!cfg_filename || strlen(cfg_filename) == 0) { if (TRACE) fprintf(stderr,"No filename following -cfg switch!\n"); return; } if ((fp = fopen(cfg_filename,"r")) == NULL) { if (TRACE) fprintf(stderr,"lynx.cfg file not found as %s\n",cfg_filename); return; } have_read_cfg=TRUE; /* * Process each line in the file. */ while (fgets(buffer, 500, fp) != NULL) { /* * Strip off \n at the end. */ if ((cp = (char *)strchr(buffer, '\n')) != NULL) *cp = '\0'; /* * Trim off any trailing comments. */ if ((cp = (char *)strrchr(buffer, ':')) != NULL) { if ((cp1 = (char *)strchr(cp, '#')) != NULL) { cp1--; if (isspace((unsigned char)*cp1)) { *cp1 = '\0'; } } } /* * Strip off trailing white space. */ len = strlen(buffer); while (len && isspace(buffer[len-1])) { len--; buffer[len] = '\0'; } /* * Skip any blank or purely comment lines. */ if (buffer[0] == '\0' || buffer[0] == '#') continue; /* * Process the string buffer. */ switch (TOUPPER(buffer[0])) { case 'A': if (!strncasecomp(buffer, "ALERTSECS:", 10)) { strcpy(temp, buffer+10); for (i = 0; temp[i]; i++) { if (!isdigit(temp[i])) { temp[i] = '\0'; break; } } if (temp[0]) AlertSecs = atoi(temp); } else if (!strncasecomp(buffer, "ALWAYS_RESUBMIT_POSTS:", 22)) { LYresubmit_posts = is_true(buffer+22);#ifdef EXEC_LINKS } else if (!strncasecomp(buffer, "ALWAYS_TRUSTED_EXEC:", 20)) { add_trusted(&buffer[20], ALWAYS_EXEC_PATH); /* Add exec path */#endif /* EXEC_LINKS */ } else if (!strncasecomp(buffer, "ASSUME_CHARSET:", 15)) { StrAllocCopy(UCAssume_MIMEcharset, buffer+15); for (i = 0; UCAssume_MIMEcharset[i]; i++) UCAssume_MIMEcharset[i] = TOLOWER(UCAssume_MIMEcharset[i]); UCLYhndl_for_unspec = UCGetLYhndl_byMIME(UCAssume_MIMEcharset); } else if (!strncasecomp(buffer, "ASSUME_LOCAL_CHARSET:", 21)) { StrAllocCopy(UCAssume_localMIMEcharset, buffer+21); for (i = 0; UCAssume_localMIMEcharset[i]; i++) UCAssume_localMIMEcharset[i] = TOLOWER(UCAssume_localMIMEcharset[i]); UCLYhndl_HTFile_for_unspec = UCGetLYhndl_byMIME(UCAssume_localMIMEcharset); } else if (!strncasecomp(buffer, "ASSUME_UNREC_CHARSET:", 21)) { StrAllocCopy(UCAssume_unrecMIMEcharset, buffer+21); for (i = 0; UCAssume_unrecMIMEcharset[i]; i++) UCAssume_unrecMIMEcharset[i] = TOLOWER(UCAssume_unrecMIMEcharset[i]); UCLYhndl_for_unrec = UCGetLYhndl_byMIME(UCAssume_unrecMIMEcharset); } break; case 'B': if (!strncasecomp(buffer, "BLOCK_MULTI_BOOKMARKS:", 22)) { LYMBMBlocked = is_true(buffer+22); } else if (!strncasecomp(buffer, "BOLD_H1:", 8)) { bold_H1 = is_true(buffer+8); } else if (!strncasecomp(buffer, "BOLD_HEADERS:", 13)) { bold_headers = is_true(buffer+13); } else if (!strncasecomp(buffer, "BOLD_NAME_ANCHORS:", 18)) { bold_name_anchors = is_true(buffer+18); } break; case 'C': if (!strncasecomp(buffer, "CASE_SENSITIVE_ALWAYS_ON:", 25)) { case_sensitive = is_true(buffer+25); } else if (!strncasecomp(buffer, "CHARACTER_SET:", 14)) { for (i = 0; LYchar_set_names[i]; i++) { if (!strncmp(buffer+14, LYchar_set_names[i], strlen(buffer+14))) { current_char_set=i; HTMLSetRawModeDefault(i); break; } } } else if (!strncasecomp(buffer, "CHECKMAIL:", 10)) { check_mail = is_true(buffer+10); } else if (!strncasecomp(buffer, "COLLAPSE_BR_TAGS:", 17)) { LYCollapseBRs = is_true(buffer+17);#if USE_COLOR_TABLE } else if (!strncasecomp(buffer, "COLOR:", 6)) { parse_color(buffer + 6);#endif /* USE_COLOR_TABLE */ } else if (!strncasecomp(buffer, "cso_proxy:", 10)) { if (getenv("cso_proxy") == NULL) {#ifdef VMS strcpy(temp, "cso_proxy"); Define_VMSLogical(temp, (char *)&buffer[10]);#else strcpy(temp, "cso_proxy="); StrAllocCopy(cso_proxy_putenv_cmd, temp); StrAllocCat(cso_proxy_putenv_cmd, (char *)&buffer[10]); putenv(cso_proxy_putenv_cmd);#endif /* VMS */ }#ifdef VMS } else if (!strncasecomp(buffer, "CSWING_PATH:", 12)) { StrAllocCopy(LYCSwingPath, buffer+12);#endif /* VMS */ } break; case 'D': if (!strncasecomp(buffer, "DEFAULT_BOOKMARK_FILE:", 22)) { StrAllocCopy(bookmark_page, buffer+22); StrAllocCopy(BookmarkPage, bookmark_page); StrAllocCopy(MBM_A_subbookmark[0], bookmark_page); StrAllocCopy(MBM_A_subdescript[0], MULTIBOOKMARKS_DEFAULT); } else if (!strncasecomp(buffer, "DEFAULT_CACHE_SIZE:", 19)) { HTCacheSize = atoi(buffer+19); } else if (!system_editor && !strncasecomp(buffer, "DEFAULT_EDITOR:", 15)) { StrAllocCopy(editor, buffer+15); } else if (!strncasecomp(buffer, "DEFAULT_INDEX_FILE:", 19)) { StrAllocCopy(indexfile, buffer+19); } else if (!strncasecomp(buffer, "DEFAULT_KEYPAD_MODE_IS_NUMBERS_AS_ARROWS:", 41)) { if (is_true(buffer+41)) keypad_mode = NUMBERS_AS_ARROWS; else keypad_mode = LINKS_ARE_NUMBERED; } else if (!strncasecomp(buffer, "DEFAULT_USER_MODE:", 18)) { if (!strncasecomp(buffer+18, "NOVICE", 6)) user_mode = NOVICE_MODE; else if (!strncasecomp(buffer+18, "INTER", 5)) user_mode = INTERMEDIATE_MODE; else if (!strncasecomp(buffer+18, "ADVANCE", 7)) user_mode = ADVANCED_MODE;#if defined(VMS) && defined(VAXC) && !defined(__DECC) } else if (!strncasecomp(buffer, "DEFAULT_VIRTUAL_MEMORY_SIZE:", 28)) { HTVirtualMemorySize = atoi(buffer+28);#endif /* VMS && VAXC && !__DECC */#ifdef DIRED_SUPPORT } else if (!strncasecomp(buffer, "DIRED_MENU:", 11)) { add_menu_item(&buffer[11]);#endif /* DIRED_SUPPORT */ } else if (!strncasecomp(buffer, "DOWNLOADER:", 11)) { add_item_to_list(&buffer[11], &downloaders); } break; case 'E': if (!strncasecomp(buffer, "EMACS_KEYS_ALWAYS_ON:", 21)) { emacs_keys = is_true(buffer+21); } else if (!strncasecomp(buffer, "ENABLE_SCROLLBACK:", 18)) { enable_scrollback = is_true(buffer+18); }#ifdef USE_EXTERNALS else if(!strncasecomp(buffer,"EXTERNAL:",9)) { add_item_to_list(&buffer[9],&externals); }#endif break; case 'F': if (!strncasecomp(buffer, "finger_proxy:", 13)) { if (getenv("finger_proxy") == NULL) {#ifdef VMS strcpy(temp, "finger_proxy"); Define_VMSLogical(temp, (char *)&buffer[13]);#else strcpy(temp, "finger_proxy="); StrAllocCopy(finger_proxy_putenv_cmd, temp); StrAllocCat(finger_proxy_putenv_cmd, (char *)&buffer[13]); putenv(finger_proxy_putenv_cmd);#endif /* VMS */ } } else if (!strncasecomp(buffer, "FORCE_SSL_COOKIES_SECURE:", 25)) { LYForceSSLCookiesSecure = is_true(buffer+25); } else if (!strncasecomp(buffer, "ftp_proxy:", 10)) { if (getenv("ftp_proxy") == NULL) {#ifdef VMS strcpy(temp, "ftp_proxy"); Define_VMSLogical(temp, (char *)&buffer[10]);#else strcpy(temp, "ftp_proxy="); StrAllocCopy(ftp_proxy_putenv_cmd, temp); StrAllocCat(ftp_proxy_putenv_cmd, (char *)&buffer[10]); putenv(ftp_proxy_putenv_cmd);#endif /* VMS */ } } break; case 'G': if (!strncasecomp(buffer, "GLOBAL_EXTENSION_MAP:", 21)) { StrAllocCopy(global_extension_map, buffer+21); } else if (!strncasecomp(buffer, "GLOBAL_MAILCAP:", 15)) { StrAllocCopy(global_type_map, buffer+15); } else if (!strncasecomp(buffer, "gopher_proxy:", 13)) { if (getenv("gopher_proxy") == NULL) {#ifdef VMS strcpy(temp, "gopher_proxy"); Define_VMSLogical(temp, (char *)&buffer[13]);#else strcpy(temp, "gopher_proxy="); StrAllocCopy(gopher_proxy_putenv_cmd, temp); StrAllocCat(gopher_proxy_putenv_cmd, (char *)&buffer[13]); putenv(gopher_proxy_putenv_cmd);#endif /* VMS */ } } else if (!strncasecomp(buffer, "GOTOBUFFER:", 11)) { goto_buffer = is_true(buffer+11); } break; case 'H': if (!strncasecomp(buffer, "HELPFILE:", 9)) { StrAllocCopy(helpfile, buffer+9); } else if (!strncasecomp(buffer, "HISTORICAL_COMMENTS:", 20)) { historical_comments = is_true(buffer+20); } else if (!strncasecomp(buffer, "http_proxy:", 11)) { if (getenv("http_proxy") == NULL) {#ifdef VMS strcpy(temp, "http_proxy"); Define_VMSLogical(temp, (char *)&buffer[11]);#else strcpy(temp, "http_proxy="); StrAllocCopy(http_proxy_putenv_cmd, temp); StrAllocCat(http_proxy_putenv_cmd, (char *)&buffer[11]); putenv(http_proxy_putenv_cmd);#endif /* VMS */ } } else if (!strncasecomp(buffer, "https_proxy:", 12)) { if (getenv("https_proxy") == NULL) {#ifdef VMS strcpy(temp, "https_proxy"); Define_VMSLogical(temp, (char *)&buffer[12]);#else strcpy(temp, "https_proxy="); StrAllocCopy(https_proxy_putenv_cmd, temp); StrAllocCat(https_proxy_putenv_cmd, (char *)&buffer[12]); putenv(https_proxy_putenv_cmd);#endif /* VMS */ } } break; case 'I': if (!strncasecomp(buffer, "INFOSECS:", 9)) { strcpy(temp, buffer+9); for (i = 0; temp[i]; i++) { if (!isdigit(temp[i])) { temp[i] = '\0'; break; } } if (temp[0]) InfoSecs = atoi(temp); } break; case 'J': if (!strncasecomp(buffer, "JUMP_PROMPT:", 12)) { StrAllocCopy(jumpprompt, buffer+12); } else if (!strncasecomp(buffer, "JUMPBUFFER:", 11)) { jump_buffer = is_true(buffer+11); } else if (!strncasecomp(buffer, "JUMPFILE:", 9)) { if (!LYJumpInit(buffer)) { if (TRACE) fprintf(stderr, "Failed to register %s\n", buffer); } } break; case 'K': if (!strncasecomp(buffer, "KEYMAP:", 7)) { char *key; char *func; key = buffer + 7; if ((func = strchr(key, ':')) != NULL) { *func++ = '\0'; /* Allow comments on the ends of key remapping lines. - DT */ if (!remap(key, strtok(func, " \t\n#"))) fprintf(stderr, "key remapping of %s to %s failed\n",key,func); else if (!strcmp("TOGGLE_HELP", strtok(func, " \t\n#"))) LYUseNoviceLineTwo = FALSE; } } break; case 'L': if (!strncasecomp(buffer, "LIST_NEWS_NUMBERS:", 18)) { LYListNewsNumbers = is_true(buffer+18); } else if (!strncasecomp(buffer, "LIST_NEWS_DATES:", 16)) { LYListNewsDates = is_true(buffer+16);#ifndef VMS } else if (!strncasecomp(buffer, "LIST_FORMAT:", 12)) { StrAllocCopy(list_format, buffer+12);#endif /* !VMS */ } else if (!strncasecomp(buffer, "LOCALHOST_ALIAS:", 16)) { LYAddLocalhostAlias(buffer+16); } else if (!strncasecomp(buffer, "LOCAL_DOMAIN:", 13)) { StrAllocCopy(LYLocalDomain, buffer+13);#if defined(EXEC_LINKS) || defined(EXEC_SCRIPTS) } else if (!strncasecomp(buffer, "LOCAL_EXECUTION_LINKS_ALWAYS_ON:", 32)) { local_exec = is_true(buffer+32); } else if (!strncasecomp(buffer, "LOCAL_EXECUTION_LINKS_ON_BUT_NOT_REMOTE:", 40)) { local_exec_on_local_files = is_true(buffer+40);#endif /* defined(EXEC_LINKS) || defined(EXEC_SCRIPTS) */#ifdef LYNXCGI_LINKS } else if (!strncasecomp(buffer, "LYNXCGI_ENVIRONMENT:", 20)) { add_lynxcgi_environment(buffer+20);#ifndef VMS /* WebSter Mods - Next 2 Lines -jkt */ } else if (!strncasecomp(buffer, "LYNXCGI_DOCUMENT_ROOT:", 22)) { StrAllocCopy(LYCgiDocumentRoot, buffer+22);#endif /* !VMS */#endif /* LYNXCGI_LINKS */ } else if (!strncasecomp(buffer, "LYNX_HOST_NAME:", 15)) { StrAllocCopy(LYHostName, buffer+15); } else if (!strncasecomp(buffer, "LYNX_SIG_FILE:", 14)) { strcpy(temp, (buffer+14)); if (LYPathOffHomeOK(temp, 256)) { StrAllocCopy(LynxSigFile, temp); LYAddPathToHome(temp, 256, LynxSigFile); StrAllocCopy(LynxSigFile, temp); if (TRACE) fprintf(stderr, "LYNX_SIG_FILE set to '%s'\n", LynxSigFile); } else { if (TRACE) fprintf(stderr, "LYNX_SIG_FILE '%s' is bad. Ignoring.\n", LYNX_SIG_FILE); } } break; case 'M': if (!strncasecomp(buffer, "MAIL_SYSTEM_ERROR_LOGGING:", 26)) { error_logging = is_true(buffer+26);#ifdef VMS } else if (!strncasecomp(buffer, "MAIL_ADRS:", 10)) { StrAllocCopy(mail_adrs, buffer+10);#endif /* VMS */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -