]> ruderich.org/simon Gitweb - config/dotfiles.git/commitdiff
lib.sh: Fix m4() to work with arguments with spaces.
authorSimon Ruderich <simon@ruderich.org>
Sun, 15 Mar 2009 14:26:26 +0000 (15:26 +0100)
committerSimon Ruderich <simon@ruderich.org>
Mon, 16 Mar 2009 16:40:53 +0000 (17:40 +0100)
Also added tests for this.

lib.sh
tests/lib.sh.test
tests/lib.sh.test.out

diff --git a/lib.sh b/lib.sh
index c1037be6d11d9f6496164076618e9f3cc06587f8..9e2308d6adf988de977116d7b28713e52c077fce 100644 (file)
--- a/lib.sh
+++ b/lib.sh
@@ -100,7 +100,7 @@ m4() {
     (echo "define(\`IF', \`ifelse(\`\$1', \`\$2',dnl')dnl
 define(\`FI', \`)dnl')dnl";
         # Run the file (and the default macros) through m4.
-        cat $file.m4) | $m4 $* >> $file
+        cat $file.m4) | $m4 "$@" >> $file
 
     unset file
 }
index 4557698653c06717aa2ae51361fb36a642662b4d..911b4db14a0ec956481c93e3d3dba42cc3730fd2 100644 (file)
@@ -7,6 +7,7 @@
 # not found).
 installed ls && echo ls installed
 installed doesnt-exist && echo doesnt-exist installed
+
 # Simulate BSD `which` like on Mac OS X which doesn't use exit codes.
 function which() {
     echo Mac OS X which for $1 >&2
@@ -20,6 +21,7 @@ function which() {
 installed ls && echo ls installed
 installed doesnt-exist && echo doesnt-exist installed
 
+
 # Tests for m4().
 echo "Simple test file for m4.
 IF(TEST,m4)
@@ -31,6 +33,7 @@ FI" > tmp/test.m4
 m4 tmp/test -DTEST=m4
 # Remove the line with the current date as it changes every time.
 cat tmp/test | grep -v "It was generated from tmp/test.m4"
+
 # Test multiple arguments to m4().
 echo "Test with multiple arguments passed to m4.
 first: FIRST
@@ -40,4 +43,15 @@ m4 tmp/test-multiple -DFIRST=first -DSECOND=second
 # Remove the line with the current date as it changes every time.
 cat tmp/test-multiple | grep -v "It was generated from tmp/test-multiple.m4"
 
+# Test multiple arguments with spaces to m4().
+echo "Test with multiple arguments with spaces passed to m4.
+first: FIRST
+second: SECOND
+" > tmp/test-multiple-spaces.m4
+m4 tmp/test-multiple-spaces -DFIRST="first with spaces" \
+                            -DSECOND="second with spaces"
+# Remove the line with the current date as it changes every time.
+cat tmp/test-multiple-spaces \
+    | grep -v "It was generated from tmp/test-multiple-spaces.m4"
+
 # vim: ft=sh
index e68b9959e8f5b39194e2a96a1a3782781a265c2b..34cfe6d0d0840cdac564e88a6647f1e71a497f89 100644 (file)
@@ -20,3 +20,13 @@ Test with multiple arguments passed to m4.
 first: first
 second: second
 
+m4(): generating 'tmp/test-multiple-spaces' from 'tmp/test-multiple-spaces.m4' with options '-DFIRST=first with spaces -DSECOND=second with spaces'
+###################################
+# WARNING! DO NOT EDIT THIS FILE! #
+###################################
+
+
+Test with multiple arguments with spaces passed to m4.
+first: first with spaces
+second: second with spaces
+