From ac8360003ecfa1ec21295533c9213f17fd8e39bb Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Mon, 29 Jun 2020 07:23:16 +0900 Subject: Fix the bug that `mrbc` generates `a.rb.mrb` instead of `a.mrb`. The bug was introduced by 9dfe50f1d. --- mrbgems/mruby-bin-mrbc/tools/mrbc/mrbc.c | 25 +++++++++++++++++++------ 1 file 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; } -- cgit v1.2.3