%!PS-Adobe-2.0 %%Version: 0.1 %%DocumentFonts: (atend) %%Pages: (atend) %%EndComments % % Version 3.3.2 prologue for troff files. % /#copies 1 store /aspectratio 1 def /formsperpage 1 def /landscape false def /linewidth .3 def /magnification 1 def /margin 0 def /orientation 0 def /resolution 720 def /rotation 1 def /xoffset 0 def /yoffset 0 def /roundpage true def /useclippath true def /pagebbox [0 0 612 792] def /R /Times-Roman def /I /Times-Italic def /B /Times-Bold def /BI /Times-BoldItalic def /H /Helvetica def /HI /Helvetica-Oblique def /HB /Helvetica-Bold def /HX /Helvetica-BoldOblique def /CW /Courier def /CO /Courier def /CI /Courier-Oblique def /CB /Courier-Bold def /CX /Courier-BoldOblique def /PA /Palatino-Roman def /PI /Palatino-Italic def /PB /Palatino-Bold def /PX /Palatino-BoldItalic def /Hr /Helvetica-Narrow def /Hi /Helvetica-Narrow-Oblique def /Hb /Helvetica-Narrow-Bold def /Hx /Helvetica-Narrow-BoldOblique def /KR /Bookman-Light def /KI /Bookman-LightItalic def /KB /Bookman-Demi def /KX /Bookman-DemiItalic def /AR /AvantGarde-Book def /AI /AvantGarde-BookOblique def /AB /AvantGarde-Demi def /AX /AvantGarde-DemiOblique def /NR /NewCenturySchlbk-Roman def /NI /NewCenturySchlbk-Italic def /NB /NewCenturySchlbk-Bold def /NX /NewCenturySchlbk-BoldItalic def /ZD /ZapfDingbats def /ZI /ZapfChancery-MediumItalic def /S /S def /S1 /S1 def /GR /Symbol def /inch {72 mul} bind def /min {2 copy gt {exch} if pop} bind def /setup { counttomark 2 idiv {def} repeat pop landscape {/orientation 90 orientation add def} if /scaling 72 resolution div def linewidth setlinewidth 1 setlinecap pagedimensions xcenter ycenter translate orientation rotation mul rotate width 2 div neg height 2 div translate xoffset inch yoffset inch neg translate margin 2 div dup neg translate magnification dup aspectratio mul scale scaling scaling scale addmetrics 0 0 moveto } def /pagedimensions { useclippath userdict /gotpagebbox known not and { /pagebbox [clippath pathbbox newpath] def roundpage currentdict /roundpagebbox known and {roundpagebbox} if } if pagebbox aload pop 4 -1 roll exch 4 1 roll 4 copy landscape {4 2 roll} if sub /width exch def sub /height exch def add 2 div /xcenter exch def add 2 div /ycenter exch def userdict /gotpagebbox true put } def /addmetrics { /Symbol /S null Sdefs cf /Times-Roman /S1 StandardEncoding dup length array copy S1defs cf } def /pagesetup { /page exch def currentdict /pagedict known currentdict page known and { page load pagedict exch get cvx exec } if } def /decodingdefs [ {counttomark 2 idiv {y moveto show} repeat} {neg /y exch def counttomark 2 idiv {y moveto show} repeat} {neg moveto {2 index stringwidth pop sub exch div 0 32 4 -1 roll widthshow} repeat} {neg moveto {spacewidth sub 0.0 32 4 -1 roll widthshow} repeat} {counttomark 2 idiv {y moveto show} repeat} {neg setfunnytext} ] def /setdecoding {/t decodingdefs 3 -1 roll get bind def} bind def /w {neg moveto show} bind def /m {neg dup /y exch def moveto} bind def /done {/lastpage where {pop lastpage} if} def /f { dup /font exch def findfont exch dup /ptsize exch def scaling div dup /size exch def scalefont setfont linewidth ptsize mul scaling 10 mul div setlinewidth /spacewidth ( ) stringwidth pop def } bind def /changefont { /fontheight exch def /fontslant exch def currentfont [ 1 0 fontheight ptsize div fontslant sin mul fontslant cos div fontheight ptsize div 0 0 ] makefont setfont } bind def /sf {f} bind def /cf { dup length 2 idiv /entries exch def /chtab exch def /newencoding exch def /newfont exch def findfont dup length 1 add dict /newdict exch def {1 index /FID ne {newdict 3 1 roll put}{pop pop} ifelse} forall newencoding type /arraytype eq {newdict /Encoding newencoding put} if newdict /Metrics entries dict put newdict /Metrics get begin chtab aload pop 1 1 entries {pop def} for newfont newdict definefont pop end } bind def % % A few arrays used to adjust reference points and character widths in some % of the printer resident fonts. If square roots are too high try changing % the lines describing /radical and /radicalex to, % % /radical [0 -75 550 0] % /radicalex [-50 -75 500 0] % % Move braceleftbt a bit - default PostScript character is off a bit. % /Sdefs [ /bracketlefttp [201 500] /bracketleftbt [201 500] /bracketrighttp [-81 380] /bracketrightbt [-83 380] /braceleftbt [203 490] /bracketrightex [220 -125 500 0] /radical [0 0 550 0] /radicalex [-50 0 500 0] /parenleftex [-20 -170 0 0] /integral [100 -50 500 0] /infinity [10 -75 730 0] ] def /S1defs [ /underscore [0 80 500 0] /endash [7 90 650 0] ] def % % Tries to round clipping path dimensions, as stored in array pagebbox, so they % match one of the known sizes in the papersizes array. Lower left coordinates % are always set to 0. % /roundpagebbox { 7 dict begin /papersizes [8.5 inch 11 inch 14 inch 17 inch] def /mappapersize { /val exch def /slop .5 inch def /diff slop def /j 0 def 0 1 papersizes length 1 sub { /i exch def papersizes i get val sub abs dup diff le {/diff exch def /j i def} {pop} ifelse } for diff slop lt {papersizes j get} {val} ifelse } def pagebbox 0 0 put pagebbox 1 0 put pagebbox dup 2 get mappapersize 2 exch put pagebbox dup 3 get mappapersize 3 exch put end } bind def %%EndProlog %%BeginSetup mark % % Encoding vector and redefinition of findfont for the ISO Latin1 standard. % The 18 characters missing from ROM based fonts on older printers are noted % below. % /ISOLatin1Encoding [ /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space /exclam /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma /minus /period /slash /zero /one /two /three /four /five /six /seven /eight /nine /colon /semicolon /less /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright /asciitilde /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron /space /exclamdown /cent /sterling /currency /yen /brokenbar % missing /section /dieresis /copyright /ordfeminine /guillemotleft /logicalnot /hyphen /registered /macron /degree % missing /plusminus % missing /twosuperior % missing /threesuperior % missing /acute /mu % missing /paragraph /periodcentered /cedilla /onesuperior % missing /ordmasculine /guillemotright /onequarter % missing /onehalf % missing /threequarters % missing /questiondown /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla /Egrave /Eacute /Ecircumflex /Edieresis /Igrave /Iacute /Icircumflex /Idieresis /Eth % missing /Ntilde /Ograve /Oacute /Ocircumflex /Otilde /Odieresis /multiply % missing /Oslash /Ugrave /Uacute /Ucircumflex /Udieresis /Yacute % missing /Thorn % missing /germandbls /agrave /aacute /acircumflex /atilde /adieresis /aring /ae /ccedilla /egrave /eacute /ecircumflex /edieresis /igrave /iacute /icircumflex /idieresis /eth % missing /ntilde /ograve /oacute /ocircumflex /otilde /odieresis /divide % missing /oslash /ugrave /uacute /ucircumflex /udieresis /yacute % missing /thorn % missing /ydieresis ] def /NewFontDirectory FontDirectory maxlength dict def % % Apparently no guarantee findfont is defined in systemdict so the obvious % % systemdict /findfont get exec % % can generate an error. So far the only exception is a VT600 (version 48.0). % userdict /@RealFindfont known not { userdict begin /@RealFindfont systemdict begin /findfont load end def end } if /findfont { dup NewFontDirectory exch known not { dup %dup systemdict /findfont get exec % not always in systemdict dup userdict /@RealFindfont get exec dup /Encoding get StandardEncoding eq { dup length dict begin {1 index /FID ne {def}{pop pop} ifelse} forall /Encoding ISOLatin1Encoding def currentdict end /DummyFontName exch definefont } if NewFontDirectory 3 1 roll put } if NewFontDirectory exch get } bind def setup %%EndSetup %%Page: 1 1 /saveobj save def mark 1 pagesetup 12 /Times-Bold f (Netpbm) 1531 1230 w (subroutine) 1974 1230 w (library:) 2559 1230 w (pm) 2990 1230 w 12 /S f (_) 3157 1230 w 12 /Times-Bold f (system\(\)) 3217 1230 w (subroutine) 3674 1230 w 10 /Times-Bold f (pm) 720 1920 w 10 /S f (_) 859 1920 w 10 /Times-Bold f (system\(\)) 909 1920 w 10 /Times-Roman f (Updated: 26 August 2006) 720 2076 w 10 /Times-Bold f (Name) 720 2316 w 10 /Times-Roman f (pm) 720 2472 w 10 /S f (_) 848 2472 w 10 /Times-Roman f (system \255 run a Netpbm program with program input and output) 898 2472 w 10 /Times-Bold f (Synopsis) 720 2712 w 10 /Times-Roman f (#include ) 1651 2928 w (pm) 720 3048 w 10 /S f (_) 848 3048 w 10 /Times-Roman f (system\(void) 898 3048 w (stdinFeeder\(int, void *\),) 1837 3048 w (void *) 970 3168 w (const feederParm,) 1473 3168 w (void) 970 3288 w (stdoutAccepter\(int, void *\),) 1598 3288 w (void *) 970 3408 w (const accepterParm,) 1473 3408 w (const char *) 970 3528 w (const shellCommand\);) 1552 3528 w 10 /Times-Bold f (Example) 720 3828 w 10 /Times-Roman f (This simple example converts a PNM image on Standard Input to a JFIF \(JPEG\) image on Standard) 720 4020 w (Output.) 4737 4020 w (In this case,) 720 4140 w 10 /Times-Bold f (pm) 1219 4140 w 10 /S f (_) 1358 4140 w 10 /Times-Bold f (system\(\)) 1408 4140 w 10 /Times-Roman f (is doing no more than) 1787 4140 w 10 /Times-Bold f (system\(\)) 2684 4140 w 10 /Times-Roman f (would do.) 3063 4140 w (pm) 820 4320 w 10 /S f (_) 948 4320 w 10 /Times-Roman f (system\(NULL, NULL, NULL, NULL, "pnmtojpeg"\);) 998 4320 w (This) 720 4536 w (example) 926 4536 w (does) 1292 4536 w (the) 1503 4536 w (same) 1653 4536 w (thing,) 1886 4536 w (but) 2146 4536 w (moves) 2303 4536 w (the) 2593 4536 w (data) 2744 4536 w (through) 2939 4536 w (memory) 3279 4536 w (buffers) 3641 4536 w (to) 3952 4536 w (illustrate) 4059 4536 w (use) 4438 4536 w (with) 4600 4536 w (mem\255) 4807 4536 w (ory buffers, and we throw in a stage to shrink the image too:) 720 4656 w (#include ) 1651 4836 w (char) 720 4956 w (pnmData[100*1024];) 1241 4956 w (/* Input file better be < 100K */) 2176 4956 w (char) 720 5076 w (jfifData[100*1024];) 1241 5076 w (struct bufferDesc pnmBuffer;) 720 5196 w (struct bufferDesc jfifBuffer;) 720 5316 w (unsigned int) 720 5436 w (jfifSize;) 1362 5436 w (pnmBuffer.size = fread\(pnmData, 1, sizeof\(pnmData\), stdin\);) 720 5556 w (pnmBuffer.buffer = pnmData;) 720 5676 w (pnmBuffer.bytesTransferredP = NULL;) 720 5796 w (jfifBuffer.size = sizeof\(jfifData\);) 720 5916 w (jfifBuffer.buffer = jfifData;) 720 6036 w (jfifBuffer.bytesTransferredP = &jfifSize;) 720 6156 w (pm) 720 6276 w 10 /S f (_) 848 6276 w 10 /Times-Roman f (system\(&pm) 898 6276 w 10 /S f (_) 1415 6276 w 10 /Times-Roman f (feed) 1465 6276 w 10 /S f (_) 1636 6276 w 10 /Times-Roman f (from) 1686 6276 w 10 /S f (_) 1880 6276 w 10 /Times-Roman f (memory, &pnmBuffer,) 1930 6276 w (&pm) 970 6396 w 10 /S f (_) 1176 6396 w 10 /Times-Roman f (accept) 1226 6396 w 10 /S f (_) 1480 6396 w 10 /Times-Roman f (to) 1530 6396 w 10 /S f (_) 1608 6396 w 10 /Times-Roman f (memory, &jfifBuffer,) 1658 6396 w ("pamscale .5 ) 970 6516 w 10 /S f (\357) 1507 6516 w 10 /Times-Roman f (pnmtojpeg"\);) 1581 6516 w (fwrite\(jfifData, 1, jfifSize, stdout\);) 720 6636 w (This) 720 6852 w (example) 929 6852 w (reads) 1298 6852 w (an) 1539 6852 w (image) 1664 6852 w (into) 1939 6852 w (libnetpbm) 2126 6852 w (PAM) 2563 6852 w (structures,) 2811 6852 w (then) 3255 6852 w (brightens) 3458 6852 w (it,) 3861 6852 w (then) 3973 6852 w (writes) 4176 6852 w (it) 4451 6852 w (out,) 4539 6852 w (to) 4724 6852 w (illus\255) 4834 6852 w (trate use of) 720 6972 w 10 /Times-Bold f (pm) 1188 6972 w 10 /S f (_) 1327 6972 w 10 /Times-Bold f (system) 1377 6972 w 10 /Times-Roman f (with PAM structures.) 1690 6972 w cleartomark showpage saveobj restore %%EndPage: 1 1 %%Page: 2 2 /saveobj save def mark 2 pagesetup 10 /Times-Roman f (\255 2 \255) 2797 480 w (#include ) 720 900 w (#include ) 1651 1020 w (struct pam) 720 1140 w (inpam;) 1314 1140 w (struct pam) 720 1260 w (outpam;) 1314 1260 w (tuples **) 720 1380 w (inTuples;) 1284 1380 w (tuples **) 720 1500 w (outTuples;) 1284 1500 w (struct pamtuples inPamtuples;) 720 1620 w (struct pamtuples outPamtuples;) 720 1740 w (inTuples = pnm) 720 1860 w 10 /S f (_) 1354 1860 w 10 /Times-Roman f (readpam\(stdin, &inpam, sizeof\(inpam\)\);) 1404 1860 w (outpam = inpam;) 720 1980 w (inPamtuples.pamP = &inpam;) 720 2100 w (inPamtuples.tuplesP = &inTuples;) 720 2220 w (outPamtuples.pamP = &outpam;) 720 2340 w (outPamtuples.tuplesP = &outTuples;) 720 2460 w (pm) 720 2580 w 10 /S f (_) 848 2580 w 10 /Times-Roman f (system\(&pm) 898 2580 w 10 /S f (_) 1415 2580 w 10 /Times-Roman f (feed) 1465 2580 w 10 /S f (_) 1636 2580 w 10 /Times-Roman f (from) 1686 2580 w 10 /S f (_) 1880 2580 w 10 /Times-Roman f (pamtuples, &inPamtuples,) 1930 2580 w (&pm) 970 2700 w 10 /S f (_) 1176 2700 w 10 /Times-Roman f (accept) 1226 2700 w 10 /S f (_) 1480 2700 w 10 /Times-Roman f (to) 1530 2700 w 10 /S f (_) 1608 2700 w 10 /Times-Roman f (pamtuples, &outPamtuples,) 1658 2700 w ("ppmbrighten \255v 100"\);) 970 2820 w (outpam.file = stdout;) 720 2940 w (pnm) 720 3060 w 10 /S f (_) 898 3060 w 10 /Times-Roman f (writepam\(&outpam, outTuples\);) 948 3060 w 10 /Times-Bold f (DESCRIPTION) 720 3360 w 10 /Times-Roman f (This library function is part of Netpbm.) 720 3552 w 10 /Times-Bold f (pm) 720 3708 w 10 /S f (_) 859 3708 w 10 /Times-Bold f (system\(\)) 909 3708 w 10 /Times-Roman f (is) 1291 3708 w (a) 1386 3708 w (lot) 1458 3708 w (like) 1592 3708 w (the) 1770 3708 w (standard) 1920 3708 w (C) 2286 3708 w (library) 2381 3708 w 10 /Times-Bold f (system\(\)) 2675 3708 w 10 /Times-Roman f (subroutine.) 3057 3708 w (It) 3557 3708 w (runs) 3646 3708 w (a) 3846 3708 w (shell) 3919 3708 w (and) 4137 3708 w (has) 4310 3708 w (that) 4472 3708 w (shell) 4651 3708 w (exe\255) 4869 3708 w (cute) 720 3828 w (a) 917 3828 w (shell) 992 3828 w (command) 1212 3828 w (that) 1637 3828 w (you) 1818 3828 w (specify.) 1999 3828 w (But) 2368 3828 w 10 /Times-Bold f (pm) 2543 3828 w 10 /S f (_) 2682 3828 w 10 /Times-Bold f (system\(\)) 2732 3828 w 10 /Times-Roman f (gives) 3116 3828 w (you) 3357 3828 w (more) 3537 3828 w (control) 3772 3828 w (over) 4085 3828 w (the) 4292 3828 w (Standard) 4444 3828 w (Input) 4829 3828 w (and) 720 3948 w (Standard) 893 3948 w (Output) 1277 3948 w (of) 1584 3948 w (that) 1696 3948 w (shell) 1875 3948 w (command) 2093 3948 w (than) 2516 3948 w 10 /Times-Bold f (system\(\)) 2717 3948 w 10 /Times-Roman f (.) 3071 3948 w 10 /Times-Bold f (system\(\)) 3150 3948 w 10 /Times-Roman f (passes) 3533 3948 w (to) 3817 3948 w (the) 3924 3948 w (shell) 4075 3948 w (command) 4293 3948 w (as) 4716 3948 w (Stan\255) 4829 3948 w (dard) 720 4068 w (Input) 932 4068 w (and) 1178 4068 w (Output) 1357 4068 w (whatever) 1670 4068 w (is) 2069 4068 w (the) 2170 4068 w (Standard) 2326 4068 w (Input) 2715 4068 w (and) 2960 4068 w (Output) 3138 4068 w (of) 3450 4068 w (the) 3567 4068 w (process) 3723 4068 w (that) 4056 4068 w (calls) 4240 4068 w 10 /Times-Bold f (system\(\)) 4457 4068 w 10 /Times-Roman f (.) 4811 4068 w (But) 4895 4068 w (with) 720 4188 w 10 /Times-Bold f (pm) 925 4188 w 10 /S f (_) 1064 4188 w 10 /Times-Bold f (system\(\)) 1114 4188 w 10 /Times-Roman f (,) 1468 4188 w (you) 1521 4188 w (specify) 1699 4188 w (as) 2015 4188 w (arguments) 2126 4188 w (subroutines) 2570 4188 w (to) 3059 4188 w (execute) 3165 4188 w (to) 3497 4188 w (generate) 3603 4188 w (the) 3968 4188 w (shell) 4118 4188 w (command's) 4335 4188 w (Stan\255) 4829 4188 w (dard Input stream and to process the shell command's Standard Output stream.) 720 4308 w (Your) 720 4464 w (Standard) 957 4464 w (Input) 1344 4464 w (feeder) 1587 4464 w (subroutine) 1867 4464 w (can) 2321 4464 w (generate) 2491 4464 w (the) 2861 4464 w (stream) 3016 4464 w (in) 3315 4464 w (limitless) 3426 4464 w (ways.) 3799 4464 w 10 /Times-Bold f (pm) 4087 4464 w 10 /S f (_) 4226 4464 w 10 /Times-Bold f (system\(\)) 4276 4464 w 10 /Times-Roman f (gives) 4663 4464 w (it) 4907 4464 w (a) 4996 4464 w (file) 720 4584 w (descriptor) 884 4584 w (of) 1314 4584 w (a) 1428 4584 w (pipe) 1503 4584 w (to) 1706 4584 w (which) 1815 4584 w (to) 2090 4584 w (write) 2199 4584 w (the) 2434 4584 w (stream) 2586 4584 w (it) 2882 4584 w (generates.) 2968 4584 w 10 /Times-Bold f (pm) 3424 4584 w 10 /S f (_) 3563 4584 w 10 /Times-Bold f (system\(\)) 3613 4584 w 10 /Times-Roman f (hooks) 3997 4584 w (up) 4266 4584 w (the) 4396 4584 w (other) 4548 4584 w (end) 4783 4584 w (of) 4957 4584 w (that pipe to the shell command's Standard Input.) 720 4704 w (Likewise,) 720 4860 w (your) 1156 4860 w (Standard) 1384 4860 w (Output) 1784 4860 w (accepter) 2107 4860 w (subroutine) 2483 4860 w (can) 2950 4860 w (do) 3133 4860 w (anything) 3278 4860 w (it) 3673 4860 w (wants) 3774 4860 w (with) 4052 4860 w (the) 4275 4860 w (stream) 4442 4860 w (it) 4753 4860 w (gets.) 4854 4860 w 10 /Times-Bold f (pm) 720 4980 w 10 /S f (_) 859 4980 w 10 /Times-Bold f (system\(\)) 909 4980 w 10 /Times-Roman f (gives) 1292 4980 w (it) 1532 4980 w (a) 1616 4980 w (file) 1688 4980 w (descriptor) 1849 4980 w (of) 2276 4980 w (a) 2387 4980 w (pipe) 2459 4980 w (from) 2659 4980 w (which) 2881 4980 w (to) 3153 4980 w (read) 3259 4980 w (the) 3458 4980 w (stream.) 3608 4980 w 10 /Times-Bold f (pm) 3952 4980 w 10 /S f (_) 4091 4980 w 10 /Times-Bold f (system\(\)) 4141 4980 w 10 /Times-Roman f (hooks) 4523 4980 w (up) 4790 4980 w (the) 4918 4980 w (other end of that pipe to the shell command's Standard Output.) 720 5100 w (The) 720 5256 w (argument) 922 5256 w 10 /Times-Italic f (stdinFeeder) 1346 5256 w 10 /Times-Roman f (is) 1870 5256 w (a) 1984 5256 w (function) 2075 5256 w (pointer) 2455 5256 w (that) 2786 5256 w (identifies) 2984 5256 w (your) 3404 5256 w (Standard) 3635 5256 w (Input) 4038 5256 w (feeder) 4297 5256 w (subroutine.) 4593 5256 w 10 /Times-Bold f (pm) 720 5376 w 10 /S f (_) 859 5376 w 10 /Times-Bold f (system\(\)) 909 5376 w 10 /Times-Roman f (runs) 1295 5376 w (it) 1499 5376 w (in) 1587 5376 w (a) 1697 5376 w (child) 1773 5376 w (process) 2005 5376 w (and) 2336 5376 w (waits) 2512 5376 w (for) 2755 5376 w (that) 2903 5376 w (process) 3085 5376 w (to) 3415 5376 w (terminate) 3524 5376 w (\(and) 3932 5376 w (accepts) 4140 5376 w (its) 4464 5376 w (completion) 4590 5376 w (status\)) 720 5496 w (before) 1026 5496 w (returning.) 1325 5496 w 10 /Times-Italic f (feederParm) 1786 5496 w 10 /Times-Roman f (is) 2302 5496 w (the) 2414 5496 w (argument) 2581 5496 w (that) 3003 5496 w 10 /Times-Bold f (pm) 3198 5496 w 10 /S f (_) 3337 5496 w 10 /Times-Bold f (system\(\)) 3387 5496 w 10 /Times-Roman f (passes) 3786 5496 w (to) 4086 5496 w (the) 4209 5496 w (subroutine;) 4376 5496 w (it) 4871 5496 w (is) 4973 5496 w (opaque to) 720 5616 w 10 /Times-Bold f (pm) 1136 5616 w 10 /S f (_) 1275 5616 w 10 /Times-Bold f (system\(\)) 1325 5616 w 10 /Times-Roman f (.) 1679 5616 w (If) 720 5772 w (you) 822 5772 w (pass) 1008 5772 w 10 /Times-Italic f (stdinFeeder) 1216 5772 w 10 /Times-Roman f (=) 1729 5772 w (NULL,) 1821 5772 w 10 /Times-Bold f (pm) 2148 5772 w 10 /S f (_) 2287 5772 w 10 /Times-Bold f (system\(\)) 2337 5772 w 10 /Times-Roman f (simply) 2727 5772 w (passes) 3036 5772 w (your) 3327 5772 w (current) 3546 5772 w (Standard) 3864 5772 w (Input) 4255 5772 w (stream) 4502 5772 w (to) 4804 5772 w (the) 4918 5772 w (shell command \(as) 720 5892 w 10 /Times-Bold f (system\(\)) 1494 5892 w 10 /Times-Roman f (would do\), and does not create a child process.) 1873 5892 w (The) 720 6048 w (argument) 901 6048 w 10 /Times-Italic f (stdoutAccepter) 1304 6048 w 10 /Times-Roman f (is) 1929 6048 w (a) 2022 6048 w (function) 2092 6048 w (pointer) 2452 6048 w (that) 2762 6048 w (identifies) 2939 6048 w (your) 3338 6048 w (Standard) 3548 6048 w (Output) 3930 6048 w (accepter) 4235 6048 w (subroutine.) 4593 6048 w 10 /Times-Bold f (pm) 720 6168 w 10 /S f (_) 859 6168 w 10 /Times-Bold f (system\(\)) 909 6168 w 10 /Times-Roman f (calls it in the current process.) 1288 6168 w 10 /Times-Italic f (accepterParm) 2508 6168 w 10 /Times-Roman f (is an argument analogous to) 3098 6168 w 10 /Times-Italic f (feederParm) 4244 6168 w 10 /Times-Roman f (.) 4715 6168 w (If) 720 6324 w (you) 819 6324 w (pass) 1002 6324 w 10 /Times-Italic f (stdoutAccepter) 1207 6324 w 10 /Times-Roman f (=) 1840 6324 w (NULL,) 1930 6324 w 10 /Times-Bold f (pm) 2255 6324 w 10 /S f (_) 2394 6324 w 10 /Times-Bold f (system\(\)) 2444 6324 w 10 /Times-Roman f (simply) 2832 6324 w (passes) 3139 6324 w (your) 3428 6324 w (current) 3645 6324 w (Standard) 3961 6324 w (Output) 4350 6324 w (stream) 4662 6324 w (to) 4962 6324 w (the shell command \(as) 720 6444 w 10 /Times-Bold f (system\(\)) 1641 6444 w 10 /Times-Roman f (would do.) 2020 6444 w (The) 720 6600 w (argument) 908 6600 w 10 /Times-Italic f (shellCommand) 1318 6600 w 10 /Times-Roman f (is) 1951 6600 w (a) 2051 6600 w (null\255terminated) 2128 6600 w (string) 2777 6600 w (containing) 3038 6600 w (the) 3493 6600 w (shell) 3648 6600 w (command) 3870 6600 w (that) 4298 6600 w (the) 4482 6600 w (shell) 4638 6600 w (is) 4861 6600 w (to) 4962 6600 w (execute.) 720 6720 w (It) 1105 6720 w (can) 1197 6720 w (be) 1366 6720 w (any) 1491 6720 w (command) 1666 6720 w (that) 2091 6720 w (means) 2272 6720 w (something) 2558 6720 w (to) 3005 6720 w (the) 3113 6720 w (shell) 3265 6720 w (and) 3484 6720 w (can) 3658 6720 w (take) 3826 6720 w (a) 4022 6720 w (pipe) 4096 6720 w (for) 4298 6720 w (Standard) 4444 6720 w (Input) 4829 6720 w (and Output.) 720 6840 w (Example:) 1242 6840 w 10 /Courier f (ppmbrighten \255v 100 | pamdepth 255 | pamscale .5) 720 7020 w 10 /Times-Bold f (pm) 720 7200 w 10 /S f (_) 859 7200 w 10 /Times-Bold f (system\(\)) 909 7200 w 10 /Times-Roman f (creates) 1290 7200 w (a) 1593 7200 w (child) 1664 7200 w (process) 1891 7200 w (to) 2217 7200 w (run) 2322 7200 w (the) 2482 7200 w (shell) 2631 7200 w (and) 2848 7200 w (waits) 3020 7200 w (for) 3259 7200 w (that) 3403 7200 w (process) 3581 7200 w (to) 3908 7200 w (terminate) 4014 7200 w (\(and) 4419 7200 w (accepts) 4624 7200 w (its) 4945 7200 w cleartomark showpage saveobj restore %%EndPage: 2 2 %%Page: 3 3 /saveobj save def mark 3 pagesetup 10 /Times-Roman f (\255 3 \255) 2797 480 w (completion status\) before returning.) 720 840 w 10 /Times-Bold f (Applications) 720 1080 w 10 /Times-Roman f (The) 720 1272 w (point) 903 1272 w (of) 1137 1272 w 10 /Times-Bold f (pm) 1248 1272 w 10 /S f (_) 1387 1272 w 10 /Times-Bold f (system\(\)) 1437 1272 w 10 /Times-Roman f (is) 1819 1272 w (to) 1914 1272 w (allow) 2020 1272 w (you) 2270 1272 w (write) 2448 1272 w (a) 2681 1272 w (C) 2753 1272 w (program) 2848 1272 w (that) 3214 1272 w (uses) 3392 1272 w (other) 3592 1272 w (programs) 3825 1272 w (internally,) 4230 1272 w (as) 4666 1272 w (a) 4778 1272 w (shell) 4851 1272 w (script) 720 1392 w (would.) 968 1392 w (This) 1294 1392 w (is) 1498 1392 w (particularly) 1591 1392 w (desirable) 2077 1392 w (with) 2463 1392 w (Netpbm,) 2667 1392 w (because) 3040 1392 w (Netpbm) 3381 1392 w (consists) 3729 1392 w (of a lot of programs that) 4072 1392 w (perform) 720 1512 w (basic) 1067 1512 w (graphic) 1298 1512 w (manipulations) 1623 1512 w (and) 2216 1512 w (you'd) 2386 1512 w (like) 2645 1512 w (to) 2821 1512 w (be) 2925 1512 w (able) 3045 1512 w (to) 3237 1512 w (build) 3341 1512 w (a) 3573 1512 w (program) 3643 1512 w (that) 4007 1512 w (does) 4183 1512 w (a) 4392 1512 w (more) 4463 1512 w (sophisti\255) 4695 1512 w (cated) 720 1632 w (graphic) 966 1632 w (manipulation) 1301 1632 w (by) 1865 1632 w (calling) 2001 1632 w (the) 2308 1632 w (more) 2465 1632 w (basic) 2705 1632 w (Netpbm) 2945 1632 w (programs.) 3302 1632 w (These) 3764 1632 w (building) 4037 1632 w (block) 4406 1632 w (programs) 4663 1632 w (typically take input from Standard Input and write output to Standard Output.) 720 1752 w (The) 720 1908 w (obvious) 908 1908 w (alternative) 1258 1908 w (is) 1712 1908 w (to) 1812 1908 w (use) 1923 1908 w (a) 2090 1908 w (higher) 2168 1908 w (level) 2457 1908 w (language) 2685 1908 w (\255\255) 3079 1908 w (Bourne) 3179 1908 w (Shell) 3507 1908 w (or) 3747 1908 w (Perl,) 3864 1908 w (for) 4084 1908 w (example.) 4234 1908 w (But) 4656 1908 w (often) 4835 1908 w (you) 720 2028 w (want) 901 2028 w (your) 1126 2028 w (program) 1340 2028 w (to) 1709 2028 w (do) 1818 2028 w (manipulations) 1949 2028 w (of) 2547 2028 w (your) 2661 2028 w (graphical) 2875 2028 w (data) 3277 2028 w (that) 3474 2028 w (are) 3655 2028 w (easier) 3807 2028 w (and) 4069 2028 w (more) 4243 2028 w (efficient) 4478 2028 w (in) 4840 2028 w (C.) 4948 2028 w (Or) 720 2148 w (you) 852 2148 w (want) 1030 2148 w (to) 1252 2148 w (use) 1358 2148 w (the) 1519 2148 w (Netpbm) 1669 2148 w (subroutine) 2019 2148 w (library) 2469 2148 w (in) 2763 2148 w (your) 2869 2148 w (program.) 3080 2148 w (The) 3496 2148 w (Netpbm) 3679 2148 w (subroutine) 4029 2148 w (library) 4479 2148 w (is) 4773 2148 w (a) 4868 2148 w (C\255) 4940 2148 w (linkage library; the subroutines in it are not usable from a Bourne Shell or Perl program.) 720 2268 w (A) 720 2424 w (typical) 833 2424 w (use) 1146 2424 w (of) 1320 2424 w 10 /Times-Bold f (pm) 1444 2424 w 10 /S f (_) 1583 2424 w 10 /Times-Bold f (system\(\)) 1633 2424 w 10 /Times-Roman f (is) 2029 2424 w (to) 2138 2424 w (place) 2258 2424 w (the) 2510 2424 w (contents) 2674 2424 w (of) 3049 2424 w (some) 3174 2424 w (graphical) 3427 2424 w (image) 3840 2424 w (file) 4126 2424 w (in) 4301 2424 w (memory,) 4421 2424 w (run) 4821 2424 w (a) 4996 2424 w (Netpbm) 720 2544 w (program) 1073 2544 w (against) 1442 2544 w (it,) 1756 2544 w (and) 1868 2544 w (have) 2043 2544 w (what) 2262 2544 w (would) 2487 2544 w (ordinarily) 2768 2544 w (go) 3193 2544 w (into) 3324 2544 w (an) 3511 2544 w (output) 3636 2544 w (file) 3923 2544 w (in) 4087 2544 w (memory) 4196 2544 w (too,) 4560 2544 w (for) 4744 2544 w (fur\255) 4891 2544 w (ther) 720 2664 w (processing.) 912 2664 w (To) 1426 2664 w (do) 1574 2664 w (that,) 1711 2664 w (you) 1923 2664 w (can) 2110 2664 w (use) 2285 2664 w (the) 2455 2664 w (memory) 2614 2664 w (buffer) 2984 2664 w (Standard) 3264 2664 w (Input) 3656 2664 w (feeder) 3904 2664 w (and) 4189 2664 w (Standard) 4370 2664 w (Output) 4762 2664 w (accepter described below.) 720 2784 w (If your program uses the Netpbm subroutine library to read, write, and manipulate images, you may have an) 720 2940 w (image) 720 3060 w (in) 996 3060 w (an) 1106 3060 w (array) 1231 3060 w (of) 1466 3060 w (PAM) 1580 3060 w (tuples.) 1828 3060 w (If) 2148 3060 w (you) 2245 3060 w (want) 2426 3060 w (to) 2651 3060 w (manipulate) 2760 3060 w (that) 3235 3060 w (image) 3416 3060 w (with) 3691 3060 w (a) 3900 3060 w (Netpbm) 3975 3060 w (program) 4328 3060 w (\(perhaps) 4697 3060 w (remap) 720 3180 w (the) 999 3180 w (colors) 1151 3180 w (using) 1425 3180 w 10 /Times-Bold f (pnmremap) 1672 3180 w 10 /Times-Roman f (\),) 2144 3180 w (you) 2232 3180 w (can) 2412 3180 w (use) 2580 3180 w (the) 2743 3180 w (pamtuple) 2895 3180 w (Standard) 3297 3180 w (Input) 3682 3180 w (feeder) 3923 3180 w (and) 4201 3180 w (Standard) 4376 3180 w (Output) 4762 3180 w (acceptor described below.) 720 3300 w 10 /Times-Bold f (Broken Pipe Behavior) 720 3540 w 10 /Times-Roman f (When) 720 3732 w (you) 993 3732 w (set) 1178 3732 w (up) 1324 3732 w (a) 1459 3732 w (shell) 1538 3732 w (command) 1762 3732 w (to) 2192 3732 w (take) 2306 3732 w (input) 2508 3732 w (from) 2750 3732 w (a) 2980 3732 w (pipe,) 3060 3732 w (as) 3293 3732 w (you) 3412 3732 w (do) 3598 3732 w (with) 3734 3732 w 10 /Times-Bold f (pm) 3948 3732 w 10 /S f (_) 4087 3732 w 10 /Times-Bold f (system\(\)) 4137 3732 w 10 /Times-Roman f (,) 4491 3732 w (you) 4552 3732 w (need) 4738 3732 w (to) 4962 3732 w (understand) 720 3852 w (how) 1193 3852 w (pipes) 1400 3852 w (work) 1646 3852 w (with) 1886 3852 w (respect) 2099 3852 w (to) 2416 3852 w (the) 2529 3852 w (programs) 2686 3852 w (at) 3098 3852 w (either) 3205 3852 w (end) 3466 3852 w (of) 3644 3852 w (the) 3761 3852 w (pipe) 3917 3852 w (agreeing) 4123 3852 w (to) 4500 3852 w (how) 4612 3852 w (much) 4818 3852 w (data is to be transferred.) 720 3972 w (Here are some notes on that.) 1731 3972 w (It is normal to read a pipe before the process on the other end has written) 720 4128 w (the) 3659 4128 w (data) 3807 4128 w (you) 3999 4128 w (hope) 4175 4128 w (to) 4395 4128 w (read,) 4499 4128 w (and) 4721 4128 w (it) 4891 4128 w (is) 4973 4128 w (normal) 720 4248 w (to) 1035 4248 w (write) 1145 4248 w (to) 1382 4248 w (a) 1492 4248 w (pipe) 1568 4248 w (before) 1772 4248 w (the) 2058 4248 w (process) 2212 4248 w (on) 2542 4248 w (the) 2673 4248 w (other) 2826 4248 w (end) 3062 4248 w (has) 3237 4248 w (tried) 3401 4248 w (to) 3615 4248 w (read) 3724 4248 w (your) 3926 4248 w (data.) 4140 4248 w (Writes) 4387 4248 w (to) 4684 4248 w (a) 4793 4248 w (pipe) 4868 4248 w (can) 720 4368 w (be) 886 4368 w (buffered) 1008 4368 w (until) 1373 4368 w (the) 1585 4368 w (reading) 1735 4368 w (end) 2062 4368 w (requests) 2234 4368 w (the) 2589 4368 w (data.) 2739 4368 w (A) 2983 4368 w (process) 3083 4368 w (reading) 3410 4368 w (or) 3737 4368 w (writing) 3848 4368 w (a) 4165 4368 w (pipe) 4237 4368 w (can) 4438 4368 w (block) 4605 4368 w (until) 4856 4368 w (the) 720 4488 w (other) 871 4488 w (end) 1105 4488 w (is) 1277 4488 w (ready.) 1372 4488 w (Or) 1671 4488 w (a) 1804 4488 w (read) 1876 4488 w (or) 2075 4488 w (write) 2186 4488 w (can) 2419 4488 w (complete) 2585 4488 w (with) 2979 4488 w (an) 3185 4488 w (indication) 3307 4488 w (that) 3735 4488 w (the) 3913 4488 w (other) 4063 4488 w (end) 4296 4488 w (is) 4468 4488 w (not) 4563 4488 w (ready) 4719 4488 w (at) 4968 4488 w (the moment and therefore no data, or less data than was requested, was transferred.) 720 4608 w (The) 720 4764 w (pipe) 902 4764 w (is) 1101 4764 w (normally) 1195 4764 w (controlled) 1583 4764 w (by) 2015 4764 w (the) 2142 4764 w (writing) 2291 4764 w (end.) 2607 4764 w (When) 2828 4764 w (you) 3093 4764 w (read) 3270 4764 w (from) 3468 4764 w (a) 3689 4764 w (pipe,) 3760 4764 w (you) 3985 4764 w (keep) 4163 4764 w (reading) 4379 4764 w (until) 4706 4764 w (the) 4918 4764 w (program) 720 4884 w (on) 1092 4884 w (the) 1226 4884 w (other) 1382 4884 w (end) 1621 4884 w (of) 1799 4884 w (the) 1916 4884 w (pipe) 2072 4884 w (closes) 2278 4884 w (it,) 2556 4884 w (and) 2671 4884 w (then) 2849 4884 w (you) 3055 4884 w (get) 3239 4884 w (an) 3395 4884 w (end\255of\255file) 3522 4884 w (indication.) 3981 4884 w (You) 4464 4884 w (then) 4669 4884 w (nor\255) 4874 4884 w (mally close the reading end of the pipe, since it is no longer useful.) 720 5004 w (When) 720 5160 w (you) 994 5160 w (close) 1180 5160 w (the) 1421 5160 w (reading) 1579 5160 w (end) 1914 5160 w (of) 2095 5160 w (a) 2215 5160 w (pipe) 2296 5160 w (before) 2505 5160 w (getting) 2796 5160 w (the) 3111 5160 w (end\255of\255file) 3270 5160 w (indication) 3733 5160 w (and) 4170 5160 w (the) 4351 5160 w (writer) 4510 5160 w (subse\255) 4785 5160 w (quently) 720 5280 w (tries) 1048 5280 w (to) 1248 5280 w (write) 1354 5280 w (to) 1587 5280 w (the) 1693 5280 w (pipe,) 1843 5280 w (that) 2067 5280 w (is) 2244 5280 w (an) 2338 5280 w (error) 2459 5280 w (condition) 2679 5280 w (for) 3084 5280 w (the) 3227 5280 w (writer.) 3376 5280 w (In) 3691 5280 w (a) 3801 5280 w (typical) 3872 5280 w (default) 4171 5280 w (Unix) 4475 5280 w (environ\255) 4702 5280 w (ment,) 720 5400 w (that) 971 5400 w (error) 1147 5400 w (causes) 1366 5400 w (the) 1653 5400 w (writer) 1802 5400 w (to) 2067 5400 w (receive) 2172 5400 w (a) 2486 5400 w (SIGPIP) 2557 5400 w (signal) 2890 5400 w (and) 3156 5400 w (that) 3327 5400 w (signal) 3504 5400 w (causes) 3770 5400 w (the) 4057 5400 w (writer) 4206 5400 w (process) 4471 5400 w (to) 4797 5400 w (ter\255) 4902 5400 w (minate) 720 5520 w (abnormally.) 1022 5520 w (But) 1557 5520 w (if,) 1732 5520 w (alternatively,) 1848 5520 w (the) 2402 5520 w (writer) 2554 5520 w (has) 2822 5520 w (ordered) 2985 5520 w (that) 3319 5520 w (SIGPIPE) 3499 5520 w (be) 3896 5520 w (blocked,) 4020 5520 w (ignored,) 4391 5520 w (or) 4751 5520 w (han\255) 4863 5520 w (dled,) 720 5640 w (the) 947 5640 w (signal) 1100 5640 w (does) 1370 5640 w (not) 1584 5640 w (cause) 1743 5640 w (the) 1995 5640 w (death) 2148 5640 w (of) 2395 5640 w (the) 2509 5640 w (writer.) 2662 5640 w (Instead,) 2981 5640 w (the) 3325 5640 w (write) 3478 5640 w (operation) 3714 5640 w (simply) 4122 5640 w (completes) 4426 5640 w (with) 4862 5640 w (an error indication.) 720 5760 w 10 /Times-Bold f (Standard Feeders And Acceptors) 720 6000 w 10 /Times-Roman f (You) 720 6192 w (can) 921 6192 w (supply) 1088 6192 w (anything) 1384 6192 w (you) 1763 6192 w (like) 1942 6192 w (as) 2121 6192 w (a) 2233 6192 w (Standard) 2306 6192 w (Input) 2691 6192 w (feeder) 2932 6192 w (or) 3210 6192 w (Standard) 3323 6192 w (Output) 3708 6192 w (acceptor,) 4016 6192 w (but) 4408 6192 w (the) 4566 6192 w (Netpbm) 4718 6192 w (subroutine library comes with a few that perform commonly needed functions.) 720 6312 w 10 /Times-Bold f (Memory Buffer) 720 6552 w 10 /Times-Roman f (These) 720 6744 w (routines) 984 6744 w (are) 1332 6744 w (for) 1479 6744 w (when) 1621 6744 w (you) 1863 6744 w (just) 2039 6744 w (want) 2210 6744 w (to) 2430 6744 w (treat) 2534 6744 w (an) 2737 6744 w (area) 2858 6744 w (of) 3050 6744 w (memory) 3160 6744 w (as) 3520 6744 w (a) 3630 6744 w (file.) 3701 6744 w (If) 3911 6744 w (the) 4004 6744 w (shell) 4153 6744 w (command) 4369 6744 w (would) 4790 6744 w (ordinarily) 720 6864 w (read) 1143 6864 w (a) 1343 6864 w (513) 1416 6864 w (byte) 1595 6864 w (regular) 1796 6864 w (file) 2107 6864 w (from) 2269 6864 w (its) 2492 6864 w (Standard) 2616 6864 w (Input,) 3000 6864 w (you) 3265 6864 w (want) 3444 6864 w (it) 3667 6864 w (to) 3752 6864 w (take) 3859 6864 w (513) 4054 6864 w (bytes) 4233 6864 w (from) 4473 6864 w (a) 4696 6864 w (certain) 4769 6864 w (address) 720 6984 w (in) 1049 6984 w (your) 1157 6984 w (process') 1370 6984 w (memory.) 1732 6984 w (Whatever) 2145 6984 w (bytes) 2562 6984 w (the) 2803 6984 w (shell) 2955 6984 w (command) 3174 6984 w (wants) 3598 6984 w (to) 3861 6984 w (write) 3969 6984 w (to) 4204 6984 w (its) 4313 6984 w (output) 4439 6984 w (file) 4726 6984 w (you) 4890 6984 w (want it to store at another address in your process' memory.) 720 7104 w (The) 720 7260 w (Standard) 914 7260 w (Input) 1309 7260 w (feeder) 1560 7260 w (for) 1848 7260 w (this) 2004 7260 w (is) 2189 7260 w (called) 2296 7260 w 10 /Times-Bold f (pm) 2574 7260 w 10 /S f (_) 2713 7260 w 10 /Times-Bold f (feed) 2763 7260 w 10 /S f (_) 2940 7260 w 10 /Times-Bold f (from) 2990 7260 w 10 /S f (_) 3200 7260 w 10 /Times-Bold f (memory) 3250 7260 w 10 /Times-Roman f (.) 3604 7260 w (The) 3694 7260 w (Standard) 3889 7260 w (Output) 4284 7260 w (accepter) 4602 7260 w (is) 4973 7260 w cleartomark showpage saveobj restore %%EndPage: 3 3 %%Page: 4 4 /saveobj save def mark 4 pagesetup 10 /Times-Roman f (\255 4 \255) 2797 480 w 10 /Times-Bold f (pm) 720 840 w 10 /S f (_) 859 840 w 10 /Times-Bold f (accept) 909 840 w 10 /S f (_) 1180 840 w 10 /Times-Bold f (to) 1230 840 w 10 /S f (_) 1313 840 w 10 /Times-Bold f (memory) 1363 840 w 10 /Times-Roman f (.) 1717 840 w (For both of these, the argument is the address of a) 720 996 w 10 /Times-Bold f (struct bufferDesc) 2739 996 w 10 /Times-Roman f (, which is defined as follows:) 3478 996 w (struct bufferDesc {) 720 1176 w (unsigned int) 820 1296 w (size;) 1412 1296 w (unsigned char * buffer;) 820 1416 w (unsigned int *) 820 1536 w (bytesTransferredP;) 1437 1536 w (};) 720 1656 w 10 /Times-Italic f (size) 720 1836 w 10 /Times-Roman f (is) 905 1836 w (the) 1007 1836 w (size) 1164 1836 w (of) 1354 1836 w (the) 1472 1836 w (memory) 1629 1836 w (buffer) 1997 1836 w (and) 2275 1836 w 10 /Times-Italic f (buffer) 2454 1836 w 10 /Times-Roman f (is) 2728 1836 w (its) 2830 1836 w (location) 2960 1836 w (in) 3317 1836 w (memory) 3430 1836 w (\(address\).) 3798 1836 w (The) 4248 1836 w (Standard) 4438 1836 w (Input) 4829 1836 w (feeder) 720 1956 w (will) 1004 1956 w (attempt) 1196 1956 w (to) 1532 1956 w (feed) 1646 1956 w (the) 1853 1956 w (entire) 2011 1956 w (buffer) 2274 1956 w (to) 2553 1956 w (the) 2667 1956 w (shell) 2825 1956 w (command's) 3050 1956 w (Standard) 3551 1956 w (Input;) 3941 1956 w (the) 4215 1956 w (Standard) 4372 1956 w (Output) 4762 1956 w (accepter) 720 2076 w (will) 1093 2076 w (not) 1291 2076 w (accept) 1461 2076 w (any) 1757 2076 w (more) 1943 2076 w (data) 2190 2076 w (from) 2398 2076 w (the) 2634 2076 w (shell) 2798 2076 w (command's) 3029 2076 w (Standard) 3537 2076 w (Output) 3934 2076 w (than) 4254 2076 w (will) 4468 2076 w (fit) 4666 2076 w (in) 4797 2076 w (the) 4918 2076 w (buffer.) 720 2196 w (Both) 1045 2196 w (return) 1272 2196 w (the) 1542 2196 w (actual) 1696 2196 w (amount) 1966 2196 w (of) 2298 2196 w (data) 2413 2196 w (read) 2611 2196 w (or) 2814 2196 w (written,) 2929 2196 w (in) 3269 2196 w (bytes,) 3379 2196 w (at) 3647 2196 w (the) 3751 2196 w (location) 3904 2196 w (identified) 4257 2196 w (by) 4671 2196 w 10 /Times-Italic f (bytes\255) 4802 2196 w (TransferredP) 720 2316 w 10 /Times-Roman f (.) 1259 2316 w (Unless) 1334 2316 w 10 /Times-Bold f (bytesTransferredP) 1631 2316 w 10 /Times-Roman f (is NULL.) 2460 2316 w (Because) 720 2472 w (a) 1084 2472 w (process) 1160 2472 w (typically) 1491 2472 w (terminates) 1873 2472 w (abnormally) 2321 2472 w (when) 2808 2472 w (it) 3056 2472 w (is) 3144 2472 w (not) 3243 2472 w (able) 3403 2472 w (to) 3601 2472 w (write) 3711 2472 w (everything) 3948 2472 w (to) 4408 2472 w (a) 4519 2472 w (pipe) 4596 2472 w (that) 4801 2472 w (it) 4984 2472 w (wanted to,) 720 2592 w 10 /Times-Italic f (bytesTransferredP) 1161 2592 w 10 /Times-Roman f (is not usually useful in the Standard Input feeder case.) 1930 2592 w 10 /Times-Bold f (Pamtuple) 720 2832 w 10 /Times-Roman f (These) 720 3024 w (routines) 987 3024 w (are) 1338 3024 w (for) 1488 3024 w (when) 1633 3024 w (you) 1878 3024 w (have) 2057 3024 w (images) 2274 3024 w (in) 2586 3024 w (memory) 2693 3024 w (in) 3055 3024 w (the) 3162 3024 w (data) 3313 3024 w (structures) 3508 3024 w (used) 3925 3024 w (by) 4137 3024 w (the) 4267 3024 w (PAM) 4419 3024 w (family) 4666 3024 w (of) 4957 3024 w (subroutines) 720 3144 w (in) 1212 3144 w (the) 1321 3144 w (Netpbm) 1474 3144 w (library) 1827 3144 w (\255\255) 2124 3144 w (i.e.) 2220 3144 w (struct) 2372 3144 w (PAM) 2624 3144 w (and) 2871 3144 w (an) 3045 3144 w (array) 3169 3144 w (of) 3403 3144 w (struct) 3516 3144 w (tuple.) 3768 3144 w (With) 4048 3144 w (these) 4278 3144 w (routines,) 4513 3144 w (you) 4890 3144 w (can) 720 3264 w (run) 892 3264 w (a) 1059 3264 w (Netpbm) 1137 3264 w (program) 1493 3264 w (against) 1865 3264 w (such) 2182 3264 w (an) 2399 3264 w (image) 2527 3264 w (just) 2805 3264 w (as) 2984 3264 w (you) 3102 3264 w (would) 3287 3264 w (against) 3572 3264 w (the) 3890 3264 w (same) 4047 3264 w (image) 4287 3264 w (in) 4566 3264 w (a) 4679 3264 w (regular) 4758 3264 w (file.) 720 3384 w (The) 720 3540 w (Standard) 907 3540 w (Input) 1295 3540 w (feeder) 1539 3540 w (for) 1820 3540 w (this) 1969 3540 w (is) 2147 3540 w (called) 2247 3540 w 10 /Times-Bold f (pm) 2518 3540 w 10 /S f (_) 2657 3540 w 10 /Times-Bold f (feed) 2707 3540 w 10 /S f (_) 2884 3540 w 10 /Times-Bold f (from) 2934 3540 w 10 /S f (_) 3144 3540 w 10 /Times-Bold f (pamtuples) 3194 3540 w 10 /Times-Roman f (.) 3639 3540 w (The) 3722 3540 w (Standard) 3910 3540 w (Output) 4298 3540 w (accepter) 4609 3540 w (is) 4973 3540 w 10 /Times-Bold f (pm) 720 3660 w 10 /S f (_) 859 3660 w 10 /Times-Bold f (accept) 909 3660 w 10 /S f (_) 1180 3660 w 10 /Times-Bold f (to) 1230 3660 w 10 /S f (_) 1313 3660 w 10 /Times-Bold f (pamtuples) 1363 3660 w 10 /Times-Roman f (.) 1808 3660 w (For both of these, the argument is the address of a) 720 3816 w 10 /Times-Bold f (struct pamtuples) 2739 3816 w 10 /Times-Roman f (, which is defined as follows:) 3458 3816 w (struct pamtuples {) 720 3996 w (struct pam * pamP;) 820 4116 w (tuple ***) 820 4236 w (tuplesP;) 1295 4236 w (};) 720 4356 w (For) 720 4572 w (the) 889 4572 w (Standard) 1041 4572 w (Input) 1426 4572 w (feeder,) 1667 4572 w (you) 1970 4572 w (supply) 2150 4572 w (a) 2447 4572 w (struct) 2521 4572 w (pam,) 2773 4572 w (valid) 3000 4572 w (up) 3230 4572 w (through) 3360 4572 w (the) 3702 4572 w 10 /Times-Italic f (tuple) 3855 4572 w 10 /S f (_) 4055 4572 w 10 /Times-Italic f (type) 4105 4572 w 10 /Times-Roman f (member) 4302 4572 w (\(except) 4660 4572 w (it) 4984 4572 w (doesn't matter what the) 720 4692 w 10 /Times-Italic f (file) 1685 4692 w 10 /Times-Roman f (member is\) and array of tuples.) 1838 4692 w (For) 720 4848 w (the) 888 4848 w (Standard) 1039 4848 w (Output) 1423 4848 w (Accepter,) 1730 4848 w (you) 2143 4848 w (supply) 2323 4848 w (only) 2620 4848 w (space) 2828 4848 w (in) 3079 4848 w (memory) 3187 4848 w (for) 3550 4848 w (the) 3696 4848 w (struct) 3848 4848 w (pam) 4100 4848 w (and) 4302 4848 w (the) 4476 4848 w (address) 4628 4848 w (of) 4957 4848 w (the) 720 4968 w (tuple) 870 4968 w (array.) 1098 4968 w (The) 1379 4968 w (routine) 1561 4968 w (fills) 1871 4968 w (in) 2054 4968 w (the) 2159 4968 w (struct) 2308 4968 w (pam) 2557 4968 w (up) 2756 4968 w (through) 2883 4968 w (the) 3221 4968 w 10 /Times-Italic f (tuple) 3370 4968 w 10 /S f (_) 3570 4968 w 10 /Times-Italic f (type) 3620 4968 w 10 /Times-Roman f (member) 3813 4968 w (\(except) 4167 4968 w (leaves) 4487 4968 w (the) 4763 4968 w 10 /Times-Italic f (file) 4912 4968 w 10 /Times-Roman f (member) 720 5088 w (undefined\)) 1079 5088 w (and) 1543 5088 w (allocates) 1720 5088 w (space) 2102 5088 w (for) 2356 5088 w (the) 2505 5088 w (tuple) 2660 5088 w (array) 2893 5088 w (with) 3130 5088 w (malloc\(\).) 3341 5088 w (You) 3762 5088 w (are) 3967 5088 w (responsible) 4121 5088 w (for) 4609 5088 w (freeing) 4758 5088 w (that memory.) 720 5208 w 10 /Times-Bold f (HISTORY) 720 5448 w (pm) 720 5604 w 10 /S f (_) 859 5604 w 10 /Times-Bold f (system\(\)) 909 5604 w 10 /Times-Roman f (was introduced in Netpbm 10.13 \(January 2003\).) 1288 5604 w cleartomark showpage saveobj restore %%EndPage: 4 4 %%Trailer done %%DocumentFonts: Times-Roman Times-Italic Times-Bold Courier S %%Pages: 4