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,9 +115,32 @@ static struct run_cmds {
115 115
 	struct vcmd_entry	entry[MAX_RUN_CMDS];
116 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 142
 static void parse_options(struct videohub_data *data, int argc, char **argv) {
119 143
 	int j, err = 0;
120
-	struct vcmd_entry *c = &parsed_cmds.entry[0];
121 144
 	// Check environment
122 145
 	data->dev_host = getenv("VIDEOHUB_HOST");
123 146
 	data->dev_port = getenv("VIDEOHUB_PORT");
@@ -169,36 +192,11 @@ static void parse_options(struct videohub_data *data, int argc, char **argv) {
169 192
 			case 901: show_list |= action_list_device; break; // --list-device
170 193
 			case 902: show_list |= action_list_vinputs; break; // --list-vinputs
171 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 200
 			case 'H': // --help
203 201
 				show_help(data);
204 202
 				exit(EXIT_SUCCESS);

Loading…
Cancel
Save