]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
shutdown: FOREACH_LINE() excorcism
authorLennart Poettering <lennart@poettering.net>
Thu, 18 Oct 2018 14:12:40 +0000 (16:12 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 18 Oct 2018 14:23:45 +0000 (16:23 +0200)
src/core/shutdown.c

index 5bf332d9a9b9cea7a053b59fbdccd46d70127585..62d953659c1582135f908d1bd18239d681ed8f2a 100644 (file)
@@ -171,16 +171,23 @@ static int switch_root_initramfs(void) {
  */
 static bool sync_making_progress(unsigned long long *prev_dirty) {
         _cleanup_fclose_ FILE *f = NULL;
-        char line[LINE_MAX];
-        bool r = false;
         unsigned long long val = 0;
+        bool r = false;
 
         f = fopen("/proc/meminfo", "re");
         if (!f)
                 return log_warning_errno(errno, "Failed to open /proc/meminfo: %m");
 
-        FOREACH_LINE(line, f, log_warning_errno(errno, "Failed to parse /proc/meminfo: %m")) {
+        for (;;) {
+                _cleanup_free_ char *line = NULL;
                 unsigned long long ull = 0;
+                int q;
+
+                q = read_line(f, LONG_LINE_MAX, &line);
+                if (q < 0)
+                        return log_warning_errno(q, "Failed to parse /proc/meminfo: %m");
+                if (q == 0)
+                        break;
 
                 if (!first_word(line, "NFS_Unstable:") && !first_word(line, "Writeback:") && !first_word(line, "Dirty:"))
                         continue;