changeset 127:db7fc16bac1e

fc-tmsh: implemented reading of Tx ramp template files
author Mychaela Falconia <falcon@freecalypso.org>
date Sun, 19 Feb 2017 15:59:56 +0000
parents 777172bcea3c
children d76970e1895e
files rvinterf/tmsh/rftablerd.c
diffstat 1 files changed, 86 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/rvinterf/tmsh/rftablerd.c	Sun Feb 19 09:52:58 2017 +0000
+++ b/rvinterf/tmsh/rftablerd.c	Sun Feb 19 15:59:56 2017 +0000
@@ -365,3 +365,89 @@
 		*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);
+}