summaryrefslogtreecommitdiff
path: root/java/openjdk8/files/patch-jdk-src-share-classes-sun-print-PSPrinterJob.java
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--java/openjdk8/files/patch-jdk-src-share-classes-sun-print-PSPrinterJob.java34
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;
+ }