cilist.c
来自「ftam等标准协议服务器和客户端的源代码。」· C语言 代码 · 共 237 行
C
237 行
/* cilist.c - Case Ignore List */#ifndef lintstatic char *rcsid = "$Header: /xtel/isode/isode/dsap/common/RCS/cilist.c,v 9.0 1992/06/16 12:12:39 isode Rel $";#endif/* * $Header: /xtel/isode/isode/dsap/common/RCS/cilist.c,v 9.0 1992/06/16 12:12:39 isode Rel $ * * * $Log: cilist.c,v $ * Revision 9.0 1992/06/16 12:12:39 isode * Release 8.0 * *//* * 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. * *//* SYNTAX: list = <list_component> | <list_component> '$' <list> list_component = [ '{T61}' ] <string> EXAMPLE: An example $ of a case ignore list $ syntax attribute*//* LINTLIBRARY */#include "quipu/util.h"#include "quipu/attrvalue.h"#include "quipu/syntaxes.h"static cilistfree (cilist)struct CIList * cilist;{ struct CIList * next; for (; cilist != NULLCILIST; cilist = next) { next = cilist->l_next; free (cilist->l_str); free ( (char *)cilist); }}static cilistcmp (a,b)struct CIList * a, *b;{int res; for (; (a != NULLCILIST) && (b != NULLCILIST) ; a = a->l_next, b=b->l_next) if ((res = lexequ (a->l_str, b->l_str)) != 0) return (res); if ( a != b) return ( a > b ? 1 : -1 ); else return (0); }static struct CIList * cilistcpy (a)struct CIList * a;{struct CIList * b, *c, *result = NULLCILIST; c = result; /* to keep lint quiet ! */ for (; a != NULLCILIST; a = a->l_next) { b = (struct CIList *) smalloc (sizeof (struct CIList)); b -> l_type = a->l_type; b -> l_str = strdup (a->l_str); if (result == NULLCILIST) result = b; else c->l_next = b; c = b; } b->l_next = NULLCILIST; return (result);}static struct CIList* cilistparse (str)char * str;{struct CIList * result = NULLCILIST;struct CIList * a, *b;char * ptr;char * mark = NULLCP;char t61_str = FALSE;extern char t61_flag;char * octparse ();char * prtparse (); b = result; /* to keep lint quiet */ if (t61_flag) { t61_str = TRUE; t61_flag = FALSE; /* indicate recognition */ } ptr = str = SkipSpace(str); while (ptr) { mark = NULLCP; a = (struct CIList *) smalloc (sizeof (struct CIList)); if ( (ptr=index (str,'$')) != NULLCP) { *ptr-- = 0; if (isspace (*ptr)) { *ptr = 0; mark = ptr; } ptr++; } if (*str == 0) { parse_error ("Null string not allowed",NULLCP); return NULLCILIST; } if ((t61_str) || (! check_print_string(str))) { a -> l_type = 1; if ((a -> l_str = octparse (str)) == NULLCP) return (NULLCILIST); } else { a -> l_str = strdup(str); a -> l_type = 2; } if (result == NULLCILIST) result = a; else b->l_next = a; b = a; t61_str = FALSE; if (ptr != NULLCP) { *ptr++ = '$'; if (mark != NULLCP) *mark = ' '; str = (SkipSpace(ptr)); ptr = str; if (*ptr++ == '{') { if (( str = index (ptr,'}')) == 0) { parse_error ("close bracket missing '%s'",--ptr); return (NULLCILIST); } *str = 0; if (lexequ ("T.61",ptr) != 0) { *str = '}'; parse_error ("{T.61} expected '%s'",--ptr); return (NULLCILIST); } *str++ = '}'; str = (SkipSpace(str)); t61_str = TRUE; } } } a -> l_next = NULLCILIST ; return (result);}static cilistprint (ps,cilist,format)PS ps;struct CIList * cilist;int format;{char * prefix = NULLCP; for (; cilist != NULLCILIST; cilist = cilist->l_next) { if (prefix != NULLCP) ps_print (ps,prefix); if (cilist->l_type == 1) { if (format != READOUT) ps_print (ps,"{T.61}"); octprint (ps,cilist->l_str,format); } else ps_print (ps,cilist->l_str); if (format == READOUT) prefix = "\n\t\t\t"; else prefix = " $\\\n\t"; }}static PE cilistenc (m)struct CIList * m;{PE ret_pe; (void) encode_SA_CaseIgnoreList (&ret_pe,0,0,NULLCP,m); return (ret_pe);}static struct CIList * cilistdec (pe)PE pe;{struct CIList * m; if (decode_SA_CaseIgnoreList (pe,1,NULLIP,NULLVP,&m) == NOTOK) return (NULLCILIST); return (m);}cilist_syntax (){ (void) add_attribute_syntax ("CaseIgnoreList", (IFP) cilistenc, (IFP) cilistdec, (IFP) cilistparse, cilistprint, (IFP) cilistcpy, cilistcmp, cilistfree, NULLCP, NULLIFP, TRUE);}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?