Annotation of 43BSDReno/contrib/isode-beta/dsap/common/dn_print.c, revision 1.1.1.1

1.1       root        1: #include "quipu/util.h"
                      2: #include "quipu/name.h"
                      3: 
                      4: dn_print (ps,dn,format)
                      5: DN  dn;
                      6: PS   ps;
                      7: int  format;
                      8: {
                      9: register DN eptr;
                     10: 
                     11:        if (dn == NULLDN) {
                     12:                if (format == READOUT)
                     13:                        ps_print (ps,"NULL DN");
                     14:                return ;
                     15:        }
                     16: 
                     17:        if (format == UFNOUT) {
                     18:            ufn_dn_print (ps, dn, 1);
                     19:            return;
                     20:        }
                     21: 
                     22:        dn_comp_print (ps,dn,format);
                     23:        if (dn->dn_parent != NULLDN)
                     24:                for (eptr = dn->dn_parent; eptr != NULLDN; eptr = eptr->dn_parent) {
                     25:                        switch (format) {
                     26:                                case DIROUT:  ps_print (ps,"/"); break;
                     27:                                case FILEOUT:
                     28:                                case RDNOUT:
                     29:                                case EDBOUT:  ps_print (ps,"@"); break;
                     30:                                case READOUT: ps_print (ps,"\n\t\t\t"); break;
                     31:                        }
                     32:                        dn_comp_print (ps,eptr,format);
                     33:                }
                     34: }
                     35: 
                     36: /*  */
                     37: 
                     38: static DN localdn = NULLDN;
                     39: extern char * local_dit;
                     40: 
                     41: ufn_dn_print (ps,dn,multiline)
                     42: PS  ps;
                     43: DN  dn;
                     44: int multiline;
                     45: {
                     46:        if (dn == NULLDN)
                     47:                return;
                     48:                
                     49:        if (localdn == NULLDN) 
                     50:                localdn = str2dn (local_dit);
                     51: 
                     52:        (void) ufn_dn_print_aux (ps,dn,localdn,multiline);
                     53: }
                     54: 
                     55: 
                     56: int    ufn_indent = 16;
                     57: 
                     58: ufn_dn_print_aux (ps,dn,marker,multiline)
                     59: PS  ps;
                     60: DN  dn;
                     61: DN marker;
                     62: int    multiline;
                     63: {
                     64: DN next = NULLDN;
                     65: char res = 0;
                     66: char this_one = TRUE;
                     67: 
                     68:        if ((marker != NULLDN) && (dn_comp_cmp(dn,marker) == 0)) {
                     69:                next = marker->dn_parent;
                     70:                if (dn->dn_parent != NULLDN)
                     71:                        this_one = FALSE;
                     72:        }
                     73: 
                     74:        if (dn->dn_parent != NULLDN)
                     75:                res = ufn_dn_print_aux (ps,dn->dn_parent,next,multiline);
                     76: 
                     77:        if (this_one) {
                     78:                if (res) {
                     79:                        if (multiline < 0 || (multiline && res > 1)) {
                     80:                                        ps_printf (ps,",\n");
                     81:                                        if (ufn_indent > 0)
                     82:                                            ps_printf (ps, "%*s", ufn_indent, "");
                     83:                        } else
                     84:                                ps_print (ps,", ");
                     85:                } 
                     86:                ufn_rdn_print (ps,dn->dn_rdn);
                     87:        }
                     88:        return ++res;
                     89: }
                     90: 
                     91: 
                     92: ufn_rdn_print (ps,rdn)
                     93: RDN  rdn;
                     94: PS   ps;
                     95: {
                     96: register RDN eptr;
                     97: 
                     98:        if (rdn ==  NULLRDN) 
                     99:                return;
                    100: 
                    101:        AttrV_print (ps,&rdn->rdn_av,READOUT);
                    102: 
                    103:        if (rdn->rdn_next != NULLRDN)
                    104:                for (eptr=rdn->rdn_next; eptr!=NULLRDN; eptr=eptr->rdn_next) {
                    105:                        ps_print (ps," + "); 
                    106:                        AttrV_print (ps,&eptr->rdn_av,READOUT);
                    107:                }
                    108: 
                    109: }
                    110: 
                    111: static PS ps = NULLPS;
                    112: 
                    113: char   *dn2str (dn)
                    114: DN     dn;
                    115: {
                    116:     char       *cp;
                    117: 
                    118:     if (ps == NULL
                    119:            && ((ps = ps_alloc (str_open)) == NULLPS)
                    120:                    || str_setup (ps, NULLCP, BUFSIZ, 0) == NOTOK) {
                    121:        if (ps)
                    122:            ps_free (ps), ps = NULLPS;
                    123: 
                    124:        return NULLCP;
                    125:     }
                    126: 
                    127:     dn_print (ps, dn, EDBOUT);
                    128:     ps_print (ps, " ");
                    129:     *--ps -> ps_ptr = NULL, ps -> ps_cnt++;
                    130: 
                    131:     cp = ps -> ps_base;
                    132: 
                    133:     ps -> ps_base = NULL, ps -> ps_cnt = 0;
                    134:     ps -> ps_ptr = NULL, ps -> ps_bufsiz = 0;
                    135: 
                    136:     return cp;
                    137: }
                    138: 
                    139: char   *dn2ufn (dn,multiline)
                    140: DN     dn;
                    141: int    multiline;
                    142: {
                    143:     char       *cp;
                    144: 
                    145:     if (ps == NULL
                    146:            && ((ps = ps_alloc (str_open)) == NULLPS)
                    147:                    || str_setup (ps, NULLCP, BUFSIZ, 0) == NOTOK) {
                    148:        if (ps)
                    149:            ps_free (ps), ps = NULLPS;
                    150: 
                    151:        return NULLCP;
                    152:     }
                    153: 
                    154:     ufn_dn_print (ps, dn, multiline);
                    155:     ps_print (ps, " ");
                    156:     *--ps -> ps_ptr = NULL, ps -> ps_cnt++;
                    157: 
                    158:     cp = ps -> ps_base;
                    159: 
                    160:     ps -> ps_base = NULL, ps -> ps_cnt = 0;
                    161:     ps -> ps_ptr = NULL, ps -> ps_bufsiz = 0;
                    162: 
                    163:     return cp;
                    164: }

unix.superglobalmegacorp.com

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