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

📄 ckuusx.c

📁 C-Kermit源码。是使用串口/Modem和网络通讯的程序
💻 C
📖 第 1 页 / 共 5 页
字号:
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 + -