summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Marangi <ansuelsmth@gmail.com>2023-01-31 15:28:17 +0100
committerChristian Marangi <ansuelsmth@gmail.com>2023-01-31 16:11:17 +0100
commit4de3f02e3124994ad30600a69711150f1e9c9956 (patch)
tree2e6815fa8d7b085edd34a73d6a95a7c308719b93
parentc0df2a7af7d6284f4a446de15d0dab17124d9448 (diff)
downloadrpcd-4de3f02e3124994ad30600a69711150f1e9c9956.tar.gz
rc: fix and improve script scanning START and STOP
Currently we stop searching at the first occurence of START or STOP entry. This is wrong since we totally miss the other data (START or STOP) in the occurence of the other. Fix and improve script scanning by: - Increase the line max length to 255 char to read it in one go. - Scan only the first 10 lines. - Don't stop at the first occurence and try to search also for the other data. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
-rw-r--r--rc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/rc.c b/rc.c
index 45fdc1a..431d3a5 100644
--- a/rc.c
+++ b/rc.c
@@ -187,17 +187,20 @@ static void rc_list_readdir(struct rc_list_context *c)
if (fp) {
struct stat s;
char path[PATH_MAX];
- char line[32];
+ char line[255];
bool beginning;
+ int count = 0;
beginning = true;
- while (c->entry.start < 0 && c->entry.stop < 0 && fgets(line, sizeof(line), fp)) {
+ while ((c->entry.start < 0 || c->entry.stop < 0) &&
+ count <= 10 && fgets(line, sizeof(line), fp)) {
if (beginning) {
if (!strncmp(line, "START=", 6)) {
c->entry.start = strtoul(line + 6, NULL, 0);
} else if (!strncmp(line, "STOP=", 5)) {
c->entry.stop = strtoul(line + 5, NULL, 0);
}
+ count++;
}
beginning = !!strchr(line, '\n');