|
DataMuseum.dkPresents historical artifacts from the history of: Commodore CBM-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Commodore CBM-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 2074 (0x81a) Types: TextFile Notes: UNIX file Names: »parslin.c«
└─⟦f27320a65⟧ Bits:30001972 Commodore 900 hard disk image with partial source code └─⟦f4b8d8c84⟧ UNIX Filesystem └─⟦this⟧ »unimenu/src/menu/parslin.c«
static char SCCSid[] = "@(#)parslin.c 1.1 15:35:12 4/6/85"; /* * Copyright 1984 * * LANTECH Systems, Incoroporated * * Portions Copyright 1985 * * Five Paces Software * * All rights reserved */ /* * function: parslin(cp) * * argh: a pointer to a character array * to be parsed. * * returns: a pointer to a line stuctre. This structure has been * "calloc"ed. * * diagnostics: returns NULL on fatal error, l_type == LERROR * on non-fatal errors. * * History: Original coding July 84 by Robert Adams. * Modifications for windows Mar 95 Dan Mitchell * Porting to Xenix Apr. 85 Dan Mitchell */ # include "defs.h" static struct option options[] = { { "Help", LHELP, 3 }, { "Exec", LEXEC, 3 }, { "Prompt", LPRMPT, 3 }, { "Bad", LBAD, 3 }, { "Columns", LCOL, 3 }, { "Text", LTEXT, 3 }, { "Expl", LEXPL, 3 }, { "Top", LTOP, 3 }, { "Lhcol", LHCOL, 3 }, { "Pwd", LPWD, 3 }, { NULL, LOTHR, 0 } }; struct line_f *parslin (cp) char *cp; { struct line_f *lp; struct option *optp; char *malloc(), *calloc(); char *strchr(), *strcpy(); /* * Steal some memory for the line structure. */ if ( (lp = (struct line_f *) calloc(1, sizeof(struct line_f))) == NULL) x (1, "parslin: calloc: lp"); /* * Steal some memory for the char array */ if ( (lp->l_key = malloc (strlen (cp) + 1)) == NULL) x (1, "parslin: malloc l_key"); strcpy (lp->l_key, cp); /* * Is the line valid, anyway? */ if ((lp->l_val = strchr (lp->l_key, ':')) == NULL) { lp -> l_type = LERROR; return (lp); } /* * since it is, lets set up the value */ *(lp->l_val) = EOS; /* zap the colon */ lp->l_val++; /* and move past it */ /* * eat white space so it doesn't screw my window stuff * drm */ while ( *(lp->l_val) == ' ' || *(lp->l_val) == '\t' ) lp->l_val++; /* * Decide which choice he made. */ for (optp = &options[0]; optp->o_text != NULL; optp++) { if (ncmp (optp->o_text, cp, optp->o_size) == SAME) break; } lp->l_type = optp->o_type; /* * all together, now */ return (lp); }