qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Leandro Dorileo <l@dorileo.org>
To: qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, Fam Zheng <famz@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	Liu Yuan <namei.unix@gmail.com>, Jeff Cody <jcody@redhat.com>,
	Markus Armbruster <armbru@redhat.com>, Peter Lieven <pl@kamp.de>,
	"Richard W.M. Jones" <rjones@redhat.com>,
	Luiz Capitulino <lcapitulino@redhat.com>,
	Leandro Dorileo <l@dorileo.org>,
	Ronnie Sahlberg <ronniesahlberg@gmail.com>,
	Josh Durgin <josh.durgin@inktank.com>,
	Anthony Liguori <anthony@codemonkey.ws>,
	Paolo Bonzini <pbonzini@redhat.com>, Stefan Weil <sw@weilnetz.de>,
	Max Reitz <mreitz@redhat.com>,
	MORITA Kazutaka <morita.kazutaka@lab.ntt.co.jp>,
	Benoit Canet <benoit@irqsave.net>
Subject: [Qemu-devel] [PATCH 25/26] QemuOpt: get rid of QEMUOptionParameter
Date: Thu, 20 Mar 2014 21:13:32 -0300	[thread overview]
Message-ID: <1395360813-2833-26-git-send-email-l@dorileo.org> (raw)
In-Reply-To: <1395360813-2833-1-git-send-email-l@dorileo.org>

Finally remove all the remaining QEMUOptionParameter bits.

Signed-off-by: Leandro Dorileo <l@dorileo.org>
---
 include/qemu/option.h |  40 -------
 util/qemu-option.c    | 296 --------------------------------------------------
 2 files changed, 336 deletions(-)

diff --git a/include/qemu/option.h b/include/qemu/option.h
index 62eacf3..4a7c148 100644
--- a/include/qemu/option.h
+++ b/include/qemu/option.h
@@ -31,24 +31,6 @@
 #include "qapi/error.h"
 #include "qapi/qmp/qdict.h"
 
-enum QEMUOptionParType {
-    OPT_FLAG,
-    OPT_NUMBER,
-    OPT_SIZE,
-    OPT_STRING,
-};
-
-typedef struct QEMUOptionParameter {
-    const char *name;
-    enum QEMUOptionParType type;
-    union {
-        uint64_t n;
-        char* s;
-    } value;
-    const char *help;
-    bool assigned;
-} QEMUOptionParameter;
-
 
 const char *get_opt_name(char *buf, int buf_size, const char *p, char delim);
 const char *get_opt_value(char *buf, int buf_size, const char *p);
@@ -57,33 +39,11 @@ int get_next_param_value(char *buf, int buf_size,
 int get_param_value(char *buf, int buf_size,
                     const char *tag, const char *str);
 
-
-/*
- * The following functions take a parameter list as input. This is a pointer to
- * the first element of a QEMUOptionParameter array which is terminated by an
- * entry with entry->name == NULL.
- */
-
-QEMUOptionParameter *get_option_parameter(QEMUOptionParameter *list,
-    const char *name);
-int set_option_parameter(QEMUOptionParameter *list, const char *name,
-    const char *value);
-int set_option_parameter_int(QEMUOptionParameter *list, const char *name,
-    uint64_t value);
-QEMUOptionParameter *append_option_parameters(QEMUOptionParameter *dest,
-    QEMUOptionParameter *list);
-QEMUOptionParameter *parse_option_parameters(const char *param,
-    QEMUOptionParameter *list, QEMUOptionParameter *dest);
 void parse_option_size(const char *name, const char *value,
                        uint64_t *ret, Error **errp);
-void free_option_parameters(QEMUOptionParameter *list);
-void print_option_parameters(QEMUOptionParameter *list);
-void print_option_help(QEMUOptionParameter *list);
 bool has_help_option(const char *param);
 bool is_valid_option_list(const char *param);
 
-/* ------------------------------------------------------------------ */
-
 typedef struct QemuOpt QemuOpt;
 typedef struct QemuOpts QemuOpts;
 typedef struct QemuOptsList QemuOptsList;
diff --git a/util/qemu-option.c b/util/qemu-option.c
index 6fac370..e08ed74 100644
--- a/util/qemu-option.c
+++ b/util/qemu-option.c
@@ -137,22 +137,6 @@ int get_param_value(char *buf, int buf_size,
     return get_next_param_value(buf, buf_size, tag, &str);
 }
 
-/*
- * Searches an option list for an option with the given name
- */
-QEMUOptionParameter *get_option_parameter(QEMUOptionParameter *list,
-    const char *name)
-{
-    while (list && list->name) {
-        if (!strcmp(list->name, name)) {
-            return list;
-        }
-        list++;
-    }
-
-    return NULL;
-}
-
 static void parse_option_bool(const char *name, const char *value, bool *ret,
                               Error **errp)
 {
@@ -226,244 +210,6 @@ void parse_option_size(const char *name, const char *value,
     }
 }
 
-/*
- * Sets the value of a parameter in a given option list. The parsing of the
- * value depends on the type of option:
- *
- * OPT_FLAG (uses value.n):
- *      If no value is given, the flag is set to 1.
- *      Otherwise the value must be "on" (set to 1) or "off" (set to 0)
- *
- * OPT_STRING (uses value.s):
- *      value is strdup()ed and assigned as option value
- *
- * OPT_SIZE (uses value.n):
- *      The value is converted to an integer. Suffixes for kilobytes etc. are
- *      allowed (powers of 1024).
- *
- * Returns 0 on succes, -1 in error cases
- */
-int set_option_parameter(QEMUOptionParameter *list, const char *name,
-    const char *value)
-{
-    bool flag;
-    Error *local_err = NULL;
-
-    // Find a matching parameter
-    list = get_option_parameter(list, name);
-    if (list == NULL) {
-        fprintf(stderr, "Unknown option '%s'\n", name);
-        return -1;
-    }
-
-    // Process parameter
-    switch (list->type) {
-    case OPT_FLAG:
-        parse_option_bool(name, value, &flag, &local_err);
-        if (!local_err) {
-            list->value.n = flag;
-        }
-        break;
-
-    case OPT_STRING:
-        if (value != NULL) {
-            list->value.s = g_strdup(value);
-        } else {
-            fprintf(stderr, "Option '%s' needs a parameter\n", name);
-            return -1;
-        }
-        break;
-
-    case OPT_SIZE:
-        parse_option_size(name, value, &list->value.n, &local_err);
-        break;
-
-    default:
-        fprintf(stderr, "Bug: Option '%s' has an unknown type\n", name);
-        return -1;
-    }
-
-    if (local_err) {
-        qerror_report_err(local_err);
-        error_free(local_err);
-        return -1;
-    }
-
-    list->assigned = true;
-
-    return 0;
-}
-
-/*
- * Sets the given parameter to an integer instead of a string.
- * This function cannot be used to set string options.
- *
- * Returns 0 on success, -1 in error cases
- */
-int set_option_parameter_int(QEMUOptionParameter *list, const char *name,
-    uint64_t value)
-{
-    // Find a matching parameter
-    list = get_option_parameter(list, name);
-    if (list == NULL) {
-        fprintf(stderr, "Unknown option '%s'\n", name);
-        return -1;
-    }
-
-    // Process parameter
-    switch (list->type) {
-    case OPT_FLAG:
-    case OPT_NUMBER:
-    case OPT_SIZE:
-        list->value.n = value;
-        break;
-
-    default:
-        return -1;
-    }
-
-    list->assigned = true;
-
-    return 0;
-}
-
-/*
- * Frees a option list. If it contains strings, the strings are freed as well.
- */
-void free_option_parameters(QEMUOptionParameter *list)
-{
-    QEMUOptionParameter *cur = list;
-
-    while (cur && cur->name) {
-        if (cur->type == OPT_STRING) {
-            g_free(cur->value.s);
-        }
-        cur++;
-    }
-
-    g_free(list);
-}
-
-/*
- * Count valid options in list
- */
-static size_t count_option_parameters(QEMUOptionParameter *list)
-{
-    size_t num_options = 0;
-
-    while (list && list->name) {
-        num_options++;
-        list++;
-    }
-
-    return num_options;
-}
-
-/*
- * Append an option list (list) to an option list (dest).
- *
- * If dest is NULL, a new copy of list is created.
- *
- * Returns a pointer to the first element of dest (or the newly allocated copy)
- */
-QEMUOptionParameter *append_option_parameters(QEMUOptionParameter *dest,
-    QEMUOptionParameter *list)
-{
-    size_t num_options, num_dest_options;
-
-    num_options = count_option_parameters(dest);
-    num_dest_options = num_options;
-
-    num_options += count_option_parameters(list);
-
-    dest = g_realloc(dest, (num_options + 1) * sizeof(QEMUOptionParameter));
-    dest[num_dest_options].name = NULL;
-
-    while (list && list->name) {
-        if (get_option_parameter(dest, list->name) == NULL) {
-            dest[num_dest_options++] = *list;
-            dest[num_dest_options].name = NULL;
-        }
-        list++;
-    }
-
-    return dest;
-}
-
-/*
- * Parses a parameter string (param) into an option list (dest).
- *
- * list is the template option list. If dest is NULL, a new copy of list is
- * created. If list is NULL, this function fails.
- *
- * A parameter string consists of one or more parameters, separated by commas.
- * Each parameter consists of its name and possibly of a value. In the latter
- * case, the value is delimited by an = character. To specify a value which
- * contains commas, double each comma so it won't be recognized as the end of
- * the parameter.
- *
- * For more details of the parsing see above.
- *
- * Returns a pointer to the first element of dest (or the newly allocated copy)
- * or NULL in error cases
- */
-QEMUOptionParameter *parse_option_parameters(const char *param,
-    QEMUOptionParameter *list, QEMUOptionParameter *dest)
-{
-    QEMUOptionParameter *allocated = NULL;
-    char name[256];
-    char value[256];
-    char *param_delim, *value_delim;
-    char next_delim;
-    int i;
-
-    if (list == NULL) {
-        return NULL;
-    }
-
-    if (dest == NULL) {
-        dest = allocated = append_option_parameters(NULL, list);
-    }
-
-    for (i = 0; dest[i].name; i++) {
-        dest[i].assigned = false;
-    }
-
-    while (*param) {
-
-        // Find parameter name and value in the string
-        param_delim = strchr(param, ',');
-        value_delim = strchr(param, '=');
-
-        if (value_delim && (value_delim < param_delim || !param_delim)) {
-            next_delim = '=';
-        } else {
-            next_delim = ',';
-            value_delim = NULL;
-        }
-
-        param = get_opt_name(name, sizeof(name), param, next_delim);
-        if (value_delim) {
-            param = get_opt_value(value, sizeof(value), param + 1);
-        }
-        if (*param != '\0') {
-            param++;
-        }
-
-        // Set the parameter
-        if (set_option_parameter(dest, name, value_delim ? value : NULL)) {
-            goto fail;
-        }
-    }
-
-    return dest;
-
-fail:
-    // Only free the list if it was newly allocated
-    free_option_parameters(allocated);
-    return NULL;
-}
-
 bool has_help_option(const char *param)
 {
     size_t buflen = strlen(param) + 1;
@@ -513,48 +259,6 @@ out:
     return result;
 }
 
-/*
- * Prints all options of a list that have a value to stdout
- */
-void print_option_parameters(QEMUOptionParameter *list)
-{
-    while (list && list->name) {
-        switch (list->type) {
-            case OPT_STRING:
-                 if (list->value.s != NULL) {
-                     printf("%s='%s' ", list->name, list->value.s);
-                 }
-                break;
-            case OPT_FLAG:
-                printf("%s=%s ", list->name, list->value.n ? "on" : "off");
-                break;
-            case OPT_SIZE:
-            case OPT_NUMBER:
-                printf("%s=%" PRId64 " ", list->name, list->value.n);
-                break;
-            default:
-                printf("%s=(unknown type) ", list->name);
-                break;
-        }
-        list++;
-    }
-}
-
-/*
- * Prints an overview of all available options
- */
-void print_option_help(QEMUOptionParameter *list)
-{
-    printf("Supported options:\n");
-    while (list && list->name) {
-        printf("%-16s %s\n", list->name,
-            list->help ? list->help : "No description available");
-        list++;
-    }
-}
-
-/* ------------------------------------------------------------------ */
-
 static QemuOpt *qemu_opt_find(QemuOpts *opts, const char *name)
 {
     QemuOpt *opt;
-- 
1.9.0

  parent reply	other threads:[~2014-03-21  0:15 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-21  0:13 [Qemu-devel] [PATCH 00/26] QemuOptionParameter -> QemuOpts migration Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 01/26] qapi: output def_value_str when query command line options Leandro Dorileo
2014-03-21 23:15   ` Eric Blake
2014-03-21  0:13 ` [Qemu-devel] [PATCH 02/26] add def_value_str to QemuOptDesc Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 03/26] QemuOpt: improve default value Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 04/26] QemuOpt: introduce qemu_opts_append() Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 05/26] QemuOpt: add qemu_opt_print_help() Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 06/26] block: migrate block later QemuOptionParameter Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 07/26] cow: migrate cow driver QemuOptionParameter usage Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 08/26] gluster: migrate gluster " Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 09/26] iscsi: migrate iscsi " Leandro Dorileo
2014-03-21  6:43   ` Peter Lieven
2014-03-21 13:31     ` Leandro Dorileo
2014-03-21 13:34       ` Leandro Dorileo
2014-03-21 13:42       ` Peter Lieven
2014-03-21 13:54         ` Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 10/26] nfs: migrate nfs " Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 11/26] qcow: migrate qcow " Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 12/26] qcow2: migrate qcow2 " Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 13/26] qed: migrate qed " Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 14/26] raw-posix: migrate raw-posix " Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 15/26] raw-win32: migrate cow " Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 16/26] raw_bsd: migrate raw_bsd " Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 17/26] rbd: migrate rbd " Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 18/26] sheepdog: migrate sheepdog " Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 19/26] ssh: migrate ssh " Leandro Dorileo
2014-03-21  8:32   ` Richard W.M. Jones
2014-03-21  0:13 ` [Qemu-devel] [PATCH 20/26] vdi: migrate vdi " Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 21/26] vhdx: migrate vhdx " Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 22/26] vmdk: migrate vmdk " Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 23/26] vpc: migrate vpc " Leandro Dorileo
2014-03-21  0:13 ` [Qemu-devel] [PATCH 24/26] vvfat: migrate vvfat " Leandro Dorileo
2014-03-21  0:13 ` Leandro Dorileo [this message]
2014-03-21  0:13 ` [Qemu-devel] [PATCH 26/26] qemu-img: migrate " Leandro Dorileo

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=1395360813-2833-26-git-send-email-l@dorileo.org \
    --to=l@dorileo.org \
    --cc=anthony@codemonkey.ws \
    --cc=armbru@redhat.com \
    --cc=benoit@irqsave.net \
    --cc=famz@redhat.com \
    --cc=jcody@redhat.com \
    --cc=josh.durgin@inktank.com \
    --cc=kwolf@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=morita.kazutaka@lab.ntt.co.jp \
    --cc=mreitz@redhat.com \
    --cc=namei.unix@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=pl@kamp.de \
    --cc=qemu-devel@nongnu.org \
    --cc=rjones@redhat.com \
    --cc=ronniesahlberg@gmail.com \
    --cc=stefanha@redhat.com \
    --cc=sw@weilnetz.de \
    /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).