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

📄 psap.h

📁 ftam等标准协议服务器和客户端的源代码。
💻 H
字号:
/* psap.h - include file for presentation users (PS-USER) *//*  * $Header: /f/iso/h/RCS/psap.h,v 5.0 88/07/21 14:39:13 mrose Rel $ * * * $Log$ *//* *				  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. * */#ifndef	_PSAP_#define	_PSAP_#ifndef	_MANIFEST_#include "manifest.h"#endif#ifndef	_GENERAL_#include "general.h"#endif#ifndef	BSD42#include <time.h>#else#ifndef	timerisset#include <sys/time.h>#endif#endif/*  */typedef struct OIDentifier {    int	    oid_nelem;		/* number of sub-identifiers */    unsigned int *oid_elements;	/* the (ordered) list of sub-identifiers */}			OIDentifier, *OID;#define	NULLOID	((OID) 0)OID	ode2oid ();int	oid_cmp ();OID	oid_cpy ();int	oid_free ();char   *oid2ode ();char   *sprintoid ();OID	str2oid ();/*  */typedef	u_char	   PElementClass;typedef	u_char	   PElementForm;typedef u_short    PElementID;	/* 0..16383 are meaningful (14 bits) */#define	PE_ID(class,code) \	((int) ((((code) & 0x3fff) << 2) | ((class) & 0x0003)))typedef	int	   PElementLen;typedef u_char	  byte, *PElementData;#define	NULLPED	((PElementData) 0)#define	PEDalloc(s)		((PElementData) malloc ((unsigned int) (s)))#define	PEDrealloc(p, s)	((PElementData) \				    realloc ((char *) (p), (unsigned int) (s)))#define	PEDfree(p)		free ((char *) (p))#define	PEDcmp(b1, b2, length)	\			bcmp ((char *) (b1), (char *) (b2), (int) (length))#define	PEDcpy(b1, b2, length)	\			bcopy ((char *) (b1), (char *) (b2), (int) (length))/*  */typedef struct PElement {    int	    pe_errno;		/* Error codes */#define	PE_ERR_NONE	0	/*   No error */#define	PE_ERR_OVER	1	/*   Overflow */#define	PE_ERR_NMEM	2	/*   Out of memory */#define	PE_ERR_BIT	3	/*   No such bit */#define	PE_ERR_UTCT	4	/*   Malformed universal timestring */#define	PE_ERR_GENT	5	/*   Malformed generalized timestring */#define	PE_ERR_MBER	6	/*   No such member */#define	PE_ERR_PRIM	7	/*   Not a primitive form */#define	PE_ERR_CONS	8	/*   Not a constructor form */#define	PE_ERR_TYPE	9	/*   Class/ID mismatch in constructor */#define	PE_ERR_OID	10	/*   Malformed object identifier */#define	PE_ERR_BITS	11	/*   Malformed bitstring */				/* for the PSAP */    int	    pe_context;		/* indirect reference */#define	PE_DFLT_CTX	0	/*   the default context */#define	PE_ID_XTND	0x1f	/* distinguished ID for extension bits */#define	PE_ID_MORE	0x80	/* more to come flag */#define	PE_ID_MASK	0x7f	/* value in extension byte */#define	PE_ID_SHIFT	7#define	PE_CLASS_MASK	0xc0	/* identifier class bits (8-7) */#define	PE_CLASS_SHIFT	6#define	PE_FORM_MASK	0x20	/* identifier form bit (6) */#define	PE_FORM_SHIFT	5#define	PE_CODE_MASK	0x1f	/* identifier code bits (5-1) + ... */#define	PE_CODE_SHIFT	0    PElementClass	pe_class;#define	PE_CLASS_UNIV	0x0	/*   Universal */#define	PE_CLASS_APPL	0x1	/*   Application-wide */#define	PE_CLASS_CONT	0x2	/*   Context-specific */#define	PE_CLASS_PRIV	0x3	/*   Private-use */    PElementForm	pe_form;#define	PE_FORM_PRIM	0x0	/*   PRIMitive */#define	PE_FORM_CONS	0x1	/*   CONStructor */#define	PE_FORM_ICONS	0x2	/*   internal: Inline CONStructor */    PElementID pe_id;		/* should be extensible, 14 bits for now */				/* Pseudo Types */#define	PE_UNIV_EOC	0x000	/*   End-of-contents */				/* Built-in Types */#define	PE_PRIM_BOOL	0x001	/*   Boolean */#define	PE_PRIM_INT	0x002	/*   Integer */#define	PE_PRIM_BITS	0x003	/*   Bitstring */#define	PE_PRIM_OCTS	0x004	/*   Octetstring */#define	PE_PRIM_NULL	0x005	/*   Null */#define	PE_PRIM_OID	0x006	/*   Object identifier */#define	PE_PRIM_ODE	0x007	/*   Object descriptor */#define	PE_CONS_EXTN	0x008	/*   External */#define PE_PRIM_REAL	0x009	/*   Real */#define PE_PRIM_ENUM	0x00a	/*   Enumerated type */#define PE_PRIM_ENCR	0x00b	/*   Encrypted */#define	PE_CONS_SEQ	0x010	/*   Sequence */#define	PE_CONS_SET	0x011	/*   Set */				/* Defined Types */#define	PE_DEFN_NUMS	0x012	/*   Numeric String */#define	PE_DEFN_PRTS	0x013	/*   Printable String */#define	PE_DEFN_T61S	0x014	/*   T.61 String */#define	PE_DEFN_VTXS	0x015	/*   Videotex String */#define	PE_DEFN_IA5S	0x016	/*   IA5 String */#define	PE_DEFN_UTCT	0x017	/*   UTC Time */#define	PE_DEFN_GENT	0x018	/*   Generalized Time */#define	PE_DEFN_GFXS	0x019	/*   Graphics string (ISO2375) */#define	PE_DEFN_VISS	0x01a	/*   Visible string */#define	PE_DEFN_GENS	0x01b	/*   General string */    PElementLen	pe_len;#define	PE_LEN_XTND	0x80	/* long or indefinite form */#define	PE_LEN_SMAX	127	/* largest short form */#define	PE_LEN_MASK	0x7f	/* mask to get number of bytes in length */#define	PE_LEN_INDF	(-1)	/* indefinite length */    PElementLen	pe_ilen;    union {	PElementData	 un_pe_prim;	/* PRIMitive value */	struct PElement *un_pe_cons;	/* CONStructor head */    }                       pe_un1;#define	pe_prim	pe_un1.un_pe_prim#define	pe_cons	pe_un1.un_pe_cons    union {	int	    un_pe_cardinal;	/* cardinality of list */	int	    un_pe_nbits;	/* number of bits in string */    }			    pe_un2;#define	pe_cardinal	pe_un2.un_pe_cardinal#define	pe_nbits	pe_un2.un_pe_nbits    int	    pe_inline;		/* for "ultra-efficient" PElements */    char   *pe_realbase;	/*   .. */    int	    pe_offset;		/* offset of element in sequence */    struct PElement *pe_next;    int	    pe_refcnt;		/* hack for ANYs in pepy */}			PElement, *PE;#define	NULLPE	((PE) 0)#define	NULLPEP	((PE *) 0)#define	pe_seterr(pe, e, v)	((pe) -> pe_errno = (e), (v))PE	pe_alloc ();int	pe_free ();int	pe_cmp ();PE	pe_cpy ();int	pe_pullup ();PE	pe_expunge ();int	pe_extract ();PE	str2pe ();PE	qb2pe ();extern int    pe_maxclass;extern char  *pe_classlist[];extern int    pe_maxuniv;extern char  *pe_univlist[];extern int    pe_maxappl;extern char **pe_applist;extern int    pe_maxpriv;extern char **pe_privlist;/*  */typedef struct UTCtime {    int	    ut_year;    int	    ut_mon;    int	    ut_mday;    int	    ut_hour;    int	    ut_min;    int	    ut_sec;    int	    ut_usec;    int	    ut_zone;    int	    ut_flags;#define	UT_NULL		0x00#define	UT_ZONE		0x01#define	UT_SEC		0x02#define	UT_USEC		0x04}			UTCtime, *UTC;#define	NULLUTC	((UTC) 0)void	tm2ut ();long	gtime ();struct tm *ut2tm ();/*  */extern char *psapversion;int	prim2flag ();PE	flag2prim ();#define	bool2prim(b)		flag2prim ((b), PE_CLASS_UNIV, PE_PRIM_BOOL)int	prim2num ();PE	num2prim ();#define	int2prim(i)		num2prim ((i), PE_CLASS_UNIV, PE_PRIM_INT)#define	prim2enum(i)		prim2num((i))#define enum2prim(a,b,c)	num2prim((a), (b), (c))#define enumint2prim(i)		enum2prim ((i), PE_CLASS_UNIV, PE_PRIM_ENUM)#ifdef notyetdouble	prim2real ();PE	real2prim ();#define double2prim(i)		real2prim ((i), PE_CLASS_UNIV, PE_PRIM_REAL)#endifchar   *prim2str ();PE	str2prim ();struct qbuf *prim2qb ();PE	qb2prim ();		/* really should be qb2pe () */#define	oct2prim(s,len)		str2prim ((s), (len), \					    PE_CLASS_UNIV, PE_PRIM_OCTS)#define	ia5s2prim(s,len)	str2prim ((s), (len), \					    PE_CLASS_UNIV, PE_DEFN_IA5S)#define	nums2prim(s,len)	str2prim ((s), (len), \					    PE_CLASS_UNIV, PE_DEFN_NUMS)#define	prts2prim(s,len)	str2prim ((s), (len), \					    PE_CLASS_UNIV, PE_DEFN_PRTS)#define	t61s2prim(s,len)	str2prim ((s), (len), \					    PE_CLASS_UNIV, PE_DEFN_T61S)#define	vtxs2prim(s,len)	str2prim ((s), (len), \					    PE_CLASS_UNIV, PE_DEFN_VTXS)#define	gfxs2prim(s,len)	str2prim ((s), (len), \					    PE_CLASS_UNIV, PE_DEFN_GFXS)#define	viss2prim(s,len)	str2prim ((s), (len), \					    PE_CLASS_UNIV, PE_DEFN_VISS)#define	gens2prim(s,len)	str2prim ((s), (len), \					    PE_CLASS_UNIV, PE_DEFN_GENS)#define	ode2prim(s,len)		str2prim ((s), (len), \					    PE_CLASS_UNIV, PE_PRIM_ODE)PE	prim2bit ();PE	bit2prim ();int	bit_on (), bit_off ();int	bit_test ();OID	prim2oid ();PE	obj2prim ();#define	oid2prim(o)		obj2prim ((o), PE_CLASS_UNIV, PE_PRIM_OID)UTC	prim2time ();#define	prim2utct(pe)		prim2time ((pe), 0)#define	prim2gent(pe)		prim2time ((pe), 1)PE	time2prim ();#define	utct2prim(u)		time2prim ((u), 0, PE_CLASS_UNIV, PE_DEFN_UTCT)#define	gent2prim(u)		time2prim ((u), 1, PE_CLASS_UNIV, PE_DEFN_GENT)char   *time2str ();#define	utct2str(u)		time2str ((u), 0)#define	gent2str(u)		time2str ((u), 1)PE	prim2set ();#define	set2prim(pe)		(pe)int	set_add (), set_addon (), set_del ();PE	set_find ();#define	first_member(pe)	((pe) -> pe_cons)#define	next_member(pe,p)	((p) -> pe_next)#define	prim2seq(pe)		(prim2set (pe))#define	seq2prim(pe)		(pe)int	seq_add (), seq_addon (), seq_del ();PE	seq_find ();char   *pe_error ();/*  */typedef struct {    int	    ps_errno;		/* Error codes */#define	PS_ERR_NONE	 0	/*   No error */#define	PS_ERR_OVERID	 1	/*   Overflow in ID */#define	PS_ERR_OVERLEN	 2	/*   Overflow in length */#define	PS_ERR_NMEM	 3	/*   Out of memory */#define	PS_ERR_EOF	 4	/*   End of file */#define	PS_ERR_EOFID	 5	/*   End of file reading extended ID */#define	PS_ERR_EOFLEN	 6	/*   End of file reading extended length */#define	PS_ERR_LEN	 7	/*   Length mismatch */#define	PS_ERR_TRNC	 8	/*   Truncated */#define	PS_ERR_INDF	 9	/*   Indefinite length in primitive form */#define	PS_ERR_IO	10	/*   I/O error */#define	PS_ERR_XXX	11	/*   XXX */    union {	caddr_t un_ps_addr;	struct {	    char   *st_ps_base;	    int	    st_ps_cnt;	    char   *st_ps_ptr;	    int	    st_ps_bufsiz;	}			un_ps_st;	struct {	    struct udvec *uv_ps_head;	    struct udvec *uv_ps_cur;	    struct udvec *uv_ps_end;	    int	    uv_ps_elems;	    int	    uv_ps_slop;	    int	    uv_ps_cc;	}			un_ps_uv;    }                       ps_un;#define	ps_addr	ps_un.un_ps_addr#define	ps_base	ps_un.un_ps_st.st_ps_base#define	ps_cnt	ps_un.un_ps_st.st_ps_cnt#define	ps_ptr	ps_un.un_ps_st.st_ps_ptr#define	ps_bufsiz	ps_un.un_ps_st.st_ps_bufsiz#define	ps_head	ps_un.un_ps_uv.uv_ps_head#define	ps_cur	ps_un.un_ps_uv.uv_ps_cur#define	ps_end	ps_un.un_ps_uv.uv_ps_end#define	ps_elems	ps_un.un_ps_uv.uv_ps_elems#define	ps_slop	ps_un.un_ps_uv.uv_ps_slop#define	ps_cc	ps_un.un_ps_uv.uv_ps_cc    caddr_t ps_extra;		/* for George's recursive PStreams */    int	    ps_inline;		/* for "ultra-efficient" PStreams */    int	    ps_scratch;		/* XXX */    int	    ps_byteno;		/* byte position */    IFP	    ps_primeP;    IFP	    ps_readP;    IFP	    ps_writeP;    IFP	    ps_flushP;    IFP	    ps_closeP;}			PStream, *PS;#define	NULLPS	((PS) 0)#define	ps_seterr(ps, e, v)	((ps) -> ps_errno = (e), (v))PS	ps_alloc ();void	ps_free ();int	ps_io ();#define	ps_read(ps, data, cc)	ps_io ((ps), (ps) -> ps_readP, (data), (cc), 0)#define	ps_write(ps, data, cc)	ps_write_aux ((ps), (data), (cc), 0)#define	ps_write_aux(ps, data, cc, inline) \    	ps_io ((ps), (ps) -> ps_writeP, (data), (cc), (inline))int	ps_flush ();int	std_open ();#define	std_setup(ps, fp)	((ps) -> ps_addr = (caddr_t) (fp), OK)int	str_open ();int	str_setup ();int	dg_open ();int	dg_setup ();int	fdx_open ();int	fdx_setup ();int	qbuf_open ();#define	qbuf_setup(ps, qb)	((ps) -> ps_addr = (caddr_t) (qb), OK)int	uvec_open ();int	uvec_setup ();#define	ps2pe(ps)		ps2pe_aux ((ps), 1)PE	ps2pe_aux ();#define	pe2ps(ps, pe)		pe2ps_aux ((ps), (pe), 1)int	pe2ps_aux ();PE	pl2pe ();int	pe2pl ();extern int    ps_len_strategy;#define	PS_LEN_SPAG	0#define	PS_LEN_INDF	1#define	PS_LEN_LONG	2int	ps_get_abs ();char   *ps_error ();/*  */struct isobject {    char   *io_descriptor;    OIDentifier io_identity;};int	setisobject (),	endisobject ();struct isobject *getisobject ();struct isobject *getisobjectbyname ();struct isobject *getisobjectbyoid ();/*  */PE	qbuf2pe ();char   *qb2str ();struct qbuf *str2qb ();int	qb_free ();int	pe2ssdu ();PE	ssdu2pe ();void	pe2text (), text2pe ();int	pe2uvec ();char   *int2strb ();int	strb2int ();PE	strb2bitstr ();char   *bitstr2strb ();/*  */extern char PY_pepy[];void	PY_advise ();int	vpush (), vpop ();int	vname (), vtag ();int	vprint ();int	vstring (), vunknown ();char   *bit2str ();int	vpushfp (), vpopfp ();int	vpushstr (), vpopstr ();#endif

⌨️ 快捷键说明

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