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

📄 susaplose.c

📁 ftam等标准协议服务器和客户端的源代码。
💻 C
字号:
/* susaplose.c - SPM: UNITDATA you lose *//* *				  NOTICE * *    Acquisition, use, and distribution of this module and related *    materials are subject to the restrictions of a license agreement. *    Consult the Preface in the User's Manual for the full terms of *    this agreement. * *//* LINTLIBRARY */#include <stdio.h>#include <varargs.h>#include "spkt.h"#include "tailor.h"/*  */#ifndef	lintint	susaplose (va_alist)va_dcl{    int	    reason,    	    result;    struct SSAPindication *si;    va_list ap;    va_start (ap);    si = va_arg (ap, struct SSAPindication *);    reason = va_arg (ap, int);    result = _susaplose (si, reason, ap);    va_end (ap);    return result;}#else/* VARARGS */int	susaplose (si, reason, what, fmt)struct SSAPindication *si;int	reason;char   *what,       *fmt;{    return susaplose (si, reason, what, fmt);}#endif/*  */#ifndef	lintstatic int  _susaplose (si, reason, ap)	/* what, fmt, args ... */register struct SSAPindication *si;int	reason;va_list	ap;{    register char  *bp;    char    buffer[BUFSIZ];    register struct SSAPabort *sa;    if (si) {	bzero ((char *) si, sizeof *si);	si -> si_type = SI_ABORT;	sa = &si -> si_abort;	asprintf (bp = buffer, ap);	bp += strlen (bp);	sa -> sa_peer = 0;	sa -> sa_reason = reason;	copySSAPdata (buffer, bp - buffer, sa);    }    return NOTOK;}#endif/*  */int	ts2suslose (si, event, td)register struct SSAPindication *si;char   *event;register struct TSAPdisconnect *td;{    int     reason;    char   *cp,            buffer[BUFSIZ];    if ((ssaplevel & ISODELOG_EXCEPTIONS) && event)	xsprintf (NULLCP, NULLCP,		td -> td_cc > 0 ? "%s: %s\n\t%*.*s": "%s: %s", event,		TuErrString (td -> td_reason), td -> td_cc, td -> td_cc,		td -> td_data);    cp = "";    switch (td -> td_reason) {	case DR_REMOTE: 	case DR_CONGEST: 	    reason = SC_CONGEST;	    break;	case DR_SESSION: 	case DR_ADDRESS: 	    reason = SC_ADDRESS;	    break;	case DR_REFUSED:	    reason = SC_REFUSED;	    break;	default: 	    (void) sprintf (cp = buffer, " (%s at transport)",		    TuErrString (td -> td_reason));	case DR_NETWORK:	    reason = SC_TRANSPORT;	    break;    }    return susaplose (si, reason, NULLCP, "%s", *cp ? cp + 1 : cp);}

⌨️ 快捷键说明

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