[ding-libs/f20] INI: Strip trailing whitespace
Jakub Hrozek
jhrozek at fedoraproject.org
Fri Sep 27 09:26:13 UTC 2013
commit 95eebab684b0d3a3da49a572fa5946892a76d30e
Author: Jakub Hrozek <jhrozek at redhat.com>
Date: Fri Sep 27 11:19:18 2013 +0200
INI: Strip trailing whitespace
0002-Trim-trailing-spaces.patch | 166 +++++++++++++++++++++++++++++++++++++++
ding-libs.spec | 7 ++-
2 files changed, 172 insertions(+), 1 deletions(-)
---
diff --git a/0002-Trim-trailing-spaces.patch b/0002-Trim-trailing-spaces.patch
new file mode 100644
index 0000000..b8b501e
--- /dev/null
+++ b/0002-Trim-trailing-spaces.patch
@@ -0,0 +1,166 @@
+From 8390d1d432330e143832734d5799528013e79178 Mon Sep 17 00:00:00 2001
+From: Dmitri Pal <dpal at redhat.com>
+Date: Mon, 23 Sep 2013 16:03:30 -0400
+Subject: [PATCH] Trim trailing spaces
+
+This patch addressed issue https://fedorahosted.org/sssd/ticket/2095
+The new parser in fact stopped trimming trailing spaces.
+This is now corrected.
+---
+ ini/ini.d/real.conf | 2 +-
+ ini/ini_parse.c | 7 ++++
+ ini/ini_parse_ut.c | 100 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 108 insertions(+), 1 deletion(-)
+
+diff --git a/ini/ini.d/real.conf b/ini/ini.d/real.conf
+index 32bc9dae0c40ce46dc4c375963b5d0cf2a05e17b..1e155b820061001695d85edfeca1819e799e2a4b 100644
+--- a/ini/ini.d/real.conf
++++ b/ini/ini.d/real.conf
+@@ -40,7 +40,7 @@ legacy = FALSE
+ enumerate = 3
+
+ [domains/EXAMPLE.COM]
+-description = Example domain served by IPA
++description = Example domain served by IPA
+ provider = ipa
+ server = ipaserver1.example.com
+ server = ipabackupserver.example.com
+diff --git a/ini/ini_parse.c b/ini/ini_parse.c
+index 60ef1169986f2ea27596931ebf16fab166c71937..9a1c0ec63013adb986b627c977c9759c1d5a210e 100644
+--- a/ini/ini_parse.c
++++ b/ini/ini_parse.c
+@@ -968,6 +968,13 @@ static int handle_kvp(struct parser_obj *po, uint32_t *action)
+ full_len--;
+ }
+
++ /* Trucate trailing spaces */
++ /* Make sure not to step before the beginning */
++ while (full_len && isspace(str[full_len - 1])) {
++ str[full_len - 1] = '\0';
++ full_len--;
++ }
++
+ /* Check if we have the key */
+ if (*(str) == '=') {
+ po->last_error = ERR_NOKEY;
+diff --git a/ini/ini_parse_ut.c b/ini/ini_parse_ut.c
+index 32c59e7a3a36a5b719620ae42cf070154d4eb416..2655d7e8e11a391db324a9c022004f7cbbeb092e 100644
+--- a/ini/ini_parse_ut.c
++++ b/ini/ini_parse_ut.c
+@@ -2650,6 +2650,105 @@ int space_test(void)
+ return EOK;
+ }
+
++
++int trim_test(void)
++{
++ int error;
++ struct ini_cfgfile *file_ctx = NULL;
++ struct ini_cfgobj *ini_config = NULL;
++ char **error_list = NULL;
++ char infile[PATH_MAX];
++ char *srcdir = NULL;
++ const char *value;
++ struct value_obj *vo = NULL;
++
++ INIOUT(printf("\n\n<==== TRIM TEST START =====>\n"));
++
++ srcdir = getenv("srcdir");
++ snprintf(infile, PATH_MAX, "%s/ini/ini.d/real.conf",
++ (srcdir == NULL) ? "." : srcdir);
++
++
++ INIOUT(printf("Reading file %s\n", infile));
++ error = ini_config_file_open(infile,
++ 0,
++ &file_ctx);
++ if (error) {
++ printf("Failed to open file for reading. Error %d.\n", error);
++ return error;
++ }
++
++ INIOUT(printf("Creating configuration object\n"));
++ error = ini_config_create(&ini_config);
++ if (error) {
++ printf("Failed to create object. Error %d.\n", error);
++ ini_config_file_destroy(file_ctx);
++ return error;
++ }
++ INIOUT(printf("Parsing\n"));
++ error = ini_config_parse(file_ctx,
++ INI_STOP_ON_NONE,
++ 0,
++ 0,
++ ini_config);
++ if (error) {
++ INIOUT(printf("Failed to parse configuration. "
++ "Error %d.\n", error));
++
++ if (ini_config_error_count(ini_config)) {
++ INIOUT(printf("Errors detected while parsing: %s\n",
++ ini_config_get_filename(file_ctx)));
++ ini_config_get_errors(ini_config, &error_list);
++ INIOUT(ini_config_print_errors(stdout, error_list));
++ ini_config_free_errors(error_list);
++ }
++ ini_config_file_destroy(file_ctx);
++ return error;
++ }
++
++ INIOUT(col_debug_collection(ini_config->cfg, COL_TRAVERSE_DEFAULT));
++ ini_config_file_destroy(file_ctx);
++
++ vo = NULL;
++ error = ini_get_config_valueobj("domains/EXAMPLE.COM",
++ "description",
++ ini_config,
++ INI_GET_FIRST_VALUE,
++ &vo);
++ if(error) {
++ printf("Expected success but got error! %d\n",error);
++ ini_config_destroy(ini_config);
++ return error;
++ }
++
++ /* Value should be found */
++ if (vo == NULL) {
++ printf("Expected success but got NULL.\n");
++ ini_config_destroy(ini_config);
++ return -1;
++ }
++
++ value = ini_get_const_string_config_value(vo, NULL);
++
++ if (value == NULL) {
++ printf("No value.\n");
++ ini_config_destroy(ini_config);
++ return -1;
++ }
++
++ if(value[strlen(value) - 1] == ' ') {
++ printf("Trailing space is not trimmed.\n");
++ ini_config_destroy(ini_config);
++ return -1;
++ }
++
++ INIOUT(printf("[%s]\n", value));
++
++ ini_config_destroy(ini_config);
++
++ INIOUT(printf("\n<==== TRIM TEST END =====>\n\n"));
++ return EOK;
++}
+ /* Main function of the unit test */
+ int main(int argc, char *argv[])
+ {
+@@ -2663,6 +2762,7 @@ int main(int argc, char *argv[])
+ reload_test,
+ get_test,
+ space_test,
++ trim_test,
+ NULL };
+ test_fn t;
+ int i = 0;
+--
+1.8.3.1
+
diff --git a/ding-libs.spec b/ding-libs.spec
index d753fc0..76ede26 100644
--- a/ding-libs.spec
+++ b/ding-libs.spec
@@ -1,6 +1,6 @@
Name: ding-libs
Version: 0.3.0.1
-Release: 18%{?dist}
+Release: 19%{?dist}
Summary: "Ding is not GLib" assorted utility libraries
Group: Development/Libraries
License: LGPLv3+
@@ -20,6 +20,7 @@ BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
### Patches ###
Patch0001: 0001-INI-Bump-version-info.patch
+Patch0002: 0002-Trim-trailing-spaces.patch
### Dependencies ###
# ding-libs is a meta-package that will pull in all of its own
@@ -322,6 +323,7 @@ structure
%prep
%setup -q
%patch0001 -p1 -b .version
+%patch0002 -p1 -b .whitespace
%build
autoreconf -ivf
@@ -356,6 +358,9 @@ rm -f */doc/html/installdox
rm -rf $RPM_BUILD_ROOT
%changelog
+* Fri Sep 27 2013 Jakub Hrozek <jhrozek at redhat.com> - 0.3.0.1-19
+- Apply a patch by Dmitri Pal to strip trailing whitespace
+
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng at lists.fedoraproject.org> - 0.3.0.1-18
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
More information about the scm-commits
mailing list