[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: non portable sed scripts
From: |
Paul Eggert |
Subject: |
Re: non portable sed scripts |
Date: |
Tue, 23 May 2006 01:31:26 -0700 |
User-agent: |
Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) |
Ralf Wildenhues <address@hidden> writes:
> I'm undecided about this. Paul has more experience and
> will have to deal with bug reports against coreutils, ;-)
> so I'd appreciate input on this.
Let's drop it to 50, as a stopgap. Also, we can trim a few bytes from
the sed scripts, which gives us a slightly bigger safety margin. I
installed this:
2006-05-23 Paul Eggert <address@hidden>
* lib/autoconf/status.m4 (_AC_OUTPUT_HEADER): Simplify ac_dA and
ac_dB slightly, to save bytes in the script.
Max out at 50 lines, rather than 96; this is more likely
(though not guaranteed) to avoid obscure 'sed' failures.
--- lib/autoconf/status.m4 22 May 2006 10:40:42 -0000 1.105
+++ lib/autoconf/status.m4 23 May 2006 08:27:32 -0000 1.106
@@ -608,8 +608,8 @@ m4_define([_AC_OUTPUT_HEADER],
# just an empty string.
#
dnl Quote, for the `[ ]' and `define'.
-[ ac_dA='s,^\([ ]*#[ ]*\)[^ ]*\([ ][ ]*'
- ac_dB='\)[ (].*$,\1define\2'
+[ ac_dA='s,^\([ #]*\)[^ ]*\([ ]*'
+ ac_dB='\)[ (].*,\1define\2'
ac_dC=' '
ac_dD=' ,']
dnl ac_dD used to contain `;t' at the end, but that was both slow and
incorrect.
@@ -660,7 +660,15 @@ echo 's/ $//
[s,^[ #]*u.*,/* & */,]' >>conftest.defines
# Break up conftest.defines:
-ac_max_sed_lines=m4_eval(_AC_SED_CMD_LIMIT - 3)
+dnl If we cared only about not exceeding line count limits, we would use this:
+dnl ac_max_sed_lines=m4_eval(_AC_SED_CMD_LIMIT - 3)
+dnl But in practice this can generate scripts that contain too many bytes;
+dnl and this can cause obscure 'sed' failures, e.g.,
+dnl http://lists.gnu.org/archive/html/bug-coreutils/2006-05/msg00127.html
+dnl So instead, we use the following, which is about half the size we'd like:
+ac_max_sed_lines=50
+dnl In the future, let's use awk or sh instead of sed to do substitutions,
+dnl since we have so many problems with sed.
# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
- Re: non portable sed scripts, (continued)
- Re: non portable sed scripts, Paul Eggert, 2006/05/21
- Re: non portable sed scripts, Ralf Wildenhues, 2006/05/21
- Re: non portable sed scripts, Ralf Wildenhues, 2006/05/22
- Re: non portable sed scripts, Paul Eggert, 2006/05/22
- Re: non portable sed scripts, Stepan Kasal, 2006/05/22
- Re: non portable sed scripts, Ralf Wildenhues, 2006/05/22
- Re: non portable sed scripts, Stepan Kasal, 2006/05/22
- Re: non portable sed scripts, Ralf Wildenhues, 2006/05/22
- Re: non portable sed scripts, Stepan Kasal, 2006/05/22
- Re: non portable sed scripts, Paul Eggert, 2006/05/22
- Re: non portable sed scripts,
Paul Eggert <=
- Re: non portable sed scripts, Tim Rice, 2006/05/23
- Re: non portable sed scripts, Stepan Kasal, 2006/05/23
- Re: non portable sed scripts, Ralf Wildenhues, 2006/05/23
- Re: non portable sed scripts, Tim Rice, 2006/05/23
Re: non portable sed scripts, Ralf Wildenhues, 2006/05/23
Re: non portable sed scripts, Paul Eggert, 2006/05/23