home *** CD-ROM | disk | FTP | other *** search
/ Garbo / Garbo.cdr / pc / source / byteunix.lzh / byte.5 < prev   
SHell self-extracting ARchive  |  1990-05-11  |  21.5 KB

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: byte.5

ConfidenceProgramDetectionMatch TypeSupport
100% dexvert SHell self-extracting ARchive (archive/shar) magic Supported
1% dexvert Text File (text/txt) fallback Supported
100% file ASCII text default
100% checkBytes Printable ASCII default
100% perlTextCheck Likely Text (Perl) default
100% siegfried fmt/329 Shell Archive Format default
100% detectItEasy Format: plain text[LF] default (weak)
100% xdgMime application/x-shellscript default (weak)



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 0a 23 21 20 2f 62 69 6e | 2f 73 68 0a 23 20 54 68 |.#! /bin|/sh.# Th|
|00000010| 69 73 20 69 73 20 61 20 | 73 68 65 6c 6c 20 61 72 |is is a |shell ar|
|00000020| 63 68 69 76 65 2e 20 20 | 52 65 6d 6f 76 65 20 61 |chive. |Remove a|
|00000030| 6e 79 74 68 69 6e 67 20 | 62 65 66 6f 72 65 20 74 |nything |before t|
|00000040| 68 69 73 20 6c 69 6e 65 | 2c 20 74 68 65 6e 20 75 |his line|, then u|
|00000050| 6e 70 61 63 6b 0a 23 20 | 69 74 20 62 79 20 73 61 |npack.# |it by sa|
|00000060| 76 69 6e 67 20 69 74 20 | 69 6e 74 6f 20 61 20 66 |ving it |into a f|
|00000070| 69 6c 65 20 61 6e 64 20 | 74 79 70 69 6e 67 20 22 |ile and |typing "|
|00000080| 73 68 20 66 69 6c 65 22 | 2e 20 20 54 6f 20 6f 76 |sh file"|. To ov|
|00000090| 65 72 77 72 69 74 65 20 | 65 78 69 73 74 69 6e 67 |erwrite |existing|
|000000a0| 0a 23 20 66 69 6c 65 73 | 2c 20 74 79 70 65 20 22 |.# files|, type "|
|000000b0| 73 68 20 66 69 6c 65 20 | 2d 63 22 2e 20 20 59 6f |sh file |-c". Yo|
|000000c0| 75 20 63 61 6e 20 61 6c | 73 6f 20 66 65 65 64 20 |u can al|so feed |
|000000d0| 74 68 69 73 20 61 73 20 | 73 74 61 6e 64 61 72 64 |this as |standard|
|000000e0| 20 69 6e 70 75 74 20 76 | 69 61 0a 23 20 75 6e 73 | input v|ia.# uns|
|000000f0| 68 61 72 2c 20 6f 72 20 | 62 79 20 74 79 70 69 6e |har, or |by typin|
|00000100| 67 20 22 73 68 20 3c 66 | 69 6c 65 22 2c 20 65 2e |g "sh <f|ile", e.|
|00000110| 67 2e 2e 20 20 49 66 20 | 74 68 69 73 20 61 72 63 |g.. If |this arc|
|00000120| 68 69 76 65 20 69 73 20 | 63 6f 6d 70 6c 65 74 65 |hive is |complete|
|00000130| 2c 20 79 6f 75 0a 23 20 | 77 69 6c 6c 20 73 65 65 |, you.# |will see|
|00000140| 20 74 68 65 20 66 6f 6c | 6c 6f 77 69 6e 67 20 6d | the fol|lowing m|
|00000150| 65 73 73 61 67 65 20 61 | 74 20 74 68 65 20 65 6e |essage a|t the en|
|00000160| 64 3a 0a 23 09 09 22 45 | 6e 64 20 6f 66 20 61 72 |d:.#.."E|nd of ar|
|00000170| 63 68 69 76 65 20 35 20 | 28 6f 66 20 35 29 2e 22 |chive 5 |(of 5)."|
|00000180| 0a 23 20 43 6f 6e 74 65 | 6e 74 73 3a 20 20 64 62 |.# Conte|nts: db|
|00000190| 6d 73 63 6c 69 2e 63 0a | 23 20 57 72 61 70 70 65 |mscli.c.|# Wrappe|
|000001a0| 64 20 62 79 20 72 73 61 | 6c 7a 40 70 61 70 61 79 |d by rsa|lz@papay|
|000001b0| 61 2e 62 62 6e 2e 63 6f | 6d 20 6f 6e 20 54 75 65 |a.bbn.co|m on Tue|
|000001c0| 20 4d 61 79 20 20 38 20 | 30 38 3a 35 35 3a 33 34 | May 8 |08:55:34|
|000001d0| 20 31 39 39 30 0a 50 41 | 54 48 3d 2f 62 69 6e 3a | 1990.PA|TH=/bin:|
|000001e0| 2f 75 73 72 2f 62 69 6e | 3a 2f 75 73 72 2f 75 63 |/usr/bin|:/usr/uc|
|000001f0| 62 20 3b 20 65 78 70 6f | 72 74 20 50 41 54 48 0a |b ; expo|rt PATH.|
|00000200| 69 66 20 74 65 73 74 20 | 2d 66 20 27 64 62 6d 73 |if test |-f 'dbms|
|00000210| 63 6c 69 2e 63 27 20 2d | 61 20 22 24 7b 31 7d 22 |cli.c' -|a "${1}"|
|00000220| 20 21 3d 20 22 2d 63 22 | 20 3b 20 74 68 65 6e 20 | != "-c"| ; then |
|00000230| 0a 20 20 65 63 68 6f 20 | 73 68 61 72 3a 20 57 69 |. echo |shar: Wi|
|00000240| 6c 6c 20 6e 6f 74 20 63 | 6c 6f 62 62 65 72 20 65 |ll not c|lobber e|
|00000250| 78 69 73 74 69 6e 67 20 | 66 69 6c 65 20 5c 22 27 |xisting |file \"'|
|00000260| 64 62 6d 73 63 6c 69 2e | 63 27 5c 22 0a 65 6c 73 |dbmscli.|c'\".els|
|00000270| 65 0a 65 63 68 6f 20 73 | 68 61 72 3a 20 45 78 74 |e.echo s|har: Ext|
|00000280| 72 61 63 74 69 6e 67 20 | 5c 22 27 64 62 6d 73 63 |racting |\"'dbmsc|
|00000290| 6c 69 2e 63 27 5c 22 20 | 5c 28 31 39 37 32 38 20 |li.c'\" |\(19728 |
|000002a0| 63 68 61 72 61 63 74 65 | 72 73 5c 29 0a 73 65 64 |characte|rs\).sed|
|000002b0| 20 22 73 2f 5e 58 2f 2f | 22 20 3e 27 64 62 6d 73 | "s/^X//|" >'dbms|
|000002c0| 63 6c 69 2e 63 27 20 3c | 3c 27 45 4e 44 5f 4f 46 |cli.c' <|<'END_OF|
|000002d0| 5f 46 49 4c 45 27 0a 58 | 0a 58 2f 2a 2a 2a 2a 2a |_FILE'.X|.X/*****|
|000002e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000002f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000300| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000310| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000320| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 0a 58 20 2a 20 20 |********|**.X * |
|00000330| 54 68 65 20 42 59 54 45 | 20 55 4e 49 58 20 42 65 |The BYTE| UNIX Be|
|00000340| 6e 63 68 6d 61 72 6b 73 | 20 2d 20 52 65 6c 65 61 |nchmarks| - Relea|
|00000350| 73 65 20 32 0a 58 20 2a | 20 20 20 20 20 20 20 20 |se 2.X *| |
|00000360| 20 20 4d 6f 64 75 6c 65 | 3a 20 64 62 6d 73 63 6c | Module|: dbmscl|
|00000370| 69 2e 63 20 20 20 53 49 | 44 3a 20 32 2e 34 20 34 |i.c SI|D: 2.4 4|
|00000380| 2f 31 37 2f 39 30 20 31 | 36 3a 34 35 3a 33 36 0a |/17/90 1|6:45:36.|
|00000390| 58 20 2a 20 20 20 20 20 | 20 20 20 20 20 0a 58 20 |X * | .X |
|000003a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000003b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000003c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000003d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000003e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 0a |********|*******.|
|000003f0| 58 20 2a 20 42 75 67 20 | 72 65 70 6f 72 74 73 2c |X * Bug |reports,|
|00000400| 20 70 61 74 63 68 65 73 | 2c 20 63 6f 6d 6d 65 6e | patches|, commen|
|00000410| 74 73 2c 20 73 75 67 67 | 65 73 74 69 6f 6e 73 20 |ts, sugg|estions |
|00000420| 73 68 6f 75 6c 64 20 62 | 65 20 73 65 6e 74 20 74 |should b|e sent t|
|00000430| 6f 3a 0a 58 20 2a 0a 58 | 20 2a 09 42 65 6e 20 53 |o:.X *.X| *.Ben S|
|00000440| 6d 69 74 68 20 6f 72 20 | 52 69 63 6b 20 47 72 65 |mith or |Rick Gre|
|00000450| 68 61 6e 20 61 74 20 42 | 59 54 45 20 4d 61 67 61 |han at B|YTE Maga|
|00000460| 7a 69 6e 65 0a 58 20 2a | 09 62 65 6e 73 6d 69 74 |zine.X *|.bensmit|
|00000470| 68 40 62 69 78 70 62 2e | 55 55 43 50 20 20 20 20 |h@bixpb.|UUCP |
|00000480| 72 69 63 6b 5f 67 40 62 | 69 78 70 62 2e 55 55 43 |rick_g@b|ixpb.UUC|
|00000490| 50 0a 58 20 2a 0a 58 20 | 2a 2a 2a 2a 2a 2a 2a 2a |P.X *.X |********|
|000004a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000004b0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000004c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000004d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000004e0| 2a 2a 2a 2a 2a 0a 58 20 | 2a 20 20 4d 6f 64 69 66 |*****.X |* Modif|
|000004f0| 69 63 61 74 69 6f 6e 20 | 4c 6f 67 3a 0a 58 20 2a |ication |Log:.X *|
|00000500| 0a 58 20 2a 09 37 2f 36 | 2f 38 39 20 2d 20 52 65 |.X *.7/6|/89 - Re|
|00000510| 77 6f 72 6b 65 64 20 6d | 65 73 73 61 67 69 6e 67 |worked m|essaging|
|00000520| 20 73 79 73 74 65 6d 20 | 73 6f 20 74 68 65 20 73 | system |so the s|
|00000530| 65 6d 61 70 68 6f 72 65 | 73 20 77 65 72 65 20 6e |emaphore|s were n|
|00000540| 6f 0a 58 20 2a 09 6c 6f | 6e 67 65 72 20 75 73 65 |o.X *.lo|nger use|
|00000550| 64 20 69 6e 20 61 6c 6c | 20 63 61 73 65 73 2e 20 |d in all| cases. |
|00000560| 20 53 65 6d 61 70 68 6f | 72 65 73 20 6e 6f 77 20 | Semapho|res now |
|00000570| 6f 6e 6c 79 20 63 6f 6e | 74 72 6f 6c 20 74 68 65 |only con|trol the|
|00000580| 20 61 70 70 65 6e 64 0a | 58 20 2a 09 6f 70 65 72 | append.|X *.oper|
|00000590| 61 74 69 6f 6e 2e 20 20 | 4d 65 73 73 61 67 65 73 |ation. |Messages|
|000005a0| 20 63 6f 6e 74 61 69 6e | 20 63 61 6c 6c 65 72 27 | contain| caller'|
|000005b0| 73 20 70 69 64 20 69 6e | 20 74 79 70 65 20 66 69 |s pid in| type fi|
|000005c0| 65 6c 64 2e 0a 58 20 2a | 09 54 68 65 20 73 65 6d |eld..X *|.The sem|
|000005d0| 61 70 68 6f 72 65 20 61 | 6c 73 6f 20 73 65 72 76 |aphore a|lso serv|
|000005e0| 65 73 20 74 6f 20 69 6e | 64 69 63 61 74 65 20 74 |es to in|dicate t|
|000005f0| 68 65 20 70 72 65 73 65 | 6e 63 65 20 6f 66 20 74 |he prese|nce of t|
|00000600| 68 65 20 73 65 72 76 65 | 72 2e 20 52 47 0a 58 20 |he serve|r. RG.X |
|00000610| 2a 09 20 0a 58 20 2a 09 | 37 2f 36 2f 38 39 20 2d |*. .X *.|7/6/89 -|
|00000620| 20 61 64 64 65 64 20 73 | 6f 6d 65 20 64 65 62 75 | added s|ome debu|
|00000630| 67 67 69 6e 67 20 6f 75 | 74 70 75 74 20 74 6f 20 |gging ou|tput to |
|00000640| 56 45 52 42 4f 53 45 0a | 58 20 2a 09 37 2f 39 2f |VERBOSE.|X *.7/9/|
|00000650| 38 39 20 2d 20 69 66 64 | 65 66 20 63 6f 64 65 20 |89 - ifd|ef code |
|00000660| 74 68 61 74 20 73 74 61 | 72 74 73 20 73 65 72 76 |that sta|rts serv|
|00000670| 65 72 20 66 72 6f 6d 20 | 63 6c 69 65 6e 74 20 2d |er from |client -|
|00000680| 20 70 72 6f 62 6c 65 6d | 73 2e 20 42 53 53 0a 58 | problem|s. BSS.X|
|00000690| 20 2a 09 37 2f 31 31 2f | 38 39 20 2d 20 41 64 64 | *.7/11/|89 - Add|
|000006a0| 65 64 20 73 65 6d 61 70 | 68 6f 72 65 20 74 6f 20 |ed semap|hore to |
|000006b0| 73 65 74 2e 20 20 4f 6e | 65 20 73 65 6d 61 70 68 |set. On|e semaph|
|000006c0| 6f 72 65 20 63 6f 6e 74 | 72 6f 6c 73 20 74 68 65 |ore cont|rols the|
|000006d0| 20 71 75 65 75 65 2c 0a | 58 20 2a 09 74 68 65 20 | queue,.|X *.the |
|000006e0| 6f 74 68 65 72 20 63 6f | 6e 74 72 6f 6c 73 20 74 |other co|ntrols t|
|000006f0| 68 65 20 61 70 70 65 6e | 64 20 6f 70 65 72 61 74 |he appen|d operat|
|00000700| 69 6f 6e 2e 20 52 47 0a | 58 20 2a 20 20 20 20 20 |ion. RG.|X * |
|00000710| 20 4e 65 77 20 63 6f 6d | 6d 61 6e 64 20 6c 69 6e | New com|mand lin|
|00000720| 65 20 66 6f 72 6d 61 74 | 3a 20 64 62 6d 73 65 72 |e format|: dbmser|
|00000730| 76 20 3c 66 69 6c 65 6e | 61 6d 65 3e 20 3c 71 75 |v <filen|ame> <qu|
|00000740| 65 75 65 20 73 69 7a 65 | 3e 0a 58 20 2a 2a 2a 2a |eue size|>.X ****|
|00000750| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000760| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000770| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000780| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00000790| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2f 0a 58 2f 2a 0a 58 |********|*/.X/*.X|
|000007a0| 20 2a 20 4d 75 6c 74 69 | 2d 75 73 65 72 20 44 42 | * Multi|-user DB|
|000007b0| 4d 53 20 73 69 6d 75 6c | 61 74 69 6f 6e 2e 0a 58 |MS simul|ation..X|
|000007c0| 20 2a 20 43 6c 69 65 6e | 74 73 0a 58 20 2a 20 44 | * Clien|ts.X * D|
|000007d0| 61 74 61 62 61 73 65 20 | 68 61 73 20 74 68 65 20 |atabase |has the |
|000007e0| 66 6f 72 6d 3a 0a 58 20 | 2a 20 49 49 49 49 4e 4e |form:.X |* IIIINN|
|000007f0| 4e 4e 4e 4e 4e 4e 4e 4e | 4e 4e 4e 4e 4e 4e 4e 4e |NNNNNNNN|NNNNNNNN|
|00000800| 4e 4e 41 41 41 41 41 41 | 41 41 41 41 41 41 41 41 |NNAAAAAA|AAAAAAAA|
|00000810| 41 41 41 41 41 41 41 41 | 41 41 41 41 41 41 41 41 |AAAAAAAA|AAAAAAAA|
|00000820| 41 41 41 41 41 41 41 41 | 41 41 50 50 50 50 50 50 |AAAAAAAA|AAPPPPPP|
|00000830| 50 50 50 50 0a 58 20 2a | 20 57 68 65 72 65 20 49 |PPPP.X *| Where I|
|00000840| 49 49 49 20 69 73 20 74 | 68 65 20 34 2d 64 69 67 |III is t|he 4-dig|
|00000850| 69 74 20 69 64 20 6e 75 | 6d 62 65 72 20 28 30 2d |it id nu|mber (0-|
|00000860| 70 61 64 64 65 64 29 0a | 58 20 2a 20 20 20 20 20 |padded).|X * |
|00000870| 20 20 4e 4e 2e 2e 2e 20 | 69 73 20 74 68 65 20 32 | NN... |is the 2|
|00000880| 30 2d 63 68 61 72 61 63 | 74 65 72 20 6e 61 6d 65 |0-charac|ter name|
|00000890| 0a 58 20 2a 20 20 20 20 | 20 20 20 41 41 2e 2e 2e |.X * | AA...|
|000008a0| 20 69 73 20 74 68 65 20 | 34 30 2d 63 68 61 72 61 | is the |40-chara|
|000008b0| 63 74 65 72 20 61 64 64 | 72 65 73 73 0a 58 20 2a |cter add|ress.X *|
|000008c0| 20 20 20 20 20 20 20 50 | 50 2e 2e 2e 20 69 73 20 | P|P... is |
|000008d0| 74 68 65 20 31 30 2d 63 | 68 61 72 61 63 74 65 72 |the 10-c|haracter|
|000008e0| 20 70 68 6f 6e 65 20 6e | 75 6d 62 65 72 0a 58 20 | phone n|umber.X |
|000008f0| 2a 20 52 65 63 6f 72 64 | 73 20 61 72 65 20 61 63 |* Record|s are ac|
|00000900| 63 65 73 73 65 64 20 62 | 79 20 49 44 20 6e 75 6d |cessed b|y ID num|
|00000910| 62 65 72 20 28 31 20 69 | 73 20 74 68 65 20 30 74 |ber (1 i|s the 0t|
|00000920| 68 20 72 65 63 6f 72 64 | 2c 20 32 20 69 73 20 31 |h record|, 2 is 1|
|00000930| 73 74 2e 2e 65 74 63 2e | 29 0a 58 20 2a 0a 58 20 |st..etc.|).X *.X |
|00000940| 2a 20 54 68 69 73 20 69 | 73 20 74 68 65 20 63 6c |* This i|s the cl|
|00000950| 69 65 6e 74 20 73 79 73 | 74 65 6d 2c 20 77 68 69 |ient sys|tem, whi|
|00000960| 63 68 20 79 6f 75 20 65 | 78 65 63 75 74 65 20 77 |ch you e|xecute w|
|00000970| 69 74 68 3a 0a 58 20 2a | 20 20 20 20 20 20 64 62 |ith:.X *| db|
|00000980| 6d 73 63 6c 69 20 6e 20 | 74 20 69 0a 58 20 2a 20 |mscli n |t i.X * |
|00000990| 77 68 65 72 65 3a 0a 58 | 20 2a 20 20 20 20 20 20 |where:.X| * |
|000009a0| 6e 20 3d 20 74 68 65 20 | 6e 75 6d 62 65 72 20 6f |n = the |number o|
|000009b0| 66 20 74 61 73 6b 73 20 | 74 6f 20 66 6f 72 6b 0a |f tasks |to fork.|
|000009c0| 58 20 2a 20 20 20 20 20 | 20 74 20 3d 20 69 73 20 |X * | t = is |
|000009d0| 74 68 65 20 73 6c 65 65 | 70 20 74 69 6d 65 20 69 |the slee|p time i|
|000009e0| 6e 20 73 65 63 6f 6e 64 | 73 20 65 61 63 68 20 74 |n second|s each t|
|000009f0| 61 73 6b 20 77 61 69 74 | 73 20 62 65 74 77 65 65 |ask wait|s betwee|
|00000a00| 6e 20 72 65 71 75 65 73 | 74 73 0a 58 20 2a 20 20 |n reques|ts.X * |
|00000a10| 20 20 20 20 69 20 3d 20 | 69 73 20 74 68 65 20 6e | i = |is the n|
|00000a20| 75 6d 62 65 72 20 6f 66 | 20 74 65 73 74 20 69 74 |umber of| test it|
|00000a30| 65 72 61 74 69 6f 6e 73 | 0a 58 20 2a 0a 58 20 2a |erations|.X *.X *|
|00000a40| 20 4e 4f 54 45 3a 20 54 | 68 69 73 20 76 65 72 73 | NOTE: T|his vers|
|00000a50| 69 6f 6e 20 61 73 73 75 | 6d 65 73 20 55 6e 69 78 |ion assu|mes Unix|
|00000a60| 20 56 20 63 6f 6d 70 61 | 74 69 62 69 6c 69 74 79 | V compa|tibility|
|00000a70| 2e 0a 58 20 2a 2f 0a 58 | 63 68 61 72 20 69 64 5b |..X */.X|char id[|
|00000a80| 5d 20 3d 20 22 40 28 23 | 29 20 40 28 23 29 64 62 |] = "@(#|) @(#)db|
|00000a90| 6d 73 63 6c 69 2e 63 3a | 31 2e 35 20 2d 2d 20 37 |mscli.c:|1.5 -- 7|
|00000aa0| 2f 31 30 2f 38 39 20 31 | 38 3a 35 34 3a 35 37 22 |/10/89 1|8:54:57"|
|00000ab0| 3b 0a 58 0a 58 23 69 6e | 63 6c 75 64 65 20 3c 73 |;.X.X#in|clude <s|
|00000ac0| 74 64 69 6f 2e 68 3e 0a | 58 23 69 6e 63 6c 75 64 |tdio.h>.|X#includ|
|00000ad0| 65 20 3c 63 74 79 70 65 | 2e 68 3e 0a 58 23 69 6e |e <ctype|.h>.X#in|
|00000ae0| 63 6c 75 64 65 20 3c 65 | 72 72 6e 6f 2e 68 3e 0a |clude <e|rrno.h>.|
|00000af0| 58 23 69 6e 63 6c 75 64 | 65 20 3c 73 79 73 2f 74 |X#includ|e <sys/t|
|00000b00| 79 70 65 73 2e 68 3e 0a | 58 23 69 6e 63 6c 75 64 |ypes.h>.|X#includ|
|00000b10| 65 20 3c 73 79 73 2f 73 | 69 67 6e 61 6c 2e 68 3e |e <sys/s|ignal.h>|
|00000b20| 0a 58 23 69 6e 63 6c 75 | 64 65 20 3c 73 79 73 2f |.X#inclu|de <sys/|
|00000b30| 69 70 63 2e 68 3e 0a 58 | 23 69 6e 63 6c 75 64 65 |ipc.h>.X|#include|
|00000b40| 20 3c 73 79 73 2f 73 65 | 6d 2e 68 3e 0a 58 23 69 | <sys/se|m.h>.X#i|
|00000b50| 6e 63 6c 75 64 65 20 3c | 73 79 73 2f 6d 73 67 2e |nclude <|sys/msg.|
|00000b60| 68 3e 0a 58 23 69 6e 63 | 6c 75 64 65 20 3c 73 79 |h>.X#inc|lude <sy|
|00000b70| 73 2f 70 61 72 61 6d 2e | 68 3e 0a 58 0a 58 23 69 |s/param.|h>.X.X#i|
|00000b80| 66 64 65 66 20 56 45 52 | 42 4f 53 45 0a 58 23 69 |fdef VER|BOSE.X#i|
|00000b90| 6e 63 6c 75 64 65 20 3c | 73 79 73 2f 74 69 6d 65 |nclude <|sys/time|
|00000ba0| 73 2e 68 3e 0a 58 23 64 | 65 66 69 6e 65 20 44 45 |s.h>.X#d|efine DE|
|00000bb0| 42 55 47 09 2f 2a 20 72 | 65 6d 6f 76 65 20 74 68 |BUG./* r|emove th|
|00000bc0| 69 73 20 61 66 74 65 72 | 20 64 65 62 75 67 67 69 |is after| debuggi|
|00000bd0| 6e 67 20 2a 2f 0a 58 23 | 65 6e 64 69 66 0a 58 0a |ng */.X#|endif.X.|
|00000be0| 58 23 64 65 66 69 6e 65 | 20 45 52 52 4f 52 09 28 |X#define| ERROR.(|
|00000bf0| 2d 31 29 0a 58 2f 2a 0a | 58 2a 2a 20 52 65 63 6f |-1).X/*.|X** Reco|
|00000c00| 72 64 20 64 65 66 69 6e | 69 74 69 6f 6e 73 2e 0a |rd defin|itions..|
|00000c10| 58 2a 2f 0a 58 0a 58 23 | 64 65 66 69 6e 65 20 49 |X*/.X.X#|define I|
|00000c20| 44 4c 45 4e 20 34 0a 58 | 23 64 65 66 69 6e 65 20 |DLEN 4.X|#define |
|00000c30| 4e 41 4d 45 4c 45 4e 20 | 32 30 0a 58 23 64 65 66 |NAMELEN |20.X#def|
|00000c40| 69 6e 65 20 41 44 44 52 | 4c 45 4e 20 34 30 0a 58 |ine ADDR|LEN 40.X|
|00000c50| 23 64 65 66 69 6e 65 20 | 50 48 4f 4e 4c 45 4e 20 |#define |PHONLEN |
|00000c60| 31 30 0a 58 23 64 65 66 | 69 6e 65 20 52 45 43 4c |10.X#def|ine RECL|
|00000c70| 45 4e 20 20 37 34 09 2f | 2a 20 53 75 6d 20 6f 66 |EN 74./|* Sum of|
|00000c80| 20 74 68 65 20 61 62 6f | 76 65 2e 20 2a 2f 0a 58 | the abo|ve. */.X|
|00000c90| 0a 58 2f 2a 0a 58 2a 2a | 20 51 75 65 75 65 20 61 |.X/*.X**| Queue a|
|00000ca0| 6e 64 20 73 65 6d 61 70 | 68 6f 72 65 20 6e 61 6d |nd semap|hore nam|
|00000cb0| 65 73 2e 0a 58 2a 2f 0a | 58 23 64 65 66 69 6e 65 |es..X*/.|X#define|
|00000cc0| 09 52 51 55 45 55 45 09 | 22 52 45 41 44 22 09 09 |.RQUEUE.|"READ"..|
|00000cd0| 2f 2a 20 52 65 61 64 20 | 71 75 65 75 65 20 2a 2f |/* Read |queue */|
|00000ce0| 0a 58 23 64 65 66 69 6e | 65 20 57 51 55 45 55 45 |.X#defin|e WQUEUE|
|00000cf0| 09 22 57 52 49 54 22 09 | 09 2f 2a 20 57 72 69 74 |."WRIT".|./* Writ|
|00000d00| 65 20 71 75 65 75 65 20 | 2a 2f 0a 58 23 64 65 66 |e queue |*/.X#def|
|00000d10| 69 6e 65 20 53 45 4d 41 | 09 22 53 45 4d 41 22 09 |ine SEMA|."SEMA".|
|00000d20| 09 2f 2a 20 53 65 6d 61 | 70 68 6f 72 65 20 6e 61 |./* Sema|phore na|
|00000d30| 6d 65 20 2a 2f 0a 58 0a | 58 2f 2a 0a 58 2a 2a 20 |me */.X.|X/*.X** |
|00000d40| 4d 65 73 73 61 67 65 20 | 74 79 70 65 73 2e 0a 58 |Message |types..X|
|00000d50| 2a 2f 0a 58 23 64 65 66 | 69 6e 65 20 52 45 41 44 |*/.X#def|ine READ|
|00000d60| 52 45 51 09 31 09 09 2f | 2a 20 52 65 61 64 20 61 |REQ.1../|* Read a|
|00000d70| 20 72 65 63 6f 72 64 20 | 2a 2f 0a 58 23 64 65 66 | record |*/.X#def|
|00000d80| 69 6e 65 20 57 52 49 54 | 45 52 45 51 20 32 09 09 |ine WRIT|EREQ 2..|
|00000d90| 2f 2a 20 57 72 69 74 65 | 20 61 20 72 65 63 6f 72 |/* Write| a recor|
|00000da0| 64 20 2a 2f 0a 58 23 64 | 65 66 69 6e 65 20 41 44 |d */.X#d|efine AD|
|00000db0| 44 52 45 51 20 33 09 09 | 2f 2a 20 41 64 64 20 61 |DREQ 3..|/* Add a|
|00000dc0| 20 6e 65 77 20 72 65 63 | 6f 72 64 20 2a 2f 0a 58 | new rec|ord */.X|
|00000dd0| 23 64 65 66 69 6e 65 20 | 47 45 54 4c 52 45 51 20 |#define |GETLREQ |
|00000de0| 34 09 09 2f 2a 20 47 65 | 74 20 6c 61 72 67 65 73 |4../* Ge|t larges|
|00000df0| 74 20 72 65 63 6f 72 64 | 20 6e 75 6d 62 65 72 20 |t record| number |
|00000e00| 2a 2f 0a 58 23 64 65 66 | 69 6e 65 20 52 45 53 55 |*/.X#def|ine RESU|
|00000e10| 4c 54 52 45 51 20 31 30 | 09 09 2f 2a 20 52 65 63 |LTREQ 10|../* Rec|
|00000e20| 6f 72 64 20 63 6f 6e 74 | 61 69 6e 73 20 72 65 73 |ord cont|ains res|
|00000e30| 75 6c 74 73 20 66 69 67 | 75 72 65 73 20 2a 2f 0a |ults fig|ures */.|
|00000e40| 58 09 09 09 09 2f 2a 20 | 52 65 73 75 6c 74 73 20 |X..../* |Results |
|00000e50| 61 72 65 20 73 74 6f 72 | 65 64 20 61 73 3a 0a 58 |are stor|ed as:.X|
|00000e60| 09 09 09 09 2a 20 20 6e | 6e 6e 6e 6e 6e 6e 6e 6e |....* n|nnnnnnnn|
|00000e70| 6e 62 6d 6d 6d 6d 6d 6d | 6d 6d 6d 6d 62 0a 58 09 |nbmmmmmm|mmmmb.X.|
|00000e80| 09 09 09 2a 20 20 20 6e | 20 3d 20 74 6f 74 61 6c |...* n| = total|
|00000e90| 20 74 69 6d 65 0a 58 09 | 09 09 09 2a 20 20 20 6d | time.X.|...* m|
|00000ea0| 20 3d 20 6e 75 6d 62 65 | 72 20 6f 66 20 65 72 72 | = numbe|r of err|
|00000eb0| 6f 72 73 0a 58 09 09 09 | 09 2a 20 20 20 62 20 3d |ors.X...|.* b =|
|00000ec0| 20 62 6c 61 6e 6b 0a 58 | 09 09 09 09 2a 2f 0a 58 | blank.X|....*/.X|
|00000ed0| 23 64 65 66 69 6e 65 20 | 44 49 45 52 45 51 20 39 |#define |DIEREQ 9|
|00000ee0| 39 09 09 2f 2a 20 4f 72 | 64 65 72 73 20 73 65 72 |9../* Or|ders ser|
|00000ef0| 76 65 72 20 74 6f 20 74 | 65 72 6d 69 6e 61 74 65 |ver to t|erminate|
|00000f00| 2e 20 2a 2f 0a 58 0a 58 | 0a 58 2f 2a 0a 58 2a 2a |. */.X.X|.X/*.X**|
|00000f10| 20 52 65 74 75 72 6e 20 | 63 6f 64 65 73 20 66 72 | Return |codes fr|
|00000f20| 6f 6d 20 74 68 65 20 73 | 65 72 76 65 72 2e 0a 58 |om the s|erver..X|
|00000f30| 2a 2f 0a 58 23 64 65 66 | 69 6e 65 20 41 4f 4b 20 |*/.X#def|ine AOK |
|00000f40| 31 09 09 09 2f 2a 20 52 | 65 71 75 65 73 74 20 6d |1.../* R|equest m|
|00000f50| 65 74 20 6f 6b 20 2a 2f | 0a 58 23 64 65 66 69 6e |et ok */|.X#defin|
|00000f60| 65 20 44 45 52 52 5f 52 | 4e 46 20 32 09 09 2f 2a |e DERR_R|NF 2../*|
|00000f70| 20 52 65 63 6f 72 64 20 | 6e 6f 74 20 66 6f 75 6e | Record |not foun|
|00000f80| 64 20 2a 2f 0a 58 23 64 | 65 66 69 6e 65 20 44 45 |d */.X#d|efine DE|
|00000f90| 52 52 5f 52 41 45 20 33 | 09 09 2f 2a 20 52 65 63 |RR_RAE 3|../* Rec|
|00000fa0| 6f 72 64 20 61 6c 72 65 | 61 64 79 20 65 78 69 73 |ord alre|ady exis|
|00000fb0| 74 73 20 2a 2f 0a 58 23 | 64 65 66 69 6e 65 20 44 |ts */.X#|define D|
|00000fc0| 45 52 52 5f 57 52 44 20 | 34 09 09 2f 2a 20 55 6e |ERR_WRD |4../* Un|
|00000fd0| 65 78 70 6c 61 69 6e 61 | 62 6c 65 20 65 72 72 6f |explaina|ble erro|
|00000fe0| 72 20 2a 2f 0a 58 23 64 | 65 66 69 6e 65 20 44 45 |r */.X#d|efine DE|
|00000ff0| 52 52 5f 55 4e 4b 20 39 | 09 09 2f 2a 20 55 6e 6b |RR_UNK 9|../* Unk|
|00001000| 6e 6f 77 6e 20 72 65 71 | 75 65 73 74 20 74 79 70 |nown req|uest typ|
|00001010| 65 20 2a 2f 0a 58 0a 58 | 2f 2a 0a 58 2a 2a 20 45 |e */.X.X|/*.X** E|
|00001020| 72 72 6f 72 20 63 6f 64 | 65 73 2e 0a 58 2a 2f 0a |rror cod|es..X*/.|
|00001030| 58 23 64 65 66 69 6e 65 | 20 51 45 52 52 20 31 09 |X#define| QERR 1.|
|00001040| 09 09 2f 2a 20 51 75 65 | 75 65 20 65 72 72 6f 72 |../* Que|ue error|
|00001050| 20 2a 2f 0a 58 23 64 65 | 66 69 6e 65 20 53 45 4d | */.X#de|fine SEM|
|00001060| 45 52 52 20 32 09 09 2f | 2a 20 53 65 6d 61 70 68 |ERR 2../|* Semaph|
|00001070| 6f 72 65 20 65 72 72 6f | 72 20 2a 2f 0a 58 0a 58 |ore erro|r */.X.X|
|00001080| 2f 2a 0a 58 2a 2a 20 53 | 74 72 75 63 74 75 72 65 |/*.X** S|tructure|
|00001090| 73 2e 0a 58 2a 2f 0a 58 | 0a 58 74 79 70 65 64 65 |s..X*/.X|.Xtypede|
|000010a0| 66 20 73 74 72 75 63 74 | 20 7b 0a 58 09 63 68 61 |f struct| {.X.cha|
|000010b0| 72 20 69 64 5b 49 44 4c | 45 4e 5d 3b 0a 58 09 63 |r id[IDL|EN];.X.c|
|000010c0| 68 61 72 20 6e 61 6d 65 | 5b 4e 41 4d 45 4c 45 4e |har name|[NAMELEN|
|000010d0| 5d 3b 0a 58 09 63 68 61 | 72 20 61 64 64 72 65 73 |];.X.cha|r addres|
|000010e0| 73 5b 41 44 44 52 4c 45 | 4e 5d 3b 0a 58 09 63 68 |s[ADDRLE|N];.X.ch|
|000010f0| 61 72 20 70 68 6f 6e 65 | 5b 50 48 4f 4e 4c 45 4e |ar phone|[PHONLEN|
|00001100| 5d 3b 0a 58 7d 20 64 62 | 72 65 63 3b 0a 58 0a 58 |];.X} db|rec;.X.X|
|00001110| 74 79 70 65 64 65 66 20 | 73 74 72 75 63 74 20 7b |typedef |struct {|
|00001120| 0a 58 09 69 6e 74 20 72 | 65 71 75 65 73 74 3b 09 |.X.int r|equest;.|
|00001130| 09 2f 2a 20 52 65 71 75 | 65 73 74 20 74 79 70 65 |./* Requ|est type|
|00001140| 20 61 6e 64 20 72 65 73 | 70 6f 6e 73 65 20 63 6f | and res|ponse co|
|00001150| 64 65 20 2a 2f 0a 58 09 | 63 68 61 72 20 72 65 63 |de */.X.|char rec|
|00001160| 64 61 74 5b 52 45 43 4c | 45 4e 5d 3b 09 2f 2a 20 |dat[RECL|EN];./* |
|00001170| 44 42 4d 53 20 72 65 63 | 6f 72 64 20 64 61 74 61 |DBMS rec|ord data|
|00001180| 20 2a 2f 0a 58 7d 20 6d | 73 67 64 61 74 61 3b 0a | */.X} m|sgdata;.|
|00001190| 58 0a 58 74 79 70 65 64 | 65 66 20 73 74 72 75 63 |X.Xtyped|ef struc|
|000011a0| 74 20 7b 0a 58 09 6c 6f | 6e 67 20 74 79 70 65 3b |t {.X.lo|ng type;|
|000011b0| 09 09 2f 2a 20 48 6f 6c | 64 27 73 20 63 61 6c 6c |../* Hol|d's call|
|000011c0| 65 72 27 73 20 70 69 64 | 20 2a 2f 0a 58 09 6d 73 |er's pid| */.X.ms|
|000011d0| 67 64 61 74 61 20 64 61 | 74 61 3b 09 09 2f 2a 20 |gdata da|ta;../* |
|000011e0| 50 6f 69 6e 74 65 72 20 | 74 6f 20 72 65 71 75 65 |Pointer |to reque|
|000011f0| 73 74 20 61 6e 64 20 64 | 61 74 61 20 2a 2f 0a 58 |st and d|ata */.X|
|00001200| 7d 20 61 6d 65 73 73 3b | 0a 58 0a 58 73 74 72 75 |} amess;|.X.Xstru|
|00001210| 63 74 20 74 69 63 6b 65 | 72 20 7b 20 75 6e 73 69 |ct ticke|r { unsi|
|00001220| 67 6e 65 64 20 6c 6f 6e | 67 20 72 65 61 6c 2c 0a |gned lon|g real,.|
|00001230| 58 09 09 20 20 20 20 20 | 20 20 73 79 73 74 65 6d |X.. | system|
|00001240| 2c 0a 58 09 09 20 20 20 | 20 20 20 20 63 70 75 3b |,.X.. | cpu;|
|00001250| 20 7d 3b 0a 58 0a 58 2f | 2a 2a 2a 2a 2a 2a 2a 2a | };.X.X/|********|
|00001260| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001270| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001280| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001290| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 0a 58 09 20 20 23 |********|**.X. #|
|000012a0| 23 23 23 20 20 20 23 20 | 20 20 20 20 20 20 20 23 |### # | #|
|000012b0| 23 23 23 20 20 20 23 23 | 23 23 23 20 20 20 20 20 |### ##|### |
|000012c0| 23 23 20 20 20 20 23 20 | 20 20 20 20 20 20 20 23 |## # | #|
|000012d0| 23 23 23 0a 58 09 20 23 | 20 20 20 20 23 20 20 23 |###.X. #| # #|
|000012e0| 20 20 20 20 20 20 20 23 | 20 20 20 20 23 20 20 23 | #| # #|
|000012f0| 20 20 20 20 23 20 20 20 | 23 20 20 23 20 20 20 23 | # |# # #|
|00001300| 20 20 20 20 20 20 20 23 | 0a 58 09 20 23 20 20 20 | #|.X. # |
|00001310| 20 20 20 20 23 20 20 20 | 20 20 20 20 23 20 20 20 | # | # |
|00001320| 20 23 20 20 23 23 23 23 | 23 20 20 20 23 20 20 20 | # ####|# # |
|00001330| 20 23 20 20 23 20 20 20 | 20 20 20 20 20 23 23 23 | # # | ###|
|00001340| 23 0a 58 09 20 23 20 20 | 23 23 23 20 20 23 20 20 |#.X. # |### # |
|00001350| 20 20 20 20 20 23 20 20 | 20 20 23 20 20 23 20 20 | # | # # |
|00001360| 20 20 23 20 20 23 23 23 | 23 23 23 20 20 23 20 20 | # ###|### # |
|00001370| 20 20 20 20 20 20 20 20 | 20 20 23 0a 58 09 20 23 | | #.X. #|
|00001380| 20 20 20 20 23 20 20 23 | 20 20 20 20 20 20 20 23 | # #| #|
|00001390| 20 20 20 20 23 20 20 23 | 20 20 20 20 23 20 20 23 | # #| # #|
|000013a0| 20 20 20 20 23 20 20 23 | 20 20 20 20 20 20 20 23 | # #| #|
|000013b0| 20 20 20 20 23 0a 58 09 | 20 20 23 23 23 23 20 20 | #.X.| #### |
|000013c0| 20 23 23 23 23 23 23 20 | 20 20 23 23 23 23 20 20 | ###### | #### |
|000013d0| 20 23 23 23 23 23 20 20 | 20 23 20 20 20 20 23 20 | ##### | # # |
|000013e0| 20 23 23 23 23 23 23 20 | 20 20 23 23 23 23 0a 58 | ###### | ####.X|
|000013f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001400| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001410| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001420| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001430| 2a 2a 2a 2f 0a 58 2f 2a | 0a 58 2a 2a 20 53 74 72 |***/.X/*|.X** Str|
|00001440| 75 63 74 75 72 65 20 69 | 6e 73 74 61 6e 63 65 73 |ucture i|nstances|
|00001450| 2e 0a 58 2a 2f 0a 58 64 | 62 72 65 63 20 6d 79 72 |..X*/.Xd|brec myr|
|00001460| 65 63 3b 09 09 2f 2a 20 | 44 61 74 61 20 72 65 63 |ec;../* |Data rec|
|00001470| 6f 72 64 20 2a 2f 0a 58 | 61 6d 65 73 73 20 6d 79 |ord */.X|amess my|
|00001480| 72 65 71 3b 09 09 2f 2a | 20 43 6c 69 65 6e 74 20 |req;../*| Client |
|00001490| 72 65 71 75 65 73 74 20 | 2a 2f 0a 58 61 6d 65 73 |request |*/.Xames|
|000014a0| 73 20 68 69 73 72 65 73 | 70 3b 09 09 2f 2a 20 52 |s hisres|p;../* R|
|000014b0| 65 73 70 6f 6e 73 65 20 | 66 72 6f 6d 20 73 65 72 |esponse |from ser|
|000014c0| 76 65 72 20 2a 2f 0a 58 | 0a 58 73 74 72 75 63 74 |ver */.X|.Xstruct|
|000014d0| 20 73 65 6d 62 75 66 20 | 75 6e 6c 6f 63 6b 71 20 | sembuf |unlockq |
|000014e0| 3d 20 7b 20 30 20 2c 20 | 31 20 2c 20 53 45 4d 5f |= { 0 , |1 , SEM_|
|000014f0| 55 4e 44 4f 20 7d 3b 0a | 58 73 74 72 75 63 74 20 |UNDO };.|Xstruct |
|00001500| 73 65 6d 62 75 66 20 6c | 6f 63 6b 71 20 3d 20 7b |sembuf l|ockq = {|
|00001510| 20 30 20 2c 20 2d 31 20 | 2c 20 53 45 4d 5f 55 4e | 0 , -1 |, SEM_UN|
|00001520| 44 4f 20 7d 3b 0a 58 73 | 74 72 75 63 74 20 73 65 |DO };.Xs|truct se|
|00001530| 6d 62 75 66 20 75 6e 6c | 6f 63 6b 61 20 3d 20 7b |mbuf unl|ocka = {|
|00001540| 20 30 2c 20 31 2c 20 53 | 45 4d 5f 55 4e 44 4f 20 | 0, 1, S|EM_UNDO |
|00001550| 7d 3b 0a 58 73 74 72 75 | 63 74 20 73 65 6d 62 75 |};.Xstru|ct sembu|
|00001560| 66 20 6c 6f 63 6b 61 20 | 3d 20 7b 20 30 2c 20 2d |f locka |= { 0, -|
|00001570| 31 2c 20 53 45 4d 5f 55 | 4e 44 4f 20 7d 3b 0a 58 |1, SEM_U|NDO };.X|
|00001580| 0a 58 23 69 66 64 65 66 | 20 56 45 52 42 4f 53 45 |.X#ifdef| VERBOSE|
|00001590| 0a 58 73 74 72 75 63 74 | 20 74 6d 73 20 74 62 75 |.Xstruct| tms tbu|
|000015a0| 66 66 3b 09 2f 2a 20 46 | 6f 72 20 74 69 6d 65 73 |ff;./* F|or times|
|000015b0| 20 73 79 73 74 65 6d 20 | 63 61 6c 6c 20 2a 2f 0a | system |call */.|
|000015c0| 58 73 74 72 75 63 74 20 | 74 69 63 6b 65 72 20 73 |Xstruct |ticker s|
|000015d0| 74 6f 70 77 61 74 63 68 | 20 3d 20 7b 30 4c 2c 20 |topwatch| = {0L, |
|000015e0| 30 4c 2c 20 30 4c 7d 3b | 0a 58 73 74 72 75 63 74 |0L, 0L};|.Xstruct|
|000015f0| 20 74 69 63 6b 65 72 20 | 74 6f 74 74 69 6d 65 20 | ticker |tottime |
|00001600| 3d 20 7b 30 4c 2c 20 30 | 4c 2c 20 30 4c 7d 3b 0a |= {0L, 0|L, 0L};.|
|00001610| 58 23 65 6e 64 69 66 0a | 58 0a 58 69 6e 74 20 6e |X#endif.|X.Xint n|
|00001620| 74 61 73 6b 73 20 3d 20 | 31 3b 09 09 09 2f 2a 20 |tasks = |1;.../* |
|00001630| 4e 75 6d 62 65 72 20 6f | 66 20 74 61 73 6b 73 20 |Number o|f tasks |
|00001640| 2a 2f 0a 58 69 6e 74 20 | 73 6c 65 65 70 74 69 6d |*/.Xint |sleeptim|
|00001650| 65 20 3d 20 30 3b 09 09 | 2f 2a 20 54 69 6d 65 20 |e = 0;..|/* Time |
|00001660| 74 6f 20 73 6c 65 65 70 | 20 2a 2f 0a 58 69 6e 74 |to sleep| */.Xint|
|00001670| 20 69 74 65 72 73 20 3d | 20 31 30 30 30 3b 09 09 | iters =| 1000;..|
|00001680| 2f 2a 20 69 74 65 72 61 | 74 69 6f 6e 73 20 2a 2f |/* itera|tions */|
|00001690| 0a 58 69 6e 74 20 72 65 | 61 64 71 3b 09 09 09 2f |.Xint re|adq;.../|
|000016a0| 2a 20 49 44 20 6f 66 20 | 72 65 61 64 20 71 75 65 |* ID of |read que|
|000016b0| 75 65 20 2a 2f 0a 58 69 | 6e 74 20 77 72 69 74 65 |ue */.Xi|nt write|
|000016c0| 71 3b 09 09 09 2f 2a 20 | 49 44 20 6f 66 20 77 72 |q;.../* |ID of wr|
|000016d0| 69 74 65 20 71 75 65 75 | 65 20 2a 2f 0a 58 69 6e |ite queu|e */.Xin|
|000016e0| 74 20 71 73 65 6d 61 3b | 09 09 09 2f 2a 20 49 44 |t qsema;|.../* ID|
|000016f0| 20 6f 66 20 73 65 6d 61 | 70 68 6f 72 65 20 66 6f | of sema|phore fo|
|00001700| 72 20 61 70 70 65 6e 64 | 20 2a 2f 0a 58 75 6e 73 |r append| */.Xuns|
|00001710| 69 67 6e 65 64 20 6c 6f | 6e 67 20 65 72 72 63 6e |igned lo|ng errcn|
|00001720| 74 3b 09 09 2f 2a 20 45 | 72 72 6f 72 20 63 6f 75 |t;../* E|rror cou|
|00001730| 6e 74 20 2a 2f 0a 58 69 | 6e 74 20 77 61 69 74 76 |nt */.Xi|nt waitv|
|00001740| 61 6c 3b 09 09 09 2f 2a | 20 53 74 61 74 75 73 20 |al;.../*| Status |
|00001750| 72 65 74 75 72 6e 20 6c | 6f 63 61 74 69 6f 6e 20 |return l|ocation |
|00001760| 66 6f 72 20 77 61 69 74 | 28 29 20 2a 2f 0a 58 69 |for wait|() */.Xi|
|00001770| 6e 74 20 72 69 64 3b 09 | 09 09 2f 2a 20 49 44 20 |nt rid;.|../* ID |
|00001780| 63 68 6f 73 65 6e 20 61 | 74 20 72 61 6e 64 6f 6d |chosen a|t random|
|00001790| 20 2a 2f 0a 58 69 6e 74 | 20 6e 65 65 64 5f 73 65 | */.Xint| need_se|
|000017a0| 72 76 65 72 3b 20 09 09 | 09 2f 2a 20 66 6c 61 67 |rver; ..|./* flag|
|000017b0| 20 66 6f 72 20 73 65 72 | 76 65 72 20 2a 2f 0a 58 | for ser|ver */.X|
|000017c0| 6b 65 79 5f 74 20 73 65 | 6d 61 5f 6b 65 79 3b 0a |key_t se|ma_key;.|
|000017d0| 58 0a 58 2f 2a 0a 58 2a | 2a 20 20 45 78 74 65 72 |X.X/*.X*|* Exter|
|000017e0| 6e 73 20 61 6e 64 20 66 | 75 6e 63 74 69 6f 6e 20 |ns and f|unction |
|000017f0| 64 65 66 73 2e 0a 58 2a | 2f 0a 58 6c 6f 6e 67 20 |defs..X*|/.Xlong |
|00001800| 72 61 6e 64 6e 75 6d 28 | 29 2c 20 72 61 6e 64 77 |randnum(|), randw|
|00001810| 63 28 29 3b 0a 58 6b 65 | 79 5f 74 20 6d 61 6b 65 |c();.Xke|y_t make|
|00001820| 79 28 29 3b 0a 58 0a 58 | 2f 2a 2a 2a 2a 2a 2a 2a |y();.X.X|/*******|
|00001830| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001840| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001850| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001860| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001870| 2a 2a 2a 0a 58 09 09 20 | 23 20 20 20 20 23 20 20 |***.X.. |# # |
|00001880| 20 20 23 23 20 20 20 20 | 20 20 20 23 20 20 20 20 | ## | # |
|00001890| 23 20 20 20 20 23 0a 58 | 09 09 20 23 23 20 20 23 |# #.X|.. ## #|
|000018a0| 23 20 20 20 23 20 20 23 | 20 20 20 20 20 20 23 20 |# # #| # |
|000018b0| 20 20 20 23 23 20 20 20 | 23 0a 58 09 09 20 23 20 | ## |#.X.. # |
|000018c0| 23 23 20 23 20 20 23 20 | 20 20 20 23 20 20 20 20 |## # # | # |
|000018d0| 20 23 20 20 20 20 23 20 | 23 20 20 23 0a 58 09 09 | # # |# #.X..|
|000018e0| 20 23 20 20 20 20 23 20 | 20 23 23 23 23 23 23 20 | # # | ###### |
|000018f0| 20 20 20 20 23 20 20 20 | 20 23 20 20 23 20 23 0a | # | # # #.|
|00001900| 58 09 09 20 23 20 20 20 | 20 23 20 20 23 20 20 20 |X.. # | # # |
|00001910| 20 23 20 20 20 20 20 23 | 20 20 20 20 23 20 20 20 | # #| # |
|00001920| 23 23 0a 58 09 09 20 23 | 20 20 20 20 23 20 20 23 |##.X.. #| # #|
|00001930| 20 20 20 20 23 20 20 20 | 20 20 23 20 20 20 20 23 | # | # #|
|00001940| 20 20 20 20 23 0a 58 2a | 2a 2a 2a 2a 2a 2a 2a 2a | #.X*|********|
|00001950| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001960| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001970| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001980| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00001990| 2a 2a 2a 2f 0a 58 6d 61 | 69 6e 28 61 72 67 63 2c |***/.Xma|in(argc,|
|000019a0| 61 72 67 76 2c 65 6e 76 | 70 29 0a 58 69 6e 74 20 |argv,env|p).Xint |
|000019b0| 61 72 67 63 3b 0a 58 63 | 68 61 72 20 2a 61 72 67 |argc;.Xc|har *arg|
|000019c0| 76 5b 5d 3b 0a 58 63 68 | 61 72 20 2a 2a 65 6e 76 |v[];.Xch|ar **env|
|000019d0| 70 3b 0a 58 7b 0a 58 0a | 58 09 69 6e 74 20 69 2c |p;.X{.X.|X.int i,|
|000019e0| 6a 2c 63 65 72 72 3b 09 | 09 2f 2a 20 4c 6f 6f 70 |j,cerr;.|./* Loop|
|000019f0| 20 76 61 72 69 61 62 6c | 65 73 20 2a 2f 0a 58 0a | variabl|es */.X.|
|00001a00| 58 09 2f 2a 0a 58 09 2a | 20 4d 61 6b 65 20 73 75 |X./*.X.*| Make su|
|00001a10| 72 65 20 77 65 20 68 61 | 76 65 20 70 72 6f 70 65 |re we ha|ve prope|
|00001a20| 72 20 69 6e 70 75 74 2e | 0a 58 09 2a 2f 0a 58 09 |r input.|.X.*/.X.|
|00001a30| 69 66 28 61 72 67 63 3c | 32 29 0a 58 09 7b 0a 58 |if(argc<|2).X.{.X|
|00001a40| 09 66 70 72 69 6e 74 66 | 28 73 74 64 65 72 72 2c |.fprintf|(stderr,|
|00001a50| 0a 58 09 20 20 22 75 73 | 61 67 65 3a 20 25 73 20 |.X. "us|age: %s |
|00001a60| 64 61 74 61 66 69 6c 65 | 20 5b 6e 74 61 73 6b 73 |datafile| [ntasks|
|00001a70| 5d 20 5b 73 6c 65 65 70 | 74 69 6d 65 5d 20 5b 69 |] [sleep|time] [i|
|00001a80| 74 65 72 5d 5c 6e 22 2c | 61 72 67 76 5b 30 5d 29 |ter]\n",|argv[0])|
|00001a90| 3b 0a 58 09 65 78 69 74 | 28 31 29 3b 0a 58 09 7d |;.X.exit|(1);.X.}|
|00001aa0| 0a 58 0a 58 09 2f 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X.X./**|********|
|00001ab0| 2a 2a 2a 20 70 72 6f 63 | 65 73 73 20 63 6f 6d 6d |*** proc|ess comm|
|00001ac0| 61 6e 64 20 6c 69 6e 65 | 20 70 61 72 61 6d 65 74 |and line| paramet|
|00001ad0| 65 72 73 20 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |ers ****|********|
|00001ae0| 2f 0a 58 09 2f 2a 0a 58 | 09 2a 20 47 65 74 20 6e |/.X./*.X|.* Get n|
|00001af0| 75 6d 62 65 72 20 6f 66 | 20 74 61 73 6b 73 20 61 |umber of| tasks a|
|00001b00| 6e 64 20 73 6c 65 65 70 | 74 69 6d 65 2e 0a 58 09 |nd sleep|time..X.|
|00001b10| 2a 2f 0a 58 09 69 66 28 | 61 72 67 63 3d 3d 35 29 |*/.X.if(|argc==5)|
|00001b20| 0a 58 09 09 7b 0a 58 09 | 09 69 66 28 28 69 74 65 |.X..{.X.|.if((ite|
|00001b30| 72 73 3d 61 74 6f 69 28 | 61 72 67 76 5b 34 5d 29 |rs=atoi(|argv[4])|
|00001b40| 29 3c 3d 30 29 0a 58 0a | 58 09 09 09 7b 0a 58 09 |)<=0).X.|X...{.X.|
|00001b50| 09 09 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |..fprint|f(stderr|
|00001b60| 2c 22 2a 2a 49 6c 6c 65 | 67 61 6c 20 69 74 65 72 |,"**Ille|gal iter|
|00001b70| 5c 6e 22 29 3b 0a 58 09 | 09 09 65 78 69 74 28 31 |\n");.X.|..exit(1|
|00001b80| 29 3b 0a 58 09 09 09 7d | 0a 58 09 09 7d 0a 58 0a |);.X...}|.X..}.X.|
|00001b90| 58 09 69 66 28 61 72 67 | 63 20 3e 3d 34 29 0a 58 |X.if(arg|c >=4).X|
|00001ba0| 09 7b 0a 58 09 09 69 66 | 28 28 73 6c 65 65 70 74 |.{.X..if|((sleept|
|00001bb0| 69 6d 65 3d 61 74 6f 69 | 28 61 72 67 76 5b 33 5d |ime=atoi|(argv[3]|
|00001bc0| 29 29 3c 30 29 0a 58 09 | 09 09 7b 0a 58 09 09 09 |))<0).X.|..{.X...|
|00001bd0| 66 70 72 69 6e 74 66 28 | 73 74 64 65 72 72 2c 22 |fprintf(|stderr,"|
|00001be0| 2a 2a 49 6c 6c 65 67 61 | 6c 20 73 6c 65 65 70 20 |**Illega|l sleep |
|00001bf0| 74 69 6d 65 5c 6e 22 29 | 3b 0a 58 09 09 09 65 78 |time\n")|;.X...ex|
|00001c00| 69 74 28 31 29 3b 0a 58 | 09 09 09 7d 0a 58 09 7d |it(1);.X|...}.X.}|
|00001c10| 0a 58 0a 58 09 69 66 28 | 61 72 67 63 20 3e 3d 33 |.X.X.if(|argc >=3|
|00001c20| 29 0a 58 09 09 7b 0a 58 | 09 09 69 66 28 28 6e 74 |).X..{.X|..if((nt|
|00001c30| 61 73 6b 73 3d 61 74 6f | 69 28 61 72 67 76 5b 32 |asks=ato|i(argv[2|
|00001c40| 5d 29 29 3c 3d 30 29 0a | 58 09 09 09 7b 0a 58 09 |]))<=0).|X...{.X.|
|00001c50| 09 09 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |..fprint|f(stderr|
|00001c60| 2c 22 2a 2a 49 6c 6c 65 | 67 61 6c 20 6e 74 61 73 |,"**Ille|gal ntas|
|00001c70| 6b 73 5c 6e 22 29 3b 0a | 58 09 09 09 65 78 69 74 |ks\n");.|X...exit|
|00001c80| 28 31 29 3b 0a 58 09 09 | 09 7d 0a 58 09 09 7d 0a |(1);.X..|.}.X..}.|
|00001c90| 58 09 0a 58 09 2f 2a 20 | 61 72 67 76 5b 31 5d 20 |X..X./* |argv[1] |
|00001ca0| 69 73 20 74 68 65 20 64 | 61 74 61 20 66 69 6c 65 |is the d|ata file|
|00001cb0| 20 6e 61 6d 65 20 2a 2f | 0a 58 0a 58 09 2f 2a 0a | name */|.X.X./*.|
|00001cc0| 58 09 2a 20 4d 61 6b 65 | 20 73 75 72 65 20 74 68 |X.* Make| sure th|
|00001cd0| 65 20 73 65 72 76 65 72 | 20 69 73 20 61 63 74 69 |e server| is acti|
|00001ce0| 76 65 2e 0a 58 09 2a 2f | 0a 58 0a 58 20 20 20 20 |ve..X.*/|.X.X |
|00001cf0| 20 20 20 20 73 65 6d 61 | 5f 6b 65 79 3d 6d 61 6b | sema|_key=mak|
|00001d00| 65 79 28 53 45 4d 41 29 | 3b 0a 58 09 2f 2a 20 74 |ey(SEMA)|;.X./* t|
|00001d10| 65 73 74 20 74 6f 20 73 | 65 65 20 69 66 20 74 68 |est to s|ee if th|
|00001d20| 65 20 73 65 72 76 65 72 | 20 69 73 20 61 6c 72 65 |e server| is alre|
|00001d30| 61 64 79 20 72 75 6e 6e | 69 6e 67 20 2a 2f 0a 58 |ady runn|ing */.X|
|00001d40| 09 69 66 28 28 71 73 65 | 6d 61 3d 73 65 6d 67 65 |.if((qse|ma=semge|
|00001d50| 74 28 73 65 6d 61 5f 6b | 65 79 2c 32 2c 30 29 29 |t(sema_k|ey,2,0))|
|00001d60| 3d 3d 45 52 52 4f 52 29 | 0a 58 09 09 7b 0a 58 09 |==ERROR)|.X..{.X.|
|00001d70| 09 69 6e 74 20 62 61 64 | 5f 6e 65 77 73 28 29 3b |.int bad|_news();|
|00001d80| 0a 58 0a 58 09 09 2f 2a | 20 66 6f 72 6b 20 6f 66 |.X.X../*| fork of|
|00001d90| 66 20 66 6f 72 20 61 6e | 20 65 78 65 63 20 74 6f |f for an| exec to|
|00001da0| 20 74 68 65 20 73 65 72 | 76 65 72 20 2a 2f 0a 58 | the ser|ver */.X|
|00001db0| 09 09 69 66 28 21 28 6a | 3d 66 6f 72 6b 28 29 29 |..if(!(j|=fork())|
|00001dc0| 29 20 2f 2a 20 74 68 69 | 73 20 69 73 20 74 68 65 |) /* thi|s is the|
|00001dd0| 20 63 68 69 6c 64 20 61 | 73 70 69 72 69 6e 67 20 | child a|spiring |
|00001de0| 74 6f 20 62 65 20 2a 2f | 0a 58 09 09 09 7b 09 2f |to be */|.X...{./|
|00001df0| 2a 20 61 20 73 65 72 76 | 65 72 20 2a 2f 0a 58 23 |* a serv|er */.X#|
|00001e00| 69 66 64 65 66 20 44 45 | 42 55 47 0a 58 09 09 09 |ifdef DE|BUG.X...|
|00001e10| 70 72 69 6e 74 66 28 22 | 49 20 61 6d 20 74 68 65 |printf("|I am the|
|00001e20| 20 63 68 69 6c 64 20 28 | 25 64 29 20 61 73 70 69 | child (|%d) aspi|
|00001e30| 72 69 6e 67 20 74 6f 20 | 62 65 20 61 20 73 65 72 |ring to |be a ser|
|00001e40| 76 65 72 5c 6e 6e 22 2c | 0a 58 09 09 09 20 20 20 |ver\nn",|.X... |
|00001e50| 67 65 74 70 69 64 28 29 | 29 3b 0a 58 23 65 6e 64 |getpid()|);.X#end|
|00001e60| 69 66 0a 58 09 09 09 61 | 72 67 76 5b 30 5d 3d 22 |if.X...a|rgv[0]="|
|00001e70| 64 62 6d 73 65 72 76 22 | 3b 0a 58 09 09 09 65 78 |dbmserv"|;.X...ex|
|00001e80| 65 63 76 70 28 61 72 67 | 76 5b 30 5d 2c 61 72 67 |ecvp(arg|v[0],arg|
|00001e90| 76 29 3b 0a 58 09 09 09 | 2f 2a 20 69 66 20 69 74 |v);.X...|/* if it|
|00001ea0| 20 67 65 74 73 20 74 68 | 69 73 20 66 61 72 2c 20 | gets th|is far, |
|00001eb0| 65 78 65 63 20 6d 75 73 | 74 20 68 61 76 65 20 66 |exec mus|t have f|
|00001ec0| 61 69 6c 65 64 20 2a 2f | 0a 58 09 09 09 70 65 72 |ailed */|.X...per|
|00001ed0| 72 6f 72 28 22 65 78 65 | 63 20 6f 66 20 64 62 6d |ror("exe|c of dbm|
|00001ee0| 73 65 72 76 20 66 61 69 | 6c 65 64 22 29 3b 0a 58 |serv fai|led");.X|
|00001ef0| 09 09 09 65 78 69 74 28 | 31 29 3b 0a 58 09 09 09 |...exit(|1);.X...|
|00001f00| 7d 0a 58 09 09 2f 2a 20 | 62 65 74 74 65 72 20 6e |}.X../* |better n|
|00001f10| 6f 74 20 64 6f 20 61 6e | 79 74 68 69 6e 67 20 75 |ot do an|ything u|
|00001f20| 6e 74 69 6c 20 74 68 65 | 20 73 65 72 76 65 72 0a |ntil the| server.|
|00001f30| 58 09 09 20 2a 20 69 73 | 20 72 75 6e 6e 69 6e 67 |X.. * is| running|
|00001f40| 2e 20 4a 75 73 74 20 77 | 61 69 74 20 66 6f 72 20 |. Just w|ait for |
|00001f50| 74 68 65 20 73 65 72 76 | 65 72 2c 0a 58 09 09 20 |the serv|er,.X.. |
|00001f60| 2a 20 69 6e 20 74 68 69 | 73 20 63 61 73 65 20 61 |* in thi|s case a|
|00001f70| 20 63 68 69 6c 64 20 70 | 72 6f 63 65 73 73 2c 20 | child p|rocess, |
|00001f80| 67 69 76 65 73 20 75 73 | 0a 58 09 09 20 2a 20 73 |gives us|.X.. * s|
|00001f90| 69 67 6e 61 6c 20 74 6f | 20 70 72 6f 63 65 65 64 |ignal to| proceed|
|00001fa0| 2e 0a 58 09 09 20 2a 2f | 0a 58 09 09 73 69 67 6e |..X.. */|.X..sign|
|00001fb0| 61 6c 28 53 49 47 41 4c | 52 4d 2c 62 61 64 5f 6e |al(SIGAL|RM,bad_n|
|00001fc0| 65 77 73 29 3b 0a 58 09 | 09 61 6c 61 72 6d 28 33 |ews);.X.|.alarm(3|
|00001fd0| 30 29 3b 20 2f 2a 20 67 | 69 76 65 20 74 68 65 20 |0); /* g|ive the |
|00001fe0| 73 65 72 76 65 72 20 33 | 30 20 73 65 63 6f 6e 64 |server 3|0 second|
|00001ff0| 73 20 74 6f 20 67 65 74 | 20 69 74 20 67 6f 69 6e |s to get| it goin|
|00002000| 67 20 2a 2f 0a 58 09 09 | 77 68 69 6c 65 20 28 28 |g */.X..|while ((|
|00002010| 71 73 65 6d 61 3d 73 65 | 6d 67 65 74 28 73 65 6d |qsema=se|mget(sem|
|00002020| 61 5f 6b 65 79 2c 31 2c | 30 29 29 3d 3d 45 52 52 |a_key,1,|0))==ERR|
|00002030| 4f 52 29 0a 58 09 09 09 | 7b 0a 58 23 69 66 64 65 |OR).X...|{.X#ifde|
|00002040| 66 20 44 45 42 55 47 0a | 58 09 09 09 70 72 69 6e |f DEBUG.|X...prin|
|00002050| 74 66 28 22 77 61 69 74 | 69 6e 67 20 66 6f 72 20 |tf("wait|ing for |
|00002060| 73 65 72 76 65 72 5c 6e | 22 29 3b 0a 58 23 65 6e |server\n|");.X#en|
|00002070| 64 69 66 0a 58 09 09 09 | 73 6c 65 65 70 28 31 29 |dif.X...|sleep(1)|
|00002080| 3b 0a 58 09 09 09 7d 0a | 58 0a 58 20 20 20 20 20 |;.X...}.|X.X |
|00002090| 20 20 20 20 20 20 20 20 | 20 20 20 7d 09 0a 58 0a | | }..X.|
|000020a0| 58 09 2f 2a 20 67 65 74 | 20 74 68 65 20 6d 65 73 |X./* get| the mes|
|000020b0| 73 61 67 65 20 71 75 65 | 75 65 20 69 64 73 20 2a |sage que|ue ids *|
|000020c0| 2f 0a 58 09 69 66 28 28 | 72 65 61 64 71 3d 6d 73 |/.X.if((|readq=ms|
|000020d0| 67 67 65 74 28 6d 61 6b | 65 79 28 52 51 55 45 55 |gget(mak|ey(RQUEU|
|000020e0| 45 29 2c 30 29 29 3d 3d | 45 52 52 4f 52 29 0a 58 |E),0))==|ERROR).X|
|000020f0| 09 09 7b 0a 58 09 09 71 | 65 72 72 6f 72 28 22 43 |..{.X..q|error("C|
|00002100| 6c 69 65 6e 74 20 67 65 | 74 74 69 6e 67 20 72 65 |lient ge|tting re|
|00002110| 61 64 20 71 75 65 75 65 | 20 69 64 22 29 3b 0a 58 |ad queue| id");.X|
|00002120| 09 09 65 78 69 74 28 31 | 29 3b 0a 58 09 09 7d 0a |..exit(1|);.X..}.|
|00002130| 58 23 69 66 64 65 66 20 | 44 45 42 55 47 0a 58 09 |X#ifdef |DEBUG.X.|
|00002140| 65 6c 73 65 0a 58 09 09 | 70 72 69 6e 74 66 28 22 |else.X..|printf("|
|00002150| 72 65 61 64 20 71 75 65 | 75 65 20 69 64 20 69 73 |read que|ue id is|
|00002160| 20 25 64 5c 6e 22 2c 72 | 65 61 64 71 29 3b 0a 58 | %d\n",r|eadq);.X|
|00002170| 23 65 6e 64 69 66 0a 58 | 09 69 66 28 28 77 72 69 |#endif.X|.if((wri|
|00002180| 74 65 71 3d 6d 73 67 67 | 65 74 28 6d 61 6b 65 79 |teq=msgg|et(makey|
|00002190| 28 57 51 55 45 55 45 29 | 2c 30 29 29 3d 3d 45 52 |(WQUEUE)|,0))==ER|
|000021a0| 52 4f 52 29 0a 58 09 09 | 7b 0a 58 09 09 71 65 72 |ROR).X..|{.X..qer|
|000021b0| 72 6f 72 28 22 43 6c 69 | 65 6e 74 20 67 65 74 74 |ror("Cli|ent gett|
|000021c0| 69 6e 67 20 77 72 69 74 | 65 20 71 75 65 75 65 20 |ing writ|e queue |
|000021d0| 69 64 22 29 3b 0a 58 09 | 09 65 78 69 74 28 31 29 |id");.X.|.exit(1)|
|000021e0| 3b 0a 58 09 09 7d 0a 58 | 23 69 66 64 65 66 20 44 |;.X..}.X|#ifdef D|
|000021f0| 45 42 55 47 0a 58 09 65 | 6c 73 65 0a 58 09 09 70 |EBUG.X.e|lse.X..p|
|00002200| 72 69 6e 74 66 28 22 77 | 72 69 74 65 20 71 75 65 |rintf("w|rite que|
|00002210| 75 65 20 69 64 20 69 73 | 20 25 64 5c 6e 22 2c 72 |ue id is| %d\n",r|
|00002220| 65 61 64 71 29 3b 0a 58 | 23 65 6e 64 69 66 0a 58 |eadq);.X|#endif.X|
|00002230| 09 2f 2a 0a 58 09 2a 20 | 4e 6f 77 20 66 6f 72 6b |./*.X.* |Now fork|
|00002240| 20 6f 66 66 20 61 20 62 | 75 6e 63 68 20 6f 66 20 | off a b|unch of |
|00002250| 70 72 6f 63 65 73 73 65 | 73 2c 20 67 69 76 69 6e |processe|s, givin|
|00002260| 67 20 65 61 63 68 0a 58 | 09 2a 20 6f 6e 65 20 61 |g each.X|.* one a|
|00002270| 20 64 69 66 66 65 72 65 | 6e 74 20 73 74 61 72 74 | differe|nt start|
|00002280| 69 6e 67 20 73 65 65 64 | 2e 0a 58 09 2a 20 28 69 |ing seed|..X.* (i|
|00002290| 66 20 66 6f 72 6b 28 29 | 20 72 65 74 75 72 6e 73 |f fork()| returns|
|000022a0| 20 7a 65 72 6f 2c 20 74 | 68 69 73 20 69 73 20 61 | zero, t|his is a|
|000022b0| 6c 72 65 61 64 79 20 74 | 68 65 20 63 68 69 6c 64 |lready t|he child|
|000022c0| 2e 0a 58 09 2a 2f 0a 58 | 09 69 3d 6e 74 61 73 6b |..X.*/.X|.i=ntask|
|000022d0| 73 3b 0a 58 09 64 6f 20 | 7b 0a 58 09 09 6a 3d 66 |s;.X.do |{.X..j=f|
|000022e0| 6f 72 6b 28 29 3b 0a 58 | 09 7d 20 77 68 69 6c 65 |ork();.X|.} while|
|000022f0| 28 28 6a 21 3d 30 29 26 | 26 28 2d 2d 69 21 3d 30 |((j!=0)&|&(--i!=0|
|00002300| 29 29 3b 0a 58 0a 58 09 | 2f 2a 0a 58 09 2a 20 41 |));.X.X.|/*.X.* A|
|00002310| 6d 20 49 20 61 20 63 68 | 69 6c 64 20 6f 72 20 61 |m I a ch|ild or a|
|00002320| 20 66 61 74 68 65 72 3f | 0a 58 09 2a 2f 0a 58 09 | father?|.X.*/.X.|
|00002330| 69 66 28 20 6a 3d 3d 30 | 29 0a 58 09 7b 0a 58 23 |if( j==0|).X.{.X#|
|00002340| 69 66 64 65 66 20 44 45 | 42 55 47 0a 58 09 70 72 |ifdef DE|BUG.X.pr|
|00002350| 69 6e 74 66 28 22 49 20 | 61 6d 20 63 68 69 6c 64 |intf("I |am child|
|00002360| 20 63 6c 69 65 6e 74 20 | 25 64 5c 6e 22 2c 67 65 | client |%d\n",ge|
|00002370| 74 70 69 64 28 29 29 3b | 0a 58 23 65 6e 64 69 66 |tpid());|.X#endif|
|00002380| 0a 58 09 09 2f 2a 20 2a | 2a 2a 43 68 69 6c 64 20 |.X../* *|**Child |
|00002390| 70 72 6f 63 65 73 73 2a | 2a 2a 20 2a 2f 0a 58 09 |process*|** */.X.|
|000023a0| 09 69 66 28 28 63 65 72 | 72 3d 64 6f 74 65 73 74 |.if((cer|r=dotest|
|000023b0| 73 28 69 2c 69 74 65 72 | 73 29 29 21 3d 30 29 0a |s(i,iter|s))!=0).|
|000023c0| 58 09 09 7b 0a 58 09 09 | 66 70 72 69 6e 74 66 28 |X..{.X..|fprintf(|
|000023d0| 73 74 64 65 72 72 2c 22 | 2a 2a 43 68 69 6c 64 20 |stderr,"|**Child |
|000023e0| 65 72 72 6f 72 3a 5c 6e | 22 29 3b 0a 58 09 09 73 |error:\n|");.X..s|
|000023f0| 77 69 74 63 68 28 63 65 | 72 72 29 0a 58 09 09 20 |witch(ce|rr).X.. |
|00002400| 20 20 7b 0a 58 09 09 20 | 20 20 63 61 73 65 28 51 | {.X.. | case(Q|
|00002410| 45 52 52 29 3a 0a 58 09 | 09 09 71 65 72 72 6f 72 |ERR):.X.|..qerror|
|00002420| 28 22 20 20 20 20 45 72 | 72 6f 72 20 69 73 22 29 |(" Er|ror is")|
|00002430| 3b 0a 58 09 09 09 62 72 | 65 61 6b 3b 0a 58 09 09 |;.X...br|eak;.X..|
|00002440| 20 20 20 63 61 73 65 28 | 53 45 4d 45 52 52 29 3a | case(|SEMERR):|
|00002450| 0a 58 09 09 09 73 65 72 | 72 6f 72 28 22 20 20 20 |.X...ser|ror(" |
|00002460| 20 45 72 72 6f 72 20 69 | 73 22 29 3b 0a 58 09 09 | Error i|s");.X..|
|00002470| 09 62 72 65 61 6b 3b 0a | 58 09 09 20 20 20 64 65 |.break;.|X.. de|
|00002480| 66 61 75 6c 74 3a 0a 58 | 09 09 09 70 65 72 72 6f |fault:.X|...perro|
|00002490| 72 28 22 20 20 20 20 45 | 72 72 6f 72 20 69 73 22 |r(" E|rror is"|
|000024a0| 29 3b 0a 58 09 09 09 62 | 72 65 61 6b 3b 0a 58 09 |);.X...b|reak;.X.|
|000024b0| 09 20 20 20 7d 0a 58 09 | 09 65 78 69 74 28 31 29 |. }.X.|.exit(1)|
|000024c0| 3b 09 2f 2a 20 49 66 20 | 61 6e 79 20 65 72 72 6f |;./* If |any erro|
|000024d0| 72 20 2d 20 6a 75 73 74 | 20 64 69 65 2e 20 2a 2f |r - just| die. */|
|000024e0| 0a 58 09 09 7d 0a 58 09 | 09 65 6c 73 65 0a 58 09 |.X..}.X.|.else.X.|
|000024f0| 09 7b 0a 58 09 09 63 6c | 65 61 72 72 65 63 28 6d |.{.X..cl|earrec(m|
|00002500| 79 72 65 71 2e 64 61 74 | 61 2e 72 65 63 64 61 74 |yreq.dat|a.recdat|
|00002510| 29 3b 0a 58 23 69 66 64 | 65 66 20 56 45 52 42 4f |);.X#ifd|ef VERBO|
|00002520| 53 45 0a 58 09 09 2f 2a | 0a 58 09 09 2a 2a 20 4c |SE.X../*|.X..** L|
|00002530| 6f 67 20 6e 65 74 20 65 | 6c 61 70 73 65 64 20 74 |og net e|lapsed t|
|00002540| 69 6d 65 2e 0a 58 09 09 | 2a 2f 0a 58 09 09 20 20 |ime..X..|*/.X.. |
|00002550| 20 73 70 72 69 6e 74 66 | 28 6d 79 72 65 71 2e 64 | sprintf|(myreq.d|
|00002560| 61 74 61 2e 72 65 63 64 | 61 74 2c 22 25 23 30 31 |ata.recd|at,"%#01|
|00002570| 30 6c 64 20 25 23 30 31 | 30 6c 64 20 25 23 30 31 |0ld %#01|0ld %#01|
|00002580| 30 6c 64 20 25 23 30 31 | 30 64 20 22 2c 0a 58 09 |0ld %#01|0d ",.X.|
|00002590| 09 09 74 6f 74 74 69 6d | 65 2e 63 70 75 2c 74 6f |..tottim|e.cpu,to|
|000025a0| 74 74 69 6d 65 2e 73 79 | 73 74 65 6d 2c 74 6f 74 |ttime.sy|stem,tot|
|000025b0| 74 69 6d 65 2e 72 65 61 | 6c 2c 65 72 72 63 6e 74 |time.rea|l,errcnt|
|000025c0| 29 3b 0a 58 23 65 6c 73 | 65 0a 58 09 09 20 20 20 |);.X#els|e.X.. |
|000025d0| 73 70 72 69 6e 74 66 28 | 6d 79 72 65 71 2e 64 61 |sprintf(|myreq.da|
|000025e0| 74 61 2e 72 65 63 64 61 | 74 2c 22 25 23 30 31 30 |ta.recda|t,"%#010|
|000025f0| 64 20 22 2c 20 65 72 72 | 63 6e 74 29 3b 0a 58 23 |d ", err|cnt);.X#|
|00002600| 65 6e 64 69 66 0a 58 09 | 09 20 20 20 6d 79 72 65 |endif.X.|. myre|
|00002610| 71 2e 74 79 70 65 3d 52 | 45 53 55 4c 54 52 45 51 |q.type=R|ESULTREQ|
|00002620| 3b 0a 58 09 09 20 20 20 | 69 66 28 73 65 6d 6f 70 |;.X.. |if(semop|
|00002630| 28 71 73 65 6d 61 2c 26 | 6c 6f 63 6b 71 2c 31 29 |(qsema,&|lockq,1)|
|00002640| 20 3d 3d 20 45 52 52 4f | 52 29 20 65 78 69 74 28 | == ERRO|R) exit(|
|00002650| 30 29 3b 0a 58 09 09 20 | 20 20 69 66 28 6d 73 67 |0);.X.. | if(msg|
|00002660| 73 6e 64 28 77 72 69 74 | 65 71 2c 26 6d 79 72 65 |snd(writ|eq,&myre|
|00002670| 71 2c 52 45 43 4c 45 4e | 2c 30 29 3c 30 29 0a 58 |q,RECLEN|,0)<0).X|
|00002680| 09 09 09 65 78 69 74 28 | 30 29 3b 0a 58 09 09 20 |...exit(|0);.X.. |
|00002690| 20 20 69 66 28 73 65 6d | 6f 70 28 71 73 65 6d 61 | if(sem|op(qsema|
|000026a0| 2c 26 75 6e 6c 6f 63 6b | 71 2c 31 29 20 3d 3d 20 |,&unlock|q,1) == |
|000026b0| 45 52 52 4f 52 29 20 65 | 78 69 74 28 30 29 3b 0a |ERROR) e|xit(0);.|
|000026c0| 58 0a 58 09 09 65 78 69 | 74 28 30 29 3b 0a 58 09 |X.X..exi|t(0);.X.|
|000026d0| 09 7d 0a 58 09 7d 0a 58 | 09 65 6c 73 65 0a 58 09 |.}.X.}.X|.else.X.|
|000026e0| 7b 0a 58 23 69 66 64 65 | 66 20 44 45 42 55 47 0a |{.X#ifde|f DEBUG.|
|000026f0| 58 09 70 72 69 6e 74 66 | 28 22 49 20 61 6d 20 70 |X.printf|("I am p|
|00002700| 61 72 65 6e 74 20 63 6c | 69 65 6e 74 20 25 64 5c |arent cl|ient %d\|
|00002710| 6e 22 2c 67 65 74 70 69 | 64 28 29 29 3b 0a 58 23 |n",getpi|d());.X#|
|00002720| 65 6e 64 69 66 0a 58 09 | 09 2f 2a 20 2a 2a 2a 46 |endif.X.|./* ***F|
|00002730| 61 74 68 65 72 20 70 72 | 6f 63 65 73 73 2a 2a 2a |ather pr|ocess***|
|00002740| 20 2a 2f 0a 58 09 09 2f | 2a 0a 58 09 09 2a 2a 20 | */.X../|*.X..** |
|00002750| 57 61 69 74 20 66 6f 72 | 20 74 68 65 20 63 68 69 |Wait for| the chi|
|00002760| 6c 64 72 65 6e 20 74 6f | 20 63 6f 6d 70 6c 65 74 |ldren to| complet|
|00002770| 65 2e 0a 58 09 09 2a 2f | 0a 58 09 09 69 3d 6e 74 |e..X..*/|.X..i=nt|
|00002780| 61 73 6b 73 3b 0a 58 09 | 09 77 68 69 6c 65 28 69 |asks;.X.|.while(i|
|00002790| 2d 2d 29 20 77 61 69 74 | 28 26 77 61 69 74 76 61 |--) wait|(&waitva|
|000027a0| 6c 29 3b 0a 58 0a 58 09 | 09 2f 2a 0a 58 09 09 2a |l);.X.X.|./*.X..*|
|000027b0| 2a 20 4e 6f 77 20 74 65 | 6c 6c 20 74 68 65 20 73 |* Now te|ll the s|
|000027c0| 65 72 76 65 72 20 74 6f | 20 67 6f 20 61 77 61 79 |erver to| go away|
|000027d0| 2e 0a 58 09 09 2a 2a 20 | 4e 6f 74 65 20 74 68 61 |..X..** |Note tha|
|000027e0| 74 20 69 66 20 77 65 20 | 68 61 76 65 20 74 72 6f |t if we |have tro|
|000027f0| 75 62 6c 65 20 28 66 6f | 72 20 73 6f 6d 65 20 72 |uble (fo|r some r|
|00002800| 65 61 73 6f 6e 29 0a 58 | 09 09 2a 2a 20 67 65 74 |eason).X|..** get|
|00002810| 74 69 6e 67 20 74 68 65 | 20 73 65 6d 61 70 68 6f |ting the| semapho|
|00002820| 72 65 2e 2e 2e 77 65 20 | 6a 75 73 74 20 62 61 72 |re...we |just bar|
|00002830| 72 65 6c 20 6f 6e 20 74 | 68 72 6f 75 67 68 2e 0a |rel on t|hrough..|
|00002840| 58 09 09 2a 2f 0a 58 09 | 09 6d 79 72 65 71 2e 64 |X..*/.X.|.myreq.d|
|00002850| 61 74 61 2e 72 65 71 75 | 65 73 74 3d 44 49 45 52 |ata.requ|est=DIER|
|00002860| 45 51 3b 0a 58 09 09 6d | 79 72 65 71 2e 74 79 70 |EQ;.X..m|yreq.typ|
|00002870| 65 3d 31 4c 3b 20 2f 2a | 20 50 69 64 20 6e 6f 74 |e=1L; /*| Pid not|
|00002880| 20 6e 65 65 64 65 64 20 | 2a 2f 0a 58 09 09 69 66 | needed |*/.X..if|
|00002890| 28 6d 73 67 73 6e 64 28 | 77 72 69 74 65 71 2c 26 |(msgsnd(|writeq,&|
|000028a0| 6d 79 72 65 71 2c 52 45 | 43 4c 45 4e 2c 30 29 3c |myreq,RE|CLEN,0)<|
|000028b0| 30 29 0a 58 09 09 09 71 | 65 72 72 6f 72 28 22 2a |0).X...q|error("*|
|000028c0| 2a 4d 65 73 73 61 67 65 | 20 71 75 65 75 65 20 65 |*Message| queue e|
|000028d0| 72 72 6f 72 20 64 75 72 | 69 6e 67 20 74 65 72 6d |rror dur|ing term|
|000028e0| 69 6e 61 74 69 6f 6e 5c | 6e 22 29 3b 0a 58 09 09 |ination\|n");.X..|
|000028f0| 65 78 69 74 28 30 29 3b | 0a 58 09 7d 0a 58 7d 0a |exit(0);|.X.}.X}.|
|00002900| 58 0a 58 2f 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X.X/****|********|
|00002910| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002920| 2a 2a 2a 2a 2a 20 64 6f | 74 65 73 74 73 20 2a 2a |***** do|tests **|
|00002930| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00002940| 2a 2a 2a 2a 2a 2a 2a 0a | 58 2a 2a 20 45 78 65 63 |*******.|X** Exec|
|00002950| 75 74 65 20 74 65 73 74 | 73 2e 0a 58 2a 2a 20 49 |ute test|s..X** I|
|00002960| 6e 70 75 74 20 6e 75 6d | 62 65 72 20 61 63 74 73 |nput num|ber acts|
|00002970| 20 61 73 20 73 65 65 64 | 20 66 6f 72 20 72 61 6e | as seed| for ran|
|00002980| 64 6f 6d 20 6e 75 6d 62 | 65 72 20 67 65 6e 65 72 |dom numb|er gener|
|00002990| 61 74 6f 72 2e 0a 58 2a | 2a 20 52 65 74 75 72 6e |ator..X*|* Return|
|000029a0| 73 20 2d 31 20 69 66 20 | 66 61 69 6c 75 72 65 2e |s -1 if |failure.|
|000029b0| 0a 58 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X******|********|
|000029c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000029d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000029e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000029f0| 2a 2a 2a 2a 2a 2a 2f 0a | 58 69 6e 74 0a 58 64 6f |******/.|Xint.Xdo|
|00002a00| 74 65 73 74 73 28 73 73 | 65 65 64 2c 69 74 65 72 |tests(ss|eed,iter|
|00002a10| 29 0a 58 69 6e 74 20 73 | 73 65 65 64 3b 0a 58 69 |).Xint s|seed;.Xi|
|00002a20| 6e 74 20 69 74 65 72 3b | 09 09 09 2f 2a 20 4e 75 |nt iter;|.../* Nu|
|00002a30| 6d 62 65 72 20 6f 66 20 | 69 74 65 72 61 74 69 6f |mber of |iteratio|
|00002a40| 6e 73 20 2a 2f 0a 58 7b | 0a 58 0a 58 09 69 6e 74 |ns */.X{|.X.X.int|
|00002a50| 20 69 2c 6a 3b 09 09 2f | 2a 20 4c 6f 6f 70 20 76 | i,j;../|* Loop v|
|00002a60| 61 72 69 61 62 6c 65 73 | 20 2a 2f 0a 58 09 69 6e |ariables| */.X.in|
|00002a70| 74 20 6d 61 78 69 64 3b | 09 09 2f 2a 20 4d 61 78 |t maxid;|../* Max|
|00002a80| 20 49 44 20 63 75 72 72 | 65 6e 74 6c 79 20 69 6e | ID curr|ently in|
|00002a90| 20 64 61 74 61 62 61 73 | 65 20 2a 2f 0a 58 09 6c | databas|e */.X.l|
|00002aa0| 6f 6e 67 20 6d 79 70 69 | 64 3b 09 09 2f 2a 20 47 |ong mypi|d;../* G|
|00002ab0| 65 74 20 6d 79 20 70 72 | 6f 63 65 73 73 20 69 64 |et my pr|ocess id|
|00002ac0| 20 2a 2f 0a 58 0a 58 09 | 2f 2a 0a 58 09 2a 2a 20 | */.X.X.|/*.X.** |
|00002ad0| 49 6e 69 74 69 61 6c 69 | 7a 65 20 74 68 65 20 72 |Initiali|ze the r|
|00002ae0| 61 6e 64 6f 6d 20 6e 75 | 6d 62 65 72 20 73 65 65 |andom nu|mber see|
|00002af0| 64 2e 0a 58 09 2a 2f 0a | 58 09 72 61 6e 64 6e 75 |d..X.*/.|X.randnu|
|00002b00| 6d 28 28 75 6e 73 69 67 | 6e 65 64 20 6c 6f 6e 67 |m((unsig|ned long|
|00002b10| 29 73 73 65 65 64 29 3b | 0a 58 0a 58 09 2f 2a 0a |)sseed);|.X.X./*.|
|00002b20| 58 09 2a 2a 20 49 6e 69 | 74 69 61 6c 69 7a 65 20 |X.** Ini|tialize |
|00002b30| 65 72 72 6f 72 20 63 6f | 75 6e 74 20 61 6e 64 20 |error co|unt and |
|00002b40| 74 69 6d 65 72 20 73 74 | 75 66 66 2e 0a 58 09 2a |timer st|uff..X.*|
|00002b50| 2f 0a 58 09 65 72 72 63 | 6e 74 3d 30 3b 0a 58 0a |/.X.errc|nt=0;.X.|
|00002b60| 58 09 2f 2a 0a 58 09 2a | 2a 20 49 20 6e 65 65 64 |X./*.X.*|* I need|
|00002b70| 20 74 6f 20 6b 6e 6f 77 | 20 6d 79 20 70 72 6f 63 | to know| my proc|
|00002b80| 65 73 73 20 69 64 2e 0a | 58 09 2a 2f 0a 58 09 6d |ess id..|X.*/.X.m|
|00002b90| 79 70 69 64 20 3d 20 28 | 6c 6f 6e 67 29 67 65 74 |ypid = (|long)get|
|00002ba0| 70 69 64 28 29 3b 0a 58 | 0a 58 09 2f 2a 0a 58 09 |pid();.X|.X./*.X.|
|00002bb0| 2a 2a 20 46 69 6e 64 20 | 6f 75 74 20 77 68 61 74 |** Find |out what|
|00002bc0| 20 74 68 65 20 6d 61 78 | 69 6d 75 6d 20 69 64 20 | the max|imum id |
|00002bd0| 69 6e 20 74 68 65 20 64 | 61 74 61 62 61 73 65 0a |in the d|atabase.|
|00002be0| 58 09 2a 2a 20 69 73 2e | 0a 58 09 2a 2f 0a 58 09 |X.** is.|.X.*/.X.|
|00002bf0| 6d 79 72 65 71 2e 64 61 | 74 61 2e 72 65 71 75 65 |myreq.da|ta.reque|
|00002c00| 73 74 3d 47 45 54 4c 52 | 45 51 3b 0a 58 09 6d 79 |st=GETLR|EQ;.X.my|
|00002c10| 72 65 71 2e 74 79 70 65 | 3d 6d 79 70 69 64 3b 0a |req.type|=mypid;.|
|00002c20| 58 23 69 66 64 65 66 20 | 44 45 42 55 47 0a 58 20 |X#ifdef |DEBUG.X |
|00002c30| 70 72 69 6e 74 66 28 22 | 41 62 6f 75 74 20 74 6f |printf("|About to|
|00002c40| 20 73 65 6e 64 20 31 73 | 74 20 74 72 61 6e 73 6d | send 1s|t transm|
|00002c50| 69 73 73 69 6f 6e 5c 6e | 22 29 3b 0a 58 23 65 6e |ission\n|");.X#en|
|00002c60| 64 69 66 0a 58 09 69 66 | 28 73 65 6d 6f 70 28 71 |dif.X.if|(semop(q|
|00002c70| 73 65 6d 61 2c 26 6c 6f | 63 6b 71 2c 31 29 3d 3d |sema,&lo|ckq,1)==|
|00002c80| 45 52 52 4f 52 29 20 72 | 65 74 75 72 6e 28 53 45 |ERROR) r|eturn(SE|
|00002c90| 4d 45 52 52 29 3b 0a 58 | 09 69 66 28 6d 73 67 73 |MERR);.X|.if(msgs|
|00002ca0| 6e 64 28 77 72 69 74 65 | 71 2c 26 6d 79 72 65 71 |nd(write|q,&myreq|
|00002cb0| 2c 52 45 43 4c 45 4e 2c | 30 29 3c 30 29 20 72 65 |,RECLEN,|0)<0) re|
|00002cc0| 74 75 72 6e 28 51 45 52 | 52 29 3b 0a 58 09 69 66 |turn(QER|R);.X.if|
|00002cd0| 28 6d 73 67 72 63 76 28 | 72 65 61 64 71 2c 26 68 |(msgrcv(|readq,&h|
|00002ce0| 69 73 72 65 73 70 2c 52 | 45 43 4c 45 4e 2c 6d 79 |isresp,R|ECLEN,my|
|00002cf0| 70 69 64 2c 4d 53 47 5f | 4e 4f 45 52 52 4f 52 29 |pid,MSG_|NOERROR)|
|00002d00| 3c 30 29 20 72 65 74 75 | 72 6e 28 51 45 52 52 29 |<0) retu|rn(QERR)|
|00002d10| 3b 0a 58 09 69 66 28 73 | 65 6d 6f 70 28 71 73 65 |;.X.if(s|emop(qse|
|00002d20| 6d 61 2c 26 75 6e 6c 6f | 63 6b 71 2c 31 29 3d 3d |ma,&unlo|ckq,1)==|
|00002d30| 45 52 52 4f 52 29 20 72 | 65 74 75 72 6e 28 53 45 |ERROR) r|eturn(SE|
|00002d40| 4d 45 52 52 29 3b 0a 58 | 23 69 66 64 65 66 20 44 |MERR);.X|#ifdef D|
|00002d50| 45 42 55 47 0a 58 20 70 | 72 69 6e 74 66 28 22 6d |EBUG.X p|rintf("m|
|00002d60| 61 78 69 64 20 73 74 72 | 69 6e 67 20 20 3d 20 25 |axid str|ing = %|
|00002d70| 73 5c 6e 22 2c 68 69 73 | 72 65 73 70 2e 64 61 74 |s\n",his|resp.dat|
|00002d80| 61 2e 72 65 63 64 61 74 | 29 3b 0a 58 23 65 6e 64 |a.recdat|);.X#end|
|00002d90| 69 66 0a 58 09 6d 61 78 | 69 64 3d 61 74 6f 69 28 |if.X.max|id=atoi(|
|00002da0| 68 69 73 72 65 73 70 2e | 64 61 74 61 2e 72 65 63 |hisresp.|data.rec|
|00002db0| 64 61 74 29 3b 0a 58 23 | 69 66 64 65 66 20 44 45 |dat);.X#|ifdef DE|
|00002dc0| 42 55 47 0a 58 20 70 72 | 69 6e 74 66 28 22 6d 61 |BUG.X pr|intf("ma|
|00002dd0| 78 69 64 20 3d 20 25 64 | 5c 6e 22 2c 6d 61 78 69 |xid = %d|\n",maxi|
|00002de0| 64 29 3b 0a 58 23 65 6e | 64 69 66 0a 58 0a 58 09 |d);.X#en|dif.X.X.|
|00002df0| 2f 2a 0a 58 09 2a 2a 20 | 4e 6f 77 20 6c 6f 6f 70 |/*.X.** |Now loop|
|00002e00| 20 74 68 72 6f 75 67 68 | 20 74 68 65 20 74 65 73 | through| the tes|
|00002e10| 74 73 20 69 74 65 72 20 | 74 69 6d 65 73 2e 0a 58 |ts iter |times..X|
|00002e20| 09 2a 2f 0a 58 09 66 6f | 72 28 69 3d 30 3b 69 3c |.*/.X.fo|r(i=0;i<|
|00002e30| 69 74 65 72 3b 69 2b 2b | 29 0a 58 09 7b 0a 58 23 |iter;i++|).X.{.X#|
|00002e40| 69 66 64 65 66 20 44 45 | 42 55 47 0a 58 20 70 72 |ifdef DE|BUG.X pr|
|00002e50| 69 6e 74 66 28 22 49 6e | 20 6f 75 74 65 72 20 6c |intf("In| outer l|
|00002e60| 6f 6f 70 20 6f 66 20 63 | 6c 69 65 6e 74 5c 6e 22 |oop of c|lient\n"|
|00002e70| 29 3b 0a 58 23 65 6e 64 | 69 66 0a 58 09 09 2f 2a |);.X#end|if.X../*|
|00002e80| 20 44 6f 20 34 20 72 65 | 61 64 73 20 2a 2f 0a 58 | Do 4 re|ads */.X|
|00002e90| 09 09 66 6f 72 28 6a 3d | 30 3b 6a 3c 34 3b 6a 2b |..for(j=|0;j<4;j+|
|00002ea0| 2b 29 0a 58 09 09 7b 0a | 58 23 69 66 64 65 66 20 |+).X..{.|X#ifdef |
|00002eb0| 44 45 42 55 47 0a 58 20 | 70 72 69 6e 74 66 28 22 |DEBUG.X |printf("|
|00002ec0| 49 6e 20 69 6e 6e 65 72 | 20 6c 6f 6f 70 20 6f 66 |In inner| loop of|
|00002ed0| 20 63 6c 69 65 6e 74 5c | 6e 22 29 3b 0a 58 23 65 | client\|n");.X#e|
|00002ee0| 6e 64 69 66 0a 58 09 09 | 09 72 69 64 3d 28 69 6e |ndif.X..|.rid=(in|
|00002ef0| 74 29 72 61 6e 64 77 63 | 28 6d 61 78 69 64 29 2b |t)randwc|(maxid)+|
|00002f00| 31 3b 0a 58 09 09 09 63 | 6c 65 61 72 72 65 63 28 |1;.X...c|learrec(|
|00002f10| 6d 79 72 65 71 2e 64 61 | 74 61 2e 72 65 63 64 61 |myreq.da|ta.recda|
|00002f20| 74 29 3b 0a 58 09 09 09 | 73 70 72 69 6e 74 66 28 |t);.X...|sprintf(|
|00002f30| 6d 79 72 65 71 2e 64 61 | 74 61 2e 72 65 63 64 61 |myreq.da|ta.recda|
|00002f40| 74 2c 22 25 23 30 34 64 | 22 2c 72 69 64 29 3b 0a |t,"%#04d|",rid);.|
|00002f50| 58 09 09 09 6d 79 72 65 | 71 2e 64 61 74 61 2e 72 |X...myre|q.data.r|
|00002f60| 65 71 75 65 73 74 3d 52 | 45 41 44 52 45 51 3b 0a |equest=R|EADREQ;.|
|00002f70| 58 0a 58 23 69 66 64 65 | 66 20 56 45 52 42 4f 53 |X.X#ifde|f VERBOS|
|00002f80| 45 0a 58 09 09 09 2f 2a | 20 54 75 72 6e 20 6f 6e |E.X.../*| Turn on|
|00002f90| 20 74 69 6d 65 72 20 2a | 2f 0a 58 09 09 09 73 74 | timer *|/.X...st|
|00002fa0| 6f 70 77 61 74 63 68 2e | 72 65 61 6c 20 3d 20 74 |opwatch.|real = t|
|00002fb0| 69 6d 65 73 28 26 74 62 | 75 66 66 29 3b 0a 58 09 |imes(&tb|uff);.X.|
|00002fc0| 09 09 73 74 6f 70 77 61 | 74 63 68 2e 73 79 73 74 |..stopwa|tch.syst|
|00002fd0| 65 6d 20 3d 20 74 62 75 | 66 66 2e 74 6d 73 5f 73 |em = tbu|ff.tms_s|
|00002fe0| 74 69 6d 65 3b 0a 58 09 | 09 09 73 74 6f 70 77 61 |time;.X.|..stopwa|
|00002ff0| 74 63 68 2e 63 70 75 20 | 3d 20 74 62 75 66 66 2e |tch.cpu |= tbuff.|
|00003000| 74 6d 73 5f 75 74 69 6d | 65 3b 0a 58 23 65 6e 64 |tms_utim|e;.X#end|
|00003010| 69 66 0a 58 23 69 66 64 | 65 66 20 44 45 42 55 47 |if.X#ifd|ef DEBUG|
|00003020| 0a 58 09 09 09 70 72 69 | 6e 74 66 28 22 41 62 6f |.X...pri|ntf("Abo|
|00003030| 75 74 20 74 6f 20 72 65 | 61 64 5c 6e 22 29 3b 0a |ut to re|ad\n");.|
|00003040| 58 23 65 6e 64 69 66 0a | 58 0a 58 09 09 09 69 66 |X#endif.|X.X...if|
|00003050| 28 73 65 6d 6f 70 28 71 | 73 65 6d 61 2c 26 6c 6f |(semop(q|sema,&lo|
|00003060| 63 6b 71 2c 31 29 3d 3d | 45 52 52 4f 52 29 20 72 |ckq,1)==|ERROR) r|
|00003070| 65 74 75 72 6e 28 53 45 | 4d 45 52 52 29 3b 0a 58 |eturn(SE|MERR);.X|
|00003080| 09 09 09 69 66 28 6d 73 | 67 73 6e 64 28 77 72 69 |...if(ms|gsnd(wri|
|00003090| 74 65 71 2c 26 6d 79 72 | 65 71 2c 52 45 43 4c 45 |teq,&myr|eq,RECLE|
|000030a0| 4e 2c 30 29 3c 30 29 0a | 58 09 09 09 09 72 65 74 |N,0)<0).|X....ret|
|000030b0| 75 72 6e 28 51 45 52 52 | 29 3b 0a 58 09 09 09 69 |urn(QERR|);.X...i|
|000030c0| 66 28 6d 73 67 72 63 76 | 28 72 65 61 64 71 2c 26 |f(msgrcv|(readq,&|
|000030d0| 68 69 73 72 65 73 70 2c | 52 45 43 4c 45 4e 2c 6d |hisresp,|RECLEN,m|
|000030e0| 79 70 69 64 2c 4d 53 47 | 5f 4e 4f 45 52 52 4f 52 |ypid,MSG|_NOERROR|
|000030f0| 29 3c 30 29 0a 58 09 09 | 09 09 72 65 74 75 72 6e |)<0).X..|..return|
|00003100| 28 51 45 52 52 29 3b 0a | 58 09 09 09 69 66 28 73 |(QERR);.|X...if(s|
|00003110| 65 6d 6f 70 28 71 73 65 | 6d 61 2c 26 75 6e 6c 6f |emop(qse|ma,&unlo|
|00003120| 63 6b 71 2c 31 29 3d 3d | 45 52 52 4f 52 29 20 72 |ckq,1)==|ERROR) r|
|00003130| 65 74 75 72 6e 28 53 45 | 4d 45 52 52 29 3b 0a 58 |eturn(SE|MERR);.X|
|00003140| 0a 58 0a 58 23 69 66 64 | 65 66 20 56 45 52 42 4f |.X.X#ifd|ef VERBO|
|00003150| 53 45 0a 58 09 09 09 2f | 2a 20 54 75 72 6e 20 6f |SE.X.../|* Turn o|
|00003160| 66 66 20 74 69 6d 65 72 | 20 2a 2f 0a 58 09 09 09 |ff timer| */.X...|
|00003170| 74 6f 74 74 69 6d 65 2e | 72 65 61 6c 20 2b 3d 20 |tottime.|real += |
|00003180| 74 69 6d 65 73 28 26 74 | 62 75 66 66 29 2d 73 74 |times(&t|buff)-st|
|00003190| 6f 70 77 61 74 63 68 2e | 72 65 61 6c 3b 0a 58 09 |opwatch.|real;.X.|
|000031a0| 09 09 74 6f 74 74 69 6d | 65 2e 73 79 73 74 65 6d |..tottim|e.system|
|000031b0| 20 2b 3d 20 74 62 75 66 | 66 2e 74 6d 73 5f 73 74 | += tbuf|f.tms_st|
|000031c0| 69 6d 65 2d 73 74 6f 70 | 77 61 74 63 68 2e 73 79 |ime-stop|watch.sy|
|000031d0| 73 74 65 6d 3b 0a 58 09 | 09 09 74 6f 74 74 69 6d |stem;.X.|..tottim|
|000031e0| 65 2e 63 70 75 20 2b 3d | 20 74 62 75 66 66 2e 74 |e.cpu +=| tbuff.t|
|000031f0| 6d 73 5f 75 74 69 6d 65 | 2d 73 74 6f 70 77 61 74 |ms_utime|-stopwat|
|00003200| 63 68 2e 63 70 75 3b 0a | 58 0a 58 23 65 6e 64 69 |ch.cpu;.|X.X#endi|
|00003210| 66 0a 58 09 09 09 2f 2a | 20 44 69 64 20 77 65 20 |f.X.../*| Did we |
|00003220| 67 65 74 20 77 68 61 74 | 20 77 65 20 73 68 6f 75 |get what| we shou|
|00003230| 6c 64 3f 20 2a 2f 0a 58 | 09 09 09 65 72 72 63 6e |ld? */.X|...errcn|
|00003240| 74 2b 3d 76 65 72 69 66 | 79 28 29 3b 0a 58 09 09 |t+=verif|y();.X..|
|00003250| 7d 0a 58 0a 58 09 09 2f | 2a 20 44 6f 20 31 20 77 |}.X.X../|* Do 1 w|
|00003260| 72 69 74 65 20 2a 2f 0a | 58 09 09 72 69 64 3d 28 |rite */.|X..rid=(|
|00003270| 69 6e 74 29 72 61 6e 64 | 77 63 28 6d 61 78 69 64 |int)rand|wc(maxid|
|00003280| 29 2b 31 3b 0a 58 09 09 | 63 6c 65 61 72 72 65 63 |)+1;.X..|clearrec|
|00003290| 28 6d 79 72 65 71 2e 64 | 61 74 61 2e 72 65 63 64 |(myreq.d|ata.recd|
|000032a0| 61 74 29 3b 0a 58 09 09 | 73 70 72 69 6e 74 66 28 |at);.X..|sprintf(|
|000032b0| 6d 79 72 65 71 2e 64 61 | 74 61 2e 72 65 63 64 61 |myreq.da|ta.recda|
|000032c0| 74 2c 22 25 23 30 34 64 | 22 2c 72 69 64 29 3b 0a |t,"%#04d|",rid);.|
|000032d0| 58 09 09 6c 6f 61 64 72 | 65 63 28 28 72 69 64 2d |X..loadr|ec((rid-|
|000032e0| 31 29 25 31 30 29 3b 0a | 58 09 09 73 74 72 6e 63 |1)%10);.|X..strnc|
|000032f0| 70 79 28 6d 79 72 65 71 | 2e 64 61 74 61 2e 72 65 |py(myreq|.data.re|
|00003300| 63 64 61 74 2b 34 2c 6d | 79 72 65 63 2e 6e 61 6d |cdat+4,m|yrec.nam|
|00003310| 65 2c 52 45 43 4c 45 4e | 2d 34 29 3b 0a 58 09 09 |e,RECLEN|-4);.X..|
|00003320| 6d 79 72 65 71 2e 64 61 | 74 61 2e 72 65 71 75 65 |myreq.da|ta.reque|
|00003330| 73 74 3d 57 52 49 54 45 | 52 45 51 3b 0a 58 0a 58 |st=WRITE|REQ;.X.X|
|00003340| 23 69 66 64 65 66 20 56 | 45 52 42 4f 53 45 0a 58 |#ifdef V|ERBOSE.X|
|00003350| 09 09 2f 2a 20 54 75 72 | 6e 20 6f 6e 20 74 69 6d |../* Tur|n on tim|
|00003360| 65 72 20 2a 2f 0a 58 09 | 09 73 74 6f 70 77 61 74 |er */.X.|.stopwat|
|00003370| 63 68 2e 72 65 61 6c 20 | 3d 20 74 69 6d 65 73 28 |ch.real |= times(|
|00003380| 26 74 62 75 66 66 29 3b | 0a 58 09 09 73 74 6f 70 |&tbuff);|.X..stop|
|00003390| 77 61 74 63 68 2e 73 79 | 73 74 65 6d 20 3d 20 74 |watch.sy|stem = t|
|000033a0| 62 75 66 66 2e 74 6d 73 | 5f 73 74 69 6d 65 3b 0a |buff.tms|_stime;.|
|000033b0| 58 09 09 73 74 6f 70 77 | 61 74 63 68 2e 63 70 75 |X..stopw|atch.cpu|
|000033c0| 20 3d 20 74 62 75 66 66 | 2e 74 6d 73 5f 75 74 69 | = tbuff|.tms_uti|
|000033d0| 6d 65 3b 0a 58 23 65 6e | 64 69 66 0a 58 0a 58 09 |me;.X#en|dif.X.X.|
|000033e0| 09 69 66 28 73 65 6d 6f | 70 28 71 73 65 6d 61 2c |.if(semo|p(qsema,|
|000033f0| 26 6c 6f 63 6b 71 2c 31 | 29 3d 3d 45 52 52 4f 52 |&lockq,1|)==ERROR|
|00003400| 29 20 72 65 74 75 72 6e | 28 53 45 4d 45 52 52 29 |) return|(SEMERR)|
|00003410| 3b 0a 58 09 09 69 66 28 | 6d 73 67 73 6e 64 28 77 |;.X..if(|msgsnd(w|
|00003420| 72 69 74 65 71 2c 26 6d | 79 72 65 71 2c 52 45 43 |riteq,&m|yreq,REC|
|00003430| 4c 45 4e 2c 30 29 3c 30 | 29 0a 58 09 09 09 72 65 |LEN,0)<0|).X...re|
|00003440| 74 75 72 6e 28 51 45 52 | 52 29 3b 0a 58 09 09 69 |turn(QER|R);.X..i|
|00003450| 66 28 6d 73 67 72 63 76 | 28 72 65 61 64 71 2c 26 |f(msgrcv|(readq,&|
|00003460| 68 69 73 72 65 73 70 2c | 52 45 43 4c 45 4e 2c 6d |hisresp,|RECLEN,m|
|00003470| 79 70 69 64 2c 4d 53 47 | 5f 4e 4f 45 52 52 4f 52 |ypid,MSG|_NOERROR|
|00003480| 29 3c 30 29 0a 58 09 09 | 09 72 65 74 75 72 6e 28 |)<0).X..|.return(|
|00003490| 51 45 52 52 29 3b 0a 58 | 09 09 69 66 28 73 65 6d |QERR);.X|..if(sem|
|000034a0| 6f 70 28 71 73 65 6d 61 | 2c 26 75 6e 6c 6f 63 6b |op(qsema|,&unlock|
|000034b0| 71 2c 31 29 3d 3d 45 52 | 52 4f 52 29 20 72 65 74 |q,1)==ER|ROR) ret|
|000034c0| 75 72 6e 28 53 45 4d 45 | 52 52 29 3b 0a 58 23 69 |urn(SEME|RR);.X#i|
|000034d0| 66 64 65 66 20 44 45 42 | 55 47 0a 58 09 09 70 72 |fdef DEB|UG.X..pr|
|000034e0| 69 6e 74 66 28 22 4d 65 | 73 73 61 67 65 20 72 65 |intf("Me|ssage re|
|000034f0| 63 69 65 76 65 64 5c 6e | 22 29 3b 0a 58 23 65 6e |cieved\n|");.X#en|
|00003500| 64 69 66 0a 58 0a 58 23 | 69 66 64 65 66 20 56 45 |dif.X.X#|ifdef VE|
|00003510| 52 42 4f 53 45 0a 58 09 | 09 2f 2a 20 54 75 72 6e |RBOSE.X.|./* Turn|
|00003520| 20 6f 66 66 20 74 69 6d | 65 72 20 2a 2f 0a 58 09 | off tim|er */.X.|
|00003530| 09 74 6f 74 74 69 6d 65 | 2e 72 65 61 6c 20 2b 3d |.tottime|.real +=|
|00003540| 20 74 69 6d 65 73 28 26 | 74 62 75 66 66 29 2d 73 | times(&|tbuff)-s|
|00003550| 74 6f 70 77 61 74 63 68 | 2e 72 65 61 6c 3b 0a 58 |topwatch|.real;.X|
|00003560| 09 09 74 6f 74 74 69 6d | 65 2e 73 79 73 74 65 6d |..tottim|e.system|
|00003570| 20 2b 3d 20 74 62 75 66 | 66 2e 74 6d 73 5f 73 74 | += tbuf|f.tms_st|
|00003580| 69 6d 65 2d 73 74 6f 70 | 77 61 74 63 68 2e 73 79 |ime-stop|watch.sy|
|00003590| 73 74 65 6d 3b 0a 58 09 | 09 74 6f 74 74 69 6d 65 |stem;.X.|.tottime|
|000035a0| 2e 63 70 75 20 2b 3d 20 | 74 62 75 66 66 2e 74 6d |.cpu += |tbuff.tm|
|000035b0| 73 5f 75 74 69 6d 65 2d | 73 74 6f 70 77 61 74 63 |s_utime-|stopwatc|
|000035c0| 68 2e 63 70 75 3b 0a 58 | 23 65 6e 64 69 66 0a 58 |h.cpu;.X|#endif.X|
|000035d0| 0a 58 09 09 69 66 28 68 | 69 73 72 65 73 70 2e 64 |.X..if(h|isresp.d|
|000035e0| 61 74 61 2e 72 65 71 75 | 65 73 74 21 3d 28 6c 6f |ata.requ|est!=(lo|
|000035f0| 6e 67 29 41 4f 4b 29 20 | 65 72 72 63 6e 74 2b 2b |ng)AOK) |errcnt++|
|00003600| 3b 0a 58 09 09 2f 2a 20 | 53 6c 65 65 70 20 61 20 |;.X../* |Sleep a |
|00003610| 6c 69 74 74 6c 65 20 2a | 2f 0a 58 09 09 69 66 28 |little *|/.X..if(|
|00003620| 73 6c 65 65 70 74 69 6d | 65 29 20 73 6c 65 65 70 |sleeptim|e) sleep|
|00003630| 28 73 6c 65 65 70 74 69 | 6d 65 29 3b 0a 58 0a 58 |(sleepti|me);.X.X|
|00003640| 09 09 2f 2a 20 44 6f 20 | 61 6e 20 61 70 70 65 6e |../* Do |an appen|
|00003650| 64 20 65 76 65 72 79 20 | 31 30 20 74 69 6d 65 73 |d every |10 times|
|00003660| 20 74 68 72 6f 75 67 68 | 20 74 68 65 20 6c 6f 6f | through| the loo|
|00003670| 70 20 2a 2f 0a 58 09 09 | 69 66 28 28 69 25 31 30 |p */.X..|if((i%10|
|00003680| 29 3d 3d 30 29 0a 58 09 | 09 7b 0a 58 09 09 6d 79 |)==0).X.|.{.X..my|
|00003690| 72 65 71 2e 64 61 74 61 | 2e 72 65 71 75 65 73 74 |req.data|.request|
|000036a0| 3d 47 45 54 4c 52 45 51 | 3b 0a 58 0a 58 23 69 66 |=GETLREQ|;.X.X#if|
|000036b0| 64 65 66 20 56 45 52 42 | 4f 53 45 0a 58 09 09 2f |def VERB|OSE.X../|
|000036c0| 2a 20 54 75 72 6e 20 6f | 6e 20 74 69 6d 65 72 20 |* Turn o|n timer |
|000036d0| 2a 2f 0a 58 09 09 73 74 | 6f 70 77 61 74 63 68 2e |*/.X..st|opwatch.|
|000036e0| 72 65 61 6c 20 3d 20 74 | 69 6d 65 73 28 26 74 62 |real = t|imes(&tb|
|000036f0| 75 66 66 29 3b 0a 58 09 | 09 73 74 6f 70 77 61 74 |uff);.X.|.stopwat|
|00003700| 63 68 2e 73 79 73 74 65 | 6d 20 3d 20 74 62 75 66 |ch.syste|m = tbuf|
|00003710| 66 2e 74 6d 73 5f 73 74 | 69 6d 65 3b 0a 58 09 09 |f.tms_st|ime;.X..|
|00003720| 73 74 6f 70 77 61 74 63 | 68 2e 63 70 75 20 3d 20 |stopwatc|h.cpu = |
|00003730| 74 62 75 66 66 2e 74 6d | 73 5f 75 74 69 6d 65 3b |tbuff.tm|s_utime;|
|00003740| 0a 58 23 65 6e 64 69 66 | 0a 58 09 09 69 66 28 73 |.X#endif|.X..if(s|
|00003750| 65 6d 6f 70 28 71 73 65 | 6d 61 2c 26 6c 6f 63 6b |emop(qse|ma,&lock|
|00003760| 61 2c 31 29 3d 3d 45 52 | 52 4f 52 29 20 72 65 74 |a,1)==ER|ROR) ret|
|00003770| 75 72 6e 28 53 45 4d 45 | 52 52 29 3b 0a 58 09 09 |urn(SEME|RR);.X..|
|00003780| 69 66 28 73 65 6d 6f 70 | 28 71 73 65 6d 61 2c 26 |if(semop|(qsema,&|
|00003790| 6c 6f 63 6b 71 2c 31 29 | 3d 3d 45 52 52 4f 52 29 |lockq,1)|==ERROR)|
|000037a0| 20 72 65 74 75 72 6e 28 | 53 45 4d 45 52 52 29 3b | return(|SEMERR);|
|000037b0| 0a 58 09 09 69 66 28 6d | 73 67 73 6e 64 28 77 72 |.X..if(m|sgsnd(wr|
|000037c0| 69 74 65 71 2c 26 6d 79 | 72 65 71 2c 52 45 43 4c |iteq,&my|req,RECL|
|000037d0| 45 4e 2c 30 29 3c 30 29 | 20 72 65 74 75 72 6e 28 |EN,0)<0)| return(|
|000037e0| 51 45 52 52 29 3b 0a 58 | 09 09 69 66 28 6d 73 67 |QERR);.X|..if(msg|
|000037f0| 72 63 76 28 72 65 61 64 | 71 2c 26 68 69 73 72 65 |rcv(read|q,&hisre|
|00003800| 73 70 2c 52 45 43 4c 45 | 4e 2c 6d 79 70 69 64 2c |sp,RECLE|N,mypid,|
|00003810| 4d 53 47 5f 4e 4f 45 52 | 52 4f 52 29 3c 30 29 0a |MSG_NOER|ROR)<0).|
|00003820| 58 09 09 20 20 72 65 74 | 75 72 6e 28 51 45 52 52 |X.. ret|urn(QERR|
|00003830| 29 3b 0a 58 09 09 69 66 | 28 73 65 6d 6f 70 28 71 |);.X..if|(semop(q|
|00003840| 73 65 6d 61 2c 26 75 6e | 6c 6f 63 6b 71 2c 31 29 |sema,&un|lockq,1)|
|00003850| 3d 3d 45 52 52 4f 52 29 | 20 72 65 74 75 72 6e 28 |==ERROR)| return(|
|00003860| 53 45 4d 45 52 52 29 3b | 0a 58 0a 58 23 69 66 64 |SEMERR);|.X.X#ifd|
|00003870| 65 66 20 56 45 52 42 4f | 53 45 0a 58 09 09 2f 2a |ef VERBO|SE.X../*|
|00003880| 20 54 75 72 6e 20 6f 66 | 66 20 74 69 6d 65 72 20 | Turn of|f timer |
|00003890| 2a 2f 0a 58 09 09 74 6f | 74 74 69 6d 65 2e 72 65 |*/.X..to|ttime.re|
|000038a0| 61 6c 20 2b 3d 20 74 69 | 6d 65 73 28 26 74 62 75 |al += ti|mes(&tbu|
|000038b0| 66 66 29 2d 73 74 6f 70 | 77 61 74 63 68 2e 72 65 |ff)-stop|watch.re|
|000038c0| 61 6c 3b 0a 58 09 09 74 | 6f 74 74 69 6d 65 2e 73 |al;.X..t|ottime.s|
|000038d0| 79 73 74 65 6d 20 2b 3d | 20 74 62 75 66 66 2e 74 |ystem +=| tbuff.t|
|000038e0| 6d 73 5f 73 74 69 6d 65 | 2d 73 74 6f 70 77 61 74 |ms_stime|-stopwat|
|000038f0| 63 68 2e 73 79 73 74 65 | 6d 3b 0a 58 09 09 74 6f |ch.syste|m;.X..to|
|00003900| 74 74 69 6d 65 2e 63 70 | 75 20 2b 3d 20 74 62 75 |ttime.cp|u += tbu|
|00003910| 66 66 2e 74 6d 73 5f 75 | 74 69 6d 65 2d 73 74 6f |ff.tms_u|time-sto|
|00003920| 70 77 61 74 63 68 2e 63 | 70 75 3b 0a 58 23 65 6e |pwatch.c|pu;.X#en|
|00003930| 64 69 66 0a 58 0a 58 09 | 09 6d 61 78 69 64 3d 61 |dif.X.X.|.maxid=a|
|00003940| 74 6f 69 28 68 69 73 72 | 65 73 70 2e 64 61 74 61 |toi(hisr|esp.data|
|00003950| 2e 72 65 63 64 61 74 29 | 3b 0a 58 09 09 72 69 64 |.recdat)|;.X..rid|
|00003960| 3d 28 6d 61 78 69 64 2b | 3d 31 29 3b 0a 58 09 09 |=(maxid+|=1);.X..|
|00003970| 63 6c 65 61 72 72 65 63 | 28 6d 79 72 65 71 2e 64 |clearrec|(myreq.d|
|00003980| 61 74 61 2e 72 65 63 64 | 61 74 29 3b 0a 58 09 09 |ata.recd|at);.X..|
|00003990| 73 70 72 69 6e 74 66 28 | 6d 79 72 65 71 2e 64 61 |sprintf(|myreq.da|
|000039a0| 74 61 2e 72 65 63 64 61 | 74 2c 22 25 23 30 34 64 |ta.recda|t,"%#04d|
|000039b0| 22 2c 72 69 64 29 3b 0a | 58 09 09 6c 6f 61 64 72 |",rid);.|X..loadr|
|000039c0| 65 63 28 28 72 69 64 2d | 31 29 25 31 30 29 3b 0a |ec((rid-|1)%10);.|
|000039d0| 58 09 09 73 74 72 6e 63 | 70 79 28 6d 79 72 65 71 |X..strnc|py(myreq|
|000039e0| 2e 64 61 74 61 2e 72 65 | 63 64 61 74 2b 34 2c 6d |.data.re|cdat+4,m|
|000039f0| 79 72 65 63 2e 6e 61 6d | 65 2c 52 45 43 4c 45 4e |yrec.nam|e,RECLEN|
|00003a00| 2d 34 29 3b 0a 58 09 09 | 6d 79 72 65 71 2e 64 61 |-4);.X..|myreq.da|
|00003a10| 74 61 2e 72 65 71 75 65 | 73 74 3d 41 44 44 52 45 |ta.reque|st=ADDRE|
|00003a20| 51 3b 0a 58 0a 58 23 69 | 66 64 65 66 20 56 45 52 |Q;.X.X#i|fdef VER|
|00003a30| 42 4f 53 45 0a 58 09 09 | 2f 2a 20 54 75 72 6e 20 |BOSE.X..|/* Turn |
|00003a40| 6f 6e 20 74 69 6d 65 72 | 20 2a 2f 0a 58 09 09 73 |on timer| */.X..s|
|00003a50| 74 6f 70 77 61 74 63 68 | 2e 72 65 61 6c 20 3d 20 |topwatch|.real = |
|00003a60| 74 69 6d 65 73 28 26 74 | 62 75 66 66 29 3b 0a 58 |times(&t|buff);.X|
|00003a70| 09 09 73 74 6f 70 77 61 | 74 63 68 2e 73 79 73 74 |..stopwa|tch.syst|
|00003a80| 65 6d 20 3d 20 74 62 75 | 66 66 2e 74 6d 73 5f 73 |em = tbu|ff.tms_s|
|00003a90| 74 69 6d 65 3b 0a 58 09 | 09 73 74 6f 70 77 61 74 |time;.X.|.stopwat|
|00003aa0| 63 68 2e 63 70 75 20 3d | 20 74 62 75 66 66 2e 74 |ch.cpu =| tbuff.t|
|00003ab0| 6d 73 5f 75 74 69 6d 65 | 3b 0a 58 23 65 6e 64 69 |ms_utime|;.X#endi|
|00003ac0| 66 0a 58 0a 58 09 09 69 | 66 28 73 65 6d 6f 70 28 |f.X.X..i|f(semop(|
|00003ad0| 71 73 65 6d 61 2c 26 6c | 6f 63 6b 71 2c 31 29 3d |qsema,&l|ockq,1)=|
|00003ae0| 3d 45 52 52 4f 52 29 20 | 72 65 74 75 72 6e 28 53 |=ERROR) |return(S|
|00003af0| 45 4d 45 52 52 29 3b 0a | 58 09 09 69 66 28 6d 73 |EMERR);.|X..if(ms|
|00003b00| 67 73 6e 64 28 77 72 69 | 74 65 71 2c 26 6d 79 72 |gsnd(wri|teq,&myr|
|00003b10| 65 71 2c 52 45 43 4c 45 | 4e 2c 30 29 3c 30 29 20 |eq,RECLE|N,0)<0) |
|00003b20| 72 65 74 75 72 6e 28 51 | 45 52 52 29 3b 0a 58 09 |return(Q|ERR);.X.|
|00003b30| 09 69 66 28 6d 73 67 72 | 63 76 28 72 65 61 64 71 |.if(msgr|cv(readq|
|00003b40| 2c 26 68 69 73 72 65 73 | 70 2c 52 45 43 4c 45 4e |,&hisres|p,RECLEN|
|00003b50| 2c 6d 79 70 69 64 2c 4d | 53 47 5f 4e 4f 45 52 52 |,mypid,M|SG_NOERR|
|00003b60| 4f 52 29 3c 30 29 0a 58 | 09 09 20 20 72 65 74 75 |OR)<0).X|.. retu|
|00003b70| 72 6e 28 51 45 52 52 29 | 3b 0a 58 09 09 69 66 28 |rn(QERR)|;.X..if(|
|00003b80| 73 65 6d 6f 70 28 71 73 | 65 6d 61 2c 26 75 6e 6c |semop(qs|ema,&unl|
|00003b90| 6f 63 6b 71 2c 31 29 3d | 3d 45 52 52 4f 52 29 20 |ockq,1)=|=ERROR) |
|00003ba0| 72 65 74 75 72 6e 28 53 | 45 4d 45 52 52 29 3b 0a |return(S|EMERR);.|
|00003bb0| 58 09 09 69 66 28 73 65 | 6d 6f 70 28 71 73 65 6d |X..if(se|mop(qsem|
|00003bc0| 61 2c 26 75 6e 6c 6f 63 | 6b 61 2c 31 29 3d 3d 45 |a,&unloc|ka,1)==E|
|00003bd0| 52 52 4f 52 29 20 72 65 | 74 75 72 6e 28 53 45 4d |RROR) re|turn(SEM|
|00003be0| 45 52 52 29 3b 0a 58 0a | 58 23 69 66 64 65 66 20 |ERR);.X.|X#ifdef |
|00003bf0| 56 45 52 42 4f 53 45 0a | 58 09 09 2f 2a 20 54 75 |VERBOSE.|X../* Tu|
|00003c00| 72 6e 20 6f 66 66 20 74 | 69 6d 65 72 20 2a 2f 0a |rn off t|imer */.|
|00003c10| 58 09 09 74 6f 74 74 69 | 6d 65 2e 72 65 61 6c 20 |X..totti|me.real |
|00003c20| 2b 3d 20 74 69 6d 65 73 | 28 26 74 62 75 66 66 29 |+= times|(&tbuff)|
|00003c30| 2d 73 74 6f 70 77 61 74 | 63 68 2e 72 65 61 6c 3b |-stopwat|ch.real;|
|00003c40| 0a 58 09 09 74 6f 74 74 | 69 6d 65 2e 73 79 73 74 |.X..tott|ime.syst|
|00003c50| 65 6d 20 2b 3d 20 74 62 | 75 66 66 2e 74 6d 73 5f |em += tb|uff.tms_|
|00003c60| 73 74 69 6d 65 2d 73 74 | 6f 70 77 61 74 63 68 2e |stime-st|opwatch.|
|00003c70| 73 79 73 74 65 6d 3b 0a | 58 09 09 74 6f 74 74 69 |system;.|X..totti|
|00003c80| 6d 65 2e 63 70 75 20 2b | 3d 20 74 62 75 66 66 2e |me.cpu +|= tbuff.|
|00003c90| 74 6d 73 5f 75 74 69 6d | 65 2d 73 74 6f 70 77 61 |tms_utim|e-stopwa|
|00003ca0| 74 63 68 2e 63 70 75 3b | 0a 58 23 65 6e 64 69 66 |tch.cpu;|.X#endif|
|00003cb0| 0a 58 0a 58 09 09 69 66 | 28 68 69 73 72 65 73 70 |.X.X..if|(hisresp|
|00003cc0| 2e 64 61 74 61 2e 72 65 | 71 75 65 73 74 21 3d 28 |.data.re|quest!=(|
|00003cd0| 6c 6f 6e 67 29 41 4f 4b | 29 20 65 72 72 63 6e 74 |long)AOK|) errcnt|
|00003ce0| 2b 2b 3b 0a 58 0a 58 09 | 09 2f 2a 20 53 6c 65 65 |++;.X.X.|./* Slee|
|00003cf0| 70 20 61 20 6c 69 74 74 | 6c 65 20 2a 2f 0a 58 09 |p a litt|le */.X.|
|00003d00| 09 69 66 28 73 6c 65 65 | 70 74 69 6d 65 29 20 73 |.if(slee|ptime) s|
|00003d10| 6c 65 65 70 28 73 6c 65 | 65 70 74 69 6d 65 29 3b |leep(sle|eptime);|
|00003d20| 0a 58 0a 58 09 09 7d 0a | 58 09 7d 0a 58 0a 58 09 |.X.X..}.|X.}.X.X.|
|00003d30| 2f 2a 0a 58 09 2a 2a 20 | 41 6c 6c 27 73 20 77 65 |/*.X.** |All's we|
|00003d40| 6c 6c 20 74 68 61 74 20 | 65 6e 64 73 20 77 65 6c |ll that |ends wel|
|00003d50| 6c 2e 0a 58 09 2a 2f 0a | 58 09 72 65 74 75 72 6e |l..X.*/.|X.return|
|00003d60| 28 30 29 3b 0a 58 7d 0a | 58 0a 58 2f 2a 0a 58 2a |(0);.X}.|X.X/*.X*|
|00003d70| 2a 20 76 65 72 69 66 79 | 0a 58 2a 2f 0a 58 69 6e |* verify|.X*/.Xin|
|00003d80| 74 20 76 65 72 69 66 79 | 28 29 0a 58 7b 0a 58 09 |t verify|().X{.X.|
|00003d90| 63 68 61 72 20 62 75 66 | 66 72 5b 38 30 5d 3b 0a |char buf|fr[80];.|
|00003da0| 58 0a 58 09 2f 2a 20 49 | 73 20 74 68 65 72 65 20 |X.X./* I|s there |
|00003db0| 72 65 73 70 6f 6e 73 65 | 20 61 6e 20 65 72 72 6f |response| an erro|
|00003dc0| 72 20 72 65 73 70 6f 6e | 73 65 3f 20 2a 2f 0a 58 |r respon|se? */.X|
|00003dd0| 09 69 66 28 68 69 73 72 | 65 73 70 2e 64 61 74 61 |.if(hisr|esp.data|
|00003de0| 2e 72 65 71 75 65 73 74 | 21 3d 28 6c 6f 6e 67 29 |.request|!=(long)|
|00003df0| 41 4f 4b 29 0a 58 09 20 | 72 65 74 75 72 6e 28 31 |AOK).X. |return(1|
|00003e00| 29 3b 0a 58 0a 58 09 2f | 2a 20 57 61 73 20 69 74 |);.X.X./|* Was it|
|00003e10| 20 74 68 65 20 6e 75 6d | 62 65 72 20 77 65 20 77 | the num|ber we w|
|00003e20| 65 72 65 20 6c 6f 6f 6b | 69 6e 67 20 66 6f 72 3f |ere look|ing for?|
|00003e30| 20 2a 2f 0a 58 09 73 74 | 72 6e 63 70 79 28 62 75 | */.X.st|rncpy(bu|
|00003e40| 66 66 72 2c 68 69 73 72 | 65 73 70 2e 64 61 74 61 |ffr,hisr|esp.data|
|00003e50| 2e 72 65 63 64 61 74 2c | 34 29 3b 0a 58 09 62 75 |.recdat,|4);.X.bu|
|00003e60| 66 66 72 5b 34 5d 3d 27 | 5c 30 27 3b 0a 58 09 69 |ffr[4]='|\0';.X.i|
|00003e70| 66 28 61 74 6f 69 28 62 | 75 66 66 72 29 21 3d 72 |f(atoi(b|uffr)!=r|
|00003e80| 69 64 29 20 0a 58 09 72 | 65 74 75 72 6e 28 31 29 |id) .X.r|eturn(1)|
|00003e90| 3b 0a 58 0a 58 09 2f 2a | 20 43 68 65 63 6b 20 74 |;.X.X./*| Check t|
|00003ea0| 68 65 20 72 65 63 6f 72 | 64 20 6e 75 6d 62 65 72 |he recor|d number|
|00003eb0| 20 77 69 74 68 20 69 74 | 73 20 63 6f 6e 74 65 6e | with it|s conten|
|00003ec0| 74 73 20 2a 2f 0a 58 09 | 6c 6f 61 64 72 65 63 28 |ts */.X.|loadrec(|
|00003ed0| 28 72 69 64 2d 31 29 25 | 31 30 29 3b 0a 58 0a 58 |(rid-1)%|10);.X.X|
|00003ee0| 09 69 66 28 73 74 72 6e | 63 6d 70 28 68 69 73 72 |.if(strn|cmp(hisr|
|00003ef0| 65 73 70 2e 64 61 74 61 | 2e 72 65 63 64 61 74 2b |esp.data|.recdat+|
|00003f00| 34 2c 6d 79 72 65 63 2e | 6e 61 6d 65 2c 52 45 43 |4,myrec.|name,REC|
|00003f10| 4c 45 4e 2d 34 29 21 3d | 30 29 0a 58 09 09 72 65 |LEN-4)!=|0).X..re|
|00003f20| 74 75 72 6e 28 31 29 3b | 0a 58 0a 58 09 2f 2a 20 |turn(1);|.X.X./* |
|00003f30| 4c 6f 6f 6b 73 20 67 6f | 6f 64 20 2a 2f 0a 58 09 |Looks go|od */.X.|
|00003f40| 72 65 74 75 72 6e 28 30 | 29 3b 0a 58 7d 0a 58 0a |return(0|);.X}.X.|
|00003f50| 58 0a 58 2f 2a 0a 58 2a | 2a 20 43 6c 65 61 72 20 |X.X/*.X*|* Clear |
|00003f60| 61 20 72 65 63 6f 72 64 | 0a 58 2a 2f 0a 58 63 6c |a record|.X*/.Xcl|
|00003f70| 65 61 72 72 65 63 28 72 | 70 74 72 29 0a 58 63 68 |earrec(r|ptr).Xch|
|00003f80| 61 72 20 2a 72 70 74 72 | 3b 0a 58 7b 0a 58 09 69 |ar *rptr|;.X{.X.i|
|00003f90| 6e 74 20 69 3b 0a 58 0a | 58 09 66 6f 72 28 69 3d |nt i;.X.|X.for(i=|
|00003fa0| 30 3b 69 3c 52 45 43 4c | 45 4e 3b 2b 2b 69 29 0a |0;i<RECL|EN;++i).|
|00003fb0| 58 09 09 2a 72 70 74 72 | 2b 2b 3d 27 5c 30 27 3b |X..*rptr|++='\0';|
|00003fc0| 0a 58 0a 58 20 09 72 65 | 74 75 72 6e 3b 0a 58 7d |.X.X .re|turn;.X}|
|00003fd0| 0a 58 0a 58 2f 2a 0a 58 | 2a 2a 20 4c 6f 61 64 20 |.X.X/*.X|** Load |
|00003fe0| 74 68 65 20 72 65 63 6f | 72 64 20 75 70 20 77 69 |the reco|rd up wi|
|00003ff0| 74 68 20 72 61 6e 64 6f | 6d 20 64 61 74 61 2e 0a |th rando|m data..|
|00004000| 58 2a 2f 0a 58 6c 6f 61 | 64 72 65 63 28 73 65 6c |X*/.Xloa|drec(sel|
|00004010| 29 0a 58 69 6e 74 20 73 | 65 6c 3b 09 09 2f 2a 20 |).Xint s|el;../* |
|00004020| 53 65 6c 65 63 74 20 77 | 68 69 63 68 20 66 61 6b |Select w|hich fak|
|00004030| 65 20 72 65 63 6f 72 64 | 20 2a 2f 0a 58 0a 58 7b |e record| */.X.X{|
|00004040| 0a 58 0a 58 09 63 68 61 | 72 20 2a 6e 6e 61 6d 65 |.X.X.cha|r *nname|
|00004050| 3b 0a 58 09 63 68 61 72 | 20 2a 6e 61 64 64 72 3b |;.X.char| *naddr;|
|00004060| 0a 58 09 63 68 61 72 20 | 2a 6e 70 68 6f 6e 3b 0a |.X.char |*nphon;.|
|00004070| 58 0a 58 09 73 77 69 74 | 63 68 28 73 65 6c 29 0a |X.X.swit|ch(sel).|
|00004080| 58 09 7b 0a 58 09 63 61 | 73 65 20 30 3a 09 6e 6e |X.{.X.ca|se 0:.nn|
|00004090| 61 6d 65 3d 22 54 6f 6d | 20 54 68 6f 6d 70 73 6f |ame="Tom| Thompso|
|000040a0| 6e 20 20 20 20 20 20 20 | 20 22 3b 0a 58 09 09 6e |n | ";.X..n|
|000040b0| 61 64 64 72 3d 22 39 34 | 30 31 20 42 69 6c 6c 79 |addr="94|01 Billy|
|000040c0| 20 57 69 6c 6c 79 20 52 | 6f 61 64 20 20 20 20 20 | Willy R|oad |
|000040d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 22 3b | | ";|
|000040e0| 0a 58 09 09 6e 70 68 6f | 6e 3d 22 33 33 33 34 34 |.X..npho|n="33344|
|000040f0| 34 32 32 32 32 22 3b 0a | 58 09 09 62 72 65 61 6b |42222";.|X..break|
|00004100| 3b 0a 58 09 63 61 73 65 | 20 31 3a 20 6e 6e 61 6d |;.X.case| 1: nnam|
|00004110| 65 3d 22 53 74 65 76 65 | 20 41 70 69 6b 69 20 20 |e="Steve| Apiki |
|00004120| 20 20 20 20 20 20 20 22 | 3b 0a 58 09 09 6e 61 64 | "|;.X..nad|
|00004130| 64 72 3d 22 35 30 20 48 | 61 77 61 69 69 20 57 61 |dr="50 H|awaii Wa|
|00004140| 79 20 63 2f 6f 20 4a 61 | 63 6b 20 4c 6f 72 64 20 |y c/o Ja|ck Lord |
|00004150| 20 20 20 20 20 20 20 20 | 20 20 20 20 22 3b 0a 58 | | ";.X|
|00004160| 09 09 6e 70 68 6f 6e 3d | 22 31 32 33 34 34 34 33 |..nphon=|"1234443|
|00004170| 33 33 33 22 3b 0a 58 09 | 09 62 72 65 61 6b 3b 0a |333";.X.|.break;.|
|00004180| 58 09 63 61 73 65 20 32 | 3a 20 6e 6e 61 6d 65 3d |X.case 2|: nname=|
|00004190| 22 53 74 61 6e 20 44 69 | 65 68 6c 20 20 20 20 20 |"Stan Di|ehl |
|000041a0| 20 20 20 20 20 22 3b 0a | 58 09 09 6e 61 64 64 72 | ";.|X..naddr|
|000041b0| 3d 22 32 37 20 48 6f 70 | 74 6f 61 64 20 48 6f 6c |="27 Hop|toad Hol|
|000041c0| 6c 6f 77 20 57 61 79 20 | 20 20 20 20 20 20 20 20 |low Way | |
|000041d0| 20 20 20 20 20 20 20 20 | 20 20 22 3b 0a 58 09 09 | | ";.X..|
|000041e0| 6e 70 68 6f 6e 3d 22 33 | 33 33 32 32 32 31 31 31 |nphon="3|33222111|
|000041f0| 31 22 3b 0a 58 09 09 62 | 72 65 61 6b 3b 0a 58 09 |1";.X..b|reak;.X.|
|00004200| 63 61 73 65 20 33 3a 20 | 6e 6e 61 6d 65 3d 22 4a |case 3: |nname="J|
|00004210| 75 64 79 20 47 72 65 68 | 61 6e 20 20 20 20 20 20 |udy Greh|an |
|00004220| 20 20 20 22 3b 0a 58 09 | 09 6e 61 64 64 72 3d 22 | ";.X.|.naddr="|
|00004230| 53 75 69 74 65 20 33 2c | 20 57 61 6c 6c 53 74 61 |Suite 3,| WallSta|
|00004240| 74 65 20 42 75 69 6c 64 | 69 6e 67 20 20 20 20 20 |te Build|ing |
|00004250| 20 20 20 20 20 20 20 20 | 22 3b 0a 58 09 09 6e 70 | |";.X..np|
|00004260| 68 6f 6e 3d 22 39 39 39 | 35 35 35 36 36 36 36 22 |hon="999|5556666"|
|00004270| 3b 0a 58 09 09 62 72 65 | 61 6b 3b 0a 58 09 63 61 |;.X..bre|ak;.X.ca|
|00004280| 73 65 20 34 3a 20 6e 6e | 61 6d 65 3d 22 41 61 72 |se 4: nn|ame="Aar|
|00004290| 6f 6e 20 52 69 63 68 61 | 72 64 73 20 20 20 20 20 |on Richa|rds |
|000042a0| 20 22 3b 0a 58 09 09 6e | 61 64 64 72 3d 22 48 69 | ";.X..n|addr="Hi|
|000042b0| 67 68 77 61 79 20 34 30 | 20 4f 76 65 72 50 61 73 |ghway 40| OverPas|
|000042c0| 73 2c 20 53 65 63 6f 6e | 64 20 50 79 6c 6f 6e 20 |s, Secon|d Pylon |
|000042d0| 20 20 20 20 20 20 22 3b | 0a 58 09 09 6e 70 68 6f | ";|.X..npho|
|000042e0| 6e 3d 22 38 38 38 33 33 | 33 39 39 39 39 22 3b 0a |n="88833|39999";.|
|000042f0| 58 09 09 62 72 65 61 6b | 3b 0a 58 09 63 61 73 65 |X..break|;.X.case|
|00004300| 20 35 3a 20 6e 6e 61 6d | 65 3d 22 42 65 6e 6a 61 | 5: nnam|e="Benja|
|00004310| 6d 69 6e 20 44 61 76 69 | 64 73 6f 6e 20 20 20 22 |min Davi|dson "|
|00004320| 3b 0a 58 09 09 6e 61 64 | 64 72 3d 22 55 6e 64 65 |;.X..nad|dr="Unde|
|00004330| 72 20 54 68 65 20 42 72 | 69 64 67 65 2c 20 48 65 |r The Br|idge, He|
|00004340| 61 76 79 57 61 74 65 72 | 20 43 69 74 79 20 20 20 |avyWater| City |
|00004350| 20 20 20 20 22 3b 0a 58 | 09 09 6e 70 68 6f 6e 3d | ";.X|..nphon=|
|00004360| 22 37 37 37 33 32 32 39 | 39 38 38 22 3b 0a 58 09 |"7773229|988";.X.|
|00004370| 09 62 72 65 61 6b 3b 0a | 58 09 63 61 73 65 20 36 |.break;.|X.case 6|
|00004380| 3a 20 6e 6e 61 6d 65 3d | 22 44 61 79 6c 65 20 57 |: nname=|"Dayle W|
|00004390| 6f 6f 6c 73 74 6f 6e 20 | 20 20 20 20 20 22 3b 0a |oolston | ";.|
|000043a0| 58 09 09 6e 61 64 64 72 | 3d 22 34 30 34 30 20 50 |X..naddr|="4040 P|
|000043b0| 6c 65 61 73 61 6e 74 20 | 57 61 79 2c 20 57 49 43 |leasant |Way, WIC|
|000043c0| 41 54 20 43 65 6e 74 72 | 61 6c 20 20 20 20 20 20 |AT Centr|al |
|000043d0| 20 20 22 3b 0a 58 09 09 | 6e 70 68 6f 6e 3d 22 32 | ";.X..|nphon="2|
|000043e0| 32 32 38 33 33 32 32 39 | 39 22 3b 0a 58 09 09 62 |22833229|9";.X..b|
|000043f0| 72 65 61 6b 3b 0a 58 09 | 63 61 73 65 20 37 3a 20 |reak;.X.|case 7: |
|00004400| 6e 6e 61 6d 65 3d 22 4a | 69 6d 20 43 61 72 6c 73 |nname="J|im Carls|
|00004410| 20 20 20 20 20 20 20 20 | 20 20 20 22 3b 0a 58 09 | | ";.X.|
|00004420| 09 6e 61 64 64 72 3d 22 | 42 69 67 20 4f 61 6b 20 |.naddr="|Big Oak |
|00004430| 54 72 65 65 20 42 65 68 | 69 6e 64 20 42 61 72 73 |Tree Beh|ind Bars|
|00004440| 6f 64 69 65 27 73 20 20 | 20 20 20 20 20 20 20 20 |odie's | |
|00004450| 22 3b 0a 58 09 09 6e 70 | 68 6f 6e 3d 22 33 32 32 |";.X..np|hon="322|
|00004460| 34 34 35 36 36 36 35 37 | 22 3b 0a 58 09 09 62 72 |44566657|";.X..br|
|00004470| 65 61 6b 3b 0a 58 09 63 | 61 73 65 20 38 3a 20 6e |eak;.X.c|ase 8: n|
|00004480| 6e 61 6d 65 3d 22 53 74 | 65 76 65 20 53 6d 69 74 |name="St|eve Smit|
|00004490| 68 20 20 20 20 20 20 20 | 20 20 22 3b 0a 58 09 09 |h | ";.X..|
|000044a0| 6e 61 64 64 72 3d 22 37 | 30 30 30 20 41 6c 6f 74 |naddr="7|000 Alot|
|000044b0| 68 20 43 6f 76 65 20 20 | 20 20 20 20 20 20 20 20 |h Cove | |
|000044c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 22 | | "|
|000044d0| 3b 0a 58 09 09 6e 70 68 | 6f 6e 3d 22 32 31 31 38 |;.X..nph|on="2118|
|000044e0| 33 33 32 39 32 39 22 3b | 0a 58 09 09 62 72 65 61 |332929";|.X..brea|
|000044f0| 6b 3b 0a 58 09 63 61 73 | 65 20 39 3a 20 0a 58 09 |k;.X.cas|e 9: .X.|
|00004500| 64 65 66 61 75 6c 74 3a | 20 6e 6e 61 6d 65 3d 22 |default:| nname="|
|00004510| 42 6c 69 6e 64 20 57 69 | 6c 6c 79 20 43 68 69 74 |Blind Wi|lly Chit|
|00004520| 6c 69 6e 73 22 3b 0a 58 | 09 09 6e 61 64 64 72 3d |lins";.X|..naddr=|
|00004530| 22 55 6e 61 76 61 69 6c | 61 62 6c 65 20 55 6e 74 |"Unavail|able Unt|
|00004540| 69 6c 20 46 75 72 74 68 | 65 72 20 4e 6f 74 69 63 |il Furth|er Notic|
|00004550| 65 20 20 20 20 20 20 20 | 20 22 3b 0a 58 09 09 6e |e | ";.X..n|
|00004560| 70 68 6f 6e 3d 22 33 34 | 35 36 37 38 39 30 31 32 |phon="34|56789012|
|00004570| 22 3b 0a 58 09 09 62 72 | 65 61 6b 3b 0a 58 09 7d |";.X..br|eak;.X.}|
|00004580| 0a 58 0a 58 09 2f 2a 0a | 58 09 2a 2a 20 46 69 6c |.X.X./*.|X.** Fil|
|00004590| 6c 20 74 68 65 20 73 74 | 72 75 63 74 75 72 65 20 |l the st|ructure |
|000045a0| 77 69 74 68 20 66 61 6b | 65 20 64 61 74 61 2e 0a |with fak|e data..|
|000045b0| 58 09 2a 2f 0a 58 09 73 | 74 72 6e 63 70 79 28 6d |X.*/.X.s|trncpy(m|
|000045c0| 79 72 65 63 2e 6e 61 6d | 65 2c 6e 6e 61 6d 65 2c |yrec.nam|e,nname,|
|000045d0| 4e 41 4d 45 4c 45 4e 29 | 3b 0a 58 09 73 74 72 6e |NAMELEN)|;.X.strn|
|000045e0| 63 70 79 28 6d 79 72 65 | 63 2e 61 64 64 72 65 73 |cpy(myre|c.addres|
|000045f0| 73 2c 6e 61 64 64 72 2c | 41 44 44 52 4c 45 4e 29 |s,naddr,|ADDRLEN)|
|00004600| 3b 0a 58 09 73 74 72 6e | 63 70 79 28 6d 79 72 65 |;.X.strn|cpy(myre|
|00004610| 63 2e 70 68 6f 6e 65 2c | 6e 70 68 6f 6e 2c 50 48 |c.phone,|nphon,PH|
|00004620| 4f 4e 4c 45 4e 29 3b 0a | 58 0a 58 09 72 65 74 75 |ONLEN);.|X.X.retu|
|00004630| 72 6e 3b 0a 58 7d 0a 58 | 0a 58 2f 2a 0a 58 2a 2a |rn;.X}.X|.X/*.X**|
|00004640| 20 72 61 6e 64 77 63 28 | 6e 75 6d 29 0a 58 2a 2a | randwc(|num).X**|
|00004650| 20 52 65 74 75 72 6e 73 | 20 72 61 6e 64 6f 6d 20 | Returns| random |
|00004660| 6d 6f 64 75 6c 6f 20 6e | 75 6d 2e 0a 58 2a 2f 0a |modulo n|um..X*/.|
|00004670| 58 6c 6f 6e 67 20 72 61 | 6e 64 77 63 28 6e 75 6d |Xlong ra|ndwc(num|
|00004680| 29 0a 58 6c 6f 6e 67 20 | 6e 75 6d 3b 0a 58 7b 0a |).Xlong |num;.X{.|
|00004690| 58 09 72 65 74 75 72 6e | 28 72 61 6e 64 6e 75 6d |X.return|(randnum|
|000046a0| 28 30 4c 29 25 6e 75 6d | 29 3b 0a 58 7d 0a 58 0a |(0L)%num|);.X}.X.|
|000046b0| 58 2f 2a 0a 58 2a 2a 20 | 72 61 6e 64 6e 75 6d 28 |X/*.X** |randnum(|
|000046c0| 76 61 6c 29 0a 58 2a 2a | 20 53 65 63 6f 6e 64 20 |val).X**| Second |
|000046d0| 6f 72 64 65 72 20 6c 69 | 6e 65 61 72 20 63 6f 6e |order li|near con|
|000046e0| 67 72 75 65 6e 74 69 61 | 6c 20 67 65 6e 65 72 61 |gruentia|l genera|
|000046f0| 74 6f 72 2e 0a 58 2a 2a | 20 43 6f 6e 73 74 61 6e |tor..X**| Constan|
|00004700| 74 73 20 73 75 67 67 65 | 73 74 65 64 20 62 79 20 |ts sugge|sted by |
|00004710| 4a 2e 20 47 2e 20 53 6b | 65 6c 6c 61 6d 2e 0a 58 |J. G. Sk|ellam..X|
|00004720| 2a 2a 20 49 66 20 76 61 | 6c 3d 3d 30 2c 20 72 65 |** If va|l==0, re|
|00004730| 74 75 72 6e 73 20 6e 65 | 78 74 20 6d 65 6d 62 65 |turns ne|xt membe|
|00004740| 72 20 6f 66 20 73 65 71 | 75 65 6e 63 65 2e 0a 58 |r of seq|uence..X|
|00004750| 2a 2a 20 20 20 20 76 61 | 6c 21 3d 30 2c 20 22 73 |** va|l!=0, "s|
|00004760| 65 65 64 73 22 20 67 65 | 6e 65 72 61 74 6f 72 20 |eeds" ge|nerator |
|00004770| 77 69 74 68 20 76 61 6c | 2e 0a 58 2a 2f 0a 58 6c |with val|..X*/.Xl|
|00004780| 6f 6e 67 20 72 61 6e 64 | 6e 75 6d 28 6c 6e 67 76 |ong rand|num(lngv|
|00004790| 61 6c 29 0a 58 75 6e 73 | 69 67 6e 65 64 20 6c 6f |al).Xuns|igned lo|
|000047a0| 6e 67 20 6c 6e 67 76 61 | 6c 3b 0a 58 7b 0a 58 09 |ng lngva|l;.X{.X.|
|000047b0| 72 65 67 69 73 74 65 72 | 20 75 6e 73 69 67 6e 65 |register| unsigne|
|000047c0| 64 20 6c 6f 6e 67 20 69 | 6e 74 65 72 6d 3b 0a 58 |d long i|nterm;.X|
|000047d0| 09 73 74 61 74 69 63 20 | 75 6e 73 69 67 6e 65 64 |.static |unsigned|
|000047e0| 20 6c 6f 6e 67 20 72 61 | 6e 64 77 5b 32 5d 20 3d | long ra|ndw[2] =|
|000047f0| 20 7b 20 31 33 20 2c 20 | 31 31 37 20 7d 3b 0a 58 | { 13 , |117 };.X|
|00004800| 0a 58 09 69 66 20 28 6c | 6e 67 76 61 6c 21 3d 30 |.X.if (l|ngval!=0|
|00004810| 4c 29 20 72 61 6e 64 77 | 5b 31 5d 3d 6c 6e 67 76 |L) randw|[1]=lngv|
|00004820| 61 6c 3b 0a 58 0a 58 09 | 69 6e 74 65 72 6d 3d 28 |al;.X.X.|interm=(|
|00004830| 72 61 6e 64 77 5b 30 5d | 2a 32 35 34 37 35 34 4c |randw[0]|*254754L|
|00004840| 2b 72 61 6e 64 77 5b 31 | 5d 2a 35 32 39 35 36 32 |+randw[1|]*529562|
|00004850| 4c 29 25 39 39 39 35 36 | 33 4c 3b 0a 58 09 72 61 |L)%99956|3L;.X.ra|
|00004860| 6e 64 77 5b 31 5d 3d 72 | 61 6e 64 77 5b 30 5d 3b |ndw[1]=r|andw[0];|
|00004870| 0a 58 09 72 61 6e 64 77 | 5b 30 5d 3d 69 6e 74 65 |.X.randw|[0]=inte|
|00004880| 72 6d 3b 0a 58 09 72 65 | 74 75 72 6e 28 69 6e 74 |rm;.X.re|turn(int|
|00004890| 65 72 6d 29 3b 0a 58 7d | 0a 58 0a 58 2f 2a 2a 2a |erm);.X}|.X.X/***|
|000048a0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000048b0| 2a 2a 2a 2a 2a 2a 2a 20 | 6d 61 6b 65 79 20 2a 2a |******* |makey **|
|000048c0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000048d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 0a 58 2a 2a |********|****.X**|
|000048e0| 20 46 6f 6c 6c 6f 77 69 | 6e 67 20 72 6f 75 74 69 | Followi|ng routi|
|000048f0| 6e 65 20 63 6f 6e 76 65 | 72 74 73 20 61 6e 20 41 |ne conve|rts an A|
|00004900| 53 43 49 49 20 73 74 72 | 69 6e 67 20 74 6f 20 61 |SCII str|ing to a|
|00004910| 20 6b 65 79 5f 74 20 76 | 61 6c 75 65 2e 0a 58 2a | key_t v|alue..X*|
|00004920| 2a 20 54 68 69 73 20 72 | 6f 75 74 69 6e 65 20 6f |* This r|outine o|
|00004930| 72 69 67 69 6e 61 6c 6c | 79 20 61 70 70 65 61 72 |riginall|y appear|
|00004940| 65 64 20 69 6e 20 41 44 | 56 41 4e 43 45 44 20 50 |ed in AD|VANCED P|
|00004950| 52 4f 47 52 41 4d 4d 45 | 52 53 20 47 55 49 44 45 |ROGRAMME|RS GUIDE|
|00004960| 0a 58 2a 2a 20 54 4f 20 | 55 4e 49 58 20 53 59 53 |.X** TO |UNIX SYS|
|00004970| 54 45 4d 20 56 20 62 79 | 20 52 2e 20 54 68 6f 6d |TEM V by| R. Thom|
|00004980| 61 73 2c 20 50 48 44 3b | 20 4c 2e 20 52 2e 20 52 |as, PHD;| L. R. R|
|00004990| 6f 67 65 72 73 2c 20 61 | 6e 64 20 4a 2e 20 4c 2e |ogers, a|nd J. L.|
|000049a0| 20 59 61 74 65 73 2e 0a | 58 2a 2a 20 4f 73 62 6f | Yates..|X** Osbo|
|000049b0| 72 6e 65 20 4d 63 47 72 | 61 77 20 48 69 6c 6c 2e |rne McGr|aw Hill.|
|000049c0| 0a 58 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X******|********|
|000049d0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000049e0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|000049f0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004a00| 2a 2a 2a 2a 2a 2f 0a 58 | 6b 65 79 5f 74 0a 58 6d |*****/.X|key_t.Xm|
|00004a10| 61 6b 65 79 28 70 29 0a | 58 63 68 61 72 20 2a 70 |akey(p).|Xchar *p|
|00004a20| 3b 0a 58 7b 0a 58 09 6b | 65 79 5f 74 20 6b 65 79 |;.X{.X.k|ey_t key|
|00004a30| 76 3b 0a 58 09 69 6e 74 | 20 69 3b 0a 58 0a 58 09 |v;.X.int| i;.X.X.|
|00004a40| 69 66 28 69 73 6e 75 6d | 62 65 72 28 70 29 29 0a |if(isnum|ber(p)).|
|00004a50| 58 09 09 6b 65 79 76 20 | 3d 20 28 6b 65 79 5f 74 |X..keyv |= (key_t|
|00004a60| 29 61 74 6f 6c 28 70 29 | 3b 0a 58 09 65 6c 73 65 |)atol(p)|;.X.else|
|00004a70| 0a 58 09 7b 0a 58 09 09 | 6b 65 79 76 3d 28 6b 65 |.X.{.X..|keyv=(ke|
|00004a80| 79 5f 74 29 30 3b 0a 58 | 09 09 66 6f 72 28 69 3d |y_t)0;.X|..for(i=|
|00004a90| 30 3b 69 3c 73 69 7a 65 | 6f 66 28 6b 65 79 5f 74 |0;i<size|of(key_t|
|00004aa0| 29 20 26 26 20 70 5b 69 | 5d 3b 69 2b 2b 29 0a 58 |) && p[i|];i++).X|
|00004ab0| 09 09 09 6b 65 79 76 3d | 28 6b 65 79 76 20 3c 3c |...keyv=|(keyv <<|
|00004ac0| 20 38 29 20 7c 20 70 5b | 69 5d 3b 0a 58 09 7d 0a | 8) | p[|i];.X.}.|
|00004ad0| 58 09 72 65 74 75 72 6e | 28 6b 65 79 76 29 3b 0a |X.return|(keyv);.|
|00004ae0| 58 7d 0a 58 0a 58 2f 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X}.X.X/*|********|
|00004af0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004b00| 2a 2a 2a 2a 20 69 73 6e | 75 6d 62 65 72 20 2a 2a |**** isn|umber **|
|00004b10| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004b20| 2a 2a 2a 2a 2a 2a 2a 2f | 0a 58 69 6e 74 20 69 73 |*******/|.Xint is|
|00004b30| 6e 75 6d 62 65 72 28 70 | 29 0a 58 63 68 61 72 20 |number(p|).Xchar |
|00004b40| 2a 70 3b 0a 58 7b 0a 58 | 09 66 6f 72 28 20 3b 20 |*p;.X{.X|.for( ; |
|00004b50| 2a 70 20 26 26 20 69 73 | 64 69 67 69 74 28 2a 70 |*p && is|digit(*p|
|00004b60| 29 3b 20 70 2b 2b 29 20 | 3b 0a 58 09 72 65 74 75 |); p++) |;.X.retu|
|00004b70| 72 6e 28 2a 70 20 3f 20 | 30 20 3a 20 31 29 3b 0a |rn(*p ? |0 : 1);.|
|00004b80| 58 7d 0a 58 0a 58 2f 2a | 2a 2a 2a 2a 2a 2a 2a 2a |X}.X.X/*|********|
|00004b90| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004ba0| 2a 2a 2a 20 62 61 64 6e | 65 77 73 20 2a 2a 2a 2a |*** badn|ews ****|
|00004bb0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004bc0| 2a 2a 2a 2a 2a 2a 2f 0a | 58 69 6e 74 20 62 61 64 |******/.|Xint bad|
|00004bd0| 5f 6e 65 77 73 28 29 20 | 2f 2a 20 74 68 69 6e 67 |_news() |/* thing|
|00004be0| 73 20 61 72 65 20 73 63 | 72 65 77 65 64 20 75 70 |s are sc|rewed up|
|00004bf0| 20 2a 2f 0a 58 7b 0a 58 | 66 70 72 69 6e 74 66 28 | */.X{.X|fprintf(|
|00004c00| 73 74 64 65 72 72 2c 22 | 54 49 4d 45 44 20 4f 55 |stderr,"|TIMED OU|
|00004c10| 54 5c 6e 22 29 3b 0a 58 | 65 78 69 74 28 31 29 3b |T\n");.X|exit(1);|
|00004c20| 0a 58 7d 0a 58 0a 58 2f | 2a 2a 2a 2a 2a 2a 2a 2a |.X}.X.X/|********|
|00004c30| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004c40| 2a 2a 2a 2a 2a 2a 2a 2a | 20 71 65 72 72 6f 72 20 |********| qerror |
|00004c50| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004c60| 2a 2a 2a 2a 2a 2a 0a 58 | 20 2a 2a 20 70 72 69 6e |******.X| ** prin|
|00004c70| 74 73 20 6f 75 74 20 74 | 68 65 20 65 72 72 6f 72 |ts out t|he error|
|00004c80| 6d 65 73 73 61 67 65 20 | 61 73 73 6f 63 69 61 74 |message |associat|
|00004c90| 65 20 77 69 74 68 20 61 | 20 71 75 65 75 65 0a 58 |e with a| queue.X|
|00004ca0| 20 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a | *******|********|
|00004cb0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004cc0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004cd0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004ce0| 2f 0a 58 71 65 72 72 6f | 72 28 73 29 0a 58 63 68 |/.Xqerro|r(s).Xch|
|00004cf0| 61 72 20 2a 73 3b 20 2f | 2a 20 6d 65 73 73 61 67 |ar *s; /|* messag|
|00004d00| 65 20 70 72 65 66 69 78 | 20 73 74 72 69 6e 67 20 |e prefix| string |
|00004d10| 2a 2f 0a 58 7b 0a 58 65 | 78 74 65 72 6e 20 69 6e |*/.X{.Xe|xtern in|
|00004d20| 74 20 65 72 72 6e 6f 3b | 0a 58 0a 58 66 70 72 69 |t errno;|.X.Xfpri|
|00004d30| 6e 74 66 28 73 74 64 65 | 72 72 2c 22 51 55 45 55 |ntf(stde|rr,"QUEU|
|00004d40| 45 20 45 52 52 4f 52 3a | 20 25 73 3a 5c 6e 20 20 |E ERROR:| %s:\n |
|00004d50| 20 20 20 22 2c 73 29 3b | 0a 58 73 77 69 74 63 68 | ",s);|.Xswitch|
|00004d60| 28 65 72 72 6e 6f 29 0a | 58 20 20 20 7b 0a 58 20 |(errno).|X {.X |
|00004d70| 20 20 63 61 73 65 20 45 | 41 43 43 45 53 3a 20 66 | case E|ACCES: f|
|00004d80| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 0a 58 |printf(s|tderr,.X|
|00004d90| 20 20 20 20 20 20 20 22 | 6d 65 73 73 61 67 65 20 | "|message |
|00004da0| 71 75 65 75 65 20 65 78 | 69 73 74 73 2c 20 62 75 |queue ex|ists, bu|
|00004db0| 74 20 6c 6f 63 6b 65 64 | 20 6f 75 74 20 28 45 41 |t locked| out (EA|
|00004dc0| 43 43 45 53 29 5c 6e 22 | 29 3b 0a 58 20 20 20 20 |CCES)\n"|);.X |
|00004dd0| 20 20 20 62 72 65 61 6b | 3b 0a 58 20 20 20 63 61 | break|;.X ca|
|00004de0| 73 65 20 45 4e 4f 45 4e | 54 3a 20 66 70 72 69 6e |se ENOEN|T: fprin|
|00004df0| 74 66 28 73 74 64 65 72 | 72 2c 0a 58 20 20 20 20 |tf(stder|r,.X |
|00004e00| 20 20 20 22 6d 65 73 73 | 61 67 65 20 71 75 65 75 | "mess|age queu|
|00004e10| 65 20 64 6f 65 73 20 6e | 6f 74 20 65 78 69 73 74 |e does n|ot exist|
|00004e20| 20 28 45 4e 4f 45 4e 54 | 29 5c 6e 22 29 3b 0a 58 | (ENOENT|)\n");.X|
|00004e30| 20 20 20 20 20 20 20 62 | 72 65 61 6b 3b 0a 58 20 | b|reak;.X |
|00004e40| 20 20 63 61 73 65 20 45 | 4e 4f 53 50 43 3a 20 66 | case E|NOSPC: f|
|00004e50| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 0a 58 |printf(s|tderr,.X|
|00004e60| 20 20 20 20 20 20 20 22 | 74 6f 6f 20 6d 61 6e 6e | "|too mann|
|00004e70| 79 20 6d 65 73 73 61 67 | 65 20 71 75 65 75 73 20 |y messag|e queus |
|00004e80| 28 45 4e 4f 53 50 43 29 | 5c 6e 22 29 3b 0a 58 20 |(ENOSPC)|\n");.X |
|00004e90| 20 20 20 20 20 20 62 72 | 65 61 6b 3b 0a 58 20 20 | br|eak;.X |
|00004ea0| 20 63 61 73 65 20 45 45 | 58 49 53 54 3a 20 66 70 | case EE|XIST: fp|
|00004eb0| 72 69 6e 74 66 28 73 74 | 64 65 72 72 2c 0a 58 20 |rintf(st|derr,.X |
|00004ec0| 20 20 20 20 20 20 22 6d | 65 73 73 61 67 65 20 71 | "m|essage q|
|00004ed0| 75 65 75 65 20 65 78 69 | 73 74 73 2c 20 62 75 74 |ueue exi|sts, but|
|00004ee0| 20 6c 6f 63 6b 65 64 20 | 6f 75 74 20 28 45 45 58 | locked |out (EEX|
|00004ef0| 49 53 54 29 5c 6e 22 29 | 3b 0a 58 20 20 20 20 20 |IST)\n")|;.X |
|00004f00| 20 20 62 72 65 61 6b 3b | 0a 58 20 20 20 64 65 66 | break;|.X def|
|00004f10| 61 75 6c 74 3a 20 66 70 | 72 69 6e 74 66 28 73 74 |ault: fp|rintf(st|
|00004f20| 64 65 72 72 2c 0a 58 20 | 20 20 20 20 20 20 22 75 |derr,.X | "u|
|00004f30| 6e 6b 6e 6f 77 6e 20 65 | 72 72 6f 72 20 28 25 6e |nknown e|rror (%n|
|00004f40| 29 22 2c 65 72 72 6e 6f | 29 3b 0a 58 20 20 20 20 |)",errno|);.X |
|00004f50| 20 20 20 62 72 65 61 6b | 3b 0a 58 20 20 20 7d 0a | break|;.X }.|
|00004f60| 58 72 65 74 75 72 6e 28 | 30 29 3b 0a 58 7d 0a 58 |Xreturn(|0);.X}.X|
|00004f70| 0a 58 2f 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |.X/*****|********|
|00004f80| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004f90| 2a 2a 2a 20 73 65 72 72 | 6f 72 20 2a 2a 2a 2a 2a |*** serr|or *****|
|00004fa0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00004fb0| 2a 0a 58 20 2a 2a 20 70 | 72 69 6e 74 73 20 6f 75 |*.X ** p|rints ou|
|00004fc0| 74 20 74 68 65 20 65 72 | 72 6f 72 6d 65 73 73 61 |t the er|rormessa|
|00004fd0| 67 65 20 61 73 73 6f 63 | 69 61 74 65 20 77 69 74 |ge assoc|iate wit|
|00004fe0| 68 20 61 20 73 65 6d 61 | 70 68 6f 72 65 0a 58 20 |h a sema|phore.X |
|00004ff0| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005000| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005010| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2a |********|********|
|00005020| 2a 2a 2a 2a 2a 2a 2a 2a | 2a 2a 2a 2a 2a 2a 2a 2f |********|*******/|
|00005030| 0a 58 73 65 72 72 6f 72 | 28 73 29 0a 58 63 68 61 |.Xserror|(s).Xcha|
|00005040| 72 20 2a 73 3b 20 2f 2a | 20 6d 65 73 73 61 67 65 |r *s; /*| message|
|00005050| 20 70 72 65 66 69 78 20 | 73 74 72 69 6e 67 20 2a | prefix |string *|
|00005060| 2f 0a 58 7b 0a 58 65 78 | 74 65 72 6e 20 69 6e 74 |/.X{.Xex|tern int|
|00005070| 20 65 72 72 6e 6f 3b 0a | 58 0a 58 66 70 72 69 6e | errno;.|X.Xfprin|
|00005080| 74 66 28 73 74 64 65 72 | 72 2c 22 53 45 4d 41 50 |tf(stder|r,"SEMAP|
|00005090| 48 4f 52 45 20 45 52 52 | 4f 52 3a 20 25 73 3a 5c |HORE ERR|OR: %s:\|
|000050a0| 6e 20 20 20 20 20 22 2c | 73 29 3b 0a 58 73 77 69 |n ",|s);.Xswi|
|000050b0| 74 63 68 28 65 72 72 6e | 6f 29 0a 58 20 20 20 7b |tch(errn|o).X {|
|000050c0| 0a 58 20 20 20 63 61 73 | 65 20 45 49 4e 56 41 4c |.X cas|e EINVAL|
|000050d0| 3a 20 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 |: fprint|f(stderr|
|000050e0| 2c 0a 58 20 20 20 20 20 | 20 20 22 69 6e 76 61 6c |,.X | "inval|
|000050f0| 69 64 20 6e 75 6d 62 65 | 72 20 6f 66 20 73 65 6d |id numbe|r of sem|
|00005100| 61 70 68 6f 72 65 20 73 | 65 74 73 20 28 45 49 4e |aphore s|ets (EIN|
|00005110| 56 41 4c 29 5c 6e 22 29 | 3b 0a 58 20 20 20 20 20 |VAL)\n")|;.X |
|00005120| 20 20 62 72 65 61 6b 3b | 0a 58 20 20 20 63 61 73 | break;|.X cas|
|00005130| 65 20 45 41 43 43 45 53 | 3a 20 66 70 72 69 6e 74 |e EACCES|: fprint|
|00005140| 66 28 73 74 64 65 72 72 | 2c 0a 58 20 20 20 20 20 |f(stderr|,.X |
|00005150| 20 20 22 73 65 6d 61 70 | 68 6f 72 65 20 65 78 69 | "semap|hore exi|
|00005160| 73 74 73 2c 20 62 75 74 | 20 69 6e 76 61 6c 69 64 |sts, but| invalid|
|00005170| 20 6f 70 65 72 61 74 69 | 6f 6e 20 28 45 41 43 43 | operati|on (EACC|
|00005180| 45 53 29 5c 6e 22 29 3b | 0a 58 20 20 20 20 20 20 |ES)\n");|.X |
|00005190| 20 62 72 65 61 6b 3b 0a | 58 20 20 20 63 61 73 65 | break;.|X case|
|000051a0| 20 45 4e 4f 45 4e 54 3a | 20 66 70 72 69 6e 74 66 | ENOENT:| fprintf|
|000051b0| 28 73 74 64 65 72 72 2c | 0a 58 20 20 20 20 20 20 |(stderr,|.X |
|000051c0| 20 22 73 65 6d 61 70 68 | 6f 72 65 20 64 6f 65 73 | "semaph|ore does|
|000051d0| 20 6e 6f 74 20 65 78 69 | 73 74 20 28 45 4e 4f 45 | not exi|st (ENOE|
|000051e0| 4e 54 29 5c 6e 22 29 3b | 0a 58 20 20 20 20 20 20 |NT)\n");|.X |
|000051f0| 20 62 72 65 61 6b 3b 0a | 58 20 20 20 63 61 73 65 | break;.|X case|
|00005200| 20 45 4e 4f 53 50 43 3a | 20 66 70 72 69 6e 74 66 | ENOSPC:| fprintf|
|00005210| 28 73 74 64 65 72 72 2c | 0a 58 20 20 20 20 20 20 |(stderr,|.X |
|00005220| 20 22 74 6f 6f 20 6d 61 | 6e 79 20 73 65 6d 61 70 | "too ma|ny semap|
|00005230| 68 6f 72 65 73 20 28 45 | 4e 4f 53 50 43 29 5c 6e |hores (E|NOSPC)\n|
|00005240| 22 29 3b 0a 58 20 20 20 | 20 20 20 20 62 72 65 61 |");.X | brea|
|00005250| 6b 3b 0a 58 20 20 20 63 | 61 73 65 20 45 45 58 49 |k;.X c|ase EEXI|
|00005260| 53 54 3a 20 66 70 72 69 | 6e 74 66 28 73 74 64 65 |ST: fpri|ntf(stde|
|00005270| 72 72 2c 0a 58 20 20 20 | 20 20 20 20 22 73 65 6d |rr,.X | "sem|
|00005280| 61 70 68 6f 72 65 20 65 | 78 69 73 74 73 2c 20 62 |aphore e|xists, b|
|00005290| 75 74 20 6c 6f 63 6b 65 | 64 20 6f 75 74 20 28 45 |ut locke|d out (E|
|000052a0| 45 58 49 53 54 29 5c 6e | 22 29 3b 0a 58 20 20 20 |EXIST)\n|");.X |
|000052b0| 20 20 20 20 62 72 65 61 | 6b 3b 0a 58 20 20 20 64 | brea|k;.X d|
|000052c0| 65 66 61 75 6c 74 3a 20 | 66 70 72 69 6e 74 66 28 |efault: |fprintf(|
|000052d0| 73 74 64 65 72 72 2c 0a | 58 20 20 20 20 20 20 20 |stderr,.|X |
|000052e0| 22 75 6e 6b 6e 6f 77 6e | 20 65 72 72 6f 72 20 28 |"unknown| error (|
|000052f0| 25 6e 29 22 2c 65 72 72 | 6e 6f 29 3b 0a 58 20 20 |%n)",err|no);.X |
|00005300| 20 20 20 20 20 62 72 65 | 61 6b 3b 0a 58 20 20 20 | bre|ak;.X |
|00005310| 7d 0a 58 72 65 74 75 72 | 6e 28 30 29 3b 0a 58 7d |}.Xretur|n(0);.X}|
|00005320| 0a 45 4e 44 5f 4f 46 5f | 46 49 4c 45 0a 69 66 20 |.END_OF_|FILE.if |
|00005330| 74 65 73 74 20 31 39 37 | 32 38 20 2d 6e 65 20 60 |test 197|28 -ne `|
|00005340| 77 63 20 2d 63 20 3c 27 | 64 62 6d 73 63 6c 69 2e |wc -c <'|dbmscli.|
|00005350| 63 27 60 3b 20 74 68 65 | 6e 0a 20 20 20 20 65 63 |c'`; the|n. ec|
|00005360| 68 6f 20 73 68 61 72 3a | 20 5c 22 27 64 62 6d 73 |ho shar:| \"'dbms|
|00005370| 63 6c 69 2e 63 27 5c 22 | 20 75 6e 70 61 63 6b 65 |cli.c'\"| unpacke|
|00005380| 64 20 77 69 74 68 20 77 | 72 6f 6e 67 20 73 69 7a |d with w|rong siz|
|00005390| 65 21 0a 66 69 0a 63 68 | 6d 6f 64 20 2b 78 20 27 |e!.fi.ch|mod +x '|
|000053a0| 64 62 6d 73 63 6c 69 2e | 63 27 0a 23 20 65 6e 64 |dbmscli.|c'.# end|
|000053b0| 20 6f 66 20 27 64 62 6d | 73 63 6c 69 2e 63 27 0a | of 'dbm|scli.c'.|
|000053c0| 66 69 0a 65 63 68 6f 20 | 73 68 61 72 3a 20 45 6e |fi.echo |shar: En|
|000053d0| 64 20 6f 66 20 61 72 63 | 68 69 76 65 20 35 20 5c |d of arc|hive 5 \|
|000053e0| 28 6f 66 20 35 5c 29 2e | 0a 63 70 20 2f 64 65 76 |(of 5\).|.cp /dev|
|000053f0| 2f 6e 75 6c 6c 20 61 72 | 6b 35 69 73 64 6f 6e 65 |/null ar|k5isdone|
|00005400| 0a 4d 49 53 53 49 4e 47 | 3d 22 22 0a 66 6f 72 20 |.MISSING|="".for |
|00005410| 49 20 69 6e 20 31 20 32 | 20 33 20 34 20 35 20 3b |I in 1 2| 3 4 5 ;|
|00005420| 20 64 6f 0a 20 20 20 20 | 69 66 20 74 65 73 74 20 | do. |if test |
|00005430| 21 20 2d 66 20 61 72 6b | 24 7b 49 7d 69 73 64 6f |! -f ark|${I}isdo|
|00005440| 6e 65 20 3b 20 74 68 65 | 6e 0a 09 4d 49 53 53 49 |ne ; the|n..MISSI|
|00005450| 4e 47 3d 22 24 7b 4d 49 | 53 53 49 4e 47 7d 20 24 |NG="${MI|SSING} $|
|00005460| 7b 49 7d 22 0a 20 20 20 | 20 66 69 0a 64 6f 6e 65 |{I}". | fi.done|
|00005470| 0a 69 66 20 74 65 73 74 | 20 22 24 7b 4d 49 53 53 |.if test| "${MISS|
|00005480| 49 4e 47 7d 22 20 3d 20 | 22 22 20 3b 20 74 68 65 |ING}" = |"" ; the|
|00005490| 6e 0a 20 20 20 20 65 63 | 68 6f 20 59 6f 75 20 68 |n. ec|ho You h|
|000054a0| 61 76 65 20 75 6e 70 61 | 63 6b 65 64 20 61 6c 6c |ave unpa|cked all|
|000054b0| 20 35 20 61 72 63 68 69 | 76 65 73 2e 0a 20 20 20 | 5 archi|ves.. |
|000054c0| 20 72 6d 20 2d 66 20 61 | 72 6b 5b 31 2d 39 5d 69 | rm -f a|rk[1-9]i|
|000054d0| 73 64 6f 6e 65 0a 65 6c | 73 65 0a 20 20 20 20 65 |sdone.el|se. e|
|000054e0| 63 68 6f 20 59 6f 75 20 | 73 74 69 6c 6c 20 6e 65 |cho You |still ne|
|000054f0| 65 64 20 74 6f 20 75 6e | 70 61 63 6b 20 74 68 65 |ed to un|pack the|
|00005500| 20 66 6f 6c 6c 6f 77 69 | 6e 67 20 61 72 63 68 69 | followi|ng archi|
|00005510| 76 65 73 3a 0a 20 20 20 | 20 65 63 68 6f 20 22 20 |ves:. | echo " |
|00005520| 20 20 20 20 20 20 20 22 | 20 24 7b 4d 49 53 53 49 | "| ${MISSI|
|00005530| 4e 47 7d 0a 66 69 0a 23 | 23 20 20 45 6e 64 20 6f |NG}.fi.#|# End o|
|00005540| 66 20 73 68 65 6c 6c 20 | 61 72 63 68 69 76 65 2e |f shell |archive.|
|00005550| 0a 65 78 69 74 20 30 0a | 65 78 69 74 20 30 20 23 |.exit 0.|exit 0 #|
|00005560| 20 4a 75 73 74 20 69 6e | 20 63 61 73 65 2e 2e 2e | Just in| case...|
|00005570| 0a 2d 2d 20 0a 50 6c 65 | 61 73 65 20 73 65 6e 64 |.-- .Ple|ase send|
|00005580| 20 63 6f 6d 70 2e 73 6f | 75 72 63 65 73 2e 75 6e | comp.so|urces.un|
|00005590| 69 78 2d 72 65 6c 61 74 | 65 64 20 6d 61 69 6c 20 |ix-relat|ed mail |
|000055a0| 74 6f 20 72 73 61 6c 7a | 40 75 75 6e 65 74 2e 75 |to rsalz|@uunet.u|
|000055b0| 75 2e 6e 65 74 2e 0a 55 | 73 65 20 61 20 64 6f 6d |u.net..U|se a dom|
|000055c0| 61 69 6e 2d 62 61 73 65 | 64 20 61 64 64 72 65 73 |ain-base|d addres|
|000055d0| 73 20 6f 72 20 67 69 76 | 65 20 61 6c 74 65 72 6e |s or giv|e altern|
|000055e0| 61 74 65 20 70 61 74 68 | 73 2c 20 6f 72 20 79 6f |ate path|s, or yo|
|000055f0| 75 20 6d 61 79 20 6c 6f | 73 65 20 6f 75 74 2e 0a |u may lo|se out..|
|00005600| 0a 0a | |.. | |
+--------+-------------------------+-------------------------+--------+--------+