Also reuse isdotdot() from lib.
---
 toys/pending/crond.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)
From d3e7a2849e044806f465eb52924d9b08ed7558b0 Mon Sep 17 00:00:00 2001
From: Elliott Hughes <e...@google.com>
Date: Wed, 22 Sep 2021 20:06:18 -0700
Subject: [PATCH] crond: stop using get_line().

Also reuse isdotdot() from lib.
---
 toys/pending/crond.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/toys/pending/crond.c b/toys/pending/crond.c
index df8b5f11..81cc8448 100644
--- a/toys/pending/crond.c
+++ b/toys/pending/crond.c
@@ -371,26 +371,29 @@ static void scan_cronfiles()
   if (!(dp = opendir("."))) loginfo(LOG_EXIT, "chdir(%s)", ".");
 
   while ((entry = readdir(dp))) {
-    int fd;
-    char *line;
     CRONFILE *cfile;
+    FILE *fp;
+    char *line = 0;
+    size_t allocated_length = 0;
 
-    if (entry->d_name[0] == '.' && (!entry->d_name[1] ||
-          (entry->d_name[1] == '.' && !entry->d_name[2]))) 
-      continue;
+    if (isdotdot(entry->d_name)) continue;
 
     if (!getpwnam(entry->d_name)) {
       loginfo(LOG_LEVEL7, "ignoring file '%s' (no such user)", entry->d_name);
       continue;
     }
-    if ((fd = open(entry->d_name, O_RDONLY)) < 0) continue;
+
+    if (!(fp = fopen(entry->d_name, "r"))) continue;
 
     // one node for each user
     cfile = xzalloc(sizeof(CRONFILE));
     cfile->username = xstrdup(entry->d_name);
 
-    for (; (line = get_line(fd)); free(line))
+    while (getline(&line, &allocated_length, fp) > 0) {
       parse_line(line, cfile);
+    }
+    free(line);
+    fclose(fp);
 
     // If there is no job for a cron, remove the VAR list.
     if (!cfile->job) {
@@ -410,7 +413,6 @@ static void scan_cronfiles()
       dlist_add_nomalloc((struct double_list **)&gclist,
           (struct double_list *)cfile);
     }
-    close(fd);
   }
   closedir(dp);
 }
-- 
2.33.0.464.g1972c5931b-goog

_______________________________________________
Toybox mailing list
Toybox@lists.landley.net
http://lists.landley.net/listinfo.cgi/toybox-landley.net

Reply via email to