You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
185 lines
4.0 KiB
185 lines
4.0 KiB
--- |
|
libmultipath/parser.c | 103 +++----------------------------------------------- |
|
libmultipath/parser.h | 6 -- |
|
2 files changed, 8 insertions(+), 101 deletions(-) |
|
|
|
Index: multipath-tools-130222/libmultipath/parser.c |
|
=================================================================== |
|
--- multipath-tools-130222.orig/libmultipath/parser.c |
|
+++ multipath-tools-130222/libmultipath/parser.c |
|
@@ -280,8 +280,8 @@ out: |
|
return NULL; |
|
} |
|
|
|
-int |
|
-read_line(char *buf, int size) |
|
+static int |
|
+read_line(FILE *stream, char *buf, int size) |
|
{ |
|
int ch; |
|
int count = 0; |
|
@@ -297,95 +297,6 @@ read_line(char *buf, int size) |
|
return (ch == EOF) ? 0 : 1; |
|
} |
|
|
|
-vector |
|
-read_value_block(void) |
|
-{ |
|
- char *buf; |
|
- int i; |
|
- char *str = NULL; |
|
- char *dup; |
|
- vector vec = NULL; |
|
- vector elements = vector_alloc(); |
|
- |
|
- if (!elements) |
|
- return NULL; |
|
- |
|
- buf = (char *) MALLOC(MAXBUF); |
|
- |
|
- if (!buf) { |
|
- vector_free(elements); |
|
- return NULL; |
|
- } |
|
- |
|
- while (read_line(buf, MAXBUF)) { |
|
- vec = alloc_strvec(buf); |
|
- if (vec) { |
|
- str = VECTOR_SLOT(vec, 0); |
|
- if (!strcmp(str, EOB)) { |
|
- free_strvec(vec); |
|
- break; |
|
- } |
|
- |
|
- for (i = 0; i < VECTOR_SIZE(vec); i++) { |
|
- str = VECTOR_SLOT(vec, i); |
|
- dup = (char *) MALLOC(strlen(str) + 1); |
|
- if (!dup) |
|
- goto out; |
|
- memcpy(dup, str, strlen(str)); |
|
- |
|
- if (!vector_alloc_slot(elements)) { |
|
- free_strvec(vec); |
|
- goto out1; |
|
- } |
|
- |
|
- vector_set_slot(elements, dup); |
|
- } |
|
- free_strvec(vec); |
|
- } |
|
- memset(buf, 0, MAXBUF); |
|
- } |
|
- FREE(buf); |
|
- return elements; |
|
-out1: |
|
- FREE(dup); |
|
-out: |
|
- FREE(buf); |
|
- vector_free(elements); |
|
- return NULL; |
|
-} |
|
- |
|
-int |
|
-alloc_value_block(vector strvec, void (*alloc_func) (vector)) |
|
-{ |
|
- char *buf; |
|
- char *str = NULL; |
|
- vector vec = NULL; |
|
- |
|
- buf = (char *) MALLOC(MAXBUF); |
|
- |
|
- if (!buf) |
|
- return 1; |
|
- |
|
- while (read_line(buf, MAXBUF)) { |
|
- vec = alloc_strvec(buf); |
|
- if (vec) { |
|
- str = VECTOR_SLOT(vec, 0); |
|
- if (!strcmp(str, EOB)) { |
|
- free_strvec(vec); |
|
- break; |
|
- } |
|
- |
|
- if (VECTOR_SIZE(vec)) |
|
- (*alloc_func) (vec); |
|
- |
|
- free_strvec(vec); |
|
- } |
|
- memset(buf, 0, MAXBUF); |
|
- } |
|
- FREE(buf); |
|
- return 0; |
|
-} |
|
- |
|
void * |
|
set_value(vector strvec) |
|
{ |
|
@@ -561,7 +472,7 @@ validate_config_strvec(vector strvec, ch |
|
} |
|
|
|
static int |
|
-process_stream(vector keywords, char *file) |
|
+process_stream(FILE *stream, vector keywords, char *file) |
|
{ |
|
int i; |
|
int r = 0; |
|
@@ -582,7 +493,7 @@ process_stream(vector keywords, char *fi |
|
return 1; |
|
} |
|
|
|
- while (read_line(buf, MAXBUF)) { |
|
+ while (read_line(stream, buf, MAXBUF)) { |
|
line_nr++; |
|
strvec = alloc_strvec(buf); |
|
memset(buf,0, MAXBUF); |
|
@@ -621,7 +532,8 @@ process_stream(vector keywords, char *fi |
|
|
|
if (keyword->sub) { |
|
kw_level++; |
|
- r += process_stream(keyword->sub, file); |
|
+ r += process_stream(stream, |
|
+ keyword->sub, file); |
|
kw_level--; |
|
} |
|
break; |
|
@@ -656,6 +568,7 @@ int |
|
process_file(char *file) |
|
{ |
|
int r; |
|
+ FILE *stream; |
|
|
|
if (!keywords) { |
|
condlog(0, "No keywords alocated"); |
|
@@ -670,7 +583,7 @@ process_file(char *file) |
|
|
|
/* Stream handling */ |
|
line_nr = 0; |
|
- r = process_stream(keywords, file); |
|
+ r = process_stream(stream, keywords, file); |
|
fclose(stream); |
|
//free_keywords(keywords); |
|
|
|
Index: multipath-tools-130222/libmultipath/parser.h |
|
=================================================================== |
|
--- multipath-tools-130222.orig/libmultipath/parser.h |
|
+++ multipath-tools-130222/libmultipath/parser.h |
|
@@ -47,9 +47,6 @@ struct keyword { |
|
int unique; |
|
}; |
|
|
|
-/* global var exported */ |
|
-FILE *stream; |
|
- |
|
/* Reloading helpers */ |
|
#define SET_RELOAD (reload = 1) |
|
#define UNSET_RELOAD (reload = 0) |
|
@@ -72,9 +69,6 @@ extern int _install_keyword(char *string |
|
extern void dump_keywords(vector keydump, int level); |
|
extern void free_keywords(vector keywords); |
|
extern vector alloc_strvec(char *string); |
|
-extern int read_line(char *buf, int size); |
|
-extern vector read_value_block(void); |
|
-extern int alloc_value_block(vector strvec, void (*alloc_func) (vector)); |
|
extern void *set_value(vector strvec); |
|
extern int alloc_keywords(void); |
|
extern int process_file(char *conf_file);
|
|
|