home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume31 / cmdline / part03 < prev    next >
SHell self-extracting ARchive  |  1992-07-27  |  66.4 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 SHell self-extracting ARchive (archive/shar) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file C source, ASCII text default
100% checkBytes Printable ASCII default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 4e 65 77 73 67 72 6f 75 | 70 73 3a 20 63 6f 6d 70 |Newsgrou|ps: comp|
|00000010| 2e 73 6f 75 72 63 65 73 | 2e 6d 69 73 63 0a 46 72 |.sources|.misc.Fr|
|00000020| 6f 6d 3a 20 62 72 61 64 | 40 68 63 78 31 2e 73 73 |om: brad|@hcx1.ss|
|00000030| 64 2e 63 73 64 2e 68 61 | 72 72 69 73 2e 63 6f 6d |d.csd.ha|rris.com|
|00000040| 20 28 42 72 61 64 20 41 | 70 70 6c 65 74 6f 6e 29 | (Brad A|ppleton)|
|00000050| 0a 53 75 62 6a 65 63 74 | 3a 20 20 76 33 31 69 30 |.Subject|: v31i0|
|00000060| 35 30 3a 20 20 63 6d 64 | 6c 69 6e 65 20 2d 20 43 |50: cmd|line - C|
|00000070| 2b 2b 20 4c 69 62 72 61 | 72 79 20 66 6f 72 20 70 |++ Libra|ry for p|
|00000080| 61 72 73 69 6e 67 20 63 | 6f 6d 6d 61 6e 64 2d 6c |arsing c|ommand-l|
|00000090| 69 6e 65 20 61 72 67 75 | 6d 65 6e 74 73 2c 20 50 |ine argu|ments, P|
|000000a0| 61 72 74 30 33 2f 30 37 | 0a 4d 65 73 73 61 67 65 |art03/07|.Message|
|000000b0| 2d 49 44 3a 20 3c 31 39 | 39 32 4a 75 6c 32 37 2e |-ID: <19|92Jul27.|
|000000c0| 30 32 30 35 32 35 2e 32 | 39 32 37 38 40 73 70 61 |020525.2|9278@spa|
|000000d0| 72 6b 79 2e 69 6d 64 2e | 73 74 65 72 6c 69 6e 67 |rky.imd.|sterling|
|000000e0| 2e 63 6f 6d 3e 0a 58 2d | 4d 64 34 2d 53 69 67 6e |.com>.X-|Md4-Sign|
|000000f0| 61 74 75 72 65 3a 20 30 | 36 62 34 65 37 63 36 63 |ature: 0|6b4e7c6c|
|00000100| 36 61 64 36 32 33 39 64 | 65 35 61 64 62 65 31 37 |6ad6239d|e5adbe17|
|00000110| 35 33 30 66 62 31 61 0a | 44 61 74 65 3a 20 4d 6f |530fb1a.|Date: Mo|
|00000120| 6e 2c 20 32 37 20 4a 75 | 6c 20 31 39 39 32 20 30 |n, 27 Ju|l 1992 0|
|00000130| 32 3a 30 35 3a 32 35 20 | 47 4d 54 0a 41 70 70 72 |2:05:25 |GMT.Appr|
|00000140| 6f 76 65 64 3a 20 6b 65 | 6e 74 40 73 70 61 72 6b |oved: ke|nt@spark|
|00000150| 79 2e 69 6d 64 2e 73 74 | 65 72 6c 69 6e 67 2e 63 |y.imd.st|erling.c|
|00000160| 6f 6d 0a 0a 53 75 62 6d | 69 74 74 65 64 2d 62 79 |om..Subm|itted-by|
|00000170| 3a 20 62 72 61 64 40 68 | 63 78 31 2e 73 73 64 2e |: brad@h|cx1.ssd.|
|00000180| 63 73 64 2e 68 61 72 72 | 69 73 2e 63 6f 6d 20 28 |csd.harr|is.com (|
|00000190| 42 72 61 64 20 41 70 70 | 6c 65 74 6f 6e 29 0a 50 |Brad App|leton).P|
|000001a0| 6f 73 74 69 6e 67 2d 6e | 75 6d 62 65 72 3a 20 56 |osting-n|umber: V|
|000001b0| 6f 6c 75 6d 65 20 33 31 | 2c 20 49 73 73 75 65 20 |olume 31|, Issue |
|000001c0| 35 30 0a 41 72 63 68 69 | 76 65 2d 6e 61 6d 65 3a |50.Archi|ve-name:|
|000001d0| 20 63 6d 64 6c 69 6e 65 | 2f 70 61 72 74 30 33 0a | cmdline|/part03.|
|000001e0| 45 6e 76 69 72 6f 6e 6d | 65 6e 74 3a 20 43 2b 2b |Environm|ent: C++|
|000001f0| 0a 0a 23 21 20 2f 62 69 | 6e 2f 73 68 0a 23 20 54 |..#! /bi|n/sh.# T|
|00000200| 68 69 73 20 69 73 20 61 | 20 73 68 65 6c 6c 20 61 |his is a| shell a|
|00000210| 72 63 68 69 76 65 2e 20 | 20 52 65 6d 6f 76 65 20 |rchive. | Remove |
|00000220| 61 6e 79 74 68 69 6e 67 | 20 62 65 66 6f 72 65 20 |anything| before |
|00000230| 74 68 69 73 20 6c 69 6e | 65 2c 20 74 68 65 6e 20 |this lin|e, then |
|00000240| 75 6e 70 61 63 6b 0a 23 | 20 69 74 20 62 79 20 73 |unpack.#| it by s|
|00000250| 61 76 69 6e 67 20 69 74 | 20 69 6e 74 6f 20 61 20 |aving it| into a |
|00000260| 66 69 6c 65 20 61 6e 64 | 20 74 79 70 69 6e 67 20 |file and| typing |
|00000270| 22 73 68 20 66 69 6c 65 | 22 2e 20 20 54 6f 20 6f |"sh file|". To o|
|00000280| 76 65 72 77 72 69 74 65 | 20 65 78 69 73 74 69 6e |verwrite| existin|
|00000290| 67 0a 23 20 66 69 6c 65 | 73 2c 20 74 79 70 65 20 |g.# file|s, type |
|000002a0| 22 73 68 20 66 69 6c 65 | 20 2d 63 22 2e 20 20 59 |"sh file| -c". Y|
|000002b0| 6f 75 20 63 61 6e 20 61 | 6c 73 6f 20 66 65 65 64 |ou can a|lso feed|
|000002c0| 20 74 68 69 73 20 61 73 | 20 73 74 61 6e 64 61 72 | this as| standar|
|000002d0| 64 20 69 6e 70 75 74 20 | 76 69 61 0a 23 20 75 6e |d input |via.# un|
|000002e0| 73 68 61 72 2c 20 6f 72 | 20 62 79 20 74 79 70 69 |shar, or| by typi|
|000002f0| 6e 67 20 22 73 68 20 3c | 66 69 6c 65 22 2c 20 65 |ng "sh <|file", e|
|00000300| 2e 67 2e 2e 20 20 49 66 | 20 74 68 69 73 20 61 72 |.g.. If| this ar|
|00000310| 63 68 69 76 65 20 69 73 | 20 63 6f 6d 70 6c 65 74 |chive is| complet|
|00000320| 65 2c 20 79 6f 75 0a 23 | 20 77 69 6c 6c 20 73 65 |e, you.#| will se|
|00000330| 65 20 74 68 65 20 66 6f | 6c 6c 6f 77 69 6e 67 20 |e the fo|llowing |
|00000340| 6d 65 73 73 61 67 65 20 | 61 74 20 74 68 65 20 65 |message |at the e|
|00000350| 6e 64 3a 0a 23 09 09 22 | 45 6e 64 20 6f 66 20 61 |nd:.#.."|End of a|
|00000360| 72 63 68 69 76 65 20 33 | 20 28 6f 66 20 37 29 2e |rchive 3| (of 7).|
|00000370| 22 0a 23 20 43 6f 6e 74 | 65 6e 74 73 3a 20 20 4f |".# Cont|ents: O|
|00000380| 76 65 72 76 69 65 77 20 | 73 72 63 2f 6c 69 62 2f |verview |src/lib/|
|00000390| 63 6d 64 61 72 67 2e 63 | 20 73 72 63 2f 6c 69 62 |cmdarg.c| src/lib|
|000003a0| 2f 63 6d 64 6c 69 6e 65 | 2e 63 0a 23 20 20 20 73 |/cmdline|.c.# s|
|000003b0| 72 63 2f 6c 69 62 2f 63 | 6d 64 74 65 73 74 2e 63 |rc/lib/c|mdtest.c|
|000003c0| 20 73 72 63 2f 6c 69 62 | 2f 64 75 6d 70 2e 63 20 | src/lib|/dump.c |
|000003d0| 73 72 63 2f 6c 69 62 2f | 73 74 72 69 6e 64 65 6e |src/lib/|strinden|
|000003e0| 74 2e 63 0a 23 20 20 20 | 73 72 63 2f 6c 69 62 2f |t.c.# |src/lib/|
|000003f0| 75 73 61 67 65 2e 63 0a | 23 20 57 72 61 70 70 65 |usage.c.|# Wrappe|
|00000400| 64 20 62 79 20 62 72 61 | 64 40 68 63 78 31 20 6f |d by bra|d@hcx1 o|
|00000410| 6e 20 4d 6f 6e 20 4a 75 | 6c 20 32 30 20 31 30 3a |n Mon Ju|l 20 10:|
|00000420| 34 31 3a 32 38 20 31 39 | 39 32 0a 50 41 54 48 3d |41:28 19|92.PATH=|
|00000430| 2f 62 69 6e 3a 2f 75 73 | 72 2f 62 69 6e 3a 2f 75 |/bin:/us|r/bin:/u|
|00000440| 73 72 2f 75 63 62 20 3b | 20 65 78 70 6f 72 74 20 |sr/ucb ;| export |
|00000450| 50 41 54 48 0a 69 66 20 | 74 65 73 74 20 2d 66 20 |PATH.if |test -f |
|00000460| 27 4f 76 65 72 76 69 65 | 77 27 20 2d 61 20 22 24 |'Overvie|w' -a "$|
|00000470| 7b 31 7d 22 20 21 3d 20 | 22 2d 63 22 20 3b 20 74 |{1}" != |"-c" ; t|
|00000480| 68 65 6e 20 0a 20 20 65 | 63 68 6f 20 73 68 61 72 |hen . e|cho shar|
|00000490| 3a 20 57 69 6c 6c 20 6e | 6f 74 20 63 6c 6f 62 62 |: Will n|ot clobb|
|000004a0| 65 72 20 65 78 69 73 74 | 69 6e 67 20 66 69 6c 65 |er exist|ing file|
|000004b0| 20 5c 22 27 4f 76 65 72 | 76 69 65 77 27 5c 22 0a | \"'Over|view'\".|
|000004c0| 65 6c 73 65 0a 65 63 68 | 6f 20 73 68 61 72 3a 20 |else.ech|o shar: |
|000004d0| 45 78 74 72 61 63 74 69 | 6e 67 20 5c 22 27 4f 76 |Extracti|ng \"'Ov|
|000004e0| 65 72 76 69 65 77 27 5c | 22 20 5c 28 31 30 35 30 |erview'\|" \(1050|
|000004f0| 34 20 63 68 61 72 61 63 | 74 65 72 73 5c 29 0a 73 |4 charac|ters\).s|
|00000500| 65 64 20 22 73 2f 5e 58 | 2f 2f 22 20 3e 27 4f 76 |ed "s/^X|//" >'Ov|
|00000510| 65 72 76 69 65 77 27 20 | 3c 3c 27 45 4e 44 5f 4f |erview' |<<'END_O|
|00000520| 46 5f 46 49 4c 45 27 0a | 58 20 0a 58 0a 58 20 20 |F_FILE'.|X .X.X |
|00000530| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00000540| 20 20 41 6e 20 6f 76 65 | 72 76 69 65 77 20 6f 66 | An ove|rview of|
|00000550| 20 43 6d 64 4c 69 6e 65 | 20 61 6e 64 20 63 6d 64 | CmdLine| and cmd|
|00000560| 70 61 72 73 65 0a 58 20 | 20 20 20 20 20 20 20 20 |parse.X | |
|00000570| 20 20 20 20 20 20 20 20 | 20 20 20 3d 3d 3d 3d 3d | | =====|
|00000580| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00000590| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 0a 58 |========|======.X|
|000005a0| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|000005b0| 20 20 20 62 79 20 42 72 | 61 64 20 41 70 70 6c 65 | by Br|ad Apple|
|000005c0| 74 6f 6e 20 3c 62 72 61 | 64 40 73 73 64 2e 63 73 |ton <bra|d@ssd.cs|
|000005d0| 64 2e 68 61 72 72 69 73 | 2e 63 6f 6d 3e 0a 58 0a |d.harris|.com>.X.|
|000005e0| 58 0a 58 0a 58 20 49 6e | 74 72 6f 64 75 63 74 69 |X.X.X In|troducti|
|000005f0| 6f 6e 0a 58 20 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |on.X ---|--------|
|00000600| 2d 0a 58 20 43 6d 64 4c | 69 6e 65 20 69 73 20 61 |-.X CmdL|ine is a|
|00000610| 20 43 2b 2b 20 4c 69 62 | 72 61 72 79 20 66 6f 72 | C++ Lib|rary for|
|00000620| 20 70 61 72 73 69 6e 67 | 20 63 6f 6d 6d 61 6e 64 | parsing| command|
|00000630| 2d 6c 69 6e 65 20 61 72 | 67 75 6d 65 6e 74 73 2e |-line ar|guments.|
|00000640| 20 49 74 20 69 73 20 0a | 58 20 61 70 70 72 6f 78 | It is .|X approx|
|00000650| 69 6d 61 74 65 6c 79 20 | 32 30 30 30 20 6c 69 6e |imately |2000 lin|
|00000660| 65 73 20 6f 66 20 43 2b | 2b 20 63 6f 64 65 20 28 |es of C+|+ code (|
|00000670| 65 78 63 6c 75 64 69 6e | 67 20 63 6f 6d 6d 65 6e |excludin|g commen|
|00000680| 74 73 29 2e 0a 58 0a 58 | 20 43 6d 64 70 61 72 73 |ts)..X.X| Cmdpars|
|00000690| 65 20 69 73 20 61 20 63 | 6f 6d 6d 61 6e 64 2d 6c |e is a c|ommand-l|
|000006a0| 69 6e 65 20 69 6e 74 65 | 72 66 61 63 65 20 74 6f |ine inte|rface to|
|000006b0| 20 43 6d 64 4c 69 6e 65 | 20 66 6f 72 20 55 6e 69 | CmdLine| for Uni|
|000006c0| 78 20 73 68 65 6c 6c 2d | 73 63 72 69 70 74 73 2e |x shell-|scripts.|
|000006d0| 0a 58 20 49 74 20 69 73 | 20 61 70 70 72 6f 78 69 |.X It is| approxi|
|000006e0| 6d 61 74 65 6c 79 20 31 | 32 30 30 20 6c 69 6e 65 |mately 1|200 line|
|000006f0| 73 20 6f 66 20 43 2b 2b | 20 63 6f 64 65 20 28 65 |s of C++| code (e|
|00000700| 78 63 6c 75 64 69 6e 67 | 20 63 6f 6d 6d 65 6e 74 |xcluding| comment|
|00000710| 73 29 2e 0a 58 0a 58 0a | 58 20 43 6d 64 4c 69 6e |s)..X.X.|X CmdLin|
|00000720| 65 28 33 43 2b 2b 29 0a | 58 20 2d 2d 2d 2d 2d 2d |e(3C++).|X ------|
|00000730| 2d 2d 2d 2d 2d 2d 2d 0a | 58 20 43 6d 64 4c 69 6e |-------.|X CmdLin|
|00000740| 65 20 69 73 20 61 20 73 | 65 74 20 6f 66 20 63 6c |e is a s|et of cl|
|00000750| 61 73 73 65 73 20 74 6f | 20 70 61 72 73 65 20 63 |asses to| parse c|
|00000760| 6f 6d 6d 61 6e 64 2d 6c | 69 6e 65 20 61 72 67 75 |ommand-l|ine argu|
|00000770| 6d 65 6e 74 73 2e 20 20 | 55 6e 6c 69 6b 65 0a 58 |ments. |Unlike.X|
|00000780| 20 67 65 74 6f 70 74 28 | 29 20 61 6e 64 20 69 74 | getopt(|) and it|
|00000790| 73 20 76 61 72 69 61 6e | 74 73 2c 20 43 6d 64 4c |s varian|ts, CmdL|
|000007a0| 69 6e 65 20 64 6f 65 73 | 20 6d 6f 72 65 20 74 68 |ine does| more th|
|000007b0| 61 6e 20 6a 75 73 74 20 | 73 70 6c 69 74 20 75 70 |an just |split up|
|000007c0| 20 74 68 65 0a 58 20 63 | 6f 6d 6d 61 6e 64 2d 6c | the.X c|ommand-l|
|000007d0| 69 6e 65 20 69 6e 74 6f | 20 73 6f 6d 65 20 63 61 |ine into| some ca|
|000007e0| 6e 6f 6e 69 63 61 6c 20 | 66 6f 72 6d 2e 20 20 43 |nonical |form. C|
|000007f0| 6d 64 4c 69 6e 65 20 77 | 69 6c 6c 20 61 63 74 75 |mdLine w|ill actu|
|00000800| 61 6c 6c 79 20 70 61 72 | 73 65 0a 58 20 74 68 65 |ally par|se.X the|
|00000810| 20 63 6f 6d 6d 61 6e 64 | 2d 6c 69 6e 65 2c 20 61 | command|-line, a|
|00000820| 73 73 69 67 6e 69 6e 67 | 20 74 68 65 20 61 70 70 |ssigning| the app|
|00000830| 72 6f 70 72 69 61 74 65 | 20 63 6f 6d 6d 61 6e 64 |ropriate| command|
|00000840| 2d 6c 69 6e 65 20 76 61 | 6c 75 65 73 20 74 6f 0a |-line va|lues to.|
|00000850| 58 20 74 68 65 20 63 6f | 72 72 65 73 70 6f 6e 64 |X the co|rrespond|
|00000860| 69 6e 67 20 76 61 72 69 | 61 62 6c 65 73 2c 20 61 |ing vari|ables, a|
|00000870| 6e 64 20 77 69 6c 6c 20 | 76 65 72 69 66 79 20 74 |nd will |verify t|
|00000880| 68 65 20 63 6f 6d 6d 61 | 6e 64 2d 6c 69 6e 65 20 |he comma|nd-line |
|00000890| 73 79 6e 74 61 78 0a 58 | 20 28 61 6e 64 20 70 72 |syntax.X| (and pr|
|000008a0| 69 6e 74 20 61 20 75 73 | 61 67 65 20 6d 65 73 73 |int a us|age mess|
|000008b0| 61 67 65 20 69 66 20 6e | 65 63 65 73 73 61 72 79 |age if n|ecessary|
|000008c0| 29 20 61 6c 6c 20 69 6e | 20 6f 6e 65 20 6d 65 6d |) all in| one mem|
|000008d0| 62 65 72 20 66 75 6e 63 | 74 69 6f 6e 0a 58 20 63 |ber func|tion.X c|
|000008e0| 61 6c 6c 2e 20 20 46 75 | 72 74 68 65 72 6d 6f 72 |all. Fu|rthermor|
|000008f0| 65 2c 20 6d 61 6e 79 20 | 66 65 61 74 75 72 65 73 |e, many |features|
|00000900| 20 6f 66 20 43 6d 64 4c | 69 6e 65 27 73 20 70 61 | of CmdL|ine's pa|
|00000910| 72 73 69 6e 67 20 62 65 | 68 61 76 69 6f 72 20 61 |rsing be|havior a|
|00000920| 72 65 0a 58 20 63 6f 6e | 66 69 67 75 72 61 62 6c |re.X con|figurabl|
|00000930| 65 20 61 74 20 72 75 6e | 2d 74 69 6d 65 2e 20 20 |e at run|-time. |
|00000940| 54 68 65 73 65 20 66 65 | 61 74 75 72 65 73 20 69 |These fe|atures i|
|00000950| 6e 63 6c 75 64 65 20 74 | 68 65 20 66 6f 6c 6c 6f |nclude t|he follo|
|00000960| 77 69 6e 67 3a 0a 58 0a | 58 20 20 20 20 20 6f 20 |wing:.X.|X o |
|00000970| 20 50 72 6f 6d 70 74 69 | 6e 67 20 74 68 65 20 75 | Prompti|ng the u|
|00000980| 73 65 72 20 66 6f 72 20 | 6d 69 73 73 69 6e 67 20 |ser for |missing |
|00000990| 61 72 67 75 6d 65 6e 74 | 73 2e 0a 58 20 20 20 20 |argument|s..X |
|000009a0| 20 6f 20 20 41 6c 6c 6f | 77 69 6e 67 20 6b 65 79 | o Allo|wing key|
|000009b0| 77 6f 72 64 73 20 28 2d | 63 6f 75 6e 74 3d 34 29 |words (-|count=4)|
|000009c0| 20 61 6e 64 2f 6f 72 20 | 6f 70 74 69 6f 6e 73 20 | and/or |options |
|000009d0| 28 2d 63 34 29 2e 0a 58 | 20 20 20 20 20 6f 20 20 |(-c4)..X| o |
|000009e0| 49 67 6e 6f 72 69 6e 67 | 20 62 61 64 20 73 79 6e |Ignoring| bad syn|
|000009f0| 74 61 78 20 69 6e 73 74 | 65 61 64 20 6f 66 20 74 |tax inst|ead of t|
|00000a00| 65 72 6d 69 6e 61 74 69 | 6e 67 2e 0a 58 20 20 20 |erminati|ng..X |
|00000a10| 20 20 6f 20 20 49 67 6e | 6f 72 69 6e 67 20 75 70 | o Ign|oring up|
|00000a20| 70 65 72 2f 6c 6f 77 65 | 72 20 63 61 73 65 20 6f |per/lowe|r case o|
|00000a30| 6e 20 74 68 65 20 63 6f | 6d 6d 61 6e 64 2d 6c 69 |n the co|mmand-li|
|00000a40| 6e 65 2e 0a 58 20 20 20 | 20 20 6f 20 20 53 75 70 |ne..X | o Sup|
|00000a50| 70 72 65 73 73 69 6e 67 | 20 74 68 65 20 70 72 69 |pressing| the pri|
|00000a60| 6e 74 69 6e 67 20 6f 66 | 20 73 79 6e 74 61 78 20 |nting of| syntax |
|00000a70| 65 72 72 6f 72 20 6d 65 | 73 73 61 67 65 73 2e 0a |error me|ssages..|
|00000a80| 58 20 20 20 20 20 6f 20 | 20 43 6f 6e 74 72 6f 6c |X o | Control|
|00000a90| 6c 69 6e 67 20 74 68 65 | 20 76 65 72 62 6f 73 65 |ling the| verbose|
|00000aa0| 6e 65 73 73 20 6f 66 20 | 75 73 61 67 65 20 6d 65 |ness of |usage me|
|00000ab0| 73 73 61 67 65 73 2e 0a | 58 20 20 20 20 20 6f 20 |ssages..|X o |
|00000ac0| 20 43 6f 6e 74 72 6f 6c | 6c 69 6e 67 20 77 68 65 | Control|ling whe|
|00000ad0| 74 68 65 72 20 6f 72 20 | 6e 6f 74 20 6f 70 74 69 |ther or |not opti|
|00000ae0| 6f 6e 73 20 6d 61 79 20 | 62 65 20 70 72 6f 63 65 |ons may |be proce|
|00000af0| 73 73 65 64 0a 58 20 20 | 20 20 20 20 20 20 20 20 |ssed.X | |
|00000b00| 61 66 74 65 72 20 70 6f | 73 69 74 69 6f 6e 61 6c |after po|sitional|
|00000b10| 20 70 61 72 61 6d 65 74 | 65 72 73 20 68 61 76 65 | paramet|ers have|
|00000b20| 20 62 65 65 6e 20 73 65 | 65 6e 2e 0a 58 0a 58 20 | been se|en..X.X |
|00000b30| 43 6d 64 4c 69 6e 65 20 | 61 6c 73 6f 20 61 6c 6c |CmdLine |also all|
|00000b40| 6f 77 73 20 66 6f 72 20 | 6f 70 74 69 6f 6e 73 20 |ows for |options |
|00000b50| 74 68 61 74 20 74 61 6b | 65 20 61 6e 20 6f 70 74 |that tak|e an opt|
|00000b60| 69 6f 6e 61 6c 20 61 72 | 67 75 6d 65 6e 74 2c 20 |ional ar|gument, |
|00000b70| 6f 70 74 69 6f 6e 73 0a | 58 20 74 68 61 74 20 74 |options.|X that t|
|00000b80| 61 6b 65 20 61 20 28 70 | 6f 73 73 69 62 6c 79 20 |ake a (p|ossibly |
|00000b90| 6f 70 74 69 6f 6e 61 6c | 29 20 6c 69 73 74 20 6f |optional|) list o|
|00000ba0| 66 20 6f 6e 65 20 6f 72 | 20 6d 6f 72 65 20 61 72 |f one or| more ar|
|00000bb0| 67 75 6d 65 6e 74 73 2c | 20 6f 70 74 69 6f 6e 73 |guments,| options|
|00000bc0| 0a 58 20 77 68 6f 73 65 | 20 61 72 67 75 6d 65 6e |.X whose| argumen|
|00000bd0| 74 20 6d 75 73 74 20 72 | 65 73 69 64 65 20 69 6e |t must r|eside in|
|00000be0| 20 74 68 65 20 73 61 6d | 65 20 74 6f 6b 65 6e 20 | the sam|e token |
|00000bf0| 61 73 20 74 68 65 20 6f | 70 74 69 6f 6e 20 69 74 |as the o|ption it|
|00000c00| 73 65 6c 66 2c 20 61 6e | 64 0a 58 20 6f 70 74 69 |self, an|d.X opti|
|00000c10| 6f 6e 73 20 77 68 6f 73 | 65 20 61 72 67 75 6d 65 |ons whos|e argume|
|00000c20| 6e 74 20 6d 75 73 74 20 | 72 65 73 69 64 65 20 69 |nt must |reside i|
|00000c30| 6e 20 61 20 73 65 70 61 | 72 61 74 65 20 74 6f 6b |n a sepa|rate tok|
|00000c40| 65 6e 20 66 72 6f 6d 20 | 74 68 65 20 6f 70 74 69 |en from |the opti|
|00000c50| 6f 6e 0a 58 20 69 74 73 | 65 6c 66 2e 0a 58 0a 58 |on.X its|elf..X.X|
|00000c60| 20 43 6d 64 4c 69 6e 65 | 20 63 6f 6e 73 69 73 74 | CmdLine| consist|
|00000c70| 73 20 6f 66 20 61 20 73 | 65 74 20 6f 66 20 43 2b |s of a s|et of C+|
|00000c80| 2b 20 63 6c 61 73 73 65 | 73 20 74 6f 20 70 61 72 |+ classe|s to par|
|00000c90| 73 65 20 61 72 67 75 6d | 65 6e 74 73 20 66 72 6f |se argum|ents fro|
|00000ca0| 6d 20 61 6e 0a 58 20 69 | 6e 70 75 74 20 73 6f 75 |m an.X i|nput sou|
|00000cb0| 72 63 65 20 63 61 6c 6c | 65 64 20 61 20 43 6d 64 |rce call|ed a Cmd|
|00000cc0| 4c 69 6e 65 41 72 67 49 | 74 65 72 20 28 77 68 69 |LineArgI|ter (whi|
|00000cd0| 63 68 20 69 73 20 61 20 | 62 61 73 65 20 63 6c 61 |ch is a |base cla|
|00000ce0| 73 73 20 66 6f 72 20 69 | 74 65 72 61 74 69 6e 67 |ss for i|terating|
|00000cf0| 0a 58 20 6f 76 65 72 20 | 61 72 67 75 6d 65 6e 74 |.X over |argument|
|00000d00| 73 20 66 72 6f 6d 20 61 | 6e 20 61 72 62 69 74 72 |s from a|n arbitr|
|00000d10| 61 72 79 20 69 6e 70 75 | 74 20 73 6f 75 72 63 65 |ary inpu|t source|
|00000d20| 29 2e 20 20 41 72 67 75 | 6d 65 6e 74 20 69 74 65 |). Argu|ment ite|
|00000d30| 72 61 74 6f 72 73 20 61 | 72 65 0a 58 20 64 65 66 |rators a|re.X def|
|00000d40| 69 6e 65 64 20 66 6f 72 | 20 61 6e 20 61 72 67 76 |ined for| an argv|
|00000d50| 5b 5d 20 61 72 72 61 79 | 20 28 77 69 74 68 20 6f |[] array| (with o|
|00000d60| 72 20 77 69 74 68 6f 75 | 74 20 61 20 63 6f 72 72 |r withou|t a corr|
|00000d70| 65 73 70 6f 6e 64 69 6e | 67 20 61 72 67 63 29 2c |espondin|g argc),|
|00000d80| 20 66 6f 72 0a 58 20 61 | 20 73 74 72 69 6e 67 20 | for.X a| string |
|00000d90| 6f 66 20 74 6f 6b 65 6e | 73 20 74 68 61 74 20 61 |of token|s that a|
|00000da0| 72 65 20 73 65 70 61 72 | 61 74 65 64 20 62 79 20 |re separ|ated by |
|00000db0| 61 20 67 69 76 65 6e 20 | 73 65 74 20 6f 66 20 64 |a given |set of d|
|00000dc0| 65 6c 69 6d 69 74 65 72 | 73 2c 20 61 6e 64 0a 58 |elimiter|s, and.X|
|00000dd0| 20 66 6f 72 20 61 6e 20 | 69 6e 70 75 74 2d 73 74 | for an |input-st|
|00000de0| 72 65 61 6d 2e 20 20 55 | 73 65 72 73 20 63 61 6e |ream. U|sers can|
|00000df0| 20 65 61 73 69 6c 79 20 | 65 78 74 65 6e 64 20 43 | easily |extend C|
|00000e00| 6d 64 4c 69 6e 65 20 74 | 6f 20 70 61 72 73 65 20 |mdLine t|o parse |
|00000e10| 61 72 67 75 6d 65 6e 74 | 73 0a 58 20 66 72 6f 6d |argument|s.X from|
|00000e20| 20 6f 74 68 65 72 20 69 | 6e 70 75 74 20 73 6f 75 | other i|nput sou|
|00000e30| 72 63 65 73 20 73 69 6d | 70 6c 79 20 62 79 20 63 |rces sim|ply by c|
|00000e40| 72 65 61 74 69 6e 67 20 | 74 68 65 69 72 20 6f 77 |reating |their ow|
|00000e50| 6e 20 61 72 67 75 6d 65 | 6e 74 20 69 74 65 72 61 |n argume|nt itera|
|00000e60| 74 6f 72 0a 58 20 63 6c | 61 73 73 65 73 20 64 65 |tor.X cl|asses de|
|00000e70| 72 69 76 65 64 20 66 72 | 6f 6d 20 74 68 65 20 43 |rived fr|om the C|
|00000e80| 6d 64 4c 69 6e 65 41 72 | 67 49 74 65 72 20 63 6c |mdLineAr|gIter cl|
|00000e90| 61 73 73 20 64 65 66 69 | 6e 65 64 20 69 6e 20 3c |ass defi|ned in <|
|00000ea0| 63 6d 64 6c 69 6e 65 2e | 68 3e 2e 0a 58 0a 58 20 |cmdline.|h>..X.X |
|00000eb0| 43 6f 6d 6d 61 6e 64 2d | 6c 69 6e 65 20 61 72 67 |Command-|line arg|
|00000ec0| 75 6d 65 6e 74 73 20 61 | 72 65 20 74 68 65 6d 73 |uments a|re thems|
|00000ed0| 65 6c 76 65 73 20 6f 62 | 6a 65 63 74 73 20 74 68 |elves ob|jects th|
|00000ee0| 61 74 20 63 6f 6e 74 61 | 69 6e 20 61 20 73 70 65 |at conta|in a spe|
|00000ef0| 63 69 66 69 63 0a 58 20 | 63 6f 6d 6d 61 6e 64 2d |cific.X |command-|
|00000f00| 6c 69 6e 65 20 69 6e 74 | 65 72 66 61 63 65 2c 20 |line int|erface, |
|00000f10| 61 6e 64 20 61 20 66 75 | 6e 63 74 69 6f 6e 20 74 |and a fu|nction t|
|00000f20| 68 61 74 20 70 65 72 66 | 6f 72 6d 73 20 74 68 65 |hat perf|orms the|
|00000f30| 20 64 65 73 69 72 65 64 | 20 61 63 74 69 6f 6e 73 | desired| actions|
|00000f40| 0a 58 20 77 68 65 6e 20 | 69 74 73 20 63 6f 72 72 |.X when |its corr|
|00000f50| 65 73 70 6f 6e 64 69 6e | 67 20 61 72 67 75 6d 65 |espondin|g argume|
|00000f60| 6e 74 20 69 73 20 73 65 | 65 6e 20 6f 6e 20 74 68 |nt is se|en on th|
|00000f70| 65 20 63 6f 6d 6d 61 6e | 64 20 6c 69 6e 65 2e 20 |e comman|d line. |
|00000f80| 20 50 72 65 64 65 66 69 | 6e 65 64 0a 58 20 63 6f | Predefi|ned.X co|
|00000f90| 6d 6d 61 6e 64 2d 6c 69 | 6e 65 20 61 72 67 75 6d |mmand-li|ne argum|
|00000fa0| 65 6e 74 20 74 79 70 65 | 73 20 28 64 65 72 69 76 |ent type|s (deriv|
|00000fb0| 65 64 20 66 72 6f 6d 20 | 74 68 65 20 61 62 73 74 |ed from |the abst|
|00000fc0| 72 61 63 74 20 63 6c 61 | 73 73 20 43 6d 64 41 72 |ract cla|ss CmdAr|
|00000fd0| 67 20 69 6e 0a 58 20 3c | 63 6d 64 6c 69 6e 65 2e |g in.X <|cmdline.|
|00000fe0| 68 3e 29 20 65 78 69 73 | 74 20 66 6f 72 20 62 6f |h>) exis|t for bo|
|00000ff0| 6f 6c 65 61 6e 2c 20 69 | 6e 74 65 67 65 72 2c 20 |olean, i|nteger, |
|00001000| 66 6c 6f 61 74 69 6e 67 | 2d 70 6f 69 6e 74 2c 20 |floating|-point, |
|00001010| 63 68 61 72 61 63 74 65 | 72 2c 20 61 6e 64 0a 58 |characte|r, and.X|
|00001020| 20 73 74 72 69 6e 67 20 | 61 72 67 75 6d 65 6e 74 | string |argument|
|00001030| 73 2c 20 61 6e 64 20 66 | 6f 72 20 6c 69 73 74 73 |s, and f|or lists|
|00001040| 20 6f 66 20 69 6e 74 65 | 67 65 72 73 2c 20 66 6c | of inte|gers, fl|
|00001050| 6f 61 74 73 2c 20 61 6e | 64 20 73 74 72 69 6e 67 |oats, an|d string|
|00001060| 73 2e 20 20 54 68 65 73 | 65 0a 58 20 70 72 65 64 |s. Thes|e.X pred|
|00001070| 65 66 69 6e 65 64 20 73 | 75 62 63 6c 61 73 73 65 |efined s|ubclasse|
|00001080| 73 20 6f 66 20 43 6d 64 | 41 72 67 20 6d 61 79 20 |s of Cmd|Arg may |
|00001090| 62 65 20 66 6f 75 6e 64 | 20 69 6e 20 3c 63 6d 64 |be found| in <cmd|
|000010a0| 61 72 67 73 2e 68 3e 2e | 20 20 55 73 65 72 73 20 |args.h>.| Users |
|000010b0| 63 61 6e 0a 58 20 61 6c | 73 6f 20 63 72 65 61 74 |can.X al|so creat|
|000010c0| 65 20 74 68 65 69 72 20 | 6f 77 6e 20 63 6f 6d 6d |e their |own comm|
|000010d0| 61 6e 64 2d 61 72 67 75 | 6d 65 6e 74 20 74 79 70 |and-argu|ment typ|
|000010e0| 65 73 20 6f 6e 20 74 68 | 65 20 66 6c 79 20 62 79 |es on th|e fly by|
|000010f0| 20 64 65 66 69 6e 69 6e | 67 20 61 6e 64 0a 58 20 | definin|g and.X |
|00001100| 69 6d 70 6c 65 6d 65 6e | 74 69 6e 67 20 61 6e 20 |implemen|ting an |
|00001110| 61 70 70 72 6f 70 72 69 | 61 74 65 20 73 75 62 63 |appropri|ate subc|
|00001120| 6c 61 73 73 20 6f 66 20 | 74 68 65 20 43 6d 64 41 |lass of |the CmdA|
|00001130| 72 67 20 63 6c 61 73 73 | 2e 0a 58 0a 58 20 55 73 |rg class|..X.X Us|
|00001140| 69 6e 67 20 43 6d 64 4c | 69 6e 65 20 69 73 20 72 |ing CmdL|ine is r|
|00001150| 65 6c 61 74 69 76 65 6c | 79 20 65 61 73 79 20 2d |elativel|y easy -|
|00001160| 20 79 6f 75 20 6e 65 65 | 64 20 74 6f 20 63 6f 6e | you nee|d to con|
|00001170| 73 74 72 75 63 74 20 79 | 6f 75 72 20 61 72 67 75 |struct y|our argu|
|00001180| 6d 65 6e 74 73 2c 0a 58 | 20 79 6f 75 72 20 63 6f |ments,.X| your co|
|00001190| 6d 6d 61 6e 64 2d 6c 69 | 6e 65 2c 20 61 6e 64 20 |mmand-li|ne, and |
|000011a0| 79 6f 75 72 20 61 72 67 | 75 6d 65 6e 74 20 69 74 |your arg|ument it|
|000011b0| 65 72 61 74 6f 72 2e 20 | 20 54 68 65 6e 20 61 6c |erator. | Then al|
|000011c0| 6c 20 74 68 61 74 20 69 | 73 20 6c 65 66 74 20 74 |l that i|s left t|
|000011d0| 6f 0a 58 20 64 6f 20 69 | 73 20 63 61 6c 6c 20 74 |o.X do i|s call t|
|000011e0| 68 65 20 22 70 61 72 73 | 65 22 20 6d 65 6d 62 65 |he "pars|e" membe|
|000011f0| 72 20 66 75 6e 63 74 69 | 6f 6e 20 6f 66 20 79 6f |r functi|on of yo|
|00001200| 75 72 20 43 6d 64 4c 69 | 6e 65 20 6f 62 6a 65 63 |ur CmdLi|ne objec|
|00001210| 74 2e 20 20 54 68 65 0a | 58 20 66 6f 6c 6c 6f 77 |t. The.|X follow|
|00001220| 69 6e 67 20 69 73 20 61 | 20 73 69 6d 70 6c 65 20 |ing is a| simple |
|00001230| 65 78 61 6d 70 6c 65 3a | 0a 58 0a 58 20 20 20 20 |example:|.X.X |
|00001240| 23 69 6e 63 6c 75 64 65 | 20 3c 73 74 64 6c 69 62 |#include| <stdlib|
|00001250| 2e 68 3e 0a 58 20 20 20 | 20 23 69 6e 63 6c 75 64 |.h>.X | #includ|
|00001260| 65 20 3c 69 6f 73 74 72 | 65 61 6d 2e 68 3e 0a 58 |e <iostr|eam.h>.X|
|00001270| 20 20 20 20 23 69 6e 63 | 6c 75 64 65 20 3c 63 6d | #inc|lude <cm|
|00001280| 64 61 72 67 73 2e 68 3e | 0a 58 0a 58 20 20 20 20 |dargs.h>|.X.X |
|00001290| 69 6e 74 20 20 6d 61 69 | 6e 28 69 6e 74 20 61 72 |int mai|n(int ar|
|000012a0| 67 63 2c 20 63 68 61 72 | 20 2a 20 61 72 67 76 5b |gc, char| * argv[|
|000012b0| 5d 29 0a 58 20 20 20 20 | 7b 0a 58 20 20 20 20 20 |]).X |{.X |
|000012c0| 20 20 20 20 20 2f 2f 20 | 44 65 63 6c 61 72 65 20 | // |Declare |
|000012d0| 61 72 67 75 6d 65 6e 74 | 73 0a 58 20 20 20 20 20 |argument|s.X |
|000012e0| 20 20 43 6d 64 41 72 67 | 49 6e 74 20 20 63 6f 75 | CmdArg|Int cou|
|000012f0| 6e 74 28 27 63 27 2c 20 | 22 63 6f 75 6e 74 22 2c |nt('c', |"count",|
|00001300| 20 22 6e 75 6d 62 65 72 | 22 2c 20 22 6e 75 6d 62 | "number|", "numb|
|00001310| 65 72 20 6f 66 20 63 6f | 70 69 65 73 20 74 6f 20 |er of co|pies to |
|00001320| 70 72 69 6e 74 2e 22 29 | 3b 0a 58 20 20 20 20 20 |print.")|;.X |
|00001330| 20 20 43 6d 64 41 72 67 | 42 6f 6f 6c 20 78 66 6c | CmdArg|Bool xfl|
|00001340| 61 67 28 27 78 27 2c 20 | 22 78 6d 6f 64 65 22 2c |ag('x', |"xmode",|
|00001350| 20 22 74 75 72 6e 20 6f | 6e 20 27 78 27 2d 6d 6f | "turn o|n 'x'-mo|
|00001360| 64 65 2e 22 29 3b 0a 58 | 20 20 20 20 20 20 20 43 |de.");.X| C|
|00001370| 6d 64 41 72 67 43 68 61 | 72 20 66 64 73 65 70 28 |mdArgCha|r fdsep(|
|00001380| 27 73 27 2c 20 22 73 65 | 70 61 72 61 74 6f 72 22 |'s', "se|parator"|
|00001390| 2c 20 22 63 68 61 72 22 | 2c 20 22 66 69 65 6c 64 |, "char"|, "field|
|000013a0| 2d 73 65 70 61 72 61 74 | 6f 72 20 74 6f 20 75 73 |-separat|or to us|
|000013b0| 65 2e 22 29 3b 0a 58 20 | 20 20 20 20 20 20 43 6d |e.");.X | Cm|
|000013c0| 64 41 72 67 53 74 72 20 | 20 69 6e 70 75 74 28 22 |dArgStr | input("|
|000013d0| 69 6e 70 75 74 2d 66 69 | 6c 65 22 2c 20 20 22 69 |input-fi|le", "i|
|000013e0| 6e 70 75 74 20 66 69 6c | 65 20 74 6f 20 72 65 61 |nput fil|e to rea|
|000013f0| 64 2e 22 29 3b 0a 58 20 | 20 20 20 20 20 20 43 6d |d.");.X | Cm|
|00001400| 64 41 72 67 53 74 72 4c | 69 73 74 20 20 6f 75 74 |dArgStrL|ist out|
|00001410| 70 75 74 28 22 5b 6f 75 | 74 70 75 74 2d 66 69 6c |put("[ou|tput-fil|
|00001420| 65 20 2e 2e 2e 5d 22 2c | 20 20 22 77 68 65 72 65 |e ...]",| "where|
|00001430| 20 74 6f 20 70 72 69 6e | 74 20 6f 75 74 70 75 74 | to prin|t output|
|00001440| 2e 22 29 3b 0a 58 0a 58 | 20 20 20 20 20 20 20 20 |.");.X.X| |
|00001450| 20 20 2f 2f 20 44 65 63 | 6c 61 72 65 20 63 6f 6d | // Dec|lare com|
|00001460| 6d 61 6e 64 20 6f 62 6a | 65 63 74 20 61 6e 64 20 |mand obj|ect and |
|00001470| 69 74 73 20 61 72 67 75 | 6d 65 6e 74 2d 69 74 65 |its argu|ment-ite|
|00001480| 72 61 74 6f 72 0a 58 20 | 20 20 20 20 20 20 43 6d |rator.X | Cm|
|00001490| 64 4c 69 6e 65 20 20 63 | 6d 64 28 2a 61 72 67 76 |dLine c|md(*argv|
|000014a0| 2c 20 26 63 6f 75 6e 74 | 2c 20 26 78 66 6c 61 67 |, &count|, &xflag|
|000014b0| 2c 20 26 66 64 73 65 70 | 2c 20 26 69 6e 70 75 74 |, &fdsep|, &input|
|000014c0| 2c 20 26 6f 75 74 70 75 | 74 2c 20 4e 55 4c 4c 29 |, &outpu|t, NULL)|
|000014d0| 3b 0a 58 20 20 20 20 20 | 20 20 43 6d 64 41 72 67 |;.X | CmdArg|
|000014e0| 76 49 74 65 72 20 20 61 | 72 67 5f 69 74 65 72 28 |vIter a|rg_iter(|
|000014f0| 2d 2d 61 72 67 63 2c 20 | 2b 2b 61 72 67 76 29 3b |--argc, |++argv);|
|00001500| 0a 58 0a 58 20 20 20 20 | 20 20 20 20 20 20 2f 2f |.X.X | //|
|00001510| 20 49 6e 69 74 69 61 6c | 69 7a 65 20 61 72 67 75 | Initial|ize argu|
|00001520| 6d 65 6e 74 73 20 74 6f | 20 61 70 70 72 6f 70 72 |ments to| appropr|
|00001530| 69 61 74 65 20 64 65 66 | 61 75 6c 74 20 76 61 6c |iate def|ault val|
|00001540| 75 65 73 2e 0a 58 20 20 | 20 20 20 20 20 63 6f 75 |ues..X | cou|
|00001550| 6e 74 20 3d 20 31 3b 0a | 58 20 20 20 20 20 20 20 |nt = 1;.|X |
|00001560| 78 66 6c 61 67 20 3d 20 | 30 3b 0a 58 20 20 20 20 |xflag = |0;.X |
|00001570| 20 20 20 66 64 73 65 70 | 20 3d 20 27 2c 27 3b 0a | fdsep| = ',';.|
|00001580| 58 0a 58 20 20 20 20 20 | 20 20 20 20 20 2f 2f 20 |X.X | // |
|00001590| 50 61 72 73 65 20 61 72 | 67 75 6d 65 6e 74 73 0a |Parse ar|guments.|
|000015a0| 58 20 20 20 20 20 20 20 | 63 6d 64 2e 70 61 72 73 |X |cmd.pars|
|000015b0| 65 28 61 72 67 5f 69 74 | 65 72 29 3b 0a 58 0a 58 |e(arg_it|er);.X.X|
|000015c0| 20 20 20 20 20 20 20 20 | 20 20 2f 2f 20 50 72 69 | | // Pri|
|000015d0| 6e 74 20 61 72 67 75 6d | 65 6e 74 73 0a 58 20 20 |nt argum|ents.X |
|000015e0| 20 20 20 20 20 63 6f 75 | 74 20 3c 3c 20 22 63 6f | cou|t << "co|
|000015f0| 75 6e 74 3d 22 20 3c 3c | 20 63 6f 75 6e 74 20 3c |unt=" <<| count <|
|00001600| 3c 20 65 6e 64 6c 20 3b | 0a 58 20 20 20 20 20 20 |< endl ;|.X |
|00001610| 20 63 6f 75 74 20 3c 3c | 20 22 78 66 6c 61 67 3d | cout <<| "xflag=|
|00001620| 22 20 3c 3c 20 28 78 66 | 6c 61 67 20 3f 20 22 4f |" << (xf|lag ? "O|
|00001630| 4e 22 20 3a 20 22 4f 46 | 46 22 29 20 3c 3c 20 65 |N" : "OF|F") << e|
|00001640| 6e 64 6c 20 3b 0a 58 20 | 20 20 20 20 20 20 63 6f |ndl ;.X | co|
|00001650| 75 74 20 3c 3c 20 22 66 | 64 73 65 70 3d 27 22 20 |ut << "f|dsep='" |
|00001660| 3c 3c 20 28 63 68 61 72 | 29 20 66 64 73 65 70 20 |<< (char|) fdsep |
|00001670| 3c 3c 20 22 27 22 20 3c | 3c 20 65 6e 64 6c 20 3b |<< "'" <|< endl ;|
|00001680| 0a 58 20 20 20 20 20 20 | 20 63 6f 75 74 20 3c 3c |.X | cout <<|
|00001690| 20 22 69 6e 70 75 74 3d | 5c 22 22 20 3c 3c 20 69 | "input=|\"" << i|
|000016a0| 6e 70 75 74 20 3c 3c 20 | 22 5c 22 22 20 3c 3c 20 |nput << |"\"" << |
|000016b0| 65 6e 64 6c 20 3b 0a 58 | 20 20 20 20 20 20 20 0a |endl ;.X| .|
|000016c0| 58 20 20 20 20 20 20 20 | 66 6f 72 20 28 69 6e 74 |X |for (int|
|000016d0| 20 69 20 3d 20 30 20 3b | 20 69 20 3c 20 6f 75 74 | i = 0 ;| i < out|
|000016e0| 70 75 74 2e 63 6f 75 6e | 74 28 29 20 3b 20 69 2b |put.coun|t() ; i+|
|000016f0| 2b 29 20 7b 0a 58 20 20 | 20 20 20 20 20 20 20 20 |+) {.X | |
|00001700| 63 6f 75 74 20 3c 3c 20 | 22 6f 75 74 70 75 74 5b |cout << |"output[|
|00001710| 22 20 3c 3c 20 69 20 3c | 3c 20 22 5d 3d 22 20 3c |" << i <|< "]=" <|
|00001720| 3c 20 6f 75 74 70 75 74 | 5b 69 5d 20 3c 3c 20 65 |< output|[i] << e|
|00001730| 6e 64 6c 20 3b 0a 58 20 | 20 20 20 20 20 20 7d 0a |ndl ;.X | }.|
|00001740| 58 0a 58 20 20 20 20 20 | 20 20 72 65 74 75 72 6e |X.X | return|
|00001750| 20 20 30 3b 0a 58 20 20 | 20 20 7d 0a 58 0a 58 0a | 0;.X | }.X.X.|
|00001760| 58 20 54 68 65 20 55 6e | 69 78 20 63 6f 6d 6d 61 |X The Un|ix comma|
|00001770| 6e 64 2d 6c 69 6e 65 20 | 73 79 6e 74 61 78 20 66 |nd-line |syntax f|
|00001780| 6f 72 20 74 68 65 20 61 | 62 6f 76 65 20 70 72 6f |or the a|bove pro|
|00001790| 67 72 61 6d 20 77 6f 75 | 6c 64 20 62 65 20 61 73 |gram wou|ld be as|
|000017a0| 20 66 6f 6c 6c 6f 77 73 | 3a 0a 58 0a 58 20 20 20 | follows|:.X.X |
|000017b0| 20 55 73 61 67 65 3a 20 | 70 72 6f 67 6e 61 6d 65 | Usage: |progname|
|000017c0| 20 5b 2d 63 20 6e 75 6d | 62 65 72 5d 20 5b 2d 78 | [-c num|ber] [-x|
|000017d0| 5d 20 5b 2d 73 20 63 68 | 61 72 5d 20 69 6e 70 75 |] [-s ch|ar] inpu|
|000017e0| 74 2d 66 69 6c 65 20 5b | 6f 75 74 70 75 74 2d 66 |t-file [|output-f|
|000017f0| 69 6c 65 20 2e 2e 2e 5d | 0a 58 0a 58 20 20 20 20 |ile ...]|.X.X |
|00001800| 4f 70 74 69 6f 6e 73 2f | 41 72 67 75 6d 65 6e 74 |Options/|Argument|
|00001810| 73 3a 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |s:.X | |
|00001820| 2d 63 20 6e 75 6d 62 65 | 72 20 20 20 20 20 20 20 |-c numbe|r |
|00001830| 20 6e 75 6d 62 65 72 20 | 6f 66 20 63 6f 70 69 65 | number |of copie|
|00001840| 73 20 74 6f 20 70 72 69 | 6e 74 2e 0a 58 20 20 20 |s to pri|nt..X |
|00001850| 20 20 20 20 20 20 20 20 | 20 2d 78 20 20 20 20 20 | | -x |
|00001860| 20 20 20 20 20 20 20 20 | 20 20 74 75 72 6e 20 6f | | turn o|
|00001870| 6e 20 27 78 27 2d 6d 6f | 64 65 2e 0a 58 20 20 20 |n 'x'-mo|de..X |
|00001880| 20 20 20 20 20 20 20 20 | 20 2d 73 20 63 68 61 72 | | -s char|
|00001890| 20 20 20 20 20 20 20 20 | 20 20 66 69 65 6c 64 2d | | field-|
|000018a0| 73 65 70 61 72 61 74 6f | 72 20 74 6f 20 75 73 65 |separato|r to use|
|000018b0| 2e 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 69 |..X | i|
|000018c0| 6e 70 75 74 2d 66 69 6c | 65 20 20 20 20 20 20 20 |nput-fil|e |
|000018d0| 69 6e 70 75 74 20 66 69 | 6c 65 20 74 6f 20 72 65 |input fi|le to re|
|000018e0| 61 64 2e 0a 58 20 20 20 | 20 20 20 20 20 20 20 20 |ad..X | |
|000018f0| 20 6f 75 74 70 75 74 2d | 66 69 6c 65 20 2e 2e 2e | output-|file ...|
|00001900| 20 20 77 68 65 72 65 20 | 74 6f 20 70 72 69 6e 74 | where |to print|
|00001910| 20 6f 75 74 70 75 74 2e | 0a 58 0a 58 0a 58 20 54 | output.|.X.X.X T|
|00001920| 68 65 20 55 6e 69 78 20 | 63 6f 6d 6d 61 6e 64 2d |he Unix |command-|
|00001930| 6c 69 6e 65 20 73 79 6e | 74 61 78 20 75 73 69 6e |line syn|tax usin|
|00001940| 67 20 6c 6f 6e 67 2d 6f | 70 74 69 6f 6e 73 20 28 |g long-o|ptions (|
|00001950| 6b 65 79 77 6f 72 64 73 | 29 20 66 6f 72 20 74 68 |keywords|) for th|
|00001960| 65 20 61 62 6f 76 65 0a | 58 20 70 72 6f 67 72 61 |e above.|X progra|
|00001970| 6d 20 77 6f 75 6c 64 20 | 62 65 20 61 73 20 66 6f |m would |be as fo|
|00001980| 6c 6c 6f 77 73 3a 0a 58 | 0a 58 20 20 20 20 55 73 |llows:.X|.X Us|
|00001990| 61 67 65 3a 20 70 72 6f | 67 6e 61 6d 65 20 5b 2d |age: pro|gname [-|
|000019a0| 2d 63 6f 75 6e 74 20 6e | 75 6d 62 65 72 5d 20 5b |-count n|umber] [|
|000019b0| 2d 2d 78 6d 6f 64 65 5d | 20 5b 2d 2d 73 65 70 61 |--xmode]| [--sepa|
|000019c0| 72 61 74 6f 72 20 63 68 | 61 72 5d 0a 58 20 20 20 |rator ch|ar].X |
|000019d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000019e0| 20 69 6e 70 75 74 2d 66 | 69 6c 65 20 5b 6f 75 74 | input-f|ile [out|
|000019f0| 70 75 74 2d 66 69 6c 65 | 20 2e 2e 2e 5d 0a 58 0a |put-file| ...].X.|
|00001a00| 58 20 20 20 20 4f 70 74 | 69 6f 6e 73 2f 41 72 67 |X Opt|ions/Arg|
|00001a10| 75 6d 65 6e 74 73 3a 0a | 58 20 20 20 20 20 20 20 |uments:.|X |
|00001a20| 20 20 20 20 20 2d 2d 63 | 6f 75 6e 74 20 6e 75 6d | --c|ount num|
|00001a30| 62 65 72 20 20 20 20 6e | 75 6d 62 65 72 20 6f 66 |ber n|umber of|
|00001a40| 20 63 6f 70 69 65 73 20 | 74 6f 20 70 72 69 6e 74 | copies |to print|
|00001a50| 2e 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 2d |..X | -|
|00001a60| 2d 78 6d 6f 64 65 20 20 | 20 20 20 20 20 20 20 20 |-xmode | |
|00001a70| 20 74 75 72 6e 20 6f 6e | 20 27 78 27 2d 6d 6f 64 | turn on| 'x'-mod|
|00001a80| 65 2e 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |e..X | |
|00001a90| 2d 2d 73 65 70 61 72 61 | 74 6f 72 20 63 68 61 72 |--separa|tor char|
|00001aa0| 20 20 66 69 65 6c 64 2d | 73 65 70 61 72 61 74 6f | field-|separato|
|00001ab0| 72 20 74 6f 20 75 73 65 | 2e 0a 58 20 20 20 20 20 |r to use|..X |
|00001ac0| 20 20 20 20 20 20 20 69 | 6e 70 75 74 2d 66 69 6c | i|nput-fil|
|00001ad0| 65 20 20 20 20 20 20 20 | 20 69 6e 70 75 74 20 66 |e | input f|
|00001ae0| 69 6c 65 20 74 6f 20 72 | 65 61 64 2e 0a 58 20 20 |ile to r|ead..X |
|00001af0| 20 20 20 20 20 20 20 20 | 20 20 6f 75 74 70 75 74 | | output|
|00001b00| 2d 66 69 6c 65 20 2e 2e | 2e 20 20 20 77 68 65 72 |-file ..|. wher|
|00001b10| 65 20 74 6f 20 70 72 69 | 6e 74 20 6f 75 74 70 75 |e to pri|nt outpu|
|00001b20| 74 2e 0a 58 0a 58 0a 58 | 20 42 79 20 64 65 66 61 |t..X.X.X| By defa|
|00001b30| 75 6c 74 2c 20 43 6d 64 | 4c 69 6e 65 20 61 6c 6c |ult, Cmd|Line all|
|00001b40| 6f 77 73 20 62 6f 74 68 | 20 6f 70 74 69 6f 6e 73 |ows both| options|
|00001b50| 20 61 6e 64 20 6c 6f 6e | 67 2d 6f 70 74 69 6f 6e | and lon|g-option|
|00001b60| 73 20 74 6f 20 61 70 70 | 65 61 72 20 6f 6e 20 74 |s to app|ear on t|
|00001b70| 68 65 0a 58 20 63 6f 6d | 6d 61 6e 64 2d 6c 69 6e |he.X com|mand-lin|
|00001b80| 65 2e 20 59 6f 75 20 63 | 61 6e 20 69 6e 73 74 72 |e. You c|an instr|
|00001b90| 75 63 74 20 43 6d 64 4c | 69 6e 65 20 74 6f 20 64 |uct CmdL|ine to d|
|00001ba0| 69 73 61 6c 6c 6f 77 20 | 6f 6e 65 20 6f 72 20 74 |isallow |one or t|
|00001bb0| 68 65 20 6f 74 68 65 72 | 20 68 6f 77 65 76 65 72 |he other| however|
|00001bc0| 2e 0a 58 20 41 73 20 61 | 6e 20 22 65 78 74 72 61 |..X As a|n "extra|
|00001bd0| 22 2c 20 77 68 65 6e 20 | 6f 70 74 69 6f 6e 73 20 |", when |options |
|00001be0| 61 72 65 20 64 69 73 61 | 6c 6c 6f 77 65 64 2c 20 |are disa|llowed, |
|00001bf0| 74 68 65 20 22 2d 22 20 | 70 72 65 66 69 78 20 69 |the "-" |prefix i|
|00001c00| 73 20 61 73 73 75 6d 65 | 64 20 74 6f 0a 58 20 64 |s assume|d to.X d|
|00001c10| 65 6e 6f 74 65 20 61 20 | 6c 6f 6e 67 2d 6f 70 74 |enote a |long-opt|
|00001c20| 69 6f 6e 20 69 6e 73 74 | 65 61 64 20 6f 66 20 61 |ion inst|ead of a|
|00001c30| 6e 20 6f 70 74 69 6f 6e | 20 28 68 65 6e 63 65 20 |n option| (hence |
|00001c40| 65 69 74 68 65 72 20 22 | 2d 22 20 6f 72 20 22 2d |either "|-" or "-|
|00001c50| 2d 22 20 64 65 6e 6f 74 | 65 73 0a 58 20 61 20 6b |-" denot|es.X a k|
|00001c60| 65 79 77 6f 72 64 20 69 | 6e 20 74 68 69 73 20 63 |eyword i|n this c|
|00001c70| 61 73 65 29 2e 20 20 55 | 73 69 6e 67 20 74 68 69 |ase). U|sing thi|
|00001c80| 73 20 66 65 61 74 75 72 | 65 2c 20 43 6d 64 4c 69 |s featur|e, CmdLi|
|00001c90| 6e 65 20 63 61 6e 20 62 | 65 20 75 73 65 64 20 74 |ne can b|e used t|
|00001ca0| 6f 20 73 75 70 70 6c 79 | 0a 58 20 74 68 65 20 74 |o supply|.X the t|
|00001cb0| 79 70 65 20 6f 66 20 6c | 6f 6e 67 2d 6f 70 74 69 |ype of l|ong-opti|
|00001cc0| 6f 6e 20 73 79 6e 74 61 | 78 20 74 68 61 74 20 69 |on synta|x that i|
|00001cd0| 73 20 6e 6f 77 20 62 65 | 63 6f 6d 69 6e 67 20 71 |s now be|coming q|
|00001ce0| 75 69 74 65 20 70 6f 70 | 75 6c 61 72 20 69 6e 20 |uite pop|ular in |
|00001cf0| 74 68 65 0a 58 20 55 6e | 69 78 20 77 6f 72 6c 64 |the.X Un|ix world|
|00001d00| 2e 20 55 73 69 6e 67 20 | 74 68 69 73 20 22 6e 65 |. Using |this "ne|
|00001d10| 77 22 20 73 79 6e 74 61 | 78 2c 20 74 68 65 20 63 |w" synta|x, the c|
|00001d20| 6f 6d 6d 61 6e 64 2d 6c | 69 6e 65 20 73 79 6e 74 |ommand-l|ine synt|
|00001d30| 61 78 20 66 6f 72 20 74 | 68 65 20 61 62 6f 76 65 |ax for t|he above|
|00001d40| 0a 58 20 63 6f 6d 6d 61 | 6e 64 20 77 6f 75 6c 64 |.X comma|nd would|
|00001d50| 20 62 65 20 74 68 65 20 | 66 6f 6c 6c 6f 77 69 6e | be the |followin|
|00001d60| 67 3a 0a 58 0a 58 20 20 | 20 20 55 73 61 67 65 3a |g:.X.X | Usage:|
|00001d70| 20 70 72 6f 67 6e 61 6d | 65 20 5b 2d 63 6f 75 6e | prognam|e [-coun|
|00001d80| 74 20 6e 75 6d 62 65 72 | 5d 20 5b 2d 78 6d 6f 64 |t number|] [-xmod|
|00001d90| 65 5d 20 5b 2d 73 65 70 | 61 72 61 74 6f 72 20 63 |e] [-sep|arator c|
|00001da0| 68 61 72 5d 0a 58 20 20 | 20 20 20 20 20 20 20 20 |har].X | |
|00001db0| 20 20 20 20 20 20 20 20 | 20 20 69 6e 70 75 74 2d | | input-|
|00001dc0| 66 69 6c 65 20 5b 6f 75 | 74 70 75 74 2d 66 69 6c |file [ou|tput-fil|
|00001dd0| 65 20 2e 2e 2e 5d 0a 58 | 0a 58 20 20 20 20 4f 70 |e ...].X|.X Op|
|00001de0| 74 69 6f 6e 73 2f 41 72 | 67 75 6d 65 6e 74 73 3a |tions/Ar|guments:|
|00001df0| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 2d 63 |.X | -c|
|00001e00| 6f 75 6e 74 20 6e 75 6d | 62 65 72 20 20 20 20 6e |ount num|ber n|
|00001e10| 75 6d 62 65 72 20 6f 66 | 20 63 6f 70 69 65 73 20 |umber of| copies |
|00001e20| 74 6f 20 70 72 69 6e 74 | 2e 0a 58 20 20 20 20 20 |to print|..X |
|00001e30| 20 20 20 20 20 20 20 2d | 78 6d 6f 64 65 20 20 20 | -|xmode |
|00001e40| 20 20 20 20 20 20 20 20 | 74 75 72 6e 20 6f 6e 20 | |turn on |
|00001e50| 27 78 27 2d 6d 6f 64 65 | 2e 0a 58 20 20 20 20 20 |'x'-mode|..X |
|00001e60| 20 20 20 20 20 20 20 2d | 73 65 70 61 72 61 74 6f | -|separato|
|00001e70| 72 20 63 68 61 72 20 20 | 66 69 65 6c 64 2d 73 65 |r char |field-se|
|00001e80| 70 61 72 61 74 6f 72 20 | 74 6f 20 75 73 65 2e 0a |parator |to use..|
|00001e90| 58 20 20 20 20 20 20 20 | 20 20 20 20 20 69 6e 70 |X | inp|
|00001ea0| 75 74 2d 66 69 6c 65 20 | 20 20 20 20 20 20 69 6e |ut-file | in|
|00001eb0| 70 75 74 20 66 69 6c 65 | 20 74 6f 20 72 65 61 64 |put file| to read|
|00001ec0| 2e 0a 58 20 20 20 20 20 | 20 20 20 20 20 20 20 6f |..X | o|
|00001ed0| 75 74 70 75 74 2d 66 69 | 6c 65 20 2e 2e 2e 20 20 |utput-fi|le ... |
|00001ee0| 77 68 65 72 65 20 74 6f | 20 70 72 69 6e 74 20 6f |where to| print o|
|00001ef0| 75 74 70 75 74 2e 0a 58 | 0a 58 0a 58 20 49 74 20 |utput..X|.X.X It |
|00001f00| 73 68 6f 75 6c 64 20 62 | 65 20 6d 65 6e 74 69 6f |should b|e mentio|
|00001f10| 6e 65 64 20 74 68 61 74 | 2c 20 77 68 65 6e 20 6c |ned that|, when l|
|00001f20| 6f 6e 67 2d 6f 70 74 69 | 6f 6e 73 20 61 72 65 20 |ong-opti|ons are |
|00001f30| 75 73 65 64 2c 20 6f 6e | 6c 79 20 61 20 75 6e 69 |used, on|ly a uni|
|00001f40| 71 75 65 0a 58 20 70 72 | 65 66 69 78 20 6f 66 20 |que.X pr|efix of |
|00001f50| 74 68 65 20 6b 65 79 77 | 6f 72 64 20 6e 65 65 64 |the keyw|ord need|
|00001f60| 73 20 74 6f 20 62 65 20 | 67 69 76 65 6e 20 28 61 |s to be |given (a|
|00001f70| 6e 64 20 63 68 61 72 61 | 63 74 65 72 2d 63 61 73 |nd chara|cter-cas|
|00001f80| 65 20 69 73 20 69 67 6e | 6f 72 65 64 29 2e 0a 58 |e is ign|ored)..X|
|00001f90| 20 48 65 6e 63 65 2c 20 | 69 6e 20 74 68 65 20 61 | Hence, |in the a|
|00001fa0| 62 6f 76 65 20 65 78 61 | 6d 70 6c 65 2c 20 22 2d |bove exa|mple, "-|
|00001fb0| 78 22 2c 20 22 2d 58 22 | 2c 20 61 6e 64 20 22 2d |x", "-X"|, and "-|
|00001fc0| 78 6d 22 20 77 69 6c 6c | 20 6d 61 74 63 68 20 22 |xm" will| match "|
|00001fd0| 2d 78 6d 6f 64 65 22 2e | 0a 58 0a 58 0a 58 20 63 |-xmode".|.X.X.X c|
|00001fe0| 6d 64 70 61 72 73 65 28 | 31 29 0a 58 20 2d 2d 2d |mdparse(|1).X ---|
|00001ff0| 2d 2d 2d 2d 2d 2d 2d 2d | 0a 58 20 55 73 69 6e 67 |--------|.X Using|
|00002000| 20 22 63 6d 64 70 61 72 | 73 65 22 20 69 73 20 65 | "cmdpar|se" is e|
|00002010| 76 65 6e 20 65 61 73 69 | 65 72 20 74 68 61 6e 20 |ven easi|er than |
|00002020| 75 73 69 6e 67 20 43 6d | 64 4c 69 6e 65 2e 20 59 |using Cm|dLine. Y|
|00002030| 6f 75 20 64 65 63 6c 61 | 72 65 20 79 6f 75 72 0a |ou decla|re your.|
|00002040| 58 20 61 72 67 75 6d 65 | 6e 74 73 20 69 6e 20 61 |X argume|nts in a|
|00002050| 20 73 74 72 69 6e 67 20 | 61 6e 64 20 74 68 65 6e | string |and then|
|00002060| 20 79 6f 75 20 69 6e 76 | 6f 6b 65 20 63 6d 64 70 | you inv|oke cmdp|
|00002070| 61 72 73 65 20 77 69 74 | 68 20 74 68 65 20 63 6f |arse wit|h the co|
|00002080| 6d 6d 61 6e 64 0a 58 20 | 6c 69 6e 65 20 6f 66 20 |mmand.X |line of |
|00002090| 79 6f 75 72 20 73 68 65 | 6c 6c 2d 73 63 72 69 70 |your she|ll-scrip|
|000020a0| 74 20 61 6e 64 20 63 6d | 64 70 61 72 73 65 20 77 |t and cm|dparse w|
|000020b0| 69 6c 6c 20 6f 75 74 70 | 75 74 20 61 20 73 63 72 |ill outp|ut a scr|
|000020c0| 69 70 74 20 6f 66 20 76 | 61 72 69 61 62 6c 65 0a |ipt of v|ariable.|
|000020d0| 58 20 73 65 74 74 69 6e | 67 73 20 66 6f 72 20 79 |X settin|gs for y|
|000020e0| 6f 75 20 74 6f 20 65 76 | 61 6c 75 61 74 65 2e 20 |ou to ev|aluate. |
|000020f0| 20 54 68 65 20 66 6f 6c | 6c 6f 77 69 6e 67 20 69 | The fol|lowing i|
|00002100| 73 20 61 6e 20 65 78 61 | 6d 70 6c 65 20 28 75 73 |s an exa|mple (us|
|00002110| 69 6e 67 20 74 68 65 0a | 58 20 73 61 6d 65 20 61 |ing the.|X same a|
|00002120| 72 67 75 6d 65 6e 74 73 | 20 61 73 20 69 6e 20 6f |rguments| as in o|
|00002130| 75 72 20 73 61 6d 70 6c | 65 20 70 72 6f 67 72 61 |ur sampl|e progra|
|00002140| 6d 29 3a 0a 58 0a 58 20 | 20 20 20 23 21 2f 62 69 |m):.X.X | #!/bi|
|00002150| 6e 2f 73 68 0a 58 20 20 | 20 20 4e 41 4d 45 3d 22 |n/sh.X | NAME="|
|00002160| 60 2f 62 69 6e 2f 62 61 | 73 65 6e 61 6d 65 20 24 |`/bin/ba|sename $|
|00002170| 30 60 22 0a 58 0a 58 20 | 20 20 20 41 52 47 53 3d |0`".X.X | ARGS=|
|00002180| 27 0a 58 20 20 20 20 20 | 20 20 41 72 67 49 6e 74 |'.X | ArgInt|
|00002190| 20 20 20 63 6f 75 6e 74 | 20 20 22 5b 63 7c 63 6f | count| "[c|co|
|000021a0| 75 6e 74 20 6e 75 6d 62 | 65 72 5d 22 20 20 20 20 |unt numb|er]" |
|000021b0| 22 6e 75 6d 62 65 72 20 | 6f 66 20 63 6f 70 69 65 |"number |of copie|
|000021c0| 73 20 74 6f 20 70 72 69 | 6e 74 2e 22 0a 58 20 20 |s to pri|nt.".X |
|000021d0| 20 20 20 20 20 41 72 67 | 42 6f 6f 6c 20 20 78 66 | Arg|Bool xf|
|000021e0| 6c 61 67 20 20 22 5b 78 | 7c 78 6d 6f 64 65 5d 22 |lag "[x||xmode]"|
|000021f0| 20 20 20 20 20 20 20 20 | 20 20 20 22 74 75 72 6e | | "turn|
|00002200| 20 6f 6e 20 78 2d 6d 6f | 64 65 2e 22 0a 58 20 20 | on x-mo|de.".X |
|00002210| 20 20 20 20 20 41 72 67 | 43 68 61 72 20 20 66 64 | Arg|Char fd|
|00002220| 73 65 70 20 20 22 5b 73 | 7c 73 65 70 61 72 61 74 |sep "[s||separat|
|00002230| 6f 72 20 63 68 61 72 5d | 22 20 20 22 66 69 65 6c |or char]|" "fiel|
|00002240| 64 2d 73 65 70 61 72 61 | 74 6f 72 20 74 6f 20 75 |d-separa|tor to u|
|00002250| 73 65 2e 22 0a 58 20 20 | 20 20 20 20 20 41 72 67 |se.".X | Arg|
|00002260| 53 74 72 20 20 20 69 6e | 70 75 74 20 20 22 69 6e |Str in|put "in|
|00002270| 70 75 74 2d 66 69 6c 65 | 22 20 20 20 20 20 20 20 |put-file|" |
|00002280| 20 20 20 22 69 6e 70 75 | 74 20 66 69 6c 65 20 74 | "inpu|t file t|
|00002290| 6f 20 72 65 61 64 2e 22 | 0a 58 20 20 20 20 20 20 |o read."|.X |
|000022a0| 20 41 72 67 53 74 72 20 | 20 20 6f 75 74 70 75 74 | ArgStr | output|
|000022b0| 20 22 5b 6f 75 74 70 75 | 74 2d 66 69 6c 65 20 2e | "[outpu|t-file .|
|000022c0| 2e 2e 5d 22 20 20 20 22 | 77 68 65 72 65 20 74 6f |..]" "|where to|
|000022d0| 20 70 72 69 6e 74 20 6f | 75 74 70 75 74 2e 22 0a | print o|utput.".|
|000022e0| 58 20 20 20 20 27 0a 58 | 0a 58 20 20 20 20 69 66 |X '.X|.X if|
|000022f0| 20 20 63 6d 64 70 61 72 | 73 65 20 2d 73 68 65 6c | cmdpar|se -shel|
|00002300| 6c 3d 73 68 20 2d 64 65 | 63 6c 73 3d 22 24 41 52 |l=sh -de|cls="$AR|
|00002310| 47 53 22 20 2d 2d 20 24 | 4e 41 4d 45 20 22 24 40 |GS" -- $|NAME "$@|
|00002320| 22 20 3e 20 74 6d 70 24 | 24 0a 58 20 20 20 20 74 |" > tmp$|$.X t|
|00002330| 68 65 6e 0a 58 20 20 20 | 20 20 20 20 2e 20 74 6d |hen.X | . tm|
|00002340| 70 24 24 0a 58 20 20 20 | 20 20 20 20 2f 62 69 6e |p$$.X | /bin|
|00002350| 2f 72 6d 20 2d 66 20 74 | 6d 70 24 24 0a 58 20 20 |/rm -f t|mp$$.X |
|00002360| 20 20 65 6c 73 65 0a 58 | 20 20 20 20 20 20 20 45 | else.X| E|
|00002370| 58 49 54 56 41 4c 3d 24 | 3f 0a 58 20 20 20 20 20 |XITVAL=$|?.X |
|00002380| 20 20 2f 62 69 6e 2f 72 | 6d 20 2d 66 20 74 6d 70 | /bin/r|m -f tmp|
|00002390| 24 24 0a 58 20 20 20 20 | 20 20 20 65 78 69 74 20 |$$.X | exit |
|000023a0| 24 45 58 49 54 56 41 4c | 0a 58 20 20 20 20 66 69 |$EXITVAL|.X fi|
|000023b0| 0a 58 0a 58 20 20 20 20 | 65 63 68 6f 20 22 78 66 |.X.X |echo "xf|
|000023c0| 6c 61 67 3d 22 20 24 78 | 66 6c 61 67 0a 58 20 20 |lag=" $x|flag.X |
|000023d0| 20 20 65 63 68 6f 20 22 | 63 6f 75 6e 74 3d 22 20 | echo "|count=" |
|000023e0| 24 63 6f 75 6e 74 0a 58 | 20 20 20 20 65 63 68 6f |$count.X| echo|
|000023f0| 20 22 66 64 73 65 70 3d | 22 20 24 66 64 73 65 70 | "fdsep=|" $fdsep|
|00002400| 0a 58 20 20 20 20 65 63 | 68 6f 20 22 69 6e 70 75 |.X ec|ho "inpu|
|00002410| 74 3d 22 20 24 69 6e 70 | 75 74 0a 58 20 20 20 20 |t=" $inp|ut.X |
|00002420| 69 66 20 5b 20 22 24 6f | 75 74 70 75 74 22 20 5d |if [ "$o|utput" ]|
|00002430| 20 3b 20 74 68 65 6e 0a | 58 20 20 20 20 20 20 20 | ; then.|X |
|00002440| 65 63 68 6f 20 22 6f 75 | 74 70 75 74 3d 22 20 24 |echo "ou|tput=" $|
|00002450| 6f 75 74 70 75 74 0a 58 | 20 20 20 20 66 69 0a 58 |output.X| fi.X|
|00002460| 0a 58 0a 58 20 4e 6f 74 | 65 20 74 68 61 74 20 79 |.X.X Not|e that y|
|00002470| 6f 75 20 64 65 63 6c 61 | 72 65 20 74 68 65 20 73 |ou decla|re the s|
|00002480| 79 6e 74 61 78 20 6f 66 | 20 61 6e 20 61 72 67 75 |yntax of| an argu|
|00002490| 6d 65 6e 74 20 64 69 66 | 66 65 72 65 6e 74 6c 79 |ment dif|ferently|
|000024a0| 20 66 6f 72 20 63 6d 64 | 70 61 72 73 65 0a 58 20 | for cmd|parse.X |
|000024b0| 74 68 61 6e 20 66 6f 72 | 20 43 6d 64 4c 69 6e 65 |than for| CmdLine|
|000024c0| 2e 20 54 68 65 20 73 79 | 6e 74 61 78 20 66 6f 72 |. The sy|ntax for|
|000024d0| 20 61 20 73 69 6e 67 6c | 65 20 61 72 67 75 6d 65 | a singl|e argume|
|000024e0| 6e 74 20 66 6f 72 20 63 | 6d 64 70 61 72 73 65 20 |nt for c|mdparse |
|000024f0| 6c 6f 6f 6b 73 20 6c 69 | 6b 65 0a 58 20 74 68 65 |looks li|ke.X the|
|00002500| 20 66 6f 6c 6c 6f 77 69 | 6e 67 3a 0a 58 0a 58 20 | followi|ng:.X.X |
|00002510| 20 20 20 3c 61 72 67 2d | 74 79 70 65 3e 20 20 3c | <arg-|type> <|
|00002520| 61 72 67 2d 6e 61 6d 65 | 3e 20 20 3c 73 79 6e 74 |arg-name|> <synt|
|00002530| 61 78 3e 20 20 3c 64 65 | 73 63 72 69 70 74 69 6f |ax> <de|scriptio|
|00002540| 6e 3e 0a 58 0a 58 20 57 | 68 65 72 65 20 3c 61 72 |n>.X.X W|here <ar|
|00002550| 67 2d 74 79 70 65 3e 20 | 69 73 20 6f 6e 65 20 6f |g-type> |is one o|
|00002560| 66 20 74 68 65 20 66 6f | 6c 6c 6f 77 69 6e 67 3a |f the fo|llowing:|
|00002570| 0a 58 0a 58 20 20 20 20 | 41 72 67 49 6e 74 20 20 |.X.X |ArgInt |
|00002580| 20 20 20 2d 2d 20 20 61 | 6e 20 69 6e 74 65 67 65 | -- a|n intege|
|00002590| 72 20 76 61 6c 75 65 20 | 28 6f 72 20 6c 69 73 74 |r value |(or list|
|000025a0| 20 6f 66 20 76 61 6c 75 | 65 73 29 0a 58 20 20 20 | of valu|es).X |
|000025b0| 20 41 72 67 46 6c 6f 61 | 74 20 20 20 2d 2d 20 20 | ArgFloa|t -- |
|000025c0| 61 20 66 6c 6f 61 74 69 | 6e 67 2d 70 6f 69 6e 74 |a floati|ng-point|
|000025d0| 20 76 61 6c 75 65 20 28 | 6f 72 20 6c 69 73 74 20 | value (|or list |
|000025e0| 6f 66 20 76 61 6c 75 65 | 73 29 0a 58 20 20 20 20 |of value|s).X |
|000025f0| 41 72 67 43 68 61 72 20 | 20 20 20 2d 2d 20 20 61 |ArgChar | -- a|
|00002600| 20 63 68 61 72 61 63 74 | 65 72 20 76 61 6c 75 65 | charact|er value|
|00002610| 20 28 6f 72 20 6c 69 73 | 74 20 6f 66 20 76 61 6c | (or lis|t of val|
|00002620| 75 65 73 29 0a 58 20 20 | 20 20 41 72 67 53 74 72 |ues).X | ArgStr|
|00002630| 20 20 20 20 20 2d 2d 20 | 20 61 20 73 74 72 69 6e | -- | a strin|
|00002640| 67 20 76 61 6c 75 65 20 | 28 6f 72 20 6c 69 73 74 |g value |(or list|
|00002650| 20 6f 66 20 76 61 6c 75 | 65 73 29 0a 58 20 20 20 | of valu|es).X |
|00002660| 20 41 72 67 42 6f 6f 6c | 20 20 20 20 2d 2d 20 20 | ArgBool| -- |
|00002670| 61 20 62 6f 6f 6c 65 61 | 6e 20 66 6c 61 67 20 74 |a boolea|n flag t|
|00002680| 68 61 74 20 69 73 20 74 | 75 72 6e 65 64 20 4f 4e |hat is t|urned ON|
|00002690| 0a 58 20 20 20 20 41 72 | 67 43 6c 65 61 72 20 20 |.X Ar|gClear |
|000026a0| 20 2d 2d 20 20 61 20 62 | 6f 6f 6c 65 61 6e 20 66 | -- a b|oolean f|
|000026b0| 6c 61 67 20 74 68 61 74 | 20 69 73 20 74 75 72 6e |lag that| is turn|
|000026c0| 65 64 20 4f 46 46 0a 58 | 20 20 20 20 41 72 67 54 |ed OFF.X| ArgT|
|000026d0| 6f 67 67 6c 65 20 20 2d | 2d 20 20 61 20 62 6f 6f |oggle -|- a boo|
|000026e0| 6c 65 61 6e 20 66 6c 61 | 67 20 74 68 61 74 20 69 |lean fla|g that i|
|000026f0| 73 20 74 6f 67 67 6c 65 | 64 0a 58 20 20 20 20 41 |s toggle|d.X A|
|00002700| 72 67 55 73 61 67 65 20 | 20 20 2d 2d 20 20 70 72 |rgUsage | -- pr|
|00002710| 69 6e 74 20 75 73 61 67 | 65 20 61 6e 64 20 65 78 |int usag|e and ex|
|00002720| 69 74 0a 58 20 20 20 20 | 41 72 67 44 75 6d 6d 79 |it.X |ArgDummy|
|00002730| 20 20 20 2d 2d 20 61 20 | 64 75 6d 6d 79 20 61 72 | -- a |dummy ar|
|00002740| 67 75 6d 65 6e 74 0a 58 | 0a 58 20 49 66 20 64 65 |gument.X|.X If de|
|00002750| 73 69 72 65 64 2c 20 74 | 68 65 20 6c 65 61 64 69 |sired, t|he leadi|
|00002760| 6e 67 20 22 41 72 67 22 | 20 70 6f 72 74 69 6f 6e |ng "Arg"| portion|
|00002770| 20 6d 61 79 20 62 65 20 | 6f 6d 69 74 74 65 64 20 | may be |omitted |
|00002780| 66 72 6f 6d 20 74 68 65 | 20 74 79 70 65 2d 6e 61 |from the| type-na|
|00002790| 6d 65 2e 0a 58 0a 58 20 | 3c 61 72 67 2d 6e 61 6d |me..X.X |<arg-nam|
|000027a0| 65 3e 20 69 73 20 73 69 | 6d 70 6c 79 20 74 68 65 |e> is si|mply the|
|000027b0| 20 6e 61 6d 65 20 6f 66 | 20 74 68 65 20 76 61 72 | name of| the var|
|000027c0| 69 61 62 6c 65 20 69 6e | 20 79 6f 75 72 20 73 63 |iable in| your sc|
|000027d0| 72 69 70 74 20 74 68 61 | 74 20 79 6f 75 20 77 69 |ript tha|t you wi|
|000027e0| 73 68 0a 58 20 74 6f 20 | 63 6f 6e 74 61 69 6e 20 |sh.X to |contain |
|000027f0| 74 68 65 20 72 65 73 75 | 6c 74 61 6e 74 20 76 61 |the resu|ltant va|
|00002800| 6c 75 65 20 66 72 6f 6d | 20 74 68 65 20 63 6f 6d |lue from| the com|
|00002810| 6d 61 6e 64 2d 6c 69 6e | 65 2e 20 20 41 6e 79 20 |mand-lin|e. Any |
|00002820| 64 65 66 61 75 6c 74 20 | 76 61 6c 75 65 0a 58 20 |default |value.X |
|00002830| 6d 75 73 74 20 62 65 20 | 61 73 73 69 67 6e 65 64 |must be |assigned|
|00002840| 20 74 6f 20 74 68 65 20 | 76 61 72 69 61 62 6c 65 | to the |variable|
|00002850| 20 62 65 66 6f 72 65 20 | 69 6e 76 6f 6b 69 6e 67 | before |invoking|
|00002860| 20 63 6d 64 70 61 72 73 | 65 2e 0a 58 0a 58 20 3c | cmdpars|e..X.X <|
|00002870| 73 79 6e 74 61 78 3e 20 | 61 6e 64 20 3c 64 65 73 |syntax> |and <des|
|00002880| 63 72 69 70 74 69 6f 6e | 3e 20 2a 4d 55 53 54 2a |cription|> *MUST*|
|00002890| 20 62 65 20 65 6e 63 6c | 6f 73 65 64 20 69 6e 20 | be encl|osed in |
|000028a0| 65 69 74 68 65 72 20 73 | 69 6e 67 6c 65 20 6f 72 |either s|ingle or|
|000028b0| 20 64 6f 75 62 6c 65 0a | 58 20 71 75 6f 74 65 73 | double.|X quotes|
|000028c0| 21 20 3c 64 65 73 63 72 | 69 70 74 69 6f 6e 3e 20 |! <descr|iption> |
|000028d0| 69 73 20 73 69 6d 70 6c | 79 20 74 68 61 74 2c 20 |is simpl|y that, |
|000028e0| 74 68 65 20 64 65 73 63 | 72 69 70 74 69 6f 6e 20 |the desc|ription |
|000028f0| 6f 66 20 74 68 65 20 61 | 72 67 75 6d 65 6e 74 2e |of the a|rgument.|
|00002900| 0a 58 20 0a 58 20 3c 73 | 79 6e 74 61 78 3e 20 69 |.X .X <s|yntax> i|
|00002910| 73 20 61 20 6c 69 74 74 | 6c 65 20 74 72 69 63 6b |s a litt|le trick|
|00002920| 69 65 72 2c 20 74 68 65 | 72 65 20 61 72 65 20 74 |ier, the|re are t|
|00002930| 68 72 65 65 20 62 61 73 | 69 63 20 66 6f 72 6d 73 |hree bas|ic forms|
|00002940| 20 6f 66 20 73 79 6e 74 | 61 78 3a 0a 58 0a 58 20 | of synt|ax:.X.X |
|00002950| 20 20 31 29 20 20 22 63 | 7c 6b 65 79 77 6f 72 64 | 1) "c||keyword|
|00002960| 22 20 20 20 20 20 20 20 | 20 2d 2d 20 61 6e 20 6f |" | -- an o|
|00002970| 70 74 69 6f 6e 20 74 68 | 65 20 74 61 6b 65 73 20 |ption th|e takes |
|00002980| 6e 6f 20 76 61 6c 75 65 | 0a 58 20 20 20 32 29 20 |no value|.X 2) |
|00002990| 20 22 63 7c 6b 65 79 77 | 6f 72 64 20 76 61 6c 75 | "c|keyw|ord valu|
|000029a0| 65 22 20 20 2d 2d 20 61 | 6e 20 6f 70 74 69 6f 6e |e" -- a|n option|
|000029b0| 20 74 68 61 74 20 74 61 | 6b 65 73 20 61 20 76 61 | that ta|kes a va|
|000029c0| 6c 75 65 0a 58 20 20 20 | 33 29 20 20 22 76 61 6c |lue.X |3) "val|
|000029d0| 75 65 22 20 20 20 20 20 | 20 20 20 20 20 20 20 2d |ue" | -|
|000029e0| 2d 20 61 20 70 6f 73 69 | 74 69 6f 6e 61 6c 20 70 |- a posi|tional p|
|000029f0| 61 72 61 6d 65 74 65 72 | 0a 58 0a 58 20 4e 6f 74 |arameter|.X.X Not|
|00002a00| 65 20 74 68 61 74 20 74 | 68 65 20 6f 70 74 69 6f |e that t|he optio|
|00002a10| 6e 2d 63 68 61 72 61 63 | 74 65 72 20 4d 55 53 54 |n-charac|ter MUST|
|00002a20| 20 70 72 65 63 65 64 65 | 20 74 68 65 20 6b 65 79 | precede| the key|
|00002a30| 77 6f 72 64 2d 6e 61 6d | 65 20 61 6e 64 20 74 68 |word-nam|e and th|
|00002a40| 61 74 0a 58 20 74 68 65 | 72 65 20 6d 75 73 74 20 |at.X the|re must |
|00002a50| 62 65 20 4e 4f 20 73 70 | 61 63 65 73 20 73 75 72 |be NO sp|aces sur|
|00002a60| 72 6f 75 6e 64 69 6e 67 | 20 74 68 65 20 27 7c 27 |rounding| the '|'|
|00002a70| 20 69 6e 20 22 63 7c 6b | 65 79 77 6f 72 64 22 21 | in "c|k|eyword"!|
|00002a80| 0a 58 0a 58 20 41 6e 79 | 20 22 6f 70 74 69 6f 6e |.X.X Any| "option|
|00002a90| 61 6c 22 20 70 61 72 74 | 73 20 6f 66 20 74 68 65 |al" part|s of the|
|00002aa0| 20 61 72 67 75 6d 65 6e | 74 20 73 68 6f 75 6c 64 | argumen|t should|
|00002ab0| 20 61 70 70 65 61 72 20 | 69 6e 73 69 64 65 20 73 | appear |inside s|
|00002ac0| 71 75 61 72 65 2d 62 72 | 61 63 6b 65 74 73 0a 58 |quare-br|ackets.X|
|00002ad0| 20 28 27 5b 27 20 61 6e | 64 20 27 5d 27 29 20 61 | ('[' an|d ']') a|
|00002ae0| 6e 64 20 61 20 6c 69 73 | 74 20 6f 66 20 76 61 6c |nd a lis|t of val|
|00002af0| 75 65 73 20 69 73 20 64 | 65 6e 6f 74 65 64 20 62 |ues is d|enoted b|
|00002b00| 79 20 61 6e 20 65 6c 6c | 69 70 73 69 73 20 28 22 |y an ell|ipsis ("|
|00002b10| 20 2e 2e 2e 22 29 2e 0a | 58 20 4d 6f 73 74 20 6f | ...")..|X Most o|
|00002b20| 70 74 69 6f 6e 73 20 77 | 69 6c 6c 20 62 65 20 69 |ptions w|ill be i|
|00002b30| 6e 73 69 64 65 20 6f 66 | 20 73 71 75 61 72 65 20 |nside of| square |
|00002b40| 62 72 61 63 6b 65 74 73 | 20 74 6f 20 72 65 66 6c |brackets| to refl|
|00002b50| 65 63 74 20 74 68 65 20 | 66 61 63 74 20 74 68 61 |ect the |fact tha|
|00002b60| 74 0a 58 20 74 68 65 79 | 20 61 72 65 20 22 6f 70 |t.X they| are "op|
|00002b70| 74 69 6f 6e 61 6c 22 2e | 0a 58 0a 58 20 53 6f 6d |tional".|.X.X Som|
|00002b80| 65 20 65 78 61 6d 70 6c | 65 20 3c 73 79 6e 74 61 |e exampl|e <synta|
|00002b90| 78 3e 20 73 74 72 69 6e | 67 73 20 66 6f 6c 6c 6f |x> strin|gs follo|
|00002ba0| 77 3a 0a 58 0a 58 20 20 | 20 20 22 63 7c 6b 65 79 |w:.X.X | "c|key|
|00002bb0| 77 6f 72 64 22 20 20 20 | 20 20 20 20 20 20 20 20 |word" | |
|00002bc0| 20 20 20 20 20 2d 2d 20 | 61 20 72 65 71 75 69 72 | -- |a requir|
|00002bd0| 65 64 20 6f 70 74 69 6f | 6e 0a 58 20 20 20 20 22 |ed optio|n.X "|
|00002be0| 5b 63 7c 6b 65 79 77 6f | 72 64 5d 22 20 20 20 20 |[c|keywo|rd]" |
|00002bf0| 20 20 20 20 20 20 20 20 | 20 20 2d 2d 20 61 6e 20 | | -- an |
|00002c00| 6f 70 74 69 6f 6e 20 77 | 69 74 68 20 6e 6f 20 76 |option w|ith no v|
|00002c10| 61 6c 75 65 0a 58 20 20 | 20 20 22 5b 63 7c 6b 65 |alue.X | "[c|ke|
|00002c20| 79 77 6f 72 64 20 76 61 | 6c 75 65 5d 22 20 20 20 |yword va|lue]" |
|00002c30| 20 20 20 20 20 2d 2d 20 | 61 6e 20 6f 70 74 69 6f | -- |an optio|
|00002c40| 6e 20 74 68 61 74 20 74 | 61 6b 65 73 20 61 20 76 |n that t|akes a v|
|00002c50| 61 6c 75 65 0a 58 20 20 | 20 20 22 5b 63 7c 6b 65 |alue.X | "[c|ke|
|00002c60| 79 77 6f 72 64 20 5b 76 | 61 6c 75 65 5d 5d 22 20 |yword [v|alue]]" |
|00002c70| 20 20 20 20 20 2d 2d 20 | 61 6e 20 6f 70 74 69 6f | -- |an optio|
|00002c80| 6e 20 74 68 61 74 20 74 | 61 6b 65 73 20 61 6e 20 |n that t|akes an |
|00002c90| 6f 70 74 69 6f 6e 61 6c | 20 76 61 6c 75 65 0a 58 |optional| value.X|
|00002ca0| 20 20 20 20 22 5b 63 7c | 6b 65 79 77 6f 72 64 20 | "[c||keyword |
|00002cb0| 76 61 6c 75 65 20 2e 2e | 2e 5d 22 20 20 20 20 2d |value ..|.]" -|
|00002cc0| 2d 20 61 6e 20 6f 70 74 | 69 6f 6e 20 74 68 61 74 |- an opt|ion that|
|00002cd0| 20 74 61 6b 65 73 20 31 | 20 6f 72 20 6d 6f 72 65 | takes 1| or more|
|00002ce0| 20 76 61 6c 75 65 73 0a | 58 20 20 20 20 22 5b 63 | values.|X "[c|
|00002cf0| 7c 6b 65 79 77 6f 72 64 | 20 5b 76 61 6c 75 65 20 ||keyword| [value |
|00002d00| 2e 2e 2e 5d 5d 22 20 20 | 2d 2d 20 61 6e 20 6f 70 |...]]" |-- an op|
|00002d10| 74 69 6f 6e 20 74 68 61 | 74 20 74 61 6b 65 73 20 |tion tha|t takes |
|00002d20| 30 20 6f 72 20 6d 6f 72 | 65 20 76 61 6c 75 65 73 |0 or mor|e values|
|00002d30| 0a 58 20 20 20 20 22 76 | 61 6c 75 65 22 20 20 20 |.X "v|alue" |
|00002d40| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002d50| 20 2d 2d 20 61 20 72 65 | 71 75 69 72 65 64 20 70 | -- a re|quired p|
|00002d60| 6f 73 69 74 69 6f 6e 61 | 6c 20 70 61 72 61 6d 65 |ositiona|l parame|
|00002d70| 74 65 72 0a 58 20 20 20 | 20 22 5b 76 61 6c 75 65 |ter.X | "[value|
|00002d80| 5d 22 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |]" | |
|00002d90| 20 20 20 20 2d 2d 20 61 | 6e 20 6f 70 74 69 6f 6e | -- a|n option|
|00002da0| 61 6c 20 70 6f 73 69 74 | 69 6f 6e 61 6c 2d 70 61 |al posit|ional-pa|
|00002db0| 72 61 6d 65 74 65 72 0a | 58 20 20 20 20 22 5b 63 |rameter.|X "[c|
|00002dc0| 7c 6b 65 79 77 6f 72 64 | 5d 20 76 61 6c 75 65 22 ||keyword|] value"|
|00002dd0| 20 20 20 20 20 20 20 20 | 2d 2d 20 61 20 72 65 71 | |-- a req|
|00002de0| 75 69 72 65 64 20 61 72 | 67 75 6d 65 6e 74 20 74 |uired ar|gument t|
|00002df0| 68 61 74 20 6d 61 79 20 | 62 65 20 6d 61 74 63 68 |hat may |be match|
|00002e00| 65 64 0a 58 20 20 20 20 | 20 20 20 20 20 20 20 20 |ed.X | |
|00002e10| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00002e20| 20 20 20 20 20 20 65 69 | 74 68 65 72 20 70 6f 73 | ei|ther pos|
|00002e30| 69 74 69 6f 6e 61 6c 6c | 79 20 6f 72 20 62 79 20 |itionall|y or by |
|00002e40| 6b 65 79 77 6f 72 64 21 | 0a 58 0a 58 0a 58 20 46 |keyword!|.X.X.X F|
|00002e50| 75 72 74 68 65 72 20 49 | 6e 66 6f 72 6d 61 74 69 |urther I|nformati|
|00002e60| 6f 6e 0a 58 20 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |on.X ---|--------|
|00002e70| 2d 2d 2d 2d 2d 2d 2d 2d | 0a 58 20 54 68 69 73 20 |--------|.X This |
|00002e80| 69 73 20 6a 75 73 74 20 | 61 20 62 72 69 65 66 20 |is just |a brief |
|00002e90| 6f 76 65 72 76 69 65 77 | 20 6f 66 20 77 68 61 74 |overview| of what|
|00002ea0| 20 74 68 65 20 43 6d 64 | 4c 69 6e 65 20 70 61 63 | the Cmd|Line pac|
|00002eb0| 6b 61 67 65 20 63 61 6e | 20 64 6f 2e 20 50 6c 65 |kage can| do. Ple|
|00002ec0| 61 73 65 0a 58 20 72 65 | 61 64 20 74 68 65 20 64 |ase.X re|ad the d|
|00002ed0| 6f 63 75 6d 65 6e 74 61 | 74 69 6f 6e 20 66 6f 72 |ocumenta|tion for|
|00002ee0| 20 61 20 6d 6f 72 65 20 | 74 68 6f 72 6f 75 67 68 | a more |thorough|
|00002ef0| 20 65 78 70 6c 61 6e 61 | 74 69 6f 6e 20 6f 66 20 | explana|tion of |
|00002f00| 74 68 69 73 20 70 72 6f | 64 75 63 74 73 27 0a 58 |this pro|ducts'.X|
|00002f10| 20 63 61 70 61 62 69 6c | 69 74 69 65 73 20 61 6e | capabil|ities an|
|00002f20| 64 20 6c 69 6d 69 74 61 | 74 69 6f 6e 73 21 0a 58 |d limita|tions!.X|
|00002f30| 0a 45 4e 44 5f 4f 46 5f | 46 49 4c 45 0a 69 66 20 |.END_OF_|FILE.if |
|00002f40| 74 65 73 74 20 31 30 35 | 30 34 20 2d 6e 65 20 60 |test 105|04 -ne `|
|00002f50| 77 63 20 2d 63 20 3c 27 | 4f 76 65 72 76 69 65 77 |wc -c <'|Overview|
|00002f60| 27 60 3b 20 74 68 65 6e | 0a 20 20 20 20 65 63 68 |'`; then|. ech|
|00002f70| 6f 20 73 68 61 72 3a 20 | 5c 22 27 4f 76 65 72 76 |o shar: |\"'Overv|
|00002f80| 69 65 77 27 5c 22 20 75 | 6e 70 61 63 6b 65 64 20 |iew'\" u|npacked |
|00002f90| 77 69 74 68 20 77 72 6f | 6e 67 20 73 69 7a 65 21 |with wro|ng size!|
|00002fa0| 0a 66 69 0a 23 20 65 6e | 64 20 6f 66 20 27 4f 76 |.fi.# en|d of 'Ov|
|00002fb0| 65 72 76 69 65 77 27 0a | 66 69 0a 69 66 20 74 65 |erview'.|fi.if te|
|00002fc0| 73 74 20 2d 66 20 27 73 | 72 63 2f 6c 69 62 2f 63 |st -f 's|rc/lib/c|
|00002fd0| 6d 64 61 72 67 2e 63 27 | 20 2d 61 20 22 24 7b 31 |mdarg.c'| -a "${1|
|00002fe0| 7d 22 20 21 3d 20 22 2d | 63 22 20 3b 20 74 68 65 |}" != "-|c" ; the|
|00002ff0| 6e 20 0a 20 20 65 63 68 | 6f 20 73 68 61 72 3a 20 |n . ech|o shar: |
|00003000| 57 69 6c 6c 20 6e 6f 74 | 20 63 6c 6f 62 62 65 72 |Will not| clobber|
|00003010| 20 65 78 69 73 74 69 6e | 67 20 66 69 6c 65 20 5c | existin|g file \|
|00003020| 22 27 73 72 63 2f 6c 69 | 62 2f 63 6d 64 61 72 67 |"'src/li|b/cmdarg|
|00003030| 2e 63 27 5c 22 0a 65 6c | 73 65 0a 65 63 68 6f 20 |.c'\".el|se.echo |
|00003040| 73 68 61 72 3a 20 45 78 | 74 72 61 63 74 69 6e 67 |shar: Ex|tracting|
|00003050| 20 5c 22 27 73 72 63 2f | 6c 69 62 2f 63 6d 64 61 | \"'src/|lib/cmda|
|00003060| 72 67 2e 63 27 5c 22 20 | 5c 28 39 39 34 35 20 63 |rg.c'\" |\(9945 c|
|00003070| 68 61 72 61 63 74 65 72 | 73 5c 29 0a 73 65 64 20 |haracter|s\).sed |
|00003080| 22 73 2f 5e 58 2f 2f 22 | 20 3e 27 73 72 63 2f 6c |"s/^X//"| >'src/l|
|00003090| 69 62 2f 63 6d 64 61 72 | 67 2e 63 27 20 3c 3c 27 |ib/cmdar|g.c' <<'|
|000030a0| 45 4e 44 5f 4f 46 5f 46 | 49 4c 45 27 0a 58 2f 2f |END_OF_F|ILE'.X//|
|000030b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000030c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000030d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000030e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000030f0| 2d 2d 2d 2d 2d 2d 2d 2d | 0a 58 2f 2f 20 5e 46 49 |--------|.X// ^FI|
|00003100| 4c 45 3a 20 63 6d 64 61 | 72 67 2e 63 20 2d 20 69 |LE: cmda|rg.c - i|
|00003110| 6d 70 6c 65 6d 65 6e 74 | 20 61 20 43 6d 64 41 72 |mplement| a CmdAr|
|00003120| 67 0a 58 2f 2f 0a 58 2f | 2f 20 5e 44 45 53 43 52 |g.X//.X/|/ ^DESCR|
|00003130| 49 50 54 49 4f 4e 3a 0a | 58 2f 2f 20 20 20 20 54 |IPTION:.|X// T|
|00003140| 68 69 73 20 66 69 6c 65 | 20 69 6d 70 6c 65 6d 65 |his file| impleme|
|00003150| 6e 74 73 20 74 68 65 20 | 43 6d 64 41 72 67 20 63 |nts the |CmdArg c|
|00003160| 6c 61 73 73 20 77 68 69 | 63 68 20 69 73 20 74 68 |lass whi|ch is th|
|00003170| 65 20 62 61 73 65 0a 58 | 2f 2f 20 20 20 20 63 6c |e base.X|// cl|
|00003180| 61 73 73 20 66 6f 72 20 | 61 6c 6c 20 63 6f 6d 6d |ass for |all comm|
|00003190| 61 6e 64 2d 61 72 67 75 | 6d 65 6e 74 73 2e 0a 58 |and-argu|ments..X|
|000031a0| 2f 2f 0a 58 2f 2f 20 5e | 48 49 53 54 4f 52 59 3a |//.X// ^|HISTORY:|
|000031b0| 0a 58 2f 2f 20 20 20 20 | 30 33 2f 32 35 2f 39 32 |.X// |03/25/92|
|000031c0| 09 42 72 61 64 20 41 70 | 70 6c 65 74 6f 6e 09 3c |.Brad Ap|pleton.<|
|000031d0| 62 72 61 64 40 73 73 64 | 2e 63 73 64 2e 68 61 72 |brad@ssd|.csd.har|
|000031e0| 72 69 73 2e 63 6f 6d 3e | 09 43 72 65 61 74 65 64 |ris.com>|.Created|
|000031f0| 0a 58 2f 2f 2d 5e 5e 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.X//-^^-|--------|
|00003200| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003210| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003220| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00003230| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0a 58 0a 58 |--------|----.X.X|
|00003240| 23 69 6e 63 6c 75 64 65 | 20 3c 73 74 64 6c 69 62 |#include| <stdlib|
|00003250| 2e 68 3e 0a 58 23 69 6e | 63 6c 75 64 65 20 3c 69 |.h>.X#in|clude <i|
|00003260| 6f 73 74 72 65 61 6d 2e | 68 3e 0a 58 23 69 6e 63 |ostream.|h>.X#inc|
|00003270| 6c 75 64 65 20 3c 73 74 | 72 69 6e 67 2e 68 3e 0a |lude <st|ring.h>.|
|00003280| 58 23 69 6e 63 6c 75 64 | 65 20 3c 63 74 79 70 65 |X#includ|e <ctype|
|00003290| 2e 68 3e 0a 58 0a 58 23 | 69 6e 63 6c 75 64 65 20 |.h>.X.X#|include |
|000032a0| 22 63 6d 64 6c 69 6e 65 | 2e 68 22 0a 58 0a 58 2f |"cmdline|.h".X.X/|
|000032b0| 2f 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-------|--------|
|000032c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000032d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000032e0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000032f0| 2d 2d 2d 2d 2d 2d 2d 20 | 43 6d 64 41 72 67 0a 58 |------- |CmdArg.X|
|00003300| 0a 58 69 6e 74 20 20 43 | 6d 64 41 72 67 3a 3a 69 |.Xint C|mdArg::i|
|00003310| 73 5f 64 75 6d 6d 79 28 | 76 6f 69 64 29 20 7b 20 |s_dummy(|void) { |
|00003320| 72 65 74 75 72 6e 20 20 | 30 3b 20 7d 0a 58 0a 58 |return |0; }.X.X|
|00003330| 20 20 20 2f 2f 20 43 6f | 70 79 2d 43 6f 6e 73 74 | // Co|py-Const|
|00003340| 72 75 63 74 6f 72 0a 58 | 43 6d 64 41 72 67 3a 3a |ructor.X|CmdArg::|
|00003350| 43 6d 64 41 72 67 28 63 | 6f 6e 73 74 20 43 6d 64 |CmdArg(c|onst Cmd|
|00003360| 41 72 67 20 26 20 63 70 | 29 0a 58 20 20 20 3a 20 |Arg & cp|).X : |
|00003370| 61 72 67 5f 63 68 61 72 | 5f 6e 61 6d 65 28 63 70 |arg_char|_name(cp|
|00003380| 2e 61 72 67 5f 63 68 61 | 72 5f 6e 61 6d 65 29 2c |.arg_cha|r_name),|
|00003390| 0a 58 20 20 20 20 20 61 | 72 67 5f 6b 65 79 77 6f |.X a|rg_keywo|
|000033a0| 72 64 5f 6e 61 6d 65 28 | 63 70 2e 61 72 67 5f 6b |rd_name(|cp.arg_k|
|000033b0| 65 79 77 6f 72 64 5f 6e | 61 6d 65 29 2c 0a 58 20 |eyword_n|ame),.X |
|000033c0| 20 20 20 20 61 72 67 5f | 76 61 6c 75 65 5f 6e 61 | arg_|value_na|
|000033d0| 6d 65 28 63 70 2e 61 72 | 67 5f 76 61 6c 75 65 5f |me(cp.ar|g_value_|
|000033e0| 6e 61 6d 65 29 2c 0a 58 | 20 20 20 20 20 61 6c 6c |name),.X| all|
|000033f0| 6f 63 5f 76 61 6c 75 65 | 5f 6e 61 6d 65 28 63 70 |oc_value|_name(cp|
|00003400| 2e 61 6c 6c 6f 63 5f 76 | 61 6c 75 65 5f 6e 61 6d |.alloc_v|alue_nam|
|00003410| 65 29 2c 0a 58 20 20 20 | 20 20 61 72 67 5f 73 79 |e),.X | arg_sy|
|00003420| 6e 74 61 78 28 63 70 2e | 61 72 67 5f 73 79 6e 74 |ntax(cp.|arg_synt|
|00003430| 61 78 29 2c 0a 58 20 20 | 20 20 20 61 72 67 5f 64 |ax),.X | arg_d|
|00003440| 65 73 63 72 69 70 74 69 | 6f 6e 28 63 70 2e 61 72 |escripti|on(cp.ar|
|00003450| 67 5f 64 65 73 63 72 69 | 70 74 69 6f 6e 29 2c 0a |g_descri|ption),.|
|00003460| 58 20 20 20 20 20 61 72 | 67 5f 66 6c 61 67 73 28 |X ar|g_flags(|
|00003470| 63 70 2e 61 72 67 5f 66 | 6c 61 67 73 29 0a 58 7b |cp.arg_f|lags).X{|
|00003480| 0a 58 20 20 20 69 66 20 | 28 61 6c 6c 6f 63 5f 76 |.X if |(alloc_v|
|00003490| 61 6c 75 65 5f 6e 61 6d | 65 29 20 7b 0a 58 20 20 |alue_nam|e) {.X |
|000034a0| 20 20 20 20 63 68 61 72 | 20 2a 20 76 61 6c 5f 6e | char| * val_n|
|000034b0| 61 6d 65 20 3d 20 6e 65 | 77 20 63 68 61 72 5b 3a |ame = ne|w char[:|
|000034c0| 3a 73 74 72 6c 65 6e 28 | 63 70 2e 61 72 67 5f 76 |:strlen(|cp.arg_v|
|000034d0| 61 6c 75 65 5f 6e 61 6d | 65 29 20 2b 20 31 5d 20 |alue_nam|e) + 1] |
|000034e0| 3b 0a 58 20 20 20 20 20 | 20 3a 3a 73 74 72 63 70 |;.X | ::strcp|
|000034f0| 79 28 28 63 68 61 72 20 | 2a 29 76 61 6c 5f 6e 61 |y((char |*)val_na|
|00003500| 6d 65 2c 20 63 70 2e 61 | 72 67 5f 76 61 6c 75 65 |me, cp.a|rg_value|
|00003510| 5f 6e 61 6d 65 29 3b 0a | 58 20 20 20 20 20 20 61 |_name);.|X a|
|00003520| 72 67 5f 76 61 6c 75 65 | 5f 6e 61 6d 65 20 3d 20 |rg_value|_name = |
|00003530| 76 61 6c 5f 6e 61 6d 65 | 3b 0a 58 20 20 20 7d 0a |val_name|;.X }.|
|00003540| 58 7d 0a 58 0a 58 20 20 | 20 2f 2f 20 43 6f 6e 73 |X}.X.X | // Cons|
|00003550| 74 72 75 63 74 6f 72 73 | 0a 58 0a 58 43 6d 64 41 |tructors|.X.XCmdA|
|00003560| 72 67 3a 3a 43 6d 64 41 | 72 67 28 63 68 61 72 20 |rg::CmdA|rg(char |
|00003570| 20 20 20 20 20 20 20 20 | 6f 70 74 63 68 61 72 2c | |optchar,|
|00003580| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|00003590| 20 63 6f 6e 73 74 20 63 | 68 61 72 20 2a 20 6b 65 | const c|har * ke|
|000035a0| 79 77 6f 72 64 2c 0a 58 | 20 20 20 20 20 20 20 20 |yword,.X| |
|000035b0| 20 20 20 20 20 20 20 63 | 6f 6e 73 74 20 63 68 61 | c|onst cha|
|000035c0| 72 20 2a 20 76 61 6c 75 | 65 2c 0a 58 20 20 20 20 |r * valu|e,.X |
|000035d0| 20 20 20 20 20 20 20 20 | 20 20 20 63 6f 6e 73 74 | | const|
|000035e0| 20 63 68 61 72 20 2a 20 | 64 65 73 63 72 69 70 74 | char * |descript|
|000035f0| 69 6f 6e 2c 0a 58 20 20 | 20 20 20 20 20 20 20 20 |ion,.X | |
|00003600| 20 20 20 20 20 75 6e 73 | 69 67 6e 65 64 20 20 20 | uns|igned |
|00003610| 20 20 73 79 6e 74 61 78 | 5f 66 6c 61 67 73 29 0a | syntax|_flags).|
|00003620| 58 20 20 20 3a 20 61 72 | 67 5f 63 68 61 72 5f 6e |X : ar|g_char_n|
|00003630| 61 6d 65 28 6f 70 74 63 | 68 61 72 29 2c 0a 58 20 |ame(optc|har),.X |
|00003640| 20 20 20 20 61 72 67 5f | 6b 65 79 77 6f 72 64 5f | arg_|keyword_|
|00003650| 6e 61 6d 65 28 6b 65 79 | 77 6f 72 64 29 2c 0a 58 |name(key|word),.X|
|00003660| 20 20 20 20 20 61 72 67 | 5f 76 61 6c 75 65 5f 6e | arg|_value_n|
|00003670| 61 6d 65 28 76 61 6c 75 | 65 29 2c 20 61 6c 6c 6f |ame(valu|e), allo|
|00003680| 63 5f 76 61 6c 75 65 5f | 6e 61 6d 65 28 30 29 2c |c_value_|name(0),|
|00003690| 0a 58 20 20 20 20 20 61 | 72 67 5f 73 79 6e 74 61 |.X a|rg_synta|
|000036a0| 78 28 73 79 6e 74 61 78 | 5f 66 6c 61 67 73 29 2c |x(syntax|_flags),|
|000036b0| 0a 58 20 20 20 20 20 61 | 72 67 5f 64 65 73 63 72 |.X a|rg_descr|
|000036c0| 69 70 74 69 6f 6e 28 64 | 65 73 63 72 69 70 74 69 |iption(d|escripti|
|000036d0| 6f 6e 29 2c 0a 58 20 20 | 20 20 20 61 72 67 5f 66 |on),.X | arg_f|
|000036e0| 6c 61 67 73 28 30 29 0a | 58 7b 0a 58 20 20 20 70 |lags(0).|X{.X p|
|000036f0| 61 72 73 65 5f 64 65 73 | 63 72 69 70 74 69 6f 6e |arse_des|cription|
|00003700| 28 29 3b 0a 58 20 20 20 | 70 61 72 73 65 5f 76 61 |();.X |parse_va|
|00003710| 6c 75 65 28 29 3b 0a 58 | 20 20 20 61 64 6a 75 73 |lue();.X| adjus|
|00003720| 74 5f 73 79 6e 74 61 78 | 28 29 3b 0a 58 7d 0a 58 |t_syntax|();.X}.X|
|00003730| 0a 58 0a 58 43 6d 64 41 | 72 67 3a 3a 43 6d 64 41 |.X.XCmdA|rg::CmdA|
|00003740| 72 67 28 63 68 61 72 20 | 20 20 20 20 20 20 20 20 |rg(char | |
|00003750| 6f 70 74 63 68 61 72 2c | 0a 58 20 20 20 20 20 20 |optchar,|.X |
|00003760| 20 20 20 20 20 20 20 20 | 20 63 6f 6e 73 74 20 63 | | const c|
|00003770| 68 61 72 20 2a 20 6b 65 | 79 77 6f 72 64 2c 0a 58 |har * ke|yword,.X|
|00003780| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 63 | | c|
|00003790| 6f 6e 73 74 20 63 68 61 | 72 20 2a 20 64 65 73 63 |onst cha|r * desc|
|000037a0| 72 69 70 74 69 6f 6e 2c | 0a 58 20 20 20 20 20 20 |ription,|.X |
|000037b0| 20 20 20 20 20 20 20 20 | 20 75 6e 73 69 67 6e 65 | | unsigne|
|000037c0| 64 20 20 20 20 20 73 79 | 6e 74 61 78 5f 66 6c 61 |d sy|ntax_fla|
|000037d0| 67 73 29 0a 58 20 20 20 | 3a 20 61 72 67 5f 63 68 |gs).X |: arg_ch|
|000037e0| 61 72 5f 6e 61 6d 65 28 | 6f 70 74 63 68 61 72 29 |ar_name(|optchar)|
|000037f0| 2c 0a 58 20 20 20 20 20 | 61 72 67 5f 6b 65 79 77 |,.X |arg_keyw|
|00003800| 6f 72 64 5f 6e 61 6d 65 | 28 6b 65 79 77 6f 72 64 |ord_name|(keyword|
|00003810| 29 2c 0a 58 20 20 20 20 | 20 61 72 67 5f 76 61 6c |),.X | arg_val|
|00003820| 75 65 5f 6e 61 6d 65 28 | 4e 55 4c 4c 29 2c 20 61 |ue_name(|NULL), a|
|00003830| 6c 6c 6f 63 5f 76 61 6c | 75 65 5f 6e 61 6d 65 28 |lloc_val|ue_name(|
|00003840| 30 29 2c 0a 58 20 20 20 | 20 20 61 72 67 5f 73 79 |0),.X | arg_sy|
|00003850| 6e 74 61 78 28 73 79 6e | 74 61 78 5f 66 6c 61 67 |ntax(syn|tax_flag|
|00003860| 73 29 2c 0a 58 20 20 20 | 20 20 61 72 67 5f 64 65 |s),.X | arg_de|
|00003870| 73 63 72 69 70 74 69 6f | 6e 28 64 65 73 63 72 69 |scriptio|n(descri|
|00003880| 70 74 69 6f 6e 29 2c 0a | 58 20 20 20 20 20 61 72 |ption),.|X ar|
|00003890| 67 5f 66 6c 61 67 73 28 | 30 29 0a 58 7b 0a 58 20 |g_flags(|0).X{.X |
|000038a0| 20 20 70 61 72 73 65 5f | 64 65 73 63 72 69 70 74 | parse_|descript|
|000038b0| 69 6f 6e 28 29 3b 0a 58 | 20 20 20 61 64 6a 75 73 |ion();.X| adjus|
|000038c0| 74 5f 73 79 6e 74 61 78 | 28 29 3b 0a 58 7d 0a 58 |t_syntax|();.X}.X|
|000038d0| 0a 58 0a 58 43 6d 64 41 | 72 67 3a 3a 43 6d 64 41 |.X.XCmdA|rg::CmdA|
|000038e0| 72 67 28 63 6f 6e 73 74 | 20 63 68 61 72 20 2a 20 |rg(const| char * |
|000038f0| 76 61 6c 75 65 2c 0a 58 | 20 20 20 20 20 20 20 20 |value,.X| |
|00003900| 20 20 20 20 20 20 20 63 | 6f 6e 73 74 20 63 68 61 | c|onst cha|
|00003910| 72 20 2a 20 64 65 73 63 | 72 69 70 74 69 6f 6e 2c |r * desc|ription,|
|00003920| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|00003930| 20 75 6e 73 69 67 6e 65 | 64 20 20 20 20 20 73 79 | unsigne|d sy|
|00003940| 6e 74 61 78 5f 66 6c 61 | 67 73 29 0a 58 20 20 20 |ntax_fla|gs).X |
|00003950| 3a 20 61 72 67 5f 63 68 | 61 72 5f 6e 61 6d 65 28 |: arg_ch|ar_name(|
|00003960| 30 29 2c 0a 58 20 20 20 | 20 20 61 72 67 5f 6b 65 |0),.X | arg_ke|
|00003970| 79 77 6f 72 64 5f 6e 61 | 6d 65 28 4e 55 4c 4c 29 |yword_na|me(NULL)|
|00003980| 2c 0a 58 20 20 20 20 20 | 61 72 67 5f 76 61 6c 75 |,.X |arg_valu|
|00003990| 65 5f 6e 61 6d 65 28 76 | 61 6c 75 65 29 2c 20 61 |e_name(v|alue), a|
|000039a0| 6c 6c 6f 63 5f 76 61 6c | 75 65 5f 6e 61 6d 65 28 |lloc_val|ue_name(|
|000039b0| 30 29 2c 0a 58 20 20 20 | 20 20 61 72 67 5f 73 79 |0),.X | arg_sy|
|000039c0| 6e 74 61 78 28 73 79 6e | 74 61 78 5f 66 6c 61 67 |ntax(syn|tax_flag|
|000039d0| 73 29 2c 0a 58 20 20 20 | 20 20 61 72 67 5f 64 65 |s),.X | arg_de|
|000039e0| 73 63 72 69 70 74 69 6f | 6e 28 64 65 73 63 72 69 |scriptio|n(descri|
|000039f0| 70 74 69 6f 6e 29 2c 0a | 58 20 20 20 20 20 61 72 |ption),.|X ar|
|00003a00| 67 5f 66 6c 61 67 73 28 | 30 29 0a 58 7b 0a 58 20 |g_flags(|0).X{.X |
|00003a10| 20 20 70 61 72 73 65 5f | 64 65 73 63 72 69 70 74 | parse_|descript|
|00003a20| 69 6f 6e 28 29 3b 0a 58 | 20 20 20 70 61 72 73 65 |ion();.X| parse|
|00003a30| 5f 76 61 6c 75 65 28 29 | 3b 0a 58 20 20 20 61 64 |_value()|;.X ad|
|00003a40| 6a 75 73 74 5f 73 79 6e | 74 61 78 28 29 3b 0a 58 |just_syn|tax();.X|
|00003a50| 7d 0a 58 0a 58 0a 58 20 | 20 20 2f 2f 20 44 65 73 |}.X.X.X | // Des|
|00003a60| 74 72 75 63 74 6f 72 0a | 58 43 6d 64 41 72 67 3a |tructor.|XCmdArg:|
|00003a70| 3a 7e 43 6d 64 41 72 67 | 28 76 6f 69 64 29 0a 58 |:~CmdArg|(void).X|
|00003a80| 7b 0a 58 20 20 20 69 66 | 20 28 61 6c 6c 6f 63 5f |{.X if| (alloc_|
|00003a90| 76 61 6c 75 65 5f 6e 61 | 6d 65 29 20 20 20 20 64 |value_na|me) d|
|00003aa0| 65 6c 65 74 65 20 5b 5d | 20 28 63 68 61 72 20 2a |elete []| (char *|
|00003ab0| 29 61 72 67 5f 76 61 6c | 75 65 5f 6e 61 6d 65 3b |)arg_val|ue_name;|
|00003ac0| 0a 58 7d 0a 58 0a 58 0a | 58 2f 2f 2d 2d 2d 2d 2d |.X}.X.X.|X//-----|
|00003ad0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0a 58 |--------|------.X|
|00003ae0| 2f 2f 20 5e 46 55 4e 43 | 54 49 4f 4e 3a 20 61 64 |// ^FUNC|TION: ad|
|00003af0| 6a 75 73 74 5f 73 79 6e | 74 61 78 20 2d 20 61 64 |just_syn|tax - ad|
|00003b00| 6a 75 73 74 20 63 6f 6d | 6d 61 6e 64 20 61 72 67 |just com|mand arg|
|00003b10| 75 6d 65 6e 74 20 73 79 | 6e 74 61 78 0a 58 2f 2f |ument sy|ntax.X//|
|00003b20| 0a 58 2f 2f 20 5e 53 59 | 4e 4f 50 53 49 53 3a 0a |.X// ^SY|NOPSIS:.|
|00003b30| 58 2f 2f 20 20 20 20 43 | 6d 64 41 72 67 3a 3a 61 |X// C|mdArg::a|
|00003b40| 64 6a 75 73 74 5f 73 79 | 6e 74 61 78 28 76 6f 69 |djust_sy|ntax(voi|
|00003b50| 64 29 0a 58 2f 2f 0a 58 | 2f 2f 20 5e 50 41 52 41 |d).X//.X|// ^PARA|
|00003b60| 4d 45 54 45 52 53 3a 0a | 58 2f 2f 20 20 20 20 4e |METERS:.|X// N|
|00003b70| 6f 6e 65 2e 0a 58 2f 2f | 0a 58 2f 2f 20 5e 44 45 |one..X//|.X// ^DE|
|00003b80| 53 43 52 49 50 54 49 4f | 4e 3a 0a 58 2f 2f 20 20 |SCRIPTIO|N:.X// |
|00003b90| 20 20 54 68 69 73 20 72 | 6f 75 74 69 6e 65 20 74 | This r|outine t|
|00003ba0| 72 69 65 73 20 74 6f 20 | 22 69 72 6f 6e 20 6f 75 |ries to |"iron ou|
|00003bb0| 74 22 20 61 6e 79 20 69 | 6e 63 6f 6e 73 69 73 74 |t" any i|nconsist|
|00003bc0| 65 6e 63 69 65 73 20 28 | 73 75 63 68 20 61 73 0a |encies (|such as.|
|00003bd0| 58 2f 2f 20 20 20 20 63 | 6f 6e 66 6c 69 63 74 69 |X// c|onflicti|
|00003be0| 6e 67 20 73 79 6e 74 61 | 78 20 66 6c 61 67 73 29 |ng synta|x flags)|
|00003bf0| 20 69 6e 20 74 68 65 20 | 77 61 79 20 61 20 63 6f | in the |way a co|
|00003c00| 6d 6d 61 6e 64 2d 61 72 | 67 75 6d 65 6e 74 20 69 |mmand-ar|gument i|
|00003c10| 73 20 73 70 65 63 69 66 | 69 65 64 0a 58 2f 2f 20 |s specif|ied.X// |
|00003c20| 20 20 20 61 6e 64 20 6d | 61 6b 65 73 20 69 74 73 | and m|akes its|
|00003c30| 20 62 65 73 74 20 67 75 | 65 73 73 20 61 74 20 77 | best gu|ess at w|
|00003c40| 68 61 74 20 74 68 65 20 | 75 73 65 72 20 65 61 6c |hat the |user eal|
|00003c50| 6c 79 20 69 6e 74 65 6e | 64 65 64 2e 0a 58 2f 2f |ly inten|ded..X//|
|00003c60| 0a 58 2f 2f 20 5e 52 45 | 51 55 49 52 45 4d 45 4e |.X// ^RE|QUIREMEN|
|00003c70| 54 53 3a 0a 58 2f 2f 20 | 20 20 20 70 61 72 73 65 |TS:.X// | parse|
|00003c80| 5f 76 61 6c 75 65 28 29 | 20 61 6e 64 20 70 61 72 |_value()| and par|
|00003c90| 73 65 5f 64 65 73 63 72 | 69 70 74 69 6f 6e 28 29 |se_descr|iption()|
|00003ca0| 20 6d 75 73 74 20 61 6c | 72 65 61 64 79 20 68 61 | must al|ready ha|
|00003cb0| 76 65 20 62 65 65 6e 20 | 63 61 6c 6c 65 64 2e 0a |ve been |called..|
|00003cc0| 58 2f 2f 0a 58 2f 2f 20 | 5e 53 49 44 45 2d 45 46 |X//.X// |^SIDE-EF|
|00003cd0| 46 45 43 54 53 3a 0a 58 | 2f 2f 20 20 20 20 4d 6f |FECTS:.X|// Mo|
|00003ce0| 64 69 66 69 65 73 20 74 | 68 65 20 61 72 67 75 6d |difies t|he argum|
|00003cf0| 65 6e 74 20 73 79 6e 74 | 61 78 20 66 6c 61 67 73 |ent synt|ax flags|
|00003d00| 2e 0a 58 2f 2f 20 20 20 | 20 4d 6f 64 69 66 69 65 |..X// | Modifie|
|00003d10| 73 20 69 73 20 6b 65 79 | 77 6f 72 64 20 61 6e 64 |s is key|word and|
|00003d20| 20 76 61 6c 75 65 20 6e | 61 6d 65 73 20 69 66 20 | value n|ames if |
|00003d30| 74 68 65 79 20 61 72 65 | 20 22 22 0a 58 2f 2f 0a |they are| "".X//.|
|00003d40| 58 2f 2f 20 5e 52 45 54 | 55 52 4e 2d 56 41 4c 55 |X// ^RET|URN-VALU|
|00003d50| 45 3a 0a 58 2f 2f 20 20 | 20 20 4e 6f 6e 65 2e 0a |E:.X// | None..|
|00003d60| 58 2f 2f 0a 58 2f 2f 20 | 5e 41 4c 47 4f 52 49 54 |X//.X// |^ALGORIT|
|00003d70| 48 4d 3a 0a 58 2f 2f 20 | 20 20 20 46 6f 6c 6c 6f |HM:.X// | Follo|
|00003d80| 77 20 61 6c 6f 6e 67 20 | 69 6e 20 74 68 65 20 63 |w along |in the c|
|00003d90| 6f 64 65 20 2e 2e 2e 0a | 58 2f 2f 2d 5e 5e 2d 2d |ode ....|X//-^^--|
|00003da0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0a 58 |--------|------.X|
|00003db0| 76 6f 69 64 0a 58 43 6d | 64 41 72 67 3a 3a 61 64 |void.XCm|dArg::ad|
|00003dc0| 6a 75 73 74 5f 73 79 6e | 74 61 78 28 76 6f 69 64 |just_syn|tax(void|
|00003dd0| 29 0a 58 7b 0a 58 20 20 | 20 73 74 61 74 69 63 20 |).X{.X | static |
|00003de0| 63 6f 6e 73 74 20 63 68 | 61 72 20 64 65 66 61 75 |const ch|ar defau|
|00003df0| 6c 74 5f 76 61 6c 75 65 | 5f 6e 61 6d 65 5b 5d 20 |lt_value|_name[] |
|00003e00| 3d 20 22 76 61 6c 75 65 | 22 20 3b 0a 58 0a 58 20 |= "value|" ;.X.X |
|00003e10| 20 20 20 20 20 2f 2f 20 | 49 66 20 74 68 65 20 76 | // |If the v|
|00003e20| 61 6c 75 65 20 69 73 20 | 73 70 65 63 69 66 69 65 |alue is |specifie|
|00003e30| 64 20 61 73 20 62 6f 74 | 68 20 4f 50 54 49 4f 4e |d as bot|h OPTION|
|00003e40| 41 4c 20 61 6e 64 20 52 | 45 51 55 49 52 45 44 0a |AL and R|EQUIRED.|
|00003e50| 58 20 20 20 20 20 20 2f | 2f 20 74 68 65 6e 20 61 |X /|/ then a|
|00003e60| 73 73 75 6d 65 20 69 74 | 20 69 73 20 72 65 71 75 |ssume it| is requ|
|00003e70| 69 72 65 64 2e 0a 58 20 | 20 20 20 20 20 2f 2f 0a |ired..X | //.|
|00003e80| 58 20 20 20 69 66 20 28 | 28 61 72 67 5f 73 79 6e |X if (|(arg_syn|
|00003e90| 74 61 78 20 26 20 69 73 | 56 41 4c 52 45 51 29 20 |tax & is|VALREQ) |
|00003ea0| 26 26 20 28 61 72 67 5f | 73 79 6e 74 61 78 20 26 |&& (arg_|syntax &|
|00003eb0| 20 69 73 56 41 4c 4f 50 | 54 29 29 20 7b 0a 58 20 | isVALOP|T)) {.X |
|00003ec0| 20 20 20 20 20 61 72 67 | 5f 73 79 6e 74 61 78 20 | arg|_syntax |
|00003ed0| 26 3d 20 7e 69 73 56 41 | 4c 4f 50 54 20 3b 0a 58 |&= ~isVA|LOPT ;.X|
|00003ee0| 20 20 20 7d 0a 58 0a 58 | 20 20 20 20 20 20 2f 2f | }.X.X| //|
|00003ef0| 20 49 66 20 74 68 65 79 | 20 73 61 69 64 20 74 68 | If they| said th|
|00003f00| 65 20 61 72 67 75 6d 65 | 6e 74 20 77 61 73 20 62 |e argume|nt was b|
|00003f10| 6f 74 68 20 53 54 49 43 | 4b 59 20 61 6e 64 20 53 |oth STIC|KY and S|
|00003f20| 45 50 41 52 41 54 45 20 | 74 68 65 6e 0a 58 20 20 |EPARATE |then.X |
|00003f30| 20 20 20 20 2f 2f 20 49 | 20 64 6f 6e 74 20 6b 6e | // I| dont kn|
|00003f40| 6f 77 20 77 68 61 74 20 | 74 6f 20 74 68 69 6e 6b |ow what |to think|
|00003f50| 20 6a 75 73 74 20 6a 75 | 73 74 20 69 67 6e 6f 72 | just ju|st ignor|
|00003f60| 65 20 62 6f 74 68 20 6f | 66 20 74 68 65 6d 2e 0a |e both o|f them..|
|00003f70| 58 20 20 20 20 20 20 2f | 2f 0a 58 20 20 20 69 66 |X /|/.X if|
|00003f80| 20 28 28 61 72 67 5f 73 | 79 6e 74 61 78 20 26 20 | ((arg_s|yntax & |
|00003f90| 69 73 56 41 4c 53 54 49 | 43 4b 59 29 20 26 26 20 |isVALSTI|CKY) && |
|00003fa0| 28 61 72 67 5f 73 79 6e | 74 61 78 20 26 20 69 73 |(arg_syn|tax & is|
|00003fb0| 56 41 4c 53 45 50 29 29 | 20 7b 0a 58 20 20 20 20 |VALSEP))| {.X |
|00003fc0| 20 20 61 72 67 5f 73 79 | 6e 74 61 78 20 26 3d 20 | arg_sy|ntax &= |
|00003fd0| 7e 28 69 73 56 41 4c 53 | 54 49 43 4b 59 20 7c 20 |~(isVALS|TICKY | |
|00003fe0| 69 73 56 41 4c 53 45 50 | 29 3b 0a 58 20 20 20 7d |isVALSEP|);.X }|
|00003ff0| 0a 58 0a 58 20 20 20 20 | 20 20 2f 2f 20 49 66 20 |.X.X | // If |
|00004000| 61 20 6e 6f 6e 2d 4e 55 | 4c 4c 2c 20 6e 6f 6e 2d |a non-NU|LL, non-|
|00004010| 65 6d 70 74 79 20 76 61 | 6c 75 65 2d 6e 61 6d 65 |empty va|lue-name|
|00004020| 20 77 61 73 20 67 69 76 | 65 6e 20 62 75 74 20 77 | was giv|en but w|
|00004030| 65 20 77 65 72 65 6e 74 | 0a 58 20 20 20 20 20 20 |e werent|.X |
|00004040| 2f 2f 20 74 6f 6c 64 20 | 74 68 61 74 20 74 68 65 |// told |that the|
|00004050| 20 61 72 67 75 6d 65 6e | 74 20 74 61 6b 65 73 20 | argumen|t takes |
|00004060| 61 20 76 61 6c 75 65 2c | 20 74 68 65 6e 20 61 73 |a value,| then as|
|00004070| 73 75 6d 65 20 74 68 61 | 74 20 69 74 0a 58 20 20 |sume tha|t it.X |
|00004080| 20 20 20 20 2f 2f 20 64 | 6f 65 73 20 74 61 6b 65 | // d|oes take|
|00004090| 20 61 20 76 61 6c 75 65 | 20 61 6e 64 20 74 68 61 | a value| and tha|
|000040a0| 74 20 74 68 65 20 76 61 | 6c 75 65 20 69 73 20 72 |t the va|lue is r|
|000040b0| 65 71 75 69 72 65 64 2e | 0a 58 20 20 20 20 20 20 |equired.|.X |
|000040c0| 2f 2f 0a 58 20 20 20 69 | 66 20 28 61 72 67 5f 76 |//.X i|f (arg_v|
|000040d0| 61 6c 75 65 5f 6e 61 6d | 65 20 26 26 20 2a 61 72 |alue_nam|e && *ar|
|000040e0| 67 5f 76 61 6c 75 65 5f | 6e 61 6d 65 20 26 26 20 |g_value_|name && |
|000040f0| 28 21 20 28 61 72 67 5f | 73 79 6e 74 61 78 20 26 |(! (arg_|syntax &|
|00004100| 20 69 73 56 41 4c 54 41 | 4b 45 4e 29 29 29 20 7b | isVALTA|KEN))) {|
|00004110| 0a 58 20 20 20 20 20 20 | 61 72 67 5f 73 79 6e 74 |.X |arg_synt|
|00004120| 61 78 20 7c 3d 20 69 73 | 56 41 4c 52 45 51 3b 0a |ax |= is|VALREQ;.|
|00004130| 58 20 20 20 7d 0a 58 0a | 58 20 20 20 20 20 20 2f |X }.X.|X /|
|00004140| 2f 20 49 66 20 61 20 76 | 61 6c 75 65 20 69 73 20 |/ If a v|alue is |
|00004150| 74 61 6b 65 6e 20 61 6e | 64 20 74 68 65 20 61 72 |taken an|d the ar|
|00004160| 67 75 6d 65 6e 74 20 69 | 73 20 70 6f 73 69 74 69 |gument i|s positi|
|00004170| 6f 6e 61 6c 2c 20 74 68 | 65 6e 0a 58 20 20 20 20 |onal, th|en.X |
|00004180| 20 20 2f 2f 20 77 65 20 | 6e 65 65 64 20 74 6f 20 | // we |need to |
|00004190| 6d 61 6b 65 20 69 73 52 | 45 51 20 61 6e 64 20 69 |make isR|EQ and i|
|000041a0| 73 4f 50 54 20 63 6f 6e | 73 69 73 74 65 6e 74 20 |sOPT con|sistent |
|000041b0| 77 69 74 68 20 69 73 56 | 41 4c 52 45 51 0a 58 20 |with isV|ALREQ.X |
|000041c0| 20 20 20 20 20 2f 2f 20 | 61 6e 64 20 69 73 56 41 | // |and isVA|
|000041d0| 4c 4f 50 54 0a 58 20 20 | 20 20 20 20 2f 2f 0a 58 |LOPT.X | //.X|
|000041e0| 20 20 20 69 66 20 28 28 | 61 72 67 5f 73 79 6e 74 | if ((|arg_synt|
|000041f0| 61 78 20 26 20 69 73 56 | 41 4c 54 41 4b 45 4e 29 |ax & isV|ALTAKEN)|
|00004200| 20 26 26 20 28 61 72 67 | 5f 73 79 6e 74 61 78 20 | && (arg|_syntax |
|00004210| 26 20 69 73 50 4f 53 29 | 29 20 7b 0a 58 20 20 20 |& isPOS)|) {.X |
|00004220| 20 20 20 61 72 67 5f 73 | 79 6e 74 61 78 20 26 3d | arg_s|yntax &=|
|00004230| 20 7e 28 69 73 52 45 51 | 20 7c 20 69 73 4f 50 54 | ~(isREQ| | isOPT|
|00004240| 29 3b 0a 58 20 20 20 20 | 20 20 69 66 20 28 61 72 |);.X | if (ar|
|00004250| 67 5f 73 79 6e 74 61 78 | 20 26 20 69 73 56 41 4c |g_syntax| & isVAL|
|00004260| 52 45 51 29 20 20 61 72 | 67 5f 73 79 6e 74 61 78 |REQ) ar|g_syntax|
|00004270| 20 7c 3d 20 69 73 52 45 | 51 3b 0a 58 20 20 20 20 | |= isRE|Q;.X |
|00004280| 20 20 69 66 20 28 61 72 | 67 5f 73 79 6e 74 61 78 | if (ar|g_syntax|
|00004290| 20 26 20 69 73 56 41 4c | 4f 50 54 29 20 20 61 72 | & isVAL|OPT) ar|
|000042a0| 67 5f 73 79 6e 74 61 78 | 20 7c 3d 20 69 73 4f 50 |g_syntax| |= isOP|
|000042b0| 54 3b 0a 58 20 20 20 7d | 0a 58 0a 58 20 20 20 20 |T;.X }|.X.X |
|000042c0| 20 20 2f 2f 20 49 66 20 | 74 68 65 20 6b 65 79 77 | // If |the keyw|
|000042d0| 6f 72 64 20 6e 61 6d 65 | 20 69 73 20 65 6d 70 74 |ord name| is empt|
|000042e0| 79 20 74 68 65 6e 20 6a | 75 73 74 20 75 73 65 20 |y then j|ust use |
|000042f0| 4e 55 4c 4c 0a 58 20 20 | 20 69 66 20 28 61 72 67 |NULL.X | if (arg|
|00004300| 5f 6b 65 79 77 6f 72 64 | 5f 6e 61 6d 65 20 20 26 |_keyword|_name &|
|00004310| 26 20 20 28 21 20 2a 61 | 72 67 5f 6b 65 79 77 6f |& (! *a|rg_keywo|
|00004320| 72 64 5f 6e 61 6d 65 29 | 29 20 7b 0a 58 20 20 20 |rd_name)|) {.X |
|00004330| 20 20 20 61 72 67 5f 6b | 65 79 77 6f 72 64 5f 6e | arg_k|eyword_n|
|00004340| 61 6d 65 20 3d 20 4e 55 | 4c 4c 3b 0a 58 20 20 20 |ame = NU|LL;.X |
|00004350| 7d 0a 58 0a 58 20 20 20 | 20 20 20 2f 2f 20 49 66 |}.X.X | // If|
|00004360| 20 74 68 65 20 76 61 6c | 75 65 20 6e 61 6d 65 20 | the val|ue name |
|00004370| 69 73 20 65 6d 70 74 79 | 20 74 68 65 6e 20 6a 75 |is empty| then ju|
|00004380| 73 74 20 75 73 65 20 4e | 55 4c 4c 0a 58 20 20 20 |st use N|ULL.X |
|00004390| 69 66 20 28 61 72 67 5f | 76 61 6c 75 65 5f 6e 61 |if (arg_|value_na|
|000043a0| 6d 65 20 20 26 26 20 20 | 28 21 20 2a 61 72 67 5f |me && |(! *arg_|
|000043b0| 76 61 6c 75 65 5f 6e 61 | 6d 65 29 29 20 7b 0a 58 |value_na|me)) {.X|
|000043c0| 20 20 20 20 20 20 61 72 | 67 5f 76 61 6c 75 65 5f | ar|g_value_|
|000043d0| 6e 61 6d 65 20 3d 20 4e | 55 4c 4c 3b 0a 58 20 20 |name = N|ULL;.X |
|000043e0| 20 7d 0a 58 0a 58 20 20 | 20 20 20 20 2f 2f 20 49 | }.X.X | // I|
|000043f0| 66 20 61 20 76 61 6c 75 | 65 20 69 73 20 74 61 6b |f a valu|e is tak|
|00004400| 65 6e 20 62 75 74 20 6e | 6f 20 76 61 6c 75 65 20 |en but n|o value |
|00004410| 6e 61 6d 65 20 77 61 73 | 20 67 69 76 65 6e 2c 0a |name was| given,.|
|00004420| 58 20 20 20 20 20 20 2f | 2f 20 74 68 65 6e 20 64 |X /|/ then d|
|00004430| 65 66 61 75 6c 74 20 74 | 68 65 20 76 61 6c 75 65 |efault t|he value|
|00004440| 20 6e 61 6d 65 2e 0a 58 | 20 20 20 20 20 20 2f 2f | name..X| //|
|00004450| 0a 58 20 20 20 69 66 20 | 28 28 61 72 67 5f 73 79 |.X if |((arg_sy|
|00004460| 6e 74 61 78 20 26 20 69 | 73 56 41 4c 54 41 4b 45 |ntax & i|sVALTAKE|
|00004470| 4e 29 20 26 26 20 28 21 | 20 61 72 67 5f 76 61 6c |N) && (!| arg_val|
|00004480| 75 65 5f 6e 61 6d 65 29 | 29 20 7b 0a 58 20 20 20 |ue_name)|) {.X |
|00004490| 20 20 20 61 72 67 5f 76 | 61 6c 75 65 5f 6e 61 6d | arg_v|alue_nam|
|000044a0| 65 20 3d 20 64 65 66 61 | 75 6c 74 5f 76 61 6c 75 |e = defa|ult_valu|
|000044b0| 65 5f 6e 61 6d 65 3b 0a | 58 20 20 20 7d 0a 58 0a |e_name;.|X }.X.|
|000044c0| 58 20 20 20 20 20 20 2f | 2f 20 49 66 20 6e 6f 20 |X /|/ If no |
|000044d0| 6b 65 79 77 6f 72 64 20 | 6e 61 6d 65 20 6f 72 20 |keyword |name or |
|000044e0| 63 68 61 72 61 63 74 65 | 72 20 6e 61 6d 65 20 77 |characte|r name w|
|000044f0| 61 73 20 67 69 76 65 6e | 2c 20 74 68 65 6e 20 74 |as given|, then t|
|00004500| 68 65 0a 58 20 20 20 20 | 20 20 2f 2f 20 61 72 67 |he.X | // arg|
|00004510| 75 6d 65 6e 74 20 68 61 | 64 20 62 65 74 74 65 72 |ument ha|d better|
|00004520| 20 74 61 6b 65 20 61 20 | 76 61 6c 75 65 20 61 6e | take a |value an|
|00004530| 64 20 69 74 20 6d 75 73 | 74 20 62 65 20 70 6f 73 |d it mus|t be pos|
|00004540| 69 74 69 6f 6e 61 6c 0a | 58 20 20 20 20 20 20 2f |itional.|X /|
|00004550| 2f 0a 58 20 20 20 69 66 | 20 28 28 21 20 61 72 67 |/.X if| ((! arg|
|00004560| 5f 63 68 61 72 5f 6e 61 | 6d 65 29 20 26 26 20 28 |_char_na|me) && (|
|00004570| 61 72 67 5f 6b 65 79 77 | 6f 72 64 5f 6e 61 6d 65 |arg_keyw|ord_name|
|00004580| 20 3d 3d 20 4e 55 4c 4c | 29 20 26 26 0a 58 20 20 | == NULL|) &&.X |
|00004590| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000045a0| 20 20 20 20 20 20 20 20 | 20 20 28 21 20 28 61 72 | | (! (ar|
|000045b0| 67 5f 73 79 6e 74 61 78 | 20 26 20 69 73 50 4f 53 |g_syntax| & isPOS|
|000045c0| 29 29 29 20 7b 0a 58 20 | 20 20 20 20 20 69 66 20 |))) {.X | if |
|000045d0| 28 61 72 67 5f 73 79 6e | 74 61 78 20 26 20 69 73 |(arg_syn|tax & is|
|000045e0| 56 41 4c 54 41 4b 45 4e | 29 20 7b 0a 58 20 20 20 |VALTAKEN|) {.X |
|000045f0| 20 20 20 20 20 20 61 72 | 67 5f 73 79 6e 74 61 78 | ar|g_syntax|
|00004600| 20 7c 3d 20 69 73 50 4f | 53 3b 0a 58 20 20 20 20 | |= isPO|S;.X |
|00004610| 20 20 7d 20 65 6c 73 65 | 20 7b 0a 58 20 20 20 20 | } else| {.X |
|00004620| 20 20 20 20 20 63 65 72 | 72 20 3c 3c 20 22 2a 2a | cer|r << "**|
|00004630| 2a 20 45 72 72 6f 72 3a | 20 6e 6f 6e 2d 70 6f 73 |* Error:| non-pos|
|00004640| 69 74 69 6f 6e 61 6c 20 | 43 6d 64 41 72 67 20 22 |itional |CmdArg "|
|00004650| 0a 58 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |.X | |
|00004660| 3c 3c 20 22 68 61 73 20 | 6e 6f 20 63 68 61 72 61 |<< "has |no chara|
|00004670| 63 74 65 72 20 6f 72 20 | 6b 65 79 77 6f 72 64 20 |cter or |keyword |
|00004680| 6e 61 6d 65 21 5c 6e 22 | 0a 58 20 20 20 20 20 20 |name!\n"|.X |
|00004690| 20 20 20 20 20 20 20 20 | 3c 3c 20 22 5c 74 28 65 | |<< "\t(e|
|000046a0| 72 72 6f 72 20 6f 63 63 | 75 72 72 65 64 20 69 6e |rror occ|urred in|
|000046b0| 20 43 6d 64 41 72 67 20 | 63 6f 6e 73 74 72 75 63 | CmdArg |construc|
|000046c0| 74 6f 72 29 22 20 3c 3c | 20 65 6e 64 6c 20 3b 0a |tor)" <<| endl ;.|
|000046d0| 58 20 20 20 20 20 20 7d | 0a 58 20 20 20 7d 0a 58 |X }|.X }.X|
|000046e0| 7d 0a 58 0a 58 0a 58 2f | 2f 2d 2d 2d 2d 2d 2d 2d |}.X.X.X/|/-------|
|000046f0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0a 58 2f 2f |--------|----.X//|
|00004700| 20 5e 46 55 4e 43 54 49 | 4f 4e 3a 20 70 61 72 73 | ^FUNCTI|ON: pars|
|00004710| 65 5f 64 65 73 63 72 69 | 70 74 69 6f 6e 20 2d 20 |e_descri|ption - |
|00004720| 70 61 72 73 65 20 74 68 | 65 20 61 72 67 75 6d 65 |parse th|e argume|
|00004730| 6e 74 20 64 65 73 63 72 | 69 70 74 69 6f 6e 20 73 |nt descr|iption s|
|00004740| 74 72 69 6e 67 0a 58 2f | 2f 0a 58 2f 2f 20 5e 53 |tring.X/|/.X// ^S|
|00004750| 59 4e 4f 50 53 49 53 3a | 0a 58 2f 2f 20 20 20 20 |YNOPSIS:|.X// |
|00004760| 43 6d 64 4c 69 6e 65 3a | 3a 70 61 72 73 65 5f 64 |CmdLine:|:parse_d|
|00004770| 65 73 63 72 69 70 74 69 | 6f 6e 28 76 6f 69 64 29 |escripti|on(void)|
|00004780| 0a 58 2f 2f 0a 58 2f 2f | 20 5e 50 41 52 41 4d 45 |.X//.X//| ^PARAME|
|00004790| 54 45 52 53 3a 0a 58 2f | 2f 20 20 20 20 4e 6f 6e |TERS:.X/|/ Non|
|000047a0| 65 2e 0a 58 2f 2f 0a 58 | 2f 2f 20 5e 44 45 53 43 |e..X//.X|// ^DESC|
|000047b0| 52 49 50 54 49 4f 4e 3a | 0a 58 2f 2f 20 20 20 20 |RIPTION:|.X// |
|000047c0| 41 6c 6c 20 77 65 20 68 | 61 76 65 20 74 6f 20 64 |All we h|ave to d|
|000047d0| 6f 20 69 73 20 73 65 65 | 20 69 66 20 74 68 65 20 |o is see| if the |
|000047e0| 66 69 72 73 74 20 6e 6f | 6e 2d 77 68 69 74 65 20 |first no|n-white |
|000047f0| 63 68 61 72 61 63 74 65 | 72 20 6f 66 0a 58 2f 2f |characte|r of.X//|
|00004800| 20 20 20 20 74 68 65 20 | 64 65 73 63 72 69 70 74 | the |descript|
|00004810| 69 6f 6e 20 69 73 20 73 | 74 72 69 6e 67 20 69 73 |ion is s|tring is|
|00004820| 20 27 3b 27 2e 20 49 66 | 20 69 74 20 69 73 2c 20 | ';'. If| it is, |
|00004830| 74 68 65 6e 20 74 68 65 | 20 61 72 67 75 6d 65 6e |then the| argumen|
|00004840| 74 0a 58 2f 2f 20 20 20 | 20 69 73 20 61 20 22 68 |t.X// | is a "h|
|00004850| 69 64 64 65 6e 22 20 61 | 72 67 75 6d 65 6e 74 20 |idden" a|rgument |
|00004860| 61 6e 64 20 74 68 65 20 | 64 65 73 63 72 69 70 74 |and the |descript|
|00004870| 69 6f 6e 20 73 74 61 72 | 74 73 20 77 69 74 68 20 |ion star|ts with |
|00004880| 74 68 65 0a 58 2f 2f 20 | 20 20 20 6e 65 78 74 20 |the.X// | next |
|00004890| 6e 6f 6e 2d 77 68 69 74 | 65 20 63 68 61 72 61 63 |non-whit|e charac|
|000048a0| 74 65 72 2e 0a 58 2f 2f | 0a 58 2f 2f 20 5e 52 45 |ter..X//|.X// ^RE|
|000048b0| 51 55 49 52 45 4d 45 4e | 54 53 3a 0a 58 2f 2f 20 |QUIREMEN|TS:.X// |
|000048c0| 20 20 20 4e 6f 6e 65 2e | 0a 58 2f 2f 0a 58 2f 2f | None.|.X//.X//|
|000048d0| 20 5e 53 49 44 45 2d 45 | 46 46 45 43 54 53 3a 0a | ^SIDE-E|FFECTS:.|
|000048e0| 58 2f 2f 20 20 20 20 4d | 6f 64 69 66 69 65 73 20 |X// M|odifies |
|000048f0| 61 72 67 5f 64 65 73 63 | 72 69 70 74 69 6f 6e 0a |arg_desc|ription.|
|00004900| 58 2f 2f 0a 58 2f 2f 20 | 5e 52 45 54 55 52 4e 2d |X//.X// |^RETURN-|
|00004910| 56 41 4c 55 45 3a 0a 58 | 2f 2f 20 20 20 20 4e 6f |VALUE:.X|// No|
|00004920| 6e 65 2e 0a 58 2f 2f 0a | 58 2f 2f 20 5e 41 4c 47 |ne..X//.|X// ^ALG|
|00004930| 4f 52 49 54 48 4d 3a 0a | 58 2f 2f 20 20 20 20 54 |ORITHM:.|X// T|
|00004940| 72 69 76 69 61 6c 2e 0a | 58 2f 2f 2d 5e 5e 2d 2d |rivial..|X//-^^--|
|00004950| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0a 58 |--------|------.X|
|00004960| 65 6e 75 6d 20 7b 20 63 | 5f 48 49 44 44 45 4e 20 |enum { c|_HIDDEN |
|00004970| 3d 20 27 3b 27 2c 20 63 | 5f 4f 50 45 4e 20 3d 20 |= ';', c|_OPEN = |
|00004980| 27 5b 27 2c 20 63 5f 43 | 4c 4f 53 45 20 3d 20 27 |'[', c_C|LOSE = '|
|00004990| 5d 27 2c 20 63 5f 4c 49 | 53 54 20 3d 20 27 2e 27 |]', c_LI|ST = '.'|
|000049a0| 20 7d 20 3b 0a 58 0a 58 | 76 6f 69 64 0a 58 43 6d | } ;.X.X|void.XCm|
|000049b0| 64 41 72 67 3a 3a 70 61 | 72 73 65 5f 64 65 73 63 |dArg::pa|rse_desc|
|000049c0| 72 69 70 74 69 6f 6e 28 | 76 6f 69 64 29 0a 58 7b |ription(|void).X{|
|000049d0| 0a 58 20 20 20 69 66 20 | 28 61 72 67 5f 64 65 73 |.X if |(arg_des|
|000049e0| 63 72 69 70 74 69 6f 6e | 20 3d 3d 20 4e 55 4c 4c |cription| == NULL|
|000049f0| 29 20 20 72 65 74 75 72 | 6e 3b 0a 58 20 20 20 77 |) retur|n;.X w|
|00004a00| 68 69 6c 65 20 28 69 73 | 73 70 61 63 65 28 2a 61 |hile (is|space(*a|
|00004a10| 72 67 5f 64 65 73 63 72 | 69 70 74 69 6f 6e 29 29 |rg_descr|iption))|
|00004a20| 20 20 2b 2b 61 72 67 5f | 64 65 73 63 72 69 70 74 | ++arg_|descript|
|00004a30| 69 6f 6e 3b 0a 58 20 20 | 20 69 66 20 28 2a 61 72 |ion;.X | if (*ar|
|00004a40| 67 5f 64 65 73 63 72 69 | 70 74 69 6f 6e 20 3d 3d |g_descri|ption ==|
|00004a50| 20 63 5f 48 49 44 44 45 | 4e 29 20 7b 0a 58 20 20 | c_HIDDE|N) {.X |
|00004a60| 20 20 20 20 61 72 67 5f | 73 79 6e 74 61 78 20 7c | arg_|syntax ||
|00004a70| 3d 20 69 73 48 49 44 44 | 45 4e 20 3b 0a 58 20 20 |= isHIDD|EN ;.X |
|00004a80| 20 20 20 20 2b 2b 61 72 | 67 5f 64 65 73 63 72 69 | ++ar|g_descri|
|00004a90| 70 74 69 6f 6e 3b 0a 58 | 20 20 20 20 20 20 77 68 |ption;.X| wh|
|00004aa0| 69 6c 65 20 28 69 73 73 | 70 61 63 65 28 2a 61 72 |ile (iss|pace(*ar|
|00004ab0| 67 5f 64 65 73 63 72 69 | 70 74 69 6f 6e 29 29 20 |g_descri|ption)) |
|00004ac0| 20 2b 2b 61 72 67 5f 64 | 65 73 63 72 69 70 74 69 | ++arg_d|escripti|
|00004ad0| 6f 6e 3b 0a 58 20 20 20 | 7d 0a 58 7d 0a 58 0a 58 |on;.X |}.X}.X.X|
|00004ae0| 0a 58 2f 2f 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |.X//----|--------|
|00004af0| 2d 2d 2d 2d 2d 2d 2d 0a | 58 2f 2f 20 5e 46 55 4e |-------.|X// ^FUN|
|00004b00| 43 54 49 4f 4e 3a 20 70 | 61 72 73 65 5f 76 61 6c |CTION: p|arse_val|
|00004b10| 75 65 20 2d 20 70 61 72 | 73 65 20 74 68 65 20 61 |ue - par|se the a|
|00004b20| 72 67 75 6d 65 6e 74 20 | 76 61 6c 75 65 20 6e 61 |rgument |value na|
|00004b30| 6d 65 0a 58 2f 2f 0a 58 | 2f 2f 20 5e 53 59 4e 4f |me.X//.X|// ^SYNO|
|00004b40| 50 53 49 53 3a 0a 58 2f | 2f 20 20 20 20 43 6d 64 |PSIS:.X/|/ Cmd|
|00004b50| 4c 69 6e 65 3a 3a 70 61 | 72 73 65 5f 76 61 6c 75 |Line::pa|rse_valu|
|00004b60| 65 28 76 6f 69 64 29 0a | 58 2f 2f 0a 58 2f 2f 20 |e(void).|X//.X// |
|00004b70| 5e 50 41 52 41 4d 45 54 | 45 52 53 3a 0a 58 2f 2f |^PARAMET|ERS:.X//|
|00004b80| 20 20 20 20 4e 6f 6e 65 | 2e 0a 58 2f 2f 0a 58 2f | None|..X//.X/|
|00004b90| 2f 20 5e 44 45 53 43 52 | 49 50 54 49 4f 4e 3a 0a |/ ^DESCR|IPTION:.|
|00004ba0| 58 2f 2f 20 20 20 20 54 | 68 69 73 20 72 6f 75 74 |X// T|his rout|
|00004bb0| 69 6e 65 20 70 61 72 73 | 65 73 20 74 68 65 20 61 |ine pars|es the a|
|00004bc0| 72 67 75 6d 65 6e 74 20 | 76 61 6c 75 65 20 73 74 |rgument |value st|
|00004bd0| 72 69 6e 67 2e 20 49 66 | 20 74 68 65 20 76 61 6c |ring. If| the val|
|00004be0| 75 65 20 6e 61 6d 65 20 | 69 73 0a 58 2f 2f 20 20 |ue name |is.X// |
|00004bf0| 20 20 69 73 20 65 6e 63 | 6c 6f 73 65 64 20 62 65 | is enc|losed be|
|00004c00| 74 77 65 65 6e 20 27 5b | 27 20 61 6e 64 20 27 5d |tween '[|' and ']|
|00004c10| 27 2c 20 74 68 65 6e 20 | 74 68 65 20 76 61 6c 75 |', then |the valu|
|00004c20| 65 20 69 73 20 6f 70 74 | 69 6f 6e 61 6c 20 28 6e |e is opt|ional (n|
|00004c30| 6f 74 0a 58 2f 2f 20 20 | 20 20 72 65 71 75 69 72 |ot.X// | requir|
|00004c40| 65 64 29 20 61 6e 64 20 | 77 65 20 6e 65 65 64 20 |ed) and |we need |
|00004c50| 74 6f 20 6d 6f 64 69 66 | 79 20 74 68 65 20 61 72 |to modif|y the ar|
|00004c60| 67 5f 73 79 6e 74 61 78 | 20 66 6c 61 67 73 2e 20 |g_syntax| flags. |
|00004c70| 41 6c 73 6f 2c 20 69 66 | 20 74 68 65 0a 58 2f 2f |Also, if| the.X//|
|00004c80| 20 20 20 20 76 61 6c 75 | 65 20 6e 61 6d 65 20 69 | valu|e name i|
|00004c90| 73 20 73 75 66 66 69 78 | 65 64 20 62 79 20 22 2e |s suffix|ed by ".|
|00004ca0| 2e 2e 22 20 74 68 65 6e | 20 69 74 20 6d 65 61 6e |.." then| it mean|
|00004cb0| 73 20 74 68 65 20 76 61 | 6c 75 65 20 69 73 20 61 |s the va|lue is a|
|00004cc0| 20 4c 49 53 54 0a 58 2f | 2f 20 20 20 20 6f 66 20 | LIST.X/|/ of |
|00004cd0| 76 61 6c 75 65 73 20 61 | 6e 64 20 77 65 20 6e 65 |values a|nd we ne|
|00004ce0| 65 64 20 74 6f 20 6d 6f | 64 69 66 79 20 74 68 65 |ed to mo|dify the|
|00004cf0| 20 61 72 67 5f 73 79 6e | 74 61 78 20 66 6c 61 67 | arg_syn|tax flag|
|00004d00| 73 2e 0a 58 2f 2f 0a 58 | 2f 2f 20 5e 52 45 51 55 |s..X//.X|// ^REQU|
|00004d10| 49 52 45 4d 45 4e 54 53 | 3a 0a 58 2f 2f 20 20 20 |IREMENTS|:.X// |
|00004d20| 20 54 68 69 73 20 72 6f | 75 74 69 6e 65 20 6d 75 | This ro|utine mu|
|00004d30| 73 74 20 62 65 20 63 61 | 6c 6c 65 64 20 42 45 46 |st be ca|lled BEF|
|00004d40| 4f 52 45 2c 20 61 64 6a | 75 73 74 5f 73 79 6e 74 |ORE, adj|ust_synt|
|00004d50| 61 78 28 29 20 69 73 20 | 63 61 6c 6c 65 64 2f 0a |ax() is |called/.|
|00004d60| 58 2f 2f 0a 58 2f 2f 20 | 5e 53 49 44 45 2d 45 46 |X//.X// |^SIDE-EF|
|00004d70| 46 45 43 54 53 3a 0a 58 | 2f 2f 20 20 20 20 4d 6f |FECTS:.X|// Mo|
|00004d80| 64 69 66 69 65 73 20 74 | 68 65 20 61 72 67 5f 76 |difies t|he arg_v|
|00004d90| 61 6c 75 65 5f 6e 61 6d | 65 20 61 6e 64 20 74 68 |alue_nam|e and th|
|00004da0| 65 20 61 72 67 5f 73 79 | 6e 74 61 78 20 66 6c 61 |e arg_sy|ntax fla|
|00004db0| 67 73 2e 0a 58 2f 2f 0a | 58 2f 2f 20 5e 52 45 54 |gs..X//.|X// ^RET|
|00004dc0| 55 52 4e 2d 56 41 4c 55 | 45 3a 0a 58 2f 2f 20 20 |URN-VALU|E:.X// |
|00004dd0| 20 20 4e 6f 6e 65 2e 0a | 58 2f 2f 0a 58 2f 2f 20 | None..|X//.X// |
|00004de0| 5e 41 4c 47 4f 52 49 54 | 48 4d 3a 0a 58 2f 2f 20 |^ALGORIT|HM:.X// |
|00004df0| 20 20 20 49 74 73 20 6b | 69 6e 64 20 6f 66 20 68 | Its k|ind of h|
|00004e00| 61 69 72 79 20 73 6f 20 | 66 6f 6c 6c 6f 77 20 61 |airy so |follow a|
|00004e10| 6c 6f 6e 67 2e 0a 58 2f | 2f 2d 5e 5e 2d 2d 2d 2d |long..X/|/-^^----|
|00004e20| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 0a 58 76 6f |--------|----.Xvo|
|00004e30| 69 64 0a 58 43 6d 64 41 | 72 67 3a 3a 70 61 72 73 |id.XCmdA|rg::pars|
|00004e40| 65 5f 76 61 6c 75 65 28 | 76 6f 69 64 29 0a 58 7b |e_value(|void).X{|
|00004e50| 0a 58 20 20 20 63 6f 6e | 73 74 20 63 68 61 72 20 |.X con|st char |
|00004e60| 2a 20 73 61 76 65 5f 76 | 61 6c 75 65 20 3d 20 61 |* save_v|alue = a|
|00004e70| 72 67 5f 76 61 6c 75 65 | 5f 6e 61 6d 65 3b 0a 58 |rg_value|_name;.X|
|00004e80| 20 20 20 69 6e 74 20 20 | 62 72 61 63 65 20 3d 20 | int |brace = |
|00004e90| 30 3b 0a 58 20 20 20 69 | 6e 74 20 20 65 72 72 6f |0;.X i|nt erro|
|00004ea0| 72 73 20 3d 20 30 3b 0a | 58 0a 58 20 20 20 2f 2f |rs = 0;.|X.X //|
|00004eb0| 20 53 6b 69 70 20 77 68 | 69 74 65 73 70 61 63 65 | Skip wh|itespace|
|00004ec0| 20 61 73 20 6e 65 63 65 | 73 73 61 72 79 20 61 6e | as nece|ssary an|
|00004ed0| 64 20 6c 6f 6f 6b 20 66 | 6f 72 20 61 20 27 5b 27 |d look f|or a '['|
|00004ee0| 0a 58 20 20 20 77 68 69 | 6c 65 20 28 69 73 73 70 |.X whi|le (issp|
|00004ef0| 61 63 65 28 2a 61 72 67 | 5f 76 61 6c 75 65 5f 6e |ace(*arg|_value_n|
|00004f00| 61 6d 65 29 29 20 20 2b | 2b 61 72 67 5f 76 61 6c |ame)) +|+arg_val|
|00004f10| 75 65 5f 6e 61 6d 65 3b | 0a 58 20 20 20 69 66 20 |ue_name;|.X if |
|00004f20| 28 2a 61 72 67 5f 76 61 | 6c 75 65 5f 6e 61 6d 65 |(*arg_va|lue_name|
|00004f30| 20 3d 3d 20 63 5f 4f 50 | 45 4e 29 20 7b 0a 58 20 | == c_OP|EN) {.X |
|00004f40| 20 20 20 20 20 2b 2b 62 | 72 61 63 65 3b 0a 58 20 | ++b|race;.X |
|00004f50| 20 20 20 20 20 2b 2b 61 | 72 67 5f 76 61 6c 75 65 | ++a|rg_value|
|00004f60| 5f 6e 61 6d 65 3b 0a 58 | 20 20 20 20 20 20 77 68 |_name;.X| wh|
|00004f70| 69 6c 65 20 28 69 73 73 | 70 61 63 65 28 2a 61 72 |ile (iss|pace(*ar|
|00004f80| 67 5f 76 61 6c 75 65 5f | 6e 61 6d 65 29 29 20 20 |g_value_|name)) |
|00004f90| 2b 2b 61 72 67 5f 76 61 | 6c 75 65 5f 6e 61 6d 65 |++arg_va|lue_name|
|00004fa0| 3b 0a 58 20 20 20 20 20 | 20 61 72 67 5f 73 79 6e |;.X | arg_syn|
|00004fb0| 74 61 78 20 26 3d 20 7e | 69 73 56 41 4c 52 45 51 |tax &= ~|isVALREQ|
|00004fc0| 3b 0a 58 20 20 20 20 20 | 20 61 72 67 5f 73 79 6e |;.X | arg_syn|
|00004fd0| 74 61 78 20 7c 3d 20 69 | 73 56 41 4c 4f 50 54 3b |tax |= i|sVALOPT;|
|00004fe0| 0a 58 20 20 20 7d 0a 58 | 0a 58 20 20 20 2f 2f 20 |.X }.X|.X // |
|00004ff0| 4e 6f 77 20 74 68 61 74 | 20 61 72 67 5f 76 61 6c |Now that| arg_val|
|00005000| 75 65 5f 6e 61 6d 65 20 | 70 6f 69 6e 74 73 20 74 |ue_name |points t|
|00005010| 6f 20 74 68 65 20 62 65 | 67 69 6e 6e 69 6e 67 20 |o the be|ginning |
|00005020| 6f 66 20 74 68 65 20 76 | 61 6c 75 65 2c 0a 58 20 |of the v|alue,.X |
|00005030| 20 20 2f 2f 20 6c 65 74 | 73 20 66 69 6e 64 20 74 | // let|s find t|
|00005040| 68 65 20 65 6e 64 20 6f | 66 20 69 74 2e 0a 58 20 |he end o|f it..X |
|00005050| 20 20 2f 2f 0a 58 20 20 | 20 63 6f 6e 73 74 20 63 | //.X | const c|
|00005060| 68 61 72 20 2a 20 70 74 | 72 20 3d 20 61 72 67 5f |har * pt|r = arg_|
|00005070| 76 61 6c 75 65 5f 6e 61 | 6d 65 3b 0a 58 20 20 20 |value_na|me;.X |
|00005080| 77 68 69 6c 65 20 28 28 | 2a 70 74 72 29 20 26 26 |while ((|*ptr) &&|
|00005090| 20 28 21 20 69 73 73 70 | 61 63 65 28 2a 70 74 72 | (! issp|ace(*ptr|
|000050a0| 29 29 20 26 26 0a 58 20 | 20 20 20 20 20 20 20 20 |)) &&.X | |
|000050b0| 20 28 2a 70 74 72 20 21 | 3d 20 63 5f 4c 49 53 54 | (*ptr !|= c_LIST|
|000050c0| 29 20 26 26 20 28 2a 70 | 74 72 20 21 3d 20 63 5f |) && (*p|tr != c_|
|000050d0| 43 4c 4f 53 45 29 29 20 | 7b 0a 58 20 20 20 20 20 |CLOSE)) |{.X |
|000050e0| 20 2b 2b 70 74 72 3b 0a | 58 20 20 20 7d 0a 58 0a | ++ptr;.|X }.X.|
|000050f0| 58 20 20 20 2f 2f 20 53 | 65 65 20 69 66 20 77 65 |X // S|ee if we|
|00005100| 20 64 6f 6e 74 20 6e 65 | 65 64 20 74 6f 20 61 6c | dont ne|ed to al|
|00005110| 6c 6f 63 61 74 65 20 61 | 20 6e 65 77 20 73 74 72 |locate a| new str|
|00005120| 69 6e 67 0a 58 20 20 20 | 69 66 20 28 28 21 20 2a |ing.X |if ((! *|
|00005130| 70 74 72 29 20 26 26 20 | 28 73 61 76 65 5f 76 61 |ptr) && |(save_va|
|00005140| 6c 75 65 20 3d 3d 20 61 | 72 67 5f 76 61 6c 75 65 |lue == a|rg_value|
|00005150| 5f 6e 61 6d 65 29 29 20 | 20 72 65 74 75 72 6e 3b |_name)) | return;|
|00005160| 0a 58 0a 58 20 20 20 2f | 2f 20 43 6f 70 79 20 74 |.X.X /|/ Copy t|
|00005170| 68 65 20 76 61 6c 75 65 | 20 6e 61 6d 65 0a 58 20 |he value| name.X |
|00005180| 20 20 61 6c 6c 6f 63 5f | 76 61 6c 75 65 5f 6e 61 | alloc_|value_na|
|00005190| 6d 65 20 3d 20 31 3b 0a | 58 20 20 20 69 6e 74 20 |me = 1;.|X int |
|000051a0| 20 6c 65 6e 20 3d 20 28 | 69 6e 74 29 20 28 70 74 | len = (|int) (pt|
|000051b0| 72 20 2d 20 61 72 67 5f | 76 61 6c 75 65 5f 6e 61 |r - arg_|value_na|
|000051c0| 6d 65 29 3b 0a 58 20 20 | 20 63 68 61 72 20 2a 20 |me);.X | char * |
|000051d0| 63 6f 70 69 65 64 5f 76 | 61 6c 75 65 20 3d 20 6e |copied_v|alue = n|
|000051e0| 65 77 20 63 68 61 72 5b | 6c 65 6e 20 2b 20 31 5d |ew char[|len + 1]|
|000051f0| 3b 0a 58 20 20 20 28 76 | 6f 69 64 29 20 3a 3a 73 |;.X (v|oid) ::s|
|00005200| 74 72 6e 63 70 79 28 63 | 6f 70 69 65 64 5f 76 61 |trncpy(c|opied_va|
|00005210| 6c 75 65 2c 20 61 72 67 | 5f 76 61 6c 75 65 5f 6e |lue, arg|_value_n|
|00005220| 61 6d 65 2c 20 6c 65 6e | 29 3b 0a 58 20 20 20 63 |ame, len|);.X c|
|00005230| 6f 70 69 65 64 5f 76 61 | 6c 75 65 5b 6c 65 6e 5d |opied_va|lue[len]|
|00005240| 20 3d 20 27 5c 30 27 3b | 0a 58 20 20 20 61 72 67 | = '\0';|.X arg|
|00005250| 5f 76 61 6c 75 65 5f 6e | 61 6d 65 20 3d 20 63 6f |_value_n|ame = co|
|00005260| 70 69 65 64 5f 76 61 6c | 75 65 3b 0a 58 0a 58 20 |pied_val|ue;.X.X |
|00005270| 20 20 2f 2f 20 44 69 64 | 20 77 65 20 65 6e 64 20 | // Did| we end |
|00005280| 6f 6e 20 61 20 27 5d 27 | 20 3f 0a 58 20 20 20 69 |on a ']'| ?.X i|
|00005290| 66 20 28 2a 70 74 72 20 | 3d 3d 20 63 5f 43 4c 4f |f (*ptr |== c_CLO|
|000052a0| 53 45 29 20 7b 0a 58 20 | 20 20 20 20 20 69 66 20 |SE) {.X | if |
|000052b0| 28 21 20 62 72 61 63 65 | 29 20 7b 0a 58 20 20 20 |(! brace|) {.X |
|000052c0| 20 20 20 20 20 20 63 65 | 72 72 20 3c 3c 20 22 45 | ce|rr << "E|
|000052d0| 72 72 6f 72 3a 20 75 6e | 6d 61 74 63 68 65 64 20 |rror: un|matched |
|000052e0| 27 22 20 3c 3c 20 63 68 | 61 72 28 63 5f 43 4c 4f |'" << ch|ar(c_CLO|
|000052f0| 53 45 29 20 3c 3c 20 22 | 27 2e 22 20 3c 3c 20 65 |SE) << "|'." << e|
|00005300| 6e 64 6c 20 3b 0a 58 20 | 20 20 20 20 20 20 20 20 |ndl ;.X | |
|00005310| 2b 2b 65 72 72 6f 72 73 | 3b 0a 58 20 20 20 20 20 |++errors|;.X |
|00005320| 20 20 20 20 61 72 67 5f | 73 79 6e 74 61 78 20 26 | arg_|syntax &|
|00005330| 3d 20 7e 69 73 56 41 4c | 52 45 51 3b 0a 58 20 20 |= ~isVAL|REQ;.X |
|00005340| 20 20 20 20 20 20 20 61 | 72 67 5f 73 79 6e 74 61 | a|rg_synta|
|00005350| 78 20 7c 3d 20 69 73 56 | 41 4c 4f 50 54 3b 0a 58 |x |= isV|ALOPT;.X|
|00005360| 20 20 20 20 20 20 7d 0a | 58 20 20 20 20 20 20 62 | }.|X b|
|00005370| 72 61 63 65 20 3d 20 30 | 3b 0a 58 20 20 20 20 20 |race = 0|;.X |
|00005380| 20 2b 2b 70 74 72 3b 0a | 58 20 20 20 7d 0a 58 0a | ++ptr;.|X }.X.|
|00005390| 58 20 20 20 2f 2f 20 53 | 6b 69 70 20 77 68 69 74 |X // S|kip whit|
|000053a0| 65 73 70 61 63 65 20 61 | 6e 64 20 73 65 65 20 69 |espace a|nd see i|
|000053b0| 66 20 77 65 20 61 72 65 | 20 66 69 6e 69 73 68 65 |f we are| finishe|
|000053c0| 64 2e 0a 58 20 20 20 77 | 68 69 6c 65 20 28 69 73 |d..X w|hile (is|
|000053d0| 73 70 61 63 65 28 2a 70 | 74 72 29 29 20 20 2b 2b |space(*p|tr)) ++|
|000053e0| 70 74 72 3b 0a 58 20 20 | 20 69 66 20 28 21 20 2a |ptr;.X | if (! *|
|000053f0| 70 74 72 29 20 7b 0a 58 | 20 20 20 20 20 20 2f 2f |ptr) {.X| //|
|00005400| 20 57 61 73 20 74 68 65 | 72 65 20 61 6e 20 75 6e | Was the|re an un|
|00005410| 6d 61 74 63 68 65 64 20 | 27 5d 27 0a 58 20 20 20 |matched |']'.X |
|00005420| 20 20 20 69 66 20 28 62 | 72 61 63 65 29 20 7b 0a | if (b|race) {.|
|00005430| 58 20 20 20 20 20 20 20 | 20 20 63 65 72 72 20 3c |X | cerr <|
|00005440| 3c 20 22 45 72 72 6f 72 | 3a 20 75 6e 6d 61 74 63 |< "Error|: unmatc|
|00005450| 68 65 64 20 27 22 20 3c | 3c 20 63 68 61 72 28 63 |hed '" <|< char(c|
|00005460| 5f 4f 50 45 4e 29 20 3c | 3c 20 22 27 2e 22 20 3c |_OPEN) <|< "'." <|
|00005470| 3c 20 65 6e 64 6c 20 3b | 0a 58 20 20 20 20 20 20 |< endl ;|.X |
|00005480| 20 20 20 2b 2b 65 72 72 | 6f 72 73 3b 0a 58 20 20 | ++err|ors;.X |
|00005490| 20 20 20 20 7d 0a 58 20 | 20 20 20 20 20 69 66 20 | }.X | if |
|000054a0| 28 65 72 72 6f 72 73 29 | 20 7b 0a 58 20 20 20 20 |(errors)| {.X |
|000054b0| 20 20 20 20 20 63 65 72 | 72 20 3c 3c 20 22 2a 2a | cer|r << "**|
|000054c0| 2a 20 53 79 6e 74 61 78 | 20 65 72 72 6f 72 20 69 |* Syntax| error i|
|000054d0| 6e 20 76 61 6c 75 65 20 | 5c 22 22 20 3c 3c 20 73 |n value |\"" << s|
|000054e0| 61 76 65 5f 76 61 6c 75 | 65 20 3c 3c 20 22 5c 22 |ave_valu|e << "\"|
|000054f0| 2e 5c 6e 22 0a 58 20 20 | 20 20 20 20 20 20 20 20 |.\n".X | |
|00005500| 20 20 20 20 3c 3c 20 22 | 5c 74 28 65 72 72 6f 72 | << "|\t(error|
|00005510| 20 6f 63 63 75 72 72 65 | 64 20 69 6e 20 43 6d 64 | occurre|d in Cmd|
|00005520| 41 72 67 20 63 6f 6e 73 | 74 72 75 63 74 6f 72 29 |Arg cons|tructor)|
|00005530| 22 20 3c 3c 20 65 6e 64 | 6c 20 3b 0a 58 20 20 20 |" << end|l ;.X |
|00005540| 20 20 20 7d 0a 58 20 20 | 20 20 20 20 72 65 74 75 | }.X | retu|
|00005550| 72 6e 3b 0a 58 20 20 20 | 7d 0a 58 0a 58 20 20 20 |rn;.X |}.X.X |
|00005560| 2f 2f 20 4e 6f 74 20 64 | 6f 6e 65 20 2d 20 77 65 |// Not d|one - we|
|00005570| 20 68 61 64 20 62 65 74 | 74 65 72 20 73 65 65 20 | had bet|ter see |
|00005580| 61 20 22 2e 2e 2e 22 0a | 58 20 20 20 69 66 20 28 |a "...".|X if (|
|00005590| 3a 3a 73 74 72 6e 63 6d | 70 28 70 74 72 2c 20 22 |::strncm|p(ptr, "|
|000055a0| 2e 2e 2e 22 2c 20 33 29 | 20 21 3d 20 30 29 20 7b |...", 3)| != 0) {|
|000055b0| 0a 58 20 20 20 20 20 20 | 63 65 72 72 20 3c 3c 20 |.X |cerr << |
|000055c0| 22 45 72 72 6f 72 3a 20 | 75 6e 65 78 70 65 63 74 |"Error: |unexpect|
|000055d0| 65 64 20 74 6f 6b 65 6e | 20 5c 22 22 20 3c 3c 20 |ed token| \"" << |
|000055e0| 70 74 72 20 3c 3c 20 22 | 5c 22 2e 22 20 3c 3c 20 |ptr << "|\"." << |
|000055f0| 65 6e 64 6c 20 3b 0a 58 | 20 20 20 20 20 20 2b 2b |endl ;.X| ++|
|00005600| 65 72 72 6f 72 73 3b 0a | 58 20 20 20 7d 20 65 6c |errors;.|X } el|
|00005610| 73 65 20 7b 0a 58 20 20 | 20 20 20 20 61 72 67 5f |se {.X | arg_|
|00005620| 73 79 6e 74 61 78 20 7c | 3d 20 69 73 4c 49 53 54 |syntax ||= isLIST|
|00005630| 3b 0a 58 20 20 20 20 20 | 20 70 74 72 20 2b 3d 20 |;.X | ptr += |
|00005640| 33 3b 0a 58 20 20 20 20 | 20 20 77 68 69 6c 65 20 |3;.X | while |
|00005650| 28 69 73 73 70 61 63 65 | 28 2a 70 74 72 29 29 20 |(isspace|(*ptr)) |
|00005660| 20 2b 2b 70 74 72 3b 0a | 58 20 20 20 20 20 20 69 | ++ptr;.|X i|
|00005670| 66 20 28 62 72 61 63 65 | 20 26 26 20 28 2a 70 74 |f (brace| && (*pt|
|00005680| 72 20 21 3d 20 63 5f 43 | 4c 4f 53 45 29 29 20 7b |r != c_C|LOSE)) {|
|00005690| 0a 58 20 20 20 20 20 20 | 20 20 20 63 65 72 72 20 |.X | cerr |
|000056a0| 3c 3c 20 22 45 72 72 6f | 72 3a 20 75 6e 6d 61 74 |<< "Erro|r: unmat|
|000056b0| 63 68 65 64 20 27 22 20 | 3c 3c 20 63 68 61 72 28 |ched '" |<< char(|
|000056c0| 63 5f 4f 50 45 4e 29 20 | 3c 3c 20 22 27 2e 22 20 |c_OPEN) |<< "'." |
|000056d0| 3c 3c 20 65 6e 64 6c 20 | 3b 0a 58 20 20 20 20 20 |<< endl |;.X |
|000056e0| 20 20 20 20 2b 2b 65 72 | 72 6f 72 73 3b 0a 58 20 | ++er|rors;.X |
|000056f0| 20 20 20 20 20 7d 20 65 | 6c 73 65 20 7b 0a 58 20 | } e|lse {.X |
|00005700| 20 20 20 20 20 20 20 2f | 2f 20 49 66 20 74 68 65 | /|/ If the|
|00005710| 72 65 73 20 61 6e 79 74 | 68 69 6e 67 20 6c 65 66 |res anyt|hing lef|
|00005720| 74 20 28 65 78 63 65 70 | 74 20 27 5d 27 29 20 69 |t (excep|t ']') i|
|00005730| 74 27 73 20 61 6e 20 65 | 72 72 6f 72 0a 58 20 20 |t's an e|rror.X |
|00005740| 20 20 20 20 20 20 69 66 | 20 28 62 72 61 63 65 20 | if| (brace |
|00005750| 26 26 20 28 2a 70 74 72 | 20 3d 3d 20 63 5f 43 4c |&& (*ptr| == c_CL|
|00005760| 4f 53 45 29 29 20 20 2b | 2b 70 74 72 3b 0a 58 20 |OSE)) +|+ptr;.X |
|00005770| 20 20 20 20 20 20 20 77 | 68 69 6c 65 20 28 69 73 | w|hile (is|
|00005780| 73 70 61 63 65 28 2a 70 | 74 72 29 29 20 20 2b 2b |space(*p|tr)) ++|
|00005790| 70 74 72 3b 0a 58 20 20 | 20 20 20 20 20 20 69 66 |ptr;.X | if|
|000057a0| 20 28 2a 70 74 72 29 20 | 7b 0a 58 20 20 20 20 20 | (*ptr) |{.X |
|000057b0| 20 20 20 20 20 20 63 65 | 72 72 20 3c 3c 20 22 45 | ce|rr << "E|
|000057c0| 72 72 6f 72 3a 20 75 6e | 65 78 70 65 63 74 65 64 |rror: un|expected|
|000057d0| 20 74 6f 6b 65 6e 20 5c | 22 22 20 3c 3c 20 70 74 | token \|"" << pt|
|000057e0| 72 20 3c 3c 20 22 5c 22 | 2e 22 20 3c 3c 20 65 6e |r << "\"|." << en|
|000057f0| 64 6c 20 3b 0a 58 20 20 | 20 20 20 20 20 20 20 20 |dl ;.X | |
|00005800| 20 2b 2b 65 72 72 6f 72 | 73 3b 0a 58 20 20 20 20 | ++error|s;.X |
|00005810| 20 20 20 20 7d 0a 58 20 | 20 20 20 20 20 7d 0a 58 | }.X | }.X|
|00005820| 20 20 20 7d 0a 58 0a 58 | 20 20 20 2f 2f 20 57 65 | }.X.X| // We|
|00005830| 72 65 20 74 68 65 72 65 | 20 61 6e 79 20 65 72 72 |re there| any err|
|00005840| 6f 72 73 3f 0a 58 20 20 | 20 69 66 20 28 65 72 72 |ors?.X | if (err|
|00005850| 6f 72 73 29 20 7b 0a 58 | 20 20 20 20 20 20 63 65 |ors) {.X| ce|
|00005860| 72 72 20 3c 3c 20 22 2a | 2a 2a 20 53 79 6e 74 61 |rr << "*|** Synta|
|00005870| 78 20 65 72 72 6f 72 20 | 69 6e 20 76 61 6c 75 65 |x error |in value|
|00005880| 20 5c 22 22 20 3c 3c 20 | 73 61 76 65 5f 76 61 6c | \"" << |save_val|
|00005890| 75 65 20 3c 3c 20 22 5c | 22 2e 5c 6e 22 0a 58 20 |ue << "\|".\n".X |
|000058a0| 20 20 20 20 20 20 20 20 | 20 20 3c 3c 20 22 5c 74 | | << "\t|
|000058b0| 28 65 72 72 6f 72 20 6f | 63 63 75 72 72 65 64 20 |(error o|ccurred |
|000058c0| 69 6e 20 43 6d 64 41 72 | 67 20 63 6f 6e 73 74 72 |in CmdAr|g constr|
|000058d0| 75 63 74 6f 72 29 22 20 | 3c 3c 20 65 6e 64 6c 20 |uctor)" |<< endl |
|000058e0| 3b 0a 58 20 20 20 7d 0a | 58 7d 0a 45 4e 44 5f 4f |;.X }.|X}.END_O|
|000058f0| 46 5f 46 49 4c 45 0a 69 | 66 20 74 65 73 74 20 39 |F_FILE.i|f test 9|
|00005900| 39 34 35 20 2d 6e 65 20 | 60 77 63 20 2d 63 20 3c |945 -ne |`wc -c <|
|00005910| 27 73 72 63 2f 6c 69 62 | 2f 63 6d 64 61 72 67 2e |'src/lib|/cmdarg.|
|00005920| 63 27 60 3b 20 74 68 65 | 6e 0a 20 20 20 20 65 63 |c'`; the|n. ec|
|00005930| 68 6f 20 73 68 61 72 3a | 20 5c 22 27 73 72 63 2f |ho shar:| \"'src/|
|00005940| 6c 69 62 2f 63 6d 64 61 | 72 67 2e 63 27 5c 22 20 |lib/cmda|rg.c'\" |
|00005950| 75 6e 70 61 63 6b 65 64 | 20 77 69 74 68 20 77 72 |unpacked| with wr|
|00005960| 6f 6e 67 20 73 69 7a 65 | 21 0a 66 69 0a 23 20 65 |ong size|!.fi.# e|
|00005970| 6e 64 20 6f 66 20 27 73 | 72 63 2f 6c 69 62 2f 63 |nd of 's|rc/lib/c|
|00005980| 6d 64 61 72 67 2e 63 27 | 0a 66 69 0a 69 66 20 74 |mdarg.c'|.fi.if t|
|00005990| 65 73 74 20 2d 66 20 27 | 73 72 63 2f 6c 69 62 2f |est -f '|src/lib/|
|000059a0| 63 6d 64 6c 69 6e 65 2e | 63 27 20 2d 61 20 22 24 |cmdline.|c' -a "$|
|000059b0| 7b 31 7d 22 20 21 3d 20 | 22 2d 63 22 20 3b 20 74 |{1}" != |"-c" ; t|
|000059c0| 68 65 6e 20 0a 20 20 65 | 63 68 6f 20 73 68 61 72 |hen . e|cho shar|
|000059d0| 3a 20 57 69 6c 6c 20 6e | 6f 74 20 63 6c 6f 62 62 |: Will n|ot clobb|
|000059e0| 65 72 20 65 78 69 73 74 | 69 6e 67 20 66 69 6c 65 |er exist|ing file|
|000059f0| 20 5c 22 27 73 72 63 2f | 6c 69 62 2f 63 6d 64 6c | \"'src/|lib/cmdl|
|00005a00| 69 6e 65 2e 63 27 5c 22 | 0a 65 6c 73 65 0a 65 63 |ine.c'\"|.else.ec|
|00005a10| 68 6f 20 73 68 61 72 3a | 20 45 78 74 72 61 63 74 |ho shar:| Extract|
|00005a20| 69 6e 67 20 5c 22 27 73 | 72 63 2f 6c 69 62 2f 63 |ing \"'s|rc/lib/c|
|00005a30| 6d 64 6c 69 6e 65 2e 63 | 27 5c 22 20 5c 28 37 39 |mdline.c|'\" \(79|
|00005a40| 30 30 20 63 68 61 72 61 | 63 74 65 72 73 5c 29 0a |00 chara|cters\).|
|00005a50| 73 65 64 20 22 73 2f 5e | 58 2f 2f 22 20 3e 27 73 |sed "s/^|X//" >'s|
|00005a60| 72 63 2f 6c 69 62 2f 63 | 6d 64 6c 69 6e 65 2e 63 |rc/lib/c|mdline.c|
|00005a70| 27 20 3c 3c 27 45 4e 44 | 5f 4f 46 5f 46 49 4c 45 |' <<'END|_OF_FILE|
|00005a80| 27 0a 58 2f 2f 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |'.X//---|--------|
|00005a90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005aa0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005ab0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005ac0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 0a 58 2f |--------|-----.X/|
|00005ad0| 2f 20 5e 46 49 4c 45 3a | 20 63 6d 64 6c 69 6e 65 |/ ^FILE:| cmdline|
|00005ae0| 2e 63 20 2d 20 69 6d 70 | 6c 65 6d 65 6e 74 20 43 |.c - imp|lement C|
|00005af0| 6d 64 4c 69 6e 65 20 6d | 65 6d 62 65 72 20 66 75 |mdLine m|ember fu|
|00005b00| 6e 63 74 69 6f 6e 73 2e | 0a 58 2f 2f 0a 58 2f 2f |nctions.|.X//.X//|
|00005b10| 20 5e 44 45 53 43 52 49 | 50 54 49 4f 4e 3a 0a 58 | ^DESCRI|PTION:.X|
|00005b20| 2f 2f 20 20 20 20 4d 61 | 6e 79 20 6f 66 20 74 68 |// Ma|ny of th|
|00005b30| 65 20 6d 6f 72 65 20 62 | 61 73 69 63 20 6d 65 6d |e more b|asic mem|
|00005b40| 62 65 72 20 66 75 6e 63 | 74 69 6f 6e 73 20 6f 66 |ber func|tions of|
|00005b50| 20 61 20 43 6d 64 4c 69 | 6e 65 20 61 72 65 20 69 | a CmdLi|ne are i|
|00005b60| 6d 70 6c 65 6d 65 6e 74 | 65 64 0a 58 2f 2f 20 20 |mplement|ed.X// |
|00005b70| 20 20 69 6e 20 74 68 69 | 73 20 66 69 6c 65 2e 20 | in thi|s file. |
|00005b80| 54 68 65 79 20 61 72 65 | 20 61 73 20 66 6f 6c 6c |They are| as foll|
|00005b90| 6f 77 73 3a 0a 58 2f 2f | 0a 58 2f 2f 20 20 20 20 |ows:.X//|.X// |
|00005ba0| 20 20 20 43 6f 6e 74 72 | 75 63 74 6f 72 73 0a 58 | Contr|uctors.X|
|00005bb0| 2f 2f 20 20 20 20 20 20 | 20 44 65 73 74 72 75 63 |// | Destruc|
|00005bc0| 74 6f 72 73 0a 58 2f 2f | 20 20 20 20 20 20 20 43 |tors.X//| C|
|00005bd0| 6d 64 4c 69 6e 65 3a 3a | 6e 61 6d 65 28 29 0a 58 |mdLine::|name().X|
|00005be0| 2f 2f 20 20 20 20 20 20 | 20 43 6d 64 4c 69 6e 65 |// | CmdLine|
|00005bf0| 3a 3a 65 72 72 6f 72 28 | 29 0a 58 2f 2f 20 20 20 |::error(|).X// |
|00005c00| 20 20 20 20 43 6d 64 4c | 69 6e 65 3a 3a 61 70 70 | CmdL|ine::app|
|00005c10| 65 6e 64 0a 58 2f 2f 0a | 58 2f 2f 20 5e 48 49 53 |end.X//.|X// ^HIS|
|00005c20| 54 4f 52 59 3a 0a 58 2f | 2f 20 20 20 20 30 33 2f |TORY:.X/|/ 03/|
|00005c30| 32 31 2f 39 32 09 42 72 | 61 64 20 41 70 70 6c 65 |21/92.Br|ad Apple|
|00005c40| 74 6f 6e 09 3c 62 72 61 | 64 40 73 73 64 2e 63 73 |ton.<bra|d@ssd.cs|
|00005c50| 64 2e 68 61 72 72 69 73 | 2e 63 6f 6d 3e 09 43 72 |d.harris|.com>.Cr|
|00005c60| 65 61 74 65 64 0a 58 2f | 2f 2d 5e 5e 2d 2d 2d 2d |eated.X/|/-^^----|
|00005c70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005c80| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005c90| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005ca0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005cb0| 2d 0a 58 0a 58 23 69 6e | 63 6c 75 64 65 20 3c 73 |-.X.X#in|clude <s|
|00005cc0| 74 64 6c 69 62 2e 68 3e | 0a 58 23 69 6e 63 6c 75 |tdlib.h>|.X#inclu|
|00005cd0| 64 65 20 3c 69 6f 73 74 | 72 65 61 6d 2e 68 3e 0a |de <iost|ream.h>.|
|00005ce0| 58 23 69 6e 63 6c 75 64 | 65 20 3c 73 74 64 61 72 |X#includ|e <stdar|
|00005cf0| 67 2e 68 3e 0a 58 23 69 | 6e 63 6c 75 64 65 20 3c |g.h>.X#i|nclude <|
|00005d00| 73 74 72 69 6e 67 2e 68 | 3e 0a 58 23 69 6e 63 6c |string.h|>.X#incl|
|00005d10| 75 64 65 20 3c 63 74 79 | 70 65 2e 68 3e 0a 58 0a |ude <cty|pe.h>.X.|
|00005d20| 58 23 69 6e 63 6c 75 64 | 65 20 22 63 6d 64 6c 69 |X#includ|e "cmdli|
|00005d30| 6e 65 2e 68 22 0a 58 23 | 69 6e 63 6c 75 64 65 20 |ne.h".X#|include |
|00005d40| 22 63 6d 64 61 72 67 73 | 2e 68 22 0a 58 23 69 6e |"cmdargs|.h".X#in|
|00005d50| 63 6c 75 64 65 20 22 61 | 72 67 6c 69 73 74 2e 68 |clude "a|rglist.h|
|00005d60| 22 0a 58 23 69 6e 63 6c | 75 64 65 20 22 73 74 61 |".X#incl|ude "sta|
|00005d70| 74 65 73 2e 68 22 0a 58 | 0a 58 23 64 65 66 69 6e |tes.h".X|.X#defin|
|00005d80| 65 20 20 76 61 5f 43 6d | 64 41 72 67 50 28 61 70 |e va_Cm|dArgP(ap|
|00005d90| 29 20 20 76 61 5f 61 72 | 67 28 61 70 2c 20 43 6d |) va_ar|g(ap, Cm|
|00005da0| 64 41 72 67 20 2a 29 0a | 58 0a 58 0a 58 2f 2f 2d |dArg *).|X.X.X//-|
|00005db0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005dc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005dd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005de0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00005df0| 2d 2d 20 69 6e 69 74 5f | 61 72 67 73 0a 58 0a 58 |-- init_|args.X.X|
|00005e00| 2f 2f 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |//------|--------|
|00005e10| 2d 2d 2d 2d 2d 0a 58 2f | 2f 20 5e 46 55 4e 43 54 |-----.X/|/ ^FUNCT|
|00005e20| 49 4f 4e 3a 20 69 6e 69 | 74 5f 61 72 67 73 20 2d |ION: ini|t_args -|
|00005e30| 20 69 6e 69 74 69 61 6c | 69 7a 65 20 74 68 65 20 | initial|ize the |
|00005e40| 61 72 67 5f 6c 69 73 74 | 20 6d 65 6d 62 65 72 20 |arg_list| member |
|00005e50| 6f 66 20 61 20 43 6d 64 | 4c 69 6e 65 0a 58 2f 2f |of a Cmd|Line.X//|
|00005e60| 0a 58 2f 2f 20 5e 53 59 | 4e 4f 50 53 49 53 3a 0a |.X// ^SY|NOPSIS:.|
|00005e70| 58 2f 2f 20 20 20 20 69 | 6e 69 74 5f 61 72 67 73 |X// i|nit_args|
|00005e80| 28 6c 69 73 74 29 0a 58 | 2f 2f 0a 58 2f 2f 20 5e |(list).X|//.X// ^|
|00005e90| 50 41 52 41 4d 45 54 45 | 52 53 3a 0a 58 2f 2f 20 |PARAMETE|RS:.X// |
|00005ea0| 20 20 20 43 6d 64 41 72 | 67 4c 69 73 74 4c 69 73 | CmdAr|gListLis|
|00005eb0| 74 20 26 20 2a 20 6c 69 | 73 74 3b 0a 58 2f 2f 20 |t & * li|st;.X// |
|00005ec0| 20 20 20 2d 2d 20 61 20 | 72 65 66 65 72 65 6e 63 | -- a |referenc|
|00005ed0| 65 20 74 6f 20 74 68 65 | 20 6c 69 73 74 20 74 68 |e to the| list th|
|00005ee0| 61 74 20 69 73 20 74 6f | 20 62 65 20 69 6e 69 74 |at is to| be init|
|00005ef0| 69 61 6c 69 7a 65 64 2e | 0a 58 2f 2f 0a 58 2f 2f |ialized.|.X//.X//|
|00005f00| 20 5e 44 45 53 43 52 49 | 50 54 49 4f 4e 3a 0a 58 | ^DESCRI|PTION:.X|
|00005f10| 2f 2f 20 20 20 20 41 6c | 6c 6f 63 61 74 65 20 73 |// Al|locate s|
|00005f20| 70 61 63 65 20 66 6f 72 | 20 74 68 65 20 6c 69 73 |pace for| the lis|
|00005f30| 74 20 6f 66 20 63 6f 6d | 6d 61 6e 64 2d 61 72 67 |t of com|mand-arg|
|00005f40| 75 6d 65 6e 74 73 20 61 | 6e 64 20 69 6e 73 65 72 |uments a|nd inser|
|00005f50| 74 0a 58 2f 2f 20 20 20 | 20 54 68 65 20 64 65 66 |t.X// | The def|
|00005f60| 61 75 6c 74 20 61 72 67 | 75 6d 65 6e 74 73 20 6f |ault arg|uments o|
|00005f70| 6e 74 6f 20 74 68 65 20 | 6c 69 73 74 2e 0a 58 2f |nto the |list..X/|
|00005f80| 2f 0a 58 2f 2f 20 5e 52 | 45 51 55 49 52 45 4d 45 |/.X// ^R|EQUIREME|
|00005f90| 4e 54 53 3a 0a 58 2f 2f | 20 20 20 20 6c 69 73 74 |NTS:.X//| list|
|00005fa0| 20 73 68 6f 75 6c 64 20 | 62 65 20 4e 55 4c 4c 20 | should |be NULL |
|00005fb0| 75 70 6f 6e 20 65 6e 74 | 72 79 0a 58 2f 2f 0a 58 |upon ent|ry.X//.X|
|00005fc0| 2f 2f 20 5e 53 49 44 45 | 2d 45 46 46 45 43 54 53 |// ^SIDE|-EFFECTS|
|00005fd0| 3a 0a 58 2f 2f 20 20 20 | 20 63 72 65 61 74 65 73 |:.X// | creates|
|00005fe0| 20 74 68 65 20 61 72 67 | 2d 6c 69 73 74 20 61 6e | the arg|-list an|
|00005ff0| 64 20 6d 61 6b 65 73 20 | 22 6c 69 73 74 22 20 70 |d makes |"list" p|
|00006000| 6f 69 6e 74 20 74 6f 20 | 69 74 2e 0a 58 2f 2f 0a |oint to |it..X//.|
|00006010| 58 2f 2f 20 5e 52 45 54 | 55 52 4e 2d 56 41 4c 55 |X// ^RET|URN-VALU|
|00006020| 45 3a 0a 58 2f 2f 20 20 | 20 20 4e 6f 6e 65 2e 0a |E:.X// | None..|
|00006030| 58 2f 2f 0a 58 2f 2f 20 | 5e 41 4c 47 4f 52 49 54 |X//.X// |^ALGORIT|
|00006040| 48 4d 3a 0a 58 2f 2f 20 | 20 20 20 2d 20 43 72 65 |HM:.X// | - Cre|
|00006050| 61 74 65 20 61 20 6e 65 | 77 20 61 72 67 2d 6c 69 |ate a ne|w arg-li|
|00006060| 73 74 20 28 73 75 72 65 | 20 69 74 20 69 73 20 4e |st (sure| it is N|
|00006070| 4f 54 20 73 65 6c 66 2d | 63 6c 65 61 6e 69 6e 67 |OT self-|cleaning|
|00006080| 2c 20 74 68 65 20 75 73 | 65 72 20 69 73 0a 58 2f |, the us|er is.X/|
|00006090| 2f 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |/ | |
|000060a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 72 65 | | re|
|000060b0| 73 70 6f 6e 73 69 62 6c | 65 20 66 6f 72 20 64 65 |sponsibl|e for de|
|000060c0| 6c 65 74 69 6e 67 20 69 | 6e 73 65 72 74 65 64 20 |leting i|nserted |
|000060d0| 69 74 65 6d 73 29 0a 58 | 2f 2f 20 20 20 20 2d 20 |items).X|// - |
|000060e0| 49 6e 73 65 72 74 20 74 | 68 65 20 64 65 66 61 75 |Insert t|he defau|
|000060f0| 6c 74 20 61 72 67 75 6d | 65 6e 74 73 20 6f 6e 74 |lt argum|ents ont|
|00006100| 6f 20 74 68 65 20 6c 69 | 73 74 0a 58 2f 2f 20 20 |o the li|st.X// |
|00006110| 20 20 2d 20 4d 61 6b 65 | 20 6c 69 73 74 20 70 6f | - Make| list po|
|00006120| 69 6e 74 20 74 6f 20 74 | 68 65 20 6e 65 77 6c 79 |int to t|he newly|
|00006130| 20 63 72 65 61 74 65 64 | 20 6c 69 73 74 0a 58 2f | created| list.X/|
|00006140| 2f 2d 5e 5e 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |/-^^----|--------|
|00006150| 2d 2d 2d 2d 0a 58 73 74 | 61 74 69 63 20 76 6f 69 |----.Xst|atic voi|
|00006160| 64 0a 58 69 6e 69 74 5f | 61 72 67 73 28 43 6d 64 |d.Xinit_|args(Cmd|
|00006170| 41 72 67 4c 69 73 74 4c | 69 73 74 20 2a 20 26 20 |ArgListL|ist * & |
|00006180| 6c 69 73 74 29 0a 58 7b | 0a 58 20 20 20 73 74 61 |list).X{|.X sta|
|00006190| 74 69 63 20 20 43 6d 64 | 41 72 67 55 73 61 67 65 |tic Cmd|ArgUsage|
|000061a0| 20 20 64 65 66 61 75 6c | 74 5f 68 65 6c 70 31 28 | defaul|t_help1(|
|000061b0| 27 3f 27 2c 20 22 3f 22 | 2c 20 20 20 20 22 3b 20 |'?', "?"|, "; |
|000061c0| 70 72 69 6e 74 20 75 73 | 61 67 65 20 61 6e 64 20 |print us|age and |
|000061d0| 65 78 69 74 2e 22 29 3b | 0a 58 20 20 20 73 74 61 |exit.");|.X sta|
|000061e0| 74 69 63 20 20 43 6d 64 | 41 72 67 55 73 61 67 65 |tic Cmd|ArgUsage|
|000061f0| 20 20 64 65 66 61 75 6c | 74 5f 68 65 6c 70 32 28 | defaul|t_help2(|
|00006200| 27 48 27 2c 20 22 48 65 | 6c 70 22 2c 20 22 3b 20 |'H', "He|lp", "; |
|00006210| 70 72 69 6e 74 20 75 73 | 61 67 65 20 61 6e 64 20 |print us|age and |
|00006220| 65 78 69 74 2e 22 29 3b | 0a 58 0a 58 20 20 20 6c |exit.");|.X.X l|
|00006230| 69 73 74 20 3d 20 6e 65 | 77 20 43 6d 64 41 72 67 |ist = ne|w CmdArg|
|00006240| 4c 69 73 74 4c 69 73 74 | 20 3b 0a 58 20 20 20 6c |ListList| ;.X l|
|00006250| 69 73 74 2d 3e 73 65 6c | 66 5f 63 6c 65 61 6e 69 |ist->sel|f_cleani|
|00006260| 6e 67 28 31 29 3b 0a 58 | 0a 58 20 20 20 43 6d 64 |ng(1);.X|.X Cmd|
|00006270| 41 72 67 4c 69 73 74 20 | 2a 20 61 72 67 5f 6c 69 |ArgList |* arg_li|
|00006280| 73 74 20 3d 20 6e 65 77 | 20 43 6d 64 41 72 67 4c |st = new| CmdArgL|
|00006290| 69 73 74 3b 0a 58 20 20 | 20 61 72 67 5f 6c 69 73 |ist;.X | arg_lis|
|000062a0| 74 2d 3e 73 65 6c 66 5f | 63 6c 65 61 6e 69 6e 67 |t->self_|cleaning|
|000062b0| 28 30 29 3b 0a 58 0a 58 | 20 20 20 43 6d 64 41 72 |(0);.X.X| CmdAr|
|000062c0| 67 4c 69 73 74 20 2a 20 | 64 65 66 61 75 6c 74 5f |gList * |default_|
|000062d0| 6c 69 73 74 20 3d 20 6e | 65 77 20 43 6d 64 41 72 |list = n|ew CmdAr|
|000062e0| 67 4c 69 73 74 3b 0a 58 | 20 20 20 64 65 66 61 75 |gList;.X| defau|
|000062f0| 6c 74 5f 6c 69 73 74 2d | 3e 73 65 6c 66 5f 63 6c |lt_list-|>self_cl|
|00006300| 65 61 6e 69 6e 67 28 30 | 29 3b 0a 58 20 20 20 64 |eaning(0|);.X d|
|00006310| 65 66 61 75 6c 74 5f 6c | 69 73 74 2d 3e 61 64 64 |efault_l|ist->add|
|00006320| 28 26 64 65 66 61 75 6c | 74 5f 68 65 6c 70 31 29 |(&defaul|t_help1)|
|00006330| 3b 0a 58 20 20 20 64 65 | 66 61 75 6c 74 5f 6c 69 |;.X de|fault_li|
|00006340| 73 74 2d 3e 61 64 64 28 | 26 64 65 66 61 75 6c 74 |st->add(|&default|
|00006350| 5f 68 65 6c 70 32 29 3b | 0a 58 0a 58 20 20 20 6c |_help2);|.X.X l|
|00006360| 69 73 74 2d 3e 61 64 64 | 28 61 72 67 5f 6c 69 73 |ist->add|(arg_lis|
|00006370| 74 29 3b 0a 58 20 20 20 | 6c 69 73 74 2d 3e 61 64 |t);.X |list->ad|
|00006380| 64 28 64 65 66 61 75 6c | 74 5f 6c 69 73 74 29 3b |d(defaul|t_list);|
|00006390| 0a 58 7d 0a 58 0a 58 2f | 2f 2d 2d 2d 2d 2d 2d 2d |.X}.X.X/|/-------|
|000063a0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000063b0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000063c0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|000063d0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 20 66 69 6c 65 62 61 |--------|- fileba|
|000063e0| 73 65 6e 61 6d 65 0a 58 | 0a 58 2f 2f 2d 2d 2d 2d |sename.X|.X//----|
|000063f0| 2d 2d 2d 0a 58 2f 2f 20 | 5e 46 55 4e 43 54 49 4f |---.X// |^FUNCTIO|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.