|
|
1.1 ! root 1: #include "quipu/util.h" ! 2: #include "quipu/attrvalue.h" ! 3: ! 4: short oc_sntx = -1; ! 5: IFP oc_hier = NULLIFP; ! 6: short acl_sntx = -1; ! 7: IFP merge_acl = NULLIFP; ! 8: ! 9: AV_Sequence str2avs (str,at) ! 10: char * str; ! 11: AttributeType at; ! 12: { ! 13: char * ptr; ! 14: char * save,val; ! 15: AV_Sequence avs = NULLAV; ! 16: AV_Sequence newavs; ! 17: ! 18: if (str == NULLCP) ! 19: return (NULLAV); ! 20: ! 21: if ((at) && (at->oa_syntax == oc_sntx)) ! 22: return ((AV_Sequence)(*oc_hier)(str)); ! 23: ! 24: while ((ptr = index (str,'&')) != 0) { ! 25: save = ptr++; ! 26: save--; ! 27: if (! isspace (*save)) ! 28: save++; ! 29: val = *save; ! 30: *save = 0; ! 31: ! 32: if ((avs) && (at->oa_syntax == acl_sntx)) { ! 33: (*merge_acl)(avs,SkipSpace(str)); ! 34: *save = val; ! 35: str = ptr; ! 36: continue; ! 37: } ! 38: ! 39: newavs = avs_comp_alloc(); ! 40: newavs->avseq_next = NULLAV; ! 41: ! 42: if (str_at2AttrV_aux (str,at,&newavs->avseq_av) == NOTOK) ! 43: return (NULLAV); ! 44: ! 45: *save = val; ! 46: str = ptr; ! 47: avs = avs_merge (avs,newavs); ! 48: } ! 49: ! 50: if ((avs) && (at->oa_syntax == acl_sntx)) { ! 51: (*merge_acl)(avs,SkipSpace(str)); ! 52: return (avs); ! 53: } ! 54: ! 55: newavs = avs_comp_alloc(); ! 56: newavs->avseq_next = NULLAV; ! 57: ! 58: if (str_at2AttrV_aux (str,at,&newavs->avseq_av) == NOTOK) ! 59: return (NULLAV); ! 60: ! 61: return (avs_merge (avs,newavs)); ! 62: ! 63: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.