📄 config.c
字号:
dirflush = 0; wtitle(w, TMID, "Modem and dialing parameter setup"); wprintf(w, "\n"); wprintf(w, " A - Init string ......... %.48s\n", P_MINIT); wprintf(w, " B - Reset string ........ %.48s\n", P_MRESET); wprintf(w, " C - Dialing prefix #1.... %.48s\n", P_MDIALPRE); wprintf(w, " D - Dialing suffix #1.... %.48s\n", P_MDIALSUF); wprintf(w, " E - Dialing prefix #2.... %.48s\n", P_MDIALPRE2); wprintf(w, " F - Dialing suffix #2.... %.48s\n", P_MDIALSUF2); wprintf(w, " G - Dialing prefix #3.... %.48s\n", P_MDIALPRE3); wprintf(w, " H - Dialing suffix #3.... %.48s\n", P_MDIALSUF3); wprintf(w, " I - Connect string ...... %.48s\n", P_MCONNECT); wprintf(w, " J - No connect strings .. %-20.20s %.20s\n", P_MNOCON1, P_MNOCON2); wlocate(w, 27, 11); wprintf(w, "%-20.20s %.20s\n", P_MNOCON3, P_MNOCON4); wprintf(w, " K - Hang-up string ...... %.48s\n", P_MHANGUP); wprintf(w, " L - Dial cancel string .. %.48s\n", P_MDIALCAN); wprintf(w, "\n"); wprintf(w, " M - Dial time ........... %.3s\n", P_MDIALTIME); wprintf(w, " N - Delay before redial . %.3s\n", P_MRDELAY); wprintf(w, " O - Number of tries ..... %.3s\n", P_MRETRIES); wlocate(w, 34, 15); wprintf(w, " P - Auto baud detect .... %s\n", P_MAUTOBAUD); wlocate(w, 34, 16); wprintf(w, " Q - Drop DTR to hangup .. %s\n", P_MDROPDTR); wlocate(w, 34, 17); wprintf(w, " R - Modem has DCD line .. %s\n", P_HASDCD); wlocate(w, 1, 19); wprintf(w, " Change which setting? "); x = w->curx; y = w->cury; wprintf(w, " (Return or Esc to exit)"); wredraw(w, 1); while(1) { wlocate(w, x, y); wflush(); c = rgetch(); ypos = 1; maxl = 64; switch(c) { case 'M': case 'N': case 'O': ypos++; maxl = 4; case 'K': case 'L': ypos -= 2; c += 3; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': /* Calculate adress of string tomodify */ str = P_MINIT + (c - 'A') * sizeof(struct pars); pgets(w, 27, ypos + (c - 'A'), str, maxl, maxl); break; case 'J': /* Walk through all four */ pgets(w, 27, 10, P_MNOCON1, 20, 64); pgets(w, 49, 10, P_MNOCON2, 20, 64); pgets(w, 27, 11, P_MNOCON3, 20, 64); pgets(w, 49, 11, P_MNOCON4, 20, 64); break; case 'P': psets(P_MAUTOBAUD, yesno(P_MAUTOBAUD[0] == 'N')); wlocate(w, 61, 15); wputs(w, P_MAUTOBAUD); break; case 'Q': psets(P_MDROPDTR, yesno(P_MDROPDTR[0] == 'N')); wlocate(w, 61, 16); wputs(w, P_MDROPDTR); break; case 'R': psets(P_HASDCD, yesno(P_HASDCD[0] == 'N')); wlocate(w, 61, 17); wputs(w, P_HASDCD); break; case '\n': dirflush = 1; wclose(w, 1); return; default: break; } }}/* * Screen and keyboard menu. */static void doscrkeyb(){ WIN *w; int c; int clr = 1; char buf[16]; w = wopen(15, 8, 65, 14, BDOUBLE, stdattr, MFG, MBG, 0, 0, 1); wtitle(w, TMID, "Screen and keyboard"); wprintf(w, "\n A - Command key is : %s\n", P_ESCAPE); wprintf(w, " B - Backspace key sends : %s\n", P_BACKSPACE); wprintf(w, " C - Status line is : %s", P_STATLINE); wredraw(w, 1); while(1) { if (clr) { wlocate(w, 2, 5); wputs(w, "Change which setting? (Esc to exit) "); wclreol(w); clr = 0; } else wlocate(w, 39, 5); switch(rgetch()) { case '\n': wclose(w, 1); return; case 'A': wlocate(w, 2, 5);#if defined (_MINIX) || defined (_COHERENT) || defined (linux) wputs(w, "Press new escape key, SPACE for ALT: "); if ((c = getch()) == ' ') strcpy(buf, "ALT"); else sprintf(buf, "^%c", (c & 0x1f) + 'A' - 1);#else wputs(w, "Press new escape key, SPACE for MetaKey: "); if ((c = getch()) == ' ') strcpy(buf, "meta key"); else sprintf(buf, "^%c", (c & 0x1f) + 'A' - 1);#endif psets(P_ESCAPE, buf); wlocate(w, 27, 1); wputs(w, P_ESCAPE); if (c != ' ') wputs(w, " "); clr = 1; if (st) { /* * If minicom was called with the '-s' option, * keyserv does not run yet. We can see this * because the status line is not initialized * at that time, either. */ keyboard(KSETESC, P_ESCAPE[0] == '^' ? P_ESCAPE[1] & 31 : 128); show_status(); } alt_override = 0; 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); if (st) keyboard(KSETBS, P_BACKSPACE[0] == 'B' ? 8 : 128); 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 + (terminal == MINIX)) tempst = 0; } wlocate(w, 27, 3); wprintf(w, "%s ", P_STATLINE); break; } }}/* * Save the configuration. */static void dodflsave(){ FILE *fp; int am; /* Root saves new configuration */ if (real_uid == 0) { if ((fp = fopen(parfile, "w")) == (FILE *)NULL) { werror("Cannot write to %s", parfile); return; } writepars(fp, 1); } else { /* Mortals save their own configuration */ if ((am = waccess(pparfile)) < 0 || (fp = fopen(pparfile, "w")) == (FILE *)NULL) { werror("Cannot write to %s", pparfile); return; }#ifndef DEBUG#ifndef HAS_FCHOWN if (am == A_OK_NOTEXIST) chown(pparfile, real_uid, real_gid);#else if (am == A_OK_NOTEXIST) fchown(fileno(fp), real_uid, real_gid);#endif writepars(fp, 0);#endif } fclose(fp); werror("Configuration saved");}/* * 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, dodflsave, 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, MFG, MBG); if (c == 9) return(1); return(0);}static char *speeds[] = { "300", "1200", "2400", "4800", "9600", "19200", "38400", };/* * Ask user for Baudrate, Bits and Parity */void get_bbp(ba, bi, pa)char *ba;char *bi;char *pa;{ int c; WIN *w; int x, y; w = wopen(21, 6, 60, 19, BDOUBLE, stdattr, MFG, MBG, 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 H: None M: 5\n"); wputs(w, " B: 1200 I: Even N: 6\n"); wputs(w, " C: 2400 J: Odd O: 7\n"); wputs(w, " D: 4800 P: 8\n"); wputs(w, " E: 9600\n"); wputs(w, " F: 19200 K: 8-N-1\n"); wputs(w, " G: 38400 L: 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 = getch(); if (c >= 'a') c -= 32; switch(c) { case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': strcpy(ba, speeds[c - 'A']); break; case 'H': pa[0] = 'N'; break; case 'I': pa[0] = 'E'; break; case 'J': pa[0] = 'O'; break; case 'K': pa[0] = 'N'; bi[0] = '8'; break; case 'L': pa[0] = 'E'; bi[0] = '7'; break; case 'M': bi[0] = '5'; break; case 'N': bi[0] = '6'; break; case 'O': bi[0] = '7'; break; case 'P': bi[0] = '8'; break; case 27: case '\n': case '\r': dirflush = 1; wclose(w, 1); return; default: break; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -