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

1.1     ! root        1: /* correlate.c - correlate search results */
        !             2: 
        !             3: #ifndef        lint
        !             4: static char *rcsid = "$Header: /f/osi/dsap/common/RCS/correlate.c,v 7.1 90/07/09 14:34:13 mrose Exp $";
        !             5: #endif
        !             6: 
        !             7: /* 
        !             8:  * $Header: /f/osi/dsap/common/RCS/correlate.c,v 7.1 90/07/09 14:34:13 mrose Exp $
        !             9:  *
        !            10:  *
        !            11:  * $Log:       correlate.c,v $
        !            12:  * Revision 7.1  90/07/09  14:34:13  mrose
        !            13:  * sync
        !            14:  * 
        !            15:  * Revision 7.0  89/11/23  21:41:58  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/list.h"      /* to get LSR # defs */
        !            35: #include "quipu/ds_search.h"
        !            36: 
        !            37: extern LLog * log_dsap;
        !            38: int    entryinfo_print();
        !            39: int    dn_print();
        !            40: 
        !            41: correlate_search_results(sr_res)
        !            42: struct ds_search_result        * sr_res;
        !            43: {
        !            44:     struct ds_search_result    * sr_tmp;
        !            45:     struct ds_search_result    * sr_last;
        !            46: 
        !            47:     DLOG(log_dsap, LLOG_DEBUG, ("correlate_search_results() "));
        !            48: 
        !            49:     if(sr_res->srr_correlated)
        !            50:     {
        !            51:        DLOG(log_dsap, LLOG_DEBUG, ("Already correlated! "));
        !            52:        return;
        !            53:     }
        !            54: 
        !            55:     DLOG(log_dsap, LLOG_DEBUG, ("Not yet correlated! "));
        !            56: 
        !            57:     for(sr_tmp = sr_res->srr_un.srr_parts; sr_tmp != NULLSRR; sr_tmp = sr_tmp->srr_next)
        !            58:     {
        !            59:        DLOG(log_dsap, LLOG_DEBUG, ("correlate_search_results(A Result Part)"));
        !            60:        correlate_search_results(sr_tmp);
        !            61:     }
        !            62: 
        !            63:     sr_tmp = sr_res->srr_un.srr_parts;
        !            64:     sr_res->srr_correlated = TRUE;
        !            65:     sr_res->srr_un.srr_unit = (struct ds_search_unit *) malloc(sizeof(struct ds_search_unit));
        !            66:     sr_res->CSR_object = NULLDN;
        !            67:     sr_res->CSR_entries = NULLENTRYINFO;
        !            68:     sr_res->CSR_limitproblem = LSR_NOLIMITPROBLEM;
        !            69:     sr_res->CSR_cr = NULLCONTINUATIONREF;
        !            70:     sr_res->CSR_common.cr_requestor = NULLDN;
        !            71:     sr_res->CSR_common.cr_aliasdereferenced = FALSE;
        !            72: 
        !            73:     while(sr_tmp != NULLSRR)
        !            74:     {
        !            75:        merge_search_results(sr_res, sr_tmp);
        !            76:        sr_last = sr_tmp;
        !            77:        sr_tmp = sr_tmp->srr_next;
        !            78:        sr_last->srr_next = NULLSRR;
        !            79:        DLOG(log_dsap, LLOG_DEBUG, ("Before search_results_free"));
        !            80:        search_result_free(sr_last);
        !            81:        DLOG(log_dsap, LLOG_DEBUG, ("After search_results_free"));
        !            82:     }
        !            83: }
        !            84: 
        !            85: merge_search_results(sr_res, sr_tmp)
        !            86: struct ds_search_result        * sr_res;
        !            87: struct ds_search_result        * sr_tmp;
        !            88: {
        !            89:     ContinuationRef            cr_tmp;
        !            90: 
        !            91:     DLOG(log_dsap, LLOG_DEBUG, ("merge_search_results"));
        !            92: 
        !            93:     if(sr_tmp == NULLSRR)
        !            94:        return;
        !            95: 
        !            96:     if (sr_res->CSR_entries == NULLENTRYINFO)
        !            97:     {
        !            98:        DLOG(log_dsap, LLOG_DEBUG, ("Before inserting entries"));
        !            99:        sr_res->CSR_entries = sr_tmp->CSR_entries;
        !           100:     }
        !           101:     else
        !           102:     {
        !           103: #ifdef DEBUG
        !           104:        pslog(log_dsap, LLOG_DEBUG, "Before merging entries", entryinfo_print, (caddr_t) sr_res->CSR_entries);
        !           105: #endif
        !           106:        entryinfo_merge (sr_res->CSR_entries,sr_tmp->CSR_entries);
        !           107:     }
        !           108:     sr_tmp->CSR_entries = NULLENTRYINFO;
        !           109: 
        !           110:     DLOG(log_dsap, LLOG_DEBUG, ("Before merging limitproblems"));
        !           111: 
        !           112:     if(sr_res->CSR_limitproblem == LSR_NOLIMITPROBLEM)
        !           113:         sr_res->CSR_limitproblem = sr_tmp->CSR_limitproblem;
        !           114: 
        !           115:     DLOG(log_dsap, LLOG_DEBUG, ("Before merging ContinuationRefs"));
        !           116: 
        !           117:     if(sr_tmp->CSR_cr != NULLCONTINUATIONREF)
        !           118:     {
        !           119:        for(cr_tmp = sr_tmp->CSR_cr; cr_tmp->cr_next != NULLCONTINUATIONREF; cr_tmp = cr_tmp->cr_next)
        !           120:        {
        !           121: #ifdef DEBUG
        !           122:            pslog(log_dsap, LLOG_DEBUG, "Another new ref:", dn_print, (caddr_t) cr_tmp->cr_name);
        !           123: #endif
        !           124:        }
        !           125: #ifdef DEBUG
        !           126:        pslog(log_dsap, LLOG_DEBUG, "Another new ref:", dn_print, (caddr_t) cr_tmp->cr_name);
        !           127: #endif
        !           128:        cr_tmp->cr_next = sr_res->CSR_cr;
        !           129:        sr_res->CSR_cr = sr_tmp->CSR_cr;
        !           130:        sr_tmp->CSR_cr = NULLCONTINUATIONREF;
        !           131:     }
        !           132:     else
        !           133:     {
        !           134:        DLOG(log_dsap, LLOG_DEBUG, ("No new references to merge"));
        !           135:     }
        !           136: 
        !           137: #ifdef DEBUG
        !           138:     if(sr_res->CSR_cr != NULLCONTINUATIONREF)
        !           139:     {
        !           140:        for(cr_tmp = sr_res->CSR_cr; cr_tmp != NULLCONTINUATIONREF; cr_tmp = cr_tmp->cr_next)
        !           141:        {
        !           142:            pslog(log_dsap, LLOG_DEBUG, "ref entry:", dn_print, (caddr_t) cr_tmp->cr_name);
        !           143:        }
        !           144:     }
        !           145:     else
        !           146:     {
        !           147:        DLOG(log_dsap, LLOG_DEBUG, ("No references"));
        !           148:     }
        !           149: #endif
        !           150:     DLOG(log_dsap, LLOG_DEBUG, ("After merging results:"));
        !           151: 
        !           152: }
        !           153: 
        !           154: search_result_free(arg)
        !           155: struct ds_search_result        * arg;
        !           156: {
        !           157:     DLOG(log_dsap, LLOG_DEBUG, ("search_result_free"));
        !           158: 
        !           159:     if(arg == NULLSRR)
        !           160:     {
        !           161:        LLOG(log_dsap, LLOG_EXCEPTIONS, ("Lost part of search structure somewhere!"));
        !           162:        return;
        !           163:     }
        !           164: 
        !           165:     if(arg->srr_correlated)
        !           166:     {
        !           167:        DLOG(log_dsap, LLOG_DEBUG, ("search_result_free - correlated"));
        !           168: /*
        !           169:        dn_free (arg->CSR_common.cr_requestor);
        !           170: */
        !           171:        dn_free (arg->CSR_object);
        !           172:        entryinfo_free (arg->CSR_entries,0);
        !           173:        crefs_free (arg->CSR_cr);
        !           174:        free((char *)arg->srr_un.srr_unit);
        !           175:     }
        !           176:     else
        !           177:     {
        !           178:        DLOG(log_dsap, LLOG_DEBUG, ("search_result_free - uncorrelated"));
        !           179:        search_result_free(arg->srr_un.srr_parts);
        !           180:        free((char *)arg->srr_un.srr_parts);
        !           181:     }
        !           182: 
        !           183:     DLOG(log_dsap, LLOG_DEBUG, ("After freeing parts"));
        !           184: 
        !           185:     if(arg->srr_next != NULLSRR)
        !           186:     {
        !           187:        search_result_free(arg->srr_next);
        !           188:        free((char *)arg->srr_next);
        !           189:     }
        !           190: 
        !           191:     DLOG(log_dsap, LLOG_DEBUG, ("After freeing next"));
        !           192: 
        !           193:     return;
        !           194: }
        !           195: 

unix.superglobalmegacorp.com

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