Index: kgv_miniwidget.cpp
===================================================================
RCS file: /home/kde/kdegraphics/kghostview/kgv_miniwidget.cpp,v
retrieving revision 1.100.2.3
diff -u -r1.100.2.3 kgv_miniwidget.cpp
--- kgv_miniwidget.cpp 27 Sep 2002 02:39:53 -0000 1.100.2.3
+++ kgv_miniwidget.cpp 6 Apr 2003 21:32:09 -0000
@@ -603,10 +603,16 @@
{
KProcess process;
process << _interpreterPath
+ << "-dSAFER"
+ << "-dPARANOIDSAFER"
+ << "-dDELAYSAFER"
<< "-dNODISPLAY"
<< "-dQUIET"
<< QString( "-sPDFname=%1" ).arg( pdfName )
<< QString( "-sDSCname=%1" ).arg( dscName )
+ << "-c"
+ << "<< /PermitFileReading [ PDFname ] /PermitFileWriting [ DSCname ] /PermitFileControl [] >> setuserparams .locksafe"
+ << "-f"
<< "pdf2dsc.ps"
<< "-c"
<< "quit";
@@ -968,7 +974,7 @@
}
// Set 0 filename for gs -- use pipe.
- page->setFileName( QString::null );
+ page->setFileName( format == PDF ? _pdfFileName : _fileName, true );
// finally set marked list
QString s, tip;
@@ -987,7 +993,7 @@
else {
toc_length = 0;
toc_entry_length = 3;
- page->setFileName( _fileName );
+ page->setFileName( _fileName, false );
QString s("1");
_marklist->insertItem( s, 0 );
}
@@ -1066,11 +1072,11 @@
}
const char *cmd_convert_pdf =
- "%s -q -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pswrite -sOutputFile=%s -c save pop -f \"%s\"";
+ "%s -q -dNOPAUSE -dBATCH -dSAFER -dPARANOIDSAFER -sDEVICE=pswrite -sOutputFile=%s -c save pop -f %s";
QCString cmd;
cmd.sprintf( cmd_convert_pdf, _interpreterPath.local8Bit().data(),
QFile::encodeName( _tmpFromPDF->name() ).data(),
- QFile::encodeName( _pdfFileName ).data() );
+ QFile::encodeName( KShellProcess::quote(_pdfFileName) ).data() );
// TODO -- timeout/fail on this conversion (it can hang on a bad pdf)
// TODO -- use output from gs (leave out -q) to drive a progress bar
Index: kpswidget.cpp
===================================================================
RCS file: /home/kde/kdegraphics/kghostview/kpswidget.cpp,v
retrieving revision 1.66
diff -u -r1.66 kpswidget.cpp
--- kpswidget.cpp 29 May 2001 00:49:46 -0000 1.66
+++ kpswidget.cpp 6 Apr 2003 21:32:09 -0000
@@ -222,9 +222,10 @@
* Sets the filename of the ghostscript input. Usually we use a pipe for
* communication and no filename will be needed.
*/
-void KPSWidget::setFileName( const QString& fileName )
+void KPSWidget::setFileName( const QString& fileName, bool usePipe )
{
_fileName = fileName;
+ _usePipe = usePipe;
}
void KPSWidget::setOrientation( KGV::Orientation orientation )
@@ -488,9 +489,12 @@
if( !intConfig->platformFonts() )
*_process << "-dNOPLATFONTS";
- *_process << "-dNOPAUSE" << "-dQUIET" << "-dSAFER";
- if( _fileName.isEmpty() )
- *_process << "-";
+ *_process << "-dNOPAUSE" << "-dQUIET" << "-dSAFER" << "-dPARANOIDSAFER";
+ if( _usePipe )
+ *_process <<
+ // The following two lines are their to ensure that we are allowed to read _fileName
+ "-dDELAYSAFER" << "-sInputFile="+_fileName << "-c" <<
+ "<< /PermitFileReading [ InputFile ] /PermitFileWriting [] /PermitFileControl [] >> setuserparams .locksafe";
else
*_process << _fileName << "-c" << "quit";
@@ -517,8 +521,8 @@
// Finally fire up the interpreter.
kdDebug(4500) << "KPSWidget: starting interpreter" << endl;
- if( _process->start( KProcess::NotifyOnExit, _fileName.isEmpty()
- ? KProcess::All : KProcess::AllOutput ) ) {
+ if( _process->start( KProcess::NotifyOnExit,
+ _usePipe ? KProcess::All : KProcess::AllOutput ) ) {
_stdinReady = true;
_interpreterReady = false;
}
Index: kpswidget.h
===================================================================
RCS file: /home/kde/kdegraphics/kghostview/kpswidget.h,v
retrieving revision 1.37
diff -u -r1.37 kpswidget.h
--- kpswidget.h 27 May 2001 11:50:52 -0000 1.37
+++ kpswidget.h 6 Apr 2003 21:32:09 -0000
@@ -73,7 +73,7 @@
bool nextPage();
bool sendPS( FILE* fp, const KGV::FileOffset&, bool close);
- void setFileName( const QString& );
+ void setFileName( const QString&, bool usePipe );
void setPageSize( const QSize& );
QSize pageSize() const { return _pageSize; }
@@ -149,6 +149,7 @@
KGV::Orientation _orientation;
bool show_messages;
QString _fileName;
+ bool _usePipe;
bool _stdinReady;
bool _interpreterBusy;