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,6 +85,70 @@ const char *get_opt_value(char *buf, int buf_size, const char *p)
85 return p; 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 * Searches an option list for an option with the given name 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,6 +46,12 @@ typedef struct QEMUOptionParameter {
46 46
47 const char *get_opt_name(char *buf, int buf_size, const char *p, char delim); 47 const char *get_opt_name(char *buf, int buf_size, const char *p, char delim);
48 const char *get_opt_value(char *buf, int buf_size, const char *p); 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,6 +3,7 @@
3 /* Misc. things related to the system emulator. */ 3 /* Misc. things related to the system emulator. */
4 4
5 #include "qemu-common.h" 5 #include "qemu-common.h"
  6 +#include "qemu-option.h"
6 #include "sys-queue.h" 7 #include "sys-queue.h"
7 8
8 #ifdef _WIN32 9 #ifdef _WIN32
@@ -276,13 +277,6 @@ void do_usb_add(Monitor *mon, const char *devname); @@ -276,13 +277,6 @@ void do_usb_add(Monitor *mon, const char *devname);
276 void do_usb_del(Monitor *mon, const char *devname); 277 void do_usb_del(Monitor *mon, const char *devname);
277 void usb_info(Monitor *mon); 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 void register_devices(void); 280 void register_devices(void);
287 281
288 #endif 282 #endif
@@ -1599,70 +1599,6 @@ static int socket_init(void) @@ -1599,70 +1599,6 @@ static int socket_init(void)
1599 } 1599 }
1600 #endif 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 /* Bluetooth support */ 1603 /* Bluetooth support */
1668 static int nb_hcis; 1604 static int nb_hcis;