diff -up ghostscript-9.08rc1/Resource/Init/gs_fonts.ps.runlibfileifexists ghostscript-9.08rc1/Resource/Init/gs_fonts.ps --- ghostscript-9.08rc1/Resource/Init/gs_fonts.ps.runlibfileifexists 2013-08-09 14:12:18.000000000 +0100 +++ ghostscript-9.08rc1/Resource/Init/gs_fonts.ps 2013-08-12 18:05:02.065802147 +0100 @@ -95,10 +95,19 @@ userdict /Fontmap .FontDirectory maxleng % stack: dict file fontname filename|aliasname 1 index type /stringtype eq 1 index type /nametype eq and 1 index xcheck and - 1 index /run eq 2 index /.runlibfile eq or and { + 1 index /run eq 2 index /.runlibfile eq 3 index /.runlibfileifexists eq or or and { % This is an inclusion entry. - pop findlibfile { exch pop } { file } ifelse - 2 index exch .readFontmap pop + 0 index /.runlibfileifexists eq { + pop findlibfile { + exch pop + 2 index exch .readFontmap pop + } { + pop + } ifelse + } { + pop findlibfile { exch pop } { file } ifelse + 2 index exch .readFontmap pop + } ifelse } { % This is a real entry. % Read and pop tokens until a semicolon. diff -up ghostscript-9.08rc1/Resource/Init/gs_init.ps.runlibfileifexists ghostscript-9.08rc1/Resource/Init/gs_init.ps --- ghostscript-9.08rc1/Resource/Init/gs_init.ps.runlibfileifexists 2013-08-09 14:12:18.000000000 +0100 +++ ghostscript-9.08rc1/Resource/Init/gs_init.ps 2013-08-12 18:05:02.065802147 +0100 @@ -680,6 +680,14 @@ systemdict /internaldict dup .makeintern { /undefinedfilename signalerror } ifelse } bind def +/runlibfileifexists + { % We don't want to bind 'run' into this procedure, + % since run may get redefined. + findlibfile + { exch pop /run .systemvar exec } + { pop } + ifelse + } bind def /selectdevice { finddevice setdevice .setdefaultscreen } bind def /signalerror % signalerror - @@ -848,6 +856,7 @@ userdict /.currentresourcefile //null pu } bind def % Temporarily substitute it for the real runlibfile. /.runlibfile /runlibfile load def +/.runlibfileifexists /runlibfileifexists load def /runlibfile /runlibfile0 load def % Create the error handling machinery.