📄 ckuusx.c
字号:
extern int g_patterns, patterns;#endif /* PATTERNS */#endif /* NOICP */extern int spsizf, spsizr, spmax, prefixing, fncact, fnspath, fnrpath;extern int moving; /* SEND criteria */extern char sndafter[], sndbefore[], *sndexcept[], *rcvexcept[];extern long sndlarger, sndsmaller, calibrate, skipbup;extern int rmailf, rprintf;extern char optbuf[];#ifdef PIPESENDextern char * g_sfilter, * g_rfilter;extern char * sndfilter, * rcvfilter;#endif /* PIPESEND */VOIDftreset() {#ifndef NOICP int i; extern char * filefile; extern int reliable, xreliable, c_save, ss_save, slostart, urclear; extern int oopts, omode, oname, opath, kactive, autopath; extern char * snd_move; /* Directory to move sent files to */ extern char * snd_rename; /* What to rename sent files to */ extern char * rcv_move; extern char * rcv_rename; extern char * g_snd_move; extern char * g_snd_rename; extern char * g_rcv_move; extern char * g_rcv_rename;#ifdef CK_SPEED extern int f_ctlp;#ifdef COMMENT extern short s_ctlp[], ctlp[];#endif /* COMMENT */#endif /* CK_SPEED */#ifndef NOCSETS extern int fcs_save, tcs_save;#endif /* NOCSETS *//* Restore / reset per-command file-transfer switches */ makestr(&snd_move,g_snd_move); makestr(&rcv_move,g_rcv_move); makestr(&snd_rename,g_snd_rename); makestr(&rcv_rename,g_rcv_rename); kactive = 0; /* Kermit protocol no longer active */ oopts = -1; /* O-Packet Options */ omode = -1; /* O-Packet Transfer Mode */ oname = -1; /* O-Packet Filename Options */ opath = -1; /* O-Packet Pathname Options */#ifdef COMMENT#ifdef CK_SPEED if (f_ctlp) { for (i = 0; i < 256; i++) ctlp[i] = s_ctlp[i]; f_ctlp = 0; }#endif /* CK_SPEED */#endif /* COMMENT */ calibrate = 0L; /* Calibration run */ if (xreliable > -1) reliable = xreliable; urclear = 0; if (autopath) { /* SET RECEIVE PATHNAMES AUTO */ fnrpath = PATH_AUTO; autopath = 0; } if (filefile) { /* File list */ zclose(ZMFILE); makestr(&filefile,NULL); } if (c_save > -1) { /* Block Check Type */ bctr = c_save; c_save = -1; } if (ss_save > -1) { /* Slow Start */ slostart = ss_save; ss_save = -1; }#ifdef CK_LABELED if (g_lf_opts > -1) { lf_opts = g_lf_opts; /* Restore labeled transfer options */ g_lf_opts = -1; }#endif /* CK_LABELED */#ifndef NOCSETS if (tcs_save > -1) { /* Character sets */ tcharset = tcs_save; tcs_save = -1; } if (fcs_save > -1) { fcharset = fcs_save; fcs_save = -1; } setxlatype(tcharset,fcharset); /* Translation type */#endif /* NOCSETS */#ifdef NETCONN#ifndef NOSPL if (g_pswd) { ckstrncpy(pwbuf,g_pswd,PWBUFL); makestr(&g_pswd,NULL); } if (g_pflg > -1) { pwflg = g_pflg; g_pflg = -1; } if (g_pcpt > -1) { pwcrypt = g_pcpt; g_pcpt = -1; }#endif /* NOSPL */#endif /* NETCONN */ if (g_binary > -1) { /* File type */ binary = g_binary; g_binary = -1; } if (g_xfermode > -1) { /* Transfer mode */ xfermode = g_xfermode; g_xfermode = -1; }#ifdef PATTERNS if (g_patterns > -1) { /* Filename patterns */ patterns = g_patterns; g_patterns = -1; }#endif /* PATTERNS */ if (g_matchdot > -1) { matchdot = g_matchdot; g_matchdot = -1; } if (saveask > -1) { xaskmore = saveask; saveask = -1; } if (g_proto > -1) { /* Protocol */ protocol = g_proto; g_proto = -1; } if (g_urpsiz > -1) { urpsiz = g_urpsiz; debug(F101,"ftreset restoring urpsiz","",urpsiz); g_urpsiz = -1; } if (g_spsizf > -1) { spsizf = g_spsizf; debug(F101,"ftreset restoring spsizf","",spsizf); g_spsizf = -1; } if (g_spsiz > -1) { spsiz = g_spsiz; debug(F101,"ftreset restoring spsiz","",spsiz); g_spsiz = -1; } if (g_spsizr > -1) { spsizr = g_spsizr; debug(F101,"ftreset restoring spsizr","",spsizr); g_spsizr = -1; } if (g_spmax > -1) { spmax = g_spmax; g_spmax = -1; } if (g_wslotr > -1) { wslotr = g_wslotr; g_wslotr = -1; } if (g_prefixing > -1) { prefixing = g_prefixing; g_prefixing = -1; } if (g_fncact > -1) { fncact = g_fncact; g_fncact = -1; } if (g_fncnv > -1) { fncnv = g_fncnv; g_fncnv = -1; } if (g_fnspath > -1) { fnspath = g_fnspath; g_fnspath = -1; } if (g_fnrpath > -1) { fnrpath = g_fnrpath; g_fnrpath = -1; } if (g_skipbup > -1) { skipbup = g_skipbup; g_skipbup = -1; } recursive = 0; /* RECURSIVE can never be global */ if (g_displa > -1) { /* File transfer display */ fdispla = g_displa; g_displa = -1; } if (g_spath > -1) { /* Send pathnames */ fnspath = g_spath; g_spath = -1; } if (g_rpath > -1) { /* Receive pathnames */ fnrpath = g_rpath; g_rpath = -1; } if (g_fncnv > -1) { /* Filename conversion */ fncnv = g_fncnv; g_fncnv = -1; }#ifdef PIPESEND if (g_sfilter) { /* Send filter */ if (sndfilter) free(sndfilter); sndfilter = g_sfilter; g_sfilter = NULL; } if (g_rfilter) { /* Receive filter */ if (rcvfilter) free(rcvfilter); rcvfilter = g_rfilter; g_rfilter = NULL; }#endif /* PIPESEND */#ifndef NOFRILLS rmailf = rprintf = 0; /* MAIL and PRINT modifiers for SEND */ optbuf[0] = NUL; /* MAIL and PRINT options */#endif /* NOFRILLS */ moving = 0; /* Reset delete-after-send indicator */ sndafter[0] = NUL; /* Reset SEND selection switches */ sndbefore[0] = NUL; for (i = 0; i < 8; i++) { if (sndexcept[i]) free(sndexcept[i]); sndexcept[i] = NULL; if (rcvexcept[i]) free(rcvexcept[i]); rcvexcept[i] = NULL; } sndlarger = -1L; sndsmaller = -1L;#ifdef GFTIMER gtv = -1.0; oldgtv = -1.0;#else gtv = -1L; oldgtv = -1L;#endif /* GFTIMER */#endif /* NOICP */}#endif /* NOXFER *//* C K _ E R R S T R -- Return message from most recent system error */char *ck_errstr() {#ifdef USE_STRERROR#ifndef CK_ANSILIBS /* Should have been declared in <string.h> */_PROTOTYP( char * strerror, (int) );#endif /* CK_ANSILIBS */ return(strerror(errno));#else#ifdef VMS extern char * ckvmserrstr(unsigned long); return(ckvmserrstr(0L));#else#ifdef ATTSV#ifdef BSD44#ifdef __386BSD__#ifndef NDSYSERRLIST extern int sys_nerr; extern char *sys_errlist[];#endif /* NDSYSERRLIST */#else#ifndef __bsdi__#ifndef NDSYSERRLIST extern int sys_nerr; extern const char *const sys_errlist[];#endif /* NDSYSERRLIST */#endif /* __bsdi__ */#endif /* __386BSD__ */ if (errno >= sys_nerr) return("Error number out of range"); else return((char *) sys_errlist[errno]);#else /* !BSD44 */#ifndef NDSYSERRLIST extern int sys_nerr; extern char *sys_errlist[];#endif /* NDSYSERRLIST */ if (errno >= sys_nerr) return("Error number out of range"); else return((char *) sys_errlist[errno]);#endif /* BSD44 */#else /* !ATTSV */#ifdef BSD4#ifndef NDSYSERRLIST extern int sys_nerr; extern char *sys_errlist[];#endif /* NDSYSERRLIST */ if (errno >= sys_nerr) return("Error number out of range"); else return((char *) sys_errlist[errno]);#else#ifdef OS2#ifndef NDSYSERRLIST extern char *sys_errlist[];#endif /* NDSYSERRLIST */#ifdef NT extern int_sys_nerr;#endif /* NT */ char *e; e = (errno > -1#ifdef NT && errno <= _sys_nerr#endif /* NT */ ) ?#ifdef NT (char *) sys_errlist[errno]#else /* NT */ /* I don't know how to get a CLIB error string in OS/2 */ strerror(errno)#endif /* NT */ : ""; return(e ? e : "");#else /* OS2 */ return("");#endif /* OS2 */#endif /* BSD4 */#endif /* ATTSV */#endif /* VMS */#endif /* USE_STRERROR */}#ifdef TCPSOCKET#ifdef NTextern int WSASafeToCancel;#endif /* NT */#endif /* TCPSOCKET */VOIDsetflow() { extern int flow, autoflow, mdmtyp, cxtype, cxflow[];#ifndef NODIAL extern int dialcapas, dialfc; extern MDMINF * modemp[]; MDMINF * p = NULL; long bits = 0;#endif /* NODIAL */ debug(F101,"setflow autoflow","",autoflow);/* #ifdef COMMENT *//* WHY WAS THIS COMMENTED OUT? */ if (!autoflow) /* Only if FLOW is AUTO */ return;/* #endif */ /* COMMENT */ debug(F101,"setflow local","",local); debug(F101,"setflow network","",network); debug(F101,"setflow cxtype","",cxtype); if (network || !local || cxtype == CXT_DIRECT) { flow = cxflow[cxtype]; /* Set appropriate flow control */ debug(F101,"setflow flow","",flow); return; } if (cxtype != CXT_MODEM) /* Connection type should be modem */ return;#ifndef NODIAL bits = dialcapas; /* Capability bits */ if (!bits) { /* No bits? */ p = modemp[mdmtyp]; /* Look in modem info structure */ if (p) bits = p->capas; } if (dialfc == FLO_AUTO) { /* If DIAL flow is AUTO */#ifdef CK_RTSCTS /* If we can do RTS/CTS flow control */ if (bits & CKD_HW) /* and modem can do it too */ flow = FLO_RTSC; /* then switch to RTS/CTS */ else /* otherwise */ flow = FLO_XONX; /* use Xon/Xoff. */#else#ifndef NEXT#ifndef IRIX flow = FLO_XONX; /* Use Xon/Xoff. */#endif /* IRIX */#endif /* NEXT */#endif /* CK_RTSCTS */ }#endif /* NODIAL */ debug(F101,"setflow modem flow","",flow); return;}#ifndef NOLOCAL#ifdef CK_TRIGGER/* A U T O E X I T C H K -- Check for CONNECT-mode trigger string *//* Returns -1 if trigger not found, or else the trigger index, 0 or greater. (Replace with fancier and more efficient matcher later...) NOTE: to prevent unnecessary function call overhead, call this way: x = tt_trigger[0] ? autoexitchk(c) : -1;*/int#ifdef CK_ANSICautoexitchk(CHAR c)#elseautoexitchk(c) CHAR c;#endif /* CK_ANSIC *//* autoexitchk */ { extern CHAR * tt_trmatch[]; extern char * tt_trigger[]; int i, n; for (i = 0; i < TRIGGERS; i++) { if (!tt_trigger[i]) { /* No more triggers in list */ break; } else if (*tt_trigger[i]) { if (!tt_trmatch[i]) /* Just starting? */ tt_trmatch[i] = (CHAR *)tt_trigger[i]; /* Set match pointer */ if (c == *tt_trmatch[i]) { /* Compare this character */ tt_trmatch[i]++; /* It matches */ if (!*tt_trmatch[i]) { /* End of match string? */ tt_trmatch[i] = (CHAR *) tt_trigger[i]; /* Yes, rewind, */ debug(F101,"autoexitchk",tt_trigger[i],i); /* log, */ return(i); /* and return success */ } } else /* No match */ tt_trmatch[i] = (CHAR *) tt_trigger[i]; /* Rewind match string */ } /* and go on the next match string */ } return(-1); /* No match found */}#endif /* CK_TRIGGER */#ifndef NOSHOW/* S H O M D M -- Show modem signals */VOIDshomdm() {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -