=====
The Solaris `sed' doesn't flush the last data line if that line isn't
terminated with a NEWLINE.  The problem surfaces in the "po" directory
and the problem code is in the "Rules-quot" file where `msgfilter'
passes some un-newline terminated data to a `sed' invocation (see my
quick and dirty patch below).  If you have access to a Solaris box, you
can duplicate the problem effects with

  > sh -c 'echo "xxx\c" | sed -e "s,^,,"'   <==  bad
  > 

The GNU sed works correctly.

  > sh -c 'echo "xxx\c" | gsed -e "s,^,,"'  <==  good
  xxx> 

If the Solaris `sed' is used, a `gmake dist' invocation aborts and, even
if it didn't, the output from the code line below generates incorrect
<msgstr ""> and <msgstr "\n"> values for a number of the lines in the
"[EMAIL PROTECTED]" files.

The source code that I used was obtained from

  http://hg.addictivecode.org/wget/mainline

--    Paul Townsend (alpha alpha Beta (at) purdue _dot_ edu)

diff -u mainline/po/Rules-quot.orig mainline/po/Rules-quot
--- mainline/po/Rules-quot.orig 2008-01-08 20:02:29.000000000 -0500
+++ mainline/po/Rules-quot      2008-01-08 20:02:32.437186475 -0500
@@ -20,7 +20,7 @@
        ll=`echo $$lang | sed -e 's/@.*//'`; \
        LC_ALL=C; export LC_ALL; \
        cd $(srcdir); \
-       if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null 
| sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed 
-f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; 
then \
+       if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null 
| sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) 
/opt/sfw/bin/gsed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > 
$$tmpdir/$$lang.new.po; then \
          if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
            rm -f $$tmpdir/$$lang.new.po; \
          else \

Reply via email to