Invoke pdfs with -dDELAYSAFER. [rsc] --rw-rw-r-- M 661145 glenda sys 6553 Jan 16 19:52 sys/src/cmd/page/gs.c /n/sourcesdump/2006/0116/plan9/sys/src/cmd/page/gs.c:134,140 - /n/sourcesdump/2006/0117/plan9/sys/src/cmd/page/gs.c:134,140 } int - spawngs(GSInfo *g) + spawngs(GSInfo *g, char *safer) { char *args[16]; char tb[32], gb[32]; /n/sourcesdump/2006/0116/plan9/sys/src/cmd/page/gs.c:158,164 - /n/sourcesdump/2006/0117/plan9/sys/src/cmd/page/gs.c:158,164 nargs = 0; args[nargs++] = "gs"; args[nargs++] = "-dNOPAUSE"; - args[nargs++] = "-dSAFER"; + args[nargs++] = safer; args[nargs++] = "-sDEVICE=plan9"; args[nargs++] = "-sOutputFile=/fd/3"; args[nargs++] = "-dQUIET"; [rsc] --rw-rw-r-- M 661145 glenda sys 2159 Jan 16 19:52 sys/src/cmd/page/page.h /n/sourcesdump/2006/0116/plan9/sys/src/cmd/page/page.h:56,62 - /n/sourcesdump/2006/0117/plan9/sys/src/cmd/page/page.h:56,62 }; void waitgs(GSInfo*); int gscmd(GSInfo*, char*, ...); - int spawngs(GSInfo*); + int spawngs(GSInfo*, char*); void setdim(GSInfo*, Rectangle, int, int); int spawnwriter(GSInfo*, Biobuf*); Rectangle screenrect(void); [rsc] --rw-rw-r-- M 661145 glenda sys 2942 Jan 16 19:52 sys/src/cmd/page/pdf.c /n/sourcesdump/2006/0116/plan9/sys/src/cmd/page/pdf.c:97,103 - /n/sourcesdump/2006/0117/plan9/sys/src/cmd/page/pdf.c:97,103 d->pagename = pdfpagename; d->fwdonly = 0; - if(spawngs(pdf) < 0) + if(spawngs(pdf, "-dDELAYSAFER") < 0) return nil; gscmd(pdf, "%s", pdfprolog); /n/sourcesdump/2006/0116/plan9/sys/src/cmd/page/pdf.c:104,110 - /n/sourcesdump/2006/0117/plan9/sys/src/cmd/page/pdf.c:104,110 waitgs(pdf); setdim(pdf, Rect(0,0,0,0), ppi, 0); - gscmd(pdf, "(%s) (r) file pdfopen begin\n", fn); + gscmd(pdf, "(%s) (r) file { DELAYSAFER { .setsafe } if } stopped pop pdfopen begin\n", fn); gscmd(pdf, "pdfpagecount PAGE==\n"); p = Brdline(&pdf->gsrd, '\n'); npage = atoi(p); /n/sourcesdump/2006/0116/plan9/sys/src/cmd/page/pdf.c:125,131 - /n/sourcesdump/2006/0117/plan9/sys/src/cmd/page/pdf.c:125,130 if(Dx(pdf->pagebbox[i]) <= 0) pdf->pagebbox[i] = bbox; } - return d; } [rsc] --rw-rw-r-- M 661145 rob sys 519 Jan 16 19:52 sys/src/cmd/page/pdfprolog.ps /n/sourcesdump/2006/0116/plan9/sys/src/cmd/page/pdfprolog.ps:2,8 - /n/sourcesdump/2006/0117/plan9/sys/src/cmd/page/pdfprolog.ps:2,8 /Page# 0 def /PDFSave null def /DSCPageCount 0 def - /DoPDFPage {dup /Page# exch store pdfgetpage mypdfshowpage } def + /DoPDFPage {dup /Page# exch store pdfgetpage pdfshowpage } def /pdfshowpage_mysetpage { % pdfshowpage_mysetpage dup /CropBox pget { /n/sourcesdump/2006/0116/plan9/sys/src/cmd/page/pdfprolog.ps:15,32 - /n/sourcesdump/2006/0117/plan9/sys/src/cmd/page/pdfprolog.ps:15,20 << 5 1 roll >> setpagedevice } if } bind def - - /mypdfshowpage % pdfshowpage - - { dup /Page exch store - pdfshowpage_init - pdfshowpage_setpage - pdfshowpage_mysetpage - save /PDFSave exch store - (before exec) VMDEBUG - pdfshowpage_finish - (after exec) VMDEBUG - PDFSave restore - } bind def GS_PDF_ProcSet begin pdfdict begin [rsc] --rw-rw-r-- M 661145 glenda sys 9187 Jan 16 19:52 sys/src/cmd/page/ps.c /n/sourcesdump/2006/0116/plan9/sys/src/cmd/page/ps.c:348,354 - /n/sourcesdump/2006/0117/plan9/sys/src/cmd/page/ps.c:348,354 d->fwdonly = ps->clueless = dumb; d->docname = argv[0]; - if(spawngs(ps) < 0) + if(spawngs(ps, "-dSAFER") < 0) return nil; if(!cantranslate)