%!PS-Adobe-2.0 statusdict /setduplexmode known { false statusdict /setduplexmode get exec } if /Ps 10 def /SPs 7 def /Lh 11 def /Rm 575 def /Tm 746 def /Bh 15 def /Bf 15 def /CF /Courier findfont Ps scalefont def /IF /Courier-Oblique findfont Ps scalefont def /BF /Courier-Bold findfont Ps scalefont def /CFs /Courier findfont SPs scalefont def /IFs /Courier-Oblique findfont SPs scalefont def /BFs /Courier-Bold findfont SPs scalefont def /HF /Helvetica findfont Ps scalefont def /Li CFs setfont (1234567890) stringwidth pop def /Nl { /Vpos Vpos Lh sub def } def /Lpt { 0 Vpos moveto } def /Gb { } def /Ip { Gb .5 setlinewidth 0 Tm moveto 0 Bh neg rlineto Rm 0 rlineto 0 Bh rlineto closepath gsave .98 setgray fill grestore stroke 0 0 moveto 0 Bf rlineto Rm 0 rlineto 0 Bf neg rlineto closepath gsave .98 setgray fill grestore stroke 0 Bf moveto 0 Tm Bh sub lineto stroke newpath } def /Cp { Ip .3 setlinewidth newpath Li 0 Bf add moveto Li Tm Bh sub lineto stroke newpath } def /So { gsave dup stringwidth pop Ps 3 div 0 exch rmoveto 0 rlineto fill grestore } def /Ul { gsave dup stringwidth pop 0 -1 rmoveto 0 rlineto fill grestore } def /Bs { gsave dup show grestore 0.5 0.5 rmoveto show } def <> setpagedevice %%Page: Cover 1 70 70 moveto /Helvetica findfont 10 scalefont setfont (Trueprint 3.6.5) show 70 725 moveto /Helvetica-Bold findfont 20 scalefont setfont (For: testuser) show 70 700 moveto (Printed on: Fri Apr 16 03:00:00 1982) show 70 675 moveto (Last page number: 3) show 70 650 moveto (File: test6.c) show showpage %%Page: 1 2 15 30 translate Ip HF setfont /Ypos Tm Bh sub Ps 2 div add def Ps Ypos moveto (Fri Apr 16 03:00:00 1982) show currentpoint pop dup Rm Ps sub (Page 1) stringwidth pop sub dup Ypos moveto (Page 1) show exch sub 2 div add (Function Index) stringwidth pop 2 div sub Ypos moveto (Function Index) show HF setfont /Ypos Ps 2 div def Ps Ypos moveto (Fri Apr 16 03:00:00 1982) show currentpoint pop dup Rm Ps sub (Page 1) stringwidth pop sub dup Ypos moveto (Page 1) show exch sub 2 div add (Function Index) stringwidth pop 2 div sub Ypos moveto (Function Index) show CF setfont /Vpos Tm Bh sub Ps sub def Lpt( closepipe 2 (test6.c) ) show Nl Lpt( fclosepipe..................3 (test6.c)) show Nl Lpt( fopenpipe 2 (test6.c) ) show Nl Lpt( openpipe....................1 (test6.c)) show Nl showpage %%Page: 2 3 15 30 translate Cp HF setfont /Ypos Tm Bh sub Ps 2 div add def Ps Ypos moveto (Fri Apr 16 03:00:00 1982) show currentpoint pop dup Rm Ps sub (Page 1 of 3) stringwidth pop sub dup Ypos moveto (Page 1 of 3) show exch sub 2 div add (openpipe) stringwidth pop 2 div sub Ypos moveto (openpipe) show HF setfont /Ypos Ps 2 div def Ps Ypos moveto (Fri Apr 16 03:00:00 1982) show currentpoint pop dup Rm Ps sub (Page 1 of 3) stringwidth pop sub dup Ypos moveto (Page 1 of 3) show exch sub 2 div add (test6.c 1) stringwidth pop 2 div sub Ypos moveto (test6.c 1) show /Vpos Tm Bh sub Ps sub def Lpt CFs setfont ( 1 ) show (/*) IF setfont show Nl Lpt CFs setfont ( 2 ) show ( * Source file:) IF setfont show Nl Lpt CFs setfont ( 3 ) show ( * openpipe.c) IF setfont show Nl Lpt CFs setfont ( 4 ) show ( *) IF setfont show Nl Lpt CFs setfont ( 5 ) show ( * Contains openpipe - a replacement for the non-POSIX function popen.) IF setfont show Nl Lpt (- ) CFs setfont show ( * This returns an int rather than a FILE * to make it general purpose.) CF setfont So show Nl Lpt (- ) CFs setfont show ( * NOTE THAT THE VARIABLE cmd_name IS NOT DEFINED IN THIS FILE) CF setfont So show Nl Lpt BFs setfont (+ 6 ) show ( * This returns an int rather than a FILE * to make it general purpose -) IF setfont Bs Nl Lpt BFs setfont (+ 7 ) show ( * fdopen can be used outside to convert this to a FILE *) IF setfont Bs Nl Lpt CFs setfont ( 8 ) show ( */) IF setfont show Nl Lpt CFs setfont ( ) show () IF setfont show Nl Lpt CFs setfont ( 10 ) show (#define _POSIX_SOURCE) CF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt CFs setfont ( 12 ) show (#include ) CF setfont show Nl Lpt CFs setfont ( 13 ) show (#include ) CF setfont show Nl Lpt CFs setfont ( 14 ) show (#include ) CF setfont show Nl Lpt CFs setfont ( 15 ) show (#include ) CF setfont show Nl Lpt CFs setfont ( 16 ) show (#include ) CF setfont show Nl Lpt CFs setfont ( 17 ) show (#include ) CF setfont show Nl Lpt BFs setfont (+ ) show () BF setfont show Nl Lpt BFs setfont (+ 19 ) show (#ifdef _ultrix) BF setfont show Nl Lpt BFs setfont (+ 20 ) show (extern int close\(int fildes\);) BF setfont show Nl Lpt BFs setfont (+ 21 ) show (extern int dup\(int fildes\);) BF setfont show Nl Lpt BFs setfont (+ 22 ) show (extern pid_t fork\(void\);) BF setfont show Nl Lpt BFs setfont (+ 23 ) show (extern int pipe\(int fildes[2]\);) BF setfont show Nl Lpt BFs setfont (+ 24 ) show (#else) BF setfont show Nl Lpt CFs setfont ( 25 ) show (#include ) CF setfont show Nl Lpt BFs setfont (+ 26 ) show (#endif) BF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt (- ) CFs setfont show (/****************************************************************************) CF setfont So show Nl Lpt (- ) CFs setfont show ( * Function:) CF setfont So show Nl Lpt (- ) CFs setfont show ( * openpipe) CF setfont So show Nl Lpt (- ) CFs setfont show ( *) CF setfont So show Nl Lpt (- ) CFs setfont show ( * Opens a pipe to or from a command. This is _not_ a direct replacement for) CF setfont So show Nl Lpt (- ) CFs setfont show ( * popen because:) CF setfont So show Nl Lpt (- ) CFs setfont show ( * - in the case of failure it prints an error message and calls exit,) CF setfont So show Nl Lpt (- ) CFs setfont show ( * instead of just returning NULL;) CF setfont So show Nl Lpt (- ) CFs setfont show ( * - it returns an int instead of a FILE *;) CF setfont So show Nl Lpt (- ) CFs setfont show ( * - it is called openpipe instead of popen) CF setfont So show Nl Lpt (- ) CFs setfont show ( */) CF setfont So show Nl Lpt BFs setfont (+ 28 ) show (#include "trueprint.h") BF setfont show Nl Lpt BFs setfont (+ 29 ) show (#include "main.h") BF setfont show Nl Lpt BFs setfont (+ 30 ) show (#include "openpipe.h") BF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt CFs setfont ( 32 ) show (int) CF setfont show Nl Lpt CFs setfont ( 33 ) show (openpipe) BF setfont show (\(const char *command, char *mode\)) CF setfont show Nl Lpt CFs setfont ( ) show () BF setfont show Nl Lpt CFs setfont ( 35 1 ) show ({) CF setfont show Nl Lpt CFs setfont ( 36 1 ) show ( int fildes[2];) CF setfont show Nl Lpt CFs setfont ( 37 1 ) show ( int parent_pipe_end;) CF setfont show Nl Lpt CFs setfont ( 38 1 ) show ( int child_pipe_end;) CF setfont show Nl Lpt CFs setfont ( 39 1 ) show ( char *child_pipe_mode;) CF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt CFs setfont ( 41 2 ) show ( if \(strcmp\(mode, "w"\) == 0\) {) CF setfont show Nl Lpt CFs setfont ( 42 2 ) show ( parent_pipe_end = 1; child_pipe_end = 0;) CF setfont show Nl Lpt CFs setfont ( 43 2 ) show ( child_pipe_mode = "read";) CF setfont show Nl Lpt CFs setfont ( 44 2 ) show ( } else if \(strcmp\(mode, "r"\) == 0\) {) CF setfont show Nl Lpt CFs setfont ( 45 2 ) show ( parent_pipe_end = 0; child_pipe_end = 1;) CF setfont show Nl Lpt CFs setfont ( 46 2 ) show ( child_pipe_mode = "write";) CF setfont show Nl Lpt CFs setfont ( 47 2 ) show ( } else {) CF setfont show Nl Lpt CFs setfont ( 48 2 ) show ( \(void\)fprintf\(stderr, "%s: Internal error: popen\() CF setfont show Nl Lpt CFs setfont ( ) show ( \) called with bad mode %s", cmd_name, mode\);) CF setfont show Nl Lpt CFs setfont ( 49 2 ) show ( exit\(2\);) CF setfont show Nl Lpt CFs setfont ( 50 1 ) show ( }) CF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl showpage %%Page: 3 4 15 30 translate Cp HF setfont /Ypos Tm Bh sub Ps 2 div add def Ps Ypos moveto (Fri Apr 16 03:00:00 1982) show currentpoint pop dup Rm Ps sub (Page 2 of 3) stringwidth pop sub dup Ypos moveto (Page 2 of 3) show exch sub 2 div add (openpipe) stringwidth pop 2 div sub Ypos moveto (openpipe) show HF setfont /Ypos Ps 2 div def Ps Ypos moveto (Fri Apr 16 03:00:00 1982) show currentpoint pop dup Rm Ps sub (Page 2 of 3) stringwidth pop sub dup Ypos moveto (Page 2 of 3) show exch sub 2 div add (test6.c 2) stringwidth pop 2 div sub Ypos moveto (test6.c 2) show /Vpos Tm Bh sub Ps sub def Lpt CFs setfont ( 52 2 ) show ( if \(pipe\(fildes\) != 0\) {) CF setfont show Nl Lpt CFs setfont ( 53 2 ) show ( \(void\)fprintf\(stderr, "%s: Cannot create pipe, %s\\n", cmd_name, strerror\(errno\)\);) CF setfont show Nl Lpt CFs setfont ( 54 2 ) show ( exit\(2\);) CF setfont show Nl Lpt CFs setfont ( 55 1 ) show ( }) CF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt CFs setfont ( 57 2 ) show ( switch \(fork\(\)\) {) CF setfont show Nl Lpt CFs setfont ( 58 2 ) show ( case -1:) CF setfont show Nl Lpt CFs setfont ( 59 2 ) show ( ) CF setfont show (/* Error */) IF setfont show Nl Lpt CFs setfont ( 60 2 ) show ( \(void\)fprintf\(stderr, "%s: Cannot fork, %s\\n", cmd_name, strerror\(errno\)\);) CF setfont show Nl Lpt CFs setfont ( 61 2 ) show ( exit\(2\);) CF setfont show Nl Lpt CFs setfont ( 62 2 ) show ( ) CF setfont show (/*NOTREACHED*/) IF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt CFs setfont ( 64 2 ) show ( case 0:) CF setfont show Nl Lpt CFs setfont ( 65 2 ) show ( ) CF setfont show (/* Child process */) IF setfont show Nl Lpt CFs setfont ( 66 2 ) show ( if \(!\(\(close\(fildes[parent_pipe_end]\) == 0\) &&) CF setfont show Nl Lpt CFs setfont ( 67 2 ) show ( \(close\(child_pipe_end\) == 0\) &&) CF setfont show Nl Lpt CFs setfont ( 68 3 ) show ( \(dup\(fildes[child_pipe_end]\) == child_pipe_end\)\)\) {) CF setfont show Nl Lpt CFs setfont ( 69 3 ) show ( \(void\)fprintf\() CF setfont show Nl Lpt CFs setfont ( ) show ( stderr,"%s: Cannot redirect %s for child, %s\\n", cmd_name, child_pipe_mode, strerror\() CF setfont show Nl Lpt CFs setfont ( ) show ( errno\)\);) CF setfont show Nl Lpt CFs setfont ( 70 3 ) show ( exit\(2\);) CF setfont show Nl Lpt CFs setfont ( 71 2 ) show ( }) CF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt CFs setfont ( 73 3 ) show ( if \(system\(command\) < 0\) {) CF setfont show Nl Lpt CFs setfont ( 74 3 ) show ( \(void\)fprintf\(stderr,"%s: Cannot start pipe, %s\\n",cmd_name, strerror\(errno\)\);) CF setfont show Nl Lpt CFs setfont ( 75 3 ) show ( exit\(2\);) CF setfont show Nl Lpt CFs setfont ( 76 2 ) show ( } else exit\(0\);) CF setfont show Nl Lpt CFs setfont ( 77 2 ) show ( ) CF setfont show (/*NOTREACHED*/) IF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt CFs setfont ( 79 2 ) show ( default:) CF setfont show Nl Lpt CFs setfont ( 80 2 ) show ( ) CF setfont show (/* Parent process */) IF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt CFs setfont ( 82 3 ) show ( if \(close\(fildes[child_pipe_end]\) != 0\) {) CF setfont show Nl Lpt CFs setfont ( 83 3 ) show ( \(void\)fprintf\() CF setfont show Nl Lpt CFs setfont ( ) show ( stderr,"%s: Cannot close %s end of pipe for parent, %s\\n",cmd_name, child_pipe_mode,) CF setfont show Nl Lpt CFs setfont ( ) show ( strerror\(errno\)\);) CF setfont show Nl Lpt CFs setfont ( 84 3 ) show ( exit\(2\);) CF setfont show Nl Lpt CFs setfont ( 85 2 ) show ( }) CF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt CFs setfont ( 87 2 ) show ( return fildes[parent_pipe_end];) CF setfont show Nl Lpt CFs setfont ( 88 1 ) show ( }) CF setfont show Nl Lpt CFs setfont ( 89 ) show (}) CF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt CFs setfont ( 91 ) show (FILE *) CF setfont show Nl Lpt CFs setfont ( 92 ) show (fopenpipe) BF setfont show (\(const char *command, char *mode\)) CF setfont show Nl Lpt CFs setfont ( ) show () BF setfont show Nl Lpt CFs setfont ( 94 1 ) show ({) CF setfont show Nl Lpt CFs setfont ( 95 1 ) show ( int handle;) CF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt CFs setfont ( 97 1 ) show ( handle = openpipe\(command, mode\);) CF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt CFs setfont ( 99 1 ) show ( return fdopen\(handle, mode\);) CF setfont show Nl Lpt CFs setfont ( 100 ) show (}) CF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt CFs setfont ( 102 ) show (void) CF setfont show Nl Lpt CFs setfont ( 103 ) show (closepipe) BF setfont show (\(int handle\)) CF setfont show Nl Lpt CFs setfont ( ) show () BF setfont show Nl Lpt CFs setfont ( 105 1 ) show ({) CF setfont show Nl Lpt CFs setfont ( 106 1 ) show ( int statloc;) CF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt CFs setfont ( 108 1 ) show ( \(void\)close\(handle\);) CF setfont show Nl Lpt CFs setfont ( 109 1 ) show ( \(void\)waitpid\(-1, &statloc, WNOHANG\);) CF setfont show Nl Lpt CFs setfont ( 110 ) show (}) CF setfont show Nl Lpt CFs setfont ( ) show () CF setfont show Nl Lpt CFs setfont ( 112 ) show (void) CF setfont show Nl showpage %%Page: 4 5 15 30 translate Cp HF setfont /Ypos Tm Bh sub Ps 2 div add def Ps Ypos moveto (Fri Apr 16 03:00:00 1982) show currentpoint pop dup Rm Ps sub (Page 3 of 3) stringwidth pop sub dup Ypos moveto (Page 3 of 3) show exch sub 2 div add (fclosepipe) stringwidth pop 2 div sub Ypos moveto (fclosepipe) show HF setfont /Ypos Ps 2 div def Ps Ypos moveto (Fri Apr 16 03:00:00 1982) show currentpoint pop dup Rm Ps sub (Page 3 of 3) stringwidth pop sub dup Ypos moveto (Page 3 of 3) show exch sub 2 div add (test6.c 3) stringwidth pop 2 div sub Ypos moveto (test6.c 3) show /Vpos Tm Bh sub Ps sub def Lpt CFs setfont ( 113 ) show (fclosepipe) BF setfont show (\(FILE *fp\)) CF setfont show Nl Lpt CFs setfont ( ) show () BF setfont show Nl Lpt CFs setfont ( 115 1 ) show ({) CF setfont show Nl Lpt CFs setfont ( 116 1 ) show ( closepipe\(fileno\(fp\)\);) CF setfont show Nl Lpt CFs setfont ( 117 ) show (}) CF setfont show Nl showpage %%Trailer %%EOF