diff options
author | Laslo Hunhold <dev@frign.de> | 2018-05-01 20:20:58 +0200 |
---|---|---|
committer | Aaron Marcher <me@drkhsh.at> | 2018-05-01 20:24:13 +0200 |
commit | 19343ff34385db441b5efc2e1a57cdd7fd95ec26 (patch) | |
tree | 1f8f7d5fb3579c0fda27d0272dac21d56969496f | |
parent | 9750a3d731cd381e832bcacf1d03e48ddb46cc16 (diff) |
components/swap.c | move duplicated code to separate function
-rw-r--r-- | components/swap.c | 82 |
1 files 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; |