|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T d
Length: 3387 (0xd3b)
Types: TextFile
Names: »dn_print.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z«
└─⟦e5a54fb17⟧
└─⟦this⟧ »pp-5.0/Chans/dirlist/dn_print.c«
/* dn_print.c */
# ifndef lint
static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Chans/dirlist/RCS/dn_print.c,v 5.0 90/09/20 15:45:47 pp Exp Locker: pp $";
# endif
/*
* $Header: /cs/research/pp/hubris/pp-beta/Chans/dirlist/RCS/dn_print.c,v 5.0 90/09/20 15:45:47 pp Exp Locker: pp $
*
* $Log: dn_print.c,v $
* Revision 5.0 90/09/20 15:45:47 pp
* rcsforce : 5.0 public release
*
*/
#include <isode/quipu/util.h>
#include <isode/quipu/name.h>
#include "dlist.h"
dn_print (ps,dn,format)
DN dn;
PS ps;
int format;
{
register DN eptr;
if (dn == NULLDN) {
if (format == READOUT)
ps_print (ps,"NULL DN");
return ;
}
if (format == UFNOUT) {
ufn_dn_print (ps, dn, 1);
return;
}
dn_comp_print (ps,dn,format);
if (dn->dn_parent != NULLDN)
for (eptr = dn->dn_parent; eptr != NULLDN; eptr = eptr->dn_parent) {
switch (format) {
case DIROUT: ps_print (ps,"/"); break;
case FILEOUT:
case RDNOUT:
case EDBOUT: ps_print (ps,"@"); break;
case READOUT: ps_print (ps,"\n\t\t\t"); break;
}
dn_comp_print (ps,eptr,format);
}
}
/* \f
*/
static DN localdn = NULLDN;
extern char * local_dit;
ufn_dn_print (ps,dn,multiline)
PS ps;
DN dn;
char multiline;
{
if (dn == NULLDN)
return;
if (localdn == NULLDN)
localdn = str2dn (local_dit);
(void) ufn_dn_print_aux (ps,dn,localdn,multiline);
}
int ufn_indent = 16;
ufn_dn_print_aux (ps,dn,marker,multiline)
PS ps;
DN dn;
DN marker;
int multiline;
{
DN next = NULLDN;
char res = 0;
char this_one = TRUE;
if ((marker != NULLDN) && (dn_comp_cmp(dn,marker) == 0)) {
next = marker->dn_parent;
if (dn->dn_parent != NULLDN)
this_one = FALSE;
}
if (dn->dn_parent != NULLDN)
res = ufn_dn_print_aux (ps,dn->dn_parent,next,multiline);
if (this_one) {
if (res) {
if (multiline) {
if (res > 1) {
ps_printf (ps,",\n");
if (ufn_indent > 0)
ps_printf (ps, "%*s", ufn_indent, "");
} else
ps_print (ps,",\t");
} else
ps_print (ps,", ");
}
ufn_rdn_print (ps,dn->dn_rdn);
}
return ++res;
}
ufn_rdn_print (ps,rdn)
RDN rdn;
PS ps;
{
register RDN eptr;
if (rdn == NULLRDN)
return;
AttrV_print (ps,&rdn->rdn_av,READOUT);
if (rdn->rdn_next != NULLRDN)
for (eptr=rdn->rdn_next; eptr!=NULLRDN; eptr=eptr->rdn_next) {
ps_print (ps," + ");
AttrV_print (ps,&eptr->rdn_av,READOUT);
}
}
static PS ps = NULLPS;
char *dn2str (dn)
DN dn;
{
char *cp;
if (ps == NULL
&& ((ps = ps_alloc (str_open)) == NULLPS)
|| str_setup (ps, NULLCP, BUFSIZ, 0) == NOTOK) {
if (ps)
ps_free (ps), ps = NULLPS;
return NULLCP;
}
dn_print (ps, dn, EDBOUT);
ps_print (ps, " ");
*--ps -> ps_ptr = NULL, ps -> ps_cnt++;
cp = ps -> ps_base;
ps -> ps_base = NULL, ps -> ps_cnt = 0;
ps -> ps_ptr = NULL, ps -> ps_bufsiz = 0;
return cp;
}
char *dn2ufn (dn,multiline)
DN dn;
char multiline;
{
char *cp;
if (ps == NULL
&& ((ps = ps_alloc (str_open)) == NULLPS)
|| str_setup (ps, NULLCP, BUFSIZ, 0) == NOTOK) {
if (ps)
ps_free (ps), ps = NULLPS;
return NULLCP;
}
ufn_dn_print (ps, dn, multiline);
ps_print (ps, " ");
*--ps -> ps_ptr = NULL, ps -> ps_cnt++;
cp = ps -> ps_base;
ps -> ps_base = NULL, ps -> ps_cnt = 0;
ps -> ps_ptr = NULL, ps -> ps_bufsiz = 0;
return cp;
}