diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-06-29 07:23:16 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2020-06-29 07:25:03 +0900 |
| commit | ac8360003ecfa1ec21295533c9213f17fd8e39bb (patch) | |
| tree | 4f718525bb86e5f2f3cad58b33a96c677a242e32 /mrbgems/mruby-bin-mrbc | |
| parent | 233cb49903fa17637bd51f4a16b4ca61e0750f24 (diff) | |
| download | mruby-ac8360003ecfa1ec21295533c9213f17fd8e39bb.tar.gz mruby-ac8360003ecfa1ec21295533c9213f17fd8e39bb.zip | |
Fix the bug that `mrbc` generates `a.rb.mrb` instead of `a.mrb`.
The bug was introduced by 9dfe50f1d.
Diffstat (limited to 'mrbgems/mruby-bin-mrbc')
| -rw-r--r-- | mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c | 25 |
1 files changed, 19 insertions, 6 deletions
diff --git a/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c b/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c index 69c1095df..4d984e773 100644 --- a/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c +++ b/mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c @@ -52,14 +52,27 @@ usage(const char *name) static char * get_outfilename(mrb_state *mrb, char *infile, const char *ext) { - size_t infilelen; - size_t flen; + size_t ilen, flen, elen; char *outfile; + char *p = NULL; - infilelen = strlen(infile); - flen = infilelen + strlen(ext) + 1; - outfile = (char*)mrb_malloc(mrb, flen); - snprintf(outfile, flen, "%s%s", infile, ext); + ilen = strlen(infile); + flen = ilen; + if (*ext) { + elen = strlen(ext); + if ((p = strrchr(infile, '.'))) { + ilen = p - infile; + } + flen += elen; + } + else { + flen = ilen; + } + outfile = (char*)mrb_malloc(mrb, flen+1); + strncpy(outfile, infile, ilen+1); + if (p) { + strncpy(outfile+ilen, ext, elen+1); + } return outfile; } |
