summaryrefslogtreecommitdiffhomepage
path: root/tools/mrbc/mrbc.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/mrbc/mrbc.c')
-rw-r--r--tools/mrbc/mrbc.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/tools/mrbc/mrbc.c b/tools/mrbc/mrbc.c
index 0a165b78a..735b22b1d 100644
--- a/tools/mrbc/mrbc.c
+++ b/tools/mrbc/mrbc.c
@@ -51,15 +51,19 @@ usage(const char *name)
static char *
get_outfilename(mrb_state *mrb, char *infile, char *ext)
{
+ size_t infilelen;
+ size_t extlen;
char *outfile;
char *p;
- outfile = (char*)mrb_malloc(mrb, strlen(infile) + strlen(ext) + 1);
- strcpy(outfile, infile);
+ infilelen = strlen(infile);
+ extlen = strlen(ext);
+ outfile = (char*)mrb_malloc(mrb, infilelen + extlen + 1);
+ memcpy(outfile, infile, infilelen + 1);
if (*ext) {
if ((p = strrchr(outfile, '.')) == NULL)
- p = &outfile[strlen(outfile)];
- strcpy(p, ext);
+ p = outfile + infilelen;
+ memcpy(p, ext, extlen + 1);
}
return outfile;
@@ -117,6 +121,8 @@ parse_args(mrb_state *mrb, int argc, char **argv, struct mrbc_args *args)
case 'g':
args->debug_info = 1;
break;
+ case 'h':
+ return -1;
case '-':
if (argv[i][1] == '\n') {
return i;