changeset 7:6a6152cf63f7

new implementation of the read input function
author meillo@marmaro.de
date Sat, 09 Feb 2008 11:57:16 +0100
parents ab87b154a96b
children 495a56e706dc
files baum.c
diffstat 1 files changed, 41 insertions(+), 16 deletions(-) [+]
line wrap: on
line diff
--- a/baum.c	Fri Feb 08 21:44:07 2008 +0100
+++ b/baum.c	Sat Feb 09 11:57:16 2008 +0100
@@ -182,38 +182,63 @@
 
 /* read input */
 void read_input(char* filename) {
-	FILE* fp;
-	char c;
-	char* line;
-	int indent;
-	char* name;
+	FILE* file;
+	int c;
+	char* cp;
+	int indent = 0;
+	char name[256];
 	int value;
 
-	fp = fopen(filename, "r");
-	indent = 0;
+	file = fopen(filename, "r");
+
 
-	while ((c = getc(fp)) != EOF) {
+	while ((c = getc(file)) != EOF) {
+		if (c == '#') {
+			printf("c\n");
+			while ((c = getc(file)) != '\n') {
+			}
+		}
+
 		if (c == ' ' || c == '\t') {
 			indent++;
-		} else if (c == '(') {
-			fscanf(fp, "%d", &value);
-		} else if (c == '\n') {
+		}
 
-			if (strcmp(name, "") != 0) {
-				printf("\nindent: %d\nname: %s\nvalue: %d\n", indent, name, value);
+		if (c == '\n') {
+			if (strlen(name) > 0) {
+				printf(" %d - %s - %d\n", indent, name, value);
+				/*
+				*/
+			} else {
+				printf("comment\n");
 			}
 			indent = 0;
 			strcpy(name, "");
 			value = 0;
-		} else {
-			fscanf(fp, "%[a-z]", name);
 		}
+
+		if (c >= 'a' && c <= 'z') {
+			int i = 1;
+			name[0] = (char) c;
+			while ((c = getc(file)) != '(') {
+				/*putc(c, stdout);*/
+				name[i] = (char) c;
+				i++;
+			}
+			name[i] = '\0';
+		}
+
+		if (c == '(') {
+			fscanf(file, "%d)", &value);
+		}
+
 	}
+
+	fclose(file);
 }
 
 /* main */
 int main(int argc, char* argv[]) {
-	unsigned char shell_return;
+	unsigned char shell_return = 0;
 	/*
 	init();