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

1.1     ! root        1: #include "quipu/util.h"
        !             2: #include "quipu/attrvalue.h"
        !             3: #include "quipu/dsp.h"        /* for ds_error.h */
        !             4: #include "quipu/ds_error.h"
        !             5: 
        !             6: extern LLog * log_dsap;
        !             7: 
        !             8: AV_Sequence avs_merge (a,b)
        !             9: AV_Sequence a,b;
        !            10: {
        !            11: register AV_Sequence aptr, bptr, result, trail, tmp;
        !            12: 
        !            13:        if ( a == NULLAV )
        !            14:                return (b);
        !            15:        if ( b == NULLAV )
        !            16:                return (a);
        !            17: 
        !            18:        /* start sequence off, make sure 'a' is the first */
        !            19:        switch (avs_cmp_comp (a,b)) {
        !            20:                default:
        !            21:                        LLOG (log_dsap,LLOG_EXCEPTIONS,("invalid syntax")) ;
        !            22:                        /* continue as if equal */
        !            23: 
        !            24:                case 0: /* equal */
        !            25:                        result = a;
        !            26:                        aptr = a->avseq_next;
        !            27:                        bptr = b->avseq_next;
        !            28:                        avs_comp_free (b);
        !            29:                        break;
        !            30:                case -1:
        !            31:                        result = b;
        !            32:                        aptr = a;
        !            33:                        bptr = b->avseq_next;
        !            34:                        break;
        !            35:                case 2: /* no compare function defined - treat as if a > b */
        !            36:                case 1:
        !            37:                        result = a;
        !            38:                        aptr = a->avseq_next;
        !            39:                        bptr = b;
        !            40:                        break;
        !            41:                }
        !            42: 
        !            43:        trail = result;
        !            44:        while (  (aptr != NULLAV) && (bptr != NULLAV) ) {
        !            45: 
        !            46:           switch (avs_cmp_comp (aptr,bptr)) {
        !            47:                default:
        !            48:                        LLOG (log_dsap,LLOG_EXCEPTIONS,("invalid syntax")) ;
        !            49:                        /* continue as if equal */
        !            50: 
        !            51:                case 0: /* equal */
        !            52:                        trail->avseq_next = aptr;
        !            53:                        trail = aptr;
        !            54:                        tmp = bptr->avseq_next;
        !            55:                        avs_comp_free (bptr);
        !            56:                        aptr = aptr->avseq_next;
        !            57:                        bptr = tmp;
        !            58:                        break;
        !            59:                case -1:
        !            60:                        trail->avseq_next = bptr;
        !            61:                        trail = bptr;
        !            62:                        bptr = bptr->avseq_next;
        !            63:                        break;
        !            64:                case 2: /* no compare function defined - treat as if a > b */
        !            65:                case 1:
        !            66:                        trail->avseq_next = aptr;
        !            67:                        trail = aptr;
        !            68:                        aptr = aptr->avseq_next;
        !            69:                        break;
        !            70:            }
        !            71:        }
        !            72:        if (aptr == NULLAV)
        !            73:                trail->avseq_next = bptr;
        !            74:        else
        !            75:                trail->avseq_next = aptr;
        !            76: 
        !            77:        return (result);
        !            78: }
        !            79: 
        !            80: 

unix.superglobalmegacorp.com

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