diff pads2gpcb/readpads.c @ 38:aa0539cc3d41

pads2gpcb project started, skeleton compiles
author Mychaela Falconia <falcon@ivan.Harhan.ORG>
date Mon, 11 Jan 2016 04:56:51 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pads2gpcb/readpads.c	Mon Jan 11 04:56:51 2016 +0000
@@ -0,0 +1,92 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <ctype.h>
+#include <string.h>
+#include <strings.h>
+
+char *input_filename;
+int input_lineno;
+char input_line_buf[1024], input_line_starkw[64];
+
+#define	MAX_FIELDS	63
+char *input_line_fields[MAX_FIELDS+1];
+int input_line_nfields;
+
+static FILE *inf;
+
+open_input_file()
+{
+	inf = fopen(input_filename, "r");
+	if (!inf) {
+		perror(input_filename);
+		exit(1);
+	}
+	return(0);
+}
+
+get_input_line()
+{
+	char *cp;
+
+	if (!fgets(input_line_buf, sizeof input_line_buf, inf))
+		return(0);
+	input_lineno++;
+	cp = index(input_line_buf, '\n');
+	if (!cp) {
+		fprintf(stderr, "%s line %d: missing newline\n",
+			input_filename, input_lineno);
+		exit(1);
+	}
+	*cp = '\0';
+	if (cp > input_line_buf && cp[-1] == '\r')
+		*--cp = '\0';
+	return(1);
+}
+
+parse_starline()
+{
+	char *cp, *srcstr;
+
+	srcstr = input_line_buf + 1;
+	cp = index(srcstr, '*');
+	if (!cp) {
+		fprintf(stderr, "%s line %d: opening '*' but no closing '*'\n",
+			input_filename, input_lineno);
+		exit(1);
+	}
+	*cp = '\0';
+	if (strlen(srcstr) + 1 > sizeof input_line_starkw) {
+		fprintf(stderr, "%s line %d: star keyword is too long\n",
+			input_filename, input_lineno);
+		exit(1);
+	}
+	strcpy(input_line_starkw, srcstr);
+	*cp = '*';
+}
+
+parse_input_line_fields()
+{
+	char *cp;
+	int n;
+
+	cp = input_line_buf;
+	for (n = 0; ; ) {
+		while (isspace(*cp))
+			cp++;
+		if (!*cp)
+			break;
+		if (n >= MAX_FIELDS) {
+			fprintf(stderr,
+				"%s line %d: number of fields exceeds limit\n",
+				input_filename, input_lineno);
+			exit(1);
+		}
+		input_line_fields[n++] = cp;
+		while (*cp && !isspace(*cp))
+			cp++;
+		if (*cp)
+			*cp++ = '\0';
+	}
+	input_line_fields[n] = 0;
+	input_line_nfields = n;
+}