📄 config.c
字号:
int new_term = -1; int old_stat = P_STATLINE[0]; extern int use_status; w = wopen(20, 7, 59, 13, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1); wtitle(w, TMID, "Terminal settings"); wprintf(w, "\n"); wprintf(w, " A - Terminal emulation : %s\n", terminal == VT100 ? "VT102" : "ANSI"); wprintf(w, " B - Backspace key sends : %s\n", P_BACKSPACE); wprintf(w, " C - Status line is : %s\n", P_STATLINE); wlocate(w, 4, 5); wputs(w, "Change which setting? "); wredraw(w, 1); while(1) { wlocate(w, 26, 5); c = rwxgetch(); switch(c) { case '\n': wclose(w, 1); /* If status line enabled/disabled resize screen. */ if (P_STATLINE[0] != old_stat && new_term < 0) init_emul(terminal, 0); return(new_term); case 'A': if (new_term < 0) new_term = terminal; if (new_term == VT100) { new_term = ANSI; psets(P_BACKSPACE, "BS"); } else { new_term = VT100; psets(P_BACKSPACE, "DEL"); } wlocate(w, 27, 1); wprintf(w, "%s ", new_term == VT100 ? "VT102" : "ANSI"); wlocate(w, 27, 2); wprintf(w, "%s ", P_BACKSPACE); keyboard(KSETBS, P_BACKSPACE[0] == 'B' ? 8 : 127); break; case 'B': if (P_BACKSPACE[0] == 'D') psets(P_BACKSPACE, "BS"); else psets(P_BACKSPACE, "DEL"); wlocate(w, 27, 2); wprintf(w, "%s ", P_BACKSPACE); keyboard(KSETBS, P_BACKSPACE[0] == 'B' ? 8 : 127); break; case 'C': if (P_STATLINE[0] == 'e') { psets(P_STATLINE, "disabled"); tempst = 1; } else { psets(P_STATLINE, "enabled"); /* See if it fits on screen */ if (LINES > 24 || use_status) tempst = 0; } wlocate(w, 27, 3); wprintf(w, "%s ", P_STATLINE); break; default: break; } }}/* * Save the configuration. */void vdodflsave(){ dodflsave();}/* * Save the configuration. */int dodflsave(){ FILE *fp; /* Root saves new configuration */ if (real_uid == 0) { if ((fp = fopen(parfile, "w")) == (FILE *)NULL) { werror("Cannot write to %s", parfile); return(-1); } writepars(fp, 1); fclose(fp); werror("Configuration saved"); } else { /* Mortals save their own configuration */ if ((fp = sfopen(pparfile, "w")) == (FILE *)NULL) { werror("Cannot write to %s", pparfile); return (-1); } writepars(fp, 0); fclose(fp); werror("Configuration saved"); }#if _HAVE_MACROS if (domacsave() < 0) /* fmg - something went wrong... */ return(-1);#endif return(0);}#if _HAVE_MACROS/* * Save the macros. (fmg) */int domacsave(){ FILE *fp; /* fmg - do some basic silly-mortal checks and allow for recovery */ if (!strcmp(P_MACCHG,"CHANGED")) { if (strlen(P_MACROS) == 0) { /* fmg - they might want to know... */ werror("ERROR: Macros have changed but no filename is set!"); return(-1); } else { if ((fp = sfopen(pfix_home(P_MACROS), "w")) == (FILE *)NULL) { werror("Cannot write macros file %s", pfix_home(P_MACROS)); return(-1); } writemacs(fp, 0); fclose(fp); werror("Macros saved"); strcpy(P_MACCHG,"SAVED"); /* fmg - reset after save */ return(0); } } return(0);}#endif /* * Save the configuration, ask a name for it. */static void donamsave(){ char ifile[128]; char *s; if (real_uid != 0) { werror("You are not allowed to create a configuration"); return; } ifile[0] = 0; s = input("Give name to save this configuration?", ifile); if (s != (char *)0 && *s != 0) { sprintf(parfile, "%s/minirc.%s", LIBDIR, s); dodflsave(); }}static void (*funcs1[])() = { dopath, doproto, doserial, domodem, doscrkeyb, vdodflsave, donamsave, NIL_FUN, NIL_FUN};char some_string[32];static char *menu1[] = { "Filenames and paths", "File transfer protocols", "Serial port setup", "Modem and dialing", "Screen and keyboard", some_string, "Save setup as..", "Exit", "Exit from Minicom", MENU_END};int config(setup)int setup;{ int c; char *s; /* Find out extension of parameter file */ s = parfile + strlen(LIBDIR) + 8; sprintf(some_string, "Save setup as %s", s); if (!setup) menu1[8] = MENU_END; c = wselect(13, 10, menu1, funcs1, "configuration", stdattr, mfcolor, mbcolor); if (c == 9) return(1); return(0);}/* fmg 1/11/94 Color names for menu */static char *J_col[] = { "BLACK", "RED", "GREEN", "YELLOW", "BLUE", "MAGENTA", "CYAN", "WHITE", };static char *speeds[] = { "300", "1200", "2400", "9600", "19200", "38400", "57600", "115200", "Curr" };/* * Ask user for Baudrate, Bits and Parity */void get_bbp(ba, bi, pa, curr_ok)char *ba;char *bi;char *pa;int curr_ok;{ int c; WIN *w; int x, y; int max = m_getmaxspd(); w = wopen(21, 4, 60, 20, BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1); wtitle(w, TMID, "Comm Parameters"); dirflush = 0; wlocate(w, 0, 3); wputs(w, " Speed Parity Data\n\n"); wputs(w, " A: 300 J: None Q: 5\n"); wputs(w, " B: 1200 K: Even R: 6\n"); wputs(w, " C: 2400 L: Odd S: 7\n"); wputs(w, " D: 9600 M: Mark T: 8\n"); if (max > 96) wputs(w, " E: 19200 N: Space\n"); else wputs(w, " N: Space\n"); if (max > 192) wputs(w, " F: 38400\n"); else wputs(w, "\n"); if (max > 384) wputs(w, " G: 57600\n"); else wputs(w, "\n"); if (max > 576) wputs(w, " H: 115200 O: 8-N-1\n"); else wputs(w, " O: 8-N-1\n"); if (curr_ok) wputs(w, " I: Current P: 7-E-1\n"); else wputs(w, " P: 7-E-1\n"); wputs(w, "\n Choice, or <Enter> to exit? "); x = w->curx; y = w->cury; bi[1] = 0; pa[1] = 0; wredraw(w, 1); while(1) { wlocate(w, 1, 1); wprintf(w, "Current: %5s %s%s1 ", ba, bi, pa); wlocate(w, x, y); wflush(); c = wxgetch(); if (c >= 'a') c -= 32; switch(c) { case 'H': if (max < 1152) break; case 'G': if (max < 576) break; case 'F': if (max < 384) break; case 'E': if (max < 192) break; case 'A': case 'B': case 'C': case 'D': case 'I': if (c == 'I' && !curr_ok) break; strcpy(ba, speeds[c - 'A']); break; case 'J': pa[0] = 'N'; break; case 'K': pa[0] = 'E'; break; case 'L': pa[0] = 'O'; break; case 'M': pa[0] = 'M'; break; case 'N': pa[0] = 'S'; break; case 'O': pa[0] = 'N'; bi[0] = '8'; break; case 'P': pa[0] = 'E'; bi[0] = '7'; break; case 'Q': bi[0] = '5'; break; case 'R': bi[0] = '6'; break; case 'S': bi[0] = '7'; break; case 'T': bi[0] = '8'; break; case 27: case '\n': case '\r': dirflush = 1; wclose(w, 1); return; default: break; } }}#if _HAVE_MACROS/* * fmg - part of the Macros menu, "[none]" beats (null) :-) */static void out_mac(w, s, n)WIN *w;char *s;char n;{ wprintf(w, " %c : %.67s\n", n, s ? s : "[none]");}/* * fmg - Macros editing window */void domacros(){ WIN *w; int clr = 1; int Jch='1', Jm=0; /* fmg - ok, so I was lazy.. */ w = wopen(3, 7, 75, 21 , BDOUBLE, stdattr, mfcolor, mbcolor, 0, 0, 1); wtitle(w, TMID, "F1 to F10 Macros"); wprintf(w, "\n"); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); out_mac(w,mmacs[Jm++].value, Jch++); Jch = 'A'; /* fmg - ran out of single digits... */ out_mac(w,mmacs[Jm++].value, Jch++); wredraw(w, 1); while(1) { wlocate(w, 1, 14); wputs(w, " (LEGEND: ^M = C-M, ^L = C-L, ^G = C-G, ^R = C-R, ^~ = pause 1 second)"); if (clr) { wlocate(w, 1, 12); wputs(w, "Change which setting? (Esc to exit) "); wclreol(w); clr = 0; } else wlocate(w, 38, 12); switch(rwxgetch()) { case '\n': wclose(w, 1); return; case '1': mgets(w, 5, 1, P_MAC1, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ...I'm ashamed */ wlocate(w, 0, 1); out_mac(w,P_MAC1, '1'); break; case '2': mgets(w, 5, 2, P_MAC2, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... really, I am */ wlocate(w, 0, 2); out_mac(w,P_MAC2, '2'); break; case '3': mgets(w, 5, 3, P_MAC3, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... this is the */ wlocate(w, 0, 3); out_mac(w,P_MAC3, '3'); break; case '4': mgets(w, 5, 4, P_MAC4, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... first entry on */ wlocate(w, 0, 4); out_mac(w,P_MAC4, '4'); break; case '5': mgets(w, 5, 5, P_MAC5, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... my TODO list. */ wlocate(w, 0, 5); out_mac(w,P_MAC5, '5'); break; case '6': mgets(w, 5, 6, P_MAC6, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... and, come to think */ wlocate(w, 0, 6); out_mac(w,P_MAC6, '6'); break; case '7': mgets(w, 5, 7, P_MAC7, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... of it, I no longer */ wlocate(w, 0, 7); out_mac(w,P_MAC7, '7'); break; case '8': mgets(w, 5, 8, P_MAC8, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... even use this... */ wlocate(w, 0, 8); out_mac(w,P_MAC8, '8'); break; case '9': mgets(w, 5, 9, P_MAC9, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... [sigh] */ wlocate(w, 0, 9); out_mac(w,P_MAC9, '9'); break; case 'A': mgets(w, 5, 10, P_MAC10, 72, MAC_LEN); strcpy(P_MACCHG,"CHANGED"); /* fmg - ... [sigh] */ wlocate(w, 0, 10); out_mac(w,P_MAC10, 'A'); break; } }}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -