Bad interaction between sed and a2ps breaks apsfilter
I thought it could be informative to forward this email to the
debian-release list, in case any NMUs may be needed. See
http://bugs.debian.org/258042 for the background...
---------- Forwarded message ----------
Date: Fri, 13 Aug 2004 14:19:52 -0400 (EDT)
From: Kevin B. McCarty <kmccarty@Princeton.EDU>
To: schizo@debian.org, mhatta@debian.org
Cc: 258042@bugs.debian.org
Subject: Is this bug the fault of sed or psset? Please reply quickly.
Hi,
The first attachment to this email, psset.sed, is a sed script is created
on-the-fly by psset (in the a2ps package). As you see, lines 5 and 17 of the
script begin with the characters "\countdictstack" (without quotes). However,
versions 4.1-1 and higher of sed treat the "\co" as an escape sequence
representing Ctrl+O (ASCII 15), which breaks the output of psset, and in turn
causes Bug# 258042 that is currently filed against gs. Versions 4.0.9-5 and
earlier of sed do not do anything special with the "\co".
Now, the Info sed manual describes the "\cX" escape sequence, but I am not
intimately familiar with sed so I don't know under what circumstances the
escape is substituted in. If the escape should NOT be substituted in, this is
a bug in sed that should be fixed. On the other hand, if current versions of
sed are behaving correctly, I will reassign it to a2ps.
The second attachment to this email, a2ps.patch, is a trivial patch to fix
psset to work with the current behavior of sed. (The patch is harmless if the
sed behavior is reverted.) I think it should be applied in any case, since sed
is in Base and therefore already frozen, while a2ps is not yet.
Please look after this quickly, because this problem makes apsfilter
essentially unusable as a print filter in sarge.
thanks and regards,
--
Kevin B. McCarty <kmccarty@princeton.edu> Physics Department
WWW: http://www.princeton.edu/~kmccarty/ Princeton University
GPG: public key ID 4F83C751 Princeton, NJ 08544
:start
/^%%EndSetup$/{
i\
\% Pagedevice definitions:\
\countdictstack\
\% Push our own mark, since there can be several PS marks pushed depending\
\% where the failure really occured.\
\/psset_mark\
\{\
\%%BeginFeature: *Duplex false\
\ (<<) cvx exec /Duplex (false) cvx exec (>>) cvx exec\
\ systemdict /setpagedevice get exec\
\%%EndFeature\
\} stopped\
\% My cleartomark\
\{ /psset_mark eq { exit } if } loop\
\countdictstack exch sub dup 0 gt\
\{\
\ { end } repeat\
\}{\
\ pop\
\} ifelse
b end
}
n
b start
:end
n
b end
diff -ur a2ps-4.13b.old/contrib/psset.in a2ps-4.13b/contrib/psset.in
--- a2ps-4.13b.old/contrib/psset.in Sun Oct 24 08:41:46 1999
+++ a2ps-4.13b/contrib/psset.in Fri Aug 13 14:12:56 2004
@@ -221,7 +221,7 @@
done
pspagedevice="% Pagedevice definitions:
-countdictstack
+ countdictstack
% Push our own mark, since there can be several PS marks pushed depending
% where the failure really occured.
/psset_mark
@@ -229,7 +229,7 @@
} stopped
% My cleartomark
{ /psset_mark eq { exit } if } loop
-countdictstack exch sub dup 0 gt
+ countdictstack exch sub dup 0 gt
{
{ end } repeat
}{
Reply to: