Commit 62c5802efdabe2a24ca9680a1ab9dcbbfbaf43d2

Authored by Gerd Hoffmann
Committed by Anthony Liguori
1 parent 3b0ba927

move parser functions from vl.c to qemu-option.c

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
qemu-option.c
... ... @@ -85,6 +85,70 @@ const char *get_opt_value(char *buf, int buf_size, const char *p)
85 85 return p;
86 86 }
87 87  
  88 +int get_next_param_value(char *buf, int buf_size,
  89 + const char *tag, const char **pstr)
  90 +{
  91 + const char *p;
  92 + char option[128];
  93 +
  94 + p = *pstr;
  95 + for(;;) {
  96 + p = get_opt_name(option, sizeof(option), p, '=');
  97 + if (*p != '=')
  98 + break;
  99 + p++;
  100 + if (!strcmp(tag, option)) {
  101 + *pstr = get_opt_value(buf, buf_size, p);
  102 + if (**pstr == ',') {
  103 + (*pstr)++;
  104 + }
  105 + return strlen(buf);
  106 + } else {
  107 + p = get_opt_value(NULL, 0, p);
  108 + }
  109 + if (*p != ',')
  110 + break;
  111 + p++;
  112 + }
  113 + return 0;
  114 +}
  115 +
  116 +int get_param_value(char *buf, int buf_size,
  117 + const char *tag, const char *str)
  118 +{
  119 + return get_next_param_value(buf, buf_size, tag, &str);
  120 +}
  121 +
  122 +int check_params(char *buf, int buf_size,
  123 + const char * const *params, const char *str)
  124 +{
  125 + const char *p;
  126 + int i;
  127 +
  128 + p = str;
  129 + while (*p != '\0') {
  130 + p = get_opt_name(buf, buf_size, p, '=');
  131 + if (*p != '=') {
  132 + return -1;
  133 + }
  134 + p++;
  135 + for (i = 0; params[i] != NULL; i++) {
  136 + if (!strcmp(params[i], buf)) {
  137 + break;
  138 + }
  139 + }
  140 + if (params[i] == NULL) {
  141 + return -1;
  142 + }
  143 + p = get_opt_value(NULL, 0, p);
  144 + if (*p != ',') {
  145 + break;
  146 + }
  147 + p++;
  148 + }
  149 + return 0;
  150 +}
  151 +
88 152 /*
89 153 * Searches an option list for an option with the given name
90 154 */
... ...
qemu-option.h
... ... @@ -46,6 +46,12 @@ typedef struct QEMUOptionParameter {
46 46  
47 47 const char *get_opt_name(char *buf, int buf_size, const char *p, char delim);
48 48 const char *get_opt_value(char *buf, int buf_size, const char *p);
  49 +int get_next_param_value(char *buf, int buf_size,
  50 + const char *tag, const char **pstr);
  51 +int get_param_value(char *buf, int buf_size,
  52 + const char *tag, const char *str);
  53 +int check_params(char *buf, int buf_size,
  54 + const char * const *params, const char *str);
49 55  
50 56  
51 57 /*
... ...
sysemu.h
... ... @@ -3,6 +3,7 @@
3 3 /* Misc. things related to the system emulator. */
4 4  
5 5 #include "qemu-common.h"
  6 +#include "qemu-option.h"
6 7 #include "sys-queue.h"
7 8  
8 9 #ifdef _WIN32
... ... @@ -276,13 +277,6 @@ void do_usb_add(Monitor *mon, const char *devname);
276 277 void do_usb_del(Monitor *mon, const char *devname);
277 278 void usb_info(Monitor *mon);
278 279  
279   -int get_param_value(char *buf, int buf_size,
280   - const char *tag, const char *str);
281   -int get_next_param_value(char *buf, int buf_size,
282   - const char *tag, const char **pstr);
283   -int check_params(char *buf, int buf_size,
284   - const char * const *params, const char *str);
285   -
286 280 void register_devices(void);
287 281  
288 282 #endif
... ...
... ... @@ -1599,70 +1599,6 @@ static int socket_init(void)
1599 1599 }
1600 1600 #endif
1601 1601  
1602   -int get_next_param_value(char *buf, int buf_size,
1603   - const char *tag, const char **pstr)
1604   -{
1605   - const char *p;
1606   - char option[128];
1607   -
1608   - p = *pstr;
1609   - for(;;) {
1610   - p = get_opt_name(option, sizeof(option), p, '=');
1611   - if (*p != '=')
1612   - break;
1613   - p++;
1614   - if (!strcmp(tag, option)) {
1615   - *pstr = get_opt_value(buf, buf_size, p);
1616   - if (**pstr == ',') {
1617   - (*pstr)++;
1618   - }
1619   - return strlen(buf);
1620   - } else {
1621   - p = get_opt_value(NULL, 0, p);
1622   - }
1623   - if (*p != ',')
1624   - break;
1625   - p++;
1626   - }
1627   - return 0;
1628   -}
1629   -
1630   -int get_param_value(char *buf, int buf_size,
1631   - const char *tag, const char *str)
1632   -{
1633   - return get_next_param_value(buf, buf_size, tag, &str);
1634   -}
1635   -
1636   -int check_params(char *buf, int buf_size,
1637   - const char * const *params, const char *str)
1638   -{
1639   - const char *p;
1640   - int i;
1641   -
1642   - p = str;
1643   - while (*p != '\0') {
1644   - p = get_opt_name(buf, buf_size, p, '=');
1645   - if (*p != '=') {
1646   - return -1;
1647   - }
1648   - p++;
1649   - for (i = 0; params[i] != NULL; i++) {
1650   - if (!strcmp(params[i], buf)) {
1651   - break;
1652   - }
1653   - }
1654   - if (params[i] == NULL) {
1655   - return -1;
1656   - }
1657   - p = get_opt_value(NULL, 0, p);
1658   - if (*p != ',') {
1659   - break;
1660   - }
1661   - p++;
1662   - }
1663   - return 0;
1664   -}
1665   -
1666 1602 /***********************************************************/
1667 1603 /* Bluetooth support */
1668 1604 static int nb_hcis;
... ...