summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--read.c8
-rw-r--r--tests/scripts/features/sun-trailing-spaces31
2 files changed, 39 insertions, 0 deletions
diff --git a/read.c b/read.c
index 38cdbdd..eb049ba 100644
--- a/read.c
+++ b/read.c
@@ -2567,6 +2567,14 @@ readline (struct ebuffer *ebuf)
}
#endif
+ /* In SunOS mode strip trailing spaces. */
+ if (sun_flag)
+ {
+ while ((p - start) > 1 && (p[-2] == ' ' || p[-2] == '\t'))
+ --p;
+ p[-1] = '\n';
+ }
+
backslash = 0;
for (p2 = p - 2; p2 >= start; --p2)
{
diff --git a/tests/scripts/features/sun-trailing-spaces b/tests/scripts/features/sun-trailing-spaces
new file mode 100644
index 0000000..347e6ce
--- /dev/null
+++ b/tests/scripts/features/sun-trailing-spaces
@@ -0,0 +1,31 @@
+# -*-perl-*-
+$description = "In SunOS mode strip trailing spaces";
+
+$details = "";
+
+# !!! Note the spaces and tabs after hello !!!
+run_make_test('
+
+var_with_trailing_space = hello
+var_with_trailing_tab = hello
+var_with_trailing_tab_space_tab = hello
+
+space:
+ @echo "$(var_with_trailing_space)world"
+tab:
+ @echo "$(var_with_trailing_tab)world"
+tab_space_tab:
+ @echo "$(var_with_trailing_tab_space_tab)world"
+
+',
+'space',
+"hello world");
+
+run_make_test(undef, '--sun space', "helloworld");
+run_make_test(undef, '--sun tab', "helloworld");
+run_make_test(undef, '--sun tab_space_tab', "helloworld");
+run_make_test(undef, 'tab', "hello\tworld");
+run_make_test(undef, 'tab_space_tab', "hello\t \tworld");
+
+# This tells the test driver that the perl test script executed properly.
+1;