aports/main/openrc/rc-sys-lxc.patch
2012-11-08 15:59:06 +00:00

40 lines
1.0 KiB
Diff

diff --git a/src/librc/librc.c b/src/librc/librc.c
index d82880f..40b975a 100644
--- a/src/librc/librc.c
+++ b/src/librc/librc.c
@@ -168,7 +168,7 @@ file_regex(const char *file, const char *regex)
char *line = NULL;
size_t len = 0;
regex_t re;
- bool retval = false;
+ bool retval = true;
int result;
if (!(fp = fopen(file, "r")))
@@ -184,11 +184,21 @@ file_regex(const char *file, const char *regex)
}
while ((rc_getline(&line, &len, fp))) {
- if (regexec(&re, line, 0, NULL, 0) == 0)
- retval = true;
- if (retval)
- break;
+ char *str = line;
+ /* some /proc files have \0 separated content so we have to
+ loop through the 'line' */
+ do {
+ if (regexec(&re, str, 0, NULL, 0) == 0)
+ goto found;
+ str += strlen(str) + 1;
+ /* len is the size of allocated buffer and we don't
+ want call regexec BUFSIZE times. find next str */
+ while (*str == '\0' && str < line + len)
+ str++;
+ } while (str < line + len);
}
+ retval = false;
+found:
fclose(fp);
free(line);
regfree(&re);