Ralf Wildenhues <[EMAIL PROTECTED]> wrote:
> * Jim Meyering wrote on Sat, Apr 05, 2008 at 02:54:37PM CEST:
>> Ralf Wildenhues <[EMAIL PROTECTED]> wrote:
>> >
>> > How about this slightly simpler patch instead? If you don't like it,
>> > then I think your patch is a definite improvement, and is OK by me.
>>
>> I prefer yours and almost went that way myself, but wonder if it's
>> portable enough. I don't see any other uses of 'if...fi <', in autoconf.
>
> Yes, that's pretty portable. IIRC it may create a subshell, but that
> doesn't matter here.
"pretty portable" may not be enough for autoconf ;-)
Since there seem to be no other uses of that idiom
in autoconf, I'm leery about introducing the first.
Of course, if it's known to be sufficiently portable,
I prefer your more compact patch. Here's mine again,
with more comments:
>From ace9e3f93c64c7649eb6c76d248d4316e4ba9215 Mon Sep 17 00:00:00 2001
From: Jim Meyering <[EMAIL PROTECTED]>
Date: Sat, 5 Apr 2008 11:27:06 +0200
Subject: [PATCH] Work around CR EOL markers on OS/2 (www.ecomstation.com Ecs v2
rc4)
* lib/autoconf/status.m4 (_AC_OUTPUT_FILES_PREPARE): When CR
is the EOL marker, skip a step that would remove and translate
carriage return bytes. Reported by Elbert Pol.
Signed-off-by: Jim Meyering <[EMAIL PROTECTED]>
---
ChangeLog | 8 ++++++++
lib/autoconf/status.m4 | 19 +++++++++++++++++--
2 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index df454bc..6703cc3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-04-05 Jim Meyering <[EMAIL PROTECTED]>
+
+ Do not use a literal carriage return (it may be the EOL marker).
+ * lib/autoconf/status.m4 (_AC_OUTPUT_FILES_PREPARE): Rather than
+ a literal ^M, derive the byte using echo and tr.
+ Using the literal would not work on a system using carriage
+ return as end-of-line marker.
+
2008-04-03 Eric Blake <[EMAIL PROTECTED]>
Fix version number generation in man pages.
diff --git a/lib/autoconf/status.m4 b/lib/autoconf/status.m4
index b4dec08..59eedcc 100644
--- a/lib/autoconf/status.m4
+++ b/lib/autoconf/status.m4
@@ -539,9 +539,24 @@ m4_ifdef([_AC_SUBST_FILES],
[\$ac_cs_awk_pipe_fini])
_ACAWK
_ACEOF
+dnl See if CR is the EOL marker. If not, remove any EOL-related
+dnl ^M bytes and escape any remaining ones. If so, just use mv.
+dnl In case you're wondering how ^M bytes can make it into subs1.awk,
+dnl [from Ralf Wildenhues] one way is if you have e.g.,
+dnl AC_SUBST([variable_that_contains_cr], ["
+dnl "])
+dnl The original aim was that users should be able to substitute any
+dnl characters they like (except for \0). And the above is not so
+dnl unlikely if the configure script itself happens to be converted
+dnl to w32 text mode.
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" < "$tmp/subs1.awk" >
"$tmp/subs.awk" \
- || AC_MSG_ERROR([could not setup config files machinery])
+ac_awk_err=0
+sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1 \
+ && { sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" \
+ < "$tmp/subs1.awk" > "$tmp/subs.awk" || ac_awk_err=1; } \
+ || { mv "$tmp/subs1.awk" "$tmp/subs.awk" || ac_awk_err=1; }
+test $ac_awk_err = 1 \
+ && AC_MSG_ERROR([could not setup config files machinery])
_ACEOF
# VPATH may cause trouble with some makes, so we remove $(srcdir),
--
1.5.5.rc3.1.gaece