changeset 8:495a56e706dc

input is now read from stdin
author meillo@marmaro.de
date Sat, 09 Feb 2008 12:42:11 +0100 (2008-02-09)
parents 6a6152cf63f7
children c020b0d1cfca
files baum.c
diffstat 1 files changed, 22 insertions(+), 24 deletions(-) [+]
line wrap: on
line diff
--- a/baum.c	Sat Feb 09 11:57:16 2008 +0100
+++ b/baum.c	Sat Feb 09 12:42:11 2008 +0100
@@ -181,59 +181,57 @@
 
 
 /* read input */
-void read_input(char* filename) {
-	FILE* file;
+void read_input() {
 	int c;
-	char* cp;
-	int indent = 0;
+	int indent;
 	char name[256];
 	int value;
 
-	file = fopen(filename, "r");
-
+	indent = 0;
+	strcpy(name, "");
+	value = 0;
 
-	while ((c = getc(file)) != EOF) {
-		if (c == '#') {
-			printf("c\n");
-			while ((c = getc(file)) != '\n') {
+	while ((c = getchar()) != EOF) {
+		if (c == '#') { /* comment */
+			while ((c = getchar()) != '\n') {
 			}
 		}
 
-		if (c == ' ' || c == '\t') {
-			indent++;
+		if (c == ' ' || c == '\t') {  /* indent if at start of line */
+			if (strlen(name) == 0) {
+				indent++;
+			}
 		}
 
-		if (c == '\n') {
+		if (c == '\n') {  /* end of line: create node */
 			if (strlen(name) > 0) {
 				printf(" %d - %s - %d\n", indent, name, value);
-				/*
-				*/
-			} else {
-				printf("comment\n");
+				/* create node */
 			}
 			indent = 0;
 			strcpy(name, "");
 			value = 0;
 		}
 
-		if (c >= 'a' && c <= 'z') {
+		if (c >= 'a' && c <= 'z') {  /* name */
 			int i = 1;
 			name[0] = (char) c;
-			while ((c = getc(file)) != '(') {
-				/*putc(c, stdout);*/
+			while ((c = getchar()) != '(') {
 				name[i] = (char) c;
 				i++;
+				if (i > 255) {
+					break;
+				}
 			}
 			name[i] = '\0';
 		}
 
-		if (c == '(') {
-			fscanf(file, "%d)", &value);
+		if (c == '(') {  /* value */
+			scanf("%d)", &value);
 		}
 
 	}
 
-	fclose(file);
 }
 
 /* main */
@@ -253,6 +251,6 @@
 	delete(root);
 	*/
 	
-	read_input("./input_addition");
+	read_input();
 	exit(shell_return);
 }