# HG changeset patch # User meillo@marmaro.de # Date 1202554636 -3600 # Node ID 6a6152cf63f731588f10912d9421464e681e11be # Parent ab87b154a96b2a5f9c048f88cf75af82b068bd68 new implementation of the read input function diff -r ab87b154a96b -r 6a6152cf63f7 baum.c --- 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();