public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] proj/portage-utils:master commit in: libq/, tests/rmspace/, tests/
@ 2015-11-28  2:44 Mike Frysinger
  0 siblings, 0 replies; only message in thread
From: Mike Frysinger @ 2015-11-28  2:44 UTC (permalink / raw
  To: gentoo-commits

commit:     af57eb3627af70441e3d135a10d68987698aa506
Author:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Fri Nov 27 17:46:14 2015 +0000
Commit:     Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Fri Nov 27 17:46:14 2015 +0000
URL:        https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=af57eb36

rmspace: rewrite/optimize a bit

This makes the code a bit easier to read and avoids calling strlen
all the time as we can calculate it ourselves with basic math.

 libq/rmspace.c           | 15 +++++++++------
 tests/Makefile           |  2 +-
 tests/rmspace/.gitignore |  1 +
 tests/rmspace/Makefile   | 18 ++++++++++++++++++
 tests/rmspace/dotest     | 22 ++++++++++++++++++++++
 tests/rmspace/test.c     | 32 ++++++++++++++++++++++++++++++++
 6 files changed, 83 insertions(+), 7 deletions(-)

diff --git a/libq/rmspace.c b/libq/rmspace.c
index 1d5e45d..d374d7f 100644
--- a/libq/rmspace.c
+++ b/libq/rmspace.c
@@ -2,15 +2,18 @@
 /* removed leading/trailing extraneous white space */
 static char *rmspace(char *s)
 {
-	register char *p;
+	char *p;
+	size_t len = strlen(s);
 	/* find the start of trailing space and set it to \0 */
-	for (p = s + strlen(s) - 1; (p >= s && isspace(*p)); --p);
-	if (p != s + strlen(s) - 1)
-		*(p + 1) = 0;
+	for (p = s + len - 1; (p >= s && isspace(*p)); --p)
+		continue;
+	p[1] = '\0';
+	len = (p - s) + 1;
 	/* find the end of leading space and set p to it */
-	for (p = s; (isspace(*p) && *p); ++p);
+	for (p = s; (isspace(*p) && *p); ++p)
+		continue;
 	/* move the memory backward to overwrite leading space */
 	if (p != s)
-		memmove(s, p, strlen(p)+1);
+		memmove(s, p, len - (p - s) + 1);
 	return s;
 }

diff --git a/tests/Makefile b/tests/Makefile
index 2fdea84..bbe0fe8 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -1,5 +1,5 @@
 TESTS = \
-	reinitialize atom_compare atom_explode mkdir \
+	reinitialize atom_compare atom_explode mkdir rmspace \
 	qatom qcheck qdepends qfile qlist qlop qmerge qtbz2 quse qxpak \
 	install profile source
 

diff --git a/tests/rmspace/.gitignore b/tests/rmspace/.gitignore
new file mode 100644
index 0000000..28ce6a8
--- /dev/null
+++ b/tests/rmspace/.gitignore
@@ -0,0 +1 @@
+m

diff --git a/tests/rmspace/Makefile b/tests/rmspace/Makefile
new file mode 100644
index 0000000..ad14de3
--- /dev/null
+++ b/tests/rmspace/Makefile
@@ -0,0 +1,18 @@
+thisdir = mkdir
+include ../subdir.mk
+
+all: $(b)/m
+
+$(b)/m: $(s)/test.c
+	mkdir -p $(b)
+	$(CC) $(CFLAGS) $(CPPFLAGS) $< -o $@
+
+test check: dotest
+
+dotest: $(b)/m
+	$(Q)$(s)/dotest
+
+clean:
+	rm -f $(b)/m
+
+.PHONY: all basic dotest test check clean

diff --git a/tests/rmspace/dotest b/tests/rmspace/dotest
new file mode 100755
index 0000000..1a3e71c
--- /dev/null
+++ b/tests/rmspace/dotest
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+. ../init.sh || exit 1
+
+set -e
+
+m=${ab}/m
+
+tests=(
+	""
+	"a"
+	" a"
+	"	a"
+	" 	 a"
+	"a "
+	"a	"
+	"	a "
+)
+${m} "${tests[@]}"
+: $(( tpassed += ${#tests[@]} ))
+
+end

diff --git a/tests/rmspace/test.c b/tests/rmspace/test.c
new file mode 100644
index 0000000..8143f46
--- /dev/null
+++ b/tests/rmspace/test.c
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2005-2014 Gentoo Foundation
+ * Distributed under the terms of the GNU General Public License v2
+ *
+ * Copyright 2005-2008 Ned Ludd        - <solar@gentoo.org>
+ * Copyright 2005-2014 Mike Frysinger  - <vapier@gentoo.org>
+ */
+
+#include "tests/tests.h"
+
+#include "libq/rmspace.c"
+
+int main(int argc, char *argv[])
+{
+	int i;
+	char *s;
+	size_t len;
+
+	if (argc <= 1)
+		return 1;
+
+	for (i = 1; i < argc; ++i) {
+		s = rmspace(argv[i]);
+		len = strlen(s);
+		if (isspace(s[0]) || isspace(s[len - 1])) {
+			fprintf(stderr, "FAIL {%s}\n", s);
+			return 1;
+		}
+	}
+
+	return 0;
+}


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2015-11-28  2:44 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-11-28  2:44 [gentoo-commits] proj/portage-utils:master commit in: libq/, tests/rmspace/, tests/ Mike Frysinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox