all repos — slstatus @ 19343ff34385db441b5efc2e1a57cdd7fd95ec26

my build of slstatus (tools.suckless.org/slstatus/)

components/swap.c | move duplicated code to separate function
Laslo Hunhold dev@frign.de
Tue, 01 May 2018 20:20:58 +0200
commit

19343ff34385db441b5efc2e1a57cdd7fd95ec26

parent

9750a3d731cd381e832bcacf1d03e48ddb46cc16

1 files changed, 26 insertions(+), 56 deletions(-)

jump to
M components/swap.ccomponents/swap.c

@@ -6,29 +6,39 @@ #include <string.h>

#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 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; } - fclose(fp); if ((match = strstr(buf, "SwapTotal")) == NULL) return NULL;

@@ -45,25 +55,11 @@ const char *

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)); + 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;

@@ -84,24 +80,11 @@ const char *

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)); + 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;

@@ -114,24 +97,11 @@ const char *

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)); - 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;