opt: add config parse arg num to 4
This commit is contained in:
@@ -172,6 +172,8 @@ I would probably just submit raphi's patchset but I don't think that would be po
|
|||||||
<arg name="dispatch" type="string" summary="dispatch name."/>
|
<arg name="dispatch" type="string" summary="dispatch name."/>
|
||||||
<arg name="arg1" type="string" summary="arg1."/>
|
<arg name="arg1" type="string" summary="arg1."/>
|
||||||
<arg name="arg2" type="string" summary="arg2."/>
|
<arg name="arg2" type="string" summary="arg2."/>
|
||||||
|
<arg name="arg3" type="string" summary="arg3."/>
|
||||||
|
<arg name="arg4" type="string" summary="arg4."/>
|
||||||
</request>
|
</request>
|
||||||
|
|
||||||
<!-- Version 2 -->
|
<!-- Version 2 -->
|
||||||
|
|||||||
@@ -419,10 +419,11 @@ unsigned int parse_num_type(char *str) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FuncType parse_func_name(char *func_name, Arg *arg, char *arg_value, char *arg_value2) {
|
FuncType parse_func_name(char *func_name, Arg *arg, char *arg_value, char *arg_value2, char *arg_value3, char *arg_value4) {
|
||||||
|
|
||||||
FuncType func = NULL;
|
FuncType func = NULL;
|
||||||
(*arg).v = NULL;
|
(*arg).v = NULL;
|
||||||
|
(*arg).v2 = NULL;
|
||||||
|
|
||||||
if (strcmp(func_name, "focusstack") == 0) {
|
if (strcmp(func_name, "focusstack") == 0) {
|
||||||
func = focusstack;
|
func = focusstack;
|
||||||
@@ -1079,9 +1080,9 @@ void parse_config_line(Config *config, const char *line) {
|
|||||||
KeyBinding *binding = &config->key_bindings[config->key_bindings_count];
|
KeyBinding *binding = &config->key_bindings[config->key_bindings_count];
|
||||||
memset(binding, 0, sizeof(KeyBinding));
|
memset(binding, 0, sizeof(KeyBinding));
|
||||||
|
|
||||||
char mod_str[256], keysym_str[256], func_name[256], arg_value[256] = "none",arg_value2[256] = "none";
|
char mod_str[256], keysym_str[256], func_name[256], arg_value[256] = "none",arg_value2[256] = "none", arg_value3[256] = "none", arg_value4[256] = "none";
|
||||||
if (sscanf(value, "%[^,],%[^,],%[^,],%[^,],%[^\n]", mod_str, keysym_str,
|
if (sscanf(value, "%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]", mod_str, keysym_str,
|
||||||
func_name, arg_value, arg_value2) < 3) {
|
func_name, arg_value, arg_value2, arg_value3, arg_value4) < 3) {
|
||||||
fprintf(stderr, "Error: Invalid bind format: %s\n", value);
|
fprintf(stderr, "Error: Invalid bind format: %s\n", value);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1089,12 +1090,17 @@ void parse_config_line(Config *config, const char *line) {
|
|||||||
binding->mod = parse_mod(mod_str);
|
binding->mod = parse_mod(mod_str);
|
||||||
binding->keysym = parse_keysym(keysym_str);
|
binding->keysym = parse_keysym(keysym_str);
|
||||||
binding->arg.v = NULL;
|
binding->arg.v = NULL;
|
||||||
binding->func = parse_func_name(func_name, &binding->arg, arg_value, arg_value2);
|
binding->arg.v2 = NULL;
|
||||||
|
binding->func = parse_func_name(func_name, &binding->arg, arg_value, arg_value2, arg_value3, arg_value4);
|
||||||
if (!binding->func) {
|
if (!binding->func) {
|
||||||
if (binding->arg.v) {
|
if (binding->arg.v) {
|
||||||
free(binding->arg.v);
|
free(binding->arg.v);
|
||||||
binding->arg.v = NULL;
|
binding->arg.v = NULL;
|
||||||
}
|
}
|
||||||
|
if (binding->arg.v2) {
|
||||||
|
free(binding->arg.v2);
|
||||||
|
binding->arg.v2 = NULL;
|
||||||
|
}
|
||||||
fprintf(stderr, "Error: Unknown function in bind: %s\n", func_name);
|
fprintf(stderr, "Error: Unknown function in bind: %s\n", func_name);
|
||||||
} else {
|
} else {
|
||||||
config->key_bindings_count++;
|
config->key_bindings_count++;
|
||||||
@@ -1113,9 +1119,9 @@ void parse_config_line(Config *config, const char *line) {
|
|||||||
&config->mouse_bindings[config->mouse_bindings_count];
|
&config->mouse_bindings[config->mouse_bindings_count];
|
||||||
memset(binding, 0, sizeof(MouseBinding));
|
memset(binding, 0, sizeof(MouseBinding));
|
||||||
|
|
||||||
char mod_str[256], button_str[256], func_name[256], arg_value[256] = "none", arg_value2[256] = "none";
|
char mod_str[256], button_str[256], func_name[256], arg_value[256] = "none", arg_value2[256] = "none", arg_value3[256] = "none", arg_value4[256] = "none";
|
||||||
if (sscanf(value, "%[^,],%[^,],%[^,],%[^,],%[^\n]", mod_str, button_str,
|
if (sscanf(value, "%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]", mod_str, button_str,
|
||||||
func_name, arg_value, arg_value2) < 3) {
|
func_name, arg_value, arg_value2, arg_value3, arg_value4) < 3) {
|
||||||
fprintf(stderr, "Error: Invalid mousebind format: %s\n", value);
|
fprintf(stderr, "Error: Invalid mousebind format: %s\n", value);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1123,12 +1129,17 @@ void parse_config_line(Config *config, const char *line) {
|
|||||||
binding->mod = parse_mod(mod_str);
|
binding->mod = parse_mod(mod_str);
|
||||||
binding->button = parse_button(button_str);
|
binding->button = parse_button(button_str);
|
||||||
binding->arg.v = NULL;
|
binding->arg.v = NULL;
|
||||||
binding->func = parse_func_name(func_name, &binding->arg, arg_value, arg_value2);
|
binding->arg.v2 = NULL;
|
||||||
|
binding->func = parse_func_name(func_name, &binding->arg, arg_value, arg_value2, arg_value3, arg_value4);
|
||||||
if (!binding->func) {
|
if (!binding->func) {
|
||||||
if (binding->arg.v) {
|
if (binding->arg.v) {
|
||||||
free(binding->arg.v);
|
free(binding->arg.v);
|
||||||
binding->arg.v = NULL;
|
binding->arg.v = NULL;
|
||||||
}
|
}
|
||||||
|
if (binding->arg.v2) {
|
||||||
|
free(binding->arg.v2);
|
||||||
|
binding->arg.v2 = NULL;
|
||||||
|
}
|
||||||
fprintf(stderr, "Error: Unknown function in mousebind: %s\n", func_name);
|
fprintf(stderr, "Error: Unknown function in mousebind: %s\n", func_name);
|
||||||
} else {
|
} else {
|
||||||
config->mouse_bindings_count++;
|
config->mouse_bindings_count++;
|
||||||
@@ -1145,9 +1156,9 @@ void parse_config_line(Config *config, const char *line) {
|
|||||||
AxisBinding *binding = &config->axis_bindings[config->axis_bindings_count];
|
AxisBinding *binding = &config->axis_bindings[config->axis_bindings_count];
|
||||||
memset(binding, 0, sizeof(AxisBinding));
|
memset(binding, 0, sizeof(AxisBinding));
|
||||||
|
|
||||||
char mod_str[256], dir_str[256], func_name[256], arg_value[256] = "none", arg_value2[256] = "none";
|
char mod_str[256], dir_str[256], func_name[256], arg_value[256] = "none", arg_value2[256] = "none", arg_value3[256] = "none", arg_value4[256] = "none";
|
||||||
if (sscanf(value, "%[^,],%[^,],%[^,],%[^,],%[^\n]", mod_str, dir_str, func_name,
|
if (sscanf(value, "%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]", mod_str, dir_str, func_name,
|
||||||
arg_value, arg_value2) < 3) {
|
arg_value, arg_value2, arg_value3, arg_value4) < 3) {
|
||||||
fprintf(stderr, "Error: Invalid axisbind format: %s\n", value);
|
fprintf(stderr, "Error: Invalid axisbind format: %s\n", value);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1155,13 +1166,18 @@ void parse_config_line(Config *config, const char *line) {
|
|||||||
binding->mod = parse_mod(mod_str);
|
binding->mod = parse_mod(mod_str);
|
||||||
binding->dir = parse_direction(dir_str);
|
binding->dir = parse_direction(dir_str);
|
||||||
binding->arg.v = NULL;
|
binding->arg.v = NULL;
|
||||||
binding->func = parse_func_name(func_name, &binding->arg, arg_value, arg_value2);
|
binding->arg.v2 = NULL;
|
||||||
|
binding->func = parse_func_name(func_name, &binding->arg, arg_value, arg_value2, arg_value3, arg_value4);
|
||||||
|
|
||||||
if (!binding->func) {
|
if (!binding->func) {
|
||||||
if (binding->arg.v) {
|
if (binding->arg.v) {
|
||||||
free(binding->arg.v);
|
free(binding->arg.v);
|
||||||
binding->arg.v = NULL;
|
binding->arg.v = NULL;
|
||||||
}
|
}
|
||||||
|
if (binding->arg.v2) {
|
||||||
|
free(binding->arg.v2);
|
||||||
|
binding->arg.v2 = NULL;
|
||||||
|
}
|
||||||
fprintf(stderr, "Error: Unknown function in axisbind: %s\n", func_name);
|
fprintf(stderr, "Error: Unknown function in axisbind: %s\n", func_name);
|
||||||
} else {
|
} else {
|
||||||
config->axis_bindings_count++;
|
config->axis_bindings_count++;
|
||||||
@@ -1182,9 +1198,9 @@ void parse_config_line(Config *config, const char *line) {
|
|||||||
memset(binding, 0, sizeof(GestureBinding));
|
memset(binding, 0, sizeof(GestureBinding));
|
||||||
|
|
||||||
char mod_str[256], motion_str[256], fingers_count_str[256], func_name[256],
|
char mod_str[256], motion_str[256], fingers_count_str[256], func_name[256],
|
||||||
arg_value[256] = "none", arg_value2[256] = "none";
|
arg_value[256] = "none", arg_value2[256] = "none", arg_value3[256] = "none", arg_value4[256] = "none";
|
||||||
if (sscanf(value, "%[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]", mod_str, motion_str,
|
if (sscanf(value, "%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^,],%[^\n]", mod_str, motion_str,
|
||||||
fingers_count_str, func_name, arg_value, arg_value2) < 4) {
|
fingers_count_str, func_name, arg_value, arg_value2, arg_value3, arg_value4) < 4) {
|
||||||
fprintf(stderr, "Error: Invalid gesturebind format: %s\n", value);
|
fprintf(stderr, "Error: Invalid gesturebind format: %s\n", value);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1193,13 +1209,18 @@ void parse_config_line(Config *config, const char *line) {
|
|||||||
binding->motion = parse_direction(motion_str);
|
binding->motion = parse_direction(motion_str);
|
||||||
binding->fingers_count = atoi(fingers_count_str);
|
binding->fingers_count = atoi(fingers_count_str);
|
||||||
binding->arg.v = NULL;
|
binding->arg.v = NULL;
|
||||||
binding->func = parse_func_name(func_name, &binding->arg, arg_value, arg_value2);
|
binding->arg.v2 = NULL;
|
||||||
|
binding->func = parse_func_name(func_name, &binding->arg, arg_value, arg_value2, arg_value3, arg_value4);
|
||||||
|
|
||||||
if (!binding->func) {
|
if (!binding->func) {
|
||||||
if (binding->arg.v) {
|
if (binding->arg.v) {
|
||||||
free(binding->arg.v);
|
free(binding->arg.v);
|
||||||
binding->arg.v = NULL;
|
binding->arg.v = NULL;
|
||||||
}
|
}
|
||||||
|
if (binding->arg.v2) {
|
||||||
|
free(binding->arg.v2);
|
||||||
|
binding->arg.v2 = NULL;
|
||||||
|
}
|
||||||
fprintf(stderr, "Error: Unknown function in axisbind: %s\n", func_name);
|
fprintf(stderr, "Error: Unknown function in axisbind: %s\n", func_name);
|
||||||
} else {
|
} else {
|
||||||
config->gesture_bindings_count++;
|
config->gesture_bindings_count++;
|
||||||
@@ -1303,6 +1324,10 @@ void free_config(void) {
|
|||||||
free((void *)config.key_bindings[i].arg.v);
|
free((void *)config.key_bindings[i].arg.v);
|
||||||
config.key_bindings[i].arg.v = NULL;
|
config.key_bindings[i].arg.v = NULL;
|
||||||
}
|
}
|
||||||
|
if (config.key_bindings[i].arg.v2) {
|
||||||
|
free((void *)config.key_bindings[i].arg.v2);
|
||||||
|
config.key_bindings[i].arg.v2 = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
free(config.key_bindings);
|
free(config.key_bindings);
|
||||||
config.key_bindings = NULL;
|
config.key_bindings = NULL;
|
||||||
@@ -1316,6 +1341,10 @@ void free_config(void) {
|
|||||||
free((void *)config.mouse_bindings[i].arg.v);
|
free((void *)config.mouse_bindings[i].arg.v);
|
||||||
config.mouse_bindings[i].arg.v = NULL;
|
config.mouse_bindings[i].arg.v = NULL;
|
||||||
}
|
}
|
||||||
|
if (config.mouse_bindings[i].arg.v2) {
|
||||||
|
free((void *)config.mouse_bindings[i].arg.v2);
|
||||||
|
config.mouse_bindings[i].arg.v2 = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
free(config.mouse_bindings);
|
free(config.mouse_bindings);
|
||||||
config.mouse_bindings = NULL;
|
config.mouse_bindings = NULL;
|
||||||
@@ -1329,6 +1358,10 @@ void free_config(void) {
|
|||||||
free((void *)config.axis_bindings[i].arg.v);
|
free((void *)config.axis_bindings[i].arg.v);
|
||||||
config.axis_bindings[i].arg.v = NULL;
|
config.axis_bindings[i].arg.v = NULL;
|
||||||
}
|
}
|
||||||
|
if (config.axis_bindings[i].arg.v2) {
|
||||||
|
free((void *)config.axis_bindings[i].arg.v2);
|
||||||
|
config.axis_bindings[i].arg.v2 = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
free(config.axis_bindings);
|
free(config.axis_bindings);
|
||||||
config.axis_bindings = NULL;
|
config.axis_bindings = NULL;
|
||||||
@@ -1342,6 +1375,10 @@ void free_config(void) {
|
|||||||
free((void *)config.gesture_bindings[i].arg.v);
|
free((void *)config.gesture_bindings[i].arg.v);
|
||||||
config.gesture_bindings[i].arg.v = NULL;
|
config.gesture_bindings[i].arg.v = NULL;
|
||||||
}
|
}
|
||||||
|
if (config.gesture_bindings[i].arg.v2) {
|
||||||
|
free((void *)config.gesture_bindings[i].arg.v2);
|
||||||
|
config.gesture_bindings[i].arg.v2 = NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
free(config.gesture_bindings);
|
free(config.gesture_bindings);
|
||||||
config.gesture_bindings = NULL;
|
config.gesture_bindings = NULL;
|
||||||
|
|||||||
12
src/maomao.c
12
src/maomao.c
@@ -153,6 +153,7 @@ typedef struct {
|
|||||||
float f;
|
float f;
|
||||||
float f2;
|
float f2;
|
||||||
char *v;
|
char *v;
|
||||||
|
char *v2;
|
||||||
unsigned int ui;
|
unsigned int ui;
|
||||||
unsigned int ui2;
|
unsigned int ui2;
|
||||||
} Arg;
|
} Arg;
|
||||||
@@ -495,7 +496,12 @@ static void dwl_ipc_output_set_tags(struct wl_client *client,
|
|||||||
static void dwl_ipc_output_quit(struct wl_client *client,
|
static void dwl_ipc_output_quit(struct wl_client *client,
|
||||||
struct wl_resource *resource);
|
struct wl_resource *resource);
|
||||||
static void dwl_ipc_output_dispatch(struct wl_client *client,
|
static void dwl_ipc_output_dispatch(struct wl_client *client,
|
||||||
struct wl_resource *resource,const char *dispatch,const char* arg1,const char* arg2);
|
struct wl_resource *resource,
|
||||||
|
const char *dispatch,
|
||||||
|
const char* arg1,
|
||||||
|
const char* arg2,
|
||||||
|
const char* arg3,
|
||||||
|
const char* arg4);
|
||||||
static void dwl_ipc_output_release(struct wl_client *client,
|
static void dwl_ipc_output_release(struct wl_client *client,
|
||||||
struct wl_resource *resource);
|
struct wl_resource *resource);
|
||||||
static void focusclient(Client *c, int lift);
|
static void focusclient(Client *c, int lift);
|
||||||
@@ -3497,11 +3503,11 @@ void dwl_ipc_output_quit(struct wl_client *client,
|
|||||||
void dwl_ipc_output_dispatch(struct wl_client *client,
|
void dwl_ipc_output_dispatch(struct wl_client *client,
|
||||||
struct wl_resource *resource,
|
struct wl_resource *resource,
|
||||||
const char *dispatch, const char *arg1,
|
const char *dispatch, const char *arg1,
|
||||||
const char *arg2) {
|
const char *arg2, const char *arg3, const char *arg4) {
|
||||||
|
|
||||||
void (*func)(const Arg *);
|
void (*func)(const Arg *);
|
||||||
Arg arg;
|
Arg arg;
|
||||||
func = parse_func_name((char*)dispatch, &arg, (char*)arg1, (char*)arg2);
|
func = parse_func_name((char*)dispatch, &arg, (char*)arg1, (char*)arg2, (char*)arg3, (char*)arg4);
|
||||||
if(func) {
|
if(func) {
|
||||||
func(&arg);
|
func(&arg);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user