commit 19343ff34385db441b5efc2e1a57cdd7fd95ec26
parent 9750a3d731cd381e832bcacf1d03e48ddb46cc16
Author: Laslo Hunhold <[email protected]>
Date:   Tue,  1 May 2018 20:20:58 +0200
components/swap.c | move duplicated code to separate function
Diffstat:
| M | components/swap.c | 82 | +++++++++++++++++++++++++------------------------------------------------------ | 
1 file changed, 26 insertions(+), 56 deletions(-)
diff --git 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;