From 06e74eda2cb6381fbdd094f3f5ac516f208d5c66 Mon Sep 17 00:00:00 2001 From: Charlie McConnell Date: Sat, 25 Feb 2012 14:59:06 -0800 Subject: [PATCH] Switch Options to options_t, use hardref instead of strdup() to prevent memory leaks. --- options.c | 25 ++++++++++++------------- options.h | 6 +++--- 2 files changed, 15 insertions(+), 16 deletions(-) diff --git a/options.c b/options.c index 229e3bf..e07b92b 100644 --- a/options.c +++ b/options.c @@ -3,17 +3,16 @@ #include #include "options.h" -struct Options *Options_parse(int argc, char *argv[]) { +options_t options_parse(int argc, char *argv[]) { assert(argc > 1); - Options *opts = malloc(sizeof(Options)); - assert(opts != NULL); + options_t opts; - opts->outfile = NULL; - opts->errfile = NULL; - opts->target = NULL; - opts->json = 0; - opts->child_args = NULL; + opts.outfile = NULL; + opts.errfile = NULL; + opts.target = NULL; + opts.json = 0; + opts.child_args = NULL; int i; for (i = 1; i < argc; i++) { @@ -22,21 +21,21 @@ struct Options *Options_parse(int argc, char *argv[]) { switch((int)argv[i][1]) { case 'o': if (argv[i + 1][0] != '-') { - opts->outfile = strdup(argv[i + 1]); + opts.outfile = &argv[i + 1][0]; } break; case 'e': if (argv[i + 1][0] != '-') { - opts->errfile = strdup(argv[i + 1]); + opts.errfile = &argv[i + 1][0]; } break; case 'j': - opts->json = 1; + opts.json = 1; break; case '-': if (argv[i + 1] != NULL) { - opts->target = strdup(argv[i + 1]); - opts->child_args = &argv[i + 1]; + opts.target = &argv[i + 1][0]; + opts.child_args = &argv[i + 1]; return opts; } break; diff --git a/options.h b/options.h index 55d9fd0..507735e 100644 --- a/options.h +++ b/options.h @@ -1,7 +1,7 @@ #ifndef _options_h #define _options_h -struct Options { +struct options_s { char *outfile; char *errfile; char *target; @@ -9,8 +9,8 @@ struct Options { char **child_args; }; -typedef struct Options Options; +typedef struct options_s options_t; -struct Options *Options_parse(int argc, char *argv[]); +options_t options_parse(int argc, char *argv[]); #endif