From a34f0dae01817d34f77d4494191f8f5483618c2f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 18 Oct 2018 16:12:40 +0200 Subject: [PATCH] shutdown: FOREACH_LINE() excorcism --- src/core/shutdown.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/core/shutdown.c b/src/core/shutdown.c index 5bf332d9a9b..62d953659c1 100644 --- a/src/core/shutdown.c +++ b/src/core/shutdown.c @@ -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; -- 2.47.3