summaryrefslogtreecommitdiffstats
path: root/txr.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2009-11-02 13:58:30 -0800
committerKaz Kylheku <kaz@kylheku.com>2009-11-02 13:58:30 -0800
commit6191fbb2ca7a9ac339dd3994bdea8273ceb0a24d (patch)
tree3ddb47f26c66c5e4d09dd87f4518468f489f84a3 /txr.c
parent4b493073a6deafa6b4ac6386a0eab034e0e20082 (diff)
downloadtxr-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.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/txr.c b/txr.c
index e12c42bf..56032e6f 100644
--- a/txr.c
+++ b/txr.c
@@ -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);
}