[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 05/12] qga: copy argument strings
From: |
Michael Roth |
Subject: |
Re: [Qemu-devel] [PATCH v2 05/12] qga: copy argument strings |
Date: |
Tue, 25 Aug 2015 17:31:11 -0500 |
User-agent: |
alot/0.3.6 |
Quoting address@hidden (2015-08-25 17:10:17)
> From: Marc-André Lureau <address@hidden>
>
> A following patch will return allocated string.
>
> Signed-off-by: Marc-André Lureau <address@hidden>
Reviewed-by: Michael Roth <address@hidden>
> ---
> qga/main.c | 57 +++++++++++++++++++++++++++++++--------------------------
> 1 file changed, 31 insertions(+), 26 deletions(-)
>
> diff --git a/qga/main.c b/qga/main.c
> index ede5306..83b7804 100644
> --- a/qga/main.c
> +++ b/qga/main.c
> @@ -944,13 +944,13 @@ static GList *split_list(gchar *str, const gchar
> separator)
> int main(int argc, char **argv)
> {
> const char *sopt = "hVvdm:p:l:f:F::b:s:t:";
> - const char *method = NULL, *channel_path = NULL;
> - const char *log_filepath = NULL;
> - const char *pid_filepath;
> + char *method = NULL, *channel_path = NULL;
> + char *log_filepath = NULL;
> + char *pid_filepath = NULL;
> #ifdef CONFIG_FSFREEZE
> - const char *fsfreeze_hook = NULL;
> + char *fsfreeze_hook = NULL;
> #endif
> - const char *state_dir;
> + char *state_dir = NULL;
> #ifdef _WIN32
> const char *service = NULL;
> #endif
> @@ -981,31 +981,28 @@ int main(int argc, char **argv)
> module_call_init(MODULE_INIT_QAPI);
>
> init_dfl_pathnames();
> - pid_filepath = dfl_pathnames.pidfile;
> - state_dir = dfl_pathnames.state_dir;
> -
> while ((ch = getopt_long(argc, argv, sopt, lopt, &opt_ind)) != -1) {
> switch (ch) {
> case 'm':
> - method = optarg;
> + method = g_strdup(optarg);
> break;
> case 'p':
> - channel_path = optarg;
> + channel_path = g_strdup(optarg);
> break;
> case 'l':
> - log_filepath = optarg;
> + log_filepath = g_strdup(optarg);
> break;
> case 'f':
> - pid_filepath = optarg;
> + pid_filepath = g_strdup(optarg);
> break;
> #ifdef CONFIG_FSFREEZE
> case 'F':
> - fsfreeze_hook = optarg ? optarg : QGA_FSFREEZE_HOOK_DEFAULT;
> + fsfreeze_hook = g_strdup(optarg ?: QGA_FSFREEZE_HOOK_DEFAULT);
> break;
> #endif
> case 't':
> - state_dir = optarg;
> - break;
> + state_dir = g_strdup(optarg);
> + break;
> case 'v':
> /* enable all log levels */
> log_level = G_LOG_LEVEL_MASK;
> @@ -1028,20 +1025,10 @@ int main(int argc, char **argv)
> case 's':
> service = optarg;
> if (strcmp(service, "install") == 0) {
> - const char *fixed_state_dir;
> -
> - /* If the user passed the "-t" option, we save that state dir
> - * in the service. Otherwise we let the service fetch the
> state
> - * dir from the environment when it starts.
> - */
> - fixed_state_dir = (state_dir == dfl_pathnames.state_dir) ?
> - NULL :
> - state_dir;
> if (ga_install_vss_provider()) {
> exit(EXIT_FAILURE);
> }
> - if (ga_install_service(channel_path, log_filepath,
> - fixed_state_dir)) {
> + if (ga_install_service(channel_path, log_filepath,
> state_dir)) {
> exit(EXIT_FAILURE);
> }
> exit(EXIT_SUCCESS);
> @@ -1072,6 +1059,14 @@ int main(int argc, char **argv)
> }
> }
>
> + if (pid_filepath == NULL) {
> + pid_filepath = g_strdup(dfl_pathnames.pidfile);
> + }
> +
> + if (state_dir == NULL) {
> + state_dir = g_strdup(dfl_pathnames.state_dir);
> + }
> +
> #ifdef _WIN32
> /* On win32 the state directory is application specific (be it the
> default
> * or a user override). We got past the command line parsing; let's
> create
> @@ -1214,5 +1209,15 @@ out_bad:
> if (daemonize) {
> unlink(pid_filepath);
> }
> +
> + g_free(method);
> + g_free(log_filepath);
> + g_free(pid_filepath);
> + g_free(state_dir);
> + g_free(channel_path);
> +#ifdef CONFIG_FSFREEZE
> + g_free(fsfreeze_hook);
> +#endif
> +
> return EXIT_FAILURE;
> }
> --
> 2.4.3
>
- [Qemu-devel] [PATCH v2 00/12] qemu-ga: add a configuration file, marcandre . lureau, 2015/08/25
- [Qemu-devel] [PATCH v2 01/12] qga: misc spelling, marcandre . lureau, 2015/08/25
- [Qemu-devel] [PATCH v2 02/12] qga: use exit() when parsing options, marcandre . lureau, 2015/08/25
- [Qemu-devel] [PATCH v2 03/12] qga: move string split in separate function, marcandre . lureau, 2015/08/25
- [Qemu-devel] [PATCH v2 05/12] qga: copy argument strings, marcandre . lureau, 2015/08/25
- Re: [Qemu-devel] [PATCH v2 05/12] qga: copy argument strings,
Michael Roth <=
- [Qemu-devel] [PATCH v2 04/12] qga: rename 'path' to 'channel_path', marcandre . lureau, 2015/08/25
- [Qemu-devel] [PATCH v2 06/12] qga: move option parsing to seperate function, marcandre . lureau, 2015/08/25
- [Qemu-devel] [PATCH v2 09/12] qga: free a bit more, marcandre . lureau, 2015/08/25
- [Qemu-devel] [PATCH v2 07/12] qga: fill default options in main(), marcandre . lureau, 2015/08/25
- [Qemu-devel] [PATCH v2 10/12] qga: add an optionnal qemu-ga.conf system configuration, marcandre . lureau, 2015/08/25