Jean-Marc Lasgouttes wrote:
>>> How portable is -n?
>
> Angus> It's portable.
>
> Angus> As in, it's not mentioned here:
> Angus> http://www.student.northpark.edu/pemente/sed/sedfaq6.html#s6.6
>
> Fair enough. Could you make a patch?
Attached. Looks scary, but the textclass.lst and chklayouts.tex files are
unchanged by this manipulation.
--
Angus
Index: lib/configure.m4
===================================================================
RCS file: /usr/local/lyx/cvsroot/lyx-devel/lib/configure.m4,v
retrieving revision 1.60.2.17
diff -u -p -r1.60.2.17 configure.m4
--- lib/configure.m4 25 Mar 2005 15:35:52 -0000 1.60.2.17
+++ lib/configure.m4 20 Apr 2005 12:49:20 -0000
@@ -422,23 +422,26 @@ changequote([,])dnl
if test x`[eval] echo $ac_n '${found_'$cleanclass'}'` = x ; then
[eval] "found_$cleanclass=yes"
changequote(,)dnl
- # The sed commands below are a bit scary. Here is what they do:
- # 1-3: remove the \DeclareFOO macro and add the correct boolean
- # at the end of the line telling whether the class is
- # available
- # 4: if the macro had an optional argument with several
- # parameters, only keep the first one
- # 5: if the macro did not have an optional argument, provide one
- # (equal to the class name)
- # 6: remove brackets and replace with correctly quoted entries
- grep '\\Declare\(LaTeX\|DocBook\|LinuxDoc\)Class' "$file" \
- | sed -e 's/^.*\DeclareLaTeXClass *\(.*\)/\1 "false"/' \
- -e 's/^.*\DeclareDocBookClass *\(.*\)/\1 "'$bool_docbook'"/' \
- -e 's/^.*\DeclareLinuxDocClass *\(.*\)/\1 "'$bool_linuxdoc'"/' \
- -e 's/\[\([^,]*\),[^]]*\]/[\1]/' \
- -e 's/^{/['$class']{/' \
- -e 's/\[\([^]]*\)\] *{\([^}]*\)}/"'$class'" "\1" "\2"/' \
- >>textclass.lst
+ sed -n '
+# For lines containing "\Declare(LaTeX|DocBook|LinuxDoc)Class"
+/\\Declare[LD][a-zA-Z]\{1,\}Class/{
+# Remove the \DeclareFOOClass macro and add the correct boolean
+# at the end of the line telling whether the class is
+# available
+s/^.*\DeclareLaTeXClass *\(.*\)/\1 "false"/
+s/^.*\DeclareDocBookClass *\(.*\)/\1 "'$bool_docbook'"/
+s/^.*\DeclareLinuxDocClass *\(.*\)/\1 "'$bool_linuxdoc'"/
+# If the macro had an optional argument with several
+# parameters, only keep the first one
+s/\[\([^,]*\),[^]]*\]/[\1]/
+# If the macro did not have an optional argument, provide one
+# (equal to the class name)
+s/^{/['$class']{/
+# Remove brackets and replace with correctly quoted entries
+s/\[\([^]]*\)\] *{\([^}]*\)}/"'$class'" "\1" "\2"/
+# Print the maninpulated text
+p
+}' "$file" >> textclass.lst
fi
fi ;;
esac
@@ -447,7 +450,7 @@ changequote(,)dnl
else
MSG_RESULT(auto)
rm -f wrap_chkconfig.ltx chkconfig.vars chkconfig.classes chklayouts.tex
- if ! test -r "chkconfig.ltx" ; then
+ if test ! -r "chkconfig.ltx" ; then
ln -s "${srcdir}"/chkconfig.ltx .
rmlink=true
fi
@@ -465,8 +468,12 @@ EOF
*) if test -r "$file" ; then
class=`echo $file | sed -e 's%^.*layouts/\(.*\)\.layout$%\1%'`
# Generate the proper TestDocClass command for this layout
- grep '\\Declare\(LaTeX\|DocBook\|LinuxDoc\)Class' "$file" \
- | sed -e 's/^\# *\(.*\)$/\\TestDocClass{'${class}'}{\1}/'
+ sed -n '
+# For lines containing "\Declare(LaTeX|DocBook|LinuxDoc)Class"
+/\\Declare[LD][a-zA-Z]\{1,\}Class/{
+# Wrap the entire line (minus the leading "# ") inside a
+# "\TestDocClass{CLASS}{...}" command and print the result.
+s/^\# *\(.*\)$/\\TestDocClass{'${class}'}{\1}/p}' "$file"
fi ;;
esac
done > chklayouts.tex