summaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorNARUSE, Yui <[email protected]>2012-06-14 07:52:58 +0900
committerNARUSE, Yui <[email protected]>2012-06-14 07:56:07 +0900
commit03d32796b44420fa07ac375a2e4768a5c5195235 (patch)
treeaaec1f6cbd0b7cd2392af3664be7a64e30873e6a /tools
parent73d7000b8f5c3f7d2cb12e03b0a431ec3636fe21 (diff)
downloadmruby-03d32796b44420fa07ac375a2e4768a5c5195235.tar.gz
mruby-03d32796b44420fa07ac375a2e4768a5c5195235.zip
Support mruby -e'p 1'.
mruby supports already -e 'p 1' (-e, space, command), but hadn't supported no space version.
Diffstat (limited to 'tools')
-rw-r--r--tools/mruby/mruby.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/tools/mruby/mruby.c b/tools/mruby/mruby.c
index 0e38879db..5cf3d8a37 100644
--- a/tools/mruby/mruby.c
+++ b/tools/mruby/mruby.c
@@ -51,12 +51,14 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
memset(args, 0, sizeof(*args));
for (argc--,argv++; argc > 0; argc--,argv++) {
+ char *item;
if (argv[0][0] != '-') break;
if (strlen(*argv) <= 1)
return -1;
- switch ((*argv)[1]) {
+ item = argv[0] + 1;
+ switch (*item++) {
case 'b':
args->mrbfile = 1;
break;
@@ -64,19 +66,24 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct _args *args)
args->check_syntax = 1;
break;
case 'e':
- if (argc > 1) {
+ if (item[0]) {
+ goto append_cmdline;
+ }
+ else if (argc > 1) {
argc--; argv++;
+ item = argv[0];
+append_cmdline:
if (!args->cmdline) {
char *buf;
- buf = mrb_malloc(mrb, strlen(argv[0])+1);
- strcpy(buf, argv[0]);
+ buf = mrb_malloc(mrb, strlen(item)+1);
+ strcpy(buf, item);
args->cmdline = buf;
}
else {
- args->cmdline = mrb_realloc(mrb, args->cmdline, strlen(args->cmdline)+strlen(argv[0])+2);
+ args->cmdline = mrb_realloc(mrb, args->cmdline, strlen(args->cmdline)+strlen(item)+2);
strcat(args->cmdline, "\n");
- strcat(args->cmdline, argv[0]);
+ strcat(args->cmdline, item);
}
}
else {