mirror of
https://github.com/openvswitch/ovs
synced 2025-10-27 15:18:06 +00:00
dynamic-string: New function ds_get_preprocessed_line().
This commit adds one user. It will be useful elsewhere in an upcoming commit.
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2008, 2009, 2010 Nicira Networks.
|
||||
* Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -207,6 +207,32 @@ ds_get_line(struct ds *ds, FILE *file)
|
||||
}
|
||||
}
|
||||
|
||||
/* Reads a line from 'file' into 'ds', clearing anything initially in 'ds'.
|
||||
* Deletes comments introduced by "#" and skips lines that contains only white
|
||||
* space (after deleting comments).
|
||||
*
|
||||
* Returns 0 if successful, EOF if no non-blank line was found. */
|
||||
int
|
||||
ds_get_preprocessed_line(struct ds *ds, FILE *file)
|
||||
{
|
||||
while (!ds_get_line(ds, file)) {
|
||||
char *line = ds_cstr(ds);
|
||||
char *comment;
|
||||
|
||||
/* Delete comments. */
|
||||
comment = strchr(line, '#');
|
||||
if (comment) {
|
||||
*comment = '\0';
|
||||
}
|
||||
|
||||
/* Return successfully unless the line is all spaces. */
|
||||
if (line[strspn(line, " \t\n")] != '\0') {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return EOF;
|
||||
}
|
||||
|
||||
char *
|
||||
ds_cstr(struct ds *ds)
|
||||
{
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2008, 2009, 2010 Nicira Networks.
|
||||
* Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -54,6 +54,7 @@ void ds_put_strftime(struct ds *, const char *, const struct tm *)
|
||||
void ds_put_hex_dump(struct ds *ds, const void *buf_, size_t size,
|
||||
uintptr_t ofs, bool ascii);
|
||||
int ds_get_line(struct ds *, FILE *);
|
||||
int ds_get_preprocessed_line(struct ds *, FILE *);
|
||||
|
||||
char *ds_cstr(struct ds *);
|
||||
const char *ds_cstr_ro(const struct ds *);
|
||||
|
||||
@@ -874,27 +874,13 @@ bool
|
||||
parse_ofp_add_flow_file(struct list *packets, enum nx_flow_format *cur,
|
||||
FILE *stream)
|
||||
{
|
||||
struct ds s = DS_EMPTY_INITIALIZER;
|
||||
bool ok = false;
|
||||
struct ds s;
|
||||
bool ok;
|
||||
|
||||
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;
|
||||
ds_init(&s);
|
||||
ok = ds_get_preprocessed_line(&s, stream) == 0;
|
||||
if (ok) {
|
||||
parse_ofp_flow_mod_str(packets, cur, ds_cstr(&s), OFPFC_ADD);
|
||||
}
|
||||
ds_destroy(&s);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user