Mercurial > hg-old > index.cgi
diff lwasm/input.c @ 332:67224d8d1024
Basic input layer works
author | lost |
---|---|
date | Tue, 02 Mar 2010 00:10:32 +0000 |
parents | 81c005b82775 |
children | 7166254491ed |
line wrap: on
line diff
--- a/lwasm/input.c Sun Feb 28 05:55:07 2010 +0000 +++ b/lwasm/input.c Tue Mar 02 00:10:32 2010 +0000 @@ -84,7 +84,7 @@ int o; dn = lw_strdup(fn); - dp = dn + strlen(dp); + dp = dn + strlen(dn); while (--dp != dn) { @@ -130,9 +130,9 @@ t = lw_alloc(sizeof(struct input_stack)); t -> filespec = lw_strdup(s); - for (s2 = s; *s2 && *s2 != ':'; s2++) + for (s2 = s; *s2 && (*s2 != ':'); s2++) /* do nothing */ ; - if (!s2) + if (!*s2) { t -> type = input_type_file; } @@ -142,16 +142,16 @@ ts = lw_strndup(s, s2 - s); s = s2 + 1; - if (!strcmp(ts, "include")) t -> type = input_type_include; else if (!strcmp(ts, "file")) t -> type = input_type_file; else t -> type = input_type_error; + + lw_free(ts); } - - t -> next = IS; + t -> next = as -> input_data; as -> input_data = t; switch (IS -> type) @@ -198,7 +198,7 @@ lw_stringlist_next(as -> include_list); } lw_error("Cannot open include file '%s': %s", s, strerror(errno)); - + case input_type_file: IS -> data = fopen(s, "rb"); @@ -210,7 +210,7 @@ return; } - lw_error("Cannot figure out how to open '%s'.", s); + lw_error("Cannot figure out how to open '%s'.", t -> filespec); } char *input_readline(asmstate_t *as) @@ -235,11 +235,11 @@ case input_type_file: case input_type_include: /* read from a file */ + lbloc = 0; for (;;) { int c, c2; c = fgetc(IS -> data); - lbloc = 0; if (c == EOF) { if (lbloc == 0)