FreeCalypso > hg > fc-sim-tools
view libcommon/be_init.c @ 58:871281cb0555
doc/Low-level-commands: apdu-checksw documented
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 23 Mar 2021 00:21:02 +0000 |
parents | e2ef4b8e4136 |
children |
line wrap: on
line source
/* * 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]; char be_extra_info[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; case 'X': copy_without_leading_space(inbuf + 1, be_extra_info); break; } } return(0); }