diff options
Diffstat (limited to '')
-rw-r--r-- | java/openjdk8/files/patch-jdk-src-share-classes-sun-print-PSPrinterJob.java | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/java/openjdk8/files/patch-jdk-src-share-classes-sun-print-PSPrinterJob.java b/java/openjdk8/files/patch-jdk-src-share-classes-sun-print-PSPrinterJob.java new file mode 100644 index 000000000000..b32b1579c72b --- /dev/null +++ b/java/openjdk8/files/patch-jdk-src-share-classes-sun-print-PSPrinterJob.java @@ -0,0 +1,34 @@ +--- jdk/src/share/classes/sun/print/PSPrinterJob.java ++++ jdk/src/share/classes/sun/print/PSPrinterJob.java +@@ -1588,8 +1588,30 @@ + + String osname = System.getProperty("os.name"); + if (osname.equals("Linux") || osname.endsWith("BSD") || osname.contains("OS X")) { ++ String lprPath = "/usr/bin/lpr"; ++ if (osname.endsWith("BSD")) { ++ final PrintService pservice = getPrintService(); ++ Boolean isIPPPrinter = ++ (Boolean)java.security.AccessController.doPrivileged( ++ new java.security.PrivilegedAction() { ++ public Object run() { ++ try { ++ Class psClass = ++ Class.forName("sun.print.IPPPrintService"); ++ if (psClass.isInstance(pservice)) { ++ return Boolean.TRUE; ++ } ++ } catch (Throwable t) { ++ } ++ return Boolean.FALSE; ++ } ++ }); ++ if (isIPPPrinter) { ++ lprPath = "%%LOCALBASE%%/bin/lpr"; ++ } ++ } + execCmd = new String[ncomps]; +- execCmd[n++] = "/usr/bin/lpr"; ++ execCmd[n++] = lprPath; + if ((pFlags & PRINTER) != 0) { + execCmd[n++] = "-P" + printer; + } |