On Sun, Oct 03, 2010 at 01:56:36PM +0200, Marco Herrn wrote:
> I open a pdf file by calling:
> 
>   zxpdf my.pdf
> 
> (The "zxpdf" is actually hidden in a bash alias with some other options I
> usually use.)
> Xpdf opens the my.pdf, but when I close xpdf, the file my.pdf has gone!
> This happens with all pdf file I have tried with.
> 
> However it does not happen, if a call it via:
>   
>   /usr/bin/xpdf my.pdf
> 
> so it seems to have something to do with zxpdf.

I was able to reproduce it. The cause is very simple. zxpdf is actually
a shell script and the error is very evident. I'm attaching a patch
which fixes the problem. This is the description of the solution which I
wrote on the patch:

theorem.
If a .pdf file name is passed as parameter and the file exists, then
$cat is empty and $tmp is set to the file name.

Around line 57, the script will remove the file which name is given by
$tmp whenever the signal trap is fired. Acording to our theorem,
removing file $tmp when $cat is empty is an error. After all, it will be
pointing to a file created by the user, not by us, so we should have no
business in removing it.
theorem.
If a .pdf file name is passed as parameter and the file exists, then
$cat is empty and $tmp is set to the file name.

Around line 57, the script will remove the file which name is given by
$tmp whenever the signal trap is fired. Acording to our theorem,
removing file $tmp when $cat is empty is an error. After all, it will be
pointing to a file created by the user, not by us, so we should have no
business in removing it.

---
 debian/zxpdf |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
 mode change 100644 => 100755 debian/zxpdf

diff --git a/debian/zxpdf b/debian/zxpdf
old mode 100644
new mode 100755
index c4ba2fb..1179359
--- a/debian/zxpdf
+++ b/debian/zxpdf
@@ -57,6 +57,8 @@ fi
 
 if [ "$tmp" == "" ]; then
     exec xpdf -title $title $flags
+elif [ -z "$cat" ]; then
+    xpdf -title $title $flags "$tmp" $pages
 else
     trap "rm -f \"$tmp\"" 0 1 2 15
     xpdf -title $title $flags "$tmp" $pages
-- 
1.7.2.3

Reply via email to