version 1.112, 2017/02/16 10:53:25 |
version 1.113, 2017/04/22 06:13:30 |
|
|
enum options_table_scope scope; |
enum options_table_scope scope; |
struct options *oo; |
struct options *oo; |
struct options_entry *parent, *o; |
struct options_entry *parent, *o; |
const char *name, *value, *target; |
char *name; |
|
const char *value, *target; |
int window, idx, already, error, ambiguous; |
int window, idx, already, error, ambiguous; |
char *cause; |
char *cause; |
|
|
|
|
return (CMD_RETURN_NORMAL); |
return (CMD_RETURN_NORMAL); |
cmdq_error(item, "%s", cause); |
cmdq_error(item, "%s", cause); |
free(cause); |
free(cause); |
return (CMD_RETURN_ERROR); |
goto fail; |
} |
} |
|
|
/* Which table should this option go into? */ |
/* Which table should this option go into? */ |
|
|
cmdq_error(item, "no such session: %s", target); |
cmdq_error(item, "no such session: %s", target); |
else |
else |
cmdq_error(item, "no current session"); |
cmdq_error(item, "no current session"); |
return (CMD_RETURN_ERROR); |
goto fail; |
} else |
} else |
oo = s->options; |
oo = s->options; |
} else if (scope == OPTIONS_TABLE_WINDOW) { |
} else if (scope == OPTIONS_TABLE_WINDOW) { |
|
|
cmdq_error(item, "no such window: %s", target); |
cmdq_error(item, "no such window: %s", target); |
else |
else |
cmdq_error(item, "no current window"); |
cmdq_error(item, "no current window"); |
return (CMD_RETURN_ERROR); |
goto fail; |
} else |
} else |
oo = wl->window->options; |
oo = wl->window->options; |
} |
} |
|
|
if (idx != -1) { |
if (idx != -1) { |
if (*name == '@' || options_array_size(parent, NULL) == -1) { |
if (*name == '@' || options_array_size(parent, NULL) == -1) { |
cmdq_error(item, "not an array: %s", args->argv[0]); |
cmdq_error(item, "not an array: %s", args->argv[0]); |
return (CMD_RETURN_ERROR); |
goto fail; |
} |
} |
} |
} |
|
|
|
|
if (args_has(args, 'q')) |
if (args_has(args, 'q')) |
return (CMD_RETURN_NORMAL); |
return (CMD_RETURN_NORMAL); |
cmdq_error(item, "already set: %s", args->argv[0]); |
cmdq_error(item, "already set: %s", args->argv[0]); |
return (CMD_RETURN_ERROR); |
goto fail; |
} |
} |
} |
} |
|
|
/* Change the option. */ |
/* Change the option. */ |
if (args_has(args, 'u')) { |
if (args_has(args, 'u')) { |
if (o == NULL) |
if (o == NULL) |
return (CMD_RETURN_NORMAL); |
goto fail; |
if (idx == -1) { |
if (idx == -1) { |
if (oo == global_options || |
if (oo == global_options || |
oo == global_s_options || |
oo == global_s_options || |
|
|
} else if (*name == '@') { |
} else if (*name == '@') { |
if (value == NULL) { |
if (value == NULL) { |
cmdq_error(item, "empty value"); |
cmdq_error(item, "empty value"); |
return (CMD_RETURN_ERROR); |
goto fail; |
} |
} |
options_set_string(oo, name, append, "%s", value); |
options_set_string(oo, name, append, "%s", value); |
} else if (idx == -1 && options_array_size(parent, NULL) == -1) { |
} else if (idx == -1 && options_array_size(parent, NULL) == -1) { |
error = cmd_set_option_set(self, item, oo, parent, value); |
error = cmd_set_option_set(self, item, oo, parent, value); |
if (error != 0) |
if (error != 0) |
return (CMD_RETURN_ERROR); |
goto fail; |
} else { |
} else { |
if (value == NULL) { |
if (value == NULL) { |
cmdq_error(item, "empty value"); |
cmdq_error(item, "empty value"); |
return (CMD_RETURN_ERROR); |
goto fail; |
} |
} |
if (o == NULL) |
if (o == NULL) |
o = options_empty(oo, options_table_entry(parent)); |
o = options_empty(oo, options_table_entry(parent)); |
|
|
options_array_assign(o, value); |
options_array_assign(o, value); |
} else if (options_array_set(o, idx, value, append) != 0) { |
} else if (options_array_set(o, idx, value, append) != 0) { |
cmdq_error(item, "invalid index: %s", args->argv[0]); |
cmdq_error(item, "invalid index: %s", args->argv[0]); |
return (CMD_RETURN_ERROR); |
goto fail; |
} |
} |
} |
} |
|
|
|
|
server_redraw_client(c); |
server_redraw_client(c); |
} |
} |
|
|
|
free(name); |
return (CMD_RETURN_NORMAL); |
return (CMD_RETURN_NORMAL); |
|
|
|
fail: |
|
free(name); |
|
return (CMD_RETURN_ERROR); |
} |
} |
|
|
static int |
static int |