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

1.1     ! root        1: #include "quipu/util.h"
        !             2: #include "quipu/name.h"
        !             3: 
        !             4: RDN rdn_merge (a,b)
        !             5: RDN a,b;
        !             6: {
        !             7: register RDN aptr, bptr, result, trail;
        !             8: 
        !             9:        if ( a == NULLRDN )
        !            10:                return (b);
        !            11:        if ( b == NULLRDN )
        !            12:                return (a);
        !            13: 
        !            14:        /* start sequence off, make sure 'a' is the first */
        !            15:        switch (rdn_cmp_comp (a,b)) {
        !            16:                case 0: /* equal */
        !            17:                        result = a;
        !            18:                        aptr = a->rdn_next;
        !            19:                        rdn_comp_free (b);
        !            20:                        bptr = b->rdn_next;
        !            21:                        break;
        !            22:                case -1:
        !            23:                        result = b;
        !            24:                        aptr = a;
        !            25:                        bptr = b->rdn_next;
        !            26:                        break;
        !            27:                case 1:
        !            28:                        result = a;
        !            29:                        aptr = a->rdn_next;
        !            30:                        bptr = b;
        !            31:                        break;
        !            32:                }
        !            33: 
        !            34:        trail = result;
        !            35:        while (  (aptr != NULLRDN) && (bptr != NULLRDN) ) {
        !            36: 
        !            37:           switch (rdn_cmp_comp (aptr,bptr)) {
        !            38:                case 0: /* equal */
        !            39:                        trail->rdn_next = aptr;
        !            40:                        trail = aptr;
        !            41:                        rdn_comp_free (bptr);
        !            42:                        aptr = aptr->rdn_next;
        !            43:                        bptr = bptr->rdn_next;
        !            44:                        break;
        !            45:                case -1:
        !            46:                        trail->rdn_next = bptr;
        !            47:                        trail = bptr;
        !            48:                        bptr = bptr->rdn_next;
        !            49:                        break;
        !            50:                case 1:
        !            51:                        trail->rdn_next = aptr;
        !            52:                        trail = aptr;
        !            53:                        aptr = aptr->rdn_next;
        !            54:                        break;
        !            55:            }
        !            56:        }
        !            57:        if (aptr == NULLRDN)
        !            58:                trail->rdn_next = bptr;
        !            59:        else
        !            60:                trail->rdn_next = aptr;
        !            61: 
        !            62:        return (result);
        !            63: }
        !            64: 

unix.superglobalmegacorp.com

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