⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 config.c

📁 VT100终端程序
💻 C
📖 第 1 页 / 共 3 页
字号:
  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 + -