summaryrefslogtreecommitdiff
path: root/print/html2ps/files/patch-html2ps
blob: c1d7f38df05075a230652e9955e32415e9b86858 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
--- html2ps.orig	2010-05-07 11:22:12 UTC
+++ html2ps
@@ -26,9 +26,12 @@ eval 'exec perl -S $0 "$@"'
 # Set the name of the global configuration file. See the installation notes
 # and manual page for more details on configuration files.
 
-$globrc='/it/sw/share/www/lib/html2ps/html2psrc';
-$ug='/it/sw/share/www/lib/html2ps/html2ps.html';
+use File::Temp qw/tempfile/;
 
+$LIBPAPER=1;
+$globrc='%%PREFIX%%/etc/html2psrc';
+$ug='%%DATADIR%%/html2ps.html';
+
 $conf=<<'EOR';
 @html2ps {
   package {
@@ -46,7 +49,7 @@ $conf=<<'EOR';
     path: "";
   }
   paper {
-    type: A4;
+    type: libpaper;
     height: "";
     width: "";
   }
@@ -495,7 +498,7 @@ die "Ghostscript is required to generate DSC PostScrip
  if($opt_D && !$package{'Ghostscript'});
 die "Ghostscript is required to generate cross references\n"
  if($opt_R && !$package{'Ghostscript'});
-$tmpname=$posix?POSIX::tmpnam():"h2p_$$";
+$tmpname = tempfile();
 ($scr=$tmpname)=~/\w+$/;
 $tempdir=$`;
 
@@ -613,6 +616,23 @@ for (0..10) {
   $height{"b$_"}=int($temp*2**(1/2)*1000+.5)/10;
 }
 if(!$pagew || !$pageh) {
+  if ($LIBPAPER) {
+    my $env_com;
+    if ("\L$paper{'type'}" ne 'libpaper') {
+      $env_com = "/usr/bin/env PAPERSIZE=\"$paper{'type'}\"";
+    }
+    my $_w = `$env_com /usr/local/bin/paperconf -wc`;
+    my $_h = `$env_com /usr/local/bin/paperconf -hc`;
+    my $_n = `$env_com /usr/local/bin/paperconf -n`;
+    if ($_w ne '' and $_h ne '') {
+      $paper{'width'} = $_w;
+      $paper{'height'} = $_h;
+      $paper{'type'} = $_n;
+      ($pagew,$pageh)=($paper{'width'},$paper{'height'});
+    } else {
+      &dbg("Unknown paper type: $paper{'type'}\n");
+    }
+  } else { # !LIBPAPER
   if($width{"\L$paper{'type'}"}) {
     $paper{'width'}=$width{"\L$paper{'type'}"} if(!defined $paper{'width'});
     $paper{'height'}=$height{"\L$paper{'type'}"} if(!defined $paper{'height'});
@@ -620,6 +640,7 @@ if(!$pagew || !$pageh) {
   } elsif($paper{'type'}) {
     &dbg("Unknown paper type: $paper{'type'}\n");
   }
+  } # LIBPAPER
 }
 if($opt_L) {
   $wl=$pageh-$mll-$mrl;
@@ -3405,7 +3426,6 @@ sub Getopts {
   local($optlist)=@_;
   local(@args,$_,$opt,$opts,$rest,$olist,$plist,$found,@popts);
   local($errs)=0;
-  local($[)=0;
   @args=split( /\|/, $optlist );
   for $opt (@args) {
     if(substr($opt,-1,1) ne ':') {$olist.=$opt}