FreeCalypso > hg > freecalypso-tools
diff librftab/rftablerd.c @ 314:a0f79bba0ad8
librftab: reading of Tx ramp template files split from rftablerd module
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Wed, 22 Nov 2017 18:12:04 +0000 |
parents | 64bb50fc470f |
children | 059649902c7f |
line wrap: on
line diff
--- a/librftab/rftablerd.c Wed Nov 22 06:23:52 2017 +0000 +++ b/librftab/rftablerd.c Wed Nov 22 18:12:04 2017 +0000 @@ -12,65 +12,12 @@ #include <stdlib.h> #include "../rvinterf/include/exitcodes.h" -#define MAX_FIELDS_PER_LINE 64 +#include "rdcommon.c" -static char *filename; -static FILE *rdfile; -static unsigned lineno; -static char linebuf[256], *line_fields[MAX_FIELDS_PER_LINE]; -static unsigned line_nfields, line_field_ptr; static char *format; static u_char *writeptr; static unsigned written_size, maxsize; -static int -read_line() -{ - char *cp; - - if (!fgets(linebuf, sizeof linebuf, rdfile)) - return(0); - lineno++; - cp = linebuf; - for (line_nfields = 0; ; ) { - while (isspace(*cp)) - cp++; - if (*cp == '\0' || *cp == '#') - break; - if (line_nfields >= MAX_FIELDS_PER_LINE) { - printf("%s line %d: too many fields on one line\n", - filename, lineno); - return(-1); - } - line_fields[line_nfields++] = cp; - while (*cp && !isspace(*cp)) - cp++; - if (*cp) - *cp++ = '\0'; - } - return(1); -} - -static -get_field(retp) - char **retp; -{ - int rc; - - if (line_field_ptr < line_nfields) { - *retp = line_fields[line_field_ptr++]; - return(1); - } - do { - rc = read_line(); - if (rc <= 0) - return(rc); - } while (!line_nfields); - *retp = line_fields[0]; - line_field_ptr = 1; - return(1); -} - static process_number(size) { @@ -423,89 +370,3 @@ *size_ret = written_size; return(rc); } - -static -process_txramp_number() -{ - char *field; - int rc; - u_long number; - - rc = get_field(&field); - if (rc < 0) - return(ERROR_USAGE); - if (!rc) { - printf("error: %s is too short for a Tx ramp template\n", - filename); - return(ERROR_USAGE); - } - number = strtoul(field, 0, 0); - *writeptr++ = number; - return(0); -} - -static -read_txramp_16num() -{ - int i, rc; - - for (i = 0; i < 16; i++) { - rc = process_txramp_number(); - if (rc) - return(rc); - } - return(0); -} - -read_tx_ramp_template(filename_arg, rdbuf) - char *filename_arg; - u_char *rdbuf; -{ - char *field; - int rc; - - filename = filename_arg; - rdfile = fopen(filename, "r"); - if (!rdfile) { - perror(filename); - return(ERROR_UNIX); - } - lineno = 0; - line_nfields = 0; - rc = get_field(&field); - if (rc <= 0) { -not_valid_ramp_file: - printf("error: %s is not a valid Tx ramp template file\n", - filename); - fclose(rdfile); - return(ERROR_USAGE); - } - if (strcmp(field, "ramp-up")) - goto not_valid_ramp_file; - writeptr = rdbuf; - rc = read_txramp_16num(); - if (rc) { - fclose(rdfile); - return(rc); - } - rc = get_field(&field); - if (rc <= 0) - goto not_valid_ramp_file; - if (strcmp(field, "ramp-down")) - goto not_valid_ramp_file; - rc = read_txramp_16num(); - if (rc) { - fclose(rdfile); - return(rc); - } - rc = get_field(&field); - fclose(rdfile); - if (rc < 0) - return(ERROR_USAGE); - if (rc) { - printf("error: %s is too long for a Tx ramp template\n", - filename); - return(ERROR_USAGE); - } - return(0); -}