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

📄 ckuus7.c

📁 linux终端仿真程序
💻 C
📖 第 1 页 / 共 5 页
字号:
	      tcharset = TC_1LATIN;#ifndef NOLATIN2	    else if (fcharset == FC_HUASCII ||		     fcharset == FC_2LATIN  ||		     fcharset == FC_CP852		     )	      tcharset = TC_2LATIN;#endif /* NOLATIN2 */#ifndef NOCYRIL	    else if (fcharset == FC_CYRILL ||		     fcharset == FC_CP866  ||		     fcharset == FC_KOI7   ||		     fcharset == FC_KOI8		     )	      tcharset = TC_CYRILL;#endif /* NOCYRIL */#ifndef NOKANJI	    else if (fcharset == FC_JIS7  ||		     fcharset == FC_SHJIS ||		     fcharset == FC_JEUC  ||		     fcharset == FC_JDEC		     )	      tcharset = TC_JEUC;#endif /* NOKANJI */#ifndef NOHEBREW	    else if (fcharset == FC_HE7 ||		     fcharset == FC_HEBREW ||		     fcharset == FC_CP862		     )	      tcharset = TC_HEBREW;#endif /* NOKANJI */	}#endif /* MAC */	return(success = 1);#endif /* NOCSETS */      case XYFILD:			/* Display */	return(doxdis());      case XYFILA:			/* End-of-line */#ifdef NLCHAR	s = "";	if (NLCHAR == 015)	  s = "cr";	else if (NLCHAR == 012)	  s = "lf";	if ((x = cmkey(eoftab, neoftab,		       "local text-file line terminator",s,xxstring)) < 0)	  return(x);#else	if ((x = cmkey(eoftab, neoftab,		       "local text-file line terminator","crlf",xxstring)) < 0)	  return(x);#endif /* NLCHAR */	if ((z = cmcfm()) < 0) return(z);	feol = (CHAR) x;	return(success = 1);      case XYFILN:			/* Names */	if ((x = cmkey(fntab,nfntab,"how to handle filenames","converted",		       xxstring)) < 0)	  return(x);	if ((z = cmcfm()) < 0) return(z);	if (rmsflg) {	    sprintf(tmpbuf,"%d",1 - x);	    sstate = setgen('S', "301", tmpbuf, "");	    return((int) sstate);	} else {	    ptab[protocol].fncn = x;	/* Set structure */	    fncnv = x;			/* Set variable */	    f_save = x;			/* Set and set "permanent" variable */	    return(success = 1);	}      case XYFILR:			/* Record length */	sprintf(tmpbuf,"%d",DLRECL);	if ((y = cmnum("file record length",tmpbuf,10,&z,xxstring)) < 0)	  return(y);	if ((x = cmcfm()) < 0) return(x);	if (rmsflg) {	    sprintf(tmpbuf,"%d",z);	    sstate = setgen('S', "312", tmpbuf, "");	    return((int) sstate);	} else {	    frecl = z;	    return(success = 1);	}#ifdef COMMENT      case XYFILO:			/* Organization */	if ((x = cmkey(forgtab,nforg,"file organization","sequential",		       xxstring)) < 0)	  return(x);	if ((y = cmcfm()) < 0) return(y);	if (rmsflg) {	    sprintf(tmpbuf,"%d",x);	    sstate = setgen('S', "314", tmpbuf, "");	    return((int) sstate);	} else {	    forg = x;	    return(success = 1);	}	#endif /* COMMENT */#ifdef COMMENT				/* Not needed */      case XYFILF:			/* Format */	if ((x = cmkey(frectab,nfrec,"file record format","stream",		       xxstring)) < 0)	  return(x);	if ((y = cmcfm()) < 0) return(y);	if (rmsflg) {	    sprintf(tmpbuf,"%d",x);	    sstate = setgen('S', "313", tmpbuf, "");	    return((int) sstate);	} else {	    frecfm = x;	    return(success = 1);	}#endif /* COMMENT */#ifdef COMMENT      case XYFILP:			/* Printer carriage control */	if ((x = cmkey(fcctab,nfcc,"file carriage control","newline",		       xxstring)) < 0)	  return(x);	if ((y = cmcfm()) < 0) return(y);	if (rmsflg) {	    sprintf(tmpbuf,"%d",x);	    sstate = setgen('S', "315", tmpbuf, "");	    return((int) sstate);	} else {	    fcctrl = x;	    return(success = 1);	}	#endif /* COMMENT */      case XYFILT:			/* Type */	if ((x = cmkey(rmsflg ? rfttab  : fttab,		       rmsflg ? nrfttyp : nfttyp,		       "type of file transfer","text",xxstring)) < 0)	  return(x);#ifdef VMS        /* Allow VMS users to choose record format for binary files */        if ((x == XYFT_B) && (rmsflg == 0)) {	    if ((x = cmkey(fbtab,nfbtyp,"VMS record format","fixed",			   xxstring)) < 0)	      return(x);	}#endif /* VMS */	if ((y = cmcfm()) < 0) return(y);	binary = x;	b_save = x;#ifdef MAC	(void) mac_setfildflg(binary);#endif /* MAC */	if (rmsflg) {	    char buf[4];		/* Allow for LABELED in VMS & OS/2 */	    sprintf(buf,"%d",x);	    sstate = setgen('S', "300", buf, "");	    return((int) sstate);	} else {	    return(success = 1);	}      case XYFILX:			/* Collision Action */	if ((x = cmkey(colxtab,ncolx,"Filename collision action","backup",		       xxstring)) < 0)	  return(x);	if ((y = cmcfm()) < 0) return(y);	fncact = x;	ptab[protocol].fnca = x;	if (rmsflg) {	    sprintf(tmpbuf,"%d",fncact);	    sstate = setgen('S', "302", tmpbuf, "");	    return((int) sstate);	} else {	    if (fncact == XYFX_R) warn = 1; /* SET FILE WARNING implications */	    if (fncact == XYFX_X) warn = 0; /* ... */	    return(success = 1);	}      case XYFILW:			/* Warning/Write-Protect */	if ((x = seton(&warn)) < 0) return(x);	if (warn)	  fncact = XYFX_R;	else	  fncact = XYFX_X;	return(success = 1);#ifdef CK_LABELED      case XYFILL:			/* LABELED FILE parameters */	if ((x = cmkey(lbltab,nlblp,"Labeled file feature","",		       xxstring)) < 0)	  return(x);	if ((success = seton(&y)) < 0)	  return(success);	if (y)				/* Set or reset the selected bit */	  lf_opts |= x;			/* in the options bitmask. */	else	  lf_opts &= ~x;	return(success);#endif /* CK_LABELED */      case XYFILI:			/* INCOMPLETE */	return(doprm(XYIFD,rmsflg));#ifdef CK_TMPDIR      case XYFILG: {			/* Download directory */	  int x;	  char *s;#ifdef ZFNQFP	  struct zfnfp * fnp;#endif /* ZFNQFP */#ifdef MAC	  char temp[34];#endif /* MAC */#ifdef GEMDOS	  if ((x = cmdir("Name of local directory, or carriage return",			 "",&s,			 NULL)) < 0 ) {	      if (x != -3)		return(x);	  }#else#ifdef OS2	  if ((x = cmdir("Name of PC disk and/or directory,\n\       or press the Enter key to use current directory",			 "",&s,xxstring)) < 0 ) {	      if (x != -3)		return(x);	  }#else#ifdef MAC	  strncpy(temp,homdir,32);	  x = strlen(temp);	  if (x > 0) if (temp[x-1] != ':') { temp[x] = ':'; temp[x+1] = NUL; }	  if ((x = cmtxt("Name of Macintosh volume and/or folder,\n\ or press the Return key for the desktop on the boot disk",			 temp,&s, xxstring)) < 0 )	    return(x);#else	  if ((x = cmdir("Name of local directory, or carriage return",			 "", &s, xxstring)) < 0 ) {	      if (x != -3)		return(x);	  }#endif /* MAC */#endif /* OS2 */#endif /* GEMDOS */	  debug(F110,"download dir",s,0);#ifndef MAC	  if (x == 2) {	      printf("?Wildcards not allowed in directory name\n");	      return(-9);	  }#endif /* MAC */#ifdef ZFNQFP	  if (fnp = zfnqfp(s,TMPBUFSIZ - 1,tmpbuf)) {	      if (fnp->fpath)		if ((int) strlen(fnp->fpath) > 0)		  s = fnp->fpath;	  }	  debug(F110,"download zfnqfp",s,0);#endif /* ZFNQFP */	  strcpy(line,s);		/* Make a safe copy */	  s = line;#ifndef MAC	  if ((x = cmcfm()) < 0)	/* Get confirmation */	    return(x);#endif /* MAC */	  x = strlen(line);#ifdef datageneral	  if (line[x-1] == ':')		/* homdir ends in colon, */	    line[x-1] = NUL;		/* and "dir" doesn't like that... */#endif /* datageneral */	 	  if (dldir)	    free(dldir);	  dldir = NULL;	  if (x && (dldir = malloc(x + 1)))	    strcpy(dldir, line);	  return(success = 1);      }#endif /* CK_TMPDIR */      case XYFILY:	return(setdest());      default:	printf("?unexpected file parameter\n");	return(-2);    }}#ifdef OS2/* MS-DOS KERMIT compatibility modes */intsetmsk() {    if ((y = cmkey(msktab,nmsk,"MS-DOS Kermit compatibility mode",                     "keycodes",xxstring)) < 0) return(y);    switch ( y ) {#ifdef COMMENT      case MSK_COLOR:        return(seton(&mskcolors));#endif /* COMMENT */      case MSK_KEYS:	return(seton(&mskkeys));      default:				/* Shouldn't get here. */        return(-2);    }}#endif#ifndef NOLOCALintsettrm() {    int i = 0;#ifdef OS2    extern int colorreset, erasemode;#endif /* OS2 */    if ((y = cmkey(trmtab,ntrm,"", "",xxstring)) < 0) return(y);#ifdef MAC    printf("\n?Sorry, not implemented yet.  Please use the Settings menu.\n");    return(-9);#else    switch (y) {      case XYTBYT:			/* SET TERMINAL BYTESIZE */	if ((y = cmnum("bytesize for terminal connection","8",10,&x,		       xxstring)) < 0)	  return(y);	if (x != 7 && x != 8) {	    printf("\n?The choices are 7 and 8\n");	    return(success = 0);	}	if ((y = cmcfm()) < 0) return(y);	if (x == 7) cmask = 0177;	else if (x == 8) {	    cmask = 0377;	    parity = 0;	}        return(success = 1);      case XYTSO:			/* SET TERMINAL LOCKING-SHIFT */	return(seton(&sosi));      case XYTNL:			/* SET TERMINAL NEWLINE-MODE */	return(seton(&tnlm)); #ifdef OS2      case XYTCOL:	if ((x = cmkey(ttycoltab,ncolors,"","terminal",xxstring)) < 0) 	  return(x);	else if (x == TTCOLRES) {	    if ((y = cmkey(ttcolmodetab,ncolmode,			   "","default-color",xxstring)) < 0)	      return(y);	    if ((z = cmcfm()) < 0)	      return(z);	    colorreset = y;	    return(success = 1);	} else if (x == TTCOLERA) {	    if ((y = cmkey(ttcolmodetab,ncolmode,"",			   "current-color",xxstring)) < 0)	      return(y);	    if ((z = cmcfm()) < 0)	      return(z);	    erasemode = y;	    return(success=1);	} else {			/* No parse error */	    int fg = 0, bg = 0;	    fg = cmkey(ttyclrtab, nclrs,		       (x == TTCOLBOR ?			"color for screen border" :			"foreground color and then background color"),		       "lgray", xxstring);	    if (fg < 0)	      return(fg);	    if (x != TTCOLBOR) {		if ((bg = cmkey(ttyclrtab,nclrs,				"background color","blue",xxstring)) < 0)		  return(bg);	    }	    if ((y = cmcfm()) < 0)	      return(y);	    switch (x) {	      case TTCOLNOR:		colornormal = fg | bg << 4;		fgi = fg & 0x08;		bgi = bg & 0x08;		break;	      case TTCOLREV:		colorreverse = fg | bg << 4;		break;	      case TTCOLUND:   		colorunderline = fg | bg << 4;		break;	      case TTCOLGRP:		colorgraphic = fg | bg << 4;		break;	      case TTCOLDEB:		colordebug = fg | bg << 4;		break;	      case TTCOLSTA:		colorstatus = fg | bg << 4;		break;	      case TTCOLHLP:		colorhelp = fg | bg << 4;		break;	      case TTCOLBOR:		colorborder = fg;		break;	      case TTCOLSEL:		colorselect = fg | bg << 4;		break;	      default:		printf("%s - invalid\n",cmdbuf);		return(-9);		break;	    }	    scrninitialized[VTERM] = 0;	    VscrnInit(VTERM);	}	return(success = 1);      case XYTCUR:			/* SET TERMINAL CURSOR */	if ((x = cmkey(ttycurtab,ncursors,"","underline",xxstring)) < 0)	  return(x);	if ((y = cmcfm()) < 0) return(y);        tt_cursor = tt_cursor_usr = x;	return(success = 1);#endif /* OS2 */      case XYTTYP:			/* SET TERMINAL TYPE */#ifdef OS2	if ((x = cmkey(ttyptab,nttyp,"","vt320",xxstring)) < 0) 	  return(x);	if ((y = cmcfm()) < 0) 	  return(y);	settermtype(x,1);	return(success=1);#else  /* Not OS2 */	printf("\n Sorry, this version of C-Kermit does not support the SET TERMINAL TYPE\n");	printf(" command.  Type \"help set terminal\" for further information.\n");#endif /* OS2 */	return(success = 0);#ifdef OS2      case XYTARR:			/* SET TERMINAL ARROW-KEYS */	if ((x = cmkey(akmtab,2,"","",xxstring)) < 0) return(x);	if ((y = cmcfm()) < 0) return(y);	tt_arrow = x;			/* TTK_NORM / TTK_APPL; see ckuusr.h */	return(success = 1);      case XYTKPD:			/* SET TERMINAL KEYPAD-MODE */	if ((x = cmkey(kpmtab,2,"","",xxstring)) < 0) return(x);	if ((y = cmcfm()) < 0) return(y);	tt_keypad = x;			/* TTK_NORM / TTK_APPL; see ckuusr.h */	return(success = 1);      case XYTWRP:			/* SET TERMINAL WRAP */	return(seton(&tt_wrap));       case XYSCRS:	if ((y = cmnum("CONNECT scrollback buffer size, lines","2000",10,&x,		       xxstring)) < 0)	  return(y);	/* The max number of lines is the RAM  */

⌨️ 快捷键说明

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