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: 2525
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, ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| dexmagic
| PrintFox/Pagefox WEAK
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
| |
100%
| xdgMime
| message/news
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 50 61 74 68 3a 20 73 70 | 61 72 6b 79 21 75 75 6e |Path: sp|arky!uun|
|00000010| 65 74 21 6f 72 6e 6c 21 | 72 73 67 31 2e 65 72 2e |et!ornl!|rsg1.er.|
|00000020| 75 73 67 73 2e 67 6f 76 | 21 64 61 72 77 69 6e 2e |usgs.gov|!darwin.|
|00000030| 73 75 72 61 2e 6e 65 74 | 21 7a 61 70 68 6f 64 2e |sura.net|!zaphod.|
|00000040| 6d 70 73 2e 6f 68 69 6f | 2d 73 74 61 74 65 2e 65 |mps.ohio|-state.e|
|00000050| 64 75 21 63 61 65 6e 21 | 75 6d 65 65 63 73 21 75 |du!caen!|umeecs!u|
|00000060| 6d 6e 2e 65 64 75 21 63 | 73 75 73 2e 65 64 75 21 |mn.edu!c|sus.edu!|
|00000070| 6e 65 74 63 6f 6d 2e 63 | 6f 6d 21 6e 65 74 63 6f |netcom.c|om!netco|
|00000080| 6d 73 76 21 73 70 75 64 | 2e 48 79 70 65 72 69 6f |msv!spud|.Hyperio|
|00000090| 6e 2e 43 4f 4d 21 73 70 | 75 64 2e 48 79 70 65 72 |n.COM!sp|ud.Hyper|
|000000a0| 69 6f 6e 2e 43 4f 4d 21 | 6e 6f 74 2d 66 6f 72 2d |ion.COM!|not-for-|
|000000b0| 6d 61 69 6c 0a 46 72 6f | 6d 3a 20 6b 6f 72 65 74 |mail.Fro|m: koret|
|000000c0| 68 40 73 70 75 64 2e 48 | 79 70 65 72 69 6f 6e 2e |h@spud.H|yperion.|
|000000d0| 43 4f 4d 20 28 53 74 65 | 76 65 6e 20 47 72 69 6d |COM (Ste|ven Grim|
|000000e0| 6d 29 0a 4e 65 77 73 67 | 72 6f 75 70 73 3a 20 61 |m).Newsg|roups: a|
|000000f0| 6c 74 2e 73 6f 75 72 63 | 65 73 0a 53 75 62 6a 65 |lt.sourc|es.Subje|
|00000100| 63 74 3a 20 57 6f 72 6b | 4d 61 6e 20 28 58 20 43 |ct: Work|Man (X C|
|00000110| 44 20 70 6c 61 79 65 72 | 20 70 72 6f 67 72 61 6d |D player| program|
|00000120| 20 66 6f 72 20 53 75 6e | 73 29 20 62 65 74 61 20 | for Sun|s) beta |
|00000130| 33 2e 30 20 70 61 72 74 | 30 34 2f 30 36 0a 44 61 |3.0 part|04/06.Da|
|00000140| 74 65 3a 20 31 35 20 4e | 6f 76 20 31 39 39 32 20 |te: 15 N|ov 1992 |
|00000150| 31 34 3a 33 36 3a 33 32 | 20 2d 30 38 30 30 0a 4f |14:36:32| -0800.O|
|00000160| 72 67 61 6e 69 7a 61 74 | 69 6f 6e 3a 20 48 79 70 |rganizat|ion: Hyp|
|00000170| 65 72 69 6f 6e 2c 20 4d | 6f 75 6e 74 61 69 6e 20 |erion, M|ountain |
|00000180| 56 69 65 77 2c 20 43 41 | 2c 20 55 53 41 0a 4c 69 |View, CA|, USA.Li|
|00000190| 6e 65 73 3a 20 32 30 38 | 30 0a 4d 65 73 73 61 67 |nes: 208|0.Messag|
|000001a0| 65 2d 49 44 3a 20 3c 31 | 65 36 6a 64 67 49 4e 4e |e-ID: <1|e6jdgINN|
|000001b0| 69 73 6d 40 73 70 75 64 | 2e 48 79 70 65 72 69 6f |ism@spud|.Hyperio|
|000001c0| 6e 2e 43 4f 4d 3e 0a 4e | 4e 54 50 2d 50 6f 73 74 |n.COM>.N|NTP-Post|
|000001d0| 69 6e 67 2d 48 6f 73 74 | 3a 20 73 70 75 64 2e 68 |ing-Host|: spud.h|
|000001e0| 79 70 65 72 69 6f 6e 2e | 63 6f 6d 0a 0a 41 72 63 |yperion.|com..Arc|
|000001f0| 68 69 76 65 2d 6e 61 6d | 65 3a 20 77 6f 72 6b 6d |hive-nam|e: workm|
|00000200| 61 6e 2d 62 33 2e 30 2f | 70 61 72 74 30 34 0a 53 |an-b3.0/|part04.S|
|00000210| 75 62 6d 69 74 74 65 64 | 2d 62 79 3a 20 6b 6f 72 |ubmitted|-by: kor|
|00000220| 65 74 68 40 68 79 70 65 | 72 69 6f 6e 2e 63 6f 6d |eth@hype|rion.com|
|00000230| 0a 0a 23 21 20 2f 62 69 | 6e 2f 73 68 0a 23 20 54 |..#! /bi|n/sh.# T|
|00000240| 68 69 73 20 69 73 20 61 | 20 73 68 65 6c 6c 20 61 |his is a| shell a|
|00000250| 72 63 68 69 76 65 2e 20 | 20 52 65 6d 6f 76 65 20 |rchive. | Remove |
|00000260| 61 6e 79 74 68 69 6e 67 | 20 62 65 66 6f 72 65 20 |anything| before |
|00000270| 74 68 69 73 20 6c 69 6e | 65 2c 20 74 68 65 6e 20 |this lin|e, then |
|00000280| 75 6e 70 61 63 6b 0a 23 | 20 69 74 20 62 79 20 73 |unpack.#| it by s|
|00000290| 61 76 69 6e 67 20 69 74 | 20 69 6e 74 6f 20 61 20 |aving it| into a |
|000002a0| 66 69 6c 65 20 61 6e 64 | 20 74 79 70 69 6e 67 20 |file and| typing |
|000002b0| 22 73 68 20 66 69 6c 65 | 22 2e 20 20 54 6f 20 6f |"sh file|". To o|
|000002c0| 76 65 72 77 72 69 74 65 | 20 65 78 69 73 74 69 6e |verwrite| existin|
|000002d0| 67 0a 23 20 66 69 6c 65 | 73 2c 20 74 79 70 65 20 |g.# file|s, type |
|000002e0| 22 73 68 20 66 69 6c 65 | 20 2d 63 22 2e 20 20 59 |"sh file| -c". Y|
|000002f0| 6f 75 20 63 61 6e 20 61 | 6c 73 6f 20 66 65 65 64 |ou can a|lso feed|
|00000300| 20 74 68 69 73 20 61 73 | 20 73 74 61 6e 64 61 72 | this as| standar|
|00000310| 64 20 69 6e 70 75 74 20 | 76 69 61 0a 23 20 75 6e |d input |via.# un|
|00000320| 73 68 61 72 2c 20 6f 72 | 20 62 79 20 74 79 70 69 |shar, or| by typi|
|00000330| 6e 67 20 22 73 68 20 3c | 66 69 6c 65 22 2c 20 65 |ng "sh <|file", e|
|00000340| 2e 67 2e 2e 20 20 49 66 | 20 74 68 69 73 20 61 72 |.g.. If| this ar|
|00000350| 63 68 69 76 65 20 69 73 | 20 63 6f 6d 70 6c 65 74 |chive is| complet|
|00000360| 65 2c 20 79 6f 75 0a 23 | 20 77 69 6c 6c 20 73 65 |e, you.#| will se|
|00000370| 65 20 74 68 65 20 66 6f | 6c 6c 6f 77 69 6e 67 20 |e the fo|llowing |
|00000380| 6d 65 73 73 61 67 65 20 | 61 74 20 74 68 65 20 65 |message |at the e|
|00000390| 6e 64 3a 0a 23 09 09 22 | 45 6e 64 20 6f 66 20 61 |nd:.#.."|End of a|
|000003a0| 72 63 68 69 76 65 20 34 | 20 28 6f 66 20 36 29 2e |rchive 4| (of 6).|
|000003b0| 22 0a 23 20 43 6f 6e 74 | 65 6e 74 73 3a 20 20 64 |".# Cont|ents: d|
|000003c0| 61 74 61 62 61 73 65 2e | 63 20 64 69 73 70 6c 61 |atabase.|c displa|
|000003d0| 79 2e 63 0a 23 20 57 72 | 61 70 70 65 64 20 62 79 |y.c.# Wr|apped by|
|000003e0| 20 6b 6f 72 65 74 68 40 | 67 65 72 62 69 6c 6d 65 | koreth@|gerbilme|
|000003f0| 69 73 74 65 72 20 6f 6e | 20 53 75 6e 20 4e 6f 76 |ister on| Sun Nov|
|00000400| 20 31 35 20 31 34 3a 32 | 30 3a 31 39 20 31 39 39 | 15 14:2|0:19 199|
|00000410| 32 0a 50 41 54 48 3d 2f | 62 69 6e 3a 2f 75 73 72 |2.PATH=/|bin:/usr|
|00000420| 2f 62 69 6e 3a 2f 75 73 | 72 2f 75 63 62 20 3b 20 |/bin:/us|r/ucb ; |
|00000430| 65 78 70 6f 72 74 20 50 | 41 54 48 0a 69 66 20 74 |export P|ATH.if t|
|00000440| 65 73 74 20 2d 66 20 27 | 64 61 74 61 62 61 73 65 |est -f '|database|
|00000450| 2e 63 27 20 2d 61 20 22 | 24 7b 31 7d 22 20 21 3d |.c' -a "|${1}" !=|
|00000460| 20 22 2d 63 22 20 3b 20 | 74 68 65 6e 20 0a 20 20 | "-c" ; |then . |
|00000470| 65 63 68 6f 20 73 68 61 | 72 3a 20 57 69 6c 6c 20 |echo sha|r: Will |
|00000480| 6e 6f 74 20 63 6c 6f 62 | 62 65 72 20 65 78 69 73 |not clob|ber exis|
|00000490| 74 69 6e 67 20 66 69 6c | 65 20 5c 22 27 64 61 74 |ting fil|e \"'dat|
|000004a0| 61 62 61 73 65 2e 63 27 | 5c 22 0a 65 6c 73 65 0a |abase.c'|\".else.|
|000004b0| 65 63 68 6f 20 73 68 61 | 72 3a 20 45 78 74 72 61 |echo sha|r: Extra|
|000004c0| 63 74 69 6e 67 20 5c 22 | 27 64 61 74 61 62 61 73 |cting \"|'databas|
|000004d0| 65 2e 63 27 5c 22 20 5c | 28 32 32 37 31 37 20 63 |e.c'\" \|(22717 c|
|000004e0| 68 61 72 61 63 74 65 72 | 73 5c 29 0a 73 65 64 20 |haracter|s\).sed |
|000004f0| 22 73 2f 5e 58 2f 2f 22 | 20 3e 27 64 61 74 61 62 |"s/^X//"| >'datab|
|00000500| 61 73 65 2e 63 27 20 3c | 3c 27 45 4e 44 5f 4f 46 |ase.c' <|<'END_OF|
|00000510| 5f 46 49 4c 45 27 0a 58 | 2f 2a 0a 58 20 2a 20 40 |_FILE'.X|/*.X * @|
|00000520| 28 23 29 64 61 74 61 62 | 61 73 65 2e 63 09 31 2e |(#)datab|ase.c.1.|
|00000530| 32 33 09 31 31 2f 31 35 | 2f 39 32 0a 58 20 2a 0a |23.11/15|/92.X *.|
|00000540| 58 20 2a 20 4d 61 6e 61 | 67 65 20 74 68 65 20 43 |X * Mana|ge the C|
|00000550| 44 20 64 61 74 61 62 61 | 73 65 2e 20 20 41 6c 6c |D databa|se. All|
|00000560| 20 74 68 65 73 65 20 72 | 6f 75 74 69 6e 65 73 20 | these r|outines |
|00000570| 61 73 73 75 6d 65 20 74 | 68 61 74 20 74 68 65 20 |assume t|hat the |
|00000580| 22 63 64 22 20 67 6c 6f | 62 61 6c 0a 58 20 2a 20 |"cd" glo|bal.X * |
|00000590| 73 74 72 75 63 74 75 72 | 65 20 63 6f 6e 74 61 69 |structur|e contai|
|000005a0| 6e 73 20 63 75 72 72 65 | 6e 74 20 69 6e 66 6f 72 |ns curre|nt infor|
|000005b0| 6d 61 74 69 6f 6e 20 28 | 61 73 20 66 61 72 20 61 |mation (|as far a|
|000005c0| 73 20 74 68 65 20 6f 75 | 74 73 69 64 65 20 77 6f |s the ou|tside wo|
|000005d0| 72 6c 64 20 6b 6e 6f 77 | 73 3b 0a 58 20 2a 20 6f |rld know|s;.X * o|
|000005e0| 62 76 69 6f 75 73 6c 79 | 20 69 74 20 77 6f 6e 27 |bviously| it won'|
|000005f0| 74 20 63 6f 6e 74 61 69 | 6e 20 74 72 61 63 6b 20 |t contai|n track |
|00000600| 74 69 74 6c 65 73 20 6a | 75 73 74 20 61 66 74 65 |titles j|ust afte|
|00000610| 72 20 61 20 43 44 20 69 | 73 20 69 6e 73 65 72 74 |r a CD i|s insert|
|00000620| 65 64 2e 29 0a 58 20 2a | 2f 0a 58 23 64 65 66 69 |ed.).X *|/.X#defi|
|00000630| 6e 65 20 52 43 46 49 4c | 45 20 22 2f 2e 77 6f 72 |ne RCFIL|E "/.wor|
|00000640| 6b 6d 61 6e 72 63 22 0a | 58 23 64 65 66 69 6e 65 |kmanrc".|X#define|
|00000650| 20 44 42 46 49 4c 45 20 | 22 2f 2e 77 6f 72 6b 6d | DBFILE |"/.workm|
|00000660| 61 6e 64 62 22 0a 58 73 | 74 61 74 69 63 20 63 68 |andb".Xs|tatic ch|
|00000670| 61 72 20 2a 69 64 65 6e | 74 20 3d 20 22 40 28 23 |ar *iden|t = "@(#|
|00000680| 29 64 61 74 61 62 61 73 | 65 2e 63 09 31 2e 32 33 |)databas|e.c.1.23|
|00000690| 20 31 31 2f 31 35 2f 39 | 32 22 3b 0a 58 0a 58 23 | 11/15/9|2";.X.X#|
|000006a0| 69 6e 63 6c 75 64 65 20 | 3c 65 72 72 6e 6f 2e 68 |include |<errno.h|
|000006b0| 3e 0a 58 23 69 6e 63 6c | 75 64 65 20 3c 73 74 64 |>.X#incl|ude <std|
|000006c0| 69 6f 2e 68 3e 0a 58 23 | 69 6e 63 6c 75 64 65 20 |io.h>.X#|include |
|000006d0| 3c 73 79 73 2f 74 79 70 | 65 73 2e 68 3e 0a 58 23 |<sys/typ|es.h>.X#|
|000006e0| 69 6e 63 6c 75 64 65 20 | 3c 66 63 6e 74 6c 2e 68 |include |<fcntl.h|
|000006f0| 3e 0a 58 23 69 6e 63 6c | 75 64 65 20 3c 73 79 73 |>.X#incl|ude <sys|
|00000700| 2f 70 61 72 61 6d 2e 68 | 3e 0a 58 23 69 6e 63 6c |/param.h|>.X#incl|
|00000710| 75 64 65 20 3c 75 6e 69 | 73 74 64 2e 68 3e 0a 58 |ude <uni|std.h>.X|
|00000720| 23 69 6e 63 6c 75 64 65 | 20 3c 73 79 73 2f 74 69 |#include| <sys/ti|
|00000730| 6d 65 2e 68 3e 0a 58 23 | 69 6e 63 6c 75 64 65 20 |me.h>.X#|include |
|00000740| 22 73 74 72 75 63 74 2e | 68 22 0a 58 0a 58 23 64 |"struct.|h".X.X#d|
|00000750| 65 66 69 6e 65 20 53 57 | 41 4c 4c 4f 57 5f 4c 49 |efine SW|ALLOW_LI|
|00000760| 4e 45 28 66 70 29 20 7b | 20 69 6e 74 20 63 3b 20 |NE(fp) {| int c; |
|00000770| 77 68 69 6c 65 20 28 28 | 63 20 3d 20 67 65 74 63 |while ((|c = getc|
|00000780| 28 66 70 29 29 20 21 3d | 20 27 5c 6e 27 20 26 26 |(fp)) !=| '\n' &&|
|00000790| 20 63 20 21 3d 20 45 4f | 46 29 3b 20 7d 0a 58 0a | c != EO|F); }.X.|
|000007a0| 58 76 6f 69 64 20 2a 6d | 61 6c 6c 6f 63 28 29 2c |Xvoid *m|alloc(),|
|000007b0| 20 2a 72 65 61 6c 6c 6f | 63 28 29 3b 0a 58 63 68 | *reallo|c();.Xch|
|000007c0| 61 72 20 2a 73 74 72 63 | 68 72 28 29 2c 20 2a 67 |ar *strc|hr(), *g|
|000007d0| 65 74 65 6e 76 28 29 3b | 0a 58 0a 58 69 6e 74 09 |etenv();|.X.Xint.|
|000007e0| 73 75 70 70 72 65 73 73 | 5f 6c 6f 63 6b 69 6e 67 |suppress|_locking|
|000007f0| 20 3d 20 30 3b 09 2f 2a | 20 54 75 72 6e 20 6f 66 | = 0;./*| Turn of|
|00000800| 66 20 6c 6f 63 6b 69 6e | 67 20 6f 66 20 64 61 74 |f lockin|g of dat|
|00000810| 61 66 69 6c 65 20 28 64 | 61 6e 67 65 72 6f 75 73 |afile (d|angerous|
|00000820| 29 20 2a 2f 0a 58 0a 58 | 63 68 61 72 09 2a 72 63 |) */.X.X|char.*rc|
|00000830| 66 69 6c 65 20 3d 20 4e | 55 4c 4c 3b 09 09 2f 2a |file = N|ULL;../*|
|00000840| 20 50 65 72 73 6f 6e 61 | 6c 20 72 63 66 69 6c 65 | Persona|l rcfile|
|00000850| 20 2a 2f 0a 58 63 68 61 | 72 09 2a 2a 64 61 74 61 | */.Xcha|r.**data|
|00000860| 62 61 73 65 73 20 3d 20 | 4e 55 4c 4c 3b 09 2f 2a |bases = |NULL;./*|
|00000870| 20 4e 55 4c 4c 2d 74 65 | 72 6d 69 6e 61 74 65 64 | NULL-te|rminated|
|00000880| 20 6c 69 73 74 20 6f 66 | 20 64 61 74 61 62 61 73 | list of| databas|
|00000890| 65 73 20 2a 2f 0a 58 0a | 58 63 68 61 72 09 2a 6f |es */.X.|Xchar.*o|
|000008a0| 74 68 65 72 72 63 20 3d | 20 4e 55 4c 4c 3b 09 2f |therrc =| NULL;./|
|000008b0| 2a 20 55 6e 72 65 63 6f | 67 6e 69 7a 65 64 20 63 |* Unreco|gnized c|
|000008c0| 72 75 66 74 20 66 72 6f | 6d 20 73 74 61 72 74 20 |ruft fro|m start |
|000008d0| 6f 66 20 72 63 66 69 6c | 65 20 2a 2f 0a 58 0a 58 |of rcfil|e */.X.X|
|000008e0| 6c 6f 6e 67 09 72 63 70 | 6f 73 2c 20 72 63 6c 65 |long.rcp|os, rcle|
|000008f0| 6e 3b 09 09 2f 2a 20 58 | 58 58 20 2a 2f 0a 58 0a |n;../* X|XX */.X.|
|00000900| 58 69 6e 74 09 66 6f 75 | 6e 64 5f 69 6e 5f 64 62 |Xint.fou|nd_in_db|
|00000910| 2c 20 66 6f 75 6e 64 5f | 69 6e 5f 72 63 3b 0a 58 |, found_|in_rc;.X|
|00000920| 6c 6f 6e 67 09 68 6f 6c | 65 70 6f 73 2c 20 66 69 |long.hol|epos, fi|
|00000930| 72 73 74 70 6f 73 3b 0a | 58 0a 58 65 78 74 65 72 |rstpos;.|X.Xexter|
|00000940| 6e 20 69 6e 74 20 63 75 | 72 5f 73 74 6f 70 6d 6f |n int cu|r_stopmo|
|00000950| 64 65 2c 20 63 75 72 5f | 70 6c 61 79 6e 65 77 2c |de, cur_|playnew,|
|00000960| 20 63 75 72 5f 6e 74 72 | 61 63 6b 73 2c 20 63 75 | cur_ntr|acks, cu|
|00000970| 72 5f 6e 73 65 63 74 69 | 6f 6e 73 3b 0a 58 65 78 |r_nsecti|ons;.Xex|
|00000980| 74 65 72 6e 20 69 6e 74 | 20 6d 61 72 6b 5f 61 2c |tern int| mark_a,|
|00000990| 20 6d 61 72 6b 5f 62 3b | 0a 58 0a 58 2f 2a 20 43 | mark_b;|.X.X/* C|
|000009a0| 6f 70 79 20 69 6e 74 6f | 20 61 20 6d 61 6c 6c 6f |opy into| a mallo|
|000009b0| 63 65 64 20 73 74 72 69 | 6e 67 2e 20 2a 2f 0a 58 |ced stri|ng. */.X|
|000009c0| 76 6f 69 64 0a 58 73 74 | 72 6d 63 70 79 28 74 2c |void.Xst|rmcpy(t,|
|000009d0| 20 73 29 0a 58 09 63 68 | 61 72 09 2a 2a 74 2c 20 | s).X.ch|ar.**t, |
|000009e0| 2a 73 3b 0a 58 7b 0a 58 | 09 69 66 20 28 2a 74 20 |*s;.X{.X|.if (*t |
|000009f0| 21 3d 20 4e 55 4c 4c 29 | 0a 58 09 09 66 72 65 65 |!= NULL)|.X..free|
|00000a00| 28 2a 74 29 3b 0a 58 0a | 58 09 2a 74 20 3d 20 6d |(*t);.X.|X.*t = m|
|00000a10| 61 6c 6c 6f 63 28 73 74 | 72 6c 65 6e 28 73 29 20 |alloc(st|rlen(s) |
|00000a20| 2b 20 31 29 3b 0a 58 09 | 69 66 20 28 2a 74 20 3d |+ 1);.X.|if (*t =|
|00000a30| 3d 20 4e 55 4c 4c 29 0a | 58 09 7b 0a 58 09 09 70 |= NULL).|X.{.X..p|
|00000a40| 65 72 72 6f 72 28 22 73 | 74 72 6d 63 70 79 22 29 |error("s|trmcpy")|
|00000a50| 3b 0a 58 09 09 65 78 69 | 74 28 31 29 3b 0a 58 09 |;.X..exi|t(1);.X.|
|00000a60| 7d 0a 58 0a 58 09 28 76 | 6f 69 64 29 20 73 74 72 |}.X.X.(v|oid) str|
|00000a70| 63 70 79 28 2a 74 2c 20 | 73 29 3b 0a 58 7d 0a 58 |cpy(*t, |s);.X}.X|
|00000a80| 0a 58 2f 2a 20 41 64 64 | 20 74 6f 20 61 20 6d 61 |.X/* Add| to a ma|
|00000a90| 6c 6c 6f 63 65 64 20 73 | 74 72 69 6e 67 2e 20 2a |lloced s|tring. *|
|00000aa0| 2f 0a 58 76 6f 69 64 0a | 58 73 74 72 6d 63 61 74 |/.Xvoid.|Xstrmcat|
|00000ab0| 28 74 2c 20 73 29 0a 58 | 09 63 68 61 72 09 2a 2a |(t, s).X|.char.**|
|00000ac0| 74 2c 20 2a 73 3b 0a 58 | 7b 0a 58 09 69 6e 74 09 |t, *s;.X|{.X.int.|
|00000ad0| 6c 65 6e 20 3d 20 73 74 | 72 6c 65 6e 28 73 29 20 |len = st|rlen(s) |
|00000ae0| 2b 20 31 3b 0a 58 0a 58 | 09 69 66 20 28 2a 73 20 |+ 1;.X.X|.if (*s |
|00000af0| 3d 3d 20 27 5c 30 27 29 | 0a 58 09 09 72 65 74 75 |== '\0')|.X..retu|
|00000b00| 72 6e 3b 0a 58 0a 58 09 | 69 66 20 28 2a 74 20 21 |rn;.X.X.|if (*t !|
|00000b10| 3d 20 4e 55 4c 4c 29 0a | 58 09 7b 0a 58 09 09 6c |= NULL).|X.{.X..l|
|00000b20| 65 6e 20 2b 3d 20 73 74 | 72 6c 65 6e 28 2a 74 29 |en += st|rlen(*t)|
|00000b30| 3b 0a 58 09 09 2a 74 20 | 3d 20 72 65 61 6c 6c 6f |;.X..*t |= reallo|
|00000b40| 63 28 2a 74 2c 20 6c 65 | 6e 29 3b 0a 58 09 09 69 |c(*t, le|n);.X..i|
|00000b50| 66 20 28 2a 74 20 3d 3d | 20 4e 55 4c 4c 29 0a 58 |f (*t ==| NULL).X|
|00000b60| 09 09 7b 0a 58 09 09 09 | 70 65 72 72 6f 72 28 22 |..{.X...|perror("|
|00000b70| 73 74 72 6d 63 61 74 22 | 29 3b 0a 58 09 09 09 65 |strmcat"|);.X...e|
|00000b80| 78 69 74 28 31 29 3b 0a | 58 09 09 7d 0a 58 09 09 |xit(1);.|X..}.X..|
|00000b90| 73 74 72 63 61 74 28 2a | 74 2c 20 73 29 3b 0a 58 |strcat(*|t, s);.X|
|00000ba0| 09 7d 0a 58 09 65 6c 73 | 65 0a 58 09 09 73 74 72 |.}.X.els|e.X..str|
|00000bb0| 6d 63 70 79 28 74 2c 20 | 73 29 3b 0a 58 7d 0a 58 |mcpy(t, |s);.X}.X|
|00000bc0| 0a 58 2f 2a 0a 58 20 2a | 20 73 70 6c 69 74 5f 77 |.X/*.X *| split_w|
|00000bd0| 6f 72 6b 6d 61 6e 64 62 | 28 29 0a 58 20 2a 0a 58 |orkmandb|().X *.X|
|00000be0| 20 2a 20 53 70 6c 69 74 | 20 74 68 65 20 57 4f 52 | * Split| the WOR|
|00000bf0| 4b 4d 41 4e 44 42 20 65 | 6e 76 69 72 6f 6e 6d 65 |KMANDB e|nvironme|
|00000c00| 6e 74 20 76 61 72 69 61 | 62 6c 65 2c 20 69 66 20 |nt varia|ble, if |
|00000c10| 61 6e 79 2c 20 69 6e 74 | 6f 20 61 20 6c 69 73 74 |any, int|o a list|
|00000c20| 20 6f 66 20 64 61 74 61 | 62 61 73 65 0a 58 20 2a | of data|base.X *|
|00000c30| 20 66 69 6c 65 73 20 69 | 6e 20 74 68 65 20 67 6c | files i|n the gl|
|00000c40| 6f 62 61 6c 20 22 64 61 | 74 61 62 61 73 65 73 22 |obal "da|tabases"|
|00000c50| 2e 20 20 49 66 20 57 4f | 52 4b 4d 41 4e 44 42 20 |. If WO|RKMANDB |
|00000c60| 69 73 20 6e 6f 74 20 61 | 76 61 69 6c 61 62 6c 65 |is not a|vailable|
|00000c70| 2c 20 6d 61 6b 65 0a 58 | 20 2a 20 61 20 73 69 6e |, make.X| * a sin|
|00000c80| 67 6c 65 20 65 6e 74 72 | 79 20 77 69 74 68 20 24 |gle entr|y with $|
|00000c90| 48 4f 4d 45 2f 44 42 46 | 49 4c 45 2e 0a 58 20 2a |HOME/DBF|ILE..X *|
|00000ca0| 0a 58 20 2a 20 41 6c 73 | 6f 2c 20 66 69 6c 6c 20 |.X * Als|o, fill |
|00000cb0| 74 68 65 20 22 72 63 66 | 69 6c 65 22 20 67 6c 6f |the "rcf|ile" glo|
|00000cc0| 62 61 6c 20 77 69 74 68 | 20 74 68 65 20 70 65 72 |bal with| the per|
|00000cd0| 73 6f 6e 61 6c 20 70 72 | 65 66 65 72 65 6e 63 65 |sonal pr|eference|
|00000ce0| 73 20 66 69 6c 65 6e 61 | 6d 65 2e 0a 58 20 2a 2f |s filena|me..X */|
|00000cf0| 0a 58 76 6f 69 64 0a 58 | 73 70 6c 69 74 5f 77 6f |.Xvoid.X|split_wo|
|00000d00| 72 6b 6d 61 6e 64 62 28 | 29 0a 58 7b 0a 58 09 69 |rkmandb(|).X{.X.i|
|00000d10| 6e 74 09 6e 64 62 73 2c | 20 69 3b 0a 58 09 63 68 |nt.ndbs,| i;.X.ch|
|00000d20| 61 72 09 2a 68 6f 6d 65 | 2c 20 2a 77 6d 64 62 3b |ar.*home|, *wmdb;|
|00000d30| 0a 58 0a 58 09 69 66 20 | 28 72 63 66 69 6c 65 20 |.X.X.if |(rcfile |
|00000d40| 3d 3d 20 4e 55 4c 4c 20 | 26 26 20 28 72 63 66 69 |== NULL |&& (rcfi|
|00000d50| 6c 65 20 3d 20 67 65 74 | 65 6e 76 28 22 57 4f 52 |le = get|env("WOR|
|00000d60| 4b 4d 41 4e 52 43 22 29 | 29 20 3d 3d 20 4e 55 4c |KMANRC")|) == NUL|
|00000d70| 4c 29 0a 58 09 7b 0a 58 | 09 09 69 66 20 28 28 68 |L).X.{.X|..if ((h|
|00000d80| 6f 6d 65 20 3d 20 67 65 | 74 65 6e 76 28 22 48 4f |ome = ge|tenv("HO|
|00000d90| 4d 45 22 29 29 20 3d 3d | 20 4e 55 4c 4c 29 0a 58 |ME")) ==| NULL).X|
|00000da0| 09 09 7b 0a 58 6e 6f 68 | 6f 6d 65 3a 0a 58 09 09 |..{.Xnoh|ome:.X..|
|00000db0| 09 66 70 72 69 6e 74 66 | 28 73 74 64 65 72 72 2c |.fprintf|(stderr,|
|00000dc0| 20 22 24 48 4f 4d 45 20 | 69 73 20 6e 6f 74 20 73 | "$HOME |is not s|
|00000dd0| 65 74 21 20 20 44 65 73 | 70 61 69 72 21 5c 6e 22 |et! Des|pair!\n"|
|00000de0| 29 3b 0a 58 09 09 09 65 | 78 69 74 28 31 29 3b 0a |);.X...e|xit(1);.|
|00000df0| 58 09 09 7d 0a 58 0a 58 | 09 09 72 63 66 69 6c 65 |X..}.X.X|..rcfile|
|00000e00| 20 3d 20 6d 61 6c 6c 6f | 63 28 73 74 72 6c 65 6e | = mallo|c(strlen|
|00000e10| 28 68 6f 6d 65 29 20 2b | 20 73 69 7a 65 6f 66 28 |(home) +| sizeof(|
|00000e20| 52 43 46 49 4c 45 29 29 | 3b 0a 58 09 09 69 66 20 |RCFILE))|;.X..if |
|00000e30| 28 72 63 66 69 6c 65 20 | 3d 3d 20 4e 55 4c 4c 29 |(rcfile |== NULL)|
|00000e40| 0a 58 09 09 7b 0a 58 6e | 6f 6d 65 6d 3a 0a 58 09 |.X..{.Xn|omem:.X.|
|00000e50| 09 09 70 65 72 72 6f 72 | 28 22 73 70 6c 69 74 5f |..perror|("split_|
|00000e60| 77 6f 72 6b 6d 61 6e 64 | 62 28 29 22 29 3b 0a 58 |workmand|b()");.X|
|00000e70| 09 09 09 65 78 69 74 28 | 31 29 3b 0a 58 09 09 7d |...exit(|1);.X..}|
|00000e80| 0a 58 0a 58 09 09 73 74 | 72 63 70 79 28 72 63 66 |.X.X..st|rcpy(rcf|
|00000e90| 69 6c 65 2c 20 68 6f 6d | 65 29 3b 0a 58 09 09 73 |ile, hom|e);.X..s|
|00000ea0| 74 72 63 61 74 28 72 63 | 66 69 6c 65 2c 20 52 43 |trcat(rc|file, RC|
|00000eb0| 46 49 4c 45 29 3b 0a 58 | 09 7d 0a 58 0a 58 09 69 |FILE);.X|.}.X.X.i|
|00000ec0| 66 20 28 64 61 74 61 62 | 61 73 65 73 20 3d 3d 20 |f (datab|ases == |
|00000ed0| 4e 55 4c 4c 29 0a 58 09 | 7b 0a 58 09 09 69 66 20 |NULL).X.|{.X..if |
|00000ee0| 28 28 77 6d 64 62 20 3d | 20 67 65 74 65 6e 76 28 |((wmdb =| getenv(|
|00000ef0| 22 57 4f 52 4b 4d 41 4e | 44 42 22 29 29 20 3d 3d |"WORKMAN|DB")) ==|
|00000f00| 20 4e 55 4c 4c 29 0a 58 | 09 09 7b 0a 58 09 09 09 | NULL).X|..{.X...|
|00000f10| 69 66 20 28 28 68 6f 6d | 65 20 3d 20 67 65 74 65 |if ((hom|e = gete|
|00000f20| 6e 76 28 22 48 4f 4d 45 | 22 29 29 20 3d 3d 20 4e |nv("HOME|")) == N|
|00000f30| 55 4c 4c 29 0a 58 09 09 | 09 09 67 6f 74 6f 20 6e |ULL).X..|..goto n|
|00000f40| 6f 68 6f 6d 65 3b 0a 58 | 0a 58 09 09 09 77 6d 64 |ohome;.X|.X...wmd|
|00000f50| 62 20 3d 20 6d 61 6c 6c | 6f 63 28 73 74 72 6c 65 |b = mall|oc(strle|
|00000f60| 6e 28 68 6f 6d 65 29 20 | 2b 20 73 69 7a 65 6f 66 |n(home) |+ sizeof|
|00000f70| 28 44 42 46 49 4c 45 29 | 29 3b 0a 58 09 09 09 69 |(DBFILE)|);.X...i|
|00000f80| 66 20 28 77 6d 64 62 20 | 3d 3d 20 4e 55 4c 4c 29 |f (wmdb |== NULL)|
|00000f90| 0a 58 09 09 09 09 67 6f | 74 6f 20 6e 6f 6d 65 6d |.X....go|to nomem|
|00000fa0| 3b 0a 58 0a 58 09 09 09 | 64 61 74 61 62 61 73 65 |;.X.X...|database|
|00000fb0| 73 20 3d 20 6d 61 6c 6c | 6f 63 28 32 20 2a 20 73 |s = mall|oc(2 * s|
|00000fc0| 69 7a 65 6f 66 20 28 64 | 61 74 61 62 61 73 65 73 |izeof (d|atabases|
|00000fd0| 5b 30 5d 29 29 3b 0a 58 | 09 09 09 69 66 20 28 64 |[0]));.X|...if (d|
|00000fe0| 61 74 61 62 61 73 65 73 | 20 3d 3d 20 4e 55 4c 4c |atabases| == NULL|
|00000ff0| 29 0a 58 09 09 09 09 67 | 6f 74 6f 20 6e 6f 6d 65 |).X....g|oto nome|
|00001000| 6d 3b 0a 58 0a 58 09 09 | 09 73 74 72 63 70 79 28 |m;.X.X..|.strcpy(|
|00001010| 77 6d 64 62 2c 20 68 6f | 6d 65 29 3b 0a 58 09 09 |wmdb, ho|me);.X..|
|00001020| 09 73 74 72 63 61 74 28 | 77 6d 64 62 2c 20 44 42 |.strcat(|wmdb, DB|
|00001030| 46 49 4c 45 29 3b 0a 58 | 09 09 09 64 61 74 61 62 |FILE);.X|...datab|
|00001040| 61 73 65 73 5b 30 5d 20 | 3d 20 77 6d 64 62 3b 0a |ases[0] |= wmdb;.|
|00001050| 58 09 09 09 64 61 74 61 | 62 61 73 65 73 5b 31 5d |X...data|bases[1]|
|00001060| 20 3d 20 4e 55 4c 4c 3b | 0a 58 09 09 7d 0a 58 09 | = NULL;|.X..}.X.|
|00001070| 09 65 6c 73 65 0a 58 09 | 09 7b 0a 58 09 09 09 6e |.else.X.|.{.X...n|
|00001080| 64 62 73 20 3d 20 31 3b | 0a 58 09 09 09 66 6f 72 |dbs = 1;|.X...for|
|00001090| 20 28 68 6f 6d 65 20 3d | 20 77 6d 64 62 3b 20 2a | (home =| wmdb; *|
|000010a0| 68 6f 6d 65 3b 20 68 6f | 6d 65 2b 2b 29 0a 58 09 |home; ho|me++).X.|
|000010b0| 09 09 09 69 66 20 28 2a | 68 6f 6d 65 20 3d 3d 20 |...if (*|home == |
|000010c0| 27 3a 27 29 0a 58 09 09 | 09 09 7b 0a 58 09 09 09 |':').X..|..{.X...|
|000010d0| 09 09 2a 68 6f 6d 65 20 | 3d 20 27 5c 30 27 3b 0a |..*home |= '\0';.|
|000010e0| 58 09 09 09 09 09 6e 64 | 62 73 2b 2b 3b 0a 58 09 |X.....nd|bs++;.X.|
|000010f0| 09 09 09 7d 0a 58 09 09 | 09 0a 58 09 09 09 64 61 |...}.X..|..X...da|
|00001100| 74 61 62 61 73 65 73 20 | 3d 20 6d 61 6c 6c 6f 63 |tabases |= malloc|
|00001110| 28 28 6e 64 62 73 20 2b | 20 31 29 20 2a 20 73 69 |((ndbs +| 1) * si|
|00001120| 7a 65 6f 66 28 64 61 74 | 61 62 61 73 65 73 5b 30 |zeof(dat|abases[0|
|00001130| 5d 29 29 3b 0a 58 09 09 | 09 69 66 20 28 64 61 74 |]));.X..|.if (dat|
|00001140| 61 62 61 73 65 73 20 3d | 3d 20 4e 55 4c 4c 29 0a |abases =|= NULL).|
|00001150| 58 09 09 09 09 67 6f 74 | 6f 20 6e 6f 6d 65 6d 3b |X....got|o nomem;|
|00001160| 0a 58 09 09 09 0a 58 09 | 09 09 66 6f 72 20 28 69 |.X....X.|..for (i|
|00001170| 20 3d 20 30 3b 20 69 20 | 3c 20 6e 64 62 73 3b 20 | = 0; i |< ndbs; |
|00001180| 69 2b 2b 29 0a 58 09 09 | 09 7b 0a 58 09 09 09 09 |i++).X..|.{.X....|
|00001190| 64 61 74 61 62 61 73 65 | 73 5b 69 5d 20 3d 20 77 |database|s[i] = w|
|000011a0| 6d 64 62 3b 0a 58 09 09 | 09 09 77 6d 64 62 20 2b |mdb;.X..|..wmdb +|
|000011b0| 3d 20 73 74 72 6c 65 6e | 28 77 6d 64 62 29 20 2b |= strlen|(wmdb) +|
|000011c0| 20 31 3b 0a 58 09 09 09 | 7d 0a 58 0a 58 09 09 09 | 1;.X...|}.X.X...|
|000011d0| 64 61 74 61 62 61 73 65 | 73 5b 69 5d 20 3d 20 4e |database|s[i] = N|
|000011e0| 55 4c 4c 3b 0a 58 09 09 | 7d 0a 58 09 7d 0a 58 7d |ULL;.X..|}.X.}.X}|
|000011f0| 0a 58 0a 58 2f 2a 0a 58 | 20 2a 20 70 72 69 6e 74 |.X.X/*.X| * print|
|00001200| 5f 63 64 69 6e 66 6f 28 | 63 64 2c 20 70 72 65 66 |_cdinfo(|cd, pref|
|00001210| 73 29 0a 58 20 2a 0a 58 | 20 2a 20 63 64 09 09 41 |s).X *.X| * cd..A|
|00001220| 20 70 6f 69 6e 74 65 72 | 20 74 6f 20 61 20 63 64 | pointer| to a cd|
|00001230| 69 6e 66 6f 20 73 74 72 | 75 63 74 2e 0a 58 20 2a |info str|uct..X *|
|00001240| 20 70 72 65 66 73 09 46 | 6c 61 67 3a 20 77 72 69 | prefs.F|lag: wri|
|00001250| 74 65 20 70 65 72 73 6f | 6e 61 6c 20 70 72 65 66 |te perso|nal pref|
|00001260| 65 72 65 6e 63 65 73 3f | 0a 58 20 2a 0a 58 20 2a |erences?|.X *.X *|
|00001270| 20 50 72 69 6e 74 20 61 | 20 43 44 27 73 20 69 6e | Print a| CD's in|
|00001280| 66 6f 72 6d 61 74 69 6f | 6e 20 28 69 6e 20 6d 6f |formatio|n (in mo|
|00001290| 72 65 20 6f 72 20 6c 65 | 73 73 20 72 65 61 64 61 |re or le|ss reada|
|000012a0| 62 6c 65 20 66 6f 72 6d | 29 20 74 6f 20 61 20 62 |ble form|) to a b|
|000012b0| 75 66 66 65 72 2e 0a 58 | 20 2a 20 52 65 74 75 72 |uffer..X| * Retur|
|000012c0| 6e 73 20 61 20 70 6f 69 | 6e 74 65 72 20 74 6f 20 |ns a poi|nter to |
|000012d0| 74 68 65 20 62 75 66 66 | 65 72 2e 0a 58 20 2a 0a |the buff|er..X *.|
|000012e0| 58 20 2a 20 58 58 58 20 | 2d 20 63 6f 75 6c 64 20 |X * XXX |- could |
|000012f0| 62 65 20 6d 6f 72 65 20 | 65 66 66 69 63 69 65 6e |be more |efficien|
|00001300| 74 20 61 62 6f 75 74 20 | 63 61 6c 6c 69 6e 67 20 |t about |calling |
|00001310| 73 74 72 6d 63 61 74 28 | 29 20 61 6e 64 20 73 74 |strmcat(|) and st|
|00001320| 72 6c 65 6e 28 29 2e 0a | 58 20 2a 2f 0a 58 63 68 |rlen()..|X */.Xch|
|00001330| 61 72 20 2a 0a 58 70 72 | 69 6e 74 5f 63 64 69 6e |ar *.Xpr|int_cdin|
|00001340| 66 6f 28 63 64 2c 20 70 | 72 65 66 73 29 0a 58 09 |fo(cd, p|refs).X.|
|00001350| 73 74 72 75 63 74 20 63 | 64 69 6e 66 6f 09 2a 63 |struct c|dinfo.*c|
|00001360| 64 3b 0a 58 09 69 6e 74 | 09 09 70 72 65 66 73 3b |d;.X.int|..prefs;|
|00001370| 0a 58 7b 0a 58 09 69 6e | 74 09 09 69 3b 0a 58 09 |.X{.X.in|t..i;.X.|
|00001380| 63 68 61 72 09 09 74 65 | 6d 70 62 75 66 5b 32 30 |char..te|mpbuf[20|
|00001390| 30 30 5d 3b 09 2f 2a 20 | 58 58 58 20 2d 20 69 73 |00];./* |XXX - is|
|000013a0| 20 74 68 69 73 20 61 6c | 77 61 79 73 20 62 69 67 | this al|ways big|
|000013b0| 20 65 6e 6f 75 67 68 3f | 20 2a 2f 0a 58 09 73 74 | enough?| */.X.st|
|000013c0| 61 74 69 63 20 63 68 61 | 72 09 2a 63 64 69 62 75 |atic cha|r.*cdibu|
|000013d0| 66 20 3d 20 4e 55 4c 4c | 3b 0a 58 09 73 74 72 75 |f = NULL|;.X.stru|
|000013e0| 63 74 20 70 6c 61 79 6c | 69 73 74 09 2a 6c 3b 0a |ct playl|ist.*l;.|
|000013f0| 58 0a 58 09 73 70 72 69 | 6e 74 66 28 74 65 6d 70 |X.X.spri|ntf(temp|
|00001400| 62 75 66 2c 20 22 74 72 | 61 63 6b 73 20 25 64 22 |buf, "tr|acks %d"|
|00001410| 2c 20 63 64 2d 3e 6e 74 | 72 61 63 6b 73 29 3b 0a |, cd->nt|racks);.|
|00001420| 58 09 66 6f 72 20 28 69 | 20 3d 20 30 3b 20 69 20 |X.for (i| = 0; i |
|00001430| 3c 20 63 75 72 5f 6e 74 | 72 61 63 6b 73 3b 20 69 |< cur_nt|racks; i|
|00001440| 2b 2b 29 0a 58 09 09 69 | 66 20 28 63 64 2d 3e 74 |++).X..i|f (cd->t|
|00001450| 72 6b 5b 69 5d 2e 73 65 | 63 74 69 6f 6e 20 3c 20 |rk[i].se|ction < |
|00001460| 32 29 0a 58 09 09 09 73 | 70 72 69 6e 74 66 28 74 |2).X...s|printf(t|
|00001470| 65 6d 70 62 75 66 20 2b | 20 73 74 72 6c 65 6e 28 |empbuf +| strlen(|
|00001480| 74 65 6d 70 62 75 66 29 | 2c 20 22 20 25 64 22 2c |tempbuf)|, " %d",|
|00001490| 0a 58 09 09 09 09 63 64 | 2d 3e 74 72 6b 5b 69 5d |.X....cd|->trk[i]|
|000014a0| 2e 73 74 61 72 74 29 3b | 0a 58 09 73 70 72 69 6e |.start);|.X.sprin|
|000014b0| 74 66 28 74 65 6d 70 62 | 75 66 20 2b 20 73 74 72 |tf(tempb|uf + str|
|000014c0| 6c 65 6e 28 74 65 6d 70 | 62 75 66 29 2c 20 22 20 |len(temp|buf), " |
|000014d0| 25 64 5c 6e 22 2c 20 63 | 64 2d 3e 6c 65 6e 67 74 |%d\n", c|d->lengt|
|000014e0| 68 29 3b 0a 58 0a 58 09 | 73 74 72 6d 63 70 79 28 |h);.X.X.|strmcpy(|
|000014f0| 26 63 64 69 62 75 66 2c | 20 74 65 6d 70 62 75 66 |&cdibuf,| tempbuf|
|00001500| 29 3b 0a 58 0a 58 09 69 | 66 20 28 63 75 72 5f 6e |);.X.X.i|f (cur_n|
|00001510| 73 65 63 74 69 6f 6e 73 | 29 0a 58 09 7b 0a 58 09 |sections|).X.{.X.|
|00001520| 09 73 70 72 69 6e 74 66 | 28 74 65 6d 70 62 75 66 |.sprintf|(tempbuf|
|00001530| 2c 20 22 73 65 63 74 69 | 6f 6e 73 20 25 64 22 2c |, "secti|ons %d",|
|00001540| 20 63 75 72 5f 6e 73 65 | 63 74 69 6f 6e 73 29 3b | cur_nse|ctions);|
|00001550| 0a 58 09 09 66 6f 72 20 | 28 69 20 3d 20 30 3b 20 |.X..for |(i = 0; |
|00001560| 69 20 3c 20 63 75 72 5f | 6e 74 72 61 63 6b 73 3b |i < cur_|ntracks;|
|00001570| 20 69 2b 2b 29 0a 58 09 | 09 09 69 66 20 28 63 64 | i++).X.|..if (cd|
|00001580| 2d 3e 74 72 6b 5b 69 5d | 2e 73 65 63 74 69 6f 6e |->trk[i]|.section|
|00001590| 20 3e 20 31 29 0a 58 09 | 09 09 09 73 70 72 69 6e | > 1).X.|...sprin|
|000015a0| 74 66 28 74 65 6d 70 62 | 75 66 20 2b 20 73 74 72 |tf(tempb|uf + str|
|000015b0| 6c 65 6e 28 74 65 6d 70 | 62 75 66 29 2c 20 22 20 |len(temp|buf), " |
|000015c0| 25 64 22 2c 0a 58 09 09 | 09 09 09 63 64 2d 3e 74 |%d",.X..|...cd->t|
|000015d0| 72 6b 5b 69 5d 2e 73 74 | 61 72 74 29 3b 0a 58 09 |rk[i].st|art);.X.|
|000015e0| 09 73 70 72 69 6e 74 66 | 28 74 65 6d 70 62 75 66 |.sprintf|(tempbuf|
|000015f0| 20 2b 20 73 74 72 6c 65 | 6e 28 74 65 6d 70 62 75 | + strle|n(tempbu|
|00001600| 66 29 2c 20 22 5c 6e 22 | 29 3b 0a 58 0a 58 09 09 |f), "\n"|);.X.X..|
|00001610| 73 74 72 6d 63 61 74 28 | 26 63 64 69 62 75 66 2c |strmcat(|&cdibuf,|
|00001620| 20 74 65 6d 70 62 75 66 | 29 3b 0a 58 09 7d 0a 58 | tempbuf|);.X.}.X|
|00001630| 0a 58 09 69 66 20 28 70 | 72 65 66 73 29 0a 58 09 |.X.if (p|refs).X.|
|00001640| 7b 0a 58 09 09 69 66 20 | 28 63 64 2d 3e 61 75 74 |{.X..if |(cd->aut|
|00001650| 6f 70 6c 61 79 29 0a 58 | 09 09 09 73 74 72 6d 63 |oplay).X|...strmc|
|00001660| 61 74 28 26 63 64 69 62 | 75 66 2c 20 22 61 75 74 |at(&cdib|uf, "aut|
|00001670| 6f 70 6c 61 79 5c 6e 22 | 29 3b 0a 58 09 09 66 6f |oplay\n"|);.X..fo|
|00001680| 72 20 28 6c 20 3d 20 63 | 64 2d 3e 6c 69 73 74 73 |r (l = c|d->lists|
|00001690| 3b 20 6c 20 21 3d 20 4e | 55 4c 4c 20 26 26 20 6c |; l != N|ULL && l|
|000016a0| 2d 3e 6e 61 6d 65 20 21 | 3d 20 4e 55 4c 4c 3b 20 |->name !|= NULL; |
|000016b0| 6c 2b 2b 29 0a 58 09 09 | 7b 0a 58 09 09 09 73 74 |l++).X..|{.X...st|
|000016c0| 72 6d 63 61 74 28 26 63 | 64 69 62 75 66 2c 20 22 |rmcat(&c|dibuf, "|
|000016d0| 70 6c 61 79 6c 69 73 74 | 20 22 29 3b 0a 58 0a 58 |playlist| ");.X.X|
|000016e0| 09 09 09 69 20 3d 20 73 | 74 72 6c 65 6e 28 63 64 |...i = s|trlen(cd|
|000016f0| 69 62 75 66 29 20 2d 20 | 31 3b 0a 58 09 09 09 73 |ibuf) - |1;.X...s|
|00001700| 74 72 6d 63 61 74 28 26 | 63 64 69 62 75 66 2c 20 |trmcat(&|cdibuf, |
|00001710| 6c 2d 3e 6e 61 6d 65 29 | 3b 0a 58 09 09 09 77 68 |l->name)|;.X...wh|
|00001720| 69 6c 65 20 28 63 64 69 | 62 75 66 5b 2b 2b 69 5d |ile (cdi|buf[++i]|
|00001730| 29 0a 58 09 09 09 09 69 | 66 20 28 63 64 69 62 75 |).X....i|f (cdibu|
|00001740| 66 5b 69 5d 20 3d 3d 20 | 27 20 27 20 7c 7c 20 63 |f[i] == |' ' || c|
|00001750| 64 69 62 75 66 5b 69 5d | 20 3d 3d 20 27 5c 74 27 |dibuf[i]| == '\t'|
|00001760| 29 0a 58 09 09 09 09 09 | 63 64 69 62 75 66 5b 69 |).X.....|cdibuf[i|
|00001770| 5d 20 3d 20 27 5f 27 3b | 0a 58 0a 58 09 09 09 69 |] = '_';|.X.X...i|
|00001780| 66 20 28 6c 2d 3e 6c 69 | 73 74 20 21 3d 20 4e 55 |f (l->li|st != NU|
|00001790| 4c 4c 29 0a 58 09 09 09 | 7b 0a 58 09 09 09 09 66 |LL).X...|{.X....f|
|000017a0| 6f 72 20 28 69 20 3d 20 | 30 3b 20 6c 2d 3e 6c 69 |or (i = |0; l->li|
|000017b0| 73 74 5b 69 5d 3b 20 69 | 2b 2b 29 0a 58 09 09 09 |st[i]; i|++).X...|
|000017c0| 09 09 3b 0a 58 09 09 09 | 09 73 70 72 69 6e 74 66 |..;.X...|.sprintf|
|000017d0| 28 74 65 6d 70 62 75 66 | 2c 20 22 20 25 64 22 2c |(tempbuf|, " %d",|
|000017e0| 20 69 29 3b 0a 58 09 09 | 09 09 73 74 72 6d 63 61 | i);.X..|..strmca|
|000017f0| 74 28 26 63 64 69 62 75 | 66 2c 20 74 65 6d 70 62 |t(&cdibu|f, tempb|
|00001800| 75 66 29 3b 0a 58 09 09 | 09 09 66 6f 72 20 28 69 |uf);.X..|..for (i|
|00001810| 20 3d 20 30 3b 20 6c 2d | 3e 6c 69 73 74 5b 69 5d | = 0; l-|>list[i]|
|00001820| 3b 20 69 2b 2b 29 0a 58 | 09 09 09 09 7b 0a 58 09 |; i++).X|....{.X.|
|00001830| 09 09 09 09 73 70 72 69 | 6e 74 66 28 74 65 6d 70 |....spri|ntf(temp|
|00001840| 62 75 66 2c 20 22 20 25 | 64 22 2c 20 6c 2d 3e 6c |buf, " %|d", l->l|
|00001850| 69 73 74 5b 69 5d 29 3b | 0a 58 09 09 09 09 09 73 |ist[i]);|.X.....s|
|00001860| 74 72 6d 63 61 74 28 26 | 63 64 69 62 75 66 2c 20 |trmcat(&|cdibuf, |
|00001870| 74 65 6d 70 62 75 66 29 | 3b 0a 58 09 09 09 09 7d |tempbuf)|;.X....}|
|00001880| 0a 58 09 09 09 09 73 74 | 72 6d 63 61 74 28 26 63 |.X....st|rmcat(&c|
|00001890| 64 69 62 75 66 2c 20 22 | 5c 6e 22 29 3b 0a 58 09 |dibuf, "|\n");.X.|
|000018a0| 09 09 7d 0a 58 09 09 09 | 65 6c 73 65 0a 58 09 09 |..}.X...|else.X..|
|000018b0| 09 09 73 74 72 6d 63 61 | 74 28 26 63 64 69 62 75 |..strmca|t(&cdibu|
|000018c0| 66 2c 20 22 20 30 5c 6e | 22 29 3b 0a 58 09 09 7d |f, " 0\n|");.X..}|
|000018d0| 0a 58 0a 58 09 09 69 66 | 20 28 63 64 2d 3e 76 6f |.X.X..if| (cd->vo|
|000018e0| 6c 75 6d 65 29 0a 58 09 | 09 7b 0a 58 09 09 09 73 |lume).X.|.{.X...s|
|000018f0| 70 72 69 6e 74 66 28 74 | 65 6d 70 62 75 66 2c 20 |printf(t|empbuf, |
|00001900| 22 63 64 76 6f 6c 75 6d | 65 20 25 64 5c 6e 22 2c |"cdvolum|e %d\n",|
|00001910| 20 63 64 2d 3e 76 6f 6c | 75 6d 65 29 3b 0a 58 09 | cd->vol|ume);.X.|
|00001920| 09 09 73 74 72 6d 63 61 | 74 28 26 63 64 69 62 75 |..strmca|t(&cdibu|
|00001930| 66 2c 20 74 65 6d 70 62 | 75 66 29 3b 0a 58 09 09 |f, tempb|uf);.X..|
|00001940| 7d 0a 58 0a 58 09 09 69 | 66 20 28 63 64 2d 3e 70 |}.X.X..i|f (cd->p|
|00001950| 6c 61 79 6d 6f 64 65 29 | 0a 58 09 09 7b 0a 58 09 |laymode)|.X..{.X.|
|00001960| 09 09 73 70 72 69 6e 74 | 66 28 74 65 6d 70 62 75 |..sprint|f(tempbu|
|00001970| 66 2c 20 22 70 6c 61 79 | 6d 6f 64 65 20 25 64 5c |f, "play|mode %d\|
|00001980| 6e 22 2c 20 63 64 2d 3e | 70 6c 61 79 6d 6f 64 65 |n", cd->|playmode|
|00001990| 29 3b 0a 58 09 09 09 73 | 74 72 6d 63 61 74 28 26 |);.X...s|trmcat(&|
|000019a0| 63 64 69 62 75 66 2c 20 | 74 65 6d 70 62 75 66 29 |cdibuf, |tempbuf)|
|000019b0| 3b 0a 58 09 09 7d 0a 58 | 0a 58 09 09 69 66 20 28 |;.X..}.X|.X..if (|
|000019c0| 6d 61 72 6b 5f 61 29 0a | 58 09 09 7b 0a 58 09 09 |mark_a).|X..{.X..|
|000019d0| 09 73 70 72 69 6e 74 66 | 28 74 65 6d 70 62 75 66 |.sprintf|(tempbuf|
|000019e0| 2c 20 22 6d 61 72 6b 20 | 25 64 20 53 54 41 52 54 |, "mark |%d START|
|000019f0| 5c 6e 22 2c 20 6d 61 72 | 6b 5f 61 29 3b 0a 58 09 |\n", mar|k_a);.X.|
|00001a00| 09 09 73 74 72 6d 63 61 | 74 28 26 63 64 69 62 75 |..strmca|t(&cdibu|
|00001a10| 66 2c 20 74 65 6d 70 62 | 75 66 29 3b 0a 58 09 09 |f, tempb|uf);.X..|
|00001a20| 7d 0a 58 09 09 69 66 20 | 28 6d 61 72 6b 5f 62 29 |}.X..if |(mark_b)|
|00001a30| 0a 58 09 09 7b 0a 58 09 | 09 09 73 70 72 69 6e 74 |.X..{.X.|..sprint|
|00001a40| 66 28 74 65 6d 70 62 75 | 66 2c 20 22 6d 61 72 6b |f(tempbu|f, "mark|
|00001a50| 20 25 64 20 45 4e 44 5c | 6e 22 2c 20 6d 61 72 6b | %d END\|n", mark|
|00001a60| 5f 62 29 3b 0a 58 09 09 | 09 73 74 72 6d 63 61 74 |_b);.X..|.strmcat|
|00001a70| 28 26 63 64 69 62 75 66 | 2c 20 74 65 6d 70 62 75 |(&cdibuf|, tempbu|
|00001a80| 66 29 3b 0a 58 09 09 7d | 0a 58 0a 58 09 09 69 66 |f);.X..}|.X.X..if|
|00001a90| 20 28 63 64 2d 3e 6f 74 | 68 65 72 72 63 29 0a 58 | (cd->ot|herrc).X|
|00001aa0| 09 09 09 73 74 72 6d 63 | 61 74 28 26 63 64 69 62 |...strmc|at(&cdib|
|00001ab0| 75 66 2c 20 63 64 2d 3e | 6f 74 68 65 72 72 63 29 |uf, cd->|otherrc)|
|00001ac0| 3b 0a 58 0a 58 09 09 66 | 6f 72 20 28 69 20 3d 20 |;.X.X..f|or (i = |
|00001ad0| 30 3b 20 69 20 3c 20 63 | 75 72 5f 6e 74 72 61 63 |0; i < c|ur_ntrac|
|00001ae0| 6b 73 3b 20 69 2b 2b 29 | 0a 58 09 09 7b 0a 58 09 |ks; i++)|.X..{.X.|
|00001af0| 09 09 69 66 20 28 63 64 | 2d 3e 74 72 6b 5b 69 5d |..if (cd|->trk[i]|
|00001b00| 2e 61 76 6f 69 64 29 0a | 58 09 09 09 7b 0a 58 09 |.avoid).|X...{.X.|
|00001b10| 09 09 09 73 70 72 69 6e | 74 66 28 74 65 6d 70 62 |...sprin|tf(tempb|
|00001b20| 75 66 2c 20 22 64 6f 6e | 74 70 6c 61 79 20 25 64 |uf, "don|tplay %d|
|00001b30| 5c 6e 22 2c 20 69 20 2b | 20 31 29 3b 0a 58 09 09 |\n", i +| 1);.X..|
|00001b40| 09 09 73 74 72 6d 63 61 | 74 28 26 63 64 69 62 75 |..strmca|t(&cdibu|
|00001b50| 66 2c 20 74 65 6d 70 62 | 75 66 29 3b 0a 58 09 09 |f, tempb|uf);.X..|
|00001b60| 09 7d 0a 58 09 09 09 69 | 66 20 28 63 64 2d 3e 74 |.}.X...i|f (cd->t|
|00001b70| 72 6b 5b 69 5d 2e 76 6f | 6c 75 6d 65 29 0a 58 09 |rk[i].vo|lume).X.|
|00001b80| 09 09 7b 0a 58 09 09 09 | 09 73 70 72 69 6e 74 66 |..{.X...|.sprintf|
|00001b90| 28 74 65 6d 70 62 75 66 | 2c 20 22 76 6f 6c 75 6d |(tempbuf|, "volum|
|00001ba0| 65 20 25 64 20 25 64 5c | 6e 22 2c 20 69 20 2b 20 |e %d %d\|n", i + |
|00001bb0| 31 2c 0a 58 09 09 09 09 | 09 63 64 2d 3e 74 72 6b |1,.X....|.cd->trk|
|00001bc0| 5b 69 5d 2e 76 6f 6c 75 | 6d 65 29 3b 0a 58 09 09 |[i].volu|me);.X..|
|00001bd0| 09 09 73 74 72 6d 63 61 | 74 28 26 63 64 69 62 75 |..strmca|t(&cdibu|
|00001be0| 66 2c 20 74 65 6d 70 62 | 75 66 29 3b 0a 58 09 09 |f, tempb|uf);.X..|
|00001bf0| 09 7d 0a 58 09 09 09 69 | 66 20 28 63 64 2d 3e 74 |.}.X...i|f (cd->t|
|00001c00| 72 6b 5b 69 5d 2e 6f 74 | 68 65 72 72 63 29 0a 58 |rk[i].ot|herrc).X|
|00001c10| 09 09 09 09 73 74 72 6d | 63 61 74 28 26 63 64 69 |....strm|cat(&cdi|
|00001c20| 62 75 66 2c 20 63 64 2d | 3e 74 72 6b 5b 69 5d 2e |buf, cd-|>trk[i].|
|00001c30| 6f 74 68 65 72 72 63 29 | 3b 0a 58 09 09 7d 0a 58 |otherrc)|;.X..}.X|
|00001c40| 09 7d 0a 58 09 65 6c 73 | 65 0a 58 09 7b 0a 58 09 |.}.X.els|e.X.{.X.|
|00001c50| 09 69 66 20 28 63 64 2d | 3e 63 64 6e 61 6d 65 5b |.if (cd-|>cdname[|
|00001c60| 30 5d 29 0a 58 09 09 7b | 0a 58 09 09 09 73 74 72 |0]).X..{|.X...str|
|00001c70| 6d 63 61 74 28 26 63 64 | 69 62 75 66 2c 20 22 63 |mcat(&cd|ibuf, "c|
|00001c80| 64 6e 61 6d 65 20 22 29 | 3b 0a 58 09 09 09 73 74 |dname ")|;.X...st|
|00001c90| 72 6d 63 61 74 28 26 63 | 64 69 62 75 66 2c 20 63 |rmcat(&c|dibuf, c|
|00001ca0| 64 2d 3e 63 64 6e 61 6d | 65 29 3b 0a 58 09 09 09 |d->cdnam|e);.X...|
|00001cb0| 73 74 72 6d 63 61 74 28 | 26 63 64 69 62 75 66 2c |strmcat(|&cdibuf,|
|00001cc0| 20 22 5c 6e 22 29 3b 0a | 58 09 09 7d 0a 58 0a 58 | "\n");.|X..}.X.X|
|00001cd0| 09 09 69 66 20 28 63 64 | 2d 3e 61 72 74 69 73 74 |..if (cd|->artist|
|00001ce0| 5b 30 5d 29 0a 58 09 09 | 7b 0a 58 09 09 09 73 74 |[0]).X..|{.X...st|
|00001cf0| 72 6d 63 61 74 28 26 63 | 64 69 62 75 66 2c 20 22 |rmcat(&c|dibuf, "|
|00001d00| 61 72 74 69 73 74 20 22 | 29 3b 0a 58 09 09 09 73 |artist "|);.X...s|
|00001d10| 74 72 6d 63 61 74 28 26 | 63 64 69 62 75 66 2c 20 |trmcat(&|cdibuf, |
|00001d20| 63 64 2d 3e 61 72 74 69 | 73 74 29 3b 0a 58 09 09 |cd->arti|st);.X..|
|00001d30| 09 73 74 72 6d 63 61 74 | 28 26 63 64 69 62 75 66 |.strmcat|(&cdibuf|
|00001d40| 2c 20 22 5c 6e 22 29 3b | 0a 58 09 09 7d 0a 58 0a |, "\n");|.X..}.X.|
|00001d50| 58 09 09 69 66 20 28 63 | 64 2d 3e 6f 74 68 65 72 |X..if (c|d->other|
|00001d60| 64 62 29 0a 58 09 09 09 | 73 74 72 6d 63 61 74 28 |db).X...|strmcat(|
|00001d70| 26 63 64 69 62 75 66 2c | 20 63 64 2d 3e 6f 74 68 |&cdibuf,| cd->oth|
|00001d80| 65 72 64 62 29 3b 0a 58 | 0a 58 09 09 66 6f 72 20 |erdb);.X|.X..for |
|00001d90| 28 69 20 3d 20 30 3b 20 | 69 20 3c 20 63 75 72 5f |(i = 0; |i < cur_|
|00001da0| 6e 74 72 61 63 6b 73 3b | 20 69 2b 2b 29 0a 58 09 |ntracks;| i++).X.|
|00001db0| 09 7b 0a 58 09 09 09 69 | 66 20 28 63 64 2d 3e 74 |.{.X...i|f (cd->t|
|00001dc0| 72 6b 5b 69 5d 2e 73 65 | 63 74 69 6f 6e 20 3e 20 |rk[i].se|ction > |
|00001dd0| 31 29 0a 58 09 09 09 09 | 73 74 72 6d 63 61 74 28 |1).X....|strmcat(|
|00001de0| 26 63 64 69 62 75 66 2c | 20 22 73 2d 22 29 3b 0a |&cdibuf,| "s-");.|
|00001df0| 58 09 09 09 73 74 72 6d | 63 61 74 28 26 63 64 69 |X...strm|cat(&cdi|
|00001e00| 62 75 66 2c 20 22 74 72 | 61 63 6b 20 22 29 3b 0a |buf, "tr|ack ");.|
|00001e10| 58 09 09 09 69 66 20 28 | 63 64 2d 3e 74 72 6b 5b |X...if (|cd->trk[|
|00001e20| 69 5d 2e 73 6f 6e 67 6e | 61 6d 65 20 21 3d 20 4e |i].songn|ame != N|
|00001e30| 55 4c 4c 29 0a 58 09 09 | 09 09 73 74 72 6d 63 61 |ULL).X..|..strmca|
|00001e40| 74 28 26 63 64 69 62 75 | 66 2c 20 63 64 2d 3e 74 |t(&cdibu|f, cd->t|
|00001e50| 72 6b 5b 69 5d 2e 73 6f | 6e 67 6e 61 6d 65 29 3b |rk[i].so|ngname);|
|00001e60| 0a 58 09 09 09 73 74 72 | 6d 63 61 74 28 26 63 64 |.X...str|mcat(&cd|
|00001e70| 69 62 75 66 2c 20 22 5c | 6e 22 29 3b 0a 58 09 09 |ibuf, "\|n");.X..|
|00001e80| 09 69 66 20 28 63 64 2d | 3e 74 72 6b 5b 69 5d 2e |.if (cd-|>trk[i].|
|00001e90| 63 6f 6e 74 64 29 0a 58 | 09 09 09 7b 0a 58 09 09 |contd).X|...{.X..|
|00001ea0| 09 09 69 66 20 28 63 64 | 2d 3e 74 72 6b 5b 69 5d |..if (cd|->trk[i]|
|00001eb0| 2e 73 65 63 74 69 6f 6e | 20 3e 20 31 29 0a 58 09 |.section| > 1).X.|
|00001ec0| 09 09 09 09 73 74 72 6d | 63 61 74 28 26 63 64 69 |....strm|cat(&cdi|
|00001ed0| 62 75 66 2c 20 22 73 2d | 22 29 3b 0a 58 09 09 09 |buf, "s-|");.X...|
|00001ee0| 09 73 74 72 6d 63 61 74 | 28 26 63 64 69 62 75 66 |.strmcat|(&cdibuf|
|00001ef0| 2c 20 22 63 6f 6e 74 69 | 6e 75 65 5c 6e 22 29 3b |, "conti|nue\n");|
|00001f00| 0a 58 09 09 09 7d 0a 58 | 09 09 09 69 66 20 28 63 |.X...}.X|...if (c|
|00001f10| 64 2d 3e 74 72 6b 5b 69 | 5d 2e 6f 74 68 65 72 64 |d->trk[i|].otherd|
|00001f20| 62 29 0a 58 09 09 09 09 | 73 74 72 6d 63 61 74 28 |b).X....|strmcat(|
|00001f30| 26 63 64 69 62 75 66 2c | 20 63 64 2d 3e 74 72 6b |&cdibuf,| cd->trk|
|00001f40| 5b 69 5d 2e 6f 74 68 65 | 72 64 62 29 3b 0a 58 09 |[i].othe|rdb);.X.|
|00001f50| 09 7d 0a 58 09 7d 0a 58 | 0a 58 09 72 65 74 75 72 |.}.X.}.X|.X.retur|
|00001f60| 6e 20 28 63 64 69 62 75 | 66 29 3b 0a 58 7d 0a 58 |n (cdibu|f);.X}.X|
|00001f70| 0a 58 2f 2a 0a 58 20 2a | 20 4f 70 65 6e 20 74 68 |.X/*.X *| Open th|
|00001f80| 65 20 72 63 66 69 6c 65 | 20 66 6f 72 20 72 65 61 |e rcfile| for rea|
|00001f90| 64 69 6e 67 20 6f 72 20 | 77 72 69 74 69 6e 67 2e |ding or |writing.|
|00001fa0| 0a 58 20 2a 0a 58 20 2a | 09 6e 61 6d 65 09 09 46 |.X *.X *|.name..F|
|00001fb0| 69 6c 65 6e 61 6d 65 0a | 58 20 2a 09 6d 6f 64 65 |ilename.|X *.mode|
|00001fc0| 09 09 22 72 22 20 6f 72 | 20 22 77 22 0a 58 20 2a |.."r" or| "w".X *|
|00001fd0| 2f 0a 58 46 49 4c 45 20 | 2a 0a 58 6f 70 65 6e 5f |/.XFILE |*.Xopen_|
|00001fe0| 72 63 66 69 6c 65 28 6e | 61 6d 65 2c 20 6d 6f 64 |rcfile(n|ame, mod|
|00001ff0| 65 29 0a 58 09 63 68 61 | 72 09 2a 6e 61 6d 65 2c |e).X.cha|r.*name,|
|00002000| 20 2a 6d 6f 64 65 3b 0a | 58 7b 0a 58 09 46 49 4c | *mode;.|X{.X.FIL|
|00002010| 45 09 2a 66 70 3b 0a 58 | 0a 58 09 66 70 20 3d 20 |E.*fp;.X|.X.fp = |
|00002020| 66 6f 70 65 6e 28 6e 61 | 6d 65 2c 20 6d 6f 64 65 |fopen(na|me, mode|
|00002030| 29 3b 0a 58 09 69 66 20 | 28 66 70 20 3d 3d 20 4e |);.X.if |(fp == N|
|00002040| 55 4c 4c 29 0a 58 09 7b | 0a 58 09 09 69 66 20 28 |ULL).X.{|.X..if (|
|00002050| 65 72 72 6e 6f 20 21 3d | 20 45 4e 4f 45 4e 54 20 |errno !=| ENOENT |
|00002060| 7c 7c 20 6d 6f 64 65 5b | 30 5d 20 3d 3d 20 27 77 ||| mode[|0] == 'w|
|00002070| 27 29 0a 58 09 09 09 70 | 65 72 72 6f 72 28 6e 61 |').X...p|error(na|
|00002080| 6d 65 29 3b 0a 58 09 7d | 0a 58 09 65 6c 73 65 20 |me);.X.}|.X.else |
|00002090| 69 66 20 28 6d 6f 64 65 | 5b 30 5d 20 3d 3d 20 27 |if (mode|[0] == '|
|000020a0| 77 27 29 20 2f 2a 20 63 | 72 65 61 74 65 20 2d 2d |w') /* c|reate --|
|000020b0| 20 70 75 74 20 64 61 74 | 61 20 69 6e 20 73 6f 20 | put dat|a in so |
|000020c0| 6c 6f 63 6b 73 20 77 6f | 72 6b 20 2a 2f 0a 58 09 |locks wo|rk */.X.|
|000020d0| 7b 0a 58 09 09 66 70 75 | 74 73 28 22 23 20 57 6f |{.X..fpu|ts("# Wo|
|000020e0| 72 6b 4d 61 6e 20 64 61 | 74 61 62 61 73 65 20 66 |rkMan da|tabase f|
|000020f0| 69 6c 65 5c 6e 22 2c 20 | 66 70 29 3b 0a 58 09 09 |ile\n", |fp);.X..|
|00002100| 66 63 6c 6f 73 65 28 66 | 70 29 3b 0a 58 09 09 66 |fclose(f|p);.X..f|
|00002110| 70 20 3d 20 66 6f 70 65 | 6e 28 6e 61 6d 65 2c 20 |p = fope|n(name, |
|00002120| 22 72 2b 22 29 3b 0a 58 | 09 09 69 66 20 28 66 70 |"r+");.X|..if (fp|
|00002130| 20 3d 3d 20 4e 55 4c 4c | 29 0a 58 09 09 09 69 66 | == NULL|).X...if|
|00002140| 20 28 65 72 72 6e 6f 20 | 21 3d 20 45 4e 4f 45 4e | (errno |!= ENOEN|
|00002150| 54 29 0a 58 09 09 09 09 | 70 65 72 72 6f 72 28 6e |T).X....|perror(n|
|00002160| 61 6d 65 29 3b 0a 58 09 | 7d 0a 58 0a 58 09 72 65 |ame);.X.|}.X.X.re|
|00002170| 74 75 72 6e 20 28 66 70 | 29 3b 0a 58 7d 0a 58 0a |turn (fp|);.X}.X.|
|00002180| 58 2f 2a 0a 58 20 2a 20 | 4c 6f 61 64 20 61 20 6e |X/*.X * |Load a n|
|00002190| 65 77 2d 66 6f 72 6d 61 | 74 20 64 61 74 61 62 61 |ew-forma|t databa|
|000021a0| 73 65 20 66 69 6c 65 2c | 20 73 65 61 72 63 68 69 |se file,| searchi|
|000021b0| 6e 67 20 66 6f 72 20 61 | 20 6d 61 74 63 68 20 77 |ng for a| match w|
|000021c0| 69 74 68 20 74 68 65 20 | 63 75 72 72 65 6e 74 6c |ith the |currentl|
|000021d0| 79 0a 58 20 2a 20 69 6e | 73 65 72 74 65 64 20 43 |y.X * in|serted C|
|000021e0| 44 2e 20 20 4d 6f 64 69 | 66 79 20 74 68 65 20 69 |D. Modi|fy the i|
|000021f0| 6e 2d 63 6f 72 65 20 63 | 6f 70 79 20 6f 66 20 74 |n-core c|opy of t|
|00002200| 68 65 20 43 44 20 69 6e | 66 6f 20 62 61 73 65 64 |he CD in|fo based|
|00002210| 20 6f 6e 20 77 68 61 74 | 27 73 20 66 6f 75 6e 64 | on what|'s found|
|00002220| 0a 58 20 2a 20 69 6e 20 | 74 68 65 20 64 61 74 61 |.X * in |the data|
|00002230| 62 61 73 65 2e 0a 58 20 | 2a 0a 58 20 2a 20 52 65 |base..X |*.X * Re|
|00002240| 74 75 72 6e 73 20 31 20 | 69 66 20 74 68 65 72 65 |turns 1 |if there|
|00002250| 20 77 61 73 20 61 20 6d | 61 74 63 68 20 6f 72 20 | was a m|atch or |
|00002260| 30 20 69 66 20 6e 6f 74 | 2e 0a 58 20 2a 0a 58 20 |0 if not|..X *.X |
|00002270| 2a 09 66 70 09 09 46 49 | 4c 45 2a 20 6f 66 20 64 |*.fp..FI|LE* of d|
|00002280| 61 74 61 62 61 73 65 20 | 6f 72 20 72 63 66 69 6c |atabase |or rcfil|
|00002290| 65 2e 0a 58 20 2a 09 70 | 72 65 66 73 09 09 31 20 |e..X *.p|refs..1 |
|000022a0| 69 66 20 77 65 27 72 65 | 20 73 65 61 72 63 68 69 |if we're| searchi|
|000022b0| 6e 67 20 2e 77 6f 72 6b | 6d 61 6e 72 63 2c 20 30 |ng .work|manrc, 0|
|000022c0| 20 66 6f 72 20 2e 77 6f | 72 6b 6d 61 6e 64 62 0a | for .wo|rkmandb.|
|000022d0| 58 20 2a 09 73 63 61 6e | 09 09 53 63 61 6e 20 66 |X *.scan|..Scan f|
|000022e0| 6f 72 20 22 74 72 61 63 | 6b 73 22 20 6c 6f 63 61 |or "trac|ks" loca|
|000022f0| 74 69 6f 6e 20 61 6e 64 | 20 65 6e 74 72 79 20 73 |tion and| entry s|
|00002300| 69 7a 65 20 6f 6e 6c 79 | 0a 58 20 2a 09 68 6f 6c |ize only|.X *.hol|
|00002310| 65 73 69 7a 65 5f 77 61 | 6e 74 65 64 09 48 6f 77 |esize_wa|nted.How|
|00002320| 20 62 69 67 20 61 20 68 | 6f 6c 65 20 77 65 27 72 | big a h|ole we'r|
|00002330| 65 20 6c 6f 6f 6b 69 6e | 67 20 66 6f 72 2c 20 69 |e lookin|g for, i|
|00002340| 66 20 61 6e 79 2e 0a 58 | 20 2a 0a 58 20 2a 20 49 |f any..X| *.X * I|
|00002350| 66 20 61 20 68 6f 6c 65 | 20 77 61 73 20 66 6f 75 |f a hole| was fou|
|00002360| 6e 64 20 61 6c 6f 6e 67 | 20 74 68 65 20 77 61 79 |nd along| the way|
|00002370| 2c 20 75 70 64 61 74 65 | 20 74 68 65 20 67 6c 6f |, update| the glo|
|00002380| 62 61 6c 20 22 68 6f 6c | 65 70 6f 73 22 20 77 69 |bal "hol|epos" wi|
|00002390| 74 68 20 69 74 73 0a 58 | 20 2a 20 73 74 61 72 74 |th its.X| * start|
|000023a0| 69 6e 67 20 6f 66 66 73 | 65 74 20 69 6e 20 74 68 |ing offs|et in th|
|000023b0| 65 20 66 69 6c 65 2e 20 | 20 41 20 68 6f 6c 65 20 |e file. | A hole |
|000023c0| 69 73 20 64 65 66 69 6e | 65 64 20 61 73 20 61 20 |is defin|ed as a |
|000023d0| 62 75 6e 63 68 20 6f 66 | 20 62 6c 61 6e 6b 20 6c |bunch of| blank l|
|000023e0| 69 6e 65 73 0a 58 20 2a | 20 70 72 65 63 65 64 69 |ines.X *| precedi|
|000023f0| 6e 67 20 61 20 22 74 72 | 61 63 6b 73 22 20 6c 69 |ng a "tr|acks" li|
|00002400| 6e 65 2e 20 20 48 6f 6c | 65 70 6f 73 20 77 69 6c |ne. Hol|epos wil|
|00002410| 6c 20 63 6f 6e 74 61 69 | 6e 20 74 68 65 20 62 65 |l contai|n the be|
|00002420| 73 74 20 6d 61 74 63 68 | 2e 0a 58 20 2a 0a 58 20 |st match|..X *.X |
|00002430| 2a 20 49 6e 20 61 64 64 | 69 74 69 6f 6e 2c 20 22 |* In add|ition, "|
|00002440| 66 69 72 73 74 70 6f 73 | 22 20 77 69 6c 6c 20 62 |firstpos|" will b|
|00002450| 65 20 66 69 6c 6c 65 64 | 20 77 69 74 68 20 74 68 |e filled| with th|
|00002460| 65 20 70 6f 73 69 74 69 | 6f 6e 20 6f 66 20 74 68 |e positi|on of th|
|00002470| 65 20 66 69 72 73 74 0a | 58 20 2a 20 22 74 72 61 |e first.|X * "tra|
|00002480| 63 6b 73 22 20 6b 65 79 | 77 6f 72 64 2c 20 73 6f |cks" key|word, so|
|00002490| 20 77 65 20 6b 6e 6f 77 | 20 68 6f 77 20 6d 75 63 | we know| how muc|
|000024a0| 68 20 72 6f 6f 6d 20 69 | 73 20 61 76 61 69 6c 61 |h room i|s availa|
|000024b0| 62 6c 65 20 66 6f 72 20 | 67 6c 6f 62 61 6c 0a 58 |ble for |global.X|
|000024c0| 20 2a 20 73 65 74 74 69 | 6e 67 73 20 61 74 20 74 | * setti|ngs at t|
|000024d0| 68 65 20 72 63 66 69 6c | 65 27 73 20 73 74 61 72 |he rcfil|e's star|
|000024e0| 74 2e 0a 58 20 2a 2f 0a | 58 73 65 61 72 63 68 5f |t..X */.|Xsearch_|
|000024f0| 64 62 28 66 70 2c 20 70 | 72 65 66 73 2c 20 73 63 |db(fp, p|refs, sc|
|00002500| 61 6e 2c 20 68 6f 6c 65 | 73 69 7a 65 5f 77 61 6e |an, hole|size_wan|
|00002510| 74 65 64 29 0a 58 09 46 | 49 4c 45 09 2a 66 70 3b |ted).X.F|ILE.*fp;|
|00002520| 0a 58 09 69 6e 74 09 70 | 72 65 66 73 2c 20 73 63 |.X.int.p|refs, sc|
|00002530| 61 6e 2c 20 68 6f 6c 65 | 73 69 7a 65 5f 77 61 6e |an, hole|size_wan|
|00002540| 74 65 64 3b 0a 58 7b 0a | 58 09 63 68 61 72 09 6b |ted;.X{.|X.char.k|
|00002550| 65 79 77 6f 72 64 5b 36 | 34 5d 2c 20 6c 69 73 74 |eyword[6|4], list|
|00002560| 6e 61 6d 65 5b 36 34 5d | 2c 20 2a 63 3b 0a 58 09 |name[64]|, *c;.X.|
|00002570| 69 6e 74 09 69 2c 20 6a | 2c 20 74 72 61 63 6b 2c |int.i, j|, track,|
|00002580| 20 6c 69 73 74 73 69 7a | 65 2c 20 6e 74 72 61 63 | listsiz|e, ntrac|
|00002590| 6b 73 2c 20 73 63 72 61 | 74 63 68 2c 20 73 65 61 |ks, scra|tch, sea|
|000025a0| 72 63 68 69 6e 67 20 3d | 20 31 3b 0a 58 09 69 6e |rching =| 1;.X.in|
|000025b0| 74 09 2a 74 72 61 63 6b | 6d 61 70 2c 20 67 6f 74 |t.*track|map, got|
|000025c0| 73 65 63 74 69 6f 6e 73 | 20 3d 20 30 3b 0a 58 09 |sections| = 0;.X.|
|000025d0| 6c 6f 6e 67 09 70 6f 73 | 2c 20 74 68 69 73 68 6f |long.pos|, thisho|
|000025e0| 6c 65 70 6f 73 20 3d 20 | 2d 31 2c 20 68 6f 6c 65 |lepos = |-1, hole|
|000025f0| 73 69 7a 65 20 3d 20 39 | 39 39 39 31 32 33 39 3b |size = 9|9991239;|
|00002600| 0a 58 09 73 74 72 75 63 | 74 20 70 6c 61 79 6c 69 |.X.struc|t playli|
|00002610| 73 74 09 2a 6c 3b 0a 58 | 0a 58 09 72 63 6c 65 6e |st.*l;.X|.X.rclen|
|00002620| 20 3d 20 30 3b 0a 58 0a | 58 09 2f 2a 20 57 65 20 | = 0;.X.|X./* We |
|00002630| 6d 61 79 20 6e 6f 74 20 | 66 69 6e 64 20 61 6e 79 |may not |find any|
|00002640| 20 68 6f 6c 65 73 20 61 | 74 20 61 6c 6c 21 20 2a | holes a|t all! *|
|00002650| 2f 0a 58 09 69 66 20 28 | 68 6f 6c 65 73 69 7a 65 |/.X.if (|holesize|
|00002660| 5f 77 61 6e 74 65 64 29 | 0a 58 09 09 68 6f 6c 65 |_wanted)|.X..hole|
|00002670| 70 6f 73 20 3d 20 2d 31 | 3b 0a 58 0a 58 09 2f 2a |pos = -1|;.X.X./*|
|00002680| 0a 58 09 20 2a 20 53 69 | 6e 63 65 20 77 65 20 61 |.X. * Si|nce we a|
|00002690| 63 63 65 73 73 20 74 72 | 61 63 6b 20 6e 75 6d 62 |ccess tr|ack numb|
|000026a0| 65 72 73 20 69 6e 64 69 | 72 65 63 74 6c 79 20 28 |ers indi|rectly (|
|000026b0| 74 6f 20 68 61 6e 64 6c | 65 20 73 65 63 74 69 6f |to handl|e sectio|
|000026c0| 6e 73 0a 58 09 20 2a 20 | 77 69 74 68 20 61 74 20 |ns.X. * |with at |
|000026d0| 6c 65 61 73 74 20 61 20 | 6c 69 74 74 6c 65 20 65 |least a |little e|
|000026e0| 6c 65 67 61 6e 63 65 29 | 2c 20 74 68 65 20 74 72 |legance)|, the tr|
|000026f0| 61 63 6b 20 6d 61 70 70 | 69 6e 67 20 6e 65 65 64 |ack mapp|ing need|
|00002700| 73 20 74 6f 20 62 65 0a | 58 09 20 2a 20 73 65 74 |s to be.|X. * set|
|00002710| 20 75 70 20 62 65 66 6f | 72 65 20 77 65 20 72 65 | up befo|re we re|
|00002720| 61 64 20 61 6e 79 74 68 | 69 6e 67 2e 20 20 49 6e |ad anyth|ing. In|
|00002730| 69 74 69 61 6c 6c 79 20 | 69 74 20 6d 75 73 74 20 |itially |it must |
|00002740| 61 73 73 75 6d 65 20 74 | 68 61 74 0a 58 09 20 2a |assume t|hat.X. *|
|00002750| 20 6e 6f 20 73 65 63 74 | 69 6f 6e 73 20 77 69 6c | no sect|ions wil|
|00002760| 6c 20 61 70 70 65 61 72 | 20 69 6e 20 74 68 69 73 |l appear| in this|
|00002770| 20 64 61 74 61 66 69 6c | 65 2e 0a 58 09 20 2a 2f | datafil|e..X. */|
|00002780| 0a 58 09 74 72 61 63 6b | 6d 61 70 20 3d 20 6d 61 |.X.track|map = ma|
|00002790| 6c 6c 6f 63 28 73 69 7a | 65 6f 66 28 69 6e 74 29 |lloc(siz|eof(int)|
|000027a0| 20 2a 20 63 75 72 5f 6e | 74 72 61 63 6b 73 29 3b | * cur_n|tracks);|
|000027b0| 0a 58 09 69 66 20 28 74 | 72 61 63 6b 6d 61 70 20 |.X.if (t|rackmap |
|000027c0| 3d 3d 20 4e 55 4c 4c 29 | 0a 58 09 7b 0a 58 09 09 |== NULL)|.X.{.X..|
|000027d0| 70 65 72 72 6f 72 28 22 | 74 72 61 63 6b 6d 61 70 |perror("|trackmap|
|000027e0| 22 29 3b 0a 58 09 09 65 | 78 69 74 28 31 29 3b 0a |");.X..e|xit(1);.|
|000027f0| 58 09 7d 0a 58 09 6a 20 | 3d 20 30 3b 0a 58 09 66 |X.}.X.j |= 0;.X.f|
|00002800| 6f 72 20 28 69 20 3d 20 | 30 3b 20 69 20 3c 20 63 |or (i = |0; i < c|
|00002810| 64 2d 3e 6e 74 72 61 63 | 6b 73 3b 20 69 2b 2b 29 |d->ntrac|ks; i++)|
|00002820| 0a 58 09 7b 0a 58 09 09 | 74 72 61 63 6b 6d 61 70 |.X.{.X..|trackmap|
|00002830| 5b 69 5d 20 3d 20 6a 3b | 0a 58 09 09 77 68 69 6c |[i] = j;|.X..whil|
|00002840| 65 20 28 63 64 2d 3e 74 | 72 6b 5b 2b 2b 6a 5d 2e |e (cd->t|rk[++j].|
|00002850| 73 65 63 74 69 6f 6e 20 | 3e 20 31 29 0a 58 09 09 |section |> 1).X..|
|00002860| 09 3b 0a 58 09 7d 0a 58 | 0a 58 09 69 66 20 28 70 |.;.X.}.X|.X.if (p|
|00002870| 72 65 66 73 29 0a 58 09 | 09 66 72 65 65 75 70 28 |refs).X.|.freeup(|
|00002880| 26 6f 74 68 65 72 72 63 | 29 3b 0a 58 09 66 69 72 |&otherrc|);.X.fir|
|00002890| 73 74 70 6f 73 20 3d 20 | 2d 31 3b 0a 58 0a 58 09 |stpos = |-1;.X.X.|
|000028a0| 77 68 69 6c 65 20 28 21 | 20 66 65 6f 66 28 66 70 |while (!| feof(fp|
|000028b0| 29 29 0a 58 09 7b 0a 58 | 09 09 70 6f 73 20 3d 20 |)).X.{.X|..pos = |
|000028c0| 66 74 65 6c 6c 28 66 70 | 29 3b 0a 58 0a 58 09 09 |ftell(fp|);.X.X..|
|000028d0| 6b 65 79 77 6f 72 64 5b | 30 5d 20 3d 20 27 5c 30 |keyword[|0] = '\0|
|000028e0| 27 3b 0a 58 09 09 66 73 | 63 61 6e 66 28 66 70 2c |';.X..fs|canf(fp,|
|000028f0| 20 22 25 73 22 2c 20 6b | 65 79 77 6f 72 64 29 3b | "%s", k|eyword);|
|00002900| 0a 58 09 09 69 66 20 28 | 6b 65 79 77 6f 72 64 5b |.X..if (|keyword[|
|00002910| 30 5d 20 3d 3d 20 27 5c | 30 27 29 09 09 2f 2a 20 |0] == '\|0')../* |
|00002920| 42 6c 61 6e 6b 20 6c 69 | 6e 65 2e 20 2a 2f 0a 58 |Blank li|ne. */.X|
|00002930| 09 09 7b 0a 58 09 09 09 | 69 66 20 28 74 68 69 73 |..{.X...|if (this|
|00002940| 68 6f 6c 65 70 6f 73 20 | 3c 20 30 29 0a 58 09 09 |holepos |< 0).X..|
|00002950| 09 09 74 68 69 73 68 6f | 6c 65 70 6f 73 20 3d 20 |..thisho|lepos = |
|00002960| 70 6f 73 3b 0a 58 09 09 | 09 63 6f 6e 74 69 6e 75 |pos;.X..|.continu|
|00002970| 65 3b 0a 58 09 09 7d 0a | 58 0a 58 09 09 2f 2a 20 |e;.X..}.|X.X../* |
|00002980| 53 74 72 69 70 20 6f 66 | 66 20 22 73 2d 22 20 69 |Strip of|f "s-" i|
|00002990| 66 20 77 65 27 76 65 20 | 73 65 65 6e 20 61 20 22 |f we've |seen a "|
|000029a0| 73 65 63 74 69 6f 6e 73 | 22 20 6b 65 79 77 6f 72 |sections|" keywor|
|000029b0| 64 20 2a 2f 0a 58 09 09 | 69 66 20 28 67 6f 74 73 |d */.X..|if (gots|
|000029c0| 65 63 74 69 6f 6e 73 20 | 26 26 20 6b 65 79 77 6f |ections |&& keywo|
|000029d0| 72 64 5b 30 5d 20 3d 3d | 20 27 73 27 20 26 26 20 |rd[0] ==| 's' && |
|000029e0| 6b 65 79 77 6f 72 64 5b | 31 5d 20 3d 3d 20 27 2d |keyword[|1] == '-|
|000029f0| 27 29 0a 58 09 09 09 66 | 6f 72 20 28 63 20 3d 20 |').X...f|or (c = |
|00002a00| 26 6b 65 79 77 6f 72 64 | 5b 32 5d 3b 20 28 63 5b |&keyword|[2]; (c[|
|00002a10| 2d 32 5d 20 3d 20 2a 63 | 29 20 21 3d 20 27 5c 30 |-2] = *c|) != '\0|
|00002a20| 27 3b 20 63 2b 2b 29 0a | 58 09 09 09 09 3b 0a 58 |'; c++).|X....;.X|
|00002a30| 0a 58 09 09 2f 2a 20 49 | 66 20 74 68 69 73 20 69 |.X../* I|f this i|
|00002a40| 73 20 74 68 65 20 73 74 | 61 72 74 20 6f 66 20 61 |s the st|art of a|
|00002a50| 20 43 44 20 65 6e 74 72 | 79 2c 20 73 65 65 20 69 | CD entr|y, see i|
|00002a60| 66 20 69 74 20 6d 61 74 | 63 68 65 73 2e 20 2a 2f |f it mat|ches. */|
|00002a70| 0a 58 09 09 69 66 20 28 | 21 20 73 74 72 63 6d 70 |.X..if (|! strcmp|
|00002a80| 28 6b 65 79 77 6f 72 64 | 2c 20 22 74 72 61 63 6b |(keyword|, "track|
|00002a90| 73 22 29 29 0a 58 09 09 | 7b 0a 58 09 09 09 2f 2a |s")).X..|{.X.../*|
|00002aa0| 20 49 73 20 74 68 69 73 | 20 74 68 65 20 65 6e 64 | Is this| the end|
|00002ab0| 20 6f 66 20 61 20 68 6f | 6c 65 3f 20 2a 2f 0a 58 | of a ho|le? */.X|
|00002ac0| 09 09 09 69 66 20 28 68 | 6f 6c 65 73 69 7a 65 5f |...if (h|olesize_|
|00002ad0| 77 61 6e 74 65 64 20 26 | 26 20 28 74 68 69 73 68 |wanted &|& (thish|
|00002ae0| 6f 6c 65 70 6f 73 20 3e | 3d 20 30 29 29 0a 58 09 |olepos >|= 0)).X.|
|00002af0| 09 09 7b 0a 58 09 09 09 | 09 2f 2a 20 59 65 70 2e |..{.X...|./* Yep.|
|00002b00| 20 20 49 73 20 69 74 20 | 62 65 74 74 65 72 20 74 | Is it |better t|
|00002b10| 68 61 6e 20 74 68 65 20 | 6c 61 73 74 20 6f 6e 65 |han the |last one|
|00002b20| 3f 20 2a 2f 0a 58 09 09 | 09 09 69 66 20 28 70 6f |? */.X..|..if (po|
|00002b30| 73 20 2d 20 74 68 69 73 | 68 6f 6c 65 70 6f 73 20 |s - this|holepos |
|00002b40| 3c 20 68 6f 6c 65 73 69 | 7a 65 20 26 26 20 70 6f |< holesi|ze && po|
|00002b50| 73 20 2d 0a 58 09 09 09 | 09 09 09 74 68 69 73 68 |s -.X...|...thish|
|00002b60| 6f 6c 65 70 6f 73 20 3e | 3d 20 68 6f 6c 65 73 69 |olepos >|= holesi|
|00002b70| 7a 65 5f 77 61 6e 74 65 | 64 29 0a 58 09 09 09 09 |ze_wante|d).X....|
|00002b80| 7b 0a 58 09 09 09 09 09 | 68 6f 6c 65 70 6f 73 20 |{.X.....|holepos |
|00002b90| 3d 20 74 68 69 73 68 6f | 6c 65 70 6f 73 3b 0a 58 |= thisho|lepos;.X|
|00002ba0| 09 09 09 09 09 68 6f 6c | 65 73 69 7a 65 20 3d 20 |.....hol|esize = |
|00002bb0| 70 6f 73 20 2d 20 74 68 | 69 73 68 6f 6c 65 70 6f |pos - th|isholepo|
|00002bc0| 73 3b 0a 58 09 09 09 09 | 7d 0a 58 09 09 09 09 74 |s;.X....|}.X....t|
|00002bd0| 68 69 73 68 6f 6c 65 70 | 6f 73 20 3d 20 2d 31 3b |hisholep|os = -1;|
|00002be0| 0a 58 09 09 09 7d 0a 58 | 0a 58 09 09 09 2f 2a 20 |.X...}.X|.X.../* |
|00002bf0| 49 73 20 69 74 20 74 68 | 65 20 73 74 61 72 74 20 |Is it th|e start |
|00002c00| 6f 66 20 74 68 65 20 43 | 44 20 65 6e 74 72 69 65 |of the C|D entrie|
|00002c10| 73 3f 20 2a 2f 0a 58 09 | 09 09 69 66 20 28 66 69 |s? */.X.|..if (fi|
|00002c20| 72 73 74 70 6f 73 20 3d | 3d 20 2d 31 29 0a 58 09 |rstpos =|= -1).X.|
|00002c30| 09 09 09 66 69 72 73 74 | 70 6f 73 20 3d 20 70 6f |...first|pos = po|
|00002c40| 73 3b 0a 58 0a 58 09 09 | 09 2f 2a 20 49 73 20 74 |s;.X.X..|./* Is t|
|00002c50| 68 69 73 20 74 68 65 20 | 65 6e 64 20 6f 66 20 74 |his the |end of t|
|00002c60| 68 65 20 65 6e 74 72 79 | 20 77 65 20 72 65 61 6c |he entry| we real|
|00002c70| 6c 79 20 77 61 6e 74 65 | 64 3f 20 2a 2f 0a 58 09 |ly wante|d? */.X.|
|00002c80| 09 09 69 66 20 28 21 20 | 73 65 61 72 63 68 69 6e |..if (! |searchin|
|00002c90| 67 29 0a 58 09 09 09 7b | 0a 58 09 09 09 09 72 63 |g).X...{|.X....rc|
|00002ca0| 6c 65 6e 20 3d 20 70 6f | 73 20 2d 20 72 63 70 6f |len = po|s - rcpo|
|00002cb0| 73 3b 0a 58 09 09 09 09 | 62 72 65 61 6b 3b 0a 58 |s;.X....|break;.X|
|00002cc0| 09 09 09 7d 0a 58 0a 58 | 09 09 09 66 73 63 61 6e |...}.X.X|...fscan|
|00002cd0| 66 28 66 70 2c 20 22 25 | 64 22 2c 20 26 6e 74 72 |f(fp, "%|d", &ntr|
|00002ce0| 61 63 6b 73 29 3b 0a 58 | 0a 58 09 09 09 69 66 20 |acks);.X|.X...if |
|00002cf0| 28 6e 74 72 61 63 6b 73 | 20 21 3d 20 63 64 2d 3e |(ntracks| != cd->|
|00002d00| 6e 74 72 61 63 6b 73 29 | 0a 58 09 09 09 7b 0a 58 |ntracks)|.X...{.X|
|00002d10| 63 68 6f 6d 70 3a 0a 58 | 09 09 09 09 53 57 41 4c |chomp:.X|....SWAL|
|00002d20| 4c 4f 57 5f 4c 49 4e 45 | 28 66 70 29 3b 0a 58 09 |LOW_LINE|(fp);.X.|
|00002d30| 09 09 09 63 6f 6e 74 69 | 6e 75 65 3b 0a 58 09 09 |...conti|nue;.X..|
|00002d40| 09 7d 0a 58 0a 58 09 09 | 09 74 72 61 63 6b 20 3d |.}.X.X..|.track =|
|00002d50| 20 30 3b 0a 58 09 09 09 | 66 6f 72 20 28 69 20 3d | 0;.X...|for (i =|
|00002d60| 20 30 3b 20 69 20 3c 20 | 6e 74 72 61 63 6b 73 3b | 0; i < |ntracks;|
|00002d70| 20 69 2b 2b 29 0a 58 09 | 09 09 7b 0a 58 09 09 09 | i++).X.|..{.X...|
|00002d80| 09 66 73 63 61 6e 66 28 | 66 70 2c 20 22 25 64 22 |.fscanf(|fp, "%d"|
|00002d90| 2c 20 26 73 63 72 61 74 | 63 68 29 3b 0a 58 09 09 |, &scrat|ch);.X..|
|00002da0| 09 09 69 66 20 28 73 63 | 72 61 74 63 68 20 21 3d |..if (sc|ratch !=|
|00002db0| 20 63 64 2d 3e 74 72 6b | 5b 74 72 61 63 6b 5d 2e | cd->trk|[track].|
|00002dc0| 73 74 61 72 74 29 0a 58 | 09 09 09 09 09 62 72 65 |start).X|.....bre|
|00002dd0| 61 6b 3b 0a 58 09 09 09 | 09 77 68 69 6c 65 20 28 |ak;.X...|.while (|
|00002de0| 63 64 2d 3e 74 72 6b 5b | 2b 2b 74 72 61 63 6b 5d |cd->trk[|++track]|
|00002df0| 2e 73 65 63 74 69 6f 6e | 20 3e 20 31 29 0a 58 09 |.section| > 1).X.|
|00002e00| 09 09 09 09 3b 0a 58 09 | 09 09 7d 0a 58 09 09 09 |....;.X.|..}.X...|
|00002e10| 69 66 20 28 69 20 21 3d | 20 6e 74 72 61 63 6b 73 |if (i !=| ntracks|
|00002e20| 29 0a 58 09 09 09 09 67 | 6f 74 6f 20 63 68 6f 6d |).X....g|oto chom|
|00002e30| 70 3b 0a 58 0a 58 09 09 | 09 66 73 63 61 6e 66 28 |p;.X.X..|.fscanf(|
|00002e40| 66 70 2c 20 22 25 64 22 | 2c 20 26 73 63 72 61 74 |fp, "%d"|, &scrat|
|00002e50| 63 68 29 3b 0a 58 0a 58 | 09 09 09 69 66 20 28 73 |ch);.X.X|...if (s|
|00002e60| 63 72 61 74 63 68 20 21 | 3d 20 63 64 2d 3e 6c 65 |cratch !|= cd->le|
|00002e70| 6e 67 74 68 29 0a 58 09 | 09 09 09 67 6f 74 6f 20 |ngth).X.|...goto |
|00002e80| 63 68 6f 6d 70 3b 0a 58 | 0a 58 09 09 09 2f 2a 20 |chomp;.X|.X.../* |
|00002e90| 46 6f 75 6e 64 20 69 74 | 21 20 2a 2f 0a 58 09 09 |Found it|! */.X..|
|00002ea0| 09 72 63 70 6f 73 20 3d | 20 70 6f 73 3b 0a 58 09 |.rcpos =| pos;.X.|
|00002eb0| 09 09 74 72 61 63 6b 20 | 3d 20 30 3b 0a 58 09 09 |..track |= 0;.X..|
|00002ec0| 09 73 65 61 72 63 68 69 | 6e 67 20 3d 20 30 3b 0a |.searchi|ng = 0;.|
|00002ed0| 58 0a 58 09 09 09 53 57 | 41 4c 4c 4f 57 5f 4c 49 |X.X...SW|ALLOW_LI|
|00002ee0| 4e 45 28 66 70 29 3b 09 | 2f 2a 20 47 65 74 20 72 |NE(fp);.|/* Get r|
|00002ef0| 69 64 20 6f 66 20 6e 65 | 77 6c 69 6e 65 20 2a 2f |id of ne|wline */|
|00002f00| 0a 58 09 09 7d 0a 58 0a | 58 09 09 2f 2a 20 47 6c |.X..}.X.|X../* Gl|
|00002f10| 6f 62 61 6c 20 6d 6f 64 | 65 20 73 74 75 66 66 20 |obal mod|e stuff |
|00002f20| 67 6f 65 73 20 68 65 72 | 65 20 2a 2f 0a 58 09 09 |goes her|e */.X..|
|00002f30| 65 6c 73 65 20 69 66 20 | 28 21 20 73 74 72 63 6d |else if |(! strcm|
|00002f40| 70 28 6b 65 79 77 6f 72 | 64 2c 20 22 77 68 65 6e |p(keywor|d, "when|
|00002f50| 64 6f 6e 65 22 29 29 0a | 58 09 09 7b 0a 58 09 09 |done")).|X..{.X..|
|00002f60| 09 67 65 74 63 28 66 70 | 29 3b 0a 58 09 09 09 69 |.getc(fp|);.X...i|
|00002f70| 20 3d 20 67 65 74 63 28 | 66 70 29 3b 09 2f 2a 20 | = getc(|fp);./* |
|00002f80| 6f 6e 6c 79 20 66 69 72 | 73 74 20 6c 65 74 74 65 |only fir|st lette|
|00002f90| 72 20 69 73 20 75 73 65 | 64 20 2a 2f 0a 58 09 09 |r is use|d */.X..|
|00002fa0| 09 69 66 20 28 63 75 72 | 5f 73 74 6f 70 6d 6f 64 |.if (cur|_stopmod|
|00002fb0| 65 20 3d 3d 20 2d 31 29 | 09 2f 2a 20 75 73 65 72 |e == -1)|./* user|
|00002fc0| 27 73 20 73 65 74 74 69 | 6e 67 20 70 72 65 66 65 |'s setti|ng prefe|
|00002fd0| 72 72 65 64 20 2a 2f 0a | 58 09 09 09 09 63 75 72 |rred */.|X....cur|
|00002fe0| 5f 73 74 6f 70 6d 6f 64 | 65 20 3d 20 69 20 3d 3d |_stopmod|e = i ==|
|00002ff0| 20 27 73 27 20 3f 20 30 | 20 3a 20 69 20 3d 3d 20 | 's' ? 0| : i == |
|00003000| 27 72 27 20 3f 20 31 20 | 3a 20 32 3b 0a 58 09 09 |'r' ? 1 |: 2;.X..|
|00003010| 09 64 6f 0a 58 09 09 09 | 09 69 20 3d 20 67 65 74 |.do.X...|.i = get|
|00003020| 63 28 66 70 29 3b 0a 58 | 09 09 09 77 68 69 6c 65 |c(fp);.X|...while|
|00003030| 20 28 69 20 21 3d 20 27 | 5c 6e 27 20 26 26 20 69 | (i != '|\n' && i|
|00003040| 20 21 3d 20 45 4f 46 29 | 3b 0a 58 09 09 7d 0a 58 | != EOF)|;.X..}.X|
|00003050| 0a 58 09 09 65 6c 73 65 | 20 69 66 20 28 21 20 73 |.X..else| if (! s|
|00003060| 74 72 63 6d 70 28 6b 65 | 79 77 6f 72 64 2c 20 22 |trcmp(ke|yword, "|
|00003070| 70 6c 61 79 6e 65 77 22 | 29 29 0a 58 09 09 7b 0a |playnew"|)).X..{.|
|00003080| 58 09 09 09 69 66 20 28 | 63 75 72 5f 70 6c 61 79 |X...if (|cur_play|
|00003090| 6e 65 77 20 3d 3d 20 2d | 31 29 0a 58 09 09 09 09 |new == -|1).X....|
|000030a0| 63 75 72 5f 70 6c 61 79 | 6e 65 77 20 3d 20 31 3b |cur_play|new = 1;|
|000030b0| 0a 58 09 09 7d 0a 58 0a | 58 09 09 2f 2a 20 49 66 |.X..}.X.|X../* If|
|000030c0| 20 77 65 27 72 65 20 73 | 65 61 72 63 68 69 6e 67 | we're s|earching|
|000030d0| 2c 20 73 6b 69 70 20 74 | 6f 20 74 68 65 20 6e 65 |, skip t|o the ne|
|000030e0| 78 74 20 22 74 72 61 63 | 6b 73 22 20 6c 69 6e 65 |xt "trac|ks" line|
|000030f0| 2e 20 2a 2f 0a 58 09 09 | 65 6c 73 65 20 69 66 20 |. */.X..|else if |
|00003100| 28 28 73 65 61 72 63 68 | 69 6e 67 20 7c 7c 20 73 |((search|ing || s|
|00003110| 63 61 6e 29 20 26 26 20 | 21 28 70 72 65 66 73 20 |can) && |!(prefs |
|00003120| 26 26 20 66 69 72 73 74 | 70 6f 73 20 3d 3d 20 2d |&& first|pos == -|
|00003130| 31 29 29 0a 58 09 09 09 | 53 57 41 4c 4c 4f 57 5f |1)).X...|SWALLOW_|
|00003140| 4c 49 4e 45 28 66 70 29 | 0a 58 0a 58 09 09 65 6c |LINE(fp)|.X.X..el|
|00003150| 73 65 20 69 66 20 28 21 | 20 73 74 72 63 6d 70 28 |se if (!| strcmp(|
|00003160| 6b 65 79 77 6f 72 64 2c | 20 22 73 65 63 74 69 6f |keyword,| "sectio|
|00003170| 6e 73 22 29 29 0a 58 09 | 09 7b 0a 58 09 09 09 67 |ns")).X.|.{.X...g|
|00003180| 6f 74 73 65 63 74 69 6f | 6e 73 20 3d 20 31 3b 0a |otsectio|ns = 1;.|
|00003190| 58 09 09 09 66 73 63 61 | 6e 66 28 66 70 2c 20 22 |X...fsca|nf(fp, "|
|000031a0| 25 64 22 2c 20 26 6e 74 | 72 61 63 6b 73 29 3b 0a |%d", &nt|racks);.|
|000031b0| 58 0a 58 09 09 09 66 72 | 65 65 28 74 72 61 63 6b |X.X...fr|ee(track|
|000031c0| 6d 61 70 29 3b 0a 58 09 | 09 09 74 72 61 63 6b 6d |map);.X.|..trackm|
|000031d0| 61 70 20 3d 20 28 69 6e | 74 20 2a 29 20 6d 61 6c |ap = (in|t *) mal|
|000031e0| 6c 6f 63 28 73 69 7a 65 | 6f 66 28 69 6e 74 29 20 |loc(size|of(int) |
|000031f0| 2a 0a 58 09 09 09 09 09 | 09 28 63 75 72 5f 6e 74 |*.X.....|.(cur_nt|
|00003200| 72 61 63 6b 73 20 2b 20 | 6e 74 72 61 63 6b 73 29 |racks + |ntracks)|
|00003210| 29 3b 0a 58 09 09 09 69 | 66 20 28 74 72 61 63 6b |);.X...i|f (track|
|00003220| 6d 61 70 20 3d 3d 20 4e | 55 4c 4c 29 0a 58 09 09 |map == N|ULL).X..|
|00003230| 09 7b 0a 58 09 09 09 09 | 70 65 72 72 6f 72 28 22 |.{.X....|perror("|
|00003240| 73 65 63 74 69 6f 6e 20 | 6d 61 70 70 69 6e 67 22 |section |mapping"|
|00003250| 29 3b 0a 58 09 09 09 09 | 65 78 69 74 28 31 29 3b |);.X....|exit(1);|
|00003260| 0a 58 09 09 09 7d 0a 58 | 0a 58 09 09 09 2f 2a 0a |.X...}.X|.X.../*.|
|00003270| 58 09 09 09 20 2a 20 49 | 66 20 73 65 63 74 69 6f |X... * I|f sectio|
|00003280| 6e 73 20 61 72 65 20 61 | 6c 72 65 61 64 79 20 64 |ns are a|lready d|
|00003290| 65 66 69 6e 65 64 2c 20 | 75 73 65 20 74 68 65 73 |efined, |use thes|
|000032a0| 65 20 61 73 20 61 0a 58 | 09 09 09 20 2a 20 72 65 |e as a.X|... * re|
|000032b0| 66 65 72 65 6e 63 65 2c | 20 6d 61 70 70 69 6e 67 |ference,| mapping|
|000032c0| 20 74 68 69 73 20 43 44 | 20 65 6e 74 72 79 27 73 | this CD| entry's|
|000032d0| 20 73 65 63 74 69 6f 6e | 20 6e 75 6d 62 65 72 73 | section| numbers|
|000032e0| 0a 58 09 09 09 20 2a 20 | 74 6f 20 74 68 65 20 6f |.X... * |to the o|
|000032f0| 6e 65 73 20 69 6e 20 63 | 6f 72 65 2e 0a 58 09 09 |nes in c|ore..X..|
|00003300| 09 20 2a 0a 58 09 09 09 | 20 2a 20 4f 74 68 65 72 |. *.X...| * Other|
|00003310| 77 69 73 65 2c 20 73 70 | 6c 69 74 20 74 68 65 20 |wise, sp|lit the |
|00003320| 43 44 20 75 70 20 61 63 | 63 6f 72 64 69 6e 67 20 |CD up ac|cording |
|00003330| 74 6f 20 74 68 65 20 73 | 65 63 74 69 6f 6e 73 0a |to the s|ections.|
|00003340| 58 09 09 09 20 2a 20 6c | 69 73 74 65 64 20 68 65 |X... * l|isted he|
|00003350| 72 65 2e 0a 58 09 09 09 | 20 2a 2f 0a 58 09 09 09 |re..X...| */.X...|
|00003360| 69 66 20 28 63 75 72 5f | 6e 73 65 63 74 69 6f 6e |if (cur_|nsection|
|00003370| 73 29 0a 58 09 09 09 7b | 0a 58 09 09 09 09 74 72 |s).X...{|.X....tr|
|00003380| 61 63 6b 20 3d 20 30 3b | 0a 58 09 09 09 09 69 20 |ack = 0;|.X....i |
|00003390| 3d 20 30 3b 0a 58 09 09 | 09 09 77 68 69 6c 65 20 |= 0;.X..|..while |
|000033a0| 28 6e 74 72 61 63 6b 73 | 29 0a 58 09 09 09 09 7b |(ntracks|).X....{|
|000033b0| 0a 58 09 09 09 09 09 6e | 74 72 61 63 6b 73 2d 2d |.X.....n|tracks--|
|000033c0| 3b 0a 58 09 09 09 09 09 | 66 73 63 61 6e 66 28 66 |;.X.....|fscanf(f|
|000033d0| 70 2c 20 22 25 64 22 2c | 20 26 73 63 72 61 74 63 |p, "%d",| &scratc|
|000033e0| 68 29 3b 0a 58 09 09 09 | 09 09 77 68 69 6c 65 20 |h);.X...|..while |
|000033f0| 28 73 63 72 61 74 63 68 | 20 3e 20 63 64 2d 3e 74 |(scratch| > cd->t|
|00003400| 72 6b 5b 74 72 61 63 6b | 5d 2e 73 74 61 72 74 29 |rk[track|].start)|
|00003410| 0a 58 09 09 09 09 09 7b | 0a 58 09 09 09 09 09 09 |.X.....{|.X......|
|00003420| 69 66 20 28 63 64 2d 3e | 74 72 6b 5b 74 72 61 63 |if (cd->|trk[trac|
|00003430| 6b 5d 2e 73 65 63 74 69 | 6f 6e 20 3c 20 32 29 0a |k].secti|on < 2).|
|00003440| 58 09 09 09 09 09 09 09 | 74 72 61 63 6b 6d 61 70 |X.......|trackmap|
|00003450| 5b 69 2b 2b 5d 20 3d 20 | 74 72 61 63 6b 3b 0a 58 |[i++] = |track;.X|
|00003460| 09 09 09 09 09 09 2b 2b | 74 72 61 63 6b 3b 0a 58 |......++|track;.X|
|00003470| 0a 58 09 09 09 09 09 09 | 69 66 20 28 74 72 61 63 |.X......|if (trac|
|00003480| 6b 20 3d 3d 20 63 75 72 | 5f 6e 74 72 61 63 6b 73 |k == cur|_ntracks|
|00003490| 29 0a 58 09 09 09 09 09 | 09 09 62 72 65 61 6b 3b |).X.....|..break;|
|000034a0| 0a 58 09 09 09 09 09 7d | 0a 58 0a 58 09 09 09 09 |.X.....}|.X.X....|
|000034b0| 09 2f 2a 20 72 63 20 68 | 61 73 20 6c 61 74 65 72 |./* rc h|as later|
|000034c0| 20 73 65 63 74 69 6f 6e | 73 20 74 68 61 6e 20 64 | section|s than d|
|000034d0| 62 2e 2e 2e 20 2a 2f 0a | 58 09 09 09 09 09 69 66 |b... */.|X.....if|
|000034e0| 20 28 74 72 61 63 6b 20 | 3d 3d 20 63 75 72 5f 6e | (track |== cur_n|
|000034f0| 74 72 61 63 6b 73 29 0a | 58 09 09 09 09 09 09 62 |tracks).|X......b|
|00003500| 72 65 61 6b 3b 0a 58 0a | 58 09 09 09 09 09 2f 2a |reak;.X.|X...../*|
|00003510| 20 4d 61 74 63 68 65 73 | 20 63 61 6e 20 62 65 20 | Matches| can be |
|00003520| 61 70 70 72 6f 78 69 6d | 61 74 65 20 2a 2f 0a 58 |approxim|ate */.X|
|00003530| 09 09 09 09 09 69 66 20 | 28 73 63 72 61 74 63 68 |.....if |(scratch|
|00003540| 2b 37 35 20 3e 20 63 64 | 2d 3e 74 72 6b 5b 74 72 |+75 > cd|->trk[tr|
|00003550| 61 63 6b 5d 2e 73 74 61 | 72 74 20 26 26 0a 58 09 |ack].sta|rt &&.X.|
|00003560| 09 09 09 09 20 20 20 20 | 73 63 72 61 74 63 68 2d |.... |scratch-|
|00003570| 37 35 20 3c 20 63 64 2d | 3e 74 72 6b 5b 74 72 61 |75 < cd-|>trk[tra|
|00003580| 63 6b 5d 2e 73 74 61 72 | 74 29 0a 58 09 09 09 09 |ck].star|t).X....|
|00003590| 09 09 74 72 61 63 6b 6d | 61 70 5b 69 2b 2b 5d 20 |..trackm|ap[i++] |
|000035a0| 3d 20 74 72 61 63 6b 2b | 2b 3b 0a 58 09 09 09 09 |= track+|+;.X....|
|000035b0| 09 65 6c 73 65 0a 58 09 | 09 09 09 09 09 74 72 61 |.else.X.|.....tra|
|000035c0| 63 6b 6d 61 70 5b 69 2b | 2b 5d 20 3d 20 2d 31 3b |ckmap[i+|+] = -1;|
|000035d0| 0a 58 09 09 09 09 09 0a | 58 09 09 09 09 09 69 66 |.X......|X.....if|
|000035e0| 20 28 74 72 61 63 6b 20 | 3d 3d 20 63 75 72 5f 6e | (track |== cur_n|
|000035f0| 74 72 61 63 6b 73 29 0a | 58 09 09 09 09 09 09 62 |tracks).|X......b|
|00003600| 72 65 61 6b 3b 0a 58 09 | 09 09 09 7d 0a 58 0a 58 |reak;.X.|...}.X.X|
|00003610| 09 09 09 09 2f 2a 20 54 | 68 69 73 20 6f 6e 6c 79 |..../* T|his only|
|00003620| 20 68 61 70 70 65 6e 73 | 20 69 66 20 74 72 61 63 | happens| if trac|
|00003630| 6b 20 3d 3d 20 63 75 72 | 5f 6e 74 72 61 63 6b 73 |k == cur|_ntracks|
|00003640| 20 2a 2f 0a 58 09 09 09 | 09 77 68 69 6c 65 20 28 | */.X...|.while (|
|00003650| 6e 74 72 61 63 6b 73 2d | 2d 29 0a 58 09 09 09 09 |ntracks-|-).X....|
|00003660| 09 74 72 61 63 6b 6d 61 | 70 5b 69 2b 2b 5d 20 3d |.trackma|p[i++] =|
|00003670| 20 2d 31 3b 0a 58 0a 58 | 09 09 09 09 77 68 69 6c | -1;.X.X|....whil|
|00003680| 65 20 28 74 72 61 63 6b | 20 3c 20 63 75 72 5f 6e |e (track| < cur_n|
|00003690| 74 72 61 63 6b 73 29 0a | 58 09 09 09 09 7b 0a 58 |tracks).|X....{.X|
|000036a0| 09 09 09 09 09 69 66 20 | 28 63 64 2d 3e 74 72 6b |.....if |(cd->trk|
|000036b0| 5b 74 72 61 63 6b 5d 2e | 73 65 63 74 69 6f 6e 20 |[track].|section |
|000036c0| 3c 20 32 29 0a 58 09 09 | 09 09 09 09 74 72 61 63 |< 2).X..|....trac|
|000036d0| 6b 6d 61 70 5b 69 2b 2b | 5d 20 3d 20 74 72 61 63 |kmap[i++|] = trac|
|000036e0| 6b 3b 0a 58 09 09 09 09 | 09 74 72 61 63 6b 2b 2b |k;.X....|.track++|
|000036f0| 3b 0a 58 09 09 09 09 7d | 0a 58 0a 58 09 09 09 09 |;.X....}|.X.X....|
|00003700| 74 72 61 63 6b 20 3d 20 | 30 3b 0a 58 09 09 09 09 |track = |0;.X....|
|00003710| 53 57 41 4c 4c 4f 57 5f | 4c 49 4e 45 28 66 70 29 |SWALLOW_|LINE(fp)|
|00003720| 3b 0a 58 09 09 09 7d 0a | 58 09 09 09 65 6c 73 65 |;.X...}.|X...else|
|00003730| 0a 58 09 09 09 7b 0a 58 | 09 09 09 09 77 68 69 6c |.X...{.X|....whil|
|00003740| 65 20 28 6e 74 72 61 63 | 6b 73 2d 2d 29 0a 58 09 |e (ntrac|ks--).X.|
|00003750| 09 09 09 7b 0a 58 09 09 | 09 09 09 66 73 63 61 6e |...{.X..|...fscan|
|00003760| 66 28 66 70 2c 20 22 25 | 64 22 2c 20 26 73 63 72 |f(fp, "%|d", &scr|
|00003770| 61 74 63 68 29 3b 0a 58 | 09 09 09 09 09 73 70 6c |atch);.X|.....spl|
|00003780| 69 74 5f 74 72 61 63 6b | 69 6e 66 6f 28 73 63 72 |it_track|info(scr|
|00003790| 61 74 63 68 29 3b 0a 58 | 09 09 09 09 7d 0a 58 0a |atch);.X|....}.X.|
|000037a0| 58 09 09 09 09 66 6f 72 | 20 28 69 20 3d 20 30 3b |X....for| (i = 0;|
|000037b0| 20 69 20 3c 20 63 75 72 | 5f 6e 74 72 61 63 6b 73 | i < cur|_ntracks|
|000037c0| 3b 20 69 2b 2b 29 0a 58 | 09 09 09 09 7b 0a 58 09 |; i++).X|....{.X.|
|000037d0| 09 09 09 09 74 72 61 63 | 6b 6d 61 70 5b 69 5d 20 |....trac|kmap[i] |
|000037e0| 3d 20 69 3b 0a 58 09 09 | 09 09 09 2f 2a 20 73 70 |= i;.X..|.../* sp|
|000037f0| 6c 69 74 5f 74 72 61 63 | 6b 69 6e 66 6f 28 29 20 |lit_trac|kinfo() |
|00003800| 73 65 74 73 20 74 68 69 | 73 20 2a 2f 0a 58 09 09 |sets thi|s */.X..|
|00003810| 09 09 09 63 64 2d 3e 74 | 72 6b 5b 69 5d 2e 63 6f |...cd->t|rk[i].co|
|00003820| 6e 74 64 20 3d 20 30 3b | 0a 58 09 09 09 09 7d 0a |ntd = 0;|.X....}.|
|00003830| 58 0a 58 09 09 09 09 53 | 57 41 4c 4c 4f 57 5f 4c |X.X....S|WALLOW_L|
|00003840| 49 4e 45 28 66 70 29 3b | 0a 58 09 09 09 7d 0a 58 |INE(fp);|.X...}.X|
|00003850| 09 09 7d 0a 58 0a 58 09 | 09 65 6c 73 65 20 69 66 |..}.X.X.|.else if|
|00003860| 20 28 21 20 73 74 72 63 | 6d 70 28 6b 65 79 77 6f | (! strc|mp(keywo|
|00003870| 72 64 2c 20 22 74 72 61 | 63 6b 22 29 29 0a 58 09 |rd, "tra|ck")).X.|
|00003880| 09 7b 0a 58 09 09 09 63 | 68 61 72 20 62 75 66 5b |.{.X...c|har buf[|
|00003890| 35 30 32 5d 3b 0a 58 0a | 58 09 09 09 67 65 74 63 |502];.X.|X...getc|
|000038a0| 28 66 70 29 3b 09 2f 2a | 20 6c 6f 73 65 20 74 68 |(fp);./*| lose th|
|000038b0| 65 20 73 70 61 63 65 20 | 2a 2f 0a 58 09 09 09 2f |e space |*/.X.../|
|000038c0| 2a 20 64 6f 6e 27 74 20 | 6f 76 65 72 77 72 69 74 |* don't |overwrit|
|000038d0| 65 20 65 78 69 73 74 69 | 6e 67 20 74 72 61 63 6b |e existi|ng track|
|000038e0| 20 6e 61 6d 65 73 2e 20 | 2a 2f 0a 58 09 09 09 69 | names. |*/.X...i|
|000038f0| 66 20 28 74 72 61 63 6b | 6d 61 70 5b 74 72 61 63 |f (track|map[trac|
|00003900| 6b 5d 20 3d 3d 20 2d 31 | 29 0a 58 09 09 09 09 53 |k] == -1|).X....S|
|00003910| 57 41 4c 4c 4f 57 5f 4c | 49 4e 45 28 66 70 29 0a |WALLOW_L|INE(fp).|
|00003920| 58 09 09 09 65 6c 73 65 | 20 69 66 20 28 63 64 2d |X...else| if (cd-|
|00003930| 3e 74 72 6b 5b 74 72 61 | 63 6b 6d 61 70 5b 74 72 |>trk[tra|ckmap[tr|
|00003940| 61 63 6b 5d 5d 2e 73 6f | 6e 67 6e 61 6d 65 20 26 |ack]].so|ngname &|
|00003950| 26 0a 58 09 09 09 09 09 | 63 64 2d 3e 74 72 6b 5b |&.X.....|cd->trk[|
|00003960| 74 72 61 63 6b 6d 61 70 | 5b 74 72 61 63 6b 5d 5d |trackmap|[track]]|
|00003970| 2e 73 6f 6e 67 6e 61 6d | 65 5b 30 5d 29 0a 58 09 |.songnam|e[0]).X.|
|00003980| 09 09 09 64 6f 0a 58 09 | 09 09 09 09 69 20 3d 20 |...do.X.|....i = |
|00003990| 67 65 74 63 28 66 70 29 | 3b 0a 58 09 09 09 09 77 |getc(fp)|;.X....w|
|000039a0| 68 69 6c 65 20 28 69 20 | 21 3d 20 27 5c 6e 27 20 |hile (i |!= '\n' |
|000039b0| 26 26 20 69 20 21 3d 20 | 45 4f 46 29 3b 0a 58 09 |&& i != |EOF);.X.|
|000039c0| 09 09 65 6c 73 65 0a 58 | 09 09 09 7b 0a 58 09 09 |..else.X|...{.X..|
|000039d0| 09 09 66 67 65 74 73 28 | 62 75 66 2c 20 73 69 7a |..fgets(|buf, siz|
|000039e0| 65 6f 66 28 62 75 66 29 | 2c 20 66 70 29 3b 0a 58 |eof(buf)|, fp);.X|
|000039f0| 09 09 09 09 69 66 20 28 | 69 20 3d 20 73 74 72 6c |....if (|i = strl|
|00003a00| 65 6e 28 62 75 66 29 29 | 0a 58 09 09 09 09 09 62 |en(buf))|.X.....b|
|00003a10| 75 66 5b 69 20 2d 20 31 | 5d 20 3d 20 27 5c 30 27 |uf[i - 1|] = '\0'|
|00003a20| 3b 0a 58 09 09 09 09 73 | 74 72 6d 63 70 79 28 26 |;.X....s|trmcpy(&|
|00003a30| 63 64 2d 3e 74 72 6b 5b | 74 72 61 63 6b 6d 61 70 |cd->trk[|trackmap|
|00003a40| 5b 74 72 61 63 6b 5d 5d | 2e 73 6f 6e 67 6e 61 6d |[track]]|.songnam|
|00003a50| 65 2c 0a 58 09 09 09 09 | 09 09 09 09 09 62 75 66 |e,.X....|.....buf|
|00003a60| 29 3b 0a 58 09 09 09 7d | 0a 58 09 09 09 74 72 61 |);.X...}|.X...tra|
|00003a70| 63 6b 2b 2b 3b 0a 58 09 | 09 7d 0a 58 0a 58 09 09 |ck++;.X.|.}.X.X..|
|00003a80| 65 6c 73 65 20 69 66 20 | 28 21 20 73 74 72 63 6d |else if |(! strcm|
|00003a90| 70 28 6b 65 79 77 6f 72 | 64 2c 20 22 70 6c 61 79 |p(keywor|d, "play|
|00003aa0| 6d 6f 64 65 22 29 29 0a | 58 09 09 09 66 73 63 61 |mode")).|X...fsca|
|00003ab0| 6e 66 28 66 70 2c 20 22 | 25 64 22 2c 20 26 63 64 |nf(fp, "|%d", &cd|
|00003ac0| 2d 3e 70 6c 61 79 6d 6f | 64 65 29 3b 0a 58 0a 58 |->playmo|de);.X.X|
|00003ad0| 09 09 65 6c 73 65 20 69 | 66 20 28 21 20 73 74 72 |..else i|f (! str|
|00003ae0| 63 6d 70 28 6b 65 79 77 | 6f 72 64 2c 20 22 61 75 |cmp(keyw|ord, "au|
|00003af0| 74 6f 70 6c 61 79 22 29 | 29 0a 58 09 09 09 63 64 |toplay")|).X...cd|
|00003b00| 2d 3e 61 75 74 6f 70 6c | 61 79 20 3d 20 31 3b 0a |->autopl|ay = 1;.|
|00003b10| 58 0a 58 09 09 65 6c 73 | 65 20 69 66 20 28 21 20 |X.X..els|e if (! |
|00003b20| 73 74 72 63 6d 70 28 6b | 65 79 77 6f 72 64 2c 20 |strcmp(k|eyword, |
|00003b30| 22 63 64 6e 61 6d 65 22 | 29 29 0a 58 09 09 7b 0a |"cdname"|)).X..{.|
|00003b40| 58 09 09 09 67 65 74 63 | 28 66 70 29 3b 09 2f 2a |X...getc|(fp);./*|
|00003b50| 20 6c 6f 73 65 20 74 68 | 65 20 73 70 61 63 65 20 | lose th|e space |
|00003b60| 2a 2f 0a 58 09 09 09 2f | 2a 20 64 6f 6e 27 74 20 |*/.X.../|* don't |
|00003b70| 6f 76 65 72 77 72 69 74 | 65 20 65 78 69 73 74 69 |overwrit|e existi|
|00003b80| 6e 67 20 63 64 20 6e 61 | 6d 65 2e 20 2a 2f 0a 58 |ng cd na|me. */.X|
|00003b90| 09 09 09 69 66 20 28 63 | 64 2d 3e 63 64 6e 61 6d |...if (c|d->cdnam|
|00003ba0| 65 5b 30 5d 29 0a 58 09 | 09 09 09 64 6f 0a 58 09 |e[0]).X.|...do.X.|
|00003bb0| 09 09 09 09 69 20 3d 20 | 67 65 74 63 28 66 70 29 |....i = |getc(fp)|
|00003bc0| 3b 0a 58 09 09 09 09 77 | 68 69 6c 65 20 28 69 20 |;.X....w|hile (i |
|00003bd0| 21 3d 20 27 5c 6e 27 20 | 26 26 20 69 20 21 3d 20 |!= '\n' |&& i != |
|00003be0| 45 4f 46 29 3b 0a 58 09 | 09 09 65 6c 73 65 0a 58 |EOF);.X.|..else.X|
|00003bf0| 09 09 09 7b 0a 58 09 09 | 09 09 66 67 65 74 73 28 |...{.X..|..fgets(|
|00003c00| 63 64 2d 3e 63 64 6e 61 | 6d 65 2c 20 73 69 7a 65 |cd->cdna|me, size|
|00003c10| 6f 66 28 63 64 2d 3e 63 | 64 6e 61 6d 65 29 2c 20 |of(cd->c|dname), |
|00003c20| 66 70 29 3b 0a 58 09 09 | 09 09 69 66 20 28 69 20 |fp);.X..|..if (i |
|00003c30| 3d 20 73 74 72 6c 65 6e | 28 63 64 2d 3e 63 64 6e |= strlen|(cd->cdn|
|00003c40| 61 6d 65 29 29 0a 58 09 | 09 09 09 09 63 64 2d 3e |ame)).X.|....cd->|
|00003c50| 63 64 6e 61 6d 65 5b 69 | 20 2d 20 31 5d 20 3d 20 |cdname[i| - 1] = |
|00003c60| 27 5c 30 27 3b 0a 58 09 | 09 09 7d 0a 58 09 09 7d |'\0';.X.|..}.X..}|
|00003c70| 0a 58 0a 58 09 09 65 6c | 73 65 20 69 66 20 28 21 |.X.X..el|se if (!|
|00003c80| 20 73 74 72 63 6d 70 28 | 6b 65 79 77 6f 72 64 2c | strcmp(|keyword,|
|00003c90| 20 22 61 72 74 69 73 74 | 22 29 29 0a 58 09 09 7b | "artist|")).X..{|
|00003ca0| 0a 58 09 09 09 67 65 74 | 63 28 66 70 29 3b 09 2f |.X...get|c(fp);./|
|00003cb0| 2a 20 6c 6f 73 65 20 74 | 68 65 20 73 70 61 63 65 |* lose t|he space|
|00003cc0| 20 2a 2f 0a 58 09 09 09 | 2f 2a 20 64 6f 6e 27 74 | */.X...|/* don't|
|00003cd0| 20 6f 76 65 72 77 72 69 | 74 65 20 65 78 69 73 74 | overwri|te exist|
|00003ce0| 69 6e 67 20 61 72 74 69 | 73 74 20 6e 61 6d 65 73 |ing arti|st names|
|00003cf0| 2e 20 2a 2f 0a 58 09 09 | 09 69 66 20 28 63 64 2d |. */.X..|.if (cd-|
|00003d00| 3e 61 72 74 69 73 74 5b | 30 5d 29 0a 58 09 09 09 |>artist[|0]).X...|
|00003d10| 09 64 6f 0a 58 09 09 09 | 09 09 69 20 3d 20 67 65 |.do.X...|..i = ge|
|00003d20| 74 63 28 66 70 29 3b 0a | 58 09 09 09 09 77 68 69 |tc(fp);.|X....whi|
|00003d30| 6c 65 20 28 69 20 21 3d | 20 27 5c 6e 27 20 26 26 |le (i !=| '\n' &&|
|00003d40| 20 69 20 21 3d 20 45 4f | 46 29 3b 0a 58 09 09 09 | i != EO|F);.X...|
|00003d50| 65 6c 73 65 0a 58 09 09 | 09 7b 0a 58 09 09 09 09 |else.X..|.{.X....|
|00003d60| 66 67 65 74 73 28 63 64 | 2d 3e 61 72 74 69 73 74 |fgets(cd|->artist|
|00003d70| 2c 20 73 69 7a 65 6f 66 | 28 63 64 2d 3e 61 72 74 |, sizeof|(cd->art|
|00003d80| 69 73 74 29 2c 20 66 70 | 29 3b 0a 58 09 09 09 09 |ist), fp|);.X....|
|00003d90| 69 66 20 28 69 20 3d 20 | 73 74 72 6c 65 6e 28 63 |if (i = |strlen(c|
|00003da0| 64 2d 3e 61 72 74 69 73 | 74 29 29 0a 58 09 09 09 |d->artis|t)).X...|
|00003db0| 09 09 63 64 2d 3e 61 72 | 74 69 73 74 5b 69 20 2d |..cd->ar|tist[i -|
|00003dc0| 20 31 5d 20 3d 20 27 5c | 30 27 3b 0a 58 09 09 09 | 1] = '\|0';.X...|
|00003dd0| 7d 0a 58 09 09 7d 0a 58 | 0a 58 09 09 65 6c 73 65 |}.X..}.X|.X..else|
|00003de0| 20 69 66 20 28 21 20 73 | 74 72 63 6d 70 28 6b 65 | if (! s|trcmp(ke|
|00003df0| 79 77 6f 72 64 2c 20 22 | 63 64 76 6f 6c 75 6d 65 |yword, "|cdvolume|
|00003e00| 22 29 29 0a 58 09 09 09 | 66 73 63 61 6e 66 28 66 |")).X...|fscanf(f|
|00003e10| 70 2c 20 22 25 64 22 2c | 20 26 63 64 2d 3e 76 6f |p, "%d",| &cd->vo|
|00003e20| 6c 75 6d 65 29 3b 0a 58 | 0a 58 09 09 65 6c 73 65 |lume);.X|.X..else|
|00003e30| 20 69 66 20 28 21 20 73 | 74 72 63 6d 70 28 6b 65 | if (! s|trcmp(ke|
|00003e40| 79 77 6f 72 64 2c 20 22 | 64 6f 6e 74 70 6c 61 79 |yword, "|dontplay|
|00003e50| 22 29 29 0a 58 09 09 7b | 0a 58 09 09 09 66 73 63 |")).X..{|.X...fsc|
|00003e60| 61 6e 66 28 66 70 2c 20 | 22 25 64 22 2c 20 26 69 |anf(fp, |"%d", &i|
|00003e70| 29 3b 0a 58 09 09 09 69 | 66 20 28 74 72 61 63 6b |);.X...i|f (track|
|00003e80| 6d 61 70 5b 69 20 2d 20 | 31 5d 20 21 3d 20 2d 31 |map[i - |1] != -1|
|00003e90| 29 0a 58 09 09 09 09 63 | 64 2d 3e 74 72 6b 5b 74 |).X....c|d->trk[t|
|00003ea0| 72 61 63 6b 6d 61 70 5b | 69 20 2d 20 31 5d 5d 2e |rackmap[|i - 1]].|
|00003eb0| 61 76 6f 69 64 20 3d 20 | 31 3b 0a 58 09 09 7d 0a |avoid = |1;.X..}.|
|00003ec0| 58 0a 58 09 09 65 6c 73 | 65 20 69 66 20 28 21 20 |X.X..els|e if (! |
|00003ed0| 73 74 72 63 6d 70 28 6b | 65 79 77 6f 72 64 2c 20 |strcmp(k|eyword, |
|00003ee0| 22 63 6f 6e 74 69 6e 75 | 65 22 29 29 0a 58 09 09 |"continu|e")).X..|
|00003ef0| 7b 0a 58 09 09 09 69 66 | 20 28 74 72 61 63 6b 6d |{.X...if| (trackm|
|00003f00| 61 70 5b 74 72 61 63 6b | 20 2d 20 31 5d 20 21 3d |ap[track| - 1] !=|
|00003f10| 20 2d 31 29 0a 58 09 09 | 09 09 63 64 2d 3e 74 72 | -1).X..|..cd->tr|
|00003f20| 6b 5b 74 72 61 63 6b 6d | 61 70 5b 74 72 61 63 6b |k[trackm|ap[track|
|00003f30| 20 2d 20 31 5d 5d 2e 63 | 6f 6e 74 64 20 3d 20 31 | - 1]].c|ontd = 1|
|00003f40| 3b 0a 58 09 09 7d 0a 58 | 0a 58 09 09 65 6c 73 65 |;.X..}.X|.X..else|
|00003f50| 20 69 66 20 28 21 20 73 | 74 72 63 6d 70 28 6b 65 | if (! s|trcmp(ke|
|00003f60| 79 77 6f 72 64 2c 20 22 | 76 6f 6c 75 6d 65 22 29 |yword, "|volume")|
|00003f70| 29 0a 58 09 09 7b 0a 58 | 09 09 09 66 73 63 61 6e |).X..{.X|...fscan|
|00003f80| 66 28 66 70 2c 20 22 25 | 64 22 2c 20 26 69 29 3b |f(fp, "%|d", &i);|
|00003f90| 0a 58 09 09 09 69 66 20 | 28 74 72 61 63 6b 6d 61 |.X...if |(trackma|
|00003fa0| 70 5b 69 20 2d 20 31 5d | 20 3d 3d 20 2d 31 29 0a |p[i - 1]| == -1).|
|00003fb0| 58 09 09 09 09 53 57 41 | 4c 4c 4f 57 5f 4c 49 4e |X....SWA|LLOW_LIN|
|00003fc0| 45 28 66 70 29 0a 58 09 | 09 09 65 6c 73 65 0a 58 |E(fp).X.|..else.X|
|00003fd0| 09 09 09 7b 0a 58 09 09 | 09 09 69 20 3d 20 74 72 |...{.X..|..i = tr|
|00003fe0| 61 63 6b 6d 61 70 5b 69 | 20 2d 20 31 5d 3b 0a 58 |ackmap[i| - 1];.X|
|00003ff0| 09 09 09 09 66 73 63 61 | 6e 66 28 66 70 2c 20 22 |....fsca|nf(fp, "|
|00004000| 25 64 22 2c 20 26 63 64 | 2d 3e 74 72 6b 5b 69 5d |%d", &cd|->trk[i]|
|00004010| 2e 76 6f 6c 75 6d 65 29 | 3b 0a 58 09 09 09 09 69 |.volume)|;.X....i|
|00004020| 66 20 28 63 64 2d 3e 74 | 72 6b 5b 69 5d 2e 76 6f |f (cd->t|rk[i].vo|
|00004030| 6c 75 6d 65 20 3e 20 33 | 32 29 0a 58 09 09 09 09 |lume > 3|2).X....|
|00004040| 09 63 64 2d 3e 74 72 6b | 5b 69 5d 2e 76 6f 6c 75 |.cd->trk|[i].volu|
|00004050| 6d 65 20 3d 20 30 3b 0a | 58 09 09 09 7d 0a 58 09 |me = 0;.|X...}.X.|
|00004060| 09 7d 0a 58 0a 58 09 09 | 65 6c 73 65 20 69 66 20 |.}.X.X..|else if |
|00004070| 28 21 20 73 74 72 63 6d | 70 28 6b 65 79 77 6f 72 |(! strcm|p(keywor|
|00004080| 64 2c 20 22 70 6c 61 79 | 6c 69 73 74 22 29 29 0a |d, "play|list")).|
|00004090| 58 09 09 7b 0a 58 09 09 | 09 67 65 74 63 28 66 70 |X..{.X..|.getc(fp|
|000040a0| 29 3b 0a 58 09 09 09 66 | 73 63 61 6e 66 28 66 70 |);.X...f|scanf(fp|
|000040b0| 2c 20 22 25 73 22 2c 20 | 6c 69 73 74 6e 61 6d 65 |, "%s", |listname|
|000040c0| 29 3b 0a 58 0a 58 2f 2a | 20 58 58 58 20 74 61 6b |);.X.X/*| XXX tak|
|000040d0| 65 20 74 68 69 73 20 6f | 75 74 20 61 74 20 73 6f |e this o|ut at so|
|000040e0| 6d 65 20 70 6f 69 6e 74 | 20 2a 2f 0a 58 09 09 09 |me point| */.X...|
|000040f0| 69 66 20 28 21 20 73 74 | 72 63 6d 70 28 6c 69 73 |if (! st|rcmp(lis|
|00004100| 74 6e 61 6d 65 2c 20 22 | 44 65 66 61 75 6c 74 22 |tname, "|Default"|
|00004110| 29 29 0a 58 09 09 09 09 | 73 74 72 63 70 79 28 6c |)).X....|strcpy(l|
|00004120| 69 73 74 6e 61 6d 65 2c | 20 22 4c 69 73 74 20 41 |istname,| "List A|
|00004130| 22 29 3b 0a 58 0a 58 09 | 09 09 66 6f 72 20 28 69 |");.X.X.|..for (i|
|00004140| 20 3d 20 30 3b 20 6c 69 | 73 74 6e 61 6d 65 5b 69 | = 0; li|stname[i|
|00004150| 5d 3b 20 69 2b 2b 29 0a | 58 09 09 09 09 69 66 20 |]; i++).|X....if |
|00004160| 28 6c 69 73 74 6e 61 6d | 65 5b 69 5d 20 3d 3d 20 |(listnam|e[i] == |
|00004170| 27 5f 27 29 0a 58 09 09 | 09 09 09 6c 69 73 74 6e |'_').X..|...listn|
|00004180| 61 6d 65 5b 69 5d 20 3d | 20 27 20 27 3b 0a 58 0a |ame[i] =| ' ';.X.|
|00004190| 58 09 09 09 6c 20 3d 20 | 6e 65 77 5f 6c 69 73 74 |X...l = |new_list|
|000041a0| 28 63 64 2c 20 6c 69 73 | 74 6e 61 6d 65 29 3b 0a |(cd, lis|tname);.|
|000041b0| 58 09 09 09 69 66 20 28 | 6c 20 3d 3d 20 4e 55 4c |X...if (|l == NUL|
|000041c0| 4c 29 0a 58 09 09 09 7b | 0a 58 70 6c 6e 6f 6d 65 |L).X...{|.Xplnome|
|000041d0| 6d 3a 0a 58 09 09 09 09 | 70 65 72 72 6f 72 28 22 |m:.X....|perror("|
|000041e0| 70 6c 61 79 6c 69 73 74 | 20 72 65 61 64 22 29 3b |playlist| read");|
|000041f0| 0a 58 09 09 09 09 65 78 | 69 74 28 31 29 3b 0a 58 |.X....ex|it(1);.X|
|00004200| 09 09 09 7d 0a 58 0a 58 | 09 09 09 66 73 63 61 6e |...}.X.X|...fscan|
|00004210| 66 28 66 70 2c 20 22 25 | 64 22 2c 20 26 6c 69 73 |f(fp, "%|d", &lis|
|00004220| 74 73 69 7a 65 29 3b 0a | 58 0a 58 09 09 09 6c 2d |tsize);.|X.X...l-|
|00004230| 3e 6c 69 73 74 20 3d 20 | 6d 61 6c 6c 6f 63 28 73 |>list = |malloc(s|
|00004240| 69 7a 65 6f 66 28 69 6e | 74 29 20 2a 20 28 6c 69 |izeof(in|t) * (li|
|00004250| 73 74 73 69 7a 65 20 2b | 20 31 29 29 3b 0a 58 09 |stsize +| 1));.X.|
|00004260| 09 09 69 66 20 28 6c 2d | 3e 6c 69 73 74 20 3d 3d |..if (l-|>list ==|
|00004270| 20 4e 55 4c 4c 29 0a 58 | 09 09 09 09 67 6f 74 6f | NULL).X|....goto|
|00004280| 20 70 6c 6e 6f 6d 65 6d | 3b 0a 58 0a 58 09 09 09 | plnomem|;.X.X...|
|00004290| 2f 2a 20 4c 65 61 76 65 | 20 6f 75 74 20 74 72 61 |/* Leave| out tra|
|000042a0| 63 6b 73 20 74 68 61 74 | 20 77 65 72 65 6e 27 74 |cks that| weren't|
|000042b0| 20 69 6e 20 2e 77 6f 72 | 6b 6d 61 6e 64 62 2e 20 | in .wor|kmandb. |
|000042c0| 2a 2f 0a 58 09 09 09 6a | 20 3d 20 30 3b 0a 58 09 |*/.X...j| = 0;.X.|
|000042d0| 09 09 66 6f 72 20 28 69 | 20 3d 20 30 3b 20 69 20 |..for (i| = 0; i |
|000042e0| 3c 20 6c 69 73 74 73 69 | 7a 65 3b 20 69 2b 2b 29 |< listsi|ze; i++)|
|000042f0| 0a 58 09 09 09 7b 0a 58 | 09 09 09 09 66 73 63 61 |.X...{.X|....fsca|
|00004300| 6e 66 28 66 70 2c 20 22 | 25 64 22 2c 20 26 73 63 |nf(fp, "|%d", &sc|
|00004310| 72 61 74 63 68 29 3b 0a | 58 09 09 09 09 73 63 72 |ratch);.|X....scr|
|00004320| 61 74 63 68 20 3d 20 74 | 72 61 63 6b 6d 61 70 5b |atch = t|rackmap[|
|00004330| 73 63 72 61 74 63 68 20 | 2d 20 31 5d 3b 0a 58 09 |scratch |- 1];.X.|
|00004340| 09 09 09 69 66 20 28 73 | 63 72 61 74 63 68 20 21 |...if (s|cratch !|
|00004350| 3d 20 2d 31 29 0a 58 09 | 09 09 09 09 6c 2d 3e 6c |= -1).X.|....l->l|
|00004360| 69 73 74 5b 6a 2b 2b 5d | 20 3d 20 73 63 72 61 74 |ist[j++]| = scrat|
|00004370| 63 68 20 2b 20 31 3b 0a | 58 09 09 09 7d 0a 58 0a |ch + 1;.|X...}.X.|
|00004380| 58 09 09 09 6c 2d 3e 6c | 69 73 74 5b 6a 5d 20 3d |X...l->l|ist[j] =|
|00004390| 20 30 3b 0a 58 09 09 7d | 0a 58 0a 58 09 09 65 6c | 0;.X..}|.X.X..el|
|000043a0| 73 65 20 69 66 20 28 21 | 20 73 74 72 63 6d 70 28 |se if (!| strcmp(|
|000043b0| 6b 65 79 77 6f 72 64 2c | 20 22 6d 61 72 6b 22 29 |keyword,| "mark")|
|000043c0| 29 0a 58 09 09 7b 0a 58 | 09 09 09 69 6e 74 20 6d |).X..{.X|...int m|
|000043d0| 61 72 6b 5f 76 61 6c 20 | 3d 20 2d 31 2c 20 6d 61 |ark_val |= -1, ma|
|000043e0| 72 6b 5f 6e 61 6d 65 6c | 65 6e 3b 0a 58 09 09 09 |rk_namel|en;.X...|
|000043f0| 63 68 61 72 20 6d 61 72 | 6b 5f 6e 61 6d 65 5b 33 |char mar|k_name[3|
|00004400| 32 5d 3b 0a 58 0a 58 09 | 09 09 66 73 63 61 6e 66 |2];.X.X.|..fscanf|
|00004410| 28 66 70 2c 20 22 25 64 | 22 2c 20 26 6d 61 72 6b |(fp, "%d|", &mark|
|00004420| 5f 76 61 6c 29 3b 0a 58 | 09 09 09 69 66 20 28 6d |_val);.X|...if (m|
|00004430| 61 72 6b 5f 76 61 6c 20 | 3d 3d 20 2d 31 29 0a 58 |ark_val |== -1).X|
|00004440| 09 09 09 09 67 6f 74 6f | 20 63 68 6f 6d 70 3b 0a |....goto| chomp;.|
|00004450| 58 0a 58 09 09 09 69 66 | 20 28 67 65 74 63 28 66 |X.X...if| (getc(f|
|00004460| 70 29 20 21 3d 20 27 20 | 27 29 0a 58 09 09 09 09 |p) != ' |').X....|
|00004470| 63 6f 6e 74 69 6e 75 65 | 3b 0a 58 0a 58 09 09 09 |continue|;.X.X...|
|00004480| 66 67 65 74 73 28 6d 61 | 72 6b 5f 6e 61 6d 65 2c |fgets(ma|rk_name,|
|00004490| 20 73 69 7a 65 6f 66 28 | 6d 61 72 6b 5f 6e 61 6d | sizeof(|mark_nam|
|000044a0| 65 29 2c 20 66 70 29 3b | 0a 58 09 09 09 69 66 20 |e), fp);|.X...if |
|000044b0| 28 6d 61 72 6b 5f 6e 61 | 6d 65 6c 65 6e 20 3d 20 |(mark_na|melen = |
|000044c0| 73 74 72 6c 65 6e 28 6d | 61 72 6b 5f 6e 61 6d 65 |strlen(m|ark_name|
|000044d0| 29 29 0a 58 09 09 09 09 | 6d 61 72 6b 5f 6e 61 6d |)).X....|mark_nam|
|000044e0| 65 5b 6d 61 72 6b 5f 6e | 61 6d 65 6c 65 6e 20 2d |e[mark_n|amelen -|
|000044f0| 20 31 5d 20 3d 20 27 5c | 30 27 3b 0a 58 0a 58 09 | 1] = '\|0';.X.X.|
|00004500| 09 09 69 66 20 28 21 20 | 73 74 72 63 6d 70 28 6d |..if (! |strcmp(m|
|00004510| 61 72 6b 5f 6e 61 6d 65 | 2c 20 22 53 54 41 52 54 |ark_name|, "START|
|00004520| 22 29 29 0a 58 09 09 09 | 09 73 65 74 5f 61 62 74 |")).X...|.set_abt|
|00004530| 69 6d 65 72 28 30 2c 20 | 6d 61 72 6b 5f 76 61 6c |imer(0, |mark_val|
|00004540| 29 3b 0a 58 09 09 09 65 | 6c 73 65 20 69 66 20 28 |);.X...e|lse if (|
|00004550| 21 20 73 74 72 63 6d 70 | 28 6d 61 72 6b 5f 6e 61 |! strcmp|(mark_na|
|00004560| 6d 65 2c 20 22 45 4e 44 | 22 29 29 0a 58 09 09 09 |me, "END|")).X...|
|00004570| 09 73 65 74 5f 61 62 74 | 69 6d 65 72 28 31 2c 20 |.set_abt|imer(1, |
|00004580| 6d 61 72 6b 5f 76 61 6c | 29 3b 0a 58 09 09 7d 0a |mark_val|);.X..}.|
|00004590| 58 0a 58 09 09 2f 2a 20 | 55 6e 72 65 63 6f 67 6e |X.X../* |Unrecogn|
|000045a0| 69 7a 65 64 20 6b 65 79 | 77 6f 72 64 2e 20 20 50 |ized key|word. P|
|000045b0| 75 74 20 69 74 20 69 6e | 20 74 68 65 20 72 69 67 |ut it in| the rig|
|000045c0| 68 74 20 70 6c 61 63 65 | 2e 20 2a 2f 0a 58 09 09 |ht place|. */.X..|
|000045d0| 65 6c 73 65 0a 58 09 09 | 7b 0a 58 09 09 09 63 68 |else.X..|{.X...ch|
|000045e0| 61 72 09 2a 2a 62 75 66 | 2c 20 69 6e 70 75 74 5b |ar.**buf|, input[|
|000045f0| 42 55 46 53 49 5a 5d 3b | 0a 58 0a 58 09 09 09 69 |BUFSIZ];|.X.X...i|
|00004600| 66 20 28 74 72 61 63 6b | 20 26 26 20 74 72 61 63 |f (track| && trac|
|00004610| 6b 6d 61 70 5b 74 72 61 | 63 6b 20 2d 20 31 5d 20 |kmap[tra|ck - 1] |
|00004620| 3d 3d 20 2d 31 29 0a 58 | 09 09 09 7b 0a 58 09 09 |== -1).X|...{.X..|
|00004630| 09 09 53 57 41 4c 4c 4f | 57 5f 4c 49 4e 45 28 66 |..SWALLO|W_LINE(f|
|00004640| 70 29 3b 0a 58 09 09 09 | 09 63 6f 6e 74 69 6e 75 |p);.X...|.continu|
|00004650| 65 3b 0a 58 09 09 09 7d | 0a 58 0a 58 09 09 09 69 |e;.X...}|.X.X...i|
|00004660| 20 3d 20 74 72 61 63 6b | 20 3f 20 74 72 61 63 6b | = track| ? track|
|00004670| 6d 61 70 5b 74 72 61 63 | 6b 20 2d 20 31 5d 20 3a |map[trac|k - 1] :|
|00004680| 20 30 3b 0a 58 09 09 09 | 62 75 66 20 3d 20 70 72 | 0;.X...|buf = pr|
|00004690| 65 66 73 20 3f 20 69 20 | 3f 20 26 63 64 2d 3e 74 |efs ? i |? &cd->t|
|000046a0| 72 6b 5b 69 5d 2e 6f 74 | 68 65 72 72 63 20 3a 20 |rk[i].ot|herrc : |
|000046b0| 26 63 64 2d 3e 6f 74 68 | 65 72 72 63 20 3a 0a 58 |&cd->oth|errc :.X|
|000046c0| 09 09 09 09 69 20 3f 20 | 26 63 64 2d 3e 74 72 6b |....i ? |&cd->trk|
|000046d0| 5b 69 5d 2e 6f 74 68 65 | 72 64 62 20 3a 20 26 63 |[i].othe|rdb : &c|
|000046e0| 64 2d 3e 6f 74 68 65 72 | 64 62 3b 0a 58 09 09 09 |d->other|db;.X...|
|000046f0| 69 66 20 28 66 69 72 73 | 74 70 6f 73 20 3d 3d 20 |if (firs|tpos == |
|00004700| 2d 31 29 0a 58 09 09 09 | 09 69 66 20 28 70 72 65 |-1).X...|.if (pre|
|00004710| 66 73 29 0a 58 09 09 09 | 09 09 62 75 66 20 3d 20 |fs).X...|..buf = |
|00004720| 26 6f 74 68 65 72 72 63 | 3b 0a 58 09 09 09 09 65 |&otherrc|;.X....e|
|00004730| 6c 73 65 0a 58 09 09 09 | 09 09 67 6f 74 6f 20 63 |lse.X...|..goto c|
|00004740| 68 6f 6d 70 3b 0a 58 0a | 58 09 09 09 73 74 72 6d |homp;.X.|X...strm|
|00004750| 63 61 74 28 62 75 66 2c | 20 6b 65 79 77 6f 72 64 |cat(buf,| keyword|
|00004760| 29 3b 0a 58 09 09 09 64 | 6f 20 7b 0a 58 09 09 09 |);.X...d|o {.X...|
|00004770| 09 69 6e 70 75 74 5b 73 | 69 7a 65 6f 66 28 69 6e |.input[s|izeof(in|
|00004780| 70 75 74 29 20 2d 20 31 | 5d 20 3d 20 27 78 27 3b |put) - 1|] = 'x';|
|00004790| 0a 58 09 09 09 09 66 67 | 65 74 73 28 69 6e 70 75 |.X....fg|ets(inpu|
|000047a0| 74 2c 20 73 69 7a 65 6f | 66 28 69 6e 70 75 74 29 |t, sizeo|f(input)|
|000047b0| 2c 20 66 70 29 3b 0a 58 | 09 09 09 09 73 74 72 6d |, fp);.X|....strm|
|000047c0| 63 61 74 28 62 75 66 2c | 20 69 6e 70 75 74 29 3b |cat(buf,| input);|
|000047d0| 0a 58 09 09 09 7d 20 77 | 68 69 6c 65 20 28 69 6e |.X...} w|hile (in|
|000047e0| 70 75 74 5b 73 69 7a 65 | 6f 66 28 69 6e 70 75 74 |put[size|of(input|
|000047f0| 29 20 2d 20 31 5d 20 21 | 3d 20 27 78 27 29 3b 0a |) - 1] !|= 'x');.|
|00004800| 58 09 09 7d 0a 58 09 7d | 0a 58 0a 58 09 69 66 20 |X..}.X.}|.X.X.if |
|00004810| 28 72 63 6c 65 6e 20 3d | 3d 20 30 20 26 26 20 21 |(rclen =|= 0 && !|
|00004820| 73 65 61 72 63 68 69 6e | 67 29 0a 58 09 09 72 63 |searchin|g).X..rc|
|00004830| 6c 65 6e 20 3d 20 70 6f | 73 20 2d 20 72 63 70 6f |len = po|s - rcpo|
|00004840| 73 3b 0a 58 0a 58 09 72 | 65 74 75 72 6e 20 28 21 |s;.X.X.r|eturn (!|
|00004850| 20 73 65 61 72 63 68 69 | 6e 67 29 3b 0a 58 7d 0a | searchi|ng);.X}.|
|00004860| 58 0a 58 2f 2a 0a 58 20 | 2a 20 44 65 6c 61 79 20 |X.X/*.X |* Delay |
|00004870| 73 6f 6d 65 20 61 6d 6f | 75 6e 74 20 6f 66 20 74 |some amo|unt of t|
|00004880| 69 6d 65 20 77 69 74 68 | 6f 75 74 20 75 73 69 6e |ime with|out usin|
|00004890| 67 20 69 6e 74 65 72 76 | 61 6c 20 74 69 6d 65 72 |g interv|al timer|
|000048a0| 73 2e 0a 58 20 2a 2f 0a | 58 76 6f 69 64 0a 58 73 |s..X */.|Xvoid.Xs|
|000048b0| 70 69 6e 77 68 65 65 6c | 73 28 73 65 63 73 29 0a |pinwheel|s(secs).|
|000048c0| 58 09 69 6e 74 09 73 65 | 63 73 3b 0a 58 7b 0a 58 |X.int.se|cs;.X{.X|
|000048d0| 09 73 74 72 75 63 74 20 | 74 69 6d 65 76 61 6c 09 |.struct |timeval.|
|000048e0| 74 76 3b 0a 58 0a 58 09 | 74 76 2e 74 76 5f 75 73 |tv;.X.X.|tv.tv_us|
|000048f0| 65 63 20 3d 20 30 3b 0a | 58 09 74 76 2e 74 76 5f |ec = 0;.|X.tv.tv_|
|00004900| 73 65 63 20 3d 20 73 65 | 63 73 3b 0a 58 09 73 65 |sec = se|cs;.X.se|
|00004910| 6c 65 63 74 28 30 2c 20 | 4e 55 4c 4c 2c 20 4e 55 |lect(0, |NULL, NU|
|00004920| 4c 4c 2c 20 4e 55 4c 4c | 2c 20 26 74 76 29 3b 0a |LL, NULL|, &tv);.|
|00004930| 58 7d 0a 58 0a 58 2f 2a | 0a 58 20 2a 20 4c 6f 63 |X}.X.X/*|.X * Loc|
|00004940| 6b 20 61 20 66 69 6c 65 | 2e 20 20 54 69 6d 65 20 |k a file|. Time |
|00004950| 6f 75 74 20 61 66 74 65 | 72 20 61 20 6c 69 74 74 |out afte|r a litt|
|00004960| 6c 65 20 77 68 69 6c 65 | 20 69 66 20 77 65 20 63 |le while| if we c|
|00004970| 61 6e 27 74 20 67 65 74 | 20 61 20 6c 6f 63 6b 3b |an't get| a lock;|
|00004980| 0a 58 20 2a 20 74 68 69 | 73 20 75 73 75 61 6c 6c |.X * thi|s usuall|
|00004990| 79 20 6d 65 61 6e 73 20 | 74 68 65 20 6c 6f 63 6b |y means |the lock|
|000049a0| 69 6e 67 20 73 79 73 74 | 65 6d 20 69 73 20 62 72 |ing syst|em is br|
|000049b0| 6f 6b 65 6e 2e 0a 58 20 | 2a 0a 58 20 2a 20 55 6e |oken..X |*.X * Un|
|000049c0| 66 6f 72 74 75 6e 61 74 | 65 6c 79 2c 20 69 66 20 |fortunat|ely, if |
|000049d0| 74 68 65 72 65 20 61 72 | 65 20 6c 6f 74 73 20 6f |there ar|e lots o|
|000049e0| 66 20 70 65 6f 70 6c 65 | 20 63 6f 6e 74 65 6e 64 |f people| contend|
|000049f0| 69 6e 67 20 66 6f 72 20 | 61 20 6c 6f 63 6b 2c 0a |ing for |a lock,.|
|00004a00| 58 20 2a 20 74 68 69 73 | 20 63 61 6e 20 72 65 73 |X * this| can res|
|00004a10| 75 6c 74 20 69 6e 20 74 | 68 65 20 66 69 6c 65 20 |ult in t|he file |
|00004a20| 6e 6f 74 20 67 65 74 74 | 69 6e 67 20 6c 6f 63 6b |not gett|ing lock|
|00004a30| 65 64 20 77 68 65 6e 20 | 69 74 20 70 72 6f 62 61 |ed when |it proba|
|00004a40| 62 6c 79 20 73 68 6f 75 | 6c 64 2e 0a 58 20 2a 2f |bly shou|ld..X */|
|00004a50| 0a 58 69 6e 74 0a 58 6c | 6f 63 6b 69 74 28 66 64 |.Xint.Xl|ockit(fd|
|00004a60| 2c 20 74 79 70 65 29 0a | 58 09 69 6e 74 09 66 64 |, type).|X.int.fd|
|00004a70| 3b 0a 58 09 69 6e 74 09 | 74 79 70 65 3b 0a 58 7b |;.X.int.|type;.X{|
|00004a80| 0a 58 09 73 74 72 75 63 | 74 20 66 6c 6f 63 6b 09 |.X.struc|t flock.|
|00004a90| 66 6c 3b 0a 58 09 69 6e | 74 09 09 72 65 73 75 6c |fl;.X.in|t..resul|
|00004aa0| 74 2c 20 74 69 6d 65 72 | 20 3d 20 30 3b 0a 58 0a |t, timer| = 0;.X.|
|00004ab0| 58 09 69 66 20 28 73 75 | 70 70 72 65 73 73 5f 6c |X.if (su|ppress_l|
|00004ac0| 6f 63 6b 69 6e 67 29 0a | 58 09 09 72 65 74 75 72 |ocking).|X..retur|
|00004ad0| 6e 20 28 30 29 3b 0a 58 | 0a 58 09 66 6c 2e 6c 5f |n (0);.X|.X.fl.l_|
|00004ae0| 74 79 70 65 20 3d 20 74 | 79 70 65 3b 0a 58 09 66 |type = t|ype;.X.f|
|00004af0| 6c 2e 6c 5f 77 68 65 6e | 63 65 20 3d 20 30 3b 0a |l.l_when|ce = 0;.|
|00004b00| 58 09 66 6c 2e 6c 5f 73 | 74 61 72 74 20 3d 20 30 |X.fl.l_s|tart = 0|
|00004b10| 3b 0a 58 09 66 6c 2e 6c | 5f 6c 65 6e 20 3d 20 30 |;.X.fl.l|_len = 0|
|00004b20| 3b 0a 58 0a 58 09 77 68 | 69 6c 65 20 28 28 72 65 |;.X.X.wh|ile ((re|
|00004b30| 73 75 6c 74 20 3d 20 66 | 63 6e 74 6c 28 66 64 2c |sult = f|cntl(fd,|
|00004b40| 20 46 5f 53 45 54 4c 4b | 2c 20 26 66 6c 29 29 20 | F_SETLK|, &fl)) |
|00004b50| 3c 20 30 29 0a 58 09 7b | 0a 58 09 09 69 66 20 28 |< 0).X.{|.X..if (|
|00004b60| 65 72 72 6e 6f 20 21 3d | 20 45 41 43 43 45 53 20 |errno !=| EACCES |
|00004b70| 7c 7c 20 65 72 72 6e 6f | 20 21 3d 20 45 41 47 41 ||| errno| != EAGA|
|00004b80| 49 4e 29 0a 58 09 09 09 | 62 72 65 61 6b 3b 0a 58 |IN).X...|break;.X|
|00004b90| 09 09 69 66 20 28 74 69 | 6d 65 72 2b 2b 20 3d 3d |..if (ti|mer++ ==|
|00004ba0| 20 33 30 29 0a 58 09 09 | 7b 0a 58 09 09 09 65 72 | 30).X..|{.X...er|
|00004bb0| 72 6e 6f 20 3d 20 45 54 | 49 4d 45 44 4f 55 54 3b |rno = ET|IMEDOUT;|
|00004bc0| 0a 58 09 09 09 62 72 65 | 61 6b 3b 0a 58 09 09 7d |.X...bre|ak;.X..}|
|00004bd0| 0a 58 0a 58 09 09 73 70 | 69 6e 77 68 65 65 6c 73 |.X.X..sp|inwheels|
|00004be0| 28 31 29 3b 0a 58 09 7d | 0a 58 0a 58 09 72 65 74 |(1);.X.}|.X.X.ret|
|00004bf0| 75 72 6e 20 28 72 65 73 | 75 6c 74 29 3b 0a 58 7d |urn (res|ult);.X}|
|00004c00| 0a 58 0a 58 2f 2a 0a 58 | 20 2a 20 53 65 61 72 63 |.X.X/*.X| * Searc|
|00004c10| 68 20 61 6c 6c 20 74 68 | 65 20 64 61 74 61 62 61 |h all th|e databa|
|00004c20| 73 65 20 66 69 6c 65 73 | 20 61 6e 64 20 6f 75 72 |se files| and our|
|00004c30| 20 70 65 72 73 6f 6e 61 | 6c 20 70 72 65 66 65 72 | persona|l prefer|
|00004c40| 65 6e 63 65 20 66 69 6c | 65 20 66 6f 72 0a 58 20 |ence fil|e for.X |
|00004c50| 2a 20 6d 6f 72 65 20 69 | 6e 66 6f 72 6d 61 74 69 |* more i|nformati|
|00004c60| 6f 6e 20 61 62 6f 75 74 | 20 74 68 65 20 63 75 72 |on about| the cur|
|00004c70| 72 65 6e 74 20 43 44 2e | 0a 58 20 2a 2f 0a 58 76 |rent CD.|.X */.Xv|
|00004c80| 6f 69 64 0a 58 6c 6f 61 | 64 28 29 0a 58 7b 0a 58 |oid.Xloa|d().X{.X|
|00004c90| 09 46 49 4c 45 09 09 2a | 66 70 3b 0a 58 09 63 68 |.FILE..*|fp;.X.ch|
|00004ca0| 61 72 09 09 2a 2a 64 62 | 66 69 6c 65 3b 0a 58 09 |ar..**db|file;.X.|
|00004cb0| 69 6e 74 09 09 6c 6f 63 | 6b 65 64 20 3d 20 30 3b |int..loc|ked = 0;|
|00004cc0| 0a 58 0a 58 09 69 66 20 | 28 64 61 74 61 62 61 73 |.X.X.if |(databas|
|00004cd0| 65 73 20 3d 3d 20 4e 55 | 4c 4c 29 0a 58 09 09 73 |es == NU|LL).X..s|
|00004ce0| 70 6c 69 74 5f 77 6f 72 | 6b 6d 61 6e 64 62 28 29 |plit_wor|kmandb()|
|00004cf0| 3b 0a 58 0a 58 09 64 62 | 66 69 6c 65 20 3d 20 64 |;.X.X.db|file = d|
|00004d00| 61 74 61 62 61 73 65 73 | 3b 0a 58 0a 58 09 66 6f |atabases|;.X.X.fo|
|00004d10| 75 6e 64 5f 69 6e 5f 64 | 62 20 3d 20 30 3b 0a 58 |und_in_d|b = 0;.X|
|00004d20| 0a 58 09 64 6f 20 7b 0a | 58 09 09 66 70 20 3d 20 |.X.do {.|X..fp = |
|00004d30| 6f 70 65 6e 5f 72 63 66 | 69 6c 65 28 2a 64 62 66 |open_rcf|ile(*dbf|
|00004d40| 69 6c 65 2c 20 22 72 22 | 29 3b 0a 58 09 09 69 66 |ile, "r"|);.X..if|
|00004d50| 20 28 66 70 20 21 3d 20 | 4e 55 4c 4c 29 0a 58 09 | (fp != |NULL).X.|
|00004d60| 09 7b 0a 58 09 09 09 69 | 66 20 28 6c 6f 63 6b 69 |.{.X...i|f (locki|
|00004d70| 74 28 66 69 6c 65 6e 6f | 28 66 70 29 2c 20 46 5f |t(fileno|(fp), F_|
|00004d80| 52 44 4c 43 4b 29 29 0a | 58 09 09 09 09 70 65 72 |RDLCK)).|X....per|
|00004d90| 72 6f 72 28 22 43 6f 75 | 6c 64 6e 27 74 20 67 65 |ror("Cou|ldn't ge|
|00004da0| 74 20 72 65 61 64 20 6c | 6f 63 6b 22 29 3b 0a 58 |t read l|ock");.X|
|00004db0| 09 09 09 65 6c 73 65 0a | 58 09 09 09 09 6c 6f 63 |...else.|X....loc|
|00004dc0| 6b 65 64 20 3d 20 31 3b | 0a 58 0a 58 09 09 09 69 |ked = 1;|.X.X...i|
|00004dd0| 66 20 28 73 65 61 72 63 | 68 5f 64 62 28 66 70 2c |f (searc|h_db(fp,|
|00004de0| 20 30 2c 20 30 2c 20 30 | 29 29 0a 58 09 09 09 7b | 0, 0, 0|)).X...{|
|00004df0| 0a 58 09 09 09 09 66 6f | 75 6e 64 5f 69 6e 5f 64 |.X....fo|und_in_d|
|00004e00| 62 20 3d 20 31 3b 0a 58 | 09 09 09 09 63 64 2d 3e |b = 1;.X|....cd->|
|00004e10| 77 68 69 63 68 64 62 20 | 3d 20 2a 64 62 66 69 6c |whichdb |= *dbfil|
|00004e20| 65 3b 0a 58 09 09 09 7d | 0a 58 0a 58 09 09 09 69 |e;.X...}|.X.X...i|
|00004e30| 66 20 28 6c 6f 63 6b 65 | 64 20 26 26 20 6c 6f 63 |f (locke|d && loc|
|00004e40| 6b 69 74 28 66 69 6c 65 | 6e 6f 28 66 70 29 2c 20 |kit(file|no(fp), |
|00004e50| 46 5f 55 4e 4c 43 4b 29 | 29 0a 58 09 09 09 09 70 |F_UNLCK)|).X....p|
|00004e60| 65 72 72 6f 72 28 22 43 | 6f 75 6c 64 6e 27 74 20 |error("C|ouldn't |
|00004e70| 72 65 6c 69 6e 71 75 69 | 73 68 20 6c 6f 63 6b 22 |relinqui|sh lock"|
|00004e80| 29 3b 0a 58 0a 58 09 09 | 09 66 63 6c 6f 73 65 28 |);.X.X..|.fclose(|
|00004e90| 66 70 29 3b 0a 58 09 09 | 7d 0a 58 09 7d 20 77 68 |fp);.X..|}.X.} wh|
|00004ea0| 69 6c 65 20 28 2a 2b 2b | 64 62 66 69 6c 65 20 21 |ile (*++|dbfile !|
|00004eb0| 3d 20 4e 55 4c 4c 20 26 | 26 20 63 64 2d 3e 77 68 |= NULL &|& cd->wh|
|00004ec0| 69 63 68 64 62 20 3d 3d | 20 4e 55 4c 4c 29 3b 0a |ichdb ==| NULL);.|
|00004ed0| 58 0a 58 09 66 70 20 3d | 20 6f 70 65 6e 5f 72 63 |X.X.fp =| open_rc|
|00004ee0| 66 69 6c 65 28 72 63 66 | 69 6c 65 2c 20 22 72 22 |file(rcf|ile, "r"|
|00004ef0| 29 3b 0a 58 09 69 66 20 | 28 66 70 20 21 3d 20 4e |);.X.if |(fp != N|
|00004f00| 55 4c 4c 29 0a 58 09 7b | 0a 58 09 09 6c 6f 63 6b |ULL).X.{|.X..lock|
|00004f10| 65 64 20 3d 20 30 3b 0a | 58 09 09 69 66 20 28 6c |ed = 0;.|X..if (l|
|00004f20| 6f 63 6b 69 74 28 66 69 | 6c 65 6e 6f 28 66 70 29 |ockit(fi|leno(fp)|
|00004f30| 2c 20 46 5f 52 44 4c 43 | 4b 29 29 0a 58 09 09 09 |, F_RDLC|K)).X...|
|00004f40| 70 65 72 72 6f 72 28 22 | 43 6f 75 6c 64 6e 27 74 |perror("|Couldn't|
|00004f50| 20 67 65 74 20 72 65 61 | 64 20 6c 6f 63 6b 22 29 | get rea|d lock")|
|00004f60| 3b 0a 58 09 09 65 6c 73 | 65 0a 58 09 09 09 6c 6f |;.X..els|e.X...lo|
|00004f70| 63 6b 65 64 20 3d 20 31 | 3b 0a 58 0a 58 09 09 72 |cked = 1|;.X.X..r|
|00004f80| 63 70 6f 73 20 3d 20 30 | 3b 0a 58 09 09 66 6f 75 |cpos = 0|;.X..fou|
|00004f90| 6e 64 5f 69 6e 5f 72 63 | 20 3d 20 73 65 61 72 63 |nd_in_rc| = searc|
|00004fa0| 68 5f 64 62 28 66 70 2c | 20 31 2c 20 30 2c 20 30 |h_db(fp,| 1, 0, 0|
|00004fb0| 29 3b 0a 58 09 09 69 66 | 20 28 21 20 66 6f 75 6e |);.X..if| (! foun|
|00004fc0| 64 5f 69 6e 5f 72 63 29 | 0a 58 09 09 09 63 64 2d |d_in_rc)|.X...cd-|
|00004fd0| 3e 61 75 74 6f 70 6c 61 | 79 20 3d 20 67 65 74 5f |>autopla|y = get_|
|00004fe0| 70 6c 61 79 6e 65 77 28 | 29 3b 0a 58 0a 58 09 09 |playnew(|);.X.X..|
|00004ff0| 69 66 20 28 6c 6f 63 6b | 65 64 20 26 26 20 6c 6f |if (lock|ed && lo|
|00005000| 63 6b 69 74 28 66 69 6c | 65 6e 6f 28 66 70 29 2c |ckit(fil|eno(fp),|
|00005010| 20 46 5f 55 4e 4c 43 4b | 29 29 0a 58 09 09 09 70 | F_UNLCK|)).X...p|
|00005020| 65 72 72 6f 72 28 22 43 | 6f 75 6c 64 6e 27 74 20 |error("C|ouldn't |
|00005030| 72 65 6c 69 6e 71 75 69 | 73 68 20 6c 6f 63 6b 22 |relinqui|sh lock"|
|00005040| 29 3b 0a 58 0a 58 09 09 | 66 63 6c 6f 73 65 28 66 |);.X.X..|fclose(f|
|00005050| 70 29 3b 0a 58 09 7d 0a | 58 0a 58 09 69 66 20 28 |p);.X.}.|X.X.if (|
|00005060| 63 75 72 5f 70 6c 61 79 | 6e 65 77 20 3d 3d 20 2d |cur_play|new == -|
|00005070| 31 29 0a 58 09 09 63 75 | 72 5f 70 6c 61 79 6e 65 |1).X..cu|r_playne|
|00005080| 77 20 3d 20 30 3b 0a 58 | 7d 0a 58 0a 58 2f 2a 0a |w = 0;.X|}.X.X/*.|
|00005090| 58 20 2a 20 73 61 76 65 | 5f 67 6c 6f 62 61 6c 73 |X * save|_globals|
|000050a0| 28 29 0a 58 20 2a 0a 58 | 20 2a 20 53 61 76 65 20 |().X *.X| * Save |
|000050b0| 74 68 65 20 67 6c 6f 62 | 61 6c 20 70 72 65 66 65 |the glob|al prefe|
|000050c0| 72 65 6e 63 65 73 2c 20 | 73 63 6f 6f 74 69 6e 67 |rences, |scooting|
|000050d0| 20 43 44 20 65 6e 74 72 | 69 65 73 20 74 6f 20 74 | CD entr|ies to t|
|000050e0| 68 65 20 65 6e 64 20 69 | 66 20 6e 65 65 64 65 64 |he end i|f needed|
|000050f0| 2e 0a 58 20 2a 20 54 68 | 65 20 61 73 73 75 6d 70 |..X * Th|e assump|
|00005100| 74 69 6f 6e 20 68 65 72 | 65 20 69 73 20 74 68 61 |tion her|e is tha|
|00005110| 74 20 74 68 65 20 72 63 | 66 69 6c 65 20 69 73 20 |t the rc|file is |
|00005120| 6c 6f 63 6b 65 64 2c 20 | 61 6e 64 20 74 68 61 74 |locked, |and that|
|00005130| 20 66 69 72 73 74 70 6f | 73 20 68 61 73 0a 58 20 | firstpo|s has.X |
|00005140| 2a 20 62 65 65 6e 20 73 | 65 74 20 62 79 20 61 20 |* been s|et by a |
|00005150| 70 72 65 76 69 6f 75 73 | 20 73 63 61 6e 2e 0a 58 |previous| scan..X|
|00005160| 20 2a 2f 0a 58 76 6f 69 | 64 0a 58 73 61 76 65 5f | */.Xvoi|d.Xsave_|
|00005170| 67 6c 6f 62 61 6c 73 28 | 66 70 29 0a 58 46 49 4c |globals(|fp).XFIL|
|00005180| 45 20 2a 66 70 3b 0a 58 | 7b 0a 58 09 63 68 61 72 |E *fp;.X|{.X.char|
|00005190| 09 2a 67 6c 6f 62 65 73 | 20 3d 20 4e 55 4c 4c 2c |.*globes| = NULL,|
|000051a0| 20 2a 63 64 65 6e 74 72 | 79 20 3d 20 4e 55 4c 4c | *cdentr|y = NULL|
|000051b0| 2c 20 74 65 6d 70 5b 31 | 30 30 5d 3b 0a 58 09 6c |, temp[1|00];.X.l|
|000051c0| 6f 6e 67 09 63 75 72 70 | 6f 73 3b 0a 58 09 69 6e |ong.curp|os;.X.in|
|000051d0| 74 09 67 6c 6f 62 65 73 | 69 7a 65 2c 20 68 69 74 |t.globes|ize, hit|
|000051e0| 5f 63 64 65 6e 74 20 3d | 20 30 2c 20 63 3b 0a 58 |_cdent =| 0, c;.X|
|000051f0| 0a 58 09 69 66 20 28 6f | 74 68 65 72 72 63 29 0a |.X.if (o|therrc).|
|00005200| 58 09 09 73 74 72 6d 63 | 70 79 28 26 67 6c 6f 62 |X..strmc|py(&glob|
|00005210| 65 73 2c 20 6f 74 68 65 | 72 72 63 29 3b 0a 58 0a |es, othe|rrc);.X.|
|00005220| 58 09 69 66 20 28 63 75 | 72 5f 73 74 6f 70 6d 6f |X.if (cu|r_stopmo|
|00005230| 64 65 20 3d 3d 20 31 20 | 7c 7c 20 63 75 72 5f 73 |de == 1 ||| cur_s|
|00005240| 74 6f 70 6d 6f 64 65 20 | 3d 3d 20 32 29 0a 58 09 |topmode |== 2).X.|
|00005250| 7b 0a 58 09 09 73 70 72 | 69 6e 74 66 28 74 65 6d |{.X..spr|intf(tem|
|00005260| 70 2c 20 22 77 68 65 6e | 64 6f 6e 65 20 25 73 5c |p, "when|done %s\|
|00005270| 6e 22 2c 20 63 75 72 5f | 73 74 6f 70 6d 6f 64 65 |n", cur_|stopmode|
|00005280| 20 3d 3d 20 31 20 3f 20 | 22 72 65 70 65 61 74 22 | == 1 ? |"repeat"|
|00005290| 20 3a 0a 58 09 09 09 22 | 65 6a 65 63 74 22 29 3b | :.X..."|eject");|
|000052a0| 0a 58 09 09 73 74 72 6d | 63 61 74 28 26 67 6c 6f |.X..strm|cat(&glo|
|000052b0| 62 65 73 2c 20 74 65 6d | 70 29 3b 0a 58 09 7d 0a |bes, tem|p);.X.}.|
|000052c0| 58 0a 58 09 69 66 20 28 | 63 75 72 5f 70 6c 61 79 |X.X.if (|cur_play|
|000052d0| 6e 65 77 20 3d 3d 20 31 | 29 0a 58 09 09 73 74 72 |new == 1|).X..str|
|000052e0| 6d 63 61 74 28 26 67 6c | 6f 62 65 73 2c 20 22 70 |mcat(&gl|obes, "p|
|000052f0| 6c 61 79 6e 65 77 5c 6e | 22 29 3b 0a 58 0a 58 09 |laynew\n|");.X.X.|
|00005300| 63 75 72 70 6f 73 20 3d | 20 66 69 72 73 74 70 6f |curpos =| firstpo|
|00005310| 73 3b 0a 58 09 69 66 20 | 28 63 75 72 70 6f 73 20 |s;.X.if |(curpos |
|00005320| 3c 20 30 29 0a 58 09 09 | 63 75 72 70 6f 73 20 3d |< 0).X..|curpos =|
|00005330| 20 30 3b 0a 58 0a 58 09 | 66 73 65 65 6b 28 66 70 | 0;.X.X.|fseek(fp|
|00005340| 2c 20 63 75 72 70 6f 73 | 2c 20 53 45 45 4b 5f 53 |, curpos|, SEEK_S|
|00005350| 45 54 29 3b 0a 58 0a 58 | 09 69 66 20 28 66 69 72 |ET);.X.X|.if (fir|
|00005360| 73 74 70 6f 73 20 3c 20 | 28 67 6c 6f 62 65 73 69 |stpos < |(globesi|
|00005370| 7a 65 20 3d 20 67 6c 6f | 62 65 73 20 21 3d 20 4e |ze = glo|bes != N|
|00005380| 55 4c 4c 20 3f 20 73 74 | 72 6c 65 6e 28 67 6c 6f |ULL ? st|rlen(glo|
|00005390| 62 65 73 29 20 3a 20 30 | 29 29 0a 58 09 7b 0a 58 |bes) : 0|)).X.{.X|
|000053a0| 09 09 77 68 69 6c 65 20 | 28 31 29 0a 58 09 09 7b |..while |(1).X..{|
|000053b0| 0a 58 09 09 09 74 65 6d | 70 5b 73 69 7a 65 6f 66 |.X...tem|p[sizeof|
|000053c0| 28 74 65 6d 70 29 2d 31 | 5d 20 3d 20 27 78 27 3b |(temp)-1|] = 'x';|
|000053d0| 0a 58 0a 58 09 09 09 69 | 66 20 28 66 67 65 74 73 |.X.X...i|f (fgets|
|000053e0| 28 74 65 6d 70 2c 20 73 | 69 7a 65 6f 66 28 74 65 |(temp, s|izeof(te|
|000053f0| 6d 70 29 2c 20 66 70 29 | 20 3d 3d 20 4e 55 4c 4c |mp), fp)| == NULL|
|00005400| 29 0a 58 09 09 09 7b 0a | 58 09 09 09 09 66 73 65 |).X...{.|X....fse|
|00005410| 65 6b 28 66 70 2c 20 30 | 2c 20 53 45 45 4b 5f 53 |ek(fp, 0|, SEEK_S|
|00005420| 45 54 29 3b 0a 58 09 09 | 09 09 69 66 20 28 67 6c |ET);.X..|..if (gl|
|00005430| 6f 62 65 73 20 21 3d 20 | 4e 55 4c 4c 29 0a 58 09 |obes != |NULL).X.|
|00005440| 09 09 09 7b 0a 58 09 09 | 09 09 09 66 77 72 69 74 |...{.X..|...fwrit|
|00005450| 65 28 67 6c 6f 62 65 73 | 2c 20 67 6c 6f 62 65 73 |e(globes|, globes|
|00005460| 69 7a 65 2c 20 31 2c 20 | 66 70 29 3b 0a 58 09 09 |ize, 1, |fp);.X..|
|00005470| 09 09 09 66 72 65 65 28 | 67 6c 6f 62 65 73 29 3b |...free(|globes);|
|00005480| 0a 58 09 09 09 09 7d 0a | 58 09 09 09 09 69 66 20 |.X....}.|X....if |
|00005490| 28 63 64 65 6e 74 72 79 | 20 21 3d 20 4e 55 4c 4c |(cdentry| != NULL|
|000054a0| 29 0a 58 09 09 09 09 7b | 0a 58 09 09 09 09 09 66 |).X....{|.X.....f|
|000054b0| 77 72 69 74 65 28 63 64 | 65 6e 74 72 79 2c 20 73 |write(cd|entry, s|
|000054c0| 74 72 6c 65 6e 28 63 64 | 65 6e 74 72 79 29 2c 20 |trlen(cd|entry), |
|000054d0| 31 2c 20 66 70 29 3b 0a | 58 09 09 09 09 09 66 72 |1, fp);.|X.....fr|
|000054e0| 65 65 28 63 64 65 6e 74 | 72 79 29 3b 0a 58 09 09 |ee(cdent|ry);.X..|
|000054f0| 09 09 7d 0a 58 09 09 09 | 09 72 65 74 75 72 6e 3b |..}.X...|.return;|
|00005500| 0a 58 09 09 09 7d 0a 58 | 0a 58 09 09 09 69 66 20 |.X...}.X|.X...if |
|00005510| 28 21 20 73 74 72 6e 63 | 6d 70 28 74 65 6d 70 2c |(! strnc|mp(temp,|
|00005520| 20 22 74 72 61 63 6b 73 | 20 22 2c 20 37 29 29 0a | "tracks| ", 7)).|
|00005530| 58 09 09 09 7b 0a 58 09 | 09 09 09 68 69 74 5f 63 |X...{.X.|...hit_c|
|00005540| 64 65 6e 74 20 3d 20 31 | 3b 0a 58 09 09 09 09 69 |dent = 1|;.X....i|
|00005550| 66 20 28 63 75 72 70 6f | 73 20 3e 3d 20 67 6c 6f |f (curpo|s >= glo|
|00005560| 62 65 73 69 7a 65 29 0a | 58 09 09 09 09 09 62 72 |besize).|X.....br|
|00005570| 65 61 6b 3b 0a 58 09 09 | 09 7d 0a 58 0a 58 09 09 |eak;.X..|.}.X.X..|
|00005580| 09 69 66 20 28 21 20 68 | 69 74 5f 63 64 65 6e 74 |.if (! h|it_cdent|
|00005590| 29 0a 58 09 09 09 7b 0a | 58 09 09 09 09 63 75 72 |).X...{.|X....cur|
|000055a0| 70 6f 73 20 2b 3d 20 73 | 74 72 6c 65 6e 28 74 65 |pos += s|trlen(te|
|000055b0| 6d 70 29 3b 0a 58 09 09 | 09 09 69 66 20 28 74 65 |mp);.X..|..if (te|
|000055c0| 6d 70 5b 73 69 7a 65 6f | 66 28 74 65 6d 70 29 2d |mp[sizeo|f(temp)-|
|000055d0| 31 5d 20 3d 3d 20 27 5c | 30 27 29 0a 58 09 09 09 |1] == '\|0').X...|
|000055e0| 09 09 77 68 69 6c 65 20 | 28 28 63 20 3d 20 67 65 |..while |((c = ge|
|000055f0| 74 63 28 66 70 29 29 20 | 21 3d 20 27 5c 6e 27 20 |tc(fp)) |!= '\n' |
|00005600| 26 26 0a 58 09 09 09 09 | 09 09 09 09 63 20 21 3d |&&.X....|....c !=|
|00005610| 20 45 4f 46 29 0a 58 09 | 09 09 09 09 09 63 75 72 | EOF).X.|.....cur|
|00005620| 70 6f 73 2b 2b 3b 0a 58 | 09 09 09 09 69 66 20 28 |pos++;.X|....if (|
|00005630| 63 20 3d 3d 20 27 5c 6e | 27 29 0a 58 09 09 09 09 |c == '\n|').X....|
|00005640| 09 63 75 72 70 6f 73 2b | 2b 3b 0a 58 0a 58 09 09 |.curpos+|+;.X.X..|
|00005650| 09 09 63 6f 6e 74 69 6e | 75 65 3b 0a 58 09 09 09 |..contin|ue;.X...|
|00005660| 7d 0a 58 0a 58 09 09 09 | 73 74 72 6d 63 61 74 28 |}.X.X...|strmcat(|
|00005670| 26 63 64 65 6e 74 72 79 | 2c 20 74 65 6d 70 29 3b |&cdentry|, temp);|
|00005680| 0a 58 09 09 09 63 75 72 | 70 6f 73 20 2b 3d 20 73 |.X...cur|pos += s|
|00005690| 74 72 6c 65 6e 28 74 65 | 6d 70 29 3b 0a 58 09 09 |trlen(te|mp);.X..|
|000056a0| 09 77 68 69 6c 65 20 28 | 74 65 6d 70 5b 73 69 7a |.while (|temp[siz|
|000056b0| 65 6f 66 28 74 65 6d 70 | 29 2d 31 5d 20 3d 3d 20 |eof(temp|)-1] == |
|000056c0| 27 5c 30 27 29 0a 58 09 | 09 09 7b 0a 58 09 09 09 |'\0').X.|..{.X...|
|000056d0| 09 74 65 6d 70 5b 73 69 | 7a 65 6f 66 28 74 65 6d |.temp[si|zeof(tem|
|000056e0| 70 29 2d 31 5d 20 3d 20 | 27 78 27 3b 0a 58 09 09 |p)-1] = |'x';.X..|
|000056f0| 09 09 69 66 20 28 66 67 | 65 74 73 28 74 65 6d 70 |..if (fg|ets(temp|
|00005700| 2c 20 73 69 7a 65 6f 66 | 28 74 65 6d 70 29 2c 20 |, sizeof|(temp), |
|00005710| 66 70 29 20 3d 3d 20 4e | 55 4c 4c 29 0a 58 09 09 |fp) == N|ULL).X..|
|00005720| 09 09 09 62 72 65 61 6b | 3b 0a 58 09 09 09 09 73 |...break|;.X....s|
|00005730| 74 72 6d 63 61 74 28 26 | 63 64 65 6e 74 72 79 2c |trmcat(&|cdentry,|
|00005740| 20 74 65 6d 70 29 3b 0a | 58 09 09 09 09 63 75 72 | temp);.|X....cur|
|00005750| 70 6f 73 20 2b 3d 20 73 | 74 72 6c 65 6e 28 74 65 |pos += s|trlen(te|
|00005760| 6d 70 29 3b 0a 58 09 09 | 09 7d 0a 58 09 09 7d 20 |mp);.X..|.}.X..} |
|00005770| 0a 58 0a 58 09 09 69 66 | 20 28 63 64 65 6e 74 72 |.X.X..if| (cdentr|
|00005780| 79 20 21 3d 20 4e 55 4c | 4c 29 0a 58 09 09 7b 0a |y != NUL|L).X..{.|
|00005790| 58 09 09 09 66 73 65 65 | 6b 28 66 70 2c 20 30 2c |X...fsee|k(fp, 0,|
|000057a0| 20 53 45 45 4b 5f 45 4e | 44 29 3b 0a 58 09 09 09 | SEEK_EN|D);.X...|
|000057b0| 66 77 72 69 74 65 28 63 | 64 65 6e 74 72 79 2c 20 |fwrite(c|dentry, |
|000057c0| 73 74 72 6c 65 6e 28 63 | 64 65 6e 74 72 79 29 2c |strlen(c|dentry),|
|000057d0| 20 31 2c 20 66 70 29 3b | 0a 58 09 09 09 66 72 65 | 1, fp);|.X...fre|
|000057e0| 65 28 63 64 65 6e 74 72 | 79 29 3b 0a 58 09 09 7d |e(cdentr|y);.X..}|
|000057f0| 0a 58 09 7d 0a 58 0a 58 | 09 69 66 20 28 67 6c 6f |.X.}.X.X|.if (glo|
|00005800| 62 65 73 20 21 3d 20 4e | 55 4c 4c 29 0a 58 09 7b |bes != N|ULL).X.{|
|00005810| 0a 58 09 09 66 73 65 65 | 6b 28 66 70 2c 20 30 2c |.X..fsee|k(fp, 0,|
|00005820| 20 53 45 45 4b 5f 53 45 | 54 29 3b 0a 58 09 09 66 | SEEK_SE|T);.X..f|
|00005830| 77 72 69 74 65 28 67 6c | 6f 62 65 73 2c 20 67 6c |write(gl|obes, gl|
|00005840| 6f 62 65 73 69 7a 65 2c | 20 31 2c 20 66 70 29 3b |obesize,| 1, fp);|
|00005850| 0a 58 09 09 66 72 65 65 | 28 67 6c 6f 62 65 73 29 |.X..free|(globes)|
|00005860| 3b 0a 58 09 7d 0a 58 0a | 58 09 77 68 69 6c 65 20 |;.X.}.X.|X.while |
|00005870| 28 67 6c 6f 62 65 73 69 | 7a 65 2b 2b 20 3c 20 63 |(globesi|ze++ < c|
|00005880| 75 72 70 6f 73 29 0a 58 | 09 09 70 75 74 63 28 27 |urpos).X|..putc('|
|00005890| 5c 6e 27 2c 20 66 70 29 | 3b 0a 58 7d 0a 58 0a 58 |\n', fp)|;.X}.X.X|
|000058a0| 2f 2a 0a 58 20 2a 20 73 | 61 76 65 5f 65 6e 74 72 |/*.X * s|ave_entr|
|000058b0| 79 28 29 0a 58 20 2a 0a | 58 20 2a 20 53 61 76 65 |y().X *.|X * Save|
|000058c0| 20 74 68 65 20 43 44 20 | 69 6e 66 6f 72 6d 61 74 | the CD |informat|
|000058d0| 69 6f 6e 20 74 6f 20 6f | 6e 65 20 64 61 74 61 62 |ion to o|ne datab|
|000058e0| 61 73 65 2e 0a 58 20 2a | 0a 58 20 2a 09 66 70 09 |ase..X *|.X *.fp.|
|000058f0| 46 49 4c 45 2a 20 6f 66 | 20 64 61 74 61 62 61 73 |FILE* of| databas|
|00005900| 65 20 74 6f 20 73 61 76 | 65 20 74 6f 2e 0a 58 20 |e to sav|e to..X |
|00005910| 2a 09 70 72 65 66 09 30 | 20 66 6f 72 20 68 61 72 |*.pref.0| for har|
|00005920| 64 20 64 61 74 61 2c 20 | 31 20 66 6f 72 20 70 72 |d data, |1 for pr|
|00005930| 65 66 65 72 65 6e 63 65 | 73 2e 0a 58 20 2a 0a 58 |eference|s..X *.X|
|00005940| 20 2a 20 49 66 20 61 6e | 20 65 6e 74 72 79 20 66 | * If an| entry f|
|00005950| 6f 72 20 74 68 69 73 20 | 43 44 20 65 78 69 73 74 |or this |CD exist|
|00005960| 73 20 61 6c 72 65 61 64 | 79 2c 20 6f 76 65 72 77 |s alread|y, overw|
|00005970| 72 69 74 65 20 69 74 20 | 77 69 74 68 20 74 68 65 |rite it |with the|
|00005980| 20 6e 65 77 20 65 6e 74 | 72 79 0a 58 20 2a 20 69 | new ent|ry.X * i|
|00005990| 66 20 74 68 65 20 6e 65 | 77 20 65 6e 74 72 79 20 |f the ne|w entry |
|000059a0| 69 73 20 74 68 65 20 73 | 61 6d 65 20 73 69 7a 65 |is the s|ame size|
|000059b0| 20 6f 72 20 73 6d 61 6c | 6c 65 72 2c 20 6f 72 20 | or smal|ler, or |
|000059c0| 77 69 74 68 20 6e 65 77 | 6c 69 6e 65 73 20 69 66 |with new|lines if|
|000059d0| 20 74 68 65 20 6e 65 77 | 0a 58 20 2a 20 65 6e 74 | the new|.X * ent|
|000059e0| 72 79 20 69 73 20 6c 61 | 72 67 65 72 20 28 69 6e |ry is la|rger (in|
|000059f0| 20 77 68 69 63 68 20 63 | 61 73 65 20 74 68 65 20 | which c|ase the |
|00005a00| 6e 65 77 20 65 6e 74 72 | 79 20 69 73 20 61 70 70 |new entr|y is app|
|00005a10| 65 6e 64 65 64 20 74 6f | 20 74 68 65 20 66 69 6c |ended to| the fil|
|00005a20| 65 2e 29 0a 58 20 2a 0a | 58 20 2a 20 41 6c 73 6f |e.).X *.|X * Also|
|00005a30| 2c 20 69 66 20 74 68 65 | 20 70 72 65 66 65 72 65 |, if the| prefere|
|00005a40| 6e 63 65 20 69 6e 66 6f | 72 6d 61 74 69 6f 6e 20 |nce info|rmation |
|00005a50| 69 73 20 62 65 69 6e 67 | 20 75 70 64 61 74 65 64 |is being| updated|
|00005a60| 2c 20 73 61 76 65 20 69 | 74 20 74 6f 20 74 68 65 |, save i|t to the|
|00005a70| 0a 58 20 2a 20 66 69 6c | 65 20 77 68 69 6c 65 20 |.X * fil|e while |
|00005a80| 77 65 27 76 65 20 67 6f | 74 20 69 74 20 6c 6f 63 |we've go|t it loc|
|00005a90| 6b 65 64 2e 20 20 53 63 | 6f 6f 74 20 73 74 75 66 |ked. Sc|oot stuf|
|00005aa0| 66 20 66 72 6f 6d 20 74 | 68 65 20 62 65 67 69 6e |f from t|he begin|
|00005ab0| 6e 69 6e 67 20 6f 66 0a | 58 20 2a 20 74 68 65 20 |ning of.|X * the |
|00005ac0| 66 69 6c 65 20 74 6f 20 | 74 68 65 20 65 6e 64 20 |file to |the end |
|00005ad0| 61 73 20 6e 65 65 64 65 | 64 20 74 6f 20 66 61 63 |as neede|d to fac|
|00005ae0| 69 6c 69 74 61 74 65 20 | 74 68 69 73 2e 0a 58 20 |ilitate |this..X |
|00005af0| 2a 0a 58 20 2a 20 58 58 | 58 20 50 72 65 66 65 72 |*.X * XX|X Prefer|
|00005b00| 65 6e 63 65 2d 73 61 76 | 69 6e 67 20 73 68 6f 75 |ence-sav|ing shou|
|00005b10| 6c 64 20 70 72 6f 62 61 | 62 6c 79 20 62 65 20 64 |ld proba|bly be d|
|00005b20| 6f 6e 65 20 65 6c 73 65 | 77 68 65 72 65 2c 20 6c |one else|where, l|
|00005b30| 69 6b 65 20 69 6e 20 61 | 6e 0a 58 20 2a 20 41 70 |ike in a|n.X * Ap|
|00005b40| 70 6c 79 20 62 75 74 74 | 6f 6e 20 6f 6e 20 74 68 |ply butt|on on th|
|00005b50| 65 20 47 6f 6f 64 69 65 | 73 20 70 6f 70 75 70 2e |e Goodie|s popup.|
|00005b60| 0a 58 20 2a 2f 0a 58 73 | 61 76 65 5f 65 6e 74 72 |.X */.Xs|ave_entr|
|00005b70| 79 28 66 70 2c 20 70 72 | 65 66 29 0a 58 09 46 49 |y(fp, pr|ef).X.FI|
|00005b80| 4c 45 09 2a 66 70 3b 0a | 58 09 69 6e 74 09 70 72 |LE.*fp;.|X.int.pr|
|00005b90| 65 66 3b 0a 58 7b 0a 58 | 09 63 68 61 72 09 09 2a |ef;.X{.X|.char..*|
|00005ba0| 62 75 66 3b 0a 58 09 69 | 6e 74 09 09 6c 65 6e 2c |buf;.X.i|nt..len,|
|00005bb0| 20 69 2c 20 6c 6f 63 6b | 65 64 20 3d 20 30 3b 0a | i, lock|ed = 0;.|
|00005bc0| 58 0a 58 09 69 66 20 28 | 6c 6f 63 6b 69 74 28 66 |X.X.if (|lockit(f|
|00005bd0| 69 6c 65 6e 6f 28 66 70 | 29 2c 20 46 5f 57 52 4c |ileno(fp|), F_WRL|
|00005be0| 43 4b 29 29 0a 58 09 09 | 70 65 72 72 6f 72 28 22 |CK)).X..|perror("|
|00005bf0| 57 61 72 6e 69 6e 67 3a | 20 43 6f 75 6c 64 6e 27 |Warning:| Couldn'|
|00005c00| 74 20 67 65 74 20 77 72 | 69 74 65 20 6c 6f 63 6b |t get wr|ite lock|
|00005c10| 22 29 3b 0a 58 09 65 6c | 73 65 0a 58 09 09 6c 6f |");.X.el|se.X..lo|
|00005c20| 63 6b 65 64 20 3d 20 31 | 3b 0a 58 0a 58 09 62 75 |cked = 1|;.X.X.bu|
|00005c30| 66 20 3d 20 70 72 69 6e | 74 5f 63 64 69 6e 66 6f |f = prin|t_cdinfo|
|00005c40| 28 63 64 2c 20 70 72 65 | 66 29 3b 0a 58 09 6c 65 |(cd, pre|f);.X.le|
|00005c50| 6e 20 3d 20 73 74 72 6c | 65 6e 28 62 75 66 29 3b |n = strl|en(buf);|
|00005c60| 09 2f 2a 20 64 6f 65 73 | 6e 27 74 20 72 65 74 75 |./* does|n't retu|
|00005c70| 72 6e 20 69 66 20 74 68 | 65 72 65 27 73 20 61 6e |rn if th|ere's an|
|00005c80| 20 65 72 72 6f 72 20 2a | 2f 0a 58 0a 58 09 72 63 | error *|/.X.X.rc|
|00005c90| 70 6f 73 20 3d 20 2d 31 | 3b 0a 58 09 73 65 61 72 |pos = -1|;.X.sear|
|00005ca0| 63 68 5f 64 62 28 66 70 | 2c 20 70 72 65 66 2c 20 |ch_db(fp|, pref, |
|00005cb0| 31 2c 20 6c 65 6e 29 3b | 0a 58 09 69 66 20 28 72 |1, len);|.X.if (r|
|00005cc0| 63 70 6f 73 20 21 3d 20 | 2d 31 29 09 09 2f 2a 20 |cpos != |-1)../* |
|00005cd0| 58 58 58 20 2a 2f 0a 58 | 09 7b 0a 58 09 09 66 73 |XXX */.X|.{.X..fs|
|00005ce0| 65 65 6b 28 66 70 2c 20 | 72 63 70 6f 73 2c 20 53 |eek(fp, |rcpos, S|
|00005cf0| 45 45 4b 5f 53 45 54 29 | 3b 0a 58 09 09 69 66 20 |EEK_SET)|;.X..if |
|00005d00| 28 72 63 6c 65 6e 20 3e | 3d 20 6c 65 6e 20 26 26 |(rclen >|= len &&|
|00005d10| 20 68 6f 6c 65 70 6f 73 | 20 3d 3d 20 2d 31 29 0a | holepos| == -1).|
|00005d20| 58 09 09 7b 0a 58 09 09 | 09 66 70 75 74 73 28 62 |X..{.X..|.fputs(b|
|00005d30| 75 66 2c 20 66 70 29 3b | 0a 58 09 09 09 66 6f 72 |uf, fp);|.X...for|
|00005d40| 20 28 69 20 3d 20 6c 65 | 6e 3b 20 69 20 3c 20 72 | (i = le|n; i < r|
|00005d50| 63 6c 65 6e 3b 20 69 2b | 2b 29 0a 58 09 09 09 09 |clen; i+|+).X....|
|00005d60| 66 70 75 74 63 28 27 5c | 6e 27 2c 20 66 70 29 3b |fputc('\|n', fp);|
|00005d70| 0a 58 09 09 7d 0a 58 09 | 09 65 6c 73 65 0a 58 09 |.X..}.X.|.else.X.|
|00005d80| 09 7b 0a 58 09 09 09 66 | 6f 72 20 28 69 20 3d 20 |.{.X...f|or (i = |
|00005d90| 30 3b 20 69 20 3c 20 72 | 63 6c 65 6e 3b 20 69 2b |0; i < r|clen; i+|
|00005da0| 2b 29 0a 58 09 09 09 09 | 66 70 75 74 63 28 27 5c |+).X....|fputc('\|
|00005db0| 6e 27 2c 20 66 70 29 3b | 0a 58 09 09 09 69 66 20 |n', fp);|.X...if |
|00005dc0| 28 68 6f 6c 65 70 6f 73 | 20 3e 3d 20 30 29 0a 58 |(holepos| >= 0).X|
|00005dd0| 09 09 09 09 66 73 65 65 | 6b 28 66 70 2c 20 68 6f |....fsee|k(fp, ho|
|00005de0| 6c 65 70 6f 73 2c 20 53 | 45 45 4b 5f 53 45 54 29 |lepos, S|EEK_SET)|
|00005df0| 3b 0a 58 09 09 09 65 6c | 73 65 0a 58 09 09 09 09 |;.X...el|se.X....|
|00005e00| 66 73 65 65 6b 28 66 70 | 2c 20 30 2c 20 53 45 45 |fseek(fp|, 0, SEE|
|00005e10| 4b 5f 45 4e 44 29 3b 0a | 58 09 09 09 66 70 75 74 |K_END);.|X...fput|
|00005e20| 73 28 62 75 66 2c 20 66 | 70 29 3b 0a 58 09 09 7d |s(buf, f|p);.X..}|
|00005e30| 0a 58 09 7d 0a 58 09 65 | 6c 73 65 0a 58 09 7b 0a |.X.}.X.e|lse.X.{.|
|00005e40| 58 09 09 69 66 20 28 68 | 6f 6c 65 70 6f 73 20 3e |X..if (h|olepos >|
|00005e50| 3d 20 30 29 0a 58 09 09 | 09 66 73 65 65 6b 28 66 |= 0).X..|.fseek(f|
|00005e60| 70 2c 20 68 6f 6c 65 70 | 6f 73 2c 20 53 45 45 4b |p, holep|os, SEEK|
|00005e70| 5f 53 45 54 29 3b 0a 58 | 09 09 65 6c 73 65 0a 58 |_SET);.X|..else.X|
|00005e80| 09 09 09 66 73 65 65 6b | 28 66 70 2c 20 30 2c 20 |...fseek|(fp, 0, |
|00005e90| 53 45 45 4b 5f 45 4e 44 | 29 3b 0a 58 09 09 66 70 |SEEK_END|);.X..fp|
|00005ea0| 75 74 73 28 62 75 66 2c | 20 66 70 29 3b 0a 58 09 |uts(buf,| fp);.X.|
|00005eb0| 7d 0a 58 0a 58 09 69 66 | 20 28 70 72 65 66 29 0a |}.X.X.if| (pref).|
|00005ec0| 58 09 09 73 61 76 65 5f | 67 6c 6f 62 61 6c 73 28 |X..save_|globals(|
|00005ed0| 66 70 29 3b 0a 58 0a 58 | 09 66 66 6c 75 73 68 28 |fp);.X.X|.fflush(|
|00005ee0| 66 70 29 3b 0a 58 0a 58 | 09 69 66 20 28 6c 6f 63 |fp);.X.X|.if (loc|
|00005ef0| 6b 65 64 20 26 26 20 6c | 6f 63 6b 69 74 28 66 69 |ked && l|ockit(fi|
|00005f00| 6c 65 6e 6f 28 66 70 29 | 2c 20 46 5f 55 4e 4c 43 |leno(fp)|, F_UNLC|
|00005f10| 4b 29 29 0a 58 09 09 70 | 65 72 72 6f 72 28 22 57 |K)).X..p|error("W|
|00005f20| 61 72 6e 69 6e 67 3a 20 | 43 6f 75 6c 64 6e 27 74 |arning: |Couldn't|
|00005f30| 20 72 65 6c 69 6e 71 75 | 69 73 68 20 77 72 69 74 | relinqu|ish writ|
|00005f40| 65 20 6c 6f 63 6b 22 29 | 3b 0a 58 7d 0a 58 0a 58 |e lock")|;.X}.X.X|
|00005f50| 2f 2a 0a 58 20 2a 20 73 | 61 76 65 28 29 0a 58 20 |/*.X * s|ave().X |
|00005f60| 2a 0a 58 20 2a 20 53 61 | 76 65 20 43 44 20 69 6e |*.X * Sa|ve CD in|
|00005f70| 66 6f 72 6d 61 74 69 6f | 6e 20 74 6f 20 74 68 65 |formatio|n to the|
|00005f80| 20 61 70 70 72 6f 70 72 | 69 61 74 65 20 64 61 74 | appropr|iate dat|
|00005f90| 61 66 69 6c 65 20 28 74 | 68 65 20 66 69 72 73 74 |afile (t|he first|
|00005fa0| 20 66 69 6c 65 20 69 6e | 20 74 68 65 0a 58 20 2a | file in| the.X *|
|00005fb0| 20 6c 69 73 74 2c 20 75 | 6e 6c 65 73 73 20 74 68 | list, u|nless th|
|00005fc0| 65 20 65 6e 74 72 79 20 | 63 61 6d 65 20 66 72 6f |e entry |came fro|
|00005fd0| 6d 20 61 6e 6f 74 68 65 | 72 20 64 61 74 61 62 61 |m anothe|r databa|
|00005fe0| 73 65 20 66 69 6c 65 29 | 20 61 6e 64 20 74 6f 20 |se file)| and to |
|00005ff0| 74 68 65 0a 58 20 2a 20 | 70 65 72 73 6f 6e 61 6c |the.X * |personal|
|00006000| 20 70 72 65 66 73 20 66 | 69 6c 65 2e 0a 58 20 2a | prefs f|ile..X *|
|00006010| 2f 0a 58 73 61 76 65 28 | 29 0a 58 7b 0a 58 09 46 |/.Xsave(|).X{.X.F|
|00006020| 49 4c 45 09 09 2a 66 70 | 3b 0a 58 0a 58 09 66 70 |ILE..*fp|;.X.X.fp|
|00006030| 20 3d 20 6f 70 65 6e 5f | 72 63 66 69 6c 65 28 72 | = open_|rcfile(r|
|00006040| 63 66 69 6c 65 2c 20 22 | 72 2b 22 29 3b 0a 58 09 |cfile, "|r+");.X.|
|00006050| 69 66 20 28 66 70 20 3d | 3d 20 4e 55 4c 4c 29 0a |if (fp =|= NULL).|
|00006060| 58 09 7b 0a 58 09 09 69 | 66 20 28 65 72 72 6e 6f |X.{.X..i|f (errno|
|00006070| 20 3d 3d 20 45 4e 4f 45 | 4e 54 29 09 2f 2a 20 64 | == ENOE|NT)./* d|
|00006080| 6f 65 73 6e 27 74 20 65 | 78 69 73 74 20 61 6c 72 |oesn't e|xist alr|
|00006090| 65 61 64 79 20 2a 2f 0a | 58 09 09 09 66 70 20 3d |eady */.|X...fp =|
|000060a0| 20 6f 70 65 6e 5f 72 63 | 66 69 6c 65 28 72 63 66 | open_rc|file(rcf|
|000060b0| 69 6c 65 2c 20 22 77 22 | 29 3b 0a 58 09 09 69 66 |ile, "w"|);.X..if|
|000060c0| 20 28 66 70 20 3d 3d 20 | 4e 55 4c 4c 29 0a 58 09 | (fp == |NULL).X.|
|000060d0| 09 09 72 65 74 75 72 6e | 20 28 30 29 3b 0a 58 09 |..return| (0);.X.|
|000060e0| 7d 0a 58 0a 58 09 73 61 | 76 65 5f 65 6e 74 72 79 |}.X.X.sa|ve_entry|
|000060f0| 28 66 70 2c 20 31 29 3b | 0a 58 0a 58 09 66 63 6c |(fp, 1);|.X.X.fcl|
|00006100| 6f 73 65 28 66 70 29 3b | 0a 58 0a 58 09 69 66 20 |ose(fp);|.X.X.if |
|00006110| 28 63 64 2d 3e 77 68 69 | 63 68 64 62 20 3d 3d 20 |(cd->whi|chdb == |
|00006120| 4e 55 4c 4c 20 7c 7c 20 | 61 63 63 65 73 73 28 63 |NULL || |access(c|
|00006130| 64 2d 3e 77 68 69 63 68 | 64 62 2c 20 57 5f 4f 4b |d->which|db, W_OK|
|00006140| 29 29 0a 58 09 09 63 64 | 2d 3e 77 68 69 63 68 64 |)).X..cd|->whichd|
|00006150| 62 20 3d 20 64 61 74 61 | 62 61 73 65 73 5b 30 5d |b = data|bases[0]|
|00006160| 3b 0a 58 0a 58 09 69 66 | 20 28 28 66 70 20 3d 20 |;.X.X.if| ((fp = |
|00006170| 6f 70 65 6e 5f 72 63 66 | 69 6c 65 28 63 64 2d 3e |open_rcf|ile(cd->|
|00006180| 77 68 69 63 68 64 62 2c | 20 22 72 2b 22 29 29 20 |whichdb,| "r+")) |
|00006190| 3d 3d 20 4e 55 4c 4c 29 | 0a 58 09 7b 0a 58 09 09 |== NULL)|.X.{.X..|
|000061a0| 69 66 20 28 65 72 72 6e | 6f 20 3d 3d 20 45 4e 4f |if (errn|o == ENO|
|000061b0| 45 4e 54 29 0a 58 09 09 | 09 66 70 20 3d 20 6f 70 |ENT).X..|.fp = op|
|000061c0| 65 6e 5f 72 63 66 69 6c | 65 28 63 64 2d 3e 77 68 |en_rcfil|e(cd->wh|
|000061d0| 69 63 68 64 62 2c 20 22 | 77 22 29 3b 0a 58 09 09 |ichdb, "|w");.X..|
|000061e0| 69 66 20 28 66 70 20 3d | 3d 20 4e 55 4c 4c 29 0a |if (fp =|= NULL).|
|000061f0| 58 09 09 09 72 65 74 75 | 72 6e 20 28 30 29 3b 0a |X...retu|rn (0);.|
|00006200| 58 09 7d 0a 58 0a 58 09 | 73 61 76 65 5f 65 6e 74 |X.}.X.X.|save_ent|
|00006210| 72 79 28 66 70 2c 20 30 | 29 3b 0a 58 09 66 63 6c |ry(fp, 0|);.X.fcl|
|00006220| 6f 73 65 28 66 70 29 3b | 0a 58 0a 58 09 72 65 74 |ose(fp);|.X.X.ret|
|00006230| 75 72 6e 20 28 31 29 3b | 0a 58 7d 0a 45 4e 44 5f |urn (1);|.X}.END_|
|00006240| 4f 46 5f 46 49 4c 45 0a | 69 66 20 74 65 73 74 20 |OF_FILE.|if test |
|00006250| 32 32 37 31 37 20 2d 6e | 65 20 60 77 63 20 2d 63 |22717 -n|e `wc -c|
|00006260| 20 3c 27 64 61 74 61 62 | 61 73 65 2e 63 27 60 3b | <'datab|ase.c'`;|
|00006270| 20 74 68 65 6e 0a 20 20 | 20 20 65 63 68 6f 20 73 | then. | echo s|
|00006280| 68 61 72 3a 20 5c 22 27 | 64 61 74 61 62 61 73 65 |har: \"'|database|
|00006290| 2e 63 27 5c 22 20 75 6e | 70 61 63 6b 65 64 20 77 |.c'\" un|packed w|
|000062a0| 69 74 68 20 77 72 6f 6e | 67 20 73 69 7a 65 21 0a |ith wron|g size!.|
|000062b0| 66 69 0a 23 20 65 6e 64 | 20 6f 66 20 27 64 61 74 |fi.# end| of 'dat|
|000062c0| 61 62 61 73 65 2e 63 27 | 0a 66 69 0a 69 66 20 74 |abase.c'|.fi.if t|
|000062d0| 65 73 74 20 2d 66 20 27 | 64 69 73 70 6c 61 79 2e |est -f '|display.|
|000062e0| 63 27 20 2d 61 20 22 24 | 7b 31 7d 22 20 21 3d 20 |c' -a "$|{1}" != |
|000062f0| 22 2d 63 22 20 3b 20 74 | 68 65 6e 20 0a 20 20 65 |"-c" ; t|hen . e|
|00006300| 63 68 6f 20 73 68 61 72 | 3a 20 57 69 6c 6c 20 6e |cho shar|: Will n|
|00006310| 6f 74 20 63 6c 6f 62 62 | 65 72 20 65 78 69 73 74 |ot clobb|er exist|
|00006320| 69 6e 67 20 66 69 6c 65 | 20 5c 22 27 64 69 73 70 |ing file| \"'disp|
|00006330| 6c 61 79 2e 63 27 5c 22 | 0a 65 6c 73 65 0a 65 63 |lay.c'\"|.else.ec|
|00006340| 68 6f 20 73 68 61 72 3a | 20 45 78 74 72 61 63 74 |ho shar:| Extract|
|00006350| 69 6e 67 20 5c 22 27 64 | 69 73 70 6c 61 79 2e 63 |ing \"'d|isplay.c|
|00006360| 27 5c 22 20 5c 28 32 35 | 32 31 31 20 63 68 61 72 |'\" \(25|211 char|
|00006370| 61 63 74 65 72 73 5c 29 | 0a 73 65 64 20 22 73 2f |acters\)|.sed "s/|
|00006380| 5e 58 2f 2f 22 20 3e 27 | 64 69 73 70 6c 61 79 2e |^X//" >'|display.|
|00006390| 63 27 20 3c 3c 27 45 4e | 44 5f 4f 46 5f 46 49 4c |c' <<'EN|D_OF_FIL|
|000063a0| 45 27 0a 58 2f 2a 0a 58 | 20 2a 20 40 28 23 29 64 |E'.X/*.X| * @(#)d|
|000063b0| 69 73 70 6c 61 79 2e 63 | 09 31 2e 34 38 20 31 31 |isplay.c|.1.48 11|
|000063c0| 2f 31 35 2f 39 32 0a 58 | 20 2a 0a 58 20 2a 20 64 |/15/92.X| *.X * d|
|000063d0| 69 73 70 6c 61 79 2e 63 | 20 2d 20 75 70 64 61 74 |isplay.c| - updat|
|000063e0| 65 20 74 68 65 20 73 74 | 61 74 75 73 20 69 6e 64 |e the st|atus ind|
|000063f0| 69 63 61 74 6f 72 73 20 | 61 6e 64 20 6f 74 68 65 |icators |and othe|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.