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

📄 config.c

📁 小型通讯程序的C语言源程序的C语言源程序库
💻 C
📖 第 1 页 / 共 2 页
字号:
  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 + -