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;