|
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)); }