Browse Source

Cleanup configuration options parsing.

Georgi Chorbadzhiyski 9 years ago
parent
commit
25522dd743
1 changed files with 29 additions and 31 deletions
  1. 29
    31
      videohubctrl.c

+ 29
- 31
videohubctrl.c View File

115
 	struct vcmd_entry	entry[MAX_RUN_CMDS];
115
 	struct vcmd_entry	entry[MAX_RUN_CMDS];
116
 } parsed_cmds;
116
 } parsed_cmds;
117
 
117
 
118
+static void parse_cmd2(int argc, char **argv, enum vcmd vcmd) {
119
+	struct vcmd_entry *c = &parsed_cmds.entry[num_parsed_cmds];
120
+	if (num_parsed_cmds == ARRAY_SIZE(parsed_cmds.entry))
121
+		die("No more than %u commands are supported.", num_parsed_cmds);
122
+	if (optind == argc || argv[optind - 1][0] == '-' || argv[optind][0] == '-') {
123
+		fprintf(stderr, "%s: option '%s' requires two arguments\n", argv[0], argv[optind - 2]);
124
+		exit(EXIT_FAILURE);
125
+	}
126
+	c->cmd = &videohub_commands[vcmd];
127
+	c->param1 = argv[optind - 1];
128
+	c->param2 = argv[optind];
129
+	num_parsed_cmds++;
130
+}
131
+
132
+static void parse_cmd1(int argc, char **argv, enum vcmd vcmd, bool do_lock) {
133
+	struct vcmd_entry *c = &parsed_cmds.entry[num_parsed_cmds];
134
+	if (num_parsed_cmds == ARRAY_SIZE(parsed_cmds.entry))
135
+		die("No more than %u commands are supported.", num_parsed_cmds);
136
+	c->cmd = &videohub_commands[vcmd];
137
+	c->param1 = argv[optind - 1];
138
+	c->do_lock = do_lock;
139
+	num_parsed_cmds++;
140
+}
141
+
118
 static void parse_options(struct videohub_data *data, int argc, char **argv) {
142
 static void parse_options(struct videohub_data *data, int argc, char **argv) {
119
 	int j, err = 0;
143
 	int j, err = 0;
120
-	struct vcmd_entry *c = &parsed_cmds.entry[0];
121
 	// Check environment
144
 	// Check environment
122
 	data->dev_host = getenv("VIDEOHUB_HOST");
145
 	data->dev_host = getenv("VIDEOHUB_HOST");
123
 	data->dev_port = getenv("VIDEOHUB_PORT");
146
 	data->dev_port = getenv("VIDEOHUB_PORT");
169
 			case 901: show_list |= action_list_device; break; // --list-device
192
 			case 901: show_list |= action_list_device; break; // --list-device
170
 			case 902: show_list |= action_list_vinputs; break; // --list-vinputs
193
 			case 902: show_list |= action_list_vinputs; break; // --list-vinputs
171
 			case 903: show_list |= action_list_voutputs; break; // --list-voutputs
194
 			case 903: show_list |= action_list_voutputs; break; // --list-voutputs
172
-			case 1001: // --vi-name
173
-			case 1002: // --vo-name
174
-			case 1011: // --vi-route
175
-			case 1012: // --vo-route
176
-				if (num_parsed_cmds == ARRAY_SIZE(parsed_cmds.entry))
177
-					die("No more than %u commands are supported.", num_parsed_cmds);
178
-				if (optind == argc || argv[optind - 1][0] == '-' || argv[optind][0] == '-') {
179
-					fprintf(stderr, "%s: option '%s' requires two arguments\n", argv[0], argv[optind - 2]);
180
-					exit(EXIT_FAILURE);
181
-				}
182
-				switch (j) {
183
-				case 1001: c->cmd = &videohub_commands[CMD_INPUT_LABELS]; break; // --vi-name
184
-				case 1002: c->cmd = &videohub_commands[CMD_OUTPUT_LABELS]; break; // --vo-name
185
-				case 1011: c->cmd = &videohub_commands[CMD_VIDEO_OUTPUT_ROUTING]; break; // --vo-route
186
-				}
187
-				c->param1 = argv[optind - 1];
188
-				c->param2 = argv[optind];
189
-				c->param1 = argv[optind - 1];
190
-				c->param2 = argv[optind];
191
-				c = &parsed_cmds.entry[++num_parsed_cmds];
192
-				break;
193
-			case 1021: // --vo-lock
194
-			case 1022: // --vo-unlock
195
-				if (num_parsed_cmds == ARRAY_SIZE(parsed_cmds.entry))
196
-					die("No more than %u commands are supported.", num_parsed_cmds);
197
-				c->cmd = &videohub_commands[CMD_VIDEO_OUTPUT_LOCKS];
198
-				c->param1 = argv[optind - 1];
199
-				c->do_lock = (j == 1021);
200
-				c = &parsed_cmds.entry[++num_parsed_cmds];
201
-				break;
195
+			case 1001: parse_cmd2(argc, argv, CMD_INPUT_LABELS); break; // --vi-name
196
+			case 1002: parse_cmd2(argc, argv, CMD_OUTPUT_LABELS); break; // --vo-name
197
+			case 1011: parse_cmd2(argc, argv, CMD_VIDEO_OUTPUT_ROUTING); break; // --vo-route
198
+			case 1021: parse_cmd1(argc, argv, CMD_VIDEO_OUTPUT_LOCKS, true); break; // --vo-lock
199
+			case 1022: parse_cmd1(argc, argv, CMD_VIDEO_OUTPUT_LOCKS, false); break; // --vo-unlock
202
 			case 'H': // --help
200
 			case 'H': // --help
203
 				show_help(data);
201
 				show_help(data);
204
 				exit(EXIT_SUCCESS);
202
 				exit(EXIT_SUCCESS);

Loading…
Cancel
Save