home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
view JSON data
|
view as text
This file was processed as: SHell self-extracting ARchive
(archive/shar).
You can browse this item here: 2283
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
100%
| dexvert
| Internet Message Format (text/imf)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news or mail text
| default
| |
99%
| file
| C source, ASCII text
| default
| |
100%
| TrID
| E-Mail message (Var. 2)
| 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)
| |
100%
| xdgMime
| message/rfc822
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 46 72 6f 6d 3a 20 74 6f | 6d 40 73 73 64 2e 63 73 |From: to|m@ssd.cs|
|00000010| 64 2e 68 61 72 72 69 73 | 2e 63 6f 6d 20 28 54 6f |d.harris|.com (To|
|00000020| 6d 20 48 6f 72 73 6c 65 | 79 29 0a 4e 65 77 73 67 |m Horsle|y).Newsg|
|00000030| 72 6f 75 70 73 3a 20 61 | 6c 74 2e 73 6f 75 72 63 |roups: a|lt.sourc|
|00000040| 65 73 0a 53 75 62 6a 65 | 63 74 3a 20 6d 6b 69 64 |es.Subje|ct: mkid|
|00000050| 20 31 30 2f 31 31 20 28 | 69 64 65 6e 74 69 66 69 | 10/11 (|identifi|
|00000060| 65 72 20 63 72 6f 73 73 | 20 72 65 66 65 72 65 6e |er cross| referen|
|00000070| 63 65 20 74 6f 6f 6c 29 | 0a 4d 65 73 73 61 67 65 |ce tool)|.Message|
|00000080| 2d 49 44 3a 20 3c 54 4f | 4d 2e 39 30 44 65 63 31 |-ID: <TO|M.90Dec1|
|00000090| 32 30 39 34 38 31 37 40 | 68 63 78 32 2e 73 73 64 |2094817@|hcx2.ssd|
|000000a0| 2e 63 73 64 2e 68 61 72 | 72 69 73 2e 63 6f 6d 3e |.csd.har|ris.com>|
|000000b0| 0a 44 61 74 65 3a 20 31 | 32 20 44 65 63 20 39 30 |.Date: 1|2 Dec 90|
|000000c0| 20 31 34 3a 34 38 3a 31 | 37 20 47 4d 54 0a 0a 23 | 14:48:1|7 GMT..#|
|000000d0| 21 20 2f 62 69 6e 2f 73 | 68 0a 23 20 54 68 69 73 |! /bin/s|h.# This|
|000000e0| 20 69 73 20 61 20 73 68 | 65 6c 6c 20 61 72 63 68 | is a sh|ell arch|
|000000f0| 69 76 65 2e 20 20 52 65 | 6d 6f 76 65 20 61 6e 79 |ive. Re|move any|
|00000100| 74 68 69 6e 67 20 62 65 | 66 6f 72 65 20 74 68 69 |thing be|fore thi|
|00000110| 73 20 6c 69 6e 65 2c 20 | 74 68 65 6e 20 75 6e 70 |s line, |then unp|
|00000120| 61 63 6b 0a 23 20 69 74 | 20 62 79 20 73 61 76 69 |ack.# it| by savi|
|00000130| 6e 67 20 69 74 20 69 6e | 74 6f 20 61 20 66 69 6c |ng it in|to a fil|
|00000140| 65 20 61 6e 64 20 74 79 | 70 69 6e 67 20 22 73 68 |e and ty|ping "sh|
|00000150| 20 66 69 6c 65 22 2e 20 | 20 54 6f 20 6f 76 65 72 | file". | To over|
|00000160| 77 72 69 74 65 20 65 78 | 69 73 74 69 6e 67 0a 23 |write ex|isting.#|
|00000170| 20 66 69 6c 65 73 2c 20 | 74 79 70 65 20 22 73 68 | files, |type "sh|
|00000180| 20 66 69 6c 65 20 2d 63 | 22 2e 20 20 59 6f 75 20 | file -c|". You |
|00000190| 63 61 6e 20 61 6c 73 6f | 20 66 65 65 64 20 74 68 |can also| feed th|
|000001a0| 69 73 20 61 73 20 73 74 | 61 6e 64 61 72 64 20 69 |is as st|andard i|
|000001b0| 6e 70 75 74 20 76 69 61 | 0a 23 20 75 6e 73 68 61 |nput via|.# unsha|
|000001c0| 72 2c 20 6f 72 20 62 79 | 20 74 79 70 69 6e 67 20 |r, or by| typing |
|000001d0| 22 73 68 20 3c 66 69 6c | 65 22 2c 20 65 2e 67 2e |"sh <fil|e", e.g.|
|000001e0| 2e 20 20 49 66 20 74 68 | 69 73 20 61 72 63 68 69 |. If th|is archi|
|000001f0| 76 65 20 69 73 20 63 6f | 6d 70 6c 65 74 65 2c 20 |ve is co|mplete, |
|00000200| 79 6f 75 0a 23 20 77 69 | 6c 6c 20 73 65 65 20 74 |you.# wi|ll see t|
|00000210| 68 65 20 66 6f 6c 6c 6f | 77 69 6e 67 20 6d 65 73 |he follo|wing mes|
|00000220| 73 61 67 65 20 61 74 20 | 74 68 65 20 65 6e 64 3a |sage at |the end:|
|00000230| 0a 23 09 09 22 45 6e 64 | 20 6f 66 20 61 72 63 68 |.#.."End| of arch|
|00000240| 69 76 65 20 31 30 20 28 | 6f 66 20 31 31 29 2e 22 |ive 10 (|of 11)."|
|00000250| 0a 23 20 43 6f 6e 74 65 | 6e 74 73 3a 20 20 6d 6b |.# Conte|nts: mk|
|00000260| 69 64 2e 63 0a 23 20 57 | 72 61 70 70 65 64 20 62 |id.c.# W|rapped b|
|00000270| 79 20 74 6f 6d 40 68 63 | 78 32 20 6f 6e 20 57 65 |y tom@hc|x2 on We|
|00000280| 64 20 44 65 63 20 31 32 | 20 30 37 3a 32 31 3a 35 |d Dec 12| 07:21:5|
|00000290| 38 20 31 39 39 30 0a 50 | 41 54 48 3d 2f 62 69 6e |8 1990.P|ATH=/bin|
|000002a0| 3a 2f 75 73 72 2f 62 69 | 6e 3a 2f 75 73 72 2f 75 |:/usr/bi|n:/usr/u|
|000002b0| 63 62 20 3b 20 65 78 70 | 6f 72 74 20 50 41 54 48 |cb ; exp|ort PATH|
|000002c0| 0a 69 66 20 74 65 73 74 | 20 2d 66 20 27 6d 6b 69 |.if test| -f 'mki|
|000002d0| 64 2e 63 27 20 2d 61 20 | 22 24 7b 31 7d 22 20 21 |d.c' -a |"${1}" !|
|000002e0| 3d 20 22 2d 63 22 20 3b | 20 74 68 65 6e 20 0a 20 |= "-c" ;| then . |
|000002f0| 20 65 63 68 6f 20 73 68 | 61 72 3a 20 57 69 6c 6c | echo sh|ar: Will|
|00000300| 20 6e 6f 74 20 63 6c 6f | 62 62 65 72 20 65 78 69 | not clo|bber exi|
|00000310| 73 74 69 6e 67 20 66 69 | 6c 65 20 5c 22 27 6d 6b |sting fi|le \"'mk|
|00000320| 69 64 2e 63 27 5c 22 0a | 65 6c 73 65 0a 65 63 68 |id.c'\".|else.ech|
|00000330| 6f 20 73 68 61 72 3a 20 | 45 78 74 72 61 63 74 69 |o shar: |Extracti|
|00000340| 6e 67 20 5c 22 27 6d 6b | 69 64 2e 63 27 5c 22 20 |ng \"'mk|id.c'\" |
|00000350| 5c 28 31 38 35 34 31 20 | 63 68 61 72 61 63 74 65 |\(18541 |characte|
|00000360| 72 73 5c 29 0a 73 65 64 | 20 22 73 2f 5e 58 2f 2f |rs\).sed| "s/^X//|
|00000370| 22 20 3e 27 6d 6b 69 64 | 2e 63 27 20 3c 3c 27 45 |" >'mkid|.c' <<'E|
|00000380| 4e 44 5f 4f 46 5f 46 49 | 4c 45 27 0a 58 73 74 61 |ND_OF_FI|LE'.Xsta|
|00000390| 74 69 63 20 63 68 61 72 | 20 63 6f 70 79 72 69 67 |tic char| copyrig|
|000003a0| 68 74 5b 5d 20 3d 20 22 | 40 28 23 29 43 6f 70 79 |ht[] = "|@(#)Copy|
|000003b0| 72 69 67 68 74 20 28 63 | 29 20 31 39 38 36 2c 20 |right (c|) 1986, |
|000003c0| 47 72 65 67 20 4d 63 47 | 61 72 79 22 3b 0a 58 73 |Greg McG|ary";.Xs|
|000003d0| 74 61 74 69 63 20 63 68 | 61 72 20 73 63 63 73 69 |tatic ch|ar sccsi|
|000003e0| 64 5b 5d 20 3d 20 22 40 | 28 23 29 6d 6b 69 64 2e |d[] = "@|(#)mkid.|
|000003f0| 63 09 31 2e 34 20 38 36 | 2f 31 31 2f 30 36 22 3b |c.1.4 86|/11/06";|
|00000400| 0a 58 0a 58 23 69 6e 63 | 6c 75 64 65 09 3c 62 6f |.X.X#inc|lude.<bo|
|00000410| 6f 6c 2e 68 3e 0a 58 23 | 69 6e 63 6c 75 64 65 09 |ol.h>.X#|include.|
|00000420| 3c 73 79 73 2f 74 79 70 | 65 73 2e 68 3e 0a 58 23 |<sys/typ|es.h>.X#|
|00000430| 69 6e 63 6c 75 64 65 09 | 3c 73 79 73 2f 73 74 61 |include.|<sys/sta|
|00000440| 74 2e 68 3e 0a 58 23 69 | 6e 63 6c 75 64 65 09 3c |t.h>.X#i|nclude.<|
|00000450| 73 74 64 69 6f 2e 68 3e | 0a 58 23 69 6e 63 6c 75 |stdio.h>|.X#inclu|
|00000460| 64 65 09 3c 73 74 72 69 | 6e 67 2e 68 3e 0a 58 23 |de.<stri|ng.h>.X#|
|00000470| 69 6e 63 6c 75 64 65 09 | 3c 63 74 79 70 65 2e 68 |include.|<ctype.h|
|00000480| 3e 0a 58 23 69 6e 63 6c | 75 64 65 09 3c 69 64 2e |>.X#incl|ude.<id.|
|00000490| 68 3e 0a 58 23 69 6e 63 | 6c 75 64 65 09 3c 62 69 |h>.X#inc|lude.<bi|
|000004a0| 74 6f 70 73 2e 68 3e 0a | 58 23 69 6e 63 6c 75 64 |tops.h>.|X#includ|
|000004b0| 65 09 3c 65 72 72 6e 6f | 2e 68 3e 0a 58 23 69 6e |e.<errno|.h>.X#in|
|000004c0| 63 6c 75 64 65 09 3c 65 | 78 74 65 72 6e 2e 68 3e |clude.<e|xtern.h>|
|000004d0| 0a 58 0a 58 69 6e 74 20 | 69 64 6e 48 61 73 68 43 |.X.Xint |idnHashC|
|000004e0| 6d 70 28 29 3b 0a 58 69 | 6e 74 20 69 64 6e 51 73 |mp();.Xi|nt idnQs|
|000004f0| 6f 72 74 43 6d 70 28 29 | 3b 0a 58 69 6e 74 20 72 |ortCmp()|;.Xint r|
|00000500| 6f 75 6e 64 32 28 29 3b | 0a 58 73 74 72 75 63 74 |ound2();|.Xstruct|
|00000510| 20 69 64 6e 61 6d 65 20 | 2a 6e 65 77 49 64 4e 61 | idname |*newIdNa|
|00000520| 6d 65 28 29 3b 0a 58 76 | 6f 69 64 20 65 78 74 72 |me();.Xv|oid extr|
|00000530| 61 63 74 49 64 28 29 3b | 0a 58 76 6f 69 64 20 66 |actId();|.Xvoid f|
|00000540| 69 6c 65 49 64 41 72 67 | 73 28 29 3b 0a 58 76 6f |ileIdArg|s();.Xvo|
|00000550| 69 64 20 69 6e 69 74 48 | 61 73 68 54 61 62 6c 65 |id initH|ashTable|
|00000560| 28 29 3b 0a 58 76 6f 69 | 64 20 6f 6c 64 49 64 41 |();.Xvoi|d oldIdA|
|00000570| 72 67 73 28 29 3b 0a 58 | 76 6f 69 64 20 72 65 68 |rgs();.X|void reh|
|00000580| 61 73 68 28 29 3b 0a 58 | 76 6f 69 64 20 75 70 64 |ash();.X|void upd|
|00000590| 61 74 65 49 44 28 29 3b | 0a 58 76 6f 69 64 20 77 |ateID();|.Xvoid w|
|000005a0| 72 69 74 65 49 44 28 29 | 3b 0a 58 0a 58 6c 6f 6e |riteID()|;.X.Xlon|
|000005b0| 67 09 4e 61 6d 65 43 6f | 75 6e 74 3b 09 09 2f 2a |g.NameCo|unt;../*|
|000005c0| 20 43 6f 75 6e 74 20 6f | 66 20 6e 61 6d 65 73 20 | Count o|f names |
|000005d0| 69 6e 20 64 61 74 61 62 | 61 73 65 20 2a 2f 0a 58 |in datab|ase */.X|
|000005e0| 6c 6f 6e 67 09 4e 75 6d | 62 65 72 43 6f 75 6e 74 |long.Num|berCount|
|000005f0| 3b 09 09 2f 2a 20 43 6f | 75 6e 74 20 6f 66 20 6e |;../* Co|unt of n|
|00000600| 75 6d 62 65 72 73 20 69 | 6e 20 64 61 74 61 62 61 |umbers i|n databa|
|00000610| 73 65 20 2a 2f 0a 58 6c | 6f 6e 67 09 53 74 72 69 |se */.Xl|ong.Stri|
|00000620| 6e 67 43 6f 75 6e 74 3b | 09 09 2f 2a 20 43 6f 75 |ngCount;|../* Cou|
|00000630| 6e 74 20 6f 66 20 73 74 | 72 69 6e 67 73 20 69 6e |nt of st|rings in|
|00000640| 20 64 61 74 61 62 61 73 | 65 20 2a 2f 0a 58 6c 6f | databas|e */.Xlo|
|00000650| 6e 67 09 53 6f 6c 6f 43 | 6f 75 6e 74 3b 09 09 2f |ng.SoloC|ount;../|
|00000660| 2a 20 43 6f 75 6e 74 20 | 6f 66 20 69 64 65 6e 74 |* Count |of ident|
|00000670| 69 66 69 65 72 73 20 74 | 68 61 74 20 6f 63 63 75 |ifiers t|hat occu|
|00000680| 72 20 6f 6e 6c 79 20 6f | 6e 63 65 20 2a 2f 0a 58 |r only o|nce */.X|
|00000690| 0a 58 6c 6f 6e 67 09 48 | 61 73 68 53 69 7a 65 3b |.Xlong.H|ashSize;|
|000006a0| 09 09 2f 2a 20 54 6f 74 | 61 6c 20 53 6c 6f 74 73 |../* Tot|al Slots|
|000006b0| 20 69 6e 20 68 61 73 68 | 20 74 61 62 6c 65 20 2a | in hash| table *|
|000006c0| 2f 0a 58 6c 6f 6e 67 09 | 48 61 73 68 4d 61 78 4c |/.Xlong.|HashMaxL|
|000006d0| 6f 61 64 3b 09 09 2f 2a | 20 4d 61 78 69 6d 75 6d |oad;../*| Maximum|
|000006e0| 20 6c 6f 61 64 69 6e 67 | 20 6f 66 20 68 61 73 68 | loading| of hash|
|000006f0| 20 74 61 62 6c 65 20 2a | 2f 0a 58 6c 6f 6e 67 09 | table *|/.Xlong.|
|00000700| 48 61 73 68 46 69 6c 6c | 3b 09 09 2f 2a 20 4e 75 |HashFill|;../* Nu|
|00000710| 6d 62 65 72 20 6f 66 20 | 6b 65 79 73 20 69 6e 73 |mber of |keys ins|
|00000720| 65 72 74 65 64 20 69 6e | 20 74 61 62 6c 65 20 2a |erted in| table *|
|00000730| 2f 0a 58 6c 6f 6e 67 09 | 48 61 73 68 50 72 6f 62 |/.Xlong.|HashProb|
|00000740| 65 73 3b 09 09 2f 2a 20 | 54 6f 74 61 6c 20 6e 75 |es;../* |Total nu|
|00000750| 6d 62 65 72 20 6f 66 20 | 70 72 6f 62 65 73 20 2a |mber of |probes *|
|00000760| 2f 0a 58 6c 6f 6e 67 09 | 48 61 73 68 53 65 61 72 |/.Xlong.|HashSear|
|00000770| 63 68 65 73 3b 09 09 2f | 2a 20 54 6f 74 61 6c 20 |ches;../|* Total |
|00000780| 6e 75 6d 62 65 72 20 6f | 66 20 73 65 61 72 63 68 |number o|f search|
|00000790| 65 73 20 2a 2f 0a 58 73 | 74 72 75 63 74 20 69 64 |es */.Xs|truct id|
|000007a0| 6e 61 6d 65 09 2a 2a 48 | 61 73 68 54 61 62 6c 65 |name.**H|ashTable|
|000007b0| 3b 09 2f 2a 20 56 65 63 | 74 6f 72 20 6f 66 20 69 |;./* Vec|tor of i|
|000007c0| 64 6e 61 6d 65 20 70 6f | 69 6e 74 65 72 73 20 2a |dname po|inters *|
|000007d0| 2f 0a 58 0a 58 62 6f 6f | 6c 09 56 65 72 62 6f 73 |/.X.Xboo|l.Verbos|
|000007e0| 65 20 3d 20 46 41 4c 53 | 45 3b 0a 58 0a 58 69 6e |e = FALS|E;.X.Xin|
|000007f0| 74 09 41 72 67 73 43 6f | 75 6e 74 20 3d 20 30 3b |t.ArgsCo|unt = 0;|
|00000800| 09 09 2f 2a 20 43 6f 75 | 6e 74 20 6f 66 20 61 72 |../* Cou|nt of ar|
|00000810| 67 73 20 74 6f 20 73 61 | 76 65 20 2a 2f 0a 58 69 |gs to sa|ve */.Xi|
|00000820| 6e 74 09 53 63 61 6e 43 | 6f 75 6e 74 20 3d 20 30 |nt.ScanC|ount = 0|
|00000830| 3b 09 09 2f 2a 20 43 6f | 75 6e 74 20 6f 66 20 66 |;../* Co|unt of f|
|00000840| 69 6c 65 73 20 74 6f 20 | 73 63 61 6e 20 2a 2f 0a |iles to |scan */.|
|00000850| 58 69 6e 74 09 50 61 74 | 68 43 6f 75 6e 74 20 3d |Xint.Pat|hCount =|
|00000860| 20 30 3b 09 09 2f 2a 20 | 43 6f 75 6e 74 20 6f 66 | 0;../* |Count of|
|00000870| 20 66 69 6c 65 73 20 63 | 6f 76 65 72 65 64 20 69 | files c|overed i|
|00000880| 6e 20 64 61 74 61 62 61 | 73 65 20 2a 2f 0a 58 69 |n databa|se */.Xi|
|00000890| 6e 74 09 42 69 74 41 72 | 72 61 79 53 69 7a 65 3b |nt.BitAr|raySize;|
|000008a0| 09 09 2f 2a 20 53 69 7a | 65 20 6f 66 20 62 69 74 |../* Siz|e of bit|
|000008b0| 20 61 72 72 61 79 20 73 | 6c 69 63 65 20 28 70 65 | array s|lice (pe|
|000008c0| 72 20 6e 61 6d 65 29 20 | 2a 2f 0a 58 0a 58 63 68 |r name) |*/.X.Xch|
|000008d0| 61 72 09 50 57 44 6e 61 | 6d 65 5b 42 55 46 53 49 |ar.PWDna|me[BUFSI|
|000008e0| 5a 5d 3b 09 2f 2a 20 54 | 68 65 20 63 75 72 72 65 |Z];./* T|he curre|
|000008f0| 6e 74 20 77 6f 72 6b 69 | 6e 67 20 64 69 72 65 63 |nt worki|ng direc|
|00000900| 74 6f 72 79 20 2a 2f 0a | 58 63 68 61 72 09 61 62 |tory */.|Xchar.ab|
|00000910| 73 49 44 5b 42 55 46 53 | 49 5a 5d 3b 09 09 2f 2a |sID[BUFS|IZ];../*|
|00000920| 20 54 68 65 20 61 62 73 | 6f 6c 75 74 65 20 6e 61 | The abs|olute na|
|00000930| 6d 65 20 6f 66 20 74 68 | 65 20 64 61 74 61 62 61 |me of th|e databa|
|00000940| 73 65 20 2a 2f 0a 58 0a | 58 0a 58 63 68 61 72 09 |se */.X.|X.Xchar.|
|00000950| 2a 4d 79 4e 61 6d 65 3b | 0a 58 73 74 61 74 69 63 |*MyName;|.Xstatic|
|00000960| 20 76 6f 69 64 0a 58 75 | 73 61 67 65 28 29 0a 58 | void.Xu|sage().X|
|00000970| 7b 0a 58 09 66 70 72 69 | 6e 74 66 28 73 74 64 65 |{.X.fpri|ntf(stde|
|00000980| 72 72 2c 20 22 55 73 61 | 67 65 3a 20 25 73 20 5b |rr, "Usa|ge: %s [|
|00000990| 2d 66 3c 69 64 66 69 6c | 65 3e 5d 20 5b 2d 73 3c |-f<idfil|e>] [-s<|
|000009a0| 64 69 72 3e 5d 20 5b 2d | 72 3c 64 69 72 3e 5d 20 |dir>] [-|r<dir>] |
|000009b0| 5b 28 2b 7c 2d 29 6c 5b | 3c 6c 61 6e 67 3e 5d 5d |[(+|-)l[|<lang>]]|
|000009c0| 20 5b 2d 76 5d 20 5b 28 | 2b 7c 2d 29 53 3c 73 63 | [-v] [(|+|-)S<sc|
|000009d0| 61 6e 61 72 67 3e 5d 20 | 5b 2d 61 3c 61 72 67 66 |anarg>] |[-a<argf|
|000009e0| 69 6c 65 3e 5d 20 5b 2d | 5d 20 5b 2d 75 5d 20 5b |ile>] [-|] [-u] [|
|000009f0| 66 69 6c 65 73 2e 2e 2e | 5d 5c 6e 22 2c 20 4d 79 |files...|]\n", My|
|00000a00| 4e 61 6d 65 29 3b 0a 58 | 09 65 78 69 74 28 31 29 |Name);.X|.exit(1)|
|00000a10| 3b 0a 58 7d 0a 58 6d 61 | 69 6e 28 61 72 67 63 2c |;.X}.Xma|in(argc,|
|00000a20| 20 61 72 67 76 29 0a 58 | 09 69 6e 74 09 09 61 72 | argv).X|.int..ar|
|00000a30| 67 63 3b 0a 58 09 63 68 | 61 72 09 09 2a 2a 61 72 |gc;.X.ch|ar..**ar|
|00000a40| 67 76 3b 0a 58 7b 0a 58 | 09 63 68 61 72 09 09 2a |gv;.X{.X|.char..*|
|00000a50| 61 72 67 3b 0a 58 09 69 | 6e 74 09 09 6f 70 3b 0a |arg;.X.i|nt..op;.|
|00000a60| 58 09 46 49 4c 45 09 09 | 2a 61 72 67 46 49 4c 45 |X.FILE..|*argFILE|
|00000a70| 20 3d 20 4e 55 4c 4c 3b | 0a 58 09 63 68 61 72 09 | = NULL;|.X.char.|
|00000a80| 09 2a 69 64 46 69 6c 65 | 20 3d 20 49 44 46 49 4c |.*idFile| = IDFIL|
|00000a90| 45 3b 0a 58 09 63 68 61 | 72 09 09 2a 72 63 73 44 |E;.X.cha|r..*rcsD|
|00000aa0| 69 72 20 3d 20 4e 55 4c | 4c 3b 0a 58 09 63 68 61 |ir = NUL|L;.X.cha|
|00000ab0| 72 09 09 2a 73 63 63 73 | 44 69 72 20 3d 20 4e 55 |r..*sccs|Dir = NU|
|00000ac0| 4c 4c 3b 0a 58 09 73 74 | 72 75 63 74 20 69 64 61 |LL;.X.st|ruct ida|
|00000ad0| 72 67 09 2a 69 64 41 72 | 67 73 2c 20 2a 69 64 41 |rg.*idAr|gs, *idA|
|00000ae0| 72 67 48 65 61 64 3b 0a | 58 09 62 6f 6f 6c 09 09 |rgHead;.|X.bool..|
|00000af0| 6b 65 65 70 4c 61 6e 67 | 20 3d 20 46 41 4c 53 45 |keepLang| = FALSE|
|00000b00| 3b 0a 58 09 69 6e 74 09 | 09 61 72 67 73 46 72 6f |;.X.int.|.argsFro|
|00000b10| 6d 20 3d 20 30 3b 0a 58 | 23 64 65 66 69 6e 65 09 |m = 0;.X|#define.|
|00000b20| 41 46 5f 43 4d 44 4c 49 | 4e 45 09 30 78 31 09 2f |AF_CMDLI|NE.0x1./|
|00000b30| 2a 20 66 69 6c 65 20 61 | 72 67 73 20 63 61 6d 65 |* file a|rgs came|
|00000b40| 20 6f 6e 20 63 6f 6d 6d | 61 6e 64 20 6c 69 6e 65 | on comm|and line|
|00000b50| 20 2a 2f 0a 58 23 64 65 | 66 69 6e 65 09 41 46 5f | */.X#de|fine.AF_|
|00000b60| 46 49 4c 45 09 09 30 78 | 32 09 2f 2a 20 66 69 6c |FILE..0x|2./* fil|
|00000b70| 65 20 61 72 67 73 20 63 | 61 6d 65 20 66 72 6f 6d |e args c|ame from|
|00000b80| 20 61 20 66 69 6c 65 20 | 28 2d 66 3c 66 69 6c 65 | a file |(-f<file|
|00000b90| 3e 29 20 2a 2f 0a 58 23 | 64 65 66 69 6e 65 09 41 |>) */.X#|define.A|
|00000ba0| 46 5f 49 44 46 49 4c 45 | 09 30 78 34 09 2f 2a 20 |F_IDFILE|.0x4./* |
|00000bb0| 66 69 6c 65 20 61 72 67 | 73 20 63 61 6d 65 20 66 |file arg|s came f|
|00000bc0| 72 6f 6d 20 61 6e 20 6f | 6c 64 20 49 44 20 66 69 |rom an o|ld ID fi|
|00000bd0| 6c 65 20 28 2d 75 29 20 | 2a 2f 0a 58 23 64 65 66 |le (-u) |*/.X#def|
|00000be0| 69 6e 65 09 41 46 5f 51 | 55 45 52 59 09 30 78 38 |ine.AF_Q|UERY.0x8|
|00000bf0| 09 2f 2a 20 6e 6f 20 66 | 69 6c 65 20 61 72 67 73 |./* no f|ile args|
|00000c00| 20 6e 65 63 65 73 73 61 | 72 79 3a 20 75 73 61 67 | necessa|ry: usag|
|00000c10| 65 20 71 75 65 72 79 20 | 2a 2f 0a 58 0a 58 09 4d |e query |*/.X.X.M|
|00000c20| 79 4e 61 6d 65 20 3d 20 | 62 61 73 65 6e 61 6d 65 |yName = |basename|
|00000c30| 28 47 45 54 41 52 47 28 | 61 72 67 63 2c 20 61 72 |(GETARG(|argc, ar|
|00000c40| 67 76 29 29 3b 0a 58 09 | 69 66 20 28 6b 73 68 67 |gv));.X.|if (kshg|
|00000c50| 65 74 77 64 28 50 57 44 | 6e 61 6d 65 29 20 3d 3d |etwd(PWD|name) ==|
|00000c60| 20 4e 55 4c 4c 29 20 7b | 0a 58 09 09 66 70 72 69 | NULL) {|.X..fpri|
|00000c70| 6e 74 66 28 73 74 64 65 | 72 72 2c 22 25 73 3a 20 |ntf(stde|rr,"%s: |
|00000c80| 63 61 6e 6e 6f 74 20 67 | 65 74 20 63 75 72 72 65 |cannot g|et curre|
|00000c90| 6e 74 20 77 6f 72 6b 69 | 6e 67 20 64 69 72 65 63 |nt worki|ng direc|
|00000ca0| 74 6f 72 79 20 6e 61 6d | 65 2e 5c 6e 22 2c 4d 79 |tory nam|e.\n",My|
|00000cb0| 4e 61 6d 65 29 3b 0a 58 | 09 09 65 78 69 74 28 31 |Name);.X|..exit(1|
|00000cc0| 29 3b 0a 58 09 7d 0a 58 | 09 73 74 72 63 61 74 28 |);.X.}.X|.strcat(|
|00000cd0| 50 57 44 6e 61 6d 65 2c | 20 22 2f 22 29 3b 0a 58 |PWDname,| "/");.X|
|00000ce0| 23 69 66 64 65 66 20 45 | 52 52 4c 49 4e 45 42 55 |#ifdef E|RRLINEBU|
|00000cf0| 46 0a 58 09 73 65 74 6c | 69 6e 65 62 75 66 28 73 |F.X.setl|inebuf(s|
|00000d00| 74 64 65 72 72 29 3b 0a | 58 23 65 6e 64 69 66 0a |tderr);.|X#endif.|
|00000d10| 58 0a 58 09 69 64 41 72 | 67 73 20 3d 20 69 64 41 |X.X.idAr|gs = idA|
|00000d20| 72 67 48 65 61 64 20 3d | 20 4e 45 57 28 73 74 72 |rgHead =| NEW(str|
|00000d30| 75 63 74 20 69 64 61 72 | 67 29 3b 0a 58 0a 58 09 |uct idar|g);.X.X.|
|00000d40| 2f 2a 0a 58 09 09 50 72 | 6f 63 65 73 73 20 73 6f |/*.X..Pr|ocess so|
|00000d50| 6d 65 20 61 72 67 75 6d | 65 6e 74 73 2c 20 61 6e |me argum|ents, an|
|00000d60| 64 20 73 6e 61 72 66 2d | 75 70 20 73 6f 6d 65 0a |d snarf-|up some.|
|00000d70| 58 09 09 6f 74 68 65 72 | 73 20 66 6f 72 20 70 72 |X..other|s for pr|
|00000d80| 6f 63 65 73 73 69 6e 67 | 20 6c 61 74 65 72 2e 0a |ocessing| later..|
|00000d90| 58 09 2a 2f 0a 58 09 77 | 68 69 6c 65 20 28 61 72 |X.*/.X.w|hile (ar|
|00000da0| 67 63 29 20 7b 0a 58 09 | 09 61 72 67 20 3d 20 47 |gc) {.X.|.arg = G|
|00000db0| 45 54 41 52 47 28 61 72 | 67 63 2c 20 61 72 67 76 |ETARG(ar|gc, argv|
|00000dc0| 29 3b 0a 58 09 09 69 66 | 20 28 2a 61 72 67 20 21 |);.X..if| (*arg !|
|00000dd0| 3d 20 27 2d 27 20 26 26 | 20 2a 61 72 67 20 21 3d |= '-' &&| *arg !=|
|00000de0| 20 27 2b 27 29 20 7b 0a | 58 09 09 09 61 72 67 73 | '+') {.|X...args|
|00000df0| 46 72 6f 6d 20 7c 3d 20 | 41 46 5f 43 4d 44 4c 49 |From |= |AF_CMDLI|
|00000e00| 4e 45 3b 0a 58 09 09 09 | 69 64 41 72 67 73 2d 3e |NE;.X...|idArgs->|
|00000e10| 69 64 61 5f 61 72 67 20 | 3d 20 61 72 67 3b 0a 58 |ida_arg |= arg;.X|
|00000e20| 09 09 09 69 64 41 72 67 | 73 2d 3e 69 64 61 5f 66 |...idArg|s->ida_f|
|00000e30| 6c 61 67 73 20 3d 20 49 | 44 41 5f 53 43 41 4e 7c |lags = I|DA_SCAN||
|00000e40| 49 44 41 5f 50 41 54 48 | 3b 0a 58 09 09 09 69 64 |IDA_PATH|;.X...id|
|00000e50| 41 72 67 73 2d 3e 69 64 | 61 5f 69 6e 64 65 78 20 |Args->id|a_index |
|00000e60| 3d 20 70 6f 73 74 49 6e | 63 72 28 26 50 61 74 68 |= postIn|cr(&Path|
|00000e70| 43 6f 75 6e 74 29 3b 0a | 58 09 09 09 53 63 61 6e |Count);.|X...Scan|
|00000e80| 43 6f 75 6e 74 2b 2b 3b | 0a 58 09 09 09 69 64 41 |Count++;|.X...idA|
|00000e90| 72 67 73 20 3d 20 28 69 | 64 41 72 67 73 2d 3e 69 |rgs = (i|dArgs->i|
|00000ea0| 64 61 5f 6e 65 78 74 20 | 3d 20 4e 45 57 28 73 74 |da_next |= NEW(st|
|00000eb0| 72 75 63 74 20 69 64 61 | 72 67 29 29 3b 0a 58 09 |ruct ida|rg));.X.|
|00000ec0| 09 09 63 6f 6e 74 69 6e | 75 65 3b 0a 58 09 09 7d |..contin|ue;.X..}|
|00000ed0| 0a 58 09 09 6f 70 20 3d | 20 2a 61 72 67 2b 2b 3b |.X..op =| *arg++;|
|00000ee0| 0a 58 09 09 73 77 69 74 | 63 68 20 28 2a 61 72 67 |.X..swit|ch (*arg|
|00000ef0| 2b 2b 29 0a 58 09 09 7b | 0a 58 09 09 63 61 73 65 |++).X..{|.X..case|
|00000f00| 20 27 75 27 3a 0a 58 09 | 09 09 61 72 67 73 46 72 | 'u':.X.|..argsFr|
|00000f10| 6f 6d 20 7c 3d 20 41 46 | 5f 49 44 46 49 4c 45 3b |om |= AF|_IDFILE;|
|00000f20| 0a 58 09 09 09 6f 6c 64 | 49 64 41 72 67 73 28 69 |.X...old|IdArgs(i|
|00000f30| 64 46 69 6c 65 2c 20 26 | 69 64 41 72 67 73 29 3b |dFile, &|idArgs);|
|00000f40| 0a 58 09 09 09 62 72 65 | 61 6b 3b 0a 58 09 09 63 |.X...bre|ak;.X..c|
|00000f50| 61 73 65 20 27 5c 30 27 | 3a 0a 58 09 09 09 61 72 |ase '\0'|:.X...ar|
|00000f60| 67 73 46 72 6f 6d 20 7c | 3d 20 41 46 5f 46 49 4c |gsFrom ||= AF_FIL|
|00000f70| 45 3b 0a 58 09 09 09 66 | 69 6c 65 49 64 41 72 67 |E;.X...f|ileIdArg|
|00000f80| 73 28 73 74 64 69 6e 2c | 20 26 69 64 41 72 67 73 |s(stdin,| &idArgs|
|00000f90| 29 3b 0a 58 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |);.X...b|reak;.X.|
|00000fa0| 09 63 61 73 65 20 27 61 | 27 3a 0a 58 09 09 09 69 |.case 'a|':.X...i|
|00000fb0| 66 20 28 28 61 72 67 46 | 49 4c 45 20 3d 20 66 6f |f ((argF|ILE = fo|
|00000fc0| 70 65 6e 28 61 72 67 2c | 20 22 72 22 29 29 20 3d |pen(arg,| "r")) =|
|00000fd0| 3d 20 4e 55 4c 4c 29 20 | 7b 0a 58 09 09 09 09 66 |= NULL) |{.X....f|
|00000fe0| 69 6c 65 72 72 28 22 6f | 70 65 6e 22 2c 20 61 72 |ilerr("o|pen", ar|
|00000ff0| 67 29 3b 0a 58 09 09 09 | 09 65 78 69 74 28 31 29 |g);.X...|.exit(1)|
|00001000| 3b 0a 58 09 09 09 7d 0a | 58 09 09 09 61 72 67 73 |;.X...}.|X...args|
|00001010| 46 72 6f 6d 20 7c 3d 20 | 41 46 5f 46 49 4c 45 3b |From |= |AF_FILE;|
|00001020| 0a 58 09 09 09 66 69 6c | 65 49 64 41 72 67 73 28 |.X...fil|eIdArgs(|
|00001030| 61 72 67 46 49 4c 45 2c | 20 26 69 64 41 72 67 73 |argFILE,| &idArgs|
|00001040| 29 3b 0a 58 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |);.X...b|reak;.X.|
|00001050| 09 63 61 73 65 20 27 66 | 27 3a 0a 58 09 09 09 69 |.case 'f|':.X...i|
|00001060| 64 46 69 6c 65 20 3d 20 | 61 72 67 3b 0a 58 09 09 |dFile = |arg;.X..|
|00001070| 09 62 72 65 61 6b 3b 0a | 58 09 09 63 61 73 65 20 |.break;.|X..case |
|00001080| 27 76 27 3a 0a 58 09 09 | 09 56 65 72 62 6f 73 65 |'v':.X..|.Verbose|
|00001090| 20 3d 20 54 52 55 45 3b | 0a 58 09 09 09 62 72 65 | = TRUE;|.X...bre|
|000010a0| 61 6b 3b 0a 58 09 09 63 | 61 73 65 20 27 53 27 3a |ak;.X..c|ase 'S':|
|000010b0| 0a 58 09 09 09 69 66 20 | 28 73 74 72 63 68 72 28 |.X...if |(strchr(|
|000010c0| 26 61 72 67 5b 2d 32 5d | 2c 20 27 3f 27 29 29 20 |&arg[-2]|, '?')) |
|000010d0| 7b 0a 58 09 09 09 09 73 | 65 74 53 63 61 6e 41 72 |{.X....s|etScanAr|
|000010e0| 67 73 28 6f 70 2c 20 61 | 72 67 29 3b 0a 58 09 09 |gs(op, a|rg);.X..|
|000010f0| 09 09 61 72 67 73 46 72 | 6f 6d 20 7c 3d 20 41 46 |..argsFr|om |= AF|
|00001100| 5f 51 55 45 52 59 3b 0a | 58 09 09 09 7d 0a 58 09 |_QUERY;.|X...}.X.|
|00001110| 09 09 2f 2a 46 41 4c 4c | 54 48 52 4f 55 47 48 2a |../*FALL|THROUGH*|
|00001120| 2f 0a 58 09 09 63 61 73 | 65 20 27 6c 27 3a 0a 58 |/.X..cas|e 'l':.X|
|00001130| 09 09 63 61 73 65 20 27 | 73 27 3a 0a 58 09 09 63 |..case '|s':.X..c|
|00001140| 61 73 65 20 27 72 27 3a | 0a 58 09 09 09 69 64 41 |ase 'r':|.X...idA|
|00001150| 72 67 73 2d 3e 69 64 61 | 5f 61 72 67 20 3d 20 26 |rgs->ida|_arg = &|
|00001160| 61 72 67 5b 2d 32 5d 3b | 0a 58 09 09 09 69 64 41 |arg[-2];|.X...idA|
|00001170| 72 67 73 2d 3e 69 64 61 | 5f 69 6e 64 65 78 20 3d |rgs->ida|_index =|
|00001180| 20 2d 31 3b 0a 58 09 09 | 09 69 64 41 72 67 73 2d | -1;.X..|.idArgs-|
|00001190| 3e 69 64 61 5f 66 6c 61 | 67 73 20 3d 20 49 44 41 |>ida_fla|gs = IDA|
|000011a0| 5f 41 52 47 3b 0a 58 09 | 09 09 69 64 41 72 67 73 |_ARG;.X.|..idArgs|
|000011b0| 20 3d 20 28 69 64 41 72 | 67 73 2d 3e 69 64 61 5f | = (idAr|gs->ida_|
|000011c0| 6e 65 78 74 20 3d 20 4e | 45 57 28 73 74 72 75 63 |next = N|EW(struc|
|000011d0| 74 20 69 64 61 72 67 29 | 29 3b 0a 58 09 09 09 41 |t idarg)|);.X...A|
|000011e0| 72 67 73 43 6f 75 6e 74 | 2b 2b 3b 0a 58 09 09 09 |rgsCount|++;.X...|
|000011f0| 62 72 65 61 6b 3b 0a 58 | 09 09 64 65 66 61 75 6c |break;.X|..defaul|
|00001200| 74 3a 0a 58 09 09 09 75 | 73 61 67 65 28 29 3b 0a |t:.X...u|sage();.|
|00001210| 58 09 09 7d 0a 58 09 7d | 0a 58 0a 58 09 69 66 20 |X..}.X.}|.X.X.if |
|00001220| 28 61 72 67 73 46 72 6f | 6d 20 26 20 41 46 5f 51 |(argsFro|m & AF_Q|
|00001230| 55 45 52 59 29 0a 58 09 | 09 65 78 69 74 28 30 29 |UERY).X.|.exit(0)|
|00001240| 3b 0a 58 09 2f 2a 0a 58 | 09 09 46 69 6c 65 20 61 |;.X./*.X|..File a|
|00001250| 72 67 73 20 73 68 6f 75 | 6c 64 20 6f 6e 6c 79 20 |rgs shou|ld only |
|00001260| 63 6f 6d 65 20 66 72 6f | 6d 20 6f 6e 65 20 70 6c |come fro|m one pl|
|00001270| 61 63 65 2e 20 20 44 69 | 6e 67 20 74 68 65 0a 58 |ace. Di|ng the.X|
|00001280| 09 09 75 73 65 72 20 69 | 66 20 61 72 67 75 6d 65 |..user i|f argume|
|00001290| 6e 74 73 20 63 61 6d 65 | 20 66 72 6f 6d 20 6d 75 |nts came| from mu|
|000012a0| 6c 74 69 70 6c 65 20 70 | 6c 61 63 65 73 2c 20 6f |ltiple p|laces, o|
|000012b0| 72 20 69 66 20 6e 6f 6e | 65 0a 58 09 09 77 65 72 |r if non|e.X..wer|
|000012c0| 65 20 73 75 70 70 6c 69 | 65 64 20 61 74 20 61 6c |e suppli|ed at al|
|000012d0| 6c 2e 0a 58 09 2a 2f 0a | 58 09 73 77 69 74 63 68 |l..X.*/.|X.switch|
|000012e0| 20 28 61 72 67 73 46 72 | 6f 6d 29 0a 58 09 7b 0a | (argsFr|om).X.{.|
|000012f0| 58 09 63 61 73 65 20 41 | 46 5f 43 4d 44 4c 49 4e |X.case A|F_CMDLIN|
|00001300| 45 3a 0a 58 09 63 61 73 | 65 20 41 46 5f 46 49 4c |E:.X.cas|e AF_FIL|
|00001310| 45 3a 0a 58 09 63 61 73 | 65 20 41 46 5f 49 44 46 |E:.X.cas|e AF_IDF|
|00001320| 49 4c 45 3a 0a 58 09 09 | 69 66 20 28 50 61 74 68 |ILE:.X..|if (Path|
|00001330| 43 6f 75 6e 74 20 3e 20 | 30 29 0a 58 09 09 09 62 |Count > |0).X...b|
|00001340| 72 65 61 6b 3b 0a 58 09 | 09 2f 2a 46 41 4c 4c 54 |reak;.X.|./*FALLT|
|00001350| 48 52 4f 55 47 48 2a 2f | 0a 58 09 63 61 73 65 20 |HROUGH*/|.X.case |
|00001360| 30 3a 0a 58 09 09 66 70 | 72 69 6e 74 66 28 73 74 |0:.X..fp|rintf(st|
|00001370| 64 65 72 72 2c 20 22 25 | 73 3a 20 55 73 65 20 2d |derr, "%|s: Use -|
|00001380| 75 2c 20 2d 66 3c 66 69 | 6c 65 3e 2c 20 6f 72 20 |u, -f<fi|le>, or |
|00001390| 63 6d 64 2d 6c 69 6e 65 | 20 66 6f 72 20 66 69 6c |cmd-line| for fil|
|000013a0| 65 20 61 72 67 73 21 5c | 6e 22 2c 20 4d 79 4e 61 |e args!\|n", MyNa|
|000013b0| 6d 65 29 3b 0a 58 09 09 | 75 73 61 67 65 28 29 3b |me);.X..|usage();|
|000013c0| 0a 58 09 64 65 66 61 75 | 6c 74 3a 0a 58 09 09 66 |.X.defau|lt:.X..f|
|000013d0| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 20 22 |printf(s|tderr, "|
|000013e0| 25 73 3a 20 55 73 65 20 | 6f 6e 6c 79 20 6f 6e 65 |%s: Use |only one|
|000013f0| 20 6f 66 3a 20 2d 75 2c | 20 2d 66 3c 66 69 6c 65 | of: -u,| -f<file|
|00001400| 3e 2c 20 6f 72 20 63 6d | 64 2d 6c 69 6e 65 20 66 |>, or cm|d-line f|
|00001410| 6f 72 20 66 69 6c 65 20 | 61 72 67 73 21 5c 6e 22 |or file |args!\n"|
|00001420| 2c 20 4d 79 4e 61 6d 65 | 29 3b 0a 58 09 09 75 73 |, MyName|);.X..us|
|00001430| 61 67 65 28 29 3b 0a 58 | 09 7d 0a 58 0a 58 09 69 |age();.X|.}.X.X.i|
|00001440| 66 20 28 53 63 61 6e 43 | 6f 75 6e 74 20 3d 3d 20 |f (ScanC|ount == |
|00001450| 30 29 0a 58 09 09 65 78 | 69 74 28 30 29 3b 0a 58 |0).X..ex|it(0);.X|
|00001460| 0a 58 09 42 69 74 41 72 | 72 61 79 53 69 7a 65 20 |.X.BitAr|raySize |
|00001470| 3d 20 28 50 61 74 68 43 | 6f 75 6e 74 20 2b 20 37 |= (PathC|ount + 7|
|00001480| 29 20 3e 3e 20 33 3b 0a | 58 09 69 6e 69 74 48 61 |) >> 3;.|X.initHa|
|00001490| 73 68 54 61 62 6c 65 28 | 53 63 61 6e 43 6f 75 6e |shTable(|ScanCoun|
|000014a0| 74 29 3b 0a 58 0a 58 09 | 73 74 72 63 70 79 28 61 |t);.X.X.|strcpy(a|
|000014b0| 62 73 49 44 2c 20 73 70 | 61 6e 50 61 74 68 28 50 |bsID, sp|anPath(P|
|000014c0| 57 44 6e 61 6d 65 2c 20 | 69 64 46 69 6c 65 29 29 |WDname, |idFile))|
|000014d0| 3b 0a 58 09 69 66 20 28 | 61 63 63 65 73 73 28 69 |;.X.if (|access(i|
|000014e0| 64 46 69 6c 65 2c 20 30 | 36 29 20 3c 20 30 0a 58 |dFile, 0|6) < 0.X|
|000014f0| 09 26 26 20 28 65 72 72 | 6e 6f 20 21 3d 20 45 4e |.&& (err|no != EN|
|00001500| 4f 45 4e 54 20 7c 7c 20 | 61 63 63 65 73 73 28 64 |OENT || |access(d|
|00001510| 69 72 6e 61 6d 65 28 69 | 64 46 69 6c 65 29 2c 20 |irname(i|dFile), |
|00001520| 30 36 29 20 3c 20 30 29 | 29 20 7b 0a 58 09 09 66 |06) < 0)|) {.X..f|
|00001530| 69 6c 65 72 72 28 22 6d | 6f 64 69 66 79 22 2c 20 |ilerr("m|odify", |
|00001540| 69 64 46 69 6c 65 29 3b | 0a 58 09 09 65 78 69 74 |idFile);|.X..exit|
|00001550| 28 31 29 3b 0a 58 09 7d | 0a 58 0a 58 09 66 6f 72 |(1);.X.}|.X.X.for|
|00001560| 20 28 69 64 41 72 67 73 | 20 3d 20 69 64 41 72 67 | (idArgs| = idArg|
|00001570| 48 65 61 64 3b 20 69 64 | 41 72 67 73 2d 3e 69 64 |Head; id|Args->id|
|00001580| 61 5f 6e 65 78 74 3b 20 | 69 64 41 72 67 73 20 3d |a_next; |idArgs =|
|00001590| 20 69 64 41 72 67 73 2d | 3e 69 64 61 5f 6e 65 78 | idArgs-|>ida_nex|
|000015a0| 74 29 20 7b 0a 58 09 09 | 63 68 61 72 09 09 2a 28 |t) {.X..|char..*(|
|000015b0| 2a 73 63 61 6e 6e 65 72 | 29 28 29 3b 0a 58 09 09 |*scanner|)();.X..|
|000015c0| 46 49 4c 45 09 09 2a 73 | 72 63 46 49 4c 45 3b 0a |FILE..*s|rcFILE;.|
|000015d0| 58 09 09 63 68 61 72 09 | 09 2a 61 72 67 2c 20 2a |X..char.|.*arg, *|
|000015e0| 6c 61 6e 67 2c 20 2a 73 | 75 66 66 2c 20 2a 66 69 |lang, *s|uff, *fi|
|000015f0| 6c 74 65 72 3b 0a 58 0a | 58 09 09 6c 61 6e 67 20 |lter;.X.|X..lang |
|00001600| 3d 20 4e 55 4c 4c 3b 0a | 58 09 09 61 72 67 20 3d |= NULL;.|X..arg =|
|00001610| 20 69 64 41 72 67 73 2d | 3e 69 64 61 5f 61 72 67 | idArgs-|>ida_arg|
|00001620| 3b 0a 58 09 09 69 66 20 | 28 69 64 41 72 67 73 2d |;.X..if |(idArgs-|
|00001630| 3e 69 64 61 5f 66 6c 61 | 67 73 20 26 20 49 44 41 |>ida_fla|gs & IDA|
|00001640| 5f 41 52 47 29 20 7b 0a | 58 09 09 09 6f 70 20 3d |_ARG) {.|X...op =|
|00001650| 20 2a 61 72 67 2b 2b 3b | 0a 58 09 09 09 73 77 69 | *arg++;|.X...swi|
|00001660| 74 63 68 20 28 2a 61 72 | 67 2b 2b 29 0a 58 09 09 |tch (*ar|g++).X..|
|00001670| 09 7b 0a 58 09 09 09 63 | 61 73 65 20 27 6c 27 3a |.{.X...c|ase 'l':|
|00001680| 0a 58 09 09 09 09 69 66 | 20 28 2a 61 72 67 20 3d |.X....if| (*arg =|
|00001690| 3d 20 27 5c 30 27 29 20 | 7b 0a 58 09 09 09 09 09 |= '\0') |{.X.....|
|000016a0| 6b 65 65 70 4c 61 6e 67 | 20 3d 20 46 41 4c 53 45 |keepLang| = FALSE|
|000016b0| 3b 0a 58 09 09 09 09 09 | 6c 61 6e 67 20 3d 20 4e |;.X.....|lang = N|
|000016c0| 55 4c 4c 3b 0a 58 09 09 | 09 09 09 62 72 65 61 6b |ULL;.X..|...break|
|000016d0| 3b 0a 58 09 09 09 09 7d | 0a 58 09 09 09 09 69 66 |;.X....}|.X....if|
|000016e0| 20 28 6f 70 20 3d 3d 20 | 27 2b 27 29 0a 58 09 09 | (op == |'+').X..|
|000016f0| 09 09 09 6b 65 65 70 4c | 61 6e 67 20 3d 20 54 52 |...keepL|ang = TR|
|00001700| 55 45 3b 0a 58 09 09 09 | 09 6c 61 6e 67 20 3d 20 |UE;.X...|.lang = |
|00001710| 61 72 67 3b 0a 58 09 09 | 09 09 62 72 65 61 6b 3b |arg;.X..|..break;|
|00001720| 0a 58 09 09 09 63 61 73 | 65 20 27 73 27 3a 0a 58 |.X...cas|e 's':.X|
|00001730| 09 09 09 09 73 63 63 73 | 44 69 72 20 3d 20 61 72 |....sccs|Dir = ar|
|00001740| 67 3b 0a 58 09 09 09 09 | 62 72 65 61 6b 3b 0a 58 |g;.X....|break;.X|
|00001750| 09 09 09 63 61 73 65 20 | 27 72 27 3a 0a 58 09 09 |...case |'r':.X..|
|00001760| 09 09 72 63 73 44 69 72 | 20 3d 20 61 72 67 3b 0a |..rcsDir| = arg;.|
|00001770| 58 09 09 09 09 62 72 65 | 61 6b 3b 0a 58 09 09 09 |X....bre|ak;.X...|
|00001780| 63 61 73 65 20 27 53 27 | 3a 0a 58 09 09 09 09 73 |case 'S'|:.X....s|
|00001790| 65 74 53 63 61 6e 41 72 | 67 73 28 6f 70 2c 20 73 |etScanAr|gs(op, s|
|000017a0| 74 72 73 61 76 28 61 72 | 67 29 29 3b 0a 58 09 09 |trsav(ar|g));.X..|
|000017b0| 09 09 62 72 65 61 6b 3b | 0a 58 09 09 09 64 65 66 |..break;|.X...def|
|000017c0| 61 75 6c 74 3a 0a 58 09 | 09 09 09 75 73 61 67 65 |ault:.X.|...usage|
|000017d0| 28 29 3b 0a 58 09 09 09 | 7d 0a 58 09 09 09 63 6f |();.X...|}.X...co|
|000017e0| 6e 74 69 6e 75 65 3b 0a | 58 09 09 7d 0a 58 09 09 |ntinue;.|X..}.X..|
|000017f0| 69 66 20 28 21 28 69 64 | 41 72 67 73 2d 3e 69 64 |if (!(id|Args->id|
|00001800| 61 5f 66 6c 61 67 73 20 | 26 20 49 44 41 5f 53 43 |a_flags |& IDA_SC|
|00001810| 41 4e 29 29 0a 58 09 09 | 09 67 6f 74 6f 20 73 6b |AN)).X..|.goto sk|
|00001820| 69 70 3b 0a 58 09 09 69 | 66 20 28 6c 61 6e 67 20 |ip;.X..i|f (lang |
|00001830| 3d 3d 20 4e 55 4c 4c 29 | 20 7b 0a 58 09 09 09 69 |== NULL)| {.X...i|
|00001840| 66 20 28 28 73 75 66 66 | 20 3d 20 73 74 72 72 63 |f ((suff| = strrc|
|00001850| 68 72 28 61 72 67 2c 20 | 27 2e 27 29 29 20 3d 3d |hr(arg, |'.')) ==|
|00001860| 20 4e 55 4c 4c 29 0a 58 | 09 09 09 09 73 75 66 66 | NULL).X|....suff|
|00001870| 20 3d 20 22 22 3b 0a 58 | 09 09 09 69 66 20 28 28 | = "";.X|...if ((|
|00001880| 28 6c 61 6e 67 20 3d 20 | 67 65 74 4c 61 6e 67 75 |(lang = |getLangu|
|00001890| 61 67 65 28 73 75 66 66 | 29 29 20 3d 3d 20 4e 55 |age(suff|)) == NU|
|000018a0| 4c 4c 29 20 26 26 0a 58 | 09 09 09 20 20 20 20 28 |LL) &&.X|... (|
|000018b0| 28 6c 61 6e 67 20 3d 20 | 67 65 74 4c 61 6e 67 75 |(lang = |getLangu|
|000018c0| 61 67 65 28 22 2e 64 65 | 66 61 75 6c 74 22 29 29 |age(".de|fault"))|
|000018d0| 20 3d 3d 20 4e 55 4c 4c | 29 29 20 7b 0a 58 09 09 | == NULL|)) {.X..|
|000018e0| 09 09 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |..fprint|f(stderr|
|000018f0| 2c 20 22 25 73 3a 20 4e | 6f 20 6c 61 6e 67 75 61 |, "%s: N|o langua|
|00001900| 67 65 20 61 73 73 69 67 | 6e 65 64 20 74 6f 20 73 |ge assig|ned to s|
|00001910| 75 66 66 69 78 3a 20 60 | 25 73 27 5c 6e 22 2c 20 |uffix: `|%s'\n", |
|00001920| 4d 79 4e 61 6d 65 2c 20 | 73 75 66 66 29 3b 0a 58 |MyName, |suff);.X|
|00001930| 09 09 09 09 67 6f 74 6f | 20 73 6b 69 70 3b 0a 58 |....goto| skip;.X|
|00001940| 09 09 09 7d 0a 58 09 09 | 7d 0a 58 09 09 69 66 20 |...}.X..|}.X..if |
|00001950| 28 28 73 63 61 6e 6e 65 | 72 20 3d 20 67 65 74 53 |((scanne|r = getS|
|00001960| 63 61 6e 6e 65 72 28 6c | 61 6e 67 29 29 20 3d 3d |canner(l|ang)) ==|
|00001970| 20 4e 55 4c 4c 29 20 7b | 0a 58 09 09 09 66 70 72 | NULL) {|.X...fpr|
|00001980| 69 6e 74 66 28 73 74 64 | 65 72 72 2c 20 22 25 73 |intf(std|err, "%s|
|00001990| 3a 20 4e 6f 20 73 63 61 | 6e 6e 65 72 20 66 6f 72 |: No sca|nner for|
|000019a0| 20 6c 61 6e 67 75 61 67 | 65 3a 20 60 25 73 27 5c | languag|e: `%s'\|
|000019b0| 6e 22 2c 20 4d 79 4e 61 | 6d 65 2c 20 6c 61 6e 67 |n", MyNa|me, lang|
|000019c0| 29 3b 0a 58 09 09 09 67 | 6f 74 6f 20 73 6b 69 70 |);.X...g|oto skip|
|000019d0| 3b 0a 58 09 09 7d 0a 58 | 09 09 66 69 6c 74 65 72 |;.X..}.X|..filter|
|000019e0| 20 3d 20 67 65 74 46 69 | 6c 74 65 72 28 73 75 66 | = getFi|lter(suf|
|000019f0| 66 29 3b 0a 58 09 09 69 | 66 20 28 28 73 72 63 46 |f);.X..i|f ((srcF|
|00001a00| 49 4c 45 20 3d 20 6f 70 | 65 6e 53 72 63 46 49 4c |ILE = op|enSrcFIL|
|00001a10| 45 28 61 72 67 2c 20 73 | 63 63 73 44 69 72 2c 20 |E(arg, s|ccsDir, |
|00001a20| 72 63 73 44 69 72 2c 20 | 66 69 6c 74 65 72 29 29 |rcsDir, |filter))|
|00001a30| 20 3d 3d 20 4e 55 4c 4c | 29 0a 58 09 09 09 67 6f | == NULL|).X...go|
|00001a40| 74 6f 20 73 6b 69 70 3b | 0a 58 09 09 69 66 20 28 |to skip;|.X..if (|
|00001a50| 56 65 72 62 6f 73 65 29 | 0a 58 09 09 09 69 66 20 |Verbose)|.X...if |
|00001a60| 28 66 69 6c 74 65 72 29 | 20 7b 0a 58 09 09 09 09 |(filter)| {.X....|
|00001a70| 66 70 72 69 6e 74 66 28 | 73 74 64 65 72 72 2c 20 |fprintf(|stderr, |
|00001a80| 22 25 73 3a 20 22 2c 6c | 61 6e 67 29 3b 0a 58 09 |"%s: ",l|ang);.X.|
|00001a90| 09 09 09 66 70 72 69 6e | 74 66 28 73 74 64 65 72 |...fprin|tf(stder|
|00001aa0| 72 2c 20 66 69 6c 74 65 | 72 2c 20 61 72 67 29 3b |r, filte|r, arg);|
|00001ab0| 0a 58 09 09 09 09 66 70 | 72 69 6e 74 66 28 73 74 |.X....fp|rintf(st|
|00001ac0| 64 65 72 72 2c 20 22 5c | 6e 22 29 3b 0a 58 09 09 |derr, "\|n");.X..|
|00001ad0| 09 7d 20 65 6c 73 65 20 | 7b 0a 58 09 09 09 09 66 |.} else |{.X....f|
|00001ae0| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 20 22 |printf(s|tderr, "|
|00001af0| 25 73 3a 20 25 73 5c 6e | 22 2c 20 6c 61 6e 67 2c |%s: %s\n|", lang,|
|00001b00| 20 61 72 67 29 3b 0a 58 | 09 09 09 7d 0a 58 09 09 | arg);.X|...}.X..|
|00001b10| 65 78 74 72 61 63 74 49 | 64 28 73 63 61 6e 6e 65 |extractI|d(scanne|
|00001b20| 72 2c 20 73 72 63 46 49 | 4c 45 2c 20 69 64 41 72 |r, srcFI|LE, idAr|
|00001b30| 67 73 2d 3e 69 64 61 5f | 69 6e 64 65 78 29 3b 0a |gs->ida_|index);.|
|00001b40| 58 09 09 63 6c 6f 73 65 | 53 72 63 46 49 4c 45 28 |X..close|SrcFILE(|
|00001b50| 73 72 63 46 49 4c 45 2c | 20 66 69 6c 74 65 72 29 |srcFILE,| filter)|
|00001b60| 3b 0a 58 09 73 6b 69 70 | 3a 0a 58 09 09 69 66 20 |;.X.skip|:.X..if |
|00001b70| 28 21 6b 65 65 70 4c 61 | 6e 67 29 0a 58 09 09 09 |(!keepLa|ng).X...|
|00001b80| 6c 61 6e 67 20 3d 20 4e | 55 4c 4c 3b 0a 58 09 7d |lang = N|ULL;.X.}|
|00001b90| 0a 58 0a 58 09 69 66 20 | 28 48 61 73 68 46 69 6c |.X.X.if |(HashFil|
|00001ba0| 6c 20 3d 3d 20 30 29 0a | 58 09 09 65 78 69 74 28 |l == 0).|X..exit(|
|00001bb0| 30 29 3b 0a 58 0a 58 09 | 69 66 20 28 56 65 72 62 |0);.X.X.|if (Verb|
|00001bc0| 6f 73 65 29 0a 58 09 09 | 66 70 72 69 6e 74 66 28 |ose).X..|fprintf(|
|00001bd0| 73 74 64 65 72 72 2c 20 | 22 43 6f 6d 70 72 65 73 |stderr, |"Compres|
|00001be0| 73 69 6e 67 20 48 61 73 | 68 20 54 61 62 6c 65 2e |sing Has|h Table.|
|00001bf0| 2e 2e 5c 6e 22 29 3b 0a | 58 09 68 61 73 68 43 6f |..\n");.|X.hashCo|
|00001c00| 6d 70 72 65 73 73 28 48 | 61 73 68 54 61 62 6c 65 |mpress(H|ashTable|
|00001c10| 2c 20 48 61 73 68 53 69 | 7a 65 29 3b 0a 58 09 69 |, HashSi|ze);.X.i|
|00001c20| 66 20 28 56 65 72 62 6f | 73 65 29 0a 58 09 09 66 |f (Verbo|se).X..f|
|00001c30| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 20 22 |printf(s|tderr, "|
|00001c40| 53 6f 72 74 69 6e 67 20 | 48 61 73 68 20 54 61 62 |Sorting |Hash Tab|
|00001c50| 6c 65 2e 2e 2e 5c 6e 22 | 29 3b 0a 58 09 71 73 6f |le...\n"|);.X.qso|
|00001c60| 72 74 28 48 61 73 68 54 | 61 62 6c 65 2c 20 48 61 |rt(HashT|able, Ha|
|00001c70| 73 68 46 69 6c 6c 2c 20 | 73 69 7a 65 6f 66 28 73 |shFill, |sizeof(s|
|00001c80| 74 72 75 63 74 20 69 64 | 6e 61 6d 65 20 2a 29 2c |truct id|name *),|
|00001c90| 20 69 64 6e 51 73 6f 72 | 74 43 6d 70 29 3b 0a 58 | idnQsor|tCmp);.X|
|00001ca0| 0a 58 09 69 66 20 28 61 | 72 67 73 46 72 6f 6d 20 |.X.if (a|rgsFrom |
|00001cb0| 3d 3d 20 41 46 5f 49 44 | 46 49 4c 45 29 20 7b 0a |== AF_ID|FILE) {.|
|00001cc0| 58 09 09 69 66 20 28 56 | 65 72 62 6f 73 65 29 0a |X..if (V|erbose).|
|00001cd0| 58 09 09 09 66 70 72 69 | 6e 74 66 28 73 74 64 65 |X...fpri|ntf(stde|
|00001ce0| 72 72 2c 20 22 4d 65 72 | 67 69 6e 67 20 54 61 62 |rr, "Mer|ging Tab|
|00001cf0| 6c 65 73 2e 2e 2e 5c 6e | 22 29 3b 0a 58 09 09 75 |les...\n|");.X..u|
|00001d00| 70 64 61 74 65 49 44 28 | 69 64 46 69 6c 65 2c 20 |pdateID(|idFile, |
|00001d10| 69 64 41 72 67 48 65 61 | 64 29 3b 0a 58 09 7d 0a |idArgHea|d);.X.}.|
|00001d20| 58 0a 58 09 69 66 20 28 | 56 65 72 62 6f 73 65 29 |X.X.if (|Verbose)|
|00001d30| 0a 58 09 09 66 70 72 69 | 6e 74 66 28 73 74 64 65 |.X..fpri|ntf(stde|
|00001d40| 72 72 2c 20 22 57 72 69 | 74 69 6e 67 20 60 25 73 |rr, "Wri|ting `%s|
|00001d50| 27 2e 2e 2e 5c 6e 22 2c | 20 69 64 46 69 6c 65 29 |'...\n",| idFile)|
|00001d60| 3b 0a 58 09 77 72 69 74 | 65 49 44 28 69 64 46 69 |;.X.writ|eID(idFi|
|00001d70| 6c 65 2c 20 69 64 41 72 | 67 48 65 61 64 29 3b 0a |le, idAr|gHead);.|
|00001d80| 58 0a 58 09 69 66 20 28 | 56 65 72 62 6f 73 65 29 |X.X.if (|Verbose)|
|00001d90| 20 7b 0a 58 09 09 66 6c | 6f 61 74 20 6c 6f 61 64 | {.X..fl|oat load|
|00001da0| 46 61 63 74 6f 72 20 3d | 20 28 66 6c 6f 61 74 29 |Factor =| (float)|
|00001db0| 48 61 73 68 46 69 6c 6c | 20 2f 20 28 66 6c 6f 61 |HashFill| / (floa|
|00001dc0| 74 29 48 61 73 68 53 69 | 7a 65 3b 0a 58 09 09 66 |t)HashSi|ze;.X..f|
|00001dd0| 6c 6f 61 74 20 61 76 65 | 50 72 6f 62 65 73 20 3d |loat ave|Probes =|
|00001de0| 20 28 66 6c 6f 61 74 29 | 48 61 73 68 50 72 6f 62 | (float)|HashProb|
|00001df0| 65 73 20 2f 20 28 66 6c | 6f 61 74 29 48 61 73 68 |es / (fl|oat)Hash|
|00001e00| 53 65 61 72 63 68 65 73 | 3b 0a 58 09 09 66 6c 6f |Searches|;.X..flo|
|00001e10| 61 74 20 61 76 65 4f 63 | 63 75 72 20 3d 20 28 66 |at aveOc|cur = (f|
|00001e20| 6c 6f 61 74 29 48 61 73 | 68 53 65 61 72 63 68 65 |loat)Has|hSearche|
|00001e30| 73 20 2f 20 28 66 6c 6f | 61 74 29 48 61 73 68 46 |s / (flo|at)HashF|
|00001e40| 69 6c 6c 3b 0a 58 09 09 | 66 70 72 69 6e 74 66 28 |ill;.X..|fprintf(|
|00001e50| 73 74 64 65 72 72 2c 20 | 22 4e 61 6d 65 73 3a 20 |stderr, |"Names: |
|00001e60| 25 6c 64 2c 20 22 2c 20 | 4e 61 6d 65 43 6f 75 6e |%ld, ", |NameCoun|
|00001e70| 74 29 3b 0a 58 09 09 66 | 70 72 69 6e 74 66 28 73 |t);.X..f|printf(s|
|00001e80| 74 64 65 72 72 2c 20 22 | 4e 75 6d 62 65 72 73 3a |tderr, "|Numbers:|
|00001e90| 20 25 6c 64 2c 20 22 2c | 20 4e 75 6d 62 65 72 43 | %ld, ",| NumberC|
|00001ea0| 6f 75 6e 74 29 3b 0a 58 | 09 09 66 70 72 69 6e 74 |ount);.X|..fprint|
|00001eb0| 66 28 73 74 64 65 72 72 | 2c 20 22 53 74 72 69 6e |f(stderr|, "Strin|
|00001ec0| 67 73 3a 20 25 6c 64 2c | 20 22 2c 20 53 74 72 69 |gs: %ld,| ", Stri|
|00001ed0| 6e 67 43 6f 75 6e 74 29 | 3b 0a 58 09 09 66 70 72 |ngCount)|;.X..fpr|
|00001ee0| 69 6e 74 66 28 73 74 64 | 65 72 72 2c 20 22 53 6f |intf(std|err, "So|
|00001ef0| 6c 6f 3a 20 25 6c 64 2c | 20 22 2c 20 53 6f 6c 6f |lo: %ld,| ", Solo|
|00001f00| 43 6f 75 6e 74 29 3b 0a | 58 09 09 66 70 72 69 6e |Count);.|X..fprin|
|00001f10| 74 66 28 73 74 64 65 72 | 72 2c 20 22 54 6f 74 61 |tf(stder|r, "Tota|
|00001f20| 6c 3a 20 25 6c 64 5c 6e | 22 2c 20 48 61 73 68 46 |l: %ld\n|", HashF|
|00001f30| 69 6c 6c 29 3b 0a 58 09 | 09 66 70 72 69 6e 74 66 |ill);.X.|.fprintf|
|00001f40| 28 73 74 64 65 72 72 2c | 20 22 4f 63 63 75 72 61 |(stderr,| "Occura|
|00001f50| 6e 63 65 73 3a 20 25 2e | 32 66 2c 20 22 2c 20 61 |nces: %.|2f, ", a|
|00001f60| 76 65 4f 63 63 75 72 29 | 3b 0a 58 09 09 66 70 72 |veOccur)|;.X..fpr|
|00001f70| 69 6e 74 66 28 73 74 64 | 65 72 72 2c 20 22 4c 6f |intf(std|err, "Lo|
|00001f80| 61 64 3a 20 25 2e 32 66 | 2c 20 22 2c 20 6c 6f 61 |ad: %.2f|, ", loa|
|00001f90| 64 46 61 63 74 6f 72 29 | 3b 0a 58 09 09 66 70 72 |dFactor)|;.X..fpr|
|00001fa0| 69 6e 74 66 28 73 74 64 | 65 72 72 2c 20 22 50 72 |intf(std|err, "Pr|
|00001fb0| 6f 62 65 73 3a 20 25 2e | 32 66 5c 6e 22 2c 20 61 |obes: %.|2f\n", a|
|00001fc0| 76 65 50 72 6f 62 65 73 | 29 3b 0a 58 09 7d 0a 58 |veProbes|);.X.}.X|
|00001fd0| 09 65 78 69 74 28 30 29 | 3b 0a 58 7d 0a 58 0a 58 |.exit(0)|;.X}.X.X|
|00001fe0| 76 6f 69 64 0a 58 65 78 | 74 72 61 63 74 49 64 28 |void.Xex|tractId(|
|00001ff0| 67 65 74 49 64 2c 20 73 | 72 63 46 49 4c 45 2c 20 |getId, s|rcFILE, |
|00002000| 69 6e 64 65 78 29 0a 58 | 09 72 65 67 69 73 74 65 |index).X|.registe|
|00002010| 72 20 63 68 61 72 09 2a | 28 2a 67 65 74 49 64 29 |r char.*|(*getId)|
|00002020| 28 29 3b 0a 58 09 72 65 | 67 69 73 74 65 72 20 46 |();.X.re|gister F|
|00002030| 49 4c 45 09 2a 73 72 63 | 46 49 4c 45 3b 0a 58 09 |ILE.*src|FILE;.X.|
|00002040| 69 6e 74 09 09 69 6e 64 | 65 78 3b 0a 58 7b 0a 58 |int..ind|ex;.X{.X|
|00002050| 09 72 65 67 69 73 74 65 | 72 20 73 74 72 75 63 74 |.registe|r struct|
|00002060| 20 69 64 6e 61 6d 65 09 | 2a 2a 73 6c 6f 74 3b 0a | idname.|**slot;.|
|00002070| 58 09 72 65 67 69 73 74 | 65 72 20 63 68 61 72 09 |X.regist|er char.|
|00002080| 2a 6b 65 79 3b 0a 58 09 | 69 6e 74 09 09 66 6c 61 |*key;.X.|int..fla|
|00002090| 67 73 3b 0a 58 0a 58 09 | 77 68 69 6c 65 20 28 28 |gs;.X.X.|while ((|
|000020a0| 6b 65 79 20 3d 20 28 2a | 67 65 74 49 64 29 28 73 |key = (*|getId)(s|
|000020b0| 72 63 46 49 4c 45 2c 20 | 26 66 6c 61 67 73 29 29 |rcFILE, |&flags))|
|000020c0| 20 21 3d 20 4e 55 4c 4c | 29 20 7b 0a 58 09 09 73 | != NULL|) {.X..s|
|000020d0| 6c 6f 74 20 3d 20 28 73 | 74 72 75 63 74 20 69 64 |lot = (s|truct id|
|000020e0| 6e 61 6d 65 20 2a 2a 29 | 68 61 73 68 53 65 61 72 |name **)|hashSear|
|000020f0| 63 68 28 6b 65 79 2c 20 | 48 61 73 68 54 61 62 6c |ch(key, |HashTabl|
|00002100| 65 2c 20 48 61 73 68 53 | 69 7a 65 2c 20 73 69 7a |e, HashS|ize, siz|
|00002110| 65 6f 66 28 73 74 72 75 | 63 74 20 69 64 6e 61 6d |eof(stru|ct idnam|
|00002120| 65 20 2a 29 2c 20 68 31 | 73 74 72 2c 20 68 32 73 |e *), h1|str, h2s|
|00002130| 74 72 2c 20 69 64 6e 48 | 61 73 68 43 6d 70 2c 20 |tr, idnH|ashCmp, |
|00002140| 26 48 61 73 68 50 72 6f | 62 65 73 29 3b 0a 58 09 |&HashPro|bes);.X.|
|00002150| 09 48 61 73 68 53 65 61 | 72 63 68 65 73 2b 2b 3b |.HashSea|rches++;|
|00002160| 0a 58 09 09 69 66 20 28 | 2a 73 6c 6f 74 20 21 3d |.X..if (|*slot !=|
|00002170| 20 4e 55 4c 4c 29 20 7b | 0a 58 09 09 09 28 2a 73 | NULL) {|.X...(*s|
|00002180| 6c 6f 74 29 2d 3e 69 64 | 6e 5f 66 6c 61 67 73 20 |lot)->id|n_flags |
|00002190| 7c 3d 20 66 6c 61 67 73 | 3b 0a 58 09 09 09 42 49 ||= flags|;.X...BI|
|000021a0| 54 53 45 54 28 28 2a 73 | 6c 6f 74 29 2d 3e 69 64 |TSET((*s|lot)->id|
|000021b0| 6e 5f 62 69 74 76 2c 20 | 69 6e 64 65 78 29 3b 0a |n_bitv, |index);.|
|000021c0| 58 09 09 09 63 6f 6e 74 | 69 6e 75 65 3b 0a 58 09 |X...cont|inue;.X.|
|000021d0| 09 7d 0a 58 09 09 2a 73 | 6c 6f 74 20 3d 20 6e 65 |.}.X..*s|lot = ne|
|000021e0| 77 49 64 4e 61 6d 65 28 | 6b 65 79 29 3b 0a 58 09 |wIdName(|key);.X.|
|000021f0| 09 28 2a 73 6c 6f 74 29 | 2d 3e 69 64 6e 5f 66 6c |.(*slot)|->idn_fl|
|00002200| 61 67 73 20 3d 20 49 44 | 4e 5f 53 4f 4c 4f 7c 66 |ags = ID|N_SOLO|f|
|00002210| 6c 61 67 73 3b 0a 58 09 | 09 42 49 54 53 45 54 28 |lags;.X.|.BITSET(|
|00002220| 28 2a 73 6c 6f 74 29 2d | 3e 69 64 6e 5f 62 69 74 |(*slot)-|>idn_bit|
|00002230| 76 2c 20 69 6e 64 65 78 | 29 3b 0a 58 09 09 69 66 |v, index|);.X..if|
|00002240| 20 28 48 61 73 68 46 69 | 6c 6c 2b 2b 20 3e 3d 20 | (HashFi|ll++ >= |
|00002250| 48 61 73 68 4d 61 78 4c | 6f 61 64 29 0a 58 09 09 |HashMaxL|oad).X..|
|00002260| 09 72 65 68 61 73 68 28 | 29 3b 0a 58 09 7d 0a 58 |.rehash(|);.X.}.X|
|00002270| 7d 0a 58 0a 58 2f 2a 20 | 41 73 20 74 68 65 20 64 |}.X.X/* |As the d|
|00002280| 61 74 61 62 61 73 65 20 | 69 73 20 77 72 69 74 74 |atabase |is writt|
|00002290| 65 6e 2c 20 6d 61 79 20 | 6e 65 65 64 20 74 6f 20 |en, may |need to |
|000022a0| 61 64 6a 75 73 74 20 74 | 68 65 20 66 69 6c 65 20 |adjust t|he file |
|000022b0| 6e 61 6d 65 73 2e 0a 58 | 20 2a 20 49 66 20 77 65 |names..X| * If we|
|000022c0| 20 61 72 65 20 67 65 6e | 65 72 61 74 69 6e 67 20 | are gen|erating |
|000022d0| 74 68 65 20 49 44 20 66 | 69 6c 65 20 69 6e 20 61 |the ID f|ile in a|
|000022e0| 20 72 65 6d 6f 74 65 20 | 64 69 72 65 63 74 6f 72 | remote |director|
|000022f0| 79 2c 20 74 68 65 6e 0a | 58 20 2a 20 61 64 6a 75 |y, then.|X * adju|
|00002300| 73 74 20 74 68 65 20 66 | 69 6c 65 20 6e 61 6d 65 |st the f|ile name|
|00002310| 73 20 74 6f 20 62 65 20 | 72 65 6c 61 74 69 76 65 |s to be |relative|
|00002320| 20 74 6f 20 74 68 65 20 | 6c 6f 63 61 74 69 6f 6e | to the |location|
|00002330| 20 6f 66 20 74 68 65 0a | 58 20 2a 20 49 44 20 64 | of the.|X * ID d|
|00002340| 61 74 61 62 61 73 65 2e | 0a 58 20 2a 0a 58 20 2a |atabase.|.X *.X *|
|00002350| 20 28 54 68 69 73 20 77 | 6f 75 6c 64 20 62 65 20 | (This w|ould be |
|00002360| 61 20 63 6f 6d 6d 6f 6e | 20 75 73 65 61 67 65 20 |a common| useage |
|00002370| 69 66 20 79 6f 75 20 77 | 61 6e 74 20 74 6f 20 6d |if you w|ant to m|
|00002380| 61 6b 65 20 61 20 64 61 | 74 61 62 61 73 65 0a 58 |ake a da|tabase.X|
|00002390| 20 2a 20 66 6f 72 20 61 | 20 64 69 72 65 63 74 6f | * for a| directo|
|000023a0| 72 79 20 77 68 69 63 68 | 20 79 6f 75 20 68 61 76 |ry which| you hav|
|000023b0| 65 20 6e 6f 20 77 72 69 | 74 65 20 61 63 63 65 73 |e no wri|te acces|
|000023c0| 73 20 74 6f 2c 20 73 6f | 20 79 6f 75 20 63 61 6e |s to, so| you can|
|000023d0| 6e 6f 74 0a 58 20 2a 20 | 63 72 65 61 74 65 20 74 |not.X * |create t|
|000023e0| 68 65 20 49 44 20 66 69 | 6c 65 2e 29 0a 58 20 2a |he ID fi|le.).X *|
|000023f0| 2f 0a 58 76 6f 69 64 0a | 58 77 72 69 74 65 49 44 |/.Xvoid.|XwriteID|
|00002400| 28 69 64 46 69 6c 65 2c | 20 69 64 41 72 67 73 29 |(idFile,| idArgs)|
|00002410| 0a 58 09 63 68 61 72 09 | 09 2a 69 64 46 69 6c 65 |.X.char.|.*idFile|
|00002420| 3b 0a 58 09 73 74 72 75 | 63 74 20 69 64 61 72 67 |;.X.stru|ct idarg|
|00002430| 09 2a 69 64 41 72 67 73 | 3b 0a 58 7b 0a 58 09 72 |.*idArgs|;.X{.X.r|
|00002440| 65 67 69 73 74 65 72 20 | 73 74 72 75 63 74 20 69 |egister |struct i|
|00002450| 64 6e 61 6d 65 09 2a 2a | 69 64 6e 70 3b 0a 58 09 |dname.**|idnp;.X.|
|00002460| 72 65 67 69 73 74 65 72 | 20 73 74 72 75 63 74 20 |register| struct |
|00002470| 69 64 6e 61 6d 65 09 2a | 69 64 6e 3b 0a 58 09 72 |idname.*|idn;.X.r|
|00002480| 65 67 69 73 74 65 72 20 | 69 6e 74 09 69 3b 0a 58 |egister |int.i;.X|
|00002490| 09 63 68 61 72 09 09 2a | 76 65 63 42 75 66 3b 0a |.char..*|vecBuf;.|
|000024a0| 58 09 46 49 4c 45 09 09 | 2a 69 64 46 49 4c 45 3b |X.FILE..|*idFILE;|
|000024b0| 0a 58 09 69 6e 74 09 09 | 63 6f 75 6e 74 3b 0a 58 |.X.int..|count;.X|
|000024c0| 09 69 6e 74 09 09 6c 61 | 73 74 69 3b 0a 58 09 6c |.int..la|sti;.X.l|
|000024d0| 6f 6e 67 09 09 62 65 66 | 6f 72 65 2c 20 61 66 74 |ong..bef|ore, aft|
|000024e0| 65 72 3b 0a 58 09 69 6e | 74 09 09 6c 65 6e 67 74 |er;.X.in|t..lengt|
|000024f0| 68 2c 20 6c 6f 6e 67 65 | 73 74 3b 0a 58 09 73 74 |h, longe|st;.X.st|
|00002500| 72 75 63 74 20 69 64 68 | 65 61 64 09 69 64 68 3b |ruct idh|ead.idh;|
|00002510| 0a 58 09 69 6e 74 09 09 | 66 69 78 6e 61 6d 65 73 |.X.int..|fixnames|
|00002520| 3b 0a 58 09 63 68 61 72 | 20 2a 09 09 6c 73 6c 3b |;.X.char| *..lsl;|
|00002530| 0a 58 0a 58 09 69 66 20 | 28 28 6c 73 6c 20 3d 20 |.X.X.if |((lsl = |
|00002540| 73 74 72 72 63 68 72 28 | 72 65 6c 50 61 74 68 28 |strrchr(|relPath(|
|00002550| 50 57 44 6e 61 6d 65 2c | 20 61 62 73 49 44 29 2c |PWDname,| absID),|
|00002560| 27 2f 27 29 29 20 3d 3d | 20 4e 55 4c 4c 29 20 7b |'/')) ==| NULL) {|
|00002570| 0a 58 09 09 2f 2a 20 54 | 68 65 20 64 61 74 61 62 |.X../* T|he datab|
|00002580| 61 73 65 20 69 73 20 69 | 6e 20 74 68 65 20 63 77 |ase is i|n the cw|
|00002590| 64 2c 20 64 6f 6e 27 74 | 20 61 64 6a 75 73 74 20 |d, don't| adjust |
|000025a0| 74 68 65 20 6e 61 6d 65 | 73 20 2a 2f 0a 58 09 09 |the name|s */.X..|
|000025b0| 66 69 78 6e 61 6d 65 73 | 20 3d 20 46 41 4c 53 45 |fixnames| = FALSE|
|000025c0| 3b 0a 58 09 7d 20 65 6c | 73 65 20 7b 0a 58 09 09 |;.X.} el|se {.X..|
|000025d0| 2f 2a 20 54 68 65 20 64 | 61 74 61 62 61 73 65 20 |/* The d|atabase |
|000025e0| 69 73 20 6e 6f 74 20 69 | 6e 20 63 77 64 2c 20 61 |is not i|n cwd, a|
|000025f0| 64 6a 75 73 74 20 6e 61 | 6d 65 73 20 73 6f 20 74 |djust na|mes so t|
|00002600| 68 65 79 20 61 72 65 0a | 58 09 09 20 2a 20 72 65 |hey are.|X.. * re|
|00002610| 6c 61 74 69 76 65 20 74 | 6f 20 74 68 65 20 6c 6f |lative t|o the lo|
|00002620| 63 61 74 69 6f 6e 20 6f | 66 20 74 68 65 20 64 61 |cation o|f the da|
|00002630| 74 61 62 61 73 65 2c 20 | 6d 61 6b 65 20 61 62 73 |tabase, |make abs|
|00002640| 49 44 0a 58 09 09 20 2a | 20 6a 75 73 74 20 62 65 |ID.X.. *| just be|
|00002650| 20 74 68 65 20 64 69 72 | 65 63 74 6f 72 79 20 70 | the dir|ectory p|
|00002660| 61 74 68 20 74 6f 20 49 | 44 2e 0a 58 09 09 20 2a |ath to I|D..X.. *|
|00002670| 2f 0a 58 09 09 66 69 78 | 6e 61 6d 65 73 20 3d 20 |/.X..fix|names = |
|00002680| 54 52 55 45 3b 0a 58 09 | 09 2a 28 6c 73 6c 2b 31 |TRUE;.X.|.*(lsl+1|
|00002690| 29 20 3d 20 27 5c 30 27 | 3b 0a 58 09 7d 0a 58 09 |) = '\0'|;.X.}.X.|
|000026a0| 69 66 20 28 28 69 64 46 | 49 4c 45 20 3d 20 66 6f |if ((idF|ILE = fo|
|000026b0| 70 65 6e 28 69 64 46 69 | 6c 65 2c 20 22 77 2b 22 |pen(idFi|le, "w+"|
|000026c0| 29 29 20 3d 3d 20 4e 55 | 4c 4c 29 20 7b 0a 58 09 |)) == NU|LL) {.X.|
|000026d0| 09 66 69 6c 65 72 72 28 | 22 63 72 65 61 74 65 22 |.filerr(|"create"|
|000026e0| 2c 20 69 64 46 69 6c 65 | 29 3b 0a 58 09 09 65 78 |, idFile|);.X..ex|
|000026f0| 69 74 28 31 29 3b 0a 58 | 09 7d 0a 58 09 66 73 65 |it(1);.X|.}.X.fse|
|00002700| 65 6b 28 69 64 46 49 4c | 45 2c 20 28 6c 6f 6e 67 |ek(idFIL|E, (long|
|00002710| 29 73 69 7a 65 6f 66 28 | 73 74 72 75 63 74 20 69 |)sizeof(|struct i|
|00002720| 64 68 65 61 64 29 2c 20 | 30 29 3b 0a 58 0a 58 09 |dhead), |0);.X.X.|
|00002730| 2f 2a 20 77 72 69 74 65 | 20 6f 75 74 20 74 68 65 |/* write| out the|
|00002740| 20 6c 69 73 74 20 6f 66 | 20 70 61 74 68 6e 61 6d | list of| pathnam|
|00002750| 65 73 20 2a 2f 0a 58 09 | 69 64 68 2e 69 64 68 5f |es */.X.|idh.idh_|
|00002760| 61 72 67 6f 20 3d 20 66 | 74 65 6c 6c 28 69 64 46 |argo = f|tell(idF|
|00002770| 49 4c 45 29 3b 0a 58 09 | 66 6f 72 20 28 69 20 3d |ILE);.X.|for (i =|
|00002780| 20 6c 61 73 74 69 20 3d | 20 30 3b 20 69 64 41 72 | lasti =| 0; idAr|
|00002790| 67 73 2d 3e 69 64 61 5f | 6e 65 78 74 3b 20 69 64 |gs->ida_|next; id|
|000027a0| 41 72 67 73 20 3d 20 69 | 64 41 72 67 73 2d 3e 69 |Args = i|dArgs->i|
|000027b0| 64 61 5f 6e 65 78 74 29 | 20 7b 0a 58 09 09 69 66 |da_next)| {.X..if|
|000027c0| 20 28 69 64 41 72 67 73 | 2d 3e 69 64 61 5f 69 6e | (idArgs|->ida_in|
|000027d0| 64 65 78 20 3e 20 30 29 | 0a 58 09 09 09 77 68 69 |dex > 0)|.X...whi|
|000027e0| 6c 65 20 28 2b 2b 6c 61 | 73 74 69 20 3c 20 69 64 |le (++la|sti < id|
|000027f0| 41 72 67 73 2d 3e 69 64 | 61 5f 69 6e 64 65 78 29 |Args->id|a_index)|
|00002800| 0a 58 09 09 09 09 69 2b | 2b 2c 20 70 75 74 63 28 |.X....i+|+, putc(|
|00002810| 27 5c 30 27 2c 20 69 64 | 46 49 4c 45 29 3b 0a 58 |'\0', id|FILE);.X|
|00002820| 09 09 69 66 20 28 66 69 | 78 6e 61 6d 65 73 29 20 |..if (fi|xnames) |
|00002830| 7b 0a 58 09 09 09 66 70 | 75 74 73 28 72 65 6c 50 |{.X...fp|uts(relP|
|00002840| 61 74 68 28 61 62 73 49 | 44 2c 73 70 61 6e 50 61 |ath(absI|D,spanPa|
|00002850| 74 68 28 50 57 44 6e 61 | 6d 65 2c 69 64 41 72 67 |th(PWDna|me,idArg|
|00002860| 73 2d 3e 69 64 61 5f 61 | 72 67 29 29 2c 20 69 64 |s->ida_a|rg)), id|
|00002870| 46 49 4c 45 29 3b 0a 58 | 09 09 7d 20 65 6c 73 65 |FILE);.X|..} else|
|00002880| 20 7b 0a 58 09 09 09 66 | 70 75 74 73 28 69 64 41 | {.X...f|puts(idA|
|00002890| 72 67 73 2d 3e 69 64 61 | 5f 61 72 67 2c 20 69 64 |rgs->ida|_arg, id|
|000028a0| 46 49 4c 45 29 3b 0a 58 | 09 09 7d 0a 58 09 09 69 |FILE);.X|..}.X..i|
|000028b0| 2b 2b 2c 20 70 75 74 63 | 28 27 5c 30 27 2c 20 69 |++, putc|('\0', i|
|000028c0| 64 46 49 4c 45 29 3b 0a | 58 09 7d 0a 58 09 69 64 |dFILE);.|X.}.X.id|
|000028d0| 68 2e 69 64 68 5f 61 72 | 67 63 20 3d 20 69 3b 0a |h.idh_ar|gc = i;.|
|000028e0| 58 09 69 64 68 2e 69 64 | 68 5f 70 74 68 63 20 3d |X.idh.id|h_pthc =|
|000028f0| 20 50 61 74 68 43 6f 75 | 6e 74 3b 0a 58 0a 58 09 | PathCou|nt;.X.X.|
|00002900| 2f 2a 20 77 72 69 74 65 | 20 6f 75 74 20 74 68 65 |/* write| out the|
|00002910| 20 6c 69 73 74 20 6f 66 | 20 69 64 65 6e 74 69 66 | list of| identif|
|00002920| 69 65 72 73 20 2a 2f 0a | 58 09 69 20 3d 20 31 3b |iers */.|X.i = 1;|
|00002930| 0a 58 09 69 66 20 28 69 | 64 68 2e 69 64 68 5f 70 |.X.if (i|dh.idh_p|
|00002940| 74 68 63 20 3e 3d 20 30 | 78 30 30 30 30 30 30 66 |thc >= 0|x000000f|
|00002950| 66 29 0a 58 09 09 69 2b | 2b 3b 0a 58 09 69 66 20 |f).X..i+|+;.X.if |
|00002960| 28 69 64 68 2e 69 64 68 | 5f 70 74 68 63 20 3e 3d |(idh.idh|_pthc >=|
|00002970| 20 30 78 30 30 30 30 66 | 66 66 66 29 0a 58 09 09 | 0x0000f|fff).X..|
|00002980| 69 2b 2b 3b 0a 58 09 69 | 66 20 28 69 64 68 2e 69 |i++;.X.i|f (idh.i|
|00002990| 64 68 5f 70 74 68 63 20 | 3e 3d 20 30 78 30 30 66 |dh_pthc |>= 0x00f|
|000029a0| 66 66 66 66 66 29 0a 58 | 09 09 69 2b 2b 3b 0a 58 |fffff).X|..i++;.X|
|000029b0| 09 69 64 68 2e 69 64 68 | 5f 76 65 63 63 20 3d 20 |.idh.idh|_vecc = |
|000029c0| 69 3b 0a 58 0a 58 09 76 | 65 63 42 75 66 20 3d 20 |i;.X.X.v|ecBuf = |
|000029d0| 6d 61 6c 6c 6f 63 28 28 | 69 64 68 2e 69 64 68 5f |malloc((|idh.idh_|
|000029e0| 70 74 68 63 20 2b 20 31 | 29 20 2a 20 69 64 68 2e |pthc + 1|) * idh.|
|000029f0| 69 64 68 5f 76 65 63 63 | 29 3b 0a 58 0a 58 09 70 |idh_vecc|);.X.X.p|
|00002a00| 75 74 63 28 27 5c 33 37 | 37 27 2c 20 69 64 46 49 |utc('\37|7', idFI|
|00002a10| 4c 45 29 3b 0a 58 09 62 | 65 66 6f 72 65 20 3d 20 |LE);.X.b|efore = |
|00002a20| 69 64 68 2e 69 64 68 5f | 6e 61 6d 6f 20 3d 20 66 |idh.idh_|namo = f|
|00002a30| 74 65 6c 6c 28 69 64 46 | 49 4c 45 29 3b 0a 58 09 |tell(idF|ILE);.X.|
|00002a40| 6c 6f 6e 67 65 73 74 20 | 3d 20 30 3b 0a 58 09 66 |longest |= 0;.X.f|
|00002a50| 6f 72 20 28 69 64 6e 70 | 20 3d 20 48 61 73 68 54 |or (idnp| = HashT|
|00002a60| 61 62 6c 65 2c 20 69 20 | 3d 20 30 3b 20 69 20 3c |able, i |= 0; i <|
|00002a70| 20 48 61 73 68 46 69 6c | 6c 3b 20 69 2b 2b 2c 20 | HashFil|l; i++, |
|00002a80| 69 64 6e 70 2b 2b 29 20 | 7b 0a 58 09 09 69 64 6e |idnp++) |{.X..idn|
|00002a90| 20 3d 20 2a 69 64 6e 70 | 3b 0a 58 09 09 69 66 20 | = *idnp|;.X..if |
|00002aa0| 28 28 69 64 6e 20 3d 3d | 20 4e 55 4c 4c 29 20 7c |((idn ==| NULL) ||
|00002ab0| 7c 20 28 69 64 6e 2d 3e | 69 64 6e 5f 6e 61 6d 65 || (idn->|idn_name|
|00002ac0| 5b 30 5d 20 3d 3d 20 27 | 5c 30 27 29 29 20 7b 0a |[0] == '|\0')) {.|
|00002ad0| 58 09 09 09 48 61 73 68 | 46 69 6c 6c 2d 2d 3b 20 |X...Hash|Fill--; |
|00002ae0| 69 2d 2d 3b 0a 58 09 09 | 09 63 6f 6e 74 69 6e 75 |i--;.X..|.continu|
|00002af0| 65 3b 0a 58 09 09 7d 0a | 58 09 09 69 66 20 28 69 |e;.X..}.|X..if (i|
|00002b00| 64 6e 2d 3e 69 64 6e 5f | 66 6c 61 67 73 20 26 20 |dn->idn_|flags & |
|00002b10| 49 44 4e 5f 53 4f 4c 4f | 29 0a 58 09 09 09 53 6f |IDN_SOLO|).X...So|
|00002b20| 6c 6f 43 6f 75 6e 74 2b | 2b 3b 0a 58 09 09 69 66 |loCount+|+;.X..if|
|00002b30| 20 28 69 64 6e 2d 3e 69 | 64 6e 5f 66 6c 61 67 73 | (idn->i|dn_flags|
|00002b40| 20 26 20 49 44 4e 5f 4e | 55 4d 42 45 52 29 0a 58 | & IDN_N|UMBER).X|
|00002b50| 09 09 09 4e 75 6d 62 65 | 72 43 6f 75 6e 74 2b 2b |...Numbe|rCount++|
|00002b60| 3b 0a 58 09 09 69 66 20 | 28 69 64 6e 2d 3e 69 64 |;.X..if |(idn->id|
|00002b70| 6e 5f 66 6c 61 67 73 20 | 26 20 49 44 4e 5f 4e 41 |n_flags |& IDN_NA|
|00002b80| 4d 45 29 0a 58 09 09 09 | 4e 61 6d 65 43 6f 75 6e |ME).X...|NameCoun|
|00002b90| 74 2b 2b 3b 0a 58 09 09 | 69 66 20 28 69 64 6e 2d |t++;.X..|if (idn-|
|00002ba0| 3e 69 64 6e 5f 66 6c 61 | 67 73 20 26 20 49 44 4e |>idn_fla|gs & IDN|
|00002bb0| 5f 53 54 52 49 4e 47 29 | 0a 58 09 09 09 53 74 72 |_STRING)|.X...Str|
|00002bc0| 69 6e 67 43 6f 75 6e 74 | 2b 2b 3b 0a 58 0a 58 09 |ingCount|++;.X.X.|
|00002bd0| 09 70 75 74 63 28 28 2a | 69 64 6e 70 29 2d 3e 69 |.putc((*|idnp)->i|
|00002be0| 64 6e 5f 66 6c 61 67 73 | 2c 20 69 64 46 49 4c 45 |dn_flags|, idFILE|
|00002bf0| 29 3b 0a 58 09 09 66 70 | 75 74 73 28 69 64 6e 2d |);.X..fp|uts(idn-|
|00002c00| 3e 69 64 6e 5f 6e 61 6d | 65 2c 20 69 64 46 49 4c |>idn_nam|e, idFIL|
|00002c10| 45 29 3b 0a 58 09 09 70 | 75 74 63 28 27 5c 30 27 |E);.X..p|utc('\0'|
|00002c20| 2c 20 69 64 46 49 4c 45 | 29 3b 0a 58 0a 58 09 09 |, idFILE|);.X.X..|
|00002c30| 63 6f 75 6e 74 20 3d 20 | 62 69 74 73 54 6f 56 65 |count = |bitsToVe|
|00002c40| 63 28 76 65 63 42 75 66 | 2c 20 28 2a 69 64 6e 70 |c(vecBuf|, (*idnp|
|00002c50| 29 2d 3e 69 64 6e 5f 62 | 69 74 76 2c 20 69 64 68 |)->idn_b|itv, idh|
|00002c60| 2e 69 64 68 5f 70 74 68 | 63 2c 20 69 64 68 2e 69 |.idh_pth|c, idh.i|
|00002c70| 64 68 5f 76 65 63 63 29 | 3b 0a 58 09 09 66 77 72 |dh_vecc)|;.X..fwr|
|00002c80| 69 74 65 28 76 65 63 42 | 75 66 2c 20 69 64 68 2e |ite(vecB|uf, idh.|
|00002c90| 69 64 68 5f 76 65 63 63 | 2c 20 63 6f 75 6e 74 2c |idh_vecc|, count,|
|00002ca0| 20 69 64 46 49 4c 45 29 | 3b 0a 58 09 09 70 75 74 | idFILE)|;.X..put|
|00002cb0| 63 28 27 5c 33 37 37 27 | 2c 20 69 64 46 49 4c 45 |c('\377'|, idFILE|
|00002cc0| 29 3b 0a 58 09 09 61 66 | 74 65 72 20 3d 20 66 74 |);.X..af|ter = ft|
|00002cd0| 65 6c 6c 28 69 64 46 49 | 4c 45 29 3b 0a 58 09 09 |ell(idFI|LE);.X..|
|00002ce0| 0a 58 09 09 69 66 20 28 | 28 6c 65 6e 67 74 68 20 |.X..if (|(length |
|00002cf0| 3d 20 28 61 66 74 65 72 | 20 2d 20 62 65 66 6f 72 |= (after| - befor|
|00002d00| 65 29 29 20 3e 20 6c 6f | 6e 67 65 73 74 29 0a 58 |e)) > lo|ngest).X|
|00002d10| 09 09 09 6c 6f 6e 67 65 | 73 74 20 3d 20 6c 65 6e |...longe|st = len|
|00002d20| 67 74 68 3b 0a 58 09 09 | 62 65 66 6f 72 65 20 3d |gth;.X..|before =|
|00002d30| 20 61 66 74 65 72 3b 0a | 58 09 7d 0a 58 09 69 64 | after;.|X.}.X.id|
|00002d40| 68 2e 69 64 68 5f 6e 61 | 6d 63 20 3d 20 69 3b 0a |h.idh_na|mc = i;.|
|00002d50| 58 09 70 75 74 63 28 27 | 5c 33 37 37 27 2c 20 69 |X.putc('|\377', i|
|00002d60| 64 46 49 4c 45 29 3b 0a | 58 09 69 64 68 2e 69 64 |dFILE);.|X.idh.id|
|00002d70| 68 5f 65 6e 64 6f 20 3d | 20 66 74 65 6c 6c 28 69 |h_endo =| ftell(i|
|00002d80| 64 46 49 4c 45 29 3b 0a | 58 09 69 64 68 2e 69 64 |dFILE);.|X.idh.id|
|00002d90| 68 5f 62 73 69 7a 20 3d | 20 6c 6f 6e 67 65 73 74 |h_bsiz =| longest|
|00002da0| 3b 0a 58 0a 58 09 2f 2a | 20 77 72 69 74 65 20 6f |;.X.X./*| write o|
|00002db0| 75 74 20 74 68 65 20 68 | 65 61 64 65 72 20 2a 2f |ut the h|eader */|
|00002dc0| 0a 58 09 73 74 72 6e 63 | 70 79 28 69 64 68 2e 69 |.X.strnc|py(idh.i|
|00002dd0| 64 68 5f 6d 61 67 69 63 | 2c 20 49 44 48 5f 4d 41 |dh_magic|, IDH_MA|
|00002de0| 47 49 43 2c 20 73 69 7a | 65 6f 66 28 69 64 68 2e |GIC, siz|eof(idh.|
|00002df0| 69 64 68 5f 6d 61 67 69 | 63 29 29 3b 0a 58 09 69 |idh_magi|c));.X.i|
|00002e00| 64 68 2e 69 64 68 5f 76 | 65 72 73 20 3d 20 49 44 |dh.idh_v|ers = ID|
|00002e10| 48 5f 56 45 52 53 3b 0a | 58 09 66 73 65 65 6b 28 |H_VERS;.|X.fseek(|
|00002e20| 69 64 46 49 4c 45 2c 20 | 30 4c 2c 20 30 29 3b 0a |idFILE, |0L, 0);.|
|00002e30| 58 09 66 77 72 69 74 65 | 28 26 69 64 68 2c 20 73 |X.fwrite|(&idh, s|
|00002e40| 69 7a 65 6f 66 28 73 74 | 72 75 63 74 20 69 64 68 |izeof(st|ruct idh|
|00002e50| 65 61 64 29 2c 20 31 2c | 20 69 64 46 49 4c 45 29 |ead), 1,| idFILE)|
|00002e60| 3b 0a 58 0a 58 09 66 63 | 6c 6f 73 65 28 69 64 46 |;.X.X.fc|lose(idF|
|00002e70| 49 4c 45 29 3b 0a 58 7d | 0a 58 0a 58 2f 2a 0a 58 |ILE);.X}|.X.X/*.X|
|00002e80| 09 42 75 69 6c 64 20 61 | 6e 20 69 64 61 72 67 20 |.Build a|n idarg |
|00002e90| 76 65 63 74 6f 72 20 66 | 72 6f 6d 20 70 61 74 68 |vector f|rom path|
|00002ea0| 6e 61 6d 65 73 20 63 6f | 6e 74 61 69 6e 65 64 20 |names co|ntained |
|00002eb0| 69 6e 20 61 6e 20 65 78 | 69 73 74 69 6e 67 0a 58 |in an ex|isting.X|
|00002ec0| 09 69 64 20 66 69 6c 65 | 2e 20 20 4f 6e 6c 79 20 |.id file|. Only |
|00002ed0| 69 6e 63 6c 75 64 65 20 | 70 61 74 68 6e 61 6d 65 |include |pathname|
|00002ee0| 73 20 66 6f 72 20 66 69 | 6c 65 73 20 77 68 6f 73 |s for fi|les whos|
|00002ef0| 65 20 6d 6f 64 69 66 69 | 63 61 74 69 6f 6e 0a 58 |e modifi|cation.X|
|00002f00| 09 74 69 6d 65 20 69 73 | 20 6c 61 74 65 72 20 74 |.time is| later t|
|00002f10| 68 61 6e 20 74 68 61 74 | 20 6f 66 20 74 68 65 20 |han that| of the |
|00002f20| 69 64 20 66 69 6c 65 20 | 69 74 73 65 6c 66 2e 0a |id file |itself..|
|00002f30| 58 2a 2f 0a 58 76 6f 69 | 64 0a 58 6f 6c 64 49 64 |X*/.Xvoi|d.XoldId|
|00002f40| 41 72 67 73 28 69 64 46 | 69 6c 65 2c 20 69 64 41 |Args(idF|ile, idA|
|00002f50| 72 67 73 50 29 0a 58 09 | 63 68 61 72 09 09 2a 69 |rgsP).X.|char..*i|
|00002f60| 64 46 69 6c 65 3b 0a 58 | 09 73 74 72 75 63 74 20 |dFile;.X|.struct |
|00002f70| 69 64 61 72 67 09 2a 2a | 69 64 41 72 67 73 50 3b |idarg.**|idArgsP;|
|00002f80| 0a 58 7b 0a 58 09 73 74 | 72 75 63 74 20 73 74 61 |.X{.X.st|ruct sta|
|00002f90| 74 09 73 74 61 74 42 75 | 66 3b 0a 58 09 73 74 72 |t.statBu|f;.X.str|
|00002fa0| 75 63 74 20 69 64 68 65 | 61 64 09 69 64 68 3b 0a |uct idhe|ad.idh;.|
|00002fb0| 58 09 46 49 4c 45 09 09 | 2a 69 64 46 49 4c 45 3b |X.FILE..|*idFILE;|
|00002fc0| 0a 58 09 72 65 67 69 73 | 74 65 72 20 69 6e 74 09 |.X.regis|ter int.|
|00002fd0| 69 3b 0a 58 09 72 65 67 | 69 73 74 65 72 20 63 68 |i;.X.reg|ister ch|
|00002fe0| 61 72 09 2a 73 74 72 69 | 6e 67 73 3b 0a 58 09 74 |ar.*stri|ngs;.X.t|
|00002ff0| 69 6d 65 5f 74 09 09 69 | 64 4d 6f 64 54 69 6d 65 |ime_t..i|dModTime|
|00003000| 3b 0a 58 0a 58 09 69 66 | 20 28 28 69 64 46 49 4c |;.X.X.if| ((idFIL|
|00003010| 45 20 3d 20 66 6f 70 65 | 6e 28 69 64 46 69 6c 65 |E = fope|n(idFile|
|00003020| 2c 20 22 72 22 29 29 20 | 3d 3d 20 4e 55 4c 4c 29 |, "r")) |== NULL)|
|00003030| 20 7b 0a 58 09 09 66 69 | 6c 65 72 72 28 22 6f 70 | {.X..fi|lerr("op|
|00003040| 65 6e 22 2c 20 69 64 46 | 69 6c 65 29 3b 0a 58 09 |en", idF|ile);.X.|
|00003050| 09 75 73 61 67 65 28 29 | 3b 0a 58 09 7d 0a 58 09 |.usage()|;.X.}.X.|
|00003060| 2f 2a 0a 58 09 2a 20 20 | 4f 70 65 6e 20 74 68 65 |/*.X.* |Open the|
|00003070| 20 69 64 20 66 69 6c 65 | 2c 20 67 65 74 20 69 74 | id file|, get it|
|00003080| 73 20 6d 6f 64 2d 74 69 | 6d 65 2c 20 61 6e 64 20 |s mod-ti|me, and |
|00003090| 72 65 61 64 20 69 74 73 | 20 68 65 61 64 65 72 2e |read its| header.|
|000030a0| 0a 58 09 2a 2f 0a 58 09 | 69 66 20 28 66 73 74 61 |.X.*/.X.|if (fsta|
|000030b0| 74 28 66 69 6c 65 6e 6f | 28 69 64 46 49 4c 45 29 |t(fileno|(idFILE)|
|000030c0| 2c 20 26 73 74 61 74 42 | 75 66 29 20 3c 20 30 29 |, &statB|uf) < 0)|
|000030d0| 20 7b 0a 58 09 09 66 69 | 6c 65 72 72 28 22 73 74 | {.X..fi|lerr("st|
|000030e0| 61 74 22 2c 20 69 64 46 | 69 6c 65 29 3b 0a 58 09 |at", idF|ile);.X.|
|000030f0| 09 75 73 61 67 65 28 29 | 3b 0a 58 09 7d 0a 58 09 |.usage()|;.X.}.X.|
|00003100| 69 64 4d 6f 64 54 69 6d | 65 20 3d 20 73 74 61 74 |idModTim|e = stat|
|00003110| 42 75 66 2e 73 74 5f 6d | 74 69 6d 65 3b 0a 58 09 |Buf.st_m|time;.X.|
|00003120| 66 72 65 61 64 28 26 69 | 64 68 2c 20 73 69 7a 65 |fread(&i|dh, size|
|00003130| 6f 66 28 73 74 72 75 63 | 74 20 69 64 68 65 61 64 |of(struc|t idhead|
|00003140| 29 2c 20 31 2c 20 69 64 | 46 49 4c 45 29 3b 0a 58 |), 1, id|FILE);.X|
|00003150| 09 69 66 20 28 21 73 74 | 72 6e 65 71 75 28 69 64 |.if (!st|rnequ(id|
|00003160| 68 2e 69 64 68 5f 6d 61 | 67 69 63 2c 20 49 44 48 |h.idh_ma|gic, IDH|
|00003170| 5f 4d 41 47 49 43 2c 20 | 73 69 7a 65 6f 66 28 69 |_MAGIC, |sizeof(i|
|00003180| 64 68 2e 69 64 68 5f 6d | 61 67 69 63 29 29 29 20 |dh.idh_m|agic))) |
|00003190| 7b 0a 58 09 09 66 70 72 | 69 6e 74 66 28 73 74 64 |{.X..fpr|intf(std|
|000031a0| 65 72 72 2c 20 22 25 73 | 3a 20 4e 6f 74 20 61 6e |err, "%s|: Not an|
|000031b0| 20 69 64 20 66 69 6c 65 | 3a 20 60 25 73 27 5c 6e | id file|: `%s'\n|
|000031c0| 22 2c 20 4d 79 4e 61 6d | 65 2c 20 69 64 46 69 6c |", MyNam|e, idFil|
|000031d0| 65 29 3b 0a 58 09 09 65 | 78 69 74 28 31 29 3b 0a |e);.X..e|xit(1);.|
|000031e0| 58 09 7d 0a 58 09 69 66 | 20 28 69 64 68 2e 69 64 |X.}.X.if| (idh.id|
|000031f0| 68 5f 76 65 72 73 20 21 | 3d 20 49 44 48 5f 56 45 |h_vers !|= IDH_VE|
|00003200| 52 53 29 20 7b 0a 58 09 | 09 66 70 72 69 6e 74 66 |RS) {.X.|.fprintf|
|00003210| 28 73 74 64 65 72 72 2c | 20 22 25 73 3a 20 49 44 |(stderr,| "%s: ID|
|00003220| 20 76 65 72 73 69 6f 6e | 20 6d 69 73 6d 61 74 63 | version| mismatc|
|00003230| 68 20 28 25 6c 64 2c 25 | 6c 64 29 5c 6e 22 2c 20 |h (%ld,%|ld)\n", |
|00003240| 4d 79 4e 61 6d 65 2c 20 | 69 64 68 2e 69 64 68 5f |MyName, |idh.idh_|
|00003250| 76 65 72 73 2c 20 49 44 | 48 5f 56 45 52 53 29 3b |vers, ID|H_VERS);|
|00003260| 0a 58 09 09 65 78 69 74 | 28 31 29 3b 0a 58 09 7d |.X..exit|(1);.X.}|
|00003270| 0a 58 0a 58 09 2f 2a 0a | 58 09 2a 20 20 52 65 61 |.X.X./*.|X.* Rea|
|00003280| 64 20 69 6e 20 74 68 65 | 20 69 64 20 70 61 74 68 |d in the| id path|
|00003290| 6e 61 6d 65 73 2c 20 63 | 6f 6d 70 61 72 65 20 74 |names, c|ompare t|
|000032a0| 68 65 69 72 20 6d 6f 64 | 2d 74 69 6d 65 73 20 77 |heir mod|-times w|
|000032b0| 69 74 68 0a 58 09 2a 20 | 20 74 68 65 20 69 64 20 |ith.X.* | the id |
|000032c0| 66 69 6c 65 2c 20 61 6e | 64 20 69 6e 63 6f 72 70 |file, an|d incorp|
|000032d0| 6f 72 61 74 65 20 74 68 | 65 20 70 61 74 68 6e 61 |orate th|e pathna|
|000032e0| 6d 65 73 20 6f 66 20 72 | 65 63 65 6e 74 6c 79 20 |mes of r|ecently |
|000032f0| 6d 6f 64 69 66 69 65 64 | 20 0a 58 09 2a 20 20 66 |modified| .X.* f|
|00003300| 69 6c 65 73 20 69 6e 20 | 74 68 65 20 69 64 61 72 |iles in |the idar|
|00003310| 67 20 76 65 63 74 6f 72 | 2e 20 20 41 6c 73 6f 2c |g vector|. Also,|
|00003320| 20 63 6f 6e 73 74 72 75 | 63 74 20 61 20 6d 61 73 | constru|ct a mas|
|00003330| 6b 20 6f 66 0a 58 09 2a | 20 20 62 69 74 20 61 72 |k of.X.*| bit ar|
|00003340| 72 61 79 20 70 6f 73 69 | 74 69 6f 6e 73 20 77 65 |ray posi|tions we|
|00003350| 20 77 61 6e 74 20 74 6f | 20 74 75 72 6e 20 6f 66 | want to| turn of|
|00003360| 66 20 77 68 65 6e 20 77 | 65 20 62 75 69 6c 64 20 |f when w|e build |
|00003370| 74 68 65 0a 58 09 2a 20 | 20 69 6e 69 74 69 61 6c |the.X.* | initial|
|00003380| 20 68 61 73 68 2d 74 61 | 62 6c 65 2e 0a 58 09 2a | hash-ta|ble..X.*|
|00003390| 2f 0a 58 09 66 73 65 65 | 6b 28 69 64 46 49 4c 45 |/.X.fsee|k(idFILE|
|000033a0| 2c 20 69 64 68 2e 69 64 | 68 5f 61 72 67 6f 2c 20 |, idh.id|h_argo, |
|000033b0| 30 29 3b 0a 58 09 73 74 | 72 69 6e 67 73 20 3d 20 |0);.X.st|rings = |
|000033c0| 6d 61 6c 6c 6f 63 28 69 | 20 3d 20 69 64 68 2e 69 |malloc(i| = idh.i|
|000033d0| 64 68 5f 6e 61 6d 6f 20 | 2d 20 69 64 68 2e 69 64 |dh_namo |- idh.id|
|000033e0| 68 5f 61 72 67 6f 29 3b | 0a 58 09 66 72 65 61 64 |h_argo);|.X.fread|
|000033f0| 28 73 74 72 69 6e 67 73 | 2c 20 69 2c 20 31 2c 20 |(strings|, i, 1, |
|00003400| 69 64 46 49 4c 45 29 3b | 0a 58 09 53 63 61 6e 43 |idFILE);|.X.ScanC|
|00003410| 6f 75 6e 74 20 3d 20 30 | 3b 0a 58 09 66 6f 72 20 |ount = 0|;.X.for |
|00003420| 28 69 20 3d 20 30 3b 20 | 69 20 3c 20 69 64 68 2e |(i = 0; |i < idh.|
|00003430| 69 64 68 5f 61 72 67 63 | 3b 20 69 2b 2b 29 20 7b |idh_argc|; i++) {|
|00003440| 0a 58 09 09 28 2a 69 64 | 41 72 67 73 50 29 2d 3e |.X..(*id|ArgsP)->|
|00003450| 69 64 61 5f 61 72 67 20 | 3d 20 73 74 72 69 6e 67 |ida_arg |= string|
|00003460| 73 3b 0a 58 09 09 69 66 | 20 28 2a 73 74 72 69 6e |s;.X..if| (*strin|
|00003470| 67 73 20 3d 3d 20 27 2b | 27 20 7c 7c 20 2a 73 74 |gs == '+|' || *st|
|00003480| 72 69 6e 67 73 20 3d 3d | 20 27 2d 27 29 20 7b 0a |rings ==| '-') {.|
|00003490| 58 09 09 09 28 2a 69 64 | 41 72 67 73 50 29 2d 3e |X...(*id|ArgsP)->|
|000034a0| 69 64 61 5f 66 6c 61 67 | 73 20 3d 20 49 44 41 5f |ida_flag|s = IDA_|
|000034b0| 41 52 47 3b 0a 58 09 09 | 09 28 2a 69 64 41 72 67 |ARG;.X..|.(*idArg|
|000034c0| 73 50 29 2d 3e 69 64 61 | 5f 69 6e 64 65 78 20 3d |sP)->ida|_index =|
|000034d0| 20 2d 31 3b 0a 58 09 09 | 7d 20 65 6c 73 65 20 7b | -1;.X..|} else {|
|000034e0| 0a 58 09 09 09 28 2a 69 | 64 41 72 67 73 50 29 2d |.X...(*i|dArgsP)-|
|000034f0| 3e 69 64 61 5f 66 6c 61 | 67 73 20 3d 20 49 44 41 |>ida_fla|gs = IDA|
|00003500| 5f 50 41 54 48 3b 0a 58 | 09 09 09 28 2a 69 64 41 |_PATH;.X|...(*idA|
|00003510| 72 67 73 50 29 2d 3e 69 | 64 61 5f 69 6e 64 65 78 |rgsP)->i|da_index|
|00003520| 20 3d 20 70 6f 73 74 49 | 6e 63 72 28 26 50 61 74 | = postI|ncr(&Pat|
|00003530| 68 43 6f 75 6e 74 29 3b | 0a 58 09 09 09 69 66 20 |hCount);|.X...if |
|00003540| 28 73 74 61 74 28 73 74 | 72 69 6e 67 73 2c 20 26 |(stat(st|rings, &|
|00003550| 73 74 61 74 42 75 66 29 | 20 3c 20 30 29 20 7b 0a |statBuf)| < 0) {.|
|00003560| 58 09 09 09 09 66 69 6c | 65 72 72 28 22 73 74 61 |X....fil|err("sta|
|00003570| 74 22 2c 20 73 74 72 69 | 6e 67 73 29 3b 0a 58 09 |t", stri|ngs);.X.|
|00003580| 09 09 7d 20 65 6c 73 65 | 20 69 66 20 28 73 74 61 |..} else| if (sta|
|00003590| 74 42 75 66 2e 73 74 5f | 6d 74 69 6d 65 20 3e 3d |tBuf.st_|mtime >=|
|000035a0| 20 69 64 4d 6f 64 54 69 | 6d 65 29 20 7b 0a 58 09 | idModTi|me) {.X.|
|000035b0| 09 09 09 28 2a 69 64 41 | 72 67 73 50 29 2d 3e 69 |...(*idA|rgsP)->i|
|000035c0| 64 61 5f 66 6c 61 67 73 | 20 7c 3d 20 49 44 41 5f |da_flags| |= IDA_|
|000035d0| 53 43 41 4e 3b 0a 58 09 | 09 09 09 53 63 61 6e 43 |SCAN;.X.|...ScanC|
|000035e0| 6f 75 6e 74 2b 2b 3b 0a | 58 09 09 09 7d 0a 58 09 |ount++;.|X...}.X.|
|000035f0| 09 7d 0a 58 09 09 28 2a | 69 64 41 72 67 73 50 29 |.}.X..(*|idArgsP)|
|00003600| 20 3d 20 28 28 2a 69 64 | 41 72 67 73 50 29 2d 3e | = ((*id|ArgsP)->|
|00003610| 69 64 61 5f 6e 65 78 74 | 20 3d 20 4e 45 57 28 73 |ida_next| = NEW(s|
|00003620| 74 72 75 63 74 20 69 64 | 61 72 67 29 29 3b 0a 58 |truct id|arg));.X|
|00003630| 09 09 77 68 69 6c 65 20 | 28 2a 73 74 72 69 6e 67 |..while |(*string|
|00003640| 73 2b 2b 29 0a 58 09 09 | 09 3b 0a 58 09 7d 0a 58 |s++).X..|.;.X.}.X|
|00003650| 09 69 66 20 28 53 63 61 | 6e 43 6f 75 6e 74 20 3d |.if (Sca|nCount =|
|00003660| 3d 20 30 29 20 7b 0a 58 | 09 09 66 63 6c 6f 73 65 |= 0) {.X|..fclose|
|00003670| 28 69 64 46 49 4c 45 29 | 3b 0a 58 09 09 65 78 69 |(idFILE)|;.X..exi|
|00003680| 74 28 30 29 3b 0a 58 09 | 7d 0a 58 09 66 63 6c 6f |t(0);.X.|}.X.fclo|
|00003690| 73 65 28 69 64 46 49 4c | 45 29 3b 0a 58 7d 0a 58 |se(idFIL|E);.X}.X|
|000036a0| 0a 58 76 6f 69 64 0a 58 | 75 70 64 61 74 65 49 44 |.Xvoid.X|updateID|
|000036b0| 28 69 64 46 69 6c 65 2c | 20 69 64 41 72 67 73 29 |(idFile,| idArgs)|
|000036c0| 0a 58 09 63 68 61 72 09 | 09 2a 69 64 46 69 6c 65 |.X.char.|.*idFile|
|000036d0| 3b 0a 58 09 73 74 72 75 | 63 74 20 69 64 61 72 67 |;.X.stru|ct idarg|
|000036e0| 09 2a 69 64 41 72 67 73 | 3b 0a 58 7b 0a 58 09 73 |.*idArgs|;.X{.X.s|
|000036f0| 74 72 75 63 74 20 69 64 | 6e 61 6d 65 09 2a 69 64 |truct id|name.*id|
|00003700| 6e 3b 0a 58 09 73 74 72 | 75 63 74 20 69 64 68 65 |n;.X.str|uct idhe|
|00003710| 61 64 09 69 64 68 3b 0a | 58 09 72 65 67 69 73 74 |ad.idh;.|X.regist|
|00003720| 65 72 20 63 68 61 72 09 | 2a 62 69 74 41 72 72 61 |er char.|*bitArra|
|00003730| 79 3b 0a 58 09 63 68 61 | 72 09 09 2a 65 6e 74 72 |y;.X.cha|r..*entr|
|00003740| 79 3b 0a 58 09 72 65 67 | 69 73 74 65 72 20 69 6e |y;.X.reg|ister in|
|00003750| 74 09 69 3b 0a 58 09 46 | 49 4c 45 09 09 2a 69 64 |t.i;.X.F|ILE..*id|
|00003760| 46 49 4c 45 3b 0a 58 09 | 69 6e 74 09 09 63 6d 70 |FILE;.X.|int..cmp|
|00003770| 2c 20 63 6f 75 6e 74 2c | 20 73 69 7a 65 3b 0a 58 |, count,| size;.X|
|00003780| 09 63 68 61 72 09 09 2a | 62 69 74 73 4f 66 66 3b |.char..*|bitsOff;|
|00003790| 0a 58 09 73 74 72 75 63 | 74 20 69 64 6e 61 6d 65 |.X.struc|t idname|
|000037a0| 09 2a 2a 6e 65 77 54 61 | 62 6c 65 2c 20 2a 2a 6d |.**newTa|ble, **m|
|000037b0| 65 72 67 65 54 61 62 6c | 65 3b 0a 58 09 73 74 72 |ergeTabl|e;.X.str|
|000037c0| 75 63 74 20 69 64 6e 61 | 6d 65 09 2a 2a 74 31 2c |uct idna|me.**t1,|
|000037d0| 20 2a 2a 74 32 2c 20 2a | 2a 74 6d 3b 0a 58 0a 58 | **t2, *|*tm;.X.X|
|000037e0| 09 69 66 20 28 28 69 64 | 46 49 4c 45 20 3d 20 66 |.if ((id|FILE = f|
|000037f0| 6f 70 65 6e 28 69 64 46 | 69 6c 65 2c 20 22 72 22 |open(idF|ile, "r"|
|00003800| 29 29 20 3d 3d 20 4e 55 | 4c 4c 29 0a 58 09 09 66 |)) == NU|LL).X..f|
|00003810| 69 6c 65 72 72 28 22 6f | 70 65 6e 22 2c 20 69 64 |ilerr("o|pen", id|
|00003820| 46 69 6c 65 29 3b 0a 58 | 09 66 72 65 61 64 28 26 |File);.X|.fread(&|
|00003830| 69 64 68 2c 20 73 69 7a | 65 6f 66 28 73 74 72 75 |idh, siz|eof(stru|
|00003840| 63 74 20 69 64 68 65 61 | 64 29 2c 20 31 2c 20 69 |ct idhea|d), 1, i|
|00003850| 64 46 49 4c 45 29 3b 0a | 58 0a 58 09 65 6e 74 72 |dFILE);.|X.X.entr|
|00003860| 79 20 3d 20 6d 61 6c 6c | 6f 63 28 69 64 68 2e 69 |y = mall|oc(idh.i|
|00003870| 64 68 5f 62 73 69 7a 29 | 3b 0a 58 0a 58 09 62 69 |dh_bsiz)|;.X.X.bi|
|00003880| 74 73 4f 66 66 20 3d 20 | 6d 61 6c 6c 6f 63 28 42 |tsOff = |malloc(B|
|00003890| 69 74 41 72 72 61 79 53 | 69 7a 65 29 3b 0a 58 09 |itArrayS|ize);.X.|
|000038a0| 62 7a 65 72 6f 28 62 69 | 74 73 4f 66 66 2c 20 42 |bzero(bi|tsOff, B|
|000038b0| 69 74 41 72 72 61 79 53 | 69 7a 65 29 3b 0a 58 09 |itArrayS|ize);.X.|
|000038c0| 66 6f 72 20 28 69 20 3d | 20 30 3b 20 69 64 41 72 |for (i =| 0; idAr|
|000038d0| 67 73 2d 3e 69 64 61 5f | 6e 65 78 74 3b 20 69 64 |gs->ida_|next; id|
|000038e0| 41 72 67 73 20 3d 20 69 | 64 41 72 67 73 2d 3e 69 |Args = i|dArgs->i|
|000038f0| 64 61 5f 6e 65 78 74 29 | 0a 58 09 09 69 66 20 28 |da_next)|.X..if (|
|00003900| 69 64 41 72 67 73 2d 3e | 69 64 61 5f 66 6c 61 67 |idArgs->|ida_flag|
|00003910| 73 20 26 20 49 44 41 5f | 53 43 41 4e 29 0a 58 09 |s & IDA_|SCAN).X.|
|00003920| 09 09 42 49 54 53 45 54 | 28 62 69 74 73 4f 66 66 |..BITSET|(bitsOff|
|00003930| 2c 20 69 64 41 72 67 73 | 2d 3e 69 64 61 5f 69 6e |, idArgs|->ida_in|
|00003940| 64 65 78 29 3b 0a 58 0a | 58 09 62 69 74 41 72 72 |dex);.X.|X.bitArr|
|00003950| 61 79 20 3d 20 6d 61 6c | 6c 6f 63 28 42 69 74 41 |ay = mal|loc(BitA|
|00003960| 72 72 61 79 53 69 7a 65 | 29 3b 0a 58 09 62 7a 65 |rraySize|);.X.bze|
|00003970| 72 6f 28 62 69 74 41 72 | 72 61 79 2c 20 42 69 74 |ro(bitAr|ray, Bit|
|00003980| 41 72 72 61 79 53 69 7a | 65 29 3b 0a 58 09 74 32 |ArraySiz|e);.X.t2|
|00003990| 20 3d 20 6e 65 77 54 61 | 62 6c 65 20 3d 20 28 73 | = newTa|ble = (s|
|000039a0| 74 72 75 63 74 20 69 64 | 6e 61 6d 65 20 2a 2a 29 |truct id|name **)|
|000039b0| 6d 61 6c 6c 6f 63 28 28 | 69 64 68 2e 69 64 68 5f |malloc((|idh.idh_|
|000039c0| 6e 61 6d 63 20 2b 20 31 | 29 20 2a 20 73 69 7a 65 |namc + 1|) * size|
|000039d0| 6f 66 28 73 74 72 75 63 | 74 20 69 64 6e 61 6d 65 |of(struc|t idname|
|000039e0| 20 2a 29 29 3b 0a 58 09 | 66 73 65 65 6b 28 69 64 | *));.X.|fseek(id|
|000039f0| 46 49 4c 45 2c 20 69 64 | 68 2e 69 64 68 5f 6e 61 |FILE, id|h.idh_na|
|00003a00| 6d 6f 2c 20 30 29 3b 0a | 58 09 63 6f 75 6e 74 20 |mo, 0);.|X.count |
|00003a10| 3d 20 30 3b 0a 58 09 66 | 6f 72 20 28 69 20 3d 20 |= 0;.X.f|or (i = |
|00003a20| 30 3b 20 69 20 3c 20 69 | 64 68 2e 69 64 68 5f 6e |0; i < i|dh.idh_n|
|00003a30| 61 6d 63 3b 20 69 2b 2b | 29 20 7b 0a 58 09 09 73 |amc; i++|) {.X..s|
|00003a40| 69 7a 65 20 3d 20 31 20 | 2b 20 66 67 65 74 73 30 |ize = 1 |+ fgets0|
|00003a50| 28 65 6e 74 72 79 2c 20 | 69 64 68 2e 69 64 68 5f |(entry, |idh.idh_|
|00003a60| 62 73 69 7a 2c 20 69 64 | 46 49 4c 45 29 3b 0a 58 |bsiz, id|FILE);.X|
|00003a70| 09 09 67 65 74 73 46 46 | 28 26 65 6e 74 72 79 5b |..getsFF|(&entry[|
|00003a80| 73 69 7a 65 5d 2c 20 69 | 64 46 49 4c 45 29 3b 0a |size], i|dFILE);.|
|00003a90| 58 09 09 76 65 63 54 6f | 42 69 74 73 28 62 69 74 |X..vecTo|Bits(bit|
|00003aa0| 41 72 72 61 79 2c 20 26 | 65 6e 74 72 79 5b 73 69 |Array, &|entry[si|
|00003ab0| 7a 65 5d 2c 20 69 64 68 | 2e 69 64 68 5f 76 65 63 |ze], idh|.idh_vec|
|00003ac0| 63 29 3b 0a 58 09 09 62 | 69 74 73 63 6c 72 28 62 |c);.X..b|itsclr(b|
|00003ad0| 69 74 41 72 72 61 79 2c | 20 62 69 74 73 4f 66 66 |itArray,| bitsOff|
|00003ae0| 2c 20 42 69 74 41 72 72 | 61 79 53 69 7a 65 29 3b |, BitArr|aySize);|
|00003af0| 0a 58 09 09 69 66 20 28 | 21 62 69 74 73 61 6e 79 |.X..if (|!bitsany|
|00003b00| 28 62 69 74 41 72 72 61 | 79 2c 20 42 69 74 41 72 |(bitArra|y, BitAr|
|00003b10| 72 61 79 53 69 7a 65 29 | 29 0a 58 09 09 09 63 6f |raySize)|).X...co|
|00003b20| 6e 74 69 6e 75 65 3b 0a | 58 09 09 2a 74 32 20 3d |ntinue;.|X..*t2 =|
|00003b30| 20 6e 65 77 49 64 4e 61 | 6d 65 28 49 44 5f 53 54 | newIdNa|me(ID_ST|
|00003b40| 52 49 4e 47 28 65 6e 74 | 72 79 29 29 3b 0a 58 09 |RING(ent|ry));.X.|
|00003b50| 09 62 69 74 73 73 65 74 | 28 28 2a 74 32 29 2d 3e |.bitsset|((*t2)->|
|00003b60| 69 64 6e 5f 62 69 74 76 | 2c 20 62 69 74 41 72 72 |idn_bitv|, bitArr|
|00003b70| 61 79 2c 20 42 69 74 41 | 72 72 61 79 53 69 7a 65 |ay, BitA|rraySize|
|00003b80| 29 3b 0a 58 09 09 28 2a | 74 32 29 2d 3e 69 64 6e |);.X..(*|t2)->idn|
|00003b90| 5f 66 6c 61 67 73 20 3d | 20 49 44 5f 46 4c 41 47 |_flags =| ID_FLAG|
|00003ba0| 53 28 65 6e 74 72 79 29 | 3b 0a 58 09 09 62 7a 65 |S(entry)|;.X..bze|
|00003bb0| 72 6f 28 62 69 74 41 72 | 72 61 79 2c 20 42 69 74 |ro(bitAr|ray, Bit|
|00003bc0| 41 72 72 61 79 53 69 7a | 65 29 3b 0a 58 09 09 74 |ArraySiz|e);.X..t|
|00003bd0| 32 2b 2b 3b 20 63 6f 75 | 6e 74 2b 2b 3b 0a 58 09 |2++; cou|nt++;.X.|
|00003be0| 7d 0a 58 09 2a 74 32 20 | 3d 20 4e 55 4c 4c 3b 0a |}.X.*t2 |= NULL;.|
|00003bf0| 58 0a 58 09 74 31 20 3d | 20 48 61 73 68 54 61 62 |X.X.t1 =| HashTab|
|00003c00| 6c 65 3b 0a 58 09 74 32 | 20 3d 20 6e 65 77 54 61 |le;.X.t2| = newTa|
|00003c10| 62 6c 65 3b 0a 58 09 74 | 6d 20 3d 20 6d 65 72 67 |ble;.X.t|m = merg|
|00003c20| 65 54 61 62 6c 65 20 3d | 20 28 73 74 72 75 63 74 |eTable =| (struct|
|00003c30| 20 69 64 6e 61 6d 65 20 | 2a 2a 29 63 61 6c 6c 6f | idname |**)callo|
|00003c40| 63 28 48 61 73 68 46 69 | 6c 6c 20 2b 20 63 6f 75 |c(HashFi|ll + cou|
|00003c50| 6e 74 20 2b 20 31 2c 20 | 73 69 7a 65 6f 66 28 73 |nt + 1, |sizeof(s|
|00003c60| 74 72 75 63 74 20 69 64 | 6e 61 6d 65 20 2a 29 29 |truct id|name *))|
|00003c70| 3b 0a 58 09 77 68 69 6c | 65 20 28 2a 74 31 20 26 |;.X.whil|e (*t1 &|
|00003c80| 26 20 2a 74 32 29 20 7b | 0a 58 09 09 63 6d 70 20 |& *t2) {|.X..cmp |
|00003c90| 3d 20 73 74 72 63 6d 70 | 28 28 2a 74 31 29 2d 3e |= strcmp|((*t1)->|
|00003ca0| 69 64 6e 5f 6e 61 6d 65 | 2c 20 28 2a 74 32 29 2d |idn_name|, (*t2)-|
|00003cb0| 3e 69 64 6e 5f 6e 61 6d | 65 29 3b 0a 58 09 09 69 |>idn_nam|e);.X..i|
|00003cc0| 66 20 28 63 6d 70 20 3c | 20 30 29 0a 58 09 09 09 |f (cmp <| 0).X...|
|00003cd0| 2a 74 6d 2b 2b 20 3d 20 | 2a 74 31 2b 2b 3b 0a 58 |*tm++ = |*t1++;.X|
|00003ce0| 09 09 65 6c 73 65 20 69 | 66 20 28 63 6d 70 20 3e |..else i|f (cmp >|
|00003cf0| 20 30 29 0a 58 09 09 09 | 2a 74 6d 2b 2b 20 3d 20 | 0).X...|*tm++ = |
|00003d00| 2a 74 32 2b 2b 3b 0a 58 | 09 09 65 6c 73 65 20 7b |*t2++;.X|..else {|
|00003d10| 0a 58 09 09 09 28 2a 74 | 31 29 2d 3e 69 64 6e 5f |.X...(*t|1)->idn_|
|00003d20| 66 6c 61 67 73 20 7c 3d | 20 28 2a 74 32 29 2d 3e |flags |=| (*t2)->|
|00003d30| 69 64 6e 5f 66 6c 61 67 | 73 3b 0a 58 09 09 09 28 |idn_flag|s;.X...(|
|00003d40| 2a 74 31 29 2d 3e 69 64 | 6e 5f 66 6c 61 67 73 20 |*t1)->id|n_flags |
|00003d50| 26 3d 20 7e 49 44 4e 5f | 53 4f 4c 4f 3b 0a 58 09 |&= ~IDN_|SOLO;.X.|
|00003d60| 09 09 62 69 74 73 73 65 | 74 28 28 2a 74 31 29 2d |..bitsse|t((*t1)-|
|00003d70| 3e 69 64 6e 5f 62 69 74 | 76 2c 20 28 2a 74 32 29 |>idn_bit|v, (*t2)|
|00003d80| 2d 3e 69 64 6e 5f 62 69 | 74 76 2c 20 42 69 74 41 |->idn_bi|tv, BitA|
|00003d90| 72 72 61 79 53 69 7a 65 | 29 3b 0a 58 09 09 09 2a |rraySize|);.X...*|
|00003da0| 74 6d 2b 2b 20 3d 20 2a | 74 31 3b 0a 58 09 09 09 |tm++ = *|t1;.X...|
|00003db0| 74 31 2b 2b 2c 20 74 32 | 2b 2b 3b 0a 58 09 09 7d |t1++, t2|++;.X..}|
|00003dc0| 0a 58 09 7d 0a 58 09 77 | 68 69 6c 65 20 28 2a 74 |.X.}.X.w|hile (*t|
|00003dd0| 31 29 0a 58 09 09 2a 74 | 6d 2b 2b 20 3d 20 2a 74 |1).X..*t|m++ = *t|
|00003de0| 31 2b 2b 3b 0a 58 09 77 | 68 69 6c 65 20 28 2a 74 |1++;.X.w|hile (*t|
|00003df0| 32 29 0a 58 09 09 2a 74 | 6d 2b 2b 20 3d 20 2a 74 |2).X..*t|m++ = *t|
|00003e00| 32 2b 2b 3b 0a 58 09 2a | 74 6d 20 3d 20 4e 55 4c |2++;.X.*|tm = NUL|
|00003e10| 4c 3b 0a 58 09 48 61 73 | 68 54 61 62 6c 65 20 3d |L;.X.Has|hTable =|
|00003e20| 20 6d 65 72 67 65 54 61 | 62 6c 65 3b 0a 58 09 48 | mergeTa|ble;.X.H|
|00003e30| 61 73 68 46 69 6c 6c 20 | 3d 20 74 6d 20 2d 20 6d |ashFill |= tm - m|
|00003e40| 65 72 67 65 54 61 62 6c | 65 3b 0a 58 7d 0a 58 0a |ergeTabl|e;.X}.X.|
|00003e50| 58 2f 2a 0a 58 09 43 6f | 6e 73 20 75 70 20 61 20 |X/*.X.Co|ns up a |
|00003e60| 6c 69 73 74 20 6f 66 20 | 69 64 41 72 67 73 20 61 |list of |idArgs a|
|00003e70| 73 20 73 75 70 70 6c 69 | 65 64 20 69 6e 20 61 20 |s suppli|ed in a |
|00003e80| 66 69 6c 65 2e 0a 58 2a | 2f 0a 58 76 6f 69 64 0a |file..X*|/.Xvoid.|
|00003e90| 58 66 69 6c 65 49 64 41 | 72 67 73 28 61 72 67 46 |XfileIdA|rgs(argF|
|00003ea0| 49 4c 45 2c 20 69 64 41 | 72 67 73 50 29 0a 58 09 |ILE, idA|rgsP).X.|
|00003eb0| 46 49 4c 45 09 09 2a 61 | 72 67 46 49 4c 45 3b 0a |FILE..*a|rgFILE;.|
|00003ec0| 58 09 73 74 72 75 63 74 | 20 69 64 61 72 67 09 2a |X.struct| idarg.*|
|00003ed0| 2a 69 64 41 72 67 73 50 | 3b 0a 58 7b 0a 58 09 69 |*idArgsP|;.X{.X.i|
|00003ee0| 6e 74 09 09 66 69 6c 65 | 43 6f 75 6e 74 3b 0a 58 |nt..file|Count;.X|
|00003ef0| 09 63 68 61 72 09 09 62 | 75 66 5b 42 55 46 53 49 |.char..b|uf[BUFSI|
|00003f00| 5a 5d 3b 0a 58 09 63 68 | 61 72 09 09 2a 61 72 67 |Z];.X.ch|ar..*arg|
|00003f10| 3b 0a 58 0a 58 09 66 69 | 6c 65 43 6f 75 6e 74 20 |;.X.X.fi|leCount |
|00003f20| 3d 20 30 3b 0a 58 09 77 | 68 69 6c 65 20 28 66 67 |= 0;.X.w|hile (fg|
|00003f30| 65 74 73 28 62 75 66 2c | 20 73 69 7a 65 6f 66 28 |ets(buf,| sizeof(|
|00003f40| 62 75 66 29 2c 20 61 72 | 67 46 49 4c 45 29 29 20 |buf), ar|gFILE)) |
|00003f50| 7b 0a 58 09 09 28 2a 69 | 64 41 72 67 73 50 29 2d |{.X..(*i|dArgsP)-|
|00003f60| 3e 69 64 61 5f 61 72 67 | 20 3d 20 61 72 67 20 3d |>ida_arg| = arg =|
|00003f70| 20 73 74 72 6e 73 61 76 | 28 62 75 66 2c 20 73 74 | strnsav|(buf, st|
|00003f80| 72 6c 65 6e 28 62 75 66 | 29 2d 31 29 3b 0a 58 09 |rlen(buf|)-1);.X.|
|00003f90| 09 69 66 20 28 2a 61 72 | 67 20 3d 3d 20 27 2b 27 |.if (*ar|g == '+'|
|00003fa0| 20 7c 7c 20 2a 61 72 67 | 20 3d 3d 20 27 2d 27 29 | || *arg| == '-')|
|00003fb0| 20 7b 0a 58 09 09 09 28 | 2a 69 64 41 72 67 73 50 | {.X...(|*idArgsP|
|00003fc0| 29 2d 3e 69 64 61 5f 66 | 6c 61 67 73 20 3d 20 49 |)->ida_f|lags = I|
|00003fd0| 44 41 5f 41 52 47 3b 0a | 58 09 09 09 28 2a 69 64 |DA_ARG;.|X...(*id|
|00003fe0| 41 72 67 73 50 29 2d 3e | 69 64 61 5f 69 6e 64 65 |ArgsP)->|ida_inde|
|00003ff0| 78 20 3d 20 2d 31 3b 0a | 58 09 09 7d 20 65 6c 73 |x = -1;.|X..} els|
|00004000| 65 20 7b 0a 58 09 09 09 | 28 2a 69 64 41 72 67 73 |e {.X...|(*idArgs|
|00004010| 50 29 2d 3e 69 64 61 5f | 66 6c 61 67 73 20 3d 20 |P)->ida_|flags = |
|00004020| 49 44 41 5f 53 43 41 4e | 7c 49 44 41 5f 50 41 54 |IDA_SCAN||IDA_PAT|
|00004030| 48 3b 0a 58 09 09 09 28 | 2a 69 64 41 72 67 73 50 |H;.X...(|*idArgsP|
|00004040| 29 2d 3e 69 64 61 5f 69 | 6e 64 65 78 20 3d 20 70 |)->ida_i|ndex = p|
|00004050| 6f 73 74 49 6e 63 72 28 | 26 50 61 74 68 43 6f 75 |ostIncr(|&PathCou|
|00004060| 6e 74 29 3b 0a 58 09 09 | 09 53 63 61 6e 43 6f 75 |nt);.X..|.ScanCou|
|00004070| 6e 74 2b 2b 3b 0a 58 09 | 09 7d 0a 58 09 09 28 2a |nt++;.X.|.}.X..(*|
|00004080| 69 64 41 72 67 73 50 29 | 20 3d 20 28 28 2a 69 64 |idArgsP)| = ((*id|
|00004090| 41 72 67 73 50 29 2d 3e | 69 64 61 5f 6e 65 78 74 |ArgsP)->|ida_next|
|000040a0| 20 3d 20 4e 45 57 28 73 | 74 72 75 63 74 20 69 64 | = NEW(s|truct id|
|000040b0| 61 72 67 29 29 3b 0a 58 | 09 7d 0a 58 7d 0a 58 0a |arg));.X|.}.X}.X.|
|000040c0| 58 76 6f 69 64 0a 58 69 | 6e 69 74 48 61 73 68 54 |Xvoid.Xi|nitHashT|
|000040d0| 61 62 6c 65 28 70 61 74 | 68 43 6f 75 6e 74 29 0a |able(pat|hCount).|
|000040e0| 58 09 69 6e 74 09 09 70 | 61 74 68 43 6f 75 6e 74 |X.int..p|athCount|
|000040f0| 3b 0a 58 7b 0a 58 09 69 | 66 20 28 28 48 61 73 68 |;.X{.X.i|f ((Hash|
|00004100| 53 69 7a 65 20 3d 20 72 | 6f 75 6e 64 32 28 28 70 |Size = r|ound2((p|
|00004110| 61 74 68 43 6f 75 6e 74 | 20 3c 3c 20 36 29 20 2b |athCount| << 6) +|
|00004120| 20 35 31 31 29 29 20 3e | 20 30 78 38 30 30 30 29 | 511)) >| 0x8000)|
|00004130| 0a 58 09 09 48 61 73 68 | 53 69 7a 65 20 3d 20 30 |.X..Hash|Size = 0|
|00004140| 78 38 30 30 30 3b 0a 58 | 09 48 61 73 68 4d 61 78 |x8000;.X|.HashMax|
|00004150| 4c 6f 61 64 20 3d 20 48 | 61 73 68 53 69 7a 65 20 |Load = H|ashSize |
|00004160| 2d 20 28 48 61 73 68 53 | 69 7a 65 20 3e 3e 20 34 |- (HashS|ize >> 4|
|00004170| 29 3b 09 2f 2a 20 61 62 | 6f 75 74 20 39 34 25 20 |);./* ab|out 94% |
|00004180| 2a 2f 0a 58 09 48 61 73 | 68 54 61 62 6c 65 20 3d |*/.X.Has|hTable =|
|00004190| 20 28 73 74 72 75 63 74 | 20 69 64 6e 61 6d 65 20 | (struct| idname |
|000041a0| 2a 2a 29 63 61 6c 6c 6f | 63 28 48 61 73 68 53 69 |**)callo|c(HashSi|
|000041b0| 7a 65 2c 20 73 69 7a 65 | 6f 66 28 73 74 72 75 63 |ze, size|of(struc|
|000041c0| 74 20 69 64 6e 61 6d 65 | 20 2a 29 29 3b 0a 58 7d |t idname| *));.X}|
|000041d0| 0a 58 0a 58 2f 2a 0a 58 | 09 44 6f 75 62 6c 65 20 |.X.X/*.X|.Double |
|000041e0| 74 68 65 20 73 69 7a 65 | 20 6f 66 20 74 68 65 20 |the size| of the |
|000041f0| 68 61 73 68 20 74 61 62 | 6c 65 20 69 6e 20 74 68 |hash tab|le in th|
|00004200| 65 0a 58 09 65 76 65 6e | 74 20 6f 66 20 6f 76 65 |e.X.even|t of ove|
|00004210| 72 66 6c 6f 77 2e 2e 2e | 0a 58 2a 2f 0a 58 76 6f |rflow...|.X*/.Xvo|
|00004220| 69 64 0a 58 72 65 68 61 | 73 68 28 29 0a 58 7b 0a |id.Xreha|sh().X{.|
|00004230| 58 09 6c 6f 6e 67 09 09 | 6f 6c 64 48 61 73 68 53 |X.long..|oldHashS|
|00004240| 69 7a 65 20 3d 20 48 61 | 73 68 53 69 7a 65 3b 0a |ize = Ha|shSize;.|
|00004250| 58 09 73 74 72 75 63 74 | 20 69 64 6e 61 6d 65 09 |X.struct| idname.|
|00004260| 2a 2a 6f 6c 64 48 61 73 | 68 54 61 62 6c 65 20 3d |**oldHas|hTable =|
|00004270| 20 48 61 73 68 54 61 62 | 6c 65 3b 0a 58 09 72 65 | HashTab|le;.X.re|
|00004280| 67 69 73 74 65 72 20 73 | 74 72 75 63 74 20 69 64 |gister s|truct id|
|00004290| 6e 61 6d 65 09 2a 2a 68 | 74 70 3b 0a 58 09 72 65 |name.**h|tp;.X.re|
|000042a0| 67 69 73 74 65 72 20 73 | 74 72 75 63 74 20 69 64 |gister s|truct id|
|000042b0| 6e 61 6d 65 09 2a 2a 73 | 6c 6f 74 3b 0a 58 0a 58 |name.**s|lot;.X.X|
|000042c0| 09 48 61 73 68 53 69 7a | 65 20 2a 3d 20 32 3b 0a |.HashSiz|e *= 2;.|
|000042d0| 58 09 69 66 20 28 56 65 | 72 62 6f 73 65 29 0a 58 |X.if (Ve|rbose).X|
|000042e0| 09 09 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |..fprint|f(stderr|
|000042f0| 2c 20 22 52 65 68 61 73 | 68 69 6e 67 2e 2e 2e 20 |, "Rehas|hing... |
|00004300| 28 64 6f 75 62 6c 69 6e | 67 20 73 69 7a 65 20 74 |(doublin|g size t|
|00004310| 6f 20 25 6c 64 29 5c 6e | 22 2c 20 48 61 73 68 53 |o %ld)\n|", HashS|
|00004320| 69 7a 65 29 3b 0a 58 09 | 48 61 73 68 4d 61 78 4c |ize);.X.|HashMaxL|
|00004330| 6f 61 64 20 3d 20 48 61 | 73 68 53 69 7a 65 20 2d |oad = Ha|shSize -|
|00004340| 20 28 48 61 73 68 53 69 | 7a 65 20 3e 3e 20 34 29 | (HashSi|ze >> 4)|
|00004350| 3b 0a 58 09 48 61 73 68 | 54 61 62 6c 65 20 3d 20 |;.X.Hash|Table = |
|00004360| 28 73 74 72 75 63 74 20 | 69 64 6e 61 6d 65 20 2a |(struct |idname *|
|00004370| 2a 29 63 61 6c 6c 6f 63 | 28 48 61 73 68 53 69 7a |*)calloc|(HashSiz|
|00004380| 65 2c 20 73 69 7a 65 6f | 66 28 73 74 72 75 63 74 |e, sizeo|f(struct|
|00004390| 20 69 64 6e 61 6d 65 20 | 2a 29 29 3b 0a 58 0a 58 | idname |*));.X.X|
|000043a0| 09 48 61 73 68 46 69 6c | 6c 20 3d 20 30 3b 0a 58 |.HashFil|l = 0;.X|
|000043b0| 09 66 6f 72 20 28 68 74 | 70 20 3d 20 6f 6c 64 48 |.for (ht|p = oldH|
|000043c0| 61 73 68 54 61 62 6c 65 | 3b 20 68 74 70 20 3c 20 |ashTable|; htp < |
|000043d0| 26 6f 6c 64 48 61 73 68 | 54 61 62 6c 65 5b 6f 6c |&oldHash|Table[ol|
|000043e0| 64 48 61 73 68 53 69 7a | 65 5d 3b 20 68 74 70 2b |dHashSiz|e]; htp+|
|000043f0| 2b 29 20 7b 0a 58 09 09 | 69 66 20 28 2a 68 74 70 |+) {.X..|if (*htp|
|00004400| 20 3d 3d 20 4e 55 4c 4c | 29 0a 58 09 09 09 63 6f | == NULL|).X...co|
|00004410| 6e 74 69 6e 75 65 3b 0a | 58 09 09 73 6c 6f 74 20 |ntinue;.|X..slot |
|00004420| 3d 20 28 73 74 72 75 63 | 74 20 69 64 6e 61 6d 65 |= (struc|t idname|
|00004430| 20 2a 2a 29 68 61 73 68 | 53 65 61 72 63 68 28 28 | **)hash|Search((|
|00004440| 2a 68 74 70 29 2d 3e 69 | 64 6e 5f 6e 61 6d 65 2c |*htp)->i|dn_name,|
|00004450| 20 28 63 68 61 72 20 2a | 29 48 61 73 68 54 61 62 | (char *|)HashTab|
|00004460| 6c 65 2c 20 48 61 73 68 | 53 69 7a 65 2c 20 73 69 |le, Hash|Size, si|
|00004470| 7a 65 6f 66 28 73 74 72 | 75 63 74 20 69 64 6e 61 |zeof(str|uct idna|
|00004480| 6d 65 20 2a 29 2c 20 68 | 31 73 74 72 2c 20 68 32 |me *), h|1str, h2|
|00004490| 73 74 72 2c 20 69 64 6e | 48 61 73 68 43 6d 70 2c |str, idn|HashCmp,|
|000044a0| 20 26 48 61 73 68 50 72 | 6f 62 65 73 29 3b 0a 58 | &HashPr|obes);.X|
|000044b0| 09 09 69 66 20 28 2a 73 | 6c 6f 74 29 20 7b 0a 58 |..if (*s|lot) {.X|
|000044c0| 09 09 09 66 70 72 69 6e | 74 66 28 73 74 64 65 72 |...fprin|tf(stder|
|000044d0| 72 2c 20 22 25 73 3a 20 | 44 75 70 6c 69 63 61 74 |r, "%s: |Duplicat|
|000044e0| 65 20 68 61 73 68 20 65 | 6e 74 72 79 21 5c 6e 22 |e hash e|ntry!\n"|
|000044f0| 29 3b 0a 58 09 09 09 65 | 78 69 74 28 31 29 3b 0a |);.X...e|xit(1);.|
|00004500| 58 09 09 7d 0a 58 09 09 | 2a 73 6c 6f 74 20 3d 20 |X..}.X..|*slot = |
|00004510| 2a 68 74 70 3b 0a 58 09 | 09 48 61 73 68 53 65 61 |*htp;.X.|.HashSea|
|00004520| 72 63 68 65 73 2b 2b 3b | 0a 58 09 09 48 61 73 68 |rches++;|.X..Hash|
|00004530| 46 69 6c 6c 2b 2b 3b 0a | 58 09 7d 0a 58 09 66 72 |Fill++;.|X.}.X.fr|
|00004540| 65 65 28 6f 6c 64 48 61 | 73 68 54 61 62 6c 65 29 |ee(oldHa|shTable)|
|00004550| 3b 0a 58 7d 0a 58 0a 58 | 2f 2a 0a 58 09 52 6f 75 |;.X}.X.X|/*.X.Rou|
|00004560| 6e 64 20 61 20 67 69 76 | 65 6e 20 6e 75 6d 62 65 |nd a giv|en numbe|
|00004570| 72 20 75 70 20 74 6f 20 | 74 68 65 20 6e 65 61 72 |r up to |the near|
|00004580| 65 73 74 20 70 6f 77 65 | 72 20 6f 66 20 32 2e 0a |est powe|r of 2..|
|00004590| 58 2a 2f 0a 58 69 6e 74 | 0a 58 72 6f 75 6e 64 32 |X*/.Xint|.Xround2|
|000045a0| 28 72 6f 75 67 68 29 0a | 58 09 69 6e 74 09 09 72 |(rough).|X.int..r|
|000045b0| 6f 75 67 68 3b 0a 58 7b | 0a 58 09 69 6e 74 09 09 |ough;.X{|.X.int..|
|000045c0| 72 6f 75 6e 64 3b 0a 58 | 0a 58 09 72 6f 75 6e 64 |round;.X|.X.round|
|000045d0| 20 3d 20 31 3b 0a 58 09 | 77 68 69 6c 65 20 28 72 | = 1;.X.|while (r|
|000045e0| 6f 75 67 68 29 20 7b 0a | 58 09 09 72 6f 75 6e 64 |ough) {.|X..round|
|000045f0| 20 3c 3c 3d 20 31 3b 0a | 58 09 09 72 6f 75 67 68 | <<= 1;.|X..rough|
|00004600| 20 3e 3e 3d 20 31 3b 0a | 58 09 7d 0a 58 09 72 65 | >>= 1;.|X.}.X.re|
|00004610| 74 75 72 6e 20 72 6f 75 | 6e 64 3b 0a 58 7d 0a 58 |turn rou|nd;.X}.X|
|00004620| 0a 58 2f 2a 0a 58 09 60 | 63 6f 6d 70 61 72 27 20 |.X/*.X.`|compar' |
|00004630| 66 75 6e 63 74 69 6f 6e | 20 66 6f 72 20 68 61 73 |function| for has|
|00004640| 68 53 65 61 72 63 68 28 | 29 0a 58 2a 2f 0a 58 69 |hSearch(|).X*/.Xi|
|00004650| 6e 74 0a 58 69 64 6e 48 | 61 73 68 43 6d 70 28 6b |nt.XidnH|ashCmp(k|
|00004660| 65 79 2c 20 69 64 6e 29 | 0a 58 09 63 68 61 72 09 |ey, idn)|.X.char.|
|00004670| 09 2a 6b 65 79 3b 0a 58 | 09 73 74 72 75 63 74 20 |.*key;.X|.struct |
|00004680| 69 64 6e 61 6d 65 09 2a | 2a 69 64 6e 3b 0a 58 7b |idname.*|*idn;.X{|
|00004690| 0a 58 09 69 6e 74 09 09 | 63 6f 6c 6c 61 74 65 3b |.X.int..|collate;|
|000046a0| 0a 58 0a 58 09 69 66 20 | 28 2a 69 64 6e 20 3d 3d |.X.X.if |(*idn ==|
|000046b0| 20 4e 55 4c 4c 29 0a 58 | 09 09 72 65 74 75 72 6e | NULL).X|..return|
|000046c0| 20 30 3b 0a 58 09 0a 58 | 09 69 66 20 28 28 63 6f | 0;.X..X|.if ((co|
|000046d0| 6c 6c 61 74 65 20 3d 20 | 73 74 72 63 6d 70 28 6b |llate = |strcmp(k|
|000046e0| 65 79 2c 20 28 2a 69 64 | 6e 29 2d 3e 69 64 6e 5f |ey, (*id|n)->idn_|
|000046f0| 6e 61 6d 65 29 29 20 3d | 3d 20 30 29 0a 58 09 09 |name)) =|= 0).X..|
|00004700| 28 2a 69 64 6e 29 2d 3e | 69 64 6e 5f 66 6c 61 67 |(*idn)->|idn_flag|
|00004710| 73 20 26 3d 20 7e 49 44 | 4e 5f 53 4f 4c 4f 3b 09 |s &= ~ID|N_SOLO;.|
|00004720| 2f 2a 20 77 65 20 66 6f | 75 6e 64 20 61 6e 6f 74 |/* we fo|und anot|
|00004730| 68 65 72 20 6f 63 63 75 | 72 61 6e 63 65 20 2a 2f |her occu|rance */|
|00004740| 0a 58 0a 58 09 72 65 74 | 75 72 6e 20 63 6f 6c 6c |.X.X.ret|urn coll|
|00004750| 61 74 65 3b 0a 58 7d 0a | 58 0a 58 2f 2a 0a 58 09 |ate;.X}.|X.X/*.X.|
|00004760| 60 63 6f 6d 70 61 72 27 | 20 66 75 6e 63 74 69 6f |`compar'| functio|
|00004770| 6e 20 66 6f 72 20 71 73 | 6f 72 74 28 29 2e 0a 58 |n for qs|ort()..X|
|00004780| 2a 2f 0a 58 69 6e 74 0a | 58 69 64 6e 51 73 6f 72 |*/.Xint.|XidnQsor|
|00004790| 74 43 6d 70 28 69 64 6e | 31 2c 20 69 64 6e 32 29 |tCmp(idn|1, idn2)|
|000047a0| 0a 58 09 73 74 72 75 63 | 74 20 69 64 6e 61 6d 65 |.X.struc|t idname|
|000047b0| 09 2a 2a 69 64 6e 31 3b | 0a 58 09 73 74 72 75 63 |.**idn1;|.X.struc|
|000047c0| 74 20 69 64 6e 61 6d 65 | 09 2a 2a 69 64 6e 32 3b |t idname|.**idn2;|
|000047d0| 0a 58 7b 0a 58 09 69 66 | 20 28 2a 69 64 6e 31 20 |.X{.X.if| (*idn1 |
|000047e0| 3d 3d 20 2a 69 64 6e 32 | 29 0a 58 09 09 72 65 74 |== *idn2|).X..ret|
|000047f0| 75 72 6e 20 30 3b 0a 58 | 09 69 66 20 28 2a 69 64 |urn 0;.X|.if (*id|
|00004800| 6e 31 20 3d 3d 20 4e 55 | 4c 4c 29 0a 58 09 09 72 |n1 == NU|LL).X..r|
|00004810| 65 74 75 72 6e 20 31 3b | 0a 58 09 69 66 20 28 2a |eturn 1;|.X.if (*|
|00004820| 69 64 6e 32 20 3d 3d 20 | 4e 55 4c 4c 29 0a 58 09 |idn2 == |NULL).X.|
|00004830| 09 72 65 74 75 72 6e 20 | 2d 31 3b 0a 58 0a 58 09 |.return |-1;.X.X.|
|00004840| 72 65 74 75 72 6e 20 73 | 74 72 63 6d 70 28 28 2a |return s|trcmp((*|
|00004850| 69 64 6e 31 29 2d 3e 69 | 64 6e 5f 6e 61 6d 65 2c |idn1)->i|dn_name,|
|00004860| 20 28 2a 69 64 6e 32 29 | 2d 3e 69 64 6e 5f 6e 61 | (*idn2)|->idn_na|
|00004870| 6d 65 29 3b 0a 58 7d 0a | 58 0a 58 2f 2a 0a 58 09 |me);.X}.|X.X/*.X.|
|00004880| 41 6c 6c 6f 63 61 74 65 | 20 61 20 6e 65 77 20 69 |Allocate| a new i|
|00004890| 64 6e 61 6d 65 20 73 74 | 72 75 63 74 20 61 6e 64 |dname st|ruct and|
|000048a0| 20 66 69 6c 6c 20 69 6e | 20 74 68 65 20 6e 61 6d | fill in| the nam|
|000048b0| 65 20 66 69 65 6c 64 2e | 0a 58 09 57 65 20 61 6c |e field.|.X.We al|
|000048c0| 6c 6f 63 61 74 65 20 6d | 65 6d 6f 72 79 20 69 6e |locate m|emory in|
|000048d0| 20 6c 61 72 67 65 20 63 | 68 75 6e 6b 73 20 74 6f | large c|hunks to|
|000048e0| 20 61 76 6f 69 64 20 66 | 72 65 71 75 65 6e 74 0a | avoid f|requent.|
|000048f0| 58 09 63 61 6c 6c 73 20 | 74 6f 20 6d 61 6c 6c 6f |X.calls |to mallo|
|00004900| 63 28 29 20 77 68 69 63 | 68 20 69 73 20 61 20 6d |c() whic|h is a m|
|00004910| 61 6a 6f 72 20 70 69 67 | 2e 0a 58 2a 2f 0a 58 73 |ajor pig|..X*/.Xs|
|00004920| 74 72 75 63 74 20 69 64 | 6e 61 6d 65 20 2a 0a 58 |truct id|name *.X|
|00004930| 6e 65 77 49 64 4e 61 6d | 65 28 6e 61 6d 65 29 0a |newIdNam|e(name).|
|00004940| 58 09 63 68 61 72 09 09 | 2a 6e 61 6d 65 3b 0a 58 |X.char..|*name;.X|
|00004950| 7b 0a 58 09 72 65 67 69 | 73 74 65 72 20 73 74 72 |{.X.regi|ster str|
|00004960| 75 63 74 20 69 64 6e 61 | 6d 65 09 2a 69 64 6e 3b |uct idna|me.*idn;|
|00004970| 0a 58 09 72 65 67 69 73 | 74 65 72 20 63 68 61 72 |.X.regis|ter char|
|00004980| 09 2a 61 6c 6c 6f 63 70 | 3b 0a 58 09 72 65 67 69 |.*allocp|;.X.regi|
|00004990| 73 74 65 72 20 69 6e 74 | 09 61 6c 6c 6f 63 73 69 |ster int|.allocsi|
|000049a0| 7a 3b 0a 58 09 73 74 61 | 74 69 63 20 63 68 61 72 |z;.X.sta|tic char|
|000049b0| 09 2a 61 6c 6c 6f 63 42 | 75 66 20 3d 20 4e 55 4c |.*allocB|uf = NUL|
|000049c0| 4c 3b 0a 58 09 73 74 61 | 74 69 63 20 63 68 61 72 |L;.X.sta|tic char|
|000049d0| 09 2a 61 6c 6c 6f 63 45 | 6e 64 20 3d 20 4e 55 4c |.*allocE|nd = NUL|
|000049e0| 4c 3b 0a 58 23 64 65 66 | 69 6e 65 09 41 4c 4c 4f |L;.X#def|ine.ALLO|
|000049f0| 43 53 49 5a 09 28 38 2a | 31 30 32 34 29 0a 58 0a |CSIZ.(8*|1024).X.|
|00004a00| 58 09 61 6c 6c 6f 63 73 | 69 7a 20 3d 20 73 69 7a |X.allocs|iz = siz|
|00004a10| 65 6f 66 28 73 74 72 75 | 63 74 20 69 64 6e 61 6d |eof(stru|ct idnam|
|00004a20| 65 29 20 2b 20 73 74 72 | 6c 65 6e 28 6e 61 6d 65 |e) + str|len(name|
|00004a30| 29 20 2b 20 31 20 2b 20 | 42 69 74 41 72 72 61 79 |) + 1 + |BitArray|
|00004a40| 53 69 7a 65 3b 0a 58 09 | 61 6c 6c 6f 63 73 69 7a |Size;.X.|allocsiz|
|00004a50| 20 2b 3d 20 28 73 69 7a | 65 6f 66 28 6c 6f 6e 67 | += (siz|eof(long|
|00004a60| 29 20 2d 20 31 29 3b 0a | 58 09 61 6c 6c 6f 63 73 |) - 1);.|X.allocs|
|00004a70| 69 7a 20 26 3d 20 7e 28 | 73 69 7a 65 6f 66 28 6c |iz &= ~(|sizeof(l|
|00004a80| 6f 6e 67 29 20 2d 20 31 | 29 3b 0a 58 0a 58 09 61 |ong) - 1|);.X.X.a|
|00004a90| 6c 6c 6f 63 70 20 3d 20 | 61 6c 6c 6f 63 42 75 66 |llocp = |allocBuf|
|00004aa0| 3b 0a 58 09 61 6c 6c 6f | 63 42 75 66 20 2b 3d 20 |;.X.allo|cBuf += |
|00004ab0| 61 6c 6c 6f 63 73 69 7a | 3b 0a 58 09 69 66 20 28 |allocsiz|;.X.if (|
|00004ac0| 61 6c 6c 6f 63 42 75 66 | 20 3e 20 61 6c 6c 6f 63 |allocBuf| > alloc|
|00004ad0| 45 6e 64 29 20 7b 0a 58 | 09 09 61 6c 6c 6f 63 42 |End) {.X|..allocB|
|00004ae0| 75 66 20 3d 20 6d 61 6c | 6c 6f 63 28 41 4c 4c 4f |uf = mal|loc(ALLO|
|00004af0| 43 53 49 5a 29 3b 0a 58 | 09 09 61 6c 6c 6f 63 45 |CSIZ);.X|..allocE|
|00004b00| 6e 64 20 3d 20 26 61 6c | 6c 6f 63 42 75 66 5b 41 |nd = &al|locBuf[A|
|00004b10| 4c 4c 4f 43 53 49 5a 5d | 3b 0a 58 09 09 61 6c 6c |LLOCSIZ]|;.X..all|
|00004b20| 6f 63 70 20 3d 20 61 6c | 6c 6f 63 42 75 66 3b 0a |ocp = al|locBuf;.|
|00004b30| 58 09 09 61 6c 6c 6f 63 | 42 75 66 20 2b 3d 20 61 |X..alloc|Buf += a|
|00004b40| 6c 6c 6f 63 73 69 7a 3b | 0a 58 09 7d 0a 58 0a 58 |llocsiz;|.X.}.X.X|
|00004b50| 09 69 64 6e 20 3d 20 28 | 73 74 72 75 63 74 20 69 |.idn = (|struct i|
|00004b60| 64 6e 61 6d 65 20 2a 29 | 61 6c 6c 6f 63 70 3b 0a |dname *)|allocp;.|
|00004b70| 58 09 61 6c 6c 6f 63 70 | 20 2b 3d 20 73 69 7a 65 |X.allocp| += size|
|00004b80| 6f 66 28 73 74 72 75 63 | 74 20 69 64 6e 61 6d 65 |of(struc|t idname|
|00004b90| 29 3b 0a 58 09 69 64 6e | 2d 3e 69 64 6e 5f 62 69 |);.X.idn|->idn_bi|
|00004ba0| 74 76 20 3d 20 61 6c 6c | 6f 63 70 3b 0a 58 09 66 |tv = all|ocp;.X.f|
|00004bb0| 6f 72 20 28 61 6c 6c 6f | 63 73 69 7a 20 3d 20 42 |or (allo|csiz = B|
|00004bc0| 69 74 41 72 72 61 79 53 | 69 7a 65 3b 20 61 6c 6c |itArrayS|ize; all|
|00004bd0| 6f 63 73 69 7a 2d 2d 3b | 20 61 6c 6c 6f 63 70 2b |ocsiz--;| allocp+|
|00004be0| 2b 29 0a 58 09 09 2a 61 | 6c 6c 6f 63 70 20 3d 20 |+).X..*a|llocp = |
|00004bf0| 27 5c 30 27 3b 0a 58 09 | 69 64 6e 2d 3e 69 64 6e |'\0';.X.|idn->idn|
|00004c00| 5f 6e 61 6d 65 20 3d 20 | 73 74 72 63 70 79 28 61 |_name = |strcpy(a|
|00004c10| 6c 6c 6f 63 70 2c 20 6e | 61 6d 65 29 3b 0a 58 0a |llocp, n|ame);.X.|
|00004c20| 58 09 72 65 74 75 72 6e | 20 69 64 6e 3b 0a 58 7d |X.return| idn;.X}|
|00004c30| 0a 58 0a 58 69 6e 74 0a | 58 70 6f 73 74 49 6e 63 |.X.Xint.|XpostInc|
|00004c40| 72 28 69 70 29 0a 58 09 | 69 6e 74 09 09 2a 69 70 |r(ip).X.|int..*ip|
|00004c50| 3b 0a 58 7b 0a 58 09 72 | 65 67 69 73 74 65 72 20 |;.X{.X.r|egister |
|00004c60| 69 6e 74 09 69 3b 0a 58 | 09 69 6e 74 09 09 73 61 |int.i;.X|.int..sa|
|00004c70| 76 65 3b 0a 58 0a 58 09 | 73 61 76 65 20 3d 20 2a |ve;.X.X.|save = *|
|00004c80| 69 70 3b 0a 58 09 69 20 | 3d 20 73 61 76 65 20 2b |ip;.X.i |= save +|
|00004c90| 20 31 3b 0a 58 09 69 66 | 20 28 28 69 20 26 20 30 | 1;.X.if| ((i & 0|
|00004ca0| 78 30 30 66 66 29 20 3d | 3d 20 30 78 30 30 66 66 |x00ff) =|= 0x00ff|
|00004cb0| 29 0a 58 09 09 69 2b 2b | 3b 0a 58 09 69 66 20 28 |).X..i++|;.X.if (|
|00004cc0| 28 69 20 26 20 30 78 66 | 66 30 30 29 20 3d 3d 20 |(i & 0xf|f00) == |
|00004cd0| 30 78 66 66 30 30 29 09 | 2f 2a 20 54 68 69 73 20 |0xff00).|/* This |
|00004ce0| 69 73 6e 27 74 20 62 6c | 6f 6f 64 79 20 6c 69 6b |isn't bl|oody lik|
|00004cf0| 65 6c 79 20 2a 2f 0a 58 | 09 09 69 20 2b 3d 20 30 |ely */.X|..i += 0|
|00004d00| 78 31 30 30 3b 0a 58 09 | 2a 69 70 20 3d 20 69 3b |x100;.X.|*ip = i;|
|00004d10| 0a 58 0a 58 09 72 65 74 | 75 72 6e 20 73 61 76 65 |.X.X.ret|urn save|
|00004d20| 3b 0a 58 7d 0a 58 0a 58 | 2f 2a 0a 58 09 4d 6f 76 |;.X}.X.X|/*.X.Mov|
|00004d30| 65 20 61 6c 6c 20 6e 6f | 6e 2d 4e 55 4c 4c 20 74 |e all no|n-NULL t|
|00004d40| 61 62 6c 65 20 65 6e 74 | 72 69 65 73 20 74 6f 20 |able ent|ries to |
|00004d50| 74 68 65 20 66 72 6f 6e | 74 20 6f 66 20 74 68 65 |the fron|t of the|
|00004d60| 20 74 61 62 6c 65 2e 0a | 58 09 72 65 74 75 72 6e | table..|X.return|
|00004d70| 20 74 68 65 20 6e 75 6d | 62 65 72 20 6f 66 20 6e | the num|ber of n|
|00004d80| 6f 6e 2d 4e 55 4c 4c 20 | 65 6c 65 6d 65 6e 74 73 |on-NULL |elements|
|00004d90| 20 69 6e 20 74 68 65 20 | 74 61 62 6c 65 2e 0a 58 | in the |table..X|
|00004da0| 2a 2f 0a 58 69 6e 74 0a | 58 68 61 73 68 43 6f 6d |*/.Xint.|XhashCom|
|00004db0| 70 72 65 73 73 28 74 61 | 62 6c 65 2c 20 73 69 7a |press(ta|ble, siz|
|00004dc0| 65 29 0a 58 09 63 68 61 | 72 09 09 2a 2a 74 61 62 |e).X.cha|r..**tab|
|00004dd0| 6c 65 3b 0a 58 09 69 6e | 74 09 09 73 69 7a 65 3b |le;.X.in|t..size;|
|00004de0| 0a 58 7b 0a 58 09 72 65 | 67 69 73 74 65 72 20 63 |.X{.X.re|gister c|
|00004df0| 68 61 72 09 2a 2a 66 72 | 6f 6e 74 3b 0a 58 09 72 |har.**fr|ont;.X.r|
|00004e00| 65 67 69 73 74 65 72 20 | 63 68 61 72 09 2a 2a 62 |egister |char.**b|
|00004e10| 61 63 6b 3b 0a 58 0a 58 | 09 66 72 6f 6e 74 20 3d |ack;.X.X|.front =|
|00004e20| 20 26 74 61 62 6c 65 5b | 2d 31 5d 3b 0a 58 09 62 | &table[|-1];.X.b|
|00004e30| 61 63 6b 20 3d 20 26 74 | 61 62 6c 65 5b 73 69 7a |ack = &t|able[siz|
|00004e40| 65 5d 3b 0a 58 0a 58 09 | 66 6f 72 20 28 3b 3b 29 |e];.X.X.|for (;;)|
|00004e50| 20 7b 0a 58 09 09 77 68 | 69 6c 65 20 28 2a 2d 2d | {.X..wh|ile (*--|
|00004e60| 62 61 63 6b 20 3d 3d 20 | 4e 55 4c 4c 29 0a 58 09 |back == |NULL).X.|
|00004e70| 09 09 3b 0a 58 09 09 69 | 66 20 28 62 61 63 6b 20 |..;.X..i|f (back |
|00004e80| 3c 20 66 72 6f 6e 74 29 | 0a 58 09 09 09 62 72 65 |< front)|.X...bre|
|00004e90| 61 6b 3b 0a 58 09 09 77 | 68 69 6c 65 20 28 2a 2b |ak;.X..w|hile (*+|
|00004ea0| 2b 66 72 6f 6e 74 20 21 | 3d 20 4e 55 4c 4c 29 0a |+front !|= NULL).|
|00004eb0| 58 09 09 09 3b 0a 58 09 | 09 69 66 20 28 62 61 63 |X...;.X.|.if (bac|
|00004ec0| 6b 20 3c 20 66 72 6f 6e | 74 29 0a 58 09 09 09 62 |k < fron|t).X...b|
|00004ed0| 72 65 61 6b 3b 0a 58 09 | 09 2a 66 72 6f 6e 74 20 |reak;.X.|.*front |
|00004ee0| 3d 20 2a 62 61 63 6b 3b | 0a 58 09 7d 0a 58 0a 58 |= *back;|.X.}.X.X|
|00004ef0| 09 72 65 74 75 72 6e 20 | 28 62 61 63 6b 20 2d 20 |.return |(back - |
|00004f00| 74 61 62 6c 65 20 2b 20 | 31 29 3b 0a 58 7d 0a 45 |table + |1);.X}.E|
|00004f10| 4e 44 5f 4f 46 5f 46 49 | 4c 45 0a 69 66 20 74 65 |ND_OF_FI|LE.if te|
|00004f20| 73 74 20 31 38 35 34 31 | 20 2d 6e 65 20 60 77 63 |st 18541| -ne `wc|
|00004f30| 20 2d 63 20 3c 27 6d 6b | 69 64 2e 63 27 60 3b 20 | -c <'mk|id.c'`; |
|00004f40| 74 68 65 6e 0a 20 20 20 | 20 65 63 68 6f 20 73 68 |then. | echo sh|
|00004f50| 61 72 3a 20 5c 22 27 6d | 6b 69 64 2e 63 27 5c 22 |ar: \"'m|kid.c'\"|
|00004f60| 20 75 6e 70 61 63 6b 65 | 64 20 77 69 74 68 20 77 | unpacke|d with w|
|00004f70| 72 6f 6e 67 20 73 69 7a | 65 21 0a 66 69 0a 23 20 |rong siz|e!.fi.# |
|00004f80| 65 6e 64 20 6f 66 20 27 | 6d 6b 69 64 2e 63 27 0a |end of '|mkid.c'.|
|00004f90| 66 69 0a 65 63 68 6f 20 | 73 68 61 72 3a 20 45 6e |fi.echo |shar: En|
|00004fa0| 64 20 6f 66 20 61 72 63 | 68 69 76 65 20 31 30 20 |d of arc|hive 10 |
|00004fb0| 5c 28 6f 66 20 31 31 5c | 29 2e 0a 63 70 20 2f 64 |\(of 11\|)..cp /d|
|00004fc0| 65 76 2f 6e 75 6c 6c 20 | 61 72 6b 31 30 69 73 64 |ev/null |ark10isd|
|00004fd0| 6f 6e 65 0a 4d 49 53 53 | 49 4e 47 3d 22 22 0a 66 |one.MISS|ING="".f|
|00004fe0| 6f 72 20 49 20 69 6e 20 | 31 20 32 20 33 20 34 20 |or I in |1 2 3 4 |
|00004ff0| 35 20 36 20 37 20 38 20 | 39 20 31 30 20 31 31 20 |5 6 7 8 |9 10 11 |
|00005000| 3b 20 64 6f 0a 20 20 20 | 20 69 66 20 74 65 73 74 |; do. | if test|
|00005010| 20 21 20 2d 66 20 61 72 | 6b 24 7b 49 7d 69 73 64 | ! -f ar|k${I}isd|
|00005020| 6f 6e 65 20 3b 20 74 68 | 65 6e 0a 09 4d 49 53 53 |one ; th|en..MISS|
|00005030| 49 4e 47 3d 22 24 7b 4d | 49 53 53 49 4e 47 7d 20 |ING="${M|ISSING} |
|00005040| 24 7b 49 7d 22 0a 20 20 | 20 20 66 69 0a 64 6f 6e |${I}". | fi.don|
|00005050| 65 0a 69 66 20 74 65 73 | 74 20 22 24 7b 4d 49 53 |e.if tes|t "${MIS|
|00005060| 53 49 4e 47 7d 22 20 3d | 20 22 22 20 3b 20 74 68 |SING}" =| "" ; th|
|00005070| 65 6e 0a 20 20 20 20 65 | 63 68 6f 20 59 6f 75 20 |en. e|cho You |
|00005080| 68 61 76 65 20 75 6e 70 | 61 63 6b 65 64 20 61 6c |have unp|acked al|
|00005090| 6c 20 31 31 20 61 72 63 | 68 69 76 65 73 2e 0a 20 |l 11 arc|hives.. |
|000050a0| 20 20 20 72 6d 20 2d 66 | 20 61 72 6b 5b 31 2d 39 | rm -f| ark[1-9|
|000050b0| 5d 69 73 64 6f 6e 65 20 | 61 72 6b 5b 31 2d 39 5d |]isdone |ark[1-9]|
|000050c0| 5b 30 2d 39 5d 69 73 64 | 6f 6e 65 0a 65 6c 73 65 |[0-9]isd|one.else|
|000050d0| 0a 20 20 20 20 65 63 68 | 6f 20 59 6f 75 20 73 74 |. ech|o You st|
|000050e0| 69 6c 6c 20 6e 65 65 64 | 20 74 6f 20 75 6e 70 61 |ill need| to unpa|
|000050f0| 63 6b 20 74 68 65 20 66 | 6f 6c 6c 6f 77 69 6e 67 |ck the f|ollowing|
|00005100| 20 61 72 63 68 69 76 65 | 73 3a 0a 20 20 20 20 65 | archive|s:. e|
|00005110| 63 68 6f 20 22 20 20 20 | 20 20 20 20 20 22 20 24 |cho " | " $|
|00005120| 7b 4d 49 53 53 49 4e 47 | 7d 0a 66 69 0a 23 23 20 |{MISSING|}.fi.## |
|00005130| 20 45 6e 64 20 6f 66 20 | 73 68 65 6c 6c 20 61 72 | End of |shell ar|
|00005140| 63 68 69 76 65 2e 0a 65 | 78 69 74 20 30 0a 2d 2d |chive..e|xit 0.--|
|00005150| 0a 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |.=======|========|
|00005160| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00005170| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00005180| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00005190| 3d 3d 3d 3d 3d 3d 3d 0a | 64 6f 6d 61 69 6e 3a 20 |=======.|domain: |
|000051a0| 74 61 68 6f 72 73 6c 65 | 79 40 63 73 64 2e 68 61 |tahorsle|y@csd.ha|
|000051b0| 72 72 69 73 2e 63 6f 6d | 20 20 20 20 20 20 20 55 |rris.com| U|
|000051c0| 53 4d 61 69 6c 3a 20 54 | 6f 6d 20 48 6f 72 73 6c |SMail: T|om Horsl|
|000051d0| 65 79 0a 20 20 75 75 63 | 70 3a 20 2e 2e 2e 21 75 |ey. uuc|p: ...!u|
|000051e0| 75 6e 65 74 21 68 63 78 | 31 21 74 61 68 6f 72 73 |unet!hcx|1!tahors|
|000051f0| 6c 65 79 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |ley | |
|00005200| 20 20 35 31 31 20 4b 69 | 6e 67 62 69 72 64 20 43 | 511 Ki|ngbird C|
|00005210| 69 72 63 6c 65 0a 20 20 | 20 20 20 20 20 20 20 20 |ircle. | |
|00005220| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005230| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00005240| 20 20 20 20 20 44 65 6c | 72 61 79 20 42 65 61 63 | Del|ray Beac|
|00005250| 68 2c 20 46 4c 20 20 33 | 33 34 34 34 0a 2b 3d 3d |h, FL 3|3444.+==|
|00005260| 3d 3d 20 43 65 6e 73 6f | 72 73 68 69 70 20 69 73 |== Censo|rship is|
|00005270| 20 74 68 65 20 6f 6e 6c | 79 20 66 6f 72 6d 20 6f | the onl|y form o|
|00005280| 66 20 4f 62 73 63 65 6e | 69 74 79 20 3d 3d 3d 3d |f Obscen|ity ====|
|00005290| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|000052a0| 3d 3d 2b 0a 7c 20 20 20 | 20 20 28 57 61 69 74 2c |==+.| | (Wait,|
|000052b0| 20 49 20 66 6f 72 67 6f | 74 20 67 6f 76 65 72 6e | I forgo|t govern|
|000052c0| 6d 65 6e 74 20 74 6f 62 | 61 63 63 6f 20 73 75 62 |ment tob|acco sub|
|000052d0| 73 69 64 69 65 73 2e 2e | 2e 29 20 20 20 20 20 20 |sidies..|.) |
|000052e0| 20 20 20 20 20 20 20 20 | 20 7c 0a 2b 3d 3d 3d 3d | | |.+====|
|000052f0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00005300| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00005310| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00005320| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |========|========|
|00005330| 2b 0a | |+. | |
+--------+-------------------------+-------------------------+--------+--------+