- struct ds s = DS_EMPTY_INITIALIZER;
- bool ok = false;
-
- while (!ds_get_line(&s, stream)) {
- char *line = ds_cstr(&s);
- char *comment;
-
- /* Delete comments. */
- comment = strchr(line, '#');
- if (comment) {
- *comment = '\0';
- }
-
- /* Drop empty lines. */
- if (line[strspn(line, " \t\n")] == '\0') {
- continue;
- }
-
- parse_ofp_flow_mod_str(packets, cur, line, OFPFC_ADD);
- ok = true;
- break;
+ struct ds s;
+ bool ok;
+
+ ds_init(&s);
+ ok = ds_get_preprocessed_line(&s, stream) == 0;
+ if (ok) {
+ parse_ofp_flow_mod_str(packets, cur, flow_mod_table_id,
+ ds_cstr(&s), command);