home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume5 / pbm3 / part3 < prev    next >
SHell self-extracting ARchive  |  1989-02-03  |  48.3 KB

open in: MacOS 8.1     |     Win98     |     DOS

browse contents    |     view JSON data     |     view as text


This file was processed as: SHell self-extracting ARchive (archive/shar).

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert Newsgroup Content (archive/news) magic Supported
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
100% dexvert Internet Message Format (text/imf) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file news, ASCII text default
100% checkBytes Printable ASCII default
100% dexmagic PrintFox/Pagefox WEAK default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)
100% xdgMime message/news default



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 50 61 74 68 3a 20 78 61 | 6e 74 68 21 6e 69 63 2e |Path: xa|nth!nic.|
|00000010| 4d 52 2e 4e 45 54 21 68 | 61 6c 21 6e 63 6f 61 73 |MR.NET!h|al!ncoas|
|00000020| 74 21 61 6c 6c 62 65 72 | 79 0a 46 72 6f 6d 3a 20 |t!allber|y.From: |
|00000030| 6a 65 66 40 68 65 6c 69 | 6f 73 2e 65 65 2e 6c 62 |jef@heli|os.ee.lb|
|00000040| 6c 2e 67 6f 76 20 28 4a | 65 66 20 50 6f 73 6b 61 |l.gov (J|ef Poska|
|00000050| 6e 7a 65 72 29 0a 4e 65 | 77 73 67 72 6f 75 70 73 |nzer).Ne|wsgroups|
|00000060| 3a 20 63 6f 6d 70 2e 73 | 6f 75 72 63 65 73 2e 6d |: comp.s|ources.m|
|00000070| 69 73 63 0a 53 75 62 6a | 65 63 74 3a 20 76 30 35 |isc.Subj|ect: v05|
|00000080| 69 30 34 33 3a 20 70 6f | 72 74 61 62 6c 65 20 62 |i043: po|rtable b|
|00000090| 69 74 6d 61 70 20 72 6f | 75 74 69 6e 65 73 20 28 |itmap ro|utines (|
|000000a0| 33 20 6f 66 20 35 29 0a | 4d 65 73 73 61 67 65 2d |3 of 5).|Message-|
|000000b0| 49 44 3a 20 3c 38 38 31 | 31 30 31 30 32 33 37 2e |ID: <881|1010237.|
|000000c0| 41 41 30 32 36 39 38 40 | 68 65 6c 69 6f 73 2e 65 |AA02698@|helios.e|
|000000d0| 65 2e 6c 62 6c 2e 67 6f | 76 3e 0a 44 61 74 65 3a |e.lbl.go|v>.Date:|
|000000e0| 20 39 20 4e 6f 76 20 38 | 38 20 30 32 3a 33 38 3a | 9 Nov 8|8 02:38:|
|000000f0| 32 32 20 47 4d 54 0a 53 | 65 6e 64 65 72 3a 20 61 |22 GMT.S|ender: a|
|00000100| 6c 6c 62 65 72 79 40 6e | 63 6f 61 73 74 2e 55 55 |llbery@n|coast.UU|
|00000110| 43 50 0a 52 65 70 6c 79 | 2d 54 6f 3a 20 6a 65 66 |CP.Reply|-To: jef|
|00000120| 40 68 65 6c 69 6f 73 2e | 65 65 2e 6c 62 6c 2e 67 |@helios.|ee.lbl.g|
|00000130| 6f 76 20 28 4a 65 66 20 | 50 6f 73 6b 61 6e 7a 65 |ov (Jef |Poskanze|
|00000140| 72 29 0a 4c 69 6e 65 73 | 3a 20 31 39 33 37 0a 41 |r).Lines|: 1937.A|
|00000150| 70 70 72 6f 76 65 64 3a | 20 61 6c 6c 62 65 72 79 |pproved:| allbery|
|00000160| 40 6e 63 6f 61 73 74 2e | 55 55 43 50 0a 0a 50 6f |@ncoast.|UUCP..Po|
|00000170| 73 74 69 6e 67 2d 6e 75 | 6d 62 65 72 3a 20 56 6f |sting-nu|mber: Vo|
|00000180| 6c 75 6d 65 20 35 2c 20 | 49 73 73 75 65 20 34 33 |lume 5, |Issue 43|
|00000190| 0a 53 75 62 6d 69 74 74 | 65 64 2d 62 79 3a 20 22 |.Submitt|ed-by: "|
|000001a0| 4a 65 66 20 50 6f 73 6b | 61 6e 7a 65 72 22 20 3c |Jef Posk|anzer" <|
|000001b0| 6a 65 66 40 68 65 6c 69 | 6f 73 2e 65 65 2e 6c 62 |jef@heli|os.ee.lb|
|000001c0| 6c 2e 67 6f 76 3e 0a 41 | 72 63 68 69 76 65 2d 6e |l.gov>.A|rchive-n|
|000001d0| 61 6d 65 3a 20 70 62 6d | 33 2f 50 61 72 74 33 0a |ame: pbm|3/Part3.|
|000001e0| 0a 5b 59 75 63 6b 2e 20 | 20 49 27 64 20 70 72 65 |.[Yuck. | I'd pre|
|000001f0| 66 65 72 20 72 65 61 6c | 20 73 75 62 6a 65 63 74 |fer real| subject|
|00000200| 20 6c 69 6e 65 73 2e 20 | 20 2b 2b 62 73 61 5d 0a | lines. | ++bsa].|
|00000210| 0a 23 21 20 2f 62 69 6e | 2f 73 68 0a 23 20 54 68 |.#! /bin|/sh.# Th|
|00000220| 69 73 20 69 73 20 61 20 | 73 68 65 6c 6c 20 61 72 |is is a |shell ar|
|00000230| 63 68 69 76 65 2c 20 6d | 65 61 6e 69 6e 67 3a 0a |chive, m|eaning:.|
|00000240| 23 20 31 2e 20 52 65 6d | 6f 76 65 20 65 76 65 72 |# 1. Rem|ove ever|
|00000250| 79 74 68 69 6e 67 20 61 | 62 6f 76 65 20 74 68 65 |ything a|bove the|
|00000260| 20 23 21 20 2f 62 69 6e | 2f 73 68 20 6c 69 6e 65 | #! /bin|/sh line|
|00000270| 2e 0a 23 20 32 2e 20 53 | 61 76 65 20 74 68 65 20 |..# 2. S|ave the |
|00000280| 72 65 73 75 6c 74 69 6e | 67 20 74 65 78 74 20 69 |resultin|g text i|
|00000290| 6e 20 61 20 66 69 6c 65 | 2e 0a 23 20 33 2e 20 45 |n a file|..# 3. E|
|000002a0| 78 65 63 75 74 65 20 74 | 68 65 20 66 69 6c 65 20 |xecute t|he file |
|000002b0| 77 69 74 68 20 2f 62 69 | 6e 2f 73 68 20 28 6e 6f |with /bi|n/sh (no|
|000002c0| 74 20 63 73 68 29 20 74 | 6f 20 63 72 65 61 74 65 |t csh) t|o create|
|000002d0| 20 74 68 65 20 66 69 6c | 65 73 3a 0a 23 09 70 62 | the fil|es:.#.pb|
|000002e0| 6d 66 6c 69 70 74 62 2e | 63 0a 23 09 70 62 6d 66 |mfliptb.|c.#.pbmf|
|000002f0| 6c 69 70 74 62 2e 31 0a | 23 09 70 62 6d 69 6e 76 |liptb.1.|#.pbminv|
|00000300| 65 72 74 2e 63 0a 23 09 | 70 62 6d 69 6e 76 65 72 |ert.c.#.|pbminver|
|00000310| 74 2e 31 0a 23 09 70 62 | 6d 63 72 6f 70 2e 63 0a |t.1.#.pb|mcrop.c.|
|00000320| 23 09 70 62 6d 63 72 6f | 70 2e 31 0a 23 09 70 62 |#.pbmcro|p.1.#.pb|
|00000330| 6d 74 72 6e 73 70 6f 73 | 2e 63 0a 23 09 70 62 6d |mtrnspos|.c.#.pbm|
|00000340| 74 72 6e 73 70 6f 73 2e | 31 0a 23 09 70 62 6d 63 |trnspos.|1.#.pbmc|
|00000350| 75 74 2e 63 0a 23 09 70 | 62 6d 63 75 74 2e 31 0a |ut.c.#.p|bmcut.1.|
|00000360| 23 09 70 62 6d 70 61 73 | 74 65 2e 63 0a 23 09 70 |#.pbmpas|te.c.#.p|
|00000370| 62 6d 70 61 73 74 65 2e | 31 0a 23 09 78 78 78 74 |bmpaste.|1.#.xxxt|
|00000380| 6f 70 62 6d 2e 63 0a 23 | 09 78 78 78 74 6f 70 62 |opbm.c.#|.xxxtopb|
|00000390| 6d 2e 31 0a 23 09 70 62 | 6d 65 6e 6c 61 72 67 65 |m.1.#.pb|menlarge|
|000003a0| 2e 63 0a 23 09 70 62 6d | 65 6e 6c 61 72 67 65 2e |.c.#.pbm|enlarge.|
|000003b0| 31 0a 23 09 70 62 6d 6d | 61 6b 65 2e 63 0a 23 09 |1.#.pbmm|ake.c.#.|
|000003c0| 70 62 6d 6d 61 6b 65 2e | 31 0a 23 09 70 62 6d 74 |pbmmake.|1.#.pbmt|
|000003d0| 6f 6c 6a 2e 63 0a 23 09 | 70 62 6d 74 6f 6c 6a 2e |olj.c.#.|pbmtolj.|
|000003e0| 31 0a 23 09 70 62 6d 74 | 6f 6d 61 63 70 2e 63 0a |1.#.pbmt|omacp.c.|
|000003f0| 23 20 54 68 69 73 20 61 | 72 63 68 69 76 65 20 63 |# This a|rchive c|
|00000400| 72 65 61 74 65 64 3a 20 | 4d 6f 6e 20 4f 63 74 20 |reated: |Mon Oct |
|00000410| 33 31 20 31 38 3a 33 33 | 3a 33 35 20 31 39 38 38 |31 18:33|:35 1988|
|00000420| 0a 23 20 42 79 3a 09 4a | 65 66 20 50 6f 73 6b 61 |.# By:.J|ef Poska|
|00000430| 6e 7a 65 72 20 28 50 61 | 72 61 74 68 65 6f 2d 41 |nzer (Pa|ratheo-A|
|00000440| 6e 61 6d 65 74 61 6d 79 | 73 74 69 6b 68 6f 6f 64 |nametamy|stikhood|
|00000450| 20 4f 66 20 45 72 69 73 | 20 45 73 6f 74 65 72 69 | Of Eris| Esoteri|
|00000460| 63 2c 20 41 64 61 20 4c | 6f 76 65 6c 61 63 65 20 |c, Ada L|ovelace |
|00000470| 43 61 62 61 6c 29 0a 65 | 78 70 6f 72 74 20 50 41 |Cabal).e|xport PA|
|00000480| 54 48 3b 20 50 41 54 48 | 3d 2f 62 69 6e 3a 24 50 |TH; PATH|=/bin:$P|
|00000490| 41 54 48 0a 65 63 68 6f | 20 73 68 61 72 3a 20 65 |ATH.echo| shar: e|
|000004a0| 78 74 72 61 63 74 69 6e | 67 20 22 27 70 62 6d 66 |xtractin|g "'pbmf|
|000004b0| 6c 69 70 74 62 2e 63 27 | 22 20 27 28 31 33 30 35 |liptb.c'|" '(1305|
|000004c0| 20 63 68 61 72 61 63 74 | 65 72 73 29 27 0a 69 66 | charact|ers)'.if|
|000004d0| 20 74 65 73 74 20 2d 66 | 20 27 70 62 6d 66 6c 69 | test -f| 'pbmfli|
|000004e0| 70 74 62 2e 63 27 0a 74 | 68 65 6e 0a 09 65 63 68 |ptb.c'.t|hen..ech|
|000004f0| 6f 20 73 68 61 72 3a 20 | 77 69 6c 6c 20 6e 6f 74 |o shar: |will not|
|00000500| 20 6f 76 65 72 2d 77 72 | 69 74 65 20 65 78 69 73 | over-wr|ite exis|
|00000510| 74 69 6e 67 20 66 69 6c | 65 20 22 27 70 62 6d 66 |ting fil|e "'pbmf|
|00000520| 6c 69 70 74 62 2e 63 27 | 22 0a 65 6c 73 65 0a 73 |liptb.c'|".else.s|
|00000530| 65 64 20 27 73 2f 5e 58 | 2f 2f 27 20 3c 3c 20 5c |ed 's/^X|//' << \|
|00000540| 53 48 41 52 5f 45 4f 46 | 20 3e 20 27 70 62 6d 66 |SHAR_EOF| > 'pbmf|
|00000550| 6c 69 70 74 62 2e 63 27 | 0a 58 2f 2a 20 70 62 6d |liptb.c'|.X/* pbm|
|00000560| 66 6c 69 70 74 62 2e 63 | 20 2d 20 72 65 61 64 20 |fliptb.c| - read |
|00000570| 61 20 70 6f 72 74 61 62 | 6c 65 20 62 69 74 6d 61 |a portab|le bitma|
|00000580| 70 20 61 6e 64 20 66 6c | 69 70 20 69 74 20 74 6f |p and fl|ip it to|
|00000590| 70 20 66 6f 72 20 62 6f | 74 74 6f 6d 0a 58 2a 2a |p for bo|ttom.X**|
|000005a0| 0a 58 2a 2a 20 43 6f 70 | 79 72 69 67 68 74 20 28 |.X** Cop|yright (|
|000005b0| 43 29 20 31 39 38 38 20 | 62 79 20 4a 65 66 20 50 |C) 1988 |by Jef P|
|000005c0| 6f 73 6b 61 6e 7a 65 72 | 2e 0a 58 2a 2a 0a 58 2a |oskanzer|..X**.X*|
|000005d0| 2a 20 50 65 72 6d 69 73 | 73 69 6f 6e 20 74 6f 20 |* Permis|sion to |
|000005e0| 75 73 65 2c 20 63 6f 70 | 79 2c 20 6d 6f 64 69 66 |use, cop|y, modif|
|000005f0| 79 2c 20 61 6e 64 20 64 | 69 73 74 72 69 62 75 74 |y, and d|istribut|
|00000600| 65 20 74 68 69 73 20 73 | 6f 66 74 77 61 72 65 20 |e this s|oftware |
|00000610| 61 6e 64 20 69 74 73 0a | 58 2a 2a 20 64 6f 63 75 |and its.|X** docu|
|00000620| 6d 65 6e 74 61 74 69 6f | 6e 20 66 6f 72 20 61 6e |mentatio|n for an|
|00000630| 79 20 70 75 72 70 6f 73 | 65 20 61 6e 64 20 77 69 |y purpos|e and wi|
|00000640| 74 68 6f 75 74 20 66 65 | 65 20 69 73 20 68 65 72 |thout fe|e is her|
|00000650| 65 62 79 20 67 72 61 6e | 74 65 64 2c 20 70 72 6f |eby gran|ted, pro|
|00000660| 76 69 64 65 64 0a 58 2a | 2a 20 74 68 61 74 20 74 |vided.X*|* that t|
|00000670| 68 65 20 61 62 6f 76 65 | 20 63 6f 70 79 72 69 67 |he above| copyrig|
|00000680| 68 74 20 6e 6f 74 69 63 | 65 20 61 70 70 65 61 72 |ht notic|e appear|
|00000690| 20 69 6e 20 61 6c 6c 20 | 63 6f 70 69 65 73 20 61 | in all |copies a|
|000006a0| 6e 64 20 74 68 61 74 20 | 62 6f 74 68 20 74 68 61 |nd that |both tha|
|000006b0| 74 0a 58 2a 2a 20 63 6f | 70 79 72 69 67 68 74 20 |t.X** co|pyright |
|000006c0| 6e 6f 74 69 63 65 20 61 | 6e 64 20 74 68 69 73 20 |notice a|nd this |
|000006d0| 70 65 72 6d 69 73 73 69 | 6f 6e 20 6e 6f 74 69 63 |permissi|on notic|
|000006e0| 65 20 61 70 70 65 61 72 | 20 69 6e 20 73 75 70 70 |e appear| in supp|
|000006f0| 6f 72 74 69 6e 67 0a 58 | 2a 2a 20 64 6f 63 75 6d |orting.X|** docum|
|00000700| 65 6e 74 61 74 69 6f 6e | 2e 20 20 54 68 69 73 20 |entation|. This |
|00000710| 73 6f 66 74 77 61 72 65 | 20 69 73 20 70 72 6f 76 |software| is prov|
|00000720| 69 64 65 64 20 22 61 73 | 20 69 73 22 20 77 69 74 |ided "as| is" wit|
|00000730| 68 6f 75 74 20 65 78 70 | 72 65 73 73 20 6f 72 0a |hout exp|ress or.|
|00000740| 58 2a 2a 20 69 6d 70 6c | 69 65 64 20 77 61 72 72 |X** impl|ied warr|
|00000750| 61 6e 74 79 2e 0a 58 2a | 2f 0a 58 0a 58 23 69 6e |anty..X*|/.X.X#in|
|00000760| 63 6c 75 64 65 20 3c 73 | 74 64 69 6f 2e 68 3e 0a |clude <s|tdio.h>.|
|00000770| 58 23 69 6e 63 6c 75 64 | 65 20 22 70 62 6d 2e 68 |X#includ|e "pbm.h|
|00000780| 22 0a 58 0a 58 6d 61 69 | 6e 28 20 61 72 67 63 2c |".X.Xmai|n( argc,|
|00000790| 20 61 72 67 76 20 29 0a | 58 69 6e 74 20 61 72 67 | argv ).|Xint arg|
|000007a0| 63 3b 0a 58 63 68 61 72 | 20 2a 61 72 67 76 5b 5d |c;.Xchar| *argv[]|
|000007b0| 3b 0a 58 20 20 20 20 7b | 0a 58 20 20 20 20 46 49 |;.X {|.X FI|
|000007c0| 4c 45 20 2a 69 66 64 3b | 0a 58 20 20 20 20 62 69 |LE *ifd;|.X bi|
|000007d0| 74 20 2a 2a 62 69 74 73 | 2c 20 62 3b 0a 58 20 20 |t **bits|, b;.X |
|000007e0| 20 20 69 6e 74 20 72 6f | 77 73 2c 20 63 6f 6c 73 | int ro|ws, cols|
|000007f0| 2c 20 72 6f 77 2c 20 63 | 6f 6c 3b 0a 58 0a 58 20 |, row, c|ol;.X.X |
|00000800| 20 20 20 69 66 20 28 20 | 61 72 67 63 20 3e 20 32 | if ( |argc > 2|
|00000810| 20 29 0a 58 09 7b 0a 58 | 09 66 70 72 69 6e 74 66 | ).X.{.X|.fprintf|
|00000820| 28 20 73 74 64 65 72 72 | 2c 20 22 75 73 61 67 65 |( stderr|, "usage|
|00000830| 3a 20 20 25 73 20 5b 70 | 62 6d 66 69 6c 65 5d 5c |: %s [p|bmfile]\|
|00000840| 6e 22 2c 20 61 72 67 76 | 5b 30 5d 20 29 3b 0a 58 |n", argv|[0] );.X|
|00000850| 09 65 78 69 74 28 20 31 | 20 29 3b 0a 58 09 7d 0a |.exit( 1| );.X.}.|
|00000860| 58 0a 58 20 20 20 20 69 | 66 20 28 20 61 72 67 63 |X.X i|f ( argc|
|00000870| 20 3d 3d 20 32 20 29 0a | 58 09 7b 0a 58 20 20 20 | == 2 ).|X.{.X |
|00000880| 20 20 20 20 20 69 66 64 | 20 3d 20 66 6f 70 65 6e | ifd| = fopen|
|00000890| 28 20 61 72 67 76 5b 31 | 5d 2c 20 22 72 22 20 29 |( argv[1|], "r" )|
|000008a0| 3b 0a 58 20 20 20 20 20 | 20 20 20 69 66 20 28 20 |;.X | if ( |
|000008b0| 69 66 64 20 3d 3d 20 4e | 55 4c 4c 20 29 0a 58 09 |ifd == N|ULL ).X.|
|000008c0| 20 20 20 20 7b 0a 58 09 | 20 20 20 20 66 70 72 69 | {.X.| fpri|
|000008d0| 6e 74 66 28 20 73 74 64 | 65 72 72 2c 20 22 25 73 |ntf( std|err, "%s|
|000008e0| 3a 20 63 61 6e 27 74 20 | 6f 70 65 6e 2e 5c 6e 22 |: can't |open.\n"|
|000008f0| 2c 20 61 72 67 76 5b 31 | 5d 20 29 3b 0a 58 09 20 |, argv[1|] );.X. |
|00000900| 20 20 20 65 78 69 74 28 | 20 31 20 29 3b 0a 58 09 | exit(| 1 );.X.|
|00000910| 20 20 20 20 7d 0a 58 09 | 7d 0a 58 20 20 20 20 65 | }.X.|}.X e|
|00000920| 6c 73 65 0a 58 09 69 66 | 64 20 3d 20 73 74 64 69 |lse.X.if|d = stdi|
|00000930| 6e 3b 0a 58 0a 58 20 20 | 20 20 62 69 74 73 20 3d |n;.X.X | bits =|
|00000940| 20 70 62 6d 5f 72 65 61 | 64 70 62 6d 28 20 69 66 | pbm_rea|dpbm( if|
|00000950| 64 2c 20 26 63 6f 6c 73 | 2c 20 26 72 6f 77 73 20 |d, &cols|, &rows |
|00000960| 29 3b 0a 58 0a 58 20 20 | 20 20 69 66 20 28 20 69 |);.X.X | if ( i|
|00000970| 66 64 20 21 3d 20 73 74 | 64 69 6e 20 29 0a 58 09 |fd != st|din ).X.|
|00000980| 66 63 6c 6f 73 65 28 20 | 69 66 64 20 29 3b 0a 58 |fclose( |ifd );.X|
|00000990| 0a 58 20 20 20 20 66 6f | 72 20 28 20 72 6f 77 20 |.X fo|r ( row |
|000009a0| 3d 20 30 3b 20 72 6f 77 | 20 3c 20 72 6f 77 73 20 |= 0; row| < rows |
|000009b0| 2f 20 32 3b 20 72 6f 77 | 2b 2b 20 29 0a 58 20 20 |/ 2; row|++ ).X |
|000009c0| 20 20 20 20 20 20 66 6f | 72 20 28 20 63 6f 6c 20 | fo|r ( col |
|000009d0| 3d 20 30 3b 20 63 6f 6c | 20 3c 20 63 6f 6c 73 3b |= 0; col| < cols;|
|000009e0| 20 63 6f 6c 2b 2b 20 29 | 0a 58 09 20 20 20 20 7b | col++ )|.X. {|
|000009f0| 0a 58 09 20 20 20 20 62 | 20 3d 20 62 69 74 73 5b |.X. b| = bits[|
|00000a00| 72 6f 77 5d 5b 63 6f 6c | 5d 3b 0a 58 09 20 20 20 |row][col|];.X. |
|00000a10| 20 62 69 74 73 5b 72 6f | 77 5d 5b 63 6f 6c 5d 20 | bits[ro|w][col] |
|00000a20| 3d 20 62 69 74 73 5b 72 | 6f 77 73 2d 72 6f 77 2d |= bits[r|ows-row-|
|00000a30| 31 5d 5b 63 6f 6c 5d 3b | 0a 58 09 20 20 20 20 62 |1][col];|.X. b|
|00000a40| 69 74 73 5b 72 6f 77 73 | 2d 72 6f 77 2d 31 5d 5b |its[rows|-row-1][|
|00000a50| 63 6f 6c 5d 20 3d 20 62 | 3b 0a 58 09 20 20 20 20 |col] = b|;.X. |
|00000a60| 7d 0a 58 0a 58 20 20 20 | 20 70 62 6d 5f 77 72 69 |}.X.X | pbm_wri|
|00000a70| 74 65 70 62 6d 28 20 73 | 74 64 6f 75 74 2c 20 62 |tepbm( s|tdout, b|
|00000a80| 69 74 73 2c 20 63 6f 6c | 73 2c 20 72 6f 77 73 20 |its, col|s, rows |
|00000a90| 29 3b 0a 58 0a 58 20 20 | 20 20 65 78 69 74 28 20 |);.X.X | exit( |
|00000aa0| 30 20 29 3b 0a 58 20 20 | 20 20 7d 0a 53 48 41 52 |0 );.X | }.SHAR|
|00000ab0| 5f 45 4f 46 0a 69 66 20 | 74 65 73 74 20 31 33 30 |_EOF.if |test 130|
|00000ac0| 35 20 2d 6e 65 20 22 60 | 77 63 20 2d 63 20 3c 20 |5 -ne "`|wc -c < |
|00000ad0| 27 70 62 6d 66 6c 69 70 | 74 62 2e 63 27 60 22 0a |'pbmflip|tb.c'`".|
|00000ae0| 74 68 65 6e 0a 09 65 63 | 68 6f 20 73 68 61 72 3a |then..ec|ho shar:|
|00000af0| 20 65 72 72 6f 72 20 74 | 72 61 6e 73 6d 69 74 74 | error t|ransmitt|
|00000b00| 69 6e 67 20 22 27 70 62 | 6d 66 6c 69 70 74 62 2e |ing "'pb|mfliptb.|
|00000b10| 63 27 22 20 27 28 73 68 | 6f 75 6c 64 20 68 61 76 |c'" '(sh|ould hav|
|00000b20| 65 20 62 65 65 6e 20 31 | 33 30 35 20 63 68 61 72 |e been 1|305 char|
|00000b30| 61 63 74 65 72 73 29 27 | 0a 66 69 0a 66 69 20 23 |acters)'|.fi.fi #|
|00000b40| 20 65 6e 64 20 6f 66 20 | 6f 76 65 72 77 72 69 74 | end of |overwrit|
|00000b50| 69 6e 67 20 63 68 65 63 | 6b 0a 65 63 68 6f 20 73 |ing chec|k.echo s|
|00000b60| 68 61 72 3a 20 65 78 74 | 72 61 63 74 69 6e 67 20 |har: ext|racting |
|00000b70| 22 27 70 62 6d 66 6c 69 | 70 74 62 2e 31 27 22 20 |"'pbmfli|ptb.1'" |
|00000b80| 27 28 37 30 39 20 63 68 | 61 72 61 63 74 65 72 73 |'(709 ch|aracters|
|00000b90| 29 27 0a 69 66 20 74 65 | 73 74 20 2d 66 20 27 70 |)'.if te|st -f 'p|
|00000ba0| 62 6d 66 6c 69 70 74 62 | 2e 31 27 0a 74 68 65 6e |bmfliptb|.1'.then|
|00000bb0| 0a 09 65 63 68 6f 20 73 | 68 61 72 3a 20 77 69 6c |..echo s|har: wil|
|00000bc0| 6c 20 6e 6f 74 20 6f 76 | 65 72 2d 77 72 69 74 65 |l not ov|er-write|
|00000bd0| 20 65 78 69 73 74 69 6e | 67 20 66 69 6c 65 20 22 | existin|g file "|
|00000be0| 27 70 62 6d 66 6c 69 70 | 74 62 2e 31 27 22 0a 65 |'pbmflip|tb.1'".e|
|00000bf0| 6c 73 65 0a 73 65 64 20 | 27 73 2f 5e 58 2f 2f 27 |lse.sed |'s/^X//'|
|00000c00| 20 3c 3c 20 5c 53 48 41 | 52 5f 45 4f 46 20 3e 20 | << \SHA|R_EOF > |
|00000c10| 27 70 62 6d 66 6c 69 70 | 74 62 2e 31 27 0a 58 2e |'pbmflip|tb.1'.X.|
|00000c20| 54 48 20 70 62 6d 66 6c | 69 70 74 62 20 31 20 22 |TH pbmfl|iptb 1 "|
|00000c30| 33 31 20 41 75 67 75 73 | 74 20 31 39 38 38 22 0a |31 Augus|t 1988".|
|00000c40| 58 2e 53 48 20 4e 41 4d | 45 0a 58 70 62 6d 66 6c |X.SH NAM|E.Xpbmfl|
|00000c50| 69 70 74 62 20 2d 20 66 | 6c 69 70 20 61 20 70 6f |iptb - f|lip a po|
|00000c60| 72 74 61 62 6c 65 20 62 | 69 74 6d 61 70 20 74 6f |rtable b|itmap to|
|00000c70| 70 20 66 6f 72 20 62 6f | 74 74 6f 6d 0a 58 2e 53 |p for bo|ttom.X.S|
|00000c80| 48 20 53 59 4e 4f 50 53 | 49 53 0a 58 70 62 6d 66 |H SYNOPS|IS.Xpbmf|
|00000c90| 6c 69 70 74 62 20 5b 70 | 62 6d 66 69 6c 65 5d 0a |liptb [p|bmfile].|
|00000ca0| 58 2e 53 48 20 44 45 53 | 43 52 49 50 54 49 4f 4e |X.SH DES|CRIPTION|
|00000cb0| 0a 58 52 65 61 64 73 20 | 61 20 70 6f 72 74 61 62 |.XReads |a portab|
|00000cc0| 6c 65 20 62 69 74 6d 61 | 70 20 61 73 20 69 6e 70 |le bitma|p as inp|
|00000cd0| 75 74 2e 0a 58 46 6c 69 | 70 73 20 69 74 20 74 6f |ut..XFli|ps it to|
|00000ce0| 70 20 66 6f 72 20 62 6f | 74 74 6f 6d 20 61 6e 64 |p for bo|ttom and|
|00000cf0| 20 70 72 6f 64 75 63 65 | 73 20 61 20 70 6f 72 74 | produce|s a port|
|00000d00| 61 62 6c 65 20 62 69 74 | 6d 61 70 20 61 73 20 6f |able bit|map as o|
|00000d10| 75 74 70 75 74 2e 0a 58 | 2e 53 48 20 22 53 45 45 |utput..X|.SH "SEE|
|00000d20| 20 41 4c 53 4f 22 0a 58 | 70 62 6d 66 6c 69 70 6c | ALSO".X|pbmflipl|
|00000d30| 72 28 31 29 2c 20 70 62 | 6d 74 72 6e 73 70 6f 73 |r(1), pb|mtrnspos|
|00000d40| 28 31 29 2c 20 70 62 6d | 28 35 29 0a 58 2e 53 48 |(1), pbm|(5).X.SH|
|00000d50| 20 41 55 54 48 4f 52 0a | 58 43 6f 70 79 72 69 67 | AUTHOR.|XCopyrig|
|00000d60| 68 74 20 28 43 29 20 31 | 39 38 38 20 62 79 20 4a |ht (C) 1|988 by J|
|00000d70| 65 66 20 50 6f 73 6b 61 | 6e 7a 65 72 2e 0a 58 0a |ef Poska|nzer..X.|
|00000d80| 58 50 65 72 6d 69 73 73 | 69 6f 6e 20 74 6f 20 75 |XPermiss|ion to u|
|00000d90| 73 65 2c 20 63 6f 70 79 | 2c 20 6d 6f 64 69 66 79 |se, copy|, modify|
|00000da0| 2c 20 61 6e 64 20 64 69 | 73 74 72 69 62 75 74 65 |, and di|stribute|
|00000db0| 20 74 68 69 73 20 73 6f | 66 74 77 61 72 65 20 61 | this so|ftware a|
|00000dc0| 6e 64 20 69 74 73 0a 58 | 64 6f 63 75 6d 65 6e 74 |nd its.X|document|
|00000dd0| 61 74 69 6f 6e 20 66 6f | 72 20 61 6e 79 20 70 75 |ation fo|r any pu|
|00000de0| 72 70 6f 73 65 20 61 6e | 64 20 77 69 74 68 6f 75 |rpose an|d withou|
|00000df0| 74 20 66 65 65 20 69 73 | 20 68 65 72 65 62 79 20 |t fee is| hereby |
|00000e00| 67 72 61 6e 74 65 64 2c | 20 70 72 6f 76 69 64 65 |granted,| provide|
|00000e10| 64 0a 58 74 68 61 74 20 | 74 68 65 20 61 62 6f 76 |d.Xthat |the abov|
|00000e20| 65 20 63 6f 70 79 72 69 | 67 68 74 20 6e 6f 74 69 |e copyri|ght noti|
|00000e30| 63 65 20 61 70 70 65 61 | 72 20 69 6e 20 61 6c 6c |ce appea|r in all|
|00000e40| 20 63 6f 70 69 65 73 20 | 61 6e 64 20 74 68 61 74 | copies |and that|
|00000e50| 20 62 6f 74 68 20 74 68 | 61 74 0a 58 63 6f 70 79 | both th|at.Xcopy|
|00000e60| 72 69 67 68 74 20 6e 6f | 74 69 63 65 20 61 6e 64 |right no|tice and|
|00000e70| 20 74 68 69 73 20 70 65 | 72 6d 69 73 73 69 6f 6e | this pe|rmission|
|00000e80| 20 6e 6f 74 69 63 65 20 | 61 70 70 65 61 72 20 69 | notice |appear i|
|00000e90| 6e 20 73 75 70 70 6f 72 | 74 69 6e 67 0a 58 64 6f |n suppor|ting.Xdo|
|00000ea0| 63 75 6d 65 6e 74 61 74 | 69 6f 6e 2e 20 20 54 68 |cumentat|ion. Th|
|00000eb0| 69 73 20 73 6f 66 74 77 | 61 72 65 20 69 73 20 70 |is softw|are is p|
|00000ec0| 72 6f 76 69 64 65 64 20 | 22 61 73 20 69 73 22 20 |rovided |"as is" |
|00000ed0| 77 69 74 68 6f 75 74 20 | 65 78 70 72 65 73 73 20 |without |express |
|00000ee0| 6f 72 0a 58 69 6d 70 6c | 69 65 64 20 77 61 72 72 |or.Ximpl|ied warr|
|00000ef0| 61 6e 74 79 2e 0a 53 48 | 41 52 5f 45 4f 46 0a 69 |anty..SH|AR_EOF.i|
|00000f00| 66 20 74 65 73 74 20 37 | 30 39 20 2d 6e 65 20 22 |f test 7|09 -ne "|
|00000f10| 60 77 63 20 2d 63 20 3c | 20 27 70 62 6d 66 6c 69 |`wc -c <| 'pbmfli|
|00000f20| 70 74 62 2e 31 27 60 22 | 0a 74 68 65 6e 0a 09 65 |ptb.1'`"|.then..e|
|00000f30| 63 68 6f 20 73 68 61 72 | 3a 20 65 72 72 6f 72 20 |cho shar|: error |
|00000f40| 74 72 61 6e 73 6d 69 74 | 74 69 6e 67 20 22 27 70 |transmit|ting "'p|
|00000f50| 62 6d 66 6c 69 70 74 62 | 2e 31 27 22 20 27 28 73 |bmfliptb|.1'" '(s|
|00000f60| 68 6f 75 6c 64 20 68 61 | 76 65 20 62 65 65 6e 20 |hould ha|ve been |
|00000f70| 37 30 39 20 63 68 61 72 | 61 63 74 65 72 73 29 27 |709 char|acters)'|
|00000f80| 0a 66 69 0a 66 69 20 23 | 20 65 6e 64 20 6f 66 20 |.fi.fi #| end of |
|00000f90| 6f 76 65 72 77 72 69 74 | 69 6e 67 20 63 68 65 63 |overwrit|ing chec|
|00000fa0| 6b 0a 65 63 68 6f 20 73 | 68 61 72 3a 20 65 78 74 |k.echo s|har: ext|
|00000fb0| 72 61 63 74 69 6e 67 20 | 22 27 70 62 6d 69 6e 76 |racting |"'pbminv|
|00000fc0| 65 72 74 2e 63 27 22 20 | 27 28 31 32 32 34 20 63 |ert.c'" |'(1224 c|
|00000fd0| 68 61 72 61 63 74 65 72 | 73 29 27 0a 69 66 20 74 |haracter|s)'.if t|
|00000fe0| 65 73 74 20 2d 66 20 27 | 70 62 6d 69 6e 76 65 72 |est -f '|pbminver|
|00000ff0| 74 2e 63 27 0a 74 68 65 | 6e 0a 09 65 63 68 6f 20 |t.c'.the|n..echo |
|00001000| 73 68 61 72 3a 20 77 69 | 6c 6c 20 6e 6f 74 20 6f |shar: wi|ll not o|
|00001010| 76 65 72 2d 77 72 69 74 | 65 20 65 78 69 73 74 69 |ver-writ|e existi|
|00001020| 6e 67 20 66 69 6c 65 20 | 22 27 70 62 6d 69 6e 76 |ng file |"'pbminv|
|00001030| 65 72 74 2e 63 27 22 0a | 65 6c 73 65 0a 73 65 64 |ert.c'".|else.sed|
|00001040| 20 27 73 2f 5e 58 2f 2f | 27 20 3c 3c 20 5c 53 48 | 's/^X//|' << \SH|
|00001050| 41 52 5f 45 4f 46 20 3e | 20 27 70 62 6d 69 6e 76 |AR_EOF >| 'pbminv|
|00001060| 65 72 74 2e 63 27 0a 58 | 2f 2a 20 70 62 6d 69 6e |ert.c'.X|/* pbmin|
|00001070| 76 65 72 74 2e 63 20 2d | 20 72 65 61 64 20 61 20 |vert.c -| read a |
|00001080| 70 6f 72 74 61 62 6c 65 | 20 62 69 74 6d 61 70 20 |portable| bitmap |
|00001090| 61 6e 64 20 69 6e 76 65 | 72 74 20 69 74 0a 58 2a |and inve|rt it.X*|
|000010a0| 2a 0a 58 2a 2a 20 43 6f | 70 79 72 69 67 68 74 20 |*.X** Co|pyright |
|000010b0| 28 43 29 20 31 39 38 38 | 20 62 79 20 4a 65 66 20 |(C) 1988| by Jef |
|000010c0| 50 6f 73 6b 61 6e 7a 65 | 72 2e 0a 58 2a 2a 0a 58 |Poskanze|r..X**.X|
|000010d0| 2a 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 74 6f |** Permi|ssion to|
|000010e0| 20 75 73 65 2c 20 63 6f | 70 79 2c 20 6d 6f 64 69 | use, co|py, modi|
|000010f0| 66 79 2c 20 61 6e 64 20 | 64 69 73 74 72 69 62 75 |fy, and |distribu|
|00001100| 74 65 20 74 68 69 73 20 | 73 6f 66 74 77 61 72 65 |te this |software|
|00001110| 20 61 6e 64 20 69 74 73 | 0a 58 2a 2a 20 64 6f 63 | and its|.X** doc|
|00001120| 75 6d 65 6e 74 61 74 69 | 6f 6e 20 66 6f 72 20 61 |umentati|on for a|
|00001130| 6e 79 20 70 75 72 70 6f | 73 65 20 61 6e 64 20 77 |ny purpo|se and w|
|00001140| 69 74 68 6f 75 74 20 66 | 65 65 20 69 73 20 68 65 |ithout f|ee is he|
|00001150| 72 65 62 79 20 67 72 61 | 6e 74 65 64 2c 20 70 72 |reby gra|nted, pr|
|00001160| 6f 76 69 64 65 64 0a 58 | 2a 2a 20 74 68 61 74 20 |ovided.X|** that |
|00001170| 74 68 65 20 61 62 6f 76 | 65 20 63 6f 70 79 72 69 |the abov|e copyri|
|00001180| 67 68 74 20 6e 6f 74 69 | 63 65 20 61 70 70 65 61 |ght noti|ce appea|
|00001190| 72 20 69 6e 20 61 6c 6c | 20 63 6f 70 69 65 73 20 |r in all| copies |
|000011a0| 61 6e 64 20 74 68 61 74 | 20 62 6f 74 68 20 74 68 |and that| both th|
|000011b0| 61 74 0a 58 2a 2a 20 63 | 6f 70 79 72 69 67 68 74 |at.X** c|opyright|
|000011c0| 20 6e 6f 74 69 63 65 20 | 61 6e 64 20 74 68 69 73 | notice |and this|
|000011d0| 20 70 65 72 6d 69 73 73 | 69 6f 6e 20 6e 6f 74 69 | permiss|ion noti|
|000011e0| 63 65 20 61 70 70 65 61 | 72 20 69 6e 20 73 75 70 |ce appea|r in sup|
|000011f0| 70 6f 72 74 69 6e 67 0a | 58 2a 2a 20 64 6f 63 75 |porting.|X** docu|
|00001200| 6d 65 6e 74 61 74 69 6f | 6e 2e 20 20 54 68 69 73 |mentatio|n. This|
|00001210| 20 73 6f 66 74 77 61 72 | 65 20 69 73 20 70 72 6f | softwar|e is pro|
|00001220| 76 69 64 65 64 20 22 61 | 73 20 69 73 22 20 77 69 |vided "a|s is" wi|
|00001230| 74 68 6f 75 74 20 65 78 | 70 72 65 73 73 20 6f 72 |thout ex|press or|
|00001240| 0a 58 2a 2a 20 69 6d 70 | 6c 69 65 64 20 77 61 72 |.X** imp|lied war|
|00001250| 72 61 6e 74 79 2e 0a 58 | 2a 2f 0a 58 0a 58 23 69 |ranty..X|*/.X.X#i|
|00001260| 6e 63 6c 75 64 65 20 3c | 73 74 64 69 6f 2e 68 3e |nclude <|stdio.h>|
|00001270| 0a 58 23 69 6e 63 6c 75 | 64 65 20 22 70 62 6d 2e |.X#inclu|de "pbm.|
|00001280| 68 22 0a 58 0a 58 6d 61 | 69 6e 28 20 61 72 67 63 |h".X.Xma|in( argc|
|00001290| 2c 20 61 72 67 76 20 29 | 0a 58 69 6e 74 20 61 72 |, argv )|.Xint ar|
|000012a0| 67 63 3b 0a 58 63 68 61 | 72 20 2a 61 72 67 76 5b |gc;.Xcha|r *argv[|
|000012b0| 5d 3b 0a 58 20 20 20 20 | 7b 0a 58 20 20 20 20 46 |];.X |{.X F|
|000012c0| 49 4c 45 20 2a 69 66 64 | 3b 0a 58 20 20 20 20 62 |ILE *ifd|;.X b|
|000012d0| 69 74 20 2a 2a 62 69 74 | 73 3b 0a 58 20 20 20 20 |it **bit|s;.X |
|000012e0| 69 6e 74 20 72 6f 77 73 | 2c 20 63 6f 6c 73 2c 20 |int rows|, cols, |
|000012f0| 72 6f 77 2c 20 63 6f 6c | 3b 0a 58 0a 58 20 20 20 |row, col|;.X.X |
|00001300| 20 69 66 20 28 20 61 72 | 67 63 20 3e 20 32 20 29 | if ( ar|gc > 2 )|
|00001310| 0a 58 09 7b 0a 58 09 66 | 70 72 69 6e 74 66 28 20 |.X.{.X.f|printf( |
|00001320| 73 74 64 65 72 72 2c 20 | 22 75 73 61 67 65 3a 20 |stderr, |"usage: |
|00001330| 20 25 73 20 5b 70 62 6d | 66 69 6c 65 5d 5c 6e 22 | %s [pbm|file]\n"|
|00001340| 2c 20 61 72 67 76 5b 30 | 5d 20 29 3b 0a 58 09 65 |, argv[0|] );.X.e|
|00001350| 78 69 74 28 20 31 20 29 | 3b 0a 58 09 7d 0a 58 0a |xit( 1 )|;.X.}.X.|
|00001360| 58 20 20 20 20 69 66 20 | 28 20 61 72 67 63 20 3d |X if |( argc =|
|00001370| 3d 20 32 20 29 0a 58 09 | 7b 0a 58 20 20 20 20 20 |= 2 ).X.|{.X |
|00001380| 20 20 20 69 66 64 20 3d | 20 66 6f 70 65 6e 28 20 | ifd =| fopen( |
|00001390| 61 72 67 76 5b 31 5d 2c | 20 22 72 22 20 29 3b 0a |argv[1],| "r" );.|
|000013a0| 58 20 20 20 20 20 20 20 | 20 69 66 20 28 20 69 66 |X | if ( if|
|000013b0| 64 20 3d 3d 20 4e 55 4c | 4c 20 29 0a 58 09 20 20 |d == NUL|L ).X. |
|000013c0| 20 20 7b 0a 58 09 20 20 | 20 20 66 70 72 69 6e 74 | {.X. | fprint|
|000013d0| 66 28 20 73 74 64 65 72 | 72 2c 20 22 25 73 3a 20 |f( stder|r, "%s: |
|000013e0| 63 61 6e 27 74 20 6f 70 | 65 6e 2e 5c 6e 22 2c 20 |can't op|en.\n", |
|000013f0| 61 72 67 76 5b 31 5d 20 | 29 3b 0a 58 09 20 20 20 |argv[1] |);.X. |
|00001400| 20 65 78 69 74 28 20 31 | 20 29 3b 0a 58 09 20 20 | exit( 1| );.X. |
|00001410| 20 20 7d 0a 58 09 7d 0a | 58 20 20 20 20 65 6c 73 | }.X.}.|X els|
|00001420| 65 0a 58 09 69 66 64 20 | 3d 20 73 74 64 69 6e 3b |e.X.ifd |= stdin;|
|00001430| 0a 58 0a 58 20 20 20 20 | 62 69 74 73 20 3d 20 70 |.X.X |bits = p|
|00001440| 62 6d 5f 72 65 61 64 70 | 62 6d 28 20 69 66 64 2c |bm_readp|bm( ifd,|
|00001450| 20 26 63 6f 6c 73 2c 20 | 26 72 6f 77 73 20 29 3b | &cols, |&rows );|
|00001460| 0a 58 0a 58 20 20 20 20 | 69 66 20 28 20 69 66 64 |.X.X |if ( ifd|
|00001470| 20 21 3d 20 73 74 64 69 | 6e 20 29 0a 58 09 66 63 | != stdi|n ).X.fc|
|00001480| 6c 6f 73 65 28 20 69 66 | 64 20 29 3b 0a 58 0a 58 |lose( if|d );.X.X|
|00001490| 20 20 20 20 66 6f 72 20 | 28 20 72 6f 77 20 3d 20 | for |( row = |
|000014a0| 30 3b 20 72 6f 77 20 3c | 20 72 6f 77 73 3b 20 72 |0; row <| rows; r|
|000014b0| 6f 77 2b 2b 20 29 0a 58 | 20 20 20 20 20 20 20 20 |ow++ ).X| |
|000014c0| 66 6f 72 20 28 20 63 6f | 6c 20 3d 20 30 3b 20 63 |for ( co|l = 0; c|
|000014d0| 6f 6c 20 3c 20 63 6f 6c | 73 3b 20 63 6f 6c 2b 2b |ol < col|s; col++|
|000014e0| 20 29 0a 58 09 20 20 20 | 20 62 69 74 73 5b 72 6f | ).X. | bits[ro|
|000014f0| 77 5d 5b 63 6f 6c 5d 20 | 3d 20 28 20 62 69 74 73 |w][col] |= ( bits|
|00001500| 5b 72 6f 77 5d 5b 63 6f | 6c 5d 20 3d 3d 20 30 20 |[row][co|l] == 0 |
|00001510| 3f 20 31 20 3a 20 30 20 | 29 3b 0a 58 0a 58 20 20 |? 1 : 0 |);.X.X |
|00001520| 20 20 70 62 6d 5f 77 72 | 69 74 65 70 62 6d 28 20 | pbm_wr|itepbm( |
|00001530| 73 74 64 6f 75 74 2c 20 | 62 69 74 73 2c 20 63 6f |stdout, |bits, co|
|00001540| 6c 73 2c 20 72 6f 77 73 | 20 29 3b 0a 58 0a 58 20 |ls, rows| );.X.X |
|00001550| 20 20 20 65 78 69 74 28 | 20 30 20 29 3b 0a 58 20 | exit(| 0 );.X |
|00001560| 20 20 20 7d 0a 53 48 41 | 52 5f 45 4f 46 0a 69 66 | }.SHA|R_EOF.if|
|00001570| 20 74 65 73 74 20 31 32 | 32 34 20 2d 6e 65 20 22 | test 12|24 -ne "|
|00001580| 60 77 63 20 2d 63 20 3c | 20 27 70 62 6d 69 6e 76 |`wc -c <| 'pbminv|
|00001590| 65 72 74 2e 63 27 60 22 | 0a 74 68 65 6e 0a 09 65 |ert.c'`"|.then..e|
|000015a0| 63 68 6f 20 73 68 61 72 | 3a 20 65 72 72 6f 72 20 |cho shar|: error |
|000015b0| 74 72 61 6e 73 6d 69 74 | 74 69 6e 67 20 22 27 70 |transmit|ting "'p|
|000015c0| 62 6d 69 6e 76 65 72 74 | 2e 63 27 22 20 27 28 73 |bminvert|.c'" '(s|
|000015d0| 68 6f 75 6c 64 20 68 61 | 76 65 20 62 65 65 6e 20 |hould ha|ve been |
|000015e0| 31 32 32 34 20 63 68 61 | 72 61 63 74 65 72 73 29 |1224 cha|racters)|
|000015f0| 27 0a 66 69 0a 66 69 20 | 23 20 65 6e 64 20 6f 66 |'.fi.fi |# end of|
|00001600| 20 6f 76 65 72 77 72 69 | 74 69 6e 67 20 63 68 65 | overwri|ting che|
|00001610| 63 6b 0a 65 63 68 6f 20 | 73 68 61 72 3a 20 65 78 |ck.echo |shar: ex|
|00001620| 74 72 61 63 74 69 6e 67 | 20 22 27 70 62 6d 69 6e |tracting| "'pbmin|
|00001630| 76 65 72 74 2e 31 27 22 | 20 27 28 36 37 32 20 63 |vert.1'"| '(672 c|
|00001640| 68 61 72 61 63 74 65 72 | 73 29 27 0a 69 66 20 74 |haracter|s)'.if t|
|00001650| 65 73 74 20 2d 66 20 27 | 70 62 6d 69 6e 76 65 72 |est -f '|pbminver|
|00001660| 74 2e 31 27 0a 74 68 65 | 6e 0a 09 65 63 68 6f 20 |t.1'.the|n..echo |
|00001670| 73 68 61 72 3a 20 77 69 | 6c 6c 20 6e 6f 74 20 6f |shar: wi|ll not o|
|00001680| 76 65 72 2d 77 72 69 74 | 65 20 65 78 69 73 74 69 |ver-writ|e existi|
|00001690| 6e 67 20 66 69 6c 65 20 | 22 27 70 62 6d 69 6e 76 |ng file |"'pbminv|
|000016a0| 65 72 74 2e 31 27 22 0a | 65 6c 73 65 0a 73 65 64 |ert.1'".|else.sed|
|000016b0| 20 27 73 2f 5e 58 2f 2f | 27 20 3c 3c 20 5c 53 48 | 's/^X//|' << \SH|
|000016c0| 41 52 5f 45 4f 46 20 3e | 20 27 70 62 6d 69 6e 76 |AR_EOF >| 'pbminv|
|000016d0| 65 72 74 2e 31 27 0a 58 | 2e 54 48 20 70 62 6d 69 |ert.1'.X|.TH pbmi|
|000016e0| 6e 76 65 72 74 20 31 20 | 22 31 33 20 46 65 62 72 |nvert 1 |"13 Febr|
|000016f0| 75 61 72 79 20 31 39 38 | 38 22 0a 58 2e 53 48 20 |uary 198|8".X.SH |
|00001700| 4e 41 4d 45 0a 58 70 62 | 6d 69 6e 76 65 72 74 20 |NAME.Xpb|minvert |
|00001710| 2d 20 69 6e 76 65 72 74 | 20 61 20 70 6f 72 74 61 |- invert| a porta|
|00001720| 62 6c 65 20 62 69 74 6d | 61 70 0a 58 2e 53 48 20 |ble bitm|ap.X.SH |
|00001730| 53 59 4e 4f 50 53 49 53 | 0a 58 70 62 6d 69 6e 76 |SYNOPSIS|.Xpbminv|
|00001740| 65 72 74 20 5b 70 62 6d | 66 69 6c 65 5d 0a 58 2e |ert [pbm|file].X.|
|00001750| 53 48 20 44 45 53 43 52 | 49 50 54 49 4f 4e 0a 58 |SH DESCR|IPTION.X|
|00001760| 52 65 61 64 73 20 61 20 | 70 6f 72 74 61 62 6c 65 |Reads a |portable|
|00001770| 20 62 69 74 6d 61 70 20 | 61 73 20 69 6e 70 75 74 | bitmap |as input|
|00001780| 2e 0a 58 49 6e 76 65 72 | 74 73 20 69 74 20 62 6c |..XInver|ts it bl|
|00001790| 61 63 6b 20 66 6f 72 20 | 77 68 69 74 65 20 61 6e |ack for |white an|
|000017a0| 64 20 70 72 6f 64 75 63 | 65 73 20 61 20 70 6f 72 |d produc|es a por|
|000017b0| 74 61 62 6c 65 20 62 69 | 74 6d 61 70 20 61 73 20 |table bi|tmap as |
|000017c0| 6f 75 74 70 75 74 2e 0a | 58 2e 53 48 20 22 53 45 |output..|X.SH "SE|
|000017d0| 45 20 41 4c 53 4f 22 0a | 58 70 62 6d 28 35 29 0a |E ALSO".|Xpbm(5).|
|000017e0| 58 2e 53 48 20 41 55 54 | 48 4f 52 0a 58 43 6f 70 |X.SH AUT|HOR.XCop|
|000017f0| 79 72 69 67 68 74 20 28 | 43 29 20 31 39 38 38 20 |yright (|C) 1988 |
|00001800| 62 79 20 4a 65 66 20 50 | 6f 73 6b 61 6e 7a 65 72 |by Jef P|oskanzer|
|00001810| 2e 0a 58 0a 58 50 65 72 | 6d 69 73 73 69 6f 6e 20 |..X.XPer|mission |
|00001820| 74 6f 20 75 73 65 2c 20 | 63 6f 70 79 2c 20 6d 6f |to use, |copy, mo|
|00001830| 64 69 66 79 2c 20 61 6e | 64 20 64 69 73 74 72 69 |dify, an|d distri|
|00001840| 62 75 74 65 20 74 68 69 | 73 20 73 6f 66 74 77 61 |bute thi|s softwa|
|00001850| 72 65 20 61 6e 64 20 69 | 74 73 0a 58 64 6f 63 75 |re and i|ts.Xdocu|
|00001860| 6d 65 6e 74 61 74 69 6f | 6e 20 66 6f 72 20 61 6e |mentatio|n for an|
|00001870| 79 20 70 75 72 70 6f 73 | 65 20 61 6e 64 20 77 69 |y purpos|e and wi|
|00001880| 74 68 6f 75 74 20 66 65 | 65 20 69 73 20 68 65 72 |thout fe|e is her|
|00001890| 65 62 79 20 67 72 61 6e | 74 65 64 2c 20 70 72 6f |eby gran|ted, pro|
|000018a0| 76 69 64 65 64 0a 58 74 | 68 61 74 20 74 68 65 20 |vided.Xt|hat the |
|000018b0| 61 62 6f 76 65 20 63 6f | 70 79 72 69 67 68 74 20 |above co|pyright |
|000018c0| 6e 6f 74 69 63 65 20 61 | 70 70 65 61 72 20 69 6e |notice a|ppear in|
|000018d0| 20 61 6c 6c 20 63 6f 70 | 69 65 73 20 61 6e 64 20 | all cop|ies and |
|000018e0| 74 68 61 74 20 62 6f 74 | 68 20 74 68 61 74 0a 58 |that bot|h that.X|
|000018f0| 63 6f 70 79 72 69 67 68 | 74 20 6e 6f 74 69 63 65 |copyrigh|t notice|
|00001900| 20 61 6e 64 20 74 68 69 | 73 20 70 65 72 6d 69 73 | and thi|s permis|
|00001910| 73 69 6f 6e 20 6e 6f 74 | 69 63 65 20 61 70 70 65 |sion not|ice appe|
|00001920| 61 72 20 69 6e 20 73 75 | 70 70 6f 72 74 69 6e 67 |ar in su|pporting|
|00001930| 0a 58 64 6f 63 75 6d 65 | 6e 74 61 74 69 6f 6e 2e |.Xdocume|ntation.|
|00001940| 20 20 54 68 69 73 20 73 | 6f 66 74 77 61 72 65 20 | This s|oftware |
|00001950| 69 73 20 70 72 6f 76 69 | 64 65 64 20 22 61 73 20 |is provi|ded "as |
|00001960| 69 73 22 20 77 69 74 68 | 6f 75 74 20 65 78 70 72 |is" with|out expr|
|00001970| 65 73 73 20 6f 72 0a 58 | 69 6d 70 6c 69 65 64 20 |ess or.X|implied |
|00001980| 77 61 72 72 61 6e 74 79 | 2e 0a 53 48 41 52 5f 45 |warranty|..SHAR_E|
|00001990| 4f 46 0a 69 66 20 74 65 | 73 74 20 36 37 32 20 2d |OF.if te|st 672 -|
|000019a0| 6e 65 20 22 60 77 63 20 | 2d 63 20 3c 20 27 70 62 |ne "`wc |-c < 'pb|
|000019b0| 6d 69 6e 76 65 72 74 2e | 31 27 60 22 0a 74 68 65 |minvert.|1'`".the|
|000019c0| 6e 0a 09 65 63 68 6f 20 | 73 68 61 72 3a 20 65 72 |n..echo |shar: er|
|000019d0| 72 6f 72 20 74 72 61 6e | 73 6d 69 74 74 69 6e 67 |ror tran|smitting|
|000019e0| 20 22 27 70 62 6d 69 6e | 76 65 72 74 2e 31 27 22 | "'pbmin|vert.1'"|
|000019f0| 20 27 28 73 68 6f 75 6c | 64 20 68 61 76 65 20 62 | '(shoul|d have b|
|00001a00| 65 65 6e 20 36 37 32 20 | 63 68 61 72 61 63 74 65 |een 672 |characte|
|00001a10| 72 73 29 27 0a 66 69 0a | 66 69 20 23 20 65 6e 64 |rs)'.fi.|fi # end|
|00001a20| 20 6f 66 20 6f 76 65 72 | 77 72 69 74 69 6e 67 20 | of over|writing |
|00001a30| 63 68 65 63 6b 0a 65 63 | 68 6f 20 73 68 61 72 3a |check.ec|ho shar:|
|00001a40| 20 65 78 74 72 61 63 74 | 69 6e 67 20 22 27 70 62 | extract|ing "'pb|
|00001a50| 6d 63 72 6f 70 2e 63 27 | 22 20 27 28 34 32 34 31 |mcrop.c'|" '(4241|
|00001a60| 20 63 68 61 72 61 63 74 | 65 72 73 29 27 0a 69 66 | charact|ers)'.if|
|00001a70| 20 74 65 73 74 20 2d 66 | 20 27 70 62 6d 63 72 6f | test -f| 'pbmcro|
|00001a80| 70 2e 63 27 0a 74 68 65 | 6e 0a 09 65 63 68 6f 20 |p.c'.the|n..echo |
|00001a90| 73 68 61 72 3a 20 77 69 | 6c 6c 20 6e 6f 74 20 6f |shar: wi|ll not o|
|00001aa0| 76 65 72 2d 77 72 69 74 | 65 20 65 78 69 73 74 69 |ver-writ|e existi|
|00001ab0| 6e 67 20 66 69 6c 65 20 | 22 27 70 62 6d 63 72 6f |ng file |"'pbmcro|
|00001ac0| 70 2e 63 27 22 0a 65 6c | 73 65 0a 73 65 64 20 27 |p.c'".el|se.sed '|
|00001ad0| 73 2f 5e 58 2f 2f 27 20 | 3c 3c 20 5c 53 48 41 52 |s/^X//' |<< \SHAR|
|00001ae0| 5f 45 4f 46 20 3e 20 27 | 70 62 6d 63 72 6f 70 2e |_EOF > '|pbmcrop.|
|00001af0| 63 27 0a 58 2f 2a 20 70 | 62 6d 63 72 6f 70 2e 63 |c'.X/* p|bmcrop.c|
|00001b00| 20 2d 20 63 72 6f 70 20 | 61 20 70 6f 72 74 61 62 | - crop |a portab|
|00001b10| 6c 65 20 62 69 74 6d 61 | 70 0a 58 2a 2a 0a 58 2a |le bitma|p.X**.X*|
|00001b20| 2a 20 43 6f 70 79 72 69 | 67 68 74 20 28 43 29 20 |* Copyri|ght (C) |
|00001b30| 31 39 38 38 20 62 79 20 | 4a 65 66 20 50 6f 73 6b |1988 by |Jef Posk|
|00001b40| 61 6e 7a 65 72 2e 0a 58 | 2a 2a 0a 58 2a 2a 20 50 |anzer..X|**.X** P|
|00001b50| 65 72 6d 69 73 73 69 6f | 6e 20 74 6f 20 75 73 65 |ermissio|n to use|
|00001b60| 2c 20 63 6f 70 79 2c 20 | 6d 6f 64 69 66 79 2c 20 |, copy, |modify, |
|00001b70| 61 6e 64 20 64 69 73 74 | 72 69 62 75 74 65 20 74 |and dist|ribute t|
|00001b80| 68 69 73 20 73 6f 66 74 | 77 61 72 65 20 61 6e 64 |his soft|ware and|
|00001b90| 20 69 74 73 0a 58 2a 2a | 20 64 6f 63 75 6d 65 6e | its.X**| documen|
|00001ba0| 74 61 74 69 6f 6e 20 66 | 6f 72 20 61 6e 79 20 70 |tation f|or any p|
|00001bb0| 75 72 70 6f 73 65 20 61 | 6e 64 20 77 69 74 68 6f |urpose a|nd witho|
|00001bc0| 75 74 20 66 65 65 20 69 | 73 20 68 65 72 65 62 79 |ut fee i|s hereby|
|00001bd0| 20 67 72 61 6e 74 65 64 | 2c 20 70 72 6f 76 69 64 | granted|, provid|
|00001be0| 65 64 0a 58 2a 2a 20 74 | 68 61 74 20 74 68 65 20 |ed.X** t|hat the |
|00001bf0| 61 62 6f 76 65 20 63 6f | 70 79 72 69 67 68 74 20 |above co|pyright |
|00001c00| 6e 6f 74 69 63 65 20 61 | 70 70 65 61 72 20 69 6e |notice a|ppear in|
|00001c10| 20 61 6c 6c 20 63 6f 70 | 69 65 73 20 61 6e 64 20 | all cop|ies and |
|00001c20| 74 68 61 74 20 62 6f 74 | 68 20 74 68 61 74 0a 58 |that bot|h that.X|
|00001c30| 2a 2a 20 63 6f 70 79 72 | 69 67 68 74 20 6e 6f 74 |** copyr|ight not|
|00001c40| 69 63 65 20 61 6e 64 20 | 74 68 69 73 20 70 65 72 |ice and |this per|
|00001c50| 6d 69 73 73 69 6f 6e 20 | 6e 6f 74 69 63 65 20 61 |mission |notice a|
|00001c60| 70 70 65 61 72 20 69 6e | 20 73 75 70 70 6f 72 74 |ppear in| support|
|00001c70| 69 6e 67 0a 58 2a 2a 20 | 64 6f 63 75 6d 65 6e 74 |ing.X** |document|
|00001c80| 61 74 69 6f 6e 2e 20 20 | 54 68 69 73 20 73 6f 66 |ation. |This sof|
|00001c90| 74 77 61 72 65 20 69 73 | 20 70 72 6f 76 69 64 65 |tware is| provide|
|00001ca0| 64 20 22 61 73 20 69 73 | 22 20 77 69 74 68 6f 75 |d "as is|" withou|
|00001cb0| 74 20 65 78 70 72 65 73 | 73 20 6f 72 0a 58 2a 2a |t expres|s or.X**|
|00001cc0| 20 69 6d 70 6c 69 65 64 | 20 77 61 72 72 61 6e 74 | implied| warrant|
|00001cd0| 79 2e 0a 58 2a 2f 0a 58 | 0a 58 23 69 6e 63 6c 75 |y..X*/.X|.X#inclu|
|00001ce0| 64 65 20 3c 73 74 64 69 | 6f 2e 68 3e 0a 58 23 69 |de <stdi|o.h>.X#i|
|00001cf0| 6e 63 6c 75 64 65 20 22 | 70 62 6d 2e 68 22 0a 58 |nclude "|pbm.h".X|
|00001d00| 0a 58 6d 61 69 6e 28 20 | 61 72 67 63 2c 20 61 72 |.Xmain( |argc, ar|
|00001d10| 67 76 20 29 0a 58 69 6e | 74 20 61 72 67 63 3b 0a |gv ).Xin|t argc;.|
|00001d20| 58 63 68 61 72 20 2a 61 | 72 67 76 5b 5d 3b 0a 58 |Xchar *a|rgv[];.X|
|00001d30| 20 20 20 20 7b 0a 58 20 | 20 20 20 46 49 4c 45 20 | {.X | FILE |
|00001d40| 2a 69 66 64 3b 0a 58 20 | 20 20 20 62 69 74 20 2a |*ifd;.X | bit *|
|00001d50| 2a 62 69 74 73 2c 20 2a | 2a 6e 65 77 62 69 74 73 |*bits, *|*newbits|
|00001d60| 2c 20 62 61 63 6b 67 72 | 6f 75 6e 64 3b 0a 58 20 |, backgr|ound;.X |
|00001d70| 20 20 20 69 6e 74 20 61 | 72 67 6e 2c 20 62 61 63 | int a|rgn, bac|
|00001d80| 6b 64 65 66 61 75 6c 74 | 2c 20 63 3b 0a 58 20 20 |kdefault|, c;.X |
|00001d90| 20 20 69 6e 74 20 72 6f | 77 73 2c 20 63 6f 6c 73 | int ro|ws, cols|
|00001da0| 2c 20 72 6f 77 2c 20 63 | 6f 6c 2c 20 6e 65 77 72 |, row, c|ol, newr|
|00001db0| 6f 77 73 2c 20 6e 65 77 | 63 6f 6c 73 3b 0a 58 20 |ows, new|cols;.X |
|00001dc0| 20 20 20 69 6e 74 20 74 | 6f 70 2c 20 62 6f 74 74 | int t|op, bott|
|00001dd0| 6f 6d 2c 20 6c 65 66 74 | 2c 20 72 69 67 68 74 3b |om, left|, right;|
|00001de0| 0a 58 20 20 20 20 63 68 | 61 72 20 2a 75 73 61 67 |.X ch|ar *usag|
|00001df0| 65 20 3d 20 22 75 73 61 | 67 65 3a 20 20 25 73 20 |e = "usa|ge: %s |
|00001e00| 5b 2d 30 5d 2f 5b 2d 77 | 5d 2f 5b 2d 31 5d 2f 5b |[-0]/[-w|]/[-1]/[|
|00001e10| 2d 62 5d 20 5b 70 62 6d | 66 69 6c 65 5d 5c 6e 22 |-b] [pbm|file]\n"|
|00001e20| 3b 0a 58 0a 58 20 20 20 | 20 61 72 67 6e 20 3d 20 |;.X.X | argn = |
|00001e30| 31 3b 0a 58 20 20 20 20 | 62 61 63 6b 64 65 66 61 |1;.X |backdefa|
|00001e40| 75 6c 74 20 3d 20 31 3b | 0a 58 0a 58 20 20 20 20 |ult = 1;|.X.X |
|00001e50| 2f 2a 20 43 68 65 63 6b | 20 66 6f 72 20 66 6c 61 |/* Check| for fla|
|00001e60| 67 73 2e 20 2a 2f 0a 58 | 20 20 20 20 69 66 20 28 |gs. */.X| if (|
|00001e70| 20 61 72 67 6e 20 3c 20 | 61 72 67 63 20 29 0a 58 | argn < |argc ).X|
|00001e80| 09 7b 0a 58 09 69 66 20 | 28 20 61 72 67 76 5b 61 |.{.X.if |( argv[a|
|00001e90| 72 67 6e 5d 5b 30 5d 20 | 3d 3d 20 27 2d 27 20 29 |rgn][0] |== '-' )|
|00001ea0| 0a 58 09 20 20 20 20 7b | 0a 58 09 20 20 20 20 69 |.X. {|.X. i|
|00001eb0| 66 20 28 20 28 20 61 72 | 67 76 5b 61 72 67 6e 5d |f ( ( ar|gv[argn]|
|00001ec0| 5b 31 5d 20 3d 3d 20 27 | 30 27 20 7c 7c 20 61 72 |[1] == '|0' || ar|
|00001ed0| 67 76 5b 61 72 67 6e 5d | 5b 31 5d 20 3d 3d 20 27 |gv[argn]|[1] == '|
|00001ee0| 77 27 20 7c 7c 0a 58 09 | 09 20 20 20 61 72 67 76 |w' ||.X.|. argv|
|00001ef0| 5b 61 72 67 6e 5d 5b 31 | 5d 20 3d 3d 20 27 57 27 |[argn][1|] == 'W'|
|00001f00| 20 29 20 26 26 20 61 72 | 67 76 5b 61 72 67 6e 5d | ) && ar|gv[argn]|
|00001f10| 5b 32 5d 20 3d 3d 20 27 | 5c 30 27 20 29 0a 58 09 |[2] == '|\0' ).X.|
|00001f20| 09 7b 0a 58 09 09 62 61 | 63 6b 64 65 66 61 75 6c |.{.X..ba|ckdefaul|
|00001f30| 74 20 3d 20 30 3b 0a 58 | 09 09 62 61 63 6b 67 72 |t = 0;.X|..backgr|
|00001f40| 6f 75 6e 64 20 3d 20 30 | 3b 0a 58 09 09 7d 0a 58 |ound = 0|;.X..}.X|
|00001f50| 09 20 20 20 20 65 6c 73 | 65 20 69 66 20 28 20 28 |. els|e if ( (|
|00001f60| 20 61 72 67 76 5b 61 72 | 67 6e 5d 5b 31 5d 20 3d | argv[ar|gn][1] =|
|00001f70| 3d 20 27 31 27 20 7c 7c | 20 61 72 67 76 5b 61 72 |= '1' ||| argv[ar|
|00001f80| 67 6e 5d 5b 31 5d 20 3d | 3d 20 27 62 27 20 7c 7c |gn][1] =|= 'b' |||
|00001f90| 0a 58 09 09 09 61 72 67 | 76 5b 61 72 67 6e 5d 5b |.X...arg|v[argn][|
|00001fa0| 31 5d 20 3d 3d 20 27 42 | 27 20 29 20 26 26 20 61 |1] == 'B|' ) && a|
|00001fb0| 72 67 76 5b 61 72 67 6e | 5d 5b 32 5d 20 3d 3d 20 |rgv[argn|][2] == |
|00001fc0| 27 5c 30 27 20 29 0a 58 | 09 09 7b 0a 58 09 09 62 |'\0' ).X|..{.X..b|
|00001fd0| 61 63 6b 64 65 66 61 75 | 6c 74 20 3d 20 30 3b 0a |ackdefau|lt = 0;.|
|00001fe0| 58 09 09 62 61 63 6b 67 | 72 6f 75 6e 64 20 3d 20 |X..backg|round = |
|00001ff0| 31 3b 0a 58 09 09 7d 0a | 58 09 20 20 20 20 65 6c |1;.X..}.|X. el|
|00002000| 73 65 0a 58 09 09 7b 0a | 58 09 09 66 70 72 69 6e |se.X..{.|X..fprin|
|00002010| 74 66 28 20 73 74 64 65 | 72 72 2c 20 75 73 61 67 |tf( stde|rr, usag|
|00002020| 65 2c 20 61 72 67 76 5b | 30 5d 20 29 3b 0a 58 09 |e, argv[|0] );.X.|
|00002030| 09 65 78 69 74 28 20 31 | 20 29 3b 0a 58 09 09 7d |.exit( 1| );.X..}|
|00002040| 0a 58 09 20 20 20 20 61 | 72 67 6e 2b 2b 3b 0a 58 |.X. a|rgn++;.X|
|00002050| 09 20 20 20 20 7d 0a 58 | 09 7d 0a 58 0a 58 20 20 |. }.X|.}.X.X |
|00002060| 20 20 69 66 20 28 20 61 | 72 67 6e 20 3d 3d 20 61 | if ( a|rgn == a|
|00002070| 72 67 63 20 29 0a 58 09 | 69 66 64 20 3d 20 73 74 |rgc ).X.|ifd = st|
|00002080| 64 69 6e 3b 0a 58 20 20 | 20 20 65 6c 73 65 0a 58 |din;.X | else.X|
|00002090| 09 7b 0a 58 20 20 20 20 | 20 20 20 20 69 66 64 20 |.{.X | ifd |
|000020a0| 3d 20 66 6f 70 65 6e 28 | 20 61 72 67 76 5b 61 72 |= fopen(| argv[ar|
|000020b0| 67 6e 5d 2c 20 22 72 22 | 20 29 3b 0a 58 20 20 20 |gn], "r"| );.X |
|000020c0| 20 20 20 20 20 69 66 20 | 28 20 69 66 64 20 3d 3d | if |( ifd ==|
|000020d0| 20 4e 55 4c 4c 20 29 0a | 58 09 20 20 20 20 7b 0a | NULL ).|X. {.|
|000020e0| 58 09 20 20 20 20 66 70 | 72 69 6e 74 66 28 20 73 |X. fp|rintf( s|
|000020f0| 74 64 65 72 72 2c 20 22 | 25 73 3a 20 63 61 6e 27 |tderr, "|%s: can'|
|00002100| 74 20 6f 70 65 6e 2e 5c | 6e 22 2c 20 61 72 67 76 |t open.\|n", argv|
|00002110| 5b 61 72 67 6e 5d 20 29 | 3b 0a 58 09 20 20 20 20 |[argn] )|;.X. |
|00002120| 65 78 69 74 28 20 31 20 | 29 3b 0a 58 09 20 20 20 |exit( 1 |);.X. |
|00002130| 20 7d 0a 58 09 61 72 67 | 6e 2b 2b 3b 0a 58 09 7d | }.X.arg|n++;.X.}|
|00002140| 0a 58 20 20 20 20 62 69 | 74 73 20 3d 20 70 62 6d |.X bi|ts = pbm|
|00002150| 5f 72 65 61 64 70 62 6d | 28 20 69 66 64 2c 20 26 |_readpbm|( ifd, &|
|00002160| 63 6f 6c 73 2c 20 26 72 | 6f 77 73 20 29 3b 0a 58 |cols, &r|ows );.X|
|00002170| 20 20 20 20 69 66 20 28 | 20 69 66 64 20 21 3d 20 | if (| ifd != |
|00002180| 73 74 64 69 6e 20 29 0a | 58 09 66 63 6c 6f 73 65 |stdin ).|X.fclose|
|00002190| 28 20 69 66 64 20 29 3b | 0a 58 0a 58 20 20 20 20 |( ifd );|.X.X |
|000021a0| 69 66 20 28 20 61 72 67 | 6e 20 21 3d 20 61 72 67 |if ( arg|n != arg|
|000021b0| 63 20 29 0a 58 09 7b 0a | 58 09 66 70 72 69 6e 74 |c ).X.{.|X.fprint|
|000021c0| 66 28 20 73 74 64 65 72 | 72 2c 20 75 73 61 67 65 |f( stder|r, usage|
|000021d0| 2c 20 61 72 67 76 5b 30 | 5d 20 29 3b 0a 58 09 65 |, argv[0|] );.X.e|
|000021e0| 78 69 74 28 20 31 20 29 | 3b 0a 58 09 7d 0a 58 0a |xit( 1 )|;.X.}.X.|
|000021f0| 58 20 20 20 20 69 66 20 | 28 20 62 61 63 6b 64 65 |X if |( backde|
|00002200| 66 61 75 6c 74 20 29 0a | 58 09 7b 0a 58 09 2f 2a |fault ).|X.{.X./*|
|00002210| 20 47 75 65 73 73 20 77 | 68 61 74 20 74 68 65 20 | Guess w|hat the |
|00002220| 62 61 63 6b 67 72 6f 75 | 6e 64 20 69 73 20 62 79 |backgrou|nd is by|
|00002230| 20 6c 6f 6f 6b 69 6e 67 | 20 66 6f 72 20 61 6e 20 | looking| for an |
|00002240| 65 64 67 65 20 6f 66 0a | 58 09 2a 2a 20 61 6c 6c |edge of.|X.** all|
|00002250| 20 6f 6e 65 20 63 6f 6c | 6f 72 2e 0a 58 09 2a 2f | one col|or..X.*/|
|00002260| 0a 58 09 63 20 3d 20 30 | 3b 0a 58 09 66 6f 72 20 |.X.c = 0|;.X.for |
|00002270| 28 20 63 6f 6c 20 3d 20 | 30 3b 20 63 6f 6c 20 3c |( col = |0; col <|
|00002280| 20 63 6f 6c 73 3b 20 63 | 6f 6c 2b 2b 20 29 0a 58 | cols; c|ol++ ).X|
|00002290| 09 20 20 20 20 63 20 2b | 3d 20 62 69 74 73 5b 30 |. c +|= bits[0|
|000022a0| 5d 5b 63 6f 6c 5d 3b 0a | 58 09 69 66 20 28 20 63 |][col];.|X.if ( c|
|000022b0| 20 3d 3d 20 30 20 29 0a | 58 09 20 20 20 20 62 61 | == 0 ).|X. ba|
|000022c0| 63 6b 67 72 6f 75 6e 64 | 20 3d 20 30 3b 0a 58 09 |ckground| = 0;.X.|
|000022d0| 65 6c 73 65 20 69 66 20 | 28 20 63 20 3d 3d 20 63 |else if |( c == c|
|000022e0| 6f 6c 73 20 29 0a 58 09 | 20 20 20 20 62 61 63 6b |ols ).X.| back|
|000022f0| 67 72 6f 75 6e 64 20 3d | 20 31 3b 0a 58 09 65 6c |ground =| 1;.X.el|
|00002300| 73 65 0a 58 09 20 20 20 | 20 7b 0a 58 09 20 20 20 |se.X. | {.X. |
|00002310| 20 63 20 3d 20 30 3b 0a | 58 09 20 20 20 20 66 6f | c = 0;.|X. fo|
|00002320| 72 20 28 20 63 6f 6c 20 | 3d 20 30 3b 20 63 6f 6c |r ( col |= 0; col|
|00002330| 20 3c 20 63 6f 6c 73 3b | 20 63 6f 6c 2b 2b 20 29 | < cols;| col++ )|
|00002340| 0a 58 09 09 63 20 2b 3d | 20 62 69 74 73 5b 72 6f |.X..c +=| bits[ro|
|00002350| 77 73 20 2d 20 31 5d 5b | 63 6f 6c 5d 3b 0a 58 09 |ws - 1][|col];.X.|
|00002360| 20 20 20 20 69 66 20 28 | 20 63 20 3d 3d 20 30 20 | if (| c == 0 |
|00002370| 29 0a 58 09 09 62 61 63 | 6b 67 72 6f 75 6e 64 20 |).X..bac|kground |
|00002380| 3d 20 30 3b 0a 58 09 20 | 20 20 20 65 6c 73 65 20 |= 0;.X. | else |
|00002390| 69 66 20 28 20 63 20 3d | 3d 20 63 6f 6c 73 20 29 |if ( c =|= cols )|
|000023a0| 0a 58 09 09 62 61 63 6b | 67 72 6f 75 6e 64 20 3d |.X..back|ground =|
|000023b0| 20 31 3b 0a 58 09 20 20 | 20 20 65 6c 73 65 0a 58 | 1;.X. | else.X|
|000023c0| 09 09 7b 0a 58 09 09 63 | 20 3d 20 30 3b 0a 58 09 |..{.X..c| = 0;.X.|
|000023d0| 09 66 6f 72 20 28 20 72 | 6f 77 20 3d 20 30 3b 20 |.for ( r|ow = 0; |
|000023e0| 72 6f 77 20 3c 20 72 6f | 77 73 3b 20 72 6f 77 2b |row < ro|ws; row+|
|000023f0| 2b 20 29 0a 58 09 09 20 | 20 20 20 63 20 2b 3d 20 |+ ).X.. | c += |
|00002400| 62 69 74 73 5b 72 6f 77 | 5d 5b 30 5d 3b 0a 58 09 |bits[row|][0];.X.|
|00002410| 09 69 66 20 28 20 63 20 | 3d 3d 20 30 20 29 0a 58 |.if ( c |== 0 ).X|
|00002420| 09 09 20 20 20 20 62 61 | 63 6b 67 72 6f 75 6e 64 |.. ba|ckground|
|00002430| 20 3d 20 30 3b 0a 58 09 | 09 65 6c 73 65 20 69 66 | = 0;.X.|.else if|
|00002440| 20 28 20 63 20 3d 3d 20 | 72 6f 77 73 20 29 0a 58 | ( c == |rows ).X|
|00002450| 09 09 20 20 20 20 62 61 | 63 6b 67 72 6f 75 6e 64 |.. ba|ckground|
|00002460| 20 3d 20 31 3b 0a 58 09 | 09 65 6c 73 65 0a 58 09 | = 1;.X.|.else.X.|
|00002470| 09 20 20 20 20 7b 0a 58 | 09 09 20 20 20 20 63 20 |. {.X|.. c |
|00002480| 3d 20 30 3b 0a 58 09 09 | 20 20 20 20 66 6f 72 20 |= 0;.X..| for |
|00002490| 28 20 72 6f 77 20 3d 20 | 30 3b 20 72 6f 77 20 3c |( row = |0; row <|
|000024a0| 20 72 6f 77 73 3b 20 72 | 6f 77 2b 2b 20 29 0a 58 | rows; r|ow++ ).X|
|000024b0| 09 09 09 63 20 2b 3d 20 | 62 69 74 73 5b 72 6f 77 |...c += |bits[row|
|000024c0| 5d 5b 63 6f 6c 73 20 2d | 20 31 5d 3b 0a 58 09 09 |][cols -| 1];.X..|
|000024d0| 20 20 20 20 69 66 20 28 | 20 63 20 3d 3d 20 30 20 | if (| c == 0 |
|000024e0| 29 0a 58 09 09 09 62 61 | 63 6b 67 72 6f 75 6e 64 |).X...ba|ckground|
|000024f0| 20 3d 20 30 3b 0a 58 09 | 09 20 20 20 20 65 6c 73 | = 0;.X.|. els|
|00002500| 65 20 69 66 20 28 20 63 | 20 3d 3d 20 72 6f 77 73 |e if ( c| == rows|
|00002510| 20 29 0a 58 09 09 09 62 | 61 63 6b 67 72 6f 75 6e | ).X...b|ackgroun|
|00002520| 64 20 3d 20 31 3b 0a 58 | 09 09 20 20 20 20 65 6c |d = 1;.X|.. el|
|00002530| 73 65 0a 58 09 09 09 7b | 0a 58 09 09 09 66 70 72 |se.X...{|.X...fpr|
|00002540| 69 6e 74 66 28 20 73 74 | 64 65 72 72 2c 20 22 28 |intf( st|derr, "(|
|00002550| 6e 6f 74 68 69 6e 67 20 | 74 6f 20 63 72 6f 70 2c |nothing |to crop,|
|00002560| 20 63 6f 6e 74 69 6e 75 | 69 6e 67 29 5c 6e 22 20 | continu|ing)\n" |
|00002570| 29 3b 0a 58 09 09 09 62 | 61 63 6b 67 72 6f 75 6e |);.X...b|ackgroun|
|00002580| 64 20 3d 20 30 3b 09 09 | 2f 2a 20 61 72 62 69 74 |d = 0;..|/* arbit|
|00002590| 72 61 72 79 20 2a 2f 0a | 58 09 09 09 7d 0a 58 09 |rary */.|X...}.X.|
|000025a0| 09 20 20 20 20 7d 0a 58 | 09 09 7d 0a 58 09 20 20 |. }.X|..}.X. |
|000025b0| 20 20 7d 0a 58 09 7d 0a | 58 0a 58 20 20 20 20 2f | }.X.}.|X.X /|
|000025c0| 2a 20 46 69 6e 64 20 66 | 69 72 73 74 20 6e 6f 6e |* Find f|irst non|
|000025d0| 2d 62 61 63 6b 67 72 6f | 75 6e 64 20 6c 69 6e 65 |-backgro|und line|
|000025e0| 2e 20 2a 2f 0a 58 20 20 | 20 20 66 6f 72 20 28 20 |. */.X | for ( |
|000025f0| 74 6f 70 20 3d 20 30 3b | 20 74 6f 70 20 3c 20 72 |top = 0;| top < r|
|00002600| 6f 77 73 3b 20 74 6f 70 | 2b 2b 20 29 0a 58 09 66 |ows; top|++ ).X.f|
|00002610| 6f 72 20 28 20 63 6f 6c | 20 3d 20 30 3b 20 63 6f |or ( col| = 0; co|
|00002620| 6c 20 3c 20 63 6f 6c 73 | 3b 20 63 6f 6c 2b 2b 20 |l < cols|; col++ |
|00002630| 29 0a 58 09 20 20 20 20 | 69 66 20 28 20 62 69 74 |).X. |if ( bit|
|00002640| 73 5b 74 6f 70 5d 5b 63 | 6f 6c 5d 20 21 3d 20 62 |s[top][c|ol] != b|
|00002650| 61 63 6b 67 72 6f 75 6e | 64 20 29 0a 58 09 09 67 |ackgroun|d ).X..g|
|00002660| 6f 74 6f 20 67 6f 74 74 | 6f 70 3b 0a 58 67 6f 74 |oto gott|op;.Xgot|
|00002670| 74 6f 70 3a 0a 58 0a 58 | 20 20 20 20 2f 2a 20 46 |top:.X.X| /* F|
|00002680| 69 6e 64 20 6c 61 73 74 | 20 6e 6f 6e 2d 62 61 63 |ind last| non-bac|
|00002690| 6b 67 72 6f 75 6e 64 20 | 6c 69 6e 65 2e 20 2a 2f |kground |line. */|
|000026a0| 0a 58 20 20 20 20 66 6f | 72 20 28 20 62 6f 74 74 |.X fo|r ( bott|
|000026b0| 6f 6d 20 3d 20 72 6f 77 | 73 20 2d 20 31 3b 20 62 |om = row|s - 1; b|
|000026c0| 6f 74 74 6f 6d 20 3e 3d | 20 74 6f 70 3b 20 62 6f |ottom >=| top; bo|
|000026d0| 74 74 6f 6d 2d 2d 20 29 | 0a 58 09 66 6f 72 20 28 |ttom-- )|.X.for (|
|000026e0| 20 63 6f 6c 20 3d 20 30 | 3b 20 63 6f 6c 20 3c 20 | col = 0|; col < |
|000026f0| 63 6f 6c 73 3b 20 63 6f | 6c 2b 2b 20 29 0a 58 09 |cols; co|l++ ).X.|
|00002700| 20 20 20 20 69 66 20 28 | 20 62 69 74 73 5b 62 6f | if (| bits[bo|
|00002710| 74 74 6f 6d 5d 5b 63 6f | 6c 5d 20 21 3d 20 62 61 |ttom][co|l] != ba|
|00002720| 63 6b 67 72 6f 75 6e 64 | 20 29 0a 58 09 09 67 6f |ckground| ).X..go|
|00002730| 74 6f 20 67 6f 74 62 6f | 74 74 6f 6d 3b 0a 58 67 |to gotbo|ttom;.Xg|
|00002740| 6f 74 62 6f 74 74 6f 6d | 3a 0a 58 0a 58 20 20 20 |otbottom|:.X.X |
|00002750| 20 2f 2a 20 46 69 6e 64 | 20 66 69 72 73 74 20 6e | /* Find| first n|
|00002760| 6f 6e 2d 62 61 63 6b 67 | 72 6f 75 6e 64 20 63 6f |on-backg|round co|
|00002770| 6c 75 6d 6e 2e 20 2a 2f | 0a 58 20 20 20 20 66 6f |lumn. */|.X fo|
|00002780| 72 20 28 20 6c 65 66 74 | 20 3d 20 30 3b 20 6c 65 |r ( left| = 0; le|
|00002790| 66 74 20 3c 20 63 6f 6c | 73 3b 20 6c 65 66 74 2b |ft < col|s; left+|
|000027a0| 2b 20 29 0a 58 09 66 6f | 72 20 28 20 72 6f 77 20 |+ ).X.fo|r ( row |
|000027b0| 3d 20 74 6f 70 3b 20 72 | 6f 77 20 3c 3d 20 62 6f |= top; r|ow <= bo|
|000027c0| 74 74 6f 6d 3b 20 72 6f | 77 2b 2b 20 29 0a 58 09 |ttom; ro|w++ ).X.|
|000027d0| 20 20 20 20 69 66 20 28 | 20 62 69 74 73 5b 72 6f | if (| bits[ro|
|000027e0| 77 5d 5b 6c 65 66 74 5d | 20 21 3d 20 62 61 63 6b |w][left]| != back|
|000027f0| 67 72 6f 75 6e 64 20 29 | 0a 58 09 09 67 6f 74 6f |ground )|.X..goto|
|00002800| 20 67 6f 74 6c 65 66 74 | 3b 0a 58 67 6f 74 6c 65 | gotleft|;.Xgotle|
|00002810| 66 74 3a 0a 58 0a 58 20 | 20 20 20 2f 2a 20 46 69 |ft:.X.X | /* Fi|
|00002820| 6e 64 20 6c 61 73 74 20 | 6e 6f 6e 2d 62 61 63 6b |nd last |non-back|
|00002830| 67 72 6f 75 6e 64 20 63 | 6f 6c 75 6d 6e 2e 20 2a |ground c|olumn. *|
|00002840| 2f 0a 58 20 20 20 20 66 | 6f 72 20 28 20 72 69 67 |/.X f|or ( rig|
|00002850| 68 74 20 3d 20 63 6f 6c | 73 20 2d 20 31 3b 20 72 |ht = col|s - 1; r|
|00002860| 69 67 68 74 20 3e 20 6c | 65 66 74 3b 20 72 69 67 |ight > l|eft; rig|
|00002870| 68 74 2d 2d 20 29 0a 58 | 09 66 6f 72 20 28 20 72 |ht-- ).X|.for ( r|
|00002880| 6f 77 20 3d 20 74 6f 70 | 3b 20 72 6f 77 20 3c 3d |ow = top|; row <=|
|00002890| 20 62 6f 74 74 6f 6d 3b | 20 72 6f 77 2b 2b 20 29 | bottom;| row++ )|
|000028a0| 0a 58 09 20 20 20 20 69 | 66 20 28 20 62 69 74 73 |.X. i|f ( bits|
|000028b0| 5b 72 6f 77 5d 5b 72 69 | 67 68 74 5d 20 21 3d 20 |[row][ri|ght] != |
|000028c0| 62 61 63 6b 67 72 6f 75 | 6e 64 20 29 0a 58 09 09 |backgrou|nd ).X..|
|000028d0| 67 6f 74 6f 20 67 6f 74 | 72 69 67 68 74 3b 0a 58 |goto got|right;.X|
|000028e0| 67 6f 74 72 69 67 68 74 | 3a 0a 58 0a 58 20 20 20 |gotright|:.X.X |
|000028f0| 20 69 66 20 28 20 74 6f | 70 20 3e 20 30 20 29 0a | if ( to|p > 0 ).|
|00002900| 58 09 66 70 72 69 6e 74 | 66 28 20 73 74 64 65 72 |X.fprint|f( stder|
|00002910| 72 2c 20 22 28 63 72 6f | 70 70 69 6e 67 20 25 64 |r, "(cro|pping %d|
|00002920| 20 25 64 2d 72 6f 77 73 | 20 6f 66 66 20 74 68 65 | %d-rows| off the|
|00002930| 20 74 6f 70 29 5c 6e 22 | 2c 0a 58 09 09 20 74 6f | top)\n"|,.X.. to|
|00002940| 70 2c 20 62 61 63 6b 67 | 72 6f 75 6e 64 20 29 3b |p, backg|round );|
|00002950| 0a 58 20 20 20 20 69 66 | 20 28 20 62 6f 74 74 6f |.X if| ( botto|
|00002960| 6d 20 3c 20 72 6f 77 73 | 20 2d 20 31 20 29 0a 58 |m < rows| - 1 ).X|
|00002970| 09 66 70 72 69 6e 74 66 | 28 20 73 74 64 65 72 72 |.fprintf|( stderr|
|00002980| 2c 20 22 28 63 72 6f 70 | 70 69 6e 67 20 25 64 20 |, "(crop|ping %d |
|00002990| 25 64 2d 72 6f 77 73 20 | 6f 66 66 20 74 68 65 20 |%d-rows |off the |
|000029a0| 62 6f 74 74 6f 6d 29 5c | 6e 22 2c 0a 58 09 09 20 |bottom)\|n",.X.. |
|000029b0| 72 6f 77 73 20 2d 20 31 | 20 2d 20 62 6f 74 74 6f |rows - 1| - botto|
|000029c0| 6d 2c 20 62 61 63 6b 67 | 72 6f 75 6e 64 20 29 3b |m, backg|round );|
|000029d0| 0a 58 20 20 20 20 69 66 | 20 28 20 6c 65 66 74 20 |.X if| ( left |
|000029e0| 3e 20 30 20 29 0a 58 09 | 66 70 72 69 6e 74 66 28 |> 0 ).X.|fprintf(|
|000029f0| 20 73 74 64 65 72 72 2c | 20 22 28 63 72 6f 70 70 | stderr,| "(cropp|
|00002a00| 69 6e 67 20 25 64 20 25 | 64 2d 63 6f 6c 73 20 6f |ing %d %|d-cols o|
|00002a10| 66 66 20 74 68 65 20 6c | 65 66 74 29 5c 6e 22 2c |ff the l|eft)\n",|
|00002a20| 0a 58 09 09 20 6c 65 66 | 74 2c 20 62 61 63 6b 67 |.X.. lef|t, backg|
|00002a30| 72 6f 75 6e 64 20 29 3b | 0a 58 20 20 20 20 69 66 |round );|.X if|
|00002a40| 20 28 20 72 69 67 68 74 | 20 3c 20 63 6f 6c 73 20 | ( right| < cols |
|00002a50| 2d 20 31 20 29 0a 58 09 | 66 70 72 69 6e 74 66 28 |- 1 ).X.|fprintf(|
|00002a60| 20 73 74 64 65 72 72 2c | 20 22 28 63 72 6f 70 70 | stderr,| "(cropp|
|00002a70| 69 6e 67 20 25 64 20 25 | 64 2d 63 6f 6c 73 20 6f |ing %d %|d-cols o|
|00002a80| 66 66 20 74 68 65 20 72 | 69 67 68 74 29 5c 6e 22 |ff the r|ight)\n"|
|00002a90| 2c 0a 58 09 09 20 63 6f | 6c 73 20 2d 20 31 20 2d |,.X.. co|ls - 1 -|
|00002aa0| 20 72 69 67 68 74 2c 20 | 62 61 63 6b 67 72 6f 75 | right, |backgrou|
|00002ab0| 6e 64 20 29 3b 0a 58 0a | 58 20 20 20 20 2f 2a 20 |nd );.X.|X /* |
|00002ac0| 4e 6f 77 20 63 6f 70 79 | 20 69 6e 74 6f 20 61 20 |Now copy| into a |
|00002ad0| 6e 65 77 20 61 72 72 61 | 79 2e 20 2a 2f 0a 58 20 |new arra|y. */.X |
|00002ae0| 20 20 20 6e 65 77 63 6f | 6c 73 20 3d 20 72 69 67 | newco|ls = rig|
|00002af0| 68 74 20 2d 20 6c 65 66 | 74 20 2b 20 31 3b 0a 58 |ht - lef|t + 1;.X|
|00002b00| 20 20 20 20 6e 65 77 72 | 6f 77 73 20 3d 20 62 6f | newr|ows = bo|
|00002b10| 74 74 6f 6d 20 2d 20 74 | 6f 70 20 2b 20 31 3b 0a |ttom - t|op + 1;.|
|00002b20| 58 20 20 20 20 6e 65 77 | 62 69 74 73 20 3d 20 70 |X new|bits = p|
|00002b30| 62 6d 5f 61 6c 6c 6f 63 | 61 72 72 61 79 28 20 6e |bm_alloc|array( n|
|00002b40| 65 77 63 6f 6c 73 2c 20 | 6e 65 77 72 6f 77 73 20 |ewcols, |newrows |
|00002b50| 29 3b 0a 58 20 20 20 20 | 66 6f 72 20 28 20 72 6f |);.X |for ( ro|
|00002b60| 77 20 3d 20 74 6f 70 3b | 20 72 6f 77 20 3c 3d 20 |w = top;| row <= |
|00002b70| 62 6f 74 74 6f 6d 3b 20 | 72 6f 77 2b 2b 20 29 0a |bottom; |row++ ).|
|00002b80| 58 20 20 20 20 20 20 20 | 20 66 6f 72 20 28 20 63 |X | for ( c|
|00002b90| 6f 6c 20 3d 20 6c 65 66 | 74 3b 20 63 6f 6c 20 3c |ol = lef|t; col <|
|00002ba0| 3d 20 72 69 67 68 74 3b | 20 63 6f 6c 2b 2b 20 29 |= right;| col++ )|
|00002bb0| 0a 58 09 20 20 20 20 6e | 65 77 62 69 74 73 5b 72 |.X. n|ewbits[r|
|00002bc0| 6f 77 2d 74 6f 70 5d 5b | 63 6f 6c 2d 6c 65 66 74 |ow-top][|col-left|
|00002bd0| 5d 20 3d 20 62 69 74 73 | 5b 72 6f 77 5d 5b 63 6f |] = bits|[row][co|
|00002be0| 6c 5d 3b 0a 58 0a 58 20 | 20 20 20 70 62 6d 5f 77 |l];.X.X | pbm_w|
|00002bf0| 72 69 74 65 70 62 6d 28 | 20 73 74 64 6f 75 74 2c |ritepbm(| stdout,|
|00002c00| 20 6e 65 77 62 69 74 73 | 2c 20 6e 65 77 63 6f 6c | newbits|, newcol|
|00002c10| 73 2c 20 6e 65 77 72 6f | 77 73 20 29 3b 0a 58 0a |s, newro|ws );.X.|
|00002c20| 58 20 20 20 20 65 78 69 | 74 28 20 30 20 29 3b 0a |X exi|t( 0 );.|
|00002c30| 58 20 20 20 20 7d 0a 53 | 48 41 52 5f 45 4f 46 0a |X }.S|HAR_EOF.|
|00002c40| 69 66 20 74 65 73 74 20 | 34 32 34 31 20 2d 6e 65 |if test |4241 -ne|
|00002c50| 20 22 60 77 63 20 2d 63 | 20 3c 20 27 70 62 6d 63 | "`wc -c| < 'pbmc|
|00002c60| 72 6f 70 2e 63 27 60 22 | 0a 74 68 65 6e 0a 09 65 |rop.c'`"|.then..e|
|00002c70| 63 68 6f 20 73 68 61 72 | 3a 20 65 72 72 6f 72 20 |cho shar|: error |
|00002c80| 74 72 61 6e 73 6d 69 74 | 74 69 6e 67 20 22 27 70 |transmit|ting "'p|
|00002c90| 62 6d 63 72 6f 70 2e 63 | 27 22 20 27 28 73 68 6f |bmcrop.c|'" '(sho|
|00002ca0| 75 6c 64 20 68 61 76 65 | 20 62 65 65 6e 20 34 32 |uld have| been 42|
|00002cb0| 34 31 20 63 68 61 72 61 | 63 74 65 72 73 29 27 0a |41 chara|cters)'.|
|00002cc0| 66 69 0a 66 69 20 23 20 | 65 6e 64 20 6f 66 20 6f |fi.fi # |end of o|
|00002cd0| 76 65 72 77 72 69 74 69 | 6e 67 20 63 68 65 63 6b |verwriti|ng check|
|00002ce0| 0a 65 63 68 6f 20 73 68 | 61 72 3a 20 65 78 74 72 |.echo sh|ar: extr|
|00002cf0| 61 63 74 69 6e 67 20 22 | 27 70 62 6d 63 72 6f 70 |acting "|'pbmcrop|
|00002d00| 2e 31 27 22 20 27 28 38 | 33 37 20 63 68 61 72 61 |.1'" '(8|37 chara|
|00002d10| 63 74 65 72 73 29 27 0a | 69 66 20 74 65 73 74 20 |cters)'.|if test |
|00002d20| 2d 66 20 27 70 62 6d 63 | 72 6f 70 2e 31 27 0a 74 |-f 'pbmc|rop.1'.t|
|00002d30| 68 65 6e 0a 09 65 63 68 | 6f 20 73 68 61 72 3a 20 |hen..ech|o shar: |
|00002d40| 77 69 6c 6c 20 6e 6f 74 | 20 6f 76 65 72 2d 77 72 |will not| over-wr|
|00002d50| 69 74 65 20 65 78 69 73 | 74 69 6e 67 20 66 69 6c |ite exis|ting fil|
|00002d60| 65 20 22 27 70 62 6d 63 | 72 6f 70 2e 31 27 22 0a |e "'pbmc|rop.1'".|
|00002d70| 65 6c 73 65 0a 73 65 64 | 20 27 73 2f 5e 58 2f 2f |else.sed| 's/^X//|
|00002d80| 27 20 3c 3c 20 5c 53 48 | 41 52 5f 45 4f 46 20 3e |' << \SH|AR_EOF >|
|00002d90| 20 27 70 62 6d 63 72 6f | 70 2e 31 27 0a 58 2e 54 | 'pbmcro|p.1'.X.T|
|00002da0| 48 20 70 62 6d 63 72 6f | 70 20 31 20 22 33 31 20 |H pbmcro|p 1 "31 |
|00002db0| 41 75 67 75 73 74 20 31 | 39 38 38 22 0a 58 2e 53 |August 1|988".X.S|
|00002dc0| 48 20 4e 41 4d 45 0a 58 | 70 62 6d 63 72 6f 70 20 |H NAME.X|pbmcrop |
|00002dd0| 2d 20 63 72 6f 70 20 61 | 20 70 6f 72 74 61 62 6c |- crop a| portabl|
|00002de0| 65 20 62 69 74 6d 61 70 | 0a 58 2e 53 48 20 53 59 |e bitmap|.X.SH SY|
|00002df0| 4e 4f 50 53 49 53 0a 58 | 70 62 6d 63 72 6f 70 20 |NOPSIS.X|pbmcrop |
|00002e00| 5b 2d 30 5d 2f 5b 2d 77 | 5d 2f 5b 2d 31 5d 2f 5b |[-0]/[-w|]/[-1]/[|
|00002e10| 2d 62 5d 20 5b 70 62 6d | 66 69 6c 65 5d 0a 58 2e |-b] [pbm|file].X.|
|00002e20| 53 48 20 44 45 53 43 52 | 49 50 54 49 4f 4e 0a 58 |SH DESCR|IPTION.X|
|00002e30| 52 65 61 64 73 20 61 20 | 70 6f 72 74 61 62 6c 65 |Reads a |portable|
|00002e40| 20 62 69 74 6d 61 70 20 | 61 73 20 69 6e 70 75 74 | bitmap |as input|
|00002e50| 2e 0a 58 52 65 6d 6f 76 | 65 73 20 65 64 67 65 73 |..XRemov|es edges|
|00002e60| 20 74 68 61 74 20 61 72 | 65 20 74 68 65 20 62 61 | that ar|e the ba|
|00002e70| 63 6b 67 72 6f 75 6e 64 | 20 63 6f 6c 6f 72 2c 0a |ckground| color,.|
|00002e80| 58 61 6e 64 20 70 72 6f | 64 75 63 65 73 20 61 20 |Xand pro|duces a |
|00002e90| 70 6f 72 74 61 62 6c 65 | 20 62 69 74 6d 61 70 20 |portable| bitmap |
|00002ea0| 61 73 20 6f 75 74 70 75 | 74 2e 0a 58 42 79 20 64 |as outpu|t..XBy d|
|00002eb0| 65 66 61 75 6c 74 2c 20 | 69 74 20 6d 61 6b 65 73 |efault, |it makes|
|00002ec0| 20 61 20 67 75 65 73 73 | 20 61 73 20 74 6f 20 77 | a guess| as to w|
|00002ed0| 68 61 74 20 74 68 65 20 | 62 61 63 6b 67 72 6f 75 |hat the |backgrou|
|00002ee0| 6e 64 0a 58 63 6f 6c 6f | 72 20 69 73 2e 0a 58 59 |nd.Xcolo|r is..XY|
|00002ef0| 6f 75 20 63 61 6e 20 6f | 76 65 72 72 69 64 65 20 |ou can o|verride |
|00002f00| 74 68 65 20 64 65 66 61 | 75 6c 74 20 77 69 74 68 |the defa|ult with|
|00002f10| 20 74 68 65 20 2d 30 2f | 2d 77 20 61 6e 64 20 2d | the -0/|-w and -|
|00002f20| 31 2f 2d 62 20 66 6c 61 | 67 73 2e 0a 58 2e 53 48 |1/-b fla|gs..X.SH|
|00002f30| 20 22 53 45 45 20 41 4c | 53 4f 22 0a 58 70 62 6d | "SEE AL|SO".Xpbm|
|00002f40| 63 75 74 28 31 29 2c 20 | 70 62 6d 28 35 29 0a 58 |cut(1), |pbm(5).X|
|00002f50| 2e 53 48 20 41 55 54 48 | 4f 52 0a 58 43 6f 70 79 |.SH AUTH|OR.XCopy|
|00002f60| 72 69 67 68 74 20 28 43 | 29 20 31 39 38 38 20 62 |right (C|) 1988 b|
|00002f70| 79 20 4a 65 66 20 50 6f | 73 6b 61 6e 7a 65 72 2e |y Jef Po|skanzer.|
|00002f80| 0a 58 0a 58 50 65 72 6d | 69 73 73 69 6f 6e 20 74 |.X.XPerm|ission t|
|00002f90| 6f 20 75 73 65 2c 20 63 | 6f 70 79 2c 20 6d 6f 64 |o use, c|opy, mod|
|00002fa0| 69 66 79 2c 20 61 6e 64 | 20 64 69 73 74 72 69 62 |ify, and| distrib|
|00002fb0| 75 74 65 20 74 68 69 73 | 20 73 6f 66 74 77 61 72 |ute this| softwar|
|00002fc0| 65 20 61 6e 64 20 69 74 | 73 0a 58 64 6f 63 75 6d |e and it|s.Xdocum|
|00002fd0| 65 6e 74 61 74 69 6f 6e | 20 66 6f 72 20 61 6e 79 |entation| for any|
|00002fe0| 20 70 75 72 70 6f 73 65 | 20 61 6e 64 20 77 69 74 | purpose| and wit|
|00002ff0| 68 6f 75 74 20 66 65 65 | 20 69 73 20 68 65 72 65 |hout fee| is here|
|00003000| 62 79 20 67 72 61 6e 74 | 65 64 2c 20 70 72 6f 76 |by grant|ed, prov|
|00003010| 69 64 65 64 0a 58 74 68 | 61 74 20 74 68 65 20 61 |ided.Xth|at the a|
|00003020| 62 6f 76 65 20 63 6f 70 | 79 72 69 67 68 74 20 6e |bove cop|yright n|
|00003030| 6f 74 69 63 65 20 61 70 | 70 65 61 72 20 69 6e 20 |otice ap|pear in |
|00003040| 61 6c 6c 20 63 6f 70 69 | 65 73 20 61 6e 64 20 74 |all copi|es and t|
|00003050| 68 61 74 20 62 6f 74 68 | 20 74 68 61 74 0a 58 63 |hat both| that.Xc|
|00003060| 6f 70 79 72 69 67 68 74 | 20 6e 6f 74 69 63 65 20 |opyright| notice |
|00003070| 61 6e 64 20 74 68 69 73 | 20 70 65 72 6d 69 73 73 |and this| permiss|
|00003080| 69 6f 6e 20 6e 6f 74 69 | 63 65 20 61 70 70 65 61 |ion noti|ce appea|
|00003090| 72 20 69 6e 20 73 75 70 | 70 6f 72 74 69 6e 67 0a |r in sup|porting.|
|000030a0| 58 64 6f 63 75 6d 65 6e | 74 61 74 69 6f 6e 2e 20 |Xdocumen|tation. |
|000030b0| 20 54 68 69 73 20 73 6f | 66 74 77 61 72 65 20 69 | This so|ftware i|
|000030c0| 73 20 70 72 6f 76 69 64 | 65 64 20 22 61 73 20 69 |s provid|ed "as i|
|000030d0| 73 22 20 77 69 74 68 6f | 75 74 20 65 78 70 72 65 |s" witho|ut expre|
|000030e0| 73 73 20 6f 72 0a 58 69 | 6d 70 6c 69 65 64 20 77 |ss or.Xi|mplied w|
|000030f0| 61 72 72 61 6e 74 79 2e | 0a 53 48 41 52 5f 45 4f |arranty.|.SHAR_EO|
|00003100| 46 0a 69 66 20 74 65 73 | 74 20 38 33 37 20 2d 6e |F.if tes|t 837 -n|
|00003110| 65 20 22 60 77 63 20 2d | 63 20 3c 20 27 70 62 6d |e "`wc -|c < 'pbm|
|00003120| 63 72 6f 70 2e 31 27 60 | 22 0a 74 68 65 6e 0a 09 |crop.1'`|".then..|
|00003130| 65 63 68 6f 20 73 68 61 | 72 3a 20 65 72 72 6f 72 |echo sha|r: error|
|00003140| 20 74 72 61 6e 73 6d 69 | 74 74 69 6e 67 20 22 27 | transmi|tting "'|
|00003150| 70 62 6d 63 72 6f 70 2e | 31 27 22 20 27 28 73 68 |pbmcrop.|1'" '(sh|
|00003160| 6f 75 6c 64 20 68 61 76 | 65 20 62 65 65 6e 20 38 |ould hav|e been 8|
|00003170| 33 37 20 63 68 61 72 61 | 63 74 65 72 73 29 27 0a |37 chara|cters)'.|
|00003180| 66 69 0a 66 69 20 23 20 | 65 6e 64 20 6f 66 20 6f |fi.fi # |end of o|
|00003190| 76 65 72 77 72 69 74 69 | 6e 67 20 63 68 65 63 6b |verwriti|ng check|
|000031a0| 0a 65 63 68 6f 20 73 68 | 61 72 3a 20 65 78 74 72 |.echo sh|ar: extr|
|000031b0| 61 63 74 69 6e 67 20 22 | 27 70 62 6d 74 72 6e 73 |acting "|'pbmtrns|
|000031c0| 70 6f 73 2e 63 27 22 20 | 27 28 31 33 33 32 20 63 |pos.c'" |'(1332 c|
|000031d0| 68 61 72 61 63 74 65 72 | 73 29 27 0a 69 66 20 74 |haracter|s)'.if t|
|000031e0| 65 73 74 20 2d 66 20 27 | 70 62 6d 74 72 6e 73 70 |est -f '|pbmtrnsp|
|000031f0| 6f 73 2e 63 27 0a 74 68 | 65 6e 0a 09 65 63 68 6f |os.c'.th|en..echo|
|00003200| 20 73 68 61 72 3a 20 77 | 69 6c 6c 20 6e 6f 74 20 | shar: w|ill not |
|00003210| 6f 76 65 72 2d 77 72 69 | 74 65 20 65 78 69 73 74 |over-wri|te exist|
|00003220| 69 6e 67 20 66 69 6c 65 | 20 22 27 70 62 6d 74 72 |ing file| "'pbmtr|
|00003230| 6e 73 70 6f 73 2e 63 27 | 22 0a 65 6c 73 65 0a 73 |nspos.c'|".else.s|
|00003240| 65 64 20 27 73 2f 5e 58 | 2f 2f 27 20 3c 3c 20 5c |ed 's/^X|//' << \|
|00003250| 53 48 41 52 5f 45 4f 46 | 20 3e 20 27 70 62 6d 74 |SHAR_EOF| > 'pbmt|
|00003260| 72 6e 73 70 6f 73 2e 63 | 27 0a 58 2f 2a 20 70 62 |rnspos.c|'.X/* pb|
|00003270| 6d 74 72 6e 73 70 6f 73 | 2e 63 20 2d 20 72 65 61 |mtrnspos|.c - rea|
|00003280| 64 20 61 20 70 6f 72 74 | 61 62 6c 65 20 62 69 74 |d a port|able bit|
|00003290| 6d 61 70 20 61 6e 64 20 | 74 72 61 6e 73 70 6f 73 |map and |transpos|
|000032a0| 65 20 69 74 20 78 20 66 | 6f 72 20 79 0a 58 2a 2a |e it x f|or y.X**|
|000032b0| 0a 58 2a 2a 20 43 6f 70 | 79 72 69 67 68 74 20 28 |.X** Cop|yright (|
|000032c0| 43 29 20 31 39 38 38 20 | 62 79 20 4a 65 66 20 50 |C) 1988 |by Jef P|
|000032d0| 6f 73 6b 61 6e 7a 65 72 | 2e 0a 58 2a 2a 0a 58 2a |oskanzer|..X**.X*|
|000032e0| 2a 20 50 65 72 6d 69 73 | 73 69 6f 6e 20 74 6f 20 |* Permis|sion to |
|000032f0| 75 73 65 2c 20 63 6f 70 | 79 2c 20 6d 6f 64 69 66 |use, cop|y, modif|
|00003300| 79 2c 20 61 6e 64 20 64 | 69 73 74 72 69 62 75 74 |y, and d|istribut|
|00003310| 65 20 74 68 69 73 20 73 | 6f 66 74 77 61 72 65 20 |e this s|oftware |
|00003320| 61 6e 64 20 69 74 73 0a | 58 2a 2a 20 64 6f 63 75 |and its.|X** docu|
|00003330| 6d 65 6e 74 61 74 69 6f | 6e 20 66 6f 72 20 61 6e |mentatio|n for an|
|00003340| 79 20 70 75 72 70 6f 73 | 65 20 61 6e 64 20 77 69 |y purpos|e and wi|
|00003350| 74 68 6f 75 74 20 66 65 | 65 20 69 73 20 68 65 72 |thout fe|e is her|
|00003360| 65 62 79 20 67 72 61 6e | 74 65 64 2c 20 70 72 6f |eby gran|ted, pro|
|00003370| 76 69 64 65 64 0a 58 2a | 2a 20 74 68 61 74 20 74 |vided.X*|* that t|
|00003380| 68 65 20 61 62 6f 76 65 | 20 63 6f 70 79 72 69 67 |he above| copyrig|
|00003390| 68 74 20 6e 6f 74 69 63 | 65 20 61 70 70 65 61 72 |ht notic|e appear|
|000033a0| 20 69 6e 20 61 6c 6c 20 | 63 6f 70 69 65 73 20 61 | in all |copies a|
|000033b0| 6e 64 20 74 68 61 74 20 | 62 6f 74 68 20 74 68 61 |nd that |both tha|
|000033c0| 74 0a 58 2a 2a 20 63 6f | 70 79 72 69 67 68 74 20 |t.X** co|pyright |
|000033d0| 6e 6f 74 69 63 65 20 61 | 6e 64 20 74 68 69 73 20 |notice a|nd this |
|000033e0| 70 65 72 6d 69 73 73 69 | 6f 6e 20 6e 6f 74 69 63 |permissi|on notic|
|000033f0| 65 20 61 70 70 65 61 72 | 20 69 6e 20 73 75 70 70 |e appear| in supp|
|00003400| 6f 72 74 69 6e 67 0a 58 | 2a 2a 20 64 6f 63 75 6d |orting.X|** docum|
|00003410| 65 6e 74 61 74 69 6f 6e | 2e 20 20 54 68 69 73 20 |entation|. This |
|00003420| 73 6f 66 74 77 61 72 65 | 20 69 73 20 70 72 6f 76 |software| is prov|
|00003430| 69 64 65 64 20 22 61 73 | 20 69 73 22 20 77 69 74 |ided "as| is" wit|
|00003440| 68 6f 75 74 20 65 78 70 | 72 65 73 73 20 6f 72 0a |hout exp|ress or.|
|00003450| 58 2a 2a 20 69 6d 70 6c | 69 65 64 20 77 61 72 72 |X** impl|ied warr|
|00003460| 61 6e 74 79 2e 0a 58 2a | 2f 0a 58 0a 58 23 69 6e |anty..X*|/.X.X#in|
|00003470| 63 6c 75 64 65 20 3c 73 | 74 64 69 6f 2e 68 3e 0a |clude <s|tdio.h>.|
|00003480| 58 23 69 6e 63 6c 75 64 | 65 20 22 70 62 6d 2e 68 |X#includ|e "pbm.h|
|00003490| 22 0a 58 0a 58 6d 61 69 | 6e 28 20 61 72 67 63 2c |".X.Xmai|n( argc,|
|000034a0| 20 61 72 67 76 20 29 0a | 58 69 6e 74 20 61 72 67 | argv ).|Xint arg|
|000034b0| 63 3b 0a 58 63 68 61 72 | 20 2a 61 72 67 76 5b 5d |c;.Xchar| *argv[]|
|000034c0| 3b 0a 58 20 20 20 20 7b | 0a 58 20 20 20 20 46 49 |;.X {|.X FI|
|000034d0| 4c 45 20 2a 69 66 64 3b | 0a 58 20 20 20 20 62 69 |LE *ifd;|.X bi|
|000034e0| 74 20 2a 2a 62 69 74 73 | 2c 20 2a 2a 6e 65 77 62 |t **bits|, **newb|
|000034f0| 69 74 73 3b 0a 58 20 20 | 20 20 69 6e 74 20 72 6f |its;.X | int ro|
|00003500| 77 73 2c 20 63 6f 6c 73 | 2c 20 72 6f 77 2c 20 63 |ws, cols|, row, c|
|00003510| 6f 6c 3b 0a 58 0a 58 20 | 20 20 20 69 66 20 28 20 |ol;.X.X | if ( |
|00003520| 61 72 67 63 20 3e 20 32 | 20 29 0a 58 09 7b 0a 58 |argc > 2| ).X.{.X|
|00003530| 09 66 70 72 69 6e 74 66 | 28 20 73 74 64 65 72 72 |.fprintf|( stderr|
|00003540| 2c 20 22 75 73 61 67 65 | 3a 20 20 25 73 20 5b 70 |, "usage|: %s [p|
|00003550| 62 6d 66 69 6c 65 5d 5c | 6e 22 2c 20 61 72 67 76 |bmfile]\|n", argv|
|00003560| 5b 30 5d 20 29 3b 0a 58 | 09 65 78 69 74 28 20 31 |[0] );.X|.exit( 1|
|00003570| 20 29 3b 0a 58 09 7d 0a | 58 0a 58 20 20 20 20 69 | );.X.}.|X.X i|
|00003580| 66 20 28 20 61 72 67 63 | 20 3d 3d 20 32 20 29 0a |f ( argc| == 2 ).|
|00003590| 58 09 7b 0a 58 20 20 20 | 20 20 20 20 20 69 66 64 |X.{.X | ifd|
|000035a0| 20 3d 20 66 6f 70 65 6e | 28 20 61 72 67 76 5b 31 | = fopen|( argv[1|
|000035b0| 5d 2c 20 22 72 22 20 29 | 3b 0a 58 20 20 20 20 20 |], "r" )|;.X |
|000035c0| 20 20 20 69 66 20 28 20 | 69 66 64 20 3d 3d 20 4e | if ( |ifd == N|
|000035d0| 55 4c 4c 20 29 0a 58 09 | 20 20 20 20 7b 0a 58 09 |ULL ).X.| {.X.|
|000035e0| 20 20 20 20 66 70 72 69 | 6e 74 66 28 20 73 74 64 | fpri|ntf( std|
|000035f0| 65 72 72 2c 20 22 25 73 | 3a 20 63 61 6e 27 74 20 |err, "%s|: can't |
|00003600| 6f 70 65 6e 2e 5c 6e 22 | 2c 20 61 72 67 76 5b 31 |open.\n"|, argv[1|
|00003610| 5d 20 29 3b 0a 58 09 20 | 20 20 20 65 78 69 74 28 |] );.X. | exit(|
|00003620| 20 31 20 29 3b 0a 58 09 | 20 20 20 20 7d 0a 58 09 | 1 );.X.| }.X.|
|00003630| 7d 0a 58 20 20 20 20 65 | 6c 73 65 0a 58 09 69 66 |}.X e|lse.X.if|
|00003640| 64 20 3d 20 73 74 64 69 | 6e 3b 0a 58 0a 58 20 20 |d = stdi|n;.X.X |
|00003650| 20 20 62 69 74 73 20 3d | 20 70 62 6d 5f 72 65 61 | bits =| pbm_rea|
|00003660| 64 70 62 6d 28 20 69 66 | 64 2c 20 26 63 6f 6c 73 |dpbm( if|d, &cols|
|00003670| 2c 20 26 72 6f 77 73 20 | 29 3b 0a 58 0a 58 20 20 |, &rows |);.X.X |
|00003680| 20 20 69 66 20 28 20 69 | 66 64 20 21 3d 20 73 74 | if ( i|fd != st|
|00003690| 64 69 6e 20 29 0a 58 09 | 66 63 6c 6f 73 65 28 20 |din ).X.|fclose( |
|000036a0| 69 66 64 20 29 3b 0a 58 | 0a 58 20 20 20 20 6e 65 |ifd );.X|.X ne|
|000036b0| 77 62 69 74 73 20 3d 20 | 70 62 6d 5f 61 6c 6c 6f |wbits = |pbm_allo|
|000036c0| 63 61 72 72 61 79 28 20 | 72 6f 77 73 2c 20 63 6f |carray( |rows, co|
|000036d0| 6c 73 20 29 3b 09 2f 2a | 20 6e 6f 74 65 20 70 61 |ls );./*| note pa|
|000036e0| 72 61 6d 65 74 65 72 20 | 72 65 76 65 72 73 61 6c |rameter |reversal|
|000036f0| 20 2a 2f 0a 58 0a 58 20 | 20 20 20 66 6f 72 20 28 | */.X.X | for (|
|00003700| 20 72 6f 77 20 3d 20 30 | 3b 20 72 6f 77 20 3c 20 | row = 0|; row < |
|00003710| 72 6f 77 73 3b 20 72 6f | 77 2b 2b 20 29 0a 58 20 |rows; ro|w++ ).X |
|00003720| 20 20 20 20 20 20 20 66 | 6f 72 20 28 20 63 6f 6c | f|or ( col|
|00003730| 20 3d 20 30 3b 20 63 6f | 6c 20 3c 20 63 6f 6c 73 | = 0; co|l < cols|
|00003740| 3b 20 63 6f 6c 2b 2b 20 | 29 0a 58 09 20 20 20 20 |; col++ |).X. |
|00003750| 6e 65 77 62 69 74 73 5b | 63 6f 6c 5d 5b 72 6f 77 |newbits[|col][row|
|00003760| 5d 20 3d 20 62 69 74 73 | 5b 72 6f 77 5d 5b 63 6f |] = bits|[row][co|
|00003770| 6c 5d 3b 0a 58 0a 58 20 | 20 20 20 70 62 6d 5f 77 |l];.X.X | pbm_w|
|00003780| 72 69 74 65 70 62 6d 28 | 20 73 74 64 6f 75 74 2c |ritepbm(| stdout,|
|00003790| 20 6e 65 77 62 69 74 73 | 2c 20 72 6f 77 73 2c 20 | newbits|, rows, |
|000037a0| 63 6f 6c 73 20 29 3b 09 | 2f 2a 20 72 65 76 65 72 |cols );.|/* rever|
|000037b0| 73 65 64 20 61 67 61 69 | 6e 20 2a 2f 0a 58 0a 58 |sed agai|n */.X.X|
|000037c0| 20 20 20 20 65 78 69 74 | 28 20 30 20 29 3b 0a 58 | exit|( 0 );.X|
|000037d0| 20 20 20 20 7d 0a 53 48 | 41 52 5f 45 4f 46 0a 69 | }.SH|AR_EOF.i|
|000037e0| 66 20 74 65 73 74 20 31 | 33 33 32 20 2d 6e 65 20 |f test 1|332 -ne |
|000037f0| 22 60 77 63 20 2d 63 20 | 3c 20 27 70 62 6d 74 72 |"`wc -c |< 'pbmtr|
|00003800| 6e 73 70 6f 73 2e 63 27 | 60 22 0a 74 68 65 6e 0a |nspos.c'|`".then.|
|00003810| 09 65 63 68 6f 20 73 68 | 61 72 3a 20 65 72 72 6f |.echo sh|ar: erro|
|00003820| 72 20 74 72 61 6e 73 6d | 69 74 74 69 6e 67 20 22 |r transm|itting "|
|00003830| 27 70 62 6d 74 72 6e 73 | 70 6f 73 2e 63 27 22 20 |'pbmtrns|pos.c'" |
|00003840| 27 28 73 68 6f 75 6c 64 | 20 68 61 76 65 20 62 65 |'(should| have be|
|00003850| 65 6e 20 31 33 33 32 20 | 63 68 61 72 61 63 74 65 |en 1332 |characte|
|00003860| 72 73 29 27 0a 66 69 0a | 66 69 20 23 20 65 6e 64 |rs)'.fi.|fi # end|
|00003870| 20 6f 66 20 6f 76 65 72 | 77 72 69 74 69 6e 67 20 | of over|writing |
|00003880| 63 68 65 63 6b 0a 65 63 | 68 6f 20 73 68 61 72 3a |check.ec|ho shar:|
|00003890| 20 65 78 74 72 61 63 74 | 69 6e 67 20 22 27 70 62 | extract|ing "'pb|
|000038a0| 6d 74 72 6e 73 70 6f 73 | 2e 31 27 22 20 27 28 31 |mtrnspos|.1'" '(1|
|000038b0| 30 33 35 20 63 68 61 72 | 61 63 74 65 72 73 29 27 |035 char|acters)'|
|000038c0| 0a 69 66 20 74 65 73 74 | 20 2d 66 20 27 70 62 6d |.if test| -f 'pbm|
|000038d0| 74 72 6e 73 70 6f 73 2e | 31 27 0a 74 68 65 6e 0a |trnspos.|1'.then.|
|000038e0| 09 65 63 68 6f 20 73 68 | 61 72 3a 20 77 69 6c 6c |.echo sh|ar: will|
|000038f0| 20 6e 6f 74 20 6f 76 65 | 72 2d 77 72 69 74 65 20 | not ove|r-write |
|00003900| 65 78 69 73 74 69 6e 67 | 20 66 69 6c 65 20 22 27 |existing| file "'|
|00003910| 70 62 6d 74 72 6e 73 70 | 6f 73 2e 31 27 22 0a 65 |pbmtrnsp|os.1'".e|
|00003920| 6c 73 65 0a 73 65 64 20 | 27 73 2f 5e 58 2f 2f 27 |lse.sed |'s/^X//'|
|00003930| 20 3c 3c 20 5c 53 48 41 | 52 5f 45 4f 46 20 3e 20 | << \SHA|R_EOF > |
|00003940| 27 70 62 6d 74 72 6e 73 | 70 6f 73 2e 31 27 0a 58 |'pbmtrns|pos.1'.X|
|00003950| 2e 54 48 20 70 62 6d 74 | 72 6e 73 70 6f 73 20 31 |.TH pbmt|rnspos 1|
|00003960| 20 22 33 31 20 41 75 67 | 75 73 74 20 31 39 38 38 | "31 Aug|ust 1988|
|00003970| 22 0a 58 2e 53 48 20 4e | 41 4d 45 0a 58 70 62 6d |".X.SH N|AME.Xpbm|
|00003980| 74 72 6e 73 70 6f 73 20 | 2d 20 74 72 61 6e 73 70 |trnspos |- transp|
|00003990| 6f 73 65 20 61 20 70 6f | 72 74 61 62 6c 65 20 62 |ose a po|rtable b|
|000039a0| 69 74 6d 61 70 20 78 20 | 66 6f 72 20 79 0a 58 2e |itmap x |for y.X.|
|000039b0| 53 48 20 53 59 4e 4f 50 | 53 49 53 0a 58 70 62 6d |SH SYNOP|SIS.Xpbm|
|000039c0| 74 72 6e 73 70 6f 73 20 | 5b 70 62 6d 66 69 6c 65 |trnspos |[pbmfile|
|000039d0| 5d 0a 58 2e 53 48 20 44 | 45 53 43 52 49 50 54 49 |].X.SH D|ESCRIPTI|
|000039e0| 4f 4e 0a 58 52 65 61 64 | 73 20 61 20 70 6f 72 74 |ON.XRead|s a port|
|000039f0| 61 62 6c 65 20 62 69 74 | 6d 61 70 20 61 73 20 69 |able bit|map as i|
|00003a00| 6e 70 75 74 2e 0a 58 54 | 72 61 6e 73 70 6f 73 65 |nput..XT|ranspose|
|00003a10| 73 20 69 74 20 78 20 66 | 6f 72 20 79 20 61 6e 64 |s it x f|or y and|
|00003a20| 20 70 72 6f 64 75 63 65 | 73 20 61 20 70 6f 72 74 | produce|s a port|
|00003a30| 61 62 6c 65 20 62 69 74 | 6d 61 70 20 61 73 20 6f |able bit|map as o|
|00003a40| 75 74 70 75 74 2e 0a 58 | 2e 50 50 0a 58 4e 6f 74 |utput..X|.PP.XNot|
|00003a50| 65 20 74 68 61 74 20 74 | 72 61 6e 73 70 6f 73 69 |e that t|ransposi|
|00003a60| 74 69 6f 6e 20 69 73 20 | 6e 6f 74 20 72 6f 74 61 |tion is |not rota|
|00003a70| 74 69 6f 6e 2c 20 62 75 | 74 20 63 61 6e 20 62 65 |tion, bu|t can be|
|00003a80| 20 75 73 65 64 20 74 6f | 20 70 72 6f 64 75 63 65 | used to| produce|
|00003a90| 20 69 74 2e 0a 58 46 6f | 72 20 65 78 61 6d 70 6c | it..XFo|r exampl|
|00003aa0| 65 2c 20 69 66 20 79 6f | 75 20 77 61 6e 74 65 64 |e, if yo|u wanted|
|00003ab0| 20 61 20 39 30 20 64 65 | 67 72 65 65 20 63 6c 6f | a 90 de|gree clo|
|00003ac0| 63 6b 77 69 73 65 20 72 | 6f 74 61 74 69 6f 6e 2c |ckwise r|otation,|
|00003ad0| 20 70 65 72 68 61 70 73 | 20 66 6f 72 0a 58 70 72 | perhaps| for.Xpr|
|00003ae0| 69 6e 74 69 6e 67 20 61 | 20 6c 61 6e 64 73 63 61 |inting a| landsca|
|00003af0| 70 65 20 62 69 74 6d 61 | 70 20 6f 6e 20 61 20 6c |pe bitma|p on a l|
|00003b00| 61 73 65 72 20 70 72 69 | 6e 74 65 72 2c 20 79 6f |aser pri|nter, yo|
|00003b10| 75 20 63 6f 75 6c 64 0a | 58 64 6f 20 27 70 62 6d |u could.|Xdo 'pbm|
|00003b20| 74 72 6e 73 70 6f 73 20 | 7c 20 70 62 6d 66 6c 69 |trnspos || pbmfli|
|00003b30| 70 6c 72 27 20 6f 72 20 | 27 70 62 6d 66 6c 69 70 |plr' or |'pbmflip|
|00003b40| 74 62 20 7c 20 70 62 6d | 74 72 6e 73 70 6f 73 27 |tb | pbm|trnspos'|
|00003b50| 2e 0a 58 46 6f 72 20 63 | 6f 75 6e 74 65 72 2d 63 |..XFor c|ounter-c|
|00003b60| 6c 6f 63 6b 77 69 73 65 | 20 72 6f 74 61 74 69 6f |lockwise| rotatio|
|00003b70| 6e 2c 20 79 6f 75 20 77 | 6f 75 6c 64 20 75 73 65 |n, you w|ould use|
|00003b80| 20 74 68 65 20 6f 70 70 | 6f 73 69 74 65 20 66 6c | the opp|osite fl|
|00003b90| 69 70 73 2e 0a 58 2e 53 | 48 20 22 53 45 45 20 41 |ips..X.S|H "SEE A|
|00003ba0| 4c 53 4f 22 0a 58 70 62 | 6d 66 6c 69 70 6c 72 28 |LSO".Xpb|mfliplr(|
|00003bb0| 31 29 2c 20 70 62 6d 66 | 6c 69 70 74 62 28 31 29 |1), pbmf|liptb(1)|
|00003bc0| 2c 20 70 62 6d 28 35 29 | 0a 58 2e 53 48 20 41 55 |, pbm(5)|.X.SH AU|
|00003bd0| 54 48 4f 52 0a 58 43 6f | 70 79 72 69 67 68 74 20 |THOR.XCo|pyright |
|00003be0| 28 43 29 20 31 39 38 38 | 20 62 79 20 4a 65 66 20 |(C) 1988| by Jef |
|00003bf0| 50 6f 73 6b 61 6e 7a 65 | 72 2e 0a 58 0a 58 50 65 |Poskanze|r..X.XPe|
|00003c00| 72 6d 69 73 73 69 6f 6e | 20 74 6f 20 75 73 65 2c |rmission| to use,|
|00003c10| 20 63 6f 70 79 2c 20 6d | 6f 64 69 66 79 2c 20 61 | copy, m|odify, a|
|00003c20| 6e 64 20 64 69 73 74 72 | 69 62 75 74 65 20 74 68 |nd distr|ibute th|
|00003c30| 69 73 20 73 6f 66 74 77 | 61 72 65 20 61 6e 64 20 |is softw|are and |
|00003c40| 69 74 73 0a 58 64 6f 63 | 75 6d 65 6e 74 61 74 69 |its.Xdoc|umentati|
|00003c50| 6f 6e 20 66 6f 72 20 61 | 6e 79 20 70 75 72 70 6f |on for a|ny purpo|
|00003c60| 73 65 20 61 6e 64 20 77 | 69 74 68 6f 75 74 20 66 |se and w|ithout f|
|00003c70| 65 65 20 69 73 20 68 65 | 72 65 62 79 20 67 72 61 |ee is he|reby gra|
|00003c80| 6e 74 65 64 2c 20 70 72 | 6f 76 69 64 65 64 0a 58 |nted, pr|ovided.X|
|00003c90| 74 68 61 74 20 74 68 65 | 20 61 62 6f 76 65 20 63 |that the| above c|
|00003ca0| 6f 70 79 72 69 67 68 74 | 20 6e 6f 74 69 63 65 20 |opyright| notice |
|00003cb0| 61 70 70 65 61 72 20 69 | 6e 20 61 6c 6c 20 63 6f |appear i|n all co|
|00003cc0| 70 69 65 73 20 61 6e 64 | 20 74 68 61 74 20 62 6f |pies and| that bo|
|00003cd0| 74 68 20 74 68 61 74 0a | 58 63 6f 70 79 72 69 67 |th that.|Xcopyrig|
|00003ce0| 68 74 20 6e 6f 74 69 63 | 65 20 61 6e 64 20 74 68 |ht notic|e and th|
|00003cf0| 69 73 20 70 65 72 6d 69 | 73 73 69 6f 6e 20 6e 6f |is permi|ssion no|
|00003d00| 74 69 63 65 20 61 70 70 | 65 61 72 20 69 6e 20 73 |tice app|ear in s|
|00003d10| 75 70 70 6f 72 74 69 6e | 67 0a 58 64 6f 63 75 6d |upportin|g.Xdocum|
|00003d20| 65 6e 74 61 74 69 6f 6e | 2e 20 20 54 68 69 73 20 |entation|. This |
|00003d30| 73 6f 66 74 77 61 72 65 | 20 69 73 20 70 72 6f 76 |software| is prov|
|00003d40| 69 64 65 64 20 22 61 73 | 20 69 73 22 20 77 69 74 |ided "as| is" wit|
|00003d50| 68 6f 75 74 20 65 78 70 | 72 65 73 73 20 6f 72 0a |hout exp|ress or.|
|00003d60| 58 69 6d 70 6c 69 65 64 | 20 77 61 72 72 61 6e 74 |Ximplied| warrant|
|00003d70| 79 2e 0a 53 48 41 52 5f | 45 4f 46 0a 69 66 20 74 |y..SHAR_|EOF.if t|
|00003d80| 65 73 74 20 31 30 33 35 | 20 2d 6e 65 20 22 60 77 |est 1035| -ne "`w|
|00003d90| 63 20 2d 63 20 3c 20 27 | 70 62 6d 74 72 6e 73 70 |c -c < '|pbmtrnsp|
|00003da0| 6f 73 2e 31 27 60 22 0a | 74 68 65 6e 0a 09 65 63 |os.1'`".|then..ec|
|00003db0| 68 6f 20 73 68 61 72 3a | 20 65 72 72 6f 72 20 74 |ho shar:| error t|
|00003dc0| 72 61 6e 73 6d 69 74 74 | 69 6e 67 20 22 27 70 62 |ransmitt|ing "'pb|
|00003dd0| 6d 74 72 6e 73 70 6f 73 | 2e 31 27 22 20 27 28 73 |mtrnspos|.1'" '(s|
|00003de0| 68 6f 75 6c 64 20 68 61 | 76 65 20 62 65 65 6e 20 |hould ha|ve been |
|00003df0| 31 30 33 35 20 63 68 61 | 72 61 63 74 65 72 73 29 |1035 cha|racters)|
|00003e00| 27 0a 66 69 0a 66 69 20 | 23 20 65 6e 64 20 6f 66 |'.fi.fi |# end of|
|00003e10| 20 6f 76 65 72 77 72 69 | 74 69 6e 67 20 63 68 65 | overwri|ting che|
|00003e20| 63 6b 0a 65 63 68 6f 20 | 73 68 61 72 3a 20 65 78 |ck.echo |shar: ex|
|00003e30| 74 72 61 63 74 69 6e 67 | 20 22 27 70 62 6d 63 75 |tracting| "'pbmcu|
|00003e40| 74 2e 63 27 22 20 27 28 | 32 36 30 36 20 63 68 61 |t.c'" '(|2606 cha|
|00003e50| 72 61 63 74 65 72 73 29 | 27 0a 69 66 20 74 65 73 |racters)|'.if tes|
|00003e60| 74 20 2d 66 20 27 70 62 | 6d 63 75 74 2e 63 27 0a |t -f 'pb|mcut.c'.|
|00003e70| 74 68 65 6e 0a 09 65 63 | 68 6f 20 73 68 61 72 3a |then..ec|ho shar:|
|00003e80| 20 77 69 6c 6c 20 6e 6f | 74 20 6f 76 65 72 2d 77 | will no|t over-w|
|00003e90| 72 69 74 65 20 65 78 69 | 73 74 69 6e 67 20 66 69 |rite exi|sting fi|
|00003ea0| 6c 65 20 22 27 70 62 6d | 63 75 74 2e 63 27 22 0a |le "'pbm|cut.c'".|
|00003eb0| 65 6c 73 65 0a 73 65 64 | 20 27 73 2f 5e 58 2f 2f |else.sed| 's/^X//|
|00003ec0| 27 20 3c 3c 20 5c 53 48 | 41 52 5f 45 4f 46 20 3e |' << \SH|AR_EOF >|
|00003ed0| 20 27 70 62 6d 63 75 74 | 2e 63 27 0a 58 2f 2a 20 | 'pbmcut|.c'.X/* |
|00003ee0| 70 62 6d 63 75 74 2e 63 | 20 2d 20 63 75 74 20 61 |pbmcut.c| - cut a|
|00003ef0| 20 72 65 63 74 61 6e 67 | 6c 65 20 6f 75 74 20 6f | rectang|le out o|
|00003f00| 66 20 61 20 70 6f 72 74 | 61 62 6c 65 20 62 69 74 |f a port|able bit|
|00003f10| 6d 61 70 0a 58 2a 2a 0a | 58 2a 2a 20 43 6f 70 79 |map.X**.|X** Copy|
|00003f20| 72 69 67 68 74 20 28 43 | 29 20 31 39 38 38 20 62 |right (C|) 1988 b|
|00003f30| 79 20 4a 65 66 20 50 6f | 73 6b 61 6e 7a 65 72 2e |y Jef Po|skanzer.|
|00003f40| 0a 58 2a 2a 0a 58 2a 2a | 20 50 65 72 6d 69 73 73 |.X**.X**| Permiss|
|00003f50| 69 6f 6e 20 74 6f 20 75 | 73 65 2c 20 63 6f 70 79 |ion to u|se, copy|
|00003f60| 2c 20 6d 6f 64 69 66 79 | 2c 20 61 6e 64 20 64 69 |, modify|, and di|
|00003f70| 73 74 72 69 62 75 74 65 | 20 74 68 69 73 20 73 6f |stribute| this so|
|00003f80| 66 74 77 61 72 65 20 61 | 6e 64 20 69 74 73 0a 58 |ftware a|nd its.X|
|00003f90| 2a 2a 20 64 6f 63 75 6d | 65 6e 74 61 74 69 6f 6e |** docum|entation|
|00003fa0| 20 66 6f 72 20 61 6e 79 | 20 70 75 72 70 6f 73 65 | for any| purpose|
|00003fb0| 20 61 6e 64 20 77 69 74 | 68 6f 75 74 20 66 65 65 | and wit|hout fee|
|00003fc0| 20 69 73 20 68 65 72 65 | 62 79 20 67 72 61 6e 74 | is here|by grant|
|00003fd0| 65 64 2c 20 70 72 6f 76 | 69 64 65 64 0a 58 2a 2a |ed, prov|ided.X**|
|00003fe0| 20 74 68 61 74 20 74 68 | 65 20 61 62 6f 76 65 20 | that th|e above |
|00003ff0| 63 6f 70 79 72 69 67 68 | 74 20 6e 6f 74 69 63 65 |copyrigh|t notice|
|00004000| 20 61 70 70 65 61 72 20 | 69 6e 20 61 6c 6c 20 63 | appear |in all c|
|00004010| 6f 70 69 65 73 20 61 6e | 64 20 74 68 61 74 20 62 |opies an|d that b|
|00004020| 6f 74 68 20 74 68 61 74 | 0a 58 2a 2a 20 63 6f 70 |oth that|.X** cop|
|00004030| 79 72 69 67 68 74 20 6e | 6f 74 69 63 65 20 61 6e |yright n|otice an|
|00004040| 64 20 74 68 69 73 20 70 | 65 72 6d 69 73 73 69 6f |d this p|ermissio|
|00004050| 6e 20 6e 6f 74 69 63 65 | 20 61 70 70 65 61 72 20 |n notice| appear |
|00004060| 69 6e 20 73 75 70 70 6f | 72 74 69 6e 67 0a 58 2a |in suppo|rting.X*|
|00004070| 2a 20 64 6f 63 75 6d 65 | 6e 74 61 74 69 6f 6e 2e |* docume|ntation.|
|00004080| 20 20 54 68 69 73 20 73 | 6f 66 74 77 61 72 65 20 | This s|oftware |
|00004090| 69 73 20 70 72 6f 76 69 | 64 65 64 20 22 61 73 20 |is provi|ded "as |
|000040a0| 69 73 22 20 77 69 74 68 | 6f 75 74 20 65 78 70 72 |is" with|out expr|
|000040b0| 65 73 73 20 6f 72 0a 58 | 2a 2a 20 69 6d 70 6c 69 |ess or.X|** impli|
|000040c0| 65 64 20 77 61 72 72 61 | 6e 74 79 2e 0a 58 2a 2f |ed warra|nty..X*/|
|000040d0| 0a 58 0a 58 23 69 6e 63 | 6c 75 64 65 20 3c 73 74 |.X.X#inc|lude <st|
|000040e0| 64 69 6f 2e 68 3e 0a 58 | 23 69 6e 63 6c 75 64 65 |dio.h>.X|#include|
|000040f0| 20 22 70 62 6d 2e 68 22 | 0a 58 0a 58 6d 61 69 6e | "pbm.h"|.X.Xmain|
|00004100| 28 20 61 72 67 63 2c 20 | 61 72 67 76 20 29 0a 58 |( argc, |argv ).X|
|00004110| 69 6e 74 20 61 72 67 63 | 3b 0a 58 63 68 61 72 20 |int argc|;.Xchar |
|00004120| 2a 61 72 67 76 5b 5d 3b | 0a 58 20 20 20 20 7b 0a |*argv[];|.X {.|
|00004130| 58 20 20 20 20 46 49 4c | 45 20 2a 69 66 64 3b 0a |X FIL|E *ifd;.|
|00004140| 58 20 20 20 20 62 69 74 | 20 2a 2a 62 69 74 73 2c |X bit| **bits,|
|00004150| 20 2a 2a 6e 65 77 62 69 | 74 73 3b 0a 58 20 20 20 | **newbi|ts;.X |
|00004160| 20 69 6e 74 20 72 6f 77 | 73 2c 20 63 6f 6c 73 2c | int row|s, cols,|
|00004170| 20 78 2c 20 79 2c 20 77 | 69 64 74 68 2c 20 68 65 | x, y, w|idth, he|
|00004180| 69 67 68 74 2c 20 72 6f | 77 2c 20 63 6f 6c 3b 0a |ight, ro|w, col;.|
|00004190| 58 20 20 20 20 63 68 61 | 72 20 2a 75 73 61 67 65 |X cha|r *usage|
|000041a0| 20 3d 20 22 75 73 61 67 | 65 3a 20 20 25 73 20 78 | = "usag|e: %s x|
|000041b0| 20 79 20 77 69 64 74 68 | 20 68 65 69 67 68 74 20 | y width| height |
|000041c0| 5b 70 62 6d 66 69 6c 65 | 5d 5c 6e 22 3b 0a 58 0a |[pbmfile|]\n";.X.|
|000041d0| 58 0a 58 20 20 20 20 69 | 66 20 28 20 61 72 67 63 |X.X i|f ( argc|
|000041e0| 20 3c 20 35 20 7c 7c 20 | 61 72 67 63 20 3e 20 36 | < 5 || |argc > 6|
|000041f0| 20 29 0a 58 09 7b 0a 58 | 09 66 70 72 69 6e 74 66 | ).X.{.X|.fprintf|
|00004200| 28 20 73 74 64 65 72 72 | 2c 20 75 73 61 67 65 2c |( stderr|, usage,|
|00004210| 20 61 72 67 76 5b 30 5d | 20 29 3b 0a 58 09 65 78 | argv[0]| );.X.ex|
|00004220| 69 74 28 20 31 20 29 3b | 0a 58 09 7d 0a 58 0a 58 |it( 1 );|.X.}.X.X|
|00004230| 20 20 20 20 69 66 20 28 | 20 73 73 63 61 6e 66 28 | if (| sscanf(|
|00004240| 20 61 72 67 76 5b 31 5d | 2c 20 22 25 64 22 2c 20 | argv[1]|, "%d", |
|00004250| 26 78 20 29 20 21 3d 20 | 31 20 29 0a 58 09 7b 0a |&x ) != |1 ).X.{.|
|00004260| 58 09 66 70 72 69 6e 74 | 66 28 20 73 74 64 65 72 |X.fprint|f( stder|
|00004270| 72 2c 20 75 73 61 67 65 | 2c 20 61 72 67 76 5b 30 |r, usage|, argv[0|
|00004280| 5d 20 29 3b 0a 58 09 65 | 78 69 74 28 20 31 20 29 |] );.X.e|xit( 1 )|
|00004290| 3b 0a 58 09 7d 0a 58 20 | 20 20 20 69 66 20 28 20 |;.X.}.X | if ( |
|000042a0| 73 73 63 61 6e 66 28 20 | 61 72 67 76 5b 32 5d 2c |sscanf( |argv[2],|
|000042b0| 20 22 25 64 22 2c 20 26 | 79 20 29 20 21 3d 20 31 | "%d", &|y ) != 1|
|000042c0| 20 29 0a 58 09 7b 0a 58 | 09 66 70 72 69 6e 74 66 | ).X.{.X|.fprintf|
|000042d0| 28 20 73 74 64 65 72 72 | 2c 20 75 73 61 67 65 2c |( stderr|, usage,|
|000042e0| 20 61 72 67 76 5b 30 5d | 20 29 3b 0a 58 09 65 78 | argv[0]| );.X.ex|
|000042f0| 69 74 28 20 31 20 29 3b | 0a 58 09 7d 0a 58 20 20 |it( 1 );|.X.}.X |
|00004300| 20 20 69 66 20 28 20 73 | 73 63 61 6e 66 28 20 61 | if ( s|scanf( a|
|00004310| 72 67 76 5b 33 5d 2c 20 | 22 25 64 22 2c 20 26 77 |rgv[3], |"%d", &w|
|00004320| 69 64 74 68 20 29 20 21 | 3d 20 31 20 29 0a 58 09 |idth ) !|= 1 ).X.|
|00004330| 7b 0a 58 09 66 70 72 69 | 6e 74 66 28 20 73 74 64 |{.X.fpri|ntf( std|
|00004340| 65 72 72 2c 20 75 73 61 | 67 65 2c 20 61 72 67 76 |err, usa|ge, argv|
|00004350| 5b 30 5d 20 29 3b 0a 58 | 09 65 78 69 74 28 20 31 |[0] );.X|.exit( 1|
|00004360| 20 29 3b 0a 58 09 7d 0a | 58 20 20 20 20 69 66 20 | );.X.}.|X if |
|00004370| 28 20 73 73 63 61 6e 66 | 28 20 61 72 67 76 5b 34 |( sscanf|( argv[4|
|00004380| 5d 2c 20 22 25 64 22 2c | 20 26 68 65 69 67 68 74 |], "%d",| &height|
|00004390| 20 29 20 21 3d 20 31 20 | 29 0a 58 09 7b 0a 58 09 | ) != 1 |).X.{.X.|
|000043a0| 66 70 72 69 6e 74 66 28 | 20 73 74 64 65 72 72 2c |fprintf(| stderr,|
|000043b0| 20 75 73 61 67 65 2c 20 | 61 72 67 76 5b 30 5d 20 | usage, |argv[0] |
|000043c0| 29 3b 0a 58 09 65 78 69 | 74 28 20 31 20 29 3b 0a |);.X.exi|t( 1 );.|
|000043d0| 58 09 7d 0a 58 0a 58 20 | 20 20 20 69 66 20 28 20 |X.}.X.X | if ( |
|000043e0| 78 20 3c 20 30 20 29 0a | 58 09 7b 0a 58 09 66 70 |x < 0 ).|X.{.X.fp|
|000043f0| 72 69 6e 74 66 28 20 73 | 74 64 65 72 72 2c 20 22 |rintf( s|tderr, "|
|00004400| 78 20 69 73 20 6c 65 73 | 73 20 74 68 61 6e 20 30 |x is les|s than 0|
|00004410| 5c 6e 22 20 29 3b 0a 58 | 09 65 78 69 74 28 20 31 |\n" );.X|.exit( 1|
|00004420| 20 29 3b 0a 58 09 7d 0a | 58 20 20 20 20 69 66 20 | );.X.}.|X if |
|00004430| 28 20 79 20 3c 20 30 20 | 29 0a 58 09 7b 0a 58 09 |( y < 0 |).X.{.X.|
|00004440| 66 70 72 69 6e 74 66 28 | 20 73 74 64 65 72 72 2c |fprintf(| stderr,|
|00004450| 20 22 79 20 69 73 20 6c | 65 73 73 20 74 68 61 6e | "y is l|ess than|
|00004460| 20 30 5c 6e 22 20 29 3b | 0a 58 09 65 78 69 74 28 | 0\n" );|.X.exit(|
|00004470| 20 31 20 29 3b 0a 58 09 | 7d 0a 58 20 20 20 20 69 | 1 );.X.|}.X i|
|00004480| 66 20 28 20 77 69 64 74 | 68 20 3c 20 31 20 29 0a |f ( widt|h < 1 ).|
|00004490| 58 09 7b 0a 58 09 66 70 | 72 69 6e 74 66 28 20 73 |X.{.X.fp|rintf( s|
|000044a0| 74 64 65 72 72 2c 20 22 | 77 69 64 74 68 20 69 73 |tderr, "|width is|
|000044b0| 20 6c 65 73 73 20 74 68 | 61 6e 20 31 5c 6e 22 20 | less th|an 1\n" |
|000044c0| 29 3b 0a 58 09 65 78 69 | 74 28 20 31 20 29 3b 0a |);.X.exi|t( 1 );.|
|000044d0| 58 09 7d 0a 58 20 20 20 | 20 69 66 20 28 20 68 65 |X.}.X | if ( he|
|000044e0| 69 67 68 74 20 3c 20 31 | 20 29 0a 58 09 7b 0a 58 |ight < 1| ).X.{.X|
|000044f0| 09 66 70 72 69 6e 74 66 | 28 20 73 74 64 65 72 72 |.fprintf|( stderr|
|00004500| 2c 20 22 68 65 69 67 68 | 74 20 69 73 20 6c 65 73 |, "heigh|t is les|
|00004510| 73 20 74 68 61 6e 20 31 | 5c 6e 22 20 29 3b 0a 58 |s than 1|\n" );.X|
|00004520| 09 65 78 69 74 28 20 31 | 20 29 3b 0a 58 09 7d 0a |.exit( 1| );.X.}.|
|00004530| 58 0a 58 20 20 20 20 69 | 66 20 28 20 61 72 67 63 |X.X i|f ( argc|
|00004540| 20 3d 3d 20 36 20 29 0a | 58 09 7b 0a 58 20 20 20 | == 6 ).|X.{.X |
|00004550| 20 20 20 20 20 69 66 64 | 20 3d 20 66 6f 70 65 6e | ifd| = fopen|
|00004560| 28 20 61 72 67 76 5b 35 | 5d 2c 20 22 72 22 20 29 |( argv[5|], "r" )|
|00004570| 3b 0a 58 20 20 20 20 20 | 20 20 20 69 66 20 28 20 |;.X | if ( |
|00004580| 69 66 64 20 3d 3d 20 4e | 55 4c 4c 20 29 0a 58 09 |ifd == N|ULL ).X.|
|00004590| 20 20 20 20 7b 0a 58 09 | 20 20 20 20 66 70 72 69 | {.X.| fpri|
|000045a0| 6e 74 66 28 20 73 74 64 | 65 72 72 2c 20 22 25 73 |ntf( std|err, "%s|
|000045b0| 3a 20 63 61 6e 27 74 20 | 6f 70 65 6e 2e 5c 6e 22 |: can't |open.\n"|
|000045c0| 2c 20 61 72 67 76 5b 35 | 5d 20 29 3b 0a 58 09 20 |, argv[5|] );.X. |
|000045d0| 20 20 20 65 78 69 74 28 | 20 31 20 29 3b 0a 58 09 | exit(| 1 );.X.|
|000045e0| 20 20 20 20 7d 0a 58 09 | 7d 0a 58 20 20 20 20 65 | }.X.|}.X e|
|000045f0| 6c 73 65 0a 58 09 69 66 | 64 20 3d 20 73 74 64 69 |lse.X.if|d = stdi|
|00004600| 6e 3b 0a 58 0a 58 20 20 | 20 20 62 69 74 73 20 3d |n;.X.X | bits =|
|00004610| 20 70 62 6d 5f 72 65 61 | 64 70 62 6d 28 20 69 66 | pbm_rea|dpbm( if|
|00004620| 64 2c 20 26 63 6f 6c 73 | 2c 20 26 72 6f 77 73 20 |d, &cols|, &rows |
|00004630| 29 3b 0a 58 0a 58 20 20 | 20 20 69 66 20 28 20 69 |);.X.X | if ( i|
|00004640| 66 64 20 21 3d 20 73 74 | 64 69 6e 20 29 0a 58 09 |fd != st|din ).X.|
|00004650| 66 63 6c 6f 73 65 28 20 | 69 66 64 20 29 3b 0a 58 |fclose( |ifd );.X|
|00004660| 0a 58 20 20 20 20 69 66 | 20 28 20 78 20 3e 3d 20 |.X if| ( x >= |
|00004670| 63 6f 6c 73 20 29 0a 58 | 09 7b 0a 58 09 66 70 72 |cols ).X|.{.X.fpr|
|00004680| 69 6e 74 66 28 0a 58 09 | 20 20 20 20 73 74 64 65 |intf(.X.| stde|
|00004690| 72 72 2c 20 22 78 20 69 | 73 20 74 6f 6f 20 6c 61 |rr, "x i|s too la|
|000046a0| 72 67 65 20 2d 2d 20 74 | 68 65 20 62 69 74 6d 61 |rge -- t|he bitma|
|000046b0| 70 20 68 61 73 20 6f 6e | 6c 79 20 25 64 20 63 6f |p has on|ly %d co|
|000046c0| 6c 73 5c 6e 22 2c 20 63 | 6f 6c 73 20 29 3b 0a 58 |ls\n", c|ols );.X|
|000046d0| 09 65 78 69 74 28 20 31 | 20 29 3b 0a 58 09 7d 0a |.exit( 1| );.X.}.|
|000046e0| 58 20 20 20 20 69 66 20 | 28 20 79 20 3e 3d 20 72 |X if |( y >= r|
|000046f0| 6f 77 73 20 29 0a 58 09 | 7b 0a 58 09 66 70 72 69 |ows ).X.|{.X.fpri|
|00004700| 6e 74 66 28 0a 58 09 20 | 20 20 20 73 74 64 65 72 |ntf(.X. | stder|
|00004710| 72 2c 20 22 79 20 69 73 | 20 74 6f 6f 20 6c 61 72 |r, "y is| too lar|
|00004720| 67 65 20 2d 2d 20 74 68 | 65 20 62 69 74 6d 61 70 |ge -- th|e bitmap|
|00004730| 20 68 61 73 20 6f 6e 6c | 79 20 25 64 20 72 6f 77 | has onl|y %d row|
|00004740| 73 5c 6e 22 2c 20 72 6f | 77 73 20 29 3b 0a 58 09 |s\n", ro|ws );.X.|
|00004750| 65 78 69 74 28 20 31 20 | 29 3b 0a 58 09 7d 0a 58 |exit( 1 |);.X.}.X|
|00004760| 20 20 20 20 69 66 20 28 | 20 78 20 2b 20 77 69 64 | if (| x + wid|
|00004770| 74 68 20 3e 20 63 6f 6c | 73 20 29 0a 58 09 7b 0a |th > col|s ).X.{.|
|00004780| 58 09 66 70 72 69 6e 74 | 66 28 0a 58 09 20 20 20 |X.fprint|f(.X. |
|00004790| 20 73 74 64 65 72 72 2c | 20 22 78 20 2b 20 77 69 | stderr,| "x + wi|
|000047a0| 64 74 68 20 69 73 20 74 | 6f 6f 20 6c 61 72 67 65 |dth is t|oo large|
|000047b0| 20 62 79 20 25 64 20 70 | 69 78 65 6c 73 5c 6e 22 | by %d p|ixels\n"|
|000047c0| 2c 20 78 20 2b 20 77 69 | 64 74 68 20 2d 20 63 6f |, x + wi|dth - co|
|000047d0| 6c 73 20 29 3b 0a 58 09 | 65 78 69 74 28 20 31 20 |ls );.X.|exit( 1 |
|000047e0| 29 3b 0a 58 09 7d 0a 58 | 20 20 20 20 69 66 20 28 |);.X.}.X| if (|
|000047f0| 20 79 20 2b 20 68 65 69 | 67 68 74 20 3e 20 72 6f | y + hei|ght > ro|
|00004800| 77 73 20 29 0a 58 09 7b | 0a 58 09 66 70 72 69 6e |ws ).X.{|.X.fprin|
|00004810| 74 66 28 0a 58 09 20 20 | 20 20 73 74 64 65 72 72 |tf(.X. | stderr|
|00004820| 2c 20 22 79 20 2b 20 68 | 65 69 67 68 74 20 69 73 |, "y + h|eight is|
|00004830| 20 74 6f 6f 20 6c 61 72 | 67 65 20 62 79 20 25 64 | too lar|ge by %d|
|00004840| 20 70 69 78 65 6c 73 5c | 6e 22 2c 0a 58 09 20 20 | pixels\|n",.X. |
|00004850| 20 20 79 20 2b 20 68 65 | 69 67 68 74 20 2d 20 72 | y + he|ight - r|
|00004860| 6f 77 73 20 29 3b 0a 58 | 09 65 78 69 74 28 20 31 |ows );.X|.exit( 1|
|00004870| 20 29 3b 0a 58 09 7d 0a | 58 0a 58 20 20 20 20 6e | );.X.}.|X.X n|
|00004880| 65 77 62 69 74 73 20 3d | 20 70 62 6d 5f 61 6c 6c |ewbits =| pbm_all|
|00004890| 6f 63 61 72 72 61 79 28 | 20 77 69 64 74 68 2c 20 |ocarray(| width, |
|000048a0| 68 65 69 67 68 74 20 29 | 3b 0a 58 20 20 20 20 66 |height )|;.X f|
|000048b0| 6f 72 20 28 20 72 6f 77 | 20 3d 20 79 3b 20 72 6f |or ( row| = y; ro|
|000048c0| 77 20 3c 20 79 20 2b 20 | 68 65 69 67 68 74 3b 20 |w < y + |height; |
|000048d0| 72 6f 77 2b 2b 20 29 0a | 58 20 20 20 20 20 20 20 |row++ ).|X |
|000048e0| 20 66 6f 72 20 28 20 63 | 6f 6c 20 3d 20 78 3b 20 | for ( c|ol = x; |
|000048f0| 63 6f 6c 20 3c 20 78 20 | 2b 20 77 69 64 74 68 3b |col < x |+ width;|
|00004900| 20 63 6f 6c 2b 2b 20 29 | 0a 58 09 20 20 20 20 6e | col++ )|.X. n|
|00004910| 65 77 62 69 74 73 5b 72 | 6f 77 2d 79 5d 5b 63 6f |ewbits[r|ow-y][co|
|00004920| 6c 2d 78 5d 20 3d 20 62 | 69 74 73 5b 72 6f 77 5d |l-x] = b|its[row]|
|00004930| 5b 63 6f 6c 5d 3b 0a 58 | 0a 58 20 20 20 20 70 62 |[col];.X|.X pb|
|00004940| 6d 5f 77 72 69 74 65 70 | 62 6d 28 20 73 74 64 6f |m_writep|bm( stdo|
|00004950| 75 74 2c 20 6e 65 77 62 | 69 74 73 2c 20 77 69 64 |ut, newb|its, wid|
|00004960| 74 68 2c 20 68 65 69 67 | 68 74 20 29 3b 0a 58 0a |th, heig|ht );.X.|
|00004970| 58 20 20 20 20 65 78 69 | 74 28 20 30 20 29 3b 0a |X exi|t( 0 );.|
|00004980| 58 20 20 20 20 7d 0a 53 | 48 41 52 5f 45 4f 46 0a |X }.S|HAR_EOF.|
|00004990| 69 66 20 74 65 73 74 20 | 32 36 30 36 20 2d 6e 65 |if test |2606 -ne|
|000049a0| 20 22 60 77 63 20 2d 63 | 20 3c 20 27 70 62 6d 63 | "`wc -c| < 'pbmc|
|000049b0| 75 74 2e 63 27 60 22 0a | 74 68 65 6e 0a 09 65 63 |ut.c'`".|then..ec|
|000049c0| 68 6f 20 73 68 61 72 3a | 20 65 72 72 6f 72 20 74 |ho shar:| error t|
|000049d0| 72 61 6e 73 6d 69 74 74 | 69 6e 67 20 22 27 70 62 |ransmitt|ing "'pb|
|000049e0| 6d 63 75 74 2e 63 27 22 | 20 27 28 73 68 6f 75 6c |mcut.c'"| '(shoul|
|000049f0| 64 20 68 61 76 65 20 62 | 65 65 6e 20 32 36 30 36 |d have b|een 2606|
|00004a00| 20 63 68 61 72 61 63 74 | 65 72 73 29 27 0a 66 69 | charact|ers)'.fi|
|00004a10| 0a 66 69 20 23 20 65 6e | 64 20 6f 66 20 6f 76 65 |.fi # en|d of ove|
|00004a20| 72 77 72 69 74 69 6e 67 | 20 63 68 65 63 6b 0a 65 |rwriting| check.e|
|00004a30| 63 68 6f 20 73 68 61 72 | 3a 20 65 78 74 72 61 63 |cho shar|: extrac|
|00004a40| 74 69 6e 67 20 22 27 70 | 62 6d 63 75 74 2e 31 27 |ting "'p|bmcut.1'|
|00004a50| 22 20 27 28 37 32 36 20 | 63 68 61 72 61 63 74 65 |" '(726 |characte|
|00004a60| 72 73 29 27 0a 69 66 20 | 74 65 73 74 20 2d 66 20 |rs)'.if |test -f |
|00004a70| 27 70 62 6d 63 75 74 2e | 31 27 0a 74 68 65 6e 0a |'pbmcut.|1'.then.|
|00004a80| 09 65 63 68 6f 20 73 68 | 61 72 3a 20 77 69 6c 6c |.echo sh|ar: will|
|00004a90| 20 6e 6f 74 20 6f 76 65 | 72 2d 77 72 69 74 65 20 | not ove|r-write |
|00004aa0| 65 78 69 73 74 69 6e 67 | 20 66 69 6c 65 20 22 27 |existing| file "'|
|00004ab0| 70 62 6d 63 75 74 2e 31 | 27 22 0a 65 6c 73 65 0a |pbmcut.1|'".else.|
|00004ac0| 73 65 64 20 27 73 2f 5e | 58 2f 2f 27 20 3c 3c 20 |sed 's/^|X//' << |
|00004ad0| 5c 53 48 41 52 5f 45 4f | 46 20 3e 20 27 70 62 6d |\SHAR_EO|F > 'pbm|
|00004ae0| 63 75 74 2e 31 27 0a 58 | 2e 54 48 20 70 62 6d 63 |cut.1'.X|.TH pbmc|
|00004af0| 75 74 20 31 20 22 33 31 | 20 41 75 67 75 73 74 20 |ut 1 "31| August |
|00004b00| 31 39 38 38 22 0a 58 2e | 53 48 20 4e 41 4d 45 0a |1988".X.|SH NAME.|
|00004b10| 58 70 62 6d 63 75 74 20 | 2d 20 63 75 74 20 61 20 |Xpbmcut |- cut a |
|00004b20| 72 65 63 74 61 6e 67 6c | 65 20 6f 75 74 20 6f 66 |rectangl|e out of|
|00004b30| 20 61 20 70 6f 72 74 61 | 62 6c 65 20 62 69 74 6d | a porta|ble bitm|
|00004b40| 61 70 0a 58 2e 53 48 20 | 53 59 4e 4f 50 53 49 53 |ap.X.SH |SYNOPSIS|
|00004b50| 0a 58 70 62 6d 63 75 74 | 20 78 20 79 20 77 69 64 |.Xpbmcut| x y wid|
|00004b60| 74 68 20 68 65 69 67 68 | 74 20 5b 70 62 6d 66 69 |th heigh|t [pbmfi|
|00004b70| 6c 65 5d 0a 58 2e 53 48 | 20 44 45 53 43 52 49 50 |le].X.SH| DESCRIP|
|00004b80| 54 49 4f 4e 0a 58 52 65 | 61 64 73 20 61 20 70 6f |TION.XRe|ads a po|
|00004b90| 72 74 61 62 6c 65 20 62 | 69 74 6d 61 70 20 61 73 |rtable b|itmap as|
|00004ba0| 20 69 6e 70 75 74 2e 0a | 58 45 78 74 72 61 63 74 | input..|XExtract|
|00004bb0| 73 20 74 68 65 20 73 70 | 65 63 69 66 69 65 64 20 |s the sp|ecified |
|00004bc0| 72 65 63 74 61 6e 67 6c | 65 2c 0a 58 61 6e 64 20 |rectangl|e,.Xand |
|00004bd0| 70 72 6f 64 75 63 65 73 | 20 61 20 70 6f 72 74 61 |produces| a porta|
|00004be0| 62 6c 65 20 62 69 74 6d | 61 70 20 61 73 20 6f 75 |ble bitm|ap as ou|
|00004bf0| 74 70 75 74 2e 0a 58 2e | 53 48 20 22 53 45 45 20 |tput..X.|SH "SEE |
|00004c00| 41 4c 53 4f 22 0a 58 70 | 62 6d 63 72 6f 70 28 31 |ALSO".Xp|bmcrop(1|
|00004c10| 29 2c 20 70 62 6d 70 61 | 73 74 65 28 31 29 2c 20 |), pbmpa|ste(1), |
|00004c20| 70 62 6d 28 35 29 0a 58 | 2e 53 48 20 41 55 54 48 |pbm(5).X|.SH AUTH|
|00004c30| 4f 52 0a 58 43 6f 70 79 | 72 69 67 68 74 20 28 43 |OR.XCopy|right (C|
|00004c40| 29 20 31 39 38 38 20 62 | 79 20 4a 65 66 20 50 6f |) 1988 b|y Jef Po|
|00004c50| 73 6b 61 6e 7a 65 72 2e | 0a 58 0a 58 50 65 72 6d |skanzer.|.X.XPerm|
|00004c60| 69 73 73 69 6f 6e 20 74 | 6f 20 75 73 65 2c 20 63 |ission t|o use, c|
|00004c70| 6f 70 79 2c 20 6d 6f 64 | 69 66 79 2c 20 61 6e 64 |opy, mod|ify, and|
|00004c80| 20 64 69 73 74 72 69 62 | 75 74 65 20 74 68 69 73 | distrib|ute this|
|00004c90| 20 73 6f 66 74 77 61 72 | 65 20 61 6e 64 20 69 74 | softwar|e and it|
|00004ca0| 73 0a 58 64 6f 63 75 6d | 65 6e 74 61 74 69 6f 6e |s.Xdocum|entation|
|00004cb0| 20 66 6f 72 20 61 6e 79 | 20 70 75 72 70 6f 73 65 | for any| purpose|
|00004cc0| 20 61 6e 64 20 77 69 74 | 68 6f 75 74 20 66 65 65 | and wit|hout fee|
|00004cd0| 20 69 73 20 68 65 72 65 | 62 79 20 67 72 61 6e 74 | is here|by grant|
|00004ce0| 65 64 2c 20 70 72 6f 76 | 69 64 65 64 0a 58 74 68 |ed, prov|ided.Xth|
|00004cf0| 61 74 20 74 68 65 20 61 | 62 6f 76 65 20 63 6f 70 |at the a|bove cop|
|00004d00| 79 72 69 67 68 74 20 6e | 6f 74 69 63 65 20 61 70 |yright n|otice ap|
|00004d10| 70 65 61 72 20 69 6e 20 | 61 6c 6c 20 63 6f 70 69 |pear in |all copi|
|00004d20| 65 73 20 61 6e 64 20 74 | 68 61 74 20 62 6f 74 68 |es and t|hat both|
|00004d30| 20 74 68 61 74 0a 58 63 | 6f 70 79 72 69 67 68 74 | that.Xc|opyright|
|00004d40| 20 6e 6f 74 69 63 65 20 | 61 6e 64 20 74 68 69 73 | notice |and this|
|00004d50| 20 70 65 72 6d 69 73 73 | 69 6f 6e 20 6e 6f 74 69 | permiss|ion noti|
|00004d60| 63 65 20 61 70 70 65 61 | 72 20 69 6e 20 73 75 70 |ce appea|r in sup|
|00004d70| 70 6f 72 74 69 6e 67 0a | 58 64 6f 63 75 6d 65 6e |porting.|Xdocumen|
|00004d80| 74 61 74 69 6f 6e 2e 20 | 20 54 68 69 73 20 73 6f |tation. | This so|
|00004d90| 66 74 77 61 72 65 20 69 | 73 20 70 72 6f 76 69 64 |ftware i|s provid|
|00004da0| 65 64 20 22 61 73 20 69 | 73 22 20 77 69 74 68 6f |ed "as i|s" witho|
|00004db0| 75 74 20 65 78 70 72 65 | 73 73 20 6f 72 0a 58 69 |ut expre|ss or.Xi|
|00004dc0| 6d 70 6c 69 65 64 20 77 | 61 72 72 61 6e 74 79 2e |mplied w|arranty.|
|00004dd0| 0a 53 48 41 52 5f 45 4f | 46 0a 69 66 20 74 65 73 |.SHAR_EO|F.if tes|
|00004de0| 74 20 37 32 36 20 2d 6e | 65 20 22 60 77 63 20 2d |t 726 -n|e "`wc -|
|00004df0| 63 20 3c 20 27 70 62 6d | 63 75 74 2e 31 27 60 22 |c < 'pbm|cut.1'`"|
|00004e00| 0a 74 68 65 6e 0a 09 65 | 63 68 6f 20 73 68 61 72 |.then..e|cho shar|
|00004e10| 3a 20 65 72 72 6f 72 20 | 74 72 61 6e 73 6d 69 74 |: error |transmit|
|00004e20| 74 69 6e 67 20 22 27 70 | 62 6d 63 75 74 2e 31 27 |ting "'p|bmcut.1'|
|00004e30| 22 20 27 28 73 68 6f 75 | 6c 64 20 68 61 76 65 20 |" '(shou|ld have |
|00004e40| 62 65 65 6e 20 37 32 36 | 20 63 68 61 72 61 63 74 |been 726| charact|
|00004e50| 65 72 73 29 27 0a 66 69 | 0a 66 69 20 23 20 65 6e |ers)'.fi|.fi # en|
|00004e60| 64 20 6f 66 20 6f 76 65 | 72 77 72 69 74 69 6e 67 |d of ove|rwriting|
|00004e70| 20 63 68 65 63 6b 0a 65 | 63 68 6f 20 73 68 61 72 | check.e|cho shar|
|00004e80| 3a 20 65 78 74 72 61 63 | 74 69 6e 67 20 22 27 70 |: extrac|ting "'p|
|00004e90| 62 6d 70 61 73 74 65 2e | 63 27 22 20 27 28 33 35 |bmpaste.|c'" '(35|
|00004ea0| 32 31 20 63 68 61 72 61 | 63 74 65 72 73 29 27 0a |21 chara|cters)'.|
|00004eb0| 69 66 20 74 65 73 74 20 | 2d 66 20 27 70 62 6d 70 |if test |-f 'pbmp|
|00004ec0| 61 73 74 65 2e 63 27 0a | 74 68 65 6e 0a 09 65 63 |aste.c'.|then..ec|
|00004ed0| 68 6f 20 73 68 61 72 3a | 20 77 69 6c 6c 20 6e 6f |ho shar:| will no|
|00004ee0| 74 20 6f 76 65 72 2d 77 | 72 69 74 65 20 65 78 69 |t over-w|rite exi|
|00004ef0| 73 74 69 6e 67 20 66 69 | 6c 65 20 22 27 70 62 6d |sting fi|le "'pbm|
|00004f00| 70 61 73 74 65 2e 63 27 | 22 0a 65 6c 73 65 0a 73 |paste.c'|".else.s|
|00004f10| 65 64 20 27 73 2f 5e 58 | 2f 2f 27 20 3c 3c 20 5c |ed 's/^X|//' << \|
|00004f20| 53 48 41 52 5f 45 4f 46 | 20 3e 20 27 70 62 6d 70 |SHAR_EOF| > 'pbmp|
|00004f30| 61 73 74 65 2e 63 27 0a | 58 2f 2a 20 70 62 6d 70 |aste.c'.|X/* pbmp|
|00004f40| 61 73 74 65 2e 63 20 2d | 20 70 61 73 74 65 20 61 |aste.c -| paste a|
|00004f50| 20 72 65 63 74 61 6e 67 | 6c 65 20 69 6e 74 6f 20 | rectang|le into |
|00004f60| 61 20 70 6f 72 74 61 62 | 6c 65 20 62 69 74 6d 61 |a portab|le bitma|
|00004f70| 70 0a 58 2a 2a 0a 58 2a | 2a 20 43 6f 70 79 72 69 |p.X**.X*|* Copyri|
|00004f80| 67 68 74 20 28 43 29 20 | 31 39 38 38 20 62 79 20 |ght (C) |1988 by |
|00004f90| 4a 65 66 20 50 6f 73 6b | 61 6e 7a 65 72 2e 0a 58 |Jef Posk|anzer..X|
|00004fa0| 2a 2a 0a 58 2a 2a 20 50 | 65 72 6d 69 73 73 69 6f |**.X** P|ermissio|
|00004fb0| 6e 20 74 6f 20 75 73 65 | 2c 20 63 6f 70 79 2c 20 |n to use|, copy, |
|00004fc0| 6d 6f 64 69 66 79 2c 20 | 61 6e 64 20 64 69 73 74 |modify, |and dist|
|00004fd0| 72 69 62 75 74 65 20 74 | 68 69 73 20 73 6f 66 74 |ribute t|his soft|
|00004fe0| 77 61 72 65 20 61 6e 64 | 20 69 74 73 0a 58 2a 2a |ware and| its.X**|
|00004ff0| 20 64 6f 63 75 6d 65 6e | 74 61 74 69 6f 6e 20 66 | documen|tation f|
|00005000| 6f 72 20 61 6e 79 20 70 | 75 72 70 6f 73 65 20 61 |or any p|urpose a|
|00005010| 6e 64 20 77 69 74 68 6f | 75 74 20 66 65 65 20 69 |nd witho|ut fee i|
|00005020| 73 20 68 65 72 65 62 79 | 20 67 72 61 6e 74 65 64 |s hereby| granted|
|00005030| 2c 20 70 72 6f 76 69 64 | 65 64 0a 58 2a 2a 20 74 |, provid|ed.X** t|
|00005040| 68 61 74 20 74 68 65 20 | 61 62 6f 76 65 20 63 6f |hat the |above co|
|00005050| 70 79 72 69 67 68 74 20 | 6e 6f 74 69 63 65 20 61 |pyright |notice a|
|00005060| 70 70 65 61 72 20 69 6e | 20 61 6c 6c 20 63 6f 70 |ppear in| all cop|
|00005070| 69 65 73 20 61 6e 64 20 | 74 68 61 74 20 62 6f 74 |ies and |that bot|
|00005080| 68 20 74 68 61 74 0a 58 | 2a 2a 20 63 6f 70 79 72 |h that.X|** copyr|
|00005090| 69 67 68 74 20 6e 6f 74 | 69 63 65 20 61 6e 64 20 |ight not|ice and |
|000050a0| 74 68 69 73 20 70 65 72 | 6d 69 73 73 69 6f 6e 20 |this per|mission |
|000050b0| 6e 6f 74 69 63 65 20 61 | 70 70 65 61 72 20 69 6e |notice a|ppear in|
|000050c0| 20 73 75 70 70 6f 72 74 | 69 6e 67 0a 58 2a 2a 20 | support|ing.X** |
|000050d0| 64 6f 63 75 6d 65 6e 74 | 61 74 69 6f 6e 2e 20 20 |document|ation. |
|000050e0| 54 68 69 73 20 73 6f 66 | 74 77 61 72 65 20 69 73 |This sof|tware is|
|000050f0| 20 70 72 6f 76 69 64 65 | 64 20 22 61 73 20 69 73 | provide|d "as is|
|00005100| 22 20 77 69 74 68 6f 75 | 74 20 65 78 70 72 65 73 |" withou|t expres|
|00005110| 73 20 6f 72 0a 58 2a 2a | 20 69 6d 70 6c 69 65 64 |s or.X**| implied|
|00005120| 20 77 61 72 72 61 6e 74 | 79 2e 0a 58 2a 2f 0a 58 | warrant|y..X*/.X|
|00005130| 0a 58 23 69 6e 63 6c 75 | 64 65 20 3c 73 74 64 69 |.X#inclu|de <stdi|
|00005140| 6f 2e 68 3e 0a 58 23 69 | 6e 63 6c 75 64 65 20 22 |o.h>.X#i|nclude "|
|00005150| 70 62 6d 2e 68 22 0a 58 | 0a 58 6d 61 69 6e 28 20 |pbm.h".X|.Xmain( |
|00005160| 61 72 67 63 2c 20 61 72 | 67 76 20 29 0a 58 69 6e |argc, ar|gv ).Xin|
|00005170| 74 20 61 72 67 63 3b 0a | 58 63 68 61 72 20 2a 61 |t argc;.|Xchar *a|
|00005180| 72 67 76 5b 5d 3b 0a 58 | 20 20 20 20 7b 0a 58 20 |rgv[];.X| {.X |
|00005190| 20 20 20 46 49 4c 45 20 | 2a 69 66 64 3b 0a 58 20 | FILE |*ifd;.X |
|000051a0| 20 20 20 62 69 74 20 2a | 2a 62 69 74 73 31 2c 20 | bit *|*bits1, |
|000051b0| 2a 2a 62 69 74 73 32 3b | 0a 58 20 20 20 20 69 6e |**bits2;|.X in|
|000051c0| 74 20 61 72 67 6e 2c 20 | 72 6f 77 73 31 2c 20 63 |t argn, |rows1, c|
|000051d0| 6f 6c 73 31 2c 20 78 2c | 20 79 2c 20 72 6f 77 73 |ols1, x,| y, rows|
|000051e0| 32 2c 20 63 6f 6c 73 32 | 2c 20 72 6f 77 2c 20 63 |2, cols2|, row, c|
|000051f0| 6f 6c 3b 0a 58 20 20 20 | 20 63 68 61 72 20 66 75 |ol;.X | char fu|
|00005200| 6e 63 74 69 6f 6e 3b 0a | 58 20 20 20 20 63 68 61 |nction;.|X cha|
|00005210| 72 20 2a 75 73 61 67 65 | 20 3d 20 22 75 73 61 67 |r *usage| = "usag|
|00005220| 65 3a 20 20 25 73 20 5b | 2d 72 5d 2f 5b 2d 6f 5d |e: %s [|-r]/[-o]|
|00005230| 2f 5b 2d 61 5d 2f 5b 2d | 78 5d 20 66 72 6f 6d 70 |/[-a]/[-|x] fromp|
|00005240| 62 6d 66 69 6c 65 20 78 | 20 79 20 5b 69 6e 74 6f |bmfile x| y [into|
|00005250| 70 62 6d 66 69 6c 65 5d | 5c 6e 22 3b 0a 58 0a 58 |pbmfile]|\n";.X.X|
|00005260| 20 20 20 20 61 72 67 6e | 20 3d 20 31 3b 0a 58 20 | argn| = 1;.X |
|00005270| 20 20 20 66 75 6e 63 74 | 69 6f 6e 20 3d 20 27 72 | funct|ion = 'r|
|00005280| 27 3b 0a 58 0a 58 20 20 | 20 20 2f 2a 20 43 68 65 |';.X.X | /* Che|
|00005290| 63 6b 20 66 6f 72 20 66 | 6c 61 67 73 2e 20 2a 2f |ck for f|lags. */|
|000052a0| 0a 58 20 20 20 20 69 66 | 20 28 20 61 72 67 6e 20 |.X if| ( argn |
|000052b0| 3c 20 61 72 67 63 20 29 | 0a 58 09 7b 0a 58 09 69 |< argc )|.X.{.X.i|
|000052c0| 66 20 28 20 61 72 67 76 | 5b 61 72 67 6e 5d 5b 30 |f ( argv|[argn][0|
|000052d0| 5d 20 3d 3d 20 27 2d 27 | 20 29 0a 58 09 20 20 20 |] == '-'| ).X. |
|000052e0| 20 7b 0a 58 09 20 20 20 | 20 69 66 20 28 20 28 20 | {.X. | if ( ( |
|000052f0| 61 72 67 76 5b 61 72 67 | 6e 5d 5b 31 5d 20 3d 3d |argv[arg|n][1] ==|
|00005300| 20 27 72 27 20 7c 7c 20 | 61 72 67 76 5b 61 72 67 | 'r' || |argv[arg|
|00005310| 6e 5d 5b 31 5d 20 3d 3d | 20 27 52 27 20 7c 7c 0a |n][1] ==| 'R' ||.|
|00005320| 58 09 09 20 20 20 61 72 | 67 76 5b 61 72 67 6e 5d |X.. ar|gv[argn]|
|00005330| 5b 31 5d 20 3d 3d 20 27 | 6f 27 20 7c 7c 20 61 72 |[1] == '|o' || ar|
|00005340| 67 76 5b 61 72 67 6e 5d | 5b 31 5d 20 3d 3d 20 27 |gv[argn]|[1] == '|
|00005350| 4f 27 20 7c 7c 0a 58 09 | 09 20 20 20 61 72 67 76 |O' ||.X.|. argv|
|00005360| 5b 61 72 67 6e 5d 5b 31 | 5d 20 3d 3d 20 27 61 27 |[argn][1|] == 'a'|
|00005370| 20 7c 7c 20 61 72 67 76 | 5b 61 72 67 6e 5d 5b 31 | || argv|[argn][1|
|00005380| 5d 20 3d 3d 20 27 41 27 | 20 7c 7c 0a 58 09 09 20 |] == 'A'| ||.X.. |
|00005390| 20 20 61 72 67 76 5b 61 | 72 67 6e 5d 5b 31 5d 20 | argv[a|rgn][1] |
|000053a0| 3d 3d 20 27 78 27 20 7c | 7c 20 61 72 67 76 5b 61 |== 'x' ||| argv[a|
|000053b0| 72 67 6e 5d 5b 31 5d 20 | 3d 3d 20 27 58 27 20 29 |rgn][1] |== 'X' )|
|000053c0| 20 26 26 0a 58 09 09 20 | 61 72 67 76 5b 61 72 67 | &&.X.. |argv[arg|
|000053d0| 6e 5d 5b 32 5d 20 3d 3d | 20 27 5c 30 27 20 29 0a |n][2] ==| '\0' ).|
|000053e0| 58 09 09 66 75 6e 63 74 | 69 6f 6e 20 3d 20 61 72 |X..funct|ion = ar|
|000053f0| 67 76 5b 61 72 67 6e 5d | 5b 31 5d 3b 0a 58 09 20 |gv[argn]|[1];.X. |
|00005400| 20 20 20 65 6c 73 65 0a | 58 09 09 7b 0a 58 09 09 | else.|X..{.X..|
|00005410| 66 70 72 69 6e 74 66 28 | 20 73 74 64 65 72 72 2c |fprintf(| stderr,|
|00005420| 20 75 73 61 67 65 2c 20 | 61 72 67 76 5b 30 5d 20 | usage, |argv[0] |
|00005430| 29 3b 0a 58 09 09 65 78 | 69 74 28 20 31 20 29 3b |);.X..ex|it( 1 );|
|00005440| 0a 58 09 09 7d 0a 58 09 | 20 20 20 20 61 72 67 6e |.X..}.X.| argn|
|00005450| 2b 2b 3b 0a 58 09 20 20 | 20 20 7d 0a 58 09 7d 0a |++;.X. | }.X.}.|
|00005460| 58 0a 58 20 20 20 20 69 | 66 20 28 20 61 72 67 6e |X.X i|f ( argn|
|00005470| 20 3d 3d 20 61 72 67 63 | 20 29 0a 58 09 7b 0a 58 | == argc| ).X.{.X|
|00005480| 09 66 70 72 69 6e 74 66 | 28 20 73 74 64 65 72 72 |.fprintf|( stderr|
|00005490| 2c 20 75 73 61 67 65 2c | 20 61 72 67 76 5b 30 5d |, usage,| argv[0]|
|000054a0| 20 29 3b 0a 58 09 65 78 | 69 74 28 20 31 20 29 3b | );.X.ex|it( 1 );|
|000054b0| 0a 58 09 7d 0a 58 20 20 | 20 20 69 66 64 20 3d 20 |.X.}.X | ifd = |
|000054c0| 66 6f 70 65 6e 28 20 61 | 72 67 76 5b 61 72 67 6e |fopen( a|rgv[argn|
|000054d0| 5d 2c 20 22 72 22 20 29 | 3b 0a 58 20 20 20 20 69 |], "r" )|;.X i|
|000054e0| 66 20 28 20 69 66 64 20 | 3d 3d 20 4e 55 4c 4c 20 |f ( ifd |== NULL |
|000054f0| 29 0a 58 09 7b 0a 58 09 | 66 70 72 69 6e 74 66 28 |).X.{.X.|fprintf(|
|00005500| 20 73 74 64 65 72 72 2c | 20 22 25 73 3a 20 63 61 | stderr,| "%s: ca|
|00005510| 6e 27 74 20 6f 70 65 6e | 2e 5c 6e 22 2c 20 61 72 |n't open|.\n", ar|
|00005520| 67 76 5b 61 72 67 6e 5d | 20 29 3b 0a 58 09 65 78 |gv[argn]| );.X.ex|
|00005530| 69 74 28 20 31 20 29 3b | 0a 58 09 7d 0a 58 20 20 |it( 1 );|.X.}.X |
|00005540| 20 20 62 69 74 73 31 20 | 3d 20 70 62 6d 5f 72 65 | bits1 |= pbm_re|
|00005550| 61 64 70 62 6d 28 20 69 | 66 64 2c 20 26 63 6f 6c |adpbm( i|fd, &col|
|00005560| 73 31 2c 20 26 72 6f 77 | 73 31 20 29 3b 0a 58 20 |s1, &row|s1 );.X |
|00005570| 20 20 20 66 63 6c 6f 73 | 65 28 20 69 66 64 20 29 | fclos|e( ifd )|
|00005580| 3b 0a 58 20 20 20 20 61 | 72 67 6e 2b 2b 3b 0a 58 |;.X a|rgn++;.X|
|00005590| 0a 58 20 20 20 20 69 66 | 20 28 20 61 72 67 6e 20 |.X if| ( argn |
|000055a0| 3d 3d 20 61 72 67 63 20 | 29 0a 58 09 7b 0a 58 09 |== argc |).X.{.X.|
|000055b0| 66 70 72 69 6e 74 66 28 | 20 73 74 64 65 72 72 2c |fprintf(| stderr,|
|000055c0| 20 75 73 61 67 65 2c 20 | 61 72 67 76 5b 30 5d 20 | usage, |argv[0] |
|000055d0| 29 3b 0a 58 09 65 78 69 | 74 28 20 31 20 29 3b 0a |);.X.exi|t( 1 );.|
|000055e0| 58 09 7d 0a 58 20 20 20 | 20 69 66 20 28 20 73 73 |X.}.X | if ( ss|
|000055f0| 63 61 6e 66 28 20 61 72 | 67 76 5b 61 72 67 6e 5d |canf( ar|gv[argn]|
|00005600| 2c 20 22 25 64 22 2c 20 | 26 78 20 29 20 21 3d 20 |, "%d", |&x ) != |
|00005610| 31 20 29 0a 58 09 7b 0a | 58 09 66 70 72 69 6e 74 |1 ).X.{.|X.fprint|
|00005620| 66 28 20 73 74 64 65 72 | 72 2c 20 75 73 61 67 65 |f( stder|r, usage|
|00005630| 2c 20 61 72 67 76 5b 30 | 5d 20 29 3b 0a 58 09 65 |, argv[0|] );.X.e|
|00005640| 78 69 74 28 20 31 20 29 | 3b 0a 58 09 7d 0a 58 20 |xit( 1 )|;.X.}.X |
|00005650| 20 20 20 61 72 67 6e 2b | 2b 3b 0a 58 20 20 20 20 | argn+|+;.X |
|00005660| 69 66 20 28 20 61 72 67 | 6e 20 3d 3d 20 61 72 67 |if ( arg|n == arg|
|00005670| 63 20 29 0a 58 09 7b 0a | 58 09 66 70 72 69 6e 74 |c ).X.{.|X.fprint|
|00005680| 66 28 20 73 74 64 65 72 | 72 2c 20 75 73 61 67 65 |f( stder|r, usage|
|00005690| 2c 20 61 72 67 76 5b 30 | 5d 20 29 3b 0a 58 09 65 |, argv[0|] );.X.e|
|000056a0| 78 69 74 28 20 31 20 29 | 3b 0a 58 09 7d 0a 58 20 |xit( 1 )|;.X.}.X |
|000056b0| 20 20 20 69 66 20 28 20 | 73 73 63 61 6e 66 28 20 | if ( |sscanf( |
|000056c0| 61 72 67 76 5b 61 72 67 | 6e 5d 2c 20 22 25 64 22 |argv[arg|n], "%d"|
|000056d0| 2c 20 26 79 20 29 20 21 | 3d 20 31 20 29 0a 58 09 |, &y ) !|= 1 ).X.|
|000056e0| 7b 0a 58 09 66 70 72 69 | 6e 74 66 28 20 73 74 64 |{.X.fpri|ntf( std|
|000056f0| 65 72 72 2c 20 75 73 61 | 67 65 2c 20 61 72 67 76 |err, usa|ge, argv|
|00005700| 5b 30 5d 20 29 3b 0a 58 | 09 65 78 69 74 28 20 31 |[0] );.X|.exit( 1|
|00005710| 20 29 3b 0a 58 09 7d 0a | 58 20 20 20 20 61 72 67 | );.X.}.|X arg|
|00005720| 6e 2b 2b 3b 0a 58 0a 58 | 20 20 20 20 69 66 20 28 |n++;.X.X| if (|
|00005730| 20 78 20 3c 20 30 20 29 | 0a 58 09 7b 0a 58 09 66 | x < 0 )|.X.{.X.f|
|00005740| 70 72 69 6e 74 66 28 20 | 73 74 64 65 72 72 2c 20 |printf( |stderr, |
|00005750| 22 78 20 69 73 20 6c 65 | 73 73 20 74 68 61 6e 20 |"x is le|ss than |
|00005760| 30 5c 6e 22 20 29 3b 0a | 58 09 65 78 69 74 28 20 |0\n" );.|X.exit( |
|00005770| 31 20 29 3b 0a 58 09 7d | 0a 58 20 20 20 20 69 66 |1 );.X.}|.X if|
|00005780| 20 28 20 79 20 3c 20 30 | 20 29 0a 58 09 7b 0a 58 | ( y < 0| ).X.{.X|
|00005790| 09 66 70 72 69 6e 74 66 | 28 20 73 74 64 65 72 72 |.fprintf|( stderr|
|000057a0| 2c 20 22 79 20 69 73 20 | 6c 65 73 73 20 74 68 61 |, "y is |less tha|
|000057b0| 6e 20 30 5c 6e 22 20 29 | 3b 0a 58 09 65 78 69 74 |n 0\n" )|;.X.exit|
|000057c0| 28 20 31 20 29 3b 0a 58 | 09 7d 0a 58 0a 58 20 20 |( 1 );.X|.}.X.X |
|000057d0| 20 20 69 66 20 28 20 61 | 72 67 6e 20 3d 3d 20 61 | if ( a|rgn == a|
|000057e0| 72 67 63 20 29 0a 58 09 | 69 66 64 20 3d 20 73 74 |rgc ).X.|ifd = st|
|000057f0| 64 69 6e 3b 0a 58 20 20 | 20 20 65 6c 73 65 0a 58 |din;.X | else.X|
|00005800| 09 7b 0a 58 20 20 20 20 | 20 20 20 20 69 66 64 20 |.{.X | ifd |
|00005810| 3d 20 66 6f 70 65 6e 28 | 20 61 72 67 76 5b 61 72 |= fopen(| argv[ar|
|00005820| 67 6e 5d 2c 20 22 72 22 | 20 29 3b 0a 58 20 20 20 |gn], "r"| );.X |
|00005830| 20 20 20 20 20 69 66 20 | 28 20 69 66 64 20 3d 3d | if |( ifd ==|
|00005840| 20 4e 55 4c 4c 20 29 0a | 58 09 20 20 20 20 7b 0a | NULL ).|X. {.|
|00005850| 58 09 20 20 20 20 66 70 | 72 69 6e 74 66 28 20 73 |X. fp|rintf( s|
|00005860| 74 64 65 72 72 2c 20 22 | 25 73 3a 20 63 61 6e 27 |tderr, "|%s: can'|
|00005870| 74 20 6f 70 65 6e 2e 5c | 6e 22 2c 20 61 72 67 76 |t open.\|n", argv|
|00005880| 5b 61 72 67 6e 5d 20 29 | 3b 0a 58 09 20 20 20 20 |[argn] )|;.X. |
|00005890| 65 78 69 74 28 20 31 20 | 29 3b 0a 58 09 20 20 20 |exit( 1 |);.X. |
|000058a0| 20 7d 0a 58 09 61 72 67 | 6e 2b 2b 3b 0a 58 09 7d | }.X.arg|n++;.X.}|
|000058b0| 0a 58 20 20 20 20 62 69 | 74 73 32 20 3d 20 70 62 |.X bi|ts2 = pb|
|000058c0| 6d 5f 72 65 61 64 70 62 | 6d 28 20 69 66 64 2c 20 |m_readpb|m( ifd, |
|000058d0| 26 63 6f 6c 73 32 2c 20 | 26 72 6f 77 73 32 20 29 |&cols2, |&rows2 )|
|000058e0| 3b 0a 58 20 20 20 20 69 | 66 20 28 20 69 66 64 20 |;.X i|f ( ifd |
|000058f0| 21 3d 20 73 74 64 69 6e | 20 29 0a 58 09 66 63 6c |!= stdin| ).X.fcl|
|00005900| 6f 73 65 28 20 69 66 64 | 20 29 3b 0a 58 0a 58 20 |ose( ifd| );.X.X |
|00005910| 20 20 20 69 66 20 28 20 | 78 20 3e 3d 20 63 6f 6c | if ( |x >= col|
|00005920| 73 32 20 29 0a 58 09 7b | 0a 58 09 66 70 72 69 6e |s2 ).X.{|.X.fprin|
|00005930| 74 66 28 0a 58 09 20 20 | 20 20 73 74 64 65 72 72 |tf(.X. | stderr|
|00005940| 2c 20 22 78 20 69 73 20 | 74 6f 6f 20 6c 61 72 67 |, "x is |too larg|
|00005950| 65 20 2d 2d 20 74 68 65 | 20 73 65 63 6f 6e 64 20 |e -- the| second |
|00005960| 62 69 74 6d 61 70 20 68 | 61 73 20 6f 6e 6c 79 20 |bitmap h|as only |
|00005970| 25 64 20 63 6f 6c 73 5c | 6e 22 2c 0a 58 09 20 20 |%d cols\|n",.X. |
|00005980| 20 20 63 6f 6c 73 32 20 | 29 3b 0a 58 09 65 78 69 | cols2 |);.X.exi|
|00005990| 74 28 20 31 20 29 3b 0a | 58 09 7d 0a 58 20 20 20 |t( 1 );.|X.}.X |
|000059a0| 20 69 66 20 28 20 79 20 | 3e 3d 20 72 6f 77 73 32 | if ( y |>= rows2|
|000059b0| 20 29 0a 58 09 7b 0a 58 | 09 66 70 72 69 6e 74 66 | ).X.{.X|.fprintf|
|000059c0| 28 0a 58 09 20 20 20 20 | 73 74 64 65 72 72 2c 20 |(.X. |stderr, |
|000059d0| 22 79 20 69 73 20 74 6f | 6f 20 6c 61 72 67 65 20 |"y is to|o large |
|000059e0| 2d 2d 20 74 68 65 20 73 | 65 63 6f 6e 64 20 62 69 |-- the s|econd bi|
|000059f0| 74 6d 61 70 20 68 61 73 | 20 6f 6e 6c 79 20 25 64 |tmap has| only %d|
|00005a00| 20 72 6f 77 73 5c 6e 22 | 2c 0a 58 09 20 20 20 20 | rows\n"|,.X. |
|00005a10| 72 6f 77 73 32 20 29 3b | 0a 58 09 65 78 69 74 28 |rows2 );|.X.exit(|
|00005a20| 20 31 20 29 3b 0a 58 09 | 7d 0a 58 20 20 20 20 69 | 1 );.X.|}.X i|
|00005a30| 66 20 28 20 78 20 2b 20 | 63 6f 6c 73 31 20 3e 20 |f ( x + |cols1 > |
|00005a40| 63 6f 6c 73 32 20 29 0a | 58 09 7b 0a 58 09 66 70 |cols2 ).|X.{.X.fp|
|00005a50| 72 69 6e 74 66 28 0a 58 | 09 20 20 20 20 73 74 64 |rintf(.X|. std|
|00005a60| 65 72 72 2c 20 22 78 20 | 2b 20 77 69 64 74 68 20 |err, "x |+ width |
|00005a70| 69 73 20 74 6f 6f 20 6c | 61 72 67 65 20 62 79 20 |is too l|arge by |
|00005a80| 25 64 20 70 69 78 65 6c | 73 5c 6e 22 2c 0a 58 09 |%d pixel|s\n",.X.|
|00005a90| 20 20 20 20 78 20 2b 20 | 63 6f 6c 73 31 20 2d 20 | x + |cols1 - |
|00005aa0| 63 6f 6c 73 32 20 29 3b | 0a 58 09 65 78 69 74 28 |cols2 );|.X.exit(|
|00005ab0| 20 31 20 29 3b 0a 58 09 | 7d 0a 58 20 20 20 20 69 | 1 );.X.|}.X i|
|00005ac0| 66 20 28 20 79 20 2b 20 | 72 6f 77 73 31 20 3e 20 |f ( y + |rows1 > |
|00005ad0| 72 6f 77 73 32 20 29 0a | 58 09 7b 0a 58 09 66 70 |rows2 ).|X.{.X.fp|
|00005ae0| 72 69 6e 74 66 28 0a 58 | 09 20 20 20 20 73 74 64 |rintf(.X|. std|
|00005af0| 65 72 72 2c 20 22 79 20 | 2b 20 68 65 69 67 68 74 |err, "y |+ height|
|00005b00| 20 69 73 20 74 6f 6f 20 | 6c 61 72 67 65 20 62 79 | is too |large by|
|00005b10| 20 25 64 20 70 69 78 65 | 6c 73 5c 6e 22 2c 0a 58 | %d pixe|ls\n",.X|
|00005b20| 09 20 20 20 20 79 20 2b | 20 72 6f 77 73 31 20 2d |. y +| rows1 -|
|00005b30| 20 72 6f 77 73 32 20 29 | 3b 0a 58 09 65 78 69 74 | rows2 )|;.X.exit|
|00005b40| 28 20 31 20 29 3b 0a 58 | 09 7d 0a 58 0a 58 20 20 |( 1 );.X|.}.X.X |
|00005b50| 20 20 69 66 20 28 20 61 | 72 67 6e 20 21 3d 20 61 | if ( a|rgn != a|
|00005b60| 72 67 63 20 29 0a 58 09 | 7b 0a 58 09 66 70 72 69 |rgc ).X.|{.X.fpri|
|00005b70| 6e 74 66 28 20 73 74 64 | 65 72 72 2c 20 75 73 61 |ntf( std|err, usa|
|00005b80| 67 65 2c 20 61 72 67 76 | 5b 30 5d 20 29 3b 0a 58 |ge, argv|[0] );.X|
|00005b90| 09 65 78 69 74 28 20 31 | 20 29 3b 0a 58 09 7d 0a |.exit( 1| );.X.}.|
|00005ba0| 58 0a 58 20 20 20 20 66 | 6f 72 20 28 20 72 6f 77 |X.X f|or ( row|
|00005bb0| 20 3d 20 30 3b 20 72 6f | 77 20 3c 20 72 6f 77 73 | = 0; ro|w < rows|
|00005bc0| 31 3b 20 72 6f 77 2b 2b | 20 29 0a 58 20 20 20 20 |1; row++| ).X |
|00005bd0| 20 20 20 20 66 6f 72 20 | 28 20 63 6f 6c 20 3d 20 | for |( col = |
|00005be0| 30 3b 20 63 6f 6c 20 3c | 20 63 6f 6c 73 31 3b 20 |0; col <| cols1; |
|00005bf0| 63 6f 6c 2b 2b 20 29 0a | 58 09 20 20 20 20 73 77 |col++ ).|X. sw|
|00005c00| 69 74 63 68 20 28 20 66 | 75 6e 63 74 69 6f 6e 20 |itch ( f|unction |
|00005c10| 29 0a 58 09 09 7b 0a 58 | 09 09 63 61 73 65 20 27 |).X..{.X|..case '|
|00005c20| 72 27 3a 0a 58 09 09 63 | 61 73 65 20 27 52 27 3a |r':.X..c|ase 'R':|
|00005c30| 0a 58 09 09 62 69 74 73 | 32 5b 72 6f 77 2b 79 5d |.X..bits|2[row+y]|
|00005c40| 5b 63 6f 6c 2b 78 5d 20 | 3d 20 62 69 74 73 31 5b |[col+x] |= bits1[|
|00005c50| 72 6f 77 5d 5b 63 6f 6c | 5d 3b 0a 58 09 09 62 72 |row][col|];.X..br|
|00005c60| 65 61 6b 3b 0a 58 0a 58 | 09 09 63 61 73 65 20 27 |eak;.X.X|..case '|
|00005c70| 6f 27 3a 0a 58 09 09 63 | 61 73 65 20 27 4f 27 3a |o':.X..c|ase 'O':|
|00005c80| 0a 58 09 09 62 69 74 73 | 32 5b 72 6f 77 2b 79 5d |.X..bits|2[row+y]|
|00005c90| 5b 63 6f 6c 2b 78 5d 20 | 7c 3d 20 62 69 74 73 31 |[col+x] ||= bits1|
|00005ca0| 5b 72 6f 77 5d 5b 63 6f | 6c 5d 3b 0a 58 09 09 62 |[row][co|l];.X..b|
|00005cb0| 72 65 61 6b 3b 0a 58 0a | 58 09 09 63 61 73 65 20 |reak;.X.|X..case |
|00005cc0| 27 61 27 3a 0a 58 09 09 | 63 61 73 65 20 27 41 27 |'a':.X..|case 'A'|
|00005cd0| 3a 0a 58 09 09 62 69 74 | 73 32 5b 72 6f 77 2b 79 |:.X..bit|s2[row+y|
|00005ce0| 5d 5b 63 6f 6c 2b 78 5d | 20 26 3d 20 62 69 74 73 |][col+x]| &= bits|
|00005cf0| 31 5b 72 6f 77 5d 5b 63 | 6f 6c 5d 3b 0a 58 09 09 |1[row][c|ol];.X..|
|00005d00| 62 72 65 61 6b 3b 0a 58 | 0a 58 09 09 63 61 73 65 |break;.X|.X..case|
|00005d10| 20 27 78 27 3a 0a 58 09 | 09 63 61 73 65 20 27 58 | 'x':.X.|.case 'X|
|00005d20| 27 3a 0a 58 09 09 62 69 | 74 73 32 5b 72 6f 77 2b |':.X..bi|ts2[row+|
|00005d30| 79 5d 5b 63 6f 6c 2b 78 | 5d 20 5e 3d 20 62 69 74 |y][col+x|] ^= bit|
|00005d40| 73 31 5b 72 6f 77 5d 5b | 63 6f 6c 5d 3b 0a 58 09 |s1[row][|col];.X.|
|00005d50| 09 62 72 65 61 6b 3b 0a | 58 09 09 7d 0a 58 0a 58 |.break;.|X..}.X.X|
|00005d60| 20 20 20 20 70 62 6d 5f | 77 72 69 74 65 70 62 6d | pbm_|writepbm|
|00005d70| 28 20 73 74 64 6f 75 74 | 2c 20 62 69 74 73 32 2c |( stdout|, bits2,|
|00005d80| 20 63 6f 6c 73 32 2c 20 | 72 6f 77 73 32 20 29 3b | cols2, |rows2 );|
|00005d90| 0a 58 0a 58 20 20 20 20 | 65 78 69 74 28 20 30 20 |.X.X |exit( 0 |
|00005da0| 29 3b 0a 58 20 20 20 20 | 7d 0a 53 48 41 52 5f 45 |);.X |}.SHAR_E|
|00005db0| 4f 46 0a 69 66 20 74 65 | 73 74 20 33 35 32 31 20 |OF.if te|st 3521 |
|00005dc0| 2d 6e 65 20 22 60 77 63 | 20 2d 63 20 3c 20 27 70 |-ne "`wc| -c < 'p|
|00005dd0| 62 6d 70 61 73 74 65 2e | 63 27 60 22 0a 74 68 65 |bmpaste.|c'`".the|
|00005de0| 6e 0a 09 65 63 68 6f 20 | 73 68 61 72 3a 20 65 72 |n..echo |shar: er|
|00005df0| 72 6f 72 20 74 72 61 6e | 73 6d 69 74 74 69 6e 67 |ror tran|smitting|
|00005e00| 20 22 27 70 62 6d 70 61 | 73 74 65 2e 63 27 22 20 | "'pbmpa|ste.c'" |
|00005e10| 27 28 73 68 6f 75 6c 64 | 20 68 61 76 65 20 62 65 |'(should| have be|
|00005e20| 65 6e 20 33 35 32 31 20 | 63 68 61 72 61 63 74 65 |en 3521 |characte|
|00005e30| 72 73 29 27 0a 66 69 0a | 66 69 20 23 20 65 6e 64 |rs)'.fi.|fi # end|
|00005e40| 20 6f 66 20 6f 76 65 72 | 77 72 69 74 69 6e 67 20 | of over|writing |
|00005e50| 63 68 65 63 6b 0a 65 63 | 68 6f 20 73 68 61 72 3a |check.ec|ho shar:|
|00005e60| 20 65 78 74 72 61 63 74 | 69 6e 67 20 22 27 70 62 | extract|ing "'pb|
|00005e70| 6d 70 61 73 74 65 2e 31 | 27 22 20 27 28 31 33 31 |mpaste.1|'" '(131|
|00005e80| 31 20 63 68 61 72 61 63 | 74 65 72 73 29 27 0a 69 |1 charac|ters)'.i|
|00005e90| 66 20 74 65 73 74 20 2d | 66 20 27 70 62 6d 70 61 |f test -|f 'pbmpa|
|00005ea0| 73 74 65 2e 31 27 0a 74 | 68 65 6e 0a 09 65 63 68 |ste.1'.t|hen..ech|
|00005eb0| 6f 20 73 68 61 72 3a 20 | 77 69 6c 6c 20 6e 6f 74 |o shar: |will not|
|00005ec0| 20 6f 76 65 72 2d 77 72 | 69 74 65 20 65 78 69 73 | over-wr|ite exis|
|00005ed0| 74 69 6e 67 20 66 69 6c | 65 20 22 27 70 62 6d 70 |ting fil|e "'pbmp|
|00005ee0| 61 73 74 65 2e 31 27 22 | 0a 65 6c 73 65 0a 73 65 |aste.1'"|.else.se|
|00005ef0| 64 20 27 73 2f 5e 58 2f | 2f 27 20 3c 3c 20 5c 53 |d 's/^X/|/' << \S|
|00005f00| 48 41 52 5f 45 4f 46 20 | 3e 20 27 70 62 6d 70 61 |HAR_EOF |> 'pbmpa|
|00005f10| 73 74 65 2e 31 27 0a 58 | 2e 54 48 20 70 62 6d 70 |ste.1'.X|.TH pbmp|
|00005f20| 61 73 74 65 20 31 20 22 | 30 36 20 41 70 72 69 6c |aste 1 "|06 April|
|00005f30| 20 31 39 38 38 22 0a 58 | 2e 53 48 20 4e 41 4d 45 | 1988".X|.SH NAME|
|00005f40| 0a 58 70 62 6d 70 61 73 | 74 65 20 2d 20 70 61 73 |.Xpbmpas|te - pas|
|00005f50| 74 65 20 61 20 72 65 63 | 74 61 6e 67 6c 65 20 69 |te a rec|tangle i|
|00005f60| 6e 74 6f 20 61 20 70 6f | 72 74 61 62 6c 65 20 62 |nto a po|rtable b|
|00005f70| 69 74 6d 61 70 0a 58 2e | 53 48 20 53 59 4e 4f 50 |itmap.X.|SH SYNOP|
|00005f80| 53 49 53 0a 58 70 62 6d | 70 61 73 74 65 20 5b 2d |SIS.Xpbm|paste [-|
|00005f90| 72 5d 2f 5b 2d 6f 5d 2f | 5b 2d 61 5d 2f 5b 2d 78 |r]/[-o]/|[-a]/[-x|
|00005fa0| 5d 20 66 72 6f 6d 70 62 | 6d 66 69 6c 65 20 78 20 |] frompb|mfile x |
|00005fb0| 79 20 5b 69 6e 74 6f 70 | 62 6d 66 69 6c 65 5d 0a |y [intop|bmfile].|
|00005fc0| 58 2e 53 48 20 44 45 53 | 43 52 49 50 54 49 4f 4e |X.SH DES|CRIPTION|
|00005fd0| 0a 58 52 65 61 64 73 20 | 74 77 6f 20 70 6f 72 74 |.XReads |two port|
|00005fe0| 61 62 6c 65 20 62 69 74 | 6d 61 70 73 20 61 73 20 |able bit|maps as |
|00005ff0| 69 6e 70 75 74 2e 0a 58 | 49 6e 73 65 72 74 73 20 |input..X|Inserts |
|00006000| 74 68 65 20 66 69 72 73 | 74 20 62 69 74 6d 61 70 |the firs|t bitmap|
|00006010| 20 69 6e 74 6f 20 74 68 | 65 20 73 65 63 6f 6e 64 | into th|e second|
|00006020| 20 61 74 20 74 68 65 20 | 73 70 65 63 69 66 69 65 | at the |specifie|
|00006030| 64 20 6c 6f 63 61 74 69 | 6f 6e 2c 0a 58 61 6e 64 |d locati|on,.Xand|
|00006040| 20 70 72 6f 64 75 63 65 | 73 20 61 20 70 6f 72 74 | produce|s a port|
|00006050| 61 62 6c 65 20 62 69 74 | 6d 61 70 20 74 68 65 20 |able bit|map the |
|00006060| 73 61 6d 65 20 73 69 7a | 65 20 61 73 20 74 68 65 |same siz|e as the|
|00006070| 20 73 65 63 6f 6e 64 20 | 61 73 20 6f 75 74 70 75 | second |as outpu|
|00006080| 74 2e 0a 58 49 66 20 74 | 68 65 20 73 65 63 6f 6e |t..XIf t|he secon|
|00006090| 64 20 62 69 74 6d 61 70 | 20 69 73 20 6e 6f 74 20 |d bitmap| is not |
|000060a0| 73 70 65 63 69 66 69 65 | 64 2c 20 69 74 20 69 73 |specifie|d, it is|
|000060b0| 20 72 65 61 64 20 66 72 | 6f 6d 20 73 74 64 69 6e | read fr|om stdin|
|000060c0| 2e 0a 58 2e 50 50 0a 58 | 54 68 65 20 2d 72 2f 2d |..X.PP.X|The -r/-|
|000060d0| 6f 2f 2d 61 2f 2d 78 20 | 66 6c 61 67 73 20 73 70 |o/-a/-x |flags sp|
|000060e0| 65 63 69 66 79 20 74 68 | 65 20 6c 6f 67 69 63 61 |ecify th|e logica|
|000060f0| 6c 20 6f 70 65 72 61 74 | 69 6f 6e 20 74 6f 20 75 |l operat|ion to u|
|00006100| 73 65 20 77 68 65 6e 20 | 64 6f 69 6e 67 0a 58 74 |se when |doing.Xt|
|00006110| 68 65 20 70 61 73 74 65 | 2e 0a 58 54 68 65 79 20 |he paste|..XThey |
|00006120| 73 74 61 6e 64 20 66 6f | 72 20 52 65 70 6c 61 63 |stand fo|r Replac|
|00006130| 65 2c 20 4f 72 2c 20 41 | 6e 64 2c 20 61 6e 64 20 |e, Or, A|nd, and |
|00006140| 58 6f 72 2c 20 72 65 73 | 70 65 63 74 69 76 65 6c |Xor, res|pectivel|
|00006150| 79 2e 0a 58 54 68 65 20 | 64 65 66 61 75 6c 74 20 |y..XThe |default |
|00006160| 69 73 20 72 65 70 6c 61 | 63 65 2e 0a 58 2e 50 50 |is repla|ce..X.PP|
|00006170| 0a 58 54 68 69 73 20 74 | 6f 6f 6c 20 69 73 20 6d |.XThis t|ool is m|
|00006180| 6f 73 74 20 75 73 65 66 | 75 6c 20 69 6e 20 63 6f |ost usef|ul in co|
|00006190| 6d 62 69 6e 61 74 69 6f | 6e 20 77 69 74 68 20 70 |mbinatio|n with p|
|000061a0| 62 6d 63 75 74 28 31 29 | 2e 0a 58 46 6f 72 20 69 |bmcut(1)|..XFor i|
|000061b0| 6e 73 74 61 6e 63 65 2c | 20 69 66 20 79 6f 75 20 |nstance,| if you |
|000061c0| 77 61 6e 74 20 74 6f 20 | 65 64 69 74 20 61 20 73 |want to |edit a s|
|000061d0| 6d 61 6c 6c 20 73 65 67 | 6d 65 6e 74 20 6f 66 20 |mall seg|ment of |
|000061e0| 61 20 6c 61 72 67 65 0a | 58 62 69 74 6d 61 70 2c |a large.|Xbitmap,|
|000061f0| 20 61 6e 64 20 79 6f 75 | 72 20 62 69 74 6d 61 70 | and you|r bitmap|
|00006200| 20 65 64 69 74 6f 72 20 | 69 73 20 54 4f 4f 20 53 | editor |is TOO S|
|00006210| 54 55 50 49 44 20 74 6f | 20 65 64 69 74 20 74 68 |TUPID to| edit th|
|00006220| 65 0a 58 6c 61 72 67 65 | 20 62 69 74 6d 61 70 2c |e.Xlarge| bitmap,|
|00006230| 20 79 6f 75 20 63 61 6e | 20 63 75 74 20 6f 75 74 | you can| cut out|
|00006240| 20 74 68 65 20 73 65 67 | 6d 65 6e 74 20 79 6f 75 | the seg|ment you|
|00006250| 20 61 72 65 20 69 6e 74 | 65 72 65 73 74 65 64 20 | are int|erested |
|00006260| 69 6e 2c 0a 58 65 64 69 | 74 20 69 74 2c 20 61 6e |in,.Xedi|t it, an|
|00006270| 64 20 74 68 65 6e 20 70 | 61 73 74 65 20 69 74 20 |d then p|aste it |
|00006280| 62 61 63 6b 20 69 6e 2e | 0a 58 2e 53 48 20 22 53 |back in.|.X.SH "S|
|00006290| 45 45 20 41 4c 53 4f 22 | 0a 58 70 62 6d 63 75 74 |EE ALSO"|.Xpbmcut|
|000062a0| 28 31 29 2c 20 70 62 6d | 28 35 29 0a 58 2e 53 48 |(1), pbm|(5).X.SH|
|000062b0| 20 41 55 54 48 4f 52 0a | 58 43 6f 70 79 72 69 67 | AUTHOR.|XCopyrig|
|000062c0| 68 74 20 28 43 29 20 31 | 39 38 38 20 62 79 20 4a |ht (C) 1|988 by J|
|000062d0| 65 66 20 50 6f 73 6b 61 | 6e 7a 65 72 2e 0a 58 0a |ef Poska|nzer..X.|
|000062e0| 58 50 65 72 6d 69 73 73 | 69 6f 6e 20 74 6f 20 75 |XPermiss|ion to u|
|000062f0| 73 65 2c 20 63 6f 70 79 | 2c 20 6d 6f 64 69 66 79 |se, copy|, modify|
|00006300| 2c 20 61 6e 64 20 64 69 | 73 74 72 69 62 75 74 65 |, and di|stribute|
|00006310| 20 74 68 69 73 20 73 6f | 66 74 77 61 72 65 20 61 | this so|ftware a|
|00006320| 6e 64 20 69 74 73 0a 58 | 64 6f 63 75 6d 65 6e 74 |nd its.X|document|
|00006330| 61 74 69 6f 6e 20 66 6f | 72 20 61 6e 79 20 70 75 |ation fo|r any pu|
|00006340| 72 70 6f 73 65 20 61 6e | 64 20 77 69 74 68 6f 75 |rpose an|d withou|
|00006350| 74 20 66 65 65 20 69 73 | 20 68 65 72 65 62 79 20 |t fee is| hereby |
|00006360| 67 72 61 6e 74 65 64 2c | 20 70 72 6f 76 69 64 65 |granted,| provide|
|00006370| 64 0a 58 74 68 61 74 20 | 74 68 65 20 61 62 6f 76 |d.Xthat |the abov|
|00006380| 65 20 63 6f 70 79 72 69 | 67 68 74 20 6e 6f 74 69 |e copyri|ght noti|
|00006390| 63 65 20 61 70 70 65 61 | 72 20 69 6e 20 61 6c 6c |ce appea|r in all|
|000063a0| 20 63 6f 70 69 65 73 20 | 61 6e 64 20 74 68 61 74 | copies |and that|
|000063b0| 20 62 6f 74 68 20 74 68 | 61 74 0a 58 63 6f 70 79 | both th|at.Xcopy|
|000063c0| 72 69 67 68 74 20 6e 6f | 74 69 63 65 20 61 6e 64 |right no|tice and|
|000063d0| 20 74 68 69 73 20 70 65 | 72 6d 69 73 73 69 6f 6e | this pe|rmission|
|000063e0| 20 6e 6f 74 69 63 65 20 | 61 70 70 65 61 72 20 69 | notice |appear i|
|000063f0| 6e 20 73 75 70 70 6f 72 | 74 69 6e 67 0a 58 64 6f |n suppor|ting.Xdo|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.