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

📄 ckcpro.w

📁 C-Kermit源码。是使用串口/Modem和网络通讯的程序
💻 W
📖 第 1 页 / 共 5 页
字号:
#ifndef NOSERVER    char *n2;#ifdef CKSYSLOG    if (ckxsyslog >= SYSLG_PR && ckxlogging)      cksyslog(SYSLG_PR, 1, "server", "REMOTE DELETE", (char *)srvcmd);#endif /* CKSYSLOG */    if (!ENABLED(en_del)) {	errpkt((CHAR *)"REMOTE DELETE disabled");	RESUME;    } else {				/* DELETE is enabled */#ifdef IKSDB	if (ikdbopen) slotstate(what,"REMOTE DELETE", (char *)(srvcmd+2), "");#endif /* IKSDB */	if (!ENABLED(en_cwd)) {		/* but CWD is disabled */	    zstrip((char *)(srvcmd+2),&n2); /* and they included a pathname, */	    if (strcmp((char *)(srvcmd+2),n2)) { /* so refuse. */		errpkt((CHAR *)"Access denied");		RESUME;			/* Remember, this is not a goto! */	    }	} else if (isdir((char *)(srvcmd+2))) { /* A directory name? */	    errpkt((CHAR *)"It's a directory");	    RESUME;	}	if (state == generic) {		/* It's OK to go ahead. */	    int x;	    if ((x = snddel((char*)(srvcmd+2))) > 0) {		BEGIN ssinit;		/* If OK send results back */	    } else {			/* otherwise */		if (x < 0)		  errpkt((CHAR *)"File not found"); /* report failure */		else		  errpkt((CHAR *)"DELETE failed");		RESUME;			/* & return to server command wait */	    }	}    }#endif /* NOSERVER */}<generic>F {				/* FINISH */#ifndef NOSERVER#ifdef CKSYSLOG    if (ckxsyslog >= SYSLG_PR && ckxlogging)      cksyslog(SYSLG_PR, 1, "server", "FINISH", NULL);#endif /* CKSYSLOG */#ifdef IKSDB    if (ikdbopen) slotstate(what,"SERVER FINISH", "", "");#endif /* IKSDB */    if (!ENABLED(en_fin)) {	errpkt((CHAR *)"FINISH disabled");	RESUME;    } else {	ack();				/* Acknowledge */	xxscreen(SCR_TC,0,0L,"");	/* Display */	success = 1;	return(0);			/* Done */    }#endif /* NOSERVER */}<generic>X {				/* EXIT */#ifndef NOSERVER#ifdef CKSYSLOG    if (ckxsyslog >= SYSLG_PR && ckxlogging)      cksyslog(SYSLG_PR, 1, "server", "REMOTE EXIT", NULL);#endif /* CKSYSLOG */#ifdef IKSDB    if (ikdbopen) slotstate(what,"REMOTE EXIT", "", "");#endif /* IKSDB */    if (!ENABLED(en_xit)) {	errpkt((CHAR *)"EXIT disabled");	RESUME;    } else {	ack();				/* Acknowledge */	xxscreen(SCR_TC,0,0L,"");	/* Display */	doexit(GOOD_EXIT,xitsta);    }#endif /* NOSERVER */}<generic>L {				/* BYE (Logout) */#ifndef NOSERVER#ifdef CKSYSLOG    if (ckxsyslog >= SYSLG_PR && ckxlogging)      cksyslog(SYSLG_PR, 1, "server", "BYE", NULL);#endif /* CKSYSLOG */#ifdef IKSDB    if (ikdbopen) slotstate(what,"SERVER BYE", "", "");#endif /* IKSDB */    if (!ENABLED(en_bye)) {	errpkt((CHAR *)"BYE disabled");	RESUME;    } else {	ack();				/* Acknowledge */	success = 1;	msleep(750);			/* Give the ACK time to get out */	if (local)	  ttres();			/* Reset the terminal */	xxscreen(SCR_TC,0,0L,"");	/* Display */	doclean(1);			/* Clean up files, etc */#ifdef DEBUG	debug(F100,"C-Kermit BYE - Loggin out...","",0);	zclose(ZDFILE);#endif /* DEBUG */#ifdef IKSD#ifdef CK_LOGIN	if (inserver)	  ckxlogout();	else#endif /* CK_LOGIN */#endif /* IKSD */#ifdef TCPSOCKET#ifndef NOLISTEN	  if (network && tcpsrfd > 0 && !inserver)	    doexit(GOOD_EXIT,xitsta);	else#endif /* NOLISTEN */#endif /* TCPSOCKET */	  return(zkself());		/* Try to log self out */    }#endif /* NOSERVER */}<generic>H {				/* REMOTE HELP */#ifdef CKSYSLOG    if (ckxsyslog >= SYSLG_PR && ckxlogging)      cksyslog(SYSLG_PR, 1, "server", "REMOTE HELP", NULL);#endif /* CKSYSLOG */#ifdef IKSDB    if (ikdbopen) slotstate(what,"REMOTE HELP", "", "");#endif /* IKSDB */#ifndef NOSERVER    if (sndhlp(NULL)) {	BEGIN ssinit;			/* try to send it */    } else {				/* If not ok, */	errpkt((CHAR *)"Can't send help"); /* send error message instead */	RESUME;				/* and return to server command wait */    }#endif /* NOSERVER */}<generic>R {                            /* REMOTE RENAME */    rc = srv_rename();    debug(F101,"srv_rename","",rc);    if (rc > -1) return(rc);		/* (see below) */}<generic>K {                            /* REMOTE COPY */    rc = srv_copy();    debug(F101,"srv_copy","",rc);    if (rc > -1) return(rc);		/* (see below) */}<generic>S {				/* REMOTE SET */#ifdef CKSYSLOG    if (ckxsyslog >= SYSLG_PR && ckxlogging)      cksyslog(SYSLG_PR, 1, "server", "REMOTE SET", (char *)srvcmd);#endif /* CKSYSLOG */#ifndef NOSERVER#ifdef IKSDB    if (ikdbopen) slotstate(what,"REMOTE SET", (char *)(srvcmd+1), "");#endif /* IKSDB */    if (!ENABLED(en_set)) {	errpkt((CHAR *)"REMOTE SET disabled");	RESUME;    } else {	if (remset((char *)(srvcmd+1))) { /* Try to do what they ask */	    success = 1;	    ack();			/* If OK, then acknowledge */	} else				/* Otherwise */	  errpkt((CHAR *)"Unknown REMOTE SET parameter"); /* give error msg */	RESUME;				/* Return to server command wait */    }#endif /* NOSERVER */}<generic>T {				/* REMOTE TYPE */#ifndef NOSERVER    char *n2;#ifdef CKSYSLOG    if (ckxsyslog >= SYSLG_PR && ckxlogging)      cksyslog(SYSLG_PR, 1, "server", "REMOTE TYPE", (char *)srvcmd);#endif /* CKSYSLOG */    if (!ENABLED(en_typ)) {	errpkt((CHAR *)"REMOTE TYPE disabled");	RESUME;    } else {#ifdef IKSDB	if (ikdbopen) slotstate(what,"REMOTE TYPE", (char *)(srvcmd+2), "");#endif /* IKSDB */	if (!ENABLED(en_cwd)) {		/* If CWD disabled */	    zstrip((char *)(srvcmd+2),&n2); /* and they included a pathname, */	    if (strcmp((char *)(srvcmd+2),n2)) { /* refuse. */		errpkt((CHAR *)"Access denied");		RESUME;			/* Remember, this is not a goto! */	    }	}	if (state == generic) {		/* It's OK to go ahead. */	    binary = XYFT_T;		/* Use text mode for this. */	    if (			/* (RESUME didn't change state) */#ifdef COMMENT	      syscmd(TYPCMD,(char *)(srvcmd+2))	/* Old way */#else	      sndtype((char *)(srvcmd+2)) /* New way */#endif /* COMMENT */		)	      BEGIN ssinit;		/* OK */	    else {			/* not OK */		errpkt((CHAR *)"Can't type file"); /* give error message */		RESUME;			/* wait for next server command */	    }	}    }#endif /* NOSERVER */}<generic>m {				/* REMOTE MKDIR */#ifndef NOSERVER#ifdef CK_MKDIR#ifdef CKSYSLOG    if (ckxsyslog >= SYSLG_PR && ckxlogging)      cksyslog(SYSLG_PR, 1, "server", "REMOTE MKDIR", (char *)srvcmd);#endif /* CKSYSLOG */#ifdef IKSDB    if (ikdbopen) slotstate(what,"REMOTE MKDIR", (char *)(srvcmd+2), "");#endif /* IKSDB */    if (!ENABLED(en_mkd)) {	errpkt((CHAR *)"REMOTE MKDIR disabled");	RESUME;    } else if (!ENABLED(en_cwd)) {	/* If CWD disabled */	errpkt((CHAR *)"Directory access restricted");	RESUME;				/* Remember, this is not a goto! */    }    if (state == generic) {		/* OK to go ahead. */	char *p = NULL;	x = ckmkdir(0,(char *)(srvcmd+2),&p,0,1); /* Make the directory */	if (!p) p = "";	if (x > -1) {	    encstr((CHAR *)p);		/* OK - encode the name */	    ack1(data);			/* Send short-form response */	    success = 1;	    RESUME;	} else {			/* not OK */	    if (!*p) p = "Directory creation failure";	    errpkt((CHAR *)p);		/* give error message */	    RESUME;			/* Wait for next server command */	}    }#else    errpkt((CHAR *)"REMOTE MKDIR not available");    RESUME;#endif /* CK_MKDIR */#endif /* NOSERVER */}<generic>d {				/* REMOTE RMDIR */#ifndef NOSERVER#ifdef CK_MKDIR#ifdef CKSYSLOG    if (ckxsyslog >= SYSLG_PR && ckxlogging)      cksyslog(SYSLG_PR, 1, "server", "REMOTE RMDIR", (char *)srvcmd);#endif /* CKSYSLOG */#ifdef IKSDB    if (ikdbopen) slotstate(what,"REMOTE RMDIR", (char *)(srvcmd+2), "");#endif /* IKSDB */    if (!ENABLED(en_rmd)) {	errpkt((CHAR *)"REMOTE RMDIR disabled");	RESUME;    } else if (!ENABLED(en_cwd)) {	/* If CWD disabled */	errpkt((CHAR *)"Directory access restricted");	RESUME;				/* Remember, this is not a goto! */    }    if (state == generic) {		/* OK to go ahead. */	char *p = NULL;	x = ckmkdir(1,(char *)(srvcmd+2),&p,0,1);	if (!p) p = "";	if (x > -1) {	    encstr((CHAR *)p);		/* OK - encode the name */	    ack1(data);			/* Send short-form response */	    success = 1;	    RESUME;	} else {			/* not OK */	    if (!*p) p = "Directory removal failure";	    errpkt((CHAR *)p);		/* give error message */	    RESUME;			/* Wait for next server command */	}    }#else    errpkt((CHAR *)"REMOTE RMDIR not available");    RESUME;#endif /* CK_MKDIR */#endif /* NOSERVER */}<generic>U {				/* REMOTE SPACE */#ifndef NOSERVER#ifdef CKSYSLOG    if (ckxsyslog >= SYSLG_PR && ckxlogging)      cksyslog(SYSLG_PR, 1, "server", "REMOTE SPACE", (char *)srvcmd);#endif /* CKSYSLOG */    if (!ENABLED(en_spa)) {	errpkt((CHAR *)"REMOTE SPACE disabled");	RESUME;    } else {	x = srvcmd[1];			/* Get area to check */	x = ((x == NUL) || (x == SP)#ifdef OS2	     || (x == '!') || (srvcmd[3] == ':')#endif /* OS2 */	     );#ifdef IKSDB	if (ikdbopen) slotstate(what,			      "REMOTE SPACE",			      (x ? "" : (char *)srvcmd),			      ""			      );#endif /* IKSDB */	if (!x && !ENABLED(en_cwd)) {	/* CWD disabled */	    errpkt((CHAR *)"Access denied"); /* and non-default area given, */	    RESUME;			/* refuse. */	} else {#ifdef OS2_PROTOTYP(int sndspace,(int));	    if (sndspace(x ? toupper(srvcmd[2]) : 0)) {		BEGIN ssinit;		/* send the report. */	    } else {			/* If not ok, */		errpkt((CHAR *)"Can't send space"); /* send error message */		RESUME;			/* and return to server command wait */	    }#else            if (nopush)              x = 0;            else              x = (x ? syscmd(SPACMD,"") : syscmd(SPACM2,(char *)(srvcmd+2)));	    if (x) {			/* If we got the info */		BEGIN ssinit;		/* send it */	    } else {			/* otherwise */		errpkt((CHAR *)"Can't check space"); /* send error message */		RESUME;			/* and await next server command */	    }#endif /* OS2 */	}    }#endif /* NOSERVER */}<generic>W {				/* REMOTE WHO */#ifndef NOSERVER#ifdef CKSYSLOG    if (ckxsyslog >= SYSLG_PR && ckxlogging)      cksyslog(SYSLG_PR, 1, "server", "REMOTE WHO", (char *)srvcmd);#endif /* CKSYSLOG */#ifdef IKSDB    if (ikdbopen) slotstate(what,"REMOTE WHO", (char *)(srvcmd+2), "");#endif /* IKSDB */    if (!ENABLED(en_who)) {	errpkt((CHAR *)"REMOTE WHO disabled");	RESUME;    } else {#ifdef OS2_PROTOTYP(int sndwho,(char *));	    if (sndwho((char *)(srvcmd+2))) {		BEGIN ssinit;		/* try to send it */	    } else {			/* If not ok, */		errpkt((CHAR *)"Can't do who command"); /* send error msg */		RESUME;			/* and return to server command wait */	    }#else	if (syscmd(WHOCMD,(char *)(srvcmd+2))) {	    BEGIN ssinit;	} else {	    errpkt((CHAR *)"Can't do who command");	    RESUME;	}#endif /* OS2 */    }#endif /* NOSERVER */}<generic>V {				/* Variable query or set */    rc = srv_query();    debug(F101,"srv_query","",rc);    if (rc > -1) return(rc);}<generic>q {				/* Interrupted or connection lost */#ifndef NOSERVER    if (fatalio) {			/* Connection lost */#ifdef CKSYSLOG	if (ckxsyslog >= SYSLG_PR && ckxlogging)	  cksyslog(SYSLG_PR, 1, "server", "Interrupted", NULL);#endif /* CKSYSLOG */	success = 0;	xitsta |= what;	QUIT;    } else if (interrupted) {	if (!ENABLED(en_fin)) {		/* Ctrl-C typed */	    errpkt((CHAR *)"QUIT disabled");	    RESUME;	} else {#ifdef CKSYSLOG	    if (ckxsyslog >= SYSLG_PR && ckxlogging)	      cksyslog(SYSLG_PR, 1, "server", "Interrupted", NULL);#endif /* CKSYSLOG */	    success = 0;	    xitsta |= what;	    QUIT;	}    } else {				/* Shouldn't happen */	debug(F100,"SERVER (generic) GOT UNEXPECTED 'q'","",0);	QUIT;    }#endif /* NOSERVER */}<generic>. {				/* Anything else in this state... */#ifndef NOSERVER    errpkt((CHAR *)"Unimplemented REMOTE command"); /* Complain */    RESUME;				/* and return to server command wait */#endif /* NOSERVER */}<rgen>q {				/* Sent BYE and connection broken */    if (bye_active && ttchk() < 0) {	msleep(500);	bye_active = 0;	ttclos(0);			/* Close our end of the connection */	clsof(0);	return(success = 1);    } else {				/* Other generic command */	return(success = 0);		/* or connection not broken */    }}<rgen>Y {				/* Short-Form reply */    rc = rcv_shortreply();    debug(F101,"<rgen>Y rcv_shortreply","",rc);    if (rc > -1) return(rc);}<rgen,rfile>F {				/* File header */    char *n2;    extern int rsn;    debug(F101,"<rfile>F winlo 1","",winlo);

⌨️ 快捷键说明

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