diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2009-11-02 13:58:30 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2009-11-02 13:58:30 -0800 |
commit | 6191fbb2ca7a9ac339dd3994bdea8273ceb0a24d (patch) | |
tree | 3ddb47f26c66c5e4d09dd87f4518468f489f84a3 /txr.c | |
parent | 4b493073a6deafa6b4ac6386a0eab034e0e20082 (diff) | |
download | txr-6191fbb2ca7a9ac339dd3994bdea8273ceb0a24d.tar.gz txr-6191fbb2ca7a9ac339dd3994bdea8273ceb0a24d.tar.bz2 txr-6191fbb2ca7a9ac339dd3994bdea8273ceb0a24d.zip |
Start of implementation for freestyle matching.
Lazy strings implemented, incompletely.
Changed string function to implicitly strdup; non-strdup
version changed to string_own. Fixed wrong uses of strdup
rather than chk_strdup.
Functions added to regex module to provide regex matching
as a state machine to which characters are fed.
Diffstat (limited to 'txr.c')
-rw-r--r-- | txr.c | 20 |
1 files changed, 9 insertions, 11 deletions
@@ -119,7 +119,7 @@ obj_t *remove_hash_bang_line(obj_t *spec) return spec; { - obj_t *shbang = string(strdup("#!")); + obj_t *shbang = string("#!"); obj_t *firstline = first(spec); obj_t *items = rest(firstline); @@ -183,7 +183,7 @@ int main(int argc, char **argv) val[piece] = 0; - list = cons(string(strdup(val)), list); + list = cons(string(val), list); if (!comma_p) break; @@ -192,15 +192,13 @@ int main(int argc, char **argv) } list = nreverse(list); - bindings = cons(cons(intern(string(strdup(var))), list), bindings); + bindings = cons(cons(intern(string(var)), list), bindings); } else if (equals) { char *val = equals + 1; *equals = 0; - bindings = cons(cons(intern(string(strdup(var))), - string(strdup(val))), bindings); + bindings = cons(cons(intern(string(var)), string(val)), bindings); } else { - bindings = cons(cons(intern(string(strdup(var))), - null_string), bindings); + bindings = cons(cons(intern(string(var)), null_string), bindings); } argc--, argv++; @@ -242,10 +240,10 @@ int main(int argc, char **argv) opt_arraydims = val; break; case 'c': - specstring = string(strdup(*argv)); + specstring = string(*argv); break; case 'f': - spec_file_str = string(strdup(*argv)); + spec_file_str = string(*argv); break; } @@ -298,7 +296,7 @@ int main(int argc, char **argv) if (specstring) { spec_file = "cmdline"; - spec_file_str = string(strdup(spec_file)); + spec_file_str = string(spec_file); yyin_stream = make_string_input_stream(specstring); } else if (spec_file_str) { if (strcmp(c_str(spec_file_str), "-") != 0) { @@ -325,7 +323,7 @@ int main(int argc, char **argv) spec_file = "stdin"; } argc--, argv++; - spec_file_str = string(strdup(spec_file)); + spec_file_str = string(spec_file); } |