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 o

⟦75e99a770⟧ TextFile

    Length: 1744 (0x6d0)
    Types: TextFile
    Names: »or_dmn2or.c«

Derivation

└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
    └─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z« 
        └─⟦e5a54fb17⟧ 
            └─⟦this⟧ »pp-5.0/Lib/or/or_dmn2or.c« 

TextFile

/* or_dmn2or: convert dmn form to or list */

# ifndef lint
static char Rcsid[] = "@(#)$Header: /cs/research/pp/hubris/pp-beta/Lib/or/RCS/or_dmn2or.c,v 5.0 90/09/20 16:08:03 pp Exp Locker: pp $";
# endif

/*
 * $Header: /cs/research/pp/hubris/pp-beta/Lib/or/RCS/or_dmn2or.c,v 5.0 90/09/20 16:08:03 pp Exp Locker: pp $
 *
 * $Log:	or_dmn2or.c,v $
 * Revision 5.0  90/09/20  16:08:03  pp
 * rcsforce : 5.0 public release
 * 
 */



#include "or.h"
#include "util.h"

OR_ptr or_dmn2or (istr)
char            *istr;
{
    OR_ptr      tree,
		part;
    char        *sargv[50],
		*valptr,
		str[LINESIZE];
    int         count,
		ortype,
		sargc;

    PP_DBG (("or_util.c/or_dmn2or (%s)", istr));

    (void) strcpy (str, istr);

    /*
    sstr2arg isn't nice, add cheks for legal char set
    */

    tree = NULLOR;
    sargc = sstr2arg (str, 49, sargv, ".");

    for (count = 0; count < sargc; count++) {

	PP_DBG (("or_util.c/or_dmn2or Component '%s'", sargv[sargc]));

	valptr = index (sargv[count], '$');

	if (valptr == NULLCP) {
	    PP_LOG (LLOG_EXCEPTIONS,
			("or_util.c/or_dmn2or No dollar in dmn encoding"));
	    or_free (tree);
	    return NULLOR;
	}

	*valptr = '\0';
	valptr++;

	/*
	domain defined
	*/

	if (sargv[count][0] == '~') {
		part = or_new (OR_DD, &sargv[count][1], valptr);
		if ((tree = or_add (tree, part, TRUE)) == NULLOR)
			return NULLOR;
	}
	else {
		ortype = or_name2type (sargv[count]);

		if (ortype == NOTOK) {
			PP_LOG (LLOG_EXCEPTIONS,
				("or_util.c/or_dmn2or Unknown type '%s'",
				sargv[count]));
			or_free (tree);
			return NULLOR;
		}

		part = or_new (ortype, NULLCP, valptr);
		if ((tree = or_add (tree, part, TRUE)) == NULLOR)
			return NULLOR;
	}

    }  /* end of for */

    return (tree);
}