From c3585fb422869dc6a182e299b5df97bb44eb8804 Mon Sep 17 00:00:00 2001
From: Martin Hecht <mrbaseman@gmx.de>
Date: Thu, 14 Jun 2018 15:04:50 +0200
Subject: [PATCH] treat carriage returns as white space (might solve #129)
 (#334)

 introduce iswhitespace_like inline function
---
 src/config.c | 8 ++++----
 src/config.h | 6 ++++++
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/config.c b/src/config.c
index ab97857..e6a40e7 100644
--- a/src/config.c
+++ b/src/config.c
@@ -135,19 +135,19 @@ int load_config(struct vpn_config *cfg, const char *filename)
 		val = equals + 1;
 
 		// Remove heading spaces
-		while (key[0] != '\0' && (key[0] == ' ' || key[0] == '\t'))
+		while (iswhitespace_like(key[0]))
 			key++;
-		while (val[0] != '\0' && (val[0] == ' ' || val[0] == '\t'))
+		while (iswhitespace_like(val[0]))
 			val++;
 		// Remove trailing spaces
 		for (i = strlen(key) - 1; i > 0; i--) {
-			if (key[i] == ' ' || key[i] == '\t')
+			if (iswhitespace_like(key[i]))
 				key[i] = '\0';
 			else
 				break;
 		}
 		for (i = strlen(val) - 1; i > 0; i--) {
-			if (val[i] == ' ' || val[i] == '\t')
+			if (iswhitespace_like(val[i]))
 				val[i] = '\0';
 			else
 				break;
diff --git a/src/config.h b/src/config.h
index b0fae83..ab0eedb 100644
--- a/src/config.h
+++ b/src/config.h
@@ -91,4 +91,10 @@ int strtob(const char *str);
 
 int load_config(struct vpn_config *cfg, const char *filename);
 
+inline int iswhitespace_like(const char character)
+{
+	return (character != '\0' \
+	        && (character == ' ' || character == '\t' || character == '\r'));
+}
+
 #endif
-- 
GitLab