|
|
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 a
Length: 1224 (0x4c8)
Types: TextFile
Names: »avs_str.c«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦35176feda⟧ »EurOpenD22/isode/isode-6.tar.Z«
└─⟦de7628f85⟧
└─⟦this⟧ »isode-6.0/dsap/common/avs_str.c«
#include "quipu/util.h"
#include "quipu/attrvalue.h"
short oc_sntx = -1;
IFP oc_hier = NULLIFP;
short acl_sntx = -1;
IFP merge_acl = NULLIFP;
AV_Sequence str2avs (str,at)
char * str;
AttributeType at;
{
char * ptr;
char * save,val;
AV_Sequence avs = NULLAV;
AV_Sequence newavs;
if (str == NULLCP)
return (NULLAV);
if ((at->at_table) && (at->at_table->oa_syntax == oc_sntx))
return ((AV_Sequence)(*oc_hier)(str));
while ((ptr = index (str,'&')) != 0) {
save = ptr++;
save--;
if (! isspace (*save))
save++;
val = *save;
*save = 0;
if ((avs) && (at->at_table) && (at->at_table->oa_syntax == acl_sntx)) {
(*merge_acl)(avs,SkipSpace(str));
*save = val;
str = ptr;
continue;
}
newavs = avs_comp_alloc();
newavs->avseq_next = NULLAV;
if (str_at2AttrV_aux (str,at,&newavs->avseq_av) == NOTOK)
return (NULLAV);
*save = val;
str = ptr;
avs = avs_merge (avs,newavs);
}
if ((avs) && (at->at_table) && (at->at_table->oa_syntax == acl_sntx)) {
(*merge_acl)(avs,SkipSpace(str));
return (avs);
}
newavs = avs_comp_alloc();
newavs->avseq_next = NULLAV;
if (str_at2AttrV_aux (str,at,&newavs->avseq_av) == NOTOK)
return (NULLAV);
return (avs_merge (avs,newavs));
}