summaryrefslogtreecommitdiff
path: root/lib/cat.ps
blob: fd3698da8386efff99b299d5ddaa72a79af65b79 (plain)
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
% Copyright (C) 2001-2023 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
% implied.
%
% This software is distributed under license and may not be copied,
% modified or distributed except as expressly authorized under the terms
% of the license contained in the file LICENSE in this distribution.
%
% Refer to licensing information at http://www.artifex.com or contact
% Artifex Software, Inc.,  39 Mesa Street, Suite 108A, San Francisco,
% CA 94129, USA, for further information.
%
%
% $Id: cat.ps 8331 2008-02-05 11:07:00Z kens $
%
% Appends one file to another. Primarily used to overcome the
% 'copy' limitation of Windows command shell for ps2epsi
%
% the files to be appended are given by the environament
% variables %infile% and %outfile%. %infile% is appended to
% %outfile%
%

/datastring 1024 string def

{
        (outfile) getenv
        {
                /outfilename exch def
                (infile) getenv
                {
                        /infilename exch def

                        infilename status
                        {
                                pop pop pop pop outfilename status
                                {
                                        pop pop pop pop
                                        infilename (r) file /infile exch def
                                        outfilename (a+) file /outfile exch def
                                        {
                                                infile datastring readstring
                                                {
                                                        outfile exch writestring
                                                }
                                                {
                                                        dup length 0 gt
                                                        {outfile exch writestring} {pop} ifelse
                                                        exit
                                                } ifelse
                                        } loop
                                        infile closefile
                                        outfile closefile
                                }
                                {
                                        (Failed to find file ) print outfilename ==
                                } ifelse
                        }
                        {
                                (Failed to find file ) print infilename ==
                        } ifelse
                }
                {
                        (Couldn't find %infile% environment variable) ==
                } ifelse
        }
        {
                (Couldn't find %outfile% environment variable) ==
        }
        ifelse
} bind
exec