qemu-option.c (70b9433109ed99217b812f19800de550e2e0ecd5) | qemu-option.c (c6bd8c706a799eb0fece99f468aaa22b818036f3) |
---|---|
1/* 2 * Commandline option parsing functions 3 * 4 * Copyright (c) 2003-2008 Fabrice Bellard 5 * Copyright (c) 2009 Kevin Wolf <kwolf@redhat.com> 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a copy 8 * of this software and associated documentation files (the "Software"), to deal --- 118 unchanged lines hidden (view full) --- 127 Error **errp) 128{ 129 if (value != NULL) { 130 if (!strcmp(value, "on")) { 131 *ret = 1; 132 } else if (!strcmp(value, "off")) { 133 *ret = 0; 134 } else { | 1/* 2 * Commandline option parsing functions 3 * 4 * Copyright (c) 2003-2008 Fabrice Bellard 5 * Copyright (c) 2009 Kevin Wolf <kwolf@redhat.com> 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a copy 8 * of this software and associated documentation files (the "Software"), to deal --- 118 unchanged lines hidden (view full) --- 127 Error **errp) 128{ 129 if (value != NULL) { 130 if (!strcmp(value, "on")) { 131 *ret = 1; 132 } else if (!strcmp(value, "off")) { 133 *ret = 0; 134 } else { |
135 error_set(errp,QERR_INVALID_PARAMETER_VALUE, name, "'on' or 'off'"); | 135 error_setg(errp, QERR_INVALID_PARAMETER_VALUE, 136 name, "'on' or 'off'"); |
136 } 137 } else { 138 *ret = 1; 139 } 140} 141 142static void parse_option_number(const char *name, const char *value, 143 uint64_t *ret, Error **errp) 144{ 145 char *postfix; 146 uint64_t number; 147 148 if (value != NULL) { 149 number = strtoull(value, &postfix, 0); 150 if (*postfix != '\0') { | 137 } 138 } else { 139 *ret = 1; 140 } 141} 142 143static void parse_option_number(const char *name, const char *value, 144 uint64_t *ret, Error **errp) 145{ 146 char *postfix; 147 uint64_t number; 148 149 if (value != NULL) { 150 number = strtoull(value, &postfix, 0); 151 if (*postfix != '\0') { |
151 error_set(errp, QERR_INVALID_PARAMETER_VALUE, name, "a number"); | 152 error_setg(errp, QERR_INVALID_PARAMETER_VALUE, name, "a number"); |
152 return; 153 } 154 *ret = number; 155 } else { | 153 return; 154 } 155 *ret = number; 156 } else { |
156 error_set(errp, QERR_INVALID_PARAMETER_VALUE, name, "a number"); | 157 error_setg(errp, QERR_INVALID_PARAMETER_VALUE, name, "a number"); |
157 } 158} 159 160static const QemuOptDesc *find_desc_by_name(const QemuOptDesc *desc, 161 const char *name) 162{ 163 int i; 164 --- 28 unchanged lines hidden (view full) --- 193 case 'k': 194 sizef *= 1024; 195 /* fall through */ 196 case 'b': 197 case '\0': 198 *ret = (uint64_t) sizef; 199 break; 200 default: | 158 } 159} 160 161static const QemuOptDesc *find_desc_by_name(const QemuOptDesc *desc, 162 const char *name) 163{ 164 int i; 165 --- 28 unchanged lines hidden (view full) --- 194 case 'k': 195 sizef *= 1024; 196 /* fall through */ 197 case 'b': 198 case '\0': 199 *ret = (uint64_t) sizef; 200 break; 201 default: |
201 error_set(errp, QERR_INVALID_PARAMETER_VALUE, name, "a size"); | 202 error_setg(errp, QERR_INVALID_PARAMETER_VALUE, name, "a size"); |
202#if 0 /* conversion from qerror_report() to error_set() broke this: */ 203 error_printf_unless_qmp("You may use k, M, G or T suffixes for " 204 "kilobytes, megabytes, gigabytes and terabytes.\n"); 205#endif 206 return; 207 } 208 } else { | 203#if 0 /* conversion from qerror_report() to error_set() broke this: */ 204 error_printf_unless_qmp("You may use k, M, G or T suffixes for " 205 "kilobytes, megabytes, gigabytes and terabytes.\n"); 206#endif 207 return; 208 } 209 } else { |
209 error_set(errp, QERR_INVALID_PARAMETER_VALUE, name, "a size"); | 210 error_setg(errp, QERR_INVALID_PARAMETER_VALUE, name, "a size"); |
210 } 211} 212 213bool has_help_option(const char *param) 214{ 215 size_t buflen = strlen(param) + 1; 216 char *buf = g_malloc(buflen); 217 const char *p = param; --- 304 unchanged lines hidden (view full) --- 522 bool prepend, Error **errp) 523{ 524 QemuOpt *opt; 525 const QemuOptDesc *desc; 526 Error *local_err = NULL; 527 528 desc = find_desc_by_name(opts->list->desc, name); 529 if (!desc && !opts_accepts_any(opts)) { | 211 } 212} 213 214bool has_help_option(const char *param) 215{ 216 size_t buflen = strlen(param) + 1; 217 char *buf = g_malloc(buflen); 218 const char *p = param; --- 304 unchanged lines hidden (view full) --- 523 bool prepend, Error **errp) 524{ 525 QemuOpt *opt; 526 const QemuOptDesc *desc; 527 Error *local_err = NULL; 528 529 desc = find_desc_by_name(opts->list->desc, name); 530 if (!desc && !opts_accepts_any(opts)) { |
530 error_set(errp, QERR_INVALID_PARAMETER, name); | 531 error_setg(errp, QERR_INVALID_PARAMETER, name); |
531 return; 532 } 533 534 opt = g_malloc0(sizeof(*opt)); 535 opt->name = g_strdup(name); 536 opt->opts = opts; 537 if (prepend) { 538 QTAILQ_INSERT_HEAD(&opts->head, opt, next); --- 19 unchanged lines hidden (view full) --- 558 Error **errp) 559{ 560 QemuOpt *opt; 561 const QemuOptDesc *desc = opts->list->desc; 562 563 opt = g_malloc0(sizeof(*opt)); 564 opt->desc = find_desc_by_name(desc, name); 565 if (!opt->desc && !opts_accepts_any(opts)) { | 532 return; 533 } 534 535 opt = g_malloc0(sizeof(*opt)); 536 opt->name = g_strdup(name); 537 opt->opts = opts; 538 if (prepend) { 539 QTAILQ_INSERT_HEAD(&opts->head, opt, next); --- 19 unchanged lines hidden (view full) --- 559 Error **errp) 560{ 561 QemuOpt *opt; 562 const QemuOptDesc *desc = opts->list->desc; 563 564 opt = g_malloc0(sizeof(*opt)); 565 opt->desc = find_desc_by_name(desc, name); 566 if (!opt->desc && !opts_accepts_any(opts)) { |
566 error_set(errp, QERR_INVALID_PARAMETER, name); | 567 error_setg(errp, QERR_INVALID_PARAMETER, name); |
567 g_free(opt); 568 return; 569 } 570 571 opt->name = g_strdup(name); 572 opt->opts = opts; 573 opt->value.boolean = !!val; 574 opt->str = g_strdup(val ? "on" : "off"); --- 4 unchanged lines hidden (view full) --- 579 Error **errp) 580{ 581 QemuOpt *opt; 582 const QemuOptDesc *desc = opts->list->desc; 583 584 opt = g_malloc0(sizeof(*opt)); 585 opt->desc = find_desc_by_name(desc, name); 586 if (!opt->desc && !opts_accepts_any(opts)) { | 568 g_free(opt); 569 return; 570 } 571 572 opt->name = g_strdup(name); 573 opt->opts = opts; 574 opt->value.boolean = !!val; 575 opt->str = g_strdup(val ? "on" : "off"); --- 4 unchanged lines hidden (view full) --- 580 Error **errp) 581{ 582 QemuOpt *opt; 583 const QemuOptDesc *desc = opts->list->desc; 584 585 opt = g_malloc0(sizeof(*opt)); 586 opt->desc = find_desc_by_name(desc, name); 587 if (!opt->desc && !opts_accepts_any(opts)) { |
587 error_set(errp, QERR_INVALID_PARAMETER, name); | 588 error_setg(errp, QERR_INVALID_PARAMETER, name); |
588 g_free(opt); 589 return; 590 } 591 592 opt->name = g_strdup(name); 593 opt->opts = opts; 594 opt->value.uint = val; 595 opt->str = g_strdup_printf("%" PRId64, val); --- 39 unchanged lines hidden (view full) --- 635 636QemuOpts *qemu_opts_create(QemuOptsList *list, const char *id, 637 int fail_if_exists, Error **errp) 638{ 639 QemuOpts *opts = NULL; 640 641 if (id) { 642 if (!id_wellformed(id)) { | 589 g_free(opt); 590 return; 591 } 592 593 opt->name = g_strdup(name); 594 opt->opts = opts; 595 opt->value.uint = val; 596 opt->str = g_strdup_printf("%" PRId64, val); --- 39 unchanged lines hidden (view full) --- 636 637QemuOpts *qemu_opts_create(QemuOptsList *list, const char *id, 638 int fail_if_exists, Error **errp) 639{ 640 QemuOpts *opts = NULL; 641 642 if (id) { 643 if (!id_wellformed(id)) { |
643 error_set(errp,QERR_INVALID_PARAMETER_VALUE, "id", "an identifier"); | 644 error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "id", 645 "an identifier"); |
644#if 0 /* conversion from qerror_report() to error_set() broke this: */ 645 error_printf_unless_qmp("Identifiers consist of letters, digits, '-', '.', '_', starting with a letter.\n"); 646#endif 647 return NULL; 648 } 649 opts = qemu_opts_find(list, id); 650 if (opts != NULL) { 651 if (fail_if_exists && !list->merge_lists) { --- 398 unchanged lines hidden (view full) --- 1050 QemuOpt *opt; 1051 Error *local_err = NULL; 1052 1053 assert(opts_accepts_any(opts)); 1054 1055 QTAILQ_FOREACH(opt, &opts->head, next) { 1056 opt->desc = find_desc_by_name(desc, opt->name); 1057 if (!opt->desc) { | 646#if 0 /* conversion from qerror_report() to error_set() broke this: */ 647 error_printf_unless_qmp("Identifiers consist of letters, digits, '-', '.', '_', starting with a letter.\n"); 648#endif 649 return NULL; 650 } 651 opts = qemu_opts_find(list, id); 652 if (opts != NULL) { 653 if (fail_if_exists && !list->merge_lists) { --- 398 unchanged lines hidden (view full) --- 1052 QemuOpt *opt; 1053 Error *local_err = NULL; 1054 1055 assert(opts_accepts_any(opts)); 1056 1057 QTAILQ_FOREACH(opt, &opts->head, next) { 1058 opt->desc = find_desc_by_name(desc, opt->name); 1059 if (!opt->desc) { |
1058 error_set(errp, QERR_INVALID_PARAMETER, opt->name); | 1060 error_setg(errp, QERR_INVALID_PARAMETER, opt->name); |
1059 return; 1060 } 1061 1062 qemu_opt_parse(opt, &local_err); 1063 if (local_err) { 1064 error_propagate(errp, local_err); 1065 return; 1066 } --- 112 unchanged lines hidden --- | 1061 return; 1062 } 1063 1064 qemu_opt_parse(opt, &local_err); 1065 if (local_err) { 1066 error_propagate(errp, local_err); 1067 return; 1068 } --- 112 unchanged lines hidden --- |