mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-03 09:01:50 -05:00
Fix pa_parse_boolean() return value checking.
pa_parse_boolean() return value shouldn't be stored in pa_bool_t, because 1 and -1 need to be distinguished.
This commit is contained in:
parent
188d037150
commit
19c058dd08
3 changed files with 43 additions and 16 deletions
|
|
@ -170,6 +170,7 @@ void pa_cmdline_help(const char *argv0) {
|
|||
int pa_cmdline_parse(pa_daemon_conf *conf, int argc, char *const argv [], int *d) {
|
||||
pa_strbuf *buf = NULL;
|
||||
int c;
|
||||
int b;
|
||||
|
||||
pa_assert(conf);
|
||||
pa_assert(argc > 0);
|
||||
|
|
@ -240,17 +241,19 @@ int pa_cmdline_parse(pa_daemon_conf *conf, int argc, char *const argv [], int *d
|
|||
|
||||
case ARG_DAEMONIZE:
|
||||
case 'D':
|
||||
if ((conf->daemonize = optarg ? pa_parse_boolean(optarg) : TRUE) < 0) {
|
||||
if ((b = optarg ? pa_parse_boolean(optarg) : 1) < 0) {
|
||||
pa_log(_("--daemonize expects boolean argument"));
|
||||
goto fail;
|
||||
}
|
||||
conf->daemonize = !!b;
|
||||
break;
|
||||
|
||||
case ARG_FAIL:
|
||||
if ((conf->fail = optarg ? pa_parse_boolean(optarg) : TRUE) < 0) {
|
||||
if ((b = optarg ? pa_parse_boolean(optarg) : 1) < 0) {
|
||||
pa_log(_("--fail expects boolean argument"));
|
||||
goto fail;
|
||||
}
|
||||
conf->fail = !!b;
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
|
|
@ -269,38 +272,43 @@ int pa_cmdline_parse(pa_daemon_conf *conf, int argc, char *const argv [], int *d
|
|||
break;
|
||||
|
||||
case ARG_HIGH_PRIORITY:
|
||||
if ((conf->high_priority = optarg ? pa_parse_boolean(optarg) : TRUE) < 0) {
|
||||
if ((b = optarg ? pa_parse_boolean(optarg) : 1) < 0) {
|
||||
pa_log(_("--high-priority expects boolean argument"));
|
||||
goto fail;
|
||||
}
|
||||
conf->high_priority = !!b;
|
||||
break;
|
||||
|
||||
case ARG_REALTIME:
|
||||
if ((conf->realtime_scheduling = optarg ? pa_parse_boolean(optarg) : TRUE) < 0) {
|
||||
if ((b = optarg ? pa_parse_boolean(optarg) : 1) < 0) {
|
||||
pa_log(_("--realtime expects boolean argument"));
|
||||
goto fail;
|
||||
}
|
||||
conf->realtime_scheduling = !!b;
|
||||
break;
|
||||
|
||||
case ARG_DISALLOW_MODULE_LOADING:
|
||||
if ((conf->disallow_module_loading = optarg ? pa_parse_boolean(optarg) : TRUE) < 0) {
|
||||
if ((b = optarg ? pa_parse_boolean(optarg) : 1) < 0) {
|
||||
pa_log(_("--disallow-module-loading expects boolean argument"));
|
||||
goto fail;
|
||||
}
|
||||
conf->disallow_module_loading = !!b;
|
||||
break;
|
||||
|
||||
case ARG_DISALLOW_EXIT:
|
||||
if ((conf->disallow_exit = optarg ? pa_parse_boolean(optarg) : TRUE) < 0) {
|
||||
if ((b = optarg ? pa_parse_boolean(optarg) : 1) < 0) {
|
||||
pa_log(_("--disallow-exit expects boolean argument"));
|
||||
goto fail;
|
||||
}
|
||||
conf->disallow_exit = !!b;
|
||||
break;
|
||||
|
||||
case ARG_USE_PID_FILE:
|
||||
if ((conf->use_pid_file = optarg ? pa_parse_boolean(optarg) : TRUE) < 0) {
|
||||
if ((b = optarg ? pa_parse_boolean(optarg) : 1) < 0) {
|
||||
pa_log(_("--use-pid-file expects boolean argument"));
|
||||
goto fail;
|
||||
}
|
||||
conf->use_pid_file = !!b;
|
||||
break;
|
||||
|
||||
case 'p':
|
||||
|
|
@ -321,17 +329,19 @@ int pa_cmdline_parse(pa_daemon_conf *conf, int argc, char *const argv [], int *d
|
|||
break;
|
||||
|
||||
case ARG_LOG_TIME:
|
||||
if ((conf->log_time = optarg ? pa_parse_boolean(optarg) : TRUE) < 0) {
|
||||
if ((b = optarg ? pa_parse_boolean(optarg) : 1) < 0) {
|
||||
pa_log(_("--log-time expects boolean argument"));
|
||||
goto fail;
|
||||
}
|
||||
conf->log_time = !!b;
|
||||
break;
|
||||
|
||||
case ARG_LOG_META:
|
||||
if ((conf->log_meta = optarg ? pa_parse_boolean(optarg) : TRUE) < 0) {
|
||||
if ((b = optarg ? pa_parse_boolean(optarg) : 1) < 0) {
|
||||
pa_log(_("--log-meta expects boolean argument"));
|
||||
goto fail;
|
||||
}
|
||||
conf->log_meta = !!b;
|
||||
break;
|
||||
|
||||
case ARG_LOG_BACKTRACE:
|
||||
|
|
@ -354,24 +364,27 @@ int pa_cmdline_parse(pa_daemon_conf *conf, int argc, char *const argv [], int *d
|
|||
break;
|
||||
|
||||
case ARG_SYSTEM:
|
||||
if ((conf->system_instance = optarg ? pa_parse_boolean(optarg) : TRUE) < 0) {
|
||||
if ((b = optarg ? pa_parse_boolean(optarg) : 1) < 0) {
|
||||
pa_log(_("--system expects boolean argument"));
|
||||
goto fail;
|
||||
}
|
||||
conf->system_instance = !!b;
|
||||
break;
|
||||
|
||||
case ARG_NO_CPU_LIMIT:
|
||||
if ((conf->no_cpu_limit = optarg ? pa_parse_boolean(optarg) : TRUE) < 0) {
|
||||
if ((b = optarg ? pa_parse_boolean(optarg) : 1) < 0) {
|
||||
pa_log(_("--no-cpu-limit expects boolean argument"));
|
||||
goto fail;
|
||||
}
|
||||
conf->no_cpu_limit = !!b;
|
||||
break;
|
||||
|
||||
case ARG_DISABLE_SHM:
|
||||
if ((conf->disable_shm = optarg ? pa_parse_boolean(optarg) : TRUE) < 0) {
|
||||
if ((b = optarg ? pa_parse_boolean(optarg) : 1) < 0) {
|
||||
pa_log(_("--disable-shm expects boolean argument"));
|
||||
goto fail;
|
||||
}
|
||||
conf->disable_shm = !!b;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -1565,7 +1565,7 @@ static int pa_cli_command_log_level(pa_core *c, pa_tokenizer *t, pa_strbuf *buf,
|
|||
|
||||
static int pa_cli_command_log_meta(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail) {
|
||||
const char *m;
|
||||
pa_bool_t b;
|
||||
int b;
|
||||
|
||||
pa_core_assert_ref(c);
|
||||
pa_assert(t);
|
||||
|
|
@ -1589,7 +1589,7 @@ static int pa_cli_command_log_meta(pa_core *c, pa_tokenizer *t, pa_strbuf *buf,
|
|||
|
||||
static int pa_cli_command_log_time(pa_core *c, pa_tokenizer *t, pa_strbuf *buf, pa_bool_t *fail) {
|
||||
const char *m;
|
||||
pa_bool_t b;
|
||||
int b;
|
||||
|
||||
pa_core_assert_ref(c);
|
||||
pa_assert(t);
|
||||
|
|
|
|||
|
|
@ -1622,6 +1622,8 @@ int main(int argc, char *argv[]) {
|
|||
module_name = argv[optind + 1];
|
||||
|
||||
} else if (pa_streq(argv[optind], "suspend-sink")) {
|
||||
int b;
|
||||
|
||||
action = SUSPEND_SINK;
|
||||
|
||||
if (argc > optind+3 || optind+1 >= argc) {
|
||||
|
|
@ -1629,12 +1631,19 @@ int main(int argc, char *argv[]) {
|
|||
goto quit;
|
||||
}
|
||||
|
||||
suspend = pa_parse_boolean(argv[argc-1]);
|
||||
if ((b = pa_parse_boolean(argv[argc-1])) < 0) {
|
||||
pa_log(_("Invalid suspend specification."));
|
||||
goto quit;
|
||||
}
|
||||
|
||||
suspend = !!b;
|
||||
|
||||
if (argc > optind+2)
|
||||
sink_name = pa_xstrdup(argv[optind+1]);
|
||||
|
||||
} else if (pa_streq(argv[optind], "suspend-source")) {
|
||||
int b;
|
||||
|
||||
action = SUSPEND_SOURCE;
|
||||
|
||||
if (argc > optind+3 || optind+1 >= argc) {
|
||||
|
|
@ -1642,7 +1651,12 @@ int main(int argc, char *argv[]) {
|
|||
goto quit;
|
||||
}
|
||||
|
||||
suspend = pa_parse_boolean(argv[argc-1]);
|
||||
if ((b = pa_parse_boolean(argv[argc-1])) < 0) {
|
||||
pa_log(_("Invalid suspend specification."));
|
||||
goto quit;
|
||||
}
|
||||
|
||||
suspend = !!b;
|
||||
|
||||
if (argc > optind+2)
|
||||
source_name = pa_xstrdup(argv[optind+1]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue