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

📄 config.c

📁 小型通讯程序的C语言源程序的C语言源程序库
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * This file is part of the Minicom Communications Program, * written by Miquel van Smoorenburg 1991/1992/1993. */#include <sys/types.h>#if defined _POSIX_SOURCE || defined(_BSD43)#  include <unistd.h>#  include <stdlib.h>#endif#ifdef _MINIX#  undef NULL			/* Kludge */#endif#include <stdio.h>#include <setjmp.h>#ifdef _MINIX#  undef NULL			/* Kludge */#endif#include <string.h>#if defined (_MINIX) && !defined(NULL)#  define NULL ((void *)0)	/* Kludge */#endif#include <sys/stat.h>#if defined(_BSD43) || defined (_SYSV)#  define NOSTREAMS#  include <sys/file.h>#endif#include <ctype.h>#include "window.h"#include "minicom.h"#include "configsym.h"#include "keyboard.h"#include "vt100.h"/* * Configure minicom. *//* * Read in parameters. */void read_parms(){  FILE *fp;  int f;  char buf[64];  char *p;  /* Read global parameters */  if ((fp = fopen(parfile, "r")) == (FILE *)NULL) {  	if (real_uid == 0) {  		fprintf(stderr,  	"minicom: WARNING: configuration file not found, using defaults\n");  		sleep(1);#ifdef _ACK		/* Initialize structure by hand */		readpars((FILE *)NULL, 1);#endif  		return;  	}  	fprintf(stderr,	"minicom: there is no global configuration file %s\n", parfile);  	fprintf(stderr, "Ask your sysadm to create one (with minicom -s).\n");  	exit(1);  }  readpars(fp, 1);  fclose(fp);  /* Read personal parameters */  if ((fp = fopen(pparfile, "r")) != (FILE *)NULL) {	readpars(fp, 0);	fclose(fp);  }  /* This code is to use old configuration files. */  for(f = PROTO_BASE; f < MAXPROTO; f++) {	if (P_PNAME(f)[0] && P_PIORED(f) != 'Y' && P_PIORED(f) != 'N') {		strcpy(buf, P_PNAME(f) - 2);		strcpy(P_PNAME(f), buf);		P_PIORED(f) = 'Y';		P_PFULL(f) = 'N';	}  }  p = basename(P_LOCK);  if (strncmp(p, "LCK", 3) == 0) *p = 0;}/* * See if we have write access to a file. * If it is not there, see if the directory is writable. */int waccess(s)char *s;{  char *p;  char buf[128];  struct stat stt;  /* We use stat instead of access(s, F_OK) because I couldn't get   * that to work under BSD 4.3 ...   */  if (stat(s, &stt) == 0) {	if (access(s, W_OK) == 0)		return(A_OK_EXIST);	return(-1);  }  strcpy(buf, s);  if((p = strrchr(buf, '/')) == (char *)NULL)  	strcpy(buf, ".");  else  	*p = '\0';  if (access(buf, W_OK) == 0)	return(A_OK_NOTEXIST);  return(-1);}/* * Read in a string, but first check to see if it's * allowed to do so. */static void pgets(w, x, y, s, len, maxl)WIN *w;int x, y;char *s;int len;int maxl;{  struct pars *p = (struct pars *)s;  if ((p->flags & PRIVATE) && real_uid != 0) {  	werror("You are not allowed to change this parameter");  	return;  }  wlocate(w, x, y);  (void) wgets(w, s, len, maxl);  p->flags |= CHANGED;}/* * Mark a variable as changed. */static void markch(s)char *s;{  struct pars *p = (struct pars *)s;  p->flags |= CHANGED;}/* * Set a string to a given value, but only if we're allowed to. */static void psets(s, w)char *s, *w;{  struct pars *p = (struct pars *)s;  if ((p->flags & PRIVATE) && real_uid != 0) {  	werror("You are not allowed to change this parameter");  	return;  }  strcpy(s, w);  p->flags |= CHANGED;}/* * Get a a character from the keyboard. Translate lower * to uppercase and '\r' to '\n'. */static int rgetch(){  int c;  c = getch();  if (islower(c)) c = toupper(c);  if (c == '\n' || c == '\r' || c == '\033') return('\n');  return(c);}static void dopath(){  WIN *w;  int c;    w = wopen(5, 5, 75, 11, BDOUBLE, stdattr, MFG, MBG, 0, 0, 1);  wprintf(w, " A - Download directory : %.44s\n", P_DOWNDIR);  wprintf(w, " B -   Upload directory : %.44s\n", P_UPDIR);  wprintf(w, " C -   Script directory : %.44s\n", P_SCRIPTDIR);  wprintf(w, " D -     Script program : %.44s\n", P_SCRIPTPROG);  wprintf(w, " E -     Kermit program : %.44s\n", P_KERMIT);  wlocate(w, 4, 7);  wputs(w, "Change which setting? ");  wredraw(w, 1);  while(1) {      wlocate(w, 26, 7);      c = rgetch();      switch(c) {  	case '\n':  		wclose(w, 1);  		return;  	case 'A':  		pgets(w, 26, 0, P_DOWNDIR, 64, 64);  		break;  	case 'B':  		pgets(w, 26, 1, P_UPDIR, 64, 64);  		break;  	case 'C':  		pgets(w, 26, 2, P_SCRIPTDIR, 64, 64);  		break;  	case 'D':  		pgets(w, 26, 3, P_SCRIPTPROG, 64, 64);  		break;  	case 'E':  		pgets(w, 30, 0, P_KERMIT, 64, 64);  		break;  	default:  		break;      }  }}char *yesno(k)int k;{  return(k ? "Yes" : "No ");}/* * Input the definition of an up/download protocol. */static void inputproto(w, n)WIN *w;int n;{  int c = 0;  mpars[PROTO_BASE + n].flags |= CHANGED;  if (P_PNAME(n)[0] == '\0') {  	P_PNN(n) = 'Y';  	P_PUD(n) = 'U';	P_PFULL(n) = 'N';	P_PPROG(n)[0] = 0;	P_PIORED(n) = 'Y';  	wlocate(w, 4, n+1);  	wputs(w, "       ");  }  wlocate(w, 4, n+1);  (void ) wgets(w, P_PNAME(n), 10, 64);  pgets(w, 15, n+1, P_PPROG(n), 31, 64);  do {	wlocate(w, 48, n+1);	wprintf(w, "%c", P_PNN(n));	c = rgetch();	if (c == 'Y') P_PNN(n) = 'Y';	if (c == 'N') P_PNN(n) = 'N';  } while(c != '\r' && c != '\n');  do {	wlocate(w, 56, n+1);	wprintf(w, "%c", P_PUD(n));	c = rgetch();	if (c == 'U') P_PUD(n) = 'U';	if (c == 'D') P_PUD(n) = 'D';  } while(c != '\r' && c != '\n');  do {	wlocate(w, 64, n+1);	wprintf(w, "%c", P_PFULL(n));	c = rgetch();	if (c == 'Y') P_PFULL(n) = 'Y';	if (c == 'N') P_PFULL(n) = 'N';  } while(c != '\r' && c != '\n');  do {	wlocate(w, 72, n+1);	wprintf(w, "%c", P_PIORED(n));	c = rgetch();	if (c == 'Y') P_PIORED(n) = 'Y';	if (c == 'N') P_PIORED(n) = 'N';  } while(c != '\r' && c != '\n');}static void doproto(){  WIN *w;  int f, c;  w = wopen(1, 4, 78, 18, BDOUBLE, stdattr, MFG, MBG, 0, 0, 1);  wputs(w, "     Name             Program");  wlocate(w, 44, 0);  wputs(w, "Need name Up/Down FullScr IO-Red.");  for(f = 0; f < 12; f++) {     wlocate(w, 1, f+1);     if (P_PNAME(f)[0])  	wprintf(w, "%c  %-10.10s %-31.31s  %c       %c       %c       %c",		'A' + f,  		P_PNAME(f), P_PPROG(f),  		P_PNN(f), P_PUD(f),		P_PFULL(f), P_PIORED(f));     else        wprintf(w, "%c    -", 'A' + f);  }  wlocate(w, 3, 14);  wputs(w, "Change which setting? (SPACE to delete) ");  wredraw(w, 1);  do {  	wlocate(w, 43, 14);  	c = rgetch();  	if (c >= 'A' && c <= 'L') inputproto(w, c - 'A');  	if (c == ' ') {  		wlocate(w, 3, 14);  		wputs(w, "Delete which protocol? ");  		wclreol(w);  		c = rgetch();  		if (c >= 'A' && c <= 'L') {  			P_PNAME(c - 'A')[0] = '\0';  			mpars[PROTO_BASE + (c - 'A')].flags |= CHANGED;  			wlocate(w, 3, c - 'A' + 1);  			wclreol(w);  			wputs(w, "   -");  		}		wlocate(w, 3, 14);		wputs(w, "Change which setting? (SPACE to delete) ");		c = ' ';	}  } while(c != '\n');  wclose(w, 1);}static void doserial(){  WIN *w;  w = wopen(5, 5, 75, 11, BDOUBLE, stdattr, MFG, MBG, 0, 0, 1);  wprintf(w, " A -    Serial Device : %.46s\n", P_PORT);  wprintf(w, " B - Lockfile Location: %.46s\n", P_LOCK);  wprintf(w, " C -   Callin Program : %.46s\n", P_CALLIN);  wprintf(w, " D -  Callout Program : %.46s\n", P_CALLOUT);  wprintf(w, " E -    Baud/Par/Bits : %s %s%s1\n", P_BAUDRATE,  	P_BITS, P_PARITY);  wlocate(w, 4, 6);  wputs(w, "Change which setting? ");  wredraw(w, 1);  while(1) {      wlocate(w, 26, 6);      switch(rgetch()) {  	case '\n':  		wclose(w, 1);  		return;  	case 'A':  		pgets(w, 24, 0, P_PORT, 64, 64);  		break;  	case 'B':  		pgets(w, 24, 1, P_LOCK, 64, 64);  		break;  	case 'C':  		pgets(w, 24, 2, P_CALLIN, 64, 64);  		break;  	case 'D':  		pgets(w, 24, 3, P_CALLOUT, 64, 64);  		break;  	case 'E':  		get_bbp(P_BAUDRATE, P_BITS, P_PARITY);  		if (portfd >= 0)			m_setparms(portfd, P_BAUDRATE, P_PARITY, P_BITS);  		wlocate(w, 24, 4);		wprintf(w, "%s %s%s1  \n", P_BAUDRATE, P_BITS, P_PARITY);		if (st != NIL_WIN) mode_status();		markch(P_BAUDRATE);		markch(P_BITS);		markch(P_PARITY);		break;  	default:  		break;      }	  }}static void domodem(){  WIN *w;  char *str;  int c, x, y, ypos, maxl;  w = wopen(2, 2, 77, 21, BDOUBLE, stdattr, MFG, MBG, 0, 0, 1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -