Annotation of 43BSDReno/contrib/isode-beta/dsap/common/util.c, revision 1.1

1.1     ! root        1: /* util.c - General utility routines */
        !             2: 
        !             3: #ifndef lint
        !             4: static char *rcsid = "$Header: /f/osi/dsap/common/RCS/util.c,v 7.1 90/07/09 14:35:23 mrose Exp $";
        !             5: #endif
        !             6: 
        !             7: /*
        !             8:  * $Header: /f/osi/dsap/common/RCS/util.c,v 7.1 90/07/09 14:35:23 mrose Exp $
        !             9:  *
        !            10:  *
        !            11:  * $Log:       util.c,v $
        !            12:  * Revision 7.1  90/07/09  14:35:23  mrose
        !            13:  * sync
        !            14:  * 
        !            15:  * Revision 7.0  89/11/23  21:44:40  mrose
        !            16:  * Release 6.0
        !            17:  * 
        !            18:  */
        !            19: 
        !            20: /*
        !            21:  *                                NOTICE
        !            22:  *
        !            23:  *    Acquisition, use, and distribution of this module and related
        !            24:  *    materials are subject to the restrictions of a license agreement.
        !            25:  *    Consult the Preface in the User's Manual for the full terms of
        !            26:  *    this agreement.
        !            27:  *
        !            28:  */
        !            29: 
        !            30: 
        !            31: /* LINTLIBRARY */
        !            32: 
        !            33: #include "quipu/util.h"
        !            34: #include "quipu/commonarg.h"
        !            35: #include "quipu/malloc.h"
        !            36: #include "tsap.h"
        !            37: #include <varargs.h>
        !            38: 
        !            39: extern LLog * log_dsap;
        !            40: 
        !            41: char * SkipSpace (ptr)
        !            42: register char * ptr;
        !            43: {
        !            44:        if (ptr == NULLCP)
        !            45:                return (NULLCP);
        !            46: 
        !            47:        while ( isspace (*ptr))
        !            48:                ptr++;
        !            49:        return (ptr);
        !            50: }
        !            51: 
        !            52: void StripSpace (b)
        !            53: register char *b;
        !            54: /* copy b to a less spaces and comments */
        !            55: {
        !            56: register char *a;
        !            57: 
        !            58:        if (*b == COMMENT ) {
        !            59:                *b = 0;
        !            60:                return;
        !            61:        }
        !            62: 
        !            63:        while ((! isspace(*b)) && (*b))
        !            64:                b++;
        !            65: 
        !            66:        if (!*b)
        !            67:                return;         /* nothing needs doing */
        !            68: 
        !            69:        a = b;
        !            70: 
        !            71:        for (;;) {
        !            72:                if (isspace (*b))
        !            73:                        b++;
        !            74:                else if ( (!*b) || (*b == COMMENT))
        !            75:                        break;
        !            76:                else
        !            77:                        *a++ = *b++;
        !            78:                }
        !            79: 
        !            80:        *a = 0;
        !            81: }
        !            82: 
        !            83: void StripSpace2 (b)
        !            84: register char *b;
        !            85: /* copy b to a less spaces and comments */
        !            86: {
        !            87: register char *a;
        !            88: 
        !            89:        while (isascii(*b) && (! isspace(*b)) && (*b))
        !            90:                b++;
        !            91: 
        !            92:        if (!*b)
        !            93:                return;         /* nothing needs doing */
        !            94: 
        !            95:        a = b;
        !            96: 
        !            97:        for (;;) {
        !            98:                if (isascii(*b) && isspace (*b))
        !            99:                        b++;
        !           100:                else if (!*b)
        !           101:                        break;
        !           102:                else
        !           103:                        *a++ = *b++;
        !           104:                }
        !           105: 
        !           106:        *a = 0;
        !           107: }
        !           108: 
        !           109: char * TidyString2 (a)
        !           110: register char * a;
        !           111: {
        !           112: register char * b;
        !           113: char * c;
        !           114: register int i = 0;
        !           115: 
        !           116:        /* removing multiple and trailing spaces */
        !           117:        c = a, b = a;
        !           118:        while (*a) {
        !           119:                if (isascii(*a) && isspace (*a)) {
        !           120:                        *b = ' ';       /* make sure not a tab etc */
        !           121:                        while (isspace (*++a))
        !           122:                                i = 1;
        !           123: 
        !           124:                        if (*a)
        !           125:                                b++;
        !           126:                        else
        !           127:                                break;
        !           128:                }
        !           129:                if (i)
        !           130:                        *b = *a;
        !           131: 
        !           132:                a++, b++;
        !           133:        }
        !           134: 
        !           135:        *b = 0;
        !           136: 
        !           137:        if (*--b == '\n')
        !           138:                *b-- = 0;
        !           139: 
        !           140:        if (*b == ' ')
        !           141:                *b = 0;
        !           142: 
        !           143:        return (c);
        !           144: }
        !           145: 
        !           146: char * TidyString (a)
        !           147: register char * a;
        !           148: {
        !           149:        if (!*a)
        !           150:                return (a);
        !           151: 
        !           152:        /* remove white space from front of string */
        !           153:        while (isspace (*a))
        !           154:                a++;
        !           155: 
        !           156:        return (TidyString2(a));
        !           157: }
        !           158: 
        !           159: test_prim_pe (pe,class,id)
        !           160: PE pe;
        !           161: PElementClass class;
        !           162: PElementID id;
        !           163: {
        !           164:        if (pe == NULLPE)
        !           165:                return FALSE;
        !           166: 
        !           167:        if (pe->pe_form != PE_FORM_PRIM) {
        !           168:                LLOG (log_dsap,LLOG_EXCEPTIONS,("Primative Attribute Value expected"));
        !           169:                return FALSE;
        !           170:        }
        !           171: 
        !           172:        if ( PE_ID (pe -> pe_class, pe -> pe_id) != PE_ID (class, id) ) {
        !           173:                LLOG (log_dsap,LLOG_EXCEPTIONS,("Bad class/ID in Attribute Value"));
        !           174:                return FALSE;
        !           175:        }
        !           176: 
        !           177:        return (TRUE);
        !           178:        
        !           179: }
        !           180: 
        !           181: #ifndef lint
        !           182: ps_printf (va_alist)
        !           183: va_dcl
        !           184: {
        !           185:        PS ps;
        !           186:        char buffer [8192];     /* How big should this go !!! */
        !           187:        va_list ap;
        !           188: 
        !           189:        va_start (ap);
        !           190: 
        !           191:        ps = va_arg (ap, PS);
        !           192: 
        !           193:        _asprintf (buffer,NULLCP,ap);
        !           194: 
        !           195:        ps_print (ps,buffer);
        !           196: 
        !           197:        va_end (ap) ;
        !           198: }
        !           199: #else
        !           200: 
        !           201: /* VARARGS2 */
        !           202: ps_printf (ps,fmt)
        !           203: PS ps;
        !           204: char * fmt;
        !           205: {
        !           206: (void) ps_printf (ps,fmt) ;
        !           207: }
        !           208: 
        !           209: #endif
        !           210: 
        !           211: 
        !           212: fatal (code,fmt)
        !           213: int  code;
        !           214: char *fmt;
        !           215: {
        !           216: static char buf [80] = "FATAL ERROR: ";
        !           217: 
        !           218:        (void) strcat (buf,fmt);
        !           219:        LLOG (log_dsap,LLOG_FATAL,(fmt));
        !           220:        (void) fflush (stdout);
        !           221:        (void) fprintf (stderr,"%s\n",buf);
        !           222:        stop_listeners ();
        !           223:        exit (code);
        !           224: }
        !           225: 
        !           226: pslog (lp,event,str,func,ptr)
        !           227: LLog * lp;
        !           228: int event;
        !           229: char * str;
        !           230: int (*func) ();         /* assumes func (PS ,dataptr,(int) format); */
        !           231: caddr_t ptr;
        !           232: {
        !           233:        /* log info to pstream */
        !           234: PS ps;
        !           235: char buffer [LINESIZE];
        !           236: 
        !           237:     if (!(lp -> ll_events & event))
        !           238:        return;
        !           239: 
        !           240:     if ((ps = ps_alloc (str_open)) == NULLPS) {
        !           241:        LLOG (lp,LLOG_EXCEPTIONS,("pslog: can't allocate pstream"));
        !           242:        return ;
        !           243:     }
        !           244:     if (str_setup (ps,buffer,LINESIZE,1) == NOTOK) {
        !           245:        LLOG (lp,LLOG_EXCEPTIONS,("pslog: can't setup pstream"));
        !           246:        return ;
        !           247:     }
        !           248: 
        !           249:     (*func) (ps,ptr,EDBOUT);
        !           250:     *ps->ps_ptr = 0;
        !           251: 
        !           252:     ps_free (ps);
        !           253: 
        !           254:     LLOG (lp,event,("%s: %s",str,buffer));
        !           255: }
        !           256: 
        !           257: stop_listeners ()
        !           258: {
        !           259: struct TSAPdisconnect    td_s;
        !           260: struct TSAPdisconnect  * td = &(td_s);
        !           261: 
        !           262:        /* close all listeners */
        !           263:        (void) TNetClose (NULLTA,td);
        !           264: }
        !           265: 
        !           266: quipu_pe_cmp (a,b)
        !           267: register PE a,b;
        !           268: {
        !           269: char *p,*q;
        !           270: register int j,i;
        !           271: 
        !           272:        /* based on ISODE pe_cmp */
        !           273: 
        !           274:        if ( a == NULLPE) {
        !           275:                if ( b == NULLPE )
        !           276:                        return (0);
        !           277:                else 
        !           278:                        return (1);
        !           279:        }
        !           280:        if ( b == NULLPE)
        !           281:                return (-1);
        !           282: 
        !           283:        if (a->pe_class != b->pe_class)
        !           284:                if (a->pe_class >  b->pe_class)
        !           285:                        return (1) ;
        !           286:                else
        !           287:                        return (-1);
        !           288: 
        !           289:        if (a->pe_form != b->pe_form)
        !           290:                if (a->pe_form >  b->pe_form)
        !           291:                        return (1) ;
        !           292:                else
        !           293:                        return (-1);
        !           294: 
        !           295:        if (a->pe_id != b->pe_id)
        !           296:                if (a->pe_id >  b->pe_id)
        !           297:                        return (1) ;
        !           298:                else
        !           299:                        return (-1);
        !           300: 
        !           301:        switch ( a->pe_form ) {
        !           302:            case PE_FORM_ICONS:
        !           303:                if (a->pe_ilen != a->pe_ilen)
        !           304:                        return (a->pe_ilen > b->pe_ilen ? 1 : -1);
        !           305:            case PE_FORM_PRIM:
        !           306:                if ( (i=a->pe_len) != b->pe_len)
        !           307:                        if (  i > b->pe_len )
        !           308:                                return (1);
        !           309:                        else
        !           310:                                return (-1);
        !           311: 
        !           312:                p = (char *) a->pe_prim;
        !           313:                q = (char *) b->pe_prim;
        !           314: 
        !           315:                for (j=0; j<i; j++) {
        !           316:                        if (*p != *q)
        !           317:                                if ( *p > *q )
        !           318:                                        return (1);
        !           319:                                else
        !           320:                                        return (-1);
        !           321:                        p++;
        !           322:                        q++;
        !           323:                }
        !           324:                return (0) ;
        !           325: 
        !           326:            case PE_FORM_CONS:
        !           327:                for (a=a->pe_cons,b=b->pe_cons; a; a=a->pe_next,b=b->pe_next)
        !           328:                        if ((i = quipu_pe_cmp (a,b)) != 0)
        !           329:                                return (i);
        !           330:                return (b ? 1 : 0);
        !           331:            default:
        !           332:                return (1);
        !           333: 
        !           334:        }
        !           335: }
        !           336: 
        !           337: 
        !           338: IFP acl_fn = NULLIFP;
        !           339: 
        !           340: struct acl_info * acl_dflt ()
        !           341: {
        !           342:        if (acl_fn == NULLIFP)
        !           343:                return ((struct acl_info *) NULL);
        !           344:        else
        !           345:                return ((struct acl_info *)(*acl_fn)());
        !           346: }
        !           347: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.