FreeCalypso > hg > fc-sim-tools
diff libcommon/be_init.c @ 9:c9ef9e91dd8e
new libcommon, initial version
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 14 Mar 2021 06:55:38 +0000 |
parents | |
children | e2ef4b8e4136 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libcommon/be_init.c Sun Mar 14 06:55:38 2021 +0000 @@ -0,0 +1,59 @@ +/* + * This module is responsible for collecting the initial info + * strings emitted by the back end. + */ + +#include <ctype.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <strings.h> + +extern FILE *rpipeF; + +#define MAX_INIT_STRING 254 + +char be_reader_name[MAX_INIT_STRING+1]; +char be_atr_string[MAX_INIT_STRING+1]; + +static void +copy_without_leading_space(input_str, dest) + char *input_str, *dest; +{ + char *cp; + + for (cp = input_str; isspace(*cp); cp++) + ; + strcpy(dest, cp); +} + +collect_backend_init_strings() +{ + char inbuf[MAX_INIT_STRING+2], *cp; + + for (;;) { + if (!fgets(inbuf, sizeof inbuf, rpipeF)) { + fprintf(stderr, + "start-up error: EOF reading init strings from back end\n"); + exit(1); + } + cp = index(inbuf, '\n'); + if (!cp) { + fprintf(stderr, + "start-up error: init string from back end has no newline\n"); + exit(1); + } + *cp = '\0'; + if (!inbuf[0]) + break; + switch (inbuf[0]) { + case 'A': + copy_without_leading_space(inbuf + 1, be_atr_string); + break; + case 'R': + copy_without_leading_space(inbuf + 1, be_reader_name); + break; + } + } + return(0); +}