qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Michael Roth <mdroth@linux.vnet.ibm.com>
To: "Marc-André Lureau" <marcandre.lureau@gmail.com>
Cc: QEMU <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH v2 10/12] qga: add an optionnal qemu-ga.conf system configuration
Date: Tue, 25 Aug 2015 18:29:48 -0500	[thread overview]
Message-ID: <20150825232948.11069.70181@loki> (raw)
In-Reply-To: <CAJ+F1CLD2SbFCsEi7W8n=-1gc78wH5HyX_Gt7A5TNc+DmNotfg@mail.gmail.com>

Quoting Marc-André Lureau (2015-08-25 18:18:16)
> Hi
> 
> On Wed, Aug 26, 2015 at 1:09 AM, Michael Roth <mdroth@linux.vnet.ibm.com> wrote:
> > We should probably do this in init_dfl_pathnames() for consistency.
> 
> QGA_FSFREEZE_HOOK_DEFAULT is also initialized here
> 
> in init_dfl_pathnames(), it depends on the value of
> get_local_state_pathname() while here it's static.

Ahh, yah I missed that. It's fine where it's at then.

> 
> >>
> >>  static struct {
> >>      const char *state_dir;
> >> @@ -936,14 +937,80 @@ typedef struct GAConfig {
> >>  #ifdef _WIN32
> >>      const char *service;
> >>  #endif
> >> +    gchar *bliststr;
> >>      GList *blacklist;
> >>      int daemonize;
> >>      GLogLevelFlags log_level;
> >>  } GAConfig;
> >>
> >> -static GAConfig *config_parse(int argc, char **argv)
> >> +static void config_load(GAConfig *config)
> >> +{
> >> +    GError *gerr = NULL;
> >> +    GKeyFile *keyfile;
> >> +
> >> +    /* read system config */
> >> +    keyfile = g_key_file_new();
> >> +    if (!g_key_file_load_from_file(keyfile, QGA_CONF_DEFAULT, 0, &gerr)) {
> >> +        goto end;
> >> +    }
> >> +    if (g_key_file_has_key(keyfile, "general", "daemon", NULL)) {
> >> +        config->daemonize =
> >> +            g_key_file_get_boolean(keyfile, "general", "daemon", &gerr);
> >> +    }
> >> +    if (g_key_file_has_key(keyfile, "general", "method", NULL)) {
> >> +        config->method =
> >> +            g_key_file_get_string(keyfile, "general", "method", &gerr);
> >> +    }
> >> +    if (g_key_file_has_key(keyfile, "general", "path", NULL)) {
> >> +        config->channel_path =
> >> +            g_key_file_get_string(keyfile, "general", "path", &gerr);
> >> +    }
> >> +    if (g_key_file_has_key(keyfile, "general", "logfile", NULL)) {
> >> +        config->log_filepath =
> >> +            g_key_file_get_string(keyfile, "general", "logfile", &gerr);
> >> +    }
> >> +    if (g_key_file_has_key(keyfile, "general", "pidfile", NULL)) {
> >> +        config->pid_filepath =
> >> +            g_key_file_get_string(keyfile, "general", "pidfile", &gerr);
> >> +    }
> >> +#ifdef CONFIG_FSFREEZE
> >> +    if (g_key_file_has_key(keyfile, "general", "fsfreeze-hook", NULL)) {
> >> +        config->fsfreeze_hook =
> >> +            g_key_file_get_string(keyfile,
> >> +                                  "general", "fsfreeze-hook", &gerr);
> >> +    }
> >> +#endif
> >> +    if (g_key_file_has_key(keyfile, "general", "statedir", NULL)) {
> >> +        config->state_dir =
> >> +            g_key_file_get_string(keyfile, "general", "statedir", &gerr);
> >> +    }
> >> +    if (g_key_file_has_key(keyfile, "general", "verbose", NULL) &&
> >> +        g_key_file_get_boolean(keyfile, "general", "verbose", &gerr)) {
> >> +        /* enable all log levels */
> >> +        config->log_level = G_LOG_LEVEL_MASK;
> >> +    }
> >> +    if (g_key_file_has_key(keyfile, "general", "blacklist", NULL)) {
> >> +        config->bliststr =
> >> +            g_key_file_get_string(keyfile, "general", "blacklist", &gerr);
> >> +        config->blacklist = g_list_concat(config->blacklist,
> >> +                                          split_list(config->bliststr, ','));
> >> +    }
> >> +
> >> +end:
> >> +    if (keyfile) {
> >> +        g_key_file_free(keyfile);
> >> +    }
> >> +    if (gerr &&
> >> +        !(gerr->domain == G_FILE_ERROR && gerr->code == G_FILE_ERROR_NOENT)) {
> >> +        g_critical("error loading configuration from path: %s, %s",
> >> +                   QGA_CONF_DEFAULT, gerr->message);
> >> +        exit(EXIT_FAILURE);
> >> +    }
> >> +    g_clear_error(&gerr);
> >
> > What about other file errors, like permission issues? Maybe just have
> > config_load() return bool, and just spit out stringified gerr prior to
> > return false?
> 
> all errors have a g_critical(), except for the case of file missing.

Argh, missed the '!'. Looks good then:

Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>

> 
> 
> -- 
> Marc-André Lureau
> 

  reply	other threads:[~2015-08-25 23:30 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-25 22:10 [Qemu-devel] [PATCH v2 00/12] qemu-ga: add a configuration file marcandre.lureau
2015-08-25 22:10 ` [Qemu-devel] [PATCH v2 01/12] qga: misc spelling marcandre.lureau
2015-08-25 22:26   ` Michael Roth
2015-08-25 22:30   ` Eric Blake
2015-08-25 22:36     ` Marc-André Lureau
2015-08-25 22:10 ` [Qemu-devel] [PATCH v2 02/12] qga: use exit() when parsing options marcandre.lureau
2015-08-25 22:27   ` Michael Roth
2015-08-25 22:10 ` [Qemu-devel] [PATCH v2 03/12] qga: move string split in separate function marcandre.lureau
2015-08-25 22:10 ` [Qemu-devel] [PATCH v2 04/12] qga: rename 'path' to 'channel_path' marcandre.lureau
2015-08-25 22:29   ` Michael Roth
2015-08-25 22:10 ` [Qemu-devel] [PATCH v2 05/12] qga: copy argument strings marcandre.lureau
2015-08-25 22:31   ` Michael Roth
2015-08-25 22:10 ` [Qemu-devel] [PATCH v2 06/12] qga: move option parsing to seperate function marcandre.lureau
2015-08-25 22:40   ` Michael Roth
2015-08-25 22:10 ` [Qemu-devel] [PATCH v2 07/12] qga: fill default options in main() marcandre.lureau
2015-08-25 22:46   ` Michael Roth
2015-08-25 22:59     ` Marc-André Lureau
2015-08-25 22:10 ` [Qemu-devel] [PATCH v2 08/12] qga: move agent run in a seperate function marcandre.lureau
2015-08-25 22:55   ` Michael Roth
2015-08-25 22:10 ` [Qemu-devel] [PATCH v2 09/12] qga: free a bit more marcandre.lureau
2015-08-25 22:10 ` [Qemu-devel] [PATCH v2 10/12] qga: add an optionnal qemu-ga.conf system configuration marcandre.lureau
2015-08-25 23:09   ` Michael Roth
2015-08-25 23:18     ` Marc-André Lureau
2015-08-25 23:29       ` Michael Roth [this message]
2015-08-26  8:01   ` Markus Armbruster
2015-08-25 22:10 ` [Qemu-devel] [PATCH v2 11/12] qga: add --dump-conf option marcandre.lureau
2015-08-25 23:13   ` Michael Roth
2015-08-25 23:31     ` Marc-André Lureau
2015-08-25 22:10 ` [Qemu-devel] [PATCH v2 12/12] qga: start a man page marcandre.lureau
2015-08-25 23:16   ` Michael Roth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150825232948.11069.70181@loki \
    --to=mdroth@linux.vnet.ibm.com \
    --cc=marcandre.lureau@gmail.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).