From 19343ff34385db441b5efc2e1a57cdd7fd95ec26 Mon Sep 17 00:00:00 2001 From: Laslo Hunhold Date: Tue, 1 May 2018 20:20:58 +0200 Subject: components/swap.c | move duplicated code to separate function --- components/swap.c | 82 ++++++++++++++++++------------------------------------- 1 file changed, 26 insertions(+), 56 deletions(-) diff --git a/components/swap.c b/components/swap.c index 08a97de..fe779db 100644 --- a/components/swap.c +++ b/components/swap.c @@ -6,30 +6,40 @@ #include "../util.h" - const char * - swap_free(void) + static size_t + pread(const char *path, char *buf, size_t bufsiz) { - long total, free; FILE *fp; size_t bytes_read; - char *match; - fp = fopen("/proc/meminfo", "r"); - if (fp == NULL) { - fprintf(stderr, "fopen '/proc/meminfo': %s\n", + if (!(fp = fopen(path, "r"))) { + fprintf(stderr, "fopen '%s': %s\n", path, strerror(errno)); - return NULL; + return 0; } - - if ((bytes_read = fread(buf, sizeof(char), sizeof(buf) - 1, - fp)) == 0) { - fprintf(stderr, "fread '/proc/meminfo': %s\n", + if ((bytes_read = fread(buf, sizeof(char), bufsiz, fp)) == 0) { + fprintf(stderr, "fread '%s': %s\n", path, strerror(errno)); fclose(fp); - return NULL; + return 0; } fclose(fp); + buf[bytes_read] = '\0'; + + return bytes_read; + } + + const char * + swap_free(void) + { + long total, free; + char *match; + + if (!pread("/proc/meminfo", buf, sizeof(buf) - 1)) { + return NULL; + } + if ((match = strstr(buf, "SwapTotal")) == NULL) return NULL; sscanf(match, "SwapTotal: %ld kB\n", &total); @@ -45,25 +55,11 @@ swap_perc(void) { long total, free, cached; - FILE *fp; - size_t bytes_read; char *match; - fp = fopen("/proc/meminfo", "r"); - if (fp == NULL) { - fprintf(stderr, "fopen '/proc/meminfo': %s\n", - strerror(errno)); - return NULL; - } - - if ((bytes_read = fread(buf, sizeof(char), sizeof(buf) - 1, - fp)) == 0) { - fprintf(stderr, "fread '/proc/meminfo': %s\n", - strerror(errno)); - fclose(fp); + if (!pread("/proc/meminfo", buf, sizeof(buf) - 1)) { return NULL; } - fclose(fp); if ((match = strstr(buf, "SwapTotal")) == NULL) return NULL; @@ -84,24 +80,11 @@ swap_total(void) { long total; - FILE *fp; - size_t bytes_read; char *match; - fp = fopen("/proc/meminfo", "r"); - if (fp == NULL) { - fprintf(stderr, "fopen '/proc/meminfo': %s\n", - strerror(errno)); - return NULL; - } - if ((bytes_read = fread(buf, sizeof(char), sizeof(buf) - 1, - fp)) == 0) { - fprintf(stderr, "fread '/proc/meminfo': %s\n", - strerror(errno)); - fclose(fp); + if (!pread("/proc/meminfo", buf, sizeof(buf) - 1)) { return NULL; } - fclose(fp); if ((match = strstr(buf, "SwapTotal")) == NULL) return NULL; @@ -114,24 +97,11 @@ swap_used(void) { long total, free, cached; - FILE *fp; - size_t bytes_read; char *match; - fp = fopen("/proc/meminfo", "r"); - if (fp == NULL) { - fprintf(stderr, "fopen '/proc/meminfo': %s\n", - strerror(errno)); + if (!pread("/proc/meminfo", buf, sizeof(buf) - 1)) { return NULL; } - if ((bytes_read = fread(buf, sizeof(char), sizeof(buf) - 1, - fp)) == 0) { - fprintf(stderr, "fread '/proc/meminfo': %s\n", - strerror(errno)); - fclose(fp); - return NULL; - } - fclose(fp); if ((match = strstr(buf, "SwapTotal")) == NULL) return NULL; -- cgit v1.2.3