From: Lennart Poettering Date: Thu, 18 Oct 2018 14:12:40 +0000 (+0200) Subject: shutdown: FOREACH_LINE() excorcism X-Git-Tag: v240~513^2~15 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a34f0dae01817d34f77d4494191f8f5483618c2f;p=thirdparty%2Fsystemd.git shutdown: FOREACH_LINE() excorcism --- 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;