FreeCalypso > hg > ueda-linux
diff ueda/unet-bind/enterinst.c @ 101:ffab0a4424ad
ueda: unet-bind program moved into sensibly named unet-bind subdir
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 29 Sep 2019 22:42:41 +0000 |
parents | ueda/sverp-bind/enterinst.c@ce887659d12e |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ueda/unet-bind/enterinst.c Sun Sep 29 22:42:41 2019 +0000 @@ -0,0 +1,83 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <strings.h> +#include "struct.h" + +extern char *copystr(); +extern struct instance *enter_instance(); + +process_hier_attr(oc, hier) + register struct outcomp *oc; + char *hier; +{ + register struct instance *inst; + + if (!strncmp(hier, "flip:", 5)) { + if (oc->npins != 2 || oc->grid_pkg) { + fprintf(stderr, + "error: hier=flip:... makes no sense for %s\n", + oc->name); + exit(1); + } + oc->reverse_2pin = 1; + hier += 5; + } + oc->altname = hier; + inst = enter_instance(hier); + inst->outcomp = oc; +} + +process_slotmap_attr(oc, slotmap_file) + struct outcomp *oc; + char *slotmap_file; +{ + FILE *stream; + char linebuf[256]; + int lineno; + register char *cp; + char *instname, *slot; + register struct instance *inst; + + stream = fopen(slotmap_file, "r"); + if (!stream) { + perror(slotmap_file); + exit(1); + } + for (lineno = 1; fgets(linebuf, sizeof linebuf, stream); lineno++) { + cp = index(linebuf, '\n'); + if (!cp) { + fprintf(stderr, + "error: %s line %d is too long or unterminated\n", + slotmap_file, lineno); + exit(1); + } + *cp = '\0'; + for (cp = linebuf; isspace(*cp); cp++) + ; + if (*cp == '\0' || *cp == '#') + continue; + instname = cp; + while (*cp && !isspace(*cp)) + cp++; + if (*cp) + *cp++ = '\0'; + while (isspace(*cp)) + cp++; + if (*cp == '\0' || *cp == '#') + slot = 0; + else { + slot = cp; + while (*cp && !isspace(*cp)) + cp++; + if (*cp) + *cp++ = '\0'; + } + inst = enter_instance(instname); + inst->outcomp = oc; + if (slot) + slot = copystr(slot); + inst->slot = slot; + } + fclose(stream); +}