Add a patch from Josh Zenker for bash highlight
[enscript.git] / scripts / sliceprint.in
1 #!@PERLPROG@
2 # -*- perl -*-
3 #
4 # Print documents with long lines.
5 # Copyright (c) 1996-1999 Markku Rossi
6 #
7 # Author: Markku Rossi <mtr@iki.fi>
8 #
9
10 #
11 # This file is part of GNU Enscript.
12 #
13 # Enscript is free software: you can redistribute it and/or modify
14 # it under the terms of the GNU General Public License as published by
15 # the Free Software Foundation, either version 3 of the License, or
16 # (at your option) any later version.
17 #
18 # Enscript is distributed in the hope that it will be useful,
19 # but WITHOUT ANY WARRANTY; without even the implied warranty of
20 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21 # GNU General Public License for more details.
22 #
23 # You should have received a copy of the GNU General Public License
24 # along with Enscript.  If not, see <http://www.gnu.org/licenses/>.
25 #
26
27 $enscript = "enscript";
28 $ENV{LC_ALL} = "C"; # we parse enscript's output
29
30 $program = $0;
31 $program =~ s/.*\///g;
32
33 sub usage {
34     warn "Usage: $program [-oFILE] [ENSCRIPT_OPTION]... [FILE]...\n";
35 }
36
37 # Handle arguments.
38 $args = "--extended-return-values";
39 $files = "";
40 while ($arg = shift(@ARGV)) {
41     if ($arg eq "--help") {
42         &usage;
43         exit 0;
44     } elsif ($arg eq "--version") {
45         warn "sliceprint 1.0\n";
46         exit 0;
47     } elsif ($arg =~ /^-p(.+)$/
48         || $arg =~ /^-o(.+)$/
49         || $arg =~ /^--output=(.+)$/) {
50         $output_file = $1;
51     } elsif ($arg eq "-p" || $arg eq "-o") {
52         $output_file = shift(@ARGV);
53     } elsif ($arg =~ /^-/) {
54         $args .= " $arg";
55     } else {
56         $files .= " $arg";
57     }
58 }
59
60 # Check if output file is "-".
61 if (defined($output_file) && $output_file eq "-") {
62     die "$program: output file can't be stdout\n";
63 }
64
65 $slice = 0;
66 while (1) {
67     $slice++;
68     if (defined($output_file)) {
69         $cmd = "$enscript " . $args . " --slice=$slice -p"
70             . $output_file . "." . $slice . " " . $files;
71     } else {
72         $cmd = "$enscript " . $args . " --slice=$slice" . $files;
73     }
74     print "printing slice $slice...\n";
75     $result = `$cmd 2>&1`;
76     print $result;
77     if ($result !~ ".*line.* were wrapped.*") {
78         last;
79     }
80 }