Annotation of 43BSDReno/contrib/isode-beta/dsap/common/avs_merge.c, revision 1.1.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.