DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T a

⟦9cfaeffaa⟧ TextFile

    Length: 1224 (0x4c8)
    Types: TextFile
    Names: »avs_str.c«

Derivation

└─⟦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« 

TextFile

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

}