-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path0009-Trim-whitespaces-when-reading-configuration.patch
99 lines (94 loc) · 2.96 KB
/
0009-Trim-whitespaces-when-reading-configuration.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
From d024bc27cee40f21e6a3841266062408c44e56fb Mon Sep 17 00:00:00 2001
From: Martin Sehnoutka <[email protected]>
Date: Wed, 7 Sep 2016 10:35:54 +0200
Subject: [PATCH 09/59] Trim whitespaces when reading configuration.
---
parseconf.c | 2 +-
str.c | 12 ++++++++++++
str.h | 1 +
sysutil.c | 12 ++++++++++++
sysutil.h | 1 +
5 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/parseconf.c b/parseconf.c
index 385afd2..30df598 100644
--- a/parseconf.c
+++ b/parseconf.c
@@ -280,7 +280,7 @@ vsf_parseconf_load_setting(const char* p_setting, int errs_fatal)
}
else
{
- *p_curr_setting = str_strdup(&s_value_str);
+ *p_curr_setting = str_strdup_trimmed(&s_value_str);
}
return;
}
diff --git a/str.c b/str.c
index ba4b92a..41b27db 100644
--- a/str.c
+++ b/str.c
@@ -104,6 +104,18 @@ str_strdup(const struct mystr* p_str)
return vsf_sysutil_strdup(str_getbuf(p_str));
}
+const char*
+str_strdup_trimmed(const struct mystr* p_str)
+{
+ const char* p_trimmed = str_getbuf(p_str);
+ int h, t, newlen;
+
+ for (h = 0; h < (int)str_getlen(p_str) && vsf_sysutil_isspace(p_trimmed[h]); h++) ;
+ for (t = str_getlen(p_str) - 1; t >= 0 && vsf_sysutil_isspace(p_trimmed[t]); t--) ;
+ newlen = t - h + 1;
+ return newlen ? vsf_sysutil_strndup(p_trimmed+h, (unsigned int)newlen) : 0L;
+}
+
void
str_alloc_alt_term(struct mystr* p_str, const char* p_src, char term)
{
diff --git a/str.h b/str.h
index 3a21b50..44270da 100644
--- a/str.h
+++ b/str.h
@@ -31,6 +31,7 @@ void str_alloc_ulong(struct mystr* p_str, unsigned long the_ulong);
void str_alloc_filesize_t(struct mystr* p_str, filesize_t the_filesize);
void str_copy(struct mystr* p_dest, const struct mystr* p_src);
const char* str_strdup(const struct mystr* p_str);
+const char* str_strdup_trimmed(const struct mystr* p_str);
void str_empty(struct mystr* p_str);
void str_free(struct mystr* p_str);
void str_trunc(struct mystr* p_str, unsigned int trunc_len);
diff --git a/sysutil.c b/sysutil.c
index 5cdb6ef..428a34a 100644
--- a/sysutil.c
+++ b/sysutil.c
@@ -1035,6 +1035,18 @@ vsf_sysutil_strdup(const char* p_str)
return strdup(p_str);
}
+char*
+vsf_sysutil_strndup(const char* p_str, unsigned int p_len)
+{
+ char *new = (char *)malloc(p_len+1);
+
+ if (new == NULL)
+ return NULL;
+
+ new[p_len]='\0';
+ return (char *)memcpy(new, p_str, p_len);
+}
+
void
vsf_sysutil_memclr(void* p_dest, unsigned int size)
{
diff --git a/sysutil.h b/sysutil.h
index c34778c..c2ddd15 100644
--- a/sysutil.h
+++ b/sysutil.h
@@ -186,6 +186,7 @@ int vsf_sysutil_wait_get_exitcode(
/* Various string functions */
unsigned int vsf_sysutil_strlen(const char* p_text);
char* vsf_sysutil_strdup(const char* p_str);
+char* vsf_sysutil_strndup(const char* p_str, unsigned int p_len);
void vsf_sysutil_memclr(void* p_dest, unsigned int size);
void vsf_sysutil_memcpy(void* p_dest, const void* p_src,
const unsigned int size);
--
2.14.4