diff options
author | Jung-uk Kim <jkim@FreeBSD.org> | 2014-05-21 20:03:14 +0000 |
---|---|---|
committer | Jung-uk Kim <jkim@FreeBSD.org> | 2014-05-21 20:03:14 +0000 |
commit | d7cffff692b26af273273d1e79bf6b55e5fc8557 (patch) | |
tree | 6918b0f84f2b152b5437dbb945daef1ebdb514b1 /java/openjdk7/files/patch-src-share-classes-sun-print-PSPrinterJob.java | |
parent | Add staging support (diff) |
- Fix printing services. When CUPS is used, ${LOCALBASE}/bin/lpr must be
used to print a generated PostScript file. When lpd(8) is used, lpr(1) from
base must be used. Also, status command for lpc(8) requires a printer name.
If no argument is specified, i.e., "/usr/sbin/lpc status", then it displays
the command usage, i.e., "usage: status {all | printer ...}".
Unfortunately, "usage" is interpreted as a printer name because ":" is
included. Add "all" and adjust an expression for grep(1). [1]
- Use /proc/curproc/file to find its executable path if available. It fixes
java/icedtea-web, for example. [2]
PR: ports/178856 [1]
PR: java/189905 [2]
Notes
Notes:
svn path=/head/; revision=354761
Diffstat (limited to 'java/openjdk7/files/patch-src-share-classes-sun-print-PSPrinterJob.java')
-rw-r--r-- | java/openjdk7/files/patch-src-share-classes-sun-print-PSPrinterJob.java | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/java/openjdk7/files/patch-src-share-classes-sun-print-PSPrinterJob.java b/java/openjdk7/files/patch-src-share-classes-sun-print-PSPrinterJob.java new file mode 100644 index 000000000000..c4993514bdd4 --- /dev/null +++ b/java/openjdk7/files/patch-src-share-classes-sun-print-PSPrinterJob.java @@ -0,0 +1,36 @@ +--- jdk/src/share/classes/sun/print/PSPrinterJob.java ++++ jdk/src/share/classes/sun/print/PSPrinterJob.java +@@ -1568,9 +1568,31 @@ + } + + String osname = System.getProperty("os.name"); +- if (osname.equals("Linux") || osname.equals("FreeBSD") || osname.equals("NetBSD") || osname.equals("OpenBSD") || osname.equals("OS X")) { ++ 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; + } |