home *** CD-ROM | disk | FTP | other *** search
view JSON data
|
view as text
|
open on a Mac
|
open on a PC
This file was processed as: Amiga Disk Format (FFS)
(archive/adfFFS).
You can browse this item here: ma64.adf
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Amiga Disk Format (FFS) (archive/adfFFS)
| magic
| Supported |
100%
| dexvert
| Amiga Disk Format (OFS) (archive/adfOFS)
| magic
| Supported |
1%
| dexvert
| ABackup Disk Image (archive/abackupDiskImage)
| ext
| Unsupported |
1%
| dexvert
| Amiga Hard Disk Image (PFS) (archive/amigaHardDiskPFS)
| ext
| Unsupported |
1%
| dexvert
| Amiga Kickstart disk image (archive/amigaKickstartDiskImage)
| ext
| Unsupported |
1%
| dexvert
| ESRI Arc/Info Binary Grid (other/esriArcInfoBinaryGrid)
| ext
| Unsupported |
100%
| file
| Amiga FFS disk (DD 880 KiB), "MAShare_64", directory cache block 0x371
| default
| |
99%
| file
| data
| default
| |
56%
| TrID
| Amiga Disk image File (FFS)
| default
| |
42%
| TrID
| Amiga Disk image File (generic)
| default (weak)
| |
1%
| TrID
| Memo File Apollo Database Engine
| default (weak)
| |
0%
| TrID
| VXD Driver
| default (weak)
| |
0%
| TrID
| Sybase iAnywhere database files
| default (weak)
| |
100%
| siegfried
| fmt/1361 Amiga Disk File
| default
| |
100%
| disktype
| Amiga FFS file system (non-intl.) Type "DOS\1" Size matches DD floppy
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 44 4f 53 01 00 00 00 00 | 00 00 00 00 00 00 00 00 |DOS.....|........|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000050| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000060| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000080| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000090| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000000f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000100| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000110| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000120| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000130| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000140| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000150| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000160| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000170| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000180| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000190| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000001f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000200| 44 4f 53 81 44 4f 53 81 | 44 4f 53 83 44 4f 53 83 |DOS.DOS.|DOS.DOS.|
|00000210| 44 4f 53 85 44 4f 53 85 | 44 4f 53 87 44 4f 53 87 |DOS.DOS.|DOS.DOS.|
|00000220| 44 4f 53 89 44 4f 53 89 | 44 4f 53 8b 44 4f 53 8b |DOS.DOS.|DOS.DOS.|
|00000230| 44 4f 53 8d 44 4f 53 8d | 44 4f 53 8f 44 4f 53 8f |DOS.DOS.|DOS.DOS.|
|00000240| 44 4f 53 91 44 4f 53 91 | 44 4f 53 93 44 4f 53 93 |DOS.DOS.|DOS.DOS.|
|00000250| 44 4f 53 95 44 4f 53 95 | 44 4f 53 97 44 4f 53 97 |DOS.DOS.|DOS.DOS.|
|00000260| 44 4f 53 99 44 4f 53 99 | 44 4f 53 9b 44 4f 53 9b |DOS.DOS.|DOS.DOS.|
|00000270| 44 4f 53 9d 44 4f 53 9d | 44 4f 53 9f 44 4f 53 9f |DOS.DOS.|DOS.DOS.|
|00000280| 44 4f 53 a1 44 4f 53 a1 | 44 4f 53 a3 44 4f 53 a3 |DOS.DOS.|DOS.DOS.|
|00000290| 44 4f 53 a5 44 4f 53 a5 | 44 4f 53 a7 44 4f 53 a7 |DOS.DOS.|DOS.DOS.|
|000002a0| 44 4f 53 a9 44 4f 53 a9 | 44 4f 53 ab 44 4f 53 ab |DOS.DOS.|DOS.DOS.|
|000002b0| 44 4f 53 ad 44 4f 53 ad | 44 4f 53 af 44 4f 53 af |DOS.DOS.|DOS.DOS.|
|000002c0| 44 4f 53 b1 44 4f 53 b1 | 44 4f 53 b3 44 4f 53 b3 |DOS.DOS.|DOS.DOS.|
|000002d0| 44 4f 53 b5 44 4f 53 b5 | 44 4f 53 b7 44 4f 53 b7 |DOS.DOS.|DOS.DOS.|
|000002e0| 44 4f 53 b9 44 4f 53 b9 | 44 4f 53 bb 44 4f 53 bb |DOS.DOS.|DOS.DOS.|
|000002f0| 44 4f 53 bd 44 4f 53 bd | 44 4f 53 bf 44 4f 53 bf |DOS.DOS.|DOS.DOS.|
|00000300| 44 4f 53 c1 44 4f 53 c1 | 44 4f 53 c3 44 4f 53 c3 |DOS.DOS.|DOS.DOS.|
|00000310| 44 4f 53 c5 44 4f 53 c5 | 44 4f 53 c7 44 4f 53 c7 |DOS.DOS.|DOS.DOS.|
|00000320| 44 4f 53 c9 44 4f 53 c9 | 44 4f 53 cb 44 4f 53 cb |DOS.DOS.|DOS.DOS.|
|00000330| 44 4f 53 cd 44 4f 53 cd | 44 4f 53 cf 44 4f 53 cf |DOS.DOS.|DOS.DOS.|
|00000340| 44 4f 53 d1 44 4f 53 d1 | 44 4f 53 d3 44 4f 53 d3 |DOS.DOS.|DOS.DOS.|
|00000350| 44 4f 53 d5 44 4f 53 d5 | 44 4f 53 d7 44 4f 53 d7 |DOS.DOS.|DOS.DOS.|
|00000360| 44 4f 53 d9 44 4f 53 d9 | 44 4f 53 db 44 4f 53 db |DOS.DOS.|DOS.DOS.|
|00000370| 44 4f 53 dd 44 4f 53 dd | 44 4f 53 df 44 4f 53 df |DOS.DOS.|DOS.DOS.|
|00000380| 44 4f 53 e1 44 4f 53 e1 | 44 4f 53 e3 44 4f 53 e3 |DOS.DOS.|DOS.DOS.|
|00000390| 44 4f 53 e5 44 4f 53 e5 | 44 4f 53 e7 44 4f 53 e7 |DOS.DOS.|DOS.DOS.|
|000003a0| 44 4f 53 e9 44 4f 53 e9 | 44 4f 53 eb 44 4f 53 eb |DOS.DOS.|DOS.DOS.|
|000003b0| 44 4f 53 ed 44 4f 53 ed | 44 4f 53 ef 44 4f 53 ef |DOS.DOS.|DOS.DOS.|
|000003c0| 44 4f 53 f1 44 4f 53 f1 | 44 4f 53 f3 44 4f 53 f3 |DOS.DOS.|DOS.DOS.|
|000003d0| 44 4f 53 f5 44 4f 53 f5 | 44 4f 53 f7 44 4f 53 f7 |DOS.DOS.|DOS.DOS.|
|000003e0| 44 4f 53 f9 44 4f 53 f9 | 44 4f 53 fb 44 4f 53 fb |DOS.DOS.|DOS.DOS.|
|000003f0| 44 4f 53 fd 44 4f 53 fd | 44 4f 53 ff 44 4f 53 ff |DOS.DOS.|DOS.DOS.|
|00000400| 61 00 ed 88 4f ef 00 0c | 2f 6c 0e 00 00 58 20 6f |a...O...|/l...X o|
|00000410| 00 54 2f 50 00 4c 20 06 | 53 86 4a 80 67 0e 20 6f |.T/P.L .|S.J.g. o|
|00000420| 00 4c 4a 90 67 06 2f 50 | 00 4c 60 ea 20 6f 00 4c |.LJ.g./P|.L`. o.L|
|00000430| 4a 90 67 4e 2f 6c 10 38 | 00 48 4a af 00 48 67 26 |J.gN/l.8|.HJ..Hg&|
|00000440| 20 6f 00 48 d0 fc 01 57 | 24 6f 00 4c 22 6a 00 0a | o.H...W|$o.L"j..|
|00000450| 10 18 b0 19 66 06 4a 00 | 66 f6 67 0a 20 6f 00 48 |....f.J.|f.g. o.H|
|00000460| 2f 50 00 48 60 d4 20 2f | 00 48 67 16 2f 2f 00 70 |/P.H`. /|.Hg.//.p|
|00000470| 2f 2f 00 78 2f 2f 00 94 | 2f 00 61 00 f6 48 4f ef |//.x//..|/.a..HO.|
|00000480| 00 10 2f 2f 00 54 61 00 | ee 30 58 4f 70 00 20 6f |..//.Ta.|.0XOp. o|
|00000490| 00 90 10 28 00 0f 72 01 | 24 01 e1 a2 70 00 20 6f |...(..r.|$...p. o|
|000004a0| 00 94 10 28 00 0f 26 01 | e1 a3 84 83 70 00 20 6f |...(..&.|....p. o|
|000004b0| 00 8c 10 28 00 0f e1 a1 | 84 81 2e 02 60 00 fe 6c |...(....|....`..l|
|000004c0| 22 6f 00 50 2c 6f 00 7c | 4e ae ff b2 60 00 fe 5c |"o.P,o.||N...`..\|
|000004d0| 20 6f 00 8c 2c 78 00 04 | 4e ae fe 8c 2f 40 00 50 | o..,x..|N.../@.P|
|000004e0| 67 00 00 9c 22 40 20 69 | 00 2c 2f 68 00 78 00 48 |g..."@ i|.,/h.x.H|
|000004f0| 20 29 00 14 72 40 90 81 | 67 2a 04 80 00 00 01 c0 | )..r@..|g*......|
|00000500| 66 6c 22 6f 00 50 2c 78 | 00 04 4e ae fe 86 2f 2f |fl"o.P,x|..N...//|
|00000510| 00 74 2f 2f 00 90 2f 2f | 00 50 61 00 f8 56 4f ef |.t//..//|.Pa..VO.|
|00000520| 00 0c 60 ac 22 6f 00 50 | 20 69 00 1c 70 01 b0 68 |..`."o.P| i..p..h|
|00000530| 00 26 66 1e 22 6f 00 48 | 20 69 00 1c 22 68 00 10 |.&f."o.H| i.."h..|
|00000540| 24 6f 00 48 20 2a 00 44 | 2c 78 00 04 4e ae fe bc |$o.H *.D|,x..N...|
|00000550| 60 1c 22 6f 00 48 20 69 | 00 1c 22 68 00 10 24 6f |`."o.H i|.."h..$o|
|00000560| 00 48 20 2a 00 48 2c 78 | 00 04 4e ae fe bc 22 6f |.H *.H,x|..N..."o|
|00000570| 00 50 2c 78 00 04 4e ae | fe 86 60 00 ff 54 20 6f |.P,x..N.|..`..T o|
|00000580| 00 94 2c 78 00 04 4e ae | fe 8c 2f 40 00 80 67 00 |..,x..N.|../@..g.|
|00000590| fa ea 70 00 20 6f 00 80 | 30 28 00 14 53 80 6d 00 |..p. o..|0(..S.m.|
|000005a0| 01 6c 0c 80 00 00 00 07 | 6c 00 01 62 d0 40 30 3b |.l......|l..b.@0;|
|000005b0| 00 06 4e fb 00 04 00 0c | 01 54 01 54 00 be 00 e4 |..N.....|.T.T....|
|000005c0| 00 fe 01 34 20 6f 00 58 | 22 6c 0e 00 b3 c8 67 1a |...4 o.X|"l....g.|
|000005d0| 2f 2f 00 7c 2f 2f 00 78 | 2f 08 61 00 eb ae 2e af |//.|//.x|/.a.....|
|000005e0| 00 60 61 00 ec d4 4f ef | 00 0c 2c 78 00 04 4e ae |.`a...O.|..,x..N.|
|000005f0| ff 7c 20 6f 00 90 2c 78 | 00 04 4e ae fe 8c 2f 40 |.| o..,x|..N.../@|
|00000600| 00 5c 67 08 22 40 4e ae | fe 86 60 e6 20 6f 00 6c |.\g."@N.|..`. o.l|
|00000610| 2c 6f 00 78 4e ae ff ca | 2c 78 00 04 4e ae ff 76 |,o.xN...|,x..N..v|
|00000620| 22 6f 00 88 4e ae fd 4e | 2f 2f 00 8c 4e ba 10 f4 |"o..N..N|//..N...|
|00000630| 2e af 00 94 4e ba 10 ec | 2e 8b 4e ba 10 e6 2e 8d |....N...|..N.....|
|00000640| 4e ba 10 e0 22 6f 00 7c | 4e ae fe 62 22 6f 00 80 |N..."o.||N..b"o..|
|00000650| 4e ae fe 62 22 6f 00 74 | 4e ae fe 62 22 6f 00 78 |N..b"o.t|N..b"o.x|
|00000660| 4e ae fe 62 4e ae ff 7c | 22 6f 00 84 4e ae fe 86 |N..bN..||"o..N...|
|00000670| 58 4f 60 00 00 a8 20 6f | 00 80 4a 68 00 16 67 00 |XO`... o|..Jh..g.|
|00000680| 00 8c 2f 2f 00 70 2f 2f | 00 78 2f 2f 00 94 2f 28 |..//.p//|.x//../(|
|00000690| 00 18 61 00 f4 30 4f ef | 00 10 60 70 2f 2f 00 74 |..a..0O.|..`p//.t|
|000006a0| 2f 2f 00 90 20 6f 00 88 | 2f 28 00 18 61 00 f6 c4 |//.. o..|/(..a...|
|000006b0| 4f ef 00 0c 60 56 22 6f | 00 80 20 69 00 18 4a a8 |O...`V"o|.. i..J.|
|000006c0| 00 4c 67 48 2f 2f 00 70 | 2f 2f 00 78 2f 08 61 00 |.LgH//.p|//.x/.a.|
|000006d0| f3 52 2e af 00 7c 2f 2f | 00 80 20 6f 00 90 2f 28 |.R...|//|.. o../(|
|000006e0| 00 18 61 00 f1 52 4f ef | 00 14 60 20 22 6f 00 80 |..a..RO.|..` "o..|
|000006f0| 20 69 00 18 4a a8 00 4c | 67 12 2f 2f 00 70 2f 2f | i..J..L|g.//.p//|
|00000700| 00 78 2f 08 61 00 ed 0a | 4f ef 00 0c 22 6f 00 80 |.x/.a...|O..."o..|
|00000710| 2c 78 00 04 4e ae fe 86 | 60 00 fe 64 4c df 7c fc |,x..N...|`..dL.|.|
|00000720| de fc 00 70 4e 75 00 00 | 4e f9 00 00 00 00 4e f9 |...pNu..|N.....N.|
|00000730| 00 00 00 00 59 4f 48 e7 | 01 06 2a 6f 00 14 20 4d |....YOH.|..*o.. M|
|00000740| 4a 18 66 fc 53 88 91 cd | 2e 08 20 07 52 80 72 00 |J.f.S...|.. .R.r.|
|00000750| 2c 78 00 04 4e ae fd 54 | 2f 40 00 0c 67 1a 22 07 |,x..N..T|/@..g.".|
|00000760| 20 40 10 81 4a 87 6f 0e | 43 e8 00 01 20 4d 60 02 | @..J.o.|C... M`.|
|00000770| 12 d8 53 81 64 fa e4 88 | 4c df 60 80 58 4f 4e 75 |..S.d...|L.`.XONu|
|00000780| 48 e7 01 02 2e 2f 00 0c | 20 07 e5 80 22 40 2c 78 |H..../..| ..."@,x|
|00000790| 00 04 4e ae fd 4e 4c df | 40 80 4e 75 48 e7 01 16 |..N..NL.|@.NuH...|
|000007a0| 2e 2f 00 14 2a 6f 00 18 | 20 07 e5 80 26 40 20 6b |./..*o..| ...&@ k|
|000007b0| 00 0c 22 55 2c 78 00 04 | 4e ae fe 92 4c df 68 80 |.."U,x..|N...L.h.|
|000007c0| 4e 75 9e fc 00 58 48 e7 | 3f 3e 49 f9 00 00 00 00 |Nu...XH.|?>I.....|
|000007d0| 42 af 00 58 93 c9 2c 78 | 00 04 4e ae fe da 20 40 |B..X..,x|..N... @|
|000007e0| 43 e8 00 5c 2f 40 00 80 | 2f 49 00 7c 20 49 4e ae |C..\/@..|/I.| IN.|
|000007f0| fe 80 20 6f 00 7c 4e ae | fe 8c 2a 40 26 6d 00 0a |.. o.|N.|..*@&m..|
|00000800| 2f 6b 00 04 00 78 27 6f | 00 7c 00 04 42 a7 42 a7 |/k...x'o|.|..B.B.|
|00000810| 4e ba 0f 0a 50 4f 2f 40 | 00 74 66 18 42 ab 00 0c |N...PO/@|.tf.B...|
|00000820| 70 67 27 40 00 10 20 6f | 00 78 22 53 4e ae fe 92 |pg'@.. o|.x"SN...|
|00000830| 60 00 0e e0 43 ec 0e 98 | 70 24 4e ae fd d8 29 40 |`...C...|p$N...)@|
|00000840| 10 88 66 22 2f 2f 00 74 | 4e ba 0e d8 42 ab 00 0c |..f"//.t|N...B...|
|00000850| 70 7a 27 40 00 10 20 6f | 00 7c 22 53 4e ae fe 92 |pz'@.. o|.|"SN...|
|00000860| 58 4f 60 00 0e ae 70 ff | 27 40 00 0c 42 ab 00 10 |XO`...p.|'@..B...|
|00000870| 20 6f 00 78 22 53 4e ae | fe 92 70 00 20 6f 00 7c | o.x"SN.|..p. o.||
|00000880| 10 28 00 0f 72 01 e1 a1 | 2e 01 20 07 2c 78 00 04 |.(..r...|.. .,x..|
|00000890| 4e ae fe c2 20 6f 00 7c | 2c 78 00 04 4e ae fe 8c |N... o.||,x..N...|
|000008a0| 2a 40 20 0d 67 e4 26 6d | 00 0a 2f 6b 00 04 00 78 |*@ .g.&m|../k...x|
|000008b0| 20 2b 00 08 5b 80 67 00 | 00 9e 57 80 67 00 01 00 | +..[.g.|..W.g...|
|000008c0| 5f 80 67 00 02 6c 53 80 | 67 00 03 14 53 80 67 00 |_.g..lS.|g...S.g.|
|000008d0| 03 c0 55 80 67 00 05 86 | 55 80 67 00 06 36 53 80 |..U.g...|U.g..6S.|
|000008e0| 67 00 06 e6 53 80 67 00 | 07 92 53 80 67 00 08 00 |g...S.g.|..S.g...|
|000008f0| 59 80 67 00 08 4a 53 80 | 67 00 08 fa 5b 80 67 00 |Y.g..JS.|g...[.g.|
|00000900| 09 72 5d 80 67 00 09 b2 | 72 2a 90 81 67 00 0a 42 |.r].g...|r*..g..B|
|00000910| 5b 80 67 00 0a 3c 04 80 | 00 00 03 95 67 00 0a 70 |[.g..<..|....g..p|
|00000920| 53 80 67 00 0a 6a 53 80 | 67 00 0a 64 53 80 67 00 |S.g..jS.|g..dS.g.|
|00000930| 0b 86 53 80 67 00 0b c6 | 72 12 90 81 67 00 0b fc |..S.g...|r...g...|
|00000940| 59 80 67 00 0c a2 53 80 | 67 00 08 cc 57 80 67 00 |Y.g...S.|g...W.g.|
|00000950| 0d 50 60 00 0d 9a 2f 6f | 00 58 00 4c 4a af 00 4c |.P`.../o|.X.LJ..L|
|00000960| 67 28 20 6f 00 4c 2f 68 | 00 14 00 50 20 28 00 1c |g( o.L/h|...P (..|
|00000970| 22 2c 10 14 b2 80 67 0a | 22 00 2c 6c 10 88 4e ae |",....g.|".,l..N.|
|00000980| ff a6 2f 6f 00 50 00 4c | 60 d2 22 6c 10 88 2c 78 |../o.P.L|`."l..,x|
|00000990| 00 04 4e ae fe 62 2f 2f | 00 74 4e ba 0d 86 4e ae |..N..b//|.tN...N.|
|000009a0| ff 7c 70 ff 27 40 00 0c | 27 6f 00 5c 00 10 20 6f |.|p.'@..|'o.\.. o|
|000009b0| 00 7c 22 53 4e ae fe 92 | 58 4f 60 00 0d 56 20 2b |.|"SN...|XO`..V +|
|000009c0| 00 14 e5 80 22 2b 00 18 | e5 81 48 6f 00 68 2f 01 |...."+..|..Ho.h/.|
|000009d0| 2f 00 4e ba 0e 4e 4f ef | 00 0c 4a 80 66 0e 42 ab |/.N..NO.|..J.f.B.|
|000009e0| 00 0c 70 67 27 40 00 10 | 60 00 0d 10 70 24 72 00 |..pg'@..|`...p$r.|
|000009f0| 2c 78 00 04 4e ae fd 54 | 2f 40 00 50 66 18 42 ab |,x..N..T|/@.Pf.B.|
|00000a00| 00 0c 70 67 27 40 00 10 | 48 6f 00 68 4e ba 12 20 |..pg'@..|Ho.hN.. |
|00000a10| 58 4f 60 00 0c e6 4a af | 00 6c 66 32 70 ff b0 ab |XO`...J.|.lf2p...|
|00000a20| 00 1c 66 22 22 6f 00 50 | 4e ae fd 4e 48 6f 00 68 |..f""o.P|N..NHo.h|
|00000a30| 4e ba 11 fc 58 4f 42 ab | 00 0c 27 7c 00 00 00 ca |N...XOB.|..'|....|
|00000a40| 00 10 60 00 0c b6 2c 2c | 10 14 60 00 00 80 2a 2b |..`...,,|..`...*+|
|00000a50| 00 14 2f 6b 00 18 00 3c | 27 6c 10 14 00 14 2f 2f |../k...<|'l....//|
|00000a60| 00 6c 61 00 fc d0 58 4f | 2f 40 00 30 66 20 22 6f |.la...XO|/@.0f "o|
|00000a70| 00 50 4e ae fd 4e 48 6f | 00 68 4e ba 11 b2 58 4f |.PN..NHo|.hN...XO|
|00000a80| 42 ab 00 0c 70 67 27 40 | 00 10 60 00 0c 6e 27 6f |B...pg'@|..`..n'o|
|00000a90| 00 30 00 18 27 6f 00 74 | 00 04 2f 0b 2f 2c 10 14 |.0..'o.t|.././,..|
|00000aa0| 61 00 fc fa 20 6f 00 7c | 4e ae fe 80 20 6f 00 7c |a... o.||N... o.||
|00000ab0| 4e ae fe 8c 27 45 00 14 | 27 6f 00 44 00 18 2e af |N...'E..|'o.D....|
|00000ac0| 00 38 61 00 fc bc 50 4f | 2c 2b 00 0c 4a 86 66 16 |.8a...PO|,+..J.f.|
|00000ad0| 22 6f 00 50 4e ae fd 4e | 48 6f 00 68 4e ba 11 50 |"o.PN..N|Ho.hN..P|
|00000ae0| 58 4f 60 00 0c 16 20 6f | 00 50 21 6f 00 7c 00 18 |XO`... o|.P!o.|..|
|00000af0| 21 6f 00 58 00 14 2f 48 | 00 58 21 46 00 1c 21 6b |!o.X../H|.X!F..!k|
|00000b00| 00 1c 00 08 21 6c 0f f8 | 00 0c 20 2c 10 0c e4 88 |....!l..|.. ,....|
|00000b10| 21 40 00 10 48 6f 00 68 | 4e ba 11 14 58 4f 20 2f |!@..Ho.h|N...XO /|
|00000b20| 00 50 e4 88 27 40 00 0c | 42 ab 00 10 60 00 0b cc |.P..'@..|B...`...|
|00000b30| 41 ef 00 58 20 2b 00 14 | e5 80 2f 40 00 50 2f 48 |A..X +..|../@.P/H|
|00000b40| 00 54 20 6f 00 54 20 10 | 67 14 22 6f 00 50 b3 c0 |.T o.T .|g."o.P..|
|00000b50| 67 0c 20 40 43 e8 00 14 | 2f 49 00 54 60 e4 20 6f |g. @C...|/I.T`. o|
|00000b60| 00 54 4a 90 66 10 42 ab | 00 0c 27 7c 00 00 00 d3 |.TJ.f.B.|..'|....|
|00000b70| 00 10 60 00 0b 86 20 6f | 00 50 22 6f 00 54 22 a8 |..`... o|.P"o.T".|
|00000b80| 00 14 20 28 00 1c 22 2c | 10 14 b2 80 67 36 27 6f |.. (..",|....g6'o|
|00000b90| 00 74 00 04 2a 2b 00 14 | 20 28 00 1c 27 40 00 14 |.t..*+..| (..'@..|
|00000ba0| 2f 0b 2f 28 00 1c 61 00 | fb f4 50 4f 20 6f 00 74 |/./(..a.|..PO o.t|
|00000bb0| 2c 78 00 04 4e ae fe 80 | 20 6f 00 74 4e ae fe 8c |,x..N...| o.tN...|
|00000bc0| 27 45 00 14 22 6f 00 50 | 2c 78 00 04 4e ae fd 4e |'E.."o.P|,x..N..N|
|00000bd0| 70 ff 27 40 00 0c 42 ab | 00 10 60 00 0b 1e 20 2b |p.'@..B.|..`... +|
|00000be0| 00 14 e5 80 22 2b 00 18 | e5 81 48 6f 00 68 2f 01 |...."+..|..Ho.h/.|
|00000bf0| 2f 00 4e ba 0c 2e 4f ef | 00 0c 4a 80 66 0e 42 ab |/.N...O.|..J.f.B.|
|00000c00| 00 0c 70 67 27 40 00 10 | 60 00 0a f0 2a 2b 00 14 |..pg'@..|`...*+..|
|00000c10| 2f 6b 00 18 00 3c 27 6c | 10 14 00 14 2f 2f 00 6c |/k...<'l|....//.l|
|00000c20| 61 00 fb 12 58 4f 2f 40 | 00 30 66 18 48 6f 00 68 |a...XO/@|.0f.Ho.h|
|00000c30| 4e ba 0f fc 58 4f 42 ab | 00 0c 70 67 27 40 00 10 |N...XOB.|..pg'@..|
|00000c40| 60 00 0a b8 27 6f 00 30 | 00 18 27 6f 00 74 00 04 |`...'o.0|..'o.t..|
|00000c50| 2f 0b 2f 2c 10 14 61 00 | fb 44 20 6f 00 7c 2c 78 |/./,..a.|.D o.|,x|
|00000c60| 00 04 4e ae fe 80 20 6f | 00 7c 4e ae fe 8c 27 45 |..N... o|.|N...'E|
|00000c70| 00 14 27 6f 00 44 00 18 | 2e af 00 38 61 00 fb 02 |..'o.D..|...8a...|
|00000c80| 48 6f 00 70 4e ba 0f a8 | 4f ef 00 0c 60 00 0a 6c |Ho.pN...|O...`..l|
|00000c90| 20 2b 00 14 e5 80 22 2b | 00 18 e5 81 48 6f 00 68 | +...."+|....Ho.h|
|00000ca0| 2f 01 2f 00 4e ba 0b 7c | 4f ef 00 0c 4a 80 66 0e |/./.N..||O...J.f.|
|00000cb0| 42 ab 00 0c 70 67 27 40 | 00 10 60 00 0a 3e 20 2b |B...pg'@|..`..> +|
|00000cc0| 00 1c e5 80 22 2b 00 20 | e5 81 48 6f 00 5c 2f 01 |...."+. |..Ho.\/.|
|00000cd0| 2f 00 4e ba 0b 4e 4f ef | 00 0c 4a 80 66 18 48 6f |/.N..NO.|..J.f.Ho|
|00000ce0| 00 68 4e ba 0f 4a 58 4f | 42 ab 00 0c 70 67 27 40 |.hN..JXO|B...pg'@|
|00000cf0| 00 10 60 00 0a 06 2a 2b | 00 14 2f 6b 00 18 00 3c |..`...*+|../k...<|
|00000d00| 2f 6b 00 1c 00 38 2f 6b | 00 20 00 34 4a af 00 60 |/k...8/k|. .4J..`|
|00000d10| 66 6c 20 2f 00 64 67 0a | 22 40 2c 78 00 04 4e ae |fl /.dg.|"@,x..N.|
|00000d20| fd 4e 20 6f 00 5c 22 68 | 00 0a 20 09 4a 19 66 fc |.N o.\"h|.. .J.f.|
|00000d30| 53 89 93 c0 20 09 52 80 | 72 00 2c 78 00 04 4e ae |S... .R.|r.,x..N.|
|00000d40| fd 54 2f 40 00 64 66 20 | 42 ab 00 0c 70 67 27 40 |.T/@.df |B...pg'@|
|00000d50| 00 10 48 6f 00 68 4e ba | 0e d6 48 6f 00 60 4e ba |..Ho.hN.|..Ho.`N.|
|00000d60| 0e ce 50 4f 60 00 09 94 | 20 6f 00 5c 22 68 00 0a |..PO`...| o.\"h..|
|00000d70| 24 6f 00 64 14 d9 66 fc | 2f 6f 00 64 00 60 2f 2f |$o.d..f.|/o.d.`//|
|00000d80| 00 6c 61 00 f9 b0 2e af | 00 64 2f 40 00 34 61 00 |.la.....|.d/@.4a.|
|00000d90| f9 a4 58 4f 2f 40 00 2c | 20 2f 00 30 67 06 4a af |..XO/@.,| /.0g.J.|
|00000da0| 00 2c 66 3a 4a 80 67 08 | 2f 00 61 00 f9 d4 58 4f |.,f:J.g.|/.a...XO|
|00000db0| 20 2f 00 2c 67 08 2f 00 | 61 00 f9 c6 58 4f 48 6f | /.,g./.|a...XOHo|
|00000dc0| 00 68 4e ba 0e 6a 48 6f | 00 60 4e ba 0e 62 50 4f |.hN..jHo|.`N..bPO|
|00000dd0| 42 ab 00 0c 70 67 27 40 | 00 10 60 00 09 1e 20 2c |B...pg'@|..`... ,|
|00000de0| 10 14 27 40 00 14 27 6f | 00 30 00 18 20 2c 10 14 |..'@..'o|.0.. ,..|
|00000df0| 27 40 00 1c 27 6f 00 2c | 00 20 27 6f 00 74 00 04 |'@..'o.,|. 'o.t..|
|00000e00| 2f 0b 2f 2c 10 14 61 00 | f9 94 20 6f 00 7c 2c 78 |/./,..a.|.. o.|,x|
|00000e10| 00 04 4e ae fe 80 20 6f | 00 7c 4e ae fe 8c 27 45 |..N... o|.|N...'E|
|00000e20| 00 14 27 6f 00 44 00 18 | 27 6f 00 40 00 1c 27 6f |..'o.D..|'o.@..'o|
|00000e30| 00 3c 00 20 2e af 00 38 | 61 00 f9 46 2e af 00 34 |.<. ...8|a..F...4|
|00000e40| 61 00 f9 3e 48 6f 00 70 | 4e ba 0d e4 48 6f 00 68 |a..>Ho.p|N...Ho.h|
|00000e50| 4e ba 0d dc 4f ef 00 10 | 60 00 08 a0 20 2b 00 14 |N...O...|`... +..|
|00000e60| e5 80 20 40 2c 28 00 1c | 2f 40 00 50 70 24 72 00 |.. @,(..|/@.Pp$r.|
|00000e70| 2c 78 00 04 4e ae fd 54 | 2f 40 00 50 66 0e 42 ab |,x..N..T|/@.Pf.B.|
|00000e80| 00 0c 70 67 27 40 00 10 | 60 00 08 70 20 2c 10 14 |..pg'@..|`..p ,..|
|00000e90| b0 86 67 30 2a 2b 00 14 | 27 46 00 14 27 6f 00 74 |..g0*+..|'F..'o.t|
|00000ea0| 00 04 2f 0b 2f 06 61 00 | f8 f4 50 4f 20 6f 00 74 |.././.a.|..PO o.t|
|00000eb0| 4e ae fe 80 20 6f 00 74 | 4e ae fe 8c 2c 2b 00 0c |N... o.t|N...,+..|
|00000ec0| 27 45 00 14 4a 86 66 0c | 22 6f 00 50 4e ae fd 4e |'E..J.f.|"o.PN..N|
|00000ed0| 60 00 08 28 20 6f 00 50 | 21 6f 00 7c 00 18 21 6f |`..( o.P|!o.|..!o|
|00000ee0| 00 58 00 14 2f 48 00 58 | 21 46 00 1c 70 fe 21 40 |.X../H.X|!F..p.!@|
|00000ef0| 00 08 21 6c 0f f8 00 0c | 20 2c 10 0c e4 88 21 40 |..!l....| ,....!@|
|00000f00| 00 10 20 08 e4 88 27 40 | 00 0c 42 ab 00 10 60 00 |.. ...'@|..B...`.|
|00000f10| 07 ea 20 2b 00 18 e5 80 | 22 2b 00 1c e5 81 48 6f |.. +....|"+....Ho|
|00000f20| 00 68 2f 01 2f 00 4e ba | 08 fa 4f ef 00 0c 4a 80 |.h/./.N.|..O...J.|
|00000f30| 66 0e 42 ab 00 0c 70 67 | 27 40 00 10 60 00 07 bc |f.B...pg|'@..`...|
|00000f40| 2f 6b 00 18 00 3c 2f 6b | 00 1c 00 38 27 6c 10 14 |/k...</k|...8'l..|
|00000f50| 00 18 2f 2f 00 6c 61 00 | f7 dc 58 4f 2f 40 00 30 |..//.la.|..XO/@.0|
|00000f60| 66 18 48 6f 00 68 4e ba | 0c c6 58 4f 42 ab 00 0c |f.Ho.hN.|..XOB...|
|00000f70| 70 67 27 40 00 10 60 00 | 07 82 27 6f 00 30 00 1c |pg'@..`.|..'o.0..|
|00000f80| 27 6f 00 74 00 04 2f 0b | 2f 2c 10 14 61 00 f8 0e |'o.t../.|/,..a...|
|00000f90| 20 6f 00 7c 2c 78 00 04 | 4e ae fe 80 20 6f 00 7c | o.|,x..|N... o.||
|00000fa0| 4e ae fe 8c 27 6f 00 44 | 00 18 27 6f 00 40 00 1c |N...'o.D|..'o.@..|
|00000fb0| 2e af 00 38 61 00 f7 ca | 48 6f 00 70 4e ba 0c 70 |...8a...|Ho.pN..p|
|00000fc0| 4f ef 00 0c 60 00 07 34 | 20 2b 00 14 e5 80 22 2b |O...`..4| +...."+|
|00000fd0| 00 18 e5 81 48 6f 00 68 | 2f 01 2f 00 4e ba 08 44 |....Ho.h|/./.N..D|
|00000fe0| 4f ef 00 0c 4a 80 66 0e | 42 ab 00 0c 70 67 27 40 |O...J.f.|B...pg'@|
|00000ff0| 00 10 60 00 07 06 2a 2b | 00 14 2f 6b 00 18 00 3c |..`...*+|../k...<|
|00001000| 27 6c 10 14 00 14 2f 2f | 00 6c 61 00 f7 28 58 4f |'l....//|.la..(XO|
|00001010| 2f 40 00 30 66 18 48 6f | 00 68 4e ba 0c 12 58 4f |/@.0f.Ho|.hN...XO|
|00001020| 42 ab 00 0c 70 67 27 40 | 00 10 60 00 06 ce 27 6f |B...pg'@|..`...'o|
|00001030| 00 30 00 18 27 6f 00 74 | 00 04 2f 0b 2f 2c 10 14 |.0..'o.t|.././,..|
|00001040| 61 00 f7 5a 20 6f 00 7c | 2c 78 00 04 4e ae fe 80 |a..Z o.||,x..N...|
|00001050| 20 6f 00 7c 4e ae fe 8c | 27 45 00 14 27 6f 00 44 | o.|N...|'E..'o.D|
|00001060| 00 18 2e af 00 38 61 00 | f7 18 48 6f 00 70 4e ba |.....8a.|..Ho.pN.|
|00001070| 0b be 4f ef 00 0c 60 00 | 06 82 20 2b 00 14 22 00 |..O...`.|.. +..".|
|00001080| e5 81 24 2b 00 18 e5 82 | 2a 00 20 41 20 28 00 1c |..$+....|*. A (..|
|00001090| 27 40 00 14 27 6f 00 74 | 00 04 2f 0b 2f 28 00 1c |'@..'o.t|.././(..|
|000010a0| 2f 41 00 58 2f 42 00 50 | 61 00 f6 f2 50 4f 20 6f |/A.X/B.P|a...PO o|
|000010b0| 00 74 2c 78 00 04 4e ae | fe 80 20 6f 00 74 4e ae |.t,x..N.|.. o.tN.|
|000010c0| fe 8c 27 45 00 14 4a ab | 00 0c 67 00 06 2e 20 6f |..'E..J.|..g... o|
|000010d0| 00 50 20 28 00 1c b0 ac | 10 14 66 00 06 1e 20 42 |.P (....|..f... B|
|000010e0| 50 88 22 6c 10 82 10 d9 | 66 fc 60 00 06 0e 20 2b |P."l....|f.`... +|
|000010f0| 00 14 22 00 e5 81 24 2b | 00 18 e5 82 2a 00 20 41 |.."...$+|....*. A|
|00001100| 20 28 00 1c 27 40 00 14 | 27 6f 00 74 00 04 2f 0b | (..'@..|'o.t../.|
|00001110| 2f 28 00 1c 2f 41 00 58 | 2f 42 00 50 61 00 f6 7e |/(../A.X|/B.Pa..~|
|00001120| 50 4f 20 6f 00 74 2c 78 | 00 04 4e ae fe 80 20 6f |PO o.t,x|..N... o|
|00001130| 00 74 4e ae fe 8c 27 45 | 00 14 60 00 05 be 20 2b |.tN...'E|..`... +|
|00001140| 00 18 e5 80 22 2b 00 1c | e5 81 48 6f 00 68 2f 01 |...."+..|..Ho.h/.|
|00001150| 2f 00 4e ba 06 ce 4f ef | 00 0c 4a 80 66 0e 42 ab |/.N...O.|..J.f.B.|
|00001160| 00 0c 70 67 27 40 00 10 | 60 00 05 90 2f 6b 00 18 |..pg'@..|`.../k..|
|00001170| 00 3c 2f 6b 00 1c 00 38 | 27 6c 10 14 00 18 2f 2f |.</k...8|'l....//|
|00001180| 00 6c 61 00 f5 b0 58 4f | 2f 40 00 30 66 18 48 6f |.la...XO|/@.0f.Ho|
|00001190| 00 68 4e ba 0a 9a 58 4f | 42 ab 00 0c 70 67 27 40 |.hN...XO|B...pg'@|
|000011a0| 00 10 60 00 05 56 27 6f | 00 30 00 1c 27 6f 00 74 |..`..V'o|.0..'o.t|
|000011b0| 00 04 2f 0b 2f 2c 10 14 | 61 00 f5 e2 20 6f 00 7c |.././,..|a... o.||
|000011c0| 2c 78 00 04 4e ae fe 80 | 20 6f 00 7c 4e ae fe 8c |,x..N...| o.|N...|
|000011d0| 27 6f 00 44 00 18 27 6f | 00 40 00 1c 2e af 00 38 |'o.D..'o|.@.....8|
|000011e0| 61 00 f5 9e 48 6f 00 70 | 4e ba 0a 44 4f ef 00 0c |a...Ho.p|N..DO...|
|000011f0| 60 00 05 08 20 2b 00 14 | e5 80 2f 40 00 50 20 40 |`... +..|../@.P @|
|00001200| 20 28 00 1c b0 ac 10 14 | 66 0c 42 ab 00 0c 42 ab | (......|f.B...B.|
|00001210| 00 10 60 00 04 e6 70 24 | 72 00 2c 78 00 04 4e ae |..`...p$|r.,x..N.|
|00001220| fd 54 2f 40 00 50 66 0e | 42 ab 00 0c 72 67 27 41 |.T/@.Pf.|B...rg'A|
|00001230| 00 10 60 00 04 c6 20 40 | 21 6f 00 7c 00 18 21 6f |..`... @|!o.|..!o|
|00001240| 00 58 00 14 2f 40 00 58 | 21 6c 10 14 00 1c 72 fe |.X../@.X|!l....r.|
|00001250| 21 41 00 08 21 6c 0f f8 | 00 0c 22 2c 10 0c e4 89 |!A..!l..|..",....|
|00001260| 21 41 00 10 e4 88 27 40 | 00 0c 42 ab 00 10 60 00 |!A....'@|..B...`.|
|00001270| 04 8a 20 2b 00 14 22 00 | e5 81 2a 00 20 41 20 28 |.. +..".|..*. A (|
|00001280| 00 1c 27 40 00 14 27 6f | 00 74 00 04 2f 0b 2f 28 |..'@..'o|.t.././(|
|00001290| 00 1c 2f 41 00 58 61 00 | f5 04 50 4f 20 6f 00 74 |../A.Xa.|..PO o.t|
|000012a0| 2c 78 00 04 4e ae fe 80 | 20 6f 00 74 4e ae fe 8c |,x..N...| o.tN...|
|000012b0| 27 45 00 14 60 00 04 44 | 20 2b 00 14 22 00 e5 81 |'E..`..D| +.."...|
|000012c0| 2f 41 00 50 24 2c 10 14 | 20 41 26 28 00 1c b6 82 |/A.P$,..| A&(....|
|000012d0| 66 28 28 2b 00 18 e5 84 | 2f 44 00 50 20 44 22 28 |f((+....|/D.P D"(|
|000012e0| 00 1c b4 81 66 08 74 ff | 27 42 00 0c 60 04 42 ab |....f.t.|'B..`.B.|
|000012f0| 00 0c 42 ab 00 10 60 00 | 04 02 2c 28 00 1c 20 2b |..B...`.|..,(.. +|
|00001300| 00 18 22 00 e5 81 2a 2b | 00 14 27 46 00 14 20 41 |.."...*+|..'F.. A|
|00001310| 27 68 00 1c 00 18 27 6f | 00 74 00 04 2f 0b 2f 06 |'h....'o|.t.././.|
|00001320| 2f 40 00 44 2f 41 00 58 | 61 00 f4 72 50 4f 20 6f |/@.D/A.X|a..rPO o|
|00001330| 00 74 2c 78 00 04 4e ae | fe 80 20 6f 00 74 4e ae |.t,x..N.|.. o.tN.|
|00001340| fe 8c 27 45 00 14 27 6f | 00 3c 00 18 60 00 03 ac |..'E..'o|.<..`...|
|00001350| 20 6b 00 14 2a 08 27 68 | 00 04 00 14 27 6f 00 74 | k..*.'h|....'o.t|
|00001360| 00 04 2f 0b 2f 2c 10 14 | 2f 48 00 48 61 00 f4 2e |.././,..|/H.Ha...|
|00001370| 50 4f 20 6f 00 74 2c 78 | 00 04 4e ae fe 80 20 6f |PO o.t,x|..N... o|
|00001380| 00 74 4e ae fe 8c 27 45 | 00 14 60 00 03 6e 20 2b |.tN...'E|..`..n +|
|00001390| 00 18 e5 80 22 2b 00 1c | e5 81 48 6f 00 68 2f 01 |...."+..|..Ho.h/.|
|000013a0| 2f 00 4e ba 04 7e 4f ef | 00 0c 4a 80 66 0e 42 ab |/.N..~O.|..J.f.B.|
|000013b0| 00 0c 70 67 27 40 00 10 | 60 00 03 40 20 3c 00 00 |..pg'@..|`..@ <..|
|000013c0| 02 2a 72 00 2c 78 00 04 | 4e ae fd 54 2f 40 00 40 |.*r.,x..|N..T/@.@|
|000013d0| 66 18 48 6f 00 68 4e ba | 08 56 58 4f 42 ab 00 0c |f.Ho.hN.|.VXOB...|
|000013e0| 70 67 27 40 00 10 60 00 | 03 12 20 2b 00 14 e5 80 |pg'@..`.|.. +....|
|000013f0| 2f 6b 00 18 00 3c 2f 6b | 00 1c 00 38 27 6c 10 14 |/k...</k|...8'l..|
|00001400| 00 18 2f 2f 00 6c 2f 40 | 00 48 61 00 f3 28 58 4f |..//.l/@|.Ha..(XO|
|00001410| 2f 40 00 30 66 20 22 6f | 00 40 4e ae fd 4e 48 6f |/@.0f "o|.@N..NHo|
|00001420| 00 68 4e ba 08 0a 58 4f | 42 ab 00 0c 70 67 27 40 |.hN...XO|B...pg'@|
|00001430| 00 10 60 00 02 c6 27 6f | 00 30 00 1c 27 6f 00 74 |..`...'o|.0..'o.t|
|00001440| 00 04 2f 0b 2f 2c 10 14 | 61 00 f3 52 20 6f 00 7c |.././,..|a..R o.||
|00001450| 4e ae fe 80 20 6f 00 7c | 4e ae fe 8c 27 6f 00 44 |N... o.||N...'o.D|
|00001460| 00 18 27 6f 00 40 00 1c | 2e af 00 38 61 00 f3 12 |..'o.@..|...8a...|
|00001470| 50 4f 4a ab 00 0c 67 28 | 20 6f 00 44 21 6c 0f f8 |POJ...g(| o.D!l..|
|00001480| 00 08 22 6f 00 40 23 68 | 00 24 00 04 21 49 00 24 |.."o.@#h|.$..!I.$|
|00001490| 23 6f 00 7c 00 14 20 2b | 00 08 33 40 00 1c 60 08 |#o.|.. +|..3@..`.|
|000014a0| 22 6f 00 40 4e ae fd 4e | 48 6f 00 68 4e ba 07 80 |"o.@N..N|Ho.hN...|
|000014b0| 58 4f 60 00 02 46 20 6b | 00 14 2a 08 27 68 00 04 |XO`..F k|..*.'h..|
|000014c0| 00 14 27 6f 00 74 00 04 | 2f 0b 2f 2c 10 14 2f 48 |..'o.t..|/./,../H|
|000014d0| 00 48 61 00 f2 c8 50 4f | 20 6f 00 74 2c 78 00 04 |.Ha...PO| o.t,x..|
|000014e0| 4e ae fe 80 20 6f 00 74 | 4e ae fe 8c 27 45 00 14 |N... o.t|N...'E..|
|000014f0| 22 6f 00 40 4e ae fd 4e | 60 00 02 00 20 6b 00 14 |"o.@N..N|`... k..|
|00001500| 2a 08 27 68 00 04 00 14 | 27 6f 00 74 00 04 2f 0b |*.'h....|'o.t../.|
|00001510| 2f 2c 10 14 2f 48 00 48 | 61 00 f2 82 50 4f 20 6f |/,../H.H|a...PO o|
|00001520| 00 74 2c 78 00 04 4e ae | fe 80 20 6f 00 74 4e ae |.t,x..N.|.. o.tN.|
|00001530| fe 8c 27 45 00 14 60 00 | 01 c2 20 2b 00 14 e5 80 |..'E..`.|.. +....|
|00001540| 22 2b 00 18 e5 81 2f 40 | 00 44 2f 41 00 4c 20 3c |"+..../@|.D/A.L <|
|00001550| 00 00 02 2a 72 00 2c 78 | 00 04 4e ae fd 54 2f 40 |...*r.,x|..N..T/@|
|00001560| 00 40 66 0e 42 ab 00 0c | 70 67 27 40 00 10 60 00 |.@f.B...|pg'@..`.|
|00001570| 01 8a 2f 6b 00 18 00 3c | 20 6f 00 4c 27 68 00 1c |../k...<| o.L'h..|
|00001580| 00 18 27 6f 00 74 00 04 | 2f 0b 2f 2c 10 14 61 00 |..'o.t..|/./,..a.|
|00001590| f2 0c 50 4f 20 6f 00 74 | 4e ae fe 80 20 6f 00 74 |..PO o.t|N... o.t|
|000015a0| 4e ae fe 8c 27 6f 00 3c | 00 18 4a ab 00 0c 67 2a |N...'o.<|..J...g*|
|000015b0| 20 6f 00 44 21 6c 0f f8 | 00 08 22 6f 00 40 23 68 | o.D!l..|.."o.@#h|
|000015c0| 00 24 00 04 21 49 00 24 | 23 6f 00 7c 00 14 20 2b |.$..!I.$|#o.|.. +|
|000015d0| 00 08 33 40 00 1c 60 00 | 01 22 22 6f 00 40 4e ae |..3@..`.|.""o.@N.|
|000015e0| fd 4e 60 00 01 16 20 2b | 00 14 e5 80 20 40 2f 68 |.N`... +|.... @/h|
|000015f0| 00 24 00 40 2f 40 00 44 | 70 24 72 00 2c 78 00 04 |.$.@/@.D|p$r.,x..|
|00001600| 4e ae fd 54 2f 40 00 50 | 66 0e 42 ab 00 0c 72 67 |N..T/@.P|f.B...rg|
|00001610| 27 41 00 10 60 00 00 e4 | 20 40 21 6f 00 7c 00 18 |'A..`...| @!o.|..|
|00001620| 72 fe 21 41 00 08 21 6c | 0f f8 00 0c 22 2c 10 0c |r.!A..!l|....",..|
|00001630| e4 89 21 41 00 10 20 6f | 00 40 22 6f 00 44 23 68 |..!A.. o|.@"o.D#h|
|00001640| 00 04 00 24 27 6f 00 74 | 00 04 2f 0b 2f 2c 10 14 |...$'o.t|.././,..|
|00001650| 61 00 f1 4a 50 4f 20 6f | 00 74 4e ae fe 80 20 6f |a..JPO o|.tN... o|
|00001660| 00 74 4e ae fe 8c 20 6f | 00 44 21 6f 00 40 00 24 |.tN... o|.D!o.@.$|
|00001670| 20 2b 00 0c 67 20 20 6f | 00 50 21 40 00 1c 21 6f | +..g o|.P!@..!o|
|00001680| 00 58 00 14 2f 48 00 58 | 20 08 e4 88 27 40 00 0c |.X../H.X| ...'@..|
|00001690| 42 ab 00 10 60 64 22 6f | 00 50 4e ae fd 4e 60 5a |B...`d"o|.PN..N`Z|
|000016a0| 20 2b 00 14 e5 80 20 40 | 2f 68 00 24 00 40 22 6f | +.... @|/h.$.@"o|
|000016b0| 00 40 21 69 00 04 00 24 | 27 6f 00 74 00 04 2f 0b |.@!i...$|'o.t../.|
|000016c0| 2f 2c 10 14 2f 40 00 4c | 61 00 f0 d2 50 4f 20 6f |/,../@.L|a...PO o|
|000016d0| 00 74 2c 78 00 04 4e ae | fe 80 20 6f 00 74 4e ae |.t,x..N.|.. o.tN.|
|000016e0| fe 8c 20 6f 00 44 21 6f | 00 40 00 24 60 0c 42 ab |.. o.D!o|.@.$`.B.|
|000016f0| 00 0c 27 7c 00 00 00 d1 | 00 10 27 6c 0f f8 00 04 |..'|....|..'l....|
|00001700| 20 6f 00 78 22 53 2c 78 | 00 04 4e ae fe 92 60 00 | o.x"S,x|..N...`.|
|00001710| f1 84 4c df 7c fc de fc | 00 58 4e 75 4e f9 00 00 |..L.|...|.XNuN...|
|00001720| 00 00 4e f9 00 00 00 88 | 59 4f 48 e7 38 14 2a 6f |..N.....|YOH.8.*o|
|00001730| 00 1c 26 4d 2f 4d 00 14 | 70 2e 20 6f 00 14 b0 10 |..&M/M..|p. o....|
|00001740| 66 38 12 28 00 01 66 06 | 70 00 60 00 00 ce 70 2f |f8.(..f.|p.`...p/|
|00001750| b2 00 66 06 70 00 60 00 | 00 c2 70 2e b2 00 66 1a |..f.p.`.|..p...f.|
|00001760| 10 28 00 02 66 06 70 00 | 60 00 00 b0 70 2f b0 28 |.(..f.p.|`...p/.(|
|00001770| 00 02 66 06 70 00 60 00 | 00 a2 20 6f 00 14 10 10 |..f.p.`.|.. o....|
|00001780| 67 00 00 84 b7 cd 66 0c | 72 2f b0 01 66 06 52 af |g.....f.|r/..f.R.|
|00001790| 00 14 60 e6 20 6f 00 14 | 10 10 72 2f b0 01 66 34 |..`. o..|..r/..f4|
|000017a0| 14 28 00 01 76 2e b4 03 | 66 2a 18 28 00 02 66 04 |.(..v...|f*.(..f.|
|000017b0| 70 00 60 66 b8 01 66 04 | 70 00 60 5e b8 03 66 14 |p.`f..f.|p.`^..f.|
|000017c0| 10 28 00 03 66 04 70 00 | 60 50 b2 28 00 03 66 04 |.(..f.p.|`P.(..f.|
|000017d0| 70 00 60 46 b2 10 66 20 | b2 28 00 01 66 1a 53 8b |p.`F..f |.(..f.S.|
|000017e0| b7 cd 63 06 70 2f b0 13 | 66 f4 52 af 00 14 bb cb |..c.p/..|f.R.....|
|000017f0| 66 88 52 af 00 14 60 82 | 20 6f 00 14 16 d8 2f 48 |f.R...`.| o..../H|
|00001800| 00 14 60 00 ff 76 b7 cd | 63 0c 70 2f b0 2b ff ff |..`..v..|c.p/.+..|
|00001810| 66 04 42 2b ff ff 42 13 | 70 01 4c df 28 1c 58 4f |f.B+..B.|p.L.(.XO|
|00001820| 4e 75 9e fc 00 0c 48 e7 | 27 36 26 6f 00 38 2a 6f |Nu....H.|'6&o.8*o|
|00001830| 00 30 20 0d 66 1e 20 6f | 00 34 10 10 66 16 26 ac |.0 .f. o|.4..f.&.|
|00001840| 10 44 22 6c 0e a4 27 49 | 00 04 27 49 00 08 70 01 |.D"l..'I|..'I..p.|
|00001850| 60 00 03 d2 70 00 20 6f | 00 34 10 10 52 80 72 00 |`...p. o|.4..R.r.|
|00001860| 2c 78 00 04 4e ae fd 54 | 2f 40 00 28 66 0c 27 6c |,x..N..T|/@.(f.'l|
|00001870| 0e a4 00 08 70 00 60 00 | 03 ac 20 6f 00 34 10 10 |....p.`.|.. o.4..|
|00001880| 67 14 43 e8 00 01 72 00 | 12 00 20 6f 00 28 60 02 |g.C...r.|.. o.(`.|
|00001890| 10 d9 53 81 64 fa 72 00 | 12 00 20 6f 00 28 42 30 |..S.d.r.|.. o.(B0|
|000018a0| 10 00 27 48 00 08 20 6f | 00 28 10 10 66 0a 22 6b |..'H.. o|.(..f."k|
|000018b0| 00 08 2f 49 00 34 60 5a | 72 3a b0 01 66 4e 52 af |../I.4`Z|r:..fNR.|
|000018c0| 00 28 22 2b 00 08 24 2c | 0e a4 2c 6c 0f e0 4e ae |.("+..$,|..,l..N.|
|000018d0| fd 7e 2f 40 00 20 66 16 | 22 6b 00 08 2c 78 00 04 |.~/@. f.|"k..,x..|
|000018e0| 4e ae fd 4e 27 42 00 08 | 70 00 60 00 03 38 20 6f |N..N'B..|p.`..8 o|
|000018f0| 00 20 20 28 00 04 e5 80 | 2a 40 22 08 2c 6c 0f e0 |. (....|*@".,l..|
|00001900| 4e ae fd 78 2f 6f 00 28 | 00 34 60 06 52 af 00 28 |N..x/o.(|.4`.R..(|
|00001910| 60 94 20 0d 67 16 20 6c | 10 44 22 6d 00 18 b3 c8 |`. .g. l|.D"m....|
|00001920| 66 14 20 2d 00 1c b0 ac | 10 14 66 0a 2f 6f 00 34 |f. -....|..f./o.4|
|00001930| 00 28 60 00 01 8e 20 6d | 00 18 b1 ec 10 44 66 18 |.(`... m|.....Df.|
|00001940| 22 6b 00 08 2c 78 00 04 | 4e ae fd 4e 27 6c 0e a4 |"k..,x..|N..N'l..|
|00001950| 00 08 70 00 60 00 02 ce | 4a 2d 00 24 66 00 00 9c |..p.`...|J-.$f...|
|00001960| 20 6d 00 18 22 68 00 0a | 20 09 4a 19 66 fc 53 89 | m.."h..| .J.f.S.|
|00001970| 93 c0 2e 09 20 6f 00 34 | 20 08 4a 18 66 fc 53 88 |.... o.4| .J.f.S.|
|00001980| 91 c0 2c 08 20 07 d0 86 | 54 80 72 00 2c 78 00 04 |..,. ...|T.r.,x..|
|00001990| 4e ae fd 54 2f 40 00 28 | 66 14 22 6b 00 08 4e ae |N..T/@.(|f."k..N.|
|000019a0| fd 4e 27 6c 0e a4 00 08 | 70 00 60 00 02 78 20 6d |.N'l....|p.`..x m|
|000019b0| 00 18 22 68 00 0a 24 6f | 00 28 14 d9 66 fc 20 6b |.."h..$o|.(..f. k|
|000019c0| 00 08 4a 10 67 1a 20 6f | 00 28 11 bc 00 2f 78 00 |..J.g. o|.(.../x.|
|000019d0| d1 c7 43 e8 00 01 20 6f | 00 34 12 d8 66 fc 60 08 |..C... o|.4..f.`.|
|000019e0| 20 6f 00 28 42 30 78 00 | 22 6b 00 08 4e ae fd 4e | o.(B0x.|"k..N..N|
|000019f0| 27 6f 00 28 00 08 60 00 | 00 ca 20 6d 00 18 22 68 |'o.(..`.|.. m.."h|
|00001a00| 00 0a 20 09 4a 19 66 fc | 53 89 93 c0 2e 09 41 ed |.. .J.f.|S.....A.|
|00001a10| 00 24 22 48 4a 19 66 fc | 53 89 93 c8 2c 09 20 6f |.$"HJ.f.|S...,. o|
|00001a20| 00 34 20 08 4a 18 66 fc | 53 88 91 c0 2a 08 20 07 |.4 .J.f.|S...*. .|
|00001a30| d0 86 d0 85 56 80 72 00 | 2c 78 00 04 4e ae fd 54 |....V.r.|,x..N..T|
|00001a40| 2f 40 00 28 66 14 22 6b | 00 08 4e ae fd 4e 27 6c |/@.(f."k|..N..N'l|
|00001a50| 0e a4 00 08 70 00 60 00 | 01 cc 20 6d 00 18 22 68 |....p.`.|.. m.."h|
|00001a60| 00 0a 24 6f 00 28 14 d9 | 66 fc 20 6f 00 28 11 bc |..$o.(..|f. o.(..|
|00001a70| 00 2f 78 00 d1 c7 43 e8 | 00 01 41 ed 00 24 12 d8 |./x...C.|..A..$..|
|00001a80| 66 fc 20 6b 00 08 4a 10 | 67 1e 20 07 d0 86 20 6f |f. k..J.|g. ... o|
|00001a90| 00 28 d1 c0 11 7c 00 2f | 00 01 43 e8 00 02 20 6f |.(...|./|..C... o|
|00001aa0| 00 34 12 d8 66 fc 60 0c | 20 07 d0 86 20 6f 00 28 |.4..f.`.| ... o.(|
|00001ab0| 42 30 08 01 22 6b 00 08 | 4e ae fd 4e 27 6f 00 28 |B0.."k..|N..N'o.(|
|00001ac0| 00 08 2f 2f 00 28 61 00 | fc 60 58 4f 4a 80 66 18 |..//.(a.|.`XOJ.f.|
|00001ad0| 22 6b 00 08 2c 78 00 04 | 4e ae fd 4e 27 6c 0e a4 |"k..,x..|N..N'l..|
|00001ae0| 00 08 70 00 60 00 01 3e | 2f 6f 00 28 00 24 20 6f |..p.`..>|/o.(.$ o|
|00001af0| 00 24 10 10 67 54 72 2f | b0 01 66 48 42 18 2f 2f |.$..gTr/|..fHB.//|
|00001b00| 00 28 2f 48 00 28 4e ba | 8e d8 58 4f 26 80 66 1a |.(/H.(N.|..XO&.f.|
|00001b10| 22 6b 00 08 2c 78 00 04 | 4e ae fd 4e 20 6c 0e a4 |"k..,x..|N..N l..|
|00001b20| 27 48 00 08 70 00 60 00 | 00 fc 20 6f 00 24 4a 10 |'H..p.`.|.. o.$J.|
|00001b30| 67 06 27 48 00 04 60 06 | 27 6c 0e a4 00 04 70 01 |g.'H..`.|'l....p.|
|00001b40| 60 00 00 e2 52 af 00 24 | 60 a4 20 6f 00 28 4a 10 |`...R..$|`. o.(J.|
|00001b50| 66 22 22 6b 00 08 2c 78 | 00 04 4e ae fd 4e 20 6c |f""k..,x|..N..N l|
|00001b60| 0e a4 27 48 00 08 27 48 | 00 04 26 ac 10 44 70 01 |..'H..'H|..&..Dp.|
|00001b70| 60 00 00 b2 48 6c 0e a8 | 2f 2f 00 2c 4e ba 09 fe |`...Hl..|//.,N...|
|00001b80| 50 4f 4a 80 67 64 48 78 | 00 07 48 6c 0e ae 2f 2f |POJ.gdHx|..Hl..//|
|00001b90| 00 30 4e ba 09 60 4f ef | 00 0c 4a 80 67 4c 48 6c |.0N..`O.|..J.gLHl|
|00001ba0| 0e b6 2f 2f 00 2c 4e ba | 09 d4 50 4f 4a 80 67 3a |..//.,N.|..POJ.g:|
|00001bb0| 48 6c 0e c0 2f 2f 00 2c | 4e ba 09 c2 50 4f 4a 80 |Hl..//.,|N...POJ.|
|00001bc0| 67 28 20 6f 00 28 20 08 | 4a 18 66 fc 53 88 91 c0 |g( o.( .|J.f.S...|
|00001bd0| 20 08 5b 80 20 6f 00 28 | d1 c0 48 6c 0e c8 2f 08 | .[. o.(|..Hl../.|
|00001be0| 4e ba 09 9a 50 4f 4a 80 | 66 10 26 ac 10 44 20 6f |N...POJ.|f.&..D o|
|00001bf0| 00 28 27 48 00 04 70 01 | 60 2a 2f 2f 00 28 4e ba |.('H..p.|`*//.(N.|
|00001c00| 8d e0 58 4f 26 80 22 6b | 00 08 2c 78 00 04 4e ae |..XO&."k|..,x..N.|
|00001c10| fd 4e 20 6c 0e a4 27 48 | 00 08 27 48 00 04 20 13 |.N l..'H|..'H.. .|
|00001c20| 67 02 70 01 4c df 6c e4 | de fc 00 0c 4e 75 48 e7 |g.p.L.l.|....NuH.|
|00001c30| 00 06 2a 6f 00 0c 20 2d | 00 08 67 10 22 40 2c 78 |..*o.. -|..g."@,x|
|00001c40| 00 04 4e ae fd 4e 2b 6c | 0e a4 00 08 4c df 60 00 |..N..N+l|....L.`.|
|00001c50| 4e 75 00 00 9e fc 00 44 | 48 e7 27 36 7c 00 7a 00 |Nu.....D|H.'6|.z.|
|00001c60| 42 af 00 20 70 00 20 6c | 0f f8 10 28 00 0f 72 01 |B.. p. l|...(..r.|
|00001c70| 24 01 e1 a2 70 00 20 6c | 10 5c 10 28 00 0f e1 a1 |$...p. l|.\.(....|
|00001c80| 84 81 2e 02 20 07 2c 78 | 00 04 4e ae fe c2 20 6c |.... .,x|..N... l|
|00001c90| 10 5c 2c 78 00 04 4e ae | fe 8c 2f 40 00 2c 67 4a |.\,x..N.|../@.,gJ|
|00001ca0| 70 00 20 6f 00 2c 30 28 | 00 14 53 80 67 0a 53 80 |p. o.,0(|..S.g.S.|
|00001cb0| 67 1a 53 80 67 22 60 24 | 22 6f 00 2c 2c 78 00 04 |g.S.g"`$|"o.,,x..|
|00001cc0| 4e ae fe 86 20 2c 0e d0 | 60 00 07 98 70 01 2f 40 |N... ,..|`...p./@|
|00001cd0| 00 20 4e ba 94 c8 60 04 | 42 af 00 20 22 6f 00 2c |. N...`.|B.. "o.,|
|00001ce0| 2c 78 00 04 4e ae fe 86 | 60 a4 20 6c 0f f8 2c 78 |,x..N...|`. l..,x|
|00001cf0| 00 04 4e ae fe 8c 2f 40 | 00 60 67 88 20 40 2a 68 |..N.../@|.`g. @*h|
|00001d00| 00 0a 26 6d 00 04 4a af | 00 20 67 26 0c ad 00 00 |..&m..J.|. g&....|
|00001d10| 08 02 00 08 67 1c 42 ad | 00 0c 2b 7c 00 00 00 da |....g.B.|..+|....|
|00001d20| 00 10 2b 6c 0f f8 00 04 | 20 4b 22 55 4e ae fe 92 |..+l....| K"UN...|
|00001d30| 60 b8 20 2d 00 08 4a 80 | 67 00 00 cc 5b 80 67 00 |`. -..J.|g...[.g.|
|00001d40| 00 d4 57 80 67 00 00 d4 | 53 80 67 00 01 36 5d 80 |..W.g...|S.g..6].|
|00001d50| 67 00 01 b2 53 80 67 00 | 03 14 53 80 67 00 02 22 |g...S.g.|..S.g.."|
|00001d60| 55 80 67 00 01 a0 55 80 | 67 00 01 ca 53 80 67 00 |U.g...U.|g...S.g.|
|00001d70| 03 48 53 80 67 00 01 8e | 53 80 67 00 01 88 53 80 |.HS.g...|S.g...S.|
|00001d80| 67 00 03 98 53 80 67 00 | 03 ec 55 80 67 00 01 a6 |g...S.g.|..U.g...|
|00001d90| 53 80 67 00 01 70 5b 80 | 67 00 01 6a 5d 80 67 00 |S.g..p[.|g..j].g.|
|00001da0| 04 2e 72 2a 90 81 67 00 | 04 6c 5b 80 67 00 04 66 |..r*..g.|.l[.g..f|
|00001db0| 04 80 00 00 03 95 67 00 | 04 78 53 80 67 00 04 72 |......g.|.xS.g..r|
|00001dc0| 53 80 67 00 04 6c 53 80 | 67 00 04 b2 53 80 67 00 |S.g..lS.|g...S.g.|
|00001dd0| 04 c8 72 0f 90 81 67 00 | 04 dc 57 80 67 00 05 52 |..r...g.|..W.g..R|
|00001de0| 53 80 67 00 05 7c 57 80 | 67 00 05 84 53 80 67 00 |S.g..|W.|g...S.g.|
|00001df0| 05 7e 55 80 67 00 05 a0 | 04 80 00 00 03 f9 67 00 |.~U.g...|......g.|
|00001e00| 05 c6 60 00 06 3c 70 ff | 2b 40 00 0c 42 ad 00 10 |..`..<p.|+@..B...|
|00001e10| 60 00 06 3a 20 0d 60 00 | 06 4a 20 2d 00 1c 72 fe |`..: .`.|.J -..r.|
|00001e20| b0 81 67 12 52 80 67 0e | 42 ad 00 0c 70 73 2b 40 |..g.R.g.|B...ps+@|
|00001e30| 00 10 60 00 06 18 20 2d | 00 14 e5 80 22 2d 00 18 |..`... -|...."-..|
|00001e40| e5 81 48 6f 00 48 2f 01 | 2f 00 4e ba f9 d6 4f ef |..Ho.H/.|/.N...O.|
|00001e50| 00 0c 4a 80 66 10 42 ad | 00 0c 2b 7c 00 00 00 d2 |..J.f.B.|..+|....|
|00001e60| 00 10 60 00 05 e8 20 6f | 00 48 22 55 2c 78 00 04 |..`... o|.H"U,x..|
|00001e70| 4e ae fe 92 48 6f 00 48 | 4e ba fd b4 58 4f 60 00 |N...Ho.H|N...XO`.|
|00001e80| fe 6a 20 2d 00 14 e5 80 | 72 00 20 40 12 10 54 81 |.j -....|r. @..T.|
|00001e90| 2f 40 00 24 20 01 72 00 | 2c 78 00 04 4e ae fd 54 |/@.$ .r.|,x..N..T|
|00001ea0| 2f 40 00 28 66 0e 42 ad | 00 0c 72 67 2b 41 00 10 |/@.(f.B.|..rg+A..|
|00001eb0| 60 00 05 9a 20 6f 00 24 | 12 10 20 40 10 81 43 e8 |`... o.$|.. @..C.|
|00001ec0| 00 01 24 6f 00 24 52 8a | 70 00 10 01 60 02 12 da |..$o.$R.|p...`...|
|00001ed0| 53 80 64 fa 70 00 10 01 | 42 30 08 01 20 08 e4 88 |S.d.p...|B0.. ...|
|00001ee0| 22 6c 10 0c 23 40 00 28 | 22 6c 10 82 4e ae fd 4e |"l..#@.(|"l..N..N|
|00001ef0| 29 6f 00 28 10 82 70 ff | 2b 40 00 0c 42 ad 00 10 |)o.(..p.|+@..B...|
|00001f00| 60 00 05 4a 20 2d 00 14 | e5 80 2f 40 00 38 66 10 |`..J -..|../@.8f.|
|00001f10| 42 ad 00 0c 2b 7c 00 00 | 00 d3 00 10 60 00 05 2e |B...+|..|....`...|
|00001f20| 20 40 20 68 00 18 22 55 | 2c 78 00 04 4e ae fe 92 | @ h.."U|,x..N...|
|00001f30| 60 00 fd b8 20 2d 00 18 | e5 80 22 2d 00 1c e5 81 |`... -..|.."-....|
|00001f40| 48 6f 00 48 2f 01 2f 00 | 4e ba f8 d8 4f ef 00 0c |Ho.H/./.|N...O...|
|00001f50| 4a 80 66 10 42 ad 00 0c | 2b 7c 00 00 00 d2 00 10 |J.f.B...|+|......|
|00001f60| 60 00 04 ea 20 6f 00 48 | 22 55 2c 78 00 04 4e ae |`... o.H|"U,x..N.|
|00001f70| fe 92 48 6f 00 48 4e ba | fc b6 58 4f 60 00 fd 6c |..Ho.HN.|..XO`..l|
|00001f80| 20 2d 00 14 e5 80 22 2d | 00 18 e5 81 48 6f 00 48 | -...."-|....Ho.H|
|00001f90| 2f 01 2f 00 4e ba f8 8c | 4f ef 00 0c 4a 80 66 10 |/./.N...|O...J.f.|
|00001fa0| 42 ad 00 0c 2b 7c 00 00 | 00 d2 00 10 60 00 04 9e |B...+|..|....`...|
|00001fb0| 20 2d 00 1c e5 80 22 2d | 00 20 e5 81 48 6f 00 3c | -...."-|. ..Ho.<|
|00001fc0| 2f 01 2f 00 4e ba f8 5c | 4f ef 00 0c 4a 80 66 1a |/./.N..\|O...J.f.|
|00001fd0| 42 ad 00 0c 2b 7c 00 00 | 00 d2 00 10 48 6f 00 48 |B...+|..|....Ho.H|
|00001fe0| 4e ba fc 4c 58 4f 60 00 | 04 64 20 6c 10 44 22 6f |N..LXO`.|.d l.D"o|
|00001ff0| 00 48 b3 c8 66 26 4a af | 00 40 66 20 22 55 2c 78 |.H..f&J.|.@f "U,x|
|00002000| 00 04 4e ae fe 92 48 6f | 00 48 4e ba fc 22 48 6f |..N...Ho|.HN.."Ho|
|00002010| 00 40 4e ba fc 1a 50 4f | 60 00 fc d0 20 6f 00 48 |.@N...PO|`... o.H|
|00002020| b1 ef 00 3c 67 22 42 ad | 00 0c 2b 7c 00 00 00 d7 |...<g"B.|..+|....|
|00002030| 00 10 48 6f 00 48 4e ba | fb f6 48 6f 00 40 4e ba |..Ho.HN.|..Ho.@N.|
|00002040| fb ee 50 4f 60 00 04 06 | 20 6f 00 48 22 55 2c 78 |..PO`...| o.H"U,x|
|00002050| 00 04 4e ae fe 92 48 6f | 00 48 4e ba fb d2 48 6f |..N...Ho|.HN...Ho|
|00002060| 00 40 4e ba fb ca 50 4f | 60 00 fc 80 20 2d 00 14 |.@N...PO|`... -..|
|00002070| e5 80 22 2d 00 18 e5 81 | 48 6f 00 48 2f 01 2f 00 |.."-....|Ho.H/./.|
|00002080| 4e ba f7 a0 4f ef 00 0c | 4a 80 66 10 42 ad 00 0c |N...O...|J.f.B...|
|00002090| 2b 7c 00 00 00 d2 00 10 | 60 00 03 b2 20 6f 00 48 |+|......|`... o.H|
|000020a0| 22 55 2c 78 00 04 4e ae | fe 92 48 6f 00 48 4e ba |"U,x..N.|..Ho.HN.|
|000020b0| fb 7e 58 4f 60 00 fc 34 | 20 2d 00 14 e5 80 22 2d |.~XO`..4| -...."-|
|000020c0| 00 18 e5 81 48 6f 00 48 | 2f 01 2f 00 4e ba f7 54 |....Ho.H|/./.N..T|
|000020d0| 4f ef 00 0c 4a 80 66 10 | 42 ad 00 0c 2b 7c 00 00 |O...J.f.|B...+|..|
|000020e0| 00 d2 00 10 60 00 03 66 | 4a af 00 4c 66 10 20 6c |....`..f|J..Lf. l|
|000020f0| 10 44 22 55 2c 78 00 04 | 4e ae fe 92 60 0e 20 6f |.D"U,x..|N...`. o|
|00002100| 00 48 22 55 2c 78 00 04 | 4e ae fe 92 48 6f 00 48 |.H"U,x..|N...Ho.H|
|00002110| 4e ba fb 1c 58 4f 60 00 | fb d2 20 2d 00 14 e5 80 |N...XO`.|.. -....|
|00002120| 20 40 42 90 42 a8 00 04 | 2f 40 00 5c 4a 85 67 08 | @B.B...|/@.\J.g.|
|00002130| 72 50 21 41 00 08 60 06 | 72 52 21 41 00 08 72 01 |rP!A..`.|rR!A..r.|
|00002140| 21 41 00 0c 21 41 00 10 | 21 7c 00 00 04 00 00 14 |!A..!A..|!|......|
|00002150| 21 7c 44 4f 53 00 00 18 | 22 2c 10 0c e4 89 21 41 |!|DOS...|",....!A|
|00002160| 00 1c 42 a8 00 20 70 ff | 2b 40 00 0c 42 ad 00 10 |..B.. p.|+@..B...|
|00002170| 60 00 02 da 20 2d 00 18 | e5 80 20 40 42 90 42 a8 |`... -..|.. @B.B.|
|00002180| 00 04 2f 40 00 5c 4a 85 | 67 08 72 50 21 41 00 08 |../@.\J.|g.rP!A..|
|00002190| 60 06 72 52 21 41 00 08 | 72 01 21 41 00 0c 21 41 |`.rR!A..|r.!A..!A|
|000021a0| 00 10 21 7c 00 00 04 00 | 00 14 21 7c 44 4f 53 00 |..!|....|..!|DOS.|
|000021b0| 00 18 22 2c 10 0c e4 89 | 21 41 00 1c 42 a8 00 20 |..",....|!A..B.. |
|000021c0| 70 ff 2b 40 00 0c 42 ad | 00 10 60 00 02 80 20 2d |p.+@..B.|..`... -|
|000021d0| 00 14 e5 80 22 2d 00 18 | e5 81 2f 40 00 38 2f 41 |...."-..|../@.8/A|
|000021e0| 00 34 22 40 20 69 00 18 | 2c 41 24 6e 00 18 b5 c8 |.4"@ i..|,A$n....|
|000021f0| 67 10 42 ad 00 0c 2b 7c | 00 00 00 d3 00 10 60 00 |g.B...+||......`.|
|00002200| 02 4c 20 69 00 18 22 55 | 2c 78 00 04 4e ae fe 92 |.L i.."U|,x..N...|
|00002210| 60 00 fa d8 2f 6d 00 14 | 00 54 20 6f 00 54 20 68 |`.../m..|.T o.T h|
|00002220| 00 14 22 55 2c 78 00 04 | 4e ae fe 92 60 00 fa bc |.."U,x..|N...`...|
|00002230| 20 2d 00 18 e5 80 22 2d | 00 1c e5 81 48 6f 00 48 | -...."-|....Ho.H|
|00002240| 2f 01 2f 00 4e ba f5 dc | 4f ef 00 0c 4a 80 66 10 |/./.N...|O...J.f.|
|00002250| 42 ad 00 0c 2b 7c 00 00 | 00 d2 00 10 60 00 01 ee |B...+|..|....`...|
|00002260| 20 6f 00 48 22 55 2c 78 | 00 04 4e ae fe 92 48 6f | o.H"U,x|..N...Ho|
|00002270| 00 48 4e ba f9 ba 58 4f | 60 00 fa 70 2f 6d 00 14 |.HN...XO|`..p/m..|
|00002280| 00 54 20 6f 00 54 20 68 | 00 14 22 55 2c 78 00 04 |.T o.T h|.."U,x..|
|00002290| 4e ae fe 92 60 00 fa 54 | 2f 6d 00 14 00 54 20 6f |N...`..T|/m...T o|
|000022a0| 00 54 20 68 00 14 22 55 | 2c 78 00 04 4e ae fe 92 |.T h.."U|,x..N...|
|000022b0| 60 00 fa 38 4a 85 67 16 | 4a ad 00 14 67 10 42 ad |`..8J.g.|J...g.B.|
|000022c0| 00 0c 70 6b d0 80 2b 40 | 00 10 60 00 01 80 4a 85 |..pk..+@|..`...J.|
|000022d0| 66 14 20 2d 00 14 66 0e | 72 ff 2b 41 00 0c 42 ad |f. -..f.|r.+A..B.|
|000022e0| 00 10 60 00 01 68 4a 85 | 66 1a 4a ad 00 14 67 14 |..`..hJ.|f.J...g.|
|000022f0| 70 ff 2b 40 00 0c 42 ad | 00 10 7a 01 2c 2d 00 18 |p.+@..B.|..z.,-..|
|00002300| 60 00 01 4a 4a 86 67 06 | bc ad 00 18 66 12 70 ff |`..JJ.g.|....f.p.|
|00002310| 2b 40 00 0c 42 ad 00 10 | 7a 00 7c 00 60 00 01 2e |+@..B...|z.|.`...|
|00002320| 42 ad 00 0c 2b 7c 00 00 | 00 d6 00 10 60 00 01 1e |B...+|..|....`...|
|00002330| 20 2d 00 18 e5 80 2f 40 | 00 38 66 10 42 ad 00 0c | -..../@|.8f.B...|
|00002340| 2b 7c 00 00 00 d3 00 10 | 60 00 01 02 20 40 20 68 |+|......|`... @ h|
|00002350| 00 18 22 55 2c 78 00 04 | 4e ae fe 92 60 00 f9 8c |.."U,x..|N...`...|
|00002360| 70 ff 2b 40 00 0c 42 ad | 00 10 60 00 00 e0 20 2d |p.+@..B.|..`... -|
|00002370| 00 14 e5 80 20 40 2f 68 | 00 24 00 54 2f 40 00 58 |.... @/h|.$.T/@.X|
|00002380| 20 6f 00 54 20 68 00 14 | 22 55 2c 78 00 04 4e ae | o.T h..|"U,x..N.|
|00002390| fe 92 60 00 f9 56 20 2d | 00 14 e5 80 2f 40 00 38 |..`..V -|..../@.8|
|000023a0| 66 10 42 ad 00 0c 2b 7c | 00 00 00 d3 00 10 60 00 |f.B...+||......`.|
|000023b0| 00 9c 20 40 20 68 00 18 | 22 55 2c 78 00 04 4e ae |.. @ h..|"U,x..N.|
|000023c0| fe 92 60 00 f9 26 2f 6d | 00 14 00 30 2b 6c 0f f8 |..`..&/m|...0+l..|
|000023d0| 00 04 20 4b 22 55 2c 78 | 00 04 4e ae fe 92 22 6f |.. K"U,x|..N..."o|
|000023e0| 00 30 20 69 00 18 4b e8 | 00 14 2b 7c 00 00 08 03 |.0 i..K.|..+|....|
|000023f0| 00 08 2b 6c 10 00 00 04 | 20 69 00 1c 22 55 4e ae |..+l....| i.."UN.|
|00002400| fe 92 20 6c 10 00 4e ae | fe 80 20 6c 10 00 4e ae |.. l..N.|.. l..N.|
|00002410| fe 8c 4a ad 00 0c 67 00 | f8 d2 2f 6d 00 10 00 38 |..J...g.|../m...8|
|00002420| 4a af 00 38 67 0c 20 6f | 00 38 2f 68 00 14 00 38 |J..8g. o|.8/h...8|
|00002430| 60 ee 2f 2f 00 30 4e ba | 8c 64 58 4f 60 00 f8 ac |`.//.0N.|.dXO`...|
|00002440| 42 ad 00 0c 2b 7c 00 00 | 00 d1 00 10 2b 6c 0f f8 |B...+|..|....+l..|
|00002450| 00 04 20 4b 22 55 2c 78 | 00 04 4e ae fe 92 60 00 |.. K"U,x|..N...`.|
|00002460| f8 8a 4c df 6c e4 de fc | 00 44 4e 75 51 4f 48 e7 |..L.l...|.DNuQOH.|
|00002470| 01 16 70 00 20 6c 0f f8 | 10 28 00 0f 72 01 e1 a1 |..p. l..|.(..r...|
|00002480| 2e 01 20 07 2c 78 00 04 | 4e ae fe c2 20 6c 0f f8 |.. .,x..|N... l..|
|00002490| 2c 78 00 04 4e ae fe 8c | 2a 40 20 0d 67 e4 2f 6d |,x..N...|*@ .g./m|
|000024a0| 00 0a 00 14 70 0f 20 6f | 00 14 b0 a8 00 08 66 20 |....p. o|......f |
|000024b0| 20 28 00 14 e5 80 2f 40 | 00 10 22 40 4e ae fd 4e | (..../@|.."@N..N|
|000024c0| 70 ff 20 6f 00 14 21 40 | 00 0c 42 a8 00 10 60 0c |p. o..!@|..B...`.|
|000024d0| 42 a8 00 0c 21 7c 00 00 | 00 d1 00 10 26 68 00 04 |B...!|..|....&h..|
|000024e0| 21 6c 0f f8 00 04 20 4b | 22 6f 00 14 22 51 4e ae |!l.... K|"o.."QN.|
|000024f0| fe 92 60 98 20 6f 00 04 | 22 6f 00 08 20 2f 00 0c |..`. o..|"o.. /..|
|00002500| 48 e7 23 14 2e 00 26 49 | 2a 48 60 46 70 00 10 15 |H.#...&I|*H`Fp...|
|00002510| 41 ec 0e d9 08 30 00 01 | 08 00 67 0a 72 00 12 00 |A....0..|..g.r...|
|00002520| 74 20 92 82 60 04 72 00 | 12 00 2c 01 70 00 10 13 |t ..`.r.|..,.p...|
|00002530| 08 30 00 01 08 00 67 0a | 72 00 12 00 74 20 92 82 |.0....g.|r...t ..|
|00002540| 60 04 72 00 12 00 20 06 | 90 81 66 28 52 8d 52 8b |`.r... .|..f(R.R.|
|00002550| 53 87 4a 87 67 08 4a 15 | 67 04 4a 13 66 ae 4a 87 |S.J.g.J.|g.J.f.J.|
|00002560| 67 10 4a 15 67 04 70 01 | 60 0a 4a 13 67 04 70 ff |g.J.g.p.|`.J.g.p.|
|00002570| 60 02 70 00 4c df 28 c4 | 4e 75 00 00 20 6f 00 04 |`.p.L.(.|Nu.. o..|
|00002580| 22 6f 00 08 70 00 72 00 | 10 18 12 19 0c 00 00 61 |"o..p.r.|.......a|
|00002590| 6d 0a 0c 00 00 7a 6e 04 | 04 00 00 20 0c 01 00 61 |m....zn.|... ...a|
|000025a0| 6d 0a 0c 01 00 7a 6e 04 | 04 01 00 20 90 81 66 04 |m....zn.|... ..f.|
|000025b0| 4a 01 66 d4 4e 75 00 00 | 20 2f 00 08 20 6f 00 04 |J.f.Nu..| /.. o..|
|000025c0| 2f 08 4a 80 4e 55 ff f4 | 22 4f 6c 06 10 fc 00 2d |/.J.NU..|"Ol....-|
|000025d0| 44 80 72 0a 4e ba 00 f8 | 06 41 00 30 12 c1 4a 80 |D.r.N...|.A.0..J.|
|000025e0| 66 f0 10 e1 bf c9 66 fa | 42 10 20 08 4e 5d 90 9f |f.....f.|B. .N]..|
|000025f0| 4e 75 00 00 20 6f 00 04 | 22 6f 00 08 48 e7 30 20 |Nu.. o..|"o..H.0 |
|00002600| 24 48 72 00 20 01 26 01 | 0c 10 00 2b 67 08 0c 10 |$Hr. .&.|...+g...|
|00002610| 00 2d 66 04 76 01 52 48 | 10 18 04 00 00 30 6d 1a |.-f.v.RH|.....0m.|
|00002620| 0c 00 00 09 6e 14 24 01 | e5 81 d2 82 d2 81 4a 03 |....n.$.|......J.|
|00002630| 66 04 d2 80 60 e2 92 80 | 60 de 22 81 20 08 90 8a |f...`...|`.". ...|
|00002640| 53 80 4c df 04 0c 4e 75 | 20 6f 00 04 22 6f 00 08 |S.L...Nu| o.."o..|
|00002650| 48 e7 30 20 24 48 72 00 | 20 01 26 01 0c 10 00 2b |H.0 $Hr.| .&....+|
|00002660| 67 08 0c 10 00 2d 66 04 | 76 01 52 48 10 18 04 00 |g....-f.|v.RH....|
|00002670| 00 30 6d 1a 0c 00 00 09 | 6e 14 24 01 e5 81 d2 82 |.0m.....|n.$.....|
|00002680| d2 81 4a 03 66 04 d2 80 | 60 e2 92 80 60 de 22 81 |..J.f...|`...`.".|
|00002690| 20 08 90 8a 53 80 4c df | 04 0c 4e 75 4a 80 6a 00 | ...S.L.|..NuJ.j.|
|000026a0| 00 1e 44 80 4a 81 6a 00 | 00 0c 44 81 61 00 00 20 |..D.J.j.|..D.a.. |
|000026b0| 44 81 4e 75 61 00 00 18 | 44 80 44 81 4e 75 4a 81 |D.Nua...|D.D.NuJ.|
|000026c0| 6a 00 00 0c 44 81 61 00 | 00 06 44 80 4e 75 2f 02 |j...D.a.|..D.Nu/.|
|000026d0| 48 41 34 01 66 00 00 22 | 48 40 48 41 48 42 34 00 |HA4.f.."|H@HAHB4.|
|000026e0| 67 00 00 06 84 c1 30 02 | 48 40 34 00 84 c1 30 02 |g.....0.|H@4...0.|
|000026f0| 48 42 32 02 24 1f 4e 75 | 2f 03 76 10 0c 41 00 80 |HB2.$.Nu|/.v..A..|
|00002700| 64 00 00 06 e1 99 51 43 | 0c 41 08 00 64 00 00 06 |d.....QC|.A..d...|
|00002710| e9 99 59 43 0c 41 20 00 | 64 00 00 06 e5 99 55 43 |..YC.A .|d.....UC|
|00002720| 4a 41 6b 00 00 06 e3 99 | 53 43 34 00 e6 a8 48 42 |JAk.....|SC4...HB|
|00002730| 42 42 e6 aa 48 43 80 c1 | 36 00 30 02 34 03 48 41 |BB..HC..|6.0.4.HA|
|00002740| c4 c1 90 82 64 00 00 06 | 53 43 d0 81 72 00 32 03 |....d...|SC..r.2.|
|00002750| 48 43 e7 b8 48 40 c1 41 | 26 1f 24 1f 4e 75 00 00 |HC..H@.A|&.$.Nu..|
|00002760| 48 e7 30 00 24 00 26 01 | 48 42 48 43 c4 c1 c6 c0 |H.0.$.&.|HBHC....|
|00002770| c0 c1 d4 43 48 42 42 42 | d0 82 4c df 00 0c 4e 75 |...CHBBB|..L...Nu|
|00002780| 48 e7 70 00 24 00 67 20 | 4a 81 66 04 42 80 60 18 |H.p.$.g |J.f.B.`.|
|00002790| 26 00 c6 c1 48 42 c4 c1 | 48 42 42 42 d6 82 48 41 |&...HB..|HBBB..HA|
|000027a0| c0 c1 48 40 42 40 d0 83 | 4c df 00 0e 4e 75 00 00 |..H@B@..|L...Nu..|
|000027b0| 20 6f 00 04 22 6f 00 08 | 48 e7 00 30 4a 10 67 1a | o.."o..|H..0J.g.|
|000027c0| 60 0a 4a 12 67 14 52 88 | 4a 10 67 0e 24 48 26 49 |`.J.g.R.|J.g.$H&I|
|000027d0| 4a 13 67 0e b7 0a 66 ea | 60 f6 70 00 4c df 0c 00 |J.g...f.|`.p.L...|
|000027e0| 4e 75 20 08 4c df 0c 00 | 4e 75 00 00 20 6f 00 04 |Nu .L...|Nu.. o..|
|000027f0| 20 2f 00 08 b0 10 67 08 | 4a 18 66 f8 70 00 4e 75 | /....g.|J.f.p.Nu|
|00002800| 20 08 4e 75 22 6f 00 08 | 20 6f 00 04 20 08 4a 18 | .Nu"o..| o.. .J.|
|00002810| 66 fc 53 88 10 d9 66 fc | 4e 75 00 00 22 6f 00 08 |f.S...f.|Nu.."o..|
|00002820| 20 6f 00 04 20 2f 00 0c | 22 08 60 04 10 d9 67 08 | o.. /..|".`...g.|
|00002830| 53 80 64 f8 60 06 42 18 | 53 80 64 fa 20 01 4e 75 |S.d.`.B.|S.d. .Nu|
|00002840| 20 2f 00 04 4a 80 66 0c | 29 7c 00 00 00 16 10 8c | /..J.f.|)|......|
|00002850| 70 00 4e 75 48 e7 3e 32 | 56 80 02 80 ff ff ff fc |p.NuH.>2|V.......|
|00002860| 0c 80 00 01 ff fc 6e 00 | 00 b8 b0 ac 0e d4 6e 00 |......n.|......n.|
|00002870| 00 b0 26 2c 10 90 67 00 | 00 a8 22 43 b0 a9 00 08 |..&,..g.|.."C....|
|00002880| 6e 32 22 2c 10 94 b2 a9 | 00 0c 66 28 45 e9 00 10 |n2",....|..f(E...|
|00002890| 4a 52 6b 10 42 84 38 2a | 00 02 02 44 7f ff e5 8c |JRk.B.8*|...D....|
|000028a0| b0 84 6f 1a 42 84 38 2a | 00 02 6b 08 e5 8c 45 f2 |..o.B.8*|..k...E.|
|000028b0| 48 04 60 dc 26 29 00 00 | 67 66 22 43 60 be 08 ea |H.`.&)..|gf"C`...|
|000028c0| 00 07 00 00 47 f2 08 04 | 42 85 b0 84 67 3c 2c 04 |....G...|B...g<,.|
|000028d0| 9c 80 59 86 66 04 20 04 | 60 30 e4 8e 4a 6a 00 02 |..Y.f. .|`0..Jj..|
|000028e0| 6a 04 00 46 80 00 2a 00 | e4 8d 37 46 00 02 37 45 |j..F..*.|..7F..7E|
|000028f0| 00 00 35 45 00 02 7a 04 | 4a 46 6b 0e 34 32 48 04 |..5E..z.|JFk.42H.|
|00002900| 02 42 80 00 8c 42 35 86 | 48 04 26 29 00 08 96 80 |.B...B5.|H.&)....|
|00002910| 96 85 23 43 00 08 20 0a | 58 80 4c df 4c 7c 4e 75 |..#C.. .|X.L.L|Nu|
|00002920| 2a 00 b0 ac 0e d4 6a 04 | 20 2c 0e d4 28 00 06 80 |*.....j.| ,..(...|
|00002930| 00 00 00 14 22 2c 10 94 | 2c 78 00 04 4e ae ff 3a |....",..|,x..N..:|
|00002940| 4a 80 66 0a 29 7c 00 00 | 00 0c 10 8c 60 cc 22 40 |J.f.)|..|....`."@|
|00002950| 45 e9 00 10 23 6c 10 90 | 00 00 29 49 10 90 23 44 |E...#l..|..)I..#D|
|00002960| 00 04 23 6c 10 94 00 0c | 26 04 96 85 67 28 59 83 |..#l....|&...g(Y.|
|00002970| 67 24 23 43 00 08 47 f2 | 58 04 35 7c 80 00 00 00 |g$#C..G.|X.5|....|
|00002980| e4 8d 35 45 00 02 37 45 | 00 00 e4 8b 00 43 80 00 |..5E..7E|.....C..|
|00002990| 37 43 00 02 60 14 42 a9 | 00 08 35 7c 80 00 00 00 |7C..`.B.|..5|....|
|000029a0| e4 8c 00 44 80 00 35 44 | 00 02 20 0a 58 80 4c df |...D..5D|.. .X.L.|
|000029b0| 4c 7c 4e 75 20 6f 00 04 | 59 4f 2f 0b 20 08 67 24 |L|Nu o..|YO/. .g$|
|000029c0| 26 40 60 02 52 8b 70 00 | 10 13 41 ec 0e d9 08 30 |&@`.R.p.|..A....0|
|000029d0| 00 03 08 00 66 ee 20 4b | 43 ef 00 04 4e ba fc 1e |....f. K|C...N...|
|000029e0| 20 2f 00 04 26 5f 58 4f | 4e 75 00 00 20 6f 00 04 | /..&_XO|Nu.. o..|
|000029f0| 59 4f 2f 0b 20 08 67 24 | 26 40 60 02 52 8b 70 00 |YO/. .g$|&@`.R.p.|
|00002a00| 10 13 41 ec 0e d9 08 30 | 00 03 08 00 66 ee 20 4b |..A....0|....f. K|
|00002a10| 43 ef 00 04 4e ba fc 3a | 20 2f 00 04 26 5f 58 4f |C...N..:| /..&_XO|
|00002a20| 4e 75 00 00 00 00 03 ec | 00 00 00 13 00 00 00 00 |Nu......|........|
|00002a30| 00 00 5e fa 00 00 5e f4 | 00 00 5f 00 00 00 5e e8 |..^...^.|.._...^.|
|00002a40| 00 00 5e ee 00 00 5f 1e | 00 00 5e d6 00 00 5e e2 |..^..._.|..^...^.|
|00002a50| 00 00 5e dc 00 00 5f 0c | 00 00 0d 18 00 00 5f 12 |..^..._.|......_.|
|00002a60| 00 00 0d 12 00 00 0d 30 | 00 00 0d 2a 00 00 0d 1e |.......0|...*....|
|00002a70| 00 00 0d 36 00 00 0d 24 | 00 00 5f 06 00 00 00 02 |...6...$|.._.....|
|00002a80| 00 00 00 02 00 00 5f 18 | 00 00 be f8 00 00 00 02 |......_.|........|
|00002a90| 00 00 00 03 00 00 be f2 | 00 00 2d 1e 00 00 00 04 |........|..-.....|
|00002aa0| 00 00 00 04 00 00 ce ec | 00 00 ce e6 00 00 2d 18 |........|......-.|
|00002ab0| 00 00 2d 12 00 00 00 02 | 00 00 00 05 00 00 8f dc |..-.....|........|
|00002ac0| 00 00 8f d6 00 00 00 07 | 00 00 00 06 00 00 bf 94 |........|........|
|00002ad0| 00 00 b5 e8 00 00 9e 6e | 00 00 6c 00 00 00 2b d0 |.......n|..l...+.|
|00002ae0| 00 00 1d e4 00 00 00 0a | 00 00 00 00 00 00 03 f2 |........|........|
|00002af0| 00 00 03 e9 00 00 00 25 | 2f 0e 2c 79 00 00 0f dc |.......%|/.,y....|
|00002b00| 22 6f 00 08 4e ae fe 9e | 2c 5f 4e 75 2f 0e 2c 79 |"o..N...|,_Nu/.,y|
|00002b10| 00 00 0f dc 4c ef 00 03 | 00 08 4e ae ff 3a 2c 5f |....L...|..N..:,_|
|00002b20| 4e 75 00 00 2f 0e 2c 79 | 00 00 0f dc 20 2f 00 08 |Nu../.,y|.... /..|
|00002b30| 4e ae fe b6 2c 5f 4e 75 | 2f 0e 2c 79 00 00 0f dc |N...,_Nu|/.,y....|
|00002b40| 22 6f 00 08 4e ae fe da | 2c 5f 4e 75 2f 0e 2c 79 |"o..N...|,_Nu/.,y|
|00002b50| 00 00 0f dc 22 6f 00 08 | 20 2f 00 0c 4e ae ff 2e |...."o..| /..N...|
|00002b60| 2c 5f 4e 75 2f 0e 2c 79 | 00 00 0f dc 20 2f 00 08 |,_Nu/.,y|.... /..|
|00002b70| 4e ae fe b0 2c 5f 4e 75 | 2f 0e 2c 79 00 00 0f dc |N...,_Nu|/.,y....|
|00002b80| 22 6f 00 08 4e ae fe 98 | 2c 5f 4e 75 00 00 03 ec |"o..N...|,_Nu....|
|00002b90| 00 00 00 07 00 00 00 06 | 00 00 00 84 00 00 00 70 |........|.......p|
|00002ba0| 00 00 00 58 00 00 00 44 | 00 00 00 30 00 00 00 18 |...X...D|...0....|
|00002bb0| 00 00 00 04 00 00 00 00 | 00 00 03 f0 00 00 00 02 |........|........|
|00002bc0| 5f 52 65 6d 50 6f 72 74 | 00 00 00 80 00 00 00 03 |_RemPort|........|
|00002bd0| 5f 46 72 65 65 53 69 67 | 6e 61 6c 00 00 00 00 6c |_FreeSig|nal....l|
|00002be0| 00 00 00 02 5f 46 72 65 | 65 4d 65 6d 00 00 00 54 |...._Fre|eMem...T|
|00002bf0| 00 00 00 03 5f 46 69 6e | 64 54 61 73 6b 00 00 00 |...._Fin|dTask...|
|00002c00| 00 00 00 40 00 00 00 03 | 5f 41 6c 6c 6f 63 53 69 |...@....|_AllocSi|
|00002c10| 67 6e 61 6c 00 00 00 2c | 00 00 00 03 5f 41 6c 6c |gnal...,|...._All|
|00002c20| 6f 63 4d 65 6d 00 00 00 | 00 00 00 14 00 00 00 02 |ocMem...|........|
|00002c30| 5f 41 64 64 50 6f 72 74 | 00 00 00 00 00 00 00 00 |_AddPort|........|
|00002c40| 00 00 03 f2 00 00 03 e9 | 00 00 00 0a 48 e7 00 3a |........|....H..:|
|00002c50| 26 6f 00 14 20 6f 00 18 | 43 ef 00 1c 45 fa 00 12 |&o.. o..|C...E...|
|00002c60| 2c 79 00 00 00 04 4e ae | fd f6 4c df 5c 00 4e 75 |,y....N.|..L.\.Nu|
|00002c70| 16 c0 4e 75 00 00 03 f0 | 00 00 00 03 73 74 75 66 |..Nu....|....stuf|
|00002c80| 66 43 68 61 72 00 00 00 | 00 00 00 24 00 00 00 02 |fChar...|...$....|
|00002c90| 5f 73 70 72 69 6e 74 66 | 00 00 00 00 00 00 00 00 |_sprintf|........|
|00002ca0| 00 00 03 f2 00 00 03 e9 | 00 00 00 05 20 6f 00 04 |........|.... o..|
|00002cb0| 42 a8 00 04 21 48 00 08 | 58 88 21 08 4e 75 00 00 |B...!H..|X.!.Nu..|
|00002cc0| 00 00 03 f0 00 00 00 02 | 5f 4e 65 77 4c 69 73 74 |........|_NewList|
|00002cd0| 00 00 00 00 00 00 00 00 | 00 00 03 f2 00 00 03 e9 |........|........|
|00002ce0| 00 00 00 33 48 e7 3c 20 | 26 2f 00 18 14 2f 00 1f |...3H.< |&/.../..|
|00002cf0| 7a ff 2f 05 4e b9 00 00 | 00 2c 28 00 58 8f 6f 64 |z./.N...|.,(.X.od|
|00002d00| 2f 3c 00 01 00 01 48 78 | 00 22 4e b9 00 00 00 14 |/<....Hx|."N.....|
|00002d10| 24 40 2a 0a 50 8f 67 42 | 25 43 00 0a 15 42 00 09 |$@*.P.gB|%C...B..|
|00002d20| 15 7c 00 04 00 08 42 2a | 00 0e 15 44 00 0f 42 a7 |.|....B*|...D..B.|
|00002d30| 4e b9 00 00 00 40 25 40 | 00 10 4a 83 58 8f 67 0a |N....@%@|..J.X.g.|
|00002d40| 2f 0a 4e b9 00 00 00 00 | 60 0a 48 6a 00 14 4e b9 |/.N.....|`.Hj..N.|
|00002d50| 00 00 00 00 58 8f 20 0a | 60 0c 2f 04 4e b9 00 00 |....X. .|`./.N...|
|00002d60| 00 6c 58 8f 70 00 4c df | 04 3c 4e 75 2f 0a 24 6f |.lX.p.L.|.<Nu/.$o|
|00002d70| 00 08 4a aa 00 0a 67 0a | 2f 0a 4e b9 00 00 00 80 |..J...g.|/.N.....|
|00002d80| 58 8f 15 7c 00 ff 00 08 | 70 ff 25 40 00 14 70 00 |X..|....|p.%@..p.|
|00002d90| 10 2a 00 0f 2f 00 4e b9 | 00 00 00 6c 48 78 00 22 |.*../.N.|...lHx."|
|00002da0| 2f 0a 4e b9 00 00 00 54 | 4f ef 00 0c 24 5f 4e 75 |/.N....T|O...$_Nu|
|00002db0| 00 00 03 ec 00 00 00 08 | 00 00 00 01 00 00 00 28 |........|.......(|
|00002dc0| 00 00 00 12 00 00 00 4e | 00 00 00 60 00 00 00 b4 |.......N|...`....|
|00002dd0| 00 00 00 7a 00 00 00 98 | 00 00 00 c0 00 00 00 01 |...z....|........|
|00002de0| 00 00 00 03 00 00 00 6c | 00 00 00 00 00 00 03 f0 |.......l|........|
|00002df0| 00 00 00 01 2e 4c 37 00 | 00 00 00 76 00 00 00 01 |.....L7.|...v....|
|00002e00| 2e 4c 36 00 00 00 00 80 | 00 00 00 01 2e 4c 34 00 |.L6.....|.....L4.|
|00002e10| 00 00 00 66 00 00 00 01 | 2e 4c 31 00 00 00 00 82 |...f....|.L1.....|
|00002e20| 00 00 00 01 2e 4c 31 34 | 00 00 00 9e 00 00 00 01 |.....L14|........|
|00002e30| 2e 4c 31 32 00 00 00 70 | 00 00 00 03 5f 44 65 6c |.L12...p|...._Del|
|00002e40| 65 74 65 50 6f 72 74 00 | 00 00 00 88 00 00 00 03 |etePort.|........|
|00002e50| 5f 43 72 65 61 74 65 50 | 6f 72 74 00 00 00 00 00 |_CreateP|ort.....|
|00002e60| 00 00 00 00 00 00 03 f2 | 00 00 03 e9 00 00 00 1a |........|........|
|00002e70| 48 e7 38 00 24 2f 00 10 | 26 2f 00 14 4a 82 67 28 |H.8.$/..|&/..J.g(|
|00002e80| 2f 3c 00 01 00 01 2f 03 | 4e b9 00 00 00 14 20 40 |/<..../.|N..... @|
|00002e90| 28 08 50 8f 67 12 11 7c | 00 07 00 08 31 43 00 12 |(.P.g..||....1C..|
|00002ea0| 21 42 00 0e 20 08 60 02 | 70 00 4c df 00 1c 4e 75 |!B.. .`.|p.L...Nu|
|00002eb0| 20 6f 00 04 20 08 67 1c | 70 ff 20 80 70 ff 21 40 | o.. .g.|p. .p.!@|
|00002ec0| 00 14 70 00 30 28 00 12 | 2f 00 2f 08 4e b9 00 00 |..p.0(..|/./.N...|
|00002ed0| 00 54 50 8f 4e 75 00 00 | 00 00 03 ec 00 00 00 02 |.TP.Nu..|........|
|00002ee0| 00 00 00 01 00 00 00 1a | 00 00 00 5e 00 00 00 00 |........|...^....|
|00002ef0| 00 00 03 f0 00 00 00 01 | 2e 4c 33 00 00 00 00 38 |........|.L3....8|
|00002f00| 00 00 00 01 2e 4c 31 00 | 00 00 00 3a 00 00 00 01 |.....L1.|...:....|
|00002f10| 2e 4c 31 30 00 00 00 64 | 00 00 00 03 5f 44 65 6c |.L10...d|...._Del|
|00002f20| 65 74 65 45 78 74 49 4f | 00 00 00 40 00 00 00 03 |eteExtIO|...@....|
|00002f30| 5f 43 72 65 61 74 65 45 | 78 74 49 4f 00 00 00 00 |_CreateE|xtIO....|
|00002f40| 00 00 00 00 00 00 03 f2 | 00 00 03 ea 00 00 04 26 |........|.......&|
|00002f50| 00 00 00 00 24 56 45 52 | 3a 20 46 54 50 4d 6f 75 |....$VER|: FTPMou|
|00002f60| 6e 74 20 31 2e 30 20 28 | 41 70 72 20 31 32 20 31 |nt 1.0 (|Apr 12 1|
|00002f70| 39 39 36 29 00 00 00 00 | 00 04 63 74 72 6c 20 61 |996)....|..ctrl a|
|00002f80| 6c 74 20 66 00 00 48 6f | 73 74 73 00 43 61 6e 27 |lt f..Ho|sts.Can'|
|00002f90| 74 20 66 69 6e 64 20 48 | 6f 73 74 73 20 64 69 72 |t find H|osts dir|
|00002fa0| 00 00 46 54 50 4d 6f 75 | 6e 74 20 73 74 61 72 74 |..FTPMou|nt start|
|00002fb0| 75 70 20 65 72 72 6f 72 | 00 00 4f 6b 00 00 28 46 |up error|..Ok..(F|
|00002fc0| 54 50 4d 6f 75 6e 74 29 | 20 54 43 50 20 48 61 6e |TPMount)| TCP Han|
|00002fd0| 64 6c 65 72 00 00 66 74 | 70 00 43 61 6e 27 74 20 |dler..ft|p.Can't |
|00002fe0| 6c 61 75 6e 63 68 20 54 | 43 50 20 68 61 6e 64 6c |launch T|CP handl|
|00002ff0| 65 72 00 00 28 46 54 50 | 4d 6f 75 6e 74 29 20 6c |er..(FTP|Mount) l|
|00003000| 6f 63 61 6c 20 68 61 6e | 64 6c 65 72 00 00 43 61 |ocal han|dler..Ca|
|00003010| 6e 27 74 20 6c 61 75 6e | 63 68 20 6c 6f 63 61 6c |n't laun|ch local|
|00003020| 20 68 61 6e 64 6c 65 72 | 00 00 43 6f 6e 74 69 6e | handler|..Contin|
|00003030| 75 65 7c 45 78 69 74 00 | 55 53 45 52 00 00 48 4f |ue|Exit.|USER..HO|
|00003040| 53 54 00 00 55 53 45 52 | 20 65 6e 76 69 72 6f 6e |ST..USER| environ|
|00003050| 6d 65 6e 74 20 76 61 72 | 69 61 62 6c 65 20 6e 6f |ment var|iable no|
|00003060| 74 20 73 65 74 0a 41 6e | 6f 6e 79 6d 6f 75 73 20 |t set.An|onymous |
|00003070| 6c 6f 67 69 6e 20 77 69 | 74 68 20 25 73 0a 75 73 |login wi|th %s.us|
|00003080| 65 64 20 61 73 20 79 6f | 75 72 20 61 64 64 72 65 |ed as yo|ur addre|
|00003090| 73 73 00 00 48 4f 53 54 | 20 65 6e 76 69 72 6f 6e |ss..HOST| environ|
|000030a0| 6d 65 6e 74 20 76 61 72 | 69 61 62 6c 65 20 6e 6f |ment var|iable no|
|000030b0| 74 20 73 65 74 0a 41 6e | 6f 6e 79 6d 6f 75 73 20 |t set.An|onymous |
|000030c0| 6c 6f 67 69 6e 20 77 69 | 74 68 20 25 73 0a 75 73 |login wi|th %s.us|
|000030d0| 65 64 20 61 73 20 79 6f | 75 72 20 61 64 64 72 65 |ed as yo|ur addre|
|000030e0| 73 73 00 00 55 53 45 52 | 20 61 6e 64 20 48 4f 53 |ss..USER| and HOS|
|000030f0| 54 20 65 6e 76 69 72 6f | 6e 6d 65 6e 74 20 76 61 |T enviro|nment va|
|00003100| 72 69 61 62 6c 65 73 20 | 6e 6f 74 20 73 65 74 0a |riables |not set.|
|00003110| 41 6e 6f 6e 79 6d 6f 75 | 73 20 6c 6f 67 69 6e 20 |Anonymou|s login |
|00003120| 77 69 74 68 20 25 73 0a | 75 73 65 64 20 61 73 20 |with %s.|used as |
|00003130| 79 6f 75 72 20 61 64 64 | 72 65 73 73 00 00 46 54 |your add|ress..FT|
|00003140| 50 4d 6f 75 6e 74 00 00 | 28 46 54 50 4d 6f 75 6e |PMount..|(FTPMoun|
|00003150| 74 29 20 73 74 61 74 75 | 73 20 68 61 6e 64 6c 65 |t) statu|s handle|
|00003160| 72 00 43 61 6e 27 74 20 | 6c 61 75 6e 63 68 20 73 |r.Can't |launch s|
|00003170| 74 61 74 75 73 20 68 61 | 6e 64 6c 65 72 00 55 6e |tatus ha|ndler.Un|
|00003180| 6b 6e 6f 77 6e 20 63 6f | 6e 64 69 74 69 6f 6e 20 |known co|ndition |
|00003190| 28 6c 6f 77 20 6f 6e 20 | 6d 65 6d 6f 72 79 3f 29 |(low on |memory?)|
|000031a0| 00 00 52 65 74 72 79 7c | 4d 6f 72 65 20 2e 2e 2e |..Retry||More ...|
|000031b0| 7c 43 61 6e 63 65 6c 00 | 52 65 74 72 79 7c 43 61 ||Cancel.|Retry|Ca|
|000031c0| 6e 63 65 6c 00 00 4d 6f | 72 65 20 2e 2e 2e 7c 4f |ncel..Mo|re ...|O|
|000031d0| 6b 00 4f 70 65 72 61 74 | 69 6f 6e 61 6c 20 65 72 |k.Operat|ional er|
|000031e0| 72 6f 72 00 4f 75 74 20 | 6f 66 20 6d 65 6d 6f 72 |ror.Out |of memor|
|000031f0| 79 20 66 6f 72 20 72 6f | 6f 74 20 73 74 72 69 6e |y for ro|ot strin|
|00003200| 67 00 50 57 44 20 72 65 | 73 70 6f 6e 73 65 20 69 |g.PWD re|sponse i|
|00003210| 73 20 75 6e 69 6e 74 65 | 6c 6c 69 67 69 62 6c 65 |s uninte|lligible|
|00003220| 00 00 46 61 69 6c 65 64 | 20 74 6f 20 67 65 74 20 |..Failed| to get |
|00003230| 50 57 44 20 72 65 73 70 | 6f 6e 73 65 00 00 45 72 |PWD resp|onse..Er|
|00003240| 72 6f 72 20 72 65 61 64 | 69 6e 67 20 50 57 44 20 |ror read|ing PWD |
|00003250| 72 65 73 70 6f 6e 73 65 | 00 00 45 72 72 6f 72 20 |response|..Error |
|00003260| 77 68 69 6c 65 20 72 65 | 71 75 65 73 74 69 6e 67 |while re|questing|
|00003270| 20 50 57 44 00 00 45 72 | 72 6f 72 20 77 68 69 6c | PWD..Er|ror whil|
|00003280| 65 20 72 65 61 64 69 6e | 67 20 54 59 50 45 20 49 |e readin|g TYPE I|
|00003290| 20 72 65 73 70 6f 6e 73 | 65 00 45 72 72 6f 72 20 | respons|e.Error |
|000032a0| 77 68 69 6c 65 20 73 65 | 74 74 69 6e 67 20 54 59 |while se|tting TY|
|000032b0| 50 45 20 49 00 00 4c 6f | 67 69 6e 20 73 75 63 63 |PE I..Lo|gin succ|
|000032c0| 65 65 64 65 64 20 28 6e | 6f 20 70 61 73 73 77 6f |eeded (n|o passwo|
|000032d0| 72 64 20 72 65 71 75 69 | 72 65 64 29 00 00 4c 6f |rd requi|red)..Lo|
|000032e0| 67 69 6e 20 73 75 63 63 | 65 65 64 65 64 00 4c 6f |gin succ|eeded.Lo|
|000032f0| 67 69 6e 20 66 61 69 6c | 65 64 00 00 41 43 43 54 |gin fail|ed..ACCT|
|00003300| 20 72 65 71 75 65 73 74 | 65 64 00 00 4c 6f 67 69 | request|ed..Logi|
|00003310| 6e 20 69 6e 63 6f 72 72 | 65 63 74 00 4c 6f 67 69 |n incorr|ect.Logi|
|00003320| 6e 20 66 61 69 6c 65 64 | 20 28 50 41 53 53 29 00 |n failed| (PASS).|
|00003330| 4c 6f 67 69 6e 20 65 72 | 72 6f 72 00 4c 6f 73 74 |Login er|ror.Lost|
|00003340| 20 63 6f 6e 6e 65 63 74 | 69 6f 6e 20 64 75 72 69 | connect|ion duri|
|00003350| 6e 67 20 6c 6f 67 69 6e | 20 28 70 61 73 73 77 64 |ng login| (passwd|
|00003360| 29 00 47 61 72 62 61 67 | 65 20 72 65 63 65 69 76 |).Garbag|e receiv|
|00003370| 65 64 20 66 72 6f 6d 20 | 72 65 6d 6f 74 65 20 73 |ed from |remote s|
|00003380| 69 74 65 20 28 70 61 73 | 73 77 64 29 00 00 54 65 |ite (pas|swd)..Te|
|00003390| 6d 70 6f 72 61 72 79 20 | 6c 6f 67 69 6e 20 66 61 |mporary |login fa|
|000033a0| 69 6c 75 72 65 20 28 55 | 53 45 52 29 00 00 4c 6f |ilure (U|SER)..Lo|
|000033b0| 67 69 6e 20 66 61 69 6c | 65 64 20 28 55 53 45 52 |gin fail|ed (USER|
|000033c0| 29 00 4c 6f 73 74 20 63 | 6f 6e 6e 65 63 74 69 6f |).Lost c|onnectio|
|000033d0| 6e 20 64 75 72 69 6e 67 | 20 6c 6f 67 69 6e 00 00 |n during| login..|
|000033e0| 47 61 72 62 61 67 65 20 | 72 65 63 65 69 76 65 64 |Garbage |received|
|000033f0| 20 66 72 6f 6d 20 72 65 | 6d 6f 74 65 20 73 69 74 | from re|mote sit|
|00003400| 65 00 45 72 72 6f 72 20 | 72 65 61 64 69 6e 67 20 |e.Error |reading |
|00003410| 72 65 73 70 6f 6e 73 65 | 20 74 6f 20 6c 6f 67 69 |response| to logi|
|00003420| 6e 00 45 72 72 6f 72 20 | 77 72 69 74 69 6e 67 20 |n.Error |writing |
|00003430| 50 41 53 53 00 00 45 72 | 72 6f 72 20 77 72 69 74 |PASS..Er|ror writ|
|00003440| 69 6e 67 20 55 53 45 52 | 00 00 43 6f 6e 6e 65 63 |ing USER|..Connec|
|00003450| 74 20 65 72 72 6f 72 00 | 41 6d 69 54 43 50 20 69 |t error.|AmiTCP i|
|00003460| 73 20 6e 6f 74 20 72 75 | 6e 6e 69 6e 67 00 48 6f |s not ru|nning.Ho|
|00003470| 73 74 20 25 73 20 69 73 | 20 75 6e 6b 6e 6f 77 6e |st %s is| unknown|
|00003480| 00 00 48 6f 73 74 20 25 | 73 20 69 73 20 75 6e 72 |..Host %|s is unr|
|00003490| 65 61 63 68 61 62 6c 65 | 00 00 46 54 50 20 63 6f |eachable|..FTP co|
|000034a0| 6e 6e 65 63 74 69 6f 6e | 20 74 6f 20 25 73 20 68 |nnection| to %s h|
|000034b0| 61 73 20 62 65 65 6e 20 | 72 65 66 75 73 65 64 00 |as been |refused.|
|000034c0| 43 61 6e 27 74 20 63 6f | 6e 6e 65 63 74 20 74 6f |Can't co|nnect to|
|000034d0| 20 25 73 20 28 25 6c 64 | 29 00 4c 6f 73 74 20 63 | %s (%ld|).Lost c|
|000034e0| 6f 6e 6e 65 63 74 69 6f | 6e 20 64 75 72 69 6e 67 |onnectio|n during|
|000034f0| 20 69 6e 74 72 6f 00 00 | 47 61 72 62 61 67 65 20 | intro..|Garbage |
|00003500| 72 65 63 65 69 76 65 64 | 20 66 72 6f 6d 20 25 73 |received| from %s|
|00003510| 00 00 45 72 72 6f 72 20 | 72 65 61 64 69 6e 67 20 |..Error |reading |
|00003520| 69 6e 74 72 6f 64 75 63 | 74 69 6f 6e 00 00 43 6f |introduc|tion..Co|
|00003530| 6e 6e 65 63 74 69 6f 6e | 20 64 65 6c 61 79 20 2e |nnection| delay .|
|00003540| 2e 2e 00 00 54 65 6d 70 | 6f 72 61 72 79 20 63 6f |....Temp|orary co|
|00003550| 6e 6e 65 63 74 69 6f 6e | 20 66 61 69 6c 75 72 65 |nnection| failure|
|00003560| 20 2e 2e 2e 00 00 43 6f | 6e 6e 65 63 74 69 6f 6e | .....Co|nnection|
|00003570| 20 66 61 69 6c 65 64 20 | 2e 2e 2e 00 43 6f 6e 6e | failed |....Conn|
|00003580| 65 63 74 69 6e 67 20 74 | 6f 20 00 00 43 6f 6e 6e |ecting t|o ..Conn|
|00003590| 65 63 74 69 6e 67 20 2e | 2e 2e 00 00 4c 6f 67 69 |ecting .|....Logi|
|000035a0| 6e 20 74 6f 20 25 73 00 | 55 73 65 72 00 00 50 61 |n to %s.|User..Pa|
|000035b0| 73 73 77 6f 72 64 00 00 | 43 75 72 72 65 6e 74 20 |ssword..|Current |
|000035c0| 73 69 74 65 73 00 55 6e | 6b 6e 6f 77 6e 00 44 69 |sites.Un|known.Di|
|000035d0| 73 63 6f 6e 6e 65 63 74 | 65 64 00 00 43 6f 6e 6e |sconnect|ed..Conn|
|000035e0| 65 63 74 69 6e 67 00 00 | 49 64 6c 65 00 00 44 69 |ecting..|Idle..Di|
|000035f0| 73 63 6f 6e 6e 65 63 74 | 69 6e 67 00 4c 69 73 74 |sconnect|ing.List|
|00003600| 69 6e 67 00 43 68 61 6e | 67 69 6e 67 20 44 69 72 |ing.Chan|ging Dir|
|00003610| 65 63 74 6f 72 69 65 73 | 00 00 4f 70 65 6e 69 6e |ectories|..Openin|
|00003620| 67 20 46 69 6c 65 00 00 | 43 6c 6f 73 69 6e 67 20 |g File..|Closing |
|00003630| 46 69 6c 65 00 00 52 65 | 61 64 69 6e 67 00 57 72 |File..Re|ading.Wr|
|00003640| 69 74 69 6e 67 00 4c 6f | 67 67 69 6e 67 20 69 6e |iting.Lo|gging in|
|00003650| 00 00 41 62 6f 72 74 69 | 6e 67 00 00 44 65 6c 65 |..Aborti|ng..Dele|
|00003660| 74 69 6e 67 00 00 4d 61 | 6b 69 6e 67 20 44 69 72 |ting..Ma|king Dir|
|00003670| 65 63 74 6f 72 79 00 00 | 52 65 6e 61 6d 69 6e 67 |ectory..|Renaming|
|00003680| 00 00 50 61 64 20 31 00 | 50 61 64 20 32 00 50 61 |..Pad 1.|Pad 2.Pa|
|00003690| 64 20 33 00 20 28 51 29 | 20 00 46 54 50 4d 6f 75 |d 3. (Q)| .FTPMou|
|000036a0| 6e 74 20 53 74 61 74 75 | 73 00 53 74 61 74 75 73 |nt Statu|s.Status|
|000036b0| 20 61 6e 64 20 63 6f 6e | 74 72 6f 6c 20 6f 66 20 | and con|trol of |
|000036c0| 46 54 50 4d 6f 75 6e 74 | 00 00 55 53 45 52 00 00 |FTPMount|..USER..|
|000036d0| 50 41 53 53 57 4f 52 44 | 00 00 53 54 41 54 55 53 |PASSWORD|..STATUS|
|000036e0| 00 00 51 55 49 43 4b 00 | 48 4f 53 54 00 00 52 4f |..QUICK.|HOST..RO|
|000036f0| 4f 54 00 00 43 61 6e 63 | 65 6c 00 00 41 62 6f 72 |OT..Canc|el..Abor|
|00003700| 74 00 44 69 73 63 6f 6e | 6e 65 63 74 00 00 4c 6f |t.Discon|nect..Lo|
|00003710| 67 69 6e 00 45 72 72 6f | 72 20 72 65 61 64 69 6e |gin.Erro|r readin|
|00003720| 67 20 72 65 73 70 6f 6e | 73 65 20 74 6f 20 70 61 |g respon|se to pa|
|00003730| 73 73 77 6f 72 64 00 00 | 6f 66 66 00 66 61 6c 73 |ssword..|off.fals|
|00003740| 65 00 43 41 53 45 00 00 | 53 4c 4f 57 00 00 4d 45 |e.CASE..|SLOW..ME|
|00003750| 53 53 41 47 45 53 00 00 | 41 4c 4c 00 4e 4f 4e 45 |SSAGES..|ALL.NONE|
|00003760| 00 00 45 52 52 4f 52 00 | 44 65 66 61 75 6c 74 00 |..ERROR.|Default.|
|00003770| 50 4f 52 54 00 00 00 00 | 00 2a 00 00 00 36 00 00 |PORT....|.*...6..|
|00003780| 00 3c 00 00 00 52 00 00 | 00 6a 00 00 00 6e 00 00 |.<...R..|.j...n..|
|00003790| 00 86 00 00 00 8a 00 00 | 00 a4 00 00 00 be 00 00 |........|........|
|000037a0| 00 da 00 00 00 e8 00 00 | 00 ee 00 00 00 f4 00 00 |........|........|
|000037b0| 01 44 00 00 01 94 00 00 | 01 ee 00 00 01 f8 00 00 |.D......|........|
|000037c0| 02 12 00 00 02 2e 00 00 | 02 52 00 00 02 68 00 00 |........|.R...h..|
|000037d0| 02 76 00 00 02 82 00 00 | 02 94 00 00 02 b2 00 00 |.v......|........|
|000037e0| 02 d2 00 00 02 ee 00 00 | 03 0a 00 00 03 26 00 00 |........|.....&..|
|000037f0| 03 4a 00 00 03 66 00 00 | 03 8e 00 00 03 9e 00 00 |.J...f..|........|
|00003800| 03 ac 00 00 03 bc 00 00 | 03 cc 00 00 03 e0 00 00 |........|........|
|00003810| 03 ec 00 00 04 12 00 00 | 04 3e 00 00 04 5e 00 00 |........|.>...^..|
|00003820| 04 72 00 00 04 90 00 00 | 04 b2 00 00 04 d2 00 00 |.r......|........|
|00003830| 04 e6 00 00 04 fa 00 00 | 05 08 00 00 05 1e 00 00 |........|........|
|00003840| 05 32 00 00 05 4a 00 00 | 05 70 00 00 05 8a 00 00 |.2...J..|.p......|
|00003850| 05 a8 00 00 05 c2 00 00 | 05 de 00 00 05 f4 00 00 |........|........|
|00003860| 06 16 00 00 06 2c 00 00 | 06 3c 00 00 06 4c 00 00 |.....,..|.<...L..|
|00003870| 06 58 00 00 06 5e 00 00 | 06 68 00 00 06 76 00 00 |.X...^..|.h...v..|
|00003880| 06 7e 00 00 06 8c 00 00 | 06 98 00 00 06 9e 00 00 |.~......|........|
|00003890| 06 ac 00 00 06 b4 00 00 | 06 ca 00 00 06 d8 00 00 |........|........|
|000038a0| 06 e6 00 00 06 ee 00 00 | 06 f6 00 00 07 02 00 00 |........|........|
|000038b0| 07 0c 00 00 07 16 00 00 | 07 28 00 00 07 32 00 00 |........|.(...2..|
|000038c0| 07 38 00 00 07 3e 00 00 | 07 44 00 00 07 4a 00 00 |.8...>..|.D...J..|
|000038d0| 07 5a 00 00 07 7a 00 00 | 07 80 00 00 07 8a 00 00 |.Z...z..|........|
|000038e0| 07 92 00 00 07 98 00 00 | 07 9e 00 00 07 a4 00 00 |........|........|
|000038f0| 07 ac 00 00 07 b2 00 00 | 07 be 00 00 07 c4 00 00 |........|........|
|00003900| 07 e8 00 00 07 ec 00 00 | 07 f2 00 00 07 f8 00 00 |........|........|
|00003910| 07 fe 00 00 08 08 00 00 | 08 0c 00 00 08 12 00 00 |........|........|
|00003920| 08 18 00 00 08 20 46 54 | 50 4d 6f 75 6e 74 44 69 |..... FT|PMountDi|
|00003930| 72 3a 00 00 3a 20 46 54 | 50 4d 6f 75 6e 74 00 00 |r:..: FT|PMount..|
|00003940| 69 6e 74 75 69 74 69 6f | 6e 2e 6c 69 62 72 61 72 |intuitio|n.librar|
|00003950| 79 00 64 6f 73 2e 6c 69 | 62 72 61 72 79 00 67 72 |y.dos.li|brary.gr|
|00003960| 61 70 68 69 63 73 2e 6c | 69 62 72 61 72 79 00 00 |aphics.l|ibrary..|
|00003970| 69 63 6f 6e 2e 6c 69 62 | 72 61 72 79 00 00 6c 6f |icon.lib|rary..lo|
|00003980| 63 61 6c 65 2e 6c 69 62 | 72 61 72 79 00 00 46 54 |cale.lib|rary..FT|
|00003990| 50 4d 6f 75 6e 74 20 63 | 61 6e 6e 6f 74 20 6f 70 |PMount c|annot op|
|000039a0| 65 6e 20 67 72 61 70 68 | 69 63 73 2e 6c 69 62 72 |en graph|ics.libr|
|000039b0| 61 72 79 00 46 54 50 4d | 6f 75 6e 74 20 72 65 71 |ary.FTPM|ount req|
|000039c0| 75 69 72 65 73 20 56 33 | 36 20 64 6f 73 2e 6c 69 |uires V3|6 dos.li|
|000039d0| 62 72 61 72 79 00 75 6e | 6b 6e 6f 77 6e 40 00 00 |brary.un|known@..|
|000039e0| 40 75 6e 6b 6e 6f 77 6e | 00 00 75 6e 6b 6e 6f 77 |@unknown|..unknow|
|000039f0| 6e 40 75 6e 6b 6e 6f 77 | 6e 00 73 74 61 74 75 73 |n@unknow|n.status|
|00003a00| 20 73 74 61 72 74 75 70 | 20 6d 65 73 73 61 67 65 | startup| message|
|00003a10| 00 00 46 54 50 4d 6f 75 | 6e 74 2e 63 61 74 61 6c |..FTPMou|nt.catal|
|00003a20| 6f 67 00 00 65 6e 67 6c | 69 73 68 00 00 00 00 00 |og..engl|ish.....|
|00003a30| 54 43 50 4d 65 73 73 61 | 67 65 00 00 6c 6f 63 61 |TCPMessa|ge..loca|
|00003a40| 6c 68 6f 73 74 00 62 73 | 64 73 6f 63 6b 65 74 2e |lhost.bs|dsocket.|
|00003a50| 6c 69 62 72 61 72 79 00 | 3a 20 45 76 61 6e 73 20 |library.|: Evans |
|00003a60| 54 43 50 20 48 61 6e 64 | 6c 65 72 00 54 43 50 20 |TCP Hand|ler.TCP |
|00003a70| 43 6f 6e 6e 65 63 74 20 | 48 61 6e 64 6c 65 72 00 |Connect |Handler.|
|00003a80| 74 63 70 00 62 73 64 73 | 6f 63 6b 65 74 2e 6c 69 |tcp.bsds|ocket.li|
|00003a90| 62 72 61 72 79 00 62 73 | 64 73 6f 63 6b 65 74 2e |brary.bs|dsocket.|
|00003aa0| 6c 69 62 72 61 72 79 00 | 62 73 64 73 6f 63 6b 65 |library.|bsdsocke|
|00003ab0| 74 2e 6c 69 62 72 61 72 | 79 00 00 00 00 00 00 00 |t.librar|y.......|
|00003ac0| 25 73 00 00 25 73 00 00 | 50 41 53 56 0d 0a 00 00 |%s..%s..|PASV....|
|00003ad0| 53 54 4f 52 20 25 73 0d | 0a 00 52 45 54 52 20 25 |STOR %s.|..RETR %|
|00003ae0| 73 0d 0a 00 53 54 4f 52 | 20 25 73 0d 0a 00 52 45 |s...STOR| %s...RE|
|00003af0| 54 52 20 25 73 0d 0a 00 | 41 42 4f 52 0d 0a 00 00 |TR %s...|ABOR....|
|00003b00| 44 45 4c 45 20 25 73 0d | 0a 00 70 65 72 6d 00 00 |DELE %s.|..perm..|
|00003b10| 52 4d 44 20 25 73 0d 0a | 00 00 70 65 72 6d 00 00 |RMD %s..|..perm..|
|00003b20| 6e 6f 20 73 75 63 68 00 | 4d 4b 44 20 25 73 0d 0a |no such.|MKD %s..|
|00003b30| 00 00 65 78 69 73 74 00 | 00 00 52 4e 46 52 20 25 |..exist.|..RNFR %|
|00003b40| 73 0d 0a 00 52 4e 54 4f | 20 25 73 0d 0a 00 70 65 |s...RNTO| %s...pe|
|00003b50| 72 6d 00 00 52 4e 54 4f | 20 25 73 0d 0a 00 70 65 |rm..RNTO| %s...pe|
|00003b60| 72 6d 00 00 65 78 69 73 | 74 00 43 57 44 20 25 73 |rm..exis|t.CWD %s|
|00003b70| 0d 0a 00 00 43 57 44 0d | 0a 00 43 57 44 20 25 73 |....CWD.|..CWD %s|
|00003b80| 0d 0a 00 00 43 57 44 20 | 25 73 0d 0a 00 00 43 57 |....CWD |%s....CW|
|00003b90| 44 20 25 73 0d 0a 00 00 | 43 57 44 20 25 73 0d 0a |D %s....|CWD %s..|
|00003ba0| 00 00 43 57 44 0d 0a 00 | 00 00 00 00 00 00 4a 61 |..CWD...|......Ja|
|00003bb0| 6e 20 00 00 46 65 62 20 | 00 00 4d 61 72 20 00 00 |n ..Feb |..Mar ..|
|00003bc0| 41 70 72 20 00 00 4d 61 | 79 20 00 00 4a 75 6e 20 |Apr ..Ma|y ..Jun |
|00003bd0| 00 00 4a 75 6c 20 00 00 | 41 75 67 20 00 00 53 65 |..Jul ..|Aug ..Se|
|00003be0| 70 20 00 00 4f 63 74 20 | 00 00 4e 6f 76 20 00 00 |p ..Oct |..Nov ..|
|00003bf0| 44 65 63 20 00 00 00 00 | 0c 5e 00 00 0c 64 00 00 |Dec ....|.^...d..|
|00003c00| 0c 6a 00 00 0c 70 00 00 | 0c 76 00 00 0c 7c 00 00 |.j...p..|.v...|..|
|00003c10| 0c 82 00 00 0c 88 00 00 | 0c 8e 00 00 0c 94 00 00 |........|........|
|00003c20| 0c 9a 00 00 0c a0 2d 72 | 77 78 72 77 78 72 77 78 |......-r|wxrwxrwx|
|00003c30| 20 39 20 78 20 78 20 00 | 3c 44 49 52 3e 00 3c 64 | 9 x x .|<DIR>.<d|
|00003c40| 69 72 3e 00 73 69 7a 65 | 20 00 20 00 3a 00 20 00 |ir>.size| . .:. .|
|00003c50| 3a 30 30 00 31 32 3a 30 | 30 3a 30 30 00 00 50 41 |:00.12:0|0:00..PA|
|00003c60| 53 56 0d 0a 00 00 4c 49 | 53 54 0d 0a 00 00 4c 49 |SV....LI|ST....LI|
|00003c70| 53 54 0d 0a 00 00 54 59 | 50 45 20 49 0d 0a 00 00 |ST....TY|PE I....|
|00003c80| 43 57 44 20 25 73 0d 0a | 00 00 50 57 44 0d 0a 00 |CWD %s..|..PWD...|
|00003c90| 43 57 44 20 25 73 0d 0a | 00 00 50 57 44 0d 0a 00 |CWD %s..|..PWD...|
|00003ca0| 55 53 45 52 20 25 73 0d | 0a 00 55 53 45 52 20 66 |USER %s.|..USER f|
|00003cb0| 74 70 0d 0a 00 00 50 41 | 53 53 20 25 73 0d 0a 00 |tp....PA|SS %s...|
|00003cc0| 50 41 53 53 20 25 73 0d | 0a 00 00 00 00 00 00 00 |PASS %s.|........|
|00003cd0| 00 00 00 00 00 00 00 00 | 73 69 74 65 20 73 74 61 |........|site sta|
|00003ce0| 74 75 73 20 6d 65 73 73 | 61 67 65 00 69 6e 74 75 |tus mess|age.intu|
|00003cf0| 69 74 69 6f 6e 2e 6c 69 | 62 72 61 72 79 00 67 61 |ition.li|brary.ga|
|00003d00| 64 74 6f 6f 6c 73 2e 6c | 69 62 72 61 72 79 00 00 |dtools.l|ibrary..|
|00003d10| 67 72 61 70 68 69 63 73 | 2e 6c 69 62 72 61 72 79 |graphics|.library|
|00003d20| 00 00 74 69 6d 65 72 2e | 64 65 76 69 63 65 00 00 |..timer.|device..|
|00003d30| 73 69 74 65 20 73 74 61 | 74 75 73 20 6d 65 73 73 |site sta|tus mess|
|00003d40| 61 67 65 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |age.....|........|
|00003d50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003d60| 00 00 00 00 0e 04 00 00 | 00 00 20 2e 2e 2e 00 00 |........|.. .....|
|00003d70| 69 6e 74 75 69 74 69 6f | 6e 2e 6c 69 62 72 61 72 |intuitio|n.librar|
|00003d80| 79 00 67 72 61 70 68 69 | 63 73 2e 6c 69 62 72 61 |y.graphi|cs.libra|
|00003d90| 72 79 00 00 67 61 64 74 | 6f 6f 6c 73 2e 6c 69 62 |ry..gadt|ools.lib|
|00003da0| 72 61 72 79 00 00 63 6f | 6d 6d 6f 64 69 74 69 65 |rary..co|mmoditie|
|00003db0| 73 2e 6c 69 62 72 61 72 | 79 00 66 74 70 73 74 61 |s.librar|y.ftpsta|
|00003dc0| 74 75 73 20 72 65 73 65 | 72 76 65 20 6d 65 73 73 |tus rese|rve mess|
|00003dd0| 61 67 65 00 46 54 50 4d | 6f 75 6e 74 20 76 31 2e |age.FTPM|ount v1.|
|00003de0| 30 00 00 00 00 00 00 00 | 64 6f 73 2e 6c 69 62 72 |0.......|dos.libr|
|00003df0| 61 72 79 00 00 00 00 00 | 44 69 73 6b 00 00 55 6e |ary.....|Disk..Un|
|00003e00| 6e 61 6d 65 64 00 2e 62 | 61 63 6b 64 72 6f 70 00 |named..b|ackdrop.|
|00003e10| 44 65 66 61 75 6c 74 00 | 2e 69 6e 66 6f 00 00 00 |Default.|.info...|
|00003e20| 00 00 00 00 00 00 40 00 | 00 20 20 20 20 20 20 20 |......@.|. |
|00003e30| 20 20 28 28 28 28 28 20 | 20 20 20 20 20 20 20 20 | ((((( | |
|00003e40| 20 20 20 20 20 20 20 20 | 20 48 10 10 10 10 10 10 | | H......|
|00003e50| 10 10 10 10 10 10 10 10 | 10 84 84 84 84 84 84 84 |........|........|
|00003e60| 84 84 84 10 10 10 10 10 | 10 10 81 81 81 81 81 81 |........|........|
|00003e70| 01 01 01 01 01 01 01 01 | 01 01 01 01 01 01 01 01 |........|........|
|00003e80| 01 01 01 01 10 10 10 10 | 10 10 82 82 82 82 82 82 |........|........|
|00003e90| 02 02 02 02 02 02 02 02 | 02 02 02 02 02 02 02 02 |........|........|
|00003ea0| 02 02 02 02 10 10 10 10 | 20 00 00 00 00 00 00 00 |........| .......|
|00003eb0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003ec0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003ed0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003ee0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003ef0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003f00| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003f10| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003f20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003f30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003f40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003f50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003f60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003f70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003f80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003f90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003fa0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003fb0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003fc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003fd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00003fe0| 00 00 00 00 00 00 00 00 | 00 00 03 ec 00 00 00 7a |........|.......z|
|00003ff0| 00 00 00 06 00 00 0e 12 | 00 00 0c d2 00 00 0c ce |........|........|
|00004000| 00 00 0c ca 00 00 0c c6 | 00 00 0c c2 00 00 0c be |........|........|
|00004010| 00 00 0c ba 00 00 0c b6 | 00 00 0c b2 00 00 0c ae |........|........|
|00004020| 00 00 0c aa 00 00 0c a6 | 00 00 09 d2 00 00 09 ce |........|........|
|00004030| 00 00 09 ca 00 00 09 c6 | 00 00 09 c2 00 00 09 be |........|........|
|00004040| 00 00 09 ba 00 00 09 b6 | 00 00 09 b2 00 00 09 ae |........|........|
|00004050| 00 00 09 aa 00 00 09 a6 | 00 00 09 a2 00 00 09 9e |........|........|
|00004060| 00 00 09 9a 00 00 09 96 | 00 00 09 92 00 00 09 8e |........|........|
|00004070| 00 00 09 8a 00 00 09 86 | 00 00 09 82 00 00 09 7e |........|.......~|
|00004080| 00 00 09 7a 00 00 09 76 | 00 00 09 72 00 00 09 6e |...z...v|...r...n|
|00004090| 00 00 09 6a 00 00 09 66 | 00 00 09 62 00 00 09 5e |...j...f|...b...^|
|000040a0| 00 00 09 5a 00 00 09 56 | 00 00 09 52 00 00 09 4e |...Z...V|...R...N|
|000040b0| 00 00 09 4a 00 00 09 46 | 00 00 09 42 00 00 09 3e |...J...F|...B...>|
|000040c0| 00 00 09 3a 00 00 09 36 | 00 00 09 32 00 00 09 2e |...:...6|...2....|
|000040d0| 00 00 09 2a 00 00 09 26 | 00 00 09 22 00 00 09 1e |...*...&|..."....|
|000040e0| 00 00 09 1a 00 00 09 16 | 00 00 09 12 00 00 09 0e |........|........|
|000040f0| 00 00 09 0a 00 00 09 06 | 00 00 09 02 00 00 08 fe |........|........|
|00004100| 00 00 08 fa 00 00 08 f6 | 00 00 08 f2 00 00 08 ee |........|........|
|00004110| 00 00 08 ea 00 00 08 e6 | 00 00 08 e2 00 00 08 de |........|........|
|00004120| 00 00 08 da 00 00 08 d6 | 00 00 08 d2 00 00 08 ce |........|........|
|00004130| 00 00 08 ca 00 00 08 c6 | 00 00 08 c2 00 00 08 be |........|........|
|00004140| 00 00 08 ba 00 00 08 b6 | 00 00 08 b2 00 00 08 ae |........|........|
|00004150| 00 00 08 aa 00 00 08 a6 | 00 00 08 a2 00 00 08 9e |........|........|
|00004160| 00 00 08 9a 00 00 08 96 | 00 00 08 92 00 00 08 8e |........|........|
|00004170| 00 00 08 8a 00 00 08 86 | 00 00 08 82 00 00 08 7e |........|.......~|
|00004180| 00 00 08 7a 00 00 08 76 | 00 00 08 72 00 00 08 6e |...z...v|...r...n|
|00004190| 00 00 08 6a 00 00 08 66 | 00 00 08 62 00 00 08 5e |...j...f|...b...^|
|000041a0| 00 00 08 5a 00 00 08 56 | 00 00 08 52 00 00 08 4e |...Z...V|...R...N|
|000041b0| 00 00 08 4a 00 00 08 46 | 00 00 08 42 00 00 08 3e |...J...F|...B...>|
|000041c0| 00 00 08 3a 00 00 08 36 | 00 00 08 32 00 00 08 2e |...:...6|...2....|
|000041d0| 00 00 08 2a 00 00 08 26 | 00 00 00 26 00 00 00 00 |...*...&|...&....|
|000041e0| 00 00 03 f2 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000041f0| 00 00 00 00 00 00 03 70 | 00 00 00 00 00 00 00 02 |.......p|........|
|00004200| 00 00 00 02 00 00 00 21 | 00 00 00 00 00 00 00 00 |.......!|........|
|00004210| 00 00 00 00 87 48 e7 2c | 00 00 00 00 00 00 00 00 |.....H.,|........|
|00004220| 00 00 00 00 00 00 02 37 | 00 00 00 00 00 00 00 00 |.......7|........|
|00004230| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004240| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004250| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004260| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004270| 00 00 00 00 00 00 00 00 | 00 00 00 ad 00 00 00 00 |........|........|
|00004280| 00 00 00 00 00 00 00 ec | 00 00 00 00 00 00 00 00 |........|........|
|00004290| 00 00 00 00 00 00 00 c5 | 00 00 00 22 00 00 00 00 |........|..."....|
|000042a0| 00 00 00 00 00 00 00 98 | 00 00 00 ea 00 00 00 95 |........|........|
|000042b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 9b |........|........|
|000042c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 01 ba |........|........|
|000042d0| 00 00 02 3d 00 00 00 00 | 00 00 00 00 00 00 00 00 |...=....|........|
|000042e0| 00 00 02 32 00 00 00 00 | 00 00 00 00 00 00 00 00 |...2....|........|
|000042f0| 00 00 00 00 00 00 00 a9 | 00 00 00 00 00 00 00 00 |........|........|
|00004300| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 01 d9 |........|........|
|00004310| 00 00 01 a9 00 00 00 00 | 00 00 01 3f 00 00 00 00 |........|...?....|
|00004320| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 01 a4 |........|........|
|00004330| 00 00 00 00 00 00 01 3d | 00 00 00 00 00 00 00 00 |.......=|........|
|00004340| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004350| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004360| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004370| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004380| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004390| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000043a0| 00 00 00 00 00 00 1a f9 | 00 00 04 15 00 00 09 5a |........|.......Z|
|000043b0| 06 53 6f 75 72 63 65 00 | 00 00 00 00 00 00 00 00 |.Source.|........|
|000043c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000043d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000043e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000043f0| 00 00 00 00 00 00 05 f5 | 00 00 00 00 00 00 00 02 |........|........|
|00004400| 00 00 00 02 00 00 00 22 | 00 00 00 48 00 00 00 00 |......."|...H....|
|00004410| 00 00 00 23 59 d3 10 7e | 00 00 00 6a 00 00 00 69 |...#Y..~|...j...i|
|00004420| 00 00 00 68 00 00 00 67 | 00 00 00 66 00 00 00 65 |...h...g|...f...e|
|00004430| 00 00 00 64 00 00 00 63 | 00 00 00 62 00 00 00 61 |...d...c|...b...a|
|00004440| 00 00 00 60 00 00 00 5f | 00 00 00 5e 00 00 00 5d |...`..._|...^...]|
|00004450| 00 00 00 5c 00 00 00 5b | 00 00 00 5a 00 00 00 59 |...\...[|...Z...Y|
|00004460| 00 00 00 58 00 00 00 57 | 00 00 00 56 00 00 00 55 |...X...W|...V...U|
|00004470| 00 00 00 54 00 00 00 53 | 00 00 00 52 00 00 00 51 |...T...S|...R...Q|
|00004480| 00 00 00 50 00 00 00 4f | 00 00 00 4e 00 00 00 4d |...P...O|...N...M|
|00004490| 00 00 00 4c 00 00 00 4b | 00 00 00 4a 00 00 00 49 |...L...K|...J...I|
|000044a0| 00 00 00 48 00 00 00 47 | 00 00 00 46 00 00 00 45 |...H...G|...F...E|
|000044b0| 00 00 00 44 00 00 00 43 | 00 00 00 42 00 00 00 41 |...D...C|...B...A|
|000044c0| 00 00 00 40 00 00 00 3f | 00 00 00 3e 00 00 00 3d |...@...?|...>...=|
|000044d0| 00 00 00 3c 00 00 00 3b | 00 00 00 3a 00 00 00 39 |...<...;|...:...9|
|000044e0| 00 00 00 38 00 00 00 37 | 00 00 00 36 00 00 00 35 |...8...7|...6...5|
|000044f0| 00 00 00 34 00 00 00 33 | 00 00 00 32 00 00 00 31 |...4...3|...2...1|
|00004500| 00 00 00 30 00 00 00 2f | 00 00 00 2e 00 00 00 2d |...0.../|.......-|
|00004510| 00 00 00 2c 00 00 00 2b | 00 00 00 2a 00 00 00 29 |...,...+|...*...)|
|00004520| 00 00 00 28 00 00 00 27 | 00 00 00 26 00 00 00 25 |...(...'|...&...%|
|00004530| 00 00 00 24 00 00 00 23 | 00 00 00 00 00 00 00 00 |...$...#|........|
|00004540| 00 00 00 00 00 00 e1 90 | 00 00 00 00 00 00 00 00 |........|........|
|00004550| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004560| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004570| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004580| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00004590| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000045a0| 00 00 00 00 00 00 1a 14 | 00 00 05 32 00 00 06 40 |........|...2...@|
|000045b0| 09 63 6f 6e 6e 65 63 74 | 2e 63 00 00 00 00 00 00 |.connect|.c......|
|000045c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000045d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000045e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000045f0| 00 00 00 9e 00 00 00 21 | 00 00 00 6b ff ff ff fd |.......!|...k....|
|00004600| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|00004610| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|00004620| 67 68 74 20 31 39 39 35 | 20 61 6e 64 20 31 39 39 |ght 1995| and 199|
|00004630| 36 20 62 79 20 45 76 61 | 6e 20 53 63 6f 74 74 2c |6 by Eva|n Scott,|
|00004640| 20 61 70 61 72 74 20 66 | 72 6f 6d 20 74 68 6f 73 | apart f|rom thos|
|00004650| 65 20 73 65 63 74 69 6f | 6e 73 20 77 68 69 63 68 |e sectio|ns which|
|00004660| 20 61 72 65 0a 20 2a 20 | 65 78 70 6c 69 63 69 74 | are. * |explicit|
|00004670| 6c 79 20 64 65 73 63 72 | 69 62 65 64 20 61 73 20 |ly descr|ibed as |
|00004680| 6f 74 68 65 72 77 69 73 | 65 2e 0a 20 2a 20 41 6c |otherwis|e.. * Al|
|00004690| 6c 20 72 69 67 68 74 73 | 20 72 65 73 65 72 76 65 |l rights| reserve|
|000046a0| 64 2e 0a 20 2a 20 50 65 | 72 6d 69 73 73 69 6f 6e |d.. * Pe|rmission|
|000046b0| 20 69 73 20 67 72 61 6e | 74 65 64 20 74 6f 20 64 | is gran|ted to d|
|000046c0| 69 73 74 72 69 62 75 74 | 65 20 74 68 69 73 20 66 |istribut|e this f|
|000046d0| 69 6c 65 20 70 72 6f 76 | 69 64 65 64 20 6e 6f 0a |ile prov|ided no.|
|000046e0| 20 2a 20 66 65 65 73 20 | 62 65 79 6f 6e 64 20 64 | * fees |beyond d|
|000046f0| 69 73 74 72 69 62 75 74 | 69 6f 6e 20 63 6f 73 74 |istribut|ion cost|
|00004700| 73 20 61 72 65 20 6c 65 | 76 69 65 64 2e 0a 20 2a |s are le|vied.. *|
|00004710| 2f 0a 0a 23 69 6e 63 6c | 75 64 65 20 3c 65 78 65 |/..#incl|ude <exe|
|00004720| 63 2f 74 79 70 65 73 2e | 68 3e 0a 23 69 6e 63 6c |c/types.|h>.#incl|
|00004730| 75 64 65 20 3c 65 78 65 | 63 2f 6d 65 6d 6f 72 79 |ude <exe|c/memory|
|00004740| 2e 68 3e 0a 23 69 6e 63 | 6c 75 64 65 20 3c 65 78 |.h>.#inc|lude <ex|
|00004750| 65 63 2f 61 6c 65 72 74 | 73 2e 68 3e 0a 0a 23 69 |ec/alert|s.h>..#i|
|00004760| 6e 63 6c 75 64 65 20 3c | 64 65 76 69 63 65 73 2f |nclude <|devices/|
|00004770| 74 69 6d 65 72 2e 68 3e | 0a 0a 23 69 6e 63 6c 75 |timer.h>|..#inclu|
|00004780| 64 65 20 3c 64 6f 73 2f | 64 6f 73 2e 68 3e 0a 23 |de <dos/|dos.h>.#|
|00004790| 69 6e 63 6c 75 64 65 20 | 3c 64 6f 73 2f 64 6f 73 |include |<dos/dos|
|000047a0| 65 78 74 65 6e 73 2e 68 | 3e 0a 23 69 6e 63 6c 75 |extens.h|>.#inclu|
|000047b0| 64 65 20 3c 64 6f 73 2f | 64 6f 73 74 61 67 73 2e |de <dos/|dostags.|
|000047c0| 68 3e 0a 0a 23 69 6e 63 | 6c 75 64 65 20 3c 70 72 |h>..#inc|lude <pr|
|000047d0| 6f 74 6f 2f 65 78 65 63 | 2e 68 3e 0a 23 69 6e 63 |oto/exec|.h>.#inc|
|000047e0| 6c 75 64 65 20 3c 70 72 | 6f 74 6f 2f 64 6f 73 2e |lude <pr|oto/dos.|
|000047f0| 68 3e 0a 23 69 6e 63 6c | 75 64 65 20 3c 70 72 6f |h>.#incl|ude <pro|
|00004800| 74 6f 2f 69 6e 74 75 69 | 74 69 6f 6e 2e 68 3e 0a |to/intui|tion.h>.|
|00004810| 23 69 6e 63 6c 75 64 65 | 20 3c 70 72 6f 74 6f 2f |#include| <proto/|
|00004820| 67 61 64 74 6f 6f 6c 73 | 2e 68 3e 0a 0a 23 69 6e |gadtools|.h>..#in|
|00004830| 63 6c 75 64 65 20 3c 73 | 74 64 69 6f 2e 68 3e 0a |clude <s|tdio.h>.|
|00004840| 23 69 6e 63 6c 75 64 65 | 20 3c 73 74 64 6c 69 62 |#include| <stdlib|
|00004850| 2e 68 3e 0a 23 69 6e 63 | 6c 75 64 65 20 3c 73 74 |.h>.#inc|lude <st|
|00004860| 72 69 6e 67 2e 68 3e 0a | 0a 23 69 6e 63 6c 75 64 |ring.h>.|.#includ|
|00004870| 65 20 3c 63 74 79 70 65 | 2e 68 3e 20 20 20 20 20 |e <ctype|.h> |
|00004880| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00004890| 2f 2f 20 66 6f 72 20 69 | 73 64 69 67 69 74 28 29 |// for i|sdigit()|
|000048a0| 20 20 28 52 4a 46 29 0a | 23 69 6e 63 6c 75 64 65 | (RJF).|#include|
|000048b0| 20 22 65 76 74 79 70 65 | 73 2e 68 22 0a 23 69 6e | "evtype|s.h".#in|
|000048c0| 63 6c 75 64 65 20 22 76 | 65 72 69 66 79 2e 68 22 |clude "v|erify.h"|
|000048d0| 0a 23 69 6e 63 6c 75 64 | 65 20 22 74 63 70 2e 68 |.#includ|e "tcp.h|
|000048e0| 22 0a 0a 23 69 6e 63 6c | 75 64 65 20 22 73 69 74 |"..#incl|ude "sit|
|000048f0| 65 2e 68 22 0a 23 69 6e | 63 6c 75 64 65 20 22 66 |e.h".#in|clude "f|
|00004900| 74 70 2e 68 22 0a 23 69 | 6e 63 6c 75 64 65 20 22 |tp.h".#i|nclude "|
|00004910| 73 70 6c 69 74 2e 68 22 | 0a 23 69 6e 63 6c 75 64 |split.h"|.#includ|
|00004920| 65 20 22 66 74 70 69 6e | 66 6f 2e 68 22 0a 23 69 |e "ftpin|fo.h".#i|
|00004930| 6e 63 6c 75 64 65 20 22 | 63 6f 6e 6e 65 63 74 2e |nclude "|connect.|
|00004940| 68 22 0a 23 69 6e 63 6c | 75 64 65 20 22 72 65 71 |h".#incl|ude "req|
|00004950| 75 65 73 74 2e 68 22 0a | 0a 23 69 6e 63 6c 75 64 |uest.h".|.#includ|
|00004960| 65 20 22 67 6c 6f 62 61 | 6c 73 2e 68 22 0a 23 69 |e "globa|ls.h".#i|
|00004970| 6e 63 6c 75 64 65 20 22 | 73 74 72 69 6e 67 73 2e |nclude "|strings.|
|00004980| 68 22 0a 0a 23 64 65 66 | 69 6e 65 20 45 52 52 4f |h"..#def|ine ERRO|
|00004990| 52 5f 47 41 52 42 41 47 | 45 5f 52 45 43 45 49 56 |R_GARBAG|E_RECEIV|
|000049a0| 45 44 20 31 35 0a 0a 65 | 78 74 65 72 6e 20 66 74 |ED 15..e|xtern ft|
|000049b0| 70 69 6e 66 6f 20 2a 67 | 65 74 5f 69 6e 66 6f 28 |pinfo *g|et_info(|
|000049c0| 73 69 74 65 20 2a 2c 20 | 62 38 20 2a 29 3b 0a 0a |site *, |b8 *);..|
|000049d0| 62 38 20 2a 67 72 6f 77 | 5f 69 6e 66 6f 28 62 38 |b8 *grow|_info(b8|
|000049e0| 20 2a 61 2c 20 62 38 20 | 2a 62 2c 20 69 6e 74 20 | *a, b8 |*b, int |
|000049f0| 6e 29 0a 2f 2a 0a 20 2a | 20 63 6f 6e 63 61 74 65 |n)./*. *| concate|
|00004a00| 6e 61 74 65 73 20 61 20 | 61 6e 64 20 62 20 28 6e |nates a |and b (n|
|00004a10| 6f 74 20 6e 75 6c 6c 20 | 74 65 72 6d 69 6e 61 74 |ot null |terminat|
|00004a20| 65 64 20 6f 66 20 6c 65 | 6e 67 74 68 20 6e 29 20 |ed of le|ngth n) |
|00004a30| 61 6e 64 20 72 65 74 75 | 72 6e 73 0a 20 2a 20 61 |and retu|rns. * a|
|00004a40| 6e 20 61 6c 6c 6f 63 61 | 74 65 64 20 73 74 72 69 |n alloca|ted stri|
|00004a50| 6e 67 20 77 69 74 68 20 | 74 68 65 20 72 65 73 75 |ng with |the resu|
|00004a60| 6c 74 2e 20 20 61 20 69 | 73 20 66 72 65 65 64 2e |lt. a i|s freed.|
|00004a70| 0a 20 2a 20 09 61 20 6d | 61 79 20 62 65 20 6e 69 |. * .a m|ay be ni|
|00004a80| 6c 0a 20 2a 20 09 62 20 | 6d 61 79 20 6e 6f 74 0a |l. * .b |may not.|
|00004a90| 20 2a 2f 0a 7b 0a 09 62 | 38 20 2a 63 2c 20 2a 64 | */.{..b|8 *c, *d|
|00004aa0| 3b 0a 09 69 6e 74 20 6c | 65 6e 3b 0a 09 0a 09 69 |;..int l|en;....i|
|00004ab0| 66 20 28 61 29 20 6c 65 | 6e 20 3d 20 73 74 72 6c |f (a) le|n = strl|
|00004ac0| 65 6e 28 61 29 3b 0a 09 | 65 6c 73 65 20 6c 65 6e |en(a);..|else len|
|00004ad0| 20 3d 20 30 3b 0a 09 0a | 09 6c 65 6e 20 2b 3d 20 | = 0;...|.len += |
|00004ae0| 6e 20 2b 20 31 3b 0a 09 | 0a 09 63 20 3d 20 28 62 |n + 1;..|..c = (b|
|00004af0| 38 20 2a 29 61 6c 6c 6f | 63 61 74 65 28 6c 65 6e |8 *)allo|cate(len|
|00004b00| 2c 20 56 5f 63 73 74 72 | 29 3b 0a 09 69 66 20 28 |, V_cstr|);..if (|
|00004b10| 21 63 29 20 7b 0a 09 09 | 69 66 20 28 61 29 20 64 |!c) {...|if (a) d|
|00004b20| 65 61 6c 6c 6f 63 61 74 | 65 28 61 2c 20 56 5f 63 |eallocat|e(a, V_c|
|00004b30| 73 74 72 29 3b 0a 09 09 | 72 65 74 75 72 6e 20 6e |str);...|return n|
|00004b40| 69 6c 3b 0a 09 7d 0a 09 | 0a 09 69 66 20 28 61 29 |il;..}..|..if (a)|
|00004b50| 20 7b 0a 09 09 73 74 72 | 63 70 79 28 63 2c 20 61 | {...str|cpy(c, a|
|00004b60| 29 3b 0a 09 09 64 20 3d | 20 63 20 2b 20 73 74 72 |);...d =| c + str|
|00004b70| 6c 65 6e 28 63 29 3b 0a | 09 7d 20 65 6c 73 65 20 |len(c);.|.} else |
|00004b80| 7b 0a 09 09 64 20 3d 20 | 63 3b 0a 09 7d 0a 09 0a |{...d = |c;..}...|
|00004b90| 09 69 66 20 28 6e 29 0a | 09 09 6d 65 6d 63 70 79 |.if (n).|..memcpy|
|00004ba0| 28 64 2c 20 62 2c 20 6e | 29 3b 0a 09 64 5b 6e 5d |(d, b, n|);..d[n]|
|00004bb0| 20 3d 20 30 3b 0a 09 0a | 09 69 66 20 28 61 29 20 | = 0;...|.if (a) |
|00004bc0| 7b 0a 09 09 64 65 61 6c | 6c 6f 63 61 74 65 28 61 |{...deal|locate(a|
|00004bd0| 2c 20 56 5f 63 73 74 72 | 29 3b 0a 09 7d 0a 09 0a |, V_cstr|);..}...|
|00004be0| 09 61 20 3d 20 63 3b 0a | 09 77 68 69 6c 65 20 28 |.a = c;.|.while (|
|00004bf0| 2a 61 29 20 7b 0a 09 09 | 69 66 20 28 2a 61 20 3d |*a) {...|if (*a =|
|00004c00| 3d 20 27 5c 74 27 29 20 | 2a 61 20 3d 20 27 20 27 |= '\t') |*a = ' '|
|00004c10| 3b 09 2f 2a 20 68 6d 6d | 6d 20 2a 2f 0a 09 09 69 |;./* hmm|m */...i|
|00004c20| 66 20 28 2a 61 20 3d 3d | 20 27 5c 72 27 29 20 2a |f (*a ==| '\r') *|
|00004c30| 61 20 3d 20 27 5c 6e 27 | 3b 0a 09 09 61 2b 2b 3b |a = '\n'|;...a++;|
|00004c40| 0a 09 7d 0a 09 0a 09 72 | 65 74 75 72 6e 20 63 3b |..}....r|eturn c;|
|00004c50| 0a 7d 0a 0a 62 6f 6f 6c | 65 61 6e 20 73 75 62 73 |.}..bool|ean subs|
|00004c60| 74 72 28 62 38 20 2a 73 | 2c 20 62 38 20 2a 73 73 |tr(b8 *s|, b8 *ss|
|00004c70| 29 0a 2f 2a 0a 20 2a 20 | 72 65 74 75 72 6e 73 20 |)./*. * |returns |
|00004c80| 74 72 75 65 20 69 66 20 | 73 20 63 6f 6e 74 61 69 |true if |s contai|
|00004c90| 6e 73 20 73 73 20 28 6e | 6f 6e 2d 63 61 73 65 2d |ns ss (n|on-case-|
|00004ca0| 73 65 6e 73 69 74 69 76 | 65 29 0a 20 2a 20 73 20 |sensitiv|e). * s |
|00004cb0| 6d 61 79 20 62 65 20 6e | 69 6c 2c 20 69 6e 20 77 |may be n|il, in w|
|00004cc0| 68 69 63 68 20 63 61 73 | 65 20 66 61 6c 73 65 20 |hich cas|e false |
|00004cd0| 69 73 20 72 65 74 75 72 | 6e 65 64 0a 20 2a 2f 0a |is retur|ned. */.|
|00004ce0| 7b 0a 09 69 6e 74 20 6c | 65 6e 3b 0a 09 0a 09 69 |{..int l|en;....i|
|00004cf0| 66 20 28 73 20 3d 3d 20 | 6e 69 6c 29 20 72 65 74 |f (s == |nil) ret|
|00004d00| 75 72 6e 20 66 61 6c 73 | 65 3b 0a 09 0a 09 6c 65 |urn fals|e;....le|
|00004d10| 6e 20 3d 20 73 74 72 6c | 65 6e 28 73 73 29 3b 0a |n = strl|en(ss);.|
|00004d20| 09 0a 09 77 68 69 6c 65 | 20 28 2a 73 29 20 7b 0a |...while| (*s) {.|
|00004d30| 09 09 69 66 20 28 73 74 | 72 6e 69 63 6d 70 28 73 |..if (st|rnicmp(s|
|00004d40| 2c 20 73 73 2c 20 6c 65 | 6e 29 20 3d 3d 20 30 29 |, ss, le|n) == 0)|
|00004d50| 20 72 65 74 75 72 6e 20 | 74 72 75 65 3b 0a 09 09 | return |true;...|
|00004d60| 73 2b 2b 3b 0a 09 7d 0a | 09 0a 09 72 65 74 75 72 |s++;..}.|...retur|
|00004d70| 6e 20 66 61 6c 73 65 3b | 0a 7d 0a 0a 76 6f 69 64 |n false;|.}..void|
|00004d80| 20 69 6e 66 6f 72 6d 28 | 73 74 72 75 63 74 20 49 | inform(|struct I|
|00004d90| 6e 74 75 69 74 69 6f 6e | 42 61 73 65 20 2a 49 6e |ntuition|Base *In|
|00004da0| 74 75 69 74 69 6f 6e 42 | 61 73 65 2c 20 62 38 20 |tuitionB|ase, b8 |
|00004db0| 2a 74 69 74 6c 65 2c 20 | 62 38 20 2a 74 65 78 74 |*title, |b8 *text|
|00004dc0| 2c 20 62 38 20 2a 73 69 | 74 65 2c 20 62 33 32 20 |, b8 *si|te, b32 |
|00004dd0| 65 72 72 6e 6f 29 0a 7b | 0a 09 73 74 72 75 63 74 |errno).{|..struct|
|00004de0| 20 45 61 73 79 53 74 72 | 75 63 74 20 65 73 3b 0a | EasyStr|uct es;.|
|00004df0| 09 0a 09 65 73 2e 65 73 | 5f 53 74 72 75 63 74 53 |...es.es|_StructS|
|00004e00| 69 7a 65 20 3d 20 73 69 | 7a 65 6f 66 28 73 74 72 |ize = si|zeof(str|
|00004e10| 75 63 74 20 45 61 73 79 | 53 74 72 75 63 74 29 3b |uct Easy|Struct);|
|00004e20| 0a 09 65 73 2e 65 73 5f | 46 6c 61 67 73 20 3d 20 |..es.es_|Flags = |
|00004e30| 30 3b 0a 09 65 73 2e 65 | 73 5f 54 69 74 6c 65 20 |0;..es.e|s_Title |
|00004e40| 3d 20 74 69 74 6c 65 3b | 0a 09 65 73 2e 65 73 5f |= title;|..es.es_|
|00004e50| 47 61 64 67 65 74 46 6f | 72 6d 61 74 20 3d 20 73 |GadgetFo|rmat = s|
|00004e60| 74 72 69 6e 67 73 5b 4d | 53 47 5f 4f 4b 5d 3b 0a |trings[M|SG_OK];.|
|00004e70| 09 65 73 2e 65 73 5f 54 | 65 78 74 46 6f 72 6d 61 |.es.es_T|extForma|
|00004e80| 74 20 3d 20 74 65 78 74 | 3b 0a 09 0a 09 45 61 73 |t = text|;....Eas|
|00004e90| 79 52 65 71 75 65 73 74 | 28 6e 69 6c 2c 20 26 65 |yRequest|(nil, &e|
|00004ea0| 73 2c 20 6e 69 6c 2c 20 | 73 69 74 65 2c 20 65 72 |s, nil, |site, er|
|00004eb0| 72 6e 6f 29 3b 0a 7d 0a | 0a 74 63 70 6d 65 73 73 |rno);.}.|.tcpmess|
|00004ec0| 61 67 65 20 2a 6e 65 77 | 5f 6d 65 73 73 61 67 65 |age *new|_message|
|00004ed0| 28 73 69 74 65 20 2a 73 | 70 29 0a 2f 2a 0a 20 2a |(site *s|p)./*. *|
|00004ee0| 20 67 65 74 20 61 20 6e | 65 77 20 74 63 70 6d 65 | get a n|ew tcpme|
|00004ef0| 73 73 61 67 65 0a 20 2a | 2f 0a 7b 0a 09 74 63 70 |ssage. *|/.{..tcp|
|00004f00| 6d 65 73 73 61 67 65 20 | 2a 69 6e 74 72 3b 0a 09 |message |*intr;..|
|00004f10| 73 74 72 75 63 74 20 4d | 73 67 50 6f 72 74 20 2a |struct M|sgPort *|
|00004f20| 73 79 6e 63 3b 0a 09 0a | 09 76 65 72 69 66 79 28 |sync;...|.verify(|
|00004f30| 73 70 2c 20 56 5f 73 69 | 74 65 29 3b 0a 09 0a 09 |sp, V_si|te);....|
|00004f40| 69 6e 74 72 20 3d 20 73 | 70 2d 3e 69 6e 74 72 3b |intr = s|p->intr;|
|00004f50| 0a 09 76 65 72 69 66 79 | 28 69 6e 74 72 2c 20 56 |..verify|(intr, V|
|00004f60| 5f 74 63 70 6d 65 73 73 | 61 67 65 29 3b 0a 09 0a |_tcpmess|age);...|
|00004f70| 09 73 79 6e 63 20 3d 20 | 73 70 2d 3e 73 79 6e 63 |.sync = |sp->sync|
|00004f80| 3b 0a 09 0a 09 2f 2a 20 | 22 72 65 2d 75 73 65 22 |;..../* |"re-use"|
|00004f90| 20 69 6e 74 72 20 74 6f | 20 67 65 74 20 61 20 6e | intr to| get a n|
|00004fa0| 65 77 20 74 63 70 6d 65 | 73 73 61 67 65 20 2a 2f |ew tcpme|ssage */|
|00004fb0| 0a 09 69 6e 74 72 2d 3e | 63 6f 6d 6d 61 6e 64 20 |..intr->|command |
|00004fc0| 3d 20 54 43 50 5f 4e 45 | 57 4d 45 53 53 41 47 45 |= TCP_NE|WMESSAGE|
|00004fd0| 3b 0a 09 69 6e 74 72 2d | 3e 68 65 61 64 65 72 2e |;..intr-|>header.|
|00004fe0| 6d 6e 5f 52 65 70 6c 79 | 50 6f 72 74 20 3d 20 73 |mn_Reply|Port = s|
|00004ff0| 79 6e 63 3b 0a 09 0a 09 | 50 75 74 4d 73 67 28 74 |ync;....|PutMsg(t|
|00005000| 63 70 2c 20 26 69 6e 74 | 72 2d 3e 68 65 61 64 65 |cp, &int|r->heade|
|00005010| 72 29 3b 0a 09 57 61 69 | 74 50 6f 72 74 28 73 79 |r);..Wai|tPort(sy|
|00005020| 6e 63 29 3b 20 47 65 74 | 4d 73 67 28 73 79 6e 63 |nc); Get|Msg(sync|
|00005030| 29 3b 09 2f 2a 20 74 68 | 69 73 20 5f 73 68 6f 75 |);./* th|is _shou|
|00005040| 6c 64 5f 20 6e 65 76 65 | 72 20 62 6c 6f 63 6b 20 |ld_ neve|r block |
|00005050| 2a 2f 0a 09 0a 09 72 65 | 74 75 72 6e 20 28 74 63 |*/....re|turn (tc|
|00005060| 70 6d 65 73 73 61 67 65 | 20 2a 29 69 6e 74 72 2d |pmessage| *)intr-|
|00005070| 3e 64 61 74 61 3b 0a 7d | 0a 0a 76 6f 69 64 20 69 |>data;.}|..void i|
|00005080| 6e 74 65 72 72 75 70 74 | 5f 6d 65 73 73 61 67 65 |nterrupt|_message|
|00005090| 28 73 69 74 65 20 2a 73 | 70 2c 20 74 63 70 6d 65 |(site *s|p, tcpme|
|000050a0| 73 73 61 67 65 20 2a 74 | 6d 29 0a 2f 2a 0a 20 2a |ssage *t|m)./*. *|
|000050b0| 20 69 6e 74 65 72 72 75 | 70 74 20 74 6d 0a 20 2a | interru|pt tm. *|
|000050c0| 2f 0a 7b 0a 09 74 63 70 | 6d 65 73 73 61 67 65 20 |/.{..tcp|message |
|000050d0| 2a 69 6e 74 72 3b 0a 09 | 73 74 72 75 63 74 20 4d |*intr;..|struct M|
|000050e0| 73 67 50 6f 72 74 20 2a | 73 79 6e 63 3b 0a 09 0a |sgPort *|sync;...|
|000050f0| 09 76 65 72 69 66 79 28 | 73 70 2c 20 56 5f 73 69 |.verify(|sp, V_si|
|00005100| 74 65 29 3b 0a 09 76 65 | 72 69 66 79 28 74 6d 2c |te);..ve|rify(tm,|
|00005110| 20 56 5f 74 63 70 6d 65 | 73 73 61 67 65 29 3b 0a | V_tcpme|ssage);.|
|00005120| 09 0a 09 69 6e 74 72 20 | 3d 20 73 70 2d 3e 69 6e |...intr |= sp->in|
|00005130| 74 72 3b 0a 09 76 65 72 | 69 66 79 28 69 6e 74 72 |tr;..ver|ify(intr|
|00005140| 2c 20 56 5f 74 63 70 6d | 65 73 73 61 67 65 29 3b |, V_tcpm|essage);|
|00005150| 0a 09 0a 09 73 79 6e 63 | 20 3d 20 73 70 2d 3e 73 |....sync| = sp->s|
|00005160| 79 6e 63 3b 0a 09 0a 09 | 69 6e 74 72 2d 3e 63 6f |ync;....|intr->co|
|00005170| 6d 6d 61 6e 64 20 3d 20 | 54 43 50 5f 49 4e 54 45 |mmand = |TCP_INTE|
|00005180| 52 52 55 50 54 3b 0a 09 | 69 6e 74 72 2d 3e 68 65 |RRUPT;..|intr->he|
|00005190| 61 64 65 72 2e 6d 6e 5f | 52 65 70 6c 79 50 6f 72 |ader.mn_|ReplyPor|
|000051a0| 74 20 3d 20 73 79 6e 63 | 3b 0a 09 69 6e 74 72 2d |t = sync|;..intr-|
|000051b0| 3e 69 6e 74 65 72 72 75 | 70 74 20 3d 20 74 6d 3b |>interru|pt = tm;|
|000051c0| 0a 09 0a 09 50 75 74 4d | 73 67 28 74 63 70 2c 20 |....PutM|sg(tcp, |
|000051d0| 26 69 6e 74 72 2d 3e 68 | 65 61 64 65 72 29 3b 0a |&intr->h|eader);.|
|000051e0| 09 0a 09 2f 2a 0a 09 20 | 2a 20 4e 42 3a 20 49 20 |.../*.. |* NB: I |
|000051f0| 63 6f 75 6c 64 20 70 72 | 6f 62 61 62 6c 79 20 61 |could pr|obably a|
|00005200| 73 73 75 6d 65 20 74 6d | 2d 3e 68 65 61 64 65 72 |ssume tm|->header|
|00005210| 2e 6d 6e 5f 52 65 70 6c | 79 50 6f 72 74 20 3d 3d |.mn_Repl|yPort ==|
|00005220| 20 73 79 6e 63 20 73 61 | 66 65 6c 79 2c 20 62 75 | sync sa|fely, bu|
|00005230| 74 0a 09 20 2a 20 74 68 | 69 73 20 73 65 65 6d 73 |t.. * th|is seems|
|00005240| 20 61 20 62 69 74 20 6d | 6f 72 65 20 22 63 6f 72 | a bit m|ore "cor|
|00005250| 72 65 63 74 6c 79 20 67 | 65 6e 65 72 69 63 22 20 |rectly g|eneric" |
|00005260| 28 61 6c 74 68 6f 75 67 | 68 20 70 6f 74 65 6e 74 |(althoug|h potent|
|00005270| 69 61 6c 6c 79 20 6d 6f | 72 65 20 62 75 67 67 79 |ially mo|re buggy|
|00005280| 29 0a 09 20 2a 2f 0a 09 | 57 61 69 74 50 6f 72 74 |).. */..|WaitPort|
|00005290| 28 74 6d 2d 3e 68 65 61 | 64 65 72 2e 6d 6e 5f 52 |(tm->hea|der.mn_R|
|000052a0| 65 70 6c 79 50 6f 72 74 | 29 3b 20 47 65 74 4d 73 |eplyPort|); GetMs|
|000052b0| 67 28 74 6d 2d 3e 68 65 | 61 64 65 72 2e 6d 6e 5f |g(tm->he|ader.mn_|
|000052c0| 52 65 70 6c 79 50 6f 72 | 74 29 3b 09 2f 2a 20 61 |ReplyPor|t);./* a|
|000052d0| 62 6f 72 74 65 64 20 74 | 6d 20 63 6f 6d 69 6e 67 |borted t|m coming|
|000052e0| 20 62 61 63 6b 20 2a 2f | 0a 09 57 61 69 74 50 6f | back */|..WaitPo|
|000052f0| 72 74 28 73 79 6e 63 29 | 3b 20 47 65 74 4d 73 67 |rt(sync)|; GetMsg|
|00005300| 28 73 79 6e 63 29 3b 09 | 2f 2a 20 69 6e 74 72 20 |(sync);.|/* intr |
|00005310| 63 6f 6d 69 6e 67 20 62 | 61 63 6b 20 73 75 63 63 |coming b|ack succ|
|00005320| 65 73 73 66 75 6c 20 2a | 2f 0a 09 0a 09 72 65 74 |essful *|/....ret|
|00005330| 75 72 6e 3b 0a 7d 0a 0a | 62 33 32 20 63 6f 6e 74 |urn;.}..|b32 cont|
|00005340| 72 6f 6c 5f 77 72 69 74 | 65 28 73 69 74 65 20 2a |rol_writ|e(site *|
|00005350| 73 70 2c 20 62 38 20 2a | 63 6f 6d 6d 61 6e 64 2c |sp, b8 *|command,|
|00005360| 20 62 33 32 20 63 73 69 | 67 29 0a 2f 2a 0a 20 2a | b32 csi|g)./*. *|
|00005370| 20 77 72 69 74 65 73 20 | 74 68 65 20 73 74 72 69 | writes |the stri|
|00005380| 6e 67 20 63 6f 6d 6d 61 | 6e 64 20 74 6f 20 74 68 |ng comma|nd to th|
|00005390| 65 20 63 6f 6e 74 72 6f | 6c 20 63 6f 6e 6e 65 63 |e contro|l connec|
|000053a0| 74 69 6f 6e 0a 20 2a 20 | 49 6e 70 75 74 73 3a 0a |tion. * |Inputs:.|
|000053b0| 20 2a 20 09 73 70 09 3a | 20 73 69 74 65 20 70 6f | * .sp.:| site po|
|000053c0| 69 6e 74 65 72 0a 20 2a | 09 63 6f 6d 6d 61 6e 64 |inter. *|.command|
|000053d0| 20 3a 20 6e 75 6c 6c 20 | 74 65 72 6d 69 6e 61 74 | : null |terminat|
|000053e0| 65 64 20 63 6f 6d 6d 61 | 6e 64 20 73 74 72 69 6e |ed comma|nd strin|
|000053f0| 67 0a 20 2a 09 63 73 69 | 67 09 3a 20 61 64 64 69 |g. *.csi|g.: addi|
|00005400| 74 69 6f 6e 61 6c 20 63 | 61 6e 63 65 6c 20 73 69 |tional c|ancel si|
|00005410| 67 6e 61 6c 73 2c 20 30 | 20 69 73 20 6f 6b 0a 20 |gnals, 0| is ok. |
|00005420| 2a 0a 20 2a 20 72 65 74 | 75 72 6e 73 20 74 68 65 |*. * ret|urns the|
|00005430| 20 74 63 70 20 65 72 72 | 6f 72 0a 20 2a 2f 0a 7b | tcp err|or. */.{|
|00005440| 0a 09 74 63 70 6d 65 73 | 73 61 67 65 20 2a 74 6d |..tcpmes|sage *tm|
|00005450| 3b 0a 09 73 74 72 75 63 | 74 20 4d 73 67 50 6f 72 |;..struc|t MsgPor|
|00005460| 74 20 2a 73 79 6e 63 3b | 0a 09 62 33 32 20 73 69 |t *sync;|..b32 si|
|00005470| 67 6e 61 6c 73 2c 20 72 | 73 69 67 73 3b 0a 09 0a |gnals, r|sigs;...|
|00005480| 09 76 65 72 69 66 79 28 | 73 70 2c 20 56 5f 73 69 |.verify(|sp, V_si|
|00005490| 74 65 29 3b 0a 09 74 72 | 75 74 68 28 63 6f 6d 6d |te);..tr|uth(comm|
|000054a0| 61 6e 64 20 21 3d 20 6e | 69 6c 29 3b 0a 09 0a 09 |and != n|il);....|
|000054b0| 2f 2f 20 74 72 75 74 68 | 28 73 70 2d 3e 63 6f 6e |// truth|(sp->con|
|000054c0| 6e 65 63 74 65 64 29 3b | 0a 09 0a 09 74 6d 20 3d |nected);|....tm =|
|000054d0| 20 73 70 2d 3e 63 6f 6e | 74 72 6f 6c 3b 0a 09 76 | sp->con|trol;..v|
|000054e0| 65 72 69 66 79 28 74 6d | 2c 20 56 5f 74 63 70 6d |erify(tm|, V_tcpm|
|000054f0| 65 73 73 61 67 65 29 3b | 0a 09 0a 09 73 79 6e 63 |essage);|....sync|
|00005500| 20 3d 20 73 70 2d 3e 73 | 79 6e 63 3b 0a 09 0a 09 | = sp->s|ync;....|
|00005510| 74 6d 2d 3e 63 6f 6d 6d | 61 6e 64 20 3d 20 54 43 |tm->comm|and = TC|
|00005520| 50 5f 57 52 49 54 45 3b | 0a 09 74 6d 2d 3e 6c 65 |P_WRITE;|..tm->le|
|00005530| 6e 67 74 68 20 3d 20 73 | 74 72 6c 65 6e 28 63 6f |ngth = s|trlen(co|
|00005540| 6d 6d 61 6e 64 29 3b 0a | 09 74 6d 2d 3e 66 6c 61 |mmand);.|.tm->fla|
|00005550| 67 73 20 3d 20 30 3b 0a | 09 74 6d 2d 3e 64 61 74 |gs = 0;.|.tm->dat|
|00005560| 61 20 3d 20 63 6f 6d 6d | 61 6e 64 3b 0a 09 74 6d |a = comm|and;..tm|
|00005570| 2d 3e 68 65 61 64 65 72 | 2e 6d 6e 5f 52 65 70 6c |->header|.mn_Repl|
|00005580| 79 50 6f 72 74 20 3d 20 | 73 79 6e 63 3b 0a 09 0a |yPort = |sync;...|
|00005590| 09 63 73 69 67 20 7c 3d | 20 73 70 2d 3e 61 62 6f |.csig |=| sp->abo|
|000055a0| 72 74 5f 73 69 67 6e 61 | 6c 73 20 7c 20 73 70 2d |rt_signa|ls | sp-|
|000055b0| 3e 64 69 73 63 6f 6e 6e | 65 63 74 5f 73 69 67 6e |>disconn|ect_sign|
|000055c0| 61 6c 73 3b 0a 09 73 69 | 67 6e 61 6c 73 20 3d 20 |als;..si|gnals = |
|000055d0| 28 31 20 3c 3c 20 73 79 | 6e 63 2d 3e 6d 70 5f 53 |(1 << sy|nc->mp_S|
|000055e0| 69 67 42 69 74 29 20 7c | 20 63 73 69 67 3b 0a 09 |igBit) || csig;..|
|000055f0| 0a 09 50 75 74 4d 73 67 | 28 74 63 70 2c 20 26 74 |..PutMsg|(tcp, &t|
|00005600| 6d 2d 3e 68 65 61 64 65 | 72 29 3b 0a 09 64 6f 20 |m->heade|r);..do |
|00005610| 7b 0a 09 09 72 73 69 67 | 73 20 3d 20 57 61 69 74 |{...rsig|s = Wait|
|00005620| 28 73 69 67 6e 61 6c 73 | 29 3b 0a 09 09 69 66 20 |(signals|);...if |
|00005630| 28 72 73 69 67 73 20 26 | 20 63 73 69 67 29 20 7b |(rsigs &| csig) {|
|00005640| 0a 09 09 09 69 6e 74 65 | 72 72 75 70 74 5f 6d 65 |....inte|rrupt_me|
|00005650| 73 73 61 67 65 28 73 70 | 2c 20 74 6d 29 3b 0a 09 |ssage(sp|, tm);..|
|00005660| 09 09 0a 09 09 09 69 66 | 20 28 72 73 69 67 73 20 |......if| (rsigs |
|00005670| 26 20 73 70 2d 3e 64 69 | 73 63 6f 6e 6e 65 63 74 |& sp->di|sconnect|
|00005680| 5f 73 69 67 6e 61 6c 73 | 29 20 7b 0a 09 09 09 09 |_signals|) {.....|
|00005690| 64 69 73 63 6f 6e 6e 65 | 63 74 28 73 70 29 3b 0a |disconne|ct(sp);.|
|000056a0| 09 09 09 7d 0a 09 09 09 | 0a 09 09 09 72 65 74 75 |...}....|....retu|
|000056b0| 72 6e 20 45 52 52 4f 52 | 5f 49 4e 54 45 52 52 55 |rn ERROR|_INTERRU|
|000056c0| 50 54 45 44 3b 0a 09 09 | 7d 0a 09 7d 20 77 68 69 |PTED;...|}..} whi|
|000056d0| 6c 65 20 28 21 47 65 74 | 4d 73 67 28 73 79 6e 63 |le (!Get|Msg(sync|
|000056e0| 29 29 3b 0a 09 0a 09 72 | 65 74 75 72 6e 20 74 6d |));....r|eturn tm|
|000056f0| 2d 3e 65 72 72 6f 72 3b | 0a 7d 0a 0a 62 33 32 20 |->error;|.}..b32 |
|00005700| 6d 61 6b 65 5f 63 6f 6e | 6e 65 63 74 69 6f 6e 28 |make_con|nection(|
|00005710| 73 69 74 65 20 2a 73 70 | 2c 20 74 63 70 6d 65 73 |site *sp|, tcpmes|
|00005720| 73 61 67 65 20 2a 74 6d | 2c 20 62 38 20 2a 61 64 |sage *tm|, b8 *ad|
|00005730| 64 72 2c 20 62 31 36 20 | 70 6f 72 74 2c 20 62 33 |dr, b16 |port, b3|
|00005740| 32 20 63 73 69 67 29 0a | 2f 2a 0a 20 2a 20 6d 61 |2 csig).|/*. * ma|
|00005750| 6b 65 20 61 20 63 6f 6e | 6e 65 63 74 69 6f 6e 20 |ke a con|nection |
|00005760| 74 6f 20 61 20 72 65 6d | 6f 74 65 20 68 6f 73 74 |to a rem|ote host|
|00005770| 0a 20 2a 20 49 6e 70 75 | 74 73 3a 0a 20 2a 09 73 |. * Inpu|ts:. *.s|
|00005780| 70 09 3a 20 73 69 74 65 | 20 70 6f 69 6e 74 65 72 |p.: site| pointer|
|00005790| 0a 20 2a 09 74 6d 09 3a | 20 61 6e 20 75 6e 75 73 |. *.tm.:| an unus|
|000057a0| 65 64 20 74 63 70 6d 65 | 73 73 61 67 65 0a 20 2a |ed tcpme|ssage. *|
|000057b0| 09 61 64 64 72 09 3a 20 | 6e 75 6c 6c 20 74 65 72 |.addr.: |null ter|
|000057c0| 6d 69 6e 61 74 65 64 20 | 73 74 72 69 6e 67 20 61 |minated |string a|
|000057d0| 64 64 72 65 73 73 0a 20 | 2a 09 70 6f 72 74 09 3a |ddress. |*.port.:|
|000057e0| 20 70 6f 72 74 20 6e 75 | 6d 62 65 72 20 74 6f 20 | port nu|mber to |
|000057f0| 63 6f 6e 6e 65 63 74 20 | 74 6f 0a 20 2a 09 63 73 |connect |to. *.cs|
|00005800| 69 67 09 3a 20 61 64 64 | 69 74 69 6f 6e 61 6c 20 |ig.: add|itional |
|00005810| 63 61 6e 63 65 6c 20 73 | 69 67 6e 61 6c 73 20 28 |cancel s|ignals (|
|00005820| 6d 61 79 20 62 65 20 30 | 29 0a 20 2a 0a 20 2a 20 |may be 0|). *. * |
|00005830| 52 65 74 75 72 6e 73 3a | 0a 20 2a 20 09 73 74 61 |Returns:|. * .sta|
|00005840| 6e 64 61 72 64 20 74 63 | 70 20 65 72 72 6f 72 0a |ndard tc|p error.|
|00005850| 20 2a 2f 0a 7b 0a 09 73 | 74 72 75 63 74 20 4d 73 | */.{..s|truct Ms|
|00005860| 67 50 6f 72 74 20 2a 73 | 79 6e 63 3b 0a 09 62 33 |gPort *s|ync;..b3|
|00005870| 32 20 73 69 67 6e 61 6c | 73 2c 20 72 73 69 67 73 |2 signal|s, rsigs|
|00005880| 2c 20 61 73 69 67 73 3b | 0a 09 0a 09 76 65 72 69 |, asigs;|....veri|
|00005890| 66 79 28 73 70 2c 20 56 | 5f 73 69 74 65 29 3b 0a |fy(sp, V|_site);.|
|000058a0| 09 76 65 72 69 66 79 28 | 74 6d 2c 20 56 5f 74 63 |.verify(|tm, V_tc|
|000058b0| 70 6d 65 73 73 61 67 65 | 29 3b 0a 09 74 72 75 74 |pmessage|);..trut|
|000058c0| 68 28 61 64 64 72 20 21 | 3d 20 6e 69 6c 29 3b 0a |h(addr !|= nil);.|
|000058d0| 09 0a 09 73 79 6e 63 20 | 3d 20 73 70 2d 3e 73 79 |...sync |= sp->sy|
|000058e0| 6e 63 3b 0a 09 0a 09 74 | 6d 2d 3e 68 65 61 64 65 |nc;....t|m->heade|
|000058f0| 72 2e 6d 6e 5f 52 65 70 | 6c 79 50 6f 72 74 20 3d |r.mn_Rep|lyPort =|
|00005900| 20 73 79 6e 63 3b 0a 09 | 74 6d 2d 3e 63 6f 6d 6d | sync;..|tm->comm|
|00005910| 61 6e 64 20 3d 20 54 43 | 50 5f 43 4f 4e 4e 45 43 |and = TC|P_CONNEC|
|00005920| 54 3b 0a 09 74 6d 2d 3e | 64 61 74 61 20 3d 20 61 |T;..tm->|data = a|
|00005930| 64 64 72 3b 0a 09 74 6d | 2d 3e 70 6f 72 74 2e 77 |ddr;..tm|->port.w|
|00005940| 20 3d 20 70 6f 72 74 3b | 0a 09 74 6d 2d 3e 66 6c | = port;|..tm->fl|
|00005950| 61 67 73 20 3d 20 30 3b | 0a 09 0a 09 61 73 69 67 |ags = 0;|....asig|
|00005960| 73 20 3d 20 63 73 69 67 | 20 7c 20 73 70 2d 3e 61 |s = csig| | sp->a|
|00005970| 62 6f 72 74 5f 73 69 67 | 6e 61 6c 73 20 7c 20 73 |bort_sig|nals | s|
|00005980| 70 2d 3e 64 69 73 63 6f | 6e 6e 65 63 74 5f 73 69 |p->disco|nnect_si|
|00005990| 67 6e 61 6c 73 3b 0a 09 | 73 69 67 6e 61 6c 73 20 |gnals;..|signals |
|000059a0| 3d 20 61 73 69 67 73 20 | 7c 20 28 31 20 3c 3c 20 |= asigs || (1 << |
|000059b0| 73 79 6e 63 2d 3e 6d 70 | 5f 53 69 67 42 69 74 29 |sync->mp|_SigBit)|
|000059c0| 3b 0a 09 0a 09 50 75 74 | 4d 73 67 28 74 63 70 2c |;....Put|Msg(tcp,|
|000059d0| 20 26 74 6d 2d 3e 68 65 | 61 64 65 72 29 3b 0a 09 | &tm->he|ader);..|
|000059e0| 64 6f 20 7b 0a 09 09 72 | 73 69 67 73 20 3d 20 57 |do {...r|sigs = W|
|000059f0| 61 69 74 28 73 69 67 6e | 61 6c 73 29 3b 0a 09 09 |ait(sign|als);...|
|00005a00| 69 66 20 28 72 73 69 67 | 73 20 26 20 61 73 69 67 |if (rsig|s & asig|
|00005a10| 73 29 20 7b 0a 09 09 09 | 69 6e 74 65 72 72 75 70 |s) {....|interrup|
|00005a20| 74 5f 6d 65 73 73 61 67 | 65 28 73 70 2c 20 74 6d |t_messag|e(sp, tm|
|00005a30| 29 3b 0a 09 09 09 0a 09 | 09 09 69 66 20 28 72 73 |);......|..if (rs|
|00005a40| 69 67 73 20 26 20 73 70 | 2d 3e 64 69 73 63 6f 6e |igs & sp|->discon|
|00005a50| 6e 65 63 74 5f 73 69 67 | 6e 61 6c 73 29 20 7b 0a |nect_sig|nals) {.|
|00005a60| 09 09 09 09 64 69 73 63 | 6f 6e 6e 65 63 74 28 73 |....disc|onnect(s|
|00005a70| 70 29 3b 0a 09 09 09 7d | 0a 09 09 09 0a 09 09 09 |p);....}|........|
|00005a80| 72 65 74 75 72 6e 20 45 | 52 52 4f 52 5f 49 4e 54 |return E|RROR_INT|
|00005a90| 45 52 52 55 50 54 45 44 | 3b 0a 09 09 7d 0a 09 7d |ERRUPTED|;...}..}|
|00005aa0| 20 77 68 69 6c 65 20 28 | 21 47 65 74 4d 73 67 28 | while (|!GetMsg(|
|00005ab0| 73 79 6e 63 29 29 3b 0a | 09 0a 09 72 65 74 75 72 |sync));.|...retur|
|00005ac0| 6e 20 74 6d 2d 3e 65 72 | 72 6f 72 3b 0a 7d 0a 0a |n tm->er|ror;.}..|
|00005ad0| 76 6f 69 64 20 62 72 65 | 61 6b 5f 63 6f 6e 6e 65 |void bre|ak_conne|
|00005ae0| 63 74 69 6f 6e 28 73 69 | 74 65 20 2a 73 70 2c 20 |ction(si|te *sp, |
|00005af0| 74 63 70 6d 65 73 73 61 | 67 65 20 2a 74 6d 29 0a |tcpmessa|ge *tm).|
|00005b00| 2f 2a 0a 20 2a 20 64 6f | 20 61 20 54 43 50 5f 43 |/*. * do| a TCP_C|
|00005b10| 4c 4f 53 45 20 6f 6e 20 | 74 6d 0a 20 2a 2f 0a 7b |LOSE on |tm. */.{|
|00005b20| 0a 09 73 74 72 75 63 74 | 20 4d 73 67 50 6f 72 74 |..struct| MsgPort|
|00005b30| 20 2a 73 79 6e 63 3b 0a | 09 0a 09 76 65 72 69 66 | *sync;.|...verif|
|00005b40| 79 28 73 70 2c 20 56 5f | 73 69 74 65 29 3b 0a 09 |y(sp, V_|site);..|
|00005b50| 76 65 72 69 66 79 28 74 | 6d 2c 20 56 5f 74 63 70 |verify(t|m, V_tcp|
|00005b60| 6d 65 73 73 61 67 65 29 | 3b 0a 09 0a 09 73 79 6e |message)|;....syn|
|00005b70| 63 20 3d 20 73 70 2d 3e | 73 79 6e 63 3b 0a 09 0a |c = sp->|sync;...|
|00005b80| 09 74 6d 2d 3e 63 6f 6d | 6d 61 6e 64 20 3d 20 54 |.tm->com|mand = T|
|00005b90| 43 50 5f 43 4c 4f 53 45 | 3b 0a 09 74 6d 2d 3e 68 |CP_CLOSE|;..tm->h|
|00005ba0| 65 61 64 65 72 2e 6d 6e | 5f 52 65 70 6c 79 50 6f |eader.mn|_ReplyPo|
|00005bb0| 72 74 20 3d 20 73 79 6e | 63 3b 0a 09 0a 09 50 75 |rt = syn|c;....Pu|
|00005bc0| 74 4d 73 67 28 74 63 70 | 2c 20 26 74 6d 2d 3e 68 |tMsg(tcp|, &tm->h|
|00005bd0| 65 61 64 65 72 29 3b 0a | 09 57 61 69 74 50 6f 72 |eader);.|.WaitPor|
|00005be0| 74 28 73 79 6e 63 29 3b | 20 47 65 74 4d 73 67 28 |t(sync);| GetMsg(|
|00005bf0| 73 79 6e 63 29 3b 0a 09 | 0a 09 72 65 74 75 72 6e |sync);..|..return|
|00005c00| 3b 0a 7d 0a 0a 62 6f 6f | 6c 65 61 6e 20 70 61 73 |;.}..boo|lean pas|
|00005c10| 73 69 76 65 5f 72 65 73 | 70 6f 6e 73 65 28 62 38 |sive_res|ponse(b8|
|00005c20| 20 2a 73 2c 20 62 38 20 | 2a 61 64 64 72 2c 20 62 | *s, b8 |*addr, b|
|00005c30| 31 36 20 2a 70 6f 72 74 | 70 29 0a 2f 2a 0a 20 2a |16 *port|p)./*. *|
|00005c40| 20 70 61 72 73 65 20 74 | 68 65 20 72 65 73 70 6f | parse t|he respo|
|00005c50| 6e 73 65 20 74 6f 20 61 | 20 50 41 53 56 20 63 6f |nse to a| PASV co|
|00005c60| 6d 6d 61 6e 64 0a 20 2a | 20 49 6e 70 75 74 73 3a |mmand. *| Inputs:|
|00005c70| 0a 20 2a 09 73 09 3a 20 | 74 68 65 20 72 65 73 70 |. *.s.: |the resp|
|00005c80| 6f 6e 73 65 20 74 6f 20 | 74 68 65 20 50 41 53 56 |onse to |the PASV|
|00005c90| 20 28 6e 75 6c 6c 20 74 | 65 72 6d 69 6e 61 74 65 | (null t|erminate|
|00005ca0| 64 29 0a 20 2a 09 61 64 | 64 72 09 3a 20 61 20 62 |d). *.ad|dr.: a b|
|00005cb0| 75 66 66 65 72 20 74 6f | 20 68 6f 6c 64 20 74 68 |uffer to| hold th|
|00005cc0| 65 20 61 64 64 72 65 73 | 73 20 28 73 68 6f 75 6c |e addres|s (shoul|
|00005cd0| 64 20 62 65 20 61 73 20 | 6c 6f 6e 67 20 61 73 20 |d be as |long as |
|00005ce0| 73 29 0a 20 2a 09 70 6f | 72 74 70 09 3a 20 77 68 |s). *.po|rtp.: wh|
|00005cf0| 65 72 65 20 74 6f 20 70 | 75 74 20 74 68 65 20 70 |ere to p|ut the p|
|00005d00| 6f 72 74 20 6e 75 6d 62 | 65 72 0a 20 2a 0a 20 2a |ort numb|er. *. *|
|00005d10| 20 52 65 74 75 72 6e 73 | 3a 0a 20 2a 09 74 72 75 | Returns|:. *.tru|
|00005d20| 65 20 69 66 20 69 74 20 | 77 61 73 20 61 20 76 61 |e if it |was a va|
|00005d30| 6c 69 64 20 50 41 53 56 | 20 72 65 73 70 6f 6e 73 |lid PASV| respons|
|00005d40| 65 0a 20 2a 2f 0a 7b 0a | 09 62 38 20 2a 74 3b 0a |e. */.{.|.b8 *t;.|
|00005d50| 09 62 31 36 20 6e 63 6f | 6d 6d 61 73 2c 20 70 6f |.b16 nco|mmas, po|
|00005d60| 72 74 6e 3b 0a 09 0a 09 | 74 72 75 74 68 28 73 20 |rtn;....|truth(s |
|00005d70| 21 3d 20 6e 69 6c 29 3b | 0a 09 74 72 75 74 68 28 |!= nil);|..truth(|
|00005d80| 61 64 64 72 20 21 3d 20 | 6e 69 6c 29 3b 0a 09 74 |addr != |nil);..t|
|00005d90| 72 75 74 68 28 70 6f 72 | 74 70 20 21 3d 20 6e 69 |ruth(por|tp != ni|
|00005da0| 6c 29 3b 0a 09 0a 09 77 | 68 69 6c 65 20 28 2a 73 |l);....w|hile (*s|
|00005db0| 20 26 26 20 2a 73 20 21 | 3d 20 27 28 27 29 20 73 | && *s !|= '(') s|
|00005dc0| 2b 2b 3b 0a 09 69 66 20 | 28 21 2a 73 29 20 72 65 |++;..if |(!*s) re|
|00005dd0| 74 75 72 6e 20 66 61 6c | 73 65 3b 0a 09 0a 09 2f |turn fal|se;..../|
|00005de0| 2a 20 66 69 72 73 74 20 | 63 61 6c 63 75 6c 61 74 |* first |calculat|
|00005df0| 65 20 70 6f 72 74 20 6e | 75 6d 62 65 72 20 2e 2e |e port n|umber ..|
|00005e00| 2e 20 73 6b 69 70 20 74 | 68 65 20 66 69 72 73 74 |. skip t|he first|
|00005e10| 20 34 20 63 6f 6d 6d 61 | 73 20 2a 2f 0a 09 0a 09 | 4 comma|s */....|
|00005e20| 6e 63 6f 6d 6d 61 73 20 | 3d 20 30 3b 0a 09 74 20 |ncommas |= 0;..t |
|00005e30| 3d 20 73 3b 0a 09 77 68 | 69 6c 65 20 28 2a 74 20 |= s;..wh|ile (*t |
|00005e40| 26 26 20 2a 74 20 21 3d | 20 27 29 27 20 26 26 20 |&& *t !=| ')' && |
|00005e50| 6e 63 6f 6d 6d 61 73 20 | 3c 20 34 29 20 7b 0a 09 |ncommas |< 4) {..|
|00005e60| 09 69 66 20 28 2a 74 20 | 3d 3d 20 27 2c 27 29 20 |.if (*t |== ',') |
|00005e70| 6e 63 6f 6d 6d 61 73 2b | 2b 3b 0a 09 09 74 2b 2b |ncommas+|+;...t++|
|00005e80| 3b 0a 09 7d 0a 09 0a 09 | 70 6f 72 74 6e 20 3d 20 |;..}....|portn = |
|00005e90| 61 74 6f 69 28 74 29 20 | 2a 20 32 35 36 3b 09 2f |atoi(t) |* 256;./|
|00005ea0| 2a 20 70 6f 73 73 69 62 | 6c 79 20 61 20 6d 6f 72 |* possib|ly a mor|
|00005eb0| 65 20 74 68 6f 72 6f 75 | 67 68 20 63 68 65 63 6b |e thorou|gh check|
|00005ec0| 20 6f 66 20 77 68 65 74 | 68 65 72 20 74 68 65 73 | of whet|her thes|
|00005ed0| 65 20 61 72 65 20 6c 65 | 67 69 74 20 6e 75 6d 62 |e are le|git numb|
|00005ee0| 65 72 73 20 2a 2f 0a 09 | 77 68 69 6c 65 20 28 2a |ers */..|while (*|
|00005ef0| 74 20 26 26 20 2a 74 20 | 21 3d 20 27 2c 27 20 26 |t && *t |!= ',' &|
|00005f00| 26 20 2a 74 20 21 3d 20 | 27 29 27 29 20 74 2b 2b |& *t != |')') t++|
|00005f10| 3b 0a 09 69 66 20 28 2a | 74 20 3d 3d 20 27 2c 27 |;..if (*|t == ','|
|00005f20| 29 20 70 6f 72 74 6e 20 | 2b 3d 20 61 74 6f 69 28 |) portn |+= atoi(|
|00005f30| 74 2b 31 29 3b 0a 09 0a | 09 2f 2a 0a 09 20 2a 20 |t+1);...|./*.. * |
|00005f40| 6e 6f 77 20 63 6f 70 79 | 20 74 68 65 20 66 69 72 |now copy| the fir|
|00005f50| 73 74 20 34 20 66 69 65 | 6c 64 73 20 74 6f 20 61 |st 4 fie|lds to a|
|00005f60| 64 64 72 2c 20 63 68 61 | 6e 67 69 6e 67 20 63 6f |ddr, cha|nging co|
|00005f70| 6d 6d 61 73 20 74 6f 20 | 70 65 72 69 6f 64 73 0a |mmas to |periods.|
|00005f80| 09 20 2a 20 28 68 6f 70 | 65 66 75 6c 6c 79 20 6d |. * (hop|efully m|
|00005f90| 61 6b 69 6e 67 20 61 20 | 6c 65 67 69 74 69 6d 61 |aking a |legitima|
|00005fa0| 74 65 20 69 70 20 61 64 | 64 72 65 73 73 29 0a 09 |te ip ad|dress)..|
|00005fb0| 20 2a 2f 0a 09 0a 09 6e | 63 6f 6d 6d 61 73 20 3d | */....n|commas =|
|00005fc0| 20 30 3b 0a 09 73 2b 2b | 3b 09 09 2f 2a 20 6d 6f | 0;..s++|;../* mo|
|00005fd0| 76 65 20 73 20 70 61 73 | 74 20 74 68 65 20 27 28 |ve s pas|t the '(|
|00005fe0| 27 20 2a 2f 0a 09 77 68 | 69 6c 65 20 28 2a 73 20 |' */..wh|ile (*s |
|00005ff0| 26 26 20 6e 63 6f 6d 6d | 61 73 20 3c 20 34 29 20 |&& ncomm|as < 4) |
|00006000| 7b 0a 09 09 69 66 20 28 | 2a 73 20 3d 3d 20 27 2c |{...if (|*s == ',|
|00006010| 27 29 20 7b 0a 09 09 09 | 6e 63 6f 6d 6d 61 73 2b |') {....|ncommas+|
|00006020| 2b 3b 0a 09 09 09 69 66 | 20 28 6e 63 6f 6d 6d 61 |+;....if| (ncomma|
|00006030| 73 20 3d 3d 20 34 29 20 | 2a 61 64 64 72 20 3d 20 |s == 4) |*addr = |
|00006040| 30 3b 0a 09 09 09 65 6c | 73 65 20 2a 61 64 64 72 |0;....el|se *addr|
|00006050| 2b 2b 20 3d 20 27 2e 27 | 3b 0a 09 09 09 73 2b 2b |++ = '.'|;....s++|
|00006060| 3b 0a 09 09 7d 20 65 6c | 73 65 20 7b 0a 09 09 09 |;...} el|se {....|
|00006070| 2a 61 64 64 72 2b 2b 20 | 3d 20 2a 73 2b 2b 3b 0a |*addr++ |= *s++;.|
|00006080| 09 09 7d 0a 09 7d 0a 09 | 0a 09 2a 70 6f 72 74 70 |..}..}..|..*portp|
|00006090| 20 3d 20 70 6f 72 74 6e | 3b 0a 09 0a 09 72 65 74 | = portn|;....ret|
|000060a0| 75 72 6e 20 74 72 75 65 | 3b 0a 7d 0a 0a 62 33 32 |urn true|;.}..b32|
|000060b0| 20 72 65 73 70 6f 6e 73 | 65 28 73 69 74 65 20 2a | respons|e(site *|
|000060c0| 73 70 2c 20 62 33 32 20 | 63 73 69 67 2c 20 62 38 |sp, b32 |csig, b8|
|000060d0| 20 2a 2a 69 6e 66 6f 70 | 2c 20 62 38 20 2a 63 6f | **infop|, b8 *co|
|000060e0| 64 65 29 0a 2f 2a 0a 20 | 2a 20 72 65 61 64 73 20 |de)./*. |* reads |
|000060f0| 72 65 73 70 6f 6e 73 65 | 20 66 72 6f 6d 20 72 65 |response| from re|
|00006100| 6d 6f 74 65 20 73 65 72 | 76 65 72 20 6f 6e 20 73 |mote ser|ver on s|
|00006110| 70 2d 3e 63 6f 6e 74 72 | 6f 6c 0a 20 2a 20 49 6e |p->contr|ol. * In|
|00006120| 70 75 74 73 3a 0a 20 2a | 09 73 70 09 3a 20 73 69 |puts:. *|.sp.: si|
|00006130| 74 65 20 70 6f 69 6e 74 | 65 72 0a 20 2a 09 63 73 |te point|er. *.cs|
|00006140| 69 67 09 3a 20 63 61 6e | 63 65 6c 20 73 69 67 6e |ig.: can|cel sign|
|00006150| 61 6c 73 20 28 69 6e 20 | 61 64 64 69 74 69 6f 6e |als (in |addition|
|00006160| 20 74 6f 20 73 74 61 6e | 64 61 72 64 20 73 70 2d | to stan|dard sp-|
|00006170| 3e 61 62 6f 72 74 20 65 | 74 63 20 2e 2e 2e 20 75 |>abort e|tc ... u|
|00006180| 73 75 61 6c 6c 79 20 61 | 20 77 69 6e 64 6f 77 29 |sually a| window)|
|00006190| 20 30 20 69 73 20 6f 6b | 2e 0a 20 2a 09 69 6e 66 | 0 is ok|.. *.inf|
|000061a0| 6f 70 09 3a 20 70 6f 69 | 6e 74 65 72 20 74 6f 20 |op.: poi|nter to |
|000061b0| 61 20 73 74 72 69 6e 67 | 20 70 6f 69 6e 74 65 72 |a string| pointer|
|000061c0| 20 74 6f 20 73 74 6f 72 | 65 20 74 68 65 20 73 65 | to stor|e the se|
|000061d0| 72 76 65 72 73 20 72 65 | 73 70 6f 6e 73 65 20 6d |rvers re|sponse m|
|000061e0| 65 73 73 61 67 65 0a 20 | 2a 09 63 6f 64 65 09 3a |essage. |*.code.:|
|000061f0| 20 33 20 62 79 74 65 20 | 61 72 72 61 79 20 66 6f | 3 byte |array fo|
|00006200| 72 20 74 68 65 20 72 65 | 73 70 6f 6e 73 65 20 63 |r the re|sponse c|
|00006210| 6f 64 65 20 28 65 67 20 | 32 35 37 20 22 2f 75 73 |ode (eg |257 "/us|
|00006220| 72 2f 64 6d 2f 70 61 74 | 68 6e 61 6d 65 22 20 64 |r/dm/pat|hname" d|
|00006230| 69 72 65 63 74 6f 72 79 | 20 63 72 65 61 74 65 64 |irectory| created|
|00006240| 29 0a 20 2a 0a 20 2a 20 | 52 65 74 75 72 6e 73 3a |). *. * |Returns:|
|00006250| 0a 20 2a 09 73 74 61 6e | 64 61 72 64 20 74 63 70 |. *.stan|dard tcp|
|00006260| 20 65 72 72 6f 72 20 63 | 6f 64 65 20 77 69 74 68 | error c|ode with|
|00006270| 20 74 68 65 20 61 64 64 | 69 74 69 6f 6e 61 6c 20 | the add|itional |
|00006280| 65 72 72 6f 72 20 45 52 | 52 4f 52 5f 47 41 52 42 |error ER|ROR_GARB|
|00006290| 41 47 45 5f 52 45 43 45 | 49 56 45 44 0a 20 2a 2f |AGE_RECE|IVED. */|
|000062a0| 0a 7b 0a 09 74 63 70 6d | 65 73 73 61 67 65 20 2a |.{..tcpm|essage *|
|000062b0| 74 6d 3b 0a 09 73 74 72 | 75 63 74 20 4d 73 67 50 |tm;..str|uct MsgP|
|000062c0| 6f 72 74 20 2a 73 79 6e | 63 3b 0a 09 62 33 32 20 |ort *syn|c;..b32 |
|000062d0| 73 69 67 6e 61 6c 73 2c | 20 72 73 69 67 73 2c 20 |signals,| rsigs, |
|000062e0| 61 73 69 67 73 3b 0a 09 | 62 38 20 2a 69 6e 66 6f |asigs;..|b8 *info|
|000062f0| 2c 20 2a 7a 3b 0a 09 0a | 09 76 65 72 69 66 79 28 |, *z;...|.verify(|
|00006300| 73 70 2c 20 56 5f 73 69 | 74 65 29 3b 0a 09 0a 09 |sp, V_si|te);....|
|00006310| 74 72 75 74 68 28 63 6f | 64 65 20 21 3d 20 6e 69 |truth(co|de != ni|
|00006320| 6c 29 3b 0a 09 74 72 75 | 74 68 28 69 6e 66 6f 70 |l);..tru|th(infop|
|00006330| 20 21 3d 20 6e 69 6c 29 | 3b 0a 09 0a 09 2a 69 6e | != nil)|;....*in|
|00006340| 66 6f 70 20 3d 20 6e 69 | 6c 3b 0a 0a 09 74 6d 20 |fop = ni|l;...tm |
|00006350| 3d 20 73 70 2d 3e 63 6f | 6e 74 72 6f 6c 3b 0a 09 |= sp->co|ntrol;..|
|00006360| 73 79 6e 63 20 3d 20 73 | 70 2d 3e 73 79 6e 63 3b |sync = s|p->sync;|
|00006370| 0a 09 0a 09 76 65 72 69 | 66 79 28 74 6d 2c 20 56 |....veri|fy(tm, V|
|00006380| 5f 74 63 70 6d 65 73 73 | 61 67 65 29 3b 0a 09 0a |_tcpmess|age);...|
|00006390| 09 61 73 69 67 73 20 3d | 20 63 73 69 67 20 7c 20 |.asigs =| csig | |
|000063a0| 73 70 2d 3e 64 69 73 63 | 6f 6e 6e 65 63 74 5f 73 |sp->disc|onnect_s|
|000063b0| 69 67 6e 61 6c 73 20 7c | 20 73 70 2d 3e 61 62 6f |ignals || sp->abo|
|000063c0| 72 74 5f 73 69 67 6e 61 | 6c 73 3b 09 2f 2a 20 61 |rt_signa|ls;./* a|
|000063d0| 62 6f 72 74 20 73 69 67 | 6e 61 6c 73 20 2a 2f 0a |bort sig|nals */.|
|000063e0| 09 73 69 67 6e 61 6c 73 | 20 3d 20 61 73 69 67 73 |.signals| = asigs|
|000063f0| 20 7c 20 28 31 20 3c 3c | 20 73 79 6e 63 2d 3e 6d | | (1 <<| sync->m|
|00006400| 70 5f 53 69 67 42 69 74 | 29 3b 0a 0a 09 74 6d 2d |p_SigBit|);...tm-|
|00006410| 3e 63 6f 6d 6d 61 6e 64 | 20 3d 20 54 43 50 5f 52 |>command| = TCP_R|
|00006420| 45 41 44 3b 0a 09 74 6d | 2d 3e 66 6c 61 67 73 20 |EAD;..tm|->flags |
|00006430| 3d 20 46 4c 41 47 5f 52 | 45 41 44 4c 49 4e 45 3b |= FLAG_R|EADLINE;|
|00006440| 0a 09 74 6d 2d 3e 64 61 | 74 61 20 3d 20 73 70 2d |..tm->da|ta = sp-|
|00006450| 3e 72 65 61 64 5f 62 75 | 66 66 65 72 3b 0a 09 74 |>read_bu|ffer;..t|
|00006460| 6d 2d 3e 6c 65 6e 67 74 | 68 20 3d 20 52 45 41 44 |m->lengt|h = READ|
|00006470| 5f 42 55 46 46 45 52 5f | 4c 45 4e 47 54 48 3b 0a |_BUFFER_|LENGTH;.|
|00006480| 09 74 6d 2d 3e 68 65 61 | 64 65 72 2e 6d 6e 5f 52 |.tm->hea|der.mn_R|
|00006490| 65 70 6c 79 50 6f 72 74 | 20 3d 20 73 79 6e 63 3b |eplyPort| = sync;|
|000064a0| 0a 09 0a 09 50 75 74 4d | 73 67 28 74 63 70 2c 20 |....PutM|sg(tcp, |
|000064b0| 26 74 6d 2d 3e 68 65 61 | 64 65 72 29 3b 0a 09 64 |&tm->hea|der);..d|
|000064c0| 6f 20 7b 0a 09 09 72 73 | 69 67 73 20 3d 20 57 61 |o {...rs|igs = Wa|
|000064d0| 69 74 28 73 69 67 6e 61 | 6c 73 29 3b 0a 09 09 69 |it(signa|ls);...i|
|000064e0| 66 20 28 72 73 69 67 73 | 20 26 20 61 73 69 67 73 |f (rsigs| & asigs|
|000064f0| 29 20 7b 0a 09 09 09 73 | 74 61 74 65 5f 63 68 61 |) {....s|tate_cha|
|00006500| 6e 67 65 28 73 70 2c 20 | 53 53 5f 41 42 4f 52 54 |nge(sp, |SS_ABORT|
|00006510| 49 4e 47 29 3b 0a 0a 09 | 09 09 69 6e 74 65 72 72 |ING);...|..interr|
|00006520| 75 70 74 5f 6d 65 73 73 | 61 67 65 28 73 70 2c 20 |upt_mess|age(sp, |
|00006530| 74 6d 29 3b 0a 09 09 09 | 0a 09 09 09 2f 2a 20 63 |tm);....|..../* c|
|00006540| 61 6e 63 65 6c 6c 69 6e | 67 20 74 68 65 20 72 65 |ancellin|g the re|
|00006550| 61 64 20 6f 66 20 74 68 | 65 20 72 65 73 70 6f 6e |ad of th|e respon|
|00006560| 73 65 20 69 73 20 67 75 | 61 72 61 6e 74 65 65 64 |se is gu|aranteed|
|00006570| 20 66 61 74 61 6c 20 61 | 6e 79 77 61 79 20 2e 2e | fatal a|nyway ..|
|00006580| 2e 20 62 75 74 20 2e 2e | 2e 20 2a 2f 0a 09 09 09 |. but ..|. */....|
|00006590| 0a 09 09 09 69 66 20 28 | 72 73 69 67 73 20 26 20 |....if (|rsigs & |
|000065a0| 73 70 2d 3e 64 69 73 63 | 6f 6e 6e 65 63 74 5f 73 |sp->disc|onnect_s|
|000065b0| 69 67 6e 61 6c 73 29 20 | 7b 0a 09 09 09 09 64 69 |ignals) |{.....di|
|000065c0| 73 63 6f 6e 6e 65 63 74 | 28 73 70 29 3b 0a 09 09 |sconnect|(sp);...|
|000065d0| 09 7d 0a 09 09 09 0a 09 | 09 09 72 65 74 75 72 6e |.}......|..return|
|000065e0| 20 45 52 52 4f 52 5f 49 | 4e 54 45 52 52 55 50 54 | ERROR_I|NTERRUPT|
|000065f0| 45 44 3b 0a 09 09 7d 0a | 09 7d 20 77 68 69 6c 65 |ED;...}.|.} while|
|00006600| 20 28 21 47 65 74 4d 73 | 67 28 73 79 6e 63 29 29 | (!GetMs|g(sync))|
|00006610| 3b 0a 09 0a 09 69 66 20 | 28 74 6d 2d 3e 65 72 72 |;....if |(tm->err|
|00006620| 6f 72 20 21 3d 20 4e 4f | 5f 45 52 52 4f 52 29 20 |or != NO|_ERROR) |
|00006630| 7b 0a 09 09 73 68 6f 77 | 5f 69 6e 74 28 74 6d 2d |{...show|_int(tm-|
|00006640| 3e 65 72 72 6f 72 29 3b | 0a 09 09 72 65 74 75 72 |>error);|...retur|
|00006650| 6e 20 74 6d 2d 3e 65 72 | 72 6f 72 3b 0a 09 7d 0a |n tm->er|ror;..}.|
|00006660| 09 0a 09 7a 20 3d 20 73 | 70 2d 3e 72 65 61 64 5f |...z = s|p->read_|
|00006670| 62 75 66 66 65 72 3b 0a | 09 0a 09 69 66 20 28 74 |buffer;.|...if (t|
|00006680| 6d 2d 3e 72 65 73 75 6c | 74 20 3c 20 34 20 7c 7c |m->resul|t < 4 |||
|00006690| 0a 09 09 09 7a 5b 30 5d | 20 3c 20 27 30 27 20 7c |....z[0]| < '0' ||
|000066a0| 7c 20 7a 5b 30 5d 20 3e | 20 27 39 27 20 7c 7c 0a || z[0] >| '9' ||.|
|000066b0| 09 09 09 7a 5b 31 5d 20 | 3c 20 27 30 27 20 7c 7c |...z[1] |< '0' |||
|000066c0| 20 7a 5b 31 5d 20 3e 20 | 27 39 27 20 7c 7c 0a 09 | z[1] > |'9' ||..|
|000066d0| 09 09 7a 5b 32 5d 20 3c | 20 27 30 27 20 7c 7c 20 |..z[2] <| '0' || |
|000066e0| 7a 5b 32 5d 20 3e 20 27 | 39 27 29 20 7b 0a 09 09 |z[2] > '|9') {...|
|000066f0| 73 68 6f 77 5f 69 6e 74 | 28 74 6d 2d 3e 72 65 73 |show_int|(tm->res|
|00006700| 75 6c 74 29 3b 0a 09 09 | 72 65 74 75 72 6e 20 45 |ult);...|return E|
|00006710| 52 52 4f 52 5f 47 41 52 | 42 41 47 45 5f 52 45 43 |RROR_GAR|BAGE_REC|
|00006720| 45 49 56 45 44 3b 0a 09 | 7d 0a 0a 09 63 6f 64 65 |EIVED;..|}...code|
|00006730| 5b 30 5d 20 3d 20 7a 5b | 30 5d 3b 0a 09 63 6f 64 |[0] = z[|0];..cod|
|00006740| 65 5b 31 5d 20 3d 20 7a | 5b 31 5d 3b 0a 09 63 6f |e[1] = z|[1];..co|
|00006750| 64 65 5b 32 5d 20 3d 20 | 7a 5b 32 5d 3b 0a 0a 09 |de[2] = |z[2];...|
|00006760| 69 6e 66 6f 20 3d 20 67 | 72 6f 77 5f 69 6e 66 6f |info = g|row_info|
|00006770| 28 6e 69 6c 2c 20 26 7a | 5b 34 5d 2c 20 74 6d 2d |(nil, &z|[4], tm-|
|00006780| 3e 72 65 73 75 6c 74 20 | 2d 20 34 29 3b 0a 09 69 |>result |- 4);..i|
|00006790| 66 20 28 7a 5b 33 5d 20 | 3d 3d 20 27 2d 27 29 20 |f (z[3] |== '-') |
|000067a0| 7b 09 2f 2a 20 77 65 20 | 68 61 76 65 20 61 20 63 |{./* we |have a c|
|000067b0| 6f 6e 74 69 6e 75 61 74 | 69 6f 6e 20 6d 65 73 73 |ontinuat|ion mess|
|000067c0| 61 67 65 20 2a 2f 0a 09 | 09 77 68 69 6c 65 20 28 |age */..|.while (|
|000067d0| 31 29 20 7b 0a 09 09 09 | 50 75 74 4d 73 67 28 74 |1) {....|PutMsg(t|
|000067e0| 63 70 2c 20 26 74 6d 2d | 3e 68 65 61 64 65 72 29 |cp, &tm-|>header)|
|000067f0| 3b 0a 09 09 09 64 6f 20 | 7b 0a 09 09 09 09 72 73 |;....do |{.....rs|
|00006800| 69 67 73 20 3d 20 57 61 | 69 74 28 73 69 67 6e 61 |igs = Wa|it(signa|
|00006810| 6c 73 29 3b 0a 09 09 09 | 09 69 66 20 28 72 73 69 |ls);....|.if (rsi|
|00006820| 67 73 20 26 20 61 73 69 | 67 73 29 20 7b 0a 09 09 |gs & asi|gs) {...|
|00006830| 09 09 09 73 74 61 74 65 | 5f 63 68 61 6e 67 65 28 |...state|_change(|
|00006840| 73 70 2c 20 53 53 5f 41 | 42 4f 52 54 49 4e 47 29 |sp, SS_A|BORTING)|
|00006850| 3b 0a 09 09 09 09 09 0a | 09 09 09 09 09 69 66 20 |;.......|.....if |
|00006860| 28 69 6e 66 6f 29 0a 09 | 09 09 09 09 09 64 65 61 |(info)..|.....dea|
|00006870| 6c 6c 6f 63 61 74 65 28 | 69 6e 66 6f 2c 20 56 5f |llocate(|info, V_|
|00006880| 63 73 74 72 29 3b 0a 09 | 09 09 09 09 0a 09 09 09 |cstr);..|........|
|00006890| 09 09 69 6e 74 65 72 72 | 75 70 74 5f 6d 65 73 73 |..interr|upt_mess|
|000068a0| 61 67 65 28 73 70 2c 20 | 74 6d 29 3b 0a 09 09 09 |age(sp, |tm);....|
|000068b0| 09 09 0a 09 09 09 09 09 | 69 66 20 28 72 73 69 67 |........|if (rsig|
|000068c0| 73 20 26 20 73 70 2d 3e | 64 69 73 63 6f 6e 6e 65 |s & sp->|disconne|
|000068d0| 63 74 5f 73 69 67 6e 61 | 6c 73 29 20 7b 0a 09 09 |ct_signa|ls) {...|
|000068e0| 09 09 09 09 64 69 73 63 | 6f 6e 6e 65 63 74 28 73 |....disc|onnect(s|
|000068f0| 70 29 3b 0a 09 09 09 09 | 09 7d 0a 09 09 0a 09 09 |p);.....|.}......|
|00006900| 09 09 09 72 65 74 75 72 | 6e 20 45 52 52 4f 52 5f |...retur|n ERROR_|
|00006910| 49 4e 54 45 52 52 55 50 | 54 45 44 3b 0a 09 09 09 |INTERRUP|TED;....|
|00006920| 09 7d 0a 09 09 09 7d 20 | 77 68 69 6c 65 20 28 21 |.}....} |while (!|
|00006930| 47 65 74 4d 73 67 28 73 | 79 6e 63 29 29 3b 0a 09 |GetMsg(s|ync));..|
|00006940| 09 09 0a 09 09 09 69 66 | 20 28 74 6d 2d 3e 65 72 |......if| (tm->er|
|00006950| 72 6f 72 20 21 3d 20 4e | 4f 5f 45 52 52 4f 52 29 |ror != N|O_ERROR)|
|00006960| 20 7b 09 2f 2a 20 74 65 | 6c 6c 20 74 68 65 6d 20 | {./* te|ll them |
|00006970| 61 62 6f 75 74 20 74 68 | 65 20 65 72 72 6f 72 20 |about th|e error |
|00006980| 2a 2f 0a 09 09 09 09 69 | 66 20 28 69 6e 66 6f 29 |*/.....i|f (info)|
|00006990| 0a 09 09 09 09 09 64 65 | 61 6c 6c 6f 63 61 74 65 |......de|allocate|
|000069a0| 28 69 6e 66 6f 2c 20 56 | 5f 63 73 74 72 29 3b 0a |(info, V|_cstr);.|
|000069b0| 09 09 09 09 0a 09 09 09 | 09 72 65 74 75 72 6e 20 |........|.return |
|000069c0| 74 6d 2d 3e 65 72 72 6f | 72 3b 0a 09 09 09 7d 0a |tm->erro|r;....}.|
|000069d0| 09 09 09 0a 09 09 09 69 | 66 20 28 74 6d 2d 3e 72 |.......i|f (tm->r|
|000069e0| 65 73 75 6c 74 20 3c 20 | 34 29 20 7b 09 09 2f 2a |esult < |4) {../*|
|000069f0| 20 6e 6f 74 20 65 6e 6f | 75 67 68 20 74 6f 20 65 | not eno|ugh to e|
|00006a00| 76 65 6e 20 63 68 65 63 | 6b 20 69 66 20 63 6f 64 |ven chec|k if cod|
|00006a10| 65 73 20 61 72 65 20 65 | 71 75 61 6c 20 2a 2f 0a |es are e|qual */.|
|00006a20| 09 09 09 09 69 6e 66 6f | 20 3d 20 67 72 6f 77 5f |....info| = grow_|
|00006a30| 69 6e 66 6f 28 69 6e 66 | 6f 2c 20 7a 2c 20 74 6d |info(inf|o, z, tm|
|00006a40| 2d 3e 72 65 73 75 6c 74 | 29 3b 0a 09 09 09 09 63 |->result|);.....c|
|00006a50| 6f 6e 74 69 6e 75 65 3b | 0a 09 09 09 7d 0a 09 09 |ontinue;|....}...|
|00006a60| 09 0a 09 09 09 69 66 20 | 28 7a 5b 30 5d 20 3d 3d |.....if |(z[0] ==|
|00006a70| 20 63 6f 64 65 5b 30 5d | 20 26 26 0a 09 09 09 09 | code[0]| &&.....|
|00006a80| 09 7a 5b 31 5d 20 3d 3d | 20 63 6f 64 65 5b 31 5d |.z[1] ==| code[1]|
|00006a90| 20 26 26 0a 09 09 09 09 | 09 7a 5b 32 5d 20 3d 3d | &&.....|.z[2] ==|
|00006aa0| 20 63 6f 64 65 5b 32 5d | 29 20 7b 0a 09 09 09 09 | code[2]|) {.....|
|00006ab0| 69 6e 66 6f 20 3d 20 67 | 72 6f 77 5f 69 6e 66 6f |info = g|row_info|
|00006ac0| 28 69 6e 66 6f 2c 20 26 | 7a 5b 34 5d 2c 20 74 6d |(info, &|z[4], tm|
|00006ad0| 2d 3e 72 65 73 75 6c 74 | 20 2d 20 34 29 3b 0a 09 |->result| - 4);..|
|00006ae0| 09 09 09 69 66 20 28 7a | 5b 33 5d 20 3d 3d 20 27 |...if (z|[3] == '|
|00006af0| 20 27 29 20 62 72 65 61 | 6b 3b 09 09 2f 2a 20 65 | ') brea|k;../* e|
|00006b00| 6e 64 20 6f 66 20 63 6f | 6e 74 69 6e 75 61 74 69 |nd of co|ntinuati|
|00006b10| 6f 6e 20 2a 2f 0a 09 09 | 09 7d 20 65 6c 73 65 20 |on */...|.} else |
|00006b20| 7b 0a 09 09 09 09 69 6e | 66 6f 20 3d 20 67 72 6f |{.....in|fo = gro|
|00006b30| 77 5f 69 6e 66 6f 28 69 | 6e 66 6f 2c 20 7a 2c 20 |w_info(i|nfo, z, |
|00006b40| 74 6d 2d 3e 72 65 73 75 | 6c 74 29 3b 0a 09 09 09 |tm->resu|lt);....|
|00006b50| 7d 0a 09 09 7d 0a 09 7d | 0a 09 0a 09 2a 69 6e 66 |}...}..}|....*inf|
|00006b60| 6f 70 20 3d 20 69 6e 66 | 6f 3b 0a 09 72 65 74 75 |op = inf|o;..retu|
|00006b70| 72 6e 20 4e 4f 5f 45 52 | 52 4f 52 3b 0a 7d 0a 0a |rn NO_ER|ROR;.}..|
|00006b80| 62 31 36 20 6e 75 6d 65 | 72 69 63 5f 72 65 70 6c |b16 nume|ric_repl|
|00006b90| 79 28 62 38 20 2a 73 29 | 0a 7b 0a 09 72 65 74 75 |y(b8 *s)|.{..retu|
|00006ba0| 72 6e 20 28 62 31 36 29 | 28 28 73 5b 30 5d 20 2d |rn (b16)|((s[0] -|
|00006bb0| 20 27 30 27 29 20 2a 20 | 31 30 30 20 2b 20 28 73 | '0') * |100 + (s|
|00006bc0| 5b 31 5d 20 2d 20 27 30 | 27 29 20 2a 20 31 30 20 |[1] - '0|') * 10 |
|00006bd0| 2b 20 28 73 5b 32 5d 20 | 2d 20 27 30 27 29 29 3b |+ (s[2] |- '0'));|
|00006be0| 0a 7d 0a 0a 62 6f 6f 6c | 65 61 6e 20 72 65 74 72 |.}..bool|ean retr|
|00006bf0| 79 5f 63 61 6e 63 65 6c | 28 73 74 72 75 63 74 20 |y_cancel|(struct |
|00006c00| 49 6e 74 75 69 74 69 6f | 6e 42 61 73 65 20 2a 49 |Intuitio|nBase *I|
|00006c10| 6e 74 75 69 74 69 6f 6e | 42 61 73 65 2c 20 62 38 |ntuition|Base, b8|
|00006c20| 20 2a 74 69 74 6c 65 2c | 20 62 38 20 2a 69 6e 66 | *title,| b8 *inf|
|00006c30| 6f 29 0a 2f 2a 0a 20 2a | 20 70 61 67 65 64 20 69 |o)./*. *| paged i|
|00006c40| 6e 66 6f 72 6d 61 74 69 | 6f 6e 20 77 69 74 68 20 |nformati|on with |
|00006c50| 72 65 74 72 79 2f 63 61 | 6e 63 65 6c 20 62 75 74 |retry/ca|ncel but|
|00006c60| 74 6f 6e 73 0a 20 2a 20 | 72 65 74 75 72 6e 73 20 |tons. * |returns |
|00006c70| 74 72 75 65 20 66 6f 72 | 20 72 65 74 72 79 0a 20 |true for| retry. |
|00006c80| 2a 20 09 69 6e 66 6f 20 | 6d 61 79 20 62 65 20 6e |* .info |may be n|
|00006c90| 69 6c 20 28 77 65 6c 6c | 2c 20 73 6f 72 74 6f 66 |il (well|, sortof|
|00006ca0| 29 0a 20 2a 2f 0a 7b 0a | 09 62 38 20 2a 7a 2c 20 |). */.{.|.b8 *z, |
|00006cb0| 2a 73 2c 20 74 6d 70 3b | 0a 09 73 74 72 75 63 74 |*s, tmp;|..struct|
|00006cc0| 20 45 61 73 79 53 74 72 | 75 63 74 20 65 73 3b 0a | EasyStr|uct es;.|
|00006cd0| 09 69 6e 74 20 6e 6c 69 | 6e 65 73 3b 0a 09 0a 09 |.int nli|nes;....|
|00006ce0| 65 73 2e 65 73 5f 53 74 | 72 75 63 74 53 69 7a 65 |es.es_St|ructSize|
|00006cf0| 20 3d 20 73 69 7a 65 6f | 66 28 73 74 72 75 63 74 | = sizeo|f(struct|
|00006d00| 20 45 61 73 79 53 74 72 | 75 63 74 29 3b 0a 09 65 | EasyStr|uct);..e|
|00006d10| 73 2e 65 73 5f 46 6c 61 | 67 73 20 3d 20 30 3b 0a |s.es_Fla|gs = 0;.|
|00006d20| 09 65 73 2e 65 73 5f 54 | 69 74 6c 65 20 3d 20 74 |.es.es_T|itle = t|
|00006d30| 69 74 6c 65 3b 0a 09 65 | 73 2e 65 73 5f 54 65 78 |itle;..e|s.es_Tex|
|00006d40| 74 46 6f 72 6d 61 74 20 | 3d 20 22 25 73 22 3b 0a |tFormat |= "%s";.|
|00006d50| 09 0a 09 69 66 20 28 69 | 6e 66 6f 29 0a 09 09 7a |...if (i|nfo)...z|
|00006d60| 20 3d 20 69 6e 66 6f 3b | 0a 09 65 6c 73 65 0a 09 | = info;|..else..|
|00006d70| 09 7a 20 3d 20 73 74 72 | 69 6e 67 73 5b 4d 53 47 |.z = str|ings[MSG|
|00006d80| 5f 55 4e 4b 4e 4f 57 4e | 5d 3b 0a 09 0a 6d 6f 72 |_UNKNOWN|];...mor|
|00006d90| 65 3a 0a 09 73 20 3d 20 | 7a 3b 0a 09 6e 6c 69 6e |e:..s = |z;..nlin|
|00006da0| 65 73 20 3d 20 30 3b 0a | 0a 09 77 68 69 6c 65 20 |es = 0;.|..while |
|00006db0| 28 2a 7a 20 26 26 20 6e | 6c 69 6e 65 73 20 3c 20 |(*z && n|lines < |
|00006dc0| 4d 4f 52 45 5f 4c 49 4e | 45 53 29 20 7b 0a 09 09 |MORE_LIN|ES) {...|
|00006dd0| 69 66 20 28 2a 7a 20 3d | 3d 20 27 5c 6e 27 29 20 |if (*z =|= '\n') |
|00006de0| 6e 6c 69 6e 65 73 2b 2b | 3b 0a 09 09 7a 2b 2b 3b |nlines++|;...z++;|
|00006df0| 0a 09 7d 0a 09 0a 09 69 | 66 20 28 2a 7a 29 20 7b |..}....i|f (*z) {|
|00006e00| 0a 09 09 65 73 2e 65 73 | 5f 47 61 64 67 65 74 46 |...es.es|_GadgetF|
|00006e10| 6f 72 6d 61 74 20 3d 20 | 73 74 72 69 6e 67 73 5b |ormat = |strings[|
|00006e20| 4d 53 47 5f 52 45 54 52 | 59 5f 4d 4f 52 45 5f 43 |MSG_RETR|Y_MORE_C|
|00006e30| 41 4e 43 45 4c 5d 3b 0a | 09 7d 20 65 6c 73 65 20 |ANCEL];.|.} else |
|00006e40| 7b 0a 09 09 65 73 2e 65 | 73 5f 47 61 64 67 65 74 |{...es.e|s_Gadget|
|00006e50| 46 6f 72 6d 61 74 20 3d | 20 73 74 72 69 6e 67 73 |Format =| strings|
|00006e60| 5b 4d 53 47 5f 52 45 54 | 52 59 5f 43 41 4e 43 45 |[MSG_RET|RY_CANCE|
|00006e70| 4c 5d 3b 0a 09 7d 0a 09 | 0a 09 74 6d 70 20 3d 20 |L];..}..|..tmp = |
|00006e80| 2a 7a 3b 0a 09 2a 7a 20 | 3d 20 30 3b 0a 09 0a 09 |*z;..*z |= 0;....|
|00006e90| 73 77 69 74 63 68 20 28 | 45 61 73 79 52 65 71 75 |switch (|EasyRequ|
|00006ea0| 65 73 74 28 6e 69 6c 2c | 20 26 65 73 2c 20 6e 69 |est(nil,| &es, ni|
|00006eb0| 6c 2c 20 73 29 29 20 7b | 0a 09 63 61 73 65 20 30 |l, s)) {|..case 0|
|00006ec0| 3a 09 2f 2a 20 63 61 6e | 63 65 6c 20 2a 2f 0a 09 |:./* can|cel */..|
|00006ed0| 09 2a 7a 20 3d 20 74 6d | 70 3b 0a 09 09 72 65 74 |.*z = tm|p;...ret|
|00006ee0| 75 72 6e 20 66 61 6c 73 | 65 3b 0a 09 63 61 73 65 |urn fals|e;..case|
|00006ef0| 20 31 3a 20 2f 2a 20 72 | 65 74 72 79 20 2a 2f 0a | 1: /* r|etry */.|
|00006f00| 09 09 2a 7a 20 3d 20 74 | 6d 70 3b 0a 09 09 72 65 |..*z = t|mp;...re|
|00006f10| 74 75 72 6e 20 74 72 75 | 65 3b 0a 09 63 61 73 65 |turn tru|e;..case|
|00006f20| 20 32 3a 20 2f 2a 20 6d | 6f 72 65 20 2a 2f 0a 09 | 2: /* m|ore */..|
|00006f30| 09 2a 7a 20 3d 20 74 6d | 70 3b 0a 09 09 69 66 20 |.*z = tm|p;...if |
|00006f40| 28 21 2a 7a 29 20 72 65 | 74 75 72 6e 20 74 72 75 |(!*z) re|turn tru|
|00006f50| 65 3b 0a 09 09 67 6f 74 | 6f 20 6d 6f 72 65 3b 0a |e;...got|o more;.|
|00006f60| 09 7d 0a 7d 0a 0a 76 6f | 69 64 20 6f 6b 28 73 74 |.}.}..vo|id ok(st|
|00006f70| 72 75 63 74 20 49 6e 74 | 75 69 74 69 6f 6e 42 61 |ruct Int|uitionBa|
|00006f80| 73 65 20 2a 49 6e 74 75 | 69 74 69 6f 6e 42 61 73 |se *Intu|itionBas|
|00006f90| 65 2c 20 62 38 20 2a 74 | 69 74 6c 65 2c 20 62 38 |e, b8 *t|itle, b8|
|00006fa0| 20 2a 69 6e 66 6f 29 0a | 2f 2a 0a 20 2a 20 70 61 | *info).|/*. * pa|
|00006fb0| 67 65 64 20 69 6e 66 6f | 72 6d 61 74 69 6f 6e 20 |ged info|rmation |
|00006fc0| 77 69 74 68 20 6f 6b 20 | 62 75 74 74 6f 6e 0a 20 |with ok |button. |
|00006fd0| 2a 20 09 69 6e 66 6f 20 | 6d 61 79 20 62 65 20 6e |* .info |may be n|
|00006fe0| 69 6c 20 28 73 6f 72 74 | 6f 66 29 0a 20 2a 2f 0a |il (sort|of). */.|
|00006ff0| 7b 0a 09 62 38 20 2a 7a | 2c 20 2a 73 2c 20 74 6d |{..b8 *z|, *s, tm|
|00007000| 70 3b 0a 09 73 74 72 75 | 63 74 20 45 61 73 79 53 |p;..stru|ct EasyS|
|00007010| 74 72 75 63 74 20 65 73 | 3b 0a 09 69 6e 74 20 6e |truct es|;..int n|
|00007020| 6c 69 6e 65 73 3b 0a 09 | 0a 09 65 73 2e 65 73 5f |lines;..|..es.es_|
|00007030| 53 74 72 75 63 74 53 69 | 7a 65 20 3d 20 73 69 7a |StructSi|ze = siz|
|00007040| 65 6f 66 28 73 74 72 75 | 63 74 20 45 61 73 79 53 |eof(stru|ct EasyS|
|00007050| 74 72 75 63 74 29 3b 0a | 09 65 73 2e 65 73 5f 46 |truct);.|.es.es_F|
|00007060| 6c 61 67 73 20 3d 20 30 | 3b 0a 09 65 73 2e 65 73 |lags = 0|;..es.es|
|00007070| 5f 54 69 74 6c 65 20 3d | 20 74 69 74 6c 65 3b 0a |_Title =| title;.|
|00007080| 09 65 73 2e 65 73 5f 54 | 65 78 74 46 6f 72 6d 61 |.es.es_T|extForma|
|00007090| 74 20 3d 20 22 25 73 22 | 3b 0a 09 0a 09 69 66 20 |t = "%s"|;....if |
|000070a0| 28 69 6e 66 6f 29 0a 09 | 09 7a 20 3d 20 69 6e 66 |(info)..|.z = inf|
|000070b0| 6f 3b 0a 09 65 6c 73 65 | 0a 09 09 7a 20 3d 20 73 |o;..else|...z = s|
|000070c0| 74 72 69 6e 67 73 5b 4d | 53 47 5f 55 4e 4b 4e 4f |trings[M|SG_UNKNO|
|000070d0| 57 4e 5d 3b 0a 09 0a 6d | 6f 72 65 3a 0a 09 73 20 |WN];...m|ore:..s |
|000070e0| 3d 20 7a 3b 0a 0a 09 6e | 6c 69 6e 65 73 20 3d 20 |= z;...n|lines = |
|000070f0| 30 3b 0a 09 77 68 69 6c | 65 20 28 2a 7a 20 26 26 |0;..whil|e (*z &&|
|00007100| 20 6e 6c 69 6e 65 73 20 | 3c 20 4d 4f 52 45 5f 4c | nlines |< MORE_L|
|00007110| 49 4e 45 53 29 20 7b 0a | 09 09 69 66 20 28 2a 7a |INES) {.|..if (*z|
|00007120| 20 3d 3d 20 27 5c 6e 27 | 29 20 6e 6c 69 6e 65 73 | == '\n'|) nlines|
|00007130| 2b 2b 3b 0a 09 09 7a 2b | 2b 3b 0a 09 7d 0a 09 0a |++;...z+|+;..}...|
|00007140| 09 69 66 20 28 2a 7a 29 | 20 7b 0a 09 09 65 73 2e |.if (*z)| {...es.|
|00007150| 65 73 5f 47 61 64 67 65 | 74 46 6f 72 6d 61 74 20 |es_Gadge|tFormat |
|00007160| 3d 20 73 74 72 69 6e 67 | 73 5b 4d 53 47 5f 4d 4f |= string|s[MSG_MO|
|00007170| 52 45 5f 4f 4b 5d 3b 0a | 09 7d 20 65 6c 73 65 20 |RE_OK];.|.} else |
|00007180| 7b 0a 09 09 65 73 2e 65 | 73 5f 47 61 64 67 65 74 |{...es.e|s_Gadget|
|00007190| 46 6f 72 6d 61 74 20 3d | 20 73 74 72 69 6e 67 73 |Format =| strings|
|000071a0| 5b 4d 53 47 5f 4f 4b 5d | 3b 0a 09 7d 0a 09 0a 09 |[MSG_OK]|;..}....|
|000071b0| 74 6d 70 20 3d 20 2a 7a | 3b 0a 09 2a 7a 20 3d 20 |tmp = *z|;..*z = |
|000071c0| 30 3b 0a 09 0a 09 69 66 | 20 28 45 61 73 79 52 65 |0;....if| (EasyRe|
|000071d0| 71 75 65 73 74 28 6e 69 | 6c 2c 20 26 65 73 2c 20 |quest(ni|l, &es, |
|000071e0| 6e 69 6c 2c 20 73 29 20 | 26 26 20 74 6d 70 29 20 |nil, s) |&& tmp) |
|000071f0| 7b 0a 09 09 2a 7a 20 3d | 20 74 6d 70 3b 0a 09 09 |{...*z =| tmp;...|
|00007200| 67 6f 74 6f 20 6d 6f 72 | 65 3b 0a 09 7d 0a 09 0a |goto mor|e;..}...|
|00007210| 09 2a 7a 20 3d 20 74 6d | 70 3b 0a 09 72 65 74 75 |.*z = tm|p;..retu|
|00007220| 72 6e 3b 0a 7d 0a 0a 76 | 6f 69 64 20 64 69 73 63 |rn;.}..v|oid disc|
|00007230| 6f 6e 6e 65 63 74 28 73 | 69 74 65 20 2a 73 70 29 |onnect(s|ite *sp)|
|00007240| 0a 2f 2a 0a 20 2a 20 72 | 75 64 65 6c 79 20 63 6c |./*. * r|udely cl|
|00007250| 6f 73 65 20 63 6f 6e 74 | 72 6f 6c 20 63 6f 6e 6e |ose cont|rol conn|
|00007260| 65 63 74 69 6f 6e 20 61 | 6e 64 20 63 6c 65 61 6e |ection a|nd clean|
|00007270| 20 75 70 20 73 74 61 74 | 65 20 69 6e 66 6f 72 6d | up stat|e inform|
|00007280| 61 74 69 6f 6e 20 6f 6e | 20 73 69 74 65 20 73 70 |ation on| site sp|
|00007290| 0a 20 2a 2f 0a 7b 0a 09 | 74 63 70 6d 65 73 73 61 |. */.{..|tcpmessa|
|000072a0| 67 65 20 2a 74 6d 3b 0a | 09 73 74 72 75 63 74 20 |ge *tm;.|.struct |
|000072b0| 4d 73 67 50 6f 72 74 20 | 2a 73 79 6e 63 3b 0a 09 |MsgPort |*sync;..|
|000072c0| 0a 09 76 65 72 69 66 79 | 28 73 70 2c 20 56 5f 73 |..verify|(sp, V_s|
|000072d0| 69 74 65 29 3b 0a 09 0a | 09 69 66 20 28 21 73 70 |ite);...|.if (!sp|
|000072e0| 2d 3e 63 6f 6e 6e 65 63 | 74 65 64 29 20 72 65 74 |->connec|ted) ret|
|000072f0| 75 72 6e 3b 0a 09 0a 09 | 73 79 6e 63 20 3d 20 73 |urn;....|sync = s|
|00007300| 70 2d 3e 73 79 6e 63 3b | 0a 09 0a 09 73 74 61 74 |p->sync;|....stat|
|00007310| 65 5f 63 68 61 6e 67 65 | 28 73 70 2c 20 53 53 5f |e_change|(sp, SS_|
|00007320| 44 49 53 43 4f 4e 4e 45 | 43 54 49 4e 47 29 3b 0a |DISCONNE|CTING);.|
|00007330| 0a 09 74 6d 20 3d 20 73 | 70 2d 3e 63 66 69 6c 65 |..tm = s|p->cfile|
|00007340| 3b 09 09 2f 2a 20 66 69 | 6c 65 20 6f 70 65 6e 2c |;../* fi|le open,|
|00007350| 20 68 61 76 65 20 74 6f | 20 63 6c 6f 73 65 20 69 | have to| close i|
|00007360| 74 20 2a 2f 0a 09 69 66 | 20 28 74 6d 29 20 7b 0a |t */..if| (tm) {.|
|00007370| 09 09 76 65 72 69 66 79 | 28 74 6d 2c 20 56 5f 74 |..verify|(tm, V_t|
|00007380| 63 70 6d 65 73 73 61 67 | 65 29 3b 0a 09 09 76 65 |cpmessag|e);...ve|
|00007390| 72 69 66 79 28 73 70 2d | 3e 66 69 6c 65 5f 6c 69 |rify(sp-|>file_li|
|000073a0| 73 74 2c 20 56 5f 66 69 | 6c 65 5f 69 6e 66 6f 29 |st, V_fi|le_info)|
|000073b0| 3b 0a 09 09 0a 09 09 74 | 6d 2d 3e 63 6f 6d 6d 61 |;......t|m->comma|
|000073c0| 6e 64 20 3d 20 54 43 50 | 5f 43 4c 4f 53 45 3b 0a |nd = TCP|_CLOSE;.|
|000073d0| 09 09 74 6d 2d 3e 68 65 | 61 64 65 72 2e 6d 6e 5f |..tm->he|ader.mn_|
|000073e0| 52 65 70 6c 79 50 6f 72 | 74 20 3d 20 73 79 6e 63 |ReplyPor|t = sync|
|000073f0| 3b 0a 09 09 0a 09 09 50 | 75 74 4d 73 67 28 74 63 |;......P|utMsg(tc|
|00007400| 70 2c 20 26 74 6d 2d 3e | 68 65 61 64 65 72 29 3b |p, &tm->|header);|
|00007410| 09 2f 2a 20 73 65 6e 64 | 20 43 4c 4f 53 45 20 6f |./* send| CLOSE o|
|00007420| 6e 20 66 69 6c 65 20 74 | 6d 20 2a 2f 0a 09 09 57 |n file t|m */...W|
|00007430| 61 69 74 50 6f 72 74 28 | 73 79 6e 63 29 3b 20 47 |aitPort(|sync); G|
|00007440| 65 74 4d 73 67 28 73 79 | 6e 63 29 3b 0a 09 09 0a |etMsg(sy|nc);....|
|00007450| 09 09 74 6d 2d 3e 63 6f | 6d 6d 61 6e 64 20 3d 20 |..tm->co|mmand = |
|00007460| 54 43 50 5f 44 49 53 50 | 4f 53 45 3b 0a 09 09 50 |TCP_DISP|OSE;...P|
|00007470| 75 74 4d 73 67 28 74 63 | 70 2c 20 26 74 6d 2d 3e |utMsg(tc|p, &tm->|
|00007480| 68 65 61 64 65 72 29 3b | 0a 09 09 0a 09 09 73 70 |header);|......sp|
|00007490| 2d 3e 63 66 69 6c 65 20 | 3d 20 6e 69 6c 3b 0a 09 |->cfile |= nil;..|
|000074a0| 09 0a 09 09 64 65 61 6c | 6c 6f 63 61 74 65 28 73 |....deal|locate(s|
|000074b0| 70 2d 3e 66 69 6c 65 5f | 6c 69 73 74 2c 20 56 5f |p->file_|list, V_|
|000074c0| 66 69 6c 65 5f 69 6e 66 | 6f 29 3b 0a 09 09 73 70 |file_inf|o);...sp|
|000074d0| 2d 3e 66 69 6c 65 5f 6c | 69 73 74 20 3d 20 6e 69 |->file_l|ist = ni|
|000074e0| 6c 3b 0a 09 7d 0a 0a 09 | 74 6d 20 3d 20 73 70 2d |l;..}...|tm = sp-|
|000074f0| 3e 63 6f 6e 74 72 6f 6c | 3b 0a 09 76 65 72 69 66 |>control|;..verif|
|00007500| 79 28 74 6d 2c 20 56 5f | 74 63 70 6d 65 73 73 61 |y(tm, V_|tcpmessa|
|00007510| 67 65 29 3b 0a 09 0a 09 | 74 6d 2d 3e 63 6f 6d 6d |ge);....|tm->comm|
|00007520| 61 6e 64 20 3d 20 54 43 | 50 5f 43 4c 4f 53 45 3b |and = TC|P_CLOSE;|
|00007530| 0a 09 74 6d 2d 3e 68 65 | 61 64 65 72 2e 6d 6e 5f |..tm->he|ader.mn_|
|00007540| 52 65 70 6c 79 50 6f 72 | 74 20 3d 20 73 79 6e 63 |ReplyPor|t = sync|
|00007550| 3b 0a 09 0a 09 50 75 74 | 4d 73 67 28 74 63 70 2c |;....Put|Msg(tcp,|
|00007560| 20 26 74 6d 2d 3e 68 65 | 61 64 65 72 29 3b 09 2f | &tm->he|ader);./|
|00007570| 2a 20 73 65 6e 64 20 43 | 4c 4f 53 45 20 2a 2f 0a |* send C|LOSE */.|
|00007580| 09 0a 09 73 70 2d 3e 63 | 6f 6e 6e 65 63 74 65 64 |...sp->c|onnected|
|00007590| 20 3d 20 66 61 6c 73 65 | 3b 0a 09 0a 09 69 66 20 | = false|;....if |
|000075a0| 28 73 70 2d 3e 63 77 64 | 29 20 7b 0a 09 09 64 65 |(sp->cwd|) {...de|
|000075b0| 61 6c 6c 6f 63 61 74 65 | 28 73 70 2d 3e 63 77 64 |allocate|(sp->cwd|
|000075c0| 2c 20 56 5f 63 73 74 72 | 29 3b 0a 09 09 73 70 2d |, V_cstr|);...sp-|
|000075d0| 3e 63 77 64 20 3d 20 6e | 69 6c 3b 0a 09 7d 0a 09 |>cwd = n|il;..}..|
|000075e0| 0a 09 77 68 69 6c 65 20 | 28 73 70 2d 3e 69 6e 66 |..while |(sp->inf|
|000075f0| 6f 73 29 20 66 72 65 65 | 5f 69 6e 66 6f 5f 68 65 |os) free|_info_he|
|00007600| 61 64 65 72 28 73 70 2d | 3e 69 6e 66 6f 73 29 3b |ader(sp-|>infos);|
|00007610| 0a 09 0a 09 57 61 69 74 | 50 6f 72 74 28 73 79 6e |....Wait|Port(syn|
|00007620| 63 29 3b 20 47 65 74 4d | 73 67 28 73 79 6e 63 29 |c); GetM|sg(sync)|
|00007630| 3b 09 2f 2a 20 77 61 69 | 74 20 66 6f 72 20 43 4c |;./* wai|t for CL|
|00007640| 4f 53 45 20 74 6f 20 63 | 6f 6d 65 20 62 61 63 6b |OSE to c|ome back|
|00007650| 20 2a 2f 0a 09 0a 09 2f | 2a 20 69 74 20 73 68 6f | */..../|* it sho|
|00007660| 75 6c 64 6e 27 74 20 72 | 65 61 6c 6c 79 20 66 61 |uldn't r|eally fa|
|00007670| 69 6c 20 2e 2e 2e 20 6e | 6f 74 20 73 75 72 65 20 |il ... n|ot sure |
|00007680| 69 66 20 77 65 20 63 61 | 6e 20 64 6f 20 61 6e 79 |if we ca|n do any|
|00007690| 74 68 69 6e 67 20 69 66 | 20 69 74 20 68 61 73 20 |thing if| it has |
|000076a0| 2a 2f 0a 0a 09 73 74 61 | 74 65 5f 63 68 61 6e 67 |*/...sta|te_chang|
|000076b0| 65 28 73 70 2c 20 53 53 | 5f 44 49 53 43 4f 4e 4e |e(sp, SS|_DISCONN|
|000076c0| 45 43 54 45 44 29 3b 0a | 09 0a 09 72 65 74 75 72 |ECTED);.|...retur|
|000076d0| 6e 3b 0a 7d 0a 0a 62 33 | 32 20 72 65 61 64 5f 66 |n;.}..b3|2 read_f|
|000076e0| 69 6c 65 28 73 69 74 65 | 20 2a 73 70 2c 20 62 38 |ile(site| *sp, b8|
|000076f0| 20 2a 73 2c 20 62 33 32 | 20 2a 6c 65 6e 67 74 68 | *s, b32| *length|
|00007700| 29 0a 2f 2a 0a 20 2a 20 | 72 65 61 64 20 2a 6c 65 |)./*. * |read *le|
|00007710| 6e 67 74 68 20 62 79 74 | 65 73 20 66 72 6f 6d 20 |ngth byt|es from |
|00007720| 6f 70 65 6e 20 66 69 6c | 65 0a 20 2a 20 49 6e 70 |open fil|e. * Inp|
|00007730| 75 74 73 3a 0a 20 2a 09 | 73 70 09 3a 20 73 69 74 |uts:. *.|sp.: sit|
|00007740| 65 20 70 6f 69 6e 74 65 | 72 0a 20 2a 09 73 09 3a |e pointe|r. *.s.:|
|00007750| 20 64 61 74 61 20 62 75 | 66 66 65 72 0a 20 2a 09 | data bu|ffer. *.|
|00007760| 6c 65 6e 67 74 68 09 3a | 20 70 6f 69 6e 74 65 72 |length.:| pointer|
|00007770| 20 74 6f 20 6c 65 6e 67 | 74 68 20 74 6f 20 72 65 | to leng|th to re|
|00007780| 61 64 2c 20 63 68 61 6e | 67 65 64 20 74 6f 20 6c |ad, chan|ged to l|
|00007790| 65 6e 67 74 68 20 61 63 | 74 75 61 6c 6c 79 20 72 |ength ac|tually r|
|000077a0| 65 61 64 0a 20 2a 0a 20 | 2a 09 52 65 73 75 6c 74 |ead. *. |*.Result|
|000077b0| 3a 0a 20 2a 09 74 63 70 | 20 65 72 72 6f 72 20 69 |:. *.tcp| error i|
|000077c0| 73 20 72 65 74 75 72 6e | 65 64 2c 20 2a 6c 65 6e |s return|ed, *len|
|000077d0| 67 74 68 20 69 73 20 6d | 6f 64 69 66 69 65 64 20 |gth is m|odified |
|000077e0| 74 6f 20 62 65 20 61 63 | 74 75 61 6c 20 6c 65 6e |to be ac|tual len|
|000077f0| 67 74 68 20 72 65 61 64 | 0a 20 2a 2f 0a 7b 0a 09 |gth read|. */.{..|
|00007800| 74 63 70 6d 65 73 73 61 | 67 65 20 2a 74 6d 3b 0a |tcpmessa|ge *tm;.|
|00007810| 09 73 74 72 75 63 74 20 | 4d 73 67 50 6f 72 74 20 |.struct |MsgPort |
|00007820| 2a 73 79 6e 63 3b 0a 09 | 62 33 32 20 73 69 67 6e |*sync;..|b32 sign|
|00007830| 61 6c 73 2c 20 61 73 69 | 67 73 2c 20 72 73 69 67 |als, asi|gs, rsig|
|00007840| 73 3b 0a 0a 09 76 65 72 | 69 66 79 28 73 70 2c 20 |s;...ver|ify(sp, |
|00007850| 56 5f 73 69 74 65 29 3b | 0a 09 74 72 75 74 68 28 |V_site);|..truth(|
|00007860| 73 20 21 3d 20 6e 69 6c | 29 3b 0a 09 74 72 75 74 |s != nil|);..trut|
|00007870| 68 28 6c 65 6e 67 74 68 | 20 21 3d 20 6e 69 6c 29 |h(length| != nil)|
|00007880| 3b 0a 0a 09 74 6d 20 3d | 20 73 70 2d 3e 63 66 69 |;...tm =| sp->cfi|
|00007890| 6c 65 3b 0a 09 76 65 72 | 69 66 79 28 74 6d 2c 20 |le;..ver|ify(tm, |
|000078a0| 56 5f 74 63 70 6d 65 73 | 73 61 67 65 29 3b 0a 09 |V_tcpmes|sage);..|
|000078b0| 0a 09 73 79 6e 63 20 3d | 20 73 70 2d 3e 73 79 6e |..sync =| sp->syn|
|000078c0| 63 3b 0a 09 0a 09 74 6d | 2d 3e 63 6f 6d 6d 61 6e |c;....tm|->comman|
|000078d0| 64 20 3d 20 54 43 50 5f | 52 45 41 44 3b 0a 09 74 |d = TCP_|READ;..t|
|000078e0| 6d 2d 3e 66 6c 61 67 73 | 20 3d 20 30 3b 0a 09 74 |m->flags| = 0;..t|
|000078f0| 6d 2d 3e 64 61 74 61 20 | 3d 20 73 3b 0a 09 74 6d |m->data |= s;..tm|
|00007900| 2d 3e 6c 65 6e 67 74 68 | 20 3d 20 2a 6c 65 6e 67 |->length| = *leng|
|00007910| 74 68 3b 0a 09 74 6d 2d | 3e 68 65 61 64 65 72 2e |th;..tm-|>header.|
|00007920| 6d 6e 5f 52 65 70 6c 79 | 50 6f 72 74 20 3d 20 73 |mn_Reply|Port = s|
|00007930| 79 6e 63 3b 0a 09 0a 09 | 61 73 69 67 73 20 3d 20 |ync;....|asigs = |
|00007940| 73 70 2d 3e 61 62 6f 72 | 74 5f 73 69 67 6e 61 6c |sp->abor|t_signal|
|00007950| 73 20 7c 20 73 70 2d 3e | 64 69 73 63 6f 6e 6e 65 |s | sp->|disconne|
|00007960| 63 74 5f 73 69 67 6e 61 | 6c 73 3b 0a 09 73 69 67 |ct_signa|ls;..sig|
|00007970| 6e 61 6c 73 20 3d 20 61 | 73 69 67 73 20 7c 20 28 |nals = a|sigs | (|
|00007980| 31 20 3c 3c 20 73 79 6e | 63 2d 3e 6d 70 5f 53 69 |1 << syn|c->mp_Si|
|00007990| 67 42 69 74 29 3b 0a 09 | 0a 09 50 75 74 4d 73 67 |gBit);..|..PutMsg|
|000079a0| 28 74 63 70 2c 20 26 74 | 6d 2d 3e 68 65 61 64 65 |(tcp, &t|m->heade|
|000079b0| 72 29 3b 0a 09 64 6f 20 | 7b 0a 09 09 72 73 69 67 |r);..do |{...rsig|
|000079c0| 73 20 3d 20 57 61 69 74 | 28 73 69 67 6e 61 6c 73 |s = Wait|(signals|
|000079d0| 29 3b 0a 09 09 69 66 20 | 28 72 73 69 67 73 20 26 |);...if |(rsigs &|
|000079e0| 20 61 73 69 67 73 29 20 | 7b 0a 09 09 09 73 74 61 | asigs) |{....sta|
|000079f0| 74 65 5f 63 68 61 6e 67 | 65 28 73 70 2c 20 53 53 |te_chang|e(sp, SS|
|00007a00| 5f 41 42 4f 52 54 49 4e | 47 29 3b 0a 09 09 09 0a |_ABORTIN|G);.....|
|00007a10| 09 09 09 69 6e 74 65 72 | 72 75 70 74 5f 6d 65 73 |...inter|rupt_mes|
|00007a20| 73 61 67 65 28 73 70 2c | 20 74 6d 29 3b 0a 09 09 |sage(sp,| tm);...|
|00007a30| 09 0a 09 09 09 69 66 20 | 28 72 73 69 67 73 20 26 |.....if |(rsigs &|
|00007a40| 20 73 70 2d 3e 64 69 73 | 63 6f 6e 6e 65 63 74 5f | sp->dis|connect_|
|00007a50| 73 69 67 6e 61 6c 73 29 | 20 7b 0a 09 09 09 09 64 |signals)| {.....d|
|00007a60| 69 73 63 6f 6e 6e 65 63 | 74 28 73 70 29 3b 0a 09 |isconnec|t(sp);..|
|00007a70| 09 09 7d 20 65 6c 73 65 | 20 7b 0a 09 09 09 09 63 |..} else| {.....c|
|00007a80| 6c 6f 73 65 5f 66 69 6c | 65 28 73 70 2c 20 66 61 |lose_fil|e(sp, fa|
|00007a90| 6c 73 65 29 3b 0a 09 09 | 09 7d 0a 09 09 09 0a 09 |lse);...|.}......|
|00007aa0| 09 09 2a 6c 65 6e 67 74 | 68 20 3d 20 30 3b 0a 09 |..*lengt|h = 0;..|
|00007ab0| 09 09 72 65 74 75 72 6e | 20 45 52 52 4f 52 5f 49 |..return| ERROR_I|
|00007ac0| 4e 54 45 52 52 55 50 54 | 45 44 3b 0a 09 09 7d 0a |NTERRUPT|ED;...}.|
|00007ad0| 09 7d 20 77 68 69 6c 65 | 20 28 21 47 65 74 4d 73 |.} while| (!GetMs|
|00007ae0| 67 28 73 79 6e 63 29 29 | 3b 0a 09 0a 09 69 66 20 |g(sync))|;....if |
|00007af0| 28 74 6d 2d 3e 72 65 73 | 75 6c 74 20 3e 20 30 29 |(tm->res|ult > 0)|
|00007b00| 20 7b 0a 09 09 2a 6c 65 | 6e 67 74 68 20 3d 20 74 | {...*le|ngth = t|
|00007b10| 6d 2d 3e 72 65 73 75 6c | 74 3b 0a 09 09 72 65 74 |m->resul|t;...ret|
|00007b20| 75 72 6e 20 4e 4f 5f 45 | 52 52 4f 52 3b 0a 09 7d |urn NO_E|RROR;..}|
|00007b30| 20 65 6c 73 65 20 7b 0a | 09 09 2a 6c 65 6e 67 74 | else {.|..*lengt|
|00007b40| 68 20 3d 20 30 3b 0a 09 | 09 72 65 74 75 72 6e 20 |h = 0;..|.return |
|00007b50| 74 6d 2d 3e 65 72 72 6f | 72 3b 0a 09 7d 0a 7d 0a |tm->erro|r;..}.}.|
|00007b60| 0a 62 33 32 20 77 72 69 | 74 65 5f 66 69 6c 65 28 |.b32 wri|te_file(|
|00007b70| 73 69 74 65 20 2a 73 70 | 2c 20 62 38 20 2a 73 2c |site *sp|, b8 *s,|
|00007b80| 20 62 33 32 20 2a 6c 65 | 6e 67 74 68 29 0a 2f 2a | b32 *le|ngth)./*|
|00007b90| 0a 20 2a 20 77 72 69 74 | 65 20 2a 6c 65 6e 67 74 |. * writ|e *lengt|
|00007ba0| 68 20 62 79 74 65 73 20 | 74 6f 20 61 6e 20 6f 70 |h bytes |to an op|
|00007bb0| 65 6e 20 66 69 6c 65 20 | 28 61 6c 6d 6f 73 74 20 |en file |(almost |
|00007bc0| 69 64 65 6e 74 69 63 61 | 6c 20 63 6f 70 79 20 74 |identica|l copy t|
|00007bd0| 6f 20 72 65 61 64 5f 66 | 69 6c 65 20 61 62 6f 76 |o read_f|ile abov|
|00007be0| 65 29 0a 20 2a 20 49 6e | 70 75 74 73 3a 0a 20 2a |e). * In|puts:. *|
|00007bf0| 09 73 70 09 3a 20 73 69 | 74 65 20 70 6f 69 6e 74 |.sp.: si|te point|
|00007c00| 65 72 0a 20 2a 09 73 09 | 3a 20 64 61 74 61 20 62 |er. *.s.|: data b|
|00007c10| 75 66 66 65 72 0a 20 2a | 09 6c 65 6e 67 74 68 09 |uffer. *|.length.|
|00007c20| 3a 20 70 6f 69 6e 74 65 | 72 20 74 6f 20 6c 65 6e |: pointe|r to len|
|00007c30| 67 74 68 20 74 6f 20 77 | 72 69 74 65 2c 20 63 68 |gth to w|rite, ch|
|00007c40| 61 6e 67 65 64 20 74 6f | 20 6c 65 6e 67 74 68 20 |anged to| length |
|00007c50| 61 63 74 75 61 6c 6c 79 | 20 77 72 69 74 74 65 6e |actually| written|
|00007c60| 0a 20 2a 0a 20 2a 09 52 | 65 73 75 6c 74 3a 0a 20 |. *. *.R|esult:. |
|00007c70| 2a 09 74 63 70 20 65 72 | 72 6f 72 20 69 73 20 72 |*.tcp er|ror is r|
|00007c80| 65 74 75 72 6e 65 64 2c | 20 2a 6c 65 6e 67 74 68 |eturned,| *length|
|00007c90| 20 69 73 20 6d 6f 64 69 | 66 69 65 64 20 74 6f 20 | is modi|fied to |
|00007ca0| 62 65 20 61 63 74 75 61 | 6c 20 6c 65 6e 67 74 68 |be actua|l length|
|00007cb0| 20 77 72 69 74 74 65 6e | 0a 20 2a 2f 0a 7b 0a 09 | written|. */.{..|
|00007cc0| 74 63 70 6d 65 73 73 61 | 67 65 20 2a 74 6d 3b 0a |tcpmessa|ge *tm;.|
|00007cd0| 09 73 74 72 75 63 74 20 | 4d 73 67 50 6f 72 74 20 |.struct |MsgPort |
|00007ce0| 2a 73 79 6e 63 3b 0a 09 | 62 33 32 20 73 69 67 6e |*sync;..|b32 sign|
|00007cf0| 61 6c 73 2c 20 61 73 69 | 67 73 2c 20 72 73 69 67 |als, asi|gs, rsig|
|00007d00| 73 3b 0a 0a 09 76 65 72 | 69 66 79 28 73 70 2c 20 |s;...ver|ify(sp, |
|00007d10| 56 5f 73 69 74 65 29 3b | 0a 09 74 72 75 74 68 28 |V_site);|..truth(|
|00007d20| 73 20 21 3d 20 6e 69 6c | 29 3b 0a 09 74 72 75 74 |s != nil|);..trut|
|00007d30| 68 28 6c 65 6e 67 74 68 | 20 21 3d 20 6e 69 6c 29 |h(length| != nil)|
|00007d40| 3b 0a 0a 09 74 6d 20 3d | 20 73 70 2d 3e 63 66 69 |;...tm =| sp->cfi|
|00007d50| 6c 65 3b 0a 09 76 65 72 | 69 66 79 28 74 6d 2c 20 |le;..ver|ify(tm, |
|00007d60| 56 5f 74 63 70 6d 65 73 | 73 61 67 65 29 3b 0a 09 |V_tcpmes|sage);..|
|00007d70| 0a 09 73 79 6e 63 20 3d | 20 73 70 2d 3e 73 79 6e |..sync =| sp->syn|
|00007d80| 63 3b 0a 09 0a 09 74 6d | 2d 3e 63 6f 6d 6d 61 6e |c;....tm|->comman|
|00007d90| 64 20 3d 20 54 43 50 5f | 57 52 49 54 45 3b 0a 09 |d = TCP_|WRITE;..|
|00007da0| 74 6d 2d 3e 66 6c 61 67 | 73 20 3d 20 30 3b 0a 09 |tm->flag|s = 0;..|
|00007db0| 74 6d 2d 3e 64 61 74 61 | 20 3d 20 73 3b 0a 09 74 |tm->data| = s;..t|
|00007dc0| 6d 2d 3e 6c 65 6e 67 74 | 68 20 3d 20 2a 6c 65 6e |m->lengt|h = *len|
|00007dd0| 67 74 68 3b 0a 09 74 6d | 2d 3e 68 65 61 64 65 72 |gth;..tm|->header|
|00007de0| 2e 6d 6e 5f 52 65 70 6c | 79 50 6f 72 74 20 3d 20 |.mn_Repl|yPort = |
|00007df0| 73 79 6e 63 3b 0a 09 0a | 09 61 73 69 67 73 20 3d |sync;...|.asigs =|
|00007e00| 20 73 70 2d 3e 61 62 6f | 72 74 5f 73 69 67 6e 61 | sp->abo|rt_signa|
|00007e10| 6c 73 20 7c 20 73 70 2d | 3e 64 69 73 63 6f 6e 6e |ls | sp-|>disconn|
|00007e20| 65 63 74 5f 73 69 67 6e | 61 6c 73 3b 0a 09 73 69 |ect_sign|als;..si|
|00007e30| 67 6e 61 6c 73 20 3d 20 | 61 73 69 67 73 20 7c 20 |gnals = |asigs | |
|00007e40| 28 31 20 3c 3c 20 73 79 | 6e 63 2d 3e 6d 70 5f 53 |(1 << sy|nc->mp_S|
|00007e50| 69 67 42 69 74 29 3b 0a | 09 0a 09 50 75 74 4d 73 |igBit);.|...PutMs|
|00007e60| 67 28 74 63 70 2c 20 26 | 74 6d 2d 3e 68 65 61 64 |g(tcp, &|tm->head|
|00007e70| 65 72 29 3b 0a 09 64 6f | 20 7b 0a 09 09 72 73 69 |er);..do| {...rsi|
|00007e80| 67 73 20 3d 20 57 61 69 | 74 28 73 69 67 6e 61 6c |gs = Wai|t(signal|
|00007e90| 73 29 3b 0a 09 09 69 66 | 20 28 72 73 69 67 73 20 |s);...if| (rsigs |
|00007ea0| 26 20 61 73 69 67 73 29 | 20 7b 0a 09 09 09 73 74 |& asigs)| {....st|
|00007eb0| 61 74 65 5f 63 68 61 6e | 67 65 28 73 70 2c 20 53 |ate_chan|ge(sp, S|
|00007ec0| 53 5f 41 42 4f 52 54 49 | 4e 47 29 3b 0a 09 09 09 |S_ABORTI|NG);....|
|00007ed0| 0a 09 09 09 69 6e 74 65 | 72 72 75 70 74 5f 6d 65 |....inte|rrupt_me|
|00007ee0| 73 73 61 67 65 28 73 70 | 2c 20 74 6d 29 3b 0a 09 |ssage(sp|, tm);..|
|00007ef0| 09 09 0a 09 09 09 69 66 | 20 28 72 73 69 67 73 20 |......if| (rsigs |
|00007f00| 26 20 73 70 2d 3e 64 69 | 73 63 6f 6e 6e 65 63 74 |& sp->di|sconnect|
|00007f10| 5f 73 69 67 6e 61 6c 73 | 29 20 7b 0a 09 09 09 09 |_signals|) {.....|
|00007f20| 64 69 73 63 6f 6e 6e 65 | 63 74 28 73 70 29 3b 0a |disconne|ct(sp);.|
|00007f30| 09 09 09 7d 20 65 6c 73 | 65 20 7b 0a 09 09 09 09 |...} els|e {.....|
|00007f40| 63 6c 6f 73 65 5f 66 69 | 6c 65 28 73 70 2c 20 66 |close_fi|le(sp, f|
|00007f50| 61 6c 73 65 29 3b 0a 09 | 09 09 7d 0a 09 09 09 0a |alse);..|..}.....|
|00007f60| 09 09 09 2a 6c 65 6e 67 | 74 68 20 3d 20 30 3b 0a |...*leng|th = 0;.|
|00007f70| 09 09 09 72 65 74 75 72 | 6e 20 45 52 52 4f 52 5f |...retur|n ERROR_|
|00007f80| 49 4e 54 45 52 52 55 50 | 54 45 44 3b 0a 09 09 7d |INTERRUP|TED;...}|
|00007f90| 0a 09 7d 20 77 68 69 6c | 65 20 28 21 47 65 74 4d |..} whil|e (!GetM|
|00007fa0| 73 67 28 73 79 6e 63 29 | 29 3b 0a 09 0a 09 69 66 |sg(sync)|);....if|
|00007fb0| 20 28 74 6d 2d 3e 72 65 | 73 75 6c 74 20 3e 20 30 | (tm->re|sult > 0|
|00007fc0| 29 20 7b 0a 09 09 2a 6c | 65 6e 67 74 68 20 3d 20 |) {...*l|ength = |
|00007fd0| 74 6d 2d 3e 72 65 73 75 | 6c 74 3b 0a 09 09 72 65 |tm->resu|lt;...re|
|00007fe0| 74 75 72 6e 20 4e 4f 5f | 45 52 52 4f 52 3b 0a 09 |turn NO_|ERROR;..|
|00007ff0| 7d 20 65 6c 73 65 20 7b | 0a 09 09 2a 6c 65 6e 67 |} else {|...*leng|
|00008000| 74 68 20 3d 20 30 3b 0a | 09 09 72 65 74 75 72 6e |th = 0;.|..return|
|00008010| 20 74 6d 2d 3e 65 72 72 | 6f 72 3b 0a 09 7d 0a 7d | tm->err|or;..}.}|
|00008020| 0a 0a 62 33 32 20 6f 70 | 65 6e 5f 66 69 6c 65 28 |..b32 op|en_file(|
|00008030| 73 69 74 65 20 2a 73 70 | 2c 20 62 38 20 2a 73 2c |site *sp|, b8 *s,|
|00008040| 20 62 6f 6f 6c 65 61 6e | 20 77 72 69 74 69 6e 67 | boolean| writing|
|00008050| 2c 20 62 38 20 2a 6c 65 | 61 66 5f 6e 61 6d 65 29 |, b8 *le|af_name)|
|00008060| 0a 2f 2a 0a 20 2a 20 6f | 70 65 6e 20 66 69 6c 65 |./*. * o|pen file|
|00008070| 20 77 69 74 68 20 6e 61 | 6d 65 20 69 6e 20 73 0a | with na|me in s.|
|00008080| 20 2a 20 49 6e 70 75 74 | 73 3a 0a 20 2a 09 73 70 | * Input|s:. *.sp|
|00008090| 09 3a 20 73 69 74 65 20 | 70 6f 69 6e 74 65 72 0a |.: site |pointer.|
|000080a0| 20 2a 09 73 09 3a 20 66 | 69 6c 65 20 6e 61 6d 65 | *.s.: f|ile name|
|000080b0| 0a 20 2a 09 77 72 69 74 | 69 6e 67 09 3a 20 74 72 |. *.writ|ing.: tr|
|000080c0| 75 65 20 69 66 20 6f 70 | 65 6e 65 64 20 66 6f 72 |ue if op|ened for|
|000080d0| 20 77 72 69 74 69 6e 67 | 2c 20 66 61 6c 73 65 20 | writing|, false |
|000080e0| 69 66 20 66 6f 72 20 72 | 65 61 64 69 6e 67 0a 20 |if for r|eading. |
|000080f0| 2a 0a 20 2a 20 52 65 74 | 75 72 6e 73 3a 0a 20 2a |*. * Ret|urns:. *|
|00008100| 09 30 09 3a 20 6e 6f 20 | 65 72 72 6f 72 0a 20 2a |.0.: no |error. *|
|00008110| 09 6e 6f 6e 2d 30 09 3a | 20 73 74 61 6e 64 61 72 |.non-0.:| standar|
|00008120| 64 20 66 69 6c 65 20 73 | 79 73 74 65 6d 20 65 72 |d file s|ystem er|
|00008130| 72 6f 72 73 20 28 45 52 | 52 4f 52 5f 4f 42 4a 45 |rors (ER|ROR_OBJE|
|00008140| 43 54 5f 4e 4f 54 5f 46 | 4f 55 4e 44 20 65 74 63 |CT_NOT_F|OUND etc|
|00008150| 29 0a 20 2a 2f 0a 7b 0a | 09 74 63 70 6d 65 73 73 |). */.{.|.tcpmess|
|00008160| 61 67 65 20 2a 74 6d 2c | 20 2a 6e 65 77 74 6d 3b |age *tm,| *newtm;|
|00008170| 0a 09 73 74 72 75 63 74 | 20 4d 73 67 50 6f 72 74 |..struct| MsgPort|
|00008180| 20 2a 73 79 6e 63 3b 0a | 09 62 38 20 72 65 70 6c | *sync;.|.b8 repl|
|00008190| 79 5b 34 5d 2c 20 2a 69 | 6e 66 6f 3b 0a 09 62 38 |y[4], *i|nfo;..b8|
|000081a0| 20 2a 6c 65 61 66 3b 0a | 09 62 33 32 20 65 72 72 | *leaf;.|.b32 err|
|000081b0| 6f 72 3b 0a 09 62 31 36 | 20 70 6f 72 74 5f 6e 75 |or;..b16| port_nu|
|000081c0| 6d 62 65 72 3b 0a 09 66 | 69 6c 65 5f 69 6e 66 6f |mber;..f|ile_info|
|000081d0| 20 2a 66 69 3b 0a 09 0a | 09 76 65 72 69 66 79 28 | *fi;...|.verify(|
|000081e0| 73 70 2c 20 56 5f 73 69 | 74 65 29 3b 0a 09 74 72 |sp, V_si|te);..tr|
|000081f0| 75 74 68 28 73 20 21 3d | 20 6e 69 6c 29 3b 0a 09 |uth(s !=| nil);..|
|00008200| 0a 09 2f 2a 20 61 20 66 | 65 77 20 63 6f 6e 64 69 |../* a f|ew condi|
|00008210| 74 69 6f 6e 73 20 77 65 | 20 61 72 65 20 61 73 73 |tions we| are ass|
|00008220| 75 6d 69 6e 67 20 2a 2f | 0a 09 74 72 75 74 68 28 |uming */|..truth(|
|00008230| 73 70 2d 3e 63 6f 6e 6e | 65 63 74 65 64 29 3b 0a |sp->conn|ected);.|
|00008240| 09 74 72 75 74 68 28 73 | 70 2d 3e 63 66 69 6c 65 |.truth(s|p->cfile|
|00008250| 20 3d 3d 20 6e 69 6c 29 | 3b 0a 09 74 72 75 74 68 | == nil)|;..truth|
|00008260| 28 73 70 2d 3e 66 69 6c | 65 5f 6c 69 73 74 20 3d |(sp->fil|e_list =|
|00008270| 3d 20 6e 69 6c 29 3b 0a | 09 0a 09 69 66 20 28 73 |= nil);.|...if (s|
|00008280| 5b 30 5d 20 3d 3d 20 30 | 29 20 7b 0a 09 09 2f 2a |[0] == 0|) {.../*|
|00008290| 20 74 68 65 79 20 61 72 | 65 20 74 72 79 69 6e 67 | they ar|e trying|
|000082a0| 20 74 6f 20 6f 70 65 6e | 20 74 68 65 20 72 6f 6f | to open| the roo|
|000082b0| 74 20 6f 66 20 74 68 69 | 73 20 73 69 74 65 20 61 |t of thi|s site a|
|000082c0| 73 20 61 20 66 69 6c 65 | 20 2e 2e 2e 20 2a 2f 0a |s a file| ... */.|
|000082d0| 09 09 72 65 74 75 72 6e | 20 45 52 52 4f 52 5f 4f |..return| ERROR_O|
|000082e0| 42 4a 45 43 54 5f 57 52 | 4f 4e 47 5f 54 59 50 45 |BJECT_WR|ONG_TYPE|
|000082f0| 3b 0a 09 7d 0a 09 0a 09 | 74 6d 20 3d 20 73 70 2d |;..}....|tm = sp-|
|00008300| 3e 63 6f 6e 74 72 6f 6c | 3b 0a 09 76 65 72 69 66 |>control|;..verif|
|00008310| 79 28 74 6d 2c 20 56 5f | 74 63 70 6d 65 73 73 61 |y(tm, V_|tcpmessa|
|00008320| 67 65 29 3b 0a 09 0a 09 | 73 79 6e 63 20 3d 20 73 |ge);....|sync = s|
|00008330| 70 2d 3e 73 79 6e 63 3b | 0a 09 0a 09 74 6d 2d 3e |p->sync;|....tm->|
|00008340| 68 65 61 64 65 72 2e 6d | 6e 5f 52 65 70 6c 79 50 |header.m|n_ReplyP|
|00008350| 6f 72 74 20 3d 20 73 79 | 6e 63 3b 0a 09 0a 09 6c |ort = sy|nc;....l|
|00008360| 65 61 66 20 3d 20 63 64 | 5f 70 61 72 65 6e 74 28 |eaf = cd|_parent(|
|00008370| 73 70 2c 20 73 29 3b 0a | 09 69 66 20 28 21 6c 65 |sp, s);.|.if (!le|
|00008380| 61 66 29 20 7b 0a 09 09 | 2f 2a 20 74 68 65 72 65 |af) {...|/* there|
|00008390| 20 61 72 65 20 6f 74 68 | 65 72 20 70 6f 73 73 69 | are oth|er possi|
|000083a0| 62 6c 65 20 72 65 61 73 | 6f 6e 73 20 68 65 72 65 |ble reas|ons here|
|000083b0| 2c 20 62 75 74 20 49 27 | 6d 20 62 65 69 6e 67 20 |, but I'|m being |
|000083c0| 6c 61 7a 79 20 2e 2e 2e | 20 2a 2f 0a 09 09 72 65 |lazy ...| */...re|
|000083d0| 74 75 72 6e 20 45 52 52 | 4f 52 5f 44 49 52 5f 4e |turn ERR|OR_DIR_N|
|000083e0| 4f 54 5f 46 4f 55 4e 44 | 3b 0a 09 7d 0a 09 0a 09 |OT_FOUND|;..}....|
|000083f0| 69 66 20 28 6c 65 61 66 | 5f 6e 61 6d 65 29 20 6c |if (leaf|_name) l|
|00008400| 65 61 66 20 3d 20 6c 65 | 61 66 5f 6e 61 6d 65 3b |eaf = le|af_name;|
|00008410| 0a 09 0a 09 73 74 61 74 | 65 5f 63 68 61 6e 67 65 |....stat|e_change|
|00008420| 28 73 70 2c 20 53 53 5f | 4f 50 45 4e 49 4e 47 29 |(sp, SS_|OPENING)|
|00008430| 3b 0a 09 0a 09 6e 65 77 | 74 6d 20 3d 20 6e 65 77 |;....new|tm = new|
|00008440| 5f 6d 65 73 73 61 67 65 | 28 73 70 29 3b 0a 09 69 |_message|(sp);..i|
|00008450| 66 20 28 6e 65 77 74 6d | 29 20 7b 0a 09 09 66 69 |f (newtm|) {...fi|
|00008460| 20 3d 20 28 66 69 6c 65 | 5f 69 6e 66 6f 20 2a 29 | = (file|_info *)|
|00008470| 61 6c 6c 6f 63 61 74 65 | 28 73 69 7a 65 6f 66 28 |allocate|(sizeof(|
|00008480| 2a 66 69 29 20 2b 20 73 | 74 72 6c 65 6e 28 73 29 |*fi) + s|trlen(s)|
|00008490| 20 2b 20 31 2c 20 56 5f | 66 69 6c 65 5f 69 6e 66 | + 1, V_|file_inf|
|000084a0| 6f 29 3b 0a 09 09 69 66 | 20 28 66 69 29 20 7b 0a |o);...if| (fi) {.|
|000084b0| 09 09 09 73 74 72 63 70 | 79 28 66 69 2d 3e 66 6e |...strcp|y(fi->fn|
|000084c0| 61 6d 65 2c 20 73 29 3b | 0a 09 09 09 0a 09 09 09 |ame, s);|........|
|000084d0| 69 66 20 28 63 6f 6e 74 | 72 6f 6c 5f 77 72 69 74 |if (cont|rol_writ|
|000084e0| 65 28 73 70 2c 20 22 50 | 41 53 56 5c 72 5c 6e 22 |e(sp, "P|ASV\r\n"|
|000084f0| 2c 20 30 29 20 3d 3d 20 | 4e 4f 5f 45 52 52 4f 52 |, 0) == |NO_ERROR|
|00008500| 29 20 7b 0a 09 09 09 09 | 69 66 20 28 77 72 69 74 |) {.....|if (writ|
|00008510| 69 6e 67 29 20 7b 09 2f | 2a 20 79 65 73 2c 20 49 |ing) {./|* yes, I|
|00008520| 20 64 6f 20 74 68 69 73 | 20 74 77 69 63 65 20 3a | do this| twice :|
|00008530| 28 20 2a 2f 0a 09 09 09 | 09 09 73 70 72 69 6e 74 |( */....|..sprint|
|00008540| 66 28 73 70 2d 3e 72 65 | 61 64 5f 62 75 66 66 65 |f(sp->re|ad_buffe|
|00008550| 72 2c 20 22 53 54 4f 52 | 20 25 73 5c 72 5c 6e 22 |r, "STOR| %s\r\n"|
|00008560| 2c 20 6c 65 61 66 29 3b | 0a 09 09 09 09 7d 20 65 |, leaf);|.....} e|
|00008570| 6c 73 65 20 7b 0a 09 09 | 09 09 09 73 70 72 69 6e |lse {...|...sprin|
|00008580| 74 66 28 73 70 2d 3e 72 | 65 61 64 5f 62 75 66 66 |tf(sp->r|ead_buff|
|00008590| 65 72 2c 20 22 52 45 54 | 52 20 25 73 5c 72 5c 6e |er, "RET|R %s\r\n|
|000085a0| 22 2c 20 6c 65 61 66 29 | 3b 0a 09 09 09 09 7d 0a |", leaf)|;.....}.|
|000085b0| 09 09 09 09 69 66 20 28 | 21 73 70 2d 3e 71 75 69 |....if (|!sp->qui|
|000085c0| 63 6b 20 7c 7c 20 63 6f | 6e 74 72 6f 6c 5f 77 72 |ck || co|ntrol_wr|
|000085d0| 69 74 65 28 73 70 2c 20 | 73 70 2d 3e 72 65 61 64 |ite(sp, |sp->read|
|000085e0| 5f 62 75 66 66 65 72 2c | 20 30 29 20 3d 3d 20 4e |_buffer,| 0) == N|
|000085f0| 4f 5f 45 52 52 4f 52 29 | 20 7b 0a 09 09 09 09 09 |O_ERROR)| {......|
|00008600| 69 66 20 28 72 65 73 70 | 6f 6e 73 65 28 73 70 2c |if (resp|onse(sp,|
|00008610| 20 30 2c 20 26 69 6e 66 | 6f 2c 20 72 65 70 6c 79 | 0, &inf|o, reply|
|00008620| 29 20 3d 3d 20 4e 4f 5f | 45 52 52 4f 52 29 20 7b |) == NO_|ERROR) {|
|00008630| 0a 09 09 09 09 09 09 69 | 66 20 28 72 65 70 6c 79 |.......i|f (reply|
|00008640| 5b 30 5d 20 3d 3d 20 27 | 32 27 29 20 7b 0a 09 09 |[0] == '|2') {...|
|00008650| 09 09 09 09 09 69 66 20 | 28 69 6e 66 6f 29 20 7b |.....if |(info) {|
|00008660| 0a 09 09 09 09 09 09 09 | 09 69 66 20 28 70 61 73 |........|.if (pas|
|00008670| 73 69 76 65 5f 72 65 73 | 70 6f 6e 73 65 28 69 6e |sive_res|ponse(in|
|00008680| 66 6f 2c 20 73 70 2d 3e | 72 65 61 64 5f 62 75 66 |fo, sp->|read_buf|
|00008690| 66 65 72 2c 20 26 70 6f | 72 74 5f 6e 75 6d 62 65 |fer, &po|rt_numbe|
|000086a0| 72 29 29 20 7b 0a 09 09 | 09 09 09 09 09 09 09 64 |r)) {...|.......d|
|000086b0| 65 61 6c 6c 6f 63 61 74 | 65 28 69 6e 66 6f 2c 20 |eallocat|e(info, |
|000086c0| 56 5f 63 73 74 72 29 3b | 0a 09 09 09 09 09 09 09 |V_cstr);|........|
|000086d0| 09 09 0a 09 09 09 09 09 | 09 09 09 09 69 66 20 28 |........|....if (|
|000086e0| 6d 61 6b 65 5f 63 6f 6e | 6e 65 63 74 69 6f 6e 28 |make_con|nection(|
|000086f0| 73 70 2c 20 6e 65 77 74 | 6d 2c 20 73 70 2d 3e 72 |sp, newt|m, sp->r|
|00008700| 65 61 64 5f 62 75 66 66 | 65 72 2c 20 70 6f 72 74 |ead_buff|er, port|
|00008710| 5f 6e 75 6d 62 65 72 2c | 20 30 29 20 3d 3d 20 4e |_number,| 0) == N|
|00008720| 4f 5f 45 52 52 4f 52 29 | 20 7b 0a 09 09 09 09 09 |O_ERROR)| {......|
|00008730| 09 09 09 09 09 69 66 20 | 28 77 72 69 74 69 6e 67 |.....if |(writing|
|00008740| 29 20 7b 09 2f 2a 20 61 | 6e 64 20 61 67 61 69 6e |) {./* a|nd again|
|00008750| 20 2a 2f 0a 09 09 09 09 | 09 09 09 09 09 09 09 73 | */.....|.......s|
|00008760| 70 72 69 6e 74 66 28 73 | 70 2d 3e 72 65 61 64 5f |printf(s|p->read_|
|00008770| 62 75 66 66 65 72 2c 20 | 22 53 54 4f 52 20 25 73 |buffer, |"STOR %s|
|00008780| 5c 72 5c 6e 22 2c 20 6c | 65 61 66 29 3b 0a 09 09 |\r\n", l|eaf);...|
|00008790| 09 09 09 09 09 09 09 09 | 7d 20 65 6c 73 65 20 7b |........|} else {|
|000087a0| 0a 09 09 09 09 09 09 09 | 09 09 09 09 73 70 72 69 |........|....spri|
|000087b0| 6e 74 66 28 73 70 2d 3e | 72 65 61 64 5f 62 75 66 |ntf(sp->|read_buf|
|000087c0| 66 65 72 2c 20 22 52 45 | 54 52 20 25 73 5c 72 5c |fer, "RE|TR %s\r\|
|000087d0| 6e 22 2c 20 6c 65 61 66 | 29 3b 0a 09 09 09 09 09 |n", leaf|);......|
|000087e0| 09 09 09 09 09 7d 0a 09 | 09 09 09 09 09 09 09 09 |.....}..|........|
|000087f0| 09 69 66 20 28 73 70 2d | 3e 71 75 69 63 6b 20 7c |.if (sp-|>quick ||
|00008800| 7c 20 63 6f 6e 74 72 6f | 6c 5f 77 72 69 74 65 28 || contro|l_write(|
|00008810| 73 70 2c 20 73 70 2d 3e | 72 65 61 64 5f 62 75 66 |sp, sp->|read_buf|
|00008820| 66 65 72 2c 20 30 29 20 | 3d 3d 20 4e 4f 5f 45 52 |fer, 0) |== NO_ER|
|00008830| 52 4f 52 29 20 7b 0a 09 | 09 09 09 09 09 09 09 09 |ROR) {..|........|
|00008840| 09 09 2f 2a 20 74 68 69 | 73 20 6e 65 78 74 20 72 |../* thi|s next r|
|00008850| 65 73 70 6f 6e 73 65 20 | 77 69 6c 6c 20 62 65 20 |esponse |will be |
|00008860| 74 6f 20 74 68 65 20 52 | 45 54 52 2f 53 54 4f 52 |to the R|ETR/STOR|
|00008870| 20 2a 2f 0a 09 09 09 09 | 09 09 09 09 09 09 09 69 | */.....|.......i|
|00008880| 66 20 28 72 65 73 70 6f | 6e 73 65 28 73 70 2c 20 |f (respo|nse(sp, |
|00008890| 30 2c 20 26 69 6e 66 6f | 2c 20 72 65 70 6c 79 29 |0, &info|, reply)|
|000088a0| 20 3d 3d 20 4e 4f 5f 45 | 52 52 4f 52 29 20 7b 0a | == NO_E|RROR) {.|
|000088b0| 09 09 09 09 09 09 09 09 | 09 09 09 09 69 66 20 28 |........|....if (|
|000088c0| 69 6e 66 6f 29 20 7b 0a | 23 69 66 64 65 66 20 56 |info) {.|#ifdef V|
|000088d0| 45 52 49 46 59 0a 09 09 | 09 09 09 09 09 09 09 09 |ERIFY...|........|
|000088e0| 09 09 09 69 66 20 28 72 | 65 70 6c 79 5b 30 5d 20 |...if (r|eply[0] |
|000088f0| 21 3d 20 27 31 27 29 20 | 7b 0a 09 09 09 09 09 09 |!= '1') |{.......|
|00008900| 09 09 09 09 09 09 09 09 | 72 65 70 6c 79 5b 33 5d |........|reply[3]|
|00008910| 20 3d 20 30 3b 0a 09 09 | 09 09 09 09 09 09 09 09 | = 0;...|........|
|00008920| 09 09 09 09 73 68 6f 77 | 5f 73 74 72 69 6e 67 28 |....show|_string(|
|00008930| 72 65 70 6c 79 29 3b 0a | 09 09 09 09 09 09 09 09 |reply);.|........|
|00008940| 09 09 09 09 09 09 73 68 | 6f 77 5f 73 74 72 69 6e |......sh|ow_strin|
|00008950| 67 28 69 6e 66 6f 29 3b | 0a 09 09 09 09 09 09 09 |g(info);|........|
|00008960| 09 09 09 09 09 09 7d 0a | 23 65 6e 64 69 66 0a 09 |......}.|#endif..|
|00008970| 09 09 09 09 09 09 09 09 | 09 09 09 09 64 65 61 6c |........|....deal|
|00008980| 6c 6f 63 61 74 65 28 69 | 6e 66 6f 2c 20 56 5f 63 |locate(i|nfo, V_c|
|00008990| 73 74 72 29 3b 0a 09 09 | 09 09 09 09 09 09 09 09 |str);...|........|
|000089a0| 09 09 7d 0a 09 09 09 09 | 09 09 09 09 09 09 09 09 |..}.....|........|
|000089b0| 69 66 20 28 72 65 70 6c | 79 5b 30 5d 20 3d 3d 20 |if (repl|y[0] == |
|000089c0| 27 31 27 29 20 7b 0a 09 | 09 09 09 09 09 09 09 09 |'1') {..|........|
|000089d0| 09 09 09 09 65 6e 73 75 | 72 65 28 66 69 2c 20 56 |....ensu|re(fi, V|
|000089e0| 5f 66 69 6c 65 5f 69 6e | 66 6f 29 3b 0a 09 09 09 |_file_in|fo);....|
|000089f0| 09 09 09 09 09 09 09 09 | 09 09 0a 09 09 09 09 09 |........|........|
|00008a00| 09 09 09 09 09 09 09 09 | 66 69 2d 3e 72 66 61 72 |........|fi->rfar|
|00008a10| 67 20 3d 20 30 3b 0a 09 | 09 09 09 09 09 09 09 09 |g = 0;..|........|
|00008a20| 09 09 09 09 66 69 2d 3e | 72 70 6f 73 20 3d 20 30 |....fi->|rpos = 0|
|00008a30| 3b 0a 09 09 09 09 09 09 | 09 09 09 09 09 09 09 66 |;.......|.......f|
|00008a40| 69 2d 3e 76 70 6f 73 20 | 3d 20 30 3b 0a 09 09 09 |i->vpos |= 0;....|
|00008a50| 09 09 09 09 09 09 09 09 | 09 09 66 69 2d 3e 65 6e |........|..fi->en|
|00008a60| 64 20 3d 20 30 3b 0a 09 | 09 09 09 09 09 09 09 09 |d = 0;..|........|
|00008a70| 09 09 09 09 66 69 2d 3e | 63 6c 6f 73 65 64 20 3d |....fi->|closed =|
|00008a80| 20 66 61 6c 73 65 3b 0a | 09 09 09 09 09 09 09 09 | false;.|........|
|00008a90| 09 09 09 09 09 66 69 2d | 3e 73 65 65 6b 5f 65 6e |.....fi-|>seek_en|
|00008aa0| 64 20 3d 20 66 61 6c 73 | 65 3b 0a 09 09 09 09 09 |d = fals|e;......|
|00008ab0| 09 09 09 09 09 09 09 09 | 66 69 2d 3e 65 6f 66 20 |........|fi->eof |
|00008ac0| 3d 20 66 61 6c 73 65 3b | 0a 09 09 09 09 09 09 09 |= false;|........|
|00008ad0| 09 09 09 09 09 09 66 69 | 2d 3e 70 6f 72 74 20 3d |......fi|->port =|
|00008ae0| 20 6e 69 6c 3b 0a 09 09 | 09 09 09 09 09 09 09 09 | nil;...|........|
|00008af0| 09 09 09 66 69 2d 3e 74 | 79 70 65 20 3d 20 28 77 |...fi->t|ype = (w|
|00008b00| 72 69 74 69 6e 67 29 20 | 3f 20 41 43 54 49 4f 4e |riting) |? ACTION|
|00008b10| 5f 46 49 4e 44 4f 55 54 | 50 55 54 20 3a 20 41 43 |_FINDOUT|PUT : AC|
|00008b20| 54 49 4f 4e 5f 46 49 4e | 44 49 4e 50 55 54 3b 0a |TION_FIN|DINPUT;.|
|00008b30| 09 09 09 09 09 09 09 09 | 09 09 09 09 09 0a 09 09 |........|........|
|00008b40| 09 09 09 09 09 09 09 09 | 09 09 09 73 70 2d 3e 63 |........|...sp->c|
|00008b50| 66 69 6c 65 20 3d 20 6e | 65 77 74 6d 3b 0a 09 09 |file = n|ewtm;...|
|00008b60| 09 09 09 09 09 09 09 09 | 09 09 09 73 70 2d 3e 66 |........|...sp->f|
|00008b70| 69 6c 65 5f 6c 69 73 74 | 20 3d 20 66 69 3b 0a 09 |ile_list| = fi;..|
|00008b80| 09 09 09 09 09 09 09 09 | 09 09 09 09 66 69 2d 3e |........|....fi->|
|00008b90| 6e 65 78 74 20 3d 20 6e | 69 6c 3b 0a 09 09 09 09 |next = n|il;.....|
|00008ba0| 09 09 09 09 09 09 09 09 | 09 0a 09 09 09 09 09 09 |........|........|
|00008bb0| 09 09 09 09 09 09 09 72 | 65 74 75 72 6e 20 30 3b |.......r|eturn 0;|
|00008bc0| 0a 09 09 09 09 09 09 09 | 09 09 09 09 09 7d 20 65 |........|.....} e|
|00008bd0| 6c 73 65 20 7b 0a 09 09 | 09 09 09 09 09 09 09 09 |lse {...|........|
|00008be0| 09 09 09 73 77 69 74 63 | 68 20 28 6e 75 6d 65 72 |...switc|h (numer|
|00008bf0| 69 63 5f 72 65 70 6c 79 | 28 72 65 70 6c 79 29 29 |ic_reply|(reply))|
|00008c00| 20 7b 0a 09 09 09 09 09 | 09 09 09 09 09 09 09 09 | {......|........|
|00008c10| 63 61 73 65 20 34 35 30 | 3a 0a 09 09 09 09 09 09 |case 450|:.......|
|00008c20| 09 09 09 09 09 09 09 63 | 61 73 65 20 35 32 30 3a |.......c|ase 520:|
|00008c30| 0a 09 09 09 09 09 09 09 | 09 09 09 09 09 09 63 61 |........|......ca|
|00008c40| 73 65 20 35 35 30 3a 0a | 09 09 09 09 09 09 09 09 |se 550:.|........|
|00008c50| 09 09 09 09 09 09 69 66 | 20 28 77 72 69 74 69 6e |......if| (writin|
|00008c60| 67 29 20 7b 0a 09 09 09 | 09 09 09 09 09 09 09 09 |g) {....|........|
|00008c70| 09 09 09 09 65 72 72 6f | 72 20 3d 20 45 52 52 4f |....erro|r = ERRO|
|00008c80| 52 5f 49 4e 56 41 4c 49 | 44 5f 43 4f 4d 50 4f 4e |R_INVALI|D_COMPON|
|00008c90| 45 4e 54 5f 4e 41 4d 45 | 3b 0a 09 09 09 09 09 09 |ENT_NAME|;.......|
|00008ca0| 09 09 09 09 09 09 09 09 | 7d 20 65 6c 73 65 20 7b |........|} else {|
|00008cb0| 0a 09 09 09 09 09 09 09 | 09 09 09 09 09 09 09 09 |........|........|
|00008cc0| 65 72 72 6f 72 20 3d 20 | 45 52 52 4f 52 5f 4f 42 |error = |ERROR_OB|
|00008cd0| 4a 45 43 54 5f 4e 4f 54 | 5f 46 4f 55 4e 44 3b 0a |JECT_NOT|_FOUND;.|
|00008ce0| 09 09 09 09 09 09 09 09 | 09 09 09 09 09 09 7d 0a |........|......}.|
|00008cf0| 09 09 09 09 09 09 09 09 | 09 09 09 09 09 09 62 72 |........|......br|
|00008d00| 65 61 6b 3b 0a 09 09 09 | 09 09 09 09 09 09 09 09 |eak;....|........|
|00008d10| 09 09 63 61 73 65 20 35 | 32 31 3a 0a 09 09 09 09 |..case 5|21:.....|
|00008d20| 09 09 09 09 09 09 09 09 | 09 63 61 73 65 20 35 33 |........|.case 53|
|00008d30| 32 3a 0a 09 09 09 09 09 | 09 09 09 09 09 09 09 09 |2:......|........|
|00008d40| 63 61 73 65 20 35 33 33 | 3a 0a 09 09 09 09 09 09 |case 533|:.......|
|00008d50| 09 09 09 09 09 09 09 09 | 69 66 20 28 77 72 69 74 |........|if (writ|
|00008d60| 69 6e 67 29 20 7b 0a 09 | 09 09 09 09 09 09 09 09 |ing) {..|........|
|00008d70| 09 09 09 09 09 09 65 72 | 72 6f 72 20 3d 20 45 52 |......er|ror = ER|
|00008d80| 52 4f 52 5f 57 52 49 54 | 45 5f 50 52 4f 54 45 43 |ROR_WRIT|E_PROTEC|
|00008d90| 54 45 44 3b 0a 09 09 09 | 09 09 09 09 09 09 09 09 |TED;....|........|
|00008da0| 09 09 09 7d 20 65 6c 73 | 65 20 7b 0a 09 09 09 09 |...} els|e {.....|
|00008db0| 09 09 09 09 09 09 09 09 | 09 09 09 65 72 72 6f 72 |........|...error|
|00008dc0| 20 3d 20 45 52 52 4f 52 | 5f 52 45 41 44 5f 50 52 | = ERROR|_READ_PR|
|00008dd0| 4f 54 45 43 54 45 44 3b | 0a 09 09 09 09 09 09 09 |OTECTED;|........|
|00008de0| 09 09 09 09 09 09 09 7d | 0a 09 09 09 09 09 09 09 |.......}|........|
|00008df0| 09 09 09 09 09 09 09 62 | 72 65 61 6b 3b 0a 09 09 |.......b|reak;...|
|00008e00| 09 09 09 09 09 09 09 09 | 09 09 09 63 61 73 65 20 |........|...case |
|00008e10| 34 35 32 3a 0a 09 09 09 | 09 09 09 09 09 09 09 09 |452:....|........|
|00008e20| 09 09 63 61 73 65 20 35 | 35 32 3a 0a 09 09 09 09 |..case 5|52:.....|
|00008e30| 09 09 09 09 09 09 09 09 | 09 09 65 72 72 6f 72 20 |........|..error |
|00008e40| 3d 20 45 52 52 4f 52 5f | 44 49 53 4b 5f 46 55 4c |= ERROR_|DISK_FUL|
|00008e50| 4c 3b 0a 09 09 09 09 09 | 09 09 09 09 09 09 09 09 |L;......|........|
|00008e60| 09 62 72 65 61 6b 3b 0a | 09 09 09 09 09 09 09 09 |.break;.|........|
|00008e70| 09 09 09 09 09 63 61 73 | 65 20 35 35 33 3a 0a 09 |.....cas|e 553:..|
|00008e80| 09 09 09 09 09 09 09 09 | 09 09 09 09 09 69 66 20 |........|.....if |
|00008e90| 28 77 72 69 74 69 6e 67 | 29 20 7b 0a 09 09 09 09 |(writing|) {.....|
|00008ea0| 09 09 09 09 09 09 09 09 | 09 09 09 65 72 72 6f 72 |........|...error|
|00008eb0| 20 3d 20 45 52 52 4f 52 | 5f 57 52 49 54 45 5f 50 | = ERROR|_WRITE_P|
|00008ec0| 52 4f 54 45 43 54 45 44 | 3b 0a 09 09 09 09 09 09 |ROTECTED|;.......|
|00008ed0| 09 09 09 09 09 09 09 09 | 7d 20 65 6c 73 65 20 7b |........|} else {|
|00008ee0| 0a 09 09 09 09 09 09 09 | 09 09 09 09 09 09 09 09 |........|........|
|00008ef0| 65 72 72 6f 72 20 3d 20 | 45 52 52 4f 52 5f 49 4e |error = |ERROR_IN|
|00008f00| 56 41 4c 49 44 5f 43 4f | 4d 50 4f 4e 45 4e 54 5f |VALID_CO|MPONENT_|
|00008f10| 4e 41 4d 45 3b 0a 09 09 | 09 09 09 09 09 09 09 09 |NAME;...|........|
|00008f20| 09 09 09 09 7d 0a 09 09 | 09 09 09 09 09 09 09 09 |....}...|........|
|00008f30| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 09 09 09 |....brea|k;......|
|00008f40| 09 09 09 09 09 09 09 09 | 64 65 66 61 75 6c 74 3a |........|default:|
|00008f50| 0a 09 09 09 09 09 09 09 | 09 09 09 09 09 09 09 65 |........|.......e|
|00008f60| 72 72 6f 72 20 3d 20 45 | 52 52 4f 52 5f 4f 42 4a |rror = E|RROR_OBJ|
|00008f70| 45 43 54 5f 4e 4f 54 5f | 46 4f 55 4e 44 3b 0a 09 |ECT_NOT_|FOUND;..|
|00008f80| 09 09 09 09 09 09 09 09 | 09 09 09 09 09 62 72 65 |........|.....bre|
|00008f90| 61 6b 3b 0a 09 09 09 09 | 09 09 09 09 09 09 09 09 |ak;.....|........|
|00008fa0| 09 7d 0a 09 09 09 09 09 | 09 09 09 09 09 09 09 7d |.}......|.......}|
|00008fb0| 0a 09 09 09 09 09 09 09 | 09 09 09 09 0a 09 09 09 |........|........|
|00008fc0| 09 09 09 09 09 09 09 09 | 09 2f 2a 20 6e 6f 20 6e |........|./* no n|
|00008fd0| 65 65 64 20 74 6f 20 64 | 69 73 63 6f 6e 6e 65 63 |eed to d|isconnec|
|00008fe0| 74 20 73 70 20 2a 2f 0a | 09 09 09 09 09 09 09 09 |t sp */.|........|
|00008ff0| 09 09 09 09 0a 09 09 09 | 09 09 09 09 09 09 09 09 |........|........|
|00009000| 09 64 65 61 6c 6c 6f 63 | 61 74 65 28 66 69 2c 20 |.dealloc|ate(fi, |
|00009010| 56 5f 66 69 6c 65 5f 69 | 6e 66 6f 29 3b 0a 09 09 |V_file_i|nfo);...|
|00009020| 09 09 09 09 09 09 09 09 | 09 09 0a 09 09 09 09 09 |........|........|
|00009030| 09 09 09 09 09 09 09 62 | 72 65 61 6b 5f 63 6f 6e |.......b|reak_con|
|00009040| 6e 65 63 74 69 6f 6e 28 | 73 70 2c 20 6e 65 77 74 |nection(|sp, newt|
|00009050| 6d 29 3b 0a 09 09 09 09 | 09 09 09 09 09 09 09 09 |m);.....|........|
|00009060| 0a 09 09 09 09 09 09 09 | 09 09 09 09 09 6e 65 77 |........|.....new|
|00009070| 74 6d 2d 3e 63 6f 6d 6d | 61 6e 64 20 3d 20 54 43 |tm->comm|and = TC|
|00009080| 50 5f 44 49 53 50 4f 53 | 45 3b 0a 09 09 09 09 09 |P_DISPOS|E;......|
|00009090| 09 09 09 09 09 09 09 50 | 75 74 4d 73 67 28 74 63 |.......P|utMsg(tc|
|000090a0| 70 2c 20 26 6e 65 77 74 | 6d 2d 3e 68 65 61 64 65 |p, &newt|m->heade|
|000090b0| 72 29 3b 0a 09 09 09 09 | 09 09 09 09 09 09 09 09 |r);.....|........|
|000090c0| 0a 09 09 09 09 09 09 09 | 09 09 09 09 09 72 65 74 |........|.....ret|
|000090d0| 75 72 6e 20 65 72 72 6f | 72 3b 0a 09 09 09 09 09 |urn erro|r;......|
|000090e0| 09 09 09 09 09 09 7d 20 | 65 6c 73 65 20 7b 0a 09 |......} |else {..|
|000090f0| 09 09 09 09 09 09 09 09 | 09 09 09 73 68 6f 77 5f |........|...show_|
|00009100| 73 74 72 69 6e 67 28 22 | 45 72 72 6f 72 20 72 65 |string("|Error re|
|00009110| 61 64 69 6e 67 20 72 65 | 73 70 6f 6e 73 65 20 74 |ading re|sponse t|
|00009120| 6f 20 52 45 54 52 2f 53 | 54 4f 52 22 29 3b 0a 09 |o RETR/S|TOR");..|
|00009130| 09 09 09 09 09 09 09 09 | 09 09 09 65 72 72 6f 72 |........|...error|
|00009140| 20 3d 20 45 52 52 4f 52 | 5f 4f 42 4a 45 43 54 5f | = ERROR|_OBJECT_|
|00009150| 4e 4f 54 5f 46 4f 55 4e | 44 3b 0a 09 09 09 09 09 |NOT_FOUN|D;......|
|00009160| 09 09 09 09 09 09 7d 0a | 09 09 09 09 09 09 09 09 |......}.|........|
|00009170| 09 09 09 62 72 65 61 6b | 5f 63 6f 6e 6e 65 63 74 |...break|_connect|
|00009180| 69 6f 6e 28 73 70 2c 20 | 6e 65 77 74 6d 29 3b 0a |ion(sp, |newtm);.|
|00009190| 09 09 09 09 09 09 09 09 | 09 09 7d 20 65 6c 73 65 |........|..} else|
|000091a0| 20 7b 0a 09 09 09 09 09 | 09 09 09 09 09 09 73 68 | {......|......sh|
|000091b0| 6f 77 5f 73 74 72 69 6e | 67 28 22 65 72 72 6f 72 |ow_strin|g("error|
|000091c0| 20 77 72 69 74 69 6e 67 | 20 52 45 54 52 2f 53 54 | writing| RETR/ST|
|000091d0| 4f 52 22 29 3b 0a 09 09 | 09 09 09 09 09 09 09 09 |OR");...|........|
|000091e0| 09 65 72 72 6f 72 20 3d | 20 45 52 52 4f 52 5f 4f |.error =| ERROR_O|
|000091f0| 42 4a 45 43 54 5f 4e 4f | 54 5f 46 4f 55 4e 44 3b |BJECT_NO|T_FOUND;|
|00009200| 0a 09 09 09 09 09 09 09 | 09 09 09 7d 0a 09 09 09 |........|...}....|
|00009210| 09 09 09 09 09 09 7d 20 | 65 6c 73 65 20 7b 0a 09 |......} |else {..|
|00009220| 09 09 09 09 09 09 09 09 | 09 73 68 6f 77 5f 73 74 |........|.show_st|
|00009230| 72 69 6e 67 28 22 45 72 | 72 6f 72 20 6d 61 6b 69 |ring("Er|ror maki|
|00009240| 6e 67 20 63 6f 6e 6e 65 | 63 74 69 6f 6e 22 29 3b |ng conne|ction");|
|00009250| 0a 09 09 09 09 09 09 09 | 09 09 09 65 72 72 6f 72 |........|...error|
|00009260| 20 3d 20 45 52 52 4f 52 | 5f 4f 42 4a 45 43 54 5f | = ERROR|_OBJECT_|
|00009270| 4e 4f 54 5f 46 4f 55 4e | 44 3b 0a 09 09 09 09 09 |NOT_FOUN|D;......|
|00009280| 09 09 09 09 7d 0a 09 09 | 09 09 09 09 09 09 7d 20 |....}...|......} |
|00009290| 65 6c 73 65 20 7b 0a 09 | 09 09 09 09 09 09 09 09 |else {..|........|
|000092a0| 73 68 6f 77 5f 73 74 72 | 69 6e 67 28 22 42 61 64 |show_str|ing("Bad|
|000092b0| 20 50 41 53 56 20 72 65 | 73 70 6f 6e 73 65 22 29 | PASV re|sponse")|
|000092c0| 3b 0a 09 09 09 09 09 09 | 09 09 09 64 65 61 6c 6c |;.......|...deall|
|000092d0| 6f 63 61 74 65 28 69 6e | 66 6f 2c 20 56 5f 63 73 |ocate(in|fo, V_cs|
|000092e0| 74 72 29 3b 0a 09 09 09 | 09 09 09 09 09 09 65 72 |tr);....|......er|
|000092f0| 72 6f 72 20 3d 20 45 52 | 52 4f 52 5f 4f 42 4a 45 |ror = ER|ROR_OBJE|
|00009300| 43 54 5f 4e 4f 54 5f 46 | 4f 55 4e 44 3b 0a 09 09 |CT_NOT_F|OUND;...|
|00009310| 09 09 09 09 09 09 7d 0a | 09 09 09 09 09 09 09 7d |......}.|.......}|
|00009320| 20 65 6c 73 65 20 7b 0a | 09 09 09 09 09 09 09 09 | else {.|........|
|00009330| 73 68 6f 77 5f 73 74 72 | 69 6e 67 28 22 6e 6f 20 |show_str|ing("no |
|00009340| 69 6e 66 6f 22 29 3b 0a | 09 09 09 09 09 09 09 09 |info");.|........|
|00009350| 65 72 72 6f 72 20 3d 20 | 45 52 52 4f 52 5f 4e 4f |error = |ERROR_NO|
|00009360| 5f 46 52 45 45 5f 53 54 | 4f 52 45 3b 0a 09 09 09 |_FREE_ST|ORE;....|
|00009370| 09 09 09 09 7d 0a 09 09 | 09 09 09 09 7d 20 65 6c |....}...|....} el|
|00009380| 73 65 20 7b 0a 09 09 09 | 09 09 09 09 73 68 6f 77 |se {....|....show|
|00009390| 5f 73 74 72 69 6e 67 28 | 22 6e 6f 6e 2d 27 32 27 |_string(|"non-'2'|
|000093a0| 20 72 65 73 70 6f 6e 73 | 65 20 74 6f 20 50 41 53 | respons|e to PAS|
|000093b0| 56 22 29 3b 0a 09 09 09 | 09 09 09 09 65 72 72 6f |V");....|....erro|
|000093c0| 72 20 3d 20 45 52 52 4f | 52 5f 4f 42 4a 45 43 54 |r = ERRO|R_OBJECT|
|000093d0| 5f 4e 4f 54 5f 46 4f 55 | 4e 44 3b 0a 09 09 09 09 |_NOT_FOU|ND;.....|
|000093e0| 09 09 7d 0a 09 09 09 09 | 09 7d 20 65 6c 73 65 20 |..}.....|.} else |
|000093f0| 7b 0a 09 09 09 09 09 09 | 73 68 6f 77 5f 73 74 72 |{.......|show_str|
|00009400| 69 6e 67 28 22 65 72 72 | 6f 72 20 72 65 61 64 69 |ing("err|or readi|
|00009410| 6e 67 20 72 65 73 70 6f | 6e 73 65 20 74 6f 20 50 |ng respo|nse to P|
|00009420| 41 53 56 22 29 3b 0a 09 | 09 09 09 09 09 65 72 72 |ASV");..|.....err|
|00009430| 6f 72 20 3d 20 45 52 52 | 4f 52 5f 4f 42 4a 45 43 |or = ERR|OR_OBJEC|
|00009440| 54 5f 4e 4f 54 5f 46 4f | 55 4e 44 3b 0a 09 09 09 |T_NOT_FO|UND;....|
|00009450| 09 09 7d 0a 09 09 09 09 | 7d 20 65 6c 73 65 20 7b |..}.....|} else {|
|00009460| 0a 09 09 09 09 09 73 68 | 6f 77 5f 73 74 72 69 6e |......sh|ow_strin|
|00009470| 67 28 22 65 72 72 6f 72 | 20 77 72 69 74 69 6e 67 |g("error| writing|
|00009480| 20 52 45 54 52 2f 53 54 | 4f 52 22 29 3b 0a 09 09 | RETR/ST|OR");...|
|00009490| 09 09 09 65 72 72 6f 72 | 20 3d 20 45 52 52 4f 52 |...error| = ERROR|
|000094a0| 5f 4f 42 4a 45 43 54 5f | 4e 4f 54 5f 46 4f 55 4e |_OBJECT_|NOT_FOUN|
|000094b0| 44 3b 0a 09 09 09 09 7d | 0a 09 09 09 7d 20 65 6c |D;.....}|....} el|
|000094c0| 73 65 20 7b 0a 09 09 09 | 09 73 68 6f 77 5f 73 74 |se {....|.show_st|
|000094d0| 72 69 6e 67 28 22 65 72 | 72 6f 72 20 77 72 69 74 |ring("er|ror writ|
|000094e0| 69 6e 67 20 50 41 53 56 | 22 29 3b 0a 09 09 09 09 |ing PASV|");.....|
|000094f0| 65 72 72 6f 72 20 3d 20 | 45 52 52 4f 52 5f 4f 42 |error = |ERROR_OB|
|00009500| 4a 45 43 54 5f 4e 4f 54 | 5f 46 4f 55 4e 44 3b 0a |JECT_NOT|_FOUND;.|
|00009510| 09 09 09 7d 0a 09 09 09 | 0a 09 09 09 64 65 61 6c |...}....|....deal|
|00009520| 6c 6f 63 61 74 65 28 66 | 69 2c 20 56 5f 66 69 6c |locate(f|i, V_fil|
|00009530| 65 5f 69 6e 66 6f 29 3b | 0a 09 09 7d 20 65 6c 73 |e_info);|...} els|
|00009540| 65 20 65 72 72 6f 72 20 | 3d 20 45 52 52 4f 52 5f |e error |= ERROR_|
|00009550| 4e 4f 5f 46 52 45 45 5f | 53 54 4f 52 45 3b 0a 09 |NO_FREE_|STORE;..|
|00009560| 09 0a 09 09 6e 65 77 74 | 6d 2d 3e 63 6f 6d 6d 61 |....newt|m->comma|
|00009570| 6e 64 20 3d 20 54 43 50 | 5f 44 49 53 50 4f 53 45 |nd = TCP|_DISPOSE|
|00009580| 3b 0a 09 09 50 75 74 4d | 73 67 28 74 63 70 2c 20 |;...PutM|sg(tcp, |
|00009590| 26 6e 65 77 74 6d 2d 3e | 68 65 61 64 65 72 29 3b |&newtm->|header);|
|000095a0| 0a 0a 09 09 64 69 73 63 | 6f 6e 6e 65 63 74 28 73 |....disc|onnect(s|
|000095b0| 70 29 3b 0a 09 7d 20 65 | 6c 73 65 20 65 72 72 6f |p);..} e|lse erro|
|000095c0| 72 20 3d 20 45 52 52 4f | 52 5f 4e 4f 5f 46 52 45 |r = ERRO|R_NO_FRE|
|000095d0| 45 5f 53 54 4f 52 45 3b | 0a 09 0a 09 72 65 74 75 |E_STORE;|....retu|
|000095e0| 72 6e 20 65 72 72 6f 72 | 3b 0a 7d 0a 0a 2f 2a 20 |rn error|;.}../* |
|000095f0| 74 68 69 73 20 69 73 20 | 68 6f 77 20 6c 61 72 67 |this is |how larg|
|00009600| 65 20 6f 75 72 20 66 6c | 75 73 68 69 6e 67 20 62 |e our fl|ushing b|
|00009610| 75 66 66 65 72 20 69 73 | 20 77 68 65 6e 20 61 74 |uffer is| when at|
|00009620| 74 65 6d 70 74 69 6e 67 | 20 61 6e 20 61 62 6f 72 |tempting| an abor|
|00009630| 74 20 2a 2f 0a 23 64 65 | 66 69 6e 65 20 46 4c 55 |t */.#de|fine FLU|
|00009640| 53 48 5f 53 49 5a 45 20 | 31 30 30 0a 0a 76 6f 69 |SH_SIZE |100..voi|
|00009650| 64 20 63 6c 6f 73 65 5f | 66 69 6c 65 28 73 69 74 |d close_|file(sit|
|00009660| 65 20 2a 73 70 2c 20 62 | 6f 6f 6c 65 61 6e 20 6e |e *sp, b|oolean n|
|00009670| 6f 72 6d 61 6c 5f 63 6c | 6f 73 65 29 0a 2f 2a 0a |ormal_cl|ose)./*.|
|00009680| 20 2a 20 63 6c 6f 73 65 | 20 63 75 72 72 65 6e 74 | * close| current|
|00009690| 6c 79 20 6f 70 65 6e 20 | 66 69 6c 65 20 66 6f 72 |ly open |file for|
|000096a0| 20 73 69 74 65 0a 20 2a | 20 49 6e 70 75 74 73 3a | site. *| Inputs:|
|000096b0| 0a 20 2a 09 73 70 09 3a | 20 73 69 74 65 20 70 6f |. *.sp.:| site po|
|000096c0| 69 6e 74 65 72 0a 20 2a | 09 6e 6f 72 6d 61 6c 5f |inter. *|.normal_|
|000096d0| 63 6c 6f 73 65 20 3a 20 | 74 72 75 65 20 69 66 20 |close : |true if |
|000096e0| 63 6c 6f 73 65 64 20 6e | 6f 72 6d 61 6c 6c 79 2c |closed n|ormally,|
|000096f0| 20 66 61 6c 73 65 20 69 | 66 20 63 6c 6f 73 65 64 | false i|f closed|
|00009700| 20 62 79 20 61 73 79 6e | 63 20 61 62 6f 72 74 0a | by asyn|c abort.|
|00009710| 20 2a 2f 0a 7b 0a 09 74 | 63 70 6d 65 73 73 61 67 | */.{..t|cpmessag|
|00009720| 65 20 2a 74 6d 2c 20 2a | 66 69 6c 65 74 6d 2c 20 |e *tm, *|filetm, |
|00009730| 2a 72 65 74 3b 0a 09 66 | 69 6c 65 5f 69 6e 66 6f |*ret;..f|ile_info|
|00009740| 20 2a 66 69 3b 0a 09 73 | 74 72 75 63 74 20 4d 73 | *fi;..s|truct Ms|
|00009750| 67 50 6f 72 74 20 2a 73 | 79 6e 63 3b 0a 09 62 38 |gPort *s|ync;..b8|
|00009760| 20 2a 69 6e 66 6f 2c 20 | 72 65 70 6c 79 5b 34 5d | *info, |reply[4]|
|00009770| 2c 20 66 6c 75 73 68 5b | 46 4c 55 53 48 5f 53 49 |, flush[|FLUSH_SI|
|00009780| 5a 45 5d 3b 0a 09 62 33 | 32 20 73 69 67 6e 61 6c |ZE];..b3|2 signal|
|00009790| 73 2c 20 61 73 69 67 73 | 2c 20 72 73 69 67 73 3b |s, asigs|, rsigs;|
|000097a0| 0a 09 0a 09 76 65 72 69 | 66 79 28 73 70 2c 20 56 |....veri|fy(sp, V|
|000097b0| 5f 73 69 74 65 29 3b 0a | 09 0a 09 74 6d 20 3d 20 |_site);.|...tm = |
|000097c0| 73 70 2d 3e 63 6f 6e 74 | 72 6f 6c 3b 0a 09 66 69 |sp->cont|rol;..fi|
|000097d0| 6c 65 74 6d 20 3d 20 73 | 70 2d 3e 63 66 69 6c 65 |letm = s|p->cfile|
|000097e0| 3b 0a 09 66 69 20 3d 20 | 73 70 2d 3e 66 69 6c 65 |;..fi = |sp->file|
|000097f0| 5f 6c 69 73 74 3b 0a 09 | 0a 09 76 65 72 69 66 79 |_list;..|..verify|
|00009800| 28 74 6d 2c 20 56 5f 74 | 63 70 6d 65 73 73 61 67 |(tm, V_t|cpmessag|
|00009810| 65 29 3b 0a 09 76 65 72 | 69 66 79 28 66 69 6c 65 |e);..ver|ify(file|
|00009820| 74 6d 2c 20 56 5f 74 63 | 70 6d 65 73 73 61 67 65 |tm, V_tc|pmessage|
|00009830| 29 3b 0a 09 76 65 72 69 | 66 79 28 66 69 2c 20 56 |);..veri|fy(fi, V|
|00009840| 5f 66 69 6c 65 5f 69 6e | 66 6f 29 3b 0a 09 0a 09 |_file_in|fo);....|
|00009850| 69 66 20 28 6e 6f 72 6d | 61 6c 5f 63 6c 6f 73 65 |if (norm|al_close|
|00009860| 29 20 7b 0a 09 09 73 70 | 2d 3e 63 66 69 6c 65 20 |) {...sp|->cfile |
|00009870| 3d 20 6e 69 6c 3b 0a 09 | 09 73 70 2d 3e 63 66 69 |= nil;..|.sp->cfi|
|00009880| 6c 65 5f 74 79 70 65 20 | 3d 20 30 3b 0a 09 09 73 |le_type |= 0;...s|
|00009890| 70 2d 3e 66 69 6c 65 5f | 6c 69 73 74 20 3d 20 30 |p->file_|list = 0|
|000098a0| 3b 0a 09 7d 0a 0a 09 73 | 74 61 74 65 5f 63 68 61 |;..}...s|tate_cha|
|000098b0| 6e 67 65 28 73 70 2c 20 | 53 53 5f 43 4c 4f 53 49 |nge(sp, |SS_CLOSI|
|000098c0| 4e 47 29 3b 0a 0a 09 73 | 79 6e 63 20 3d 20 73 70 |NG);...s|ync = sp|
|000098d0| 2d 3e 73 79 6e 63 3b 0a | 09 0a 09 73 69 67 6e 61 |->sync;.|...signa|
|000098e0| 6c 73 20 3d 20 28 31 20 | 3c 3c 20 73 79 6e 63 2d |ls = (1 |<< sync-|
|000098f0| 3e 6d 70 5f 53 69 67 42 | 69 74 29 20 7c 20 73 70 |>mp_SigB|it) | sp|
|00009900| 2d 3e 64 69 73 63 6f 6e | 6e 65 63 74 5f 73 69 67 |->discon|nect_sig|
|00009910| 6e 61 6c 73 20 7c 20 73 | 70 2d 3e 61 62 6f 72 74 |nals | s|p->abort|
|00009920| 5f 73 69 67 6e 61 6c 73 | 3b 0a 09 61 73 69 67 73 |_signals|;..asigs|
|00009930| 20 3d 20 73 70 2d 3e 64 | 69 73 63 6f 6e 6e 65 63 | = sp->d|isconnec|
|00009940| 74 5f 73 69 67 6e 61 6c | 73 20 7c 20 73 70 2d 3e |t_signal|s | sp->|
|00009950| 61 62 6f 72 74 5f 73 69 | 67 6e 61 6c 73 3b 0a 0a |abort_si|gnals;..|
|00009960| 23 69 66 64 65 66 20 56 | 45 52 49 46 59 0a 09 69 |#ifdef V|ERIFY..i|
|00009970| 66 20 28 66 69 2d 3e 65 | 6f 66 20 26 26 20 66 69 |f (fi->e|of && fi|
|00009980| 2d 3e 72 70 6f 73 20 3c | 20 66 69 2d 3e 65 6e 64 |->rpos <| fi->end|
|00009990| 29 20 7b 0a 09 09 73 68 | 6f 77 5f 73 74 72 69 6e |) {...sh|ow_strin|
|000099a0| 67 28 22 43 6c 6f 73 69 | 6e 67 20 3a 20 45 4f 46 |g("Closi|ng : EOF|
|000099b0| 20 62 65 66 6f 72 65 20 | 66 69 2d 3e 65 6e 64 22 | before |fi->end"|
|000099c0| 29 3b 0a 09 09 73 68 6f | 77 5f 69 6e 74 28 66 69 |);...sho|w_int(fi|
|000099d0| 2d 3e 72 70 6f 73 29 3b | 0a 09 09 73 68 6f 77 5f |->rpos);|...show_|
|000099e0| 69 6e 74 28 66 69 2d 3e | 65 6e 64 29 3b 0a 09 7d |int(fi->|end);..}|
|000099f0| 0a 23 65 6e 64 69 66 0a | 0a 09 69 66 20 28 66 69 |.#endif.|..if (fi|
|00009a00| 2d 3e 74 79 70 65 20 3d | 3d 20 41 43 54 49 4f 4e |->type =|= ACTION|
|00009a10| 5f 46 49 4e 44 49 4e 50 | 55 54 20 26 26 20 66 69 |_FINDINP|UT && fi|
|00009a20| 2d 3e 72 70 6f 73 20 3c | 20 66 69 2d 3e 65 6e 64 |->rpos <| fi->end|
|00009a30| 20 26 26 20 21 66 69 2d | 3e 65 6f 66 29 20 7b 0a | && !fi-|>eof) {.|
|00009a40| 09 09 69 66 20 28 6e 6f | 72 6d 61 6c 5f 63 6c 6f |..if (no|rmal_clo|
|00009a50| 73 65 29 20 7b 0a 09 09 | 09 64 65 61 6c 6c 6f 63 |se) {...|.dealloc|
|00009a60| 61 74 65 28 66 69 2c 20 | 56 5f 66 69 6c 65 5f 69 |ate(fi, |V_file_i|
|00009a70| 6e 66 6f 29 3b 0a 09 09 | 7d 20 65 6c 73 65 20 7b |nfo);...|} else {|
|00009a80| 0a 09 09 09 66 69 2d 3e | 65 6f 66 20 3d 20 74 72 |....fi->|eof = tr|
|00009a90| 75 65 3b 0a 09 09 7d 0a | 09 09 0a 09 09 2f 2a 20 |ue;...}.|...../* |
|00009aa0| 68 61 76 65 20 74 6f 20 | 41 42 4f 52 20 3a 28 20 |have to |ABOR :( |
|00009ab0| 2a 2f 0a 09 09 73 68 6f | 77 5f 73 74 72 69 6e 67 |*/...sho|w_string|
|00009ac0| 28 22 41 74 74 65 6d 70 | 74 69 6e 67 20 41 42 4f |("Attemp|ting ABO|
|00009ad0| 52 22 29 3b 0a 09 09 0a | 09 09 69 66 20 28 63 6f |R");....|..if (co|
|00009ae0| 6e 74 72 6f 6c 5f 77 72 | 69 74 65 28 73 70 2c 20 |ntrol_wr|ite(sp, |
|00009af0| 22 41 42 4f 52 5c 72 5c | 6e 22 2c 20 30 29 20 21 |"ABOR\r\|n", 0) !|
|00009b00| 3d 20 4e 4f 5f 45 52 52 | 4f 52 29 20 7b 0a 09 09 |= NO_ERR|OR) {...|
|00009b10| 09 73 68 6f 77 5f 73 74 | 72 69 6e 67 28 22 63 6c |.show_st|ring("cl|
|00009b20| 6f 73 65 20 66 69 6c 65 | 20 66 61 69 6c 65 64 20 |ose file| failed |
|00009b30| 58 31 22 29 3b 0a 0a 09 | 09 09 62 72 65 61 6b 5f |X1");...|..break_|
|00009b40| 63 6f 6e 6e 65 63 74 69 | 6f 6e 28 73 70 2c 20 66 |connecti|on(sp, f|
|00009b50| 69 6c 65 74 6d 29 3b 0a | 0a 09 09 09 64 69 73 63 |iletm);.|....disc|
|00009b60| 6f 6e 6e 65 63 74 28 73 | 70 29 3b 0a 09 0a 09 09 |onnect(s|p);.....|
|00009b70| 09 66 69 6c 65 74 6d 2d | 3e 63 6f 6d 6d 61 6e 64 |.filetm-|>command|
|00009b80| 20 3d 20 54 43 50 5f 44 | 49 53 50 4f 53 45 3b 0a | = TCP_D|ISPOSE;.|
|00009b90| 09 09 09 50 75 74 4d 73 | 67 28 74 63 70 2c 20 26 |...PutMs|g(tcp, &|
|00009ba0| 66 69 6c 65 74 6d 2d 3e | 68 65 61 64 65 72 29 3b |filetm->|header);|
|00009bb0| 0a 09 09 09 0a 09 09 09 | 72 65 74 75 72 6e 3b 0a |........|return;.|
|00009bc0| 09 09 7d 0a 09 09 0a 09 | 09 2f 2a 20 63 61 6e 27 |..}.....|./* can'|
|00009bd0| 74 20 75 73 65 20 72 65 | 73 70 6f 6e 73 65 20 62 |t use re|sponse b|
|00009be0| 65 63 61 75 73 65 20 77 | 65 20 6e 65 65 64 20 74 |ecause w|e need t|
|00009bf0| 6f 20 66 6c 75 73 68 20 | 66 69 6c 65 74 6d 20 61 |o flush |filetm a|
|00009c00| 74 20 74 68 65 20 73 61 | 6d 65 20 74 69 6d 65 20 |t the sa|me time |
|00009c10| 2a 2f 0a 09 09 0a 09 09 | 66 69 6c 65 74 6d 2d 3e |*/......|filetm->|
|00009c20| 63 6f 6d 6d 61 6e 64 20 | 3d 20 54 43 50 5f 52 45 |command |= TCP_RE|
|00009c30| 41 44 3b 0a 09 09 66 69 | 6c 65 74 6d 2d 3e 66 6c |AD;...fi|letm->fl|
|00009c40| 61 67 73 20 3d 20 30 3b | 0a 09 09 66 69 6c 65 74 |ags = 0;|...filet|
|00009c50| 6d 2d 3e 64 61 74 61 20 | 3d 20 66 6c 75 73 68 3b |m->data |= flush;|
|00009c60| 0a 09 09 66 69 6c 65 74 | 6d 2d 3e 6c 65 6e 67 74 |...filet|m->lengt|
|00009c70| 68 20 3d 20 46 4c 55 53 | 48 5f 53 49 5a 45 3b 0a |h = FLUS|H_SIZE;.|
|00009c80| 09 09 66 69 6c 65 74 6d | 2d 3e 68 65 61 64 65 72 |..filetm|->header|
|00009c90| 2e 6d 6e 5f 52 65 70 6c | 79 50 6f 72 74 20 3d 20 |.mn_Repl|yPort = |
|00009ca0| 73 79 6e 63 3b 0a 09 09 | 0a 09 09 74 6d 2d 3e 63 |sync;...|...tm->c|
|00009cb0| 6f 6d 6d 61 6e 64 20 3d | 20 54 43 50 5f 52 45 41 |ommand =| TCP_REA|
|00009cc0| 44 3b 0a 09 09 74 6d 2d | 3e 66 6c 61 67 73 20 3d |D;...tm-|>flags =|
|00009cd0| 20 46 4c 41 47 5f 52 45 | 41 44 4c 49 4e 45 3b 0a | FLAG_RE|ADLINE;.|
|00009ce0| 09 09 74 6d 2d 3e 64 61 | 74 61 20 3d 20 73 70 2d |..tm->da|ta = sp-|
|00009cf0| 3e 72 65 61 64 5f 62 75 | 66 66 65 72 3b 0a 09 09 |>read_bu|ffer;...|
|00009d00| 74 6d 2d 3e 6c 65 6e 67 | 74 68 20 3d 20 52 45 41 |tm->leng|th = REA|
|00009d10| 44 5f 42 55 46 46 45 52 | 5f 4c 45 4e 47 54 48 3b |D_BUFFER|_LENGTH;|
|00009d20| 0a 09 09 74 6d 2d 3e 68 | 65 61 64 65 72 2e 6d 6e |...tm->h|eader.mn|
|00009d30| 5f 52 65 70 6c 79 50 6f | 72 74 20 3d 20 73 79 6e |_ReplyPo|rt = syn|
|00009d40| 63 3b 0a 09 09 0a 09 09 | 50 75 74 4d 73 67 28 74 |c;......|PutMsg(t|
|00009d50| 63 70 2c 20 26 74 6d 2d | 3e 68 65 61 64 65 72 29 |cp, &tm-|>header)|
|00009d60| 3b 0a 09 09 50 75 74 4d | 73 67 28 74 63 70 2c 20 |;...PutM|sg(tcp, |
|00009d70| 26 66 69 6c 65 74 6d 2d | 3e 68 65 61 64 65 72 29 |&filetm-|>header)|
|00009d80| 3b 0a 09 09 0a 09 09 77 | 68 69 6c 65 20 28 31 29 |;......w|hile (1)|
|00009d90| 20 7b 0a 09 09 09 72 73 | 69 67 73 20 3d 20 57 61 | {....rs|igs = Wa|
|00009da0| 69 74 28 73 69 67 6e 61 | 6c 73 29 3b 0a 09 09 09 |it(signa|ls);....|
|00009db0| 69 66 20 28 72 73 69 67 | 73 20 26 20 61 73 69 67 |if (rsig|s & asig|
|00009dc0| 73 29 20 7b 0a 09 09 09 | 09 73 74 61 74 65 5f 63 |s) {....|.state_c|
|00009dd0| 68 61 6e 67 65 28 73 70 | 2c 20 53 53 5f 41 42 4f |hange(sp|, SS_ABO|
|00009de0| 52 54 49 4e 47 29 3b 0a | 09 09 09 09 0a 09 09 09 |RTING);.|........|
|00009df0| 09 69 6e 74 65 72 72 75 | 70 74 5f 6d 65 73 73 61 |.interru|pt_messa|
|00009e00| 67 65 28 73 70 2c 20 74 | 6d 29 3b 0a 09 09 09 09 |ge(sp, t|m);.....|
|00009e10| 69 6e 74 65 72 72 75 70 | 74 5f 6d 65 73 73 61 67 |interrup|t_messag|
|00009e20| 65 28 73 70 2c 20 66 69 | 6c 65 74 6d 29 3b 0a 09 |e(sp, fi|letm);..|
|00009e30| 09 09 09 0a 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |........|break;..|
|00009e40| 09 09 7d 0a 09 09 09 0a | 09 09 09 72 65 74 20 3d |..}.....|...ret =|
|00009e50| 20 28 74 63 70 6d 65 73 | 73 61 67 65 20 2a 29 47 | (tcpmes|sage *)G|
|00009e60| 65 74 4d 73 67 28 73 79 | 6e 63 29 3b 0a 09 09 09 |etMsg(sy|nc);....|
|00009e70| 69 66 20 28 72 65 74 20 | 3d 3d 20 74 6d 29 20 7b |if (ret |== tm) {|
|00009e80| 0a 09 09 09 09 2f 2a 20 | 77 61 69 74 20 66 6f 72 |...../* |wait for|
|00009e90| 20 66 69 6c 65 74 6d 20 | 2a 2f 0a 09 09 09 09 57 | filetm |*/.....W|
|00009ea0| 61 69 74 50 6f 72 74 28 | 73 79 6e 63 29 3b 20 47 |aitPort(|sync); G|
|00009eb0| 65 74 4d 73 67 28 73 79 | 6e 63 29 3b 0a 09 09 09 |etMsg(sy|nc);....|
|00009ec0| 09 62 72 65 61 6b 3b 0a | 09 09 09 7d 0a 09 09 09 |.break;.|...}....|
|00009ed0| 69 66 20 28 72 65 74 2d | 3e 65 72 72 6f 72 20 21 |if (ret-|>error !|
|00009ee0| 3d 20 4e 4f 5f 45 52 52 | 4f 52 29 20 7b 09 2f 2a |= NO_ERR|OR) {./*|
|00009ef0| 20 66 69 6c 65 74 6d 20 | 69 73 20 64 6f 6e 65 20 | filetm |is done |
|00009f00| 2a 2f 0a 09 09 09 09 2f | 2a 20 77 61 69 74 20 66 |*/...../|* wait f|
|00009f10| 6f 72 20 74 6d 20 2a 2f | 0a 09 09 09 09 57 61 69 |or tm */|.....Wai|
|00009f20| 74 50 6f 72 74 28 73 79 | 6e 63 29 3b 20 47 65 74 |tPort(sy|nc); Get|
|00009f30| 4d 73 67 28 73 79 6e 63 | 29 3b 0a 09 09 09 09 62 |Msg(sync|);.....b|
|00009f40| 72 65 61 6b 3b 0a 09 09 | 09 7d 0a 09 09 09 50 75 |reak;...|.}....Pu|
|00009f50| 74 4d 73 67 28 74 63 70 | 2c 20 26 66 69 6c 65 74 |tMsg(tcp|, &filet|
|00009f60| 6d 2d 3e 68 65 61 64 65 | 72 29 3b 0a 09 09 7d 0a |m->heade|r);...}.|
|00009f70| 09 09 0a 09 09 62 72 65 | 61 6b 5f 63 6f 6e 6e 65 |.....bre|ak_conne|
|00009f80| 63 74 69 6f 6e 28 73 70 | 2c 20 66 69 6c 65 74 6d |ction(sp|, filetm|
|00009f90| 29 3b 0a 09 0a 09 09 69 | 66 20 28 6e 6f 72 6d 61 |);.....i|f (norma|
|00009fa0| 6c 5f 63 6c 6f 73 65 29 | 20 7b 0a 09 09 09 66 69 |l_close)| {....fi|
|00009fb0| 6c 65 74 6d 2d 3e 63 6f | 6d 6d 61 6e 64 20 3d 20 |letm->co|mmand = |
|00009fc0| 54 43 50 5f 44 49 53 50 | 4f 53 45 3b 0a 09 09 09 |TCP_DISP|OSE;....|
|00009fd0| 50 75 74 4d 73 67 28 74 | 63 70 2c 20 26 66 69 6c |PutMsg(t|cp, &fil|
|00009fe0| 65 74 6d 2d 3e 68 65 61 | 64 65 72 29 3b 0a 09 09 |etm->hea|der);...|
|00009ff0| 7d 0a 09 09 0a 09 09 69 | 66 20 28 74 6d 2d 3e 65 |}......i|f (tm->e|
|0000a000| 72 72 6f 72 20 21 3d 20 | 4e 4f 5f 45 52 52 4f 52 |rror != |NO_ERROR|
|0000a010| 29 20 7b 0a 09 09 09 73 | 68 6f 77 5f 73 74 72 69 |) {....s|how_stri|
|0000a020| 6e 67 28 22 63 6c 6f 73 | 65 20 66 69 6c 65 20 66 |ng("clos|e file f|
|0000a030| 61 69 6c 65 64 20 58 32 | 22 29 3b 0a 09 09 09 64 |ailed X2|");....d|
|0000a040| 69 73 63 6f 6e 6e 65 63 | 74 28 73 70 29 3b 0a 0a |isconnec|t(sp);..|
|0000a050| 09 09 09 72 65 74 75 72 | 6e 3b 0a 09 09 7d 0a 09 |...retur|n;...}..|
|0000a060| 09 0a 09 09 73 68 6f 77 | 5f 73 74 72 69 6e 67 28 |....show|_string(|
|0000a070| 22 46 69 72 73 74 20 41 | 42 4f 52 20 72 65 73 70 |"First A|BOR resp|
|0000a080| 6f 6e 73 65 22 29 3b 0a | 23 69 66 64 65 66 20 56 |onse");.|#ifdef V|
|0000a090| 45 52 49 46 59 0a 09 09 | 69 66 20 28 73 70 2d 3e |ERIFY...|if (sp->|
|0000a0a0| 72 65 61 64 5f 62 75 66 | 66 65 72 5b 33 5d 20 3d |read_buf|fer[3] =|
|0000a0b0| 3d 20 27 2d 27 29 20 73 | 68 6f 77 5f 73 74 72 69 |= '-') s|how_stri|
|0000a0c0| 6e 67 28 22 63 6f 6e 74 | 69 6e 75 61 74 69 6f 6e |ng("cont|inuation|
|0000a0d0| 20 72 65 70 6c 79 20 6f | 6e 20 41 42 4f 52 22 29 | reply o|n ABOR")|
|0000a0e0| 3b 0a 23 65 6e 64 69 66 | 0a 09 09 69 66 20 28 21 |;.#endif|...if (!|
|0000a0f0| 6e 6f 72 6d 61 6c 5f 63 | 6c 6f 73 65 29 20 7b 0a |normal_c|lose) {.|
|0000a100| 09 09 09 2f 2a 20 6c 65 | 61 76 65 20 74 68 65 20 |.../* le|ave the |
|0000a110| 63 6c 6f 73 65 20 72 65 | 73 70 6f 6e 73 65 20 75 |close re|sponse u|
|0000a120| 6e 74 69 6c 20 77 65 20 | 64 6f 20 74 68 65 20 72 |ntil we |do the r|
|0000a130| 65 61 6c 20 63 6c 6f 73 | 65 20 6c 61 74 65 72 20 |eal clos|e later |
|0000a140| 2a 2f 0a 09 09 09 72 65 | 74 75 72 6e 3b 0a 09 09 |*/....re|turn;...|
|0000a150| 7d 0a 09 09 0a 09 09 73 | 77 69 74 63 68 20 28 72 |}......s|witch (r|
|0000a160| 65 73 70 6f 6e 73 65 28 | 73 70 2c 20 30 2c 20 26 |esponse(|sp, 0, &|
|0000a170| 69 6e 66 6f 2c 20 72 65 | 70 6c 79 29 29 20 7b 0a |info, re|ply)) {.|
|0000a180| 09 09 63 61 73 65 20 4e | 4f 5f 45 52 52 4f 52 3a |..case N|O_ERROR:|
|0000a190| 0a 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 64 65 66 |....brea|k;...def|
|0000a1a0| 61 75 6c 74 3a 0a 09 09 | 09 73 68 6f 77 5f 73 74 |ault:...|.show_st|
|0000a1b0| 72 69 6e 67 28 22 63 6c | 6f 73 65 20 66 69 6c 65 |ring("cl|ose file|
|0000a1c0| 20 66 61 69 6c 65 64 20 | 58 33 22 29 3b 0a 09 09 | failed |X3");...|
|0000a1d0| 09 64 69 73 63 6f 6e 6e | 65 63 74 28 73 70 29 3b |.disconn|ect(sp);|
|0000a1e0| 0a 0a 09 09 09 72 65 74 | 75 72 6e 3b 0a 09 09 7d |.....ret|urn;...}|
|0000a1f0| 0a 09 09 09 0a 09 09 73 | 68 6f 77 5f 73 74 72 69 |.......s|how_stri|
|0000a200| 6e 67 28 22 53 65 63 6f | 6e 64 20 41 42 4f 52 20 |ng("Seco|nd ABOR |
|0000a210| 72 65 73 70 6f 6e 73 65 | 22 29 3b 0a 09 09 0a 23 |response|");....#|
|0000a220| 69 66 64 65 66 20 56 45 | 52 49 46 59 0a 09 09 69 |ifdef VE|RIFY...i|
|0000a230| 66 20 28 72 65 70 6c 79 | 5b 30 5d 20 21 3d 20 27 |f (reply|[0] != '|
|0000a240| 32 27 29 20 7b 0a 09 09 | 09 72 65 70 6c 79 5b 33 |2') {...|.reply[3|
|0000a250| 5d 20 3d 20 30 3b 0a 09 | 09 09 73 68 6f 77 5f 73 |] = 0;..|..show_s|
|0000a260| 74 72 69 6e 67 28 72 65 | 70 6c 79 29 3b 0a 09 09 |tring(re|ply);...|
|0000a270| 09 73 68 6f 77 5f 73 74 | 72 69 6e 67 28 69 6e 66 |.show_st|ring(inf|
|0000a280| 6f 29 3b 0a 09 09 7d 0a | 23 65 6e 64 69 66 0a 0a |o);...}.|#endif..|
|0000a290| 09 09 69 66 20 28 69 6e | 66 6f 29 20 64 65 61 6c |..if (in|fo) deal|
|0000a2a0| 6c 6f 63 61 74 65 28 69 | 6e 66 6f 2c 20 56 5f 63 |locate(i|nfo, V_c|
|0000a2b0| 73 74 72 29 3b 0a 09 09 | 0a 09 09 73 68 6f 77 5f |str);...|...show_|
|0000a2c0| 73 74 72 69 6e 67 28 22 | 41 42 4f 52 20 63 6f 6d |string("|ABOR com|
|0000a2d0| 70 6c 65 74 65 64 22 29 | 3b 0a 09 09 72 65 74 75 |pleted")|;...retu|
|0000a2e0| 72 6e 3b 0a 09 7d 0a 0a | 09 69 66 20 28 6e 6f 72 |rn;..}..|.if (nor|
|0000a2f0| 6d 61 6c 5f 63 6c 6f 73 | 65 29 20 7b 0a 09 09 64 |mal_clos|e) {...d|
|0000a300| 65 61 6c 6c 6f 63 61 74 | 65 28 66 69 2c 20 56 5f |eallocat|e(fi, V_|
|0000a310| 66 69 6c 65 5f 69 6e 66 | 6f 29 3b 0a 09 7d 20 65 |file_inf|o);..} e|
|0000a320| 6c 73 65 20 7b 0a 09 09 | 66 69 2d 3e 65 6f 66 20 |lse {...|fi->eof |
|0000a330| 3d 20 74 72 75 65 3b 0a | 09 7d 0a 09 0a 09 62 72 |= true;.|.}....br|
|0000a340| 65 61 6b 5f 63 6f 6e 6e | 65 63 74 69 6f 6e 28 73 |eak_conn|ection(s|
|0000a350| 70 2c 20 66 69 6c 65 74 | 6d 29 3b 0a 0a 09 69 66 |p, filet|m);...if|
|0000a360| 20 28 21 6e 6f 72 6d 61 | 6c 5f 63 6c 6f 73 65 29 | (!norma|l_close)|
|0000a370| 20 7b 0a 09 09 2f 2a 20 | 6c 65 61 76 65 20 74 68 | {.../* |leave th|
|0000a380| 65 20 66 69 6e 61 6c 20 | 63 6c 6f 73 65 20 72 65 |e final |close re|
|0000a390| 73 70 6f 6e 73 65 20 75 | 6e 74 69 6c 20 77 65 20 |sponse u|ntil we |
|0000a3a0| 64 6f 20 74 68 65 20 72 | 65 61 6c 20 63 6c 6f 73 |do the r|eal clos|
|0000a3b0| 65 20 6c 61 74 65 72 20 | 2a 2f 0a 09 09 72 65 74 |e later |*/...ret|
|0000a3c0| 75 72 6e 3b 0a 09 7d 0a | 0a 09 66 69 6c 65 74 6d |urn;..}.|..filetm|
|0000a3d0| 2d 3e 63 6f 6d 6d 61 6e | 64 20 3d 20 54 43 50 5f |->comman|d = TCP_|
|0000a3e0| 44 49 53 50 4f 53 45 3b | 0a 09 50 75 74 4d 73 67 |DISPOSE;|..PutMsg|
|0000a3f0| 28 74 63 70 2c 20 26 66 | 69 6c 65 74 6d 2d 3e 68 |(tcp, &f|iletm->h|
|0000a400| 65 61 64 65 72 29 3b 0a | 09 0a 09 73 77 69 74 63 |eader);.|...switc|
|0000a410| 68 20 28 72 65 73 70 6f | 6e 73 65 28 73 70 2c 20 |h (respo|nse(sp, |
|0000a420| 30 2c 20 26 69 6e 66 6f | 2c 20 72 65 70 6c 79 29 |0, &info|, reply)|
|0000a430| 29 20 7b 0a 09 63 61 73 | 65 20 4e 4f 5f 45 52 52 |) {..cas|e NO_ERR|
|0000a440| 4f 52 3a 0a 09 09 62 72 | 65 61 6b 3b 0a 09 64 65 |OR:...br|eak;..de|
|0000a450| 66 61 75 6c 74 3a 0a 09 | 09 73 68 6f 77 5f 73 74 |fault:..|.show_st|
|0000a460| 72 69 6e 67 28 22 63 6c | 6f 73 65 20 66 61 69 6c |ring("cl|ose fail|
|0000a470| 65 64 20 31 22 29 3b 0a | 09 09 0a 09 09 64 69 73 |ed 1");.|.....dis|
|0000a480| 63 6f 6e 6e 65 63 74 28 | 73 70 29 3b 0a 09 09 72 |connect(|sp);...r|
|0000a490| 65 74 75 72 6e 3b 0a 09 | 7d 0a 09 0a 09 69 66 20 |eturn;..|}....if |
|0000a4a0| 28 69 6e 66 6f 29 20 64 | 65 61 6c 6c 6f 63 61 74 |(info) d|eallocat|
|0000a4b0| 65 28 69 6e 66 6f 2c 20 | 56 5f 63 73 74 72 29 3b |e(info, |V_cstr);|
|0000a4c0| 0a 09 0a 09 2f 2a 20 77 | 65 20 64 6f 6e 27 74 20 |..../* w|e don't |
|0000a4d0| 72 65 61 6c 6c 79 20 63 | 61 72 65 20 77 68 61 74 |really c|are what|
|0000a4e0| 20 74 68 65 79 20 72 65 | 74 75 72 6e 65 64 20 68 | they re|turned h|
|0000a4f0| 65 72 65 20 2a 2f 0a 09 | 0a 23 69 66 64 65 66 20 |ere */..|.#ifdef |
|0000a500| 56 45 52 49 46 59 0a 09 | 69 66 20 28 72 65 70 6c |VERIFY..|if (repl|
|0000a510| 79 5b 30 5d 20 21 3d 20 | 27 32 27 29 20 7b 0a 09 |y[0] != |'2') {..|
|0000a520| 09 73 68 6f 77 5f 73 74 | 72 69 6e 67 28 22 4e 6f |.show_st|ring("No|
|0000a530| 6e 20 27 32 27 20 63 6c | 6f 73 65 20 6f 66 20 66 |n '2' cl|ose of f|
|0000a540| 69 6c 65 22 29 3b 0a 09 | 09 73 70 2d 3e 72 65 61 |ile");..|.sp->rea|
|0000a550| 64 5f 62 75 66 66 65 72 | 5b 30 5d 20 3d 20 72 65 |d_buffer|[0] = re|
|0000a560| 70 6c 79 5b 30 5d 3b 0a | 09 09 73 70 2d 3e 72 65 |ply[0];.|..sp->re|
|0000a570| 61 64 5f 62 75 66 66 65 | 72 5b 31 5d 20 3d 20 72 |ad_buffe|r[1] = r|
|0000a580| 65 70 6c 79 5b 31 5d 3b | 0a 09 09 73 70 2d 3e 72 |eply[1];|...sp->r|
|0000a590| 65 61 64 5f 62 75 66 66 | 65 72 5b 32 5d 20 3d 20 |ead_buff|er[2] = |
|0000a5a0| 72 65 70 6c 79 5b 32 5d | 3b 0a 09 09 73 70 2d 3e |reply[2]|;...sp->|
|0000a5b0| 72 65 61 64 5f 62 75 66 | 66 65 72 5b 33 5d 20 3d |read_buf|fer[3] =|
|0000a5c0| 20 30 3b 0a 09 09 73 68 | 6f 77 5f 73 74 72 69 6e | 0;...sh|ow_strin|
|0000a5d0| 67 28 73 70 2d 3e 72 65 | 61 64 5f 62 75 66 66 65 |g(sp->re|ad_buffe|
|0000a5e0| 72 29 3b 0a 09 7d 0a 23 | 65 6e 64 69 66 0a 09 0a |r);..}.#|endif...|
|0000a5f0| 09 72 65 74 75 72 6e 3b | 0a 7d 0a 0a 62 33 32 20 |.return;|.}..b32 |
|0000a600| 64 65 6c 65 74 65 5f 66 | 69 6c 65 28 73 69 74 65 |delete_f|ile(site|
|0000a610| 20 2a 73 70 2c 20 62 38 | 20 2a 73 29 0a 2f 2a 0a | *sp, b8| *s)./*.|
|0000a620| 20 2a 20 64 65 6c 65 74 | 65 20 66 69 6c 65 20 77 | * delet|e file w|
|0000a630| 69 74 68 20 6e 61 6d 65 | 20 69 6e 20 73 0a 20 2a |ith name| in s. *|
|0000a640| 20 49 6e 70 75 74 73 3a | 0a 20 2a 09 73 70 09 3a | Inputs:|. *.sp.:|
|0000a650| 20 73 69 74 65 20 70 6f | 69 6e 74 65 72 0a 20 2a | site po|inter. *|
|0000a660| 09 73 09 3a 20 66 75 6c | 6c 20 70 61 74 68 20 6e |.s.: ful|l path n|
|0000a670| 61 6d 65 0a 20 2a 0a 20 | 2a 20 52 65 74 75 72 6e |ame. *. |* Return|
|0000a680| 73 3a 0a 20 2a 09 73 74 | 61 6e 64 61 72 64 20 66 |s:. *.st|andard f|
|0000a690| 69 6c 65 20 73 79 73 74 | 65 6d 20 65 72 72 6f 72 |ile syst|em error|
|0000a6a0| 73 0a 20 2a 2f 0a 7b 0a | 09 62 38 20 2a 6c 65 61 |s. */.{.|.b8 *lea|
|0000a6b0| 66 3b 0a 09 62 33 32 20 | 65 72 72 6f 72 3b 0a 09 |f;..b32 |error;..|
|0000a6c0| 62 6f 6f 6c 65 61 6e 20 | 70 65 72 6d 3b 0a 09 62 |boolean |perm;..b|
|0000a6d0| 38 20 2a 69 6e 66 6f 2c | 20 72 65 70 6c 79 5b 33 |8 *info,| reply[3|
|0000a6e0| 5d 3b 0a 09 66 74 70 69 | 6e 66 6f 20 2a 66 69 3b |];..ftpi|nfo *fi;|
|0000a6f0| 0a 09 0a 09 76 65 72 69 | 66 79 28 73 70 2c 20 56 |....veri|fy(sp, V|
|0000a700| 5f 73 69 74 65 29 3b 0a | 09 74 72 75 74 68 28 73 |_site);.|.truth(s|
|0000a710| 20 21 3d 20 6e 69 6c 29 | 3b 0a 09 0a 09 69 66 20 | != nil)|;....if |
|0000a720| 28 73 5b 30 5d 20 3d 3d | 20 30 29 20 7b 0a 09 09 |(s[0] ==| 0) {...|
|0000a730| 2f 2a 20 74 72 79 69 6e | 67 20 74 6f 20 64 65 6c |/* tryin|g to del|
|0000a740| 65 74 65 20 72 6f 6f 74 | 20 2a 2f 0a 09 09 72 65 |ete root| */...re|
|0000a750| 74 75 72 6e 20 45 52 52 | 4f 52 5f 4f 42 4a 45 43 |turn ERR|OR_OBJEC|
|0000a760| 54 5f 57 52 4f 4e 47 5f | 54 59 50 45 3b 0a 09 7d |T_WRONG_|TYPE;..}|
|0000a770| 0a 09 0a 09 6c 65 61 66 | 20 3d 20 63 64 5f 70 61 |....leaf| = cd_pa|
|0000a780| 72 65 6e 74 28 73 70 2c | 20 73 29 3b 0a 09 69 66 |rent(sp,| s);..if|
|0000a790| 20 28 21 6c 65 61 66 29 | 20 7b 0a 09 09 2f 2a 20 | (!leaf)| {.../* |
|0000a7a0| 61 67 61 69 6e 2c 20 62 | 65 69 6e 67 20 6c 61 7a |again, b|eing laz|
|0000a7b0| 79 20 68 65 72 65 20 2a | 2f 0a 09 09 72 65 74 75 |y here *|/...retu|
|0000a7c0| 72 6e 20 45 52 52 4f 52 | 5f 44 49 52 5f 4e 4f 54 |rn ERROR|_DIR_NOT|
|0000a7d0| 5f 46 4f 55 4e 44 3b 0a | 09 7d 0a 09 0a 09 73 74 |_FOUND;.|.}....st|
|0000a7e0| 61 74 65 5f 63 68 61 6e | 67 65 28 73 70 2c 20 53 |ate_chan|ge(sp, S|
|0000a7f0| 53 5f 44 45 4c 45 54 49 | 4e 47 29 3b 0a 09 0a 09 |S_DELETI|NG);....|
|0000a800| 66 69 20 3d 20 67 65 74 | 5f 69 6e 66 6f 28 73 70 |fi = get|_info(sp|
|0000a810| 2c 20 73 29 3b 0a 09 69 | 66 20 28 66 69 29 20 7b |, s);..i|f (fi) {|
|0000a820| 0a 09 09 6c 65 61 66 20 | 3d 20 66 69 2d 3e 6e 61 |...leaf |= fi->na|
|0000a830| 6d 65 3b 0a 09 7d 0a 09 | 0a 09 73 70 72 69 6e 74 |me;..}..|..sprint|
|0000a840| 66 28 73 70 2d 3e 72 65 | 61 64 5f 62 75 66 66 65 |f(sp->re|ad_buffe|
|0000a850| 72 2c 20 22 44 45 4c 45 | 20 25 73 5c 72 5c 6e 22 |r, "DELE| %s\r\n"|
|0000a860| 2c 20 6c 65 61 66 29 3b | 0a 0a 09 69 66 20 28 63 |, leaf);|...if (c|
|0000a870| 6f 6e 74 72 6f 6c 5f 77 | 72 69 74 65 28 73 70 2c |ontrol_w|rite(sp,|
|0000a880| 20 73 70 2d 3e 72 65 61 | 64 5f 62 75 66 66 65 72 | sp->rea|d_buffer|
|0000a890| 2c 20 30 29 20 3d 3d 20 | 4e 4f 5f 45 52 52 4f 52 |, 0) == |NO_ERROR|
|0000a8a0| 29 20 7b 0a 09 09 69 66 | 20 28 72 65 73 70 6f 6e |) {...if| (respon|
|0000a8b0| 73 65 28 73 70 2c 20 30 | 2c 20 26 69 6e 66 6f 2c |se(sp, 0|, &info,|
|0000a8c0| 20 72 65 70 6c 79 29 20 | 3d 3d 20 4e 4f 5f 45 52 | reply) |== NO_ER|
|0000a8d0| 52 4f 52 29 20 7b 0a 09 | 09 09 70 65 72 6d 20 3d |ROR) {..|..perm =|
|0000a8e0| 20 73 75 62 73 74 72 28 | 69 6e 66 6f 2c 20 22 70 | substr(|info, "p|
|0000a8f0| 65 72 6d 22 29 3b 0a 09 | 09 09 69 66 20 28 69 6e |erm");..|..if (in|
|0000a900| 66 6f 29 20 64 65 61 6c | 6c 6f 63 61 74 65 28 69 |fo) deal|locate(i|
|0000a910| 6e 66 6f 2c 20 56 5f 63 | 73 74 72 29 3b 0a 09 09 |nfo, V_c|str);...|
|0000a920| 09 0a 09 09 09 73 77 69 | 74 63 68 20 28 72 65 70 |.....swi|tch (rep|
|0000a930| 6c 79 5b 30 5d 29 20 7b | 0a 09 09 09 63 61 73 65 |ly[0]) {|....case|
|0000a940| 20 27 32 27 3a 0a 09 09 | 09 09 72 65 74 75 72 6e | '2':...|..return|
|0000a950| 20 30 3b 09 2f 2a 20 73 | 75 63 63 65 73 73 20 2a | 0;./* s|uccess *|
|0000a960| 2f 0a 09 09 09 63 61 73 | 65 20 27 34 27 3a 0a 09 |/....cas|e '4':..|
|0000a970| 09 09 09 2f 2a 20 74 65 | 6d 70 20 66 61 69 6c 75 |.../* te|mp failu|
|0000a980| 72 65 20 2e 2e 2e 20 2a | 2f 0a 09 09 09 09 2f 2a |re ... *|/...../*|
|0000a990| 20 6d 6f 73 74 20 6c 69 | 6b 65 6c 79 20 72 65 61 | most li|kely rea|
|0000a9a0| 73 6f 6e 20 2a 2f 0a 09 | 09 09 09 72 65 74 75 72 |son */..|...retur|
|0000a9b0| 6e 20 45 52 52 4f 52 5f | 4f 42 4a 45 43 54 5f 49 |n ERROR_|OBJECT_I|
|0000a9c0| 4e 5f 55 53 45 3b 0a 09 | 09 09 64 65 66 61 75 6c |N_USE;..|..defaul|
|0000a9d0| 74 3a 0a 09 09 09 09 69 | 66 20 28 6e 75 6d 65 72 |t:.....i|f (numer|
|0000a9e0| 69 63 5f 72 65 70 6c 79 | 28 72 65 70 6c 79 29 20 |ic_reply|(reply) |
|0000a9f0| 3d 3d 20 35 30 32 29 20 | 72 65 74 75 72 6e 20 45 |== 502) |return E|
|0000aa00| 52 52 4f 52 5f 41 43 54 | 49 4f 4e 5f 4e 4f 54 5f |RROR_ACT|ION_NOT_|
|0000aa10| 4b 4e 4f 57 4e 3b 0a 09 | 09 09 09 69 66 20 28 70 |KNOWN;..|...if (p|
|0000aa20| 65 72 6d 29 0a 09 09 09 | 09 09 72 65 74 75 72 6e |erm)....|..return|
|0000aa30| 20 45 52 52 4f 52 5f 44 | 45 4c 45 54 45 5f 50 52 | ERROR_D|ELETE_PR|
|0000aa40| 4f 54 45 43 54 45 44 3b | 0a 09 09 09 09 65 6c 73 |OTECTED;|.....els|
|0000aa50| 65 0a 09 09 09 09 09 72 | 65 74 75 72 6e 20 45 52 |e......r|eturn ER|
|0000aa60| 52 4f 52 5f 4f 42 4a 45 | 43 54 5f 4e 4f 54 5f 46 |ROR_OBJE|CT_NOT_F|
|0000aa70| 4f 55 4e 44 3b 0a 09 09 | 09 7d 0a 09 09 7d 20 65 |OUND;...|.}...} e|
|0000aa80| 6c 73 65 20 7b 0a 09 09 | 09 64 69 73 63 6f 6e 6e |lse {...|.disconn|
|0000aa90| 65 63 74 28 73 70 29 3b | 0a 09 09 09 65 72 72 6f |ect(sp);|....erro|
|0000aaa0| 72 20 3d 20 45 52 52 4f | 52 5f 4f 42 4a 45 43 54 |r = ERRO|R_OBJECT|
|0000aab0| 5f 4e 4f 54 5f 46 4f 55 | 4e 44 3b 0a 09 09 7d 0a |_NOT_FOU|ND;...}.|
|0000aac0| 09 7d 20 65 6c 73 65 20 | 7b 0a 09 09 64 69 73 63 |.} else |{...disc|
|0000aad0| 6f 6e 6e 65 63 74 28 73 | 70 29 3b 0a 09 09 65 72 |onnect(s|p);...er|
|0000aae0| 72 6f 72 20 3d 20 45 52 | 52 4f 52 5f 4f 42 4a 45 |ror = ER|ROR_OBJE|
|0000aaf0| 43 54 5f 4e 4f 54 5f 46 | 4f 55 4e 44 3b 0a 09 7d |CT_NOT_F|OUND;..}|
|0000ab00| 0a 09 0a 09 72 65 74 75 | 72 6e 20 65 72 72 6f 72 |....retu|rn error|
|0000ab10| 3b 0a 7d 0a 0a 62 33 32 | 20 64 65 6c 65 74 65 5f |;.}..b32| delete_|
|0000ab20| 64 69 72 65 63 74 6f 72 | 79 28 73 69 74 65 20 2a |director|y(site *|
|0000ab30| 73 70 2c 20 62 38 20 2a | 73 29 0a 2f 2a 0a 20 2a |sp, b8 *|s)./*. *|
|0000ab40| 20 64 65 6c 65 74 65 20 | 64 69 72 65 63 74 6f 72 | delete |director|
|0000ab50| 79 20 77 69 74 68 20 6e | 61 6d 65 20 69 6e 20 73 |y with n|ame in s|
|0000ab60| 0a 20 2a 20 49 6e 70 75 | 74 73 3a 0a 20 2a 09 73 |. * Inpu|ts:. *.s|
|0000ab70| 70 09 3a 20 73 69 74 65 | 20 70 6f 69 6e 74 65 72 |p.: site| pointer|
|0000ab80| 0a 20 2a 09 73 09 3a 20 | 66 75 6c 6c 20 70 61 74 |. *.s.: |full pat|
|0000ab90| 68 20 6e 61 6d 65 0a 20 | 2a 0a 20 2a 20 52 65 74 |h name. |*. * Ret|
|0000aba0| 75 72 6e 73 3a 0a 20 2a | 09 73 74 61 6e 64 61 72 |urns:. *|.standar|
|0000abb0| 64 20 66 69 6c 65 20 73 | 79 73 74 65 6d 20 65 72 |d file s|ystem er|
|0000abc0| 72 6f 72 73 0a 20 2a 2f | 0a 7b 0a 09 62 38 20 2a |rors. */|.{..b8 *|
|0000abd0| 6c 65 61 66 3b 0a 09 62 | 33 32 20 65 72 72 6f 72 |leaf;..b|32 error|
|0000abe0| 3b 0a 09 62 6f 6f 6c 65 | 61 6e 20 70 65 72 6d 2c |;..boole|an perm,|
|0000abf0| 20 6e 6f 5f 73 75 63 68 | 3b 0a 09 62 38 20 2a 69 | no_such|;..b8 *i|
|0000ac00| 6e 66 6f 2c 20 72 65 70 | 6c 79 5b 33 5d 3b 0a 09 |nfo, rep|ly[3];..|
|0000ac10| 66 74 70 69 6e 66 6f 20 | 2a 66 69 3b 0a 09 0a 09 |ftpinfo |*fi;....|
|0000ac20| 76 65 72 69 66 79 28 73 | 70 2c 20 56 5f 73 69 74 |verify(s|p, V_sit|
|0000ac30| 65 29 3b 0a 09 74 72 75 | 74 68 28 73 20 21 3d 20 |e);..tru|th(s != |
|0000ac40| 6e 69 6c 29 3b 0a 09 0a | 09 69 66 20 28 73 5b 30 |nil);...|.if (s[0|
|0000ac50| 5d 20 3d 3d 20 30 29 20 | 7b 0a 09 09 2f 2a 20 74 |] == 0) |{.../* t|
|0000ac60| 72 79 69 6e 67 20 74 6f | 20 64 65 6c 65 74 65 20 |rying to| delete |
|0000ac70| 72 6f 6f 74 20 2a 2f 0a | 09 09 72 65 74 75 72 6e |root */.|..return|
|0000ac80| 20 45 52 52 4f 52 5f 4f | 42 4a 45 43 54 5f 57 52 | ERROR_O|BJECT_WR|
|0000ac90| 4f 4e 47 5f 54 59 50 45 | 3b 0a 09 7d 0a 09 0a 09 |ONG_TYPE|;..}....|
|0000aca0| 6c 65 61 66 20 3d 20 63 | 64 5f 70 61 72 65 6e 74 |leaf = c|d_parent|
|0000acb0| 28 73 70 2c 20 73 29 3b | 0a 09 69 66 20 28 21 6c |(sp, s);|..if (!l|
|0000acc0| 65 61 66 29 20 7b 0a 09 | 09 2f 2a 20 61 67 61 69 |eaf) {..|./* agai|
|0000acd0| 6e 2c 20 62 65 69 6e 67 | 20 6c 61 7a 79 20 68 65 |n, being| lazy he|
|0000ace0| 72 65 20 2a 2f 0a 09 09 | 72 65 74 75 72 6e 20 45 |re */...|return E|
|0000acf0| 52 52 4f 52 5f 44 49 52 | 5f 4e 4f 54 5f 46 4f 55 |RROR_DIR|_NOT_FOU|
|0000ad00| 4e 44 3b 0a 09 7d 0a 09 | 0a 09 73 74 61 74 65 5f |ND;..}..|..state_|
|0000ad10| 63 68 61 6e 67 65 28 73 | 70 2c 20 53 53 5f 44 45 |change(s|p, SS_DE|
|0000ad20| 4c 45 54 49 4e 47 29 3b | 0a 09 0a 09 66 69 20 3d |LETING);|....fi =|
|0000ad30| 20 67 65 74 5f 69 6e 66 | 6f 28 73 70 2c 20 73 29 | get_inf|o(sp, s)|
|0000ad40| 3b 0a 09 69 66 20 28 66 | 69 29 20 7b 0a 09 09 6c |;..if (f|i) {...l|
|0000ad50| 65 61 66 20 3d 20 66 69 | 2d 3e 6e 61 6d 65 3b 0a |eaf = fi|->name;.|
|0000ad60| 09 7d 0a 0a 09 73 70 72 | 69 6e 74 66 28 73 70 2d |.}...spr|intf(sp-|
|0000ad70| 3e 72 65 61 64 5f 62 75 | 66 66 65 72 2c 20 22 52 |>read_bu|ffer, "R|
|0000ad80| 4d 44 20 25 73 5c 72 5c | 6e 22 2c 20 6c 65 61 66 |MD %s\r\|n", leaf|
|0000ad90| 29 3b 0a 09 69 66 20 28 | 63 6f 6e 74 72 6f 6c 5f |);..if (|control_|
|0000ada0| 77 72 69 74 65 28 73 70 | 2c 20 73 70 2d 3e 72 65 |write(sp|, sp->re|
|0000adb0| 61 64 5f 62 75 66 66 65 | 72 2c 20 30 29 20 3d 3d |ad_buffe|r, 0) ==|
|0000adc0| 20 4e 4f 5f 45 52 52 4f | 52 29 20 7b 0a 09 09 69 | NO_ERRO|R) {...i|
|0000add0| 66 20 28 72 65 73 70 6f | 6e 73 65 28 73 70 2c 20 |f (respo|nse(sp, |
|0000ade0| 30 2c 20 26 69 6e 66 6f | 2c 20 72 65 70 6c 79 29 |0, &info|, reply)|
|0000adf0| 20 3d 3d 20 4e 4f 5f 45 | 52 52 4f 52 29 20 7b 0a | == NO_E|RROR) {.|
|0000ae00| 09 09 09 70 65 72 6d 20 | 3d 20 73 75 62 73 74 72 |...perm |= substr|
|0000ae10| 28 69 6e 66 6f 2c 20 22 | 70 65 72 6d 22 29 3b 0a |(info, "|perm");.|
|0000ae20| 09 09 09 6e 6f 5f 73 75 | 63 68 20 3d 20 73 75 62 |...no_su|ch = sub|
|0000ae30| 73 74 72 28 69 6e 66 6f | 2c 20 22 6e 6f 20 73 75 |str(info|, "no su|
|0000ae40| 63 68 22 29 3b 0a 09 09 | 09 69 66 20 28 69 6e 66 |ch");...|.if (inf|
|0000ae50| 6f 29 20 64 65 61 6c 6c | 6f 63 61 74 65 28 69 6e |o) deall|ocate(in|
|0000ae60| 66 6f 2c 20 56 5f 63 73 | 74 72 29 3b 0a 09 09 09 |fo, V_cs|tr);....|
|0000ae70| 0a 09 09 09 73 77 69 74 | 63 68 20 28 72 65 70 6c |....swit|ch (repl|
|0000ae80| 79 5b 30 5d 29 20 7b 0a | 09 09 09 63 61 73 65 20 |y[0]) {.|...case |
|0000ae90| 27 32 27 3a 0a 09 09 09 | 09 72 65 74 75 72 6e 20 |'2':....|.return |
|0000aea0| 30 3b 09 2f 2a 20 73 75 | 63 63 65 73 73 20 2a 2f |0;./* su|ccess */|
|0000aeb0| 0a 09 09 09 63 61 73 65 | 20 27 34 27 3a 0a 09 09 |....case| '4':...|
|0000aec0| 09 09 2f 2a 20 74 65 6d | 70 20 66 61 69 6c 75 72 |../* tem|p failur|
|0000aed0| 65 20 2e 2e 2e 20 2a 2f | 0a 09 09 09 09 2f 2a 20 |e ... */|...../* |
|0000aee0| 6d 6f 73 74 20 6c 69 6b | 65 6c 79 20 72 65 61 73 |most lik|ely reas|
|0000aef0| 6f 6e 20 2a 2f 0a 09 09 | 09 09 72 65 74 75 72 6e |on */...|..return|
|0000af00| 20 45 52 52 4f 52 5f 4f | 42 4a 45 43 54 5f 49 4e | ERROR_O|BJECT_IN|
|0000af10| 5f 55 53 45 3b 0a 09 09 | 09 64 65 66 61 75 6c 74 |_USE;...|.default|
|0000af20| 3a 0a 09 09 09 09 69 66 | 20 28 6e 75 6d 65 72 69 |:.....if| (numeri|
|0000af30| 63 5f 72 65 70 6c 79 28 | 72 65 70 6c 79 29 20 3d |c_reply(|reply) =|
|0000af40| 3d 20 35 30 32 29 20 72 | 65 74 75 72 6e 20 45 52 |= 502) r|eturn ER|
|0000af50| 52 4f 52 5f 41 43 54 49 | 4f 4e 5f 4e 4f 54 5f 4b |ROR_ACTI|ON_NOT_K|
|0000af60| 4e 4f 57 4e 3b 0a 09 09 | 09 09 69 66 20 28 70 65 |NOWN;...|..if (pe|
|0000af70| 72 6d 29 20 7b 0a 09 09 | 09 09 09 72 65 74 75 72 |rm) {...|...retur|
|0000af80| 6e 20 45 52 52 4f 52 5f | 44 45 4c 45 54 45 5f 50 |n ERROR_|DELETE_P|
|0000af90| 52 4f 54 45 43 54 45 44 | 3b 0a 09 09 09 09 7d 20 |ROTECTED|;.....} |
|0000afa0| 65 6c 73 65 20 69 66 20 | 28 6e 6f 5f 73 75 63 68 |else if |(no_such|
|0000afb0| 29 20 7b 0a 09 09 09 09 | 09 72 65 74 75 72 6e 20 |) {.....|.return |
|0000afc0| 45 52 52 4f 52 5f 4f 42 | 4a 45 43 54 5f 4e 4f 54 |ERROR_OB|JECT_NOT|
|0000afd0| 5f 46 4f 55 4e 44 3b 0a | 09 09 09 09 7d 20 65 6c |_FOUND;.|....} el|
|0000afe0| 73 65 20 7b 0a 09 09 09 | 09 09 72 65 74 75 72 6e |se {....|..return|
|0000aff0| 20 45 52 52 4f 52 5f 44 | 49 52 45 43 54 4f 52 59 | ERROR_D|IRECTORY|
|0000b000| 5f 4e 4f 54 5f 45 4d 50 | 54 59 3b 0a 09 09 09 09 |_NOT_EMP|TY;.....|
|0000b010| 7d 0a 09 09 09 7d 0a 09 | 09 7d 20 65 6c 73 65 20 |}....}..|.} else |
|0000b020| 7b 0a 09 09 09 64 69 73 | 63 6f 6e 6e 65 63 74 28 |{....dis|connect(|
|0000b030| 73 70 29 3b 0a 09 09 09 | 65 72 72 6f 72 20 3d 20 |sp);....|error = |
|0000b040| 45 52 52 4f 52 5f 4f 42 | 4a 45 43 54 5f 4e 4f 54 |ERROR_OB|JECT_NOT|
|0000b050| 5f 46 4f 55 4e 44 3b 0a | 09 09 7d 0a 09 7d 20 65 |_FOUND;.|..}..} e|
|0000b060| 6c 73 65 20 7b 0a 09 09 | 64 69 73 63 6f 6e 6e 65 |lse {...|disconne|
|0000b070| 63 74 28 73 70 29 3b 0a | 09 09 65 72 72 6f 72 20 |ct(sp);.|..error |
|0000b080| 3d 20 45 52 52 4f 52 5f | 4f 42 4a 45 43 54 5f 4e |= ERROR_|OBJECT_N|
|0000b090| 4f 54 5f 46 4f 55 4e 44 | 3b 0a 09 7d 0a 09 0a 09 |OT_FOUND|;..}....|
|0000b0a0| 72 65 74 75 72 6e 20 65 | 72 72 6f 72 3b 0a 7d 0a |return e|rror;.}.|
|0000b0b0| 0a 62 33 32 20 6d 61 6b | 65 5f 64 69 72 65 63 74 |.b32 mak|e_direct|
|0000b0c0| 6f 72 79 28 73 69 74 65 | 20 2a 73 70 2c 20 62 38 |ory(site| *sp, b8|
|0000b0d0| 20 2a 73 29 0a 2f 2a 0a | 20 2a 20 6d 61 6b 65 20 | *s)./*.| * make |
|0000b0e0| 64 69 72 65 63 74 6f 72 | 79 20 77 69 74 68 20 6e |director|y with n|
|0000b0f0| 61 6d 65 20 69 6e 20 73 | 0a 20 2a 20 49 6e 70 75 |ame in s|. * Inpu|
|0000b100| 74 73 3a 0a 20 2a 09 73 | 70 09 3a 20 73 69 74 65 |ts:. *.s|p.: site|
|0000b110| 20 70 6f 69 6e 74 65 72 | 0a 20 2a 09 73 09 3a 20 | pointer|. *.s.: |
|0000b120| 66 75 6c 6c 20 70 61 74 | 68 20 6e 61 6d 65 0a 20 |full pat|h name. |
|0000b130| 2a 0a 20 2a 20 52 65 74 | 75 72 6e 73 3a 0a 20 2a |*. * Ret|urns:. *|
|0000b140| 09 73 74 61 6e 64 61 72 | 64 20 66 69 6c 65 20 73 |.standar|d file s|
|0000b150| 79 73 74 65 6d 20 65 72 | 72 6f 72 73 0a 20 2a 2f |ystem er|rors. */|
|0000b160| 0a 7b 0a 09 62 38 20 2a | 6c 65 61 66 3b 0a 09 62 |.{..b8 *|leaf;..b|
|0000b170| 33 32 20 65 72 72 6f 72 | 3b 0a 09 62 6f 6f 6c 65 |32 error|;..boole|
|0000b180| 61 6e 20 65 78 69 73 74 | 73 3b 0a 09 62 38 20 2a |an exist|s;..b8 *|
|0000b190| 69 6e 66 6f 2c 20 72 65 | 70 6c 79 5b 33 5d 3b 0a |info, re|ply[3];.|
|0000b1a0| 09 0a 09 76 65 72 69 66 | 79 28 73 70 2c 20 56 5f |...verif|y(sp, V_|
|0000b1b0| 73 69 74 65 29 3b 0a 09 | 74 72 75 74 68 28 73 20 |site);..|truth(s |
|0000b1c0| 21 3d 20 6e 69 6c 29 3b | 0a 09 0a 09 69 66 20 28 |!= nil);|....if (|
|0000b1d0| 73 5b 30 5d 20 3d 3d 20 | 30 29 20 7b 0a 09 09 2f |s[0] == |0) {.../|
|0000b1e0| 2a 20 74 72 79 69 6e 67 | 20 74 6f 20 6d 6b 64 20 |* trying| to mkd |
|0000b1f0| 72 6f 6f 74 20 2a 2f 0a | 09 09 72 65 74 75 72 6e |root */.|..return|
|0000b200| 20 45 52 52 4f 52 5f 4f | 42 4a 45 43 54 5f 57 52 | ERROR_O|BJECT_WR|
|0000b210| 4f 4e 47 5f 54 59 50 45 | 3b 0a 09 7d 0a 09 0a 09 |ONG_TYPE|;..}....|
|0000b220| 6c 65 61 66 20 3d 20 63 | 64 5f 70 61 72 65 6e 74 |leaf = c|d_parent|
|0000b230| 28 73 70 2c 20 73 29 3b | 0a 09 69 66 20 28 21 6c |(sp, s);|..if (!l|
|0000b240| 65 61 66 29 20 7b 0a 09 | 09 2f 2a 20 61 67 61 69 |eaf) {..|./* agai|
|0000b250| 6e 2c 20 62 65 69 6e 67 | 20 6c 61 7a 79 20 68 65 |n, being| lazy he|
|0000b260| 72 65 20 2a 2f 0a 09 09 | 72 65 74 75 72 6e 20 45 |re */...|return E|
|0000b270| 52 52 4f 52 5f 44 49 52 | 5f 4e 4f 54 5f 46 4f 55 |RROR_DIR|_NOT_FOU|
|0000b280| 4e 44 3b 0a 09 7d 0a 09 | 0a 09 73 74 61 74 65 5f |ND;..}..|..state_|
|0000b290| 63 68 61 6e 67 65 28 73 | 70 2c 20 53 53 5f 4d 41 |change(s|p, SS_MA|
|0000b2a0| 4b 45 44 49 52 29 3b 0a | 09 0a 09 73 70 72 69 6e |KEDIR);.|...sprin|
|0000b2b0| 74 66 28 73 70 2d 3e 72 | 65 61 64 5f 62 75 66 66 |tf(sp->r|ead_buff|
|0000b2c0| 65 72 2c 20 22 4d 4b 44 | 20 25 73 5c 72 5c 6e 22 |er, "MKD| %s\r\n"|
|0000b2d0| 2c 20 6c 65 61 66 29 3b | 0a 09 69 66 20 28 63 6f |, leaf);|..if (co|
|0000b2e0| 6e 74 72 6f 6c 5f 77 72 | 69 74 65 28 73 70 2c 20 |ntrol_wr|ite(sp, |
|0000b2f0| 73 70 2d 3e 72 65 61 64 | 5f 62 75 66 66 65 72 2c |sp->read|_buffer,|
|0000b300| 20 30 29 20 3d 3d 20 4e | 4f 5f 45 52 52 4f 52 29 | 0) == N|O_ERROR)|
|0000b310| 20 7b 0a 09 09 69 66 20 | 28 72 65 73 70 6f 6e 73 | {...if |(respons|
|0000b320| 65 28 73 70 2c 20 30 2c | 20 26 69 6e 66 6f 2c 20 |e(sp, 0,| &info, |
|0000b330| 72 65 70 6c 79 29 20 3d | 3d 20 4e 4f 5f 45 52 52 |reply) =|= NO_ERR|
|0000b340| 4f 52 29 20 7b 0a 09 09 | 09 65 78 69 73 74 73 20 |OR) {...|.exists |
|0000b350| 3d 20 73 75 62 73 74 72 | 28 69 6e 66 6f 2c 20 22 |= substr|(info, "|
|0000b360| 65 78 69 73 74 22 29 3b | 0a 09 09 09 0a 09 09 09 |exist");|........|
|0000b370| 69 66 20 28 69 6e 66 6f | 29 20 64 65 61 6c 6c 6f |if (info|) deallo|
|0000b380| 63 61 74 65 28 69 6e 66 | 6f 2c 20 56 5f 63 73 74 |cate(inf|o, V_cst|
|0000b390| 72 29 3b 0a 09 09 09 0a | 09 09 09 73 77 69 74 63 |r);.....|...switc|
|0000b3a0| 68 20 28 72 65 70 6c 79 | 5b 30 5d 29 20 7b 0a 09 |h (reply|[0]) {..|
|0000b3b0| 09 09 63 61 73 65 20 27 | 32 27 3a 0a 09 09 09 09 |..case '|2':.....|
|0000b3c0| 72 65 74 75 72 6e 20 30 | 3b 09 2f 2a 20 73 75 63 |return 0|;./* suc|
|0000b3d0| 63 65 73 73 20 2a 2f 0a | 09 09 09 63 61 73 65 20 |cess */.|...case |
|0000b3e0| 27 34 27 3a 0a 09 09 09 | 09 2f 2a 20 74 65 6d 70 |'4':....|./* temp|
|0000b3f0| 20 66 61 69 6c 75 72 65 | 20 2e 2e 2e 20 2a 2f 0a | failure| ... */.|
|0000b400| 09 09 09 09 2f 2a 20 6d | 6f 73 74 20 6c 69 6b 65 |..../* m|ost like|
|0000b410| 6c 79 20 72 65 61 73 6f | 6e 20 2a 2f 0a 09 09 09 |ly reaso|n */....|
|0000b420| 09 72 65 74 75 72 6e 20 | 45 52 52 4f 52 5f 4f 42 |.return |ERROR_OB|
|0000b430| 4a 45 43 54 5f 49 4e 5f | 55 53 45 3b 0a 09 09 09 |JECT_IN_|USE;....|
|0000b440| 64 65 66 61 75 6c 74 3a | 0a 09 09 09 09 69 66 20 |default:|.....if |
|0000b450| 28 6e 75 6d 65 72 69 63 | 5f 72 65 70 6c 79 28 72 |(numeric|_reply(r|
|0000b460| 65 70 6c 79 29 20 3d 3d | 20 35 30 32 29 20 72 65 |eply) ==| 502) re|
|0000b470| 74 75 72 6e 20 45 52 52 | 4f 52 5f 41 43 54 49 4f |turn ERR|OR_ACTIO|
|0000b480| 4e 5f 4e 4f 54 5f 4b 4e | 4f 57 4e 3b 0a 09 09 09 |N_NOT_KN|OWN;....|
|0000b490| 09 69 66 20 28 65 78 69 | 73 74 73 29 0a 09 09 09 |.if (exi|sts)....|
|0000b4a0| 09 09 72 65 74 75 72 6e | 20 45 52 52 4f 52 5f 4f |..return| ERROR_O|
|0000b4b0| 42 4a 45 43 54 5f 45 58 | 49 53 54 53 3b 0a 09 09 |BJECT_EX|ISTS;...|
|0000b4c0| 09 09 65 6c 73 65 0a 09 | 09 09 09 09 72 65 74 75 |..else..|....retu|
|0000b4d0| 72 6e 20 45 52 52 4f 52 | 5f 57 52 49 54 45 5f 50 |rn ERROR|_WRITE_P|
|0000b4e0| 52 4f 54 45 43 54 45 44 | 3b 0a 09 09 09 7d 0a 09 |ROTECTED|;....}..|
|0000b4f0| 09 7d 20 65 6c 73 65 20 | 7b 0a 09 09 09 64 69 73 |.} else |{....dis|
|0000b500| 63 6f 6e 6e 65 63 74 28 | 73 70 29 3b 0a 09 09 09 |connect(|sp);....|
|0000b510| 65 72 72 6f 72 20 3d 20 | 45 52 52 4f 52 5f 4f 42 |error = |ERROR_OB|
|0000b520| 4a 45 43 54 5f 4e 4f 54 | 5f 46 4f 55 4e 44 3b 0a |JECT_NOT|_FOUND;.|
|0000b530| 09 09 7d 0a 09 7d 20 65 | 6c 73 65 20 7b 0a 09 09 |..}..} e|lse {...|
|0000b540| 64 69 73 63 6f 6e 6e 65 | 63 74 28 73 70 29 3b 0a |disconne|ct(sp);.|
|0000b550| 09 09 65 72 72 6f 72 20 | 3d 20 45 52 52 4f 52 5f |..error |= ERROR_|
|0000b560| 4f 42 4a 45 43 54 5f 4e | 4f 54 5f 46 4f 55 4e 44 |OBJECT_N|OT_FOUND|
|0000b570| 3b 0a 09 7d 0a 09 0a 09 | 72 65 74 75 72 6e 20 65 |;..}....|return e|
|0000b580| 72 72 6f 72 3b 0a 7d 0a | 0a 62 33 32 20 72 65 6e |rror;.}.|.b32 ren|
|0000b590| 61 6d 65 5f 6f 62 6a 65 | 63 74 28 73 69 74 65 20 |ame_obje|ct(site |
|0000b5a0| 2a 73 70 2c 20 62 38 20 | 2a 66 72 6f 6d 2c 20 62 |*sp, b8 |*from, b|
|0000b5b0| 38 20 2a 74 6f 29 0a 2f | 2a 0a 20 2a 20 72 65 6e |8 *to)./|*. * ren|
|0000b5c0| 61 6d 65 73 20 66 69 6c | 65 20 27 66 72 6f 6d 27 |ames fil|e 'from'|
|0000b5d0| 20 74 6f 20 27 74 6f 27 | 0a 20 2a 20 49 6e 70 75 | to 'to'|. * Inpu|
|0000b5e0| 74 73 3a 0a 20 2a 09 73 | 70 09 3a 20 73 69 74 65 |ts:. *.s|p.: site|
|0000b5f0| 20 70 6f 69 6e 74 65 72 | 0a 20 2a 09 66 72 6f 6d | pointer|. *.from|
|0000b600| 2c 20 74 6f 3a 20 6e 75 | 6c 6c 20 74 65 72 6d 69 |, to: nu|ll termi|
|0000b610| 6e 61 74 65 64 20 66 69 | 6c 65 20 6e 61 6d 65 73 |nated fi|le names|
|0000b620| 0a 20 2a 0a 20 2a 20 52 | 65 74 75 72 6e 73 3a 0a |. *. * R|eturns:.|
|0000b630| 20 2a 09 66 69 6c 65 20 | 73 79 73 74 65 6d 20 65 | *.file |system e|
|0000b640| 72 72 6f 72 2c 20 6f 72 | 20 30 20 69 6e 64 69 63 |rror, or| 0 indic|
|0000b650| 61 74 69 6e 67 20 73 75 | 63 63 65 73 73 0a 20 2a |ating su|ccess. *|
|0000b660| 2f 0a 7b 0a 09 62 38 20 | 2a 6c 65 61 66 31 2c 20 |/.{..b8 |*leaf1, |
|0000b670| 2a 6c 65 61 66 32 3b 0a | 09 62 38 20 2a 69 6e 66 |*leaf2;.|.b8 *inf|
|0000b680| 6f 2c 20 72 65 70 6c 79 | 5b 33 5d 3b 0a 09 62 6f |o, reply|[3];..bo|
|0000b690| 6f 6c 65 61 6e 20 70 65 | 72 6d 2c 20 65 78 69 73 |olean pe|rm, exis|
|0000b6a0| 74 3b 0a 09 0a 09 69 66 | 20 28 73 70 2d 3e 75 6e |t;....if| (sp->un|
|0000b6b0| 69 78 5f 70 61 74 68 73 | 29 20 7b 0a 09 09 69 66 |ix_paths|) {...if|
|0000b6c0| 20 28 21 63 68 61 6e 67 | 65 5f 64 69 72 28 73 70 | (!chang|e_dir(sp|
|0000b6d0| 2c 20 22 22 29 29 20 7b | 0a 09 09 09 72 65 74 75 |, "")) {|....retu|
|0000b6e0| 72 6e 20 45 52 52 4f 52 | 5f 44 49 52 5f 4e 4f 54 |rn ERROR|_DIR_NOT|
|0000b6f0| 5f 46 4f 55 4e 44 3b 0a | 09 09 7d 0a 09 09 0a 09 |_FOUND;.|..}.....|
|0000b700| 09 6c 65 61 66 31 20 3d | 20 66 72 6f 6d 3b 0a 09 |.leaf1 =| from;..|
|0000b710| 09 6c 65 61 66 32 20 3d | 20 74 6f 3b 0a 09 7d 20 |.leaf2 =| to;..} |
|0000b720| 65 6c 73 65 20 7b 0a 09 | 09 6c 65 61 66 31 20 3d |else {..|.leaf1 =|
|0000b730| 20 63 64 5f 70 61 72 65 | 6e 74 28 73 70 2c 20 66 | cd_pare|nt(sp, f|
|0000b740| 72 6f 6d 29 3b 0a 09 09 | 69 66 20 28 21 6c 65 61 |rom);...|if (!lea|
|0000b750| 66 31 29 20 7b 0a 09 09 | 09 72 65 74 75 72 6e 20 |f1) {...|.return |
|0000b760| 45 52 52 4f 52 5f 44 49 | 52 5f 4e 4f 54 5f 46 4f |ERROR_DI|R_NOT_FO|
|0000b770| 55 4e 44 3b 0a 09 09 7d | 0a 09 09 0a 09 09 6c 65 |UND;...}|......le|
|0000b780| 61 66 32 20 3d 20 74 6f | 20 2b 20 73 74 72 6c 65 |af2 = to| + strle|
|0000b790| 6e 28 74 6f 29 20 2d 20 | 31 3b 0a 09 09 77 68 69 |n(to) - |1;...whi|
|0000b7a0| 6c 65 20 28 6c 65 61 66 | 32 20 3e 20 74 6f 20 26 |le (leaf|2 > to &|
|0000b7b0| 26 20 2a 6c 65 61 66 32 | 20 21 3d 20 27 2f 27 29 |& *leaf2| != '/')|
|0000b7c0| 20 6c 65 61 66 32 2d 2d | 3b 0a 09 09 0a 09 09 69 | leaf2--|;......i|
|0000b7d0| 66 20 28 6c 65 61 66 32 | 20 3e 20 74 6f 29 20 2a |f (leaf2| > to) *|
|0000b7e0| 6c 65 61 66 32 20 3d 20 | 30 3b 0a 09 09 0a 09 09 |leaf2 = |0;......|
|0000b7f0| 69 66 20 28 73 74 72 63 | 6d 70 28 74 6f 2c 20 73 |if (strc|mp(to, s|
|0000b800| 70 2d 3e 63 77 64 29 20 | 3d 3d 20 30 29 20 7b 09 |p->cwd) |== 0) {.|
|0000b810| 2f 2a 20 74 68 65 79 20 | 61 72 65 20 69 6e 20 74 |/* they |are in t|
|0000b820| 68 65 20 73 61 6d 65 20 | 64 69 72 65 63 74 6f 72 |he same |director|
|0000b830| 79 2c 20 77 65 20 63 61 | 6e 20 64 6f 20 69 74 20 |y, we ca|n do it |
|0000b840| 2a 2f 0a 09 09 09 69 66 | 20 28 6c 65 61 66 32 20 |*/....if| (leaf2 |
|0000b850| 3e 20 74 6f 29 20 2a 6c | 65 61 66 32 20 3d 20 27 |> to) *l|eaf2 = '|
|0000b860| 2f 27 3b 0a 09 09 7d 20 | 65 6c 73 65 20 7b 0a 09 |/';...} |else {..|
|0000b870| 09 09 72 65 74 75 72 6e | 20 45 52 52 4f 52 5f 41 |..return| ERROR_A|
|0000b880| 43 54 49 4f 4e 5f 4e 4f | 54 5f 4b 4e 4f 57 4e 3b |CTION_NO|T_KNOWN;|
|0000b890| 0a 09 09 7d 0a 09 7d 0a | 09 0a 09 73 74 61 74 65 |...}..}.|...state|
|0000b8a0| 5f 63 68 61 6e 67 65 28 | 73 70 2c 20 53 53 5f 52 |_change(|sp, SS_R|
|0000b8b0| 45 4e 41 4d 49 4e 47 29 | 3b 0a 09 0a 09 73 70 72 |ENAMING)|;....spr|
|0000b8c0| 69 6e 74 66 28 73 70 2d | 3e 72 65 61 64 5f 62 75 |intf(sp-|>read_bu|
|0000b8d0| 66 66 65 72 2c 20 22 52 | 4e 46 52 20 25 73 5c 72 |ffer, "R|NFR %s\r|
|0000b8e0| 5c 6e 22 2c 20 6c 65 61 | 66 31 29 3b 0a 09 69 66 |\n", lea|f1);..if|
|0000b8f0| 20 28 63 6f 6e 74 72 6f | 6c 5f 77 72 69 74 65 28 | (contro|l_write(|
|0000b900| 73 70 2c 20 73 70 2d 3e | 72 65 61 64 5f 62 75 66 |sp, sp->|read_buf|
|0000b910| 66 65 72 2c 20 30 29 20 | 21 3d 20 4e 4f 5f 45 52 |fer, 0) |!= NO_ER|
|0000b920| 52 4f 52 29 20 7b 0a 09 | 09 64 69 73 63 6f 6e 6e |ROR) {..|.disconn|
|0000b930| 65 63 74 28 73 70 29 3b | 0a 09 09 72 65 74 75 72 |ect(sp);|...retur|
|0000b940| 6e 20 45 52 52 4f 52 5f | 4f 42 4a 45 43 54 5f 4e |n ERROR_|OBJECT_N|
|0000b950| 4f 54 5f 46 4f 55 4e 44 | 3b 0a 09 7d 0a 09 0a 09 |OT_FOUND|;..}....|
|0000b960| 69 66 20 28 73 70 2d 3e | 71 75 69 63 6b 29 20 7b |if (sp->|quick) {|
|0000b970| 0a 09 09 73 70 72 69 6e | 74 66 28 73 70 2d 3e 72 |...sprin|tf(sp->r|
|0000b980| 65 61 64 5f 62 75 66 66 | 65 72 2c 20 22 52 4e 54 |ead_buff|er, "RNT|
|0000b990| 4f 20 25 73 5c 72 5c 6e | 22 2c 20 6c 65 61 66 32 |O %s\r\n|", leaf2|
|0000b9a0| 29 3b 0a 09 09 69 66 20 | 28 63 6f 6e 74 72 6f 6c |);...if |(control|
|0000b9b0| 5f 77 72 69 74 65 28 73 | 70 2c 20 73 70 2d 3e 72 |_write(s|p, sp->r|
|0000b9c0| 65 61 64 5f 62 75 66 66 | 65 72 2c 20 30 29 20 21 |ead_buff|er, 0) !|
|0000b9d0| 3d 20 4e 4f 5f 45 52 52 | 4f 52 29 20 7b 0a 09 09 |= NO_ERR|OR) {...|
|0000b9e0| 09 64 69 73 63 6f 6e 6e | 65 63 74 28 73 70 29 3b |.disconn|ect(sp);|
|0000b9f0| 0a 09 09 09 72 65 74 75 | 72 6e 20 45 52 52 4f 52 |....retu|rn ERROR|
|0000ba00| 5f 4f 42 4a 45 43 54 5f | 4e 4f 54 5f 46 4f 55 4e |_OBJECT_|NOT_FOUN|
|0000ba10| 44 3b 0a 09 09 7d 0a 09 | 7d 0a 09 0a 09 2f 2a 20 |D;...}..|}..../* |
|0000ba20| 72 65 73 70 6f 6e 73 65 | 20 74 6f 20 52 4e 46 52 |response| to RNFR|
|0000ba30| 20 2a 2f 0a 09 69 66 20 | 28 72 65 73 70 6f 6e 73 | */..if |(respons|
|0000ba40| 65 28 73 70 2c 20 30 2c | 20 26 69 6e 66 6f 2c 20 |e(sp, 0,| &info, |
|0000ba50| 72 65 70 6c 79 29 20 21 | 3d 20 4e 4f 5f 45 52 52 |reply) !|= NO_ERR|
|0000ba60| 4f 52 29 20 7b 0a 09 09 | 64 69 73 63 6f 6e 6e 65 |OR) {...|disconne|
|0000ba70| 63 74 28 73 70 29 3b 0a | 09 09 72 65 74 75 72 6e |ct(sp);.|..return|
|0000ba80| 20 45 52 52 4f 52 5f 4f | 42 4a 45 43 54 5f 4e 4f | ERROR_O|BJECT_NO|
|0000ba90| 54 5f 46 4f 55 4e 44 3b | 0a 09 7d 0a 09 0a 09 70 |T_FOUND;|..}....p|
|0000baa0| 65 72 6d 20 3d 20 73 75 | 62 73 74 72 28 69 6e 66 |erm = su|bstr(inf|
|0000bab0| 6f 2c 20 22 70 65 72 6d | 22 29 3b 0a 09 09 0a 09 |o, "perm|");.....|
|0000bac0| 69 66 20 28 69 6e 66 6f | 29 20 64 65 61 6c 6c 6f |if (info|) deallo|
|0000bad0| 63 61 74 65 28 69 6e 66 | 6f 2c 20 56 5f 63 73 74 |cate(inf|o, V_cst|
|0000bae0| 72 29 3b 0a 09 0a 09 69 | 66 20 28 72 65 70 6c 79 |r);....i|f (reply|
|0000baf0| 5b 30 5d 20 21 3d 20 27 | 33 27 29 20 7b 0a 09 09 |[0] != '|3') {...|
|0000bb00| 69 66 20 28 70 65 72 6d | 29 20 7b 0a 09 09 09 72 |if (perm|) {....r|
|0000bb10| 65 74 75 72 6e 20 45 52 | 52 4f 52 5f 57 52 49 54 |eturn ER|ROR_WRIT|
|0000bb20| 45 5f 50 52 4f 54 45 43 | 54 45 44 3b 0a 09 09 7d |E_PROTEC|TED;...}|
|0000bb30| 0a 09 09 72 65 74 75 72 | 6e 20 45 52 52 4f 52 5f |...retur|n ERROR_|
|0000bb40| 4f 42 4a 45 43 54 5f 4e | 4f 54 5f 46 4f 55 4e 44 |OBJECT_N|OT_FOUND|
|0000bb50| 3b 0a 09 7d 0a 09 0a 09 | 69 66 20 28 21 73 70 2d |;..}....|if (!sp-|
|0000bb60| 3e 71 75 69 63 6b 29 20 | 7b 0a 09 09 73 70 72 69 |>quick) |{...spri|
|0000bb70| 6e 74 66 28 73 70 2d 3e | 72 65 61 64 5f 62 75 66 |ntf(sp->|read_buf|
|0000bb80| 66 65 72 2c 20 22 52 4e | 54 4f 20 25 73 5c 72 5c |fer, "RN|TO %s\r\|
|0000bb90| 6e 22 2c 20 6c 65 61 66 | 32 29 3b 0a 09 09 69 66 |n", leaf|2);...if|
|0000bba0| 20 28 63 6f 6e 74 72 6f | 6c 5f 77 72 69 74 65 28 | (contro|l_write(|
|0000bbb0| 73 70 2c 20 73 70 2d 3e | 72 65 61 64 5f 62 75 66 |sp, sp->|read_buf|
|0000bbc0| 66 65 72 2c 20 30 29 20 | 21 3d 20 4e 4f 5f 45 52 |fer, 0) |!= NO_ER|
|0000bbd0| 52 4f 52 29 20 7b 0a 09 | 09 09 64 69 73 63 6f 6e |ROR) {..|..discon|
|0000bbe0| 6e 65 63 74 28 73 70 29 | 3b 0a 09 09 09 72 65 74 |nect(sp)|;....ret|
|0000bbf0| 75 72 6e 20 45 52 52 4f | 52 5f 4f 42 4a 45 43 54 |urn ERRO|R_OBJECT|
|0000bc00| 5f 4e 4f 54 5f 46 4f 55 | 4e 44 3b 0a 09 09 7d 0a |_NOT_FOU|ND;...}.|
|0000bc10| 09 7d 0a 09 0a 09 2f 2a | 20 72 65 73 70 6f 6e 73 |.}..../*| respons|
|0000bc20| 65 20 74 6f 20 52 4e 54 | 4f 20 2a 2f 0a 09 69 66 |e to RNT|O */..if|
|0000bc30| 20 28 72 65 73 70 6f 6e | 73 65 28 73 70 2c 20 30 | (respon|se(sp, 0|
|0000bc40| 2c 20 26 69 6e 66 6f 2c | 20 72 65 70 6c 79 29 20 |, &info,| reply) |
|0000bc50| 21 3d 20 4e 4f 5f 45 52 | 52 4f 52 29 20 7b 0a 09 |!= NO_ER|ROR) {..|
|0000bc60| 09 64 69 73 63 6f 6e 6e | 65 63 74 28 73 70 29 3b |.disconn|ect(sp);|
|0000bc70| 0a 09 09 72 65 74 75 72 | 6e 20 45 52 52 4f 52 5f |...retur|n ERROR_|
|0000bc80| 4f 42 4a 45 43 54 5f 4e | 4f 54 5f 46 4f 55 4e 44 |OBJECT_N|OT_FOUND|
|0000bc90| 3b 0a 09 7d 0a 09 0a 09 | 70 65 72 6d 20 3d 20 73 |;..}....|perm = s|
|0000bca0| 75 62 73 74 72 28 69 6e | 66 6f 2c 20 22 70 65 72 |ubstr(in|fo, "per|
|0000bcb0| 6d 22 29 3b 0a 09 65 78 | 69 73 74 20 3d 20 73 75 |m");..ex|ist = su|
|0000bcc0| 62 73 74 72 28 69 6e 66 | 6f 2c 20 22 65 78 69 73 |bstr(inf|o, "exis|
|0000bcd0| 74 22 29 3b 0a 09 0a 09 | 69 66 20 28 69 6e 66 6f |t");....|if (info|
|0000bce0| 29 20 64 65 61 6c 6c 6f | 63 61 74 65 28 69 6e 66 |) deallo|cate(inf|
|0000bcf0| 6f 2c 20 56 5f 63 73 74 | 72 29 3b 0a 09 0a 09 69 |o, V_cst|r);....i|
|0000bd00| 66 20 28 72 65 70 6c 79 | 5b 30 5d 20 21 3d 20 27 |f (reply|[0] != '|
|0000bd10| 32 27 29 20 7b 0a 09 09 | 69 66 20 28 70 65 72 6d |2') {...|if (perm|
|0000bd20| 29 20 7b 0a 09 09 09 72 | 65 74 75 72 6e 20 45 52 |) {....r|eturn ER|
|0000bd30| 52 4f 52 5f 57 52 49 54 | 45 5f 50 52 4f 54 45 43 |ROR_WRIT|E_PROTEC|
|0000bd40| 54 45 44 3b 0a 09 09 7d | 0a 09 09 69 66 20 28 65 |TED;...}|...if (e|
|0000bd50| 78 69 73 74 29 20 7b 0a | 09 09 09 72 65 74 75 72 |xist) {.|...retur|
|0000bd60| 6e 20 45 52 52 4f 52 5f | 4f 42 4a 45 43 54 5f 45 |n ERROR_|OBJECT_E|
|0000bd70| 58 49 53 54 53 3b 0a 09 | 09 7d 0a 09 09 72 65 74 |XISTS;..|.}...ret|
|0000bd80| 75 72 6e 20 45 52 52 4f | 52 5f 49 4e 56 41 4c 49 |urn ERRO|R_INVALI|
|0000bd90| 44 5f 43 4f 4d 50 4f 4e | 45 4e 54 5f 4e 41 4d 45 |D_COMPON|ENT_NAME|
|0000bda0| 3b 0a 09 7d 0a 09 0a 09 | 72 65 74 75 72 6e 20 30 |;..}....|return 0|
|0000bdb0| 3b 0a 7d 0a 0a 62 6f 6f | 6c 65 61 6e 20 63 68 61 |;.}..boo|lean cha|
|0000bdc0| 6e 67 65 5f 64 69 72 28 | 73 69 74 65 20 2a 73 70 |nge_dir(|site *sp|
|0000bdd0| 2c 20 62 38 20 2a 6e 65 | 77 5f 64 69 72 29 0a 2f |, b8 *ne|w_dir)./|
|0000bde0| 2a 0a 20 2a 20 63 68 61 | 6e 67 65 20 64 69 72 65 |*. * cha|nge dire|
|0000bdf0| 63 74 6f 72 79 20 74 6f | 20 6e 65 77 5f 64 69 72 |ctory to| new_dir|
|0000be00| 0a 20 2a 20 49 6e 70 75 | 74 73 3a 0a 20 2a 09 73 |. * Inpu|ts:. *.s|
|0000be10| 70 09 3a 20 73 69 74 65 | 20 70 6f 69 6e 74 65 72 |p.: site| pointer|
|0000be20| 0a 20 2a 09 6e 65 77 5f | 64 69 72 09 3a 20 6e 75 |. *.new_|dir.: nu|
|0000be30| 6c 6c 20 74 65 72 6d 69 | 6e 61 74 65 64 20 70 61 |ll termi|nated pa|
|0000be40| 74 68 20 6e 61 6d 65 0a | 20 2a 0a 20 2a 20 52 65 |th name.| *. * Re|
|0000be50| 74 75 72 6e 73 3a 0a 20 | 2a 09 74 72 75 65 20 69 |turns:. |*.true i|
|0000be60| 66 20 63 68 61 6e 67 65 | 5f 64 69 72 20 77 61 73 |f change|_dir was|
|0000be70| 20 73 75 63 63 65 73 73 | 66 75 6c 0a 20 2a 2f 0a | success|ful. */.|
|0000be80| 7b 0a 09 74 63 70 6d 65 | 73 73 61 67 65 20 2a 74 |{..tcpme|ssage *t|
|0000be90| 6d 3b 0a 09 73 74 72 75 | 63 74 20 4d 73 67 50 6f |m;..stru|ct MsgPo|
|0000bea0| 72 74 20 2a 73 79 6e 63 | 3b 0a 09 62 38 20 2a 69 |rt *sync|;..b8 *i|
|0000beb0| 6e 66 6f 2c 20 72 65 70 | 6c 79 5b 34 5d 3b 0a 09 |nfo, rep|ly[4];..|
|0000bec0| 62 38 20 2a 7a 2c 20 2a | 73 3b 0a 09 0a 09 76 65 |b8 *z, *|s;....ve|
|0000bed0| 72 69 66 79 28 73 70 2c | 20 56 5f 73 69 74 65 29 |rify(sp,| V_site)|
|0000bee0| 3b 0a 09 74 72 75 74 68 | 28 6e 65 77 5f 64 69 72 |;..truth|(new_dir|
|0000bef0| 20 21 3d 20 6e 69 6c 29 | 3b 0a 09 0a 09 74 6d 20 | != nil)|;....tm |
|0000bf00| 3d 20 73 70 2d 3e 63 6f | 6e 74 72 6f 6c 3b 0a 09 |= sp->co|ntrol;..|
|0000bf10| 73 79 6e 63 20 3d 20 73 | 70 2d 3e 73 79 6e 63 3b |sync = s|p->sync;|
|0000bf20| 0a 09 0a 09 76 65 72 69 | 66 79 28 74 6d 2c 20 56 |....veri|fy(tm, V|
|0000bf30| 5f 74 63 70 6d 65 73 73 | 61 67 65 29 3b 0a 09 0a |_tcpmess|age);...|
|0000bf40| 09 2f 2a 20 63 68 65 63 | 6b 20 74 6f 20 73 65 65 |./* chec|k to see|
|0000bf50| 20 69 66 20 77 65 20 61 | 72 65 20 61 6c 72 65 61 | if we a|re alrea|
|0000bf60| 64 79 20 74 68 65 72 65 | 20 2a 2f 0a 0a 09 69 66 |dy there| */...if|
|0000bf70| 20 28 21 73 70 2d 3e 63 | 77 64 20 26 26 20 6e 65 | (!sp->c|wd && ne|
|0000bf80| 77 5f 64 69 72 5b 30 5d | 20 3d 3d 20 30 29 20 72 |w_dir[0]| == 0) r|
|0000bf90| 65 74 75 72 6e 20 74 72 | 75 65 3b 0a 09 69 66 20 |eturn tr|ue;..if |
|0000bfa0| 28 73 70 2d 3e 63 77 64 | 20 26 26 20 73 74 72 63 |(sp->cwd| && strc|
|0000bfb0| 6d 70 28 73 70 2d 3e 63 | 77 64 2c 20 6e 65 77 5f |mp(sp->c|wd, new_|
|0000bfc0| 64 69 72 29 20 3d 3d 20 | 30 29 20 72 65 74 75 72 |dir) == |0) retur|
|0000bfd0| 6e 20 74 72 75 65 3b 0a | 09 0a 09 2f 2a 20 68 61 |n true;.|.../* ha|
|0000bfe0| 76 65 20 74 6f 20 65 78 | 70 6c 69 63 69 74 6c 79 |ve to ex|plicitly|
|0000bff0| 20 63 68 61 6e 67 65 20 | 74 68 65 72 65 20 2a 2f | change |there */|
|0000c000| 0a 09 0a 09 69 66 20 28 | 73 70 2d 3e 63 66 69 6c |....if (|sp->cfil|
|0000c010| 65 29 20 7b 09 2f 2a 20 | 63 61 6e 27 74 20 64 6f |e) {./* |can't do|
|0000c020| 20 5f 61 6e 79 74 68 69 | 6e 67 5f 20 77 68 69 6c | _anythi|ng_ whil|
|0000c030| 65 20 77 65 20 68 61 76 | 65 20 61 20 66 69 6c 65 |e we hav|e a file|
|0000c040| 20 6f 70 65 6e 65 64 20 | 2a 2f 0a 09 09 69 66 20 | opened |*/...if |
|0000c050| 28 73 70 2d 3e 66 69 6c | 65 5f 6c 69 73 74 2d 3e |(sp->fil|e_list->|
|0000c060| 63 6c 6f 73 65 64 29 20 | 7b 0a 09 09 09 63 6c 6f |closed) |{....clo|
|0000c070| 73 65 5f 66 69 6c 65 28 | 73 70 2c 20 74 72 75 65 |se_file(|sp, true|
|0000c080| 29 3b 0a 09 09 7d 20 65 | 6c 73 65 20 7b 0a 09 09 |);...} e|lse {...|
|0000c090| 09 72 65 74 75 72 6e 20 | 66 61 6c 73 65 3b 0a 09 |.return |false;..|
|0000c0a0| 09 7d 0a 09 7d 0a 09 0a | 09 69 66 20 28 21 73 70 |.}..}...|.if (!sp|
|0000c0b0| 2d 3e 63 6f 6e 6e 65 63 | 74 65 64 29 20 7b 0a 09 |->connec|ted) {..|
|0000c0c0| 09 72 65 74 75 72 6e 20 | 66 61 6c 73 65 3b 0a 09 |.return |false;..|
|0000c0d0| 7d 0a 0a 09 73 74 61 74 | 65 5f 63 68 61 6e 67 65 |}...stat|e_change|
|0000c0e0| 28 73 70 2c 20 53 53 5f | 43 57 44 29 3b 0a 0a 09 |(sp, SS_|CWD);...|
|0000c0f0| 69 66 20 28 73 70 2d 3e | 63 77 64 29 20 7b 0a 09 |if (sp->|cwd) {..|
|0000c100| 09 64 65 61 6c 6c 6f 63 | 61 74 65 28 73 70 2d 3e |.dealloc|ate(sp->|
|0000c110| 63 77 64 2c 20 56 5f 63 | 73 74 72 29 3b 0a 09 09 |cwd, V_c|str);...|
|0000c120| 73 70 2d 3e 63 77 64 20 | 3d 20 6e 69 6c 3b 0a 09 |sp->cwd |= nil;..|
|0000c130| 7d 0a 09 0a 09 2f 2a 20 | 66 69 72 73 74 20 77 65 |}..../* |first we|
|0000c140| 20 63 68 61 6e 67 65 20 | 74 6f 20 74 68 65 20 72 | change |to the r|
|0000c150| 6f 6f 74 20 2a 2f 0a 09 | 0a 09 69 66 20 28 73 70 |oot */..|..if (sp|
|0000c160| 2d 3e 72 6f 6f 74 29 20 | 7b 0a 09 09 73 70 72 69 |->root) |{...spri|
|0000c170| 6e 74 66 28 73 70 2d 3e | 72 65 61 64 5f 62 75 66 |ntf(sp->|read_buf|
|0000c180| 66 65 72 2c 20 22 43 57 | 44 20 25 73 5c 72 5c 6e |fer, "CW|D %s\r\n|
|0000c190| 22 2c 20 73 70 2d 3e 72 | 6f 6f 74 29 3b 0a 09 7d |", sp->r|oot);..}|
|0000c1a0| 20 65 6c 73 65 20 7b 0a | 09 09 73 74 72 63 70 79 | else {.|..strcpy|
|0000c1b0| 28 73 70 2d 3e 72 65 61 | 64 5f 62 75 66 66 65 72 |(sp->rea|d_buffer|
|0000c1c0| 2c 20 22 43 57 44 5c 72 | 5c 6e 22 29 3b 0a 09 7d |, "CWD\r|\n");..}|
|0000c1d0| 0a 09 0a 09 69 66 20 28 | 63 6f 6e 74 72 6f 6c 5f |....if (|control_|
|0000c1e0| 77 72 69 74 65 28 73 70 | 2c 20 73 70 2d 3e 72 65 |write(sp|, sp->re|
|0000c1f0| 61 64 5f 62 75 66 66 65 | 72 2c 20 30 29 20 21 3d |ad_buffe|r, 0) !=|
|0000c200| 20 4e 4f 5f 45 52 52 4f | 52 29 20 7b 0a 09 09 73 | NO_ERRO|R) {...s|
|0000c210| 68 6f 77 5f 73 74 72 69 | 6e 67 28 22 63 68 61 6e |how_stri|ng("chan|
|0000c220| 67 65 20 64 69 72 20 66 | 61 69 6c 65 64 20 31 22 |ge dir f|ailed 1"|
|0000c230| 29 3b 0a 09 09 0a 09 09 | 64 69 73 63 6f 6e 6e 65 |);......|disconne|
|0000c240| 63 74 28 73 70 29 3b 0a | 09 09 0a 09 09 72 65 74 |ct(sp);.|.....ret|
|0000c250| 75 72 6e 20 66 61 6c 73 | 65 3b 0a 09 7d 0a 09 0a |urn fals|e;..}...|
|0000c260| 09 2f 2a 20 74 68 69 73 | 20 43 57 44 20 69 73 20 |./* this| CWD is |
|0000c270| 76 69 74 61 6c 20 2a 2f | 0a 09 0a 09 69 66 20 28 |vital */|....if (|
|0000c280| 72 65 73 70 6f 6e 73 65 | 28 73 70 2c 20 30 2c 20 |response|(sp, 0, |
|0000c290| 26 69 6e 66 6f 2c 20 72 | 65 70 6c 79 29 20 21 3d |&info, r|eply) !=|
|0000c2a0| 20 4e 4f 5f 45 52 52 4f | 52 29 20 7b 0a 09 09 73 | NO_ERRO|R) {...s|
|0000c2b0| 68 6f 77 5f 73 74 72 69 | 6e 67 28 22 63 68 61 6e |how_stri|ng("chan|
|0000c2c0| 67 65 20 64 69 72 20 66 | 61 69 6c 65 64 20 32 22 |ge dir f|ailed 2"|
|0000c2d0| 29 3b 0a 09 09 0a 09 09 | 64 69 73 63 6f 6e 6e 65 |);......|disconne|
|0000c2e0| 63 74 28 73 70 29 3b 0a | 09 09 0a 09 09 72 65 74 |ct(sp);.|.....ret|
|0000c2f0| 75 72 6e 20 66 61 6c 73 | 65 3b 0a 09 7d 0a 09 0a |urn fals|e;..}...|
|0000c300| 09 69 66 20 28 69 6e 66 | 6f 29 20 64 65 61 6c 6c |.if (inf|o) deall|
|0000c310| 6f 63 61 74 65 28 69 6e | 66 6f 2c 20 56 5f 63 73 |ocate(in|fo, V_cs|
|0000c320| 74 72 29 3b 0a 09 0a 09 | 69 66 20 28 72 65 70 6c |tr);....|if (repl|
|0000c330| 79 5b 30 5d 20 21 3d 20 | 27 32 27 29 20 7b 0a 09 |y[0] != |'2') {..|
|0000c340| 09 73 68 6f 77 5f 73 74 | 72 69 6e 67 28 22 63 68 |.show_st|ring("ch|
|0000c350| 61 6e 67 65 20 64 69 72 | 20 66 61 69 6c 65 64 20 |ange dir| failed |
|0000c360| 33 22 29 3b 0a 09 09 0a | 09 09 64 69 73 63 6f 6e |3");....|..discon|
|0000c370| 6e 65 63 74 28 73 70 29 | 3b 0a 09 09 0a 09 09 72 |nect(sp)|;......r|
|0000c380| 65 74 75 72 6e 20 66 61 | 6c 73 65 3b 0a 09 7d 0a |eturn fa|lse;..}.|
|0000c390| 09 0a 09 2f 2a 0a 09 20 | 2a 20 6f 6b 2c 20 77 65 |.../*.. |* ok, we|
|0000c3a0| 20 61 72 65 20 61 74 20 | 28 73 68 6f 75 6c 64 20 | are at |(should |
|0000c3b0| 62 65 20 61 74 20 3a 29 | 20 74 68 65 20 72 6f 6f |be at :)| the roo|
|0000c3c0| 74 20 28 6f 72 20 61 74 | 20 6c 65 61 73 74 20 77 |t (or at| least w|
|0000c3d0| 68 61 74 0a 09 20 2a 20 | 77 65 20 63 6f 6e 73 69 |hat.. * |we consi|
|0000c3e0| 64 65 72 20 74 6f 20 62 | 65 20 74 68 65 20 72 6f |der to b|e the ro|
|0000c3f0| 6f 74 29 20 6f 66 20 74 | 68 65 20 46 53 0a 09 20 |ot) of t|he FS.. |
|0000c400| 2a 2f 0a 09 0a 09 69 66 | 20 28 6e 65 77 5f 64 69 |*/....if| (new_di|
|0000c410| 72 5b 30 5d 20 3d 3d 20 | 30 29 20 7b 0a 09 09 2f |r[0] == |0) {.../|
|0000c420| 2a 20 74 68 65 79 20 77 | 61 6e 74 65 64 20 74 6f |* they w|anted to|
|0000c430| 20 63 68 61 6e 67 65 20 | 74 6f 20 74 68 65 20 72 | change |to the r|
|0000c440| 6f 6f 74 20 2e 2e 2e 20 | 73 6f 20 6e 6f 74 68 69 |oot ... |so nothi|
|0000c450| 6e 67 20 66 75 72 74 68 | 65 72 20 6e 65 65 64 20 |ng furth|er need |
|0000c460| 62 65 20 64 6f 6e 65 20 | 2a 2f 0a 09 09 72 65 74 |be done |*/...ret|
|0000c470| 75 72 6e 20 74 72 75 65 | 3b 0a 09 7d 0a 0a 09 69 |urn true|;..}...i|
|0000c480| 66 20 28 73 70 2d 3e 75 | 6e 69 78 5f 70 61 74 68 |f (sp->u|nix_path|
|0000c490| 73 29 20 7b 0a 09 09 73 | 70 72 69 6e 74 66 28 73 |s) {...s|printf(s|
|0000c4a0| 70 2d 3e 72 65 61 64 5f | 62 75 66 66 65 72 2c 20 |p->read_|buffer, |
|0000c4b0| 22 43 57 44 20 25 73 5c | 72 5c 6e 22 2c 20 6e 65 |"CWD %s\|r\n", ne|
|0000c4c0| 77 5f 64 69 72 29 3b 0a | 09 09 0a 09 09 69 66 20 |w_dir);.|.....if |
|0000c4d0| 28 63 6f 6e 74 72 6f 6c | 5f 77 72 69 74 65 28 73 |(control|_write(s|
|0000c4e0| 70 2c 20 73 70 2d 3e 72 | 65 61 64 5f 62 75 66 66 |p, sp->r|ead_buff|
|0000c4f0| 65 72 2c 20 30 29 20 21 | 3d 20 4e 4f 5f 45 52 52 |er, 0) !|= NO_ERR|
|0000c500| 4f 52 29 20 7b 0a 09 09 | 09 73 68 6f 77 5f 73 74 |OR) {...|.show_st|
|0000c510| 72 69 6e 67 28 22 63 68 | 61 6e 67 65 20 64 69 72 |ring("ch|ange dir|
|0000c520| 20 66 61 69 6c 65 64 20 | 34 22 29 3b 0a 09 09 09 | failed |4");....|
|0000c530| 0a 09 09 09 64 69 73 63 | 6f 6e 6e 65 63 74 28 73 |....disc|onnect(s|
|0000c540| 70 29 3b 0a 09 09 09 0a | 09 09 09 72 65 74 75 72 |p);.....|...retur|
|0000c550| 6e 20 66 61 6c 73 65 3b | 0a 09 09 7d 0a 09 09 0a |n false;|...}....|
|0000c560| 09 09 69 66 20 28 72 65 | 73 70 6f 6e 73 65 28 73 |..if (re|sponse(s|
|0000c570| 70 2c 20 30 2c 20 26 69 | 6e 66 6f 2c 20 72 65 70 |p, 0, &i|nfo, rep|
|0000c580| 6c 79 29 20 21 3d 20 4e | 4f 5f 45 52 52 4f 52 29 |ly) != N|O_ERROR)|
|0000c590| 20 7b 0a 09 09 09 73 68 | 6f 77 5f 73 74 72 69 6e | {....sh|ow_strin|
|0000c5a0| 67 28 22 63 68 61 6e 67 | 65 20 64 69 72 20 66 61 |g("chang|e dir fa|
|0000c5b0| 69 6c 65 64 20 35 22 29 | 3b 0a 09 09 09 0a 09 09 |iled 5")|;.......|
|0000c5c0| 09 64 69 73 63 6f 6e 6e | 65 63 74 28 73 70 29 3b |.disconn|ect(sp);|
|0000c5d0| 0a 09 09 09 0a 09 09 09 | 72 65 74 75 72 6e 20 66 |........|return f|
|0000c5e0| 61 6c 73 65 3b 0a 09 09 | 7d 0a 09 09 0a 09 09 69 |alse;...|}......i|
|0000c5f0| 66 20 28 69 6e 66 6f 29 | 20 64 65 61 6c 6c 6f 63 |f (info)| dealloc|
|0000c600| 61 74 65 28 69 6e 66 6f | 2c 20 56 5f 63 73 74 72 |ate(info|, V_cstr|
|0000c610| 29 3b 0a 09 09 0a 09 09 | 69 66 20 28 72 65 70 6c |);......|if (repl|
|0000c620| 79 5b 30 5d 20 3d 3d 20 | 27 32 27 29 20 7b 0a 09 |y[0] == |'2') {..|
|0000c630| 09 09 73 70 2d 3e 63 77 | 64 20 3d 20 28 62 38 20 |..sp->cw|d = (b8 |
|0000c640| 2a 29 61 6c 6c 6f 63 61 | 74 65 28 73 74 72 6c 65 |*)alloca|te(strle|
|0000c650| 6e 28 6e 65 77 5f 64 69 | 72 29 20 2b 20 31 2c 20 |n(new_di|r) + 1, |
|0000c660| 56 5f 63 73 74 72 29 3b | 0a 09 09 09 69 66 20 28 |V_cstr);|....if (|
|0000c670| 73 70 2d 3e 63 77 64 29 | 20 7b 0a 09 09 09 09 73 |sp->cwd)| {.....s|
|0000c680| 74 72 63 70 79 28 73 70 | 2d 3e 63 77 64 2c 20 6e |trcpy(sp|->cwd, n|
|0000c690| 65 77 5f 64 69 72 29 3b | 0a 09 09 09 09 72 65 74 |ew_dir);|.....ret|
|0000c6a0| 75 72 6e 20 74 72 75 65 | 3b 0a 09 09 09 7d 0a 09 |urn true|;....}..|
|0000c6b0| 09 09 67 6f 74 6f 20 66 | 61 69 6c 5f 74 6f 5f 72 |..goto f|ail_to_r|
|0000c6c0| 6f 6f 74 3b 0a 09 09 7d | 0a 09 09 0a 09 09 2f 2a |oot;...}|....../*|
|0000c6d0| 20 6f 6b 2c 20 6f 75 72 | 20 63 6c 75 6d 70 65 64 | ok, our| clumped|
|0000c6e0| 20 63 77 64 20 64 69 64 | 6e 27 74 20 77 6f 72 6b | cwd did|n't work|
|0000c6f0| 2c 20 6c 65 74 73 20 74 | 72 79 20 69 74 20 74 68 |, lets t|ry it th|
|0000c700| 65 20 73 6c 6f 77 20 77 | 61 79 20 2a 2f 0a 09 7d |e slow w|ay */..}|
|0000c710| 0a 0a 09 73 20 3d 20 7a | 20 3d 20 6e 65 77 5f 64 |...s = z| = new_d|
|0000c720| 69 72 3b 0a 09 77 68 69 | 6c 65 20 28 2a 7a 29 20 |ir;..whi|le (*z) |
|0000c730| 7b 0a 09 09 77 68 69 6c | 65 20 28 2a 73 20 26 26 |{...whil|e (*s &&|
|0000c740| 20 2a 73 20 21 3d 20 27 | 2f 27 29 20 73 2b 2b 3b | *s != '|/') s++;|
|0000c750| 0a 09 09 0a 09 09 69 66 | 20 28 2a 73 20 3d 3d 20 |......if| (*s == |
|0000c760| 27 2f 27 29 20 7b 0a 09 | 09 09 2a 73 20 3d 20 30 |'/') {..|..*s = 0|
|0000c770| 3b 0a 09 09 09 73 70 72 | 69 6e 74 66 28 73 70 2d |;....spr|intf(sp-|
|0000c780| 3e 72 65 61 64 5f 62 75 | 66 66 65 72 2c 20 22 43 |>read_bu|ffer, "C|
|0000c790| 57 44 20 25 73 5c 72 5c | 6e 22 2c 20 7a 29 3b 0a |WD %s\r\|n", z);.|
|0000c7a0| 09 09 09 2a 73 2b 2b 20 | 3d 20 27 2f 27 3b 0a 09 |...*s++ |= '/';..|
|0000c7b0| 09 7d 20 65 6c 73 65 20 | 7b 0a 09 09 09 73 70 72 |.} else |{....spr|
|0000c7c0| 69 6e 74 66 28 73 70 2d | 3e 72 65 61 64 5f 62 75 |intf(sp-|>read_bu|
|0000c7d0| 66 66 65 72 2c 20 22 43 | 57 44 20 25 73 5c 72 5c |ffer, "C|WD %s\r\|
|0000c7e0| 6e 22 2c 20 7a 29 3b 0a | 09 09 7d 0a 09 09 0a 09 |n", z);.|..}.....|
|0000c7f0| 09 69 66 20 28 63 6f 6e | 74 72 6f 6c 5f 77 72 69 |.if (con|trol_wri|
|0000c800| 74 65 28 73 70 2c 20 73 | 70 2d 3e 72 65 61 64 5f |te(sp, s|p->read_|
|0000c810| 62 75 66 66 65 72 2c 20 | 30 29 20 21 3d 20 4e 4f |buffer, |0) != NO|
|0000c820| 5f 45 52 52 4f 52 29 20 | 7b 0a 09 09 09 73 68 6f |_ERROR) |{....sho|
|0000c830| 77 5f 73 74 72 69 6e 67 | 28 22 63 68 61 6e 67 65 |w_string|("change|
|0000c840| 20 64 69 72 20 66 61 69 | 6c 65 64 20 36 22 29 3b | dir fai|led 6");|
|0000c850| 0a 09 09 09 0a 09 09 09 | 64 69 73 63 6f 6e 6e 65 |........|disconne|
|0000c860| 63 74 28 73 70 29 3b 0a | 09 09 09 0a 09 09 09 72 |ct(sp);.|.......r|
|0000c870| 65 74 75 72 6e 20 66 61 | 6c 73 65 3b 0a 09 09 7d |eturn fa|lse;...}|
|0000c880| 0a 09 09 0a 09 09 69 66 | 20 28 72 65 73 70 6f 6e |......if| (respon|
|0000c890| 73 65 28 73 70 2c 20 30 | 2c 20 26 69 6e 66 6f 2c |se(sp, 0|, &info,|
|0000c8a0| 20 72 65 70 6c 79 29 20 | 21 3d 20 4e 4f 5f 45 52 | reply) |!= NO_ER|
|0000c8b0| 52 4f 52 29 20 7b 0a 09 | 09 09 73 68 6f 77 5f 73 |ROR) {..|..show_s|
|0000c8c0| 74 72 69 6e 67 28 22 63 | 68 61 6e 67 65 20 64 69 |tring("c|hange di|
|0000c8d0| 72 20 66 61 69 6c 65 64 | 20 37 22 29 3b 0a 09 09 |r failed| 7");...|
|0000c8e0| 09 0a 09 09 09 64 69 73 | 63 6f 6e 6e 65 63 74 28 |.....dis|connect(|
|0000c8f0| 73 70 29 3b 0a 09 09 09 | 0a 09 09 09 72 65 74 75 |sp);....|....retu|
|0000c900| 72 6e 20 66 61 6c 73 65 | 3b 0a 09 09 7d 0a 09 09 |rn false|;...}...|
|0000c910| 0a 09 09 69 66 20 28 69 | 6e 66 6f 29 20 64 65 61 |...if (i|nfo) dea|
|0000c920| 6c 6c 6f 63 61 74 65 28 | 69 6e 66 6f 2c 20 56 5f |llocate(|info, V_|
|0000c930| 63 73 74 72 29 3b 0a 09 | 09 0a 09 09 69 66 20 28 |cstr);..|....if (|
|0000c940| 72 65 70 6c 79 5b 30 5d | 20 21 3d 20 27 32 27 29 |reply[0]| != '2')|
|0000c950| 20 7b 0a 09 09 09 67 6f | 74 6f 20 66 61 69 6c 5f | {....go|to fail_|
|0000c960| 74 6f 5f 72 6f 6f 74 3b | 0a 09 09 7d 0a 09 09 0a |to_root;|...}....|
|0000c970| 09 09 7a 20 3d 20 73 3b | 0a 09 7d 0a 09 0a 09 2f |..z = s;|..}..../|
|0000c980| 2a 20 77 65 27 76 65 20 | 73 75 63 63 65 65 64 65 |* we've |succeede|
|0000c990| 64 20 77 68 65 72 65 20 | 75 6e 69 78 5f 70 61 74 |d where |unix_pat|
|0000c9a0| 68 73 20 66 61 69 6c 65 | 64 2c 20 73 6f 20 2e 2e |hs faile|d, so ..|
|0000c9b0| 2e 20 2a 2f 0a 09 0a 09 | 73 70 2d 3e 75 6e 69 78 |. */....|sp->unix|
|0000c9c0| 5f 70 61 74 68 73 20 3d | 20 66 61 6c 73 65 3b 0a |_paths =| false;.|
|0000c9d0| 09 0a 09 73 70 2d 3e 63 | 77 64 20 3d 20 28 62 38 |...sp->c|wd = (b8|
|0000c9e0| 20 2a 29 61 6c 6c 6f 63 | 61 74 65 28 73 74 72 6c | *)alloc|ate(strl|
|0000c9f0| 65 6e 28 6e 65 77 5f 64 | 69 72 29 20 2b 20 31 2c |en(new_d|ir) + 1,|
|0000ca00| 20 56 5f 63 73 74 72 29 | 3b 0a 09 69 66 20 28 73 | V_cstr)|;..if (s|
|0000ca10| 70 2d 3e 63 77 64 29 20 | 7b 0a 09 09 73 74 72 63 |p->cwd) |{...strc|
|0000ca20| 70 79 28 73 70 2d 3e 63 | 77 64 2c 20 6e 65 77 5f |py(sp->c|wd, new_|
|0000ca30| 64 69 72 29 3b 0a 09 09 | 72 65 74 75 72 6e 20 74 |dir);...|return t|
|0000ca40| 72 75 65 3b 0a 09 7d 0a | 09 0a 66 61 69 6c 5f 74 |rue;..}.|..fail_t|
|0000ca50| 6f 5f 72 6f 6f 74 3a 0a | 09 2f 2a 20 73 6f 6d 65 |o_root:.|./* some|
|0000ca60| 74 68 69 6e 67 20 77 65 | 6e 74 20 77 72 6f 6e 67 |thing we|nt wrong|
|0000ca70| 20 2e 2e 2e 20 77 68 6f | 20 6b 6e 6f 77 73 20 77 | ... who| knows w|
|0000ca80| 68 65 72 65 20 77 65 20 | 61 72 65 3f 20 2e 2e 2e |here we |are? ...|
|0000ca90| 20 67 6f 20 62 61 63 6b | 20 74 6f 20 74 68 65 20 | go back| to the |
|0000caa0| 72 6f 6f 74 20 2a 2f 0a | 09 0a 09 69 66 20 28 73 |root */.|...if (s|
|0000cab0| 70 2d 3e 72 6f 6f 74 29 | 20 7b 0a 09 09 73 70 72 |p->root)| {...spr|
|0000cac0| 69 6e 74 66 28 73 70 2d | 3e 72 65 61 64 5f 62 75 |intf(sp-|>read_bu|
|0000cad0| 66 66 65 72 2c 20 22 43 | 57 44 20 25 73 5c 72 5c |ffer, "C|WD %s\r\|
|0000cae0| 6e 22 2c 20 73 70 2d 3e | 72 6f 6f 74 29 3b 0a 09 |n", sp->|root);..|
|0000caf0| 7d 20 65 6c 73 65 20 7b | 0a 09 09 73 74 72 63 70 |} else {|...strcp|
|0000cb00| 79 28 73 70 2d 3e 72 65 | 61 64 5f 62 75 66 66 65 |y(sp->re|ad_buffe|
|0000cb10| 72 2c 20 22 43 57 44 5c | 72 5c 6e 22 29 3b 0a 09 |r, "CWD\|r\n");..|
|0000cb20| 7d 0a 09 0a 09 69 66 20 | 28 63 6f 6e 74 72 6f 6c |}....if |(control|
|0000cb30| 5f 77 72 69 74 65 28 73 | 70 2c 20 73 70 2d 3e 72 |_write(s|p, sp->r|
|0000cb40| 65 61 64 5f 62 75 66 66 | 65 72 2c 20 30 29 20 21 |ead_buff|er, 0) !|
|0000cb50| 3d 20 4e 4f 5f 45 52 52 | 4f 52 29 20 7b 0a 09 09 |= NO_ERR|OR) {...|
|0000cb60| 73 68 6f 77 5f 73 74 72 | 69 6e 67 28 22 63 68 61 |show_str|ing("cha|
|0000cb70| 6e 67 65 20 64 69 72 20 | 66 61 69 6c 65 64 20 38 |nge dir |failed 8|
|0000cb80| 22 29 3b 0a 0a 09 09 64 | 69 73 63 6f 6e 6e 65 63 |");....d|isconnec|
|0000cb90| 74 28 73 70 29 3b 0a 09 | 09 0a 09 09 72 65 74 75 |t(sp);..|....retu|
|0000cba0| 72 6e 20 66 61 6c 73 65 | 3b 0a 09 7d 0a 09 0a 09 |rn false|;..}....|
|0000cbb0| 69 66 20 28 72 65 73 70 | 6f 6e 73 65 28 73 70 2c |if (resp|onse(sp,|
|0000cbc0| 20 30 2c 20 26 69 6e 66 | 6f 2c 20 72 65 70 6c 79 | 0, &inf|o, reply|
|0000cbd0| 29 20 21 3d 20 4e 4f 5f | 45 52 52 4f 52 29 20 7b |) != NO_|ERROR) {|
|0000cbe0| 0a 09 09 73 68 6f 77 5f | 73 74 72 69 6e 67 28 22 |...show_|string("|
|0000cbf0| 63 68 61 6e 67 65 20 64 | 69 72 20 66 61 69 6c 65 |change d|ir faile|
|0000cc00| 64 20 39 22 29 3b 0a 09 | 09 0a 09 09 64 69 73 63 |d 9");..|....disc|
|0000cc10| 6f 6e 6e 65 63 74 28 73 | 70 29 3b 0a 09 09 0a 09 |onnect(s|p);.....|
|0000cc20| 09 72 65 74 75 72 6e 20 | 66 61 6c 73 65 3b 0a 09 |.return |false;..|
|0000cc30| 7d 0a 09 0a 09 69 66 20 | 28 69 6e 66 6f 29 20 64 |}....if |(info) d|
|0000cc40| 65 61 6c 6c 6f 63 61 74 | 65 28 69 6e 66 6f 2c 20 |eallocat|e(info, |
|0000cc50| 56 5f 63 73 74 72 29 3b | 0a 09 0a 09 69 66 20 28 |V_cstr);|....if (|
|0000cc60| 72 65 70 6c 79 5b 30 5d | 20 3d 3d 20 27 32 27 29 |reply[0]| == '2')|
|0000cc70| 20 7b 0a 09 09 72 65 74 | 75 72 6e 20 66 61 6c 73 | {...ret|urn fals|
|0000cc80| 65 3b 0a 09 7d 0a 09 0a | 09 73 68 6f 77 5f 73 74 |e;..}...|.show_st|
|0000cc90| 72 69 6e 67 28 22 63 68 | 61 6e 67 65 20 64 69 72 |ring("ch|ange dir|
|0000cca0| 20 66 61 69 6c 65 64 20 | 31 30 22 29 3b 0a 0a 09 | failed |10");...|
|0000ccb0| 64 69 73 63 6f 6e 6e 65 | 63 74 28 73 70 29 3b 0a |disconne|ct(sp);.|
|0000ccc0| 09 0a 09 72 65 74 75 72 | 6e 20 66 61 6c 73 65 3b |...retur|n false;|
|0000ccd0| 0a 7d 0a 0a 62 38 20 2a | 63 64 5f 70 61 72 65 6e |.}..b8 *|cd_paren|
|0000cce0| 74 28 73 69 74 65 20 2a | 73 70 2c 20 62 38 20 2a |t(site *|sp, b8 *|
|0000ccf0| 70 61 74 68 29 0a 2f 2a | 0a 20 2a 20 63 68 61 6e |path)./*|. * chan|
|0000cd00| 67 65 20 74 6f 20 74 68 | 65 20 70 61 72 65 6e 74 |ge to th|e parent|
|0000cd10| 20 64 69 72 20 6f 66 20 | 74 68 65 20 6f 62 6a 65 | dir of |the obje|
|0000cd20| 63 74 20 64 65 73 63 72 | 69 62 65 64 20 62 79 20 |ct descr|ibed by |
|0000cd30| 70 61 74 68 0a 20 2a 20 | 49 6e 70 75 74 73 3a 0a |path. * |Inputs:.|
|0000cd40| 20 2a 09 73 70 09 3a 20 | 73 69 74 65 20 70 6f 69 | *.sp.: |site poi|
|0000cd50| 6e 74 65 72 0a 20 2a 09 | 70 61 74 68 09 3a 20 73 |nter. *.|path.: s|
|0000cd60| 74 72 69 6e 67 20 64 65 | 73 63 72 69 62 69 6e 67 |tring de|scribing|
|0000cd70| 20 6f 62 6a 65 63 74 0a | 20 2a 0a 20 2a 20 52 65 | object.| *. * Re|
|0000cd80| 74 75 72 6e 73 3a 0a 20 | 2a 09 70 6f 69 6e 74 65 |turns:. |*.pointe|
|0000cd90| 72 20 74 6f 20 6c 65 61 | 66 20 6e 61 6d 65 20 28 |r to lea|f name (|
|0000cda0| 6c 61 73 74 20 63 6f 6d | 70 6f 6e 65 6e 74 20 6f |last com|ponent o|
|0000cdb0| 66 20 70 61 74 68 29 0a | 20 2a 09 6f 72 20 6e 69 |f path).| *.or ni|
|0000cdc0| 6c 20 2e 2e 2e 20 67 65 | 6e 65 72 61 6c 6c 79 20 |l ... ge|nerally |
|0000cdd0| 69 6e 64 69 63 61 74 65 | 73 20 67 72 6f 73 73 20 |indicate|s gross |
|0000cde0| 65 72 72 6f 72 20 6f 72 | 20 64 69 72 20 6e 6f 74 |error or| dir not|
|0000cdf0| 20 66 6f 75 6e 64 0a 20 | 2a 2f 0a 7b 0a 09 62 38 | found. |*/.{..b8|
|0000ce00| 20 2a 6c 65 61 66 3b 0a | 09 62 6f 6f 6c 65 61 6e | *leaf;.|.boolean|
|0000ce10| 20 63 64 3b 0a 09 0a 09 | 76 65 72 69 66 79 28 73 | cd;....|verify(s|
|0000ce20| 70 2c 20 56 5f 73 69 74 | 65 29 3b 0a 09 74 72 75 |p, V_sit|e);..tru|
|0000ce30| 74 68 28 70 61 74 68 20 | 21 3d 20 6e 69 6c 29 3b |th(path |!= nil);|
|0000ce40| 0a 0a 09 2f 2a 20 73 74 | 61 72 74 20 61 74 20 65 |.../* st|art at e|
|0000ce50| 6e 64 20 6f 66 20 70 61 | 74 68 6e 61 6d 65 20 61 |nd of pa|thname a|
|0000ce60| 6e 64 20 77 6f 72 6b 20 | 62 61 63 6b 20 74 69 6c |nd work |back til|
|0000ce70| 20 77 65 20 66 69 6e 64 | 20 61 20 2f 20 2a 2f 0a | we find| a / */.|
|0000ce80| 09 0a 09 6c 65 61 66 20 | 3d 20 70 61 74 68 20 2b |...leaf |= path +|
|0000ce90| 20 73 74 72 6c 65 6e 28 | 70 61 74 68 29 20 2d 20 | strlen(|path) - |
|0000cea0| 31 3b 0a 09 77 68 69 6c | 65 20 28 6c 65 61 66 20 |1;..whil|e (leaf |
|0000ceb0| 3e 20 70 61 74 68 20 26 | 26 20 2a 6c 65 61 66 20 |> path &|& *leaf |
|0000cec0| 21 3d 20 27 2f 27 29 20 | 6c 65 61 66 2d 2d 3b 0a |!= '/') |leaf--;.|
|0000ced0| 09 0a 09 69 66 20 28 6c | 65 61 66 20 3d 3d 20 70 |...if (l|eaf == p|
|0000cee0| 61 74 68 29 20 7b 0a 09 | 09 2f 2a 20 6e 6f 20 2f |ath) {..|./* no /|
|0000cef0| 2c 20 73 6f 20 77 65 20 | 61 72 65 20 74 61 6c 6b |, so we |are talk|
|0000cf00| 69 6e 67 20 61 62 6f 75 | 74 20 61 6e 20 6f 62 6a |ing abou|t an obj|
|0000cf10| 65 63 74 20 69 6e 20 74 | 68 65 20 72 6f 6f 74 20 |ect in t|he root |
|0000cf20| 64 69 72 20 2a 2f 0a 09 | 09 0a 09 09 63 64 20 3d |dir */..|....cd =|
|0000cf30| 20 63 68 61 6e 67 65 5f | 64 69 72 28 73 70 2c 20 | change_|dir(sp, |
|0000cf40| 22 22 29 3b 0a 09 7d 20 | 65 6c 73 65 20 7b 0a 09 |"");..} |else {..|
|0000cf50| 09 2f 2a 20 74 65 6d 70 | 6f 72 61 72 69 6c 79 20 |./* temp|orarily |
|0000cf60| 6b 6e 6f 63 6b 20 6f 75 | 74 20 2f 20 74 6f 20 67 |knock ou|t / to g|
|0000cf70| 65 74 20 70 61 72 65 6e | 74 20 70 61 74 68 20 2a |et paren|t path *|
|0000cf80| 2f 0a 09 09 0a 09 09 2a | 6c 65 61 66 20 3d 20 30 |/......*|leaf = 0|
|0000cf90| 3b 0a 09 09 63 64 20 3d | 20 63 68 61 6e 67 65 5f |;...cd =| change_|
|0000cfa0| 64 69 72 28 73 70 2c 20 | 70 61 74 68 29 3b 0a 09 |dir(sp, |path);..|
|0000cfb0| 09 0a 09 09 2f 2a 20 74 | 68 65 6e 20 72 65 73 74 |..../* t|hen rest|
|0000cfc0| 6f 72 65 20 74 68 65 20 | 2f 20 61 6e 64 20 6d 6f |ore the |/ and mo|
|0000cfd0| 76 65 20 6f 76 65 72 20 | 69 74 20 2a 2f 0a 09 09 |ve over |it */...|
|0000cfe0| 2a 6c 65 61 66 2b 2b 20 | 3d 20 27 2f 27 3b 0a 09 |*leaf++ |= '/';..|
|0000cff0| 7d 0a 09 0a 09 69 66 20 | 28 63 64 29 20 72 65 74 |}....if |(cd) ret|
|0000d000| 75 72 6e 20 6c 65 61 66 | 3b 0a 09 65 6c 73 65 20 |urn leaf|;..else |
|0000d010| 72 65 74 75 72 6e 20 6e | 69 6c 3b 0a 7d 0a 0a 76 |return n|il;.}..v|
|0000d020| 6f 69 64 20 63 6f 6e 76 | 65 72 74 5f 6e 74 5f 65 |oid conv|ert_nt_e|
|0000d030| 6e 74 72 79 28 62 38 20 | 2a 69 73 29 20 20 20 20 |ntry(b8 |*is) |
|0000d040| 20 20 20 20 20 20 2f 2f | 20 49 6e 70 75 74 20 53 | //| Input S|
|0000d050| 74 72 69 6e 67 20 66 72 | 6f 6d 20 61 64 64 5f 69 |tring fr|om add_i|
|0000d060| 6e 66 6f 28 29 0a 2f 2a | 0a 20 2a 20 20 69 66 20 |nfo()./*|. * if |
|0000d070| 74 68 69 73 20 69 73 20 | 61 20 57 69 6e 4e 54 20 |this is |a WinNT |
|0000d080| 65 6e 74 72 79 2c 20 63 | 6f 6e 76 65 72 74 20 28 |entry, c|onvert (|
|0000d090| 69 6e 20 70 6c 61 63 65 | 29 20 74 6f 20 61 0a 20 |in place|) to a. |
|0000d0a0| 2a 20 20 2a 6e 69 78 20 | 73 74 79 6c 65 20 72 65 |* *nix |style re|
|0000d0b0| 63 6f 72 64 2e 20 28 55 | 6e 69 78 2c 20 4c 69 6e |cord. (U|nix, Lin|
|0000d0c0| 75 78 2c 20 58 65 6e 69 | 78 2e 2e 2e 29 0a 20 2a |ux, Xeni|x...). *|
|0000d0d0| 0a 20 2a 20 20 30 33 2f | 30 39 2f 39 36 20 52 6f |. * 03/|09/96 Ro|
|0000d0e0| 6e 20 46 6c 6f 72 79 20 | 28 52 4a 46 29 0a 20 2a |n Flory |(RJF). *|
|0000d0f0| 0a 20 2a 20 20 54 68 69 | 73 20 66 75 6e 63 74 69 |. * Thi|s functi|
|0000d100| 6f 6e 20 6b 69 6e 64 6c | 79 20 64 6f 6e 61 74 65 |on kindl|y donate|
|0000d110| 64 20 62 79 20 52 6f 6e | 20 46 6c 6f 72 79 20 28 |d by Ron| Flory (|
|0000d120| 29 2c 20 61 6e 64 20 72 | 65 6d 61 69 6e 20 43 6f |), and r|emain Co|
|0000d130| 70 79 72 69 67 68 74 20 | 31 39 39 36 2c 0a 20 2a |pyright |1996,. *|
|0000d140| 20 20 61 6c 6c 20 72 69 | 67 68 74 73 20 72 65 73 | all ri|ghts res|
|0000d150| 65 72 76 65 64 20 62 79 | 20 68 69 6d 2e 0a 20 2a |erved by| him.. *|
|0000d160| 2f 0a 7b 0a 09 73 74 61 | 74 69 63 20 62 38 20 20 |/.{..sta|tic b8 |
|0000d170| 09 2a 6e 74 5f 62 75 66 | 20 3d 20 30 3b 20 20 20 |.*nt_buf| = 0; |
|0000d180| 20 20 20 20 20 20 20 20 | 20 2f 2f 20 61 6c 6c 6f | | // allo|
|0000d190| 63 20 6f 6e 63 65 2c 20 | 62 75 74 20 4e 45 56 45 |c once, |but NEVE|
|0000d1a0| 52 20 66 72 65 65 20 28 | 3f 3f 29 0a 09 73 74 61 |R free (|??)..sta|
|0000d1b0| 74 69 63 20 63 68 61 72 | 09 2a 6d 6f 6e 74 68 73 |tic char|.*months|
|0000d1c0| 5b 5d 20 3d 20 7b 09 22 | 4a 61 6e 20 22 2c 20 22 |[] = {."|Jan ", "|
|0000d1d0| 46 65 62 20 22 2c 20 22 | 4d 61 72 20 22 2c 20 22 |Feb ", "|Mar ", "|
|0000d1e0| 41 70 72 20 22 2c 20 22 | 4d 61 79 20 22 2c 20 22 |Apr ", "|May ", "|
|0000d1f0| 4a 75 6e 20 22 2c 0a 09 | 09 09 09 09 22 4a 75 6c |Jun ",..|...."Jul|
|0000d200| 20 22 2c 20 22 41 75 67 | 20 22 2c 20 22 53 65 70 | ", "Aug| ", "Sep|
|0000d210| 20 22 2c 20 22 4f 63 74 | 20 22 2c 20 22 4e 6f 76 | ", "Oct| ", "Nov|
|0000d220| 20 22 2c 20 22 44 65 63 | 20 22 20 7d 3b 0a 09 62 | ", "Dec| " };..b|
|0000d230| 38 09 09 2a 63 31 2c 20 | 2a 63 32 2c 20 74 62 75 |8..*c1, |*c2, tbu|
|0000d240| 66 5b 33 32 5d 2c 20 63 | 3b 0a 09 73 68 6f 72 74 |f[32], c|;..short|
|0000d250| 20 69 3b 0a 0a 09 69 66 | 20 28 21 6e 74 5f 62 75 | i;...if| (!nt_bu|
|0000d260| 66 29 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |f) | |
|0000d270| 20 20 20 20 20 20 20 20 | 20 20 2f 2f 20 69 66 20 | | // if |
|0000d280| 6f 75 72 20 63 6f 6e 76 | 65 72 73 69 6f 6e 20 62 |our conv|ersion b|
|0000d290| 75 66 20 6e 6f 74 20 61 | 6c 6c 6f 63 27 64 0a 09 |uf not a|lloc'd..|
|0000d2a0| 09 6e 74 5f 62 75 66 20 | 3d 20 28 62 38 2a 29 20 |.nt_buf |= (b8*) |
|0000d2b0| 6d 61 6c 6c 6f 63 28 52 | 45 41 44 5f 42 55 46 46 |malloc(R|EAD_BUFF|
|0000d2c0| 45 52 5f 4c 45 4e 47 54 | 48 29 3b 0a 0a 09 2f 2f |ER_LENGT|H);...//|
|0000d2d0| 20 2a 2a 2a 2a 2a 20 76 | 65 72 69 66 79 20 69 6e | ***** v|erify in|
|0000d2e0| 62 75 66 66 65 72 20 76 | 69 61 62 6c 65 2c 20 4d |buffer v|iable, M|
|0000d2f0| 73 44 6f 73 2d 6c 69 6b | 65 2c 20 63 6f 6e 76 65 |sDos-lik|e, conve|
|0000d300| 72 73 69 6f 6e 20 62 75 | 66 20 61 6c 6c 6f 63 27 |rsion bu|f alloc'|
|0000d310| 64 20 2a 2a 2a 2a 2a 0a | 0a 09 69 66 20 28 20 28 |d *****.|..if ( (|
|0000d320| 21 69 73 29 20 7c 7c 20 | 28 21 6e 74 5f 62 75 66 |!is) || |(!nt_buf|
|0000d330| 29 20 7c 7c 20 28 21 69 | 73 64 69 67 69 74 28 2a |) || (!i|sdigit(*|
|0000d340| 69 73 29 29 20 7c 7c 20 | 28 73 74 72 6c 65 6e 28 |is)) || |(strlen(|
|0000d350| 69 73 29 20 3c 20 34 31 | 29 20 29 0a 09 09 72 65 |is) < 41|) )...re|
|0000d360| 74 75 72 6e 3b 0a 0a 09 | 2a 6e 74 5f 62 75 66 20 |turn;...|*nt_buf |
|0000d370| 3d 20 30 3b 20 20 20 20 | 20 20 20 20 20 20 20 20 |= 0; | |
|0000d380| 20 20 20 20 20 20 20 20 | 20 20 20 20 2f 2f 20 74 | | // t|
|0000d390| 65 72 6d 20 4e 54 2d 3e | 55 6e 69 78 20 63 6f 6e |erm NT->|Unix con|
|0000d3a0| 76 65 72 73 69 6f 6e 20 | 62 75 66 66 65 72 0a 09 |version |buffer..|
|0000d3b0| 63 31 20 3d 20 73 74 72 | 63 68 72 28 69 73 2c 20 |c1 = str|chr(is, |
|0000d3c0| 30 78 30 64 29 3b 20 20 | 20 20 20 20 20 20 20 20 |0x0d); | |
|0000d3d0| 20 20 20 20 2f 2f 20 6c | 6f 6f 6b 20 66 6f 72 20 | // l|ook for |
|0000d3e0| 4d 73 44 6f 73 20 43 52 | 0a 09 69 66 20 28 63 31 |MsDos CR|..if (c1|
|0000d3f0| 29 0a 09 09 2a 63 31 20 | 3d 20 30 3b 20 20 20 20 |)...*c1 |= 0; |
|0000d400| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|0000d410| 20 20 20 20 20 2f 2f 20 | 74 68 65 6e 2c 20 72 65 | // |then, re|
|0000d420| 6d 6f 76 65 20 43 52 0a | 0a 09 2f 2f 20 2a 2a 2a |move CR.|..// ***|
|0000d430| 2a 2a 20 61 76 6f 69 64 | 20 61 6c 74 65 72 69 6e |** avoid| alterin|
|0000d440| 67 20 27 69 73 27 20 75 | 6e 6c 65 73 73 20 74 68 |g 'is' u|nless th|
|0000d450| 69 73 20 72 65 61 6c 6c | 79 20 69 73 20 61 6e 20 |is reall|y is an |
|0000d460| 4d 73 44 6f 73 20 65 6e | 74 72 79 20 2a 2a 2a 2a |MsDos en|try ****|
|0000d470| 2a 0a 0a 0a 09 73 74 72 | 63 70 79 28 6e 74 5f 62 |*....str|cpy(nt_b|
|0000d480| 75 66 2c 20 22 2d 72 77 | 78 72 77 78 72 77 78 20 |uf, "-rw|xrwxrwx |
|0000d490| 39 20 78 20 78 20 22 29 | 3b 09 2f 2f 20 61 73 73 |9 x x ")|;.// ass|
|0000d4a0| 75 6d 65 20 74 68 69 73 | 20 69 73 20 61 20 66 69 |ume this| is a fi|
|0000d4b0| 6c 65 0a 09 09 09 09 09 | 09 2f 2f 20 70 6c 75 67 |le......|.// plug|
|0000d4c0| 20 64 75 6d 6d 79 20 66 | 69 65 6c 64 73 20 28 69 | dummy f|ields (i|
|0000d4d0| 67 6e 6f 72 65 64 29 0a | 09 09 09 09 09 09 2f 2f |gnored).|......//|
|0000d4e0| 20 4e 6f 74 65 3a 20 65 | 78 65 63 75 74 65 20 66 | Note: e|xecute f|
|0000d4f0| 6c 61 67 73 20 73 65 74 | 0a 0a 09 69 66 20 28 20 |lags set|...if ( |
|0000d500| 28 73 74 72 73 74 72 28 | 69 73 2c 20 22 3c 44 49 |(strstr(|is, "<DI|
|0000d510| 52 3e 22 29 29 20 7c 7c | 20 28 73 74 72 73 74 72 |R>")) ||| (strstr|
|0000d520| 28 69 73 2c 20 22 3c 64 | 69 72 3e 22 29 29 20 29 |(is, "<d|ir>")) )|
|0000d530| 20 2f 2f 20 64 69 72 65 | 63 74 6f 72 79 20 3f 0a | // dire|ctory ?.|
|0000d540| 09 7b 0a 09 09 2a 6e 74 | 5f 62 75 66 20 3d 20 27 |.{...*nt|_buf = '|
|0000d550| 64 27 3b 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |d'; | |
|0000d560| 20 20 20 20 20 20 2f 2f | 20 66 6f 72 63 65 20 64 | //| force d|
|0000d570| 69 72 65 63 74 6f 72 79 | 20 66 6c 61 67 20 69 6e |irectory| flag in|
|0000d580| 20 72 65 74 75 72 6e 20 | 62 75 66 0a 09 09 73 74 | return |buf...st|
|0000d590| 72 63 61 74 28 6e 74 5f | 62 75 66 2c 20 22 73 69 |rcat(nt_|buf, "si|
|0000d5a0| 7a 65 20 22 29 3b 20 20 | 20 20 20 20 20 20 20 2f |ze "); | /|
|0000d5b0| 2f 20 64 75 6d 6d 79 20 | 27 73 69 7a 65 27 20 28 |/ dummy |'size' (|
|0000d5c0| 69 67 6e 6f 72 65 64 20 | 6f 6e 20 64 69 72 73 29 |ignored |on dirs)|
|0000d5d0| 0a 09 7d 0a 09 65 6c 73 | 65 0a 09 7b 0a 09 09 2f |..}..els|e..{.../|
|0000d5e0| 2f 20 2a 2a 2a 2a 2a 20 | 65 78 74 72 61 63 74 20 |/ ***** |extract |
|0000d5f0| 66 69 6c 65 73 69 7a 65 | 20 2a 2a 2a 2a 2a 0a 0a |filesize| *****..|
|0000d600| 00 00 00 10 00 00 00 6b | 00 00 00 29 00 00 00 00 |.......k|...)....|
|0000d610| 00 00 00 00 ff ff ea bd | 00 00 00 00 00 00 00 00 |........|........|
|0000d620| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d630| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d640| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d650| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d660| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d670| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d680| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d690| 00 00 00 00 00 00 00 94 | 00 00 00 93 00 00 00 92 |........|........|
|0000d6a0| 00 00 00 91 00 00 00 90 | 00 00 00 8f 00 00 00 8e |........|........|
|0000d6b0| 00 00 00 8d 00 00 00 8c | 00 00 00 8b 00 00 00 8a |........|........|
|0000d6c0| 00 00 00 89 00 00 00 88 | 00 00 00 87 00 00 00 86 |........|........|
|0000d6d0| 00 00 00 85 00 00 00 84 | 00 00 00 83 00 00 00 82 |........|........|
|0000d6e0| 00 00 00 81 00 00 00 80 | 00 00 00 7f 00 00 00 7e |........|.......~|
|0000d6f0| 00 00 00 7d 00 00 00 7c | 00 00 00 7b 00 00 00 7a |...}...||...{...z|
|0000d700| 00 00 00 79 00 00 00 78 | 00 00 00 77 00 00 00 76 |...y...x|...w...v|
|0000d710| 00 00 00 75 00 00 00 74 | 00 00 00 73 00 00 00 72 |...u...t|...s...r|
|0000d720| 00 00 00 71 00 00 00 70 | 00 00 00 6f 00 00 00 6e |...q...p|...o...n|
|0000d730| 00 00 00 6d 00 00 00 6c | 00 00 00 00 00 00 00 00 |...m...l|........|
|0000d740| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d750| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d760| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d770| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d780| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d790| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d7a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d7b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d7c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d7d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d7e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0000d7f0| 00 00 00 00 00 00 00 22 | 00 00 00 00 ff ff ff fd |......."|........|
|0000d800| 09 09 63 31 20 3d 20 69 | 73 20 2b 33 30 3b 20 20 |..c1 = i|s +30; |
|0000d810| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|0000d820| 20 20 20 2f 2f 20 73 74 | 61 72 74 20 6f 66 20 6c | // st|art of l|
|0000d830| 65 6e 67 74 68 20 66 69 | 65 6c 64 0a 09 09 63 32 |ength fi|eld...c2|
|0000d840| 20 3d 20 6e 74 5f 62 75 | 66 20 2b 20 73 74 72 6c | = nt_bu|f + strl|
|0000d850| 65 6e 28 6e 74 5f 62 75 | 66 29 3b 0a 0a 09 09 77 |en(nt_bu|f);....w|
|0000d860| 68 69 6c 65 20 28 2a 63 | 31 20 3d 3d 20 27 20 27 |hile (*c|1 == ' '|
|0000d870| 29 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |) | |
|0000d880| 2f 2f 20 73 6b 69 70 20 | 6c 65 61 64 69 6e 67 20 |// skip |leading |
|0000d890| 73 70 61 63 65 73 0a 09 | 09 09 63 31 2b 2b 3b 0a |spaces..|..c1++;.|
|0000d8a0| 0a 09 09 77 68 69 6c 65 | 20 28 20 28 28 63 20 3d |...while| ( ((c =|
|0000d8b0| 20 2a 28 63 31 2b 2b 29 | 29 20 21 3d 20 30 29 20 | *(c1++)|) != 0) |
|0000d8c0| 26 26 20 28 63 20 3c 3d | 20 27 39 27 29 20 26 26 |&& (c <=| '9') &&|
|0000d8d0| 20 28 63 20 3e 20 27 20 | 27 29 20 29 0a 09 09 09 | (c > ' |') )....|
|0000d8e0| 69 66 20 28 63 20 21 3d | 20 27 2c 27 29 0a 09 09 |if (c !=| ',')...|
|0000d8f0| 09 09 2a 28 63 32 2b 2b | 29 20 3d 20 63 3b 20 20 |..*(c2++|) = c; |
|0000d900| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2f 2f 20 | | // |
|0000d910| 63 6f 70 79 20 66 69 6c | 65 73 69 7a 65 20 64 69 |copy fil|esize di|
|0000d920| 67 69 74 73 20 28 73 6b | 69 70 20 63 6f 6d 6d 61 |gits (sk|ip comma|
|0000d930| 73 29 0a 0a 09 09 2a 28 | 63 32 2b 2b 29 20 3d 20 |s)....*(|c2++) = |
|0000d940| 27 20 27 3b 20 20 20 20 | 20 20 20 20 20 20 20 20 |' '; | |
|0000d950| 20 20 20 20 20 20 20 2f | 2f 20 70 61 64 64 0a 09 | /|/ padd..|
|0000d960| 09 2a 63 32 20 20 20 20 | 20 3d 20 30 3b 20 20 20 |.*c2 | = 0; |
|0000d970| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|0000d980| 20 20 2f 2f 20 74 65 72 | 6d 0a 09 7d 0a 0a 09 2f | // ter|m..}.../|
|0000d990| 2f 20 2a 2a 2a 2a 2a 20 | 65 78 74 72 61 63 74 20 |/ ***** |extract |
|0000d9a0| 63 72 65 61 74 69 6f 6e | 20 64 61 74 65 20 2a 2a |creation| date **|
|0000d9b0| 2a 2a 2a 0a 0a 09 6d 65 | 6d 63 70 79 28 74 62 75 |***...me|mcpy(tbu|
|0000d9c0| 66 2c 20 69 73 2c 20 32 | 29 3b 20 20 20 20 20 20 |f, is, 2|); |
|0000d9d0| 20 20 20 20 20 20 20 20 | 20 20 2f 2f 20 6d 6f 6e | | // mon|
|0000d9e0| 74 68 20 64 69 67 69 74 | 73 20 28 30 31 2e 2e 31 |th digit|s (01..1|
|0000d9f0| 32 29 0a 09 74 62 75 66 | 5b 32 5d 20 3d 20 30 3b |2)..tbuf|[2] = 0;|
|0000da00| 0a 0a 09 69 20 3d 20 61 | 74 6f 6c 28 74 62 75 66 |...i = a|tol(tbuf|
|0000da10| 29 3b 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |); | |
|0000da20| 20 20 20 20 20 20 20 2f | 2f 20 63 6f 6e 76 65 72 | /|/ conver|
|0000da30| 74 20 64 69 67 69 74 73 | 20 74 6f 20 31 2e 2e 31 |t digits| to 1..1|
|0000da40| 32 20 6d 6f 6e 74 68 20 | 69 6e 64 65 78 0a 0a 09 |2 month |index...|
|0000da50| 69 66 20 28 20 28 69 29 | 20 26 26 20 28 69 20 3c |if ( (i)| && (i <|
|0000da60| 20 31 33 29 20 29 20 20 | 20 20 20 20 20 20 20 20 | 13) ) | |
|0000da70| 20 20 20 20 2f 2f 20 76 | 61 6c 69 64 20 6d 6f 6e | // v|alid mon|
|0000da80| 74 68 20 69 6e 64 65 78 | 20 3f 3f 0a 09 09 73 74 |th index| ??...st|
|0000da90| 72 63 61 74 28 6e 74 5f | 62 75 66 2c 20 6d 6f 6e |rcat(nt_|buf, mon|
|0000daa0| 74 68 73 5b 69 20 2d 31 | 5d 29 3b 20 20 20 20 2f |ths[i -1|]); /|
|0000dab0| 2f 20 69 6e 73 65 72 74 | 20 6d 6f 6e 74 68 20 73 |/ insert| month s|
|0000dac0| 74 72 69 6e 67 0a 09 6d | 65 6d 63 70 79 28 74 62 |tring..m|emcpy(tb|
|0000dad0| 75 66 2c 20 69 73 20 2b | 33 2c 20 32 29 3b 20 20 |uf, is +|3, 2); |
|0000dae0| 20 20 20 20 20 20 20 20 | 20 20 20 2f 2f 20 64 61 | | // da|
|0000daf0| 79 20 64 69 67 69 74 73 | 20 28 30 31 2e 2e 33 31 |y digits| (01..31|
|0000db00| 29 0a 09 74 62 75 66 5b | 32 5d 20 3d 20 30 3b 0a |)..tbuf[|2] = 0;.|
|0000db10| 0a 09 69 66 20 28 2a 74 | 62 75 66 20 3d 3d 20 27 |..if (*t|buf == '|
|0000db20| 30 27 29 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |0') | |
|0000db30| 20 20 20 20 20 20 2f 2f | 20 6c 65 61 64 69 6e 67 | //| leading|
|0000db40| 20 73 70 61 63 65 20 6f | 6e 20 27 64 61 79 27 20 | space o|n 'day' |
|0000db50| 3f 3f 0a 09 09 2a 74 62 | 75 66 20 3d 20 27 20 27 |??...*tb|uf = ' '|
|0000db60| 3b 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |; | |
|0000db70| 20 20 20 20 20 20 2f 2f | 20 6e 65 65 64 20 6c 65 | //| need le|
|0000db80| 61 64 69 6e 67 20 73 70 | 61 63 65 2c 20 6e 6f 74 |ading sp|ace, not|
|0000db90| 20 7a 65 72 6f 0a 0a 09 | 73 74 72 63 61 74 28 6e | zero...|strcat(n|
|0000dba0| 74 5f 62 75 66 2c 20 74 | 62 75 66 29 3b 20 20 20 |t_buf, t|buf); |
|0000dbb0| 20 20 20 20 20 20 20 20 | 20 20 20 20 2f 2f 20 61 | | // a|
|0000dbc0| 70 70 65 6e 64 20 64 61 | 79 20 6f 66 20 6d 6f 6e |ppend da|y of mon|
|0000dbd0| 74 68 0a 09 73 74 72 63 | 61 74 28 6e 74 5f 62 75 |th..strc|at(nt_bu|
|0000dbe0| 66 2c 20 22 20 22 29 3b | 0a 0a 09 2f 2f 20 2a 2a |f, " ");|...// **|
|0000dbf0| 2a 2a 2a 20 67 65 74 20 | 63 72 65 61 74 69 6f 6e |*** get |creation|
|0000dc00| 20 74 69 6d 65 20 2a 2a | 2a 2a 2a 0a 0a 09 63 31 | time **|***...c1|
|0000dc10| 20 3d 20 73 74 72 63 68 | 72 28 69 73 2c 20 27 3a | = strch|r(is, ':|
|0000dc20| 27 29 3b 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |'); | |
|0000dc30| 20 20 2f 2f 20 66 69 6e | 64 20 63 72 65 61 74 69 | // fin|d creati|
|0000dc40| 6f 6e 20 74 69 6d 65 20 | 66 69 65 6c 64 0a 09 69 |on time |field..i|
|0000dc50| 66 20 28 21 63 31 29 0a | 09 09 72 65 74 75 72 6e |f (!c1).|..return|
|0000dc60| 3b 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |; | |
|0000dc70| 20 20 20 20 20 20 20 20 | 20 20 20 2f 2f 20 61 62 | | // ab|
|0000dc80| 6f 72 74 2c 20 6e 6f 74 | 20 61 6e 20 4d 73 44 6f |ort, not| an MsDo|
|0000dc90| 73 20 65 6e 74 72 79 0a | 0a 09 6d 65 6d 63 70 79 |s entry.|..memcpy|
|0000dca0| 28 74 62 75 66 2c 20 63 | 31 20 2d 32 2c 20 32 29 |(tbuf, c|1 -2, 2)|
|0000dcb0| 3b 20 20 20 20 20 20 20 | 20 20 20 20 20 20 2f 2f |; | //|
|0000dcc0| 20 65 78 74 72 61 63 74 | 20 68 6f 75 72 0a 09 74 | extract| hour..t|
|0000dcd0| 62 75 66 5b 32 5d 20 3d | 20 30 3b 20 20 20 20 20 |buf[2] =| 0; |
|0000dce0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|0000dcf0| 20 20 20 2f 2f 20 74 65 | 72 6d 0a 0a 09 69 20 3d | // te|rm...i =|
|0000dd00| 20 61 74 6f 69 28 74 62 | 75 66 29 3b 20 20 20 20 | atoi(tb|uf); |
|0000dd10| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|0000dd20| 20 2f 2f 20 6d 6f 6e 74 | 68 20 64 69 67 69 74 73 | // mont|h digits|
|0000dd30| 20 74 6f 20 69 6e 64 65 | 78 20 28 30 31 2e 2e 31 | to inde|x (01..1|
|0000dd40| 32 29 0a 0a 09 69 66 20 | 28 74 6f 75 70 70 65 72 |2)...if |(toupper|
|0000dd50| 28 2a 28 63 31 20 2b 33 | 29 29 20 3d 3d 20 27 50 |(*(c1 +3|)) == 'P|
|0000dd60| 27 29 20 20 20 20 20 20 | 20 2f 2f 20 50 4d 20 3f |') | // PM ?|
|0000dd70| 3f 3f 0a 09 09 69 20 2b | 3d 20 31 32 3b 0a 0a 09 |??...i +|= 12;...|
|0000dd80| 73 74 63 69 5f 64 28 74 | 62 75 66 2c 20 69 29 3b |stci_d(t|buf, i);|
|0000dd90| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|0000dda0| 20 20 20 20 2f 2f 20 69 | 74 6f 61 28 29 0a 09 73 | // i|toa()..s|
|0000ddb0| 74 72 63 61 74 28 6e 74 | 5f 62 75 66 2c 20 74 62 |trcat(nt|_buf, tb|
|0000ddc0| 75 66 29 3b 20 20 20 20 | 20 20 20 20 20 20 20 20 |uf); | |
|0000ddd0| 20 20 20 2f 2f 20 68 6f | 75 72 0a 09 73 74 72 63 | // ho|ur..strc|
|0000dde0| 61 74 28 6e 74 5f 62 75 | 66 2c 20 22 3a 22 29 3b |at(nt_bu|f, ":");|
|0000ddf0| 0a 0a 09 6d 65 6d 63 70 | 79 28 74 62 75 66 2c 20 |...memcp|y(tbuf, |
|0000de00| 63 31 20 2b 31 2c 20 32 | 29 3b 20 20 20 20 20 20 |c1 +1, 2|); |
|0000de10| 20 20 20 20 20 20 20 2f | 2f 20 6d 69 6e 75 74 65 | /|/ minute|
|0000de20| 73 0a 09 74 62 75 66 5b | 32 5d 20 3d 20 30 3b 0a |s..tbuf[|2] = 0;.|
|0000de30| 09 73 74 72 63 61 74 28 | 6e 74 5f 62 75 66 2c 20 |.strcat(|nt_buf, |
|0000de40| 74 62 75 66 29 3b 20 20 | 20 20 20 20 20 20 20 20 |tbuf); | |
|0000de50| 20 20 20 20 20 2f 2f 20 | 6d 69 6e 75 74 65 73 0a | // |minutes.|
|0000de60| 09 73 74 72 63 61 74 28 | 6e 74 5f 62 75 66 2c 20 |.strcat(|nt_buf, |
|0000de70| 22 20 22 29 3b 20 20 20 | 20 20 20 20 20 20 20 20 |" "); | |
|0000de80| 20 20 20 20 20 2f 2f 20 | 70 61 64 64 0a 0a 09 2f | // |padd.../|
|0000de90| 2f 20 2a 2a 2a 2a 20 65 | 78 74 72 61 63 74 20 64 |/ **** e|xtract d|
|0000dea0| 69 72 65 63 74 6f 72 79 | 2f 66 69 6c 65 20 6e 61 |irectory|/file na|
|0000deb0| 6d 65 20 2a 2a 2a 2a 2a | 0a 0a 09 63 31 20 3d 20 |me *****|...c1 = |
|0000dec0| 69 73 20 2b 33 39 3b 20 | 20 20 20 20 20 20 20 20 |is +39; | |
|0000ded0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 2f | | /|
|0000dee0| 2f 20 73 74 61 72 74 20 | 6f 66 20 66 69 64 20 28 |/ start |of fid (|
|0000def0| 49 20 68 61 74 65 20 68 | 61 72 64 20 6f 66 66 73 |I hate h|ard offs|
|0000df00| 65 74 73 29 0a 09 63 32 | 20 3d 20 6e 74 5f 62 75 |ets)..c2| = nt_bu|
|0000df10| 66 20 2b 20 73 74 72 6c | 65 6e 28 6e 74 5f 62 75 |f + strl|en(nt_bu|
|0000df20| 66 29 3b 0a 0a 09 77 68 | 69 6c 65 20 28 28 63 20 |f);...wh|ile ((c |
|0000df30| 3d 20 2a 63 31 29 20 3e | 20 27 20 27 29 20 20 20 |= *c1) >| ' ') |
|0000df40| 20 20 20 20 20 20 20 20 | 20 20 2f 2f 20 28 6d 69 | | // (mi|
|0000df50| 67 68 74 20 77 61 6e 74 | 20 74 6f 20 73 6b 69 70 |ght want| to skip|
|0000df60| 20 6c 65 61 64 69 6e 67 | 20 73 70 61 63 65 73 29 | leading| spaces)|
|0000df70| 0a 09 09 2a 28 63 32 2b | 2b 29 20 3d 20 2a 28 63 |...*(c2+|+) = *(c|
|0000df80| 31 2b 2b 29 3b 20 20 20 | 20 20 20 20 20 20 20 20 |1++); | |
|0000df90| 20 20 20 20 2f 2f 20 63 | 6f 70 79 20 65 6e 74 69 | // c|opy enti|
|0000dfa0| 72 65 20 64 69 72 2f 66 | 69 6c 65 6e 61 6d 65 0a |re dir/f|ilename.|
|0000dfb0| 0a 09 2a 63 32 20 3d 20 | 30 3b 20 20 20 20 20 20 |..*c2 = |0; |
|0000dfc0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|0000dfd0| 20 20 20 20 20 20 2f 2f | 20 74 65 72 6d 20 62 75 | //| term bu|
|0000dfe0| 66 66 65 72 0a 0a 09 2f | 2f 20 2a 2a 2a 2a 2a 20 |ffer.../|/ ***** |
|0000dff0| 63 6f 70 79 20 74 72 61 | 6e 73 6c 61 74 65 64 20 |copy tra|nslated |
|0000e000| 4d 73 44 6f 73 20 65 6e | 74 72 79 20 6f 76 65 72 |MsDos en|try over|
|0000e010| 20 6f 72 69 67 20 55 6e | 69 78 20 65 6e 74 72 79 | orig Un|ix entry|
|0000e020| 20 2a 2a 2a 2a 2a 0a 0a | 09 73 74 72 63 70 79 28 | *****..|.strcpy(|
|0000e030| 69 73 2c 20 6e 74 5f 62 | 75 66 29 3b 20 20 20 20 |is, nt_b|uf); |
|0000e040| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2f 2f 20 | | // |
|0000e050| 69 66 20 77 65 20 67 65 | 74 20 68 65 72 65 2c 20 |if we ge|t here, |
|0000e060| 73 68 6f 75 6c 64 20 62 | 65 20 4f 4b 20 28 3f 21 |should b|e OK (?!|
|0000e070| 2a 29 0a 7d 0a 23 64 65 | 66 69 6e 65 20 4c 41 53 |*).}.#de|fine LAS|
|0000e080| 54 5f 46 49 45 4c 44 53 | 20 35 0a 0a 76 6f 69 64 |T_FIELDS| 5..void|
|0000e090| 20 61 64 64 5f 69 6e 66 | 6f 28 73 74 72 75 63 74 | add_inf|o(struct|
|0000e0a0| 20 69 6e 66 6f 5f 68 65 | 61 64 65 72 20 2a 69 68 | info_he|ader *ih|
|0000e0b0| 2c 20 62 38 20 2a 73 29 | 0a 2f 2a 0a 20 2a 20 70 |, b8 *s)|./*. * p|
|0000e0c0| 61 72 73 65 73 20 73 20 | 61 6e 64 20 61 64 64 73 |arses s |and adds|
|0000e0d0| 20 74 68 65 20 69 6e 66 | 6f 72 6d 61 74 69 6f 6e | the inf|ormation|
|0000e0e0| 20 74 6f 20 68 65 61 64 | 65 72 20 69 68 0a 20 2a | to head|er ih. *|
|0000e0f0| 20 49 6e 70 75 74 73 3a | 0a 20 2a 09 69 68 09 3a | Inputs:|. *.ih.:|
|0000e100| 20 69 6e 66 6f 5f 68 65 | 61 64 65 72 0a 20 2a 09 | info_he|ader. *.|
|0000e110| 73 09 3a 20 6c 69 6e 65 | 20 72 65 74 75 72 6e 65 |s.: line| returne|
|0000e120| 64 20 66 72 6f 6d 20 4c | 49 53 54 0a 20 2a 2f 0a |d from L|IST. */.|
|0000e130| 7b 0a 09 62 33 32 20 70 | 65 72 6d 3b 09 2f 2a 20 |{..b32 p|erm;./* |
|0000e140| 70 65 72 6d 69 73 73 69 | 6f 6e 20 62 69 74 73 20 |permissi|on bits |
|0000e150| 2a 2f 0a 09 62 33 32 20 | 73 69 7a 65 3b 0a 09 62 |*/..b32 |size;..b|
|0000e160| 38 20 2a 66 69 65 6c 64 | 73 5b 4c 41 53 54 5f 46 |8 *field|s[LAST_F|
|0000e170| 49 45 4c 44 53 5d 2c 20 | 2a 7a 3b 09 2f 2a 20 77 |IELDS], |*z;./* w|
|0000e180| 61 6e 74 20 74 68 65 20 | 6c 61 73 74 20 35 20 66 |ant the |last 5 f|
|0000e190| 69 65 6c 64 73 20 2a 2f | 0a 09 62 38 20 74 65 6d |ields */|..b8 tem|
|0000e1a0| 70 64 5b 31 35 5d 2c 20 | 74 65 6d 70 74 5b 31 30 |pd[15], |tempt[10|
|0000e1b0| 5d 3b 0a 09 69 6e 74 20 | 69 2c 20 6e 75 6d 5f 66 |];..int |i, num_f|
|0000e1c0| 69 65 6c 64 73 3b 0a 09 | 73 74 72 75 63 74 20 44 |ields;..|struct D|
|0000e1d0| 61 74 65 54 69 6d 65 20 | 64 74 69 6d 65 3b 0a 0a |ateTime |dtime;..|
|0000e1e0| 09 63 6f 6e 76 65 72 74 | 5f 6e 74 5f 65 6e 74 72 |.convert|_nt_entr|
|0000e1f0| 79 28 73 29 3b 20 20 20 | 20 20 20 20 20 20 20 2f |y(s); | /|
|0000e200| 2f 20 69 66 20 4e 54 20 | 65 6e 74 72 79 2c 20 63 |/ if NT |entry, c|
|0000e210| 6f 6e 76 65 72 74 20 74 | 6f 20 55 6e 69 78 20 66 |onvert t|o Unix f|
|0000e220| 6f 72 6d 61 74 20 28 52 | 4a 46 29 0a 09 0a 09 69 |ormat (R|JF)....i|
|0000e230| 66 20 28 73 5b 30 5d 20 | 3c 3d 20 27 20 27 29 20 |f (s[0] |<= ' ') |
|0000e240| 72 65 74 75 72 6e 3b 0a | 09 0a 09 66 6f 72 20 28 |return;.|...for (|
|0000e250| 69 20 3d 20 30 3b 20 69 | 20 3c 20 4c 41 53 54 5f |i = 0; i| < LAST_|
|0000e260| 46 49 45 4c 44 53 3b 20 | 69 2b 2b 29 20 66 69 65 |FIELDS; |i++) fie|
|0000e270| 6c 64 73 5b 69 5d 20 3d | 20 73 3b 09 2f 2a 20 73 |lds[i] =| s;./* s|
|0000e280| 61 66 65 74 79 20 2a 2f | 0a 09 0a 09 70 65 72 6d |afety */|....perm|
|0000e290| 20 3d 20 30 3b 0a 09 69 | 66 20 28 2a 73 20 3d 3d | = 0;..i|f (*s ==|
|0000e2a0| 20 27 64 27 29 20 70 65 | 72 6d 20 7c 3d 20 4d 59 | 'd') pe|rm |= MY|
|0000e2b0| 46 4c 41 47 5f 44 49 52 | 3b 0a 09 69 66 20 28 2a |FLAG_DIR|;..if (*|
|0000e2c0| 73 20 3d 3d 20 27 6c 27 | 29 20 7b 09 2f 2a 20 74 |s == 'l'|) {./* t|
|0000e2d0| 68 72 6f 77 20 61 77 61 | 79 20 79 75 63 6b 79 20 |hrow awa|y yucky |
|0000e2e0| 75 6e 69 78 20 73 6f 66 | 74 20 6c 69 6e 6b 73 20 |unix sof|t links |
|0000e2f0| 2a 2f 0a 09 09 70 65 72 | 6d 20 7c 3d 20 4d 59 46 |*/...per|m |= MYF|
|0000e300| 4c 41 47 5f 44 49 52 3b | 09 09 2f 2a 20 61 73 73 |LAG_DIR;|../* ass|
|0000e310| 75 6d 65 20 69 74 73 20 | 61 20 64 69 72 65 63 74 |ume its |a direct|
|0000e320| 6f 72 79 20 2e 2e 2e 20 | 69 74 20 5f 6d 61 79 5f |ory ... |it _may_|
|0000e330| 20 62 65 20 61 20 66 69 | 6c 65 20 2e 2e 2e 20 2a | be a fi|le ... *|
|0000e340| 2f 0a 09 09 7a 20 3d 20 | 73 20 2b 20 73 74 72 6c |/...z = |s + strl|
|0000e350| 65 6e 28 73 29 20 2d 20 | 31 3b 0a 09 09 77 68 69 |en(s) - |1;...whi|
|0000e360| 6c 65 20 28 7a 20 3e 20 | 73 20 26 26 20 21 28 7a |le (z > |s && !(z|
|0000e370| 5b 30 5d 20 3d 3d 20 27 | 2d 27 20 26 26 20 7a 5b |[0] == '|-' && z[|
|0000e380| 31 5d 20 3d 3d 20 27 3e | 27 29 29 20 7a 2d 2d 3b |1] == '>|')) z--;|
|0000e390| 0a 09 09 69 66 20 28 7a | 20 3e 20 73 29 20 7b 0a |...if (z| > s) {.|
|0000e3a0| 09 09 09 2a 7a 2d 2d 20 | 3d 20 30 3b 0a 09 09 09 |...*z-- |= 0;....|
|0000e3b0| 2f 2a 20 61 6e 64 20 61 | 6e 79 20 73 70 61 63 65 |/* and a|ny space|
|0000e3c0| 20 74 68 61 74 20 74 68 | 65 79 27 76 65 20 70 75 | that th|ey've pu|
|0000e3d0| 74 20 69 6e 20 66 6f 72 | 20 6c 6f 6f 6b 73 20 2a |t in for| looks *|
|0000e3e0| 2f 0a 09 09 09 69 66 20 | 28 7a 20 3e 20 73 20 26 |/....if |(z > s &|
|0000e3f0| 26 20 2a 7a 20 3d 3d 20 | 27 20 27 29 0a 09 09 09 |& *z == |' ')....|
|0000e400| 7b 0a 09 09 09 09 2a 7a | 20 3d 20 30 3b 0a 09 09 |{.....*z| = 0;...|
|0000e410| 09 7d 0a 09 09 7d 0a 09 | 7d 0a 09 73 2b 2b 3b 0a |.}...}..|}..s++;.|
|0000e420| 09 69 66 20 28 2a 73 20 | 3c 20 27 41 27 29 20 70 |.if (*s |< 'A') p|
|0000e430| 65 72 6d 20 7c 3d 20 46 | 49 42 46 5f 52 45 41 44 |erm |= F|IBF_READ|
|0000e440| 3b 0a 09 73 2b 2b 3b 0a | 09 69 66 20 28 2a 73 20 |;..s++;.|.if (*s |
|0000e450| 3c 20 27 41 27 29 20 70 | 65 72 6d 20 7c 3d 20 46 |< 'A') p|erm |= F|
|0000e460| 49 42 46 5f 57 52 49 54 | 45 20 7c 20 46 49 42 46 |IBF_WRIT|E | FIBF|
|0000e470| 5f 44 45 4c 45 54 45 3b | 0a 09 73 2b 2b 3b 0a 09 |_DELETE;|..s++;..|
|0000e480| 69 66 20 28 2a 73 20 3c | 20 27 41 27 29 20 70 65 |if (*s <| 'A') pe|
|0000e490| 72 6d 20 7c 3d 20 46 49 | 42 46 5f 45 58 45 43 55 |rm |= FI|BF_EXECU|
|0000e4a0| 54 45 3b 0a 09 73 2b 2b | 3b 0a 09 0a 09 77 68 69 |TE;..s++|;....whi|
|0000e4b0| 6c 65 20 28 2a 73 20 3e | 20 27 20 27 29 20 73 2b |le (*s >| ' ') s+|
|0000e4c0| 2b 3b 0a 09 0a 09 6e 75 | 6d 5f 66 69 65 6c 64 73 |+;....nu|m_fields|
|0000e4d0| 20 3d 20 31 3b 0a 09 0a | 09 64 6f 20 7b 0a 09 09 | = 1;...|.do {...|
|0000e4e0| 77 68 69 6c 65 20 28 2a | 73 20 3e 20 30 20 26 26 |while (*|s > 0 &&|
|0000e4f0| 20 2a 73 20 3c 3d 20 27 | 20 27 29 20 73 2b 2b 3b | *s <= '| ') s++;|
|0000e500| 0a 09 09 0a 09 09 69 66 | 20 28 21 2a 73 29 20 62 |......if| (!*s) b|
|0000e510| 72 65 61 6b 3b 0a 09 09 | 0a 09 09 66 6f 72 20 28 |reak;...|...for (|
|0000e520| 69 20 3d 20 30 3b 20 69 | 20 3c 20 4c 41 53 54 5f |i = 0; i| < LAST_|
|0000e530| 46 49 45 4c 44 53 20 2d | 20 31 3b 20 69 2b 2b 29 |FIELDS -| 1; i++)|
|0000e540| 20 7b 0a 09 09 09 66 69 | 65 6c 64 73 5b 69 5d 20 | {....fi|elds[i] |
|0000e550| 3d 20 66 69 65 6c 64 73 | 5b 69 2b 31 5d 3b 0a 09 |= fields|[i+1];..|
|0000e560| 09 7d 0a 09 09 6e 75 6d | 5f 66 69 65 6c 64 73 2b |.}...num|_fields+|
|0000e570| 2b 3b 0a 09 09 66 69 65 | 6c 64 73 5b 4c 41 53 54 |+;...fie|lds[LAST|
|0000e580| 5f 46 49 45 4c 44 53 20 | 2d 20 31 5d 20 3d 20 73 |_FIELDS |- 1] = s|
|0000e590| 3b 0a 09 09 69 66 20 28 | 6e 75 6d 5f 66 69 65 6c |;...if (|num_fiel|
|0000e5a0| 64 73 20 3d 3d 20 39 29 | 20 62 72 65 61 6b 3b 0a |ds == 9)| break;.|
|0000e5b0| 09 09 69 66 20 28 6e 75 | 6d 5f 66 69 65 6c 64 73 |..if (nu|m_fields|
|0000e5c0| 20 3d 3d 20 38 29 0a 09 | 09 7b 0a 09 09 09 69 66 | == 8)..|.{....if|
|0000e5d0| 20 28 73 5b 30 5d 20 3e | 3d 20 27 30 27 20 26 26 | (s[0] >|= '0' &&|
|0000e5e0| 20 73 5b 30 5d 20 3c 3d | 20 27 39 27 20 26 26 20 | s[0] <=| '9' && |
|0000e5f0| 73 5b 33 5d 20 3e 3d 20 | 27 30 27 20 26 26 20 73 |s[3] >= |'0' && s|
|0000e600| 5b 34 5d 20 3c 3d 20 27 | 39 27 29 0a 09 09 09 7b |[4] <= '|9')....{|
|0000e610| 0a 09 09 09 09 2f 2f 20 | 67 6f 20 61 72 6f 75 6e |.....// |go aroun|
|0000e620| 64 20 61 6e 6f 74 68 65 | 72 20 74 69 6d 65 0a 09 |d anothe|r time..|
|0000e630| 09 09 7d 0a 09 09 09 65 | 6c 73 65 0a 09 09 09 7b |..}....e|lse....{|
|0000e640| 0a 09 09 09 09 62 72 65 | 61 6b 3b 0a 09 09 09 7d |.....bre|ak;....}|
|0000e650| 0a 09 09 7d 0a 09 09 77 | 68 69 6c 65 20 28 2a 73 |...}...w|hile (*s|
|0000e660| 20 3e 20 27 20 27 29 20 | 73 2b 2b 3b 0a 09 7d 20 | > ' ') |s++;..} |
|0000e670| 77 68 69 6c 65 20 28 2a | 73 29 3b 0a 09 0a 09 2f |while (*|s);..../|
|0000e680| 2a 20 6f 6b 2c 20 77 65 | 20 6e 6f 77 20 68 61 76 |* ok, we| now hav|
|0000e690| 65 20 74 68 65 20 6c 61 | 73 74 20 35 20 66 69 65 |e the la|st 5 fie|
|0000e6a0| 6c 64 73 2c 20 73 6f 20 | 70 72 6f 63 65 73 73 20 |lds, so |process |
|0000e6b0| 74 68 65 6d 20 20 2a 2f | 0a 09 0a 09 73 69 7a 65 |them */|....size|
|0000e6c0| 20 3d 20 61 74 6f 69 28 | 66 69 65 6c 64 73 5b 30 | = atoi(|fields[0|
|0000e6d0| 5d 29 3b 0a 09 0a 09 73 | 20 3d 20 66 69 65 6c 64 |]);....s| = field|
|0000e6e0| 73 5b 34 5d 3b 0a 09 77 | 68 69 6c 65 20 28 2a 73 |s[4];..w|hile (*s|
|0000e6f0| 20 3e 3d 20 27 20 27 29 | 20 73 2b 2b 3b 0a 09 2a | >= ' ')| s++;..*|
|0000e700| 73 20 3d 20 30 3b 0a 09 | 0a 09 69 66 20 28 6e 75 |s = 0;..|..if (nu|
|0000e710| 6d 5f 66 69 65 6c 64 73 | 20 3e 20 34 29 20 7b 0a |m_fields| > 4) {.|
|0000e720| 09 0a 09 09 2f 2a 20 74 | 68 72 6f 77 20 61 77 61 |..../* t|hrow awa|
|0000e730| 79 20 2e 20 26 20 2e 2e | 20 2a 2f 0a 09 09 69 66 |y . & ..| */...if|
|0000e740| 20 28 66 69 65 6c 64 73 | 5b 34 5d 5b 30 5d 20 3d | (fields|[4][0] =|
|0000e750| 3d 20 27 2e 27 29 20 7b | 0a 09 09 09 69 66 20 28 |= '.') {|....if (|
|0000e760| 66 69 65 6c 64 73 5b 34 | 5d 5b 31 5d 20 3d 3d 20 |fields[4|][1] == |
|0000e770| 27 5c 30 27 29 20 72 65 | 74 75 72 6e 3b 0a 09 09 |'\0') re|turn;...|
|0000e780| 09 69 66 20 28 66 69 65 | 6c 64 73 5b 34 5d 5b 31 |.if (fie|lds[4][1|
|0000e790| 5d 20 3d 3d 20 27 2e 27 | 20 26 26 20 66 69 65 6c |] == '.'| && fiel|
|0000e7a0| 64 73 5b 34 5d 5b 32 5d | 20 3d 3d 20 27 5c 30 27 |ds[4][2]| == '\0'|
|0000e7b0| 29 20 72 65 74 75 72 6e | 3b 0a 09 09 7d 0a 09 09 |) return|;...}...|
|0000e7c0| 0a 09 09 64 74 69 6d 65 | 2e 64 61 74 5f 46 6f 72 |...dtime|.dat_For|
|0000e7d0| 6d 61 74 20 3d 20 46 4f | 52 4d 41 54 5f 49 4e 54 |mat = FO|RMAT_INT|
|0000e7e0| 3b 0a 09 09 64 74 69 6d | 65 2e 64 61 74 5f 46 6c |;...dtim|e.dat_Fl|
|0000e7f0| 61 67 73 20 3d 20 30 3b | 0a 09 09 64 74 69 6d 65 |ags = 0;|...dtime|
|0000e800| 2e 64 61 74 5f 53 74 72 | 44 61 79 20 3d 20 6e 69 |.dat_Str|Day = ni|
|0000e810| 6c 3b 0a 09 09 64 74 69 | 6d 65 2e 64 61 74 5f 53 |l;...dti|me.dat_S|
|0000e820| 74 72 44 61 74 65 20 3d | 20 74 65 6d 70 64 3b 0a |trDate =| tempd;.|
|0000e830| 09 09 64 74 69 6d 65 2e | 64 61 74 5f 53 74 72 54 |..dtime.|dat_StrT|
|0000e840| 69 6d 65 20 3d 20 74 65 | 6d 70 74 3b 0a 09 09 0a |ime = te|mpt;....|
|0000e850| 09 09 73 20 3d 20 66 69 | 65 6c 64 73 5b 33 5d 3b |..s = fi|elds[3];|
|0000e860| 0a 0a 09 09 69 66 20 28 | 73 5b 31 5d 20 3d 3d 20 |....if (|s[1] == |
|0000e870| 27 3a 27 20 7c 7c 20 73 | 5b 32 5d 20 3d 3d 20 27 |':' || s|[2] == '|
|0000e880| 3a 27 29 20 7b 0a 09 09 | 09 74 65 6d 70 64 5b 30 |:') {...|.tempd[0|
|0000e890| 5d 20 3d 20 28 79 65 61 | 72 20 2f 20 31 30 29 20 |] = (yea|r / 10) |
|0000e8a0| 25 20 31 30 20 2b 20 27 | 30 27 3b 0a 09 09 09 74 |% 10 + '|0';....t|
|0000e8b0| 65 6d 70 64 5b 31 5d 20 | 3d 20 79 65 61 72 20 25 |empd[1] |= year %|
|0000e8c0| 20 31 30 20 2b 20 27 30 | 27 3b 0a 09 09 09 74 65 | 10 + '0|';....te|
|0000e8d0| 6d 70 64 5b 32 5d 20 3d | 20 27 2d 27 3b 0a 09 09 |mpd[2] =| '-';...|
|0000e8e0| 09 74 65 6d 70 64 5b 33 | 5d 20 3d 20 66 69 65 6c |.tempd[3|] = fiel|
|0000e8f0| 64 73 5b 31 5d 5b 30 5d | 3b 0a 09 09 09 74 65 6d |ds[1][0]|;....tem|
|0000e900| 70 64 5b 34 5d 20 3d 20 | 66 69 65 6c 64 73 5b 31 |pd[4] = |fields[1|
|0000e910| 5d 5b 31 5d 3b 0a 09 09 | 09 74 65 6d 70 64 5b 35 |][1];...|.tempd[5|
|0000e920| 5d 20 3d 20 66 69 65 6c | 64 73 5b 31 5d 5b 32 5d |] = fiel|ds[1][2]|
|0000e930| 3b 0a 09 09 09 74 65 6d | 70 64 5b 36 5d 20 3d 20 |;....tem|pd[6] = |
|0000e940| 27 2d 27 3b 0a 09 09 09 | 74 65 6d 70 64 5b 37 5d |'-';....|tempd[7]|
|0000e950| 20 3d 20 66 69 65 6c 64 | 73 5b 32 5d 5b 30 5d 3b | = field|s[2][0];|
|0000e960| 0a 09 09 09 74 65 6d 70 | 64 5b 38 5d 20 3d 20 66 |....temp|d[8] = f|
|0000e970| 69 65 6c 64 73 5b 32 5d | 5b 31 5d 3b 0a 09 09 09 |ields[2]|[1];....|
|0000e980| 69 66 20 28 74 65 6d 70 | 64 5b 38 5d 20 3c 20 27 |if (temp|d[8] < '|
|0000e990| 30 27 29 20 74 65 6d 70 | 64 5b 38 5d 20 3d 20 30 |0') temp|d[8] = 0|
|0000e9a0| 3b 0a 09 09 09 65 6c 73 | 65 20 74 65 6d 70 64 5b |;....els|e tempd[|
|0000e9b0| 39 5d 20 3d 20 30 3b 0a | 09 09 09 0a 09 09 09 77 |9] = 0;.|.......w|
|0000e9c0| 68 69 6c 65 20 28 2a 73 | 20 3e 20 27 20 27 29 20 |hile (*s| > ' ') |
|0000e9d0| 73 2b 2b 3b 0a 09 09 09 | 2a 73 20 3d 20 30 3b 0a |s++;....|*s = 0;.|
|0000e9e0| 09 09 09 0a 09 09 09 73 | 74 72 63 70 79 28 74 65 |.......s|trcpy(te|
|0000e9f0| 6d 70 74 2c 20 66 69 65 | 6c 64 73 5b 33 5d 29 3b |mpt, fie|lds[3]);|
|0000ea00| 0a 09 09 09 73 74 72 63 | 61 74 28 74 65 6d 70 74 |....strc|at(tempt|
|0000ea10| 2c 20 22 3a 30 30 22 29 | 3b 0a 09 09 7d 20 65 6c |, ":00")|;...} el|
|0000ea20| 73 65 20 7b 0a 09 09 09 | 74 65 6d 70 64 5b 30 5d |se {....|tempd[0]|
|0000ea30| 20 3d 20 66 69 65 6c 64 | 73 5b 33 5d 5b 32 5d 3b | = field|s[3][2];|
|0000ea40| 0a 09 09 09 74 65 6d 70 | 64 5b 31 5d 20 3d 20 66 |....temp|d[1] = f|
|0000ea50| 69 65 6c 64 73 5b 33 5d | 5b 33 5d 3b 0a 09 09 09 |ields[3]|[3];....|
|0000ea60| 74 65 6d 70 64 5b 32 5d | 20 3d 20 27 2d 27 3b 0a |tempd[2]| = '-';.|
|0000ea70| 09 09 09 74 65 6d 70 64 | 5b 33 5d 20 3d 20 66 69 |...tempd|[3] = fi|
|0000ea80| 65 6c 64 73 5b 31 5d 5b | 30 5d 3b 0a 09 09 09 74 |elds[1][|0];....t|
|0000ea90| 65 6d 70 64 5b 34 5d 20 | 3d 20 66 69 65 6c 64 73 |empd[4] |= fields|
|0000eaa0| 5b 31 5d 5b 31 5d 3b 0a | 09 09 09 74 65 6d 70 64 |[1][1];.|...tempd|
|0000eab0| 5b 35 5d 20 3d 20 66 69 | 65 6c 64 73 5b 31 5d 5b |[5] = fi|elds[1][|
|0000eac0| 32 5d 3b 0a 09 09 09 74 | 65 6d 70 64 5b 36 5d 20 |2];....t|empd[6] |
|0000ead0| 3d 20 27 2d 27 3b 0a 09 | 09 09 74 65 6d 70 64 5b |= '-';..|..tempd[|
|0000eae0| 37 5d 20 3d 20 66 69 65 | 6c 64 73 5b 32 5d 5b 30 |7] = fie|lds[2][0|
|0000eaf0| 5d 3b 0a 09 09 09 74 65 | 6d 70 64 5b 38 5d 20 3d |];....te|mpd[8] =|
|0000eb00| 20 66 69 65 6c 64 73 5b | 32 5d 5b 31 5d 3b 0a 09 | fields[|2][1];..|
|0000eb10| 09 09 0a 09 09 09 69 66 | 20 28 74 65 6d 70 64 5b |......if| (tempd[|
|0000eb20| 38 5d 20 3c 20 27 30 27 | 29 20 74 65 6d 70 64 5b |8] < '0'|) tempd[|
|0000eb30| 38 5d 20 3d 20 30 3b 0a | 09 09 09 65 6c 73 65 20 |8] = 0;.|...else |
|0000eb40| 74 65 6d 70 64 5b 39 5d | 20 3d 20 30 3b 0a 09 09 |tempd[9]| = 0;...|
|0000eb50| 09 0a 09 09 09 73 74 72 | 63 70 79 28 74 65 6d 70 |.....str|cpy(temp|
|0000eb60| 74 2c 20 22 31 32 3a 30 | 30 3a 30 30 22 29 3b 0a |t, "12:0|0:00");.|
|0000eb70| 09 09 7d 0a 09 09 0a 09 | 09 53 74 72 54 6f 44 61 |..}.....|.StrToDa|
|0000eb80| 74 65 28 26 64 74 69 6d | 65 29 3b 0a 09 09 0a 09 |te(&dtim|e);.....|
|0000eb90| 09 61 64 64 5f 66 74 70 | 69 6e 66 6f 28 69 68 2c |.add_ftp|info(ih,|
|0000eba0| 20 66 69 65 6c 64 73 5b | 34 5d 2c 20 64 74 69 6d | fields[|4], dtim|
|0000ebb0| 65 2e 64 61 74 5f 53 74 | 61 6d 70 2c 20 73 69 7a |e.dat_St|amp, siz|
|0000ebc0| 65 2c 20 28 73 69 7a 65 | 20 2b 20 31 30 32 33 29 |e, (size| + 1023)|
|0000ebd0| 20 2f 20 31 30 32 34 2c | 20 70 65 72 6d 29 3b 0a | / 1024,| perm);.|
|0000ebe0| 09 7d 0a 7d 0a 0a 62 6f | 6f 6c 65 61 6e 20 67 65 |.}.}..bo|olean ge|
|0000ebf0| 74 5f 6c 69 73 74 28 73 | 69 74 65 20 2a 73 70 2c |t_list(s|ite *sp,|
|0000ec00| 20 73 74 72 75 63 74 20 | 69 6e 66 6f 5f 68 65 61 | struct |info_hea|
|0000ec10| 64 65 72 20 2a 69 68 29 | 0a 2f 2a 0a 20 2a 20 67 |der *ih)|./*. * g|
|0000ec20| 65 74 73 20 4c 49 53 54 | 20 69 6e 20 63 77 64 20 |ets LIST| in cwd |
|0000ec30| 61 6e 64 20 70 75 74 73 | 20 69 74 20 69 6e 20 69 |and puts| it in i|
|0000ec40| 68 0a 20 2a 20 49 6e 70 | 75 74 73 3a 0a 20 2a 09 |h. * Inp|uts:. *.|
|0000ec50| 73 70 09 3a 20 73 69 74 | 65 20 70 6f 69 6e 74 65 |sp.: sit|e pointe|
|0000ec60| 72 0a 20 2a 09 69 68 09 | 3a 20 69 6e 66 6f 5f 68 |r. *.ih.|: info_h|
|0000ec70| 65 61 64 65 72 20 74 6f | 20 68 6f 6c 64 20 6c 69 |eader to| hold li|
|0000ec80| 73 74 20 69 6e 66 6f 72 | 6d 61 74 69 6f 6e 0a 20 |st infor|mation. |
|0000ec90| 2a 0a 20 2a 20 52 65 74 | 75 72 6e 73 3a 0a 20 2a |*. * Ret|urns:. *|
|0000eca0| 09 74 72 75 65 20 69 66 | 20 4c 49 53 54 20 77 61 |.true if| LIST wa|
|0000ecb0| 73 20 73 75 63 63 65 73 | 73 66 75 6c 0a 20 2a 2f |s succes|sful. */|
|0000ecc0| 0a 7b 0a 09 74 63 70 6d | 65 73 73 61 67 65 20 2a |.{..tcpm|essage *|
|0000ecd0| 74 6d 2c 20 2a 6c 69 73 | 74 6d 3b 0a 09 73 74 72 |tm, *lis|tm;..str|
|0000ece0| 75 63 74 20 4d 73 67 50 | 6f 72 74 20 2a 73 79 6e |uct MsgP|ort *syn|
|0000ecf0| 63 3b 0a 09 62 38 20 72 | 65 70 6c 79 5b 33 5d 2c |c;..b8 r|eply[3],|
|0000ed00| 20 2a 69 6e 66 6f 3b 0a | 09 62 31 36 20 70 6f 72 | *info;.|.b16 por|
|0000ed10| 74 6e 3b 0a 09 62 33 32 | 20 73 69 67 6e 61 6c 73 |tn;..b32| signals|
|0000ed20| 2c 20 61 73 69 67 73 2c | 20 72 73 69 67 73 3b 0a |, asigs,| rsigs;.|
|0000ed30| 09 0a 09 76 65 72 69 66 | 79 28 73 70 2c 20 56 5f |...verif|y(sp, V_|
|0000ed40| 73 69 74 65 29 3b 0a 09 | 76 65 72 69 66 79 28 69 |site);..|verify(i|
|0000ed50| 68 2c 20 56 5f 69 6e 66 | 6f 5f 68 65 61 64 65 72 |h, V_inf|o_header|
|0000ed60| 29 3b 0a 09 0a 09 74 72 | 75 74 68 28 73 70 2d 3e |);....tr|uth(sp->|
|0000ed70| 63 6f 6e 6e 65 63 74 65 | 64 29 3b 0a 09 74 72 75 |connecte|d);..tru|
|0000ed80| 74 68 28 73 70 2d 3e 63 | 66 69 6c 65 20 3d 3d 20 |th(sp->c|file == |
|0000ed90| 6e 69 6c 29 3b 0a 09 0a | 09 73 74 61 74 65 5f 63 |nil);...|.state_c|
|0000eda0| 68 61 6e 67 65 28 73 70 | 2c 20 53 53 5f 4c 49 53 |hange(sp|, SS_LIS|
|0000edb0| 54 49 4e 47 29 3b 0a 09 | 0a 09 74 6d 20 3d 20 73 |TING);..|..tm = s|
|0000edc0| 70 2d 3e 63 6f 6e 74 72 | 6f 6c 3b 0a 09 76 65 72 |p->contr|ol;..ver|
|0000edd0| 69 66 79 28 74 6d 2c 20 | 56 5f 74 63 70 6d 65 73 |ify(tm, |V_tcpmes|
|0000ede0| 73 61 67 65 29 3b 0a 09 | 0a 09 73 79 6e 63 20 3d |sage);..|..sync =|
|0000edf0| 20 73 70 2d 3e 73 79 6e | 63 3b 0a 09 0a 09 61 73 | sp->syn|c;....as|
|0000ee00| 69 67 73 20 3d 20 73 70 | 2d 3e 64 69 73 63 6f 6e |igs = sp|->discon|
|0000ee10| 6e 65 63 74 5f 73 69 67 | 6e 61 6c 73 20 7c 20 73 |nect_sig|nals | s|
|0000ee20| 70 2d 3e 61 62 6f 72 74 | 5f 73 69 67 6e 61 6c 73 |p->abort|_signals|
|0000ee30| 3b 0a 09 73 69 67 6e 61 | 6c 73 20 3d 20 28 31 20 |;..signa|ls = (1 |
|0000ee40| 3c 3c 20 73 79 6e 63 2d | 3e 6d 70 5f 53 69 67 42 |<< sync-|>mp_SigB|
|0000ee50| 69 74 29 20 7c 20 61 73 | 69 67 73 3b 0a 09 0a 09 |it) | as|igs;....|
|0000ee60| 6c 69 73 74 6d 20 3d 20 | 6e 65 77 5f 6d 65 73 73 |listm = |new_mess|
|0000ee70| 61 67 65 28 73 70 29 3b | 0a 09 69 66 20 28 21 6c |age(sp);|..if (!l|
|0000ee80| 69 73 74 6d 29 20 72 65 | 74 75 72 6e 20 66 61 6c |istm) re|turn fal|
|0000ee90| 73 65 3b 0a 09 0a 09 69 | 66 20 28 63 6f 6e 74 72 |se;....i|f (contr|
|0000eea0| 6f 6c 5f 77 72 69 74 65 | 28 73 70 2c 20 22 50 41 |ol_write|(sp, "PA|
|0000eeb0| 53 56 5c 72 5c 6e 22 2c | 20 30 29 20 3d 3d 20 4e |SV\r\n",| 0) == N|
|0000eec0| 4f 5f 45 52 52 4f 52 29 | 20 7b 0a 09 09 69 66 20 |O_ERROR)| {...if |
|0000eed0| 28 21 73 70 2d 3e 71 75 | 69 63 6b 20 7c 7c 20 63 |(!sp->qu|ick || c|
|0000eee0| 6f 6e 74 72 6f 6c 5f 77 | 72 69 74 65 28 73 70 2c |ontrol_w|rite(sp,|
|0000eef0| 20 22 4c 49 53 54 5c 72 | 5c 6e 22 2c 20 30 29 20 | "LIST\r|\n", 0) |
|0000ef00| 3d 3d 20 4e 4f 5f 45 52 | 52 4f 52 29 20 7b 0a 09 |== NO_ER|ROR) {..|
|0000ef10| 09 09 69 66 20 28 72 65 | 73 70 6f 6e 73 65 28 73 |..if (re|sponse(s|
|0000ef20| 70 2c 20 30 2c 20 26 69 | 6e 66 6f 2c 20 72 65 70 |p, 0, &i|nfo, rep|
|0000ef30| 6c 79 29 20 3d 3d 20 4e | 4f 5f 45 52 52 4f 52 29 |ly) == N|O_ERROR)|
|0000ef40| 20 7b 0a 09 09 09 09 69 | 66 20 28 72 65 70 6c 79 | {.....i|f (reply|
|0000ef50| 5b 30 5d 20 3d 3d 20 27 | 32 27 20 26 26 20 69 6e |[0] == '|2' && in|
|0000ef60| 66 6f 29 20 7b 0a 09 09 | 09 09 09 69 66 20 28 70 |fo) {...|...if (p|
|0000ef70| 61 73 73 69 76 65 5f 72 | 65 73 70 6f 6e 73 65 28 |assive_r|esponse(|
|0000ef80| 69 6e 66 6f 2c 20 73 70 | 2d 3e 72 65 61 64 5f 62 |info, sp|->read_b|
|0000ef90| 75 66 66 65 72 2c 20 26 | 70 6f 72 74 6e 29 29 20 |uffer, &|portn)) |
|0000efa0| 7b 0a 09 09 09 09 09 09 | 0a 09 09 09 09 09 09 64 |{.......|.......d|
|0000efb0| 65 61 6c 6c 6f 63 61 74 | 65 28 69 6e 66 6f 2c 20 |eallocat|e(info, |
|0000efc0| 56 5f 63 73 74 72 29 3b | 0a 09 09 09 09 09 09 0a |V_cstr);|........|
|0000efd0| 09 09 09 09 09 09 69 66 | 20 28 6d 61 6b 65 5f 63 |......if| (make_c|
|0000efe0| 6f 6e 6e 65 63 74 69 6f | 6e 28 73 70 2c 20 6c 69 |onnectio|n(sp, li|
|0000eff0| 73 74 6d 2c 20 73 70 2d | 3e 72 65 61 64 5f 62 75 |stm, sp-|>read_bu|
|0000f000| 66 66 65 72 2c 20 70 6f | 72 74 6e 2c 20 30 29 20 |ffer, po|rtn, 0) |
|0000f010| 3d 3d 20 4e 4f 5f 45 52 | 52 4f 52 29 20 7b 0a 09 |== NO_ER|ROR) {..|
|0000f020| 09 09 09 09 09 09 69 66 | 20 28 73 70 2d 3e 71 75 |......if| (sp->qu|
|0000f030| 69 63 6b 20 7c 7c 20 63 | 6f 6e 74 72 6f 6c 5f 77 |ick || c|ontrol_w|
|0000f040| 72 69 74 65 28 73 70 2c | 20 22 4c 49 53 54 5c 72 |rite(sp,| "LIST\r|
|0000f050| 5c 6e 22 2c 20 30 29 20 | 3d 3d 20 4e 4f 5f 45 52 |\n", 0) |== NO_ER|
|0000f060| 52 4f 52 29 20 7b 0a 09 | 09 09 09 09 09 09 09 2f |ROR) {..|......./|
|0000f070| 2a 20 74 68 69 73 20 6e | 65 78 74 20 72 65 73 70 |* this n|ext resp|
|0000f080| 6f 6e 73 65 20 77 69 6c | 6c 20 62 65 20 74 6f 20 |onse wil|l be to |
|0000f090| 74 68 65 20 4c 49 53 54 | 20 2a 2f 0a 09 09 09 09 |the LIST| */.....|
|0000f0a0| 09 09 09 09 69 66 20 28 | 72 65 73 70 6f 6e 73 65 |....if (|response|
|0000f0b0| 28 73 70 2c 20 30 2c 20 | 26 69 6e 66 6f 2c 20 72 |(sp, 0, |&info, r|
|0000f0c0| 65 70 6c 79 29 20 3d 3d | 20 4e 4f 5f 45 52 52 4f |eply) ==| NO_ERRO|
|0000f0d0| 52 29 20 7b 0a 09 09 09 | 09 09 09 09 09 09 69 66 |R) {....|......if|
|0000f0e0| 20 28 69 6e 66 6f 29 20 | 64 65 61 6c 6c 6f 63 61 | (info) |dealloca|
|0000f0f0| 74 65 28 69 6e 66 6f 2c | 20 56 5f 63 73 74 72 29 |te(info,| V_cstr)|
|0000f100| 3b 0a 09 09 09 09 09 09 | 09 09 0a 09 09 09 09 09 |;.......|........|
|0000f110| 09 09 09 09 69 66 20 28 | 72 65 70 6c 79 5b 30 5d |....if (|reply[0]|
|0000f120| 20 3d 3d 20 27 31 27 29 | 20 7b 0a 09 09 09 09 09 | == '1')| {......|
|0000f130| 09 09 09 09 09 2f 2a 20 | 6c 69 73 74 20 73 68 6f |...../* |list sho|
|0000f140| 75 6c 64 20 62 65 20 63 | 6f 6d 69 6e 67 20 74 68 |uld be c|oming th|
|0000f150| 72 6f 75 67 68 20 6c 69 | 73 74 6d 20 6e 6f 77 20 |rough li|stm now |
|0000f160| 2a 2f 0a 09 09 09 09 09 | 09 09 09 09 09 0a 09 09 |*/......|........|
|0000f170| 09 09 09 09 09 09 09 09 | 67 6f 74 6f 20 72 65 61 |........|goto rea|
|0000f180| 64 5f 6c 69 73 74 3b 0a | 09 09 09 09 09 09 09 09 |d_list;.|........|
|0000f190| 09 7d 0a 09 09 09 09 09 | 09 09 09 7d 0a 09 09 09 |.}......|...}....|
|0000f1a0| 09 09 09 09 7d 0a 09 09 | 09 09 09 09 09 62 72 65 |....}...|.....bre|
|0000f1b0| 61 6b 5f 63 6f 6e 6e 65 | 63 74 69 6f 6e 28 73 70 |ak_conne|ction(sp|
|0000f1c0| 2c 20 6c 69 73 74 6d 29 | 3b 0a 09 09 09 09 09 09 |, listm)|;.......|
|0000f1d0| 7d 0a 09 09 09 09 09 7d | 20 65 6c 73 65 20 7b 0a |}......}| else {.|
|0000f1e0| 09 09 09 09 09 09 69 66 | 20 28 69 6e 66 6f 29 20 |......if| (info) |
|0000f1f0| 64 65 61 6c 6c 6f 63 61 | 74 65 28 69 6e 66 6f 2c |dealloca|te(info,|
|0000f200| 20 56 5f 63 73 74 72 29 | 3b 0a 09 09 09 09 09 7d | V_cstr)|;......}|
|0000f210| 0a 09 09 09 09 7d 20 65 | 6c 73 65 20 7b 0a 09 09 |.....} e|lse {...|
|0000f220| 09 09 09 69 66 20 28 69 | 6e 66 6f 29 20 64 65 61 |...if (i|nfo) dea|
|0000f230| 6c 6c 6f 63 61 74 65 28 | 69 6e 66 6f 2c 20 56 5f |llocate(|info, V_|
|0000f240| 63 73 74 72 29 3b 0a 09 | 09 09 09 7d 0a 09 09 09 |cstr);..|...}....|
|0000f250| 7d 0a 09 09 7d 0a 09 7d | 0a 09 0a 09 6c 69 73 74 |}...}..}|....list|
|0000f260| 6d 2d 3e 63 6f 6d 6d 61 | 6e 64 20 3d 20 54 43 50 |m->comma|nd = TCP|
|0000f270| 5f 44 49 53 50 4f 53 45 | 3b 0a 09 50 75 74 4d 73 |_DISPOSE|;..PutMs|
|0000f280| 67 28 74 63 70 2c 20 26 | 6c 69 73 74 6d 2d 3e 68 |g(tcp, &|listm->h|
|0000f290| 65 61 64 65 72 29 3b 0a | 09 0a 09 64 69 73 63 6f |eader);.|...disco|
|0000f2a0| 6e 6e 65 63 74 28 73 70 | 29 3b 0a 09 0a 09 72 65 |nnect(sp|);....re|
|0000f2b0| 74 75 72 6e 20 66 61 6c | 73 65 3b 0a 09 0a 72 65 |turn fal|se;...re|
|0000f2c0| 61 64 5f 6c 69 73 74 3a | 0a 09 6c 69 73 74 6d 2d |ad_list:|..listm-|
|0000f2d0| 3e 63 6f 6d 6d 61 6e 64 | 20 3d 20 54 43 50 5f 52 |>command| = TCP_R|
|0000f2e0| 45 41 44 3b 0a 09 6c 69 | 73 74 6d 2d 3e 64 61 74 |EAD;..li|stm->dat|
|0000f2f0| 61 20 3d 20 73 70 2d 3e | 72 65 61 64 5f 62 75 66 |a = sp->|read_buf|
|0000f300| 66 65 72 3b 0a 09 6c 69 | 73 74 6d 2d 3e 66 6c 61 |fer;..li|stm->fla|
|0000f310| 67 73 20 3d 20 46 4c 41 | 47 5f 52 45 41 44 4c 49 |gs = FLA|G_READLI|
|0000f320| 4e 45 3b 0a 09 6c 69 73 | 74 6d 2d 3e 6c 65 6e 67 |NE;..lis|tm->leng|
|0000f330| 74 68 20 3d 20 52 45 41 | 44 5f 42 55 46 46 45 52 |th = REA|D_BUFFER|
|0000f340| 5f 4c 45 4e 47 54 48 3b | 0a 09 6c 69 73 74 6d 2d |_LENGTH;|..listm-|
|0000f350| 3e 68 65 61 64 65 72 2e | 6d 6e 5f 52 65 70 6c 79 |>header.|mn_Reply|
|0000f360| 50 6f 72 74 20 3d 20 73 | 79 6e 63 3b 0a 09 0a 09 |Port = s|ync;....|
|0000f370| 64 6f 20 7b 0a 09 09 50 | 75 74 4d 73 67 28 74 63 |do {...P|utMsg(tc|
|0000f380| 70 2c 20 26 6c 69 73 74 | 6d 2d 3e 68 65 61 64 65 |p, &list|m->heade|
|0000f390| 72 29 3b 0a 09 09 72 73 | 69 67 73 20 3d 20 57 61 |r);...rs|igs = Wa|
|0000f3a0| 69 74 28 73 69 67 6e 61 | 6c 73 29 3b 0a 09 09 69 |it(signa|ls);...i|
|0000f3b0| 66 20 28 72 73 69 67 73 | 20 26 20 61 73 69 67 73 |f (rsigs| & asigs|
|0000f3c0| 29 20 7b 0a 09 09 09 73 | 74 61 74 65 5f 63 68 61 |) {....s|tate_cha|
|0000f3d0| 6e 67 65 28 73 70 2c 20 | 53 53 5f 41 42 4f 52 54 |nge(sp, |SS_ABORT|
|0000f3e0| 49 4e 47 29 3b 0a 09 09 | 09 0a 09 09 09 69 6e 74 |ING);...|.....int|
|0000f3f0| 65 72 72 75 70 74 5f 6d | 65 73 73 61 67 65 28 73 |errupt_m|essage(s|
|0000f400| 70 2c 20 6c 69 73 74 6d | 29 3b 0a 09 09 09 0a 09 |p, listm|);......|
|0000f410| 09 09 69 66 20 28 72 73 | 69 67 73 20 26 20 73 70 |..if (rs|igs & sp|
|0000f420| 2d 3e 64 69 73 63 6f 6e | 6e 65 63 74 5f 73 69 67 |->discon|nect_sig|
|0000f430| 6e 61 6c 73 29 20 7b 0a | 09 09 09 09 62 72 65 61 |nals) {.|....brea|
|0000f440| 6b 5f 63 6f 6e 6e 65 63 | 74 69 6f 6e 28 73 70 2c |k_connec|tion(sp,|
|0000f450| 20 6c 69 73 74 6d 29 3b | 0a 09 09 09 09 0a 09 09 | listm);|........|
|0000f460| 09 09 6c 69 73 74 6d 2d | 3e 63 6f 6d 6d 61 6e 64 |..listm-|>command|
|0000f470| 20 3d 20 54 43 50 5f 44 | 49 53 50 4f 53 45 3b 0a | = TCP_D|ISPOSE;.|
|0000f480| 09 09 09 09 50 75 74 4d | 73 67 28 74 63 70 2c 20 |....PutM|sg(tcp, |
|0000f490| 26 6c 69 73 74 6d 2d 3e | 68 65 61 64 65 72 29 3b |&listm->|header);|
|0000f4a0| 0a 09 09 09 09 0a 09 09 | 09 09 64 69 73 63 6f 6e |........|..discon|
|0000f4b0| 6e 65 63 74 28 73 70 29 | 3b 0a 09 09 09 09 72 65 |nect(sp)|;.....re|
|0000f4c0| 74 75 72 6e 20 66 61 6c | 73 65 3b 0a 09 09 09 7d |turn fal|se;....}|
|0000f4d0| 0a 09 09 7d 20 65 6c 73 | 65 20 7b 0a 09 09 09 47 |...} els|e {....G|
|0000f4e0| 65 74 4d 73 67 28 73 79 | 6e 63 29 3b 0a 09 09 7d |etMsg(sy|nc);...}|
|0000f4f0| 0a 09 09 0a 09 09 69 66 | 20 28 6c 69 73 74 6d 2d |......if| (listm-|
|0000f500| 3e 72 65 73 75 6c 74 20 | 3e 20 30 29 20 7b 0a 09 |>result |> 0) {..|
|0000f510| 09 09 73 70 2d 3e 72 65 | 61 64 5f 62 75 66 66 65 |..sp->re|ad_buffe|
|0000f520| 72 5b 6c 69 73 74 6d 2d | 3e 72 65 73 75 6c 74 5d |r[listm-|>result]|
|0000f530| 20 3d 20 30 3b 0a 09 09 | 09 61 64 64 5f 69 6e 66 | = 0;...|.add_inf|
|0000f540| 6f 28 69 68 2c 20 73 70 | 2d 3e 72 65 61 64 5f 62 |o(ih, sp|->read_b|
|0000f550| 75 66 66 65 72 29 3b 0a | 09 09 7d 0a 09 7d 20 77 |uffer);.|..}..} w|
|0000f560| 68 69 6c 65 20 28 6c 69 | 73 74 6d 2d 3e 65 72 72 |hile (li|stm->err|
|0000f570| 6f 72 20 3d 3d 20 4e 4f | 5f 45 52 52 4f 52 29 3b |or == NO|_ERROR);|
|0000f580| 0a 09 0a 09 62 72 65 61 | 6b 5f 63 6f 6e 6e 65 63 |....brea|k_connec|
|0000f590| 74 69 6f 6e 28 73 70 2c | 20 6c 69 73 74 6d 29 3b |tion(sp,| listm);|
|0000f5a0| 0a 09 0a 09 6c 69 73 74 | 6d 2d 3e 63 6f 6d 6d 61 |....list|m->comma|
|0000f5b0| 6e 64 20 3d 20 54 43 50 | 5f 44 49 53 50 4f 53 45 |nd = TCP|_DISPOSE|
|0000f5c0| 3b 0a 09 50 75 74 4d 73 | 67 28 74 63 70 2c 20 26 |;..PutMs|g(tcp, &|
|0000f5d0| 6c 69 73 74 6d 2d 3e 68 | 65 61 64 65 72 29 3b 0a |listm->h|eader);.|
|0000f5e0| 09 0a 09 69 66 20 28 72 | 65 73 70 6f 6e 73 65 28 |...if (r|esponse(|
|0000f5f0| 73 70 2c 20 30 2c 20 26 | 69 6e 66 6f 2c 20 72 65 |sp, 0, &|info, re|
|0000f600| 70 6c 79 29 20 21 3d 20 | 4e 4f 5f 45 52 52 4f 52 |ply) != |NO_ERROR|
|0000f610| 29 20 7b 0a 09 09 73 68 | 6f 77 5f 73 74 72 69 6e |) {...sh|ow_strin|
|0000f620| 67 28 22 67 65 74 20 6c | 69 73 74 20 66 61 69 6c |g("get l|ist fail|
|0000f630| 65 64 20 38 22 29 3b 0a | 09 09 0a 09 09 64 69 73 |ed 8");.|.....dis|
|0000f640| 63 6f 6e 6e 65 63 74 28 | 73 70 29 3b 0a 09 09 0a |connect(|sp);....|
|0000f650| 09 09 72 65 74 75 72 6e | 20 74 72 75 65 3b 0a 09 |..return| true;..|
|0000f660| 7d 0a 09 0a 09 69 66 20 | 28 69 6e 66 6f 29 20 64 |}....if |(info) d|
|0000f670| 65 61 6c 6c 6f 63 61 74 | 65 28 69 6e 66 6f 2c 20 |eallocat|e(info, |
|0000f680| 56 5f 63 73 74 72 29 3b | 0a 09 0a 23 69 66 64 65 |V_cstr);|...#ifde|
|0000f690| 66 20 56 45 52 49 46 59 | 0a 09 69 66 20 28 72 65 |f VERIFY|..if (re|
|0000f6a0| 70 6c 79 5b 30 5d 20 21 | 3d 20 27 32 27 29 20 7b |ply[0] !|= '2') {|
|0000f6b0| 0a 09 09 73 68 6f 77 5f | 73 74 72 69 6e 67 28 22 |...show_|string("|
|0000f6c0| 72 65 63 65 69 76 65 64 | 20 6e 6f 6e 2d 32 20 66 |received| non-2 f|
|0000f6d0| 6f 72 20 65 6e 64 20 6f | 66 20 4c 49 53 54 22 29 |or end o|f LIST")|
|0000f6e0| 3b 0a 09 7d 0a 23 65 6e | 64 69 66 0a 09 72 65 74 |;..}.#en|dif..ret|
|0000f6f0| 75 72 6e 20 74 72 75 65 | 3b 0a 7d 0a 0a 62 6f 6f |urn true|;.}..boo|
|0000f700| 6c 65 61 6e 20 70 72 65 | 6c 69 6d 28 73 69 74 65 |lean pre|lim(site|
|0000f710| 20 2a 73 70 2c 20 73 74 | 72 75 63 74 20 57 69 6e | *sp, st|ruct Win|
|0000f720| 64 6f 77 20 2a 77 29 0a | 2f 2a 0a 20 2a 20 6f 6e |dow *w).|/*. * on|
|0000f730| 63 65 20 6c 6f 67 67 65 | 64 20 69 6e 2c 20 64 6f |ce logge|d in, do|
|0000f740| 65 73 20 70 72 65 6c 69 | 6d 69 6e 61 72 79 20 73 |es preli|minary s|
|0000f750| 65 74 75 70 20 73 74 75 | 66 66 20 2e 2e 2e 20 66 |etup stu|ff ... f|
|0000f760| 6f 72 20 6e 6f 77 0a 20 | 2a 20 73 65 74 73 20 54 |or now. |* sets T|
|0000f770| 59 50 45 20 49 20 61 6e | 64 20 66 69 67 75 72 65 |YPE I an|d figure|
|0000f780| 73 20 6f 75 74 20 77 68 | 65 72 65 20 74 68 65 20 |s out wh|ere the |
|0000f790| 72 6f 6f 74 20 6f 66 20 | 74 68 65 20 66 73 20 69 |root of |the fs i|
|0000f7a0| 73 0a 20 2a 20 49 6e 70 | 75 74 73 3a 0a 20 2a 20 |s. * Inp|uts:. * |
|0000f7b0| 09 73 70 09 3a 20 73 69 | 74 65 20 70 6f 69 6e 74 |.sp.: si|te point|
|0000f7c0| 65 72 0a 20 2a 09 77 09 | 3a 20 74 68 65 20 63 6f |er. *.w.|: the co|
|0000f7d0| 6e 6e 65 63 74 69 6f 6e | 20 63 61 6e 63 65 6c 20 |nnection| cancel |
|0000f7e0| 77 69 6e 64 6f 77 0a 20 | 2a 0a 20 2a 20 52 65 74 |window. |*. * Ret|
|0000f7f0| 75 72 6e 73 3a 0a 20 2a | 09 74 72 75 65 20 69 66 |urns:. *|.true if|
|0000f800| 20 73 65 74 75 70 20 77 | 61 73 20 73 75 63 63 65 | setup w|as succe|
|0000f810| 73 73 66 75 6c 0a 20 2a | 2f 0a 7b 0a 09 62 33 32 |ssful. *|/.{..b32|
|0000f820| 20 63 73 69 67 3b 0a 09 | 62 38 20 2a 69 6e 66 6f | csig;..|b8 *info|
|0000f830| 2c 20 72 65 70 6c 79 5b | 33 5d 3b 0a 09 62 38 20 |, reply[|3];..b8 |
|0000f840| 2a 73 2c 20 2a 7a 3b 0a | 09 0a 09 63 73 69 67 20 |*s, *z;.|...csig |
|0000f850| 3d 20 28 31 20 3c 3c 20 | 77 2d 3e 55 73 65 72 50 |= (1 << |w->UserP|
|0000f860| 6f 72 74 2d 3e 6d 70 5f | 53 69 67 42 69 74 29 3b |ort->mp_|SigBit);|
|0000f870| 0a 09 0a 09 69 66 20 28 | 63 6f 6e 74 72 6f 6c 5f |....if (|control_|
|0000f880| 77 72 69 74 65 28 73 70 | 2c 20 22 54 59 50 45 20 |write(sp|, "TYPE |
|0000f890| 49 5c 72 5c 6e 22 2c 20 | 63 73 69 67 29 20 3d 3d |I\r\n", |csig) ==|
|0000f8a0| 20 4e 4f 5f 45 52 52 4f | 52 29 20 7b 0a 09 09 2f | NO_ERRO|R) {.../|
|0000f8b0| 2a 20 77 65 20 65 69 74 | 68 65 72 20 6e 65 65 64 |* we eit|her need|
|0000f8c0| 20 74 6f 20 63 68 61 6e | 67 65 20 74 6f 20 72 6f | to chan|ge to ro|
|0000f8d0| 6f 74 2c 20 6f 72 20 77 | 6f 72 6b 20 6f 75 74 20 |ot, or w|ork out |
|0000f8e0| 77 68 65 72 65 20 72 6f | 6f 74 20 69 73 20 2a 2f |where ro|ot is */|
|0000f8f0| 0a 09 09 69 66 20 28 73 | 70 2d 3e 72 6f 6f 74 29 |...if (s|p->root)|
|0000f900| 20 7b 0a 09 09 09 73 70 | 72 69 6e 74 66 28 73 70 | {....sp|rintf(sp|
|0000f910| 2d 3e 72 65 61 64 5f 62 | 75 66 66 65 72 2c 20 22 |->read_b|uffer, "|
|0000f920| 43 57 44 20 25 73 5c 72 | 5c 6e 22 2c 20 73 70 2d |CWD %s\r|\n", sp-|
|0000f930| 3e 72 6f 6f 74 29 3b 0a | 09 09 7d 20 65 6c 73 65 |>root);.|..} else|
|0000f940| 20 7b 0a 09 09 09 73 74 | 72 63 70 79 28 73 70 2d | {....st|rcpy(sp-|
|0000f950| 3e 72 65 61 64 5f 62 75 | 66 66 65 72 2c 20 22 50 |>read_bu|ffer, "P|
|0000f960| 57 44 5c 72 5c 6e 22 29 | 3b 0a 09 09 7d 0a 09 09 |WD\r\n")|;...}...|
|0000f970| 69 66 20 28 21 73 70 2d | 3e 71 75 69 63 6b 20 7c |if (!sp-|>quick ||
|0000f980| 7c 20 63 6f 6e 74 72 6f | 6c 5f 77 72 69 74 65 28 || contro|l_write(|
|0000f990| 73 70 2c 20 73 70 2d 3e | 72 65 61 64 5f 62 75 66 |sp, sp->|read_buf|
|0000f9a0| 66 65 72 2c 20 63 73 69 | 67 29 20 3d 3d 20 4e 4f |fer, csi|g) == NO|
|0000f9b0| 5f 45 52 52 4f 52 29 20 | 7b 0a 09 09 09 2f 2a 20 |_ERROR) |{..../* |
|0000f9c0| 66 69 72 73 74 20 72 65 | 73 70 6f 6e 73 65 20 69 |first re|sponse i|
|0000f9d0| 73 20 74 6f 20 54 59 50 | 45 20 49 20 2a 2f 0a 09 |s to TYP|E I */..|
|0000f9e0| 09 09 69 66 20 28 72 65 | 73 70 6f 6e 73 65 28 73 |..if (re|sponse(s|
|0000f9f0| 70 2c 20 63 73 69 67 2c | 20 26 69 6e 66 6f 2c 20 |p, csig,| &info, |
|0000fa00| 72 65 70 6c 79 29 20 3d | 3d 20 4e 4f 5f 45 52 52 |reply) =|= NO_ERR|
|0000fa10| 4f 52 29 20 7b 0a 09 09 | 09 09 2f 2a 20 77 65 20 |OR) {...|../* we |
|0000fa20| 64 6f 6e 27 74 20 72 65 | 61 6c 6c 79 20 63 61 72 |don't re|ally car|
|0000fa30| 65 20 77 68 61 74 20 74 | 68 65 79 20 72 65 70 6c |e what t|hey repl|
|0000fa40| 69 65 64 20 2a 2f 0a 09 | 09 09 09 69 66 20 28 69 |ied */..|...if (i|
|0000fa50| 6e 66 6f 29 20 64 65 61 | 6c 6c 6f 63 61 74 65 28 |nfo) dea|llocate(|
|0000fa60| 69 6e 66 6f 2c 20 56 5f | 63 73 74 72 29 3b 0a 09 |info, V_|cstr);..|
|0000fa70| 09 09 09 69 66 20 28 73 | 70 2d 3e 72 6f 6f 74 29 |...if (s|p->root)|
|0000fa80| 20 7b 0a 09 09 09 09 09 | 73 70 72 69 6e 74 66 28 | {......|sprintf(|
|0000fa90| 73 70 2d 3e 72 65 61 64 | 5f 62 75 66 66 65 72 2c |sp->read|_buffer,|
|0000faa0| 20 22 43 57 44 20 25 73 | 5c 72 5c 6e 22 2c 20 73 | "CWD %s|\r\n", s|
|0000fab0| 70 2d 3e 72 6f 6f 74 29 | 3b 0a 09 09 09 09 7d 20 |p->root)|;.....} |
|0000fac0| 65 6c 73 65 20 7b 0a 09 | 09 09 09 09 73 74 72 63 |else {..|....strc|
|0000fad0| 70 79 28 73 70 2d 3e 72 | 65 61 64 5f 62 75 66 66 |py(sp->r|ead_buff|
|0000fae0| 65 72 2c 20 22 50 57 44 | 5c 72 5c 6e 22 29 3b 0a |er, "PWD|\r\n");.|
|0000faf0| 09 09 09 09 7d 0a 09 09 | 09 09 69 66 20 28 73 70 |....}...|..if (sp|
|0000fb00| 2d 3e 71 75 69 63 6b 20 | 7c 7c 20 63 6f 6e 74 72 |->quick ||| contr|
|0000fb10| 6f 6c 5f 77 72 69 74 65 | 28 73 70 2c 20 73 70 2d |ol_write|(sp, sp-|
|0000fb20| 3e 72 65 61 64 5f 62 75 | 66 66 65 72 2c 20 63 73 |>read_bu|ffer, cs|
|0000fb30| 69 67 29 20 3d 3d 20 4e | 4f 5f 45 52 52 4f 52 29 |ig) == N|O_ERROR)|
|0000fb40| 20 7b 0a 09 09 09 09 09 | 2f 2a 20 2e 2e 2e 20 6e | {......|/* ... n|
|0000fb50| 65 78 74 20 72 65 73 70 | 6f 6e 73 65 20 69 73 20 |ext resp|onse is |
|0000fb60| 74 6f 20 43 57 44 2f 50 | 57 44 20 2a 2f 0a 09 09 |to CWD/P|WD */...|
|0000fb70| 09 09 09 69 66 20 28 72 | 65 73 70 6f 6e 73 65 28 |...if (r|esponse(|
|0000fb80| 73 70 2c 20 63 73 69 67 | 2c 20 26 69 6e 66 6f 2c |sp, csig|, &info,|
|0000fb90| 20 72 65 70 6c 79 29 20 | 3d 3d 20 4e 4f 5f 45 52 | reply) |== NO_ER|
|0000fba0| 52 4f 52 29 20 7b 0a 09 | 09 09 09 09 09 69 66 20 |ROR) {..|.....if |
|0000fbb0| 28 72 65 70 6c 79 5b 30 | 5d 20 3d 3d 20 27 32 27 |(reply[0|] == '2'|
|0000fbc0| 29 20 7b 0a 09 09 09 09 | 09 09 09 69 66 20 28 73 |) {.....|...if (s|
|0000fbd0| 70 2d 3e 72 6f 6f 74 29 | 20 7b 0a 09 09 09 09 09 |p->root)| {......|
|0000fbe0| 09 09 09 2f 2a 20 77 61 | 73 20 74 68 65 20 43 57 |.../* wa|s the CW|
|0000fbf0| 44 20 2e 2e 2e 20 77 61 | 73 20 73 75 63 63 65 73 |D ... wa|s succes|
|0000fc00| 73 66 75 6c 20 2a 2f 0a | 09 09 09 09 09 09 09 09 |sful */.|........|
|0000fc10| 69 66 20 28 69 6e 66 6f | 29 20 64 65 61 6c 6c 6f |if (info|) deallo|
|0000fc20| 63 61 74 65 28 69 6e 66 | 6f 2c 20 56 5f 63 73 74 |cate(inf|o, V_cst|
|0000fc30| 72 29 3b 0a 09 09 09 09 | 09 09 09 09 0a 09 09 09 |r);.....|........|
|0000fc40| 09 09 09 09 09 72 65 74 | 75 72 6e 20 74 72 75 65 |.....ret|urn true|
|0000fc50| 3b 0a 09 09 09 09 09 09 | 09 7d 20 65 6c 73 65 20 |;.......|.} else |
|0000fc60| 69 66 20 28 69 6e 66 6f | 29 20 7b 0a 09 09 09 09 |if (info|) {.....|
|0000fc70| 09 09 09 09 2f 2a 20 77 | 61 73 20 74 68 65 20 50 |..../* w|as the P|
|0000fc80| 57 44 20 2e 2e 2e 20 68 | 61 76 65 20 74 6f 20 65 |WD ... h|ave to e|
|0000fc90| 78 74 72 61 63 74 20 74 | 68 65 20 72 6f 6f 74 20 |xtract t|he root |
|0000fca0| 70 61 74 68 20 2a 2f 0a | 09 09 09 09 09 09 09 09 |path */.|........|
|0000fcb0| 73 20 3d 20 69 6e 66 6f | 3b 0a 09 09 09 09 09 09 |s = info|;.......|
|0000fcc0| 09 09 77 68 69 6c 65 20 | 28 2a 73 20 26 26 20 2a |..while |(*s && *|
|0000fcd0| 73 20 21 3d 20 27 22 27 | 29 20 73 2b 2b 3b 0a 09 |s != '"'|) s++;..|
|0000fce0| 09 09 09 09 09 09 09 69 | 66 20 28 2a 73 29 20 7b |.......i|f (*s) {|
|0000fcf0| 0a 09 09 09 09 09 09 09 | 09 09 73 2b 2b 3b 0a 09 |........|..s++;..|
|0000fd00| 09 09 09 09 09 09 09 09 | 7a 20 3d 20 73 3b 0a 09 |........|z = s;..|
|0000fd10| 09 09 09 09 09 09 09 09 | 77 68 69 6c 65 20 28 2a |........|while (*|
|0000fd20| 7a 20 26 26 20 2a 7a 20 | 21 3d 20 27 22 27 29 20 |z && *z |!= '"') |
|0000fd30| 7a 2b 2b 3b 0a 09 09 09 | 09 09 09 09 09 09 69 66 |z++;....|......if|
|0000fd40| 20 28 2a 7a 29 20 7b 0a | 09 09 09 09 09 09 09 09 | (*z) {.|........|
|0000fd50| 09 09 73 70 2d 3e 72 6f | 6f 74 20 3d 20 28 62 38 |..sp->ro|ot = (b8|
|0000fd60| 20 2a 29 61 6c 6c 6f 63 | 61 74 65 28 7a 20 2d 20 | *)alloc|ate(z - |
|0000fd70| 73 20 2b 20 31 2c 20 56 | 5f 63 73 74 72 29 3b 0a |s + 1, V|_cstr);.|
|0000fd80| 09 09 09 09 09 09 09 09 | 09 09 69 66 20 28 73 70 |........|..if (sp|
|0000fd90| 2d 3e 72 6f 6f 74 29 20 | 7b 0a 09 09 09 09 09 09 |->root) |{.......|
|0000fda0| 09 09 09 09 09 69 66 20 | 28 7a 20 21 3d 20 73 29 |.....if |(z != s)|
|0000fdb0| 0a 09 09 09 09 09 09 09 | 09 09 09 09 09 6d 65 6d |........|.....mem|
|0000fdc0| 63 70 79 28 73 70 2d 3e | 72 6f 6f 74 2c 20 73 2c |cpy(sp->|root, s,|
|0000fdd0| 20 7a 20 2d 20 73 29 3b | 0a 09 09 09 09 09 09 09 | z - s);|........|
|0000fde0| 09 09 09 09 0a 09 09 09 | 09 09 09 09 09 09 09 09 |........|........|
|0000fdf0| 73 70 2d 3e 72 6f 6f 74 | 5b 7a 20 2d 20 73 5d 20 |sp->root|[z - s] |
|0000fe00| 3d 20 30 3b 0a 09 09 09 | 09 09 09 09 09 09 09 09 |= 0;....|........|
|0000fe10| 0a 09 09 09 09 09 09 09 | 09 09 09 09 64 65 61 6c |........|....deal|
|0000fe20| 6c 6f 63 61 74 65 28 69 | 6e 66 6f 2c 20 56 5f 63 |locate(i|nfo, V_c|
|0000fe30| 73 74 72 29 3b 0a 09 09 | 09 09 09 09 09 09 09 09 |str);...|........|
|0000fe40| 09 72 65 74 75 72 6e 20 | 74 72 75 65 3b 0a 09 09 |.return |true;...|
|0000fe50| 09 09 09 09 09 09 09 09 | 7d 20 65 6c 73 65 20 69 |........|} else i|
|0000fe60| 66 20 28 73 70 2d 3e 65 | 72 72 6f 72 5f 6d 65 73 |f (sp->e|rror_mes|
|0000fe70| 73 61 67 65 73 29 0a 09 | 09 09 09 09 09 09 09 09 |sages)..|........|
|0000fe80| 09 09 69 6e 66 6f 72 6d | 28 73 70 2d 3e 49 42 61 |..inform|(sp->IBa|
|0000fe90| 73 65 2c 20 73 74 72 69 | 6e 67 73 5b 4d 53 47 5f |se, stri|ngs[MSG_|
|0000fea0| 4f 50 45 52 41 54 49 4f | 4e 41 4c 5f 45 52 52 4f |OPERATIO|NAL_ERRO|
|0000feb0| 52 5d 2c 20 73 74 72 69 | 6e 67 73 5b 4d 53 47 5f |R], stri|ngs[MSG_|
|0000fec0| 4f 4f 4d 5f 52 4f 4f 54 | 5d 2c 20 6e 69 6c 2c 20 |OOM_ROOT|], nil, |
|0000fed0| 30 29 3b 0a 09 09 09 09 | 09 09 09 09 09 7d 20 65 |0);.....|.....} e|
|0000fee0| 6c 73 65 20 69 66 20 28 | 73 70 2d 3e 65 72 72 6f |lse if (|sp->erro|
|0000fef0| 72 5f 6d 65 73 73 61 67 | 65 73 29 0a 09 09 09 09 |r_messag|es).....|
|0000ff00| 09 09 09 09 09 09 69 6e | 66 6f 72 6d 28 73 70 2d |......in|form(sp-|
|0000ff10| 3e 49 42 61 73 65 2c 20 | 73 74 72 69 6e 67 73 5b |>IBase, |strings[|
|0000ff20| 4d 53 47 5f 4f 50 45 52 | 41 54 49 4f 4e 41 4c 5f |MSG_OPER|ATIONAL_|
|0000ff30| 45 52 52 4f 52 5d 2c 20 | 73 74 72 69 6e 67 73 5b |ERROR], |strings[|
|0000ff40| 4d 53 47 5f 50 57 44 5f | 47 41 52 42 41 47 45 5d |MSG_PWD_|GARBAGE]|
|0000ff50| 2c 20 6e 69 6c 2c 20 30 | 29 3b 0a 09 09 09 09 09 |, nil, 0|);......|
|0000ff60| 09 09 09 7d 20 65 6c 73 | 65 20 69 66 20 28 73 70 |...} els|e if (sp|
|0000ff70| 2d 3e 65 72 72 6f 72 5f | 6d 65 73 73 61 67 65 73 |->error_|messages|
|0000ff80| 29 0a 09 09 09 09 09 09 | 09 09 09 69 6e 66 6f 72 |).......|...infor|
|0000ff90| 6d 28 73 70 2d 3e 49 42 | 61 73 65 2c 20 73 74 72 |m(sp->IB|ase, str|
|0000ffa0| 69 6e 67 73 5b 4d 53 47 | 5f 4f 50 45 52 41 54 49 |ings[MSG|_OPERATI|
|0000ffb0| 4f 4e 41 4c 5f 45 52 52 | 4f 52 5d 2c 20 73 74 72 |ONAL_ERR|OR], str|
|0000ffc0| 69 6e 67 73 5b 4d 53 47 | 5f 50 57 44 5f 47 41 52 |ings[MSG|_PWD_GAR|
|0000ffd0| 42 41 47 45 5d 2c 20 6e | 69 6c 2c 20 30 29 3b 0a |BAGE], n|il, 0);.|
|0000ffe0| 09 09 09 09 09 09 09 09 | 64 65 61 6c 6c 6f 63 61 |........|dealloca|
|0000fff0| 74 65 28 69 6e 66 6f 2c | 20 56 5f 63 73 74 72 29 |te(info,| V_cstr)|
|00010000| 3b 0a 09 09 09 09 09 09 | 09 7d 20 65 6c 73 65 20 |;.......|.} else |
|00010010| 7b 0a 09 09 09 09 09 09 | 09 09 69 66 20 28 73 70 |{.......|..if (sp|
|00010020| 2d 3e 65 72 72 6f 72 5f | 6d 65 73 73 61 67 65 73 |->error_|messages|
|00010030| 29 0a 09 09 09 09 09 09 | 09 09 09 69 6e 66 6f 72 |).......|...infor|
|00010040| 6d 28 73 70 2d 3e 49 42 | 61 73 65 2c 20 73 74 72 |m(sp->IB|ase, str|
|00010050| 69 6e 67 73 5b 4d 53 47 | 5f 4f 50 45 52 41 54 49 |ings[MSG|_OPERATI|
|00010060| 4f 4e 41 4c 5f 45 52 52 | 4f 52 5d 2c 20 73 74 72 |ONAL_ERR|OR], str|
|00010070| 69 6e 67 73 5b 4d 53 47 | 5f 46 41 49 4c 45 44 5f |ings[MSG|_FAILED_|
|00010080| 50 57 44 5d 2c 20 6e 69 | 6c 2c 20 30 29 3b 0a 09 |PWD], ni|l, 0);..|
|00010090| 09 09 09 09 09 09 7d 0a | 09 09 09 09 09 09 7d 20 |......}.|......} |
|000100a0| 65 6c 73 65 20 7b 0a 09 | 09 09 09 09 09 09 69 66 |else {..|......if|
|000100b0| 20 28 73 70 2d 3e 65 72 | 72 6f 72 5f 6d 65 73 73 | (sp->er|ror_mess|
|000100c0| 61 67 65 73 29 0a 09 09 | 09 09 09 09 09 09 6f 6b |ages)...|......ok|
|000100d0| 28 73 70 2d 3e 49 42 61 | 73 65 2c 20 73 74 72 69 |(sp->IBa|se, stri|
|000100e0| 6e 67 73 5b 4d 53 47 5f | 4f 50 45 52 41 54 49 4f |ngs[MSG_|OPERATIO|
|000100f0| 4e 41 4c 5f 45 52 52 4f | 52 5d 2c 20 69 6e 66 6f |NAL_ERRO|R], info|
|00010100| 29 3b 0a 09 09 09 09 09 | 09 09 69 66 20 28 69 6e |);......|..if (in|
|00010110| 66 6f 29 20 64 65 61 6c | 6c 6f 63 61 74 65 28 69 |fo) deal|locate(i|
|00010120| 6e 66 6f 2c 20 56 5f 63 | 73 74 72 29 3b 0a 09 09 |nfo, V_c|str);...|
|00010130| 09 09 09 09 7d 0a 09 09 | 09 09 09 7d 20 65 6c 73 |....}...|...} els|
|00010140| 65 20 69 66 20 28 73 70 | 2d 3e 65 72 72 6f 72 5f |e if (sp|->error_|
|00010150| 6d 65 73 73 61 67 65 73 | 29 0a 09 09 09 09 09 09 |messages|).......|
|00010160| 69 6e 66 6f 72 6d 28 73 | 70 2d 3e 49 42 61 73 65 |inform(s|p->IBase|
|00010170| 2c 20 73 74 72 69 6e 67 | 73 5b 4d 53 47 5f 4f 50 |, string|s[MSG_OP|
|00010180| 45 52 41 54 49 4f 4e 41 | 4c 5f 45 52 52 4f 52 5d |ERATIONA|L_ERROR]|
|00010190| 2c 20 73 74 72 69 6e 67 | 73 5b 4d 53 47 5f 45 52 |, string|s[MSG_ER|
|000101a0| 52 4f 52 5f 52 45 41 44 | 49 4e 47 5f 50 57 44 5d |ROR_READ|ING_PWD]|
|000101b0| 2c 20 6e 69 6c 2c 20 30 | 29 3b 0a 09 09 09 09 7d |, nil, 0|);.....}|
|000101c0| 20 65 6c 73 65 20 69 66 | 20 28 73 70 2d 3e 65 72 | else if| (sp->er|
|000101d0| 72 6f 72 5f 6d 65 73 73 | 61 67 65 73 29 0a 09 09 |ror_mess|ages)...|
|000101e0| 09 09 09 69 6e 66 6f 72 | 6d 28 73 70 2d 3e 49 42 |...infor|m(sp->IB|
|000101f0| 61 73 65 2c 20 73 74 72 | 69 6e 67 73 5b 4d 53 47 |ase, str|ings[MSG|
|00010200| 5f 4f 50 45 52 41 54 49 | 4f 4e 41 4c 5f 45 52 52 |_OPERATI|ONAL_ERR|
|00010210| 4f 52 5d 2c 20 73 74 72 | 69 6e 67 73 5b 4d 53 47 |OR], str|ings[MSG|
|00010220| 5f 45 52 52 4f 52 5f 52 | 45 51 55 45 53 54 49 4e |_ERROR_R|EQUESTIN|
|00010230| 47 5f 50 57 44 5d 2c 20 | 6e 69 6c 2c 20 30 29 3b |G_PWD], |nil, 0);|
|00010240| 0a 09 09 09 7d 20 65 6c | 73 65 20 69 66 20 28 73 |....} el|se if (s|
|00010250| 70 2d 3e 65 72 72 6f 72 | 5f 6d 65 73 73 61 67 65 |p->error|_message|
|00010260| 73 29 0a 09 09 09 09 69 | 6e 66 6f 72 6d 28 73 70 |s).....i|nform(sp|
|00010270| 2d 3e 49 42 61 73 65 2c | 20 73 74 72 69 6e 67 73 |->IBase,| strings|
|00010280| 5b 4d 53 47 5f 4f 50 45 | 52 41 54 49 4f 4e 41 4c |[MSG_OPE|RATIONAL|
|00010290| 5f 45 52 52 4f 52 5d 2c | 20 73 74 72 69 6e 67 73 |_ERROR],| strings|
|000102a0| 5b 4d 53 47 5f 45 52 52 | 4f 52 5f 52 45 41 44 49 |[MSG_ERR|OR_READI|
|000102b0| 4e 47 5f 54 59 50 45 5d | 2c 20 6e 69 6c 2c 20 30 |NG_TYPE]|, nil, 0|
|000102c0| 29 3b 0a 09 09 7d 20 65 | 6c 73 65 20 69 66 20 28 |);...} e|lse if (|
|000102d0| 73 70 2d 3e 65 72 72 6f | 72 5f 6d 65 73 73 61 67 |sp->erro|r_messag|
|000102e0| 65 73 29 0a 09 09 09 69 | 6e 66 6f 72 6d 28 73 70 |es)....i|nform(sp|
|000102f0| 2d 3e 49 42 61 73 65 2c | 20 73 74 72 69 6e 67 73 |->IBase,| strings|
|00010300| 5b 4d 53 47 5f 4f 50 45 | 52 41 54 49 4f 4e 41 4c |[MSG_OPE|RATIONAL|
|00010310| 5f 45 52 52 4f 52 5d 2c | 20 73 74 72 69 6e 67 73 |_ERROR],| strings|
|00010320| 5b 4d 53 47 5f 45 52 52 | 4f 52 5f 52 45 51 55 45 |[MSG_ERR|OR_REQUE|
|00010330| 53 54 49 4e 47 5f 50 57 | 44 5d 2c 20 6e 69 6c 2c |STING_PW|D], nil,|
|00010340| 20 30 29 3b 0a 09 7d 20 | 65 6c 73 65 20 69 66 20 | 0);..} |else if |
|00010350| 28 73 70 2d 3e 65 72 72 | 6f 72 5f 6d 65 73 73 61 |(sp->err|or_messa|
|00010360| 67 65 73 29 0a 09 09 69 | 6e 66 6f 72 6d 28 73 70 |ges)...i|nform(sp|
|00010370| 2d 3e 49 42 61 73 65 2c | 20 73 74 72 69 6e 67 73 |->IBase,| strings|
|00010380| 5b 4d 53 47 5f 4f 50 45 | 52 41 54 49 4f 4e 41 4c |[MSG_OPE|RATIONAL|
|00010390| 5f 45 52 52 4f 52 5d 2c | 20 73 74 72 69 6e 67 73 |_ERROR],| strings|
|000103a0| 5b 4d 53 47 5f 45 52 52 | 4f 52 5f 53 45 54 54 49 |[MSG_ERR|OR_SETTI|
|000103b0| 4e 47 5f 54 59 50 45 5d | 2c 20 6e 69 6c 2c 20 30 |NG_TYPE]|, nil, 0|
|000103c0| 29 3b 0a 09 0a 09 72 65 | 74 75 72 6e 20 66 61 6c |);....re|turn fal|
|000103d0| 73 65 3b 0a 7d 0a 0a 76 | 6f 69 64 20 6c 6f 67 69 |se;.}..v|oid logi|
|000103e0| 6e 28 73 69 74 65 20 2a | 73 70 2c 20 73 74 72 75 |n(site *|sp, stru|
|000103f0| 63 74 20 57 69 6e 64 6f | 77 20 2a 77 29 0a 2f 2a |ct Windo|w *w)./*|
|00010400| 0a 20 2a 20 67 6f 65 73 | 20 74 68 72 6f 75 67 68 |. * goes| through|
|00010410| 20 74 68 65 20 6c 6f 67 | 69 6e 20 73 65 71 75 65 | the log|in seque|
|00010420| 6e 63 65 20 6f 6e 63 65 | 20 61 20 73 75 63 63 65 |nce once| a succe|
|00010430| 73 73 66 75 6c 20 63 6f | 6e 6e 65 63 74 69 6f 6e |ssful co|nnection|
|00010440| 20 68 61 73 20 62 65 65 | 6e 20 65 73 74 61 62 6c | has bee|n establ|
|00010450| 69 73 68 65 64 0a 20 2a | 20 49 6e 70 75 74 73 3a |ished. *| Inputs:|
|00010460| 0a 20 2a 09 73 70 09 3a | 20 73 69 74 65 20 70 6f |. *.sp.:| site po|
|00010470| 69 6e 74 65 72 0a 20 2a | 09 77 09 3a 20 74 68 65 |inter. *|.w.: the|
|00010480| 20 63 6f 6e 6e 65 63 74 | 69 6f 6e 20 63 61 6e 63 | connect|ion canc|
|00010490| 65 6c 20 77 69 6e 64 6f | 77 0a 20 2a 2f 0a 7b 0a |el windo|w. */.{.|
|000104a0| 09 74 63 70 6d 65 73 73 | 61 67 65 20 2a 74 6d 3b |.tcpmess|age *tm;|
|000104b0| 0a 09 73 74 72 75 63 74 | 20 4d 73 67 50 6f 72 74 |..struct| MsgPort|
|000104c0| 20 2a 73 79 6e 63 3b 0a | 09 62 38 20 72 65 70 6c | *sync;.|.b8 repl|
|000104d0| 79 5b 34 5d 2c 20 2a 69 | 6e 66 6f 3b 0a 09 62 33 |y[4], *i|nfo;..b3|
|000104e0| 32 20 63 73 69 67 3b 0a | 09 62 6f 6f 6c 65 61 6e |2 csig;.|.boolean|
|000104f0| 20 65 61 72 6c 79 5f 73 | 75 63 63 65 73 73 20 3d | early_s|uccess =|
|00010500| 20 66 61 6c 73 65 3b 0a | 09 0a 09 74 6d 20 3d 20 | false;.|...tm = |
|00010510| 73 70 2d 3e 63 6f 6e 74 | 72 6f 6c 3b 0a 09 73 79 |sp->cont|rol;..sy|
|00010520| 6e 63 20 3d 20 73 70 2d | 3e 73 79 6e 63 3b 0a 09 |nc = sp-|>sync;..|
|00010530| 0a 09 73 74 61 74 65 5f | 63 68 61 6e 67 65 28 73 |..state_|change(s|
|00010540| 70 2c 20 53 53 5f 4c 4f | 47 49 4e 29 3b 0a 09 0a |p, SS_LO|GIN);...|
|00010550| 09 63 73 69 67 20 3d 20 | 31 20 3c 3c 20 77 2d 3e |.csig = |1 << w->|
|00010560| 55 73 65 72 50 6f 72 74 | 2d 3e 6d 70 5f 53 69 67 |UserPort|->mp_Sig|
|00010570| 42 69 74 3b 0a 09 0a 72 | 65 74 72 79 5f 6c 6f 67 |Bit;...r|etry_log|
|00010580| 69 6e 3a 0a 09 69 66 20 | 28 73 70 2d 3e 6e 65 65 |in:..if |(sp->nee|
|00010590| 64 73 5f 75 73 65 72 20 | 7c 7c 20 73 70 2d 3e 6e |ds_user ||| sp->n|
|000105a0| 65 65 64 73 5f 70 61 73 | 73 77 6f 72 64 29 20 7b |eeds_pas|sword) {|
|000105b0| 0a 09 09 69 66 20 28 21 | 73 70 2d 3e 65 72 72 6f |...if (!|sp->erro|
|000105c0| 72 5f 6d 65 73 73 61 67 | 65 73 20 7c 7c 20 21 75 |r_messag|es || !u|
|000105d0| 73 65 72 5f 70 61 73 73 | 5f 72 65 71 75 65 73 74 |ser_pass|_request|
|000105e0| 28 73 70 2c 20 77 29 29 | 20 7b 0a 09 09 09 74 6d |(sp, w))| {....tm|
|000105f0| 2d 3e 63 6f 6d 6d 61 6e | 64 20 3d 20 54 43 50 5f |->comman|d = TCP_|
|00010600| 43 4c 4f 53 45 3b 0a 09 | 09 09 50 75 74 4d 73 67 |CLOSE;..|..PutMsg|
|00010610| 28 74 63 70 2c 20 26 74 | 6d 2d 3e 68 65 61 64 65 |(tcp, &t|m->heade|
|00010620| 72 29 3b 0a 09 09 09 57 | 61 69 74 50 6f 72 74 28 |r);....W|aitPort(|
|00010630| 73 79 6e 63 29 3b 20 47 | 65 74 4d 73 67 28 73 79 |sync); G|etMsg(sy|
|00010640| 6e 63 29 3b 0a 09 0a 09 | 09 09 63 6c 6f 73 65 5f |nc);....|..close_|
|00010650| 72 65 71 28 73 70 2c 20 | 77 29 3b 0a 09 0a 09 09 |req(sp, |w);.....|
|00010660| 09 73 74 61 74 65 5f 63 | 68 61 6e 67 65 28 73 70 |.state_c|hange(sp|
|00010670| 2c 20 53 53 5f 44 49 53 | 43 4f 4e 4e 45 43 54 45 |, SS_DIS|CONNECTE|
|00010680| 44 29 3b 0a 09 09 09 72 | 65 74 75 72 6e 3b 0a 09 |D);....r|eturn;..|
|00010690| 09 7d 0a 09 7d 0a 09 0a | 09 69 66 20 28 73 70 2d |.}..}...|.if (sp-|
|000106a0| 3e 75 73 65 72 29 20 7b | 0a 09 09 73 70 72 69 6e |>user) {|...sprin|
|000106b0| 74 66 28 73 70 2d 3e 72 | 65 61 64 5f 62 75 66 66 |tf(sp->r|ead_buff|
|000106c0| 65 72 2c 20 22 55 53 45 | 52 20 25 73 5c 72 5c 6e |er, "USE|R %s\r\n|
|000106d0| 22 2c 20 73 70 2d 3e 75 | 73 65 72 29 3b 0a 09 7d |", sp->u|ser);..}|
|000106e0| 20 65 6c 73 65 20 7b 0a | 09 09 73 74 72 63 70 79 | else {.|..strcpy|
|000106f0| 28 73 70 2d 3e 72 65 61 | 64 5f 62 75 66 66 65 72 |(sp->rea|d_buffer|
|00010700| 2c 20 22 55 53 45 52 20 | 66 74 70 5c 72 5c 6e 22 |, "USER |ftp\r\n"|
|00010710| 29 3b 0a 09 7d 0a 09 0a | 09 69 66 20 28 63 6f 6e |);..}...|.if (con|
|00010720| 74 72 6f 6c 5f 77 72 69 | 74 65 28 73 70 2c 20 73 |trol_wri|te(sp, s|
|00010730| 70 2d 3e 72 65 61 64 5f | 62 75 66 66 65 72 2c 20 |p->read_|buffer, |
|00010740| 63 73 69 67 29 20 3d 3d | 20 4e 4f 5f 45 52 52 4f |csig) ==| NO_ERRO|
|00010750| 52 29 20 7b 0a 09 09 69 | 66 20 28 73 70 2d 3e 70 |R) {...i|f (sp->p|
|00010760| 61 73 73 77 6f 72 64 29 | 20 7b 0a 09 09 09 73 70 |assword)| {....sp|
|00010770| 72 69 6e 74 66 28 73 70 | 2d 3e 72 65 61 64 5f 62 |rintf(sp|->read_b|
|00010780| 75 66 66 65 72 2c 20 22 | 50 41 53 53 20 25 73 5c |uffer, "|PASS %s\|
|00010790| 72 5c 6e 22 2c 20 73 70 | 2d 3e 70 61 73 73 77 6f |r\n", sp|->passwo|
|000107a0| 72 64 29 3b 0a 09 09 7d | 20 65 6c 73 65 20 7b 0a |rd);...}| else {.|
|000107b0| 09 09 09 73 70 72 69 6e | 74 66 28 73 70 2d 3e 72 |...sprin|tf(sp->r|
|000107c0| 65 61 64 5f 62 75 66 66 | 65 72 2c 20 22 50 41 53 |ead_buff|er, "PAS|
|000107d0| 53 20 25 73 5c 72 5c 6e | 22 2c 20 61 6e 6f 6e 5f |S %s\r\n|", anon_|
|000107e0| 6c 6f 67 69 6e 29 3b 0a | 09 09 7d 0a 09 09 69 66 |login);.|..}...if|
|000107f0| 20 28 63 6f 6e 74 72 6f | 6c 5f 77 72 69 74 65 28 | (contro|l_write(|
|00010800| 73 70 2c 20 73 70 2d 3e | 72 65 61 64 5f 62 75 66 |sp, sp->|read_buf|
|00010810| 66 65 72 2c 20 63 73 69 | 67 29 20 3d 3d 20 4e 4f |fer, csi|g) == NO|
|00010820| 5f 45 52 52 4f 52 29 20 | 7b 0a 09 09 09 2f 2a 20 |_ERROR) |{..../* |
|00010830| 66 69 72 73 74 20 72 65 | 73 70 6f 6e 73 65 20 73 |first re|sponse s|
|00010840| 68 6f 75 6c 64 20 62 65 | 20 74 6f 20 74 68 65 20 |hould be| to the |
|00010850| 55 53 45 52 20 2a 2f 0a | 09 09 09 0a 09 09 09 73 |USER */.|.......s|
|00010860| 77 69 74 63 68 20 28 72 | 65 73 70 6f 6e 73 65 28 |witch (r|esponse(|
|00010870| 73 70 2c 20 63 73 69 67 | 2c 20 26 69 6e 66 6f 2c |sp, csig|, &info,|
|00010880| 20 72 65 70 6c 79 29 29 | 20 7b 0a 09 09 09 63 61 | reply))| {....ca|
|00010890| 73 65 20 4e 4f 5f 45 52 | 52 4f 52 3a 0a 09 09 09 |se NO_ER|ROR:....|
|000108a0| 09 73 77 69 74 63 68 20 | 28 72 65 70 6c 79 5b 30 |.switch |(reply[0|
|000108b0| 5d 29 20 7b 0a 09 09 09 | 09 63 61 73 65 20 27 32 |]) {....|.case '2|
|000108c0| 27 3a 0a 09 09 09 09 09 | 65 61 72 6c 79 5f 73 75 |':......|early_su|
|000108d0| 63 63 65 73 73 20 3d 20 | 74 72 75 65 3b 0a 09 09 |ccess = |true;...|
|000108e0| 09 09 09 2f 2a 20 74 68 | 65 20 77 65 6c 63 6f 6d |.../* th|e welcom|
|000108f0| 65 20 62 61 6e 6e 65 72 | 20 77 69 6c 6c 20 63 6f |e banner| will co|
|00010900| 6d 65 20 68 65 72 65 20 | 49 20 67 75 65 73 73 20 |me here |I guess |
|00010910| 2a 2f 0a 09 09 09 09 09 | 69 66 20 28 73 70 2d 3e |*/......|if (sp->|
|00010920| 61 6c 6c 5f 6d 65 73 73 | 61 67 65 73 20 26 26 20 |all_mess|ages && |
|00010930| 21 73 70 2d 3e 72 65 61 | 64 5f 62 61 6e 6e 65 72 |!sp->rea|d_banner|
|00010940| 73 29 20 7b 0a 09 09 09 | 09 09 09 6f 6b 28 73 70 |s) {....|...ok(sp|
|00010950| 2d 3e 49 42 61 73 65 2c | 20 73 74 72 69 6e 67 73 |->IBase,| strings|
|00010960| 5b 4d 53 47 5f 4c 4f 47 | 49 4e 5f 53 55 43 43 45 |[MSG_LOG|IN_SUCCE|
|00010970| 45 44 45 44 5f 4e 4f 5f | 50 41 53 53 5d 2c 20 69 |EDED_NO_|PASS], i|
|00010980| 6e 66 6f 29 3b 0a 09 09 | 09 09 09 09 73 70 2d 3e |nfo);...|....sp->|
|00010990| 72 65 61 64 5f 62 61 6e | 6e 65 72 73 20 3d 20 74 |read_ban|ners = t|
|000109a0| 72 75 65 3b 0a 09 09 09 | 09 09 7d 0a 09 09 09 09 |rue;....|..}.....|
|000109b0| 09 2f 2a 20 66 61 6c 6c | 20 74 68 72 6f 75 67 68 |./* fall| through|
|000109c0| 20 2a 2f 0a 09 09 09 09 | 63 61 73 65 20 27 33 27 | */.....|case '3'|
|000109d0| 3a 0a 09 09 09 09 09 2f | 2a 20 69 67 6e 6f 72 65 |:....../|* ignore|
|000109e0| 20 74 68 65 20 62 61 6e | 6e 65 72 20 68 65 72 65 | the ban|ner here|
|000109f0| 20 2e 2e 2e 20 75 73 75 | 61 6c 6c 79 20 69 74 73 | ... usu|ally its|
|00010a00| 20 6a 75 73 74 20 22 41 | 6e 6f 6e 79 6d 6f 75 73 | just "A|nonymous|
|00010a10| 20 6c 6f 67 69 6e 20 6f | 6b 2c 20 73 65 6e 64 20 | login o|k, send |
|00010a20| 69 64 65 6e 74 20 2e 2e | 2e 22 20 2a 2f 0a 09 09 |ident ..|." */...|
|00010a30| 09 09 09 69 66 20 28 69 | 6e 66 6f 29 20 64 65 61 |...if (i|nfo) dea|
|00010a40| 6c 6c 6f 63 61 74 65 28 | 69 6e 66 6f 2c 20 56 5f |llocate(|info, V_|
|00010a50| 63 73 74 72 29 3b 0a 09 | 09 0a 09 09 09 09 09 2f |cstr);..|......./|
|00010a60| 2a 20 6e 6f 77 20 72 65 | 61 64 20 70 61 73 73 20 |* now re|ad pass |
|00010a70| 72 65 73 70 6f 6e 73 65 | 20 2a 2f 0a 09 09 09 09 |response| */.....|
|00010a80| 09 73 77 69 74 63 68 20 | 28 72 65 73 70 6f 6e 73 |.switch |(respons|
|00010a90| 65 28 73 70 2c 20 63 73 | 69 67 2c 20 26 69 6e 66 |e(sp, cs|ig, &inf|
|00010aa0| 6f 2c 20 72 65 70 6c 79 | 29 29 20 7b 0a 09 09 09 |o, reply|)) {....|
|00010ab0| 09 09 63 61 73 65 20 4e | 4f 5f 45 52 52 4f 52 3a |..case N|O_ERROR:|
|00010ac0| 0a 09 09 09 09 09 09 2f | 2a 20 69 66 20 77 65 20 |......./|* if we |
|00010ad0| 73 75 63 63 65 65 64 65 | 64 20 65 61 72 6c 79 2c |succeede|d early,|
|00010ae0| 20 77 65 20 64 6f 6e 27 | 74 20 63 61 72 65 20 77 | we don'|t care w|
|00010af0| 68 61 74 20 74 68 65 79 | 20 74 65 6c 6c 20 75 73 |hat they| tell us|
|00010b00| 20 2a 2f 0a 09 09 09 09 | 09 09 69 66 20 28 21 65 | */.....|..if (!e|
|00010b10| 61 72 6c 79 5f 73 75 63 | 63 65 73 73 29 20 7b 0a |arly_suc|cess) {.|
|00010b20| 09 09 09 09 09 09 09 69 | 66 20 28 72 65 70 6c 79 |.......i|f (reply|
|00010b30| 5b 30 5d 20 3d 3d 20 27 | 32 27 29 20 7b 0a 09 09 |[0] == '|2') {...|
|00010b40| 09 09 09 09 09 09 69 66 | 20 28 73 70 2d 3e 61 6c |......if| (sp->al|
|00010b50| 6c 5f 6d 65 73 73 61 67 | 65 73 20 26 26 20 21 73 |l_messag|es && !s|
|00010b60| 70 2d 3e 72 65 61 64 5f | 62 61 6e 6e 65 72 73 29 |p->read_|banners)|
|00010b70| 20 7b 0a 09 09 09 09 09 | 09 09 09 09 6f 6b 28 73 | {......|....ok(s|
|00010b80| 70 2d 3e 49 42 61 73 65 | 2c 20 73 74 72 69 6e 67 |p->IBase|, string|
|00010b90| 73 5b 4d 53 47 5f 4c 4f | 47 49 4e 5f 53 55 43 43 |s[MSG_LO|GIN_SUCC|
|00010ba0| 45 45 44 45 44 5d 2c 20 | 69 6e 66 6f 29 3b 0a 09 |EEDED], |info);..|
|00010bb0| 09 09 09 09 09 09 09 09 | 73 70 2d 3e 72 65 61 64 |........|sp->read|
|00010bc0| 5f 62 61 6e 6e 65 72 73 | 20 3d 20 74 72 75 65 3b |_banners| = true;|
|00010bd0| 0a 09 09 09 09 09 09 09 | 09 7d 0a 09 09 09 09 09 |........|.}......|
|00010be0| 09 09 7d 20 65 6c 73 65 | 20 69 66 20 28 72 65 70 |..} else| if (rep|
|00010bf0| 6c 79 5b 30 5d 20 3d 3d | 20 27 33 27 29 20 7b 0a |ly[0] ==| '3') {.|
|00010c00| 09 09 09 09 09 09 09 09 | 2f 2a 20 74 68 65 79 20 |........|/* they |
|00010c10| 77 61 6e 74 20 61 6e 20 | 41 43 43 54 20 2e 2e 2e |want an |ACCT ...|
|00010c20| 20 66 75 63 6b 20 27 65 | 6d 20 2a 2f 0a 0a 09 09 | fuck 'e|m */....|
|00010c30| 09 09 09 09 09 09 69 66 | 20 28 73 70 2d 3e 65 72 |......if| (sp->er|
|00010c40| 72 6f 72 5f 6d 65 73 73 | 61 67 65 73 29 0a 09 09 |ror_mess|ages)...|
|00010c50| 09 09 09 09 09 09 09 69 | 6e 66 6f 72 6d 28 73 70 |.......i|nform(sp|
|00010c60| 2d 3e 49 42 61 73 65 2c | 20 73 74 72 69 6e 67 73 |->IBase,| strings|
|00010c70| 5b 4d 53 47 5f 4c 4f 47 | 49 4e 5f 46 41 49 4c 45 |[MSG_LOG|IN_FAILE|
|00010c80| 44 5d 2c 20 73 74 72 69 | 6e 67 73 5b 4d 53 47 5f |D], stri|ngs[MSG_|
|00010c90| 41 43 43 54 5f 52 45 51 | 55 45 53 54 45 44 5d 2c |ACCT_REQ|UESTED],|
|00010ca0| 20 6e 69 6c 2c 20 30 29 | 3b 0a 09 09 09 09 09 09 | nil, 0)|;.......|
|00010cb0| 09 09 69 66 20 28 69 6e | 66 6f 29 20 64 65 61 6c |..if (in|fo) deal|
|00010cc0| 6c 6f 63 61 74 65 28 69 | 6e 66 6f 2c 20 56 5f 63 |locate(i|nfo, V_c|
|00010cd0| 73 74 72 29 3b 0a 09 09 | 09 09 09 09 09 09 62 72 |str);...|......br|
|00010ce0| 65 61 6b 3b 0a 09 09 09 | 09 09 09 09 7d 20 65 6c |eak;....|....} el|
|00010cf0| 73 65 20 7b 0a 09 09 09 | 09 09 09 09 09 69 66 20 |se {....|.....if |
|00010d00| 28 72 65 70 6c 79 5b 30 | 5d 20 3d 3d 20 27 35 27 |(reply[0|] == '5'|
|00010d10| 20 26 26 20 72 65 70 6c | 79 5b 31 5d 20 3d 3d 20 | && repl|y[1] == |
|00010d20| 27 33 27 20 26 26 20 72 | 65 70 6c 79 5b 32 5d 20 |'3' && r|eply[2] |
|00010d30| 3d 3d 20 27 30 27 29 20 | 7b 0a 09 09 09 09 09 09 |== '0') |{.......|
|00010d40| 09 09 09 2f 2a 20 74 68 | 69 73 20 69 73 20 6c 6f |.../* th|is is lo|
|00010d50| 67 69 6e 20 69 6e 63 6f | 72 72 65 63 74 20 2a 2f |gin inco|rrect */|
|00010d60| 0a 09 09 09 09 09 09 09 | 09 09 69 66 20 28 73 70 |........|..if (sp|
|00010d70| 2d 3e 65 72 72 6f 72 5f | 6d 65 73 73 61 67 65 73 |->error_|messages|
|00010d80| 20 26 26 20 72 65 74 72 | 79 5f 63 61 6e 63 65 6c | && retr|y_cancel|
|00010d90| 28 73 70 2d 3e 49 42 61 | 73 65 2c 20 73 74 72 69 |(sp->IBa|se, stri|
|00010da0| 6e 67 73 5b 4d 53 47 5f | 4c 4f 47 49 4e 5f 49 4e |ngs[MSG_|LOGIN_IN|
|00010db0| 43 4f 52 52 45 43 54 5d | 2c 20 69 6e 66 6f 29 29 |CORRECT]|, info))|
|00010dc0| 20 7b 0a 09 09 09 09 09 | 09 09 09 09 09 69 66 20 | {......|.....if |
|00010dd0| 28 69 6e 66 6f 29 20 64 | 65 61 6c 6c 6f 63 61 74 |(info) d|eallocat|
|00010de0| 65 28 69 6e 66 6f 2c 20 | 56 5f 63 73 74 72 29 3b |e(info, |V_cstr);|
|00010df0| 0a 09 09 09 09 09 09 09 | 09 09 09 73 70 2d 3e 6e |........|...sp->n|
|00010e00| 65 65 64 73 5f 70 61 73 | 73 77 6f 72 64 20 3d 20 |eeds_pas|sword = |
|00010e10| 74 72 75 65 3b 0a 09 09 | 09 09 09 09 09 09 09 09 |true;...|........|
|00010e20| 69 66 20 28 73 70 2d 3e | 70 61 73 73 77 6f 72 64 |if (sp->|password|
|00010e30| 29 20 64 65 61 6c 6c 6f | 63 61 74 65 28 73 70 2d |) deallo|cate(sp-|
|00010e40| 3e 70 61 73 73 77 6f 72 | 64 2c 20 56 5f 63 73 74 |>passwor|d, V_cst|
|00010e50| 72 29 3b 0a 09 09 09 09 | 09 09 09 09 09 09 73 70 |r);.....|......sp|
|00010e60| 2d 3e 70 61 73 73 77 6f | 72 64 20 3d 20 6e 69 6c |->passwo|rd = nil|
|00010e70| 3b 0a 09 09 09 09 09 09 | 09 09 09 09 67 6f 74 6f |;.......|....goto|
|00010e80| 20 72 65 74 72 79 5f 6c | 6f 67 69 6e 3b 0a 09 09 | retry_l|ogin;...|
|00010e90| 09 09 09 09 09 09 09 7d | 0a 09 09 09 09 09 09 09 |.......}|........|
|00010ea0| 09 09 69 66 20 28 69 6e | 66 6f 29 20 64 65 61 6c |..if (in|fo) deal|
|00010eb0| 6c 6f 63 61 74 65 28 69 | 6e 66 6f 2c 20 56 5f 63 |locate(i|nfo, V_c|
|00010ec0| 73 74 72 29 3b 0a 09 09 | 09 09 09 09 09 09 09 62 |str);...|.......b|
|00010ed0| 72 65 61 6b 3b 0a 09 09 | 09 09 09 09 09 09 7d 0a |reak;...|......}.|
|00010ee0| 09 09 09 09 09 09 09 09 | 0a 09 09 09 09 09 09 09 |........|........|
|00010ef0| 09 69 66 20 28 73 70 2d | 3e 65 72 72 6f 72 5f 6d |.if (sp-|>error_m|
|00010f00| 65 73 73 61 67 65 73 29 | 0a 09 09 09 09 09 09 09 |essages)|........|
|00010f10| 09 09 6f 6b 28 73 70 2d | 3e 49 42 61 73 65 2c 20 |..ok(sp-|>IBase, |
|00010f20| 73 74 72 69 6e 67 73 5b | 4d 53 47 5f 4c 4f 47 49 |strings[|MSG_LOGI|
|00010f30| 4e 5f 46 41 49 4c 45 44 | 5f 50 41 53 53 5d 2c 20 |N_FAILED|_PASS], |
|00010f40| 69 6e 66 6f 29 3b 0a 09 | 09 09 09 09 09 09 09 69 |info);..|.......i|
|00010f50| 66 20 28 69 6e 66 6f 29 | 20 64 65 61 6c 6c 6f 63 |f (info)| dealloc|
|00010f60| 61 74 65 28 69 6e 66 6f | 2c 20 56 5f 63 73 74 72 |ate(info|, V_cstr|
|00010f70| 29 3b 0a 09 09 09 09 09 | 09 09 09 62 72 65 61 6b |);......|...break|
|00010f80| 3b 0a 09 09 09 09 09 09 | 09 7d 0a 09 09 09 09 09 |;.......|.}......|
|00010f90| 09 7d 0a 09 09 09 09 09 | 09 0a 09 09 09 09 09 09 |.}......|........|
|00010fa0| 69 66 20 28 69 6e 66 6f | 29 20 64 65 61 6c 6c 6f |if (info|) deallo|
|00010fb0| 63 61 74 65 28 69 6e 66 | 6f 2c 20 56 5f 63 73 74 |cate(inf|o, V_cst|
|00010fc0| 72 29 3b 0a 09 09 09 09 | 09 09 0a 09 09 09 09 09 |r);.....|........|
|00010fd0| 09 69 66 20 28 70 72 65 | 6c 69 6d 28 73 70 2c 20 |.if (pre|lim(sp, |
|00010fe0| 77 29 29 20 7b 0a 09 09 | 09 09 09 09 09 63 6c 6f |w)) {...|.....clo|
|00010ff0| 73 65 5f 72 65 71 28 73 | 70 2c 20 77 29 3b 0a 09 |se_req(s|p, w);..|
|00011000| 09 09 09 09 09 09 73 70 | 2d 3e 63 6f 6e 6e 65 63 |......sp|->connec|
|00011010| 74 65 64 20 3d 20 74 72 | 75 65 3b 0a 09 09 09 0a |ted = tr|ue;.....|
|00011020| 09 09 09 09 09 09 09 73 | 74 61 74 65 5f 63 68 61 |.......s|tate_cha|
|00011030| 6e 67 65 28 73 70 2c 20 | 53 53 5f 49 44 4c 45 29 |nge(sp, |SS_IDLE)|
|00011040| 3b 0a 09 09 09 09 09 09 | 09 72 65 74 75 72 6e 3b |;.......|.return;|
|00011050| 0a 09 09 09 09 09 09 7d | 0a 09 09 09 09 09 09 0a |.......}|........|
|00011060| 09 09 09 09 09 09 62 72 | 65 61 6b 3b 0a 09 09 09 |......br|eak;....|
|00011070| 09 09 63 61 73 65 20 45 | 52 52 4f 52 5f 49 4e 54 |..case E|RROR_INT|
|00011080| 45 52 52 55 50 54 45 44 | 3a 0a 09 09 09 09 09 09 |ERRUPTED|:.......|
|00011090| 62 72 65 61 6b 3b 0a 09 | 09 09 09 09 63 61 73 65 |break;..|....case|
|000110a0| 20 45 52 52 4f 52 5f 4c | 4f 53 54 5f 43 4f 4e 4e | ERROR_L|OST_CONN|
|000110b0| 45 43 54 49 4f 4e 3a 0a | 09 09 09 09 09 63 61 73 |ECTION:.|.....cas|
|000110c0| 65 20 45 52 52 4f 52 5f | 45 4f 46 3a 0a 09 09 09 |e ERROR_|EOF:....|
|000110d0| 09 09 63 61 73 65 20 45 | 52 52 4f 52 5f 55 4e 52 |..case E|RROR_UNR|
|000110e0| 45 41 43 48 41 42 4c 45 | 3a 0a 09 09 09 09 09 09 |EACHABLE|:.......|
|000110f0| 69 66 20 28 73 70 2d 3e | 65 72 72 6f 72 5f 6d 65 |if (sp->|error_me|
|00011100| 73 73 61 67 65 73 29 0a | 09 09 09 09 09 09 09 69 |ssages).|.......i|
|00011110| 6e 66 6f 72 6d 28 73 70 | 2d 3e 49 42 61 73 65 2c |nform(sp|->IBase,|
|00011120| 20 73 74 72 69 6e 67 73 | 5b 4d 53 47 5f 4c 4f 47 | strings|[MSG_LOG|
|00011130| 49 4e 5f 45 52 52 4f 52 | 5d 2c 20 73 74 72 69 6e |IN_ERROR|], strin|
|00011140| 67 73 5b 4d 53 47 5f 4c | 4f 53 54 5f 43 4f 4e 4e |gs[MSG_L|OST_CONN|
|00011150| 5f 44 55 52 49 4e 47 5f | 4c 4f 47 49 4e 5f 50 41 |_DURING_|LOGIN_PA|
|00011160| 53 53 5d 2c 20 6e 69 6c | 2c 20 30 29 3b 0a 09 09 |SS], nil|, 0);...|
|00011170| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 09 09 09 |....brea|k;......|
|00011180| 63 61 73 65 20 45 52 52 | 4f 52 5f 47 41 52 42 41 |case ERR|OR_GARBA|
|00011190| 47 45 5f 52 45 43 45 49 | 56 45 44 3a 0a 09 09 09 |GE_RECEI|VED:....|
|000111a0| 09 09 09 69 66 20 28 73 | 70 2d 3e 65 72 72 6f 72 |...if (s|p->error|
|000111b0| 5f 6d 65 73 73 61 67 65 | 73 29 0a 09 09 09 09 09 |_message|s)......|
|000111c0| 09 09 69 6e 66 6f 72 6d | 28 73 70 2d 3e 49 42 61 |..inform|(sp->IBa|
|000111d0| 73 65 2c 20 73 74 72 69 | 6e 67 73 5b 4d 53 47 5f |se, stri|ngs[MSG_|
|000111e0| 4c 4f 47 49 4e 5f 45 52 | 52 4f 52 5d 2c 20 73 74 |LOGIN_ER|ROR], st|
|000111f0| 72 69 6e 67 73 5b 4d 53 | 47 5f 47 41 52 42 41 47 |rings[MS|G_GARBAG|
|00011200| 45 5f 52 45 43 45 49 56 | 45 44 5f 50 41 53 53 5d |E_RECEIV|ED_PASS]|
|00011210| 2c 20 6e 69 6c 2c 20 30 | 29 3b 0a 09 09 09 09 09 |, nil, 0|);......|
|00011220| 09 62 72 65 61 6b 3b 0a | 09 09 09 09 09 64 65 66 |.break;.|.....def|
|00011230| 61 75 6c 74 3a 0a 09 09 | 09 09 09 09 69 66 20 28 |ault:...|....if (|
|00011240| 73 70 2d 3e 65 72 72 6f | 72 5f 6d 65 73 73 61 67 |sp->erro|r_messag|
|00011250| 65 73 29 0a 09 09 09 09 | 09 09 09 69 6e 66 6f 72 |es).....|...infor|
|00011260| 6d 28 73 70 2d 3e 49 42 | 61 73 65 2c 20 73 74 72 |m(sp->IB|ase, str|
|00011270| 69 6e 67 73 5b 4d 53 47 | 5f 4c 4f 47 49 4e 5f 45 |ings[MSG|_LOGIN_E|
|00011280| 52 52 4f 52 5d 2c 20 73 | 74 72 69 6e 67 73 5b 4d |RROR], s|trings[M|
|00011290| 53 47 5f 45 52 52 4f 52 | 5f 52 45 53 50 4f 4e 53 |SG_ERROR|_RESPONS|
|000112a0| 45 5f 50 41 53 53 5d 2c | 20 6e 69 6c 2c 20 30 29 |E_PASS],| nil, 0)|
|000112b0| 3b 0a 09 09 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |;.......|break;..|
|000112c0| 09 09 09 09 7d 0a 09 09 | 09 09 09 62 72 65 61 6b |....}...|...break|
|000112d0| 3b 0a 09 09 09 09 63 61 | 73 65 20 27 34 27 3a 0a |;.....ca|se '4':.|
|000112e0| 09 09 09 09 09 69 66 20 | 28 73 70 2d 3e 65 72 72 |.....if |(sp->err|
|000112f0| 6f 72 5f 6d 65 73 73 61 | 67 65 73 20 26 26 20 72 |or_messa|ges && r|
|00011300| 65 74 72 79 5f 63 61 6e | 63 65 6c 28 73 70 2d 3e |etry_can|cel(sp->|
|00011310| 49 42 61 73 65 2c 20 73 | 74 72 69 6e 67 73 5b 4d |IBase, s|trings[M|
|00011320| 53 47 5f 54 45 4d 50 5f | 4c 4f 47 49 4e 5f 46 41 |SG_TEMP_|LOGIN_FA|
|00011330| 49 4c 55 52 45 5f 55 53 | 45 52 5d 2c 20 69 6e 66 |ILURE_US|ER], inf|
|00011340| 6f 29 29 20 7b 0a 09 09 | 09 09 09 09 69 66 20 28 |o)) {...|....if (|
|00011350| 69 6e 66 6f 29 20 64 65 | 61 6c 6c 6f 63 61 74 65 |info) de|allocate|
|00011360| 28 69 6e 66 6f 2c 20 56 | 5f 63 73 74 72 29 3b 0a |(info, V|_cstr);.|
|00011370| 09 09 09 09 09 09 67 6f | 74 6f 20 72 65 74 72 79 |......go|to retry|
|00011380| 5f 6c 6f 67 69 6e 3b 0a | 09 09 09 09 09 7d 0a 09 |_login;.|.....}..|
|00011390| 09 09 09 09 69 66 20 28 | 69 6e 66 6f 29 20 64 65 |....if (|info) de|
|000113a0| 61 6c 6c 6f 63 61 74 65 | 28 69 6e 66 6f 2c 20 56 |allocate|(info, V|
|000113b0| 5f 63 73 74 72 29 3b 0a | 09 09 09 09 09 62 72 65 |_cstr);.|.....bre|
|000113c0| 61 6b 3b 0a 09 09 09 09 | 64 65 66 61 75 6c 74 3a |ak;.....|default:|
|000113d0| 0a 09 09 09 09 09 69 66 | 20 28 73 70 2d 3e 65 72 |......if| (sp->er|
|000113e0| 72 6f 72 5f 6d 65 73 73 | 61 67 65 73 29 0a 09 09 |ror_mess|ages)...|
|000113f0| 09 09 09 09 6f 6b 28 73 | 70 2d 3e 49 42 61 73 65 |....ok(s|p->IBase|
|00011400| 2c 20 73 74 72 69 6e 67 | 73 5b 4d 53 47 5f 4c 4f |, string|s[MSG_LO|
|00011410| 47 49 4e 5f 46 41 49 4c | 45 44 5f 55 53 45 52 5d |GIN_FAIL|ED_USER]|
|00011420| 2c 20 69 6e 66 6f 29 3b | 0a 09 09 09 09 09 69 66 |, info);|......if|
|00011430| 20 28 69 6e 66 6f 29 20 | 64 65 61 6c 6c 6f 63 61 | (info) |dealloca|
|00011440| 74 65 28 69 6e 66 6f 2c | 20 56 5f 63 73 74 72 29 |te(info,| V_cstr)|
|00011450| 3b 0a 09 09 09 09 09 62 | 72 65 61 6b 3b 0a 09 09 |;......b|reak;...|
|00011460| 09 09 7d 0a 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |..}.....|break;..|
|00011470| 09 09 63 61 73 65 20 45 | 52 52 4f 52 5f 49 4e 54 |..case E|RROR_INT|
|00011480| 45 52 52 55 50 54 45 44 | 3a 0a 09 09 09 09 62 72 |ERRUPTED|:.....br|
|00011490| 65 61 6b 3b 0a 09 09 09 | 63 61 73 65 20 45 52 52 |eak;....|case ERR|
|000114a0| 4f 52 5f 4c 4f 53 54 5f | 43 4f 4e 4e 45 43 54 49 |OR_LOST_|CONNECTI|
|000114b0| 4f 4e 3a 0a 09 09 09 63 | 61 73 65 20 45 52 52 4f |ON:....c|ase ERRO|
|000114c0| 52 5f 45 4f 46 3a 0a 09 | 09 09 63 61 73 65 20 45 |R_EOF:..|..case E|
|000114d0| 52 52 4f 52 5f 55 4e 52 | 45 41 43 48 41 42 4c 45 |RROR_UNR|EACHABLE|
|000114e0| 3a 0a 09 09 09 09 69 66 | 20 28 73 70 2d 3e 65 72 |:.....if| (sp->er|
|000114f0| 72 6f 72 5f 6d 65 73 73 | 61 67 65 73 29 0a 09 09 |ror_mess|ages)...|
|00011500| 09 09 09 69 6e 66 6f 72 | 6d 28 73 70 2d 3e 49 42 |...infor|m(sp->IB|
|00011510| 61 73 65 2c 20 73 74 72 | 69 6e 67 73 5b 4d 53 47 |ase, str|ings[MSG|
|00011520| 5f 4c 4f 47 49 4e 5f 45 | 52 52 4f 52 5d 2c 20 73 |_LOGIN_E|RROR], s|
|00011530| 74 72 69 6e 67 73 5b 4d | 53 47 5f 4c 4f 53 54 5f |trings[M|SG_LOST_|
|00011540| 43 4f 4e 4e 5f 44 55 52 | 49 4e 47 5f 4c 4f 47 49 |CONN_DUR|ING_LOGI|
|00011550| 4e 5d 2c 20 6e 69 6c 2c | 20 30 29 3b 0a 09 09 09 |N], nil,| 0);....|
|00011560| 09 62 72 65 61 6b 3b 0a | 09 09 09 63 61 73 65 20 |.break;.|...case |
|00011570| 45 52 52 4f 52 5f 47 41 | 52 42 41 47 45 5f 52 45 |ERROR_GA|RBAGE_RE|
|00011580| 43 45 49 56 45 44 3a 0a | 09 09 09 09 69 66 20 28 |CEIVED:.|....if (|
|00011590| 73 70 2d 3e 65 72 72 6f | 72 5f 6d 65 73 73 61 67 |sp->erro|r_messag|
|000115a0| 65 73 29 0a 09 09 09 09 | 09 69 6e 66 6f 72 6d 28 |es).....|.inform(|
|000115b0| 73 70 2d 3e 49 42 61 73 | 65 2c 20 73 74 72 69 6e |sp->IBas|e, strin|
|000115c0| 67 73 5b 4d 53 47 5f 4c | 4f 47 49 4e 5f 45 52 52 |gs[MSG_L|OGIN_ERR|
|000115d0| 4f 52 5d 2c 20 73 74 72 | 69 6e 67 73 5b 4d 53 47 |OR], str|ings[MSG|
|000115e0| 5f 47 41 52 42 41 47 45 | 5f 52 45 43 45 49 56 45 |_GARBAGE|_RECEIVE|
|000115f0| 44 5f 55 53 45 52 5d 2c | 20 6e 69 6c 2c 20 30 29 |D_USER],| nil, 0)|
|00011600| 3b 0a 09 09 09 09 62 72 | 65 61 6b 3b 0a 09 09 09 |;.....br|eak;....|
|00011610| 64 65 66 61 75 6c 74 3a | 0a 09 09 09 09 69 66 20 |default:|.....if |
|00011620| 28 73 70 2d 3e 65 72 72 | 6f 72 5f 6d 65 73 73 61 |(sp->err|or_messa|
|00011630| 67 65 73 29 0a 09 09 09 | 09 09 69 6e 66 6f 72 6d |ges)....|..inform|
|00011640| 28 73 70 2d 3e 49 42 61 | 73 65 2c 20 73 74 72 69 |(sp->IBa|se, stri|
|00011650| 6e 67 73 5b 4d 53 47 5f | 4c 4f 47 49 4e 5f 45 52 |ngs[MSG_|LOGIN_ER|
|00011660| 52 4f 52 5d 2c 20 73 74 | 72 69 6e 67 73 5b 4d 53 |ROR], st|rings[MS|
|00011670| 47 5f 45 52 52 4f 52 5f | 55 53 45 52 5f 52 45 53 |G_ERROR_|USER_RES|
|00011680| 50 4f 4e 53 45 5d 2c 20 | 6e 69 6c 2c 20 30 29 3b |PONSE], |nil, 0);|
|00011690| 0a 09 09 09 09 62 72 65 | 61 6b 3b 0a 09 09 09 7d |.....bre|ak;....}|
|000116a0| 0a 09 09 7d 20 65 6c 73 | 65 20 69 66 20 28 73 70 |...} els|e if (sp|
|000116b0| 2d 3e 65 72 72 6f 72 5f | 6d 65 73 73 61 67 65 73 |->error_|messages|
|000116c0| 29 0a 09 09 09 69 6e 66 | 6f 72 6d 28 73 70 2d 3e |)....inf|orm(sp->|
|000116d0| 49 42 61 73 65 2c 20 73 | 74 72 69 6e 67 73 5b 4d |IBase, s|trings[M|
|000116e0| 53 47 5f 4c 4f 47 49 4e | 5f 45 52 52 4f 52 5d 2c |SG_LOGIN|_ERROR],|
|000116f0| 20 73 74 72 69 6e 67 73 | 5b 4d 53 47 5f 45 52 52 | strings|[MSG_ERR|
|00011700| 4f 52 5f 57 52 49 54 49 | 4e 47 5f 50 41 53 53 5d |OR_WRITI|NG_PASS]|
|00011710| 2c 20 6e 69 6c 2c 20 30 | 29 3b 0a 09 7d 20 65 6c |, nil, 0|);..} el|
|00011720| 73 65 20 69 66 20 28 73 | 70 2d 3e 65 72 72 6f 72 |se if (s|p->error|
|00011730| 5f 6d 65 73 73 61 67 65 | 73 29 0a 09 09 69 6e 66 |_message|s)...inf|
|00011740| 6f 72 6d 28 73 70 2d 3e | 49 42 61 73 65 2c 20 73 |orm(sp->|IBase, s|
|00011750| 74 72 69 6e 67 73 5b 4d | 53 47 5f 4c 4f 47 49 4e |trings[M|SG_LOGIN|
|00011760| 5f 45 52 52 4f 52 5d 2c | 20 73 74 72 69 6e 67 73 |_ERROR],| strings|
|00011770| 5b 4d 53 47 5f 45 52 52 | 4f 52 5f 57 52 49 54 49 |[MSG_ERR|OR_WRITI|
|00011780| 4e 47 5f 55 53 45 52 5d | 2c 20 6e 69 6c 2c 20 30 |NG_USER]|, nil, 0|
|00011790| 29 3b 0a 09 0a 09 74 6d | 2d 3e 63 6f 6d 6d 61 6e |);....tm|->comman|
|000117a0| 64 20 3d 20 54 43 50 5f | 43 4c 4f 53 45 3b 0a 09 |d = TCP_|CLOSE;..|
|000117b0| 50 75 74 4d 73 67 28 74 | 63 70 2c 20 26 74 6d 2d |PutMsg(t|cp, &tm-|
|000117c0| 3e 68 65 61 64 65 72 29 | 3b 0a 09 57 61 69 74 50 |>header)|;..WaitP|
|000117d0| 6f 72 74 28 73 79 6e 63 | 29 3b 20 47 65 74 4d 73 |ort(sync|); GetMs|
|000117e0| 67 28 73 79 6e 63 29 3b | 0a 09 0a 09 63 6c 6f 73 |g(sync);|....clos|
|000117f0| 65 5f 72 65 71 28 73 70 | 2c 20 77 29 3b 0a 09 0a |e_req(sp|, w);...|
|00011800| 09 73 74 61 74 65 5f 63 | 68 61 6e 67 65 28 73 70 |.state_c|hange(sp|
|00011810| 2c 20 53 53 5f 44 49 53 | 43 4f 4e 4e 45 43 54 45 |, SS_DIS|CONNECTE|
|00011820| 44 29 3b 0a 09 0a 09 72 | 65 74 75 72 6e 3b 0a 7d |D);....r|eturn;.}|
|00011830| 0a 0a 76 6f 69 64 20 69 | 6e 69 74 5f 63 6f 6e 6e |..void i|nit_conn|
|00011840| 65 63 74 28 73 69 74 65 | 20 2a 73 70 29 0a 7b 0a |ect(site| *sp).{.|
|00011850| 09 73 74 72 75 63 74 20 | 57 69 6e 64 6f 77 20 2a |.struct |Window *|
|00011860| 77 3b 0a 09 62 38 20 2a | 7a 3b 0a 09 74 63 70 6d |w;..b8 *|z;..tcpm|
|00011870| 65 73 73 61 67 65 20 2a | 74 6d 2c 20 2a 69 6e 74 |essage *|tm, *int|
|00011880| 72 3b 0a 09 73 74 72 75 | 63 74 20 4d 73 67 50 6f |r;..stru|ct MsgPo|
|00011890| 72 74 20 2a 73 79 6e 63 | 3b 0a 09 62 38 20 72 65 |rt *sync|;..b8 re|
|000118a0| 70 6c 79 5b 33 5d 2c 20 | 2a 69 6e 66 6f 3b 0a 09 |ply[3], |*info;..|
|000118b0| 62 33 32 20 73 69 67 6e | 61 6c 73 2c 20 63 73 69 |b32 sign|als, csi|
|000118c0| 67 3b 0a 09 0a 09 76 65 | 72 69 66 79 28 73 70 2c |g;....ve|rify(sp,|
|000118d0| 20 56 5f 73 69 74 65 29 | 3b 0a 0a 09 7a 20 3d 20 | V_site)|;...z = |
|000118e0| 73 70 2d 3e 68 6f 73 74 | 3b 0a 09 0a 09 77 68 69 |sp->host|;....whi|
|000118f0| 6c 65 20 28 73 70 2d 3e | 69 6e 66 6f 73 29 20 66 |le (sp->|infos) f|
|00011900| 72 65 65 5f 69 6e 66 6f | 5f 68 65 61 64 65 72 28 |ree_info|_header(|
|00011910| 73 70 2d 3e 69 6e 66 6f | 73 29 3b 0a 09 0a 09 77 |sp->info|s);....w|
|00011920| 20 3d 20 63 6f 6e 6e 65 | 63 74 5f 72 65 71 28 73 | = conne|ct_req(s|
|00011930| 70 2c 20 7a 29 3b 0a 09 | 69 66 20 28 21 77 29 20 |p, z);..|if (!w) |
|00011940| 7b 0a 09 09 73 68 6f 77 | 5f 73 74 72 69 6e 67 28 |{...show|_string(|
|00011950| 22 63 6f 6e 6e 65 63 74 | 20 72 65 71 20 66 61 69 |"connect| req fai|
|00011960| 6c 65 64 22 29 3b 0a 09 | 09 72 65 74 75 72 6e 3b |led");..|.return;|
|00011970| 0a 09 7d 0a 09 0a 09 73 | 74 61 74 65 5f 63 68 61 |..}....s|tate_cha|
|00011980| 6e 67 65 28 73 70 2c 20 | 53 53 5f 43 4f 4e 4e 45 |nge(sp, |SS_CONNE|
|00011990| 43 54 49 4e 47 29 3b 0a | 09 0a 09 74 6d 20 3d 20 |CTING);.|...tm = |
|000119a0| 73 70 2d 3e 63 6f 6e 74 | 72 6f 6c 3b 0a 09 73 79 |sp->cont|rol;..sy|
|000119b0| 6e 63 20 3d 20 73 70 2d | 3e 73 79 6e 63 3b 0a 09 |nc = sp-|>sync;..|
|000119c0| 69 6e 74 72 20 3d 20 73 | 70 2d 3e 69 6e 74 72 3b |intr = s|p->intr;|
|000119d0| 0a 09 0a 09 63 73 69 67 | 20 3d 20 28 31 20 3c 3c |....csig| = (1 <<|
|000119e0| 20 77 2d 3e 55 73 65 72 | 50 6f 72 74 2d 3e 6d 70 | w->User|Port->mp|
|000119f0| 5f 53 69 67 42 69 74 29 | 20 7c 20 73 70 2d 3e 61 |_SigBit)| | sp->a|
|00011a00| 62 6f 72 74 5f 73 69 67 | 6e 61 6c 73 20 7c 20 73 |bort_sig|nals | s|
|00011a10| 70 2d 3e 64 69 73 63 6f | 6e 6e 65 63 74 5f 73 69 |p->disco|nnect_si|
|00011a20| 67 6e 61 6c 73 3b 0a 09 | 73 69 67 6e 61 6c 73 20 |gnals;..|signals |
|00011a30| 3d 20 28 31 20 3c 3c 20 | 73 79 6e 63 2d 3e 6d 70 |= (1 << |sync->mp|
|00011a40| 5f 53 69 67 42 69 74 29 | 20 7c 20 63 73 69 67 3b |_SigBit)| | csig;|
|00011a50| 0a 0a 09 69 66 20 28 73 | 70 2d 3e 70 6f 72 74 5f |...if (s|p->port_|
|00011a60| 6e 75 6d 62 65 72 20 3d | 3d 20 30 29 20 7b 0a 09 |number =|= 0) {..|
|00011a70| 09 74 6d 2d 3e 63 6f 6d | 6d 61 6e 64 20 3d 20 54 |.tm->com|mand = T|
|00011a80| 43 50 5f 53 45 52 56 49 | 43 45 3b 0a 09 09 74 6d |CP_SERVI|CE;...tm|
|00011a90| 2d 3e 64 61 74 61 20 3d | 20 73 74 72 69 6e 67 73 |->data =| strings|
|00011aa0| 5b 4d 53 47 5f 53 45 52 | 56 49 43 45 5d 3b 0a 09 |[MSG_SER|VICE];..|
|00011ab0| 09 74 6d 2d 3e 68 65 61 | 64 65 72 2e 6d 6e 5f 52 |.tm->hea|der.mn_R|
|00011ac0| 65 70 6c 79 50 6f 72 74 | 20 3d 20 73 79 6e 63 3b |eplyPort| = sync;|
|00011ad0| 0a 09 09 0a 09 09 50 75 | 74 4d 73 67 28 74 63 70 |......Pu|tMsg(tcp|
|00011ae0| 2c 20 26 74 6d 2d 3e 68 | 65 61 64 65 72 29 3b 0a |, &tm->h|eader);.|
|00011af0| 09 09 57 61 69 74 50 6f | 72 74 28 73 79 6e 63 29 |..WaitPo|rt(sync)|
|00011b00| 3b 20 47 65 74 4d 73 67 | 28 73 79 6e 63 29 3b 0a |; GetMsg|(sync);.|
|00011b10| 09 09 0a 09 09 69 66 20 | 28 74 6d 2d 3e 72 65 73 |.....if |(tm->res|
|00011b20| 75 6c 74 29 20 7b 0a 09 | 09 09 73 70 2d 3e 70 6f |ult) {..|..sp->po|
|00011b30| 72 74 5f 6e 75 6d 62 65 | 72 20 3d 20 66 74 70 5f |rt_numbe|r = ftp_|
|00011b40| 70 6f 72 74 5f 6e 75 6d | 62 65 72 20 3d 20 74 6d |port_num|ber = tm|
|00011b50| 2d 3e 70 6f 72 74 2e 77 | 3b 0a 09 09 7d 20 65 6c |->port.w|;...} el|
|00011b60| 73 65 20 69 66 20 28 74 | 6d 2d 3e 65 72 72 6f 72 |se if (t|m->error|
|00011b70| 20 3d 3d 20 45 52 52 4f | 52 5f 4e 4f 5f 43 4f 4e | == ERRO|R_NO_CON|
|00011b80| 4e 45 43 54 49 4f 4e 29 | 20 7b 0a 09 09 09 63 6c |NECTION)| {....cl|
|00011b90| 6f 73 65 5f 72 65 71 28 | 73 70 2c 20 77 29 3b 0a |ose_req(|sp, w);.|
|00011ba0| 09 09 09 0a 09 09 09 69 | 66 20 28 73 70 2d 3e 65 |.......i|f (sp->e|
|00011bb0| 72 72 6f 72 5f 6d 65 73 | 73 61 67 65 73 29 0a 09 |rror_mes|sages)..|
|00011bc0| 09 09 09 69 6e 66 6f 72 | 6d 28 73 70 2d 3e 49 42 |...infor|m(sp->IB|
|00011bd0| 61 73 65 2c 20 73 74 72 | 69 6e 67 73 5b 4d 53 47 |ase, str|ings[MSG|
|00011be0| 5f 43 4f 4e 4e 45 43 54 | 5f 45 52 52 4f 52 5d 2c |_CONNECT|_ERROR],|
|00011bf0| 20 73 74 72 69 6e 67 73 | 5b 4d 53 47 5f 41 4d 49 | strings|[MSG_AMI|
|00011c00| 54 43 50 5f 4e 4f 54 5f | 52 55 4e 4e 49 4e 47 5d |TCP_NOT_|RUNNING]|
|00011c10| 2c 20 6e 69 6c 2c 20 30 | 29 3b 0a 09 09 09 0a 09 |, nil, 0|);......|
|00011c20| 09 09 73 74 61 74 65 5f | 63 68 61 6e 67 65 28 73 |..state_|change(s|
|00011c30| 70 2c 20 53 53 5f 44 49 | 53 43 4f 4e 4e 45 43 54 |p, SS_DI|SCONNECT|
|00011c40| 45 44 29 3b 0a 09 09 09 | 0a 09 09 09 72 65 74 75 |ED);....|....retu|
|00011c50| 72 6e 3b 0a 09 09 7d 20 | 65 6c 73 65 20 7b 0a 09 |rn;...} |else {..|
|00011c60| 09 09 73 70 2d 3e 70 6f | 72 74 5f 6e 75 6d 62 65 |..sp->po|rt_numbe|
|00011c70| 72 20 3d 20 32 31 3b 0a | 09 09 7d 0a 09 7d 0a 09 |r = 21;.|..}..}..|
|00011c80| 0a 09 74 6d 2d 3e 63 6f | 6d 6d 61 6e 64 20 3d 20 |..tm->co|mmand = |
|00011c90| 54 43 50 5f 43 4f 4e 4e | 45 43 54 3b 0a 09 74 6d |TCP_CONN|ECT;..tm|
|00011ca0| 2d 3e 68 65 61 64 65 72 | 2e 6d 6e 5f 52 65 70 6c |->header|.mn_Repl|
|00011cb0| 79 50 6f 72 74 20 3d 20 | 73 79 6e 63 3b 0a 09 74 |yPort = |sync;..t|
|00011cc0| 6d 2d 3e 64 61 74 61 20 | 3d 20 7a 3b 0a 09 74 6d |m->data |= z;..tm|
|00011cd0| 2d 3e 70 6f 72 74 2e 77 | 20 3d 20 73 70 2d 3e 70 |->port.w| = sp->p|
|00011ce0| 6f 72 74 5f 6e 75 6d 62 | 65 72 3b 0a 09 0a 09 50 |ort_numb|er;....P|
|00011cf0| 75 74 4d 73 67 28 74 63 | 70 2c 20 26 74 6d 2d 3e |utMsg(tc|p, &tm->|
|00011d00| 68 65 61 64 65 72 29 3b | 0a 0a 09 64 6f 20 7b 0a |header);|...do {.|
|00011d10| 09 09 69 66 20 28 57 61 | 69 74 28 73 69 67 6e 61 |..if (Wa|it(signa|
|00011d20| 6c 73 29 20 26 20 63 73 | 69 67 29 20 7b 0a 09 09 |ls) & cs|ig) {...|
|00011d30| 09 69 6e 74 72 2d 3e 69 | 6e 74 65 72 72 75 70 74 |.intr->i|nterrupt|
|00011d40| 20 3d 20 74 6d 3b 0a 09 | 09 09 50 75 74 4d 73 67 | = tm;..|..PutMsg|
|00011d50| 28 74 63 70 2c 20 26 69 | 6e 74 72 2d 3e 68 65 61 |(tcp, &i|ntr->hea|
|00011d60| 64 65 72 29 3b 0a 09 09 | 09 57 61 69 74 50 6f 72 |der);...|.WaitPor|
|00011d70| 74 28 73 79 6e 63 29 3b | 20 47 65 74 4d 73 67 28 |t(sync);| GetMsg(|
|00011d80| 73 79 6e 63 29 3b 0a 09 | 09 09 57 61 69 74 50 6f |sync);..|..WaitPo|
|00011d90| 72 74 28 73 79 6e 63 29 | 3b 20 47 65 74 4d 73 67 |rt(sync)|; GetMsg|
|00011da0| 28 73 79 6e 63 29 3b 0a | 09 09 0a 09 09 09 69 66 |(sync);.|......if|
|00011db0| 20 28 74 6d 2d 3e 72 65 | 73 75 6c 74 29 20 7b 09 | (tm->re|sult) {.|
|00011dc0| 2f 2a 20 69 74 20 73 75 | 63 63 65 65 64 65 64 20 |/* it su|cceeded |
|00011dd0| 69 6e 20 63 6f 6e 6e 65 | 63 74 69 6e 67 20 2a 2f |in conne|cting */|
|00011de0| 0a 09 09 09 09 74 6d 2d | 3e 63 6f 6d 6d 61 6e 64 |.....tm-|>command|
|00011df0| 20 3d 20 54 43 50 5f 43 | 4c 4f 53 45 3b 0a 09 09 | = TCP_C|LOSE;...|
|00011e00| 09 09 50 75 74 4d 73 67 | 28 74 63 70 2c 20 26 74 |..PutMsg|(tcp, &t|
|00011e10| 6d 2d 3e 68 65 61 64 65 | 72 29 3b 0a 09 09 09 09 |m->heade|r);.....|
|00011e20| 57 61 69 74 50 6f 72 74 | 28 73 79 6e 63 29 3b 20 |WaitPort|(sync); |
|00011e30| 47 65 74 4d 73 67 28 73 | 79 6e 63 29 3b 0a 09 09 |GetMsg(s|ync);...|
|00011e40| 09 7d 0a 09 09 0a 09 09 | 09 63 6c 6f 73 65 5f 72 |.}......|.close_r|
|00011e50| 65 71 28 73 70 2c 20 77 | 29 3b 0a 09 09 09 0a 09 |eq(sp, w|);......|
|00011e60| 09 09 73 74 61 74 65 5f | 63 68 61 6e 67 65 28 73 |..state_|change(s|
|00011e70| 70 2c 20 53 53 5f 44 49 | 53 43 4f 4e 4e 45 43 54 |p, SS_DI|SCONNECT|
|00011e80| 45 44 29 3b 0a 09 09 0a | 09 09 09 72 65 74 75 72 |ED);....|...retur|
|00011e90| 6e 3b 0a 09 09 7d 0a 09 | 7d 20 77 68 69 6c 65 20 |n;...}..|} while |
|00011ea0| 28 21 47 65 74 4d 73 67 | 28 73 79 6e 63 29 29 3b |(!GetMsg|(sync));|
|00011eb0| 0a 09 0a 09 69 66 20 28 | 21 74 6d 2d 3e 72 65 73 |....if (|!tm->res|
|00011ec0| 75 6c 74 29 20 7b 09 2f | 2a 20 74 68 65 20 63 6f |ult) {./|* the co|
|00011ed0| 6e 6e 65 63 74 20 66 61 | 69 6c 65 64 20 2e 2e 2e |nnect fa|iled ...|
|00011ee0| 20 74 65 6c 6c 20 74 68 | 65 20 75 73 65 72 20 77 | tell th|e user w|
|00011ef0| 68 79 20 2a 2f 0a 09 09 | 63 6c 6f 73 65 5f 72 65 |hy */...|close_re|
|00011f00| 71 28 73 70 2c 20 77 29 | 3b 0a 09 09 0a 09 09 73 |q(sp, w)|;......s|
|00011f10| 77 69 74 63 68 20 28 74 | 6d 2d 3e 65 72 72 6f 72 |witch (t|m->error|
|00011f20| 29 20 7b 0a 09 09 63 61 | 73 65 20 45 52 52 4f 52 |) {...ca|se ERROR|
|00011f30| 5f 4e 4f 5f 43 4f 4e 4e | 45 43 54 49 4f 4e 3a 0a |_NO_CONN|ECTION:.|
|00011f40| 09 09 09 69 66 20 28 73 | 70 2d 3e 65 72 72 6f 72 |...if (s|p->error|
|00011f50| 5f 6d 65 73 73 61 67 65 | 73 29 0a 09 09 09 09 69 |_message|s).....i|
|00011f60| 6e 66 6f 72 6d 28 73 70 | 2d 3e 49 42 61 73 65 2c |nform(sp|->IBase,|
|00011f70| 20 73 74 72 69 6e 67 73 | 5b 4d 53 47 5f 43 4f 4e | strings|[MSG_CON|
|00011f80| 4e 45 43 54 5f 45 52 52 | 4f 52 5d 2c 20 73 74 72 |NECT_ERR|OR], str|
|00011f90| 69 6e 67 73 5b 4d 53 47 | 5f 41 4d 49 54 43 50 5f |ings[MSG|_AMITCP_|
|00011fa0| 4e 4f 54 5f 52 55 4e 4e | 49 4e 47 5d 2c 20 6e 69 |NOT_RUNN|ING], ni|
|00011fb0| 6c 2c 20 30 29 3b 0a 09 | 09 09 62 72 65 61 6b 3b |l, 0);..|..break;|
|00011fc0| 0a 09 09 63 61 73 65 20 | 45 52 52 4f 52 5f 55 4e |...case |ERROR_UN|
|00011fd0| 4b 4e 4f 57 4e 5f 48 4f | 53 54 3a 0a 09 09 09 69 |KNOWN_HO|ST:....i|
|00011fe0| 66 20 28 73 70 2d 3e 65 | 72 72 6f 72 5f 6d 65 73 |f (sp->e|rror_mes|
|00011ff0| 73 61 67 65 73 29 0a 09 | 09 09 09 69 6e 66 6f 72 |sages)..|...infor|
|00012000| 6d 28 73 70 2d 3e 49 42 | 61 73 65 2c 20 73 74 72 |m(sp->IB|ase, str|
|00012010| 69 6e 67 73 5b 4d 53 47 | 5f 43 4f 4e 4e 45 43 54 |ings[MSG|_CONNECT|
|00012020| 5f 45 52 52 4f 52 5d 2c | 20 73 74 72 69 6e 67 73 |_ERROR],| strings|
|00012030| 5b 4d 53 47 5f 48 4f 53 | 54 5f 55 4e 4b 4e 4f 57 |[MSG_HOS|T_UNKNOW|
|00012040| 4e 5d 2c 20 7a 2c 20 30 | 29 3b 0a 09 09 09 62 72 |N], z, 0|);....br|
|00012050| 65 61 6b 3b 0a 09 09 63 | 61 73 65 20 45 52 52 4f |eak;...c|ase ERRO|
|00012060| 52 5f 55 4e 52 45 41 43 | 48 41 42 4c 45 3a 0a 09 |R_UNREAC|HABLE:..|
|00012070| 09 09 69 66 20 28 73 70 | 2d 3e 65 72 72 6f 72 5f |..if (sp|->error_|
|00012080| 6d 65 73 73 61 67 65 73 | 29 0a 09 09 09 09 69 6e |messages|).....in|
|00012090| 66 6f 72 6d 28 73 70 2d | 3e 49 42 61 73 65 2c 20 |form(sp-|>IBase, |
|000120a0| 73 74 72 69 6e 67 73 5b | 4d 53 47 5f 43 4f 4e 4e |strings[|MSG_CONN|
|000120b0| 45 43 54 5f 45 52 52 4f | 52 5d 2c 20 73 74 72 69 |ECT_ERRO|R], stri|
|000120c0| 6e 67 73 5b 4d 53 47 5f | 48 4f 53 54 5f 55 4e 52 |ngs[MSG_|HOST_UNR|
|000120d0| 45 41 43 48 41 42 4c 45 | 5d 2c 20 7a 2c 20 30 29 |EACHABLE|], z, 0)|
|000120e0| 3b 0a 09 09 09 62 72 65 | 61 6b 3b 0a 09 09 63 61 |;....bre|ak;...ca|
|000120f0| 73 65 20 45 52 52 4f 52 | 5f 43 4f 4e 4e 45 43 54 |se ERROR|_CONNECT|
|00012100| 5f 52 45 46 55 53 45 44 | 3a 0a 09 09 09 69 66 20 |_REFUSED|:....if |
|00012110| 28 73 70 2d 3e 65 72 72 | 6f 72 5f 6d 65 73 73 61 |(sp->err|or_messa|
|00012120| 67 65 73 29 0a 09 09 09 | 09 69 6e 66 6f 72 6d 28 |ges)....|.inform(|
|00012130| 73 70 2d 3e 49 42 61 73 | 65 2c 20 73 74 72 69 6e |sp->IBas|e, strin|
|00012140| 67 73 5b 4d 53 47 5f 43 | 4f 4e 4e 45 43 54 5f 45 |gs[MSG_C|ONNECT_E|
|00012150| 52 52 4f 52 5d 2c 20 73 | 74 72 69 6e 67 73 5b 4d |RROR], s|trings[M|
|00012160| 53 47 5f 46 54 50 5f 52 | 45 46 55 53 45 44 5d 2c |SG_FTP_R|EFUSED],|
|00012170| 20 7a 2c 20 30 29 3b 0a | 09 09 09 62 72 65 61 6b | z, 0);.|...break|
|00012180| 3b 0a 09 09 64 65 66 61 | 75 6c 74 3a 0a 09 09 09 |;...defa|ult:....|
|00012190| 69 66 20 28 73 70 2d 3e | 65 72 72 6f 72 5f 6d 65 |if (sp->|error_me|
|000121a0| 73 73 61 67 65 73 29 0a | 09 09 09 09 69 6e 66 6f |ssages).|....info|
|000121b0| 72 6d 28 73 70 2d 3e 49 | 42 61 73 65 2c 20 73 74 |rm(sp->I|Base, st|
|000121c0| 72 69 6e 67 73 5b 4d 53 | 47 5f 43 4f 4e 4e 45 43 |rings[MS|G_CONNEC|
|000121d0| 54 5f 45 52 52 4f 52 5d | 2c 20 73 74 72 69 6e 67 |T_ERROR]|, string|
|000121e0| 73 5b 4d 53 47 5f 43 41 | 4e 54 5f 43 4f 4e 4e 45 |s[MSG_CA|NT_CONNE|
|000121f0| 43 54 5d 2c 20 7a 2c 20 | 74 6d 2d 3e 65 72 72 6f |CT], z, |tm->erro|
|00012200| 72 29 3b 0a 09 09 09 62 | 72 65 61 6b 3b 0a 09 09 |r);....b|reak;...|
|00012210| 7d 0a 09 09 0a 09 09 73 | 74 61 74 65 5f 63 68 61 |}......s|tate_cha|
|00012220| 6e 67 65 28 73 70 2c 20 | 53 53 5f 44 49 53 43 4f |nge(sp, |SS_DISCO|
|00012230| 4e 4e 45 43 54 45 44 29 | 3b 0a 09 09 0a 09 09 72 |NNECTED)|;......r|
|00012240| 65 74 75 72 6e 3b 0a 09 | 7d 0a 09 0a 09 2f 2a 20 |eturn;..|}..../* |
|00012250| 6f 6b 2c 20 77 65 27 76 | 65 20 63 6f 6e 6e 65 63 |ok, we'v|e connec|
|00012260| 74 65 64 20 2e 2e 2e 20 | 6c 6f 6f 6b 20 61 74 20 |ted ... |look at |
|00012270| 74 68 65 20 67 72 65 65 | 74 69 6e 67 20 2a 2f 0a |the gree|ting */.|
|00012280| 09 0a 72 65 74 72 79 5f | 69 6e 74 72 6f 3a 0a 09 |..retry_|intro:..|
|00012290| 73 77 69 74 63 68 20 28 | 72 65 73 70 6f 6e 73 65 |switch (|response|
|000122a0| 28 73 70 2c 20 63 73 69 | 67 2c 20 26 69 6e 66 6f |(sp, csi|g, &info|
|000122b0| 2c 20 72 65 70 6c 79 29 | 29 20 7b 0a 09 63 61 73 |, reply)|) {..cas|
|000122c0| 65 20 4e 4f 5f 45 52 52 | 4f 52 3a 0a 09 09 62 72 |e NO_ERR|OR:...br|
|000122d0| 65 61 6b 3b 0a 09 63 61 | 73 65 20 45 52 52 4f 52 |eak;..ca|se ERROR|
|000122e0| 5f 49 4e 54 45 52 52 55 | 50 54 45 44 3a 0a 09 09 |_INTERRU|PTED:...|
|000122f0| 63 6c 6f 73 65 5f 72 65 | 71 28 73 70 2c 20 77 29 |close_re|q(sp, w)|
|00012300| 3b 0a 09 09 67 6f 74 6f | 20 63 6c 6f 73 65 5f 61 |;...goto| close_a|
|00012310| 6e 64 5f 65 78 69 74 3b | 0a 09 63 61 73 65 20 45 |nd_exit;|..case E|
|00012320| 52 52 4f 52 5f 4c 4f 53 | 54 5f 43 4f 4e 4e 45 43 |RROR_LOS|T_CONNEC|
|00012330| 54 49 4f 4e 3a 0a 09 63 | 61 73 65 20 45 52 52 4f |TION:..c|ase ERRO|
|00012340| 52 5f 45 4f 46 3a 0a 09 | 63 61 73 65 20 45 52 52 |R_EOF:..|case ERR|
|00012350| 4f 52 5f 55 4e 52 45 41 | 43 48 41 42 4c 45 3a 0a |OR_UNREA|CHABLE:.|
|00012360| 09 09 63 6c 6f 73 65 5f | 72 65 71 28 73 70 2c 20 |..close_|req(sp, |
|00012370| 77 29 3b 0a 09 09 69 66 | 20 28 73 70 2d 3e 65 72 |w);...if| (sp->er|
|00012380| 72 6f 72 5f 6d 65 73 73 | 61 67 65 73 29 0a 09 09 |ror_mess|ages)...|
|00012390| 09 69 6e 66 6f 72 6d 28 | 73 70 2d 3e 49 42 61 73 |.inform(|sp->IBas|
|000123a0| 65 2c 20 73 74 72 69 6e | 67 73 5b 4d 53 47 5f 43 |e, strin|gs[MSG_C|
|000123b0| 4f 4e 4e 45 43 54 5f 45 | 52 52 4f 52 5d 2c 20 73 |ONNECT_E|RROR], s|
|000123c0| 74 72 69 6e 67 73 5b 4d | 53 47 5f 4c 4f 53 54 5f |trings[M|SG_LOST_|
|000123d0| 43 4f 4e 4e 5f 44 55 52 | 49 4e 47 5f 49 4e 54 52 |CONN_DUR|ING_INTR|
|000123e0| 4f 5d 2c 20 6e 69 6c 2c | 20 30 29 3b 0a 09 09 67 |O], nil,| 0);...g|
|000123f0| 6f 74 6f 20 63 6c 6f 73 | 65 5f 61 6e 64 5f 65 78 |oto clos|e_and_ex|
|00012400| 69 74 3b 0a 09 63 61 73 | 65 20 45 52 52 4f 52 5f |it;..cas|e ERROR_|
|00012410| 47 41 52 42 41 47 45 5f | 52 45 43 45 49 56 45 44 |GARBAGE_|RECEIVED|
|00012420| 3a 0a 09 09 63 6c 6f 73 | 65 5f 72 65 71 28 73 70 |:...clos|e_req(sp|
|00012430| 2c 20 77 29 3b 0a 09 09 | 69 66 20 28 73 70 2d 3e |, w);...|if (sp->|
|00012440| 65 72 72 6f 72 5f 6d 65 | 73 73 61 67 65 73 29 0a |error_me|ssages).|
|00012450| 09 09 09 69 6e 66 6f 72 | 6d 28 73 70 2d 3e 49 42 |...infor|m(sp->IB|
|00012460| 61 73 65 2c 20 73 74 72 | 69 6e 67 73 5b 4d 53 47 |ase, str|ings[MSG|
|00012470| 5f 43 4f 4e 4e 45 43 54 | 5f 45 52 52 4f 52 5d 2c |_CONNECT|_ERROR],|
|00012480| 20 73 74 72 69 6e 67 73 | 5b 4d 53 47 5f 47 41 52 | strings|[MSG_GAR|
|00012490| 42 41 47 45 5f 44 55 52 | 49 4e 47 5f 49 4e 54 52 |BAGE_DUR|ING_INTR|
|000124a0| 4f 5d 2c 20 7a 2c 20 30 | 29 3b 0a 09 09 67 6f 74 |O], z, 0|);...got|
|000124b0| 6f 20 63 6c 6f 73 65 5f | 61 6e 64 5f 65 78 69 74 |o close_|and_exit|
|000124c0| 3b 0a 09 64 65 66 61 75 | 6c 74 3a 0a 09 09 63 6c |;..defau|lt:...cl|
|000124d0| 6f 73 65 5f 72 65 71 28 | 73 70 2c 20 77 29 3b 0a |ose_req(|sp, w);.|
|000124e0| 09 09 69 66 20 28 73 70 | 2d 3e 65 72 72 6f 72 5f |..if (sp|->error_|
|000124f0| 6d 65 73 73 61 67 65 73 | 29 0a 09 09 09 69 6e 66 |messages|)....inf|
|00012500| 6f 72 6d 28 73 70 2d 3e | 49 42 61 73 65 2c 20 73 |orm(sp->|IBase, s|
|00012510| 74 72 69 6e 67 73 5b 4d | 53 47 5f 43 4f 4e 4e 45 |trings[M|SG_CONNE|
|00012520| 43 54 5f 45 52 52 4f 52 | 5d 2c 20 73 74 72 69 6e |CT_ERROR|], strin|
|00012530| 67 73 5b 4d 53 47 5f 45 | 52 52 4f 52 5f 44 55 52 |gs[MSG_E|RROR_DUR|
|00012540| 49 4e 47 5f 49 4e 54 52 | 4f 5d 2c 20 6e 69 6c 2c |ING_INTR|O], nil,|
|00012550| 20 30 29 3b 0a 09 09 67 | 6f 74 6f 20 63 6c 6f 73 | 0);...g|oto clos|
|00012560| 65 5f 61 6e 64 5f 65 78 | 69 74 3b 0a 09 7d 0a 09 |e_and_ex|it;..}..|
|00012570| 0a 09 73 77 69 74 63 68 | 20 28 72 65 70 6c 79 5b |..switch| (reply[|
|00012580| 30 5d 29 20 7b 0a 09 63 | 61 73 65 20 27 31 27 3a |0]) {..c|ase '1':|
|00012590| 0a 09 09 69 66 20 28 73 | 70 2d 3e 65 72 72 6f 72 |...if (s|p->error|
|000125a0| 5f 6d 65 73 73 61 67 65 | 73 20 26 26 20 72 65 74 |_message|s && ret|
|000125b0| 72 79 5f 63 61 6e 63 65 | 6c 28 73 70 2d 3e 49 42 |ry_cance|l(sp->IB|
|000125c0| 61 73 65 2c 20 73 74 72 | 69 6e 67 73 5b 4d 53 47 |ase, str|ings[MSG|
|000125d0| 5f 43 4f 4e 4e 5f 44 45 | 4c 41 59 5d 2c 20 69 6e |_CONN_DE|LAY], in|
|000125e0| 66 6f 29 29 20 7b 0a 09 | 09 09 67 6f 74 6f 20 72 |fo)) {..|..goto r|
|000125f0| 65 74 72 79 5f 69 6e 74 | 72 6f 3b 0a 09 09 7d 0a |etry_int|ro;...}.|
|00012600| 09 09 63 6c 6f 73 65 5f | 72 65 71 28 73 70 2c 20 |..close_|req(sp, |
|00012610| 77 29 3b 0a 09 09 69 66 | 20 28 69 6e 66 6f 29 0a |w);...if| (info).|
|00012620| 09 09 09 64 65 61 6c 6c | 6f 63 61 74 65 28 69 6e |...deall|ocate(in|
|00012630| 66 6f 2c 20 56 5f 63 73 | 74 72 29 3b 0a 09 09 0a |fo, V_cs|tr);....|
|00012640| 09 09 67 6f 74 6f 20 63 | 6c 6f 73 65 5f 61 6e 64 |..goto c|lose_and|
|00012650| 5f 65 78 69 74 3b 0a 09 | 63 61 73 65 20 27 32 27 |_exit;..|case '2'|
|00012660| 3a 0a 09 63 61 73 65 20 | 27 33 27 3a 0a 09 09 2f |:..case |'3':.../|
|00012670| 2a 20 54 68 69 73 20 62 | 61 6e 6e 65 72 20 61 70 |* This b|anner ap|
|00012680| 70 65 61 72 73 20 74 6f | 20 62 65 20 67 65 6e 65 |pears to| be gene|
|00012690| 72 61 6c 6c 79 20 70 72 | 65 74 74 79 20 64 75 6c |rally pr|etty dul|
|000126a0| 6c 2c 20 62 75 74 20 69 | 66 0a 09 09 20 2a 20 79 |l, but i|f... * y|
|000126b0| 6f 75 20 72 65 61 6c 6c | 79 20 77 61 6e 74 20 74 |ou reall|y want t|
|000126c0| 6f 20 73 65 65 20 69 74 | 20 74 68 65 6e 20 72 65 |o see it| then re|
|000126d0| 6d 6f 76 65 20 74 68 65 | 20 63 6f 6d 6d 65 6e 74 |move the| comment|
|000126e0| 73 20 2e 2e 2e 0a 09 09 | 20 2a 20 69 66 20 28 21 |s ......| * if (!|
|000126f0| 73 70 2d 3e 72 65 61 64 | 5f 62 61 6e 6e 65 72 73 |sp->read|_banners|
|00012700| 29 20 7b 0a 09 09 20 2a | 20 09 6f 6b 28 73 70 2d |) {... *| .ok(sp-|
|00012710| 3e 49 42 61 73 65 2c 20 | 22 43 6f 6e 6e 65 63 74 |>IBase, |"Connect|
|00012720| 65 64 22 2c 20 69 6e 66 | 6f 29 3b 0a 09 09 20 2a |ed", inf|o);... *|
|00012730| 20 7d 0a 09 09 20 2a 2f | 0a 09 09 0a 09 09 69 66 | }... */|......if|
|00012740| 20 28 69 6e 66 6f 29 0a | 09 09 09 64 65 61 6c 6c | (info).|...deall|
|00012750| 6f 63 61 74 65 28 69 6e | 66 6f 2c 20 56 5f 63 73 |ocate(in|fo, V_cs|
|00012760| 74 72 29 3b 0a 09 09 0a | 09 09 6c 6f 67 69 6e 28 |tr);....|..login(|
|00012770| 73 70 2c 20 77 29 3b 0a | 09 09 72 65 74 75 72 6e |sp, w);.|..return|
|00012780| 3b 0a 09 63 61 73 65 20 | 27 34 27 3a 0a 09 09 69 |;..case |'4':...i|
|00012790| 66 20 28 72 65 74 72 79 | 5f 63 61 6e 63 65 6c 28 |f (retry|_cancel(|
|000127a0| 73 70 2d 3e 49 42 61 73 | 65 2c 20 73 74 72 69 6e |sp->IBas|e, strin|
|000127b0| 67 73 5b 4d 53 47 5f 54 | 45 4d 50 5f 43 4f 4e 4e |gs[MSG_T|EMP_CONN|
|000127c0| 5f 46 41 49 4c 55 52 45 | 5d 2c 20 69 6e 66 6f 29 |_FAILURE|], info)|
|000127d0| 29 20 7b 0a 09 09 09 67 | 6f 74 6f 20 72 65 74 72 |) {....g|oto retr|
|000127e0| 79 5f 69 6e 74 72 6f 3b | 0a 09 09 7d 0a 09 09 63 |y_intro;|...}...c|
|000127f0| 6c 6f 73 65 5f 72 65 71 | 28 73 70 2c 20 77 29 3b |lose_req|(sp, w);|
|00012800| 0a 09 09 69 66 20 28 69 | 6e 66 6f 29 0a 09 09 09 |...if (i|nfo)....|
|00012810| 64 65 61 6c 6c 6f 63 61 | 74 65 28 69 6e 66 6f 2c |dealloca|te(info,|
|00012820| 20 56 5f 63 73 74 72 29 | 3b 0a 09 09 0a 09 09 67 | V_cstr)|;......g|
|00012830| 6f 74 6f 20 63 6c 6f 73 | 65 5f 61 6e 64 5f 65 78 |oto clos|e_and_ex|
|00012840| 69 74 3b 0a 09 63 61 73 | 65 20 27 35 27 3a 0a 09 |it;..cas|e '5':..|
|00012850| 64 65 66 61 75 6c 74 3a | 0a 09 09 63 6c 6f 73 65 |default:|...close|
|00012860| 5f 72 65 71 28 73 70 2c | 20 77 29 3b 0a 09 09 0a |_req(sp,| w);....|
|00012870| 09 09 69 66 20 28 73 70 | 2d 3e 65 72 72 6f 72 5f |..if (sp|->error_|
|00012880| 6d 65 73 73 61 67 65 73 | 29 0a 09 09 09 6f 6b 28 |messages|)....ok(|
|00012890| 73 70 2d 3e 49 42 61 73 | 65 2c 20 73 74 72 69 6e |sp->IBas|e, strin|
|000128a0| 67 73 5b 4d 53 47 5f 43 | 4f 4e 4e 5f 46 41 49 4c |gs[MSG_C|ONN_FAIL|
|000128b0| 45 44 5d 2c 20 69 6e 66 | 6f 29 3b 0a 0a 09 09 69 |ED], inf|o);....i|
|000128c0| 66 20 28 69 6e 66 6f 29 | 0a 09 09 09 64 65 61 6c |f (info)|....deal|
|000128d0| 6c 6f 63 61 74 65 28 69 | 6e 66 6f 2c 20 56 5f 63 |locate(i|nfo, V_c|
|000128e0| 73 74 72 29 3b 0a 09 09 | 0a 09 09 62 72 65 61 6b |str);...|...break|
|000128f0| 3b 0a 09 7d 0a 09 0a 63 | 6c 6f 73 65 5f 61 6e 64 |;..}...c|lose_and|
|00012900| 5f 65 78 69 74 3a 0a 09 | 74 6d 2d 3e 63 6f 6d 6d |_exit:..|tm->comm|
|00012910| 61 6e 64 20 3d 20 54 43 | 50 5f 43 4c 4f 53 45 3b |and = TC|P_CLOSE;|
|00012920| 0a 09 50 75 74 4d 73 67 | 28 74 63 70 2c 20 26 74 |..PutMsg|(tcp, &t|
|00012930| 6d 2d 3e 68 65 61 64 65 | 72 29 3b 0a 09 57 61 69 |m->heade|r);..Wai|
|00012940| 74 50 6f 72 74 28 73 79 | 6e 63 29 3b 20 47 65 74 |tPort(sy|nc); Get|
|00012950| 4d 73 67 28 73 79 6e 63 | 29 3b 0a 09 0a 09 73 74 |Msg(sync|);....st|
|00012960| 61 74 65 5f 63 68 61 6e | 67 65 28 73 70 2c 20 53 |ate_chan|ge(sp, S|
|00012970| 53 5f 44 49 53 43 4f 4e | 4e 45 43 54 45 44 29 3b |S_DISCON|NECTED);|
|00012980| 0a 09 0a 09 72 65 74 75 | 72 6e 3b 0a 7d 0a 0a 0a |....retu|rn;.}...|
|00012990| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000129a0| 00 00 00 00 00 00 1a f9 | 00 00 04 15 00 00 08 b7 |........|........|
|000129b0| 0a 4d 41 53 68 61 72 65 | 5f 36 34 00 00 00 00 00 |.MAShare|_64.....|
|000129c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000129d0| 00 00 00 00 00 00 00 00 | 00 00 1a f9 00 00 04 15 |........|........|
|000129e0| 00 00 08 ea 00 00 1a f9 | 00 00 03 fa 00 00 01 25 |........|.......%|
|000129f0| 00 00 00 00 00 00 00 00 | 00 00 03 71 00 00 00 01 |........|...q....|
|00012a00| 00 00 00 02 00 00 00 95 | 00 00 00 02 00 00 00 00 |........|........|
|00012a10| 00 00 00 96 59 cf 04 b9 | 00 00 00 00 00 00 00 00 |....Y...|........|
|00012a20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012a30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012a40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012a50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012a60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012a70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012a80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012a90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012aa0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012ab0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012ac0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012ad0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012ae0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012af0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012b00| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012b10| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012b20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012b30| 00 00 00 97 00 00 00 96 | 00 00 00 00 00 00 00 00 |........|........|
|00012b40| 00 00 00 00 00 00 02 f9 | 00 00 00 00 00 00 00 00 |........|........|
|00012b50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012b60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012b70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012b80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012b90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012ba0| 00 00 00 00 00 00 19 39 | 00 00 03 9c 00 00 05 78 |.......9|.......x|
|00012bb0| 09 63 6f 6e 6e 65 63 74 | 2e 68 00 00 00 00 00 00 |.connect|.h......|
|00012bc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012bd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012be0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012bf0| 00 00 00 a5 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00012c00| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|00012c10| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|00012c20| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|00012c30| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|00012c40| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|00012c50| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|00012c60| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|00012c70| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|00012c80| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|00012c90| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|00012ca0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|00012cb0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|00012cc0| 76 6f 69 64 20 69 6e 69 | 74 5f 63 6f 6e 6e 65 63 |void ini|t_connec|
|00012cd0| 74 28 73 69 74 65 20 2a | 29 3b 0a 76 6f 69 64 20 |t(site *|);.void |
|00012ce0| 64 69 73 63 6f 6e 6e 65 | 63 74 28 73 69 74 65 20 |disconne|ct(site |
|00012cf0| 2a 29 3b 0a 62 6f 6f 6c | 65 61 6e 20 63 68 61 6e |*);.bool|ean chan|
|00012d00| 67 65 5f 64 69 72 28 73 | 69 74 65 20 2a 73 70 2c |ge_dir(s|ite *sp,|
|00012d10| 20 62 38 20 2a 29 3b 0a | 62 38 20 2a 63 64 5f 70 | b8 *);.|b8 *cd_p|
|00012d20| 61 72 65 6e 74 28 73 69 | 74 65 20 2a 73 70 2c 20 |arent(si|te *sp, |
|00012d30| 62 38 20 2a 29 3b 0a 62 | 6f 6f 6c 65 61 6e 20 67 |b8 *);.b|oolean g|
|00012d40| 65 74 5f 6c 69 73 74 28 | 73 69 74 65 20 2a 73 70 |et_list(|site *sp|
|00012d50| 2c 20 73 74 72 75 63 74 | 20 69 6e 66 6f 5f 68 65 |, struct| info_he|
|00012d60| 61 64 65 72 20 2a 69 68 | 29 3b 0a 0a 62 33 32 20 |ader *ih|);..b32 |
|00012d70| 72 65 61 64 5f 66 69 6c | 65 28 73 69 74 65 20 2a |read_fil|e(site *|
|00012d80| 73 70 2c 20 62 38 20 2a | 2c 20 62 33 32 20 2a 29 |sp, b8 *|, b32 *)|
|00012d90| 3b 0a 62 33 32 20 77 72 | 69 74 65 5f 66 69 6c 65 |;.b32 wr|ite_file|
|00012da0| 28 73 69 74 65 20 2a 73 | 70 2c 20 62 38 20 2a 2c |(site *s|p, b8 *,|
|00012db0| 20 62 33 32 20 2a 29 3b | 0a 0a 62 33 32 20 6f 70 | b32 *);|..b32 op|
|00012dc0| 65 6e 5f 66 69 6c 65 28 | 73 69 74 65 20 2a 73 70 |en_file(|site *sp|
|00012dd0| 2c 20 62 38 20 2a 2c 20 | 62 6f 6f 6c 65 61 6e 2c |, b8 *, |boolean,|
|00012de0| 20 62 38 20 2a 29 3b 0a | 76 6f 69 64 20 63 6c 6f | b8 *);.|void clo|
|00012df0| 73 65 5f 66 69 6c 65 28 | 73 69 74 65 20 2a 73 70 |se_file(|site *sp|
|00012e00| 2c 20 62 6f 6f 6c 65 61 | 6e 20 6e 6f 72 6d 61 6c |, boolea|n normal|
|00012e10| 5f 63 6c 6f 73 65 29 3b | 0a 0a 62 33 32 20 64 65 |_close);|..b32 de|
|00012e20| 6c 65 74 65 5f 66 69 6c | 65 28 73 69 74 65 20 2a |lete_fil|e(site *|
|00012e30| 73 70 2c 20 62 38 20 2a | 29 3b 0a 62 33 32 20 64 |sp, b8 *|);.b32 d|
|00012e40| 65 6c 65 74 65 5f 64 69 | 72 65 63 74 6f 72 79 28 |elete_di|rectory(|
|00012e50| 73 69 74 65 20 2a 73 70 | 2c 20 62 38 20 2a 29 3b |site *sp|, b8 *);|
|00012e60| 0a 62 33 32 20 6d 61 6b | 65 5f 64 69 72 65 63 74 |.b32 mak|e_direct|
|00012e70| 6f 72 79 28 73 69 74 65 | 20 2a 73 70 2c 20 62 38 |ory(site| *sp, b8|
|00012e80| 20 2a 29 3b 0a 62 33 32 | 20 72 65 6e 61 6d 65 5f | *);.b32| rename_|
|00012e90| 6f 62 6a 65 63 74 28 73 | 69 74 65 20 2a 73 70 2c |object(s|ite *sp,|
|00012ea0| 20 62 38 20 2a 2c 20 62 | 38 20 2a 29 3b 0a 0a 76 | b8 *, b|8 *);..v|
|00012eb0| 6f 69 64 20 69 6e 74 65 | 72 72 75 70 74 5f 6d 65 |oid inte|rrupt_me|
|00012ec0| 73 73 61 67 65 28 73 69 | 74 65 20 2a 73 70 2c 20 |ssage(si|te *sp, |
|00012ed0| 74 63 70 6d 65 73 73 61 | 67 65 20 2a 74 6d 29 3b |tcpmessa|ge *tm);|
|00012ee0| 0a 0a 23 64 65 66 69 6e | 65 20 4d 4f 52 45 5f 4c |..#defin|e MORE_L|
|00012ef0| 49 4e 45 53 20 31 30 0a | 0a 00 00 00 00 00 00 00 |INES 10.|........|
|00012f00| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012f10| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012f20| 00 00 00 00 00 00 00 00 | 00 00 03 72 00 00 05 f5 |........|...r....|
|00012f30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 03 71 |........|.......q|
|00012f40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012f50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012f60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012f70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012f80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012f90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012fa0| 00 00 00 00 00 00 1a f9 | 00 00 04 15 00 00 08 b7 |........|........|
|00012fb0| 0a 4d 41 53 68 61 72 65 | 5f 36 34 00 00 00 00 00 |.MAShare|_64.....|
|00012fc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00012fd0| 00 00 00 00 00 00 00 00 | 00 00 1a f9 00 00 04 15 |........|........|
|00012fe0| 00 00 08 ea 00 00 1a f9 | 00 00 03 fa 00 00 01 25 |........|.......%|
|00012ff0| 00 00 00 00 00 00 00 00 | 00 00 03 71 00 00 00 01 |........|...q....|
|00013000| 00 00 00 02 00 00 00 98 | 00 00 00 02 00 00 00 00 |........|........|
|00013010| 00 00 00 99 4e c2 01 dc | 00 00 00 00 00 00 00 00 |....N...|........|
|00013020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013040| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013050| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013060| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013070| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013080| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013090| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000130a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000130b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000130c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000130d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000130e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000130f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013100| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013110| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013120| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013130| 00 00 00 9a 00 00 00 99 | 00 00 00 00 00 00 00 00 |........|........|
|00013140| 00 00 00 00 00 00 03 28 | 00 00 00 00 00 00 00 00 |.......(|........|
|00013150| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013160| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013170| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013180| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013190| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000131a0| 00 00 00 00 00 00 19 39 | 00 00 03 56 00 00 00 00 |.......9|...V....|
|000131b0| 09 65 76 74 79 70 65 73 | 2e 68 00 00 00 00 00 00 |.evtypes|.h......|
|000131c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000131d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000131e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000131f0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00013200| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|00013210| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|00013220| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|00013230| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|00013240| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|00013250| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|00013260| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|00013270| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|00013280| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|00013290| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|000132a0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|000132b0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|000132c0| 74 79 70 65 64 65 66 20 | 75 6e 73 69 67 6e 65 64 |typedef |unsigned|
|000132d0| 20 6c 6f 6e 67 20 62 33 | 32 3b 0a 74 79 70 65 64 | long b3|2;.typed|
|000132e0| 65 66 20 75 6e 73 69 67 | 6e 65 64 20 63 68 61 72 |ef unsig|ned char|
|000132f0| 20 62 38 3b 0a 74 79 70 | 65 64 65 66 20 75 6e 73 | b8;.typ|edef uns|
|00013300| 69 67 6e 65 64 20 73 68 | 6f 72 74 20 62 31 36 3b |igned sh|ort b16;|
|00013310| 0a 0a 74 79 70 65 64 65 | 66 20 73 69 67 6e 65 64 |..typede|f signed|
|00013320| 20 6c 6f 6e 67 20 73 62 | 33 32 3b 0a 74 79 70 65 | long sb|32;.type|
|00013330| 64 65 66 20 73 69 67 6e | 65 64 20 63 68 61 72 20 |def sign|ed char |
|00013340| 73 62 38 3b 0a 74 79 70 | 65 64 65 66 20 73 69 67 |sb8;.typ|edef sig|
|00013350| 6e 65 64 20 73 68 6f 72 | 74 20 73 62 31 36 3b 0a |ned shor|t sb16;.|
|00013360| 0a 74 79 70 65 64 65 66 | 20 76 6f 69 64 20 28 2a |.typedef| void (*|
|00013370| 70 74 66 29 28 29 3b 0a | 0a 23 69 66 64 65 66 20 |ptf)();.|.#ifdef |
|00013380| 54 52 55 45 0a 23 75 6e | 64 65 66 20 54 52 55 45 |TRUE.#un|def TRUE|
|00013390| 0a 23 65 6e 64 69 66 0a | 0a 23 69 66 64 65 66 20 |.#endif.|.#ifdef |
|000133a0| 46 41 4c 53 45 0a 23 75 | 6e 64 65 66 20 46 41 4c |FALSE.#u|ndef FAL|
|000133b0| 53 45 0a 23 65 6e 64 69 | 66 0a 0a 23 69 66 64 65 |SE.#endi|f..#ifde|
|000133c0| 66 20 4e 55 4c 4c 0a 23 | 75 6e 64 65 66 20 4e 55 |f NULL.#|undef NU|
|000133d0| 4c 4c 0a 23 65 6e 64 69 | 66 0a 0a 23 69 66 64 65 |LL.#endi|f..#ifde|
|000133e0| 66 20 54 52 55 45 0a 23 | 75 6e 64 65 66 20 54 52 |f TRUE.#|undef TR|
|000133f0| 55 45 0a 23 65 6e 64 69 | 66 0a 0a 23 69 66 64 65 |UE.#endi|f..#ifde|
|00013400| 66 20 46 41 4c 53 45 0a | 23 75 6e 64 65 66 20 46 |f FALSE.|#undef F|
|00013410| 41 4c 53 45 0a 23 65 6e | 64 69 66 0a 0a 23 69 66 |ALSE.#en|dif..#if|
|00013420| 64 65 66 20 4e 55 4c 4c | 0a 23 75 6e 64 65 66 20 |def NULL|.#undef |
|00013430| 4e 55 4c 4c 0a 23 65 6e | 64 69 66 0a 0a 73 74 61 |NULL.#en|dif..sta|
|00013440| 74 69 63 20 76 6f 69 64 | 20 2a 20 63 6f 6e 73 74 |tic void| * const|
|00013450| 20 6e 69 6c 20 3d 20 30 | 3b 0a 0a 74 79 70 65 64 | nil = 0|;..typed|
|00013460| 65 66 20 65 6e 75 6d 20 | 7b 20 66 61 6c 73 65 20 |ef enum |{ false |
|00013470| 3d 20 28 31 20 3d 3d 20 | 30 29 2c 20 74 72 75 65 |= (1 == |0), true|
|00013480| 20 3d 20 28 31 20 3d 3d | 20 31 29 20 7d 20 62 6f | = (1 ==| 1) } bo|
|00013490| 6f 6c 65 61 6e 3b 0a 0a | 23 69 66 64 65 66 20 41 |olean;..|#ifdef A|
|000134a0| 4d 49 47 41 0a 23 64 65 | 66 69 6e 65 20 73 74 72 |MIGA.#de|fine str|
|000134b0| 63 61 73 65 63 6d 70 20 | 73 74 72 69 63 6d 70 0a |casecmp |stricmp.|
|000134c0| 23 65 6e 64 69 66 0a 0a | 2f 2a 20 4e 42 3a 20 74 |#endif..|/* NB: t|
|000134d0| 68 69 73 20 6f 6e 6c 79 | 20 77 6f 72 6b 73 20 66 |his only| works f|
|000134e0| 6f 72 20 79 20 61 20 70 | 6f 77 65 72 20 6f 66 20 |or y a p|ower of |
|000134f0| 32 20 2a 2f 0a 23 64 65 | 66 69 6e 65 20 52 4f 55 |2 */.#de|fine ROU|
|00013500| 4e 44 5f 55 50 28 78 2c | 20 79 29 20 28 28 78 20 |ND_UP(x,| y) ((x |
|00013510| 2b 20 79 20 2d 20 31 29 | 20 26 20 28 7e 28 79 20 |+ y - 1)| & (~(y |
|00013520| 2d 20 31 29 29 29 0a 0a | 00 00 03 72 00 00 05 f5 |- 1)))..|...r....|
|00013530| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 03 71 |........|.......q|
|00013540| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013550| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013560| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013570| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013580| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013590| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000135a0| 00 00 00 00 00 00 1a f9 | 00 00 04 15 00 00 08 b7 |........|........|
|000135b0| 0a 4d 41 53 68 61 72 65 | 5f 36 34 00 00 00 00 00 |.MAShare|_64.....|
|000135c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000135d0| 00 00 00 00 00 00 00 00 | 00 00 1a f9 00 00 04 15 |........|........|
|000135e0| 00 00 08 ea 00 00 1a f9 | 00 00 03 fa 00 00 01 25 |........|.......%|
|000135f0| 00 00 00 00 00 00 00 00 | 00 00 03 71 00 00 00 01 |........|...q....|
|00013600| 00 00 00 02 00 00 00 9b | 00 00 00 02 00 00 00 00 |........|........|
|00013610| 00 00 00 9c cc 31 5c 42 | 00 00 00 00 00 00 00 00 |.....1\B|........|
|00013620| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013630| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013640| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013650| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013660| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013670| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013680| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013690| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000136a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000136b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000136c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000136d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000136e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000136f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013700| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013710| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013720| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013730| 00 00 00 9d 00 00 00 9c | 00 00 00 00 00 00 00 00 |........|........|
|00013740| 00 00 00 00 00 00 03 ea | 00 00 00 00 00 00 00 00 |........|........|
|00013750| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013760| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013770| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013780| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013790| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000137a0| 00 00 00 00 00 00 19 39 | 00 00 03 55 00 00 0a 8c |.......9|...U....|
|000137b0| 05 66 74 70 2e 68 00 00 | 00 00 00 00 00 00 00 00 |.ftp.h..|........|
|000137c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000137d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000137e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000137f0| 00 00 01 b8 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00013800| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|00013810| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|00013820| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|00013830| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|00013840| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|00013850| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|00013860| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|00013870| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|00013880| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|00013890| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|000138a0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|000138b0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|000138c0| 23 64 65 66 69 6e 65 20 | 56 5f 44 6f 73 4c 69 73 |#define |V_DosLis|
|000138d0| 74 20 31 37 35 31 39 0a | 23 64 65 66 69 6e 65 20 |t 17519.|#define |
|000138e0| 56 5f 53 74 61 6e 64 61 | 72 64 50 61 63 6b 65 74 |V_Standa|rdPacket|
|000138f0| 20 32 31 33 36 34 0a 0a | 23 64 65 66 69 6e 65 20 | 21364..|#define |
|00013900| 56 5f 62 73 74 72 20 32 | 35 32 30 33 0a 23 64 65 |V_bstr 2|5203.#de|
|00013910| 66 69 6e 65 20 56 5f 63 | 73 74 72 20 32 35 34 35 |fine V_c|str 2545|
|00013920| 38 0a 0a 23 64 65 66 69 | 6e 65 20 56 5f 6c 6f 63 |8..#defi|ne V_loc|
|00013930| 6b 20 32 37 37 35 39 0a | 0a 74 79 70 65 64 65 66 |k 27759.|.typedef|
|00013940| 20 73 74 72 75 63 74 20 | 6d 79 5f 6c 6f 63 6b 20 | struct |my_lock |
|00013950| 7b 0a 09 73 74 72 75 63 | 74 20 46 69 6c 65 4c 6f |{..struc|t FileLo|
|00013960| 63 6b 20 66 6c 3b 0a 09 | 0a 09 6d 61 67 69 63 5f |ck fl;..|..magic_|
|00013970| 76 65 72 69 66 79 3b 0a | 09 0a 09 73 74 72 75 63 |verify;.|...struc|
|00013980| 74 20 6d 79 5f 6c 6f 63 | 6b 20 2a 6e 65 78 74 3b |t my_loc|k *next;|
|00013990| 0a 09 73 74 72 75 63 74 | 20 4d 73 67 50 6f 72 74 |..struct| MsgPort|
|000139a0| 20 2a 70 6f 72 74 3b 0a | 09 62 33 32 20 72 66 73 | *port;.|.b32 rfs|
|000139b0| 6c 2c 20 6c 61 73 74 6b | 65 79 3b 0a 09 62 38 20 |l, lastk|ey;..b8 |
|000139c0| 66 6e 61 6d 65 5b 30 5d | 3b 0a 7d 20 6c 6f 63 6b |fname[0]|;.} lock|
|000139d0| 3b 0a 0a 23 64 65 66 69 | 6e 65 20 56 5f 66 69 6c |;..#defi|ne V_fil|
|000139e0| 65 5f 69 6e 66 6f 20 32 | 36 32 31 37 0a 0a 23 64 |e_info 2|6217..#d|
|000139f0| 65 66 69 6e 65 20 46 49 | 52 53 54 5f 42 4c 4f 43 |efine FI|RST_BLOC|
|00013a00| 4b 5f 53 49 5a 45 20 35 | 31 32 0a 23 64 65 66 69 |K_SIZE 5|12.#defi|
|00013a10| 6e 65 20 4d 41 58 5f 52 | 45 41 44 5f 53 49 5a 45 |ne MAX_R|EAD_SIZE|
|00013a20| 20 32 30 34 38 0a 0a 74 | 79 70 65 64 65 66 20 73 | 2048..t|ypedef s|
|00013a30| 74 72 75 63 74 20 6d 79 | 5f 66 69 6c 65 5f 69 6e |truct my|_file_in|
|00013a40| 66 6f 20 7b 0a 09 6d 61 | 67 69 63 5f 76 65 72 69 |fo {..ma|gic_veri|
|00013a50| 66 79 3b 0a 09 0a 09 73 | 74 72 75 63 74 20 6d 79 |fy;....s|truct my|
|00013a60| 5f 66 69 6c 65 5f 69 6e | 66 6f 20 2a 6e 65 78 74 |_file_in|fo *next|
|00013a70| 3b 0a 0a 09 62 33 32 20 | 72 66 61 72 67 3b 09 2f |;...b32 |rfarg;./|
|00013a80| 2a 20 72 65 61 6c 20 66 | 69 6c 65 20 61 72 67 20 |* real f|ile arg |
|00013a90| 2a 2f 0a 09 62 33 32 20 | 72 70 6f 73 2c 20 76 70 |*/..b32 |rpos, vp|
|00013aa0| 6f 73 2c 20 65 6e 64 3b | 09 2f 2a 20 72 65 61 6c |os, end;|./* real|
|00013ab0| 20 66 69 6c 65 20 70 6f | 73 69 74 69 6f 6e 2c 20 | file po|sition, |
|00013ac0| 76 69 72 74 75 61 6c 20 | 66 69 6c 65 20 70 6f 73 |virtual |file pos|
|00013ad0| 69 74 69 6f 6e 2c 20 66 | 69 6c 65 20 65 6e 64 20 |ition, f|ile end |
|00013ae0| 2a 2f 0a 09 73 74 72 75 | 63 74 20 4d 73 67 50 6f |*/..stru|ct MsgPo|
|00013af0| 72 74 20 2a 70 6f 72 74 | 3b 0a 09 73 74 72 75 63 |rt *port|;..struc|
|00013b00| 74 20 74 63 70 6d 20 2a | 74 6d 3b 0a 09 62 31 36 |t tcpm *|tm;..b16|
|00013b10| 20 74 79 70 65 3b 0a 09 | 62 6f 6f 6c 65 61 6e 20 | type;..|boolean |
|00013b20| 73 65 65 6b 5f 65 6e 64 | 2c 20 65 6f 66 2c 20 63 |seek_end|, eof, c|
|00013b30| 6c 6f 73 65 64 3b 0a 09 | 62 38 20 66 69 72 73 74 |losed;..|b8 first|
|00013b40| 5f 62 6c 6f 63 6b 5b 46 | 49 52 53 54 5f 42 4c 4f |_block[F|IRST_BLO|
|00013b50| 43 4b 5f 53 49 5a 45 5d | 3b 0a 09 62 38 20 66 6e |CK_SIZE]|;..b8 fn|
|00013b60| 61 6d 65 5b 30 5d 3b 0a | 7d 20 66 69 6c 65 5f 69 |ame[0];.|} file_i|
|00013b70| 6e 66 6f 3b 0a 0a 2f 2a | 20 73 70 65 63 69 61 6c |nfo;../*| special|
|00013b80| 20 69 6e 74 65 72 6e 61 | 6c 20 70 61 63 6b 65 74 | interna|l packet|
|00013b90| 73 20 2a 2f 0a 0a 23 64 | 65 66 69 6e 65 20 61 63 |s */..#d|efine ac|
|00013ba0| 74 69 6f 6e 5f 49 44 4c | 45 20 32 30 35 30 0a 23 |tion_IDL|E 2050.#|
|00013bb0| 64 65 66 69 6e 65 20 61 | 63 74 69 6f 6e 5f 49 44 |define a|ction_ID|
|00013bc0| 4c 45 5f 44 45 41 54 48 | 20 32 30 35 31 0a 23 64 |LE_DEATH| 2051.#d|
|00013bd0| 65 66 69 6e 65 20 61 63 | 74 69 6f 6e 5f 53 55 53 |efine ac|tion_SUS|
|00013be0| 50 45 4e 44 20 32 30 35 | 32 0a 03 fa 00 00 01 25 |PEND 205|2......%|
|00013bf0| 00 00 00 00 00 00 00 00 | 00 00 03 71 00 00 00 01 |........|...q....|
|00013c00| 00 00 00 02 00 00 00 9e | 00 00 00 06 00 00 00 00 |........|........|
|00013c10| 00 00 00 9f 5e c7 f3 1e | 00 00 00 00 00 00 00 00 |....^...|........|
|00013c20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013c30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013c40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013c50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013c60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013c70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013c80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013c90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013ca0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013cb0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013cc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013cd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013ce0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013cf0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013d00| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013d10| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013d20| 00 00 00 a4 00 00 00 a3 | 00 00 00 a2 00 00 00 a1 |........|........|
|00013d30| 00 00 00 a0 00 00 00 9f | 00 00 00 00 00 00 00 00 |........|........|
|00013d40| 00 00 00 00 00 00 0b c1 | 00 00 00 00 00 00 00 00 |........|........|
|00013d50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013d60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013d70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013d80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013d90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013da0| 00 00 00 00 00 00 19 98 | 00 00 03 ed 00 00 02 58 |........|.......X|
|00013db0| 09 66 74 70 69 6e 66 6f | 2e 63 00 00 00 00 00 00 |.ftpinfo|.c......|
|00013dc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013dd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013de0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00013df0| 00 00 01 39 00 00 00 21 | 00 00 00 00 ff ff ff fd |...9...!|........|
|00013e00| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|00013e10| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|00013e20| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|00013e30| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|00013e40| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|00013e50| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|00013e60| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|00013e70| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|00013e80| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|00013e90| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|00013ea0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|00013eb0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|00013ec0| 23 69 6e 63 6c 75 64 65 | 20 3c 65 78 65 63 2f 74 |#include| <exec/t|
|00013ed0| 79 70 65 73 2e 68 3e 0a | 23 69 6e 63 6c 75 64 65 |ypes.h>.|#include|
|00013ee0| 20 3c 65 78 65 63 2f 6d | 65 6d 6f 72 79 2e 68 3e | <exec/m|emory.h>|
|00013ef0| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 65 78 65 63 2f |.#includ|e <exec/|
|00013f00| 61 6c 65 72 74 73 2e 68 | 3e 0a 0a 23 69 6e 63 6c |alerts.h|>..#incl|
|00013f10| 75 64 65 20 3c 64 65 76 | 69 63 65 73 2f 74 69 6d |ude <dev|ices/tim|
|00013f20| 65 72 2e 68 3e 0a 0a 23 | 69 6e 63 6c 75 64 65 20 |er.h>..#|include |
|00013f30| 3c 64 6f 73 2f 64 6f 73 | 2e 68 3e 0a 23 69 6e 63 |<dos/dos|.h>.#inc|
|00013f40| 6c 75 64 65 20 3c 64 6f | 73 2f 64 6f 73 65 78 74 |lude <do|s/dosext|
|00013f50| 65 6e 73 2e 68 3e 0a 23 | 69 6e 63 6c 75 64 65 20 |ens.h>.#|include |
|00013f60| 3c 64 6f 73 2f 64 6f 73 | 74 61 67 73 2e 68 3e 0a |<dos/dos|tags.h>.|
|00013f70| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 70 72 6f 74 6f |.#includ|e <proto|
|00013f80| 2f 65 78 65 63 2e 68 3e | 0a 0a 23 69 6e 63 6c 75 |/exec.h>|..#inclu|
|00013f90| 64 65 20 3c 73 74 64 69 | 6f 2e 68 3e 0a 23 69 6e |de <stdi|o.h>.#in|
|00013fa0| 63 6c 75 64 65 20 3c 73 | 74 64 6c 69 62 2e 68 3e |clude <s|tdlib.h>|
|00013fb0| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 73 74 72 69 6e |.#includ|e <strin|
|00013fc0| 67 2e 68 3e 0a 0a 23 69 | 6e 63 6c 75 64 65 20 22 |g.h>..#i|nclude "|
|00013fd0| 65 76 74 79 70 65 73 2e | 68 22 0a 23 69 6e 63 6c |evtypes.|h".#incl|
|00013fe0| 75 64 65 20 22 76 65 72 | 69 66 79 2e 68 22 0a 23 |ude "ver|ify.h".#|
|00013ff0| 69 6e 63 6c 75 64 65 20 | 22 74 63 70 2e 68 22 0a |include |"tcp.h".|
|00014000| 0a 23 69 6e 63 6c 75 64 | 65 20 22 73 69 74 65 2e |.#includ|e "site.|
|00014010| 68 22 0a 23 69 6e 63 6c | 75 64 65 20 22 66 74 70 |h".#incl|ude "ftp|
|00014020| 2e 68 22 0a 23 69 6e 63 | 6c 75 64 65 20 22 73 70 |.h".#inc|lude "sp|
|00014030| 6c 69 74 2e 68 22 0a 23 | 69 6e 63 6c 75 64 65 20 |lit.h".#|include |
|00014040| 22 66 74 70 69 6e 66 6f | 2e 68 22 0a 23 69 6e 63 |"ftpinfo|.h".#inc|
|00014050| 6c 75 64 65 20 22 63 6f | 6e 6e 65 63 74 2e 68 22 |lude "co|nnect.h"|
|00014060| 0a 0a 23 69 6e 63 6c 75 | 64 65 20 22 67 6c 6f 62 |..#inclu|de "glob|
|00014070| 61 6c 73 2e 68 22 0a 0a | 2f 2a 0a 20 2a 20 66 74 |als.h"..|/*. * ft|
|00014080| 70 69 6e 66 6f 20 72 6f | 75 74 69 6e 65 73 0a 20 |pinfo ro|utines. |
|00014090| 2a 2f 0a 0a 76 6f 69 64 | 20 61 64 64 5f 66 74 70 |*/..void| add_ftp|
|000140a0| 69 6e 66 6f 28 73 74 72 | 75 63 74 20 69 6e 66 6f |info(str|uct info|
|000140b0| 5f 68 65 61 64 65 72 20 | 2a 69 68 2c 20 62 38 20 |_header |*ih, b8 |
|000140c0| 2a 6e 61 6d 65 2c 20 73 | 74 72 75 63 74 20 44 61 |*name, s|truct Da|
|000140d0| 74 65 53 74 61 6d 70 20 | 64 73 2c 20 62 33 32 20 |teStamp |ds, b32 |
|000140e0| 73 69 7a 65 2c 20 62 33 | 32 20 62 6c 6f 63 6b 73 |size, b3|2 blocks|
|000140f0| 2c 20 62 33 32 20 66 6c | 61 67 73 29 0a 7b 0a 09 |, b32 fl|ags).{..|
|00014100| 66 74 70 69 6e 66 6f 20 | 2a 66 69 3b 0a 09 69 6e |ftpinfo |*fi;..in|
|00014110| 74 20 6c 65 6e 3b 0a 09 | 0a 09 76 65 72 69 66 79 |t len;..|..verify|
|00014120| 28 69 68 2c 20 56 5f 69 | 6e 66 6f 5f 68 65 61 64 |(ih, V_i|nfo_head|
|00014130| 65 72 29 3b 0a 09 0a 09 | 6c 65 6e 20 3d 20 73 74 |er);....|len = st|
|00014140| 72 6c 65 6e 28 6e 61 6d | 65 29 3b 0a 09 0a 09 66 |rlen(nam|e);....f|
|00014150| 69 20 3d 20 61 6c 6c 6f | 63 61 74 65 28 73 69 7a |i = allo|cate(siz|
|00014160| 65 6f 66 28 2a 66 69 29 | 20 2b 20 6c 65 6e 20 2b |eof(*fi)| + len +|
|00014170| 20 31 2c 20 56 5f 66 74 | 70 69 6e 66 6f 29 3b 0a | 1, V_ft|pinfo);.|
|00014180| 09 69 66 20 28 21 66 69 | 29 20 72 65 74 75 72 6e |.if (!fi|) return|
|00014190| 3b 0a 09 0a 09 65 6e 73 | 75 72 65 28 66 69 2c 20 |;....ens|ure(fi, |
|000141a0| 56 5f 66 74 70 69 6e 66 | 6f 29 3b 0a 09 0a 09 73 |V_ftpinf|o);....s|
|000141b0| 74 72 63 70 79 28 66 69 | 2d 3e 6e 61 6d 65 2c 20 |trcpy(fi|->name, |
|000141c0| 6e 61 6d 65 29 3b 0a 0a | 09 66 69 2d 3e 6d 6f 64 |name);..|.fi->mod|
|000141d0| 69 66 69 65 64 20 3d 20 | 64 73 3b 0a 09 66 69 2d |ified = |ds;..fi-|
|000141e0| 3e 73 69 7a 65 20 3d 20 | 73 69 7a 65 3b 0a 09 66 |>size = |size;..f|
|000141f0| 69 2d 3e 62 6c 6f 63 6b | 73 20 3d 20 62 6c 6f 63 |i->block|s = bloc|
|00014200| 6b 73 3b 0a 09 66 69 2d | 3e 66 6c 61 67 73 20 3d |ks;..fi-|>flags =|
|00014210| 20 66 6c 61 67 73 3b 0a | 09 0a 09 2f 2f 20 66 69 | flags;.|...// fi|
|00014220| 2d 3e 6e 65 78 74 20 3d | 20 69 68 2d 3e 69 6e 66 |->next =| ih->inf|
|00014230| 6f 73 3b 0a 09 2f 2f 20 | 69 68 2d 3e 69 6e 66 6f |os;..// |ih->info|
|00014240| 73 20 3d 20 66 69 3b 0a | 0a 09 2f 2a 20 69 6e 73 |s = fi;.|../* ins|
|00014250| 74 65 61 64 20 6f 66 20 | 61 64 64 69 6e 67 20 74 |tead of |adding t|
|00014260| 6f 20 66 72 6f 6e 74 2c | 20 61 6e 64 20 67 65 74 |o front,| and get|
|00014270| 74 69 6e 67 20 72 65 76 | 65 72 73 65 64 20 6c 69 |ting rev|ersed li|
|00014280| 73 74 73 2c 20 61 64 64 | 20 74 6f 20 65 6e 64 20 |sts, add| to end |
|00014290| 2a 2f 0a 09 2a 28 69 68 | 2d 3e 6c 61 73 74 5f 69 |*/..*(ih|->last_i|
|000142a0| 6e 66 6f 5f 70 29 20 3d | 20 66 69 3b 0a 09 69 68 |nfo_p) =| fi;..ih|
|000142b0| 2d 3e 6c 61 73 74 5f 69 | 6e 66 6f 5f 70 20 3d 20 |->last_i|nfo_p = |
|000142c0| 26 28 66 69 2d 3e 6e 65 | 78 74 29 3b 0a 09 66 69 |&(fi->ne|xt);..fi|
|000142d0| 2d 3e 6e 65 78 74 20 3d | 20 6e 69 6c 3b 0a 0a 09 |->next =| nil;...|
|000142e0| 72 65 74 75 72 6e 3b 0a | 7d 0a 0a 76 6f 69 64 20 |return;.|}..void |
|000142f0| 66 72 65 65 5f 69 6e 66 | 6f 5f 68 65 61 64 65 72 |free_inf|o_header|
|00014300| 28 73 74 72 75 63 74 20 | 69 6e 66 6f 5f 68 65 61 |(struct |info_hea|
|00014310| 64 65 72 20 2a 69 68 29 | 0a 7b 0a 09 66 74 70 69 |der *ih)|.{..ftpi|
|00014320| 6e 66 6f 20 2a 66 69 2c | 20 2a 66 69 6e 3b 0a 09 |nfo *fi,| *fin;..|
|00014330| 0a 09 76 65 72 69 66 79 | 28 69 68 2c 20 56 5f 69 |..verify|(ih, V_i|
|00014340| 6e 66 6f 5f 68 65 61 64 | 65 72 29 3b 0a 09 0a 09 |nfo_head|er);....|
|00014350| 66 69 20 3d 20 69 68 2d | 3e 69 6e 66 6f 73 3b 0a |fi = ih-|>infos;.|
|00014360| 09 77 68 69 6c 65 20 28 | 66 69 29 20 7b 0a 09 09 |.while (|fi) {...|
|00014370| 76 65 72 69 66 79 28 66 | 69 2c 20 56 5f 66 74 70 |verify(f|i, V_ftp|
|00014380| 69 6e 66 6f 29 3b 0a 09 | 09 66 69 6e 20 3d 20 66 |info);..|.fin = f|
|00014390| 69 2d 3e 6e 65 78 74 3b | 0a 09 09 0a 09 09 64 65 |i->next;|......de|
|000143a0| 61 6c 6c 6f 63 61 74 65 | 28 66 69 2c 20 56 5f 66 |allocate|(fi, V_f|
|000143b0| 74 70 69 6e 66 6f 29 3b | 0a 09 09 66 69 20 3d 20 |tpinfo);|...fi = |
|000143c0| 66 69 6e 3b 0a 09 7d 0a | 09 0a 09 69 66 20 28 69 |fin;..}.|...if (i|
|000143d0| 68 2d 3e 6e 65 78 74 29 | 0a 09 09 69 68 2d 3e 6e |h->next)|...ih->n|
|000143e0| 65 78 74 2d 3e 70 72 65 | 76 20 3d 20 69 68 2d 3e |ext->pre|v = ih->|
|000143f0| 70 72 65 76 3b 0a 0a 09 | 2a 28 69 68 2d 3e 70 72 |prev;...|*(ih->pr|
|00014400| 65 76 29 20 3d 20 69 68 | 2d 3e 6e 65 78 74 3b 0a |ev) = ih|->next;.|
|00014410| 09 0a 09 64 65 61 6c 6c | 6f 63 61 74 65 28 69 68 |...deall|ocate(ih|
|00014420| 2c 20 56 5f 69 6e 66 6f | 5f 68 65 61 64 65 72 29 |, V_info|_header)|
|00014430| 3b 0a 09 0a 09 72 65 74 | 75 72 6e 3b 0a 7d 0a 0a |;....ret|urn;.}..|
|00014440| 73 74 72 75 63 74 20 69 | 6e 66 6f 5f 68 65 61 64 |struct i|nfo_head|
|00014450| 65 72 20 2a 6e 65 77 5f | 69 6e 66 6f 5f 68 65 61 |er *new_|info_hea|
|00014460| 64 65 72 28 73 69 74 65 | 20 2a 73 70 2c 20 62 38 |der(site| *sp, b8|
|00014470| 20 2a 6e 61 6d 65 29 0a | 7b 0a 09 73 74 72 75 63 | *name).|{..struc|
|00014480| 74 20 69 6e 66 6f 5f 68 | 65 61 64 65 72 20 2a 69 |t info_h|eader *i|
|00014490| 68 3b 0a 09 0a 09 76 65 | 72 69 66 79 28 73 70 2c |h;....ve|rify(sp,|
|000144a0| 20 56 5f 73 69 74 65 29 | 3b 0a 09 0a 09 69 68 20 | V_site)|;....ih |
|000144b0| 3d 20 28 73 74 72 75 63 | 74 20 69 6e 66 6f 5f 68 |= (struc|t info_h|
|000144c0| 65 61 64 65 72 20 2a 29 | 61 6c 6c 6f 63 61 74 65 |eader *)|allocate|
|000144d0| 28 73 69 7a 65 6f 66 28 | 2a 69 68 29 20 2b 20 73 |(sizeof(|*ih) + s|
|000144e0| 74 72 6c 65 6e 28 6e 61 | 6d 65 29 20 2b 20 31 2c |trlen(na|me) + 1,|
|000144f0| 20 56 5f 69 6e 66 6f 5f | 68 65 61 64 65 72 29 3b | V_info_|header);|
|00014500| 0a 09 69 66 20 28 21 69 | 68 29 20 72 65 74 75 72 |..if (!i|h) retur|
|00014510| 6e 20 6e 69 6c 3b 0a 09 | 0a 09 65 6e 73 75 72 65 |n nil;..|..ensure|
|00014520| 28 69 68 2c 20 56 5f 69 | 6e 66 6f 5f 68 65 61 64 |(ih, V_i|nfo_head|
|00014530| 65 72 29 3b 0a 09 0a 09 | 69 68 2d 3e 69 6e 66 6f |er);....|ih->info|
|00014540| 73 20 3d 20 6e 69 6c 3b | 0a 09 69 68 2d 3e 6c 61 |s = nil;|..ih->la|
|00014550| 73 74 5f 69 6e 66 6f 5f | 70 20 3d 20 26 28 69 68 |st_info_|p = &(ih|
|00014560| 2d 3e 69 6e 66 6f 73 29 | 3b 0a 09 0a 09 69 68 2d |->infos)|;....ih-|
|00014570| 3e 6e 65 78 74 20 3d 20 | 73 70 2d 3e 69 6e 66 6f |>next = |sp->info|
|00014580| 73 3b 0a 09 69 66 20 28 | 73 70 2d 3e 69 6e 66 6f |s;..if (|sp->info|
|00014590| 73 29 20 73 70 2d 3e 69 | 6e 66 6f 73 2d 3e 70 72 |s) sp->i|nfos->pr|
|000145a0| 65 76 20 3d 20 26 28 69 | 68 2d 3e 6e 65 78 74 29 |ev = &(i|h->next)|
|000145b0| 3b 0a 09 73 70 2d 3e 69 | 6e 66 6f 73 20 3d 20 69 |;..sp->i|nfos = i|
|000145c0| 68 3b 0a 09 69 68 2d 3e | 70 72 65 76 20 3d 20 26 |h;..ih->|prev = &|
|000145d0| 28 73 70 2d 3e 69 6e 66 | 6f 73 29 3b 0a 09 0a 09 |(sp->inf|os);....|
|000145e0| 73 74 72 63 70 79 28 69 | 68 2d 3e 6e 61 6d 65 2c |strcpy(i|h->name,|
|000145f0| 20 6e 61 6d 65 29 3b 0a | 09 0a 09 69 68 2d 3e 63 | name);.|...ih->c|
|00014600| 61 73 65 5f 73 65 6e 73 | 69 74 69 76 65 20 3d 20 |ase_sens|itive = |
|00014610| 73 70 2d 3e 63 61 73 65 | 5f 73 65 6e 73 69 74 69 |sp->case|_sensiti|
|00014620| 76 65 3b 0a 09 0a 09 72 | 65 74 75 72 6e 20 69 68 |ve;....r|eturn ih|
|00014630| 3b 0a 7d 0a 0a 73 74 72 | 75 63 74 20 69 6e 66 6f |;.}..str|uct info|
|00014640| 5f 68 65 61 64 65 72 20 | 2a 66 69 6e 64 5f 69 6e |_header |*find_in|
|00014650| 66 6f 5f 68 65 61 64 65 | 72 28 73 69 74 65 20 2a |fo_heade|r(site *|
|00014660| 73 70 2c 20 62 38 20 2a | 6e 61 6d 65 29 0a 7b 0a |sp, b8 *|name).{.|
|00014670| 09 73 74 72 75 63 74 20 | 69 6e 66 6f 5f 68 65 61 |.struct |info_hea|
|00014680| 64 65 72 20 2a 69 68 3b | 0a 0a 09 76 65 72 69 66 |der *ih;|...verif|
|00014690| 79 28 73 70 2c 20 56 5f | 73 69 74 65 29 3b 0a 0a |y(sp, V_|site);..|
|000146a0| 09 69 68 20 3d 20 73 70 | 2d 3e 69 6e 66 6f 73 3b |.ih = sp|->infos;|
|000146b0| 09 0a 0a 09 69 66 20 28 | 73 70 2d 3e 63 61 73 65 |....if (|sp->case|
|000146c0| 5f 73 65 6e 73 69 74 69 | 76 65 29 20 7b 0a 09 09 |_sensiti|ve) {...|
|000146d0| 77 68 69 6c 65 20 28 69 | 68 29 20 7b 0a 09 09 09 |while (i|h) {....|
|000146e0| 69 66 20 28 73 74 72 63 | 6d 70 28 69 68 2d 3e 6e |if (strc|mp(ih->n|
|000146f0| 61 6d 65 2c 20 6e 61 6d | 65 29 20 3d 3d 20 30 29 |ame, nam|e) == 0)|
|00014700| 20 72 65 74 75 72 6e 20 | 69 68 3b 0a 09 09 09 69 | return |ih;....i|
|00014710| 68 20 3d 20 69 68 2d 3e | 6e 65 78 74 3b 0a 09 09 |h = ih->|next;...|
|00014720| 7d 0a 09 7d 20 65 6c 73 | 65 20 7b 0a 09 09 77 68 |}..} els|e {...wh|
|00014730| 69 6c 65 20 28 69 68 29 | 20 7b 0a 09 09 09 69 66 |ile (ih)| {....if|
|00014740| 20 28 73 74 72 69 63 6d | 70 28 69 68 2d 3e 6e 61 | (stricm|p(ih->na|
|00014750| 6d 65 2c 20 6e 61 6d 65 | 29 20 3d 3d 20 30 29 20 |me, name|) == 0) |
|00014760| 72 65 74 75 72 6e 20 69 | 68 3b 0a 09 09 09 69 68 |return i|h;....ih|
|00014770| 20 3d 20 69 68 2d 3e 6e | 65 78 74 3b 0a 09 09 7d | = ih->n|ext;...}|
|00014780| 0a 09 7d 0a 0a 09 72 65 | 74 75 72 6e 20 6e 69 6c |..}...re|turn nil|
|00014790| 3b 0a 7d 0a 0a 66 74 70 | 69 6e 66 6f 20 2a 66 69 |;.}..ftp|info *fi|
|000147a0| 6e 64 5f 69 6e 66 6f 28 | 73 74 72 75 63 74 20 69 |nd_info(|struct i|
|000147b0| 6e 66 6f 5f 68 65 61 64 | 65 72 20 2a 69 68 2c 20 |nfo_head|er *ih, |
|000147c0| 62 38 20 2a 6e 61 6d 65 | 29 0a 7b 0a 09 66 74 70 |b8 *name|).{..ftp|
|000147d0| 69 6e 66 6f 20 2a 66 69 | 2c 20 2a 66 6f 75 6e 64 |info *fi|, *found|
|000147e0| 3b 0a 09 0a 09 66 6f 75 | 6e 64 20 3d 20 6e 69 6c |;....fou|nd = nil|
|000147f0| 3b 0a 09 66 69 20 3d 20 | 69 68 2d 3e 69 6e 66 6f |;..fi = |ih->info|
|00014800| 73 3b 0a 0a 09 69 66 20 | 28 69 68 2d 3e 63 61 73 |s;...if |(ih->cas|
|00014810| 65 5f 73 65 6e 73 69 74 | 69 76 65 29 20 7b 0a 09 |e_sensit|ive) {..|
|00014820| 09 77 68 69 6c 65 20 28 | 66 69 29 20 7b 0a 09 09 |.while (|fi) {...|
|00014830| 09 69 66 20 28 73 74 72 | 63 6d 70 28 66 69 2d 3e |.if (str|cmp(fi->|
|00014840| 6e 61 6d 65 2c 20 6e 61 | 6d 65 29 20 3d 3d 20 30 |name, na|me) == 0|
|00014850| 20 26 26 20 21 28 66 69 | 2d 3e 66 6c 61 67 73 20 | && !(fi|->flags |
|00014860| 26 20 4d 59 46 4c 41 47 | 5f 44 45 4c 45 54 45 44 |& MYFLAG|_DELETED|
|00014870| 29 20 29 20 0a 09 09 09 | 7b 0a 09 09 09 09 66 6f |) ) ....|{.....fo|
|00014880| 75 6e 64 20 3d 20 66 69 | 3b 0a 09 09 09 09 62 72 |und = fi|;.....br|
|00014890| 65 61 6b 3b 0a 09 09 09 | 7d 0a 09 09 09 66 69 20 |eak;....|}....fi |
|000148a0| 3d 20 66 69 2d 3e 6e 65 | 78 74 3b 0a 09 09 7d 0a |= fi->ne|xt;...}.|
|000148b0| 09 7d 20 65 6c 73 65 20 | 7b 0a 09 09 66 6f 75 6e |.} else |{...foun|
|000148c0| 64 20 3d 20 6e 69 6c 3b | 0a 0a 09 09 77 68 69 6c |d = nil;|....whil|
|000148d0| 65 20 28 66 69 29 20 7b | 0a 09 09 09 69 66 20 28 |e (fi) {|....if (|
|000148e0| 21 28 66 69 2d 3e 66 6c | 61 67 73 20 26 20 4d 59 |!(fi->fl|ags & MY|
|000148f0| 46 4c 41 47 5f 44 45 4c | 45 54 45 44 29 29 0a 09 |FLAG_DEL|ETED))..|
|00014900| 09 09 7b 09 0a 09 09 09 | 09 69 66 20 28 73 74 72 |..{.....|.if (str|
|00014910| 69 63 6d 70 28 66 69 2d | 3e 6e 61 6d 65 2c 20 6e |icmp(fi-|>name, n|
|00014920| 61 6d 65 29 20 3d 3d 20 | 30 29 0a 09 09 09 09 7b |ame) == |0).....{|
|00014930| 0a 09 09 09 09 09 66 6f | 75 6e 64 20 3d 20 66 69 |......fo|und = fi|
|00014940| 3b 0a 09 09 09 09 09 0a | 09 09 09 09 09 69 66 20 |;.......|.....if |
|00014950| 28 73 74 72 63 6d 70 28 | 66 69 2d 3e 6e 61 6d 65 |(strcmp(|fi->name|
|00014960| 2c 20 6e 61 6d 65 29 20 | 3d 3d 20 30 29 0a 09 09 |, name) |== 0)...|
|00014970| 09 09 09 7b 0a 09 09 09 | 09 09 09 62 72 65 61 6b |...{....|...break|
|00014980| 3b 20 20 0a 09 09 09 09 | 09 7d 0a 09 09 09 09 7d |; .....|.}.....}|
|00014990| 0a 09 09 09 7d 0a 09 09 | 09 66 69 20 3d 20 66 69 |....}...|.fi = fi|
|000149a0| 2d 3e 6e 65 78 74 3b 0a | 09 09 7d 0a 09 7d 0a 0a |->next;.|..}..}..|
|000149b0| 09 72 65 74 75 72 6e 20 | 66 6f 75 6e 64 3b 0a 7d |.return |found;.}|
|000149c0| 0a 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000149d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000149e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000149f0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00014a00| 00 00 00 02 00 00 00 a5 | 00 00 00 03 00 00 00 00 |........|........|
|00014a10| 00 00 00 a6 5e c2 f9 7f | 00 00 00 00 00 00 00 00 |....^...|........|
|00014a20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014a30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014a40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014a50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014a60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014a70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014a80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014a90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014aa0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014ab0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014ac0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014ad0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014ae0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014af0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014b00| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014b10| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014b20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 a8 |........|........|
|00014b30| 00 00 00 a7 00 00 00 a6 | 00 00 00 00 00 00 00 00 |........|........|
|00014b40| 00 00 00 00 00 00 04 20 | 00 00 00 00 00 00 00 00 |....... |........|
|00014b50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014b60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014b70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014b80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014b90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014ba0| 00 00 00 00 00 00 19 98 | 00 00 03 e3 00 00 06 a4 |........|........|
|00014bb0| 09 66 74 70 69 6e 66 6f | 2e 68 00 00 00 00 00 00 |.ftpinfo|.h......|
|00014bc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014bd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014be0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00014bf0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00014c00| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|00014c10| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|00014c20| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|00014c30| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|00014c40| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|00014c50| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|00014c60| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|00014c70| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|00014c80| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|00014c90| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|00014ca0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|00014cb0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|00014cc0| 73 74 72 75 63 74 20 69 | 6e 66 6f 5f 68 65 61 64 |struct i|nfo_head|
|00014cd0| 65 72 20 7b 0a 09 73 74 | 72 75 63 74 20 69 6e 66 |er {..st|ruct inf|
|00014ce0| 6f 5f 68 65 61 64 65 72 | 20 2a 6e 65 78 74 3b 0a |o_header| *next;.|
|00014cf0| 09 73 74 72 75 63 74 20 | 69 6e 66 6f 5f 68 65 61 |.struct |info_hea|
|00014d00| 64 65 72 20 2a 2a 70 72 | 65 76 3b 0a 09 0a 09 6d |der **pr|ev;....m|
|00014d10| 61 67 69 63 5f 76 65 72 | 69 66 79 3b 0a 09 0a 09 |agic_ver|ify;....|
|00014d20| 62 33 32 09 75 6e 69 71 | 75 65 3b 0a 09 0a 09 73 |b32.uniq|ue;....s|
|00014d30| 74 72 75 63 74 09 6d 79 | 5f 69 6e 66 6f 20 2a 69 |truct.my|_info *i|
|00014d40| 6e 66 6f 73 3b 0a 09 73 | 74 72 75 63 74 20 20 6d |nfos;..s|truct m|
|00014d50| 79 5f 69 6e 66 6f 20 2a | 2a 6c 61 73 74 5f 69 6e |y_info *|*last_in|
|00014d60| 66 6f 5f 70 3b 0a 0a 09 | 62 6f 6f 6c 65 61 6e 09 |fo_p;...|boolean.|
|00014d70| 63 61 73 65 5f 73 65 6e | 73 69 74 69 76 65 3b 0a |case_sen|sitive;.|
|00014d80| 09 62 38 09 6e 61 6d 65 | 5b 30 5d 3b 0a 7d 3b 0a |.b8.name|[0];.};.|
|00014d90| 0a 74 79 70 65 64 65 66 | 20 73 74 72 75 63 74 20 |.typedef| struct |
|00014da0| 6d 79 5f 69 6e 66 6f 20 | 7b 0a 09 73 74 72 75 63 |my_info |{..struc|
|00014db0| 74 20 09 6d 79 5f 69 6e | 66 6f 20 2a 6e 65 78 74 |t .my_in|fo *next|
|00014dc0| 3b 0a 09 0a 09 6d 61 67 | 69 63 5f 76 65 72 69 66 |;....mag|ic_verif|
|00014dd0| 79 3b 0a 09 0a 09 62 33 | 32 09 73 69 7a 65 3b 0a |y;....b3|2.size;.|
|00014de0| 09 62 33 32 09 62 6c 6f | 63 6b 73 3b 0a 09 62 33 |.b32.blo|cks;..b3|
|00014df0| 32 09 66 6c 61 67 73 3b | 0a 09 73 74 72 75 63 74 |2.flags;|..struct|
|00014e00| 09 44 61 74 65 53 74 61 | 6d 70 20 6d 6f 64 69 66 |.DateSta|mp modif|
|00014e10| 69 65 64 3b 0a 09 62 38 | 09 6e 61 6d 65 5b 30 5d |ied;..b8|.name[0]|
|00014e20| 3b 0a 7d 20 66 74 70 69 | 6e 66 6f 3b 0a 0a 23 64 |;.} ftpi|nfo;..#d|
|00014e30| 65 66 69 6e 65 20 4d 59 | 46 4c 41 47 5f 44 49 52 |efine MY|FLAG_DIR|
|00014e40| 20 30 78 38 30 30 30 30 | 09 2f 2a 20 66 6f 72 20 | 0x80000|./* for |
|00014e50| 69 6e 64 69 63 61 74 69 | 6e 67 20 64 69 72 65 63 |indicati|ng direc|
|00014e60| 74 6f 72 69 65 73 20 77 | 69 74 68 20 6f 75 72 20 |tories w|ith our |
|00014e70| 6e 6f 72 6d 61 6c 20 70 | 72 6f 74 65 63 74 69 6f |normal p|rotectio|
|00014e80| 6e 20 62 69 74 73 20 2a | 2f 0a 23 64 65 66 69 6e |n bits *|/.#defin|
|00014e90| 65 20 4d 59 46 4c 41 47 | 5f 44 45 4c 45 54 45 44 |e MYFLAG|_DELETED|
|00014ea0| 20 30 78 34 30 30 30 30 | 0a 0a 23 64 65 66 69 6e | 0x40000|..#defin|
|00014eb0| 65 20 56 5f 66 74 70 69 | 6e 66 6f 09 36 30 33 33 |e V_ftpi|nfo.6033|
|00014ec0| 0a 23 64 65 66 69 6e 65 | 20 56 5f 69 6e 66 6f 5f |.#define| V_info_|
|00014ed0| 68 65 61 64 65 72 09 39 | 34 31 32 0a 0a 76 6f 69 |header.9|412..voi|
|00014ee0| 64 20 61 64 64 5f 66 74 | 70 69 6e 66 6f 28 73 74 |d add_ft|pinfo(st|
|00014ef0| 72 75 63 74 20 69 6e 66 | 6f 5f 68 65 61 64 65 72 |ruct inf|o_header|
|00014f00| 20 2a 69 68 2c 20 62 38 | 20 2a 6e 61 6d 65 2c 20 | *ih, b8| *name, |
|00014f10| 73 74 72 75 63 74 20 44 | 61 74 65 53 74 61 6d 70 |struct D|ateStamp|
|00014f20| 20 64 73 2c 20 62 33 32 | 20 73 69 7a 65 2c 20 62 | ds, b32| size, b|
|00014f30| 33 32 20 62 6c 6f 63 6b | 73 2c 20 62 33 32 20 66 |32 block|s, b32 f|
|00014f40| 6c 61 67 73 29 3b 0a 76 | 6f 69 64 20 66 72 65 65 |lags);.v|oid free|
|00014f50| 5f 69 6e 66 6f 5f 68 65 | 61 64 65 72 28 73 74 72 |_info_he|ader(str|
|00014f60| 75 63 74 20 69 6e 66 6f | 5f 68 65 61 64 65 72 20 |uct info|_header |
|00014f70| 2a 69 68 29 3b 0a 73 74 | 72 75 63 74 20 69 6e 66 |*ih);.st|ruct inf|
|00014f80| 6f 5f 68 65 61 64 65 72 | 20 2a 6e 65 77 5f 69 6e |o_header| *new_in|
|00014f90| 66 6f 5f 68 65 61 64 65 | 72 28 73 69 74 65 20 2a |fo_heade|r(site *|
|00014fa0| 73 70 2c 20 62 38 20 2a | 6e 61 6d 65 29 3b 0a 73 |sp, b8 *|name);.s|
|00014fb0| 74 72 75 63 74 20 69 6e | 66 6f 5f 68 65 61 64 65 |truct in|fo_heade|
|00014fc0| 72 20 2a 66 69 6e 64 5f | 69 6e 66 6f 5f 68 65 61 |r *find_|info_hea|
|00014fd0| 64 65 72 28 73 69 74 65 | 20 2a 73 70 2c 20 62 38 |der(site| *sp, b8|
|00014fe0| 20 2a 6e 61 6d 65 29 3b | 0a 66 74 70 69 6e 66 6f | *name);|.ftpinfo|
|00014ff0| 20 2a 66 69 6e 64 5f 69 | 6e 66 6f 28 73 74 72 75 | *find_i|nfo(stru|
|00015000| 63 74 20 69 6e 66 6f 5f | 68 65 61 64 65 72 20 2a |ct info_|header *|
|00015010| 69 68 2c 20 62 38 20 2a | 6e 61 6d 65 29 3b 0a 0a |ih, b8 *|name);..|
|00015020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015040| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015050| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015060| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015070| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015080| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015090| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000150a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000150b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000150c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000150d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000150e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000150f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015100| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015110| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015120| 00 00 00 a4 00 00 00 a3 | 00 00 00 a2 00 00 00 a1 |........|........|
|00015130| 00 00 00 a0 00 00 00 9f | 00 00 00 00 00 00 00 00 |........|........|
|00015140| 00 00 00 00 00 00 0b c1 | 00 00 00 00 00 00 00 00 |........|........|
|00015150| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015160| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015170| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015180| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015190| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000151a0| 00 00 00 00 00 00 19 98 | 00 00 03 ed 00 00 02 58 |........|.......X|
|000151b0| 09 66 74 70 69 6e 66 6f | 2e 63 00 00 00 00 00 00 |.ftpinfo|.c......|
|000151c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000151d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000151e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000151f0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00015200| 00 00 00 02 00 00 00 a9 | 00 00 00 03 00 00 00 00 |........|........|
|00015210| 00 00 00 aa 65 ce f6 ca | 00 00 00 00 00 00 00 00 |....e...|........|
|00015220| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015230| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015240| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015250| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015260| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015270| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015280| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015290| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000152a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000152b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000152c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000152d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000152e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000152f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015300| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015310| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015320| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 ac |........|........|
|00015330| 00 00 00 ab 00 00 00 aa | 00 00 00 00 00 00 00 00 |........|........|
|00015340| 00 00 00 00 00 00 05 96 | 00 00 00 00 00 00 00 00 |........|........|
|00015350| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015360| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015370| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015380| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015390| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000153a0| 00 00 00 00 00 00 1a 14 | 00 00 04 ff 00 00 08 34 |........|.......4|
|000153b0| 09 67 6c 6f 62 61 6c 73 | 2e 68 00 00 00 00 00 00 |.globals|.h......|
|000153c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000153d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000153e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000153f0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00015400| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|00015410| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|00015420| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|00015430| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|00015440| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|00015450| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|00015460| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|00015470| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|00015480| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|00015490| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|000154a0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|000154b0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|000154c0| 23 69 66 64 65 66 20 44 | 45 43 4c 41 52 45 5f 47 |#ifdef D|ECLARE_G|
|000154d0| 4c 4f 42 41 4c 53 5f 48 | 45 52 45 0a 23 64 65 66 |LOBALS_H|ERE.#def|
|000154e0| 69 6e 65 20 67 6c 6f 62 | 61 6c 0a 23 65 6c 73 65 |ine glob|al.#else|
|000154f0| 0a 23 64 65 66 69 6e 65 | 20 67 6c 6f 62 61 6c 20 |.#define| global |
|00015500| 65 78 74 65 72 6e 0a 23 | 65 6e 64 69 66 0a 0a 67 |extern.#|endif..g|
|00015510| 6c 6f 62 61 6c 20 73 74 | 72 75 63 74 20 45 78 65 |lobal st|ruct Exe|
|00015520| 63 42 61 73 65 20 2a 53 | 79 73 42 61 73 65 3b 0a |cBase *S|ysBase;.|
|00015530| 67 6c 6f 62 61 6c 20 73 | 74 72 75 63 74 20 44 6f |global s|truct Do|
|00015540| 73 4c 69 62 72 61 72 79 | 20 2a 44 4f 53 42 61 73 |sLibrary| *DOSBas|
|00015550| 65 3b 0a 67 6c 6f 62 61 | 6c 20 73 74 72 75 63 74 |e;.globa|l struct|
|00015560| 20 49 6e 74 75 69 74 69 | 6f 6e 42 61 73 65 20 2a | Intuiti|onBase *|
|00015570| 49 6e 74 75 69 74 69 6f | 6e 42 61 73 65 3b 0a 67 |Intuitio|nBase;.g|
|00015580| 6c 6f 62 61 6c 20 73 74 | 72 75 63 74 20 47 66 78 |lobal st|ruct Gfx|
|00015590| 42 61 73 65 20 2a 47 66 | 78 42 61 73 65 3b 0a 67 |Base *Gf|xBase;.g|
|000155a0| 6c 6f 62 61 6c 20 73 74 | 72 75 63 74 20 4c 69 62 |lobal st|ruct Lib|
|000155b0| 72 61 72 79 20 2a 47 61 | 64 54 6f 6f 6c 73 42 61 |rary *Ga|dToolsBa|
|000155c0| 73 65 3b 0a 67 6c 6f 62 | 61 6c 20 73 74 72 75 63 |se;.glob|al struc|
|000155d0| 74 20 4c 69 62 72 61 72 | 79 20 2a 49 63 6f 6e 42 |t Librar|y *IconB|
|000155e0| 61 73 65 3b 0a 67 6c 6f | 62 61 6c 20 73 74 72 75 |ase;.glo|bal stru|
|000155f0| 63 74 20 4c 69 62 72 61 | 72 79 20 2a 4c 6f 63 61 |ct Libra|ry *Loca|
|00015600| 6c 65 42 61 73 65 3b 0a | 0a 67 6c 6f 62 61 6c 20 |leBase;.|.global |
|00015610| 73 74 72 75 63 74 20 4d | 73 67 50 6f 72 74 20 2a |struct M|sgPort *|
|00015620| 66 74 70 5f 70 6f 72 74 | 2c 20 2a 74 63 70 2c 20 |ftp_port|, *tcp, |
|00015630| 2a 73 74 61 72 74 75 70 | 5f 73 79 6e 63 2c 20 2a |*startup|_sync, *|
|00015640| 62 72 6f 6b 65 72 5f 70 | 6f 72 74 3b 0a 67 6c 6f |broker_p|ort;.glo|
|00015650| 62 61 6c 20 73 74 72 75 | 63 74 20 44 6f 73 4c 69 |bal stru|ct DosLi|
|00015660| 73 74 20 2a 66 74 70 5f | 64 65 76 69 63 65 2c 20 |st *ftp_|device, |
|00015670| 2a 66 74 70 5f 76 6f 6c | 75 6d 65 3b 0a 0a 67 6c |*ftp_vol|ume;..gl|
|00015680| 6f 62 61 6c 20 42 50 54 | 52 20 66 74 70 64 69 72 |obal BPT|R ftpdir|
|00015690| 5f 6c 6f 63 6b 2c 20 66 | 74 70 68 6f 73 74 73 5f |_lock, f|tphosts_|
|000156a0| 6c 6f 63 6b 3b 0a 0a 67 | 6c 6f 62 61 6c 20 73 74 |lock;..g|lobal st|
|000156b0| 72 75 63 74 20 74 63 70 | 6d 20 2a 70 72 69 6d 65 |ruct tcp|m *prime|
|000156c0| 3b 09 2f 2a 20 74 68 65 | 20 6e 75 6d 65 72 6f 20 |;./* the| numero |
|000156d0| 75 6e 6f 20 74 63 70 20 | 6d 65 73 73 61 67 65 20 |uno tcp |message |
|000156e0| 2a 2f 0a 0a 67 6c 6f 62 | 61 6c 20 62 38 20 75 6e |*/..glob|al b8 un|
|000156f0| 69 71 75 65 5f 62 75 66 | 66 65 72 5b 32 35 5d 3b |ique_buf|fer[25];|
|00015700| 0a 0a 67 6c 6f 62 61 6c | 20 62 31 36 20 66 74 70 |..global| b16 ftp|
|00015710| 5f 70 6f 72 74 5f 6e 75 | 6d 62 65 72 3b 0a 67 6c |_port_nu|mber;.gl|
|00015720| 6f 62 61 6c 20 73 74 72 | 75 63 74 20 73 69 74 65 |obal str|uct site|
|00015730| 5f 73 20 2a 73 69 74 65 | 73 3b 0a 0a 67 6c 6f 62 |_s *site|s;..glob|
|00015740| 61 6c 20 62 38 20 2a 61 | 6e 6f 6e 5f 6c 6f 67 69 |al b8 *a|non_logi|
|00015750| 6e 3b 0a 0a 67 6c 6f 62 | 61 6c 20 73 74 72 75 63 |n;..glob|al struc|
|00015760| 74 20 4d 65 73 73 61 67 | 65 20 2a 6c 6f 63 61 6c |t Messag|e *local|
|00015770| 5f 6d 73 67 3b 0a 67 6c | 6f 62 61 6c 20 73 74 72 |_msg;.gl|obal str|
|00015780| 75 63 74 20 4d 73 67 50 | 6f 72 74 20 2a 6c 6f 63 |uct MsgP|ort *loc|
|00015790| 61 6c 5f 70 6f 72 74 3b | 0a 0a 67 6c 6f 62 61 6c |al_port;|..global|
|000157a0| 20 73 74 72 75 63 74 20 | 67 69 6d 20 2a 63 61 6e | struct |gim *can|
|000157b0| 63 65 6c 5f 67 69 6d 2c | 20 2a 61 62 6f 72 74 5f |cel_gim,| *abort_|
|000157c0| 67 69 6d 2c 20 2a 64 69 | 73 63 6f 6e 6e 65 63 74 |gim, *di|sconnect|
|000157d0| 5f 67 69 6d 2c 20 2a 6c | 6f 67 69 6e 5f 67 69 6d |_gim, *l|ogin_gim|
|000157e0| 3b 0a 0a 67 6c 6f 62 61 | 6c 20 73 74 72 75 63 74 |;..globa|l struct|
|000157f0| 20 73 74 61 74 75 73 5f | 6d 65 73 73 61 67 65 20 | status_|message |
|00015800| 2a 73 74 61 74 75 73 5f | 6d 65 73 73 3b 0a 67 6c |*status_|mess;.gl|
|00015810| 6f 62 61 6c 20 73 74 72 | 75 63 74 20 4d 73 67 50 |obal str|uct MsgP|
|00015820| 6f 72 74 20 2a 73 74 61 | 74 75 73 5f 63 6f 6e 74 |ort *sta|tus_cont|
|00015830| 72 6f 6c 2c 20 2a 73 74 | 61 74 75 73 5f 70 6f 72 |rol, *st|atus_por|
|00015840| 74 3b 0a 0a 67 6c 6f 62 | 61 6c 20 62 33 32 20 64 |t;..glob|al b32 d|
|00015850| 61 72 6b 70 65 6e 2c 20 | 6c 69 67 68 74 70 65 6e |arkpen, |lightpen|
|00015860| 2c 20 74 65 78 74 70 65 | 6e 2c 20 66 69 6c 6c 70 |, textpe|n, fillp|
|00015870| 65 6e 3b 0a 0a 67 6c 6f | 62 61 6c 20 73 74 72 75 |en;..glo|bal stru|
|00015880| 63 74 20 6d 79 5f 6c 6f | 63 6b 20 2a 6f 72 70 68 |ct my_lo|ck *orph|
|00015890| 61 6e 65 64 5f 6c 6f 63 | 6b 73 3b 0a 0a 67 6c 6f |aned_loc|ks;..glo|
|000158a0| 62 61 6c 20 62 31 36 20 | 79 65 61 72 3b 0a 0a 67 |bal b16 |year;..g|
|000158b0| 6c 6f 62 61 6c 20 73 74 | 72 75 63 74 20 4c 6f 63 |lobal st|ruct Loc|
|000158c0| 61 6c 65 20 2a 6d 79 5f | 6c 6f 63 61 6c 65 3b 0a |ale *my_|locale;.|
|000158d0| 67 6c 6f 62 61 6c 20 73 | 74 72 75 63 74 20 43 61 |global s|truct Ca|
|000158e0| 74 61 6c 6f 67 20 2a 63 | 61 74 3b 0a 0a 67 6c 6f |talog *c|at;..glo|
|000158f0| 62 61 6c 20 62 38 20 2a | 76 6f 6c 75 6d 65 5f 6e |bal b8 *|volume_n|
|00015900| 61 6d 65 3b 0a 0a 23 64 | 65 66 69 6e 65 20 56 45 |ame;..#d|efine VE|
|00015910| 52 53 49 4f 4e 20 22 31 | 22 0a 23 64 65 66 69 6e |RSION "1|".#defin|
|00015920| 65 20 52 45 56 49 53 49 | 4f 4e 20 22 30 22 0a 0a |e REVISI|ON "0"..|
|00015930| 23 69 66 64 65 66 20 44 | 45 43 4c 41 52 45 5f 47 |#ifdef D|ECLARE_G|
|00015940| 4c 4f 42 41 4c 53 5f 48 | 45 52 45 0a 62 38 20 2a |LOBALS_H|ERE.b8 *|
|00015950| 76 65 72 3d 22 24 56 45 | 52 3a 20 46 54 50 4d 6f |ver="$VE|R: FTPMo|
|00015960| 75 6e 74 20 22 20 56 45 | 52 53 49 4f 4e 20 22 2e |unt " VE|RSION ".|
|00015970| 22 20 52 45 56 49 53 49 | 4f 4e 20 22 20 28 22 20 |" REVISI|ON " (" |
|00015980| 5f 5f 44 41 54 45 5f 5f | 20 22 29 22 3b 0a 23 65 |__DATE__| ")";.#e|
|00015990| 6e 64 69 66 0a 0a 00 00 | 00 00 00 00 00 00 00 00 |ndif....|........|
|000159a0| 00 00 00 00 00 00 1a f9 | 00 00 04 15 00 00 08 b7 |........|........|
|000159b0| 0a 4d 41 53 68 61 72 65 | 5f 36 34 00 00 00 00 00 |.MAShare|_64.....|
|000159c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000159d0| 00 00 00 00 00 00 00 00 | 00 00 1a f9 00 00 04 15 |........|........|
|000159e0| 00 00 09 1d 00 00 1a f9 | 00 00 03 fa 00 00 01 25 |........|.......%|
|000159f0| 00 00 00 00 00 00 00 00 | 00 00 03 71 00 00 00 01 |........|...q....|
|00015a00| 00 00 00 02 00 00 00 ad | 00 00 00 17 00 00 00 00 |........|........|
|00015a10| 00 00 00 ae 20 2d c1 9e | 00 00 00 00 00 00 00 00 |.... -..|........|
|00015a20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015a30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015a40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015a50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015a60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015a70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015a80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015a90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015aa0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015ab0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015ac0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015ad0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 c4 |........|........|
|00015ae0| 00 00 00 c3 00 00 00 c2 | 00 00 00 c1 00 00 00 c0 |........|........|
|00015af0| 00 00 00 bf 00 00 00 be | 00 00 00 bd 00 00 00 bc |........|........|
|00015b00| 00 00 00 bb 00 00 00 ba | 00 00 00 b9 00 00 00 b8 |........|........|
|00015b10| 00 00 00 b7 00 00 00 b6 | 00 00 00 b5 00 00 00 b4 |........|........|
|00015b20| 00 00 00 b3 00 00 00 b2 | 00 00 00 b1 00 00 00 b0 |........|........|
|00015b30| 00 00 00 af 00 00 00 ae | 00 00 00 00 00 00 00 00 |........|........|
|00015b40| 00 00 00 00 00 00 2c 60 | 00 00 00 00 00 00 00 00 |......,`|........|
|00015b50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015b60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015b70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015b80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015b90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015ba0| 00 00 00 00 00 00 19 98 | 00 00 03 a8 00 00 0a f0 |........|........|
|00015bb0| 08 6c 69 73 74 65 6e 2e | 63 00 00 00 00 00 00 00 |.listen.|c.......|
|00015bc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015bd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015be0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00015bf0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00015c00| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|00015c10| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|00015c20| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|00015c30| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|00015c40| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|00015c50| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|00015c60| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|00015c70| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|00015c80| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|00015c90| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|00015ca0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|00015cb0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|00015cc0| 23 69 6e 63 6c 75 64 65 | 20 3c 65 78 65 63 2f 74 |#include| <exec/t|
|00015cd0| 79 70 65 73 2e 68 3e 0a | 23 69 6e 63 6c 75 64 65 |ypes.h>.|#include|
|00015ce0| 20 3c 65 78 65 63 2f 6d | 65 6d 6f 72 79 2e 68 3e | <exec/m|emory.h>|
|00015cf0| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 65 78 65 63 2f |.#includ|e <exec/|
|00015d00| 61 6c 65 72 74 73 2e 68 | 3e 0a 0a 23 69 6e 63 6c |alerts.h|>..#incl|
|00015d10| 75 64 65 20 3c 64 6f 73 | 2f 64 6f 73 2e 68 3e 0a |ude <dos|/dos.h>.|
|00015d20| 23 69 6e 63 6c 75 64 65 | 20 3c 64 6f 73 2f 64 6f |#include| <dos/do|
|00015d30| 73 65 78 74 65 6e 73 2e | 68 3e 0a 23 69 6e 63 6c |sextens.|h>.#incl|
|00015d40| 75 64 65 20 3c 64 6f 73 | 2f 64 6f 73 74 61 67 73 |ude <dos|/dostags|
|00015d50| 2e 68 3e 0a 0a 23 69 6e | 63 6c 75 64 65 20 3c 69 |.h>..#in|clude <i|
|00015d60| 6e 74 75 69 74 69 6f 6e | 2f 69 6e 74 75 69 74 69 |ntuition|/intuiti|
|00015d70| 6f 6e 2e 68 3e 0a 0a 23 | 69 6e 63 6c 75 64 65 20 |on.h>..#|include |
|00015d80| 3c 6c 69 62 72 61 72 69 | 65 73 2f 63 6f 6d 6d 6f |<librari|es/commo|
|00015d90| 64 69 74 69 65 73 2e 68 | 3e 0a 0a 23 69 6e 63 6c |dities.h|>..#incl|
|00015da0| 75 64 65 20 3c 70 72 6f | 74 6f 2f 65 78 65 63 2e |ude <pro|to/exec.|
|00015db0| 68 3e 0a 23 69 6e 63 6c | 75 64 65 20 3c 70 72 6f |h>.#incl|ude <pro|
|00015dc0| 74 6f 2f 64 6f 73 2e 68 | 3e 0a 23 69 6e 63 6c 75 |to/dos.h|>.#inclu|
|00015dd0| 64 65 20 3c 70 72 6f 74 | 6f 2f 63 6f 6d 6d 6f 64 |de <prot|o/commod|
|00015de0| 69 74 69 65 73 2e 68 3e | 0a 0a 23 69 6e 63 6c 75 |ities.h>|..#inclu|
|00015df0| 64 65 20 3c 73 74 64 69 | 6f 2e 68 3e 0a 23 69 6e |de <stdi|o.h>.#in|
|00015e00| 63 6c 75 64 65 20 3c 73 | 74 64 6c 69 62 2e 68 3e |clude <s|tdlib.h>|
|00015e10| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 73 74 72 69 6e |.#includ|e <strin|
|00015e20| 67 2e 68 3e 0a 0a 23 69 | 6e 63 6c 75 64 65 20 22 |g.h>..#i|nclude "|
|00015e30| 65 76 74 79 70 65 73 2e | 68 22 0a 23 69 6e 63 6c |evtypes.|h".#incl|
|00015e40| 75 64 65 20 22 76 65 72 | 69 66 79 2e 68 22 0a 23 |ude "ver|ify.h".#|
|00015e50| 69 6e 63 6c 75 64 65 20 | 22 74 63 70 2e 68 22 0a |include |"tcp.h".|
|00015e60| 0a 23 69 6e 63 6c 75 64 | 65 20 22 73 69 74 65 2e |.#includ|e "site.|
|00015e70| 68 22 0a 23 69 6e 63 6c | 75 64 65 20 22 66 74 70 |h".#incl|ude "ftp|
|00015e80| 2e 68 22 0a 23 69 6e 63 | 6c 75 64 65 20 22 73 70 |.h".#inc|lude "sp|
|00015e90| 6c 69 74 2e 68 22 0a 23 | 69 6e 63 6c 75 64 65 20 |lit.h".#|include |
|00015ea0| 22 72 65 71 75 65 73 74 | 2e 68 22 0a 0a 23 69 6e |"request|.h"..#in|
|00015eb0| 63 6c 75 64 65 20 22 67 | 6c 6f 62 61 6c 73 2e 68 |clude "g|lobals.h|
|00015ec0| 22 0a 0a 73 74 72 75 63 | 74 20 44 6f 73 50 61 63 |"..struc|t DosPac|
|00015ed0| 6b 65 74 20 2a 66 68 5f | 6c 69 73 74 65 6e 28 76 |ket *fh_|listen(v|
|00015ee0| 6f 69 64 29 0a 7b 0a 09 | 73 74 72 75 63 74 20 44 |oid).{..|struct D|
|00015ef0| 6f 73 50 61 63 6b 65 74 | 20 2a 64 70 3b 0a 09 73 |osPacket| *dp;..s|
|00015f00| 74 72 75 63 74 20 4d 73 | 67 50 6f 72 74 20 2a 72 |truct Ms|gPort *r|
|00015f10| 65 70 6c 79 3b 0a 09 73 | 74 72 75 63 74 20 4d 65 |eply;..s|truct Me|
|00015f20| 73 73 61 67 65 20 2a 6d | 73 67 3b 0a 09 73 74 72 |ssage *m|sg;..str|
|00015f30| 75 63 74 20 49 6e 66 6f | 44 61 74 61 20 2a 69 64 |uct Info|Data *id|
|00015f40| 3b 0a 09 73 74 72 75 63 | 74 20 46 69 6c 65 48 61 |;..struc|t FileHa|
|00015f50| 6e 64 6c 65 20 2a 66 68 | 3b 0a 09 66 69 6c 65 5f |ndle *fh|;..file_|
|00015f60| 69 6e 66 6f 20 2a 66 69 | 3b 0a 09 62 33 32 20 73 |info *fi|;..b32 s|
|00015f70| 69 67 6e 61 6c 73 3b 0a | 09 73 70 6c 69 74 20 73 |ignals;.|.split s|
|00015f80| 64 2c 20 73 64 32 3b 0a | 09 6c 6f 63 6b 20 2a 6d |d, sd2;.|.lock *m|
|00015f90| 79 5f 6c 6f 63 6b 2c 20 | 2a 6c 6f 63 6b 32 3b 0a |y_lock, |*lock2;.|
|00015fa0| 09 73 69 74 65 20 2a 6d | 79 5f 73 69 74 65 3b 0a |.site *m|y_site;.|
|00015fb0| 09 73 74 61 74 75 73 5f | 6d 65 73 73 61 67 65 20 |.status_|message |
|00015fc0| 2a 73 6d 3b 0a 09 62 38 | 20 2a 73 2c 20 2a 6e 61 |*sm;..b8| *s, *na|
|00015fd0| 6d 65 3b 0a 09 0a 09 62 | 33 32 20 70 61 73 73 5f |me;....b|32 pass_|
|00015fe0| 6b 65 79 20 3d 20 30 3b | 0a 09 62 6f 6f 6c 65 61 |key = 0;|..boolea|
|00015ff0| 6e 20 77 72 69 74 65 5f | 70 72 6f 74 65 63 74 20 |n write_|protect |
|00016000| 3d 20 66 61 6c 73 65 2c | 20 64 69 73 61 62 6c 65 |= false,| disable|
|00016010| 64 20 3d 20 66 61 6c 73 | 65 3b 0a 09 0a 09 73 69 |d = fals|e;....si|
|00016020| 67 6e 61 6c 73 20 3d 20 | 28 31 20 3c 3c 20 66 74 |gnals = |(1 << ft|
|00016030| 70 5f 70 6f 72 74 2d 3e | 6d 70 5f 53 69 67 42 69 |p_port->|mp_SigBi|
|00016040| 74 29 20 7c 20 28 31 20 | 3c 3c 20 73 74 61 74 75 |t) | (1 |<< statu|
|00016050| 73 5f 63 6f 6e 74 72 6f | 6c 2d 3e 6d 70 5f 53 69 |s_contro|l->mp_Si|
|00016060| 67 42 69 74 29 3b 0a 09 | 0a 09 77 68 69 6c 65 20 |gBit);..|..while |
|00016070| 28 31 29 20 7b 0a 09 09 | 57 61 69 74 28 73 69 67 |(1) {...|Wait(sig|
|00016080| 6e 61 6c 73 29 3b 0a 09 | 09 0a 09 09 77 68 69 6c |nals);..|....whil|
|00016090| 65 20 28 73 6d 20 3d 20 | 28 73 74 61 74 75 73 5f |e (sm = |(status_|
|000160a0| 6d 65 73 73 61 67 65 20 | 2a 29 47 65 74 4d 73 67 |message |*)GetMsg|
|000160b0| 28 73 74 61 74 75 73 5f | 63 6f 6e 74 72 6f 6c 29 |(status_|control)|
|000160c0| 29 20 7b 0a 09 09 09 76 | 65 72 69 66 79 28 73 6d |) {....v|erify(sm|
|000160d0| 2c 20 56 5f 73 74 61 74 | 75 73 5f 6d 65 73 73 61 |, V_stat|us_messa|
|000160e0| 67 65 29 3b 0a 09 09 09 | 0a 09 09 09 73 77 69 74 |ge);....|....swit|
|000160f0| 63 68 20 28 73 6d 2d 3e | 63 6f 6d 6d 61 6e 64 29 |ch (sm->|command)|
|00016100| 20 7b 0a 09 09 09 63 61 | 73 65 20 53 4d 5f 4b 49 | {....ca|se SM_KI|
|00016110| 4c 4c 3a 0a 09 09 09 09 | 52 65 70 6c 79 4d 73 67 |LL:.....|ReplyMsg|
|00016120| 28 26 73 6d 2d 3e 68 65 | 61 64 65 72 29 3b 0a 09 |(&sm->he|ader);..|
|00016130| 09 09 09 72 65 74 75 72 | 6e 20 6e 69 6c 3b 0a 09 |...retur|n nil;..|
|00016140| 09 09 63 61 73 65 20 53 | 4d 5f 53 55 53 50 45 4e |..case S|M_SUSPEN|
|00016150| 44 3a 0a 09 09 09 09 64 | 69 73 61 62 6c 65 64 20 |D:.....d|isabled |
|00016160| 3d 20 74 72 75 65 3b 0a | 09 09 09 09 0a 09 09 09 |= true;.|........|
|00016170| 09 73 75 73 70 65 6e 64 | 5f 73 69 74 65 73 28 29 |.suspend|_sites()|
|00016180| 3b 0a 09 09 09 09 0a 09 | 09 09 09 62 72 65 61 6b |;.......|...break|
|00016190| 3b 0a 09 09 09 63 61 73 | 65 20 53 4d 5f 52 45 53 |;....cas|e SM_RES|
|000161a0| 55 4d 45 3a 0a 09 09 09 | 09 64 69 73 61 62 6c 65 |UME:....|.disable|
|000161b0| 64 20 3d 20 66 61 6c 73 | 65 3b 0a 09 09 09 09 62 |d = fals|e;.....b|
|000161c0| 72 65 61 6b 3b 0a 09 09 | 09 7d 0a 09 09 09 52 65 |reak;...|.}....Re|
|000161d0| 70 6c 79 4d 73 67 28 26 | 73 6d 2d 3e 68 65 61 64 |plyMsg(&|sm->head|
|000161e0| 65 72 29 3b 0a 09 09 7d | 0a 09 09 0a 09 09 77 68 |er);...}|......wh|
|000161f0| 69 6c 65 20 28 6d 73 67 | 20 3d 20 47 65 74 4d 73 |ile (msg| = GetMs|
|00016200| 67 28 66 74 70 5f 70 6f | 72 74 29 29 20 7b 0a 09 |g(ftp_po|rt)) {..|
|00016210| 09 09 64 70 20 3d 20 28 | 73 74 72 75 63 74 20 44 |..dp = (|struct D|
|00016220| 6f 73 50 61 63 6b 65 74 | 20 2a 29 6d 73 67 2d 3e |osPacket| *)msg->|
|00016230| 6d 6e 5f 4e 6f 64 65 2e | 6c 6e 5f 4e 61 6d 65 3b |mn_Node.|ln_Name;|
|00016240| 0a 09 09 09 0a 09 09 09 | 72 65 70 6c 79 20 3d 20 |........|reply = |
|00016250| 64 70 2d 3e 64 70 5f 50 | 6f 72 74 3b 0a 09 09 09 |dp->dp_P|ort;....|
|00016260| 0a 09 09 09 74 72 75 74 | 68 28 64 70 2d 3e 64 70 |....trut|h(dp->dp|
|00016270| 5f 4c 69 6e 6b 20 3d 3d | 20 6d 73 67 29 3b 0a 09 |_Link ==| msg);..|
|00016280| 09 09 0a 09 09 09 69 66 | 20 28 64 69 73 61 62 6c |......if| (disabl|
|00016290| 65 64 20 26 26 20 64 70 | 2d 3e 64 70 5f 54 79 70 |ed && dp|->dp_Typ|
|000162a0| 65 20 21 3d 20 61 63 74 | 69 6f 6e 5f 49 44 4c 45 |e != act|ion_IDLE|
|000162b0| 29 20 7b 0a 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 |) {.....|dp->dp_R|
|000162c0| 65 73 31 20 3d 20 44 4f | 53 46 41 4c 53 45 3b 0a |es1 = DO|SFALSE;.|
|000162d0| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 32 20 |....dp->|dp_Res2 |
|000162e0| 3d 20 45 52 52 4f 52 5f | 44 45 56 49 43 45 5f 4e |= ERROR_|DEVICE_N|
|000162f0| 4f 54 5f 4d 4f 55 4e 54 | 45 44 3b 0a 09 09 09 09 |OT_MOUNT|ED;.....|
|00016300| 0a 09 09 09 09 64 70 2d | 3e 64 70 5f 50 6f 72 74 |.....dp-|>dp_Port|
|00016310| 20 3d 20 66 74 70 5f 70 | 6f 72 74 3b 0a 09 09 09 | = ftp_p|ort;....|
|00016320| 09 50 75 74 4d 73 67 28 | 72 65 70 6c 79 2c 20 64 |.PutMsg(|reply, d|
|00016330| 70 2d 3e 64 70 5f 4c 69 | 6e 6b 29 3b 0a 09 09 09 |p->dp_Li|nk);....|
|00016340| 09 63 6f 6e 74 69 6e 75 | 65 3b 0a 09 09 09 7d 0a |.continu|e;....}.|
|00016350| 09 09 09 0a 09 09 09 73 | 77 69 74 63 68 20 28 64 |.......s|witch (d|
|00016360| 70 2d 3e 64 70 5f 54 79 | 70 65 29 20 7b 0a 09 09 |p->dp_Ty|pe) {...|
|00016370| 09 63 61 73 65 20 41 43 | 54 49 4f 4e 5f 4e 49 4c |.case AC|TION_NIL|
|00016380| 3a 0a 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |:.....dp|->dp_Res|
|00016390| 31 20 3d 20 44 4f 53 54 | 52 55 45 3b 0a 09 09 09 |1 = DOST|RUE;....|
|000163a0| 09 64 70 2d 3e 64 70 5f | 52 65 73 32 20 3d 20 30 |.dp->dp_|Res2 = 0|
|000163b0| 3b 0a 09 09 09 09 62 72 | 65 61 6b 3b 0a 09 09 09 |;.....br|eak;....|
|000163c0| 63 61 73 65 20 41 43 54 | 49 4f 4e 5f 44 49 45 3a |case ACT|ION_DIE:|
|000163d0| 0a 09 09 09 09 72 65 74 | 75 72 6e 20 64 70 3b 0a |.....ret|urn dp;.|
|000163e0| 09 09 09 63 61 73 65 20 | 41 43 54 49 4f 4e 5f 4c |...case |ACTION_L|
|000163f0| 4f 43 41 54 45 5f 4f 42 | 4a 45 43 54 3a 09 2f 2a |OCATE_OB|JECT:./*|
|00016400| 20 4c 6f 63 6b 28 29 20 | 2a 2f 0a 09 09 09 09 69 | Lock() |*/.....i|
|00016410| 66 20 28 64 70 2d 3e 64 | 70 5f 41 72 67 33 20 21 |f (dp->d|p_Arg3 !|
|00016420| 3d 20 53 48 41 52 45 44 | 5f 4c 4f 43 4b 20 26 26 |= SHARED|_LOCK &&|
|00016430| 20 64 70 2d 3e 64 70 5f | 41 72 67 33 20 21 3d 20 | dp->dp_|Arg3 != |
|00016440| 45 58 43 4c 55 53 49 56 | 45 5f 4c 4f 43 4b 29 20 |EXCLUSIV|E_LOCK) |
|00016450| 7b 0a 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |{......d|p->dp_Re|
|00016460| 73 31 20 3d 20 30 3b 0a | 09 09 09 09 09 64 70 2d |s1 = 0;.|.....dp-|
|00016470| 3e 64 70 5f 52 65 73 32 | 20 3d 20 45 52 52 4f 52 |>dp_Res2| = ERROR|
|00016480| 5f 42 41 44 5f 4e 55 4d | 42 45 52 3b 0a 09 09 09 |_BAD_NUM|BER;....|
|00016490| 09 09 62 72 65 61 6b 3b | 0a 09 09 09 09 7d 0a 09 |..break;|.....}..|
|000164a0| 09 09 09 0a 09 09 09 09 | 69 66 20 28 21 73 70 6c |........|if (!spl|
|000164b0| 69 74 5f 64 61 74 61 28 | 28 6c 6f 63 6b 20 2a 29 |it_data(|(lock *)|
|000164c0| 28 64 70 2d 3e 64 70 5f | 41 72 67 31 20 3c 3c 20 |(dp->dp_|Arg1 << |
|000164d0| 32 29 2c 20 0a 09 09 09 | 09 09 09 09 28 62 38 20 |2), ....|....(b8 |
|000164e0| 2a 29 28 64 70 2d 3e 64 | 70 5f 41 72 67 32 20 3c |*)(dp->d|p_Arg2 <|
|000164f0| 3c 20 32 29 2c 20 26 73 | 64 29 29 20 7b 0a 09 09 |< 2), &s|d)) {...|
|00016500| 09 09 09 2f 2a 20 6d 69 | 67 68 74 20 62 65 20 45 |.../* mi|ght be E|
|00016510| 52 52 4f 52 5f 4e 4f 5f | 46 52 45 45 5f 53 54 4f |RROR_NO_|FREE_STO|
|00016520| 52 45 2c 20 62 75 74 20 | 68 65 79 20 2a 2f 0a 09 |RE, but |hey */..|
|00016530| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |....dp->|dp_Res1 |
|00016540| 3d 20 30 3b 0a 09 09 09 | 09 09 64 70 2d 3e 64 70 |= 0;....|..dp->dp|
|00016550| 5f 52 65 73 32 20 3d 20 | 45 52 52 4f 52 5f 49 4e |_Res2 = |ERROR_IN|
|00016560| 56 41 4c 49 44 5f 43 4f | 4d 50 4f 4e 45 4e 54 5f |VALID_CO|MPONENT_|
|00016570| 4e 41 4d 45 3b 0a 09 09 | 09 09 09 62 72 65 61 6b |NAME;...|...break|
|00016580| 3b 0a 09 09 09 09 7d 0a | 09 09 09 09 0a 09 09 09 |;.....}.|........|
|00016590| 09 50 75 74 4d 73 67 28 | 73 64 2e 70 6f 72 74 2c |.PutMsg(|sd.port,|
|000165a0| 20 64 70 2d 3e 64 70 5f | 4c 69 6e 6b 29 3b 0a 09 | dp->dp_|Link);..|
|000165b0| 09 09 09 0a 09 09 09 09 | 65 6e 64 5f 73 70 6c 69 |........|end_spli|
|000165c0| 74 28 26 73 64 29 3b 0a | 0a 09 09 09 09 63 6f 6e |t(&sd);.|.....con|
|000165d0| 74 69 6e 75 65 3b 0a 09 | 09 09 63 61 73 65 20 41 |tinue;..|..case A|
|000165e0| 43 54 49 4f 4e 5f 52 45 | 4e 41 4d 45 5f 44 49 53 |CTION_RE|NAME_DIS|
|000165f0| 4b 3a 09 2f 2a 20 52 65 | 6c 61 62 65 6c 28 29 20 |K:./* Re|label() |
|00016600| 2a 2f 0a 09 09 09 09 6e | 61 6d 65 20 3d 20 28 62 |*/.....n|ame = (b|
|00016610| 38 20 2a 29 28 64 70 2d | 3e 64 70 5f 41 72 67 31 |8 *)(dp-|>dp_Arg1|
|00016620| 20 3c 3c 20 32 29 3b 0a | 09 09 09 09 73 20 3d 20 | << 2);.|....s = |
|00016630| 28 62 38 20 2a 29 61 6c | 6c 6f 63 61 74 65 28 6e |(b8 *)al|locate(n|
|00016640| 61 6d 65 5b 30 5d 20 2b | 20 32 2c 20 56 5f 62 73 |ame[0] +| 2, V_bs|
|00016650| 74 72 29 3b 0a 09 09 09 | 09 69 66 20 28 21 73 29 |tr);....|.if (!s)|
|00016660| 20 7b 0a 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 | {......|dp->dp_R|
|00016670| 65 73 31 20 3d 20 44 4f | 53 46 41 4c 53 45 3b 0a |es1 = DO|SFALSE;.|
|00016680| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 32 |.....dp-|>dp_Res2|
|00016690| 20 3d 20 45 52 52 4f 52 | 5f 4e 4f 5f 46 52 45 45 | = ERROR|_NO_FREE|
|000166a0| 5f 53 54 4f 52 45 3b 0a | 09 09 09 09 09 62 72 65 |_STORE;.|.....bre|
|000166b0| 61 6b 3b 0a 09 09 09 09 | 7d 0a 09 09 09 09 0a 09 |ak;.....|}.......|
|000166c0| 09 09 09 73 5b 30 5d 20 | 3d 20 6e 61 6d 65 5b 30 |...s[0] |= name[0|
|000166d0| 5d 3b 0a 09 09 09 09 6d | 65 6d 63 70 79 28 26 73 |];.....m|emcpy(&s|
|000166e0| 5b 31 5d 2c 20 26 6e 61 | 6d 65 5b 31 5d 2c 20 73 |[1], &na|me[1], s|
|000166f0| 5b 30 5d 29 3b 0a 09 09 | 09 09 73 5b 31 20 2b 20 |[0]);...|..s[1 + |
|00016700| 73 5b 30 5d 5d 20 3d 20 | 30 3b 0a 09 09 09 09 0a |s[0]] = |0;......|
|00016710| 09 09 09 09 2f 2a 20 70 | 65 72 68 61 70 73 20 73 |..../* p|erhaps s|
|00016720| 68 6f 75 6c 64 20 64 6f | 20 73 6f 6d 65 20 6d 75 |hould do| some mu|
|00016730| 74 75 61 6c 20 65 78 63 | 6c 75 73 69 6f 6e 20 68 |tual exc|lusion h|
|00016740| 65 72 65 20 2e 2e 2e 20 | 2a 2f 0a 09 09 09 09 66 |ere ... |*/.....f|
|00016750| 74 70 5f 76 6f 6c 75 6d | 65 2d 3e 64 6f 6c 5f 4e |tp_volum|e->dol_N|
|00016760| 61 6d 65 20 3d 20 28 62 | 33 32 29 73 20 3e 3e 20 |ame = (b|32)s >> |
|00016770| 32 3b 0a 09 09 09 09 0a | 09 09 09 09 64 65 61 6c |2;......|....deal|
|00016780| 6c 6f 63 61 74 65 28 76 | 6f 6c 75 6d 65 5f 6e 61 |locate(v|olume_na|
|00016790| 6d 65 2c 20 56 5f 62 73 | 74 72 29 3b 0a 09 09 09 |me, V_bs|tr);....|
|000167a0| 09 76 6f 6c 75 6d 65 5f | 6e 61 6d 65 20 3d 20 73 |.volume_|name = s|
|000167b0| 3b 0a 09 09 09 09 0a 09 | 09 09 09 64 70 2d 3e 64 |;.......|...dp->d|
|000167c0| 70 5f 52 65 73 31 20 3d | 20 44 4f 53 54 52 55 45 |p_Res1 =| DOSTRUE|
|000167d0| 3b 0a 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |;.....dp|->dp_Res|
|000167e0| 32 20 3d 20 30 3b 0a 09 | 09 09 09 0a 09 09 09 09 |2 = 0;..|........|
|000167f0| 62 72 65 61 6b 3b 0a 09 | 09 09 63 61 73 65 20 41 |break;..|..case A|
|00016800| 43 54 49 4f 4e 5f 46 52 | 45 45 5f 4c 4f 43 4b 3a |CTION_FR|EE_LOCK:|
|00016810| 09 09 2f 2a 20 55 6e 4c | 6f 63 6b 28 29 20 2a 2f |../* UnL|ock() */|
|00016820| 0a 09 09 09 63 61 73 65 | 20 41 43 54 49 4f 4e 5f |....case| ACTION_|
|00016830| 43 4f 50 59 5f 44 49 52 | 3a 09 09 2f 2a 20 44 75 |COPY_DIR|:../* Du|
|00016840| 70 4c 6f 63 6b 28 29 20 | 2a 2f 0a 09 09 09 63 61 |pLock() |*/....ca|
|00016850| 73 65 20 41 43 54 49 4f | 4e 5f 45 58 41 4d 49 4e |se ACTIO|N_EXAMIN|
|00016860| 45 5f 4f 42 4a 45 43 54 | 3a 09 2f 2a 20 45 78 61 |E_OBJECT|:./* Exa|
|00016870| 6d 69 6e 65 28 29 20 2a | 2f 0a 09 09 09 63 61 73 |mine() *|/....cas|
|00016880| 65 20 41 43 54 49 4f 4e | 5f 45 58 41 4d 49 4e 45 |e ACTION|_EXAMINE|
|00016890| 5f 4e 45 58 54 3a 09 2f | 2a 20 45 78 4e 65 78 74 |_NEXT:./|* ExNext|
|000168a0| 28 29 20 2a 2f 0a 09 09 | 09 63 61 73 65 20 41 43 |() */...|.case AC|
|000168b0| 54 49 4f 4e 5f 50 41 52 | 45 4e 54 3a 09 09 2f 2a |TION_PAR|ENT:../*|
|000168c0| 20 50 61 72 65 6e 74 44 | 69 72 28 29 20 2a 2f 0a | ParentD|ir() */.|
|000168d0| 09 09 09 63 61 73 65 20 | 41 43 54 49 4f 4e 5f 53 |...case |ACTION_S|
|000168e0| 45 54 5f 44 41 54 45 3a | 09 09 2f 2a 20 53 65 74 |ET_DATE:|../* Set|
|000168f0| 46 69 6c 65 44 61 74 65 | 28 29 20 2a 2f 0a 09 09 |FileDate|() */...|
|00016900| 09 09 6d 79 5f 6c 6f 63 | 6b 20 3d 20 28 6c 6f 63 |..my_loc|k = (loc|
|00016910| 6b 20 2a 29 28 64 70 2d | 3e 64 70 5f 41 72 67 31 |k *)(dp-|>dp_Arg1|
|00016920| 20 3c 3c 20 32 29 3b 0a | 09 09 09 09 0a 09 09 09 | << 2);.|........|
|00016930| 09 69 66 20 28 21 6d 79 | 5f 6c 6f 63 6b 29 20 7b |.if (!my|_lock) {|
|00016940| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|00016950| 31 20 3d 20 44 4f 53 46 | 41 4c 53 45 3b 0a 09 09 |1 = DOSF|ALSE;...|
|00016960| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 32 20 3d |...dp->d|p_Res2 =|
|00016970| 20 45 52 52 4f 52 5f 49 | 4e 56 41 4c 49 44 5f 4c | ERROR_I|NVALID_L|
|00016980| 4f 43 4b 3b 0a 09 09 09 | 09 09 62 72 65 61 6b 3b |OCK;....|..break;|
|00016990| 0a 09 09 09 09 7d 0a 09 | 09 09 09 0a 09 09 09 09 |.....}..|........|
|000169a0| 76 65 72 69 66 79 28 6d | 79 5f 6c 6f 63 6b 2c 20 |verify(m|y_lock, |
|000169b0| 56 5f 6c 6f 63 6b 29 3b | 0a 09 09 09 09 0a 09 09 |V_lock);|........|
|000169c0| 09 09 50 75 74 4d 73 67 | 28 6d 79 5f 6c 6f 63 6b |..PutMsg|(my_lock|
|000169d0| 2d 3e 70 6f 72 74 2c 20 | 64 70 2d 3e 64 70 5f 4c |->port, |dp->dp_L|
|000169e0| 69 6e 6b 29 3b 0a 09 09 | 09 09 63 6f 6e 74 69 6e |ink);...|..contin|
|000169f0| 75 65 3b 0a 09 09 09 63 | 61 73 65 20 41 43 54 49 |ue;....c|ase ACTI|
|00016a00| 4f 4e 5f 53 45 54 5f 50 | 52 4f 54 45 43 54 3a 0a |ON_SET_P|ROTECT:.|
|00016a10| 09 09 09 63 61 73 65 20 | 41 43 54 49 4f 4e 5f 53 |...case |ACTION_S|
|00016a20| 45 54 5f 43 4f 4d 4d 45 | 4e 54 3a 0a 09 09 09 09 |ET_COMME|NT:.....|
|00016a30| 69 66 20 28 21 73 70 6c | 69 74 5f 64 61 74 61 28 |if (!spl|it_data(|
|00016a40| 28 6c 6f 63 6b 20 2a 29 | 28 64 70 2d 3e 64 70 5f |(lock *)|(dp->dp_|
|00016a50| 41 72 67 32 20 3c 3c 20 | 32 29 2c 0a 09 09 09 09 |Arg2 << |2),.....|
|00016a60| 09 09 09 28 62 38 20 2a | 29 28 64 70 2d 3e 64 70 |...(b8 *|)(dp->dp|
|00016a70| 5f 41 72 67 33 20 3c 3c | 20 32 29 2c 20 26 73 64 |_Arg3 <<| 2), &sd|
|00016a80| 29 29 20 7b 0a 09 09 09 | 09 09 64 70 2d 3e 64 70 |)) {....|..dp->dp|
|00016a90| 5f 52 65 73 31 20 3d 20 | 44 4f 53 46 41 4c 53 45 |_Res1 = |DOSFALSE|
|00016aa0| 3b 0a 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |;......d|p->dp_Re|
|00016ab0| 73 32 20 3d 20 45 52 52 | 4f 52 5f 49 4e 56 41 4c |s2 = ERR|OR_INVAL|
|00016ac0| 49 44 5f 43 4f 4d 50 4f | 4e 45 4e 54 5f 4e 41 4d |ID_COMPO|NENT_NAM|
|00016ad0| 45 3b 0a 09 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |E;......|break;..|
|00016ae0| 09 09 09 7d 0a 09 09 09 | 09 0a 09 09 09 09 50 75 |...}....|......Pu|
|00016af0| 74 4d 73 67 28 73 64 2e | 70 6f 72 74 2c 20 64 70 |tMsg(sd.|port, dp|
|00016b00| 2d 3e 64 70 5f 4c 69 6e | 6b 29 3b 0a 09 09 09 09 |->dp_Lin|k);.....|
|00016b10| 0a 09 09 09 09 65 6e 64 | 5f 73 70 6c 69 74 28 26 |.....end|_split(&|
|00016b20| 73 64 29 3b 0a 09 09 09 | 09 0a 09 09 09 09 63 6f |sd);....|......co|
|00016b30| 6e 74 69 6e 75 65 3b 0a | 09 09 09 63 61 73 65 20 |ntinue;.|...case |
|00016b40| 41 43 54 49 4f 4e 5f 52 | 45 4e 41 4d 45 5f 4f 42 |ACTION_R|ENAME_OB|
|00016b50| 4a 45 43 54 3a 0a 09 09 | 09 09 69 66 20 28 21 73 |JECT:...|..if (!s|
|00016b60| 70 6c 69 74 5f 64 61 74 | 61 28 28 6c 6f 63 6b 20 |plit_dat|a((lock |
|00016b70| 2a 29 28 64 70 2d 3e 64 | 70 5f 41 72 67 31 20 3c |*)(dp->d|p_Arg1 <|
|00016b80| 3c 20 32 29 2c 0a 09 09 | 09 09 09 09 09 28 62 38 |< 2),...|.....(b8|
|00016b90| 20 2a 29 28 64 70 2d 3e | 64 70 5f 41 72 67 32 20 | *)(dp->|dp_Arg2 |
|00016ba0| 3c 3c 20 32 29 2c 20 26 | 73 64 29 29 20 7b 0a 09 |<< 2), &|sd)) {..|
|00016bb0| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |....dp->|dp_Res1 |
|00016bc0| 3d 20 44 4f 53 46 41 4c | 53 45 3b 0a 09 09 09 09 |= DOSFAL|SE;.....|
|00016bd0| 09 64 70 2d 3e 64 70 5f | 52 65 73 32 20 3d 20 45 |.dp->dp_|Res2 = E|
|00016be0| 52 52 4f 52 5f 49 4e 56 | 41 4c 49 44 5f 43 4f 4d |RROR_INV|ALID_COM|
|00016bf0| 50 4f 4e 45 4e 54 5f 4e | 41 4d 45 3b 0a 09 09 09 |PONENT_N|AME;....|
|00016c00| 09 09 62 72 65 61 6b 3b | 0a 09 09 09 09 7d 0a 09 |..break;|.....}..|
|00016c10| 09 09 09 0a 09 09 09 09 | 69 66 20 28 21 73 70 6c |........|if (!spl|
|00016c20| 69 74 5f 64 61 74 61 28 | 28 6c 6f 63 6b 20 2a 29 |it_data(|(lock *)|
|00016c30| 28 64 70 2d 3e 64 70 5f | 41 72 67 33 20 3c 3c 20 |(dp->dp_|Arg3 << |
|00016c40| 32 29 2c 0a 09 09 09 09 | 09 09 09 28 62 38 20 2a |2),.....|...(b8 *|
|00016c50| 29 28 64 70 2d 3e 64 70 | 5f 41 72 67 34 20 3c 3c |)(dp->dp|_Arg4 <<|
|00016c60| 20 32 29 2c 20 26 73 64 | 32 29 29 20 7b 0a 09 09 | 2), &sd|2)) {...|
|00016c70| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 31 20 3d |...dp->d|p_Res1 =|
|00016c80| 20 44 4f 53 46 41 4c 53 | 45 3b 0a 09 09 09 09 09 | DOSFALS|E;......|
|00016c90| 64 70 2d 3e 64 70 5f 52 | 65 73 32 20 3d 20 45 52 |dp->dp_R|es2 = ER|
|00016ca0| 52 4f 52 5f 49 4e 56 41 | 4c 49 44 5f 43 4f 4d 50 |ROR_INVA|LID_COMP|
|00016cb0| 4f 4e 45 4e 54 5f 4e 41 | 4d 45 3b 0a 09 09 09 09 |ONENT_NA|ME;.....|
|00016cc0| 09 0a 09 09 09 09 09 65 | 6e 64 5f 73 70 6c 69 74 |.......e|nd_split|
|00016cd0| 28 26 73 64 29 3b 0a 09 | 09 09 09 09 62 72 65 61 |(&sd);..|....brea|
|00016ce0| 6b 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 0a 09 09 |k;.....}|........|
|00016cf0| 09 09 69 66 20 28 73 64 | 2e 70 6f 72 74 20 3d 3d |..if (sd|.port ==|
|00016d00| 20 6c 6f 63 61 6c 5f 70 | 6f 72 74 20 26 26 0a 09 | local_p|ort &&..|
|00016d10| 09 09 09 09 21 73 64 32 | 2e 70 61 74 68 29 20 7b |....!sd2|.path) {|
|00016d20| 09 2f 2a 20 73 70 65 63 | 69 61 6c 20 63 61 73 65 |./* spec|ial case|
|00016d30| 20 2a 2f 0a 09 09 09 09 | 09 0a 09 09 09 09 09 50 | */.....|.......P|
|00016d40| 75 74 4d 73 67 28 6c 6f | 63 61 6c 5f 70 6f 72 74 |utMsg(lo|cal_port|
|00016d50| 2c 20 64 70 2d 3e 64 70 | 5f 4c 69 6e 6b 29 3b 0a |, dp->dp|_Link);.|
|00016d60| 09 09 09 09 09 0a 09 09 | 09 09 09 65 6e 64 5f 73 |........|...end_s|
|00016d70| 70 6c 69 74 28 26 73 64 | 29 3b 0a 09 09 09 09 09 |plit(&sd|);......|
|00016d80| 65 6e 64 5f 73 70 6c 69 | 74 28 26 73 64 32 29 3b |end_spli|t(&sd2);|
|00016d90| 0a 09 09 09 09 09 63 6f | 6e 74 69 6e 75 65 3b 0a |......co|ntinue;.|
|00016da0| 09 09 09 09 7d 0a 09 09 | 09 09 0a 09 09 09 09 69 |....}...|.......i|
|00016db0| 66 20 28 73 64 2e 70 6f | 72 74 20 21 3d 20 73 64 |f (sd.po|rt != sd|
|00016dc0| 32 2e 70 6f 72 74 29 20 | 7b 0a 09 09 09 09 09 64 |2.port) |{......d|
|00016dd0| 70 2d 3e 64 70 5f 52 65 | 73 31 20 3d 20 44 4f 53 |p->dp_Re|s1 = DOS|
|00016de0| 46 41 4c 53 45 3b 0a 09 | 09 09 09 09 64 70 2d 3e |FALSE;..|....dp->|
|00016df0| 64 70 5f 52 65 73 32 20 | 3d 20 45 52 52 4f 52 5f |dp_Res2 |= ERROR_|
|00016e00| 52 45 4e 41 4d 45 5f 41 | 43 52 4f 53 53 5f 44 45 |RENAME_A|CROSS_DE|
|00016e10| 56 49 43 45 53 3b 0a 09 | 09 09 09 09 0a 09 09 09 |VICES;..|........|
|00016e20| 09 09 65 6e 64 5f 73 70 | 6c 69 74 28 26 73 64 29 |..end_sp|lit(&sd)|
|00016e30| 3b 0a 09 09 09 09 09 65 | 6e 64 5f 73 70 6c 69 74 |;......e|nd_split|
|00016e40| 28 26 73 64 32 29 3b 0a | 09 09 09 09 09 62 72 65 |(&sd2);.|.....bre|
|00016e50| 61 6b 3b 0a 09 09 09 09 | 7d 0a 09 09 09 09 0a 09 |ak;.....|}.......|
|00016e60| 09 09 09 50 75 74 4d 73 | 67 28 73 64 2e 70 6f 72 |...PutMs|g(sd.por|
|00016e70| 74 2c 20 64 70 2d 3e 64 | 70 5f 4c 69 6e 6b 29 3b |t, dp->d|p_Link);|
|00016e80| 0a 09 09 09 09 0a 09 09 | 09 09 65 6e 64 5f 73 70 |........|..end_sp|
|00016e90| 6c 69 74 28 26 73 64 29 | 3b 0a 09 09 09 09 65 6e |lit(&sd)|;.....en|
|00016ea0| 64 5f 73 70 6c 69 74 28 | 26 73 64 32 29 3b 0a 09 |d_split(|&sd2);..|
|00016eb0| 09 09 09 0a 09 09 09 09 | 63 6f 6e 74 69 6e 75 65 |........|continue|
|00016ec0| 3b 0a 09 09 09 63 61 73 | 65 20 41 43 54 49 4f 4e |;....cas|e ACTION|
|00016ed0| 5f 44 45 4c 45 54 45 5f | 4f 42 4a 45 43 54 3a 0a |_DELETE_|OBJECT:.|
|00016ee0| 09 09 09 09 69 66 20 28 | 21 73 70 6c 69 74 5f 64 |....if (|!split_d|
|00016ef0| 61 74 61 28 28 6c 6f 63 | 6b 20 2a 29 28 64 70 2d |ata((loc|k *)(dp-|
|00016f00| 3e 64 70 5f 41 72 67 31 | 20 3c 3c 20 32 29 2c 0a |>dp_Arg1| << 2),.|
|00016f10| 09 09 09 09 09 09 09 28 | 62 38 20 2a 29 28 64 70 |.......(|b8 *)(dp|
|00016f20| 2d 3e 64 70 5f 41 72 67 | 32 20 3c 3c 20 32 29 2c |->dp_Arg|2 << 2),|
|00016f30| 20 26 73 64 29 29 20 7b | 0a 09 09 09 09 09 64 70 | &sd)) {|......dp|
|00016f40| 2d 3e 64 70 5f 52 65 73 | 31 20 3d 20 44 4f 53 46 |->dp_Res|1 = DOSF|
|00016f50| 41 4c 53 45 3b 0a 09 09 | 09 09 09 64 70 2d 3e 64 |ALSE;...|...dp->d|
|00016f60| 70 5f 52 65 73 32 20 3d | 20 45 52 52 4f 52 5f 49 |p_Res2 =| ERROR_I|
|00016f70| 4e 56 41 4c 49 44 5f 43 | 4f 4d 50 4f 4e 45 4e 54 |NVALID_C|OMPONENT|
|00016f80| 5f 4e 41 4d 45 3b 0a 09 | 09 09 09 09 62 72 65 61 |_NAME;..|....brea|
|00016f90| 6b 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 0a 09 09 |k;.....}|........|
|00016fa0| 09 09 50 75 74 4d 73 67 | 28 73 64 2e 70 6f 72 74 |..PutMsg|(sd.port|
|00016fb0| 2c 20 64 70 2d 3e 64 70 | 5f 4c 69 6e 6b 29 3b 0a |, dp->dp|_Link);.|
|00016fc0| 09 09 09 09 0a 09 09 09 | 09 65 6e 64 5f 73 70 6c |........|.end_spl|
|00016fd0| 69 74 28 26 73 64 29 3b | 0a 09 09 09 09 0a 09 09 |it(&sd);|........|
|00016fe0| 09 09 63 6f 6e 74 69 6e | 75 65 3b 0a 09 09 09 63 |..contin|ue;....c|
|00016ff0| 61 73 65 20 41 43 54 49 | 4f 4e 5f 43 52 45 41 54 |ase ACTI|ON_CREAT|
|00017000| 45 5f 44 49 52 3a 0a 09 | 09 09 09 69 66 20 28 21 |E_DIR:..|...if (!|
|00017010| 73 70 6c 69 74 5f 64 61 | 74 61 28 28 6c 6f 63 6b |split_da|ta((lock|
|00017020| 20 2a 29 28 64 70 2d 3e | 64 70 5f 41 72 67 31 20 | *)(dp->|dp_Arg1 |
|00017030| 3c 3c 20 32 29 2c 0a 09 | 09 09 09 09 09 09 28 62 |<< 2),..|......(b|
|00017040| 38 20 2a 29 28 64 70 2d | 3e 64 70 5f 41 72 67 32 |8 *)(dp-|>dp_Arg2|
|00017050| 20 3c 3c 20 32 29 2c 20 | 26 73 64 29 29 20 7b 0a | << 2), |&sd)) {.|
|00017060| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 31 |.....dp-|>dp_Res1|
|00017070| 20 3d 20 44 4f 53 46 41 | 4c 53 45 3b 0a 09 09 09 | = DOSFA|LSE;....|
|00017080| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 32 20 3d 20 |..dp->dp|_Res2 = |
|00017090| 45 52 52 4f 52 5f 49 4e | 56 41 4c 49 44 5f 43 4f |ERROR_IN|VALID_CO|
|000170a0| 4d 50 4f 4e 45 4e 54 5f | 4e 41 4d 45 3b 0a 09 09 |MPONENT_|NAME;...|
|000170b0| 09 09 09 62 72 65 61 6b | 3b 0a 09 09 09 09 7d 0a |...break|;.....}.|
|000170c0| 09 09 09 09 0a 09 09 09 | 09 69 66 20 28 21 73 64 |........|.if (!sd|
|000170d0| 2e 70 61 74 68 29 0a 09 | 09 09 09 7b 0a 09 09 09 |.path)..|...{....|
|000170e0| 09 09 50 75 74 4d 73 67 | 28 6c 6f 63 61 6c 5f 70 |..PutMsg|(local_p|
|000170f0| 6f 72 74 2c 20 64 70 2d | 3e 64 70 5f 4c 69 6e 6b |ort, dp-|>dp_Link|
|00017100| 29 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 65 6c 73 |);.....}|.....els|
|00017110| 65 0a 09 09 09 09 7b 0a | 09 09 09 09 09 50 75 74 |e.....{.|.....Put|
|00017120| 4d 73 67 28 73 64 2e 70 | 6f 72 74 2c 20 64 70 2d |Msg(sd.p|ort, dp-|
|00017130| 3e 64 70 5f 4c 69 6e 6b | 29 3b 0a 09 09 09 09 7d |>dp_Link|);.....}|
|00017140| 0a 09 09 09 09 0a 09 09 | 09 09 65 6e 64 5f 73 70 |........|..end_sp|
|00017150| 6c 69 74 28 26 73 64 29 | 3b 0a 09 09 09 09 0a 09 |lit(&sd)|;.......|
|00017160| 09 09 09 63 6f 6e 74 69 | 6e 75 65 3b 0a 09 09 09 |...conti|nue;....|
|00017170| 63 61 73 65 20 41 43 54 | 49 4f 4e 5f 44 49 53 4b |case ACT|ION_DISK|
|00017180| 5f 49 4e 46 4f 3a 0a 09 | 09 09 09 69 64 20 3d 20 |_INFO:..|...id = |
|00017190| 28 73 74 72 75 63 74 20 | 49 6e 66 6f 44 61 74 61 |(struct |InfoData|
|000171a0| 20 2a 29 28 64 70 2d 3e | 64 70 5f 41 72 67 31 20 | *)(dp->|dp_Arg1 |
|000171b0| 3c 3c 20 32 29 3b 0a 09 | 09 09 09 74 72 75 74 68 |<< 2);..|...truth|
|000171c0| 28 69 64 20 21 3d 20 6e | 69 6c 29 3b 0a 0a 09 09 |(id != n|il);....|
|000171d0| 09 09 69 64 2d 3e 69 64 | 5f 4e 75 6d 53 6f 66 74 |..id->id|_NumSoft|
|000171e0| 45 72 72 6f 72 73 20 3d | 20 30 3b 0a 09 09 09 09 |Errors =| 0;.....|
|000171f0| 69 64 2d 3e 69 64 5f 55 | 6e 69 74 4e 75 6d 62 65 |id->id_U|nitNumbe|
|00017200| 72 20 3d 20 30 3b 0a 09 | 09 09 09 69 66 20 28 77 |r = 0;..|...if (w|
|00017210| 72 69 74 65 5f 70 72 6f | 74 65 63 74 29 0a 09 09 |rite_pro|tect)...|
|00017220| 09 09 09 69 64 2d 3e 69 | 64 5f 44 69 73 6b 53 74 |...id->i|d_DiskSt|
|00017230| 61 74 65 20 3d 20 49 44 | 5f 57 52 49 54 45 5f 50 |ate = ID|_WRITE_P|
|00017240| 52 4f 54 45 43 54 45 44 | 3b 0a 09 09 09 09 65 6c |ROTECTED|;.....el|
|00017250| 73 65 0a 09 09 09 09 09 | 69 64 2d 3e 69 64 5f 44 |se......|id->id_D|
|00017260| 69 73 6b 53 74 61 74 65 | 20 3d 20 49 44 5f 56 41 |iskState| = ID_VA|
|00017270| 4c 49 44 41 54 45 44 3b | 0a 09 09 09 09 69 64 2d |LIDATED;|.....id-|
|00017280| 3e 69 64 5f 4e 75 6d 42 | 6c 6f 63 6b 73 20 3d 20 |>id_NumB|locks = |
|00017290| 31 3b 0a 09 09 09 09 69 | 64 2d 3e 69 64 5f 4e 75 |1;.....i|d->id_Nu|
|000172a0| 6d 42 6c 6f 63 6b 73 55 | 73 65 64 20 3d 20 31 3b |mBlocksU|sed = 1;|
|000172b0| 0a 09 09 09 09 69 64 2d | 3e 69 64 5f 42 79 74 65 |.....id-|>id_Byte|
|000172c0| 73 50 65 72 42 6c 6f 63 | 6b 20 3d 20 31 30 32 34 |sPerBloc|k = 1024|
|000172d0| 3b 0a 09 09 09 09 69 64 | 2d 3e 69 64 5f 44 69 73 |;.....id|->id_Dis|
|000172e0| 6b 54 79 70 65 20 3d 20 | 49 44 5f 44 4f 53 5f 44 |kType = |ID_DOS_D|
|000172f0| 49 53 4b 3b 0a 09 09 09 | 09 69 64 2d 3e 69 64 5f |ISK;....|.id->id_|
|00017300| 56 6f 6c 75 6d 65 4e 6f | 64 65 20 3d 20 28 62 33 |VolumeNo|de = (b3|
|00017310| 32 29 66 74 70 5f 76 6f | 6c 75 6d 65 20 3e 3e 20 |2)ftp_vo|lume >> |
|00017320| 32 3b 0a 09 09 09 09 69 | 64 2d 3e 69 64 5f 49 6e |2;.....i|d->id_In|
|00017330| 55 73 65 20 3d 20 30 3b | 0a 09 09 09 09 0a 09 09 |Use = 0;|........|
|00017340| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 31 20 3d 20 |..dp->dp|_Res1 = |
|00017350| 44 4f 53 54 52 55 45 3b | 0a 09 09 09 09 64 70 2d |DOSTRUE;|.....dp-|
|00017360| 3e 64 70 5f 52 65 73 32 | 20 3d 20 30 3b 0a 0a 09 |>dp_Res2| = 0;...|
|00017370| 09 09 09 62 72 65 61 6b | 3b 0a 09 09 09 63 61 73 |...break|;....cas|
|00017380| 65 20 41 43 54 49 4f 4e | 5f 49 4e 46 4f 3a 0a 09 |e ACTION|_INFO:..|
|00017390| 09 09 09 69 64 20 3d 20 | 28 73 74 72 75 63 74 20 |...id = |(struct |
|000173a0| 49 6e 66 6f 44 61 74 61 | 20 2a 29 28 64 70 2d 3e |InfoData| *)(dp->|
|000173b0| 64 70 5f 41 72 67 32 20 | 3c 3c 20 32 29 3b 0a 09 |dp_Arg2 |<< 2);..|
|000173c0| 09 09 09 74 72 75 74 68 | 28 69 64 20 21 3d 20 6e |...truth|(id != n|
|000173d0| 69 6c 29 3b 0a 0a 09 09 | 09 09 69 64 2d 3e 69 64 |il);....|..id->id|
|000173e0| 5f 4e 75 6d 53 6f 66 74 | 45 72 72 6f 72 73 20 3d |_NumSoft|Errors =|
|000173f0| 20 30 3b 0a 09 09 09 09 | 69 64 2d 3e 69 64 5f 55 | 0;.....|id->id_U|
|00017400| 6e 69 74 4e 75 6d 62 65 | 72 20 3d 20 30 3b 0a 09 |nitNumbe|r = 0;..|
|00017410| 09 09 09 69 66 20 28 77 | 72 69 74 65 5f 70 72 6f |...if (w|rite_pro|
|00017420| 74 65 63 74 29 0a 09 09 | 09 09 09 69 64 2d 3e 69 |tect)...|...id->i|
|00017430| 64 5f 44 69 73 6b 53 74 | 61 74 65 20 3d 20 49 44 |d_DiskSt|ate = ID|
|00017440| 5f 57 52 49 54 45 5f 50 | 52 4f 54 45 43 54 45 44 |_WRITE_P|ROTECTED|
|00017450| 3b 0a 09 09 09 09 65 6c | 73 65 0a 09 09 09 09 09 |;.....el|se......|
|00017460| 69 64 2d 3e 69 64 5f 44 | 69 73 6b 53 74 61 74 65 |id->id_D|iskState|
|00017470| 20 3d 20 49 44 5f 56 41 | 4c 49 44 41 54 45 44 3b | = ID_VA|LIDATED;|
|00017480| 0a 09 09 09 09 69 64 2d | 3e 69 64 5f 4e 75 6d 42 |.....id-|>id_NumB|
|00017490| 6c 6f 63 6b 73 20 3d 20 | 31 3b 0a 09 09 09 09 69 |locks = |1;.....i|
|000174a0| 64 2d 3e 69 64 5f 4e 75 | 6d 42 6c 6f 63 6b 73 55 |d->id_Nu|mBlocksU|
|000174b0| 73 65 64 20 3d 20 31 3b | 0a 09 09 09 09 69 64 2d |sed = 1;|.....id-|
|000174c0| 3e 69 64 5f 42 79 74 65 | 73 50 65 72 42 6c 6f 63 |>id_Byte|sPerBloc|
|000174d0| 6b 20 3d 20 31 30 32 34 | 3b 0a 09 09 09 09 69 64 |k = 1024|;.....id|
|000174e0| 2d 3e 69 64 5f 44 69 73 | 6b 54 79 70 65 20 3d 20 |->id_Dis|kType = |
|000174f0| 49 44 5f 44 4f 53 5f 44 | 49 53 4b 3b 0a 09 09 09 |ID_DOS_D|ISK;....|
|00017500| 09 69 64 2d 3e 69 64 5f | 56 6f 6c 75 6d 65 4e 6f |.id->id_|VolumeNo|
|00017510| 64 65 20 3d 20 28 62 33 | 32 29 66 74 70 5f 76 6f |de = (b3|2)ftp_vo|
|00017520| 6c 75 6d 65 20 3e 3e 20 | 32 3b 0a 09 09 09 09 69 |lume >> |2;.....i|
|00017530| 64 2d 3e 69 64 5f 49 6e | 55 73 65 20 3d 20 30 3b |d->id_In|Use = 0;|
|00017540| 0a 09 09 09 09 0a 09 09 | 09 09 64 70 2d 3e 64 70 |........|..dp->dp|
|00017550| 5f 52 65 73 31 20 3d 20 | 44 4f 53 54 52 55 45 3b |_Res1 = |DOSTRUE;|
|00017560| 0a 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 32 |.....dp-|>dp_Res2|
|00017570| 20 3d 20 30 3b 0a 0a 09 | 09 09 09 62 72 65 61 6b | = 0;...|...break|
|00017580| 3b 0a 09 09 09 63 61 73 | 65 20 41 43 54 49 4f 4e |;....cas|e ACTION|
|00017590| 5f 53 41 4d 45 5f 4c 4f | 43 4b 3a 0a 09 09 09 09 |_SAME_LO|CK:.....|
|000175a0| 6d 79 5f 6c 6f 63 6b 20 | 3d 20 28 6c 6f 63 6b 20 |my_lock |= (lock |
|000175b0| 2a 29 28 64 70 2d 3e 64 | 70 5f 41 72 67 31 20 3c |*)(dp->d|p_Arg1 <|
|000175c0| 3c 20 32 29 3b 0a 09 09 | 09 09 6c 6f 63 6b 32 20 |< 2);...|..lock2 |
|000175d0| 3d 20 28 6c 6f 63 6b 20 | 2a 29 28 64 70 2d 3e 64 |= (lock |*)(dp->d|
|000175e0| 70 5f 41 72 67 32 20 3c | 3c 20 32 29 3b 0a 09 09 |p_Arg2 <|< 2);...|
|000175f0| 09 09 0a 09 09 09 09 76 | 65 72 69 66 79 28 6d 79 |.......v|erify(my|
|00017600| 5f 6c 6f 63 6b 2c 20 56 | 5f 6c 6f 63 6b 29 3b 0a |_lock, V|_lock);.|
|00017610| 09 09 09 09 76 65 72 69 | 66 79 28 6c 6f 63 6b 32 |....veri|fy(lock2|
|00017620| 2c 20 56 5f 6c 6f 63 6b | 29 3b 0a 09 09 09 09 0a |, V_lock|);......|
|00017630| 23 69 66 64 65 66 20 53 | 4c 44 46 4b 4a 0a 09 09 |#ifdef S|LDFKJ...|
|00017640| 09 09 69 66 20 28 6d 79 | 5f 6c 6f 63 6b 2d 3e 70 |..if (my|_lock->p|
|00017650| 6f 72 74 20 3d 3d 20 6c | 6f 63 61 6c 5f 70 6f 72 |ort == l|ocal_por|
|00017660| 74 29 20 7b 0a 09 09 09 | 09 09 69 66 20 28 6d 79 |t) {....|..if (my|
|00017670| 5f 6c 6f 63 6b 2d 3e 72 | 66 73 6c 20 3d 3d 20 66 |_lock->r|fsl == f|
|00017680| 74 70 68 6f 73 74 73 5f | 6c 6f 63 6b 29 0a 09 09 |tphosts_|lock)...|
|00017690| 09 09 09 09 7b 20 73 68 | 6f 77 5f 73 74 72 69 6e |....{ sh|ow_strin|
|000176a0| 67 28 22 6c 6f 63 6b 20 | 31 20 69 73 20 52 4f 4f |g("lock |1 is ROO|
|000176b0| 54 22 29 3b 20 7d 0a 09 | 09 09 09 09 65 6c 73 65 |T"); }..|....else|
|000176c0| 0a 09 09 09 09 09 09 7b | 20 73 68 6f 77 5f 73 74 |.......{| show_st|
|000176d0| 72 69 6e 67 28 22 6c 6f | 63 6b 20 31 20 69 73 20 |ring("lo|ck 1 is |
|000176e0| 6c 6f 63 61 6c 20 6c 6f | 63 6b 22 29 3b 20 7d 0a |local lo|ck"); }.|
|000176f0| 09 09 09 09 7d 20 65 6c | 73 65 20 7b 0a 09 09 09 |....} el|se {....|
|00017700| 09 09 73 68 6f 77 5f 73 | 74 72 69 6e 67 28 6d 79 |..show_s|tring(my|
|00017710| 5f 6c 6f 63 6b 2d 3e 66 | 6e 61 6d 65 29 3b 0a 09 |_lock->f|name);..|
|00017720| 09 09 09 7d 0a 09 09 09 | 09 0a 09 09 09 09 69 66 |...}....|......if|
|00017730| 20 28 6c 6f 63 6b 32 2d | 3e 70 6f 72 74 20 3d 3d | (lock2-|>port ==|
|00017740| 20 6c 6f 63 61 6c 5f 70 | 6f 72 74 29 20 7b 0a 09 | local_p|ort) {..|
|00017750| 09 09 09 09 69 66 20 28 | 6c 6f 63 6b 32 2d 3e 72 |....if (|lock2->r|
|00017760| 66 73 6c 20 3d 3d 20 66 | 74 70 68 6f 73 74 73 5f |fsl == f|tphosts_|
|00017770| 6c 6f 63 6b 29 0a 09 09 | 09 09 09 09 7b 20 73 68 |lock)...|....{ sh|
|00017780| 6f 77 5f 73 74 72 69 6e | 67 28 22 6c 6f 63 6b 20 |ow_strin|g("lock |
|00017790| 32 20 69 73 20 52 4f 4f | 54 22 29 3b 20 7d 0a 09 |2 is ROO|T"); }..|
|000177a0| 09 09 09 09 65 6c 73 65 | 0a 09 09 09 09 09 09 7b |....else|.......{|
|000177b0| 20 73 68 6f 77 5f 73 74 | 72 69 6e 67 28 22 6c 6f | show_st|ring("lo|
|000177c0| 63 6b 20 32 20 69 73 20 | 6c 6f 63 61 6c 20 6c 6f |ck 2 is |local lo|
|000177d0| 63 6b 22 29 3b 20 7d 0a | 09 09 09 09 7d 20 65 6c |ck"); }.|....} el|
|000177e0| 73 65 20 7b 0a 09 09 09 | 09 09 73 68 6f 77 5f 73 |se {....|..show_s|
|000177f0| 74 72 69 6e 67 28 6c 6f | 63 6b 32 2d 3e 66 6e 61 |tring(lo|ck2->fna|
|00017800| 6d 65 29 3b 0a 09 09 09 | 09 7d 0a 23 65 6e 64 69 |me);....|.}.#endi|
|00017810| 66 0a 09 09 09 09 0a 09 | 09 09 09 69 66 20 28 6d |f.......|...if (m|
|00017820| 79 5f 6c 6f 63 6b 2d 3e | 70 6f 72 74 20 21 3d 20 |y_lock->|port != |
|00017830| 6c 6f 63 6b 32 2d 3e 70 | 6f 72 74 29 20 7b 0a 09 |lock2->p|ort) {..|
|00017840| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |....dp->|dp_Res1 |
|00017850| 3d 20 44 4f 53 46 41 4c | 53 45 3b 0a 09 09 09 09 |= DOSFAL|SE;.....|
|00017860| 09 64 70 2d 3e 64 70 5f | 52 65 73 32 20 3d 20 45 |.dp->dp_|Res2 = E|
|00017870| 52 52 4f 52 5f 49 4e 56 | 41 4c 49 44 5f 4c 4f 43 |RROR_INV|ALID_LOC|
|00017880| 4b 3b 0a 09 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |K;......|break;..|
|00017890| 09 09 09 7d 0a 09 09 09 | 09 0a 09 09 09 09 50 75 |...}....|......Pu|
|000178a0| 74 4d 73 67 28 6d 79 5f | 6c 6f 63 6b 2d 3e 70 6f |tMsg(my_|lock->po|
|000178b0| 72 74 2c 20 64 70 2d 3e | 64 70 5f 4c 69 6e 6b 29 |rt, dp->|dp_Link)|
|000178c0| 3b 0a 09 09 09 09 63 6f | 6e 74 69 6e 75 65 3b 0a |;.....co|ntinue;.|
|000178d0| 09 09 09 63 61 73 65 20 | 41 43 54 49 4f 4e 5f 52 |...case |ACTION_R|
|000178e0| 45 41 44 3a 0a 09 09 09 | 63 61 73 65 20 41 43 54 |EAD:....|case ACT|
|000178f0| 49 4f 4e 5f 57 52 49 54 | 45 3a 0a 09 09 09 09 66 |ION_WRIT|E:.....f|
|00017900| 69 20 3d 20 28 66 69 6c | 65 5f 69 6e 66 6f 20 2a |i = (fil|e_info *|
|00017910| 29 64 70 2d 3e 64 70 5f | 41 72 67 31 3b 0a 09 09 |)dp->dp_|Arg1;...|
|00017920| 09 09 0a 09 09 09 09 76 | 65 72 69 66 79 28 66 69 |.......v|erify(fi|
|00017930| 2c 20 56 5f 66 69 6c 65 | 5f 69 6e 66 6f 29 3b 0a |, V_file|_info);.|
|00017940| 09 09 09 09 0a 09 09 09 | 09 50 75 74 4d 73 67 28 |........|.PutMsg(|
|00017950| 66 69 2d 3e 70 6f 72 74 | 2c 20 64 70 2d 3e 64 70 |fi->port|, dp->dp|
|00017960| 5f 4c 69 6e 6b 29 3b 0a | 09 09 09 09 0a 09 09 09 |_Link);.|........|
|00017970| 09 63 6f 6e 74 69 6e 75 | 65 3b 0a 09 09 09 63 61 |.continu|e;....ca|
|00017980| 73 65 20 41 43 54 49 4f | 4e 5f 46 49 4e 44 55 50 |se ACTIO|N_FINDUP|
|00017990| 44 41 54 45 3a 0a 09 09 | 09 63 61 73 65 20 41 43 |DATE:...|.case AC|
|000179a0| 54 49 4f 4e 5f 46 49 4e | 44 49 4e 50 55 54 3a 0a |TION_FIN|DINPUT:.|
|000179b0| 09 09 09 63 61 73 65 20 | 41 43 54 49 4f 4e 5f 46 |...case |ACTION_F|
|000179c0| 49 4e 44 4f 55 54 50 55 | 54 3a 0a 09 09 09 09 69 |INDOUTPU|T:.....i|
|000179d0| 66 20 28 21 73 70 6c 69 | 74 5f 64 61 74 61 28 28 |f (!spli|t_data((|
|000179e0| 6c 6f 63 6b 20 2a 29 28 | 64 70 2d 3e 64 70 5f 41 |lock *)(|dp->dp_A|
|000179f0| 72 67 32 20 3c 3c 20 32 | 29 2c 20 0a 09 09 09 09 |rg2 << 2|), .....|
|00017a00| 09 09 09 28 62 38 20 2a | 29 28 64 70 2d 3e 64 70 |...(b8 *|)(dp->dp|
|00017a10| 5f 41 72 67 33 20 3c 3c | 20 32 29 2c 20 26 73 64 |_Arg3 <<| 2), &sd|
|00017a20| 29 29 20 7b 0a 09 09 09 | 09 09 2f 2a 20 6d 69 67 |)) {....|../* mig|
|00017a30| 68 74 20 62 65 20 45 52 | 52 4f 52 5f 4e 4f 5f 46 |ht be ER|ROR_NO_F|
|00017a40| 52 45 45 5f 53 54 4f 52 | 45 2c 20 62 75 74 20 68 |REE_STOR|E, but h|
|00017a50| 65 79 20 2a 2f 0a 09 09 | 09 09 09 64 70 2d 3e 64 |ey */...|...dp->d|
|00017a60| 70 5f 52 65 73 31 20 3d | 20 44 4f 53 46 41 4c 53 |p_Res1 =| DOSFALS|
|00017a70| 45 3b 0a 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 |E;......|dp->dp_R|
|00017a80| 65 73 32 20 3d 20 45 52 | 52 4f 52 5f 49 4e 56 41 |es2 = ER|ROR_INVA|
|00017a90| 4c 49 44 5f 43 4f 4d 50 | 4f 4e 45 4e 54 5f 4e 41 |LID_COMP|ONENT_NA|
|00017aa0| 4d 45 3b 0a 09 09 09 09 | 09 62 72 65 61 6b 3b 0a |ME;.....|.break;.|
|00017ab0| 09 09 09 09 7d 0a 09 09 | 09 09 0a 09 09 09 09 50 |....}...|.......P|
|00017ac0| 75 74 4d 73 67 28 73 64 | 2e 70 6f 72 74 2c 20 64 |utMsg(sd|.port, d|
|00017ad0| 70 2d 3e 64 70 5f 4c 69 | 6e 6b 29 3b 0a 09 09 09 |p->dp_Li|nk);....|
|00017ae0| 09 0a 09 09 09 09 65 6e | 64 5f 73 70 6c 69 74 28 |......en|d_split(|
|00017af0| 26 73 64 29 3b 0a 0a 09 | 09 09 09 63 6f 6e 74 69 |&sd);...|...conti|
|00017b00| 6e 75 65 3b 0a 09 09 09 | 63 61 73 65 20 41 43 54 |nue;....|case ACT|
|00017b10| 49 4f 4e 5f 45 4e 44 3a | 0a 09 09 09 09 66 69 20 |ION_END:|.....fi |
|00017b20| 3d 20 28 66 69 6c 65 5f | 69 6e 66 6f 20 2a 29 64 |= (file_|info *)d|
|00017b30| 70 2d 3e 64 70 5f 41 72 | 67 31 3b 0a 09 09 09 09 |p->dp_Ar|g1;.....|
|00017b40| 0a 09 09 09 09 76 65 72 | 69 66 79 28 66 69 2c 20 |.....ver|ify(fi, |
|00017b50| 56 5f 66 69 6c 65 5f 69 | 6e 66 6f 29 3b 0a 09 09 |V_file_i|nfo);...|
|00017b60| 09 09 0a 09 09 09 09 50 | 75 74 4d 73 67 28 66 69 |.......P|utMsg(fi|
|00017b70| 2d 3e 70 6f 72 74 2c 20 | 64 70 2d 3e 64 70 5f 4c |->port, |dp->dp_L|
|00017b80| 69 6e 6b 29 3b 0a 09 09 | 09 09 0a 09 09 09 09 63 |ink);...|.......c|
|00017b90| 6f 6e 74 69 6e 75 65 3b | 0a 09 09 09 63 61 73 65 |ontinue;|....case|
|00017ba0| 20 41 43 54 49 4f 4e 5f | 53 45 45 4b 3a 0a 09 09 | ACTION_|SEEK:...|
|00017bb0| 09 09 66 69 20 3d 20 28 | 66 69 6c 65 5f 69 6e 66 |..fi = (|file_inf|
|00017bc0| 6f 20 2a 29 64 70 2d 3e | 64 70 5f 41 72 67 31 3b |o *)dp->|dp_Arg1;|
|00017bd0| 0a 09 09 09 09 0a 09 09 | 09 09 76 65 72 69 66 79 |........|..verify|
|00017be0| 28 66 69 2c 20 56 5f 66 | 69 6c 65 5f 69 6e 66 6f |(fi, V_f|ile_info|
|00017bf0| 29 3b 0a 09 09 09 09 0a | 09 09 09 09 50 75 74 4d |);......|....PutM|
|00017c00| 73 67 28 66 69 2d 3e 70 | 6f 72 74 2c 20 64 70 2d |sg(fi->p|ort, dp-|
|00017c10| 3e 64 70 5f 4c 69 6e 6b | 29 3b 0a 09 09 09 09 0a |>dp_Link|);......|
|00017c20| 09 09 09 09 63 6f 6e 74 | 69 6e 75 65 3b 0a 09 09 |....cont|inue;...|
|00017c30| 09 63 61 73 65 20 41 43 | 54 49 4f 4e 5f 57 52 49 |.case AC|TION_WRI|
|00017c40| 54 45 5f 50 52 4f 54 45 | 43 54 3a 0a 09 09 09 09 |TE_PROTE|CT:.....|
|00017c50| 69 66 20 28 77 72 69 74 | 65 5f 70 72 6f 74 65 63 |if (writ|e_protec|
|00017c60| 74 20 26 26 20 64 70 2d | 3e 64 70 5f 41 72 67 31 |t && dp-|>dp_Arg1|
|00017c70| 29 20 7b 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |) {.....|.dp->dp_|
|00017c80| 52 65 73 31 20 3d 20 44 | 4f 53 46 41 4c 53 45 3b |Res1 = D|OSFALSE;|
|00017c90| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|00017ca0| 32 20 3d 20 45 52 52 4f | 52 5f 44 49 53 4b 5f 57 |2 = ERRO|R_DISK_W|
|00017cb0| 52 49 54 45 5f 50 52 4f | 54 45 43 54 45 44 3b 0a |RITE_PRO|TECTED;.|
|00017cc0| 09 09 09 09 09 62 72 65 | 61 6b 3b 0a 09 09 09 09 |.....bre|ak;.....|
|00017cd0| 7d 20 65 6c 73 65 20 69 | 66 20 28 21 77 72 69 74 |} else i|f (!writ|
|00017ce0| 65 5f 70 72 6f 74 65 63 | 74 20 26 26 20 21 64 70 |e_protec|t && !dp|
|00017cf0| 2d 3e 64 70 5f 41 72 67 | 31 29 20 7b 0a 09 09 09 |->dp_Arg|1) {....|
|00017d00| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 31 20 3d 20 |..dp->dp|_Res1 = |
|00017d10| 44 4f 53 54 52 55 45 3b | 0a 09 09 09 09 09 64 70 |DOSTRUE;|......dp|
|00017d20| 2d 3e 64 70 5f 52 65 73 | 32 20 3d 20 30 3b 0a 09 |->dp_Res|2 = 0;..|
|00017d30| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 09 09 7d |....brea|k;.....}|
|00017d40| 20 65 6c 73 65 20 69 66 | 20 28 21 77 72 69 74 65 | else if| (!write|
|00017d50| 5f 70 72 6f 74 65 63 74 | 20 26 26 20 64 70 2d 3e |_protect| && dp->|
|00017d60| 64 70 5f 41 72 67 31 29 | 20 7b 0a 09 09 09 09 09 |dp_Arg1)| {......|
|00017d70| 64 70 2d 3e 64 70 5f 52 | 65 73 31 20 3d 20 44 4f |dp->dp_R|es1 = DO|
|00017d80| 53 54 52 55 45 3b 0a 09 | 09 09 09 09 64 70 2d 3e |STRUE;..|....dp->|
|00017d90| 64 70 5f 52 65 73 32 20 | 3d 20 30 3b 0a 09 09 09 |dp_Res2 |= 0;....|
|00017da0| 09 09 77 72 69 74 65 5f | 70 72 6f 74 65 63 74 20 |..write_|protect |
|00017db0| 3d 20 31 3b 0a 09 09 09 | 09 09 70 61 73 73 5f 6b |= 1;....|..pass_k|
|00017dc0| 65 79 20 3d 20 64 70 2d | 3e 64 70 5f 41 72 67 32 |ey = dp-|>dp_Arg2|
|00017dd0| 3b 0a 09 09 09 09 09 62 | 72 65 61 6b 3b 0a 09 09 |;......b|reak;...|
|00017de0| 09 09 7d 20 65 6c 73 65 | 20 7b 0a 09 09 09 09 09 |..} else| {......|
|00017df0| 69 66 20 28 70 61 73 73 | 5f 6b 65 79 20 3d 3d 20 |if (pass|_key == |
|00017e00| 30 20 7c 7c 20 70 61 73 | 73 5f 6b 65 79 20 3d 3d |0 || pas|s_key ==|
|00017e10| 20 64 70 2d 3e 64 70 5f | 41 72 67 32 29 20 7b 0a | dp->dp_|Arg2) {.|
|00017e20| 09 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|00017e30| 31 20 3d 20 44 4f 53 54 | 52 55 45 3b 0a 09 09 09 |1 = DOST|RUE;....|
|00017e40| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 32 20 3d |...dp->d|p_Res2 =|
|00017e50| 20 30 3b 0a 09 09 09 09 | 09 09 77 72 69 74 65 5f | 0;.....|..write_|
|00017e60| 70 72 6f 74 65 63 74 20 | 3d 20 30 3b 0a 09 09 09 |protect |= 0;....|
|00017e70| 09 09 09 70 61 73 73 5f | 6b 65 79 20 3d 20 30 3b |...pass_|key = 0;|
|00017e80| 0a 09 09 09 09 09 09 62 | 72 65 61 6b 3b 0a 09 09 |.......b|reak;...|
|00017e90| 09 09 09 7d 20 65 6c 73 | 65 20 7b 0a 09 09 09 09 |...} els|e {.....|
|00017ea0| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 31 20 3d 20 |..dp->dp|_Res1 = |
|00017eb0| 44 4f 53 46 41 4c 53 45 | 3b 0a 09 09 09 09 09 09 |DOSFALSE|;.......|
|00017ec0| 64 70 2d 3e 64 70 5f 52 | 65 73 32 20 3d 20 45 52 |dp->dp_R|es2 = ER|
|00017ed0| 52 4f 52 5f 44 49 53 4b | 5f 57 52 49 54 45 5f 50 |ROR_DISK|_WRITE_P|
|00017ee0| 52 4f 54 45 43 54 45 44 | 3b 0a 09 09 09 09 09 09 |ROTECTED|;.......|
|00017ef0| 62 72 65 61 6b 3b 0a 09 | 09 09 09 09 7d 0a 09 09 |break;..|....}...|
|00017f00| 09 09 7d 0a 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |..}.....|break;..|
|00017f10| 09 09 63 61 73 65 20 41 | 43 54 49 4f 4e 5f 46 48 |..case A|CTION_FH|
|00017f20| 5f 46 52 4f 4d 5f 4c 4f | 43 4b 3a 0a 09 09 09 09 |_FROM_LO|CK:.....|
|00017f30| 6d 79 5f 6c 6f 63 6b 20 | 3d 20 28 6c 6f 63 6b 20 |my_lock |= (lock |
|00017f40| 2a 29 28 64 70 2d 3e 64 | 70 5f 41 72 67 32 20 3c |*)(dp->d|p_Arg2 <|
|00017f50| 3c 20 32 29 3b 0a 09 09 | 09 09 0a 09 09 09 09 69 |< 2);...|.......i|
|00017f60| 66 20 28 21 6d 79 5f 6c | 6f 63 6b 29 20 7b 0a 09 |f (!my_l|ock) {..|
|00017f70| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |....dp->|dp_Res1 |
|00017f80| 3d 20 44 4f 53 46 41 4c | 53 45 3b 0a 09 09 09 09 |= DOSFAL|SE;.....|
|00017f90| 09 64 70 2d 3e 64 70 5f | 52 65 73 32 20 3d 20 45 |.dp->dp_|Res2 = E|
|00017fa0| 52 52 4f 52 5f 49 4e 56 | 41 4c 49 44 5f 4c 4f 43 |RROR_INV|ALID_LOC|
|00017fb0| 4b 3b 0a 09 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |K;......|break;..|
|00017fc0| 09 09 09 7d 0a 09 09 09 | 09 0a 09 09 09 09 76 65 |...}....|......ve|
|00017fd0| 72 69 66 79 28 6d 79 5f | 6c 6f 63 6b 2c 20 56 5f |rify(my_|lock, V_|
|00017fe0| 6c 6f 63 6b 29 3b 0a 09 | 09 09 09 0a 09 09 09 09 |lock);..|........|
|00017ff0| 50 75 74 4d 73 67 28 6d | 79 5f 6c 6f 63 6b 2d 3e |PutMsg(m|y_lock->|
|00018000| 70 6f 72 74 2c 20 64 70 | 2d 3e 64 70 5f 4c 69 6e |port, dp|->dp_Lin|
|00018010| 6b 29 3b 0a 09 09 09 09 | 63 6f 6e 74 69 6e 75 65 |k);.....|continue|
|00018020| 3b 0a 09 09 09 63 61 73 | 65 20 41 43 54 49 4f 4e |;....cas|e ACTION|
|00018030| 5f 49 53 5f 46 49 4c 45 | 53 59 53 54 45 4d 3a 0a |_IS_FILE|SYSTEM:.|
|00018040| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |....dp->|dp_Res1 |
|00018050| 3d 20 44 4f 53 54 52 55 | 45 3b 0a 09 09 09 09 64 |= DOSTRU|E;.....d|
|00018060| 70 2d 3e 64 70 5f 52 65 | 73 32 20 3d 20 30 3b 0a |p->dp_Re|s2 = 0;.|
|00018070| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 09 63 61 |....brea|k;....ca|
|00018080| 73 65 20 41 43 54 49 4f | 4e 5f 43 4f 50 59 5f 44 |se ACTIO|N_COPY_D|
|00018090| 49 52 5f 46 48 3a 0a 09 | 09 09 63 61 73 65 20 41 |IR_FH:..|..case A|
|000180a0| 43 54 49 4f 4e 5f 50 41 | 52 45 4e 54 5f 46 48 3a |CTION_PA|RENT_FH:|
|000180b0| 0a 2f 2f 09 09 09 63 61 | 73 65 20 41 43 54 49 4f |.//...ca|se ACTIO|
|000180c0| 4e 5f 45 58 41 4d 49 4e | 45 5f 46 48 3a 0a 09 09 |N_EXAMIN|E_FH:...|
|000180d0| 09 09 66 68 20 3d 20 28 | 73 74 72 75 63 74 20 46 |..fh = (|struct F|
|000180e0| 69 6c 65 48 61 6e 64 6c | 65 20 2a 29 28 64 70 2d |ileHandl|e *)(dp-|
|000180f0| 3e 64 70 5f 41 72 67 31 | 20 3c 3c 20 32 29 3b 0a |>dp_Arg1| << 2);.|
|00018100| 09 09 09 09 0a 09 09 09 | 09 66 69 20 3d 20 28 66 |........|.fi = (f|
|00018110| 69 6c 65 5f 69 6e 66 6f | 20 2a 29 66 68 2d 3e 66 |ile_info| *)fh->f|
|00018120| 68 5f 41 72 67 73 3b 0a | 09 09 09 09 76 65 72 69 |h_Args;.|....veri|
|00018130| 66 79 28 66 69 2c 20 56 | 5f 66 69 6c 65 5f 69 6e |fy(fi, V|_file_in|
|00018140| 66 6f 29 3b 0a 09 09 09 | 09 0a 09 09 09 09 50 75 |fo);....|......Pu|
|00018150| 74 4d 73 67 28 66 69 2d | 3e 70 6f 72 74 2c 20 64 |tMsg(fi-|>port, d|
|00018160| 70 2d 3e 64 70 5f 4c 69 | 6e 6b 29 3b 0a 09 09 09 |p->dp_Li|nk);....|
|00018170| 09 0a 09 09 09 09 63 6f | 6e 74 69 6e 75 65 3b 0a |......co|ntinue;.|
|00018180| 09 09 09 63 61 73 65 20 | 41 43 54 49 4f 4e 5f 45 |...case |ACTION_E|
|00018190| 58 41 4d 49 4e 45 5f 41 | 4c 4c 3a 0a 09 09 09 09 |XAMINE_A|LL:.....|
|000181a0| 6d 79 5f 6c 6f 63 6b 20 | 3d 20 28 6c 6f 63 6b 20 |my_lock |= (lock |
|000181b0| 2a 29 28 64 70 2d 3e 64 | 70 5f 41 72 67 31 20 3c |*)(dp->d|p_Arg1 <|
|000181c0| 3c 20 32 29 3b 0a 09 09 | 09 09 0a 09 09 09 09 69 |< 2);...|.......i|
|000181d0| 66 20 28 21 6d 79 5f 6c | 6f 63 6b 29 20 7b 0a 09 |f (!my_l|ock) {..|
|000181e0| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |....dp->|dp_Res1 |
|000181f0| 3d 20 44 4f 53 46 41 4c | 53 45 3b 0a 09 09 09 09 |= DOSFAL|SE;.....|
|00018200| 09 64 70 2d 3e 64 70 5f | 52 65 73 32 20 3d 20 45 |.dp->dp_|Res2 = E|
|00018210| 52 52 4f 52 5f 49 4e 56 | 41 4c 49 44 5f 4c 4f 43 |RROR_INV|ALID_LOC|
|00018220| 4b 3b 0a 09 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |K;......|break;..|
|00018230| 09 09 09 7d 0a 09 09 09 | 09 0a 09 09 09 09 76 65 |...}....|......ve|
|00018240| 72 69 66 79 28 6d 79 5f | 6c 6f 63 6b 2c 20 56 5f |rify(my_|lock, V_|
|00018250| 6c 6f 63 6b 29 3b 0a 09 | 09 09 09 0a 09 09 09 09 |lock);..|........|
|00018260| 50 75 74 4d 73 67 28 6d | 79 5f 6c 6f 63 6b 2d 3e |PutMsg(m|y_lock->|
|00018270| 70 6f 72 74 2c 20 64 70 | 2d 3e 64 70 5f 4c 69 6e |port, dp|->dp_Lin|
|00018280| 6b 29 3b 0a 09 09 09 09 | 63 6f 6e 74 69 6e 75 65 |k);.....|continue|
|00018290| 3b 0a 09 09 09 63 61 73 | 65 20 61 63 74 69 6f 6e |;....cas|e action|
|000182a0| 5f 49 44 4c 45 3a 0a 09 | 09 09 09 6d 79 5f 73 69 |_IDLE:..|...my_si|
|000182b0| 74 65 20 3d 20 28 73 69 | 74 65 20 2a 29 64 70 2d |te = (si|te *)dp-|
|000182c0| 3e 64 70 5f 41 72 67 31 | 3b 0a 09 09 09 09 0a 09 |>dp_Arg1|;.......|
|000182d0| 09 09 09 64 70 2d 3e 64 | 70 5f 50 6f 72 74 20 3d |...dp->d|p_Port =|
|000182e0| 20 66 74 70 5f 70 6f 72 | 74 3b 0a 09 09 09 09 50 | ftp_por|t;.....P|
|000182f0| 75 74 4d 73 67 28 72 65 | 70 6c 79 2c 20 64 70 2d |utMsg(re|ply, dp-|
|00018300| 3e 64 70 5f 4c 69 6e 6b | 29 3b 09 2f 2a 20 73 65 |>dp_Link|);./* se|
|00018310| 6e 64 20 74 68 65 20 49 | 44 4c 45 20 62 61 63 6b |nd the I|DLE back|
|00018320| 20 2a 2f 0a 09 09 09 09 | 0a 09 09 09 09 64 70 20 | */.....|.....dp |
|00018330| 3d 20 26 6d 79 5f 73 69 | 74 65 2d 3e 64 65 61 74 |= &my_si|te->deat|
|00018340| 68 5f 70 61 63 6b 65 74 | 2d 3e 73 70 5f 50 6b 74 |h_packet|->sp_Pkt|
|00018350| 3b 0a 09 09 09 09 64 70 | 2d 3e 64 70 5f 54 79 70 |;.....dp|->dp_Typ|
|00018360| 65 20 3d 20 61 63 74 69 | 6f 6e 5f 49 44 4c 45 5f |e = acti|on_IDLE_|
|00018370| 44 45 41 54 48 3b 0a 09 | 09 09 09 0a 09 09 09 09 |DEATH;..|........|
|00018380| 64 70 2d 3e 64 70 5f 50 | 6f 72 74 20 3d 20 73 74 |dp->dp_P|ort = st|
|00018390| 61 72 74 75 70 5f 73 79 | 6e 63 3b 0a 09 09 09 09 |artup_sy|nc;.....|
|000183a0| 50 75 74 4d 73 67 28 6d | 79 5f 73 69 74 65 2d 3e |PutMsg(m|y_site->|
|000183b0| 70 6f 72 74 2c 20 64 70 | 2d 3e 64 70 5f 4c 69 6e |port, dp|->dp_Lin|
|000183c0| 6b 29 3b 0a 09 09 09 09 | 57 61 69 74 50 6f 72 74 |k);.....|WaitPort|
|000183d0| 28 73 74 61 72 74 75 70 | 5f 73 79 6e 63 29 3b 20 |(startup|_sync); |
|000183e0| 47 65 74 4d 73 67 28 73 | 74 61 72 74 75 70 5f 73 |GetMsg(s|tartup_s|
|000183f0| 79 6e 63 29 3b 0a 09 09 | 09 09 0a 09 09 09 09 69 |ync);...|.......i|
|00018400| 66 20 28 64 70 2d 3e 64 | 70 5f 52 65 73 31 29 20 |f (dp->d|p_Res1) |
|00018410| 7b 0a 09 09 09 09 09 6d | 79 5f 6c 6f 63 6b 20 3d |{......m|y_lock =|
|00018420| 20 28 6c 6f 63 6b 20 2a | 29 64 70 2d 3e 64 70 5f | (lock *|)dp->dp_|
|00018430| 52 65 73 32 3b 0a 09 09 | 09 09 09 77 68 69 6c 65 |Res2;...|...while|
|00018440| 20 28 6d 79 5f 6c 6f 63 | 6b 29 20 7b 0a 09 09 09 | (my_loc|k) {....|
|00018450| 09 09 09 61 64 6f 70 74 | 28 6d 79 5f 6c 6f 63 6b |...adopt|(my_lock|
|00018460| 2c 20 56 5f 6c 6f 63 6b | 29 3b 0a 09 09 09 09 09 |, V_lock|);......|
|00018470| 09 6d 79 5f 6c 6f 63 6b | 20 3d 20 6d 79 5f 6c 6f |.my_lock| = my_lo|
|00018480| 63 6b 2d 3e 6e 65 78 74 | 3b 0a 09 09 09 09 09 7d |ck->next|;......}|
|00018490| 0a 09 09 09 09 09 0a 09 | 09 09 09 09 72 65 6d 6f |........|....remo|
|000184a0| 76 65 5f 73 69 74 65 28 | 28 73 69 74 65 20 2a 29 |ve_site(|(site *)|
|000184b0| 6d 79 5f 73 69 74 65 29 | 3b 0a 09 09 09 09 7d 0a |my_site)|;.....}.|
|000184c0| 09 09 09 09 0a 09 09 09 | 09 63 6f 6e 74 69 6e 75 |........|.continu|
|000184d0| 65 3b 0a 09 09 09 64 65 | 66 61 75 6c 74 3a 0a 09 |e;....de|fault:..|
|000184e0| 09 09 09 73 68 6f 77 5f | 69 6e 74 28 64 70 2d 3e |...show_|int(dp->|
|000184f0| 64 70 5f 54 79 70 65 29 | 3b 0a 09 09 09 09 64 70 |dp_Type)|;.....dp|
|00018500| 2d 3e 64 70 5f 52 65 73 | 31 20 3d 20 44 4f 53 46 |->dp_Res|1 = DOSF|
|00018510| 41 4c 53 45 3b 0a 09 09 | 09 09 64 70 2d 3e 64 70 |ALSE;...|..dp->dp|
|00018520| 5f 52 65 73 32 20 3d 20 | 45 52 52 4f 52 5f 41 43 |_Res2 = |ERROR_AC|
|00018530| 54 49 4f 4e 5f 4e 4f 54 | 5f 4b 4e 4f 57 4e 3b 0a |TION_NOT|_KNOWN;.|
|00018540| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 09 7d 0a |....brea|k;....}.|
|00018550| 09 09 09 0a 09 09 09 64 | 70 2d 3e 64 70 5f 50 6f |.......d|p->dp_Po|
|00018560| 72 74 20 3d 20 66 74 70 | 5f 70 6f 72 74 3b 0a 09 |rt = ftp|_port;..|
|00018570| 09 09 0a 09 09 09 50 75 | 74 4d 73 67 28 72 65 70 |......Pu|tMsg(rep|
|00018580| 6c 79 2c 20 64 70 2d 3e | 64 70 5f 4c 69 6e 6b 29 |ly, dp->|dp_Link)|
|00018590| 3b 0a 09 09 7d 0a 09 7d | 0a 7d 0a 0a 76 6f 69 64 |;...}..}|.}..void|
|000185a0| 20 66 68 5f 69 67 6e 6f | 72 65 28 76 6f 69 64 29 | fh_igno|re(void)|
|000185b0| 0a 2f 2a 20 73 69 74 73 | 20 6f 6e 20 6f 75 72 20 |./* sits| on our |
|000185c0| 6d 65 73 73 61 67 65 20 | 70 6f 72 74 20 61 6e 64 |message |port and|
|000185d0| 20 63 61 6e 63 65 6c 73 | 20 61 6c 6c 20 61 63 74 | cancels| all act|
|000185e0| 69 6f 6e 73 20 2a 2f 0a | 7b 0a 09 73 74 72 75 63 |ions */.|{..struc|
|000185f0| 74 20 4d 65 73 73 61 67 | 65 20 2a 6d 73 67 3b 0a |t Messag|e *msg;.|
|00018600| 09 73 74 72 75 63 74 20 | 4d 73 67 50 6f 72 74 20 |.struct |MsgPort |
|00018610| 2a 72 65 70 6c 79 3b 0a | 09 73 74 72 75 63 74 20 |*reply;.|.struct |
|00018620| 44 6f 73 50 61 63 6b 65 | 74 20 2a 64 70 3b 0a 09 |DosPacke|t *dp;..|
|00018630| 62 33 32 20 73 69 67 6e | 61 6c 73 3b 0a 09 6c 6f |b32 sign|als;..lo|
|00018640| 63 6b 20 2a 6c 3b 0a 09 | 0a 09 73 69 67 6e 61 6c |ck *l;..|..signal|
|00018650| 73 20 3d 20 28 31 20 3c | 3c 20 66 74 70 5f 70 6f |s = (1 <|< ftp_po|
|00018660| 72 74 2d 3e 6d 70 5f 53 | 69 67 42 69 74 29 3b 0a |rt->mp_S|igBit);.|
|00018670| 09 0a 09 77 68 69 6c 65 | 20 28 31 29 20 7b 0a 09 |...while| (1) {..|
|00018680| 09 57 61 69 74 28 73 69 | 67 6e 61 6c 73 29 3b 0a |.Wait(si|gnals);.|
|00018690| 09 09 0a 09 09 77 68 69 | 6c 65 20 28 6d 73 67 20 |.....whi|le (msg |
|000186a0| 3d 20 47 65 74 4d 73 67 | 28 66 74 70 5f 70 6f 72 |= GetMsg|(ftp_por|
|000186b0| 74 29 29 20 7b 0a 09 09 | 09 64 70 20 3d 20 28 73 |t)) {...|.dp = (s|
|000186c0| 74 72 75 63 74 20 44 6f | 73 50 61 63 6b 65 74 20 |truct Do|sPacket |
|000186d0| 2a 29 6d 73 67 2d 3e 6d | 6e 5f 4e 6f 64 65 2e 6c |*)msg->m|n_Node.l|
|000186e0| 6e 5f 4e 61 6d 65 3b 0a | 09 09 09 0a 09 09 09 69 |n_Name;.|.......i|
|000186f0| 66 20 28 64 70 2d 3e 64 | 70 5f 54 79 70 65 20 3d |f (dp->d|p_Type =|
|00018700| 3d 20 41 43 54 49 4f 4e | 5f 46 52 45 45 5f 4c 4f |= ACTION|_FREE_LO|
|00018710| 43 4b 29 20 7b 0a 09 09 | 09 09 6c 20 3d 20 28 6c |CK) {...|..l = (l|
|00018720| 6f 63 6b 20 2a 29 28 64 | 70 2d 3e 64 70 5f 41 72 |ock *)(d|p->dp_Ar|
|00018730| 67 31 20 3c 3c 20 32 29 | 3b 0a 09 09 09 09 76 65 |g1 << 2)|;.....ve|
|00018740| 72 69 66 79 28 6c 2c 20 | 56 5f 6c 6f 63 6b 29 3b |rify(l, |V_lock);|
|00018750| 0a 09 09 09 09 0a 09 09 | 09 09 64 65 61 6c 6c 6f |........|..deallo|
|00018760| 63 61 74 65 28 6c 2c 20 | 56 5f 6c 6f 63 6b 29 3b |cate(l, |V_lock);|
|00018770| 0a 09 09 09 09 0a 09 09 | 09 09 64 70 2d 3e 64 70 |........|..dp->dp|
|00018780| 5f 52 65 73 31 20 3d 20 | 44 4f 53 54 52 55 45 3b |_Res1 = |DOSTRUE;|
|00018790| 0a 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 32 |.....dp-|>dp_Res2|
|000187a0| 20 3d 20 30 3b 0a 09 09 | 09 7d 20 65 6c 73 65 20 | = 0;...|.} else |
|000187b0| 7b 0a 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |{.....dp|->dp_Res|
|000187c0| 31 20 3d 20 44 4f 53 46 | 41 4c 53 45 3b 0a 09 09 |1 = DOSF|ALSE;...|
|000187d0| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 32 20 3d 20 |..dp->dp|_Res2 = |
|000187e0| 45 52 52 4f 52 5f 41 43 | 54 49 4f 4e 5f 4e 4f 54 |ERROR_AC|TION_NOT|
|000187f0| 5f 4b 4e 4f 57 4e 3b 0a | 09 09 09 7d 0a 09 09 09 |_KNOWN;.|...}....|
|00018800| 0a 09 09 09 72 65 70 6c | 79 20 3d 20 64 70 2d 3e |....repl|y = dp->|
|00018810| 64 70 5f 50 6f 72 74 3b | 0a 09 09 09 64 70 2d 3e |dp_Port;|....dp->|
|00018820| 64 70 5f 50 6f 72 74 20 | 3d 20 66 74 70 5f 70 6f |dp_Port |= ftp_po|
|00018830| 72 74 3b 0a 09 09 09 0a | 09 09 09 50 75 74 4d 73 |rt;.....|...PutMs|
|00018840| 67 28 72 65 70 6c 79 2c | 20 64 70 2d 3e 64 70 5f |g(reply,| dp->dp_|
|00018850| 4c 69 6e 6b 29 3b 0a 09 | 09 7d 0a 09 7d 0a 7d 0a |Link);..|.}..}.}.|
|00018860| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018870| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018880| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018890| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000188a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000188b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000188c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000188d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000188e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000188f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018900| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018910| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018920| 00 00 00 00 00 00 00 00 | 00 00 03 72 00 00 05 f5 |........|...r....|
|00018930| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 03 71 |........|.......q|
|00018940| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018950| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018960| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018970| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018980| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018990| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000189a0| 00 00 00 00 00 00 1a f9 | 00 00 04 15 00 00 08 b7 |........|........|
|000189b0| 0a 4d 41 53 68 61 72 65 | 5f 36 34 00 00 00 00 00 |.MAShare|_64.....|
|000189c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000189d0| 00 00 00 00 00 00 00 00 | 00 00 1a f9 00 00 04 15 |........|........|
|000189e0| 00 00 09 1d 00 00 1a f9 | 00 00 03 fa 00 00 01 25 |........|.......%|
|000189f0| 00 00 00 00 00 00 00 00 | 00 00 03 71 00 00 00 01 |........|...q....|
|00018a00| 00 00 00 02 00 00 00 c5 | 00 00 00 24 00 00 00 00 |........|...$....|
|00018a10| 00 00 00 c6 97 26 dc 42 | 00 00 00 00 00 00 00 00 |.....&.B|........|
|00018a20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018a30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018a40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018a50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018a60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018a70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018a80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018a90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018aa0| 00 00 00 00 00 00 00 00 | 00 00 00 e9 00 00 00 e8 |........|........|
|00018ab0| 00 00 00 e7 00 00 00 e6 | 00 00 00 e5 00 00 00 e4 |........|........|
|00018ac0| 00 00 00 e3 00 00 00 e2 | 00 00 00 e1 00 00 00 e0 |........|........|
|00018ad0| 00 00 00 df 00 00 00 de | 00 00 00 dd 00 00 00 dc |........|........|
|00018ae0| 00 00 00 db 00 00 00 da | 00 00 00 d9 00 00 00 d8 |........|........|
|00018af0| 00 00 00 d7 00 00 00 d6 | 00 00 00 d5 00 00 00 d4 |........|........|
|00018b00| 00 00 00 d3 00 00 00 d2 | 00 00 00 d1 00 00 00 d0 |........|........|
|00018b10| 00 00 00 cf 00 00 00 ce | 00 00 00 cd 00 00 00 cc |........|........|
|00018b20| 00 00 00 cb 00 00 00 ca | 00 00 00 c9 00 00 00 c8 |........|........|
|00018b30| 00 00 00 c7 00 00 00 c6 | 00 00 00 00 00 00 00 00 |........|........|
|00018b40| 00 00 00 00 00 00 46 fb | 00 00 00 00 00 00 00 00 |......F.|........|
|00018b50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018b60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018b70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018b80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018b90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018ba0| 00 00 00 00 00 00 19 39 | 00 00 03 b3 00 00 01 f4 |.......9|........|
|00018bb0| 07 6c 6f 63 61 6c 2e 63 | 00 00 00 00 00 00 00 00 |.local.c|........|
|00018bc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018bd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018be0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00018bf0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00018c00| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|00018c10| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|00018c20| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|00018c30| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|00018c40| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|00018c50| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|00018c60| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|00018c70| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|00018c80| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|00018c90| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|00018ca0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|00018cb0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|00018cc0| 23 69 6e 63 6c 75 64 65 | 20 3c 65 78 65 63 2f 74 |#include| <exec/t|
|00018cd0| 79 70 65 73 2e 68 3e 0a | 23 69 6e 63 6c 75 64 65 |ypes.h>.|#include|
|00018ce0| 20 3c 65 78 65 63 2f 6d | 65 6d 6f 72 79 2e 68 3e | <exec/m|emory.h>|
|00018cf0| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 65 78 65 63 2f |.#includ|e <exec/|
|00018d00| 61 6c 65 72 74 73 2e 68 | 3e 0a 0a 23 69 6e 63 6c |alerts.h|>..#incl|
|00018d10| 75 64 65 20 3c 64 6f 73 | 2f 64 6f 73 2e 68 3e 0a |ude <dos|/dos.h>.|
|00018d20| 23 69 6e 63 6c 75 64 65 | 20 3c 64 6f 73 2f 64 6f |#include| <dos/do|
|00018d30| 73 65 78 74 65 6e 73 2e | 68 3e 0a 23 69 6e 63 6c |sextens.|h>.#incl|
|00018d40| 75 64 65 20 3c 64 6f 73 | 2f 64 6f 73 74 61 67 73 |ude <dos|/dostags|
|00018d50| 2e 68 3e 0a 0a 23 69 6e | 63 6c 75 64 65 20 3c 70 |.h>..#in|clude <p|
|00018d60| 72 6f 74 6f 2f 65 78 65 | 63 2e 68 3e 0a 23 69 6e |roto/exe|c.h>.#in|
|00018d70| 63 6c 75 64 65 20 3c 70 | 72 6f 74 6f 2f 64 6f 73 |clude <p|roto/dos|
|00018d80| 2e 68 3e 0a 0a 23 69 6e | 63 6c 75 64 65 20 3c 73 |.h>..#in|clude <s|
|00018d90| 74 64 69 6f 2e 68 3e 0a | 23 69 6e 63 6c 75 64 65 |tdio.h>.|#include|
|00018da0| 20 3c 73 74 64 6c 69 62 | 2e 68 3e 0a 23 69 6e 63 | <stdlib|.h>.#inc|
|00018db0| 6c 75 64 65 20 3c 73 74 | 72 69 6e 67 2e 68 3e 0a |lude <st|ring.h>.|
|00018dc0| 0a 23 69 6e 63 6c 75 64 | 65 20 22 65 76 74 79 70 |.#includ|e "evtyp|
|00018dd0| 65 73 2e 68 22 0a 23 69 | 6e 63 6c 75 64 65 20 22 |es.h".#i|nclude "|
|00018de0| 76 65 72 69 66 79 2e 68 | 22 0a 23 69 6e 63 6c 75 |verify.h|".#inclu|
|00018df0| 64 65 20 22 74 63 70 2e | 68 22 0a 0a 23 69 6e 63 |de "tcp.|h"..#inc|
|00018e00| 6c 75 64 65 20 22 73 69 | 74 65 2e 68 22 0a 23 69 |lude "si|te.h".#i|
|00018e10| 6e 63 6c 75 64 65 20 22 | 66 74 70 2e 68 22 0a 23 |nclude "|ftp.h".#|
|00018e20| 69 6e 63 6c 75 64 65 20 | 22 73 70 6c 69 74 2e 68 |include |"split.h|
|00018e30| 22 0a 23 69 6e 63 6c 75 | 64 65 20 22 6c 6f 63 61 |".#inclu|de "loca|
|00018e40| 6c 2e 68 22 0a 0a 23 69 | 6e 63 6c 75 64 65 20 22 |l.h"..#i|nclude "|
|00018e50| 67 6c 6f 62 61 6c 73 2e | 68 22 0a 0a 23 64 65 66 |globals.|h"..#def|
|00018e60| 69 6e 65 20 44 4f 53 42 | 61 73 65 20 5f 6c 6f 63 |ine DOSB|ase _loc|
|00018e70| 61 6c 5f 44 4f 53 42 61 | 73 65 0a 0a 73 74 72 75 |al_DOSBa|se..stru|
|00018e80| 63 74 20 44 6f 73 4c 69 | 62 72 61 72 79 20 2a 44 |ct DosLi|brary *D|
|00018e90| 4f 53 42 61 73 65 3b 0a | 0a 42 53 54 52 20 63 74 |OSBase;.|.BSTR ct|
|00018ea0| 6f 62 73 74 72 28 62 38 | 20 2a 73 29 0a 7b 0a 09 |obstr(b8| *s).{..|
|00018eb0| 62 38 20 2a 7a 3b 0a 09 | 69 6e 74 20 6c 65 6e 3b |b8 *z;..|int len;|
|00018ec0| 0a 09 0a 09 6c 65 6e 20 | 3d 20 73 74 72 6c 65 6e |....len |= strlen|
|00018ed0| 28 73 29 3b 0a 09 0a 09 | 7a 20 3d 20 28 62 38 20 |(s);....|z = (b8 |
|00018ee0| 2a 29 61 6c 6c 6f 63 61 | 74 65 28 6c 65 6e 20 2b |*)alloca|te(len +|
|00018ef0| 20 31 2c 20 56 5f 62 73 | 74 72 29 3b 0a 09 69 66 | 1, V_bs|tr);..if|
|00018f00| 20 28 21 7a 29 20 72 65 | 74 75 72 6e 20 30 3b 0a | (!z) re|turn 0;.|
|00018f10| 09 0a 09 7a 5b 30 5d 20 | 3d 20 6c 65 6e 3b 0a 0a |...z[0] |= len;..|
|00018f20| 09 69 66 20 28 6c 65 6e | 20 3e 20 30 29 20 7b 0a |.if (len| > 0) {.|
|00018f30| 09 09 6d 65 6d 63 70 79 | 28 26 7a 5b 31 5d 2c 20 |..memcpy|(&z[1], |
|00018f40| 73 2c 20 6c 65 6e 29 3b | 0a 09 7d 0a 0a 09 72 65 |s, len);|..}...re|
|00018f50| 74 75 72 6e 20 28 42 53 | 54 52 29 28 28 62 33 32 |turn (BS|TR)((b32|
|00018f60| 29 7a 20 3e 3e 20 32 29 | 3b 0a 7d 0a 0a 76 6f 69 |)z >> 2)|;.}..voi|
|00018f70| 64 20 66 72 65 65 5f 62 | 73 74 72 28 42 53 54 52 |d free_b|str(BSTR|
|00018f80| 20 62 29 0a 7b 0a 09 64 | 65 61 6c 6c 6f 63 61 74 | b).{..d|eallocat|
|00018f90| 65 28 28 76 6f 69 64 20 | 2a 29 28 62 20 3c 3c 20 |e((void |*)(b << |
|00018fa0| 32 29 2c 20 56 5f 62 73 | 74 72 29 3b 0a 7d 0a 0a |2), V_bs|tr);.}..|
|00018fb0| 76 6f 69 64 20 6c 6f 63 | 6b 5f 6d 65 73 73 61 67 |void loc|k_messag|
|00018fc0| 65 28 42 50 54 52 20 6c | 2c 20 73 74 72 75 63 74 |e(BPTR l|, struct|
|00018fd0| 20 44 6f 73 50 61 63 6b | 65 74 20 2a 64 70 29 0a | DosPack|et *dp).|
|00018fe0| 7b 0a 09 73 74 72 75 63 | 74 20 46 69 6c 65 4c 6f |{..struc|t FileLo|
|00018ff0| 63 6b 20 2a 66 6c 3b 0a | 09 0a 09 66 6c 20 3d 20 |ck *fl;.|...fl = |
|00019000| 28 73 74 72 75 63 74 20 | 46 69 6c 65 4c 6f 63 6b |(struct |FileLock|
|00019010| 20 2a 29 28 6c 20 3c 3c | 20 32 29 3b 0a 09 0a 09 | *)(l <<| 2);....|
|00019020| 50 75 74 4d 73 67 28 66 | 6c 2d 3e 66 6c 5f 54 61 |PutMsg(f|l->fl_Ta|
|00019030| 73 6b 2c 20 64 70 2d 3e | 64 70 5f 4c 69 6e 6b 29 |sk, dp->|dp_Link)|
|00019040| 3b 0a 7d 0a 0a 76 6f 69 | 64 20 5f 5f 73 61 76 65 |;.}..voi|d __save|
|00019050| 64 73 20 6c 6f 63 61 6c | 5f 68 61 6e 64 6c 65 72 |ds local|_handler|
|00019060| 28 76 6f 69 64 29 0a 7b | 0a 09 73 74 72 75 63 74 |(void).{|..struct|
|00019070| 20 50 72 6f 63 65 73 73 | 20 2a 6d 65 3b 0a 09 73 | Process| *me;..s|
|00019080| 74 72 75 63 74 20 4d 65 | 73 73 61 67 65 20 2a 6d |truct Me|ssage *m|
|00019090| 73 67 3b 0a 09 73 74 72 | 75 63 74 20 44 6f 73 50 |sg;..str|uct DosP|
|000190a0| 61 63 6b 65 74 20 2a 64 | 70 3b 0a 09 73 74 72 75 |acket *d|p;..stru|
|000190b0| 63 74 20 4d 73 67 50 6f | 72 74 20 2a 6c 6f 63 61 |ct MsgPo|rt *loca|
|000190c0| 6c 2c 20 2a 72 65 70 6c | 79 2c 20 2a 73 79 6e 63 |l, *repl|y, *sync|
|000190d0| 3b 0a 09 62 33 32 20 73 | 69 67 6e 61 6c 73 3b 0a |;..b32 s|ignals;.|
|000190e0| 09 73 70 6c 69 74 20 73 | 64 2c 20 73 64 32 3b 0a |.split s|d, sd2;.|
|000190f0| 09 6c 6f 63 6b 20 2a 6c | 6f 63 6b 73 2c 20 2a 2a |.lock *l|ocks, **|
|00019100| 73 6c 6f 63 6b 2c 20 2a | 6e 65 77 5f 6c 6f 63 6b |slock, *|new_lock|
|00019110| 2c 20 2a 6e 6c 6f 63 6b | 3b 0a 09 62 33 32 20 72 |, *nlock|;..b32 r|
|00019120| 66 73 6c 3b 09 2f 2a 20 | 72 65 61 6c 20 66 69 6c |fsl;./* |real fil|
|00019130| 65 20 73 79 73 74 65 6d | 20 6c 6f 63 6b 20 2a 2f |e system| lock */|
|00019140| 0a 09 73 74 72 75 63 74 | 20 46 69 6c 65 49 6e 66 |..struct| FileInf|
|00019150| 6f 42 6c 6f 63 6b 20 2a | 66 69 62 3b 0a 09 73 74 |oBlock *|fib;..st|
|00019160| 72 75 63 74 20 46 69 6c | 65 48 61 6e 64 6c 65 20 |ruct Fil|eHandle |
|00019170| 2a 66 68 3b 0a 09 66 69 | 6c 65 5f 69 6e 66 6f 20 |*fh;..fi|le_info |
|00019180| 2a 66 69 3b 0a 09 62 33 | 32 20 6f 31 2c 20 6f 32 |*fi;..b3|2 o1, o2|
|00019190| 2c 20 6f 33 2c 20 6f 34 | 3b 09 09 2f 2a 20 73 74 |, o3, o4|;../* st|
|000191a0| 6f 72 65 73 20 66 6f 72 | 20 6f 72 69 67 69 6e 61 |ores for| origina|
|000191b0| 6c 20 64 70 2d 3e 64 70 | 5f 41 72 67 31 20 65 74 |l dp->dp|_Arg1 et|
|000191c0| 63 20 2a 2f 0a 09 42 53 | 54 52 20 62 2c 20 62 32 |c */..BS|TR b, b2|
|000191d0| 3b 0a 09 0a 09 6c 6f 63 | 6b 73 20 3d 20 30 3b 0a |;....loc|ks = 0;.|
|000191e0| 09 0a 09 6d 65 6d 5f 74 | 72 61 63 6b 69 6e 67 5f |...mem_t|racking_|
|000191f0| 6f 6e 28 29 3b 0a 09 0a | 09 6d 65 20 3d 20 28 73 |on();...|.me = (s|
|00019200| 74 72 75 63 74 20 50 72 | 6f 63 65 73 73 20 2a 29 |truct Pr|ocess *)|
|00019210| 46 69 6e 64 54 61 73 6b | 28 30 6c 29 3b 0a 09 0a |FindTask|(0l);...|
|00019220| 09 6c 6f 63 61 6c 20 3d | 20 26 6d 65 2d 3e 70 72 |.local =| &me->pr|
|00019230| 5f 4d 73 67 50 6f 72 74 | 3b 0a 09 0a 09 57 61 69 |_MsgPort|;....Wai|
|00019240| 74 50 6f 72 74 28 6c 6f | 63 61 6c 29 3b 0a 09 6d |tPort(lo|cal);..m|
|00019250| 73 67 20 3d 20 47 65 74 | 4d 73 67 28 6c 6f 63 61 |sg = Get|Msg(loca|
|00019260| 6c 29 3b 0a 09 64 70 20 | 3d 20 28 73 74 72 75 63 |l);..dp |= (struc|
|00019270| 74 20 44 6f 73 50 61 63 | 6b 65 74 20 2a 29 6d 73 |t DosPac|ket *)ms|
|00019280| 67 2d 3e 6d 6e 5f 4e 6f | 64 65 2e 6c 6e 5f 4e 61 |g->mn_No|de.ln_Na|
|00019290| 6d 65 3b 0a 09 72 65 70 | 6c 79 20 3d 20 64 70 2d |me;..rep|ly = dp-|
|000192a0| 3e 64 70 5f 50 6f 72 74 | 3b 0a 09 0a 09 64 70 2d |>dp_Port|;....dp-|
|000192b0| 3e 64 70 5f 50 6f 72 74 | 20 3d 20 6c 6f 63 61 6c |>dp_Port| = local|
|000192c0| 3b 0a 09 0a 09 73 79 6e | 63 20 3d 20 43 72 65 61 |;....syn|c = Crea|
|000192d0| 74 65 50 6f 72 74 28 30 | 2c 20 30 29 3b 0a 09 69 |tePort(0|, 0);..i|
|000192e0| 66 20 28 21 73 79 6e 63 | 29 20 7b 0a 09 09 64 70 |f (!sync|) {...dp|
|000192f0| 2d 3e 64 70 5f 52 65 73 | 31 20 3d 20 44 4f 53 46 |->dp_Res|1 = DOSF|
|00019300| 41 4c 53 45 3b 0a 09 09 | 64 70 2d 3e 64 70 5f 52 |ALSE;...|dp->dp_R|
|00019310| 65 73 32 20 3d 20 45 52 | 52 4f 52 5f 4e 4f 5f 46 |es2 = ER|ROR_NO_F|
|00019320| 52 45 45 5f 53 54 4f 52 | 45 3b 0a 09 09 0a 09 09 |REE_STOR|E;......|
|00019330| 50 75 74 4d 73 67 28 72 | 65 70 6c 79 2c 20 64 70 |PutMsg(r|eply, dp|
|00019340| 2d 3e 64 70 5f 4c 69 6e | 6b 29 3b 0a 09 09 0a 09 |->dp_Lin|k);.....|
|00019350| 09 72 65 74 75 72 6e 3b | 0a 09 7d 0a 0a 2f 2a 20 |.return;|..}../* |
|00019360| 64 6f 20 49 20 72 65 61 | 6c 6c 79 20 6e 65 65 64 |do I rea|lly need|
|00019370| 20 44 4f 53 42 61 73 65 | 20 6f 70 65 6e 20 6e 6f | DOSBase| open no|
|00019380| 77 20 74 68 61 74 20 49 | 27 6d 20 70 61 63 6b 65 |w that I|'m packe|
|00019390| 74 69 6e 67 3f 20 2a 2f | 0a 0a 09 44 4f 53 42 61 |ting? */|...DOSBa|
|000193a0| 73 65 20 3d 20 28 73 74 | 72 75 63 74 20 44 6f 73 |se = (st|ruct Dos|
|000193b0| 4c 69 62 72 61 72 79 20 | 2a 29 4f 70 65 6e 4c 69 |Library |*)OpenLi|
|000193c0| 62 72 61 72 79 28 22 64 | 6f 73 2e 6c 69 62 72 61 |brary("d|os.libra|
|000193d0| 72 79 22 2c 20 33 36 29 | 3b 0a 09 69 66 20 28 21 |ry", 36)|;..if (!|
|000193e0| 44 4f 53 42 61 73 65 29 | 20 7b 0a 09 09 44 65 6c |DOSBase)| {...Del|
|000193f0| 65 74 65 50 6f 72 74 28 | 73 79 6e 63 29 3b 0a 0a |etePort(|sync);..|
|00019400| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 31 20 3d 20 |..dp->dp|_Res1 = |
|00019410| 44 4f 53 46 41 4c 53 45 | 3b 0a 09 09 64 70 2d 3e |DOSFALSE|;...dp->|
|00019420| 64 70 5f 52 65 73 32 20 | 3d 20 45 52 52 4f 52 5f |dp_Res2 |= ERROR_|
|00019430| 49 4e 56 41 4c 49 44 5f | 52 45 53 49 44 45 4e 54 |INVALID_|RESIDENT|
|00019440| 5f 4c 49 42 52 41 52 59 | 3b 0a 09 09 0a 09 09 50 |_LIBRARY|;......P|
|00019450| 75 74 4d 73 67 28 72 65 | 70 6c 79 2c 20 64 70 2d |utMsg(re|ply, dp-|
|00019460| 3e 64 70 5f 4c 69 6e 6b | 29 3b 0a 09 09 0a 09 09 |>dp_Link|);......|
|00019470| 72 65 74 75 72 6e 3b 0a | 09 7d 20 65 6c 73 65 20 |return;.|.} else |
|00019480| 7b 0a 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |{...dp->|dp_Res1 |
|00019490| 3d 20 44 4f 53 54 52 55 | 45 3b 0a 09 7d 0a 09 64 |= DOSTRU|E;..}..d|
|000194a0| 70 2d 3e 64 70 5f 52 65 | 73 32 20 3d 20 30 3b 0a |p->dp_Re|s2 = 0;.|
|000194b0| 09 0a 09 50 75 74 4d 73 | 67 28 72 65 70 6c 79 2c |...PutMs|g(reply,|
|000194c0| 20 64 70 2d 3e 64 70 5f | 4c 69 6e 6b 29 3b 0a 0a | dp->dp_|Link);..|
|000194d0| 09 73 69 67 6e 61 6c 73 | 20 3d 20 28 31 20 3c 3c |.signals| = (1 <<|
|000194e0| 20 6c 6f 63 61 6c 2d 3e | 6d 70 5f 53 69 67 42 69 | local->|mp_SigBi|
|000194f0| 74 29 3b 0a 09 0a 09 77 | 68 69 6c 65 20 28 31 29 |t);....w|hile (1)|
|00019500| 20 7b 0a 09 09 57 61 69 | 74 28 73 69 67 6e 61 6c | {...Wai|t(signal|
|00019510| 73 29 3b 0a 09 09 0a 09 | 09 77 68 69 6c 65 20 28 |s);.....|.while (|
|00019520| 6d 73 67 20 3d 20 47 65 | 74 4d 73 67 28 6c 6f 63 |msg = Ge|tMsg(loc|
|00019530| 61 6c 29 29 20 7b 0a 09 | 09 09 64 70 20 3d 20 28 |al)) {..|..dp = (|
|00019540| 73 74 72 75 63 74 20 44 | 6f 73 50 61 63 6b 65 74 |struct D|osPacket|
|00019550| 20 2a 29 6d 73 67 2d 3e | 6d 6e 5f 4e 6f 64 65 2e | *)msg->|mn_Node.|
|00019560| 6c 6e 5f 4e 61 6d 65 3b | 0a 09 09 09 72 65 70 6c |ln_Name;|....repl|
|00019570| 79 20 3d 20 64 70 2d 3e | 64 70 5f 50 6f 72 74 3b |y = dp->|dp_Port;|
|00019580| 0a 09 09 09 0a 09 09 09 | 74 72 75 74 68 28 64 70 |........|truth(dp|
|00019590| 2d 3e 64 70 5f 4c 69 6e | 6b 20 3d 3d 20 6d 73 67 |->dp_Lin|k == msg|
|000195a0| 29 3b 0a 09 09 09 0a 09 | 09 09 73 77 69 74 63 68 |);......|..switch|
|000195b0| 20 28 64 70 2d 3e 64 70 | 5f 54 79 70 65 29 20 7b | (dp->dp|_Type) {|
|000195c0| 0a 09 09 09 63 61 73 65 | 20 41 43 54 49 4f 4e 5f |....case| ACTION_|
|000195d0| 44 49 45 3a 0a 09 09 09 | 09 2f 2a 20 63 6c 6f 73 |DIE:....|./* clos|
|000195e0| 65 20 61 6c 6c 20 6c 6f | 63 6b 73 20 2a 2f 0a 09 |e all lo|cks */..|
|000195f0| 09 09 09 6e 6c 6f 63 6b | 20 3d 20 6c 6f 63 6b 73 |...nlock| = locks|
|00019600| 3b 0a 09 09 09 09 77 68 | 69 6c 65 20 28 6e 6c 6f |;.....wh|ile (nlo|
|00019610| 63 6b 29 20 7b 0a 09 09 | 09 09 09 6e 65 77 5f 6c |ck) {...|...new_l|
|00019620| 6f 63 6b 20 3d 20 6e 6c | 6f 63 6b 2d 3e 6e 65 78 |ock = nl|ock->nex|
|00019630| 74 3b 0a 09 09 09 09 09 | 0a 09 09 09 09 09 69 66 |t;......|......if|
|00019640| 20 28 6e 6c 6f 63 6b 2d | 3e 72 66 73 6c 20 21 3d | (nlock-|>rfsl !=|
|00019650| 20 66 74 70 68 6f 73 74 | 73 5f 6c 6f 63 6b 29 20 | ftphost|s_lock) |
|00019660| 0a 09 09 09 09 09 09 55 | 6e 4c 6f 63 6b 28 6e 6c |.......U|nLock(nl|
|00019670| 6f 63 6b 2d 3e 72 66 73 | 6c 29 3b 0a 09 09 09 09 |ock->rfs|l);.....|
|00019680| 09 0a 09 09 09 09 09 64 | 69 73 6f 77 6e 28 6e 6c |.......d|isown(nl|
|00019690| 6f 63 6b 2c 20 56 5f 6c | 6f 63 6b 29 3b 0a 09 09 |ock, V_l|ock);...|
|000196a0| 09 09 09 6e 6c 6f 63 6b | 20 3d 20 6e 65 77 5f 6c |...nlock| = new_l|
|000196b0| 6f 63 6b 3b 0a 09 09 09 | 09 7d 0a 09 09 09 09 0a |ock;....|.}......|
|000196c0| 09 09 09 09 43 6c 6f 73 | 65 4c 69 62 72 61 72 79 |....Clos|eLibrary|
|000196d0| 28 28 73 74 72 75 63 74 | 20 4c 69 62 72 61 72 79 |((struct| Library|
|000196e0| 20 2a 29 44 4f 53 42 61 | 73 65 29 3b 0a 09 09 09 | *)DOSBa|se);....|
|000196f0| 09 44 65 6c 65 74 65 50 | 6f 72 74 28 73 79 6e 63 |.DeleteP|ort(sync|
|00019700| 29 3b 0a 09 09 09 09 0a | 09 09 09 09 46 6f 72 62 |);......|....Forb|
|00019710| 69 64 28 29 3b 0a 09 09 | 09 09 64 70 2d 3e 64 70 |id();...|..dp->dp|
|00019720| 5f 52 65 73 31 20 3d 20 | 44 4f 53 54 52 55 45 3b |_Res1 = |DOSTRUE;|
|00019730| 0a 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 32 |.....dp-|>dp_Res2|
|00019740| 20 3d 20 28 62 33 32 29 | 6c 6f 63 6b 73 3b 09 2f | = (b32)|locks;./|
|00019750| 2a 20 73 6f 20 74 68 65 | 79 20 63 61 6e 20 61 64 |* so the|y can ad|
|00019760| 6f 70 74 20 74 68 65 6d | 20 2a 2f 0a 09 09 09 09 |opt them| */.....|
|00019770| 0a 09 09 09 09 50 75 74 | 4d 73 67 28 72 65 70 6c |.....Put|Msg(repl|
|00019780| 79 2c 20 64 70 2d 3e 64 | 70 5f 4c 69 6e 6b 29 3b |y, dp->d|p_Link);|
|00019790| 0a 09 09 09 09 0a 09 09 | 09 09 63 68 65 63 6b 5f |........|..check_|
|000197a0| 6d 65 6d 6f 72 79 28 29 | 3b 0a 09 09 09 09 0a 09 |memory()|;.......|
|000197b0| 09 09 09 72 65 74 75 72 | 6e 3b 0a 09 09 09 63 61 |...retur|n;....ca|
|000197c0| 73 65 20 41 43 54 49 4f | 4e 5f 4c 4f 43 41 54 45 |se ACTIO|N_LOCATE|
|000197d0| 5f 4f 42 4a 45 43 54 3a | 0a 09 09 09 09 69 66 20 |_OBJECT:|.....if |
|000197e0| 28 21 73 70 6c 69 74 5f | 64 61 74 61 28 28 6c 6f |(!split_|data((lo|
|000197f0| 63 6b 20 2a 29 28 64 70 | 2d 3e 64 70 5f 41 72 67 |ck *)(dp|->dp_Arg|
|00019800| 31 20 3c 3c 20 32 29 2c | 0a 09 09 09 09 09 28 62 |1 << 2),|......(b|
|00019810| 38 20 2a 29 28 64 70 2d | 3e 64 70 5f 41 72 67 32 |8 *)(dp-|>dp_Arg2|
|00019820| 20 3c 3c 20 32 29 2c 20 | 26 73 64 29 29 20 7b 0a | << 2), |&sd)) {.|
|00019830| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 31 |.....dp-|>dp_Res1|
|00019840| 20 3d 20 30 3b 0a 09 09 | 09 09 09 64 70 2d 3e 64 | = 0;...|...dp->d|
|00019850| 70 5f 52 65 73 32 20 3d | 20 45 52 52 4f 52 5f 4e |p_Res2 =| ERROR_N|
|00019860| 4f 5f 46 52 45 45 5f 53 | 54 4f 52 45 3b 0a 09 09 |O_FREE_S|TORE;...|
|00019870| 09 09 09 62 72 65 61 6b | 3b 0a 09 09 09 09 7d 0a |...break|;.....}.|
|00019880| 09 09 09 09 0a 09 09 09 | 09 6e 65 77 5f 6c 6f 63 |........|.new_loc|
|00019890| 6b 20 3d 20 28 6c 6f 63 | 6b 20 2a 29 61 6c 6c 6f |k = (loc|k *)allo|
|000198a0| 63 61 74 65 28 73 69 7a | 65 6f 66 28 2a 6e 65 77 |cate(siz|eof(*new|
|000198b0| 5f 6c 6f 63 6b 29 2c 20 | 56 5f 6c 6f 63 6b 29 3b |_lock), |V_lock);|
|000198c0| 0a 09 09 09 09 69 66 20 | 28 21 6e 65 77 5f 6c 6f |.....if |(!new_lo|
|000198d0| 63 6b 29 20 7b 0a 09 09 | 09 09 09 73 68 6f 77 5f |ck) {...|...show_|
|000198e0| 73 74 72 69 6e 67 28 22 | 58 58 32 22 29 3b 0a 09 |string("|XX2");..|
|000198f0| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |....dp->|dp_Res1 |
|00019900| 3d 20 30 3b 0a 09 09 09 | 09 09 64 70 2d 3e 64 70 |= 0;....|..dp->dp|
|00019910| 5f 52 65 73 32 20 3d 20 | 45 52 52 4f 52 5f 4e 4f |_Res2 = |ERROR_NO|
|00019920| 5f 46 52 45 45 5f 53 54 | 4f 52 45 3b 0a 0a 09 09 |_FREE_ST|ORE;....|
|00019930| 09 09 09 65 6e 64 5f 73 | 70 6c 69 74 28 26 73 64 |...end_s|plit(&sd|
|00019940| 29 3b 0a 09 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |);......|break;..|
|00019950| 09 09 09 7d 0a 09 09 09 | 09 0a 09 09 09 09 69 66 |...}....|......if|
|00019960| 20 28 21 73 64 2e 70 61 | 74 68 29 20 7b 09 2f 2a | (!sd.pa|th) {./*|
|00019970| 20 74 68 65 79 20 77 61 | 6e 74 20 74 68 65 20 72 | they wa|nt the r|
|00019980| 6f 6f 74 20 2a 2f 0a 09 | 09 09 09 09 69 66 20 28 |oot */..|....if (|
|00019990| 64 70 2d 3e 64 70 5f 41 | 72 67 33 20 3d 3d 20 45 |dp->dp_A|rg3 == E|
|000199a0| 58 43 4c 55 53 49 56 45 | 5f 4c 4f 43 4b 29 20 7b |XCLUSIVE|_LOCK) {|
|000199b0| 0a 09 09 09 09 09 09 64 | 65 61 6c 6c 6f 63 61 74 |.......d|eallocat|
|000199c0| 65 28 6e 65 77 5f 6c 6f | 63 6b 2c 20 56 5f 6c 6f |e(new_lo|ck, V_lo|
|000199d0| 63 6b 29 3b 0a 09 09 09 | 09 09 09 0a 09 09 09 09 |ck);....|........|
|000199e0| 09 09 65 6e 64 5f 73 70 | 6c 69 74 28 26 73 64 29 |..end_sp|lit(&sd)|
|000199f0| 3b 0a 09 09 09 09 09 09 | 0a 09 09 09 09 09 09 64 |;.......|.......d|
|00019a00| 70 2d 3e 64 70 5f 52 65 | 73 31 20 3d 20 30 3b 0a |p->dp_Re|s1 = 0;.|
|00019a10| 09 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|00019a20| 32 20 3d 20 45 52 52 4f | 52 5f 4f 42 4a 45 43 54 |2 = ERRO|R_OBJECT|
|00019a30| 5f 49 4e 5f 55 53 45 3b | 0a 09 09 09 09 09 09 62 |_IN_USE;|.......b|
|00019a40| 72 65 61 6b 3b 0a 09 09 | 09 09 09 7d 0a 09 09 09 |reak;...|...}....|
|00019a50| 09 09 0a 09 09 09 09 09 | 72 66 73 6c 20 3d 20 66 |........|rfsl = f|
|00019a60| 74 70 68 6f 73 74 73 5f | 6c 6f 63 6b 3b 0a 09 09 |tphosts_|lock;...|
|00019a70| 09 09 7d 20 65 6c 73 65 | 20 7b 0a 09 09 09 09 09 |..} else| {......|
|00019a80| 6f 31 20 3d 20 64 70 2d | 3e 64 70 5f 41 72 67 31 |o1 = dp-|>dp_Arg1|
|00019a90| 3b 0a 09 09 09 09 09 6f | 32 20 3d 20 64 70 2d 3e |;......o|2 = dp->|
|00019aa0| 64 70 5f 41 72 67 32 3b | 0a 09 09 09 09 09 0a 09 |dp_Arg2;|........|
|00019ab0| 09 09 09 09 64 70 2d 3e | 64 70 5f 41 72 67 31 20 |....dp->|dp_Arg1 |
|00019ac0| 3d 20 66 74 70 68 6f 73 | 74 73 5f 6c 6f 63 6b 3b |= ftphos|ts_lock;|
|00019ad0| 0a 09 09 09 09 09 62 20 | 3d 20 63 74 6f 62 73 74 |......b |= ctobst|
|00019ae0| 72 28 73 64 2e 70 61 74 | 68 29 3b 0a 09 09 09 09 |r(sd.pat|h);.....|
|00019af0| 09 69 66 20 28 21 62 29 | 20 7b 0a 09 09 09 09 09 |.if (!b)| {......|
|00019b00| 09 64 65 61 6c 6c 6f 63 | 61 74 65 28 6e 65 77 5f |.dealloc|ate(new_|
|00019b10| 6c 6f 63 6b 2c 20 56 5f | 6c 6f 63 6b 29 3b 0a 09 |lock, V_|lock);..|
|00019b20| 09 09 09 09 09 0a 09 09 | 09 09 09 09 65 6e 64 5f |........|....end_|
|00019b30| 73 70 6c 69 74 28 26 73 | 64 29 3b 0a 09 09 09 09 |split(&s|d);.....|
|00019b40| 09 09 0a 09 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |........|.dp->dp_|
|00019b50| 52 65 73 31 20 3d 20 30 | 3b 0a 09 09 09 09 09 09 |Res1 = 0|;.......|
|00019b60| 64 70 2d 3e 64 70 5f 52 | 65 73 32 20 3d 20 45 52 |dp->dp_R|es2 = ER|
|00019b70| 52 4f 52 5f 4e 4f 5f 46 | 52 45 45 5f 53 54 4f 52 |ROR_NO_F|REE_STOR|
|00019b80| 45 3b 0a 09 09 09 09 09 | 09 62 72 65 61 6b 3b 0a |E;......|.break;.|
|00019b90| 09 09 09 09 09 7d 0a 09 | 09 09 09 09 0a 09 09 09 |.....}..|........|
|00019ba0| 09 09 64 70 2d 3e 64 70 | 5f 41 72 67 32 20 3d 20 |..dp->dp|_Arg2 = |
|00019bb0| 62 3b 0a 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 50 |b;......|dp->dp_P|
|00019bc0| 6f 72 74 20 3d 20 73 79 | 6e 63 3b 0a 09 09 09 09 |ort = sy|nc;.....|
|00019bd0| 09 0a 09 09 09 09 09 6c | 6f 63 6b 5f 6d 65 73 73 |.......l|ock_mess|
|00019be0| 61 67 65 28 66 74 70 68 | 6f 73 74 73 5f 6c 6f 63 |age(ftph|osts_loc|
|00019bf0| 6b 2c 20 64 70 29 3b 0a | 09 09 09 09 09 57 61 69 |k, dp);.|.....Wai|
|00019c00| 74 50 6f 72 74 28 73 79 | 6e 63 29 3b 20 47 65 74 |tPort(sy|nc); Get|
|00019c10| 4d 73 67 28 73 79 6e 63 | 29 3b 0a 09 09 09 09 09 |Msg(sync|);......|
|00019c20| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 41 72 67 |......dp|->dp_Arg|
|00019c30| 31 20 3d 20 6f 31 3b 0a | 09 09 09 09 09 64 70 2d |1 = o1;.|.....dp-|
|00019c40| 3e 64 70 5f 41 72 67 32 | 20 3d 20 6f 32 3b 0a 09 |>dp_Arg2| = o2;..|
|00019c50| 09 09 09 09 0a 09 09 09 | 09 09 66 72 65 65 5f 62 |........|..free_b|
|00019c60| 73 74 72 28 62 29 3b 0a | 09 09 09 09 09 0a 09 09 |str(b);.|........|
|00019c70| 09 09 09 72 66 73 6c 20 | 3d 20 64 70 2d 3e 64 70 |...rfsl |= dp->dp|
|00019c80| 5f 52 65 73 31 3b 0a 09 | 09 09 09 7d 0a 0a 09 09 |_Res1;..|...}....|
|00019c90| 09 09 69 66 20 28 21 72 | 66 73 6c 29 20 7b 0a 09 |..if (!r|fsl) {..|
|00019ca0| 09 09 09 09 64 65 61 6c | 6c 6f 63 61 74 65 28 6e |....deal|locate(n|
|00019cb0| 65 77 5f 6c 6f 63 6b 2c | 20 56 5f 6c 6f 63 6b 29 |ew_lock,| V_lock)|
|00019cc0| 3b 0a 0a 09 09 09 09 09 | 65 6e 64 5f 73 70 6c 69 |;.......|end_spli|
|00019cd0| 74 28 26 73 64 29 3b 0a | 09 09 09 09 09 62 72 65 |t(&sd);.|.....bre|
|00019ce0| 61 6b 3b 0a 09 09 09 09 | 7d 0a 09 09 09 09 0a 09 |ak;.....|}.......|
|00019cf0| 09 09 09 65 6e 73 75 72 | 65 28 6e 65 77 5f 6c 6f |...ensur|e(new_lo|
|00019d00| 63 6b 2c 20 56 5f 6c 6f | 63 6b 29 3b 0a 09 09 09 |ck, V_lo|ck);....|
|00019d10| 09 0a 09 09 09 09 6e 65 | 77 5f 6c 6f 63 6b 2d 3e |......ne|w_lock->|
|00019d20| 70 6f 72 74 20 3d 20 6c | 6f 63 61 6c 3b 0a 09 09 |port = l|ocal;...|
|00019d30| 09 09 0a 09 09 09 09 6e | 65 77 5f 6c 6f 63 6b 2d |.......n|ew_lock-|
|00019d40| 3e 6e 65 78 74 20 3d 20 | 6c 6f 63 6b 73 3b 0a 09 |>next = |locks;..|
|00019d50| 09 09 09 6c 6f 63 6b 73 | 20 3d 20 6e 65 77 5f 6c |...locks| = new_l|
|00019d60| 6f 63 6b 3b 0a 09 09 09 | 09 0a 09 09 09 09 6e 65 |ock;....|......ne|
|00019d70| 77 5f 6c 6f 63 6b 2d 3e | 72 66 73 6c 20 3d 20 72 |w_lock->|rfsl = r|
|00019d80| 66 73 6c 3b 0a 09 09 09 | 09 6e 65 77 5f 6c 6f 63 |fsl;....|.new_loc|
|00019d90| 6b 2d 3e 66 6c 2e 66 6c | 5f 41 63 63 65 73 73 20 |k->fl.fl|_Access |
|00019da0| 3d 20 64 70 2d 3e 64 70 | 5f 41 72 67 33 3b 0a 09 |= dp->dp|_Arg3;..|
|00019db0| 09 09 09 6e 65 77 5f 6c | 6f 63 6b 2d 3e 66 6c 2e |...new_l|ock->fl.|
|00019dc0| 66 6c 5f 54 61 73 6b 20 | 3d 20 66 74 70 5f 70 6f |fl_Task |= ftp_po|
|00019dd0| 72 74 3b 0a 09 09 09 09 | 6e 65 77 5f 6c 6f 63 6b |rt;.....|new_lock|
|00019de0| 2d 3e 66 6c 2e 66 6c 5f | 56 6f 6c 75 6d 65 20 3d |->fl.fl_|Volume =|
|00019df0| 20 28 62 33 32 29 66 74 | 70 5f 76 6f 6c 75 6d 65 | (b32)ft|p_volume|
|00019e00| 20 3e 3e 20 32 3b 0a 09 | 09 09 09 0a 09 09 09 09 | >> 2;..|........|
|00019e10| 65 6e 64 5f 73 70 6c 69 | 74 28 26 73 64 29 3b 0a |end_spli|t(&sd);.|
|00019e20| 09 09 09 09 0a 09 09 09 | 09 64 70 2d 3e 64 70 5f |........|.dp->dp_|
|00019e30| 52 65 73 31 20 3d 20 28 | 62 33 32 29 6e 65 77 5f |Res1 = (|b32)new_|
|00019e40| 6c 6f 63 6b 20 3e 3e 20 | 32 3b 0a 09 09 09 09 64 |lock >> |2;.....d|
|00019e50| 70 2d 3e 64 70 5f 52 65 | 73 32 20 3d 20 30 3b 0a |p->dp_Re|s2 = 0;.|
|00019e60| 09 09 09 09 0a 09 09 09 | 09 62 72 65 61 6b 3b 0a |........|.break;.|
|00019e70| 09 09 09 63 61 73 65 20 | 41 43 54 49 4f 4e 5f 46 |...case |ACTION_F|
|00019e80| 52 45 45 5f 4c 4f 43 4b | 3a 0a 09 09 09 09 73 6c |REE_LOCK|:.....sl|
|00019e90| 6f 63 6b 20 3d 20 26 6c | 6f 63 6b 73 3b 0a 09 09 |ock = &l|ocks;...|
|00019ea0| 09 09 0a 09 09 09 09 6e | 65 77 5f 6c 6f 63 6b 20 |.......n|ew_lock |
|00019eb0| 3d 20 28 6c 6f 63 6b 20 | 2a 29 28 64 70 2d 3e 64 |= (lock |*)(dp->d|
|00019ec0| 70 5f 41 72 67 31 20 3c | 3c 20 32 29 3b 0a 09 09 |p_Arg1 <|< 2);...|
|00019ed0| 09 09 0a 09 09 09 09 77 | 68 69 6c 65 20 28 2a 73 |.......w|hile (*s|
|00019ee0| 6c 6f 63 6b 20 26 26 20 | 2a 73 6c 6f 63 6b 20 21 |lock && |*slock !|
|00019ef0| 3d 20 6e 65 77 5f 6c 6f | 63 6b 29 20 7b 0a 09 09 |= new_lo|ck) {...|
|00019f00| 09 09 09 73 6c 6f 63 6b | 20 3d 20 26 28 2a 73 6c |...slock| = &(*sl|
|00019f10| 6f 63 6b 29 2d 3e 6e 65 | 78 74 3b 0a 09 09 09 09 |ock)->ne|xt;.....|
|00019f20| 7d 0a 09 09 09 09 69 66 | 20 28 21 2a 73 6c 6f 63 |}.....if| (!*sloc|
|00019f30| 6b 29 20 7b 0a 09 09 09 | 09 09 73 68 6f 77 5f 73 |k) {....|..show_s|
|00019f40| 74 72 69 6e 67 28 22 46 | 72 65 65 20 6c 6f 63 6b |tring("F|ree lock|
|00019f50| 20 66 61 69 6c 65 64 22 | 29 3b 0a 09 09 09 09 09 | failed"|);......|
|00019f60| 64 70 2d 3e 64 70 5f 52 | 65 73 31 20 3d 20 44 4f |dp->dp_R|es1 = DO|
|00019f70| 53 46 41 4c 53 45 3b 0a | 09 09 09 09 09 64 70 2d |SFALSE;.|.....dp-|
|00019f80| 3e 64 70 5f 52 65 73 32 | 20 3d 20 45 52 52 4f 52 |>dp_Res2| = ERROR|
|00019f90| 5f 49 4e 56 41 4c 49 44 | 5f 4c 4f 43 4b 3b 0a 09 |_INVALID|_LOCK;..|
|00019fa0| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 09 09 7d |....brea|k;.....}|
|00019fb0| 0a 0a 09 09 09 09 76 65 | 72 69 66 79 28 6e 65 77 |......ve|rify(new|
|00019fc0| 5f 6c 6f 63 6b 2c 20 56 | 5f 6c 6f 63 6b 29 3b 0a |_lock, V|_lock);.|
|00019fd0| 09 09 09 09 0a 09 09 09 | 09 2a 73 6c 6f 63 6b 20 |........|.*slock |
|00019fe0| 3d 20 6e 65 77 5f 6c 6f | 63 6b 2d 3e 6e 65 78 74 |= new_lo|ck->next|
|00019ff0| 3b 0a 09 09 09 09 0a 09 | 09 09 09 69 66 20 28 6e |;.......|...if (n|
|0001a000| 65 77 5f 6c 6f 63 6b 2d | 3e 72 66 73 6c 20 21 3d |ew_lock-|>rfsl !=|
|0001a010| 20 66 74 70 68 6f 73 74 | 73 5f 6c 6f 63 6b 29 20 | ftphost|s_lock) |
|0001a020| 7b 0a 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 50 6f |{......d|p->dp_Po|
|0001a030| 72 74 20 3d 20 73 79 6e | 63 3b 0a 09 09 09 09 0a |rt = syn|c;......|
|0001a040| 09 09 09 09 09 6f 31 20 | 3d 20 64 70 2d 3e 64 70 |.....o1 |= dp->dp|
|0001a050| 5f 41 72 67 31 3b 0a 09 | 09 09 09 09 64 70 2d 3e |_Arg1;..|....dp->|
|0001a060| 64 70 5f 41 72 67 31 20 | 3d 20 6e 65 77 5f 6c 6f |dp_Arg1 |= new_lo|
|0001a070| 63 6b 2d 3e 72 66 73 6c | 3b 0a 09 09 09 09 0a 09 |ck->rfsl|;.......|
|0001a080| 09 09 09 09 6c 6f 63 6b | 5f 6d 65 73 73 61 67 65 |....lock|_message|
|0001a090| 28 6e 65 77 5f 6c 6f 63 | 6b 2d 3e 72 66 73 6c 2c |(new_loc|k->rfsl,|
|0001a0a0| 20 64 70 29 3b 0a 09 09 | 09 09 09 57 61 69 74 50 | dp);...|...WaitP|
|0001a0b0| 6f 72 74 28 73 79 6e 63 | 29 3b 20 47 65 74 4d 73 |ort(sync|); GetMs|
|0001a0c0| 67 28 73 79 6e 63 29 3b | 0a 09 09 09 09 0a 09 09 |g(sync);|........|
|0001a0d0| 09 09 09 64 70 2d 3e 64 | 70 5f 41 72 67 31 20 3d |...dp->d|p_Arg1 =|
|0001a0e0| 20 6f 31 3b 0a 09 09 09 | 09 7d 0a 09 09 09 09 0a | o1;....|.}......|
|0001a0f0| 09 09 09 09 64 65 61 6c | 6c 6f 63 61 74 65 28 6e |....deal|locate(n|
|0001a100| 65 77 5f 6c 6f 63 6b 2c | 20 56 5f 6c 6f 63 6b 29 |ew_lock,| V_lock)|
|0001a110| 3b 0a 09 09 09 09 0a 09 | 09 09 09 64 70 2d 3e 64 |;.......|...dp->d|
|0001a120| 70 5f 52 65 73 31 20 3d | 20 44 4f 53 54 52 55 45 |p_Res1 =| DOSTRUE|
|0001a130| 3b 0a 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |;.....dp|->dp_Res|
|0001a140| 32 20 3d 20 30 3b 0a 09 | 09 09 09 0a 09 09 09 09 |2 = 0;..|........|
|0001a150| 62 72 65 61 6b 3b 0a 09 | 09 09 63 61 73 65 20 41 |break;..|..case A|
|0001a160| 43 54 49 4f 4e 5f 44 45 | 4c 45 54 45 5f 4f 42 4a |CTION_DE|LETE_OBJ|
|0001a170| 45 43 54 3a 0a 09 09 09 | 09 69 66 20 28 21 73 70 |ECT:....|.if (!sp|
|0001a180| 6c 69 74 5f 64 61 74 61 | 28 28 6c 6f 63 6b 20 2a |lit_data|((lock *|
|0001a190| 29 28 64 70 2d 3e 64 70 | 5f 41 72 67 31 20 3c 3c |)(dp->dp|_Arg1 <<|
|0001a1a0| 20 32 29 2c 0a 09 09 09 | 09 09 28 62 38 20 2a 29 | 2),....|..(b8 *)|
|0001a1b0| 28 64 70 2d 3e 64 70 5f | 41 72 67 32 20 3c 3c 20 |(dp->dp_|Arg2 << |
|0001a1c0| 32 29 2c 20 26 73 64 29 | 29 20 7b 0a 09 09 09 09 |2), &sd)|) {.....|
|0001a1d0| 09 64 70 2d 3e 64 70 5f | 52 65 73 31 20 3d 20 44 |.dp->dp_|Res1 = D|
|0001a1e0| 4f 53 46 41 4c 53 45 3b | 0a 09 09 09 09 09 64 70 |OSFALSE;|......dp|
|0001a1f0| 2d 3e 64 70 5f 52 65 73 | 32 20 3d 20 45 52 52 4f |->dp_Res|2 = ERRO|
|0001a200| 52 5f 4e 4f 5f 46 52 45 | 45 5f 53 54 4f 52 45 3b |R_NO_FRE|E_STORE;|
|0001a210| 0a 09 09 09 09 09 62 72 | 65 61 6b 3b 0a 09 09 09 |......br|eak;....|
|0001a220| 09 7d 0a 09 09 09 09 0a | 09 09 09 09 6f 31 20 3d |.}......|....o1 =|
|0001a230| 20 64 70 2d 3e 64 70 5f | 41 72 67 31 3b 0a 09 09 | dp->dp_|Arg1;...|
|0001a240| 09 09 6f 32 20 3d 20 64 | 70 2d 3e 64 70 5f 41 72 |..o2 = d|p->dp_Ar|
|0001a250| 67 32 3b 0a 09 09 09 09 | 0a 09 09 09 09 64 70 2d |g2;.....|.....dp-|
|0001a260| 3e 64 70 5f 41 72 67 31 | 20 3d 20 66 74 70 68 6f |>dp_Arg1| = ftpho|
|0001a270| 73 74 73 5f 6c 6f 63 6b | 3b 0a 09 09 09 09 62 20 |sts_lock|;.....b |
|0001a280| 3d 20 63 74 6f 62 73 74 | 72 28 73 64 2e 70 61 74 |= ctobst|r(sd.pat|
|0001a290| 68 29 3b 0a 09 09 09 09 | 69 66 20 28 21 62 29 20 |h);.....|if (!b) |
|0001a2a0| 7b 0a 09 09 09 09 09 65 | 6e 64 5f 73 70 6c 69 74 |{......e|nd_split|
|0001a2b0| 28 26 73 64 29 3b 0a 09 | 09 09 09 09 64 70 2d 3e |(&sd);..|....dp->|
|0001a2c0| 64 70 5f 52 65 73 31 20 | 3d 20 44 4f 53 46 41 4c |dp_Res1 |= DOSFAL|
|0001a2d0| 53 45 3b 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |SE;.....|.dp->dp_|
|0001a2e0| 52 65 73 32 20 3d 20 45 | 52 52 4f 52 5f 4e 4f 5f |Res2 = E|RROR_NO_|
|0001a2f0| 46 52 45 45 5f 53 54 4f | 52 45 3b 0a 09 09 09 09 |FREE_STO|RE;.....|
|0001a300| 09 62 72 65 61 6b 3b 0a | 09 09 09 09 7d 0a 09 09 |.break;.|....}...|
|0001a310| 09 09 64 70 2d 3e 64 70 | 5f 41 72 67 32 20 3d 20 |..dp->dp|_Arg2 = |
|0001a320| 62 3b 0a 09 09 09 09 0a | 09 09 09 09 64 70 2d 3e |b;......|....dp->|
|0001a330| 64 70 5f 50 6f 72 74 20 | 3d 20 73 79 6e 63 3b 0a |dp_Port |= sync;.|
|0001a340| 09 09 09 09 0a 09 09 09 | 09 6c 6f 63 6b 5f 6d 65 |........|.lock_me|
|0001a350| 73 73 61 67 65 28 66 74 | 70 68 6f 73 74 73 5f 6c |ssage(ft|phosts_l|
|0001a360| 6f 63 6b 2c 20 64 70 29 | 3b 0a 09 09 09 09 57 61 |ock, dp)|;.....Wa|
|0001a370| 69 74 50 6f 72 74 28 73 | 79 6e 63 29 3b 20 47 65 |itPort(s|ync); Ge|
|0001a380| 74 4d 73 67 28 73 79 6e | 63 29 3b 0a 09 09 09 09 |tMsg(syn|c);.....|
|0001a390| 0a 09 09 09 09 64 70 2d | 3e 64 70 5f 41 72 67 31 |.....dp-|>dp_Arg1|
|0001a3a0| 20 3d 20 6f 31 3b 0a 09 | 09 09 09 64 70 2d 3e 64 | = o1;..|...dp->d|
|0001a3b0| 70 5f 41 72 67 32 20 3d | 20 6f 32 3b 0a 09 09 09 |p_Arg2 =| o2;....|
|0001a3c0| 09 0a 09 09 09 09 66 72 | 65 65 5f 62 73 74 72 28 |......fr|ee_bstr(|
|0001a3d0| 62 29 3b 0a 09 09 09 09 | 0a 09 09 09 09 65 6e 64 |b);.....|.....end|
|0001a3e0| 5f 73 70 6c 69 74 28 26 | 73 64 29 3b 0a 09 09 09 |_split(&|sd);....|
|0001a3f0| 09 0a 09 09 09 09 62 72 | 65 61 6b 3b 0a 09 09 09 |......br|eak;....|
|0001a400| 63 61 73 65 20 41 43 54 | 49 4f 4e 5f 52 45 4e 41 |case ACT|ION_RENA|
|0001a410| 4d 45 5f 4f 42 4a 45 43 | 54 3a 0a 09 09 09 09 69 |ME_OBJEC|T:.....i|
|0001a420| 66 20 28 21 73 70 6c 69 | 74 5f 64 61 74 61 28 28 |f (!spli|t_data((|
|0001a430| 6c 6f 63 6b 20 2a 29 28 | 64 70 2d 3e 64 70 5f 41 |lock *)(|dp->dp_A|
|0001a440| 72 67 31 20 3c 3c 20 32 | 29 2c 0a 09 09 09 09 09 |rg1 << 2|),......|
|0001a450| 28 62 38 20 2a 29 28 64 | 70 2d 3e 64 70 5f 41 72 |(b8 *)(d|p->dp_Ar|
|0001a460| 67 32 20 3c 3c 20 32 29 | 2c 20 26 73 64 29 29 20 |g2 << 2)|, &sd)) |
|0001a470| 7b 0a 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |{......d|p->dp_Re|
|0001a480| 73 31 20 3d 20 44 4f 53 | 46 41 4c 53 45 3b 0a 09 |s1 = DOS|FALSE;..|
|0001a490| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 32 20 |....dp->|dp_Res2 |
|0001a4a0| 3d 20 45 52 52 4f 52 5f | 4e 4f 5f 46 52 45 45 5f |= ERROR_|NO_FREE_|
|0001a4b0| 53 54 4f 52 45 3b 0a 09 | 09 09 09 09 62 72 65 61 |STORE;..|....brea|
|0001a4c0| 6b 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 0a 09 09 |k;.....}|........|
|0001a4d0| 09 09 69 66 20 28 21 73 | 70 6c 69 74 5f 64 61 74 |..if (!s|plit_dat|
|0001a4e0| 61 28 28 6c 6f 63 6b 20 | 2a 29 28 64 70 2d 3e 64 |a((lock |*)(dp->d|
|0001a4f0| 70 5f 41 72 67 33 20 3c | 3c 20 32 29 2c 0a 09 09 |p_Arg3 <|< 2),...|
|0001a500| 09 09 09 28 62 38 20 2a | 29 28 64 70 2d 3e 64 70 |...(b8 *|)(dp->dp|
|0001a510| 5f 41 72 67 34 20 3c 3c | 20 32 29 2c 20 26 73 64 |_Arg4 <<| 2), &sd|
|0001a520| 32 29 29 20 7b 0a 09 09 | 09 09 09 65 6e 64 5f 73 |2)) {...|...end_s|
|0001a530| 70 6c 69 74 28 26 73 64 | 29 3b 0a 09 09 09 09 09 |plit(&sd|);......|
|0001a540| 64 70 2d 3e 64 70 5f 52 | 65 73 31 20 3d 20 44 4f |dp->dp_R|es1 = DO|
|0001a550| 53 46 41 4c 53 45 3b 0a | 09 09 09 09 09 64 70 2d |SFALSE;.|.....dp-|
|0001a560| 3e 64 70 5f 52 65 73 32 | 20 3d 20 45 52 52 4f 52 |>dp_Res2| = ERROR|
|0001a570| 5f 4e 4f 5f 46 52 45 45 | 5f 53 54 4f 52 45 3b 0a |_NO_FREE|_STORE;.|
|0001a580| 09 09 09 09 09 62 72 65 | 61 6b 3b 0a 09 09 09 09 |.....bre|ak;.....|
|0001a590| 7d 0a 09 09 09 09 0a 09 | 09 09 09 6f 31 20 3d 20 |}.......|...o1 = |
|0001a5a0| 64 70 2d 3e 64 70 5f 41 | 72 67 31 3b 0a 09 09 09 |dp->dp_A|rg1;....|
|0001a5b0| 09 6f 32 20 3d 20 64 70 | 2d 3e 64 70 5f 41 72 67 |.o2 = dp|->dp_Arg|
|0001a5c0| 32 3b 0a 09 09 09 09 6f | 33 20 3d 20 64 70 2d 3e |2;.....o|3 = dp->|
|0001a5d0| 64 70 5f 41 72 67 33 3b | 0a 09 09 09 09 6f 34 20 |dp_Arg3;|.....o4 |
|0001a5e0| 3d 20 64 70 2d 3e 64 70 | 5f 41 72 67 34 3b 0a 09 |= dp->dp|_Arg4;..|
|0001a5f0| 09 09 09 0a 09 09 09 09 | 69 66 20 28 21 73 64 32 |........|if (!sd2|
|0001a600| 2e 70 61 74 68 29 20 7b | 09 2f 2a 20 74 68 69 73 |.path) {|./* this|
|0001a610| 20 69 73 20 72 65 6e 61 | 6d 65 20 55 6e 6e 61 6d | is rena|me Unnam|
|0001a620| 65 64 31 20 74 6f 20 22 | 75 63 63 2e 67 75 2e 75 |ed1 to "|ucc.gu.u|
|0001a630| 77 61 2e 2e 2e 22 20 2a | 2f 0a 09 09 09 09 09 69 |wa..." *|/......i|
|0001a640| 66 20 28 73 64 32 2e 77 | 6f 72 6b 29 20 64 65 61 |f (sd2.w|ork) dea|
|0001a650| 6c 6c 6f 63 61 74 65 28 | 73 64 32 2e 77 6f 72 6b |llocate(|sd2.work|
|0001a660| 2c 20 56 5f 63 73 74 72 | 29 3b 0a 09 09 09 09 09 |, V_cstr|);......|
|0001a670| 73 64 32 2e 77 6f 72 6b | 20 3d 20 28 62 38 20 2a |sd2.work| = (b8 *|
|0001a680| 29 61 6c 6c 6f 63 61 74 | 65 28 73 74 72 6c 65 6e |)allocat|e(strlen|
|0001a690| 28 73 64 32 2e 70 6f 72 | 74 2d 3e 6d 70 5f 4e 6f |(sd2.por|t->mp_No|
|0001a6a0| 64 65 2e 6c 6e 5f 4e 61 | 6d 65 29 20 2b 20 31 2c |de.ln_Na|me) + 1,|
|0001a6b0| 20 56 5f 63 73 74 72 29 | 3b 0a 09 09 09 09 09 69 | V_cstr)|;......i|
|0001a6c0| 66 20 28 21 73 64 32 2e | 77 6f 72 6b 29 20 7b 0a |f (!sd2.|work) {.|
|0001a6d0| 09 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|0001a6e0| 31 20 3d 20 44 4f 53 46 | 41 4c 53 45 3b 0a 09 09 |1 = DOSF|ALSE;...|
|0001a6f0| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 32 20 |....dp->|dp_Res2 |
|0001a700| 3d 20 45 52 52 4f 52 5f | 4e 4f 5f 46 52 45 45 5f |= ERROR_|NO_FREE_|
|0001a710| 53 54 4f 52 45 3b 0a 09 | 09 09 09 09 09 0a 09 09 |STORE;..|........|
|0001a720| 09 09 09 09 65 6e 64 5f | 73 70 6c 69 74 28 26 73 |....end_|split(&s|
|0001a730| 64 29 3b 0a 09 09 09 09 | 09 09 65 6e 64 5f 73 70 |d);.....|..end_sp|
|0001a740| 6c 69 74 28 26 73 64 32 | 29 3b 0a 09 09 09 09 09 |lit(&sd2|);......|
|0001a750| 09 62 72 65 61 6b 3b 0a | 09 09 09 09 09 7d 0a 09 |.break;.|.....}..|
|0001a760| 09 09 09 09 73 74 72 63 | 70 79 28 73 64 32 2e 77 |....strc|py(sd2.w|
|0001a770| 6f 72 6b 2c 20 73 64 32 | 2e 70 6f 72 74 2d 3e 6d |ork, sd2|.port->m|
|0001a780| 70 5f 4e 6f 64 65 2e 6c | 6e 5f 4e 61 6d 65 29 3b |p_Node.l|n_Name);|
|0001a790| 0a 09 09 09 09 09 73 64 | 32 2e 70 61 74 68 20 3d |......sd|2.path =|
|0001a7a0| 20 73 64 32 2e 77 6f 72 | 6b 3b 0a 09 09 09 09 7d | sd2.wor|k;.....}|
|0001a7b0| 0a 09 09 09 09 0a 09 09 | 09 09 62 20 3d 20 63 74 |........|..b = ct|
|0001a7c0| 6f 62 73 74 72 28 73 64 | 2e 70 61 74 68 29 3b 0a |obstr(sd|.path);.|
|0001a7d0| 09 09 09 09 62 32 20 3d | 20 63 74 6f 62 73 74 72 |....b2 =| ctobstr|
|0001a7e0| 28 73 64 32 2e 70 61 74 | 68 29 3b 0a 09 09 09 09 |(sd2.pat|h);.....|
|0001a7f0| 0a 09 09 09 09 69 66 20 | 28 21 62 20 7c 7c 20 21 |.....if |(!b || !|
|0001a800| 62 32 29 20 7b 0a 09 09 | 09 09 09 69 66 20 28 62 |b2) {...|...if (b|
|0001a810| 29 20 66 72 65 65 5f 62 | 73 74 72 28 62 29 3b 0a |) free_b|str(b);.|
|0001a820| 09 09 09 09 09 69 66 20 | 28 62 32 29 20 66 72 65 |.....if |(b2) fre|
|0001a830| 65 5f 62 73 74 72 28 62 | 32 29 3b 0a 09 09 09 09 |e_bstr(b|2);.....|
|0001a840| 09 0a 09 09 09 09 09 65 | 6e 64 5f 73 70 6c 69 74 |.......e|nd_split|
|0001a850| 28 26 73 64 29 3b 0a 09 | 09 09 09 09 65 6e 64 5f |(&sd);..|....end_|
|0001a860| 73 70 6c 69 74 28 26 73 | 64 32 29 3b 0a 09 09 09 |split(&s|d2);....|
|0001a870| 09 09 0a 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 |........|dp->dp_R|
|0001a880| 65 73 31 20 3d 20 44 4f | 53 46 41 4c 53 45 3b 0a |es1 = DO|SFALSE;.|
|0001a890| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 32 |.....dp-|>dp_Res2|
|0001a8a0| 20 3d 20 45 52 52 4f 52 | 5f 4e 4f 5f 46 52 45 45 | = ERROR|_NO_FREE|
|0001a8b0| 5f 53 54 4f 52 45 3b 0a | 09 09 09 09 09 0a 09 09 |_STORE;.|........|
|0001a8c0| 09 09 09 62 72 65 61 6b | 3b 0a 09 09 09 09 7d 0a |...break|;.....}.|
|0001a8d0| 0a 09 09 09 09 64 70 2d | 3e 64 70 5f 41 72 67 31 |.....dp-|>dp_Arg1|
|0001a8e0| 20 3d 20 66 74 70 68 6f | 73 74 73 5f 6c 6f 63 6b | = ftpho|sts_lock|
|0001a8f0| 3b 0a 09 09 09 09 64 70 | 2d 3e 64 70 5f 41 72 67 |;.....dp|->dp_Arg|
|0001a900| 32 20 3d 20 62 3b 0a 09 | 09 09 09 64 70 2d 3e 64 |2 = b;..|...dp->d|
|0001a910| 70 5f 41 72 67 33 20 3d | 20 66 74 70 68 6f 73 74 |p_Arg3 =| ftphost|
|0001a920| 73 5f 6c 6f 63 6b 3b 0a | 09 09 09 09 64 70 2d 3e |s_lock;.|....dp->|
|0001a930| 64 70 5f 41 72 67 34 20 | 3d 20 62 32 3b 0a 09 09 |dp_Arg4 |= b2;...|
|0001a940| 09 09 0a 09 09 09 09 64 | 70 2d 3e 64 70 5f 50 6f |.......d|p->dp_Po|
|0001a950| 72 74 20 3d 20 73 79 6e | 63 3b 0a 09 09 09 09 0a |rt = syn|c;......|
|0001a960| 09 09 09 09 6c 6f 63 6b | 5f 6d 65 73 73 61 67 65 |....lock|_message|
|0001a970| 28 66 74 70 68 6f 73 74 | 73 5f 6c 6f 63 6b 2c 20 |(ftphost|s_lock, |
|0001a980| 64 70 29 3b 0a 09 09 09 | 09 57 61 69 74 50 6f 72 |dp);....|.WaitPor|
|0001a990| 74 28 73 79 6e 63 29 3b | 20 47 65 74 4d 73 67 28 |t(sync);| GetMsg(|
|0001a9a0| 73 79 6e 63 29 3b 0a 09 | 09 09 09 0a 09 09 09 09 |sync);..|........|
|0001a9b0| 64 70 2d 3e 64 70 5f 41 | 72 67 31 20 3d 20 6f 31 |dp->dp_A|rg1 = o1|
|0001a9c0| 3b 0a 09 09 09 09 64 70 | 2d 3e 64 70 5f 41 72 67 |;.....dp|->dp_Arg|
|0001a9d0| 32 20 3d 20 6f 32 3b 0a | 09 09 09 09 64 70 2d 3e |2 = o2;.|....dp->|
|0001a9e0| 64 70 5f 41 72 67 33 20 | 3d 20 6f 33 3b 0a 09 09 |dp_Arg3 |= o3;...|
|0001a9f0| 09 09 64 70 2d 3e 64 70 | 5f 41 72 67 34 20 3d 20 |..dp->dp|_Arg4 = |
|0001aa00| 6f 34 3b 0a 09 09 09 09 | 0a 09 09 09 09 66 72 65 |o4;.....|.....fre|
|0001aa10| 65 5f 62 73 74 72 28 62 | 29 3b 0a 09 09 09 09 66 |e_bstr(b|);.....f|
|0001aa20| 72 65 65 5f 62 73 74 72 | 28 62 32 29 3b 0a 09 09 |ree_bstr|(b2);...|
|0001aa30| 09 09 0a 09 09 09 09 65 | 6e 64 5f 73 70 6c 69 74 |.......e|nd_split|
|0001aa40| 28 26 73 64 29 3b 0a 09 | 09 09 09 65 6e 64 5f 73 |(&sd);..|...end_s|
|0001aa50| 70 6c 69 74 28 26 73 64 | 32 29 3b 0a 09 09 09 09 |plit(&sd|2);.....|
|0001aa60| 0a 09 09 09 09 62 72 65 | 61 6b 3b 0a 09 09 09 63 |.....bre|ak;....c|
|0001aa70| 61 73 65 20 41 43 54 49 | 4f 4e 5f 43 4f 50 59 5f |ase ACTI|ON_COPY_|
|0001aa80| 44 49 52 3a 0a 09 09 09 | 09 6e 65 77 5f 6c 6f 63 |DIR:....|.new_loc|
|0001aa90| 6b 20 3d 20 28 6c 6f 63 | 6b 20 2a 29 28 64 70 2d |k = (loc|k *)(dp-|
|0001aaa0| 3e 64 70 5f 41 72 67 31 | 20 3c 3c 20 32 29 3b 0a |>dp_Arg1| << 2);.|
|0001aab0| 09 09 09 09 76 65 72 69 | 66 79 28 6e 65 77 5f 6c |....veri|fy(new_l|
|0001aac0| 6f 63 6b 2c 20 56 5f 6c | 6f 63 6b 29 3b 0a 09 09 |ock, V_l|ock);...|
|0001aad0| 09 09 0a 09 09 09 09 72 | 66 73 6c 20 3d 20 6e 65 |.......r|fsl = ne|
|0001aae0| 77 5f 6c 6f 63 6b 2d 3e | 72 66 73 6c 3b 0a 0a 09 |w_lock->|rfsl;...|
|0001aaf0| 09 09 09 6e 65 77 5f 6c | 6f 63 6b 20 3d 20 28 6c |...new_l|ock = (l|
|0001ab00| 6f 63 6b 20 2a 29 61 6c | 6c 6f 63 61 74 65 28 73 |ock *)al|locate(s|
|0001ab10| 69 7a 65 6f 66 28 2a 6e | 65 77 5f 6c 6f 63 6b 29 |izeof(*n|ew_lock)|
|0001ab20| 2c 20 56 5f 6c 6f 63 6b | 29 3b 0a 09 09 09 09 69 |, V_lock|);.....i|
|0001ab30| 66 20 28 21 6e 65 77 5f | 6c 6f 63 6b 29 20 7b 0a |f (!new_|lock) {.|
|0001ab40| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 31 |.....dp-|>dp_Res1|
|0001ab50| 20 3d 20 44 4f 53 46 41 | 4c 53 45 3b 0a 09 09 09 | = DOSFA|LSE;....|
|0001ab60| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 32 20 3d 20 |..dp->dp|_Res2 = |
|0001ab70| 45 52 52 4f 52 5f 4e 4f | 5f 46 52 45 45 5f 53 54 |ERROR_NO|_FREE_ST|
|0001ab80| 4f 52 45 3b 0a 09 09 09 | 09 09 73 68 6f 77 5f 73 |ORE;....|..show_s|
|0001ab90| 74 72 69 6e 67 28 22 44 | 75 70 4c 6f 63 6b 20 66 |tring("D|upLock f|
|0001aba0| 61 69 6c 65 64 20 31 22 | 29 3b 0a 09 09 09 09 09 |ailed 1"|);......|
|0001abb0| 62 72 65 61 6b 3b 0a 09 | 09 09 09 7d 0a 09 09 09 |break;..|...}....|
|0001abc0| 09 0a 09 09 09 09 69 66 | 20 28 72 66 73 6c 20 21 |......if| (rfsl !|
|0001abd0| 3d 20 66 74 70 68 6f 73 | 74 73 5f 6c 6f 63 6b 29 |= ftphos|ts_lock)|
|0001abe0| 20 7b 0a 09 09 09 09 09 | 6f 31 20 3d 20 64 70 2d | {......|o1 = dp-|
|0001abf0| 3e 64 70 5f 41 72 67 31 | 3b 0a 09 09 09 09 09 64 |>dp_Arg1|;......d|
|0001ac00| 70 2d 3e 64 70 5f 41 72 | 67 31 20 3d 20 72 66 73 |p->dp_Ar|g1 = rfs|
|0001ac10| 6c 3b 0a 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |l;......|.dp->dp_|
|0001ac20| 50 6f 72 74 20 3d 20 73 | 79 6e 63 3b 0a 09 09 09 |Port = s|ync;....|
|0001ac30| 09 0a 09 09 09 09 09 6c | 6f 63 6b 5f 6d 65 73 73 |.......l|ock_mess|
|0001ac40| 61 67 65 28 72 66 73 6c | 2c 20 64 70 29 3b 0a 09 |age(rfsl|, dp);..|
|0001ac50| 09 09 09 09 57 61 69 74 | 50 6f 72 74 28 73 79 6e |....Wait|Port(syn|
|0001ac60| 63 29 3b 20 47 65 74 4d | 73 67 28 73 79 6e 63 29 |c); GetM|sg(sync)|
|0001ac70| 3b 0a 09 09 09 09 0a 09 | 09 09 09 09 72 66 73 6c |;.......|....rfsl|
|0001ac80| 20 3d 20 64 70 2d 3e 64 | 70 5f 52 65 73 31 3b 0a | = dp->d|p_Res1;.|
|0001ac90| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 41 72 67 31 |.....dp-|>dp_Arg1|
|0001aca0| 20 3d 20 6f 31 3b 0a 09 | 09 09 09 7d 0a 09 09 09 | = o1;..|...}....|
|0001acb0| 09 0a 09 09 09 09 69 66 | 20 28 21 72 66 73 6c 29 |......if| (!rfsl)|
|0001acc0| 20 7b 0a 09 09 09 09 09 | 64 65 61 6c 6c 6f 63 61 | {......|dealloca|
|0001acd0| 74 65 28 6e 65 77 5f 6c | 6f 63 6b 2c 20 56 5f 6c |te(new_l|ock, V_l|
|0001ace0| 6f 63 6b 29 3b 0a 09 09 | 09 09 09 73 68 6f 77 5f |ock);...|...show_|
|0001acf0| 73 74 72 69 6e 67 28 22 | 44 75 70 4c 6f 63 6b 20 |string("|DupLock |
|0001ad00| 66 61 69 6c 65 64 20 32 | 22 29 3b 0a 09 09 09 09 |failed 2|");.....|
|0001ad10| 09 62 72 65 61 6b 3b 0a | 09 09 09 09 7d 0a 09 09 |.break;.|....}...|
|0001ad20| 09 09 0a 09 09 09 09 65 | 6e 73 75 72 65 28 6e 65 |.......e|nsure(ne|
|0001ad30| 77 5f 6c 6f 63 6b 2c 20 | 56 5f 6c 6f 63 6b 29 3b |w_lock, |V_lock);|
|0001ad40| 0a 09 09 09 09 0a 09 09 | 09 09 6e 65 77 5f 6c 6f |........|..new_lo|
|0001ad50| 63 6b 2d 3e 70 6f 72 74 | 20 3d 20 6c 6f 63 61 6c |ck->port| = local|
|0001ad60| 3b 0a 09 09 09 09 6e 65 | 77 5f 6c 6f 63 6b 2d 3e |;.....ne|w_lock->|
|0001ad70| 6e 65 78 74 20 3d 20 6c | 6f 63 6b 73 3b 0a 09 09 |next = l|ocks;...|
|0001ad80| 09 09 6c 6f 63 6b 73 20 | 3d 20 6e 65 77 5f 6c 6f |..locks |= new_lo|
|0001ad90| 63 6b 3b 0a 09 09 09 09 | 0a 09 09 09 09 6e 65 77 |ck;.....|.....new|
|0001ada0| 5f 6c 6f 63 6b 2d 3e 72 | 66 73 6c 20 3d 20 72 66 |_lock->r|fsl = rf|
|0001adb0| 73 6c 3b 0a 09 09 09 09 | 6e 65 77 5f 6c 6f 63 6b |sl;.....|new_lock|
|0001adc0| 2d 3e 66 6c 2e 66 6c 5f | 41 63 63 65 73 73 20 3d |->fl.fl_|Access =|
|0001add0| 20 53 48 41 52 45 44 5f | 4c 4f 43 4b 3b 0a 09 09 | SHARED_|LOCK;...|
|0001ade0| 09 09 6e 65 77 5f 6c 6f | 63 6b 2d 3e 66 6c 2e 66 |..new_lo|ck->fl.f|
|0001adf0| 6c 5f 54 61 73 6b 20 3d | 20 66 74 70 5f 70 6f 72 |l_Task =| ftp_por|
|0001ae00| 74 3b 0a 09 09 09 09 6e | 65 77 5f 6c 6f 63 6b 2d |t;.....n|ew_lock-|
|0001ae10| 3e 66 6c 2e 66 6c 5f 56 | 6f 6c 75 6d 65 20 3d 20 |>fl.fl_V|olume = |
|0001ae20| 28 62 33 32 29 66 74 70 | 5f 76 6f 6c 75 6d 65 20 |(b32)ftp|_volume |
|0001ae30| 3e 3e 20 32 3b 0a 09 09 | 09 09 0a 09 09 09 09 64 |>> 2;...|.......d|
|0001ae40| 70 2d 3e 64 70 5f 52 65 | 73 31 20 3d 20 28 62 33 |p->dp_Re|s1 = (b3|
|0001ae50| 32 29 6e 65 77 5f 6c 6f | 63 6b 20 3e 3e 20 32 3b |2)new_lo|ck >> 2;|
|0001ae60| 0a 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 32 |.....dp-|>dp_Res2|
|0001ae70| 20 3d 20 30 3b 0a 09 09 | 09 09 0a 09 09 09 09 62 | = 0;...|.......b|
|0001ae80| 72 65 61 6b 3b 0a 09 09 | 09 63 61 73 65 20 41 43 |reak;...|.case AC|
|0001ae90| 54 49 4f 4e 5f 53 45 54 | 5f 50 52 4f 54 45 43 54 |TION_SET|_PROTECT|
|0001aea0| 3a 0a 09 09 09 09 69 66 | 20 28 21 73 70 6c 69 74 |:.....if| (!split|
|0001aeb0| 5f 64 61 74 61 28 28 6c | 6f 63 6b 20 2a 29 28 64 |_data((l|ock *)(d|
|0001aec0| 70 2d 3e 64 70 5f 41 72 | 67 32 20 3c 3c 20 32 29 |p->dp_Ar|g2 << 2)|
|0001aed0| 2c 0a 09 09 09 09 09 28 | 62 38 20 2a 29 28 64 70 |,......(|b8 *)(dp|
|0001aee0| 2d 3e 64 70 5f 41 72 67 | 33 20 3c 3c 20 32 29 2c |->dp_Arg|3 << 2),|
|0001aef0| 20 26 73 64 29 29 20 7b | 0a 09 09 09 09 09 64 70 | &sd)) {|......dp|
|0001af00| 2d 3e 64 70 5f 52 65 73 | 31 20 3d 20 44 4f 53 46 |->dp_Res|1 = DOSF|
|0001af10| 41 4c 53 45 3b 0a 09 09 | 09 09 09 64 70 2d 3e 64 |ALSE;...|...dp->d|
|0001af20| 70 5f 52 65 73 32 20 3d | 20 45 52 52 4f 52 5f 4e |p_Res2 =| ERROR_N|
|0001af30| 4f 5f 46 52 45 45 5f 53 | 54 4f 52 45 3b 0a 09 09 |O_FREE_S|TORE;...|
|0001af40| 09 09 09 62 72 65 61 6b | 3b 0a 09 09 09 09 7d 0a |...break|;.....}.|
|0001af50| 09 09 09 09 0a 09 09 09 | 09 6f 32 20 3d 20 64 70 |........|.o2 = dp|
|0001af60| 2d 3e 64 70 5f 41 72 67 | 32 3b 0a 09 09 09 09 6f |->dp_Arg|2;.....o|
|0001af70| 33 20 3d 20 64 70 2d 3e | 64 70 5f 41 72 67 33 3b |3 = dp->|dp_Arg3;|
|0001af80| 0a 09 09 09 09 0a 09 09 | 09 09 64 70 2d 3e 64 70 |........|..dp->dp|
|0001af90| 5f 41 72 67 32 20 3d 20 | 66 74 70 68 6f 73 74 73 |_Arg2 = |ftphosts|
|0001afa0| 5f 6c 6f 63 6b 3b 0a 09 | 09 09 09 62 20 3d 20 63 |_lock;..|...b = c|
|0001afb0| 74 6f 62 73 74 72 28 73 | 64 2e 70 61 74 68 29 3b |tobstr(s|d.path);|
|0001afc0| 0a 09 09 09 09 69 66 20 | 28 21 62 29 20 7b 0a 09 |.....if |(!b) {..|
|0001afd0| 09 09 09 09 65 6e 64 5f | 73 70 6c 69 74 28 26 73 |....end_|split(&s|
|0001afe0| 64 29 3b 0a 09 09 09 09 | 09 0a 09 09 09 09 09 64 |d);.....|.......d|
|0001aff0| 70 2d 3e 64 70 5f 52 65 | 73 31 20 3d 20 44 4f 53 |p->dp_Re|s1 = DOS|
|0001b000| 46 41 4c 53 45 3b 0a 09 | 09 09 09 09 64 70 2d 3e |FALSE;..|....dp->|
|0001b010| 64 70 5f 52 65 73 32 20 | 3d 20 45 52 52 4f 52 5f |dp_Res2 |= ERROR_|
|0001b020| 4e 4f 5f 46 52 45 45 5f | 53 54 4f 52 45 3b 0a 09 |NO_FREE_|STORE;..|
|0001b030| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 09 09 7d |....brea|k;.....}|
|0001b040| 0a 09 09 09 09 0a 09 09 | 09 09 64 70 2d 3e 64 70 |........|..dp->dp|
|0001b050| 5f 41 72 67 33 20 3d 20 | 62 3b 0a 09 09 09 09 64 |_Arg3 = |b;.....d|
|0001b060| 70 2d 3e 64 70 5f 50 6f | 72 74 20 3d 20 73 79 6e |p->dp_Po|rt = syn|
|0001b070| 63 3b 0a 09 09 09 09 0a | 09 09 09 09 6c 6f 63 6b |c;......|....lock|
|0001b080| 5f 6d 65 73 73 61 67 65 | 28 66 74 70 68 6f 73 74 |_message|(ftphost|
|0001b090| 73 5f 6c 6f 63 6b 2c 20 | 64 70 29 3b 0a 09 09 09 |s_lock, |dp);....|
|0001b0a0| 09 57 61 69 74 50 6f 72 | 74 28 73 79 6e 63 29 3b |.WaitPor|t(sync);|
|0001b0b0| 20 47 65 74 4d 73 67 28 | 73 79 6e 63 29 3b 0a 09 | GetMsg(|sync);..|
|0001b0c0| 09 09 09 0a 09 09 09 09 | 64 70 2d 3e 64 70 5f 41 |........|dp->dp_A|
|0001b0d0| 72 67 32 20 3d 20 6f 32 | 3b 0a 09 09 09 09 64 70 |rg2 = o2|;.....dp|
|0001b0e0| 2d 3e 64 70 5f 41 72 67 | 33 20 3d 20 6f 33 3b 0a |->dp_Arg|3 = o3;.|
|0001b0f0| 09 09 09 09 0a 09 09 09 | 09 66 72 65 65 5f 62 73 |........|.free_bs|
|0001b100| 74 72 28 62 29 3b 0a 09 | 09 09 09 0a 09 09 09 09 |tr(b);..|........|
|0001b110| 65 6e 64 5f 73 70 6c 69 | 74 28 26 73 64 29 3b 0a |end_spli|t(&sd);.|
|0001b120| 09 09 09 09 0a 09 09 09 | 09 62 72 65 61 6b 3b 0a |........|.break;.|
|0001b130| 09 09 09 63 61 73 65 20 | 41 43 54 49 4f 4e 5f 43 |...case |ACTION_C|
|0001b140| 52 45 41 54 45 5f 44 49 | 52 3a 0a 09 09 09 09 69 |REATE_DI|R:.....i|
|0001b150| 66 20 28 21 73 70 6c 69 | 74 5f 64 61 74 61 28 28 |f (!spli|t_data((|
|0001b160| 6c 6f 63 6b 20 2a 29 28 | 64 70 2d 3e 64 70 5f 41 |lock *)(|dp->dp_A|
|0001b170| 72 67 31 20 3c 3c 20 32 | 29 2c 0a 09 09 09 09 09 |rg1 << 2|),......|
|0001b180| 28 62 38 20 2a 29 28 64 | 70 2d 3e 64 70 5f 41 72 |(b8 *)(d|p->dp_Ar|
|0001b190| 67 32 20 3c 3c 20 32 29 | 2c 20 26 73 64 29 29 20 |g2 << 2)|, &sd)) |
|0001b1a0| 7b 0a 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |{......d|p->dp_Re|
|0001b1b0| 73 31 20 3d 20 44 4f 53 | 46 41 4c 53 45 3b 0a 09 |s1 = DOS|FALSE;..|
|0001b1c0| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 32 20 |....dp->|dp_Res2 |
|0001b1d0| 3d 20 45 52 52 4f 52 5f | 4e 4f 5f 46 52 45 45 5f |= ERROR_|NO_FREE_|
|0001b1e0| 53 54 4f 52 45 3b 0a 09 | 09 09 09 09 62 72 65 61 |STORE;..|....brea|
|0001b1f0| 6b 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 0a 09 09 |k;.....}|........|
|0001b200| 09 09 6f 31 20 3d 20 64 | 70 2d 3e 64 70 5f 41 72 |..o1 = d|p->dp_Ar|
|0001b210| 67 31 3b 0a 09 09 09 09 | 6f 32 20 3d 20 64 70 2d |g1;.....|o2 = dp-|
|0001b220| 3e 64 70 5f 41 72 67 32 | 3b 0a 09 09 09 09 0a 09 |>dp_Arg2|;.......|
|0001b230| 09 09 09 64 70 2d 3e 64 | 70 5f 41 72 67 31 20 3d |...dp->d|p_Arg1 =|
|0001b240| 20 66 74 70 68 6f 73 74 | 73 5f 6c 6f 63 6b 3b 0a | ftphost|s_lock;.|
|0001b250| 09 09 09 09 62 20 3d 20 | 63 74 6f 62 73 74 72 28 |....b = |ctobstr(|
|0001b260| 73 64 2e 70 61 74 68 29 | 3b 0a 09 09 09 09 69 66 |sd.path)|;.....if|
|0001b270| 20 28 21 62 29 20 7b 0a | 09 09 09 09 09 65 6e 64 | (!b) {.|.....end|
|0001b280| 5f 73 70 6c 69 74 28 26 | 73 64 29 3b 0a 09 09 09 |_split(&|sd);....|
|0001b290| 09 09 0a 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 |........|dp->dp_R|
|0001b2a0| 65 73 31 20 3d 20 44 4f | 53 46 41 4c 53 45 3b 0a |es1 = DO|SFALSE;.|
|0001b2b0| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 32 |.....dp-|>dp_Res2|
|0001b2c0| 20 3d 20 45 52 52 4f 52 | 5f 4e 4f 5f 46 52 45 45 | = ERROR|_NO_FREE|
|0001b2d0| 5f 53 54 4f 52 45 3b 0a | 09 09 09 09 09 62 72 65 |_STORE;.|.....bre|
|0001b2e0| 61 6b 3b 0a 09 09 09 09 | 7d 0a 09 09 09 09 0a 09 |ak;.....|}.......|
|0001b2f0| 09 09 09 64 70 2d 3e 64 | 70 5f 41 72 67 32 20 3d |...dp->d|p_Arg2 =|
|0001b300| 20 62 3b 0a 09 09 09 09 | 0a 09 09 09 09 64 70 2d | b;.....|.....dp-|
|0001b310| 3e 64 70 5f 50 6f 72 74 | 20 3d 20 73 79 6e 63 3b |>dp_Port| = sync;|
|0001b320| 0a 09 09 09 09 0a 09 09 | 09 09 6c 6f 63 6b 5f 6d |........|..lock_m|
|0001b330| 65 73 73 61 67 65 28 66 | 74 70 68 6f 73 74 73 5f |essage(f|tphosts_|
|0001b340| 6c 6f 63 6b 2c 20 64 70 | 29 3b 0a 09 09 09 09 57 |lock, dp|);.....W|
|0001b350| 61 69 74 50 6f 72 74 28 | 73 79 6e 63 29 3b 20 47 |aitPort(|sync); G|
|0001b360| 65 74 4d 73 67 28 73 79 | 6e 63 29 3b 0a 09 09 09 |etMsg(sy|nc);....|
|0001b370| 09 0a 09 09 09 09 64 70 | 2d 3e 64 70 5f 41 72 67 |......dp|->dp_Arg|
|0001b380| 31 20 3d 20 6f 31 3b 0a | 09 09 09 09 64 70 2d 3e |1 = o1;.|....dp->|
|0001b390| 64 70 5f 41 72 67 32 20 | 3d 20 6f 32 3b 0a 09 09 |dp_Arg2 |= o2;...|
|0001b3a0| 09 09 0a 09 09 09 09 66 | 72 65 65 5f 62 73 74 72 |.......f|ree_bstr|
|0001b3b0| 28 62 29 3b 0a 09 09 09 | 09 0a 09 09 09 09 65 6e |(b);....|......en|
|0001b3c0| 64 5f 73 70 6c 69 74 28 | 26 73 64 29 3b 0a 09 09 |d_split(|&sd);...|
|0001b3d0| 09 09 0a 09 09 09 09 62 | 72 65 61 6b 3b 0a 09 09 |.......b|reak;...|
|0001b3e0| 09 63 61 73 65 20 41 43 | 54 49 4f 4e 5f 45 58 41 |.case AC|TION_EXA|
|0001b3f0| 4d 49 4e 45 5f 4f 42 4a | 45 43 54 3a 0a 09 09 09 |MINE_OBJ|ECT:....|
|0001b400| 09 6e 65 77 5f 6c 6f 63 | 6b 20 3d 20 28 6c 6f 63 |.new_loc|k = (loc|
|0001b410| 6b 20 2a 29 28 64 70 2d | 3e 64 70 5f 41 72 67 31 |k *)(dp-|>dp_Arg1|
|0001b420| 20 3c 3c 20 32 29 3b 0a | 09 09 09 09 66 69 62 20 | << 2);.|....fib |
|0001b430| 3d 20 28 73 74 72 75 63 | 74 20 46 69 6c 65 49 6e |= (struc|t FileIn|
|0001b440| 66 6f 42 6c 6f 63 6b 20 | 2a 29 28 64 70 2d 3e 64 |foBlock |*)(dp->d|
|0001b450| 70 5f 41 72 67 32 20 3c | 3c 20 32 29 3b 0a 09 09 |p_Arg2 <|< 2);...|
|0001b460| 09 09 0a 09 09 09 09 76 | 65 72 69 66 79 28 6e 65 |.......v|erify(ne|
|0001b470| 77 5f 6c 6f 63 6b 2c 20 | 56 5f 6c 6f 63 6b 29 3b |w_lock, |V_lock);|
|0001b480| 0a 09 09 09 09 74 72 75 | 74 68 28 66 69 62 20 21 |.....tru|th(fib !|
|0001b490| 3d 20 6e 69 6c 29 3b 0a | 09 09 09 09 0a 09 09 09 |= nil);.|........|
|0001b4a0| 09 6f 31 20 3d 20 64 70 | 2d 3e 64 70 5f 41 72 67 |.o1 = dp|->dp_Arg|
|0001b4b0| 31 3b 0a 09 09 09 09 64 | 70 2d 3e 64 70 5f 41 72 |1;.....d|p->dp_Ar|
|0001b4c0| 67 31 20 3d 20 6e 65 77 | 5f 6c 6f 63 6b 2d 3e 72 |g1 = new|_lock->r|
|0001b4d0| 66 73 6c 3b 0a 09 09 09 | 09 64 70 2d 3e 64 70 5f |fsl;....|.dp->dp_|
|0001b4e0| 50 6f 72 74 20 3d 20 73 | 79 6e 63 3b 0a 09 09 09 |Port = s|ync;....|
|0001b4f0| 09 0a 09 09 09 09 6c 6f | 63 6b 5f 6d 65 73 73 61 |......lo|ck_messa|
|0001b500| 67 65 28 6e 65 77 5f 6c | 6f 63 6b 2d 3e 72 66 73 |ge(new_l|ock->rfs|
|0001b510| 6c 2c 20 64 70 29 3b 0a | 09 09 09 09 57 61 69 74 |l, dp);.|....Wait|
|0001b520| 50 6f 72 74 28 73 79 6e | 63 29 3b 20 47 65 74 4d |Port(syn|c); GetM|
|0001b530| 73 67 28 73 79 6e 63 29 | 3b 0a 09 09 09 09 0a 09 |sg(sync)|;.......|
|0001b540| 09 09 09 64 70 2d 3e 64 | 70 5f 41 72 67 31 20 3d |...dp->d|p_Arg1 =|
|0001b550| 20 6f 31 3b 0a 09 09 09 | 09 0a 09 09 09 09 69 66 | o1;....|......if|
|0001b560| 20 28 21 64 70 2d 3e 64 | 70 5f 52 65 73 31 29 20 | (!dp->d|p_Res1) |
|0001b570| 62 72 65 61 6b 3b 0a 09 | 09 09 09 0a 09 09 09 09 |break;..|........|
|0001b580| 69 66 20 28 6e 65 77 5f | 6c 6f 63 6b 2d 3e 72 66 |if (new_|lock->rf|
|0001b590| 73 6c 20 3d 3d 20 66 74 | 70 68 6f 73 74 73 5f 6c |sl == ft|phosts_l|
|0001b5a0| 6f 63 6b 29 20 7b 0a 09 | 09 09 09 09 73 74 72 63 |ock) {..|....strc|
|0001b5b0| 70 79 28 66 69 62 2d 3e | 66 69 62 5f 46 69 6c 65 |py(fib->|fib_File|
|0001b5c0| 4e 61 6d 65 2c 20 76 6f | 6c 75 6d 65 5f 6e 61 6d |Name, vo|lume_nam|
|0001b5d0| 65 29 3b 0a 09 09 09 09 | 7d 0a 09 09 09 09 0a 09 |e);.....|}.......|
|0001b5e0| 09 09 09 62 72 65 61 6b | 3b 0a 09 09 09 63 61 73 |...break|;....cas|
|0001b5f0| 65 20 41 43 54 49 4f 4e | 5f 45 58 41 4d 49 4e 45 |e ACTION|_EXAMINE|
|0001b600| 5f 4e 45 58 54 3a 0a 09 | 09 09 09 6e 65 77 5f 6c |_NEXT:..|...new_l|
|0001b610| 6f 63 6b 20 3d 20 28 6c | 6f 63 6b 20 2a 29 28 64 |ock = (l|ock *)(d|
|0001b620| 70 2d 3e 64 70 5f 41 72 | 67 31 20 3c 3c 20 32 29 |p->dp_Ar|g1 << 2)|
|0001b630| 3b 0a 09 09 09 09 66 69 | 62 20 3d 20 28 73 74 72 |;.....fi|b = (str|
|0001b640| 75 63 74 20 46 69 6c 65 | 49 6e 66 6f 42 6c 6f 63 |uct File|InfoBloc|
|0001b650| 6b 20 2a 29 28 64 70 2d | 3e 64 70 5f 41 72 67 32 |k *)(dp-|>dp_Arg2|
|0001b660| 20 3c 3c 20 32 29 3b 0a | 09 09 09 09 0a 09 09 09 | << 2);.|........|
|0001b670| 09 76 65 72 69 66 79 28 | 6e 65 77 5f 6c 6f 63 6b |.verify(|new_lock|
|0001b680| 2c 20 56 5f 6c 6f 63 6b | 29 3b 0a 09 09 09 09 74 |, V_lock|);.....t|
|0001b690| 72 75 74 68 28 66 69 62 | 20 21 3d 20 6e 69 6c 29 |ruth(fib| != nil)|
|0001b6a0| 3b 0a 09 09 09 09 0a 09 | 09 09 09 6f 31 20 3d 20 |;.......|...o1 = |
|0001b6b0| 64 70 2d 3e 64 70 5f 41 | 72 67 31 3b 0a 09 09 09 |dp->dp_A|rg1;....|
|0001b6c0| 09 64 70 2d 3e 64 70 5f | 41 72 67 31 20 3d 20 6e |.dp->dp_|Arg1 = n|
|0001b6d0| 65 77 5f 6c 6f 63 6b 2d | 3e 72 66 73 6c 3b 0a 09 |ew_lock-|>rfsl;..|
|0001b6e0| 09 09 09 64 70 2d 3e 64 | 70 5f 50 6f 72 74 20 3d |...dp->d|p_Port =|
|0001b6f0| 20 73 79 6e 63 3b 0a 09 | 09 09 09 0a 09 09 09 09 | sync;..|........|
|0001b700| 6c 6f 63 6b 5f 6d 65 73 | 73 61 67 65 28 6e 65 77 |lock_mes|sage(new|
|0001b710| 5f 6c 6f 63 6b 2d 3e 72 | 66 73 6c 2c 20 64 70 29 |_lock->r|fsl, dp)|
|0001b720| 3b 0a 09 09 09 09 57 61 | 69 74 50 6f 72 74 28 73 |;.....Wa|itPort(s|
|0001b730| 79 6e 63 29 3b 20 47 65 | 74 4d 73 67 28 73 79 6e |ync); Ge|tMsg(syn|
|0001b740| 63 29 3b 0a 09 09 09 09 | 0a 09 09 09 09 64 70 2d |c);.....|.....dp-|
|0001b750| 3e 64 70 5f 41 72 67 31 | 20 3d 20 6f 31 3b 0a 09 |>dp_Arg1| = o1;..|
|0001b760| 09 09 09 0a 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |........|break;..|
|0001b770| 09 09 63 61 73 65 20 41 | 43 54 49 4f 4e 5f 53 45 |..case A|CTION_SE|
|0001b780| 54 5f 43 4f 4d 4d 45 4e | 54 3a 0a 09 09 09 09 69 |T_COMMEN|T:.....i|
|0001b790| 66 20 28 21 73 70 6c 69 | 74 5f 64 61 74 61 28 28 |f (!spli|t_data((|
|0001b7a0| 6c 6f 63 6b 20 2a 29 28 | 64 70 2d 3e 64 70 5f 41 |lock *)(|dp->dp_A|
|0001b7b0| 72 67 32 20 3c 3c 20 32 | 29 2c 0a 09 09 09 09 09 |rg2 << 2|),......|
|0001b7c0| 28 62 38 20 2a 29 28 64 | 70 2d 3e 64 70 5f 41 72 |(b8 *)(d|p->dp_Ar|
|0001b7d0| 67 33 20 3c 3c 20 32 29 | 2c 20 26 73 64 29 29 20 |g3 << 2)|, &sd)) |
|0001b7e0| 7b 0a 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |{......d|p->dp_Re|
|0001b7f0| 73 31 20 3d 20 44 4f 53 | 46 41 4c 53 45 3b 0a 09 |s1 = DOS|FALSE;..|
|0001b800| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 32 20 |....dp->|dp_Res2 |
|0001b810| 3d 20 45 52 52 4f 52 5f | 4e 4f 5f 46 52 45 45 5f |= ERROR_|NO_FREE_|
|0001b820| 53 54 4f 52 45 3b 0a 09 | 09 09 09 09 62 72 65 61 |STORE;..|....brea|
|0001b830| 6b 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 0a 09 09 |k;.....}|........|
|0001b840| 09 09 6f 32 20 3d 20 64 | 70 2d 3e 64 70 5f 41 72 |..o2 = d|p->dp_Ar|
|0001b850| 67 32 3b 0a 09 09 09 09 | 6f 33 20 3d 20 64 70 2d |g2;.....|o3 = dp-|
|0001b860| 3e 64 70 5f 41 72 67 33 | 3b 0a 09 09 09 09 0a 09 |>dp_Arg3|;.......|
|0001b870| 09 09 09 64 70 2d 3e 64 | 70 5f 41 72 67 32 20 3d |...dp->d|p_Arg2 =|
|0001b880| 20 66 74 70 68 6f 73 74 | 73 5f 6c 6f 63 6b 3b 0a | ftphost|s_lock;.|
|0001b890| 09 09 09 09 62 20 3d 20 | 63 74 6f 62 73 74 72 28 |....b = |ctobstr(|
|0001b8a0| 73 64 2e 70 61 74 68 29 | 3b 0a 09 09 09 09 69 66 |sd.path)|;.....if|
|0001b8b0| 20 28 21 62 29 20 7b 0a | 09 09 09 09 09 65 6e 64 | (!b) {.|.....end|
|0001b8c0| 5f 73 70 6c 69 74 28 26 | 73 64 29 3b 0a 09 09 09 |_split(&|sd);....|
|0001b8d0| 09 09 0a 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 |........|dp->dp_R|
|0001b8e0| 65 73 31 20 3d 20 44 4f | 53 46 41 4c 53 45 3b 0a |es1 = DO|SFALSE;.|
|0001b8f0| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 32 |.....dp-|>dp_Res2|
|0001b900| 20 3d 20 45 52 52 4f 52 | 5f 4e 4f 5f 46 52 45 45 | = ERROR|_NO_FREE|
|0001b910| 5f 53 54 4f 52 45 3b 0a | 09 09 09 09 09 62 72 65 |_STORE;.|.....bre|
|0001b920| 61 6b 3b 0a 09 09 09 09 | 7d 0a 09 09 09 09 0a 09 |ak;.....|}.......|
|0001b930| 09 09 09 64 70 2d 3e 64 | 70 5f 41 72 67 33 20 3d |...dp->d|p_Arg3 =|
|0001b940| 20 62 3b 0a 09 09 09 09 | 64 70 2d 3e 64 70 5f 50 | b;.....|dp->dp_P|
|0001b950| 6f 72 74 20 3d 20 73 79 | 6e 63 3b 0a 09 09 09 09 |ort = sy|nc;.....|
|0001b960| 0a 09 09 09 09 6c 6f 63 | 6b 5f 6d 65 73 73 61 67 |.....loc|k_messag|
|0001b970| 65 28 66 74 70 68 6f 73 | 74 73 5f 6c 6f 63 6b 2c |e(ftphos|ts_lock,|
|0001b980| 20 64 70 29 3b 0a 09 09 | 09 09 57 61 69 74 50 6f | dp);...|..WaitPo|
|0001b990| 72 74 28 73 79 6e 63 29 | 3b 20 47 65 74 4d 73 67 |rt(sync)|; GetMsg|
|0001b9a0| 28 73 79 6e 63 29 3b 0a | 09 09 09 09 0a 09 09 09 |(sync);.|........|
|0001b9b0| 09 64 70 2d 3e 64 70 5f | 41 72 67 32 20 3d 20 6f |.dp->dp_|Arg2 = o|
|0001b9c0| 32 3b 0a 09 09 09 09 64 | 70 2d 3e 64 70 5f 41 72 |2;.....d|p->dp_Ar|
|0001b9d0| 67 33 20 3d 20 6f 33 3b | 0a 09 09 09 09 0a 09 09 |g3 = o3;|........|
|0001b9e0| 09 09 66 72 65 65 5f 62 | 73 74 72 28 62 29 3b 0a |..free_b|str(b);.|
|0001b9f0| 09 09 09 09 0a 09 09 09 | 09 65 6e 64 5f 73 70 6c |........|.end_spl|
|0001ba00| 69 74 28 26 73 64 29 3b | 0a 09 09 09 09 0a 09 09 |it(&sd);|........|
|0001ba10| 09 09 62 72 65 61 6b 3b | 0a 09 09 09 63 61 73 65 |..break;|....case|
|0001ba20| 20 41 43 54 49 4f 4e 5f | 50 41 52 45 4e 54 3a 0a | ACTION_|PARENT:.|
|0001ba30| 09 09 09 09 6e 65 77 5f | 6c 6f 63 6b 20 3d 20 28 |....new_|lock = (|
|0001ba40| 6c 6f 63 6b 20 2a 29 28 | 64 70 2d 3e 64 70 5f 41 |lock *)(|dp->dp_A|
|0001ba50| 72 67 31 20 3c 3c 20 32 | 29 3b 0a 09 09 09 09 0a |rg1 << 2|);......|
|0001ba60| 09 09 09 09 76 65 72 69 | 66 79 28 6e 65 77 5f 6c |....veri|fy(new_l|
|0001ba70| 6f 63 6b 2c 20 56 5f 6c | 6f 63 6b 29 3b 0a 09 09 |ock, V_l|ock);...|
|0001ba80| 09 09 0a 09 09 09 09 69 | 66 20 28 6e 65 77 5f 6c |.......i|f (new_l|
|0001ba90| 6f 63 6b 2d 3e 72 66 73 | 6c 20 3d 3d 20 66 74 70 |ock->rfs|l == ftp|
|0001baa0| 68 6f 73 74 73 5f 6c 6f | 63 6b 29 20 7b 0a 09 09 |hosts_lo|ck) {...|
|0001bab0| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 31 20 3d |...dp->d|p_Res1 =|
|0001bac0| 20 30 3b 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f | 0;.....|.dp->dp_|
|0001bad0| 52 65 73 32 20 3d 20 30 | 3b 0a 09 09 09 09 09 62 |Res2 = 0|;......b|
|0001bae0| 72 65 61 6b 3b 0a 09 09 | 09 09 7d 0a 09 09 09 09 |reak;...|..}.....|
|0001baf0| 2f 2a 20 66 61 6c 6c 20 | 74 68 72 6f 75 67 68 20 |/* fall |through |
|0001bb00| 2a 2f 0a 09 09 09 63 61 | 73 65 20 41 43 54 49 4f |*/....ca|se ACTIO|
|0001bb10| 4e 5f 50 41 52 45 4e 54 | 5f 46 48 3a 0a 09 09 09 |N_PARENT|_FH:....|
|0001bb20| 09 6e 65 77 5f 6c 6f 63 | 6b 20 3d 20 28 6c 6f 63 |.new_loc|k = (loc|
|0001bb30| 6b 20 2a 29 61 6c 6c 6f | 63 61 74 65 28 73 69 7a |k *)allo|cate(siz|
|0001bb40| 65 6f 66 28 2a 6e 65 77 | 5f 6c 6f 63 6b 29 2c 20 |eof(*new|_lock), |
|0001bb50| 56 5f 6c 6f 63 6b 29 3b | 0a 09 09 09 09 69 66 20 |V_lock);|.....if |
|0001bb60| 28 21 6e 65 77 5f 6c 6f | 63 6b 29 20 7b 0a 09 09 |(!new_lo|ck) {...|
|0001bb70| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 31 20 3d |...dp->d|p_Res1 =|
|0001bb80| 20 30 3b 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f | 0;.....|.dp->dp_|
|0001bb90| 52 65 73 32 20 3d 20 45 | 52 52 4f 52 5f 4e 4f 5f |Res2 = E|RROR_NO_|
|0001bba0| 46 52 45 45 5f 53 54 4f | 52 45 3b 0a 0a 09 09 09 |FREE_STO|RE;.....|
|0001bbb0| 09 09 62 72 65 61 6b 3b | 0a 09 09 09 09 7d 0a 09 |..break;|.....}..|
|0001bbc0| 09 09 09 0a 09 09 09 09 | 65 6e 73 75 72 65 28 6e |........|ensure(n|
|0001bbd0| 65 77 5f 6c 6f 63 6b 2c | 20 56 5f 6c 6f 63 6b 29 |ew_lock,| V_lock)|
|0001bbe0| 3b 0a 09 09 09 09 0a 09 | 09 09 09 6e 65 77 5f 6c |;.......|...new_l|
|0001bbf0| 6f 63 6b 2d 3e 70 6f 72 | 74 20 3d 20 6c 6f 63 61 |ock->por|t = loca|
|0001bc00| 6c 3b 0a 09 09 09 09 0a | 09 09 09 09 6e 65 77 5f |l;......|....new_|
|0001bc10| 6c 6f 63 6b 2d 3e 6e 65 | 78 74 20 3d 20 6c 6f 63 |lock->ne|xt = loc|
|0001bc20| 6b 73 3b 0a 09 09 09 09 | 6c 6f 63 6b 73 20 3d 20 |ks;.....|locks = |
|0001bc30| 6e 65 77 5f 6c 6f 63 6b | 3b 0a 09 09 09 09 0a 09 |new_lock|;.......|
|0001bc40| 09 09 09 6e 65 77 5f 6c | 6f 63 6b 2d 3e 72 66 73 |...new_l|ock->rfs|
|0001bc50| 6c 20 3d 20 66 74 70 68 | 6f 73 74 73 5f 6c 6f 63 |l = ftph|osts_loc|
|0001bc60| 6b 3b 0a 09 09 09 09 6e | 65 77 5f 6c 6f 63 6b 2d |k;.....n|ew_lock-|
|0001bc70| 3e 66 6c 2e 66 6c 5f 41 | 63 63 65 73 73 20 3d 20 |>fl.fl_A|ccess = |
|0001bc80| 53 48 41 52 45 44 5f 4c | 4f 43 4b 3b 0a 09 09 09 |SHARED_L|OCK;....|
|0001bc90| 09 6e 65 77 5f 6c 6f 63 | 6b 2d 3e 66 6c 2e 66 6c |.new_loc|k->fl.fl|
|0001bca0| 5f 54 61 73 6b 20 3d 20 | 66 74 70 5f 70 6f 72 74 |_Task = |ftp_port|
|0001bcb0| 3b 0a 09 09 09 09 6e 65 | 77 5f 6c 6f 63 6b 2d 3e |;.....ne|w_lock->|
|0001bcc0| 66 6c 2e 66 6c 5f 56 6f | 6c 75 6d 65 20 3d 20 28 |fl.fl_Vo|lume = (|
|0001bcd0| 62 33 32 29 66 74 70 5f | 76 6f 6c 75 6d 65 20 3e |b32)ftp_|volume >|
|0001bce0| 3e 20 32 3b 0a 09 09 09 | 09 0a 09 09 09 09 64 70 |> 2;....|......dp|
|0001bcf0| 2d 3e 64 70 5f 52 65 73 | 31 20 3d 20 28 62 33 32 |->dp_Res|1 = (b32|
|0001bd00| 29 6e 65 77 5f 6c 6f 63 | 6b 20 3e 3e 20 32 3b 0a |)new_loc|k >> 2;.|
|0001bd10| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 32 20 |....dp->|dp_Res2 |
|0001bd20| 3d 20 30 3b 0a 09 09 09 | 09 0a 09 09 09 09 62 72 |= 0;....|......br|
|0001bd30| 65 61 6b 3b 0a 09 09 09 | 63 61 73 65 20 41 43 54 |eak;....|case ACT|
|0001bd40| 49 4f 4e 5f 53 45 54 5f | 44 41 54 45 3a 0a 09 09 |ION_SET_|DATE:...|
|0001bd50| 09 09 6e 65 77 5f 6c 6f | 63 6b 20 3d 20 28 6c 6f |..new_lo|ck = (lo|
|0001bd60| 63 6b 20 2a 29 28 64 70 | 2d 3e 64 70 5f 41 72 67 |ck *)(dp|->dp_Arg|
|0001bd70| 31 20 3c 3c 20 32 29 3b | 0a 09 09 09 09 0a 09 09 |1 << 2);|........|
|0001bd80| 09 09 76 65 72 69 66 79 | 28 6e 65 77 5f 6c 6f 63 |..verify|(new_loc|
|0001bd90| 6b 2c 20 56 5f 6c 6f 63 | 6b 29 3b 0a 09 09 09 09 |k, V_loc|k);.....|
|0001bda0| 0a 09 09 09 09 6f 31 20 | 3d 20 64 70 2d 3e 64 70 |.....o1 |= dp->dp|
|0001bdb0| 5f 41 72 67 31 3b 0a 09 | 09 09 09 64 70 2d 3e 64 |_Arg1;..|...dp->d|
|0001bdc0| 70 5f 41 72 67 31 20 3d | 20 6e 65 77 5f 6c 6f 63 |p_Arg1 =| new_loc|
|0001bdd0| 6b 2d 3e 72 66 73 6c 3b | 0a 09 09 09 09 0a 09 09 |k->rfsl;|........|
|0001bde0| 09 09 64 70 2d 3e 64 70 | 5f 50 6f 72 74 20 3d 20 |..dp->dp|_Port = |
|0001bdf0| 73 79 6e 63 3b 0a 09 09 | 09 09 6c 6f 63 6b 5f 6d |sync;...|..lock_m|
|0001be00| 65 73 73 61 67 65 28 6e | 65 77 5f 6c 6f 63 6b 2d |essage(n|ew_lock-|
|0001be10| 3e 72 66 73 6c 2c 20 64 | 70 29 3b 0a 09 09 09 09 |>rfsl, d|p);.....|
|0001be20| 57 61 69 74 50 6f 72 74 | 28 73 79 6e 63 29 3b 20 |WaitPort|(sync); |
|0001be30| 47 65 74 4d 73 67 28 73 | 79 6e 63 29 3b 0a 09 09 |GetMsg(s|ync);...|
|0001be40| 09 09 0a 09 09 09 09 64 | 70 2d 3e 64 70 5f 41 72 |.......d|p->dp_Ar|
|0001be50| 67 31 20 3d 20 6f 31 3b | 0a 09 09 09 09 0a 09 09 |g1 = o1;|........|
|0001be60| 09 09 62 72 65 61 6b 3b | 0a 09 09 09 63 61 73 65 |..break;|....case|
|0001be70| 20 41 43 54 49 4f 4e 5f | 53 41 4d 45 5f 4c 4f 43 | ACTION_|SAME_LOC|
|0001be80| 4b 3a 0a 09 09 09 09 6e | 65 77 5f 6c 6f 63 6b 20 |K:.....n|ew_lock |
|0001be90| 3d 20 28 6c 6f 63 6b 20 | 2a 29 28 64 70 2d 3e 64 |= (lock |*)(dp->d|
|0001bea0| 70 5f 41 72 67 31 20 3c | 3c 20 32 29 3b 0a 09 09 |p_Arg1 <|< 2);...|
|0001beb0| 09 09 0a 09 09 09 09 76 | 65 72 69 66 79 28 6e 65 |.......v|erify(ne|
|0001bec0| 77 5f 6c 6f 63 6b 2c 20 | 56 5f 6c 6f 63 6b 29 3b |w_lock, |V_lock);|
|0001bed0| 0a 09 09 09 09 0a 09 09 | 09 09 69 66 20 28 6e 65 |........|..if (ne|
|0001bee0| 77 5f 6c 6f 63 6b 2d 3e | 72 66 73 6c 20 3d 3d 20 |w_lock->|rfsl == |
|0001bef0| 66 74 70 68 6f 73 74 73 | 5f 6c 6f 63 6b 29 20 7b |ftphosts|_lock) {|
|0001bf00| 0a 09 09 09 09 09 6e 65 | 77 5f 6c 6f 63 6b 20 3d |......ne|w_lock =|
|0001bf10| 20 28 6c 6f 63 6b 20 2a | 29 28 64 70 2d 3e 64 70 | (lock *|)(dp->dp|
|0001bf20| 5f 41 72 67 32 20 3c 3c | 20 32 29 3b 0a 09 09 09 |_Arg2 <<| 2);....|
|0001bf30| 09 09 0a 09 09 09 09 09 | 76 65 72 69 66 79 28 6e |........|verify(n|
|0001bf40| 65 77 5f 6c 6f 63 6b 2c | 20 56 5f 6c 6f 63 6b 29 |ew_lock,| V_lock)|
|0001bf50| 3b 0a 09 09 09 09 09 0a | 09 09 09 09 09 69 66 20 |;.......|.....if |
|0001bf60| 28 6e 65 77 5f 6c 6f 63 | 6b 2d 3e 72 66 73 6c 20 |(new_loc|k->rfsl |
|0001bf70| 3d 3d 20 66 74 70 68 6f | 73 74 73 5f 6c 6f 63 6b |== ftpho|sts_lock|
|0001bf80| 29 20 7b 0a 09 09 09 09 | 09 09 64 70 2d 3e 64 70 |) {.....|..dp->dp|
|0001bf90| 5f 52 65 73 31 20 3d 20 | 44 4f 53 54 52 55 45 3b |_Res1 = |DOSTRUE;|
|0001bfa0| 0a 09 09 09 09 09 7d 20 | 65 6c 73 65 20 7b 0a 09 |......} |else {..|
|0001bfb0| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 31 |.....dp-|>dp_Res1|
|0001bfc0| 20 3d 20 44 4f 53 46 41 | 4c 53 45 3b 0a 09 09 09 | = DOSFA|LSE;....|
|0001bfd0| 09 09 7d 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |..}.....|.dp->dp_|
|0001bfe0| 52 65 73 32 20 3d 20 30 | 3b 0a 09 09 09 09 09 62 |Res2 = 0|;......b|
|0001bff0| 72 65 61 6b 3b 0a 09 09 | 09 09 7d 0a 09 09 09 09 |reak;...|..}.....|
|0001c000| 0a 09 09 09 09 72 66 73 | 6c 20 3d 20 6e 65 77 5f |.....rfs|l = new_|
|0001c010| 6c 6f 63 6b 2d 3e 72 66 | 73 6c 3b 0a 09 09 09 09 |lock->rf|sl;.....|
|0001c020| 0a 09 09 09 09 6e 65 77 | 5f 6c 6f 63 6b 20 3d 20 |.....new|_lock = |
|0001c030| 28 6c 6f 63 6b 20 2a 29 | 28 64 70 2d 3e 64 70 5f |(lock *)|(dp->dp_|
|0001c040| 41 72 67 32 20 3c 3c 20 | 32 29 3b 0a 09 09 09 09 |Arg2 << |2);.....|
|0001c050| 0a 09 09 09 09 76 65 72 | 69 66 79 28 6e 65 77 5f |.....ver|ify(new_|
|0001c060| 6c 6f 63 6b 2c 20 56 5f | 6c 6f 63 6b 29 3b 0a 09 |lock, V_|lock);..|
|0001c070| 09 09 09 0a 09 09 09 09 | 6f 31 20 3d 20 64 70 2d |........|o1 = dp-|
|0001c080| 3e 64 70 5f 41 72 67 31 | 3b 0a 09 09 09 09 6f 32 |>dp_Arg1|;.....o2|
|0001c090| 20 3d 20 64 70 2d 3e 64 | 70 5f 41 72 67 32 3b 0a | = dp->d|p_Arg2;.|
|0001c0a0| 09 09 09 09 0a 09 09 09 | 09 64 70 2d 3e 64 70 5f |........|.dp->dp_|
|0001c0b0| 41 72 67 31 20 3d 20 72 | 66 73 6c 3b 0a 09 09 09 |Arg1 = r|fsl;....|
|0001c0c0| 09 64 70 2d 3e 64 70 5f | 41 72 67 32 20 3d 20 6e |.dp->dp_|Arg2 = n|
|0001c0d0| 65 77 5f 6c 6f 63 6b 2d | 3e 72 66 73 6c 3b 0a 09 |ew_lock-|>rfsl;..|
|0001c0e0| 09 09 09 0a 09 09 09 09 | 64 70 2d 3e 64 70 5f 50 |........|dp->dp_P|
|0001c0f0| 6f 72 74 20 3d 20 73 79 | 6e 63 3b 0a 09 09 09 09 |ort = sy|nc;.....|
|0001c100| 6c 6f 63 6b 5f 6d 65 73 | 73 61 67 65 28 72 66 73 |lock_mes|sage(rfs|
|0001c110| 6c 2c 20 64 70 29 3b 0a | 09 09 09 09 57 61 69 74 |l, dp);.|....Wait|
|0001c120| 50 6f 72 74 28 73 79 6e | 63 29 3b 20 47 65 74 4d |Port(syn|c); GetM|
|0001c130| 73 67 28 73 79 6e 63 29 | 3b 0a 09 09 09 09 0a 09 |sg(sync)|;.......|
|0001c140| 09 09 09 64 70 2d 3e 64 | 70 5f 41 72 67 31 20 3d |...dp->d|p_Arg1 =|
|0001c150| 20 6f 31 3b 0a 09 09 09 | 09 64 70 2d 3e 64 70 5f | o1;....|.dp->dp_|
|0001c160| 41 72 67 32 20 3d 20 6f | 32 3b 0a 09 09 09 09 0a |Arg2 = o|2;......|
|0001c170| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 09 63 61 |....brea|k;....ca|
|0001c180| 73 65 20 41 43 54 49 4f | 4e 5f 52 45 41 44 3a 0a |se ACTIO|N_READ:.|
|0001c190| 09 09 09 63 61 73 65 20 | 41 43 54 49 4f 4e 5f 57 |...case |ACTION_W|
|0001c1a0| 52 49 54 45 3a 0a 09 09 | 09 09 66 69 20 3d 20 28 |RITE:...|..fi = (|
|0001c1b0| 66 69 6c 65 5f 69 6e 66 | 6f 20 2a 29 64 70 2d 3e |file_inf|o *)dp->|
|0001c1c0| 64 70 5f 41 72 67 31 3b | 0a 09 09 09 09 76 65 72 |dp_Arg1;|.....ver|
|0001c1d0| 69 66 79 28 66 69 2c 20 | 56 5f 66 69 6c 65 5f 69 |ify(fi, |V_file_i|
|0001c1e0| 6e 66 6f 29 3b 0a 09 09 | 09 09 0a 09 09 09 09 6f |nfo);...|.......o|
|0001c1f0| 31 20 3d 20 64 70 2d 3e | 64 70 5f 41 72 67 31 3b |1 = dp->|dp_Arg1;|
|0001c200| 0a 09 09 09 09 64 70 2d | 3e 64 70 5f 41 72 67 31 |.....dp-|>dp_Arg1|
|0001c210| 20 3d 20 66 69 2d 3e 72 | 66 61 72 67 3b 0a 09 09 | = fi->r|farg;...|
|0001c220| 09 09 64 70 2d 3e 64 70 | 5f 50 6f 72 74 20 3d 20 |..dp->dp|_Port = |
|0001c230| 73 79 6e 63 3b 0a 09 09 | 09 09 0a 09 09 09 09 6c |sync;...|.......l|
|0001c240| 6f 63 6b 5f 6d 65 73 73 | 61 67 65 28 66 74 70 68 |ock_mess|age(ftph|
|0001c250| 6f 73 74 73 5f 6c 6f 63 | 6b 2c 20 64 70 29 3b 0a |osts_loc|k, dp);.|
|0001c260| 09 09 09 09 57 61 69 74 | 50 6f 72 74 28 73 79 6e |....Wait|Port(syn|
|0001c270| 63 29 3b 20 47 65 74 4d | 73 67 28 73 79 6e 63 29 |c); GetM|sg(sync)|
|0001c280| 3b 0a 09 09 09 09 0a 09 | 09 09 09 64 70 2d 3e 64 |;.......|...dp->d|
|0001c290| 70 5f 41 72 67 31 20 3d | 20 6f 31 3b 0a 09 09 09 |p_Arg1 =| o1;....|
|0001c2a0| 09 0a 09 09 09 09 62 72 | 65 61 6b 3b 0a 09 09 09 |......br|eak;....|
|0001c2b0| 63 61 73 65 20 41 43 54 | 49 4f 4e 5f 46 49 4e 44 |case ACT|ION_FIND|
|0001c2c0| 55 50 44 41 54 45 3a 0a | 09 09 09 63 61 73 65 20 |UPDATE:.|...case |
|0001c2d0| 41 43 54 49 4f 4e 5f 46 | 49 4e 44 49 4e 50 55 54 |ACTION_F|INDINPUT|
|0001c2e0| 3a 0a 09 09 09 63 61 73 | 65 20 41 43 54 49 4f 4e |:....cas|e ACTION|
|0001c2f0| 5f 46 49 4e 44 4f 55 54 | 50 55 54 3a 0a 09 09 09 |_FINDOUT|PUT:....|
|0001c300| 09 69 66 20 28 21 73 70 | 6c 69 74 5f 64 61 74 61 |.if (!sp|lit_data|
|0001c310| 28 28 6c 6f 63 6b 20 2a | 29 28 64 70 2d 3e 64 70 |((lock *|)(dp->dp|
|0001c320| 5f 41 72 67 32 20 3c 3c | 20 32 29 2c 0a 09 09 09 |_Arg2 <<| 2),....|
|0001c330| 09 09 28 62 38 20 2a 29 | 28 64 70 2d 3e 64 70 5f |..(b8 *)|(dp->dp_|
|0001c340| 41 72 67 33 20 3c 3c 20 | 32 29 2c 20 26 73 64 29 |Arg3 << |2), &sd)|
|0001c350| 29 20 7b 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |) {.....|.dp->dp_|
|0001c360| 52 65 73 31 20 3d 20 44 | 4f 53 46 41 4c 53 45 3b |Res1 = D|OSFALSE;|
|0001c370| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|0001c380| 32 20 3d 20 45 52 52 4f | 52 5f 4e 4f 5f 46 52 45 |2 = ERRO|R_NO_FRE|
|0001c390| 45 5f 53 54 4f 52 45 3b | 0a 09 09 09 09 09 62 72 |E_STORE;|......br|
|0001c3a0| 65 61 6b 3b 0a 09 09 09 | 09 7d 0a 09 09 09 09 0a |eak;....|.}......|
|0001c3b0| 09 09 09 09 66 69 20 3d | 20 28 66 69 6c 65 5f 69 |....fi =| (file_i|
|0001c3c0| 6e 66 6f 20 2a 29 61 6c | 6c 6f 63 61 74 65 28 73 |nfo *)al|locate(s|
|0001c3d0| 69 7a 65 6f 66 28 2a 66 | 69 29 2c 20 56 5f 66 69 |izeof(*f|i), V_fi|
|0001c3e0| 6c 65 5f 69 6e 66 6f 29 | 3b 0a 09 09 09 09 69 66 |le_info)|;.....if|
|0001c3f0| 20 28 21 66 69 29 20 7b | 0a 09 09 09 09 09 65 6e | (!fi) {|......en|
|0001c400| 64 5f 73 70 6c 69 74 28 | 26 73 64 29 3b 0a 09 09 |d_split(|&sd);...|
|0001c410| 09 09 09 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |........|.dp->dp_|
|0001c420| 52 65 73 31 20 3d 20 44 | 4f 53 46 41 4c 53 45 3b |Res1 = D|OSFALSE;|
|0001c430| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|0001c440| 32 20 3d 20 45 52 52 4f | 52 5f 4e 4f 5f 46 52 45 |2 = ERRO|R_NO_FRE|
|0001c450| 45 5f 53 54 4f 52 45 3b | 0a 09 09 09 09 09 62 72 |E_STORE;|......br|
|0001c460| 65 61 6b 3b 0a 09 09 09 | 09 7d 0a 09 09 09 09 0a |eak;....|.}......|
|0001c470| 09 09 09 09 65 6e 73 75 | 72 65 28 66 69 2c 20 56 |....ensu|re(fi, V|
|0001c480| 5f 66 69 6c 65 5f 69 6e | 66 6f 29 3b 0a 09 09 09 |_file_in|fo);....|
|0001c490| 09 0a 09 09 09 09 66 68 | 20 3d 20 28 73 74 72 75 |......fh| = (stru|
|0001c4a0| 63 74 20 46 69 6c 65 48 | 61 6e 64 6c 65 20 2a 29 |ct FileH|andle *)|
|0001c4b0| 28 64 70 2d 3e 64 70 5f | 41 72 67 31 20 3c 3c 20 |(dp->dp_|Arg1 << |
|0001c4c0| 32 29 3b 0a 09 09 09 09 | 0a 09 09 09 09 74 72 75 |2);.....|.....tru|
|0001c4d0| 74 68 28 66 68 20 21 3d | 20 6e 69 6c 29 3b 0a 09 |th(fh !=| nil);..|
|0001c4e0| 09 09 09 0a 09 09 09 09 | 6f 32 20 3d 20 64 70 2d |........|o2 = dp-|
|0001c4f0| 3e 64 70 5f 41 72 67 32 | 3b 0a 09 09 09 09 6f 33 |>dp_Arg2|;.....o3|
|0001c500| 20 3d 20 64 70 2d 3e 64 | 70 5f 41 72 67 33 3b 0a | = dp->d|p_Arg3;.|
|0001c510| 09 09 09 09 0a 09 09 09 | 09 64 70 2d 3e 64 70 5f |........|.dp->dp_|
|0001c520| 41 72 67 32 20 3d 20 66 | 74 70 68 6f 73 74 73 5f |Arg2 = f|tphosts_|
|0001c530| 6c 6f 63 6b 3b 0a 09 09 | 09 09 62 20 3d 20 63 74 |lock;...|..b = ct|
|0001c540| 6f 62 73 74 72 28 73 64 | 2e 70 61 74 68 29 3b 0a |obstr(sd|.path);.|
|0001c550| 09 09 09 09 69 66 20 28 | 21 62 29 20 7b 0a 09 09 |....if (|!b) {...|
|0001c560| 09 09 09 64 65 61 6c 6c | 6f 63 61 74 65 28 66 69 |...deall|ocate(fi|
|0001c570| 2c 20 56 5f 66 69 6c 65 | 5f 69 6e 66 6f 29 3b 0a |, V_file|_info);.|
|0001c580| 09 09 09 09 09 65 6e 64 | 5f 73 70 6c 69 74 28 26 |.....end|_split(&|
|0001c590| 73 64 29 3b 0a 09 09 09 | 09 09 0a 09 09 09 09 09 |sd);....|........|
|0001c5a0| 64 70 2d 3e 64 70 5f 52 | 65 73 31 20 3d 20 44 4f |dp->dp_R|es1 = DO|
|0001c5b0| 53 46 41 4c 53 45 3b 0a | 09 09 09 09 09 64 70 2d |SFALSE;.|.....dp-|
|0001c5c0| 3e 64 70 5f 52 65 73 32 | 20 3d 20 45 52 52 4f 52 |>dp_Res2| = ERROR|
|0001c5d0| 5f 4e 4f 5f 46 52 45 45 | 5f 53 54 4f 52 45 3b 0a |_NO_FREE|_STORE;.|
|0001c5e0| 09 09 09 09 09 62 72 65 | 61 6b 3b 0a 09 09 09 09 |.....bre|ak;.....|
|0001c5f0| 7d 0a 09 09 09 09 64 70 | 2d 3e 64 70 5f 41 72 67 |}.....dp|->dp_Arg|
|0001c600| 33 20 3d 20 62 3b 0a 09 | 09 09 09 0a 09 09 09 09 |3 = b;..|........|
|0001c610| 64 70 2d 3e 64 70 5f 50 | 6f 72 74 20 3d 20 73 79 |dp->dp_P|ort = sy|
|0001c620| 6e 63 3b 0a 09 09 09 09 | 0a 09 09 09 09 6c 6f 63 |nc;.....|.....loc|
|0001c630| 6b 5f 6d 65 73 73 61 67 | 65 28 66 74 70 68 6f 73 |k_messag|e(ftphos|
|0001c640| 74 73 5f 6c 6f 63 6b 2c | 20 64 70 29 3b 0a 09 09 |ts_lock,| dp);...|
|0001c650| 09 09 57 61 69 74 50 6f | 72 74 28 73 79 6e 63 29 |..WaitPo|rt(sync)|
|0001c660| 3b 20 47 65 74 4d 73 67 | 28 73 79 6e 63 29 3b 0a |; GetMsg|(sync);.|
|0001c670| 09 09 09 09 0a 09 09 09 | 09 64 70 2d 3e 64 70 5f |........|.dp->dp_|
|0001c680| 41 72 67 32 20 3d 20 6f | 32 3b 0a 09 09 09 09 64 |Arg2 = o|2;.....d|
|0001c690| 70 2d 3e 64 70 5f 41 72 | 67 33 20 3d 20 6f 33 3b |p->dp_Ar|g3 = o3;|
|0001c6a0| 0a 09 09 09 09 0a 09 09 | 09 09 66 72 65 65 5f 62 |........|..free_b|
|0001c6b0| 73 74 72 28 62 29 3b 0a | 09 09 09 09 0a 09 09 09 |str(b);.|........|
|0001c6c0| 09 69 66 20 28 64 70 2d | 3e 64 70 5f 52 65 73 31 |.if (dp-|>dp_Res1|
|0001c6d0| 29 20 7b 0a 09 09 09 09 | 09 66 68 2d 3e 66 68 5f |) {.....|.fh->fh_|
|0001c6e0| 54 79 70 65 20 3d 20 66 | 74 70 5f 70 6f 72 74 3b |Type = f|tp_port;|
|0001c6f0| 0a 09 09 09 09 09 66 69 | 2d 3e 72 66 61 72 67 20 |......fi|->rfarg |
|0001c700| 3d 20 66 68 2d 3e 66 68 | 5f 41 72 67 73 3b 0a 09 |= fh->fh|_Args;..|
|0001c710| 09 09 09 09 66 68 2d 3e | 66 68 5f 41 72 67 73 20 |....fh->|fh_Args |
|0001c720| 3d 20 28 62 33 32 29 66 | 69 3b 0a 09 09 09 09 09 |= (b32)f|i;......|
|0001c730| 66 69 2d 3e 70 6f 72 74 | 20 3d 20 6c 6f 63 61 6c |fi->port| = local|
|0001c740| 3b 0a 09 09 09 09 09 66 | 69 2d 3e 74 79 70 65 20 |;......f|i->type |
|0001c750| 3d 20 64 70 2d 3e 64 70 | 5f 54 79 70 65 3b 0a 09 |= dp->dp|_Type;..|
|0001c760| 09 09 09 7d 20 65 6c 73 | 65 20 7b 0a 09 09 09 09 |...} els|e {.....|
|0001c770| 09 64 65 61 6c 6c 6f 63 | 61 74 65 28 66 69 2c 20 |.dealloc|ate(fi, |
|0001c780| 56 5f 66 69 6c 65 5f 69 | 6e 66 6f 29 3b 0a 09 09 |V_file_i|nfo);...|
|0001c790| 09 09 7d 0a 09 09 09 09 | 0a 09 09 09 09 65 6e 64 |..}.....|.....end|
|0001c7a0| 5f 73 70 6c 69 74 28 26 | 73 64 29 3b 0a 09 09 09 |_split(&|sd);....|
|0001c7b0| 09 0a 09 09 09 09 62 72 | 65 61 6b 3b 0a 09 09 09 |......br|eak;....|
|0001c7c0| 63 61 73 65 20 41 43 54 | 49 4f 4e 5f 45 4e 44 3a |case ACT|ION_END:|
|0001c7d0| 0a 09 09 09 09 66 69 20 | 3d 20 28 66 69 6c 65 5f |.....fi |= (file_|
|0001c7e0| 69 6e 66 6f 20 2a 29 64 | 70 2d 3e 64 70 5f 41 72 |info *)d|p->dp_Ar|
|0001c7f0| 67 31 3b 0a 09 09 09 09 | 0a 09 09 09 09 76 65 72 |g1;.....|.....ver|
|0001c800| 69 66 79 28 66 69 2c 20 | 56 5f 66 69 6c 65 5f 69 |ify(fi, |V_file_i|
|0001c810| 6e 66 6f 29 3b 0a 09 09 | 09 09 0a 09 09 09 09 6f |nfo);...|.......o|
|0001c820| 31 20 3d 20 64 70 2d 3e | 64 70 5f 41 72 67 31 3b |1 = dp->|dp_Arg1;|
|0001c830| 0a 09 09 09 09 64 70 2d | 3e 64 70 5f 41 72 67 31 |.....dp-|>dp_Arg1|
|0001c840| 20 3d 20 66 69 2d 3e 72 | 66 61 72 67 3b 0a 09 09 | = fi->r|farg;...|
|0001c850| 09 09 0a 09 09 09 09 64 | 70 2d 3e 64 70 5f 50 6f |.......d|p->dp_Po|
|0001c860| 72 74 20 3d 20 73 79 6e | 63 3b 0a 09 09 09 09 6c |rt = syn|c;.....l|
|0001c870| 6f 63 6b 5f 6d 65 73 73 | 61 67 65 28 66 74 70 68 |ock_mess|age(ftph|
|0001c880| 6f 73 74 73 5f 6c 6f 63 | 6b 2c 20 64 70 29 3b 0a |osts_loc|k, dp);.|
|0001c890| 09 09 09 09 57 61 69 74 | 50 6f 72 74 28 73 79 6e |....Wait|Port(syn|
|0001c8a0| 63 29 3b 20 47 65 74 4d | 73 67 28 73 79 6e 63 29 |c); GetM|sg(sync)|
|0001c8b0| 3b 0a 09 09 09 09 0a 09 | 09 09 09 64 70 2d 3e 64 |;.......|...dp->d|
|0001c8c0| 70 5f 41 72 67 31 20 3d | 20 6f 31 3b 0a 09 09 09 |p_Arg1 =| o1;....|
|0001c8d0| 09 0a 09 09 09 09 64 65 | 61 6c 6c 6f 63 61 74 65 |......de|allocate|
|0001c8e0| 28 66 69 2c 20 56 5f 66 | 69 6c 65 5f 69 6e 66 6f |(fi, V_f|ile_info|
|0001c8f0| 29 3b 0a 09 09 09 09 0a | 09 09 09 09 62 72 65 61 |);......|....brea|
|0001c900| 6b 3b 0a 09 09 09 63 61 | 73 65 20 41 43 54 49 4f |k;....ca|se ACTIO|
|0001c910| 4e 5f 53 45 45 4b 3a 0a | 09 09 09 09 66 69 20 3d |N_SEEK:.|....fi =|
|0001c920| 20 28 66 69 6c 65 5f 69 | 6e 66 6f 20 2a 29 64 70 | (file_i|nfo *)dp|
|0001c930| 2d 3e 64 70 5f 41 72 67 | 31 3b 0a 09 09 09 09 0a |->dp_Arg|1;......|
|0001c940| 09 09 09 09 76 65 72 69 | 66 79 28 66 69 2c 20 56 |....veri|fy(fi, V|
|0001c950| 5f 66 69 6c 65 5f 69 6e | 66 6f 29 3b 0a 09 09 09 |_file_in|fo);....|
|0001c960| 09 0a 09 09 09 09 6f 31 | 20 3d 20 64 70 2d 3e 64 |......o1| = dp->d|
|0001c970| 70 5f 41 72 67 31 3b 0a | 09 09 09 09 0a 09 09 09 |p_Arg1;.|........|
|0001c980| 09 64 70 2d 3e 64 70 5f | 41 72 67 31 20 3d 20 66 |.dp->dp_|Arg1 = f|
|0001c990| 69 2d 3e 72 66 61 72 67 | 3b 0a 09 09 09 09 0a 09 |i->rfarg|;.......|
|0001c9a0| 09 09 09 64 70 2d 3e 64 | 70 5f 50 6f 72 74 20 3d |...dp->d|p_Port =|
|0001c9b0| 20 73 79 6e 63 3b 0a 09 | 09 09 09 6c 6f 63 6b 5f | sync;..|...lock_|
|0001c9c0| 6d 65 73 73 61 67 65 28 | 66 74 70 68 6f 73 74 73 |message(|ftphosts|
|0001c9d0| 5f 6c 6f 63 6b 2c 20 64 | 70 29 3b 0a 09 09 09 09 |_lock, d|p);.....|
|0001c9e0| 57 61 69 74 50 6f 72 74 | 28 73 79 6e 63 29 3b 20 |WaitPort|(sync); |
|0001c9f0| 47 65 74 4d 73 67 28 73 | 79 6e 63 29 3b 0a 09 09 |GetMsg(s|ync);...|
|0001ca00| 09 09 0a 09 09 09 09 64 | 70 2d 3e 64 70 5f 41 72 |.......d|p->dp_Ar|
|0001ca10| 67 31 20 3d 20 6f 31 3b | 0a 09 09 09 09 0a 09 09 |g1 = o1;|........|
|0001ca20| 09 09 62 72 65 61 6b 3b | 0a 09 09 09 63 61 73 65 |..break;|....case|
|0001ca30| 20 41 43 54 49 4f 4e 5f | 46 48 5f 46 52 4f 4d 5f | ACTION_|FH_FROM_|
|0001ca40| 4c 4f 43 4b 3a 0a 09 09 | 09 09 66 68 20 3d 20 28 |LOCK:...|..fh = (|
|0001ca50| 73 74 72 75 63 74 20 46 | 69 6c 65 48 61 6e 64 6c |struct F|ileHandl|
|0001ca60| 65 20 2a 29 28 64 70 2d | 3e 64 70 5f 41 72 67 31 |e *)(dp-|>dp_Arg1|
|0001ca70| 20 3c 3c 20 32 29 3b 0a | 09 09 09 09 6e 6c 6f 63 | << 2);.|....nloc|
|0001ca80| 6b 20 3d 20 28 6c 6f 63 | 6b 20 2a 29 28 64 70 2d |k = (loc|k *)(dp-|
|0001ca90| 3e 64 70 5f 41 72 67 32 | 20 3c 3c 20 32 29 3b 0a |>dp_Arg2| << 2);.|
|0001caa0| 09 09 09 09 0a 09 09 09 | 09 76 65 72 69 66 79 28 |........|.verify(|
|0001cab0| 6e 6c 6f 63 6b 2c 20 56 | 5f 6c 6f 63 6b 29 3b 0a |nlock, V|_lock);.|
|0001cac0| 09 09 09 09 74 72 75 74 | 68 28 66 68 20 21 3d 20 |....trut|h(fh != |
|0001cad0| 6e 69 6c 29 3b 0a 0a 09 | 09 09 09 66 69 20 3d 20 |nil);...|...fi = |
|0001cae0| 28 66 69 6c 65 5f 69 6e | 66 6f 20 2a 29 61 6c 6c |(file_in|fo *)all|
|0001caf0| 6f 63 61 74 65 28 73 69 | 7a 65 6f 66 28 2a 66 69 |ocate(si|zeof(*fi|
|0001cb00| 29 2c 20 56 5f 66 69 6c | 65 5f 69 6e 66 6f 29 3b |), V_fil|e_info);|
|0001cb10| 0a 09 09 09 09 69 66 20 | 28 21 66 69 29 20 7b 0a |.....if |(!fi) {.|
|0001cb20| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 31 |.....dp-|>dp_Res1|
|0001cb30| 20 3d 20 44 4f 53 46 41 | 4c 53 45 3b 0a 09 09 09 | = DOSFA|LSE;....|
|0001cb40| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 32 20 3d 20 |..dp->dp|_Res2 = |
|0001cb50| 45 52 52 4f 52 5f 4e 4f | 5f 46 52 45 45 5f 53 54 |ERROR_NO|_FREE_ST|
|0001cb60| 4f 52 45 3b 0a 09 09 09 | 09 09 62 72 65 61 6b 3b |ORE;....|..break;|
|0001cb70| 0a 09 09 09 09 7d 0a 09 | 09 09 09 0a 09 09 09 09 |.....}..|........|
|0001cb80| 65 6e 73 75 72 65 28 66 | 69 2c 20 56 5f 66 69 6c |ensure(f|i, V_fil|
|0001cb90| 65 5f 69 6e 66 6f 29 3b | 0a 09 09 09 09 0a 09 09 |e_info);|........|
|0001cba0| 09 09 6f 32 20 3d 20 64 | 70 2d 3e 64 70 5f 41 72 |..o2 = d|p->dp_Ar|
|0001cbb0| 67 32 3b 0a 09 09 09 09 | 0a 09 09 09 09 64 70 2d |g2;.....|.....dp-|
|0001cbc0| 3e 64 70 5f 41 72 67 32 | 20 3d 20 6e 6c 6f 63 6b |>dp_Arg2| = nlock|
|0001cbd0| 2d 3e 72 66 73 6c 3b 0a | 09 09 09 09 0a 09 09 09 |->rfsl;.|........|
|0001cbe0| 09 64 70 2d 3e 64 70 5f | 50 6f 72 74 20 3d 20 73 |.dp->dp_|Port = s|
|0001cbf0| 79 6e 63 3b 0a 09 09 09 | 09 6c 6f 63 6b 5f 6d 65 |ync;....|.lock_me|
|0001cc00| 73 73 61 67 65 28 66 74 | 70 68 6f 73 74 73 5f 6c |ssage(ft|phosts_l|
|0001cc10| 6f 63 6b 2c 20 64 70 29 | 3b 0a 09 09 09 09 57 61 |ock, dp)|;.....Wa|
|0001cc20| 69 74 50 6f 72 74 28 73 | 79 6e 63 29 3b 20 47 65 |itPort(s|ync); Ge|
|0001cc30| 74 4d 73 67 28 73 79 6e | 63 29 3b 0a 09 09 09 09 |tMsg(syn|c);.....|
|0001cc40| 0a 09 09 09 09 64 70 2d | 3e 64 70 5f 41 72 67 32 |.....dp-|>dp_Arg2|
|0001cc50| 20 3d 20 6f 32 3b 0a 09 | 09 09 09 0a 09 09 09 09 | = o2;..|........|
|0001cc60| 69 66 20 28 64 70 2d 3e | 64 70 5f 52 65 73 31 29 |if (dp->|dp_Res1)|
|0001cc70| 20 7b 0a 09 09 09 09 09 | 66 68 2d 3e 66 68 5f 54 | {......|fh->fh_T|
|0001cc80| 79 70 65 20 3d 20 66 74 | 70 5f 70 6f 72 74 3b 0a |ype = ft|p_port;.|
|0001cc90| 09 09 09 09 09 66 69 2d | 3e 72 66 61 72 67 20 3d |.....fi-|>rfarg =|
|0001cca0| 20 66 68 2d 3e 66 68 5f | 41 72 67 73 3b 0a 09 09 | fh->fh_|Args;...|
|0001ccb0| 09 09 09 66 68 2d 3e 66 | 68 5f 41 72 67 73 20 3d |...fh->f|h_Args =|
|0001ccc0| 20 28 62 33 32 29 66 69 | 3b 0a 09 09 09 09 09 66 | (b32)fi|;......f|
|0001ccd0| 69 2d 3e 70 6f 72 74 20 | 3d 20 6c 6f 63 61 6c 3b |i->port |= local;|
|0001cce0| 0a 09 09 09 09 09 66 69 | 2d 3e 74 79 70 65 20 3d |......fi|->type =|
|0001ccf0| 20 64 70 2d 3e 64 70 5f | 54 79 70 65 3b 0a 09 09 | dp->dp_|Type;...|
|0001cd00| 09 09 7d 20 65 6c 73 65 | 20 7b 0a 09 09 09 09 09 |..} else| {......|
|0001cd10| 64 65 61 6c 6c 6f 63 61 | 74 65 28 66 69 2c 20 56 |dealloca|te(fi, V|
|0001cd20| 5f 66 69 6c 65 5f 69 6e | 66 6f 29 3b 0a 09 09 09 |_file_in|fo);....|
|0001cd30| 09 7d 0a 09 09 09 09 0a | 09 09 09 09 62 72 65 61 |.}......|....brea|
|0001cd40| 6b 3b 0a 09 09 09 63 61 | 73 65 20 41 43 54 49 4f |k;....ca|se ACTIO|
|0001cd50| 4e 5f 43 4f 50 59 5f 44 | 49 52 5f 46 48 3a 0a 09 |N_COPY_D|IR_FH:..|
|0001cd60| 09 09 09 66 68 20 3d 20 | 28 73 74 72 75 63 74 20 |...fh = |(struct |
|0001cd70| 46 69 6c 65 48 61 6e 64 | 6c 65 20 2a 29 28 64 70 |FileHand|le *)(dp|
|0001cd80| 2d 3e 64 70 5f 41 72 67 | 31 20 3c 3c 20 32 29 3b |->dp_Arg|1 << 2);|
|0001cd90| 0a 09 09 09 09 66 69 20 | 3d 20 28 66 69 6c 65 5f |.....fi |= (file_|
|0001cda0| 69 6e 66 6f 20 2a 29 66 | 68 2d 3e 66 68 5f 41 72 |info *)f|h->fh_Ar|
|0001cdb0| 67 73 3b 0a 09 09 09 09 | 0a 09 09 09 09 6e 65 77 |gs;.....|.....new|
|0001cdc0| 5f 6c 6f 63 6b 20 3d 20 | 28 6c 6f 63 6b 20 2a 29 |_lock = |(lock *)|
|0001cdd0| 61 6c 6c 6f 63 61 74 65 | 28 73 69 7a 65 6f 66 28 |allocate|(sizeof(|
|0001cde0| 2a 6e 65 77 5f 6c 6f 63 | 6b 29 2c 20 56 5f 6c 6f |*new_loc|k), V_lo|
|0001cdf0| 63 6b 29 3b 0a 09 09 09 | 09 69 66 20 28 21 6e 65 |ck);....|.if (!ne|
|0001ce00| 77 5f 6c 6f 63 6b 29 20 | 7b 0a 09 09 09 09 09 64 |w_lock) |{......d|
|0001ce10| 70 2d 3e 64 70 5f 52 65 | 73 31 20 3d 20 30 3b 0a |p->dp_Re|s1 = 0;.|
|0001ce20| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 32 |.....dp-|>dp_Res2|
|0001ce30| 20 3d 20 45 52 52 4f 52 | 5f 4e 4f 5f 46 52 45 45 | = ERROR|_NO_FREE|
|0001ce40| 5f 53 54 4f 52 45 3b 0a | 0a 09 09 09 09 09 62 72 |_STORE;.|......br|
|0001ce50| 65 61 6b 3b 0a 09 09 09 | 09 7d 0a 09 09 09 09 0a |eak;....|.}......|
|0001ce60| 09 09 09 09 65 6e 73 75 | 72 65 28 6e 65 77 5f 6c |....ensu|re(new_l|
|0001ce70| 6f 63 6b 2c 20 56 5f 6c | 6f 63 6b 29 3b 0a 09 09 |ock, V_l|ock);...|
|0001ce80| 09 09 0a 09 09 09 09 6e | 65 77 5f 6c 6f 63 6b 2d |.......n|ew_lock-|
|0001ce90| 3e 70 6f 72 74 20 3d 20 | 6c 6f 63 61 6c 3b 0a 09 |>port = |local;..|
|0001cea0| 09 09 09 0a 09 09 09 09 | 6e 65 77 5f 6c 6f 63 6b |........|new_lock|
|0001ceb0| 2d 3e 66 6c 2e 66 6c 5f | 41 63 63 65 73 73 20 3d |->fl.fl_|Access =|
|0001cec0| 20 53 48 41 52 45 44 5f | 4c 4f 43 4b 3b 0a 09 09 | SHARED_|LOCK;...|
|0001ced0| 09 09 6e 65 77 5f 6c 6f | 63 6b 2d 3e 66 6c 2e 66 |..new_lo|ck->fl.f|
|0001cee0| 6c 5f 54 61 73 6b 20 3d | 20 66 74 70 5f 70 6f 72 |l_Task =| ftp_por|
|0001cef0| 74 3b 0a 09 09 09 09 6e | 65 77 5f 6c 6f 63 6b 2d |t;.....n|ew_lock-|
|0001cf00| 3e 66 6c 2e 66 6c 5f 56 | 6f 6c 75 6d 65 20 3d 20 |>fl.fl_V|olume = |
|0001cf10| 28 62 33 32 29 66 74 70 | 5f 76 6f 6c 75 6d 65 20 |(b32)ftp|_volume |
|0001cf20| 3e 3e 20 32 3b 0a 09 09 | 09 09 0a 09 09 09 09 76 |>> 2;...|.......v|
|0001cf30| 65 72 69 66 79 28 66 69 | 2c 20 56 5f 66 69 6c 65 |erify(fi|, V_file|
|0001cf40| 5f 69 6e 66 6f 29 3b 0a | 09 09 09 09 0a 09 09 09 |_info);.|........|
|0001cf50| 09 66 68 2d 3e 66 68 5f | 41 72 67 73 20 3d 20 66 |.fh->fh_|Args = f|
|0001cf60| 69 2d 3e 72 66 61 72 67 | 3b 0a 09 09 09 09 0a 09 |i->rfarg|;.......|
|0001cf70| 09 09 09 64 70 2d 3e 64 | 70 5f 50 6f 72 74 20 3d |...dp->d|p_Port =|
|0001cf80| 20 73 79 6e 63 3b 0a 09 | 09 09 09 6c 6f 63 6b 5f | sync;..|...lock_|
|0001cf90| 6d 65 73 73 61 67 65 28 | 66 74 70 68 6f 73 74 73 |message(|ftphosts|
|0001cfa0| 5f 6c 6f 63 6b 2c 20 64 | 70 29 3b 0a 09 09 09 09 |_lock, d|p);.....|
|0001cfb0| 57 61 69 74 50 6f 72 74 | 28 73 79 6e 63 29 3b 20 |WaitPort|(sync); |
|0001cfc0| 47 65 74 4d 73 67 28 73 | 79 6e 63 29 3b 0a 09 09 |GetMsg(s|ync);...|
|0001cfd0| 09 09 0a 09 09 09 09 66 | 68 2d 3e 66 68 5f 41 72 |.......f|h->fh_Ar|
|0001cfe0| 67 73 20 3d 20 28 62 33 | 32 29 66 69 3b 0a 09 09 |gs = (b3|2)fi;...|
|0001cff0| 09 09 0a 09 09 09 09 69 | 66 20 28 64 70 2d 3e 64 |.......i|f (dp->d|
|0001d000| 70 5f 52 65 73 31 29 20 | 7b 0a 09 09 09 09 09 6e |p_Res1) |{......n|
|0001d010| 65 77 5f 6c 6f 63 6b 2d | 3e 72 66 73 6c 20 3d 20 |ew_lock-|>rfsl = |
|0001d020| 64 70 2d 3e 64 70 5f 52 | 65 73 31 3b 0a 0a 09 09 |dp->dp_R|es1;....|
|0001d030| 09 09 09 6e 65 77 5f 6c | 6f 63 6b 2d 3e 6e 65 78 |...new_l|ock->nex|
|0001d040| 74 20 3d 20 6c 6f 63 6b | 73 3b 0a 09 09 09 09 09 |t = lock|s;......|
|0001d050| 6c 6f 63 6b 73 20 3d 20 | 6e 65 77 5f 6c 6f 63 6b |locks = |new_lock|
|0001d060| 3b 0a 09 09 09 09 0a 09 | 09 09 09 09 64 70 2d 3e |;.......|....dp->|
|0001d070| 64 70 5f 52 65 73 31 20 | 3d 20 28 62 33 32 29 6e |dp_Res1 |= (b32)n|
|0001d080| 65 77 5f 6c 6f 63 6b 20 | 3e 3e 20 32 3b 0a 09 09 |ew_lock |>> 2;...|
|0001d090| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 32 20 3d |...dp->d|p_Res2 =|
|0001d0a0| 20 30 3b 0a 09 09 09 09 | 7d 20 65 6c 73 65 20 7b | 0;.....|} else {|
|0001d0b0| 0a 09 09 09 09 09 64 65 | 61 6c 6c 6f 63 61 74 65 |......de|allocate|
|0001d0c0| 28 6e 65 77 5f 6c 6f 63 | 6b 2c 20 56 5f 6c 6f 63 |(new_loc|k, V_loc|
|0001d0d0| 6b 29 3b 0a 09 09 09 09 | 7d 0a 09 09 09 09 0a 09 |k);.....|}.......|
|0001d0e0| 09 09 09 62 72 65 61 6b | 3b 0a 09 09 09 63 61 73 |...break|;....cas|
|0001d0f0| 65 20 41 43 54 49 4f 4e | 5f 45 58 41 4d 49 4e 45 |e ACTION|_EXAMINE|
|0001d100| 5f 46 48 3a 0a 09 09 09 | 09 66 68 20 3d 20 28 73 |_FH:....|.fh = (s|
|0001d110| 74 72 75 63 74 20 46 69 | 6c 65 48 61 6e 64 6c 65 |truct Fi|leHandle|
|0001d120| 20 2a 29 28 64 70 2d 3e | 64 70 5f 41 72 67 31 20 | *)(dp->|dp_Arg1 |
|0001d130| 3c 3c 20 32 29 3b 0a 09 | 09 09 09 0a 09 09 09 09 |<< 2);..|........|
|0001d140| 66 69 20 3d 20 28 66 69 | 6c 65 5f 69 6e 66 6f 20 |fi = (fi|le_info |
|0001d150| 2a 29 66 68 2d 3e 66 68 | 5f 41 72 67 73 3b 0a 09 |*)fh->fh|_Args;..|
|0001d160| 09 09 09 0a 09 09 09 09 | 76 65 72 69 66 79 28 66 |........|verify(f|
|0001d170| 69 2c 20 56 5f 66 69 6c | 65 5f 69 6e 66 6f 29 3b |i, V_fil|e_info);|
|0001d180| 0a 09 09 09 09 0a 09 09 | 09 09 66 68 2d 3e 66 68 |........|..fh->fh|
|0001d190| 5f 41 72 67 73 20 3d 20 | 66 69 2d 3e 72 66 61 72 |_Args = |fi->rfar|
|0001d1a0| 67 3b 0a 09 09 09 09 0a | 09 09 09 09 64 70 2d 3e |g;......|....dp->|
|0001d1b0| 64 70 5f 50 6f 72 74 20 | 3d 20 73 79 6e 63 3b 0a |dp_Port |= sync;.|
|0001d1c0| 09 09 09 09 6c 6f 63 6b | 5f 6d 65 73 73 61 67 65 |....lock|_message|
|0001d1d0| 28 66 74 70 68 6f 73 74 | 73 5f 6c 6f 63 6b 2c 20 |(ftphost|s_lock, |
|0001d1e0| 64 70 29 3b 0a 09 09 09 | 09 57 61 69 74 50 6f 72 |dp);....|.WaitPor|
|0001d1f0| 74 28 73 79 6e 63 29 3b | 20 47 65 74 4d 73 67 28 |t(sync);| GetMsg(|
|0001d200| 73 79 6e 63 29 3b 0a 09 | 09 09 09 0a 09 09 09 09 |sync);..|........|
|0001d210| 66 68 2d 3e 66 68 5f 41 | 72 67 73 20 3d 20 28 62 |fh->fh_A|rgs = (b|
|0001d220| 33 32 29 66 69 3b 0a 09 | 09 09 09 0a 09 09 09 09 |32)fi;..|........|
|0001d230| 62 72 65 61 6b 3b 0a 09 | 09 09 64 65 66 61 75 6c |break;..|..defaul|
|0001d240| 74 3a 0a 09 09 09 09 73 | 68 6f 77 5f 69 6e 74 28 |t:.....s|how_int(|
|0001d250| 64 70 2d 3e 64 70 5f 54 | 79 70 65 29 3b 0a 09 09 |dp->dp_T|ype);...|
|0001d260| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 31 20 3d 20 |..dp->dp|_Res1 = |
|0001d270| 44 4f 53 46 41 4c 53 45 | 3b 0a 09 09 09 09 64 70 |DOSFALSE|;.....dp|
|0001d280| 2d 3e 64 70 5f 52 65 73 | 32 20 3d 20 45 52 52 4f |->dp_Res|2 = ERRO|
|0001d290| 52 5f 41 43 54 49 4f 4e | 5f 4e 4f 54 5f 4b 4e 4f |R_ACTION|_NOT_KNO|
|0001d2a0| 57 4e 3b 0a 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |WN;.....|break;..|
|0001d2b0| 09 09 7d 0a 09 09 09 0a | 09 09 09 64 70 2d 3e 64 |..}.....|...dp->d|
|0001d2c0| 70 5f 50 6f 72 74 20 3d | 20 66 74 70 5f 70 6f 72 |p_Port =| ftp_por|
|0001d2d0| 74 3b 0a 09 09 09 50 75 | 74 4d 73 67 28 72 65 70 |t;....Pu|tMsg(rep|
|0001d2e0| 6c 79 2c 20 64 70 2d 3e | 64 70 5f 4c 69 6e 6b 29 |ly, dp->|dp_Link)|
|0001d2f0| 3b 0a 09 09 7d 0a 09 7d | 0a 7d 0a 00 00 00 00 00 |;...}..}|.}......|
|0001d300| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d310| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d320| 00 00 00 00 00 00 00 00 | 00 00 03 72 00 00 05 f5 |........|...r....|
|0001d330| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 03 71 |........|.......q|
|0001d340| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d350| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d360| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d370| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d380| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d390| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d3a0| 00 00 00 00 00 00 1a f9 | 00 00 04 15 00 00 08 b7 |........|........|
|0001d3b0| 0a 4d 41 53 68 61 72 65 | 5f 36 34 00 00 00 00 00 |.MAShare|_64.....|
|0001d3c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d3d0| 00 00 00 00 00 00 00 00 | 00 00 1a f9 00 00 04 15 |........|........|
|0001d3e0| 00 00 09 1d 00 00 1a f9 | 00 00 03 fa 00 00 01 25 |........|.......%|
|0001d3f0| 00 00 00 00 00 00 00 00 | 00 00 03 71 00 00 00 01 |........|...q....|
|0001d400| 00 00 00 02 00 00 00 ea | 00 00 00 01 00 00 00 00 |........|........|
|0001d410| 00 00 00 eb 97 27 40 35 | 00 00 00 00 00 00 00 00 |.....'@5|........|
|0001d420| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d430| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d440| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d450| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d460| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d470| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d480| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d490| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d4a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d4b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d4c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d4d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d4e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d4f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d500| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d510| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d520| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d530| 00 00 00 00 00 00 00 eb | 00 00 00 00 00 00 00 00 |........|........|
|0001d540| 00 00 00 00 00 00 00 e3 | 00 00 00 00 00 00 00 00 |........|........|
|0001d550| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d560| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d570| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d580| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d590| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d5a0| 00 00 00 00 00 00 19 39 | 00 00 03 56 00 00 00 00 |.......9|...V....|
|0001d5b0| 07 6c 6f 63 61 6c 2e 68 | 00 00 00 00 00 00 00 00 |.local.h|........|
|0001d5c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d5d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d5e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d5f0| 00 00 01 ad 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|0001d600| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|0001d610| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|0001d620| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|0001d630| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|0001d640| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|0001d650| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|0001d660| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|0001d670| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|0001d680| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|0001d690| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|0001d6a0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|0001d6b0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|0001d6c0| 76 6f 69 64 20 5f 5f 73 | 61 76 65 64 73 20 6c 6f |void __s|aveds lo|
|0001d6d0| 63 61 6c 5f 68 61 6e 64 | 6c 65 72 28 76 6f 69 64 |cal_hand|ler(void|
|0001d6e0| 29 3b 0a 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |);......|........|
|0001d6f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d700| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d710| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d720| 00 00 00 00 00 00 00 00 | 00 00 03 72 00 00 05 f5 |........|...r....|
|0001d730| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 03 71 |........|.......q|
|0001d740| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d750| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d760| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d770| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d780| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d790| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d7a0| 00 00 00 00 00 00 1a f9 | 00 00 04 15 00 00 08 b7 |........|........|
|0001d7b0| 0a 4d 41 53 68 61 72 65 | 5f 36 34 00 00 00 00 00 |.MAShare|_64.....|
|0001d7c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d7d0| 00 00 00 00 00 00 00 00 | 00 00 1a f9 00 00 04 15 |........|........|
|0001d7e0| 00 00 09 1d 00 00 1a f9 | 00 00 03 fa 00 00 01 25 |........|.......%|
|0001d7f0| 00 00 00 00 00 00 00 00 | 00 00 03 71 00 00 00 01 |........|...q....|
|0001d800| 00 00 00 02 00 00 00 ec | 00 00 00 48 00 00 00 00 |........|...H....|
|0001d810| 00 00 00 ed 52 c4 22 93 | 00 00 01 34 00 00 01 33 |....R.".|...4...3|
|0001d820| 00 00 01 32 00 00 01 31 | 00 00 01 30 00 00 01 2f |...2...1|...0.../|
|0001d830| 00 00 01 2e 00 00 01 2d | 00 00 01 2c 00 00 01 2b |.......-|...,...+|
|0001d840| 00 00 01 2a 00 00 01 29 | 00 00 01 28 00 00 01 27 |...*...)|...(...'|
|0001d850| 00 00 01 26 00 00 01 25 | 00 00 01 24 00 00 01 23 |...&...%|...$...#|
|0001d860| 00 00 01 22 00 00 01 21 | 00 00 01 20 00 00 01 1f |..."...!|... ....|
|0001d870| 00 00 01 1e 00 00 01 1d | 00 00 01 1c 00 00 01 1b |........|........|
|0001d880| 00 00 01 1a 00 00 01 19 | 00 00 01 18 00 00 01 17 |........|........|
|0001d890| 00 00 01 16 00 00 01 15 | 00 00 01 14 00 00 01 13 |........|........|
|0001d8a0| 00 00 01 12 00 00 01 11 | 00 00 01 10 00 00 01 0f |........|........|
|0001d8b0| 00 00 01 0e 00 00 01 0d | 00 00 01 0c 00 00 01 0b |........|........|
|0001d8c0| 00 00 01 0a 00 00 01 09 | 00 00 01 08 00 00 01 07 |........|........|
|0001d8d0| 00 00 01 06 00 00 01 05 | 00 00 01 04 00 00 01 03 |........|........|
|0001d8e0| 00 00 01 02 00 00 01 01 | 00 00 01 00 00 00 00 ff |........|........|
|0001d8f0| 00 00 00 fe 00 00 00 fd | 00 00 00 fc 00 00 00 fb |........|........|
|0001d900| 00 00 00 fa 00 00 00 f9 | 00 00 00 f8 00 00 00 f7 |........|........|
|0001d910| 00 00 00 f6 00 00 00 f5 | 00 00 00 f4 00 00 00 f3 |........|........|
|0001d920| 00 00 00 f2 00 00 00 f1 | 00 00 00 f0 00 00 00 ef |........|........|
|0001d930| 00 00 00 ee 00 00 00 ed | 00 00 00 00 00 00 00 00 |........|........|
|0001d940| 00 00 00 00 00 00 94 48 | 00 00 00 00 00 00 00 00 |.......H|........|
|0001d950| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d960| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d970| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d980| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d990| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d9a0| 00 00 00 00 00 00 19 98 | 00 00 03 6e 00 00 03 20 |........|...n... |
|0001d9b0| 09 72 65 71 75 65 73 74 | 2e 63 00 00 00 00 00 00 |.request|.c......|
|0001d9c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d9d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d9e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0001d9f0| 00 00 00 00 00 00 00 21 | 00 00 01 35 ff ff ff fd |.......!|...5....|
|0001da00| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|0001da10| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|0001da20| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|0001da30| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|0001da40| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|0001da50| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|0001da60| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|0001da70| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|0001da80| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|0001da90| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|0001daa0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|0001dab0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|0001dac0| 23 69 6e 63 6c 75 64 65 | 20 3c 65 78 65 63 2f 74 |#include| <exec/t|
|0001dad0| 79 70 65 73 2e 68 3e 0a | 23 69 6e 63 6c 75 64 65 |ypes.h>.|#include|
|0001dae0| 20 3c 65 78 65 63 2f 6d | 65 6d 6f 72 79 2e 68 3e | <exec/m|emory.h>|
|0001daf0| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 65 78 65 63 2f |.#includ|e <exec/|
|0001db00| 61 6c 65 72 74 73 2e 68 | 3e 0a 0a 23 69 6e 63 6c |alerts.h|>..#incl|
|0001db10| 75 64 65 20 3c 69 6e 74 | 75 69 74 69 6f 6e 2f 69 |ude <int|uition/i|
|0001db20| 6e 74 75 69 74 69 6f 6e | 2e 68 3e 0a 23 69 6e 63 |ntuition|.h>.#inc|
|0001db30| 6c 75 64 65 20 3c 69 6e | 74 75 69 74 69 6f 6e 2f |lude <in|tuition/|
|0001db40| 73 67 68 6f 6f 6b 73 2e | 68 3e 0a 0a 23 69 6e 63 |sghooks.|h>..#inc|
|0001db50| 6c 75 64 65 20 3c 64 6f | 73 2f 64 6f 73 2e 68 3e |lude <do|s/dos.h>|
|0001db60| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 64 6f 73 2f 64 |.#includ|e <dos/d|
|0001db70| 6f 73 65 78 74 65 6e 73 | 2e 68 3e 0a 0a 23 69 6e |osextens|.h>..#in|
|0001db80| 63 6c 75 64 65 20 3c 6c | 69 62 72 61 72 69 65 73 |clude <l|ibraries|
|0001db90| 2f 63 6f 6d 6d 6f 64 69 | 74 69 65 73 2e 68 3e 0a |/commodi|ties.h>.|
|0001dba0| 23 69 6e 63 6c 75 64 65 | 20 3c 6c 69 62 72 61 72 |#include| <librar|
|0001dbb0| 69 65 73 2f 67 61 64 74 | 6f 6f 6c 73 2e 68 3e 0a |ies/gadt|ools.h>.|
|0001dbc0| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 70 72 6f 74 6f |.#includ|e <proto|
|0001dbd0| 2f 65 78 65 63 2e 68 3e | 0a 23 69 6e 63 6c 75 64 |/exec.h>|.#includ|
|0001dbe0| 65 20 3c 70 72 6f 74 6f | 2f 67 72 61 70 68 69 63 |e <proto|/graphic|
|0001dbf0| 73 2e 68 3e 0a 23 69 6e | 63 6c 75 64 65 20 3c 70 |s.h>.#in|clude <p|
|0001dc00| 72 6f 74 6f 2f 69 6e 74 | 75 69 74 69 6f 6e 2e 68 |roto/int|uition.h|
|0001dc10| 3e 0a 23 69 6e 63 6c 75 | 64 65 20 3c 70 72 6f 74 |>.#inclu|de <prot|
|0001dc20| 6f 2f 63 6f 6d 6d 6f 64 | 69 74 69 65 73 2e 68 3e |o/commod|ities.h>|
|0001dc30| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 70 72 6f 74 6f |.#includ|e <proto|
|0001dc40| 2f 67 61 64 74 6f 6f 6c | 73 2e 68 3e 0a 0a 23 69 |/gadtool|s.h>..#i|
|0001dc50| 6e 63 6c 75 64 65 20 3c | 73 74 64 69 6f 2e 68 3e |nclude <|stdio.h>|
|0001dc60| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 73 74 64 6c 69 |.#includ|e <stdli|
|0001dc70| 62 2e 68 3e 0a 23 69 6e | 63 6c 75 64 65 20 3c 73 |b.h>.#in|clude <s|
|0001dc80| 74 72 69 6e 67 2e 68 3e | 0a 0a 23 69 6e 63 6c 75 |tring.h>|..#inclu|
|0001dc90| 64 65 20 22 65 76 74 79 | 70 65 73 2e 68 22 0a 23 |de "evty|pes.h".#|
|0001dca0| 69 6e 63 6c 75 64 65 20 | 22 76 65 72 69 66 79 2e |include |"verify.|
|0001dcb0| 68 22 0a 23 69 6e 63 6c | 75 64 65 20 22 66 74 70 |h".#incl|ude "ftp|
|0001dcc0| 2e 68 22 0a 23 69 6e 63 | 6c 75 64 65 20 22 73 69 |.h".#inc|lude "si|
|0001dcd0| 74 65 2e 68 22 0a 0a 23 | 69 6e 63 6c 75 64 65 20 |te.h"..#|include |
|0001dce0| 22 67 6c 6f 62 61 6c 73 | 2e 68 22 0a 23 69 6e 63 |"globals|.h".#inc|
|0001dcf0| 6c 75 64 65 20 22 73 74 | 72 69 6e 67 73 2e 68 22 |lude "st|rings.h"|
|0001dd00| 0a 0a 23 69 6e 63 6c 75 | 64 65 20 22 72 65 71 75 |..#inclu|de "requ|
|0001dd10| 65 73 74 2e 68 22 0a 0a | 23 64 65 66 69 6e 65 20 |est.h"..|#define |
|0001dd20| 56 5f 49 6e 74 75 69 54 | 65 78 74 20 31 38 37 39 |V_IntuiT|ext 1879|
|0001dd30| 38 0a 23 64 65 66 69 6e | 65 20 56 5f 47 61 64 67 |8.#defin|e V_Gadg|
|0001dd40| 65 74 20 31 38 32 37 33 | 0a 0a 23 64 65 66 69 6e |et 18273|..#defin|
|0001dd50| 65 20 56 5f 72 61 73 74 | 70 6f 72 74 20 31 30 30 |e V_rast|port 100|
|0001dd60| 31 0a 23 64 65 66 69 6e | 65 20 56 5f 62 69 74 6d |1.#defin|e V_bitm|
|0001dd70| 61 70 20 31 30 30 38 0a | 0a 73 74 72 75 63 74 20 |ap 1008.|.struct |
|0001dd80| 52 61 73 74 50 6f 72 74 | 20 2a 6d 61 6b 65 5f 72 |RastPort| *make_r|
|0001dd90| 61 73 74 70 6f 72 74 28 | 62 33 32 20 77 69 64 74 |astport(|b32 widt|
|0001dda0| 68 2c 20 62 33 32 20 68 | 65 69 67 68 74 2c 20 62 |h, b32 h|eight, b|
|0001ddb0| 33 32 20 64 65 70 74 68 | 2c 20 73 74 72 75 63 74 |32 depth|, struct|
|0001ddc0| 20 47 66 78 42 61 73 65 | 20 2a 47 66 78 42 61 73 | GfxBase| *GfxBas|
|0001ddd0| 65 29 0a 7b 0a 09 73 74 | 72 75 63 74 20 52 61 73 |e).{..st|ruct Ras|
|0001dde0| 74 50 6f 72 74 20 2a 72 | 70 3b 0a 09 73 74 72 75 |tPort *r|p;..stru|
|0001ddf0| 63 74 20 42 69 74 4d 61 | 70 20 2a 62 6d 3b 0a 09 |ct BitMa|p *bm;..|
|0001de00| 69 6e 74 20 69 3b 0a 09 | 62 38 20 2a 7a 3b 0a 09 |int i;..|b8 *z;..|
|0001de10| 0a 09 72 70 20 3d 20 28 | 73 74 72 75 63 74 20 52 |..rp = (|struct R|
|0001de20| 61 73 74 50 6f 72 74 20 | 2a 29 61 6c 6c 6f 63 61 |astPort |*)alloca|
|0001de30| 74 65 5f 66 6c 61 67 73 | 28 73 69 7a 65 6f 66 28 |te_flags|(sizeof(|
|0001de40| 2a 72 70 29 2c 20 4d 45 | 4d 46 5f 50 55 42 4c 49 |*rp), ME|MF_PUBLI|
|0001de50| 43 20 7c 20 4d 45 4d 46 | 5f 43 4c 45 41 52 2c 20 |C | MEMF|_CLEAR, |
|0001de60| 56 5f 72 61 73 74 70 6f | 72 74 29 3b 0a 09 69 66 |V_rastpo|rt);..if|
|0001de70| 20 28 21 72 70 29 20 72 | 65 74 75 72 6e 20 30 3b | (!rp) r|eturn 0;|
|0001de80| 0a 09 0a 09 62 6d 20 3d | 20 28 73 74 72 75 63 74 |....bm =| (struct|
|0001de90| 20 42 69 74 4d 61 70 20 | 2a 29 61 6c 6c 6f 63 61 | BitMap |*)alloca|
|0001dea0| 74 65 5f 66 6c 61 67 73 | 28 73 69 7a 65 6f 66 28 |te_flags|(sizeof(|
|0001deb0| 2a 62 6d 29 2c 20 4d 45 | 4d 46 5f 50 55 42 4c 49 |*bm), ME|MF_PUBLI|
|0001dec0| 43 20 7c 20 4d 45 4d 46 | 5f 43 4c 45 41 52 2c 20 |C | MEMF|_CLEAR, |
|0001ded0| 56 5f 62 69 74 6d 61 70 | 29 3b 0a 09 69 66 20 28 |V_bitmap|);..if (|
|0001dee0| 62 6d 29 20 7b 09 09 0a | 09 09 49 6e 69 74 42 69 |bm) {...|..InitBi|
|0001def0| 74 4d 61 70 28 62 6d 2c | 20 64 65 70 74 68 2c 20 |tMap(bm,| depth, |
|0001df00| 77 69 64 74 68 2c 20 68 | 65 69 67 68 74 29 3b 0a |width, h|eight);.|
|0001df10| 09 09 0a 09 09 62 6d 2d | 3e 50 6c 61 6e 65 73 5b |.....bm-|>Planes[|
|0001df20| 30 5d 20 3d 20 41 6c 6c | 6f 63 52 61 73 74 65 72 |0] = All|ocRaster|
|0001df30| 28 77 69 64 74 68 2c 20 | 68 65 69 67 68 74 20 2a |(width, |height *|
|0001df40| 20 64 65 70 74 68 29 3b | 0a 09 09 69 66 20 28 62 | depth);|...if (b|
|0001df50| 6d 2d 3e 50 6c 61 6e 65 | 73 5b 30 5d 29 20 7b 0a |m->Plane|s[0]) {.|
|0001df60| 09 09 09 7a 20 3d 20 28 | 62 38 20 2a 29 62 6d 2d |...z = (|b8 *)bm-|
|0001df70| 3e 50 6c 61 6e 65 73 5b | 30 5d 3b 0a 09 09 09 66 |>Planes[|0];....f|
|0001df80| 6f 72 20 28 69 20 3d 20 | 31 3b 20 69 20 3c 20 64 |or (i = |1; i < d|
|0001df90| 65 70 74 68 3b 20 69 2b | 2b 29 20 7b 0a 09 09 09 |epth; i+|+) {....|
|0001dfa0| 09 7a 20 2b 3d 20 62 6d | 2d 3e 42 79 74 65 73 50 |.z += bm|->BytesP|
|0001dfb0| 65 72 52 6f 77 20 2a 20 | 62 6d 2d 3e 52 6f 77 73 |erRow * |bm->Rows|
|0001dfc0| 3b 0a 09 09 09 09 62 6d | 2d 3e 50 6c 61 6e 65 73 |;.....bm|->Planes|
|0001dfd0| 5b 69 5d 20 3d 20 28 76 | 6f 69 64 20 2a 29 7a 3b |[i] = (v|oid *)z;|
|0001dfe0| 0a 09 09 09 7d 0a 09 09 | 09 49 6e 69 74 52 61 73 |....}...|.InitRas|
|0001dff0| 74 50 6f 72 74 28 72 70 | 29 3b 0a 09 09 09 0a 09 |tPort(rp|);......|
|0001e000| 09 09 72 70 2d 3e 42 69 | 74 4d 61 70 20 3d 20 62 |..rp->Bi|tMap = b|
|0001e010| 6d 3b 0a 09 09 09 72 70 | 2d 3e 4d 61 73 6b 20 3d |m;....rp|->Mask =|
|0001e020| 20 30 78 66 66 3b 0a 09 | 09 09 0a 09 09 09 72 65 | 0xff;..|......re|
|0001e030| 74 75 72 6e 20 72 70 3b | 0a 09 09 7d 0a 09 09 0a |turn rp;|...}....|
|0001e040| 09 09 64 65 61 6c 6c 6f | 63 61 74 65 28 62 6d 2c |..deallo|cate(bm,|
|0001e050| 20 56 5f 62 69 74 6d 61 | 70 29 3b 0a 09 7d 0a 09 | V_bitma|p);..}..|
|0001e060| 0a 09 64 65 61 6c 6c 6f | 63 61 74 65 28 72 70 2c |..deallo|cate(rp,|
|0001e070| 20 56 5f 72 61 73 74 70 | 6f 72 74 29 3b 0a 09 0a | V_rastp|ort);...|
|0001e080| 09 72 65 74 75 72 6e 20 | 30 3b 0a 7d 0a 0a 76 6f |.return |0;.}..vo|
|0001e090| 69 64 20 66 72 65 65 5f | 72 61 73 74 70 6f 72 74 |id free_|rastport|
|0001e0a0| 28 73 74 72 75 63 74 20 | 52 61 73 74 50 6f 72 74 |(struct |RastPort|
|0001e0b0| 20 2a 72 70 2c 20 73 74 | 72 75 63 74 20 47 66 78 | *rp, st|ruct Gfx|
|0001e0c0| 42 61 73 65 20 2a 47 66 | 78 42 61 73 65 29 0a 7b |Base *Gf|xBase).{|
|0001e0d0| 0a 09 46 72 65 65 52 61 | 73 74 65 72 28 72 70 2d |..FreeRa|ster(rp-|
|0001e0e0| 3e 42 69 74 4d 61 70 2d | 3e 50 6c 61 6e 65 73 5b |>BitMap-|>Planes[|
|0001e0f0| 30 5d 2c 20 72 70 2d 3e | 42 69 74 4d 61 70 2d 3e |0], rp->|BitMap->|
|0001e100| 42 79 74 65 73 50 65 72 | 52 6f 77 20 2a 20 38 2c |BytesPer|Row * 8,|
|0001e110| 20 72 70 2d 3e 42 69 74 | 4d 61 70 2d 3e 52 6f 77 | rp->Bit|Map->Row|
|0001e120| 73 20 2a 20 72 70 2d 3e | 42 69 74 4d 61 70 2d 3e |s * rp->|BitMap->|
|0001e130| 44 65 70 74 68 29 3b 0a | 0a 09 64 65 61 6c 6c 6f |Depth);.|..deallo|
|0001e140| 63 61 74 65 28 72 70 2d | 3e 42 69 74 4d 61 70 2c |cate(rp-|>BitMap,|
|0001e150| 20 56 5f 62 69 74 6d 61 | 70 29 3b 0a 09 64 65 61 | V_bitma|p);..dea|
|0001e160| 6c 6c 6f 63 61 74 65 28 | 72 70 2c 20 56 5f 72 61 |llocate(|rp, V_ra|
|0001e170| 73 74 70 6f 72 74 29 3b | 0a 7d 0a 0a 73 74 72 75 |stport);|.}..stru|
|0001e180| 63 74 20 49 6e 74 75 69 | 54 65 78 74 20 6e 75 6c |ct Intui|Text nul|
|0001e190| 6c 74 65 78 74 20 3d 20 | 7b 0a 09 30 2c 20 30 2c |ltext = |{..0, 0,|
|0001e1a0| 0a 09 4a 41 4d 31 2c 0a | 09 30 2c 20 30 2c 0a 09 |..JAM1,.|.0, 0,..|
|0001e1b0| 28 76 6f 69 64 20 2a 29 | 30 2c 0a 09 22 22 2c 0a |(void *)|0,.."",.|
|0001e1c0| 09 28 76 6f 69 64 20 2a | 29 30 0a 7d 3b 0a 0a 73 |.(void *|)0.};..s|
|0001e1d0| 74 72 75 63 74 20 67 69 | 6d 20 2a 6d 61 6b 65 5f |truct gi|m *make_|
|0001e1e0| 67 69 6d 28 62 38 20 2a | 6e 61 6d 65 2c 20 62 33 |gim(b8 *|name, b3|
|0001e1f0| 32 20 74 65 78 74 70 65 | 6e 2c 20 62 33 32 20 6c |2 textpe|n, b32 l|
|0001e200| 69 67 68 74 70 65 6e 2c | 20 62 33 32 20 64 61 72 |ightpen,| b32 dar|
|0001e210| 6b 70 65 6e 2c 20 73 74 | 72 75 63 74 20 53 63 72 |kpen, st|ruct Scr|
|0001e220| 65 65 6e 20 2a 73 2c 20 | 0a 09 09 09 73 74 72 75 |een *s, |....stru|
|0001e230| 63 74 20 49 6e 74 75 69 | 74 69 6f 6e 42 61 73 65 |ct Intui|tionBase|
|0001e240| 20 2a 49 6e 74 75 69 74 | 69 6f 6e 42 61 73 65 2c | *Intuit|ionBase,|
|0001e250| 20 73 74 72 75 63 74 20 | 47 66 78 42 61 73 65 20 | struct |GfxBase |
|0001e260| 2a 47 66 78 42 61 73 65 | 29 0a 7b 0a 09 73 74 72 |*GfxBase|).{..str|
|0001e270| 75 63 74 20 49 6e 74 75 | 69 54 65 78 74 20 74 78 |uct Intu|iText tx|
|0001e280| 74 3b 0a 09 69 6e 74 20 | 77 69 64 74 68 2c 20 68 |t;..int |width, h|
|0001e290| 65 69 67 68 74 2c 20 6f | 77 69 64 74 68 2c 20 6f |eight, o|width, o|
|0001e2a0| 68 65 69 67 68 74 3b 0a | 09 73 74 72 75 63 74 20 |height;.|.struct |
|0001e2b0| 67 69 6d 20 2a 67 69 6d | 3b 0a 09 73 62 33 32 20 |gim *gim|;..sb32 |
|0001e2c0| 78 2c 20 79 2c 20 52 78 | 2c 20 52 79 2c 20 52 78 |x, y, Rx|, Ry, Rx|
|0001e2d0| 32 2c 20 52 79 32 2c 20 | 52 32 2c 20 6e 65 77 5f |2, Ry2, |R2, new_|
|0001e2e0| 64 65 6c 74 61 2c 20 6f | 6c 64 5f 64 65 6c 74 61 |delta, o|ld_delta|
|0001e2f0| 3b 0a 09 0a 09 74 78 74 | 2e 46 72 6f 6e 74 50 65 |;....txt|.FrontPe|
|0001e300| 6e 20 3d 20 74 65 78 74 | 70 65 6e 3b 0a 09 74 78 |n = text|pen;..tx|
|0001e310| 74 2e 42 61 63 6b 50 65 | 6e 20 3d 20 30 3b 0a 09 |t.BackPe|n = 0;..|
|0001e320| 74 78 74 2e 44 72 61 77 | 4d 6f 64 65 20 3d 20 4a |txt.Draw|Mode = J|
|0001e330| 41 4d 32 3b 0a 09 74 78 | 74 2e 4c 65 66 74 45 64 |AM2;..tx|t.LeftEd|
|0001e340| 67 65 20 3d 20 30 3b 0a | 09 74 78 74 2e 54 6f 70 |ge = 0;.|.txt.Top|
|0001e350| 45 64 67 65 20 3d 20 30 | 3b 0a 09 74 78 74 2e 49 |Edge = 0|;..txt.I|
|0001e360| 54 65 78 74 46 6f 6e 74 | 20 3d 20 73 2d 3e 46 6f |TextFont| = s->Fo|
|0001e370| 6e 74 3b 0a 09 74 78 74 | 2e 49 54 65 78 74 20 3d |nt;..txt|.IText =|
|0001e380| 20 6e 61 6d 65 3b 0a 09 | 74 78 74 2e 4e 65 78 74 | name;..|txt.Next|
|0001e390| 54 65 78 74 20 3d 20 6e | 69 6c 3b 0a 09 0a 09 69 |Text = n|il;....i|
|0001e3a0| 66 20 28 73 2d 3e 46 6f | 6e 74 29 20 68 65 69 67 |f (s->Fo|nt) heig|
|0001e3b0| 68 74 20 3d 20 73 2d 3e | 46 6f 6e 74 2d 3e 74 61 |ht = s->|Font->ta|
|0001e3c0| 5f 59 53 69 7a 65 3b 0a | 09 65 6c 73 65 20 68 65 |_YSize;.|.else he|
|0001e3d0| 69 67 68 74 20 3d 20 38 | 3b 0a 09 0a 09 77 69 64 |ight = 8|;....wid|
|0001e3e0| 74 68 20 3d 20 49 6e 74 | 75 69 54 65 78 74 4c 65 |th = Int|uiTextLe|
|0001e3f0| 6e 67 74 68 28 26 74 78 | 74 29 3b 0a 09 0a 09 6f |ngth(&tx|t);....o|
|0001e400| 77 69 64 74 68 20 3d 20 | 77 69 64 74 68 20 2b 20 |width = |width + |
|0001e410| 68 65 69 67 68 74 3b 0a | 09 6f 68 65 69 67 68 74 |height;.|.oheight|
|0001e420| 20 3d 20 33 20 2a 20 68 | 65 69 67 68 74 20 2f 20 | = 3 * h|eight / |
|0001e430| 32 3b 0a 09 0a 09 67 69 | 6d 20 3d 20 28 73 74 72 |2;....gi|m = (str|
|0001e440| 75 63 74 20 67 69 6d 20 | 2a 29 61 6c 6c 6f 63 61 |uct gim |*)alloca|
|0001e450| 74 65 28 73 69 7a 65 6f | 66 28 2a 67 69 6d 29 2c |te(sizeo|f(*gim),|
|0001e460| 20 56 5f 67 69 6d 29 3b | 0a 09 69 66 20 28 21 67 | V_gim);|..if (!g|
|0001e470| 69 6d 29 20 72 65 74 75 | 72 6e 20 6e 69 6c 3b 0a |im) retu|rn nil;.|
|0001e480| 09 0a 09 65 6e 73 75 72 | 65 28 67 69 6d 2c 20 56 |...ensur|e(gim, V|
|0001e490| 5f 67 69 6d 29 3b 0a 09 | 0a 09 67 69 6d 2d 3e 72 |_gim);..|..gim->r|
|0001e4a0| 70 31 20 3d 20 6d 61 6b | 65 5f 72 61 73 74 70 6f |p1 = mak|e_rastpo|
|0001e4b0| 72 74 28 6f 77 69 64 74 | 68 2c 20 6f 68 65 69 67 |rt(owidt|h, oheig|
|0001e4c0| 68 74 2c 20 33 2c 20 47 | 66 78 42 61 73 65 29 3b |ht, 3, G|fxBase);|
|0001e4d0| 0a 09 69 66 20 28 21 67 | 69 6d 2d 3e 72 70 31 29 |..if (!g|im->rp1)|
|0001e4e0| 20 7b 0a 09 09 64 65 61 | 6c 6c 6f 63 61 74 65 28 | {...dea|llocate(|
|0001e4f0| 67 69 6d 2c 20 56 5f 67 | 69 6d 29 3b 0a 09 09 72 |gim, V_g|im);...r|
|0001e500| 65 74 75 72 6e 20 6e 69 | 6c 3b 0a 09 7d 0a 09 0a |eturn ni|l;..}...|
|0001e510| 09 67 69 6d 2d 3e 72 70 | 32 20 3d 20 6d 61 6b 65 |.gim->rp|2 = make|
|0001e520| 5f 72 61 73 74 70 6f 72 | 74 28 6f 77 69 64 74 68 |_rastpor|t(owidth|
|0001e530| 2c 20 6f 68 65 69 67 68 | 74 2c 20 33 2c 20 47 66 |, oheigh|t, 3, Gf|
|0001e540| 78 42 61 73 65 29 3b 0a | 09 69 66 20 28 21 67 69 |xBase);.|.if (!gi|
|0001e550| 6d 2d 3e 72 70 32 29 20 | 7b 0a 09 09 66 72 65 65 |m->rp2) |{...free|
|0001e560| 5f 72 61 73 74 70 6f 72 | 74 28 67 69 6d 2d 3e 72 |_rastpor|t(gim->r|
|0001e570| 70 31 2c 20 47 66 78 42 | 61 73 65 29 3b 0a 09 09 |p1, GfxB|ase);...|
|0001e580| 64 65 61 6c 6c 6f 63 61 | 74 65 28 67 69 6d 2c 20 |dealloca|te(gim, |
|0001e590| 56 5f 67 69 6d 29 3b 0a | 09 09 72 65 74 75 72 6e |V_gim);.|..return|
|0001e5a0| 20 6e 69 6c 3b 0a 09 7d | 0a 09 0a 09 67 69 6d 2d | nil;..}|....gim-|
|0001e5b0| 3e 69 6d 31 2e 4c 65 66 | 74 45 64 67 65 20 3d 20 |>im1.Lef|tEdge = |
|0001e5c0| 30 3b 0a 09 67 69 6d 2d | 3e 69 6d 31 2e 54 6f 70 |0;..gim-|>im1.Top|
|0001e5d0| 45 64 67 65 20 3d 20 30 | 3b 0a 09 67 69 6d 2d 3e |Edge = 0|;..gim->|
|0001e5e0| 69 6d 31 2e 57 69 64 74 | 68 20 3d 20 6f 77 69 64 |im1.Widt|h = owid|
|0001e5f0| 74 68 3b 0a 09 67 69 6d | 2d 3e 69 6d 31 2e 48 65 |th;..gim|->im1.He|
|0001e600| 69 67 68 74 20 3d 20 6f | 68 65 69 67 68 74 3b 0a |ight = o|height;.|
|0001e610| 09 67 69 6d 2d 3e 69 6d | 31 2e 44 65 70 74 68 20 |.gim->im|1.Depth |
|0001e620| 3d 20 33 3b 0a 09 67 69 | 6d 2d 3e 69 6d 31 2e 49 |= 3;..gi|m->im1.I|
|0001e630| 6d 61 67 65 44 61 74 61 | 20 3d 20 28 76 6f 69 64 |mageData| = (void|
|0001e640| 20 2a 29 67 69 6d 2d 3e | 72 70 31 2d 3e 42 69 74 | *)gim->|rp1->Bit|
|0001e650| 4d 61 70 2d 3e 50 6c 61 | 6e 65 73 5b 30 5d 3b 0a |Map->Pla|nes[0];.|
|0001e660| 09 0a 09 67 69 6d 2d 3e | 69 6d 31 2e 50 6c 61 6e |...gim->|im1.Plan|
|0001e670| 65 50 69 63 6b 20 3d 20 | 37 3b 0a 09 67 69 6d 2d |ePick = |7;..gim-|
|0001e680| 3e 69 6d 31 2e 50 6c 61 | 6e 65 4f 6e 4f 66 66 20 |>im1.Pla|neOnOff |
|0001e690| 3d 20 30 3b 0a 09 67 69 | 6d 2d 3e 69 6d 31 2e 4e |= 0;..gi|m->im1.N|
|0001e6a0| 65 78 74 49 6d 61 67 65 | 20 3d 20 6e 69 6c 3b 0a |extImage| = nil;.|
|0001e6b0| 09 0a 09 67 69 6d 2d 3e | 69 6d 32 20 3d 20 67 69 |...gim->|im2 = gi|
|0001e6c0| 6d 2d 3e 69 6d 31 3b 0a | 09 67 69 6d 2d 3e 69 6d |m->im1;.|.gim->im|
|0001e6d0| 32 2e 49 6d 61 67 65 44 | 61 74 61 20 3d 20 28 76 |2.ImageD|ata = (v|
|0001e6e0| 6f 69 64 20 2a 29 67 69 | 6d 2d 3e 72 70 32 2d 3e |oid *)gi|m->rp2->|
|0001e6f0| 42 69 74 4d 61 70 2d 3e | 50 6c 61 6e 65 73 5b 30 |BitMap->|Planes[0|
|0001e700| 5d 3b 0a 09 0a 09 53 65 | 74 52 61 73 74 28 67 69 |];....Se|tRast(gi|
|0001e710| 6d 2d 3e 72 70 31 2c 20 | 30 29 3b 0a 09 53 65 74 |m->rp1, |0);..Set|
|0001e720| 52 61 73 74 28 67 69 6d | 2d 3e 72 70 32 2c 20 30 |Rast(gim|->rp2, 0|
|0001e730| 29 3b 0a 09 0a 09 50 72 | 69 6e 74 49 54 65 78 74 |);....Pr|intIText|
|0001e740| 28 67 69 6d 2d 3e 72 70 | 31 2c 20 26 74 78 74 2c |(gim->rp|1, &txt,|
|0001e750| 20 68 65 69 67 68 74 20 | 2f 20 32 2c 20 68 65 69 | height |/ 2, hei|
|0001e760| 67 68 74 20 2f 20 34 29 | 3b 0a 09 50 72 69 6e 74 |ght / 4)|;..Print|
|0001e770| 49 54 65 78 74 28 67 69 | 6d 2d 3e 72 70 32 2c 20 |IText(gi|m->rp2, |
|0001e780| 26 74 78 74 2c 20 68 65 | 69 67 68 74 20 2f 20 32 |&txt, he|ight / 2|
|0001e790| 20 2b 20 31 2c 20 68 65 | 69 67 68 74 20 2f 20 34 | + 1, he|ight / 4|
|0001e7a0| 20 2b 20 31 29 3b 0a 09 | 0a 09 52 78 20 3d 20 52 | + 1);..|..Rx = R|
|0001e7b0| 79 20 3d 20 32 20 2a 20 | 68 65 69 67 68 74 20 2f |y = 2 * |height /|
|0001e7c0| 20 33 3b 0a 09 0a 09 52 | 78 32 20 3d 20 52 78 20 | 3;....R|x2 = Rx |
|0001e7d0| 2a 20 52 78 3b 0a 09 52 | 79 32 20 3d 20 52 79 20 |* Rx;..R|y2 = Ry |
|0001e7e0| 2a 20 52 79 3b 0a 09 0a | 09 52 32 20 3d 20 52 78 |* Ry;...|.R2 = Rx|
|0001e7f0| 32 20 2a 20 52 79 32 3b | 0a 09 0a 09 66 6f 72 20 |2 * Ry2;|....for |
|0001e800| 28 78 20 3d 20 30 3b 20 | 78 20 3c 20 52 78 3b 20 |(x = 0; |x < Rx; |
|0001e810| 78 2b 2b 29 20 7b 0a 09 | 09 79 20 3d 20 30 3b 0a |x++) {..|.y = 0;.|
|0001e820| 09 09 6e 65 77 5f 64 65 | 6c 74 61 20 3d 20 61 62 |..new_de|lta = ab|
|0001e830| 73 28 52 32 20 2d 20 52 | 79 32 2a 78 2a 78 20 2d |s(R2 - R|y2*x*x -|
|0001e840| 20 52 78 32 2a 79 2a 79 | 29 3b 0a 09 09 64 6f 20 | Rx2*y*y|);...do |
|0001e850| 7b 0a 09 09 09 6f 6c 64 | 5f 64 65 6c 74 61 20 3d |{....old|_delta =|
|0001e860| 20 6e 65 77 5f 64 65 6c | 74 61 3b 0a 09 09 09 79 | new_del|ta;....y|
|0001e870| 2b 2b 3b 0a 09 09 09 6e | 65 77 5f 64 65 6c 74 61 |++;....n|ew_delta|
|0001e880| 20 3d 20 61 62 73 28 52 | 32 20 2d 20 52 79 32 2a | = abs(R|2 - Ry2*|
|0001e890| 78 2a 78 20 2d 20 52 78 | 32 2a 79 2a 79 29 3b 0a |x*x - Rx|2*y*y);.|
|0001e8a0| 09 09 7d 20 77 68 69 6c | 65 20 28 6f 6c 64 5f 64 |..} whil|e (old_d|
|0001e8b0| 65 6c 74 61 20 3e 20 6e | 65 77 5f 64 65 6c 74 61 |elta > n|ew_delta|
|0001e8c0| 29 3b 0a 09 09 0a 09 09 | 53 65 74 41 50 65 6e 28 |);......|SetAPen(|
|0001e8d0| 67 69 6d 2d 3e 72 70 31 | 2c 20 6c 69 67 68 74 70 |gim->rp1|, lightp|
|0001e8e0| 65 6e 29 3b 0a 09 09 0a | 09 09 57 72 69 74 65 50 |en);....|..WriteP|
|0001e8f0| 69 78 65 6c 28 67 69 6d | 2d 3e 72 70 31 2c 20 52 |ixel(gim|->rp1, R|
|0001e900| 78 20 2d 20 78 2c 20 52 | 79 20 2d 20 28 79 20 2d |x - x, R|y - (y -|
|0001e910| 20 31 29 29 3b 0a 09 09 | 57 72 69 74 65 50 69 78 | 1));...|WritePix|
|0001e920| 65 6c 28 67 69 6d 2d 3e | 72 70 31 2c 20 6f 77 69 |el(gim->|rp1, owi|
|0001e930| 64 74 68 20 2d 20 52 78 | 20 2d 20 31 20 2b 20 78 |dth - Rx| - 1 + x|
|0001e940| 2c 20 52 79 20 2d 20 28 | 79 20 2d 20 31 29 29 3b |, Ry - (|y - 1));|
|0001e950| 0a 09 09 0a 09 09 53 65 | 74 41 50 65 6e 28 67 69 |......Se|tAPen(gi|
|0001e960| 6d 2d 3e 72 70 31 2c 20 | 64 61 72 6b 70 65 6e 29 |m->rp1, |darkpen)|
|0001e970| 3b 0a 09 09 0a 09 09 57 | 72 69 74 65 50 69 78 65 |;......W|ritePixe|
|0001e980| 6c 28 67 69 6d 2d 3e 72 | 70 31 2c 20 52 78 20 2d |l(gim->r|p1, Rx -|
|0001e990| 20 78 2c 20 6f 68 65 69 | 67 68 74 20 2d 20 52 79 | x, ohei|ght - Ry|
|0001e9a0| 20 2d 20 31 20 2b 20 28 | 79 20 2d 20 31 29 29 3b | - 1 + (|y - 1));|
|0001e9b0| 0a 09 09 57 72 69 74 65 | 50 69 78 65 6c 28 67 69 |...Write|Pixel(gi|
|0001e9c0| 6d 2d 3e 72 70 31 2c 20 | 6f 77 69 64 74 68 20 2d |m->rp1, |owidth -|
|0001e9d0| 20 52 78 20 2d 20 31 20 | 2b 20 78 2c 20 6f 68 65 | Rx - 1 |+ x, ohe|
|0001e9e0| 69 67 68 74 20 2d 20 52 | 79 20 2d 20 31 20 2b 20 |ight - R|y - 1 + |
|0001e9f0| 28 79 20 2d 20 31 29 29 | 3b 0a 09 09 0a 09 09 53 |(y - 1))|;......S|
|0001ea00| 65 74 41 50 65 6e 28 67 | 69 6d 2d 3e 72 70 32 2c |etAPen(g|im->rp2,|
|0001ea10| 20 64 61 72 6b 70 65 6e | 29 3b 0a 09 09 0a 09 09 | darkpen|);......|
|0001ea20| 57 72 69 74 65 50 69 78 | 65 6c 28 67 69 6d 2d 3e |WritePix|el(gim->|
|0001ea30| 72 70 32 2c 20 52 78 20 | 2d 20 78 2c 20 52 79 20 |rp2, Rx |- x, Ry |
|0001ea40| 2d 20 28 79 20 2d 20 31 | 29 29 3b 0a 09 09 57 72 |- (y - 1|));...Wr|
|0001ea50| 69 74 65 50 69 78 65 6c | 28 67 69 6d 2d 3e 72 70 |itePixel|(gim->rp|
|0001ea60| 32 2c 20 6f 77 69 64 74 | 68 20 2d 20 52 78 20 2d |2, owidt|h - Rx -|
|0001ea70| 20 31 20 2b 20 78 2c 20 | 52 79 20 2d 20 28 79 20 | 1 + x, |Ry - (y |
|0001ea80| 2d 20 31 29 29 3b 0a 09 | 09 0a 09 09 53 65 74 41 |- 1));..|....SetA|
|0001ea90| 50 65 6e 28 67 69 6d 2d | 3e 72 70 32 2c 20 6c 69 |Pen(gim-|>rp2, li|
|0001eaa0| 67 68 74 70 65 6e 29 3b | 0a 09 09 0a 09 09 57 72 |ghtpen);|......Wr|
|0001eab0| 69 74 65 50 69 78 65 6c | 28 67 69 6d 2d 3e 72 70 |itePixel|(gim->rp|
|0001eac0| 32 2c 20 52 78 20 2d 20 | 78 2c 20 6f 68 65 69 67 |2, Rx - |x, oheig|
|0001ead0| 68 74 20 2d 20 52 79 20 | 2d 20 31 20 2b 20 28 79 |ht - Ry |- 1 + (y|
|0001eae0| 20 2d 20 31 29 29 3b 0a | 09 09 57 72 69 74 65 50 | - 1));.|..WriteP|
|0001eaf0| 69 78 65 6c 28 67 69 6d | 2d 3e 72 70 32 2c 20 6f |ixel(gim|->rp2, o|
|0001eb00| 77 69 64 74 68 20 2d 20 | 52 78 20 2d 20 31 20 2b |width - |Rx - 1 +|
|0001eb10| 20 78 2c 20 6f 68 65 69 | 67 68 74 20 2d 20 52 79 | x, ohei|ght - Ry|
|0001eb20| 20 2d 20 31 20 2b 20 28 | 79 20 2d 20 31 29 29 3b | - 1 + (|y - 1));|
|0001eb30| 0a 09 7d 0a 09 0a 09 66 | 6f 72 20 28 79 20 3d 20 |..}....f|or (y = |
|0001eb40| 30 3b 20 79 20 3c 20 52 | 79 3b 20 79 2b 2b 29 20 |0; y < R|y; y++) |
|0001eb50| 7b 0a 09 09 78 20 3d 20 | 30 3b 0a 09 09 6e 65 77 |{...x = |0;...new|
|0001eb60| 5f 64 65 6c 74 61 20 3d | 20 61 62 73 28 52 32 20 |_delta =| abs(R2 |
|0001eb70| 2d 20 52 79 32 20 2a 20 | 78 20 2a 20 78 20 2d 20 |- Ry2 * |x * x - |
|0001eb80| 52 78 32 20 2a 20 79 20 | 2a 20 79 29 3b 0a 09 09 |Rx2 * y |* y);...|
|0001eb90| 64 6f 20 7b 0a 09 09 09 | 6f 6c 64 5f 64 65 6c 74 |do {....|old_delt|
|0001eba0| 61 20 3d 20 6e 65 77 5f | 64 65 6c 74 61 3b 0a 09 |a = new_|delta;..|
|0001ebb0| 09 09 78 2b 2b 3b 0a 09 | 09 09 6e 65 77 5f 64 65 |..x++;..|..new_de|
|0001ebc0| 6c 74 61 20 3d 20 61 62 | 73 28 52 32 20 2d 20 52 |lta = ab|s(R2 - R|
|0001ebd0| 79 32 20 2a 20 78 20 2a | 20 78 20 2d 20 52 78 32 |y2 * x *| x - Rx2|
|0001ebe0| 20 2a 20 79 20 2a 20 79 | 29 3b 0a 09 09 7d 20 77 | * y * y|);...} w|
|0001ebf0| 68 69 6c 65 20 28 6f 6c | 64 5f 64 65 6c 74 61 20 |hile (ol|d_delta |
|0001ec00| 3e 20 6e 65 77 5f 64 65 | 6c 74 61 29 3b 0a 09 09 |> new_de|lta);...|
|0001ec10| 0a 09 09 53 65 74 41 50 | 65 6e 28 67 69 6d 2d 3e |...SetAP|en(gim->|
|0001ec20| 72 70 31 2c 20 6c 69 67 | 68 74 70 65 6e 29 3b 0a |rp1, lig|htpen);.|
|0001ec30| 09 09 0a 09 09 57 72 69 | 74 65 50 69 78 65 6c 28 |.....Wri|tePixel(|
|0001ec40| 67 69 6d 2d 3e 72 70 31 | 2c 20 52 78 20 2d 20 28 |gim->rp1|, Rx - (|
|0001ec50| 78 20 2d 20 31 29 2c 20 | 52 79 20 2d 20 79 29 3b |x - 1), |Ry - y);|
|0001ec60| 0a 09 09 57 72 69 74 65 | 50 69 78 65 6c 28 67 69 |...Write|Pixel(gi|
|0001ec70| 6d 2d 3e 72 70 31 2c 20 | 52 78 20 2d 20 28 78 20 |m->rp1, |Rx - (x |
|0001ec80| 2d 20 31 29 2c 20 6f 68 | 65 69 67 68 74 20 2d 20 |- 1), oh|eight - |
|0001ec90| 52 79 20 2d 20 31 20 2b | 20 79 29 3b 0a 0a 09 09 |Ry - 1 +| y);....|
|0001eca0| 53 65 74 41 50 65 6e 28 | 67 69 6d 2d 3e 72 70 31 |SetAPen(|gim->rp1|
|0001ecb0| 2c 20 64 61 72 6b 70 65 | 6e 29 3b 0a 0a 09 09 57 |, darkpe|n);....W|
|0001ecc0| 72 69 74 65 50 69 78 65 | 6c 28 67 69 6d 2d 3e 72 |ritePixe|l(gim->r|
|0001ecd0| 70 31 2c 20 6f 77 69 64 | 74 68 20 2d 20 52 78 20 |p1, owid|th - Rx |
|0001ece0| 2d 20 31 20 2b 20 28 78 | 20 2d 20 31 29 2c 20 52 |- 1 + (x| - 1), R|
|0001ecf0| 79 20 2d 20 79 29 3b 0a | 09 09 57 72 69 74 65 50 |y - y);.|..WriteP|
|0001ed00| 69 78 65 6c 28 67 69 6d | 2d 3e 72 70 31 2c 20 6f |ixel(gim|->rp1, o|
|0001ed10| 77 69 64 74 68 20 2d 20 | 52 78 20 2d 20 31 20 2b |width - |Rx - 1 +|
|0001ed20| 20 28 78 20 2d 20 31 29 | 2c 20 6f 68 65 69 67 68 | (x - 1)|, oheigh|
|0001ed30| 74 20 2d 20 52 79 20 2d | 20 31 20 2b 20 79 29 3b |t - Ry -| 1 + y);|
|0001ed40| 0a 09 09 0a 09 09 53 65 | 74 41 50 65 6e 28 67 69 |......Se|tAPen(gi|
|0001ed50| 6d 2d 3e 72 70 32 2c 20 | 64 61 72 6b 70 65 6e 29 |m->rp2, |darkpen)|
|0001ed60| 3b 0a 09 09 0a 09 09 57 | 72 69 74 65 50 69 78 65 |;......W|ritePixe|
|0001ed70| 6c 28 67 69 6d 2d 3e 72 | 70 32 2c 20 52 78 20 2d |l(gim->r|p2, Rx -|
|0001ed80| 20 28 78 20 2d 20 31 29 | 2c 20 52 79 20 2d 20 79 | (x - 1)|, Ry - y|
|0001ed90| 29 3b 0a 09 09 57 72 69 | 74 65 50 69 78 65 6c 28 |);...Wri|tePixel(|
|0001eda0| 67 69 6d 2d 3e 72 70 32 | 2c 20 52 78 20 2d 20 28 |gim->rp2|, Rx - (|
|0001edb0| 78 20 2d 20 31 29 2c 20 | 6f 68 65 69 67 68 74 20 |x - 1), |oheight |
|0001edc0| 2d 20 52 79 20 2d 20 31 | 20 2b 20 79 29 3b 0a 0a |- Ry - 1| + y);..|
|0001edd0| 09 09 53 65 74 41 50 65 | 6e 28 67 69 6d 2d 3e 72 |..SetAPe|n(gim->r|
|0001ede0| 70 32 2c 20 6c 69 67 68 | 74 70 65 6e 29 3b 0a 0a |p2, ligh|tpen);..|
|0001edf0| 09 09 57 72 69 74 65 50 | 69 78 65 6c 28 67 69 6d |..WriteP|ixel(gim|
|0001ee00| 2d 3e 72 70 32 2c 20 6f | 77 69 64 74 68 20 2d 20 |->rp2, o|width - |
|0001ee10| 52 78 20 2d 20 31 20 2b | 20 28 78 20 2d 20 31 29 |Rx - 1 +| (x - 1)|
|0001ee20| 2c 20 52 79 20 2d 20 79 | 29 3b 0a 09 09 57 72 69 |, Ry - y|);...Wri|
|0001ee30| 74 65 50 69 78 65 6c 28 | 67 69 6d 2d 3e 72 70 32 |tePixel(|gim->rp2|
|0001ee40| 2c 20 6f 77 69 64 74 68 | 20 2d 20 52 78 20 2d 20 |, owidth| - Rx - |
|0001ee50| 31 20 2b 20 28 78 20 2d | 20 31 29 2c 20 6f 68 65 |1 + (x -| 1), ohe|
|0001ee60| 69 67 68 74 20 2d 20 52 | 79 20 2d 20 31 20 2b 20 |ight - R|y - 1 + |
|0001ee70| 79 29 3b 0a 09 7d 0a 09 | 0a 09 53 65 74 41 50 65 |y);..}..|..SetAPe|
|0001ee80| 6e 28 67 69 6d 2d 3e 72 | 70 31 2c 20 6c 69 67 68 |n(gim->r|p1, ligh|
|0001ee90| 74 70 65 6e 29 3b 0a 09 | 0a 09 4d 6f 76 65 28 67 |tpen);..|..Move(g|
|0001eea0| 69 6d 2d 3e 72 70 31 2c | 20 52 78 2c 20 30 29 3b |im->rp1,| Rx, 0);|
|0001eeb0| 0a 09 44 72 61 77 28 67 | 69 6d 2d 3e 72 70 31 2c |..Draw(g|im->rp1,|
|0001eec0| 20 6f 77 69 64 74 68 20 | 2d 20 52 78 20 2d 20 31 | owidth |- Rx - 1|
|0001eed0| 2c 20 30 29 3b 0a 09 0a | 09 4d 6f 76 65 28 67 69 |, 0);...|.Move(gi|
|0001eee0| 6d 2d 3e 72 70 31 2c 20 | 30 2c 20 52 79 29 3b 0a |m->rp1, |0, Ry);.|
|0001eef0| 09 44 72 61 77 28 67 69 | 6d 2d 3e 72 70 31 2c 20 |.Draw(gi|m->rp1, |
|0001ef00| 30 2c 20 6f 68 65 69 67 | 68 74 20 2d 20 52 79 20 |0, oheig|ht - Ry |
|0001ef10| 2d 20 31 29 3b 0a 09 0a | 09 53 65 74 41 50 65 6e |- 1);...|.SetAPen|
|0001ef20| 28 67 69 6d 2d 3e 72 70 | 31 2c 20 64 61 72 6b 70 |(gim->rp|1, darkp|
|0001ef30| 65 6e 29 3b 0a 09 0a 09 | 4d 6f 76 65 28 67 69 6d |en);....|Move(gim|
|0001ef40| 2d 3e 72 70 31 2c 20 52 | 78 2c 20 6f 68 65 69 67 |->rp1, R|x, oheig|
|0001ef50| 68 74 20 2d 20 31 29 3b | 0a 09 44 72 61 77 28 67 |ht - 1);|..Draw(g|
|0001ef60| 69 6d 2d 3e 72 70 31 2c | 20 6f 77 69 64 74 68 20 |im->rp1,| owidth |
|0001ef70| 2d 20 52 78 20 2d 20 31 | 2c 20 6f 68 65 69 67 68 |- Rx - 1|, oheigh|
|0001ef80| 74 20 2d 20 31 29 3b 0a | 09 0a 09 4d 6f 76 65 28 |t - 1);.|...Move(|
|0001ef90| 67 69 6d 2d 3e 72 70 31 | 2c 20 6f 77 69 64 74 68 |gim->rp1|, owidth|
|0001efa0| 20 2d 20 31 2c 20 52 79 | 29 3b 0a 09 44 72 61 77 | - 1, Ry|);..Draw|
|0001efb0| 28 67 69 6d 2d 3e 72 70 | 31 2c 20 6f 77 69 64 74 |(gim->rp|1, owidt|
|0001efc0| 68 20 2d 20 31 2c 20 6f | 68 65 69 67 68 74 20 2d |h - 1, o|height -|
|0001efd0| 20 52 79 20 2d 20 31 29 | 3b 0a 0a 09 53 65 74 41 | Ry - 1)|;...SetA|
|0001efe0| 50 65 6e 28 67 69 6d 2d | 3e 72 70 32 2c 20 64 61 |Pen(gim-|>rp2, da|
|0001eff0| 72 6b 70 65 6e 29 3b 0a | 09 0a 09 4d 6f 76 65 28 |rkpen);.|...Move(|
|0001f000| 67 69 6d 2d 3e 72 70 32 | 2c 20 52 78 2c 20 30 29 |gim->rp2|, Rx, 0)|
|0001f010| 3b 0a 09 44 72 61 77 28 | 67 69 6d 2d 3e 72 70 32 |;..Draw(|gim->rp2|
|0001f020| 2c 20 6f 77 69 64 74 68 | 20 2d 20 52 78 20 2d 20 |, owidth| - Rx - |
|0001f030| 31 2c 20 30 29 3b 0a 09 | 0a 09 4d 6f 76 65 28 67 |1, 0);..|..Move(g|
|0001f040| 69 6d 2d 3e 72 70 32 2c | 20 30 2c 20 52 79 29 3b |im->rp2,| 0, Ry);|
|0001f050| 0a 09 44 72 61 77 28 67 | 69 6d 2d 3e 72 70 32 2c |..Draw(g|im->rp2,|
|0001f060| 20 30 2c 20 6f 68 65 69 | 67 68 74 20 2d 20 52 79 | 0, ohei|ght - Ry|
|0001f070| 20 2d 20 31 29 3b 0a 09 | 0a 09 53 65 74 41 50 65 | - 1);..|..SetAPe|
|0001f080| 6e 28 67 69 6d 2d 3e 72 | 70 32 2c 20 6c 69 67 68 |n(gim->r|p2, ligh|
|0001f090| 74 70 65 6e 29 3b 0a 09 | 0a 09 4d 6f 76 65 28 67 |tpen);..|..Move(g|
|0001f0a0| 69 6d 2d 3e 72 70 32 2c | 20 52 78 2c 20 6f 68 65 |im->rp2,| Rx, ohe|
|0001f0b0| 69 67 68 74 20 2d 20 31 | 29 3b 0a 09 44 72 61 77 |ight - 1|);..Draw|
|0001f0c0| 28 67 69 6d 2d 3e 72 70 | 32 2c 20 6f 77 69 64 74 |(gim->rp|2, owidt|
|0001f0d0| 68 20 2d 20 52 78 20 2d | 20 31 2c 20 6f 68 65 69 |h - Rx -| 1, ohei|
|0001f0e0| 67 68 74 20 2d 20 31 29 | 3b 0a 09 0a 09 4d 6f 76 |ght - 1)|;....Mov|
|0001f0f0| 65 28 67 69 6d 2d 3e 72 | 70 32 2c 20 6f 77 69 64 |e(gim->r|p2, owid|
|0001f100| 74 68 20 2d 20 31 2c 20 | 52 79 29 3b 0a 09 44 72 |th - 1, |Ry);..Dr|
|0001f110| 61 77 28 67 69 6d 2d 3e | 72 70 32 2c 20 6f 77 69 |aw(gim->|rp2, owi|
|0001f120| 64 74 68 20 2d 20 31 2c | 20 6f 68 65 69 67 68 74 |dth - 1,| oheight|
|0001f130| 20 2d 20 52 79 20 2d 20 | 31 29 3b 0a 09 0a 09 72 | - Ry - |1);....r|
|0001f140| 65 74 75 72 6e 20 67 69 | 6d 3b 0a 7d 0a 0a 76 6f |eturn gi|m;.}..vo|
|0001f150| 69 64 20 66 72 65 65 5f | 67 69 6d 28 73 74 72 75 |id free_|gim(stru|
|0001f160| 63 74 20 67 69 6d 20 2a | 67 69 6d 2c 20 73 74 72 |ct gim *|gim, str|
|0001f170| 75 63 74 20 49 6e 74 75 | 69 74 69 6f 6e 42 61 73 |uct Intu|itionBas|
|0001f180| 65 20 2a 49 6e 74 75 69 | 74 69 6f 6e 42 61 73 65 |e *Intui|tionBase|
|0001f190| 2c 20 73 74 72 75 63 74 | 20 47 66 78 42 61 73 65 |, struct| GfxBase|
|0001f1a0| 20 2a 47 66 78 42 61 73 | 65 29 0a 7b 0a 09 76 65 | *GfxBas|e).{..ve|
|0001f1b0| 72 69 66 79 28 67 69 6d | 2c 20 56 5f 67 69 6d 29 |rify(gim|, V_gim)|
|0001f1c0| 3b 0a 0a 09 66 72 65 65 | 5f 72 61 73 74 70 6f 72 |;...free|_rastpor|
|0001f1d0| 74 28 67 69 6d 2d 3e 72 | 70 31 2c 20 47 66 78 42 |t(gim->r|p1, GfxB|
|0001f1e0| 61 73 65 29 3b 0a 09 66 | 72 65 65 5f 72 61 73 74 |ase);..f|ree_rast|
|0001f1f0| 70 6f 72 74 28 67 69 6d | 2d 3e 72 70 32 2c 20 47 |port(gim|->rp2, G|
|0001f200| 66 78 42 61 73 65 29 3b | 0a 09 64 65 61 6c 6c 6f |fxBase);|..deallo|
|0001f210| 63 61 74 65 28 67 69 6d | 2c 20 56 5f 67 69 6d 29 |cate(gim|, V_gim)|
|0001f220| 3b 0a 09 0a 09 72 65 74 | 75 72 6e 3b 0a 7d 0a 0a |;....ret|urn;.}..|
|0001f230| 73 74 72 75 63 74 20 47 | 61 64 67 65 74 20 2a 6d |struct G|adget *m|
|0001f240| 61 6b 65 5f 67 61 64 67 | 65 74 28 73 74 72 75 63 |ake_gadg|et(struc|
|0001f250| 74 20 67 69 6d 20 2a 67 | 69 6d 29 0a 7b 0a 09 73 |t gim *g|im).{..s|
|0001f260| 74 72 75 63 74 20 47 61 | 64 67 65 74 20 2a 67 3b |truct Ga|dget *g;|
|0001f270| 0a 09 0a 09 69 66 20 28 | 21 67 69 6d 29 20 72 65 |....if (|!gim) re|
|0001f280| 74 75 72 6e 20 6e 69 6c | 3b 0a 0a 09 76 65 72 69 |turn nil|;...veri|
|0001f290| 66 79 28 67 69 6d 2c 20 | 56 5f 67 69 6d 29 3b 0a |fy(gim, |V_gim);.|
|0001f2a0| 09 0a 09 67 20 3d 20 28 | 73 74 72 75 63 74 20 47 |...g = (|struct G|
|0001f2b0| 61 64 67 65 74 20 2a 29 | 61 6c 6c 6f 63 61 74 65 |adget *)|allocate|
|0001f2c0| 28 73 69 7a 65 6f 66 28 | 2a 67 29 2c 20 56 5f 47 |(sizeof(|*g), V_G|
|0001f2d0| 61 64 67 65 74 29 3b 0a | 09 69 66 20 28 21 67 29 |adget);.|.if (!g)|
|0001f2e0| 20 72 65 74 75 72 6e 20 | 6e 69 6c 3b 0a 09 0a 09 | return |nil;....|
|0001f2f0| 67 2d 3e 4e 65 78 74 47 | 61 64 67 65 74 20 3d 20 |g->NextG|adget = |
|0001f300| 6e 69 6c 3b 0a 09 67 2d | 3e 4c 65 66 74 45 64 67 |nil;..g-|>LeftEdg|
|0001f310| 65 20 3d 20 30 3b 0a 09 | 67 2d 3e 54 6f 70 45 64 |e = 0;..|g->TopEd|
|0001f320| 67 65 20 3d 20 30 3b 0a | 09 67 2d 3e 57 69 64 74 |ge = 0;.|.g->Widt|
|0001f330| 68 20 3d 20 67 69 6d 2d | 3e 69 6d 31 2e 57 69 64 |h = gim-|>im1.Wid|
|0001f340| 74 68 3b 0a 09 67 2d 3e | 48 65 69 67 68 74 20 3d |th;..g->|Height =|
|0001f350| 20 67 69 6d 2d 3e 69 6d | 31 2e 48 65 69 67 68 74 | gim->im|1.Height|
|0001f360| 3b 0a 09 0a 09 67 2d 3e | 46 6c 61 67 73 20 3d 20 |;....g->|Flags = |
|0001f370| 47 46 4c 47 5f 47 41 44 | 47 48 49 4d 41 47 45 20 |GFLG_GAD|GHIMAGE |
|0001f380| 7c 20 47 46 4c 47 5f 47 | 41 44 47 49 4d 41 47 45 || GFLG_G|ADGIMAGE|
|0001f390| 3b 0a 09 67 2d 3e 41 63 | 74 69 76 61 74 69 6f 6e |;..g->Ac|tivation|
|0001f3a0| 20 3d 20 47 41 43 54 5f | 52 45 4c 56 45 52 49 46 | = GACT_|RELVERIF|
|0001f3b0| 59 3b 0a 09 67 2d 3e 47 | 61 64 67 65 74 54 79 70 |Y;..g->G|adgetTyp|
|0001f3c0| 65 20 3d 20 47 54 59 50 | 5f 42 4f 4f 4c 47 41 44 |e = GTYP|_BOOLGAD|
|0001f3d0| 47 45 54 3b 0a 09 67 2d | 3e 47 61 64 67 65 74 52 |GET;..g-|>GadgetR|
|0001f3e0| 65 6e 64 65 72 20 3d 20 | 26 67 69 6d 2d 3e 69 6d |ender = |&gim->im|
|0001f3f0| 31 3b 0a 09 67 2d 3e 53 | 65 6c 65 63 74 52 65 6e |1;..g->S|electRen|
|0001f400| 64 65 72 20 3d 20 26 67 | 69 6d 2d 3e 69 6d 32 3b |der = &g|im->im2;|
|0001f410| 0a 09 67 2d 3e 47 61 64 | 67 65 74 54 65 78 74 20 |..g->Gad|getText |
|0001f420| 3d 20 26 6e 75 6c 6c 74 | 65 78 74 3b 0a 09 0a 09 |= &nullt|ext;....|
|0001f430| 67 2d 3e 4d 75 74 75 61 | 6c 45 78 63 6c 75 64 65 |g->Mutua|lExclude|
|0001f440| 20 3d 20 30 3b 0a 09 67 | 2d 3e 53 70 65 63 69 61 | = 0;..g|->Specia|
|0001f450| 6c 49 6e 66 6f 20 3d 20 | 6e 69 6c 3b 0a 09 67 2d |lInfo = |nil;..g-|
|0001f460| 3e 47 61 64 67 65 74 49 | 44 20 3d 20 30 3b 0a 09 |>GadgetI|D = 0;..|
|0001f470| 67 2d 3e 55 73 65 72 44 | 61 74 61 20 3d 20 6e 69 |g->UserD|ata = ni|
|0001f480| 6c 3b 0a 09 0a 09 72 65 | 74 75 72 6e 20 67 3b 0a |l;....re|turn g;.|
|0001f490| 7d 0a 0a 76 6f 69 64 20 | 66 72 65 65 5f 67 61 64 |}..void |free_gad|
|0001f4a0| 67 65 74 28 73 74 72 75 | 63 74 20 47 61 64 67 65 |get(stru|ct Gadge|
|0001f4b0| 74 20 2a 67 29 0a 7b 0a | 09 64 65 61 6c 6c 6f 63 |t *g).{.|.dealloc|
|0001f4c0| 61 74 65 28 67 2c 20 56 | 5f 47 61 64 67 65 74 29 |ate(g, V|_Gadget)|
|0001f4d0| 3b 0a 7d 0a 0a 73 74 72 | 75 63 74 20 57 69 6e 64 |;.}..str|uct Wind|
|0001f4e0| 6f 77 20 2a 63 6f 6e 6e | 65 63 74 5f 72 65 71 28 |ow *conn|ect_req(|
|0001f4f0| 73 69 74 65 20 2a 73 70 | 2c 20 62 38 20 2a 73 29 |site *sp|, b8 *s)|
|0001f500| 0a 7b 0a 09 73 74 72 75 | 63 74 20 57 69 6e 64 6f |.{..stru|ct Windo|
|0001f510| 77 20 2a 77 3b 0a 09 73 | 74 72 75 63 74 20 49 6e |w *w;..s|truct In|
|0001f520| 74 75 69 74 69 6f 6e 42 | 61 73 65 20 2a 49 6e 74 |tuitionB|ase *Int|
|0001f530| 75 69 74 69 6f 6e 42 61 | 73 65 3b 0a 09 73 74 72 |uitionBa|se;..str|
|0001f540| 75 63 74 20 47 66 78 42 | 61 73 65 20 2a 47 66 78 |uct GfxB|ase *Gfx|
|0001f550| 42 61 73 65 3b 0a 09 73 | 74 72 75 63 74 20 53 63 |Base;..s|truct Sc|
|0001f560| 72 65 65 6e 20 2a 70 75 | 62 5f 73 63 72 65 65 6e |reen *pu|b_screen|
|0001f570| 3b 0a 09 62 33 32 20 73 | 63 72 65 65 6e 5f 6d 6f |;..b32 s|creen_mo|
|0001f580| 64 65 49 44 3b 0a 09 73 | 74 72 75 63 74 20 52 65 |deID;..s|truct Re|
|0001f590| 63 74 61 6e 67 6c 65 20 | 72 65 63 74 3b 0a 09 73 |ctangle |rect;..s|
|0001f5a0| 74 72 75 63 74 20 47 61 | 64 67 65 74 20 2a 63 61 |truct Ga|dget *ca|
|0001f5b0| 6e 63 65 6c 3b 0a 09 73 | 74 72 75 63 74 20 49 6e |ncel;..s|truct In|
|0001f5c0| 74 75 69 54 65 78 74 20 | 74 78 74 3b 0a 09 69 6e |tuiText |txt;..in|
|0001f5d0| 74 20 77 69 64 74 68 2c | 20 73 77 69 64 74 68 2c |t width,| swidth,|
|0001f5e0| 20 73 68 65 69 67 68 74 | 2c 20 66 68 65 69 67 68 | sheight|, fheigh|
|0001f5f0| 74 3b 0a 09 62 38 20 2a | 7a 3b 0a 09 0a 09 76 65 |t;..b8 *|z;....ve|
|0001f600| 72 69 66 79 28 73 70 2c | 20 56 5f 73 69 74 65 29 |rify(sp,| V_site)|
|0001f610| 3b 0a 09 0a 09 47 66 78 | 42 61 73 65 20 3d 20 73 |;....Gfx|Base = s|
|0001f620| 70 2d 3e 47 42 61 73 65 | 3b 0a 09 49 6e 74 75 69 |p->GBase|;..Intui|
|0001f630| 74 69 6f 6e 42 61 73 65 | 20 3d 20 73 70 2d 3e 49 |tionBase| = sp->I|
|0001f640| 42 61 73 65 3b 0a 09 0a | 09 70 75 62 5f 73 63 72 |Base;...|.pub_scr|
|0001f650| 65 65 6e 20 3d 20 4c 6f | 63 6b 50 75 62 53 63 72 |een = Lo|ckPubScr|
|0001f660| 65 65 6e 28 6e 69 6c 29 | 3b 0a 09 69 66 20 28 70 |een(nil)|;..if (p|
|0001f670| 75 62 5f 73 63 72 65 65 | 6e 29 20 7b 0a 09 09 73 |ub_scree|n) {...s|
|0001f680| 63 72 65 65 6e 5f 6d 6f | 64 65 49 44 20 3d 20 47 |creen_mo|deID = G|
|0001f690| 65 74 56 50 4d 6f 64 65 | 49 44 28 26 70 75 62 5f |etVPMode|ID(&pub_|
|0001f6a0| 73 63 72 65 65 6e 2d 3e | 56 69 65 77 50 6f 72 74 |screen->|ViewPort|
|0001f6b0| 29 3b 0a 09 09 69 66 20 | 28 73 63 72 65 65 6e 5f |);...if |(screen_|
|0001f6c0| 6d 6f 64 65 49 44 20 21 | 3d 20 49 4e 56 41 4c 49 |modeID !|= INVALI|
|0001f6d0| 44 5f 49 44 29 20 7b 0a | 09 09 09 69 66 20 28 51 |D_ID) {.|...if (Q|
|0001f6e0| 75 65 72 79 4f 76 65 72 | 73 63 61 6e 28 73 63 72 |ueryOver|scan(scr|
|0001f6f0| 65 65 6e 5f 6d 6f 64 65 | 49 44 2c 20 26 72 65 63 |een_mode|ID, &rec|
|0001f700| 74 2c 20 4f 53 43 41 4e | 5f 54 45 58 54 29 29 20 |t, OSCAN|_TEXT)) |
|0001f710| 7b 0a 09 09 09 09 63 61 | 6e 63 65 6c 20 3d 20 6d |{.....ca|ncel = m|
|0001f720| 61 6b 65 5f 67 61 64 67 | 65 74 28 63 61 6e 63 65 |ake_gadg|et(cance|
|0001f730| 6c 5f 67 69 6d 29 3b 0a | 09 09 09 09 69 66 20 28 |l_gim);.|....if (|
|0001f740| 63 61 6e 63 65 6c 29 20 | 7b 0a 09 09 09 09 09 7a |cancel) |{......z|
|0001f750| 20 3d 20 28 62 38 20 2a | 29 61 6c 6c 6f 63 61 74 | = (b8 *|)allocat|
|0001f760| 65 28 73 74 72 6c 65 6e | 28 73 29 20 2b 20 31 39 |e(strlen|(s) + 19|
|0001f770| 2c 20 56 5f 63 73 74 72 | 29 3b 0a 09 09 09 09 09 |, V_cstr|);......|
|0001f780| 69 66 20 28 7a 29 20 7b | 0a 09 09 09 09 09 09 73 |if (z) {|.......s|
|0001f790| 74 72 63 70 79 28 7a 2c | 20 73 74 72 69 6e 67 73 |trcpy(z,| strings|
|0001f7a0| 5b 4d 53 47 5f 43 4f 4e | 4e 45 43 54 49 4e 47 5f |[MSG_CON|NECTING_|
|0001f7b0| 54 4f 5d 29 3b 0a 09 09 | 09 09 09 09 73 74 72 63 |TO]);...|....strc|
|0001f7c0| 61 74 28 7a 2c 20 73 29 | 3b 0a 09 09 09 09 09 09 |at(z, s)|;.......|
|0001f7d0| 73 74 72 63 61 74 28 7a | 2c 20 22 20 2e 2e 2e 22 |strcat(z|, " ..."|
|0001f7e0| 29 3b 0a 09 09 09 09 09 | 09 0a 09 09 09 09 09 09 |);......|........|
|0001f7f0| 74 78 74 2e 46 72 6f 6e | 74 50 65 6e 20 3d 20 31 |txt.Fron|tPen = 1|
|0001f800| 3b 0a 09 09 09 09 09 09 | 74 78 74 2e 42 61 63 6b |;.......|txt.Back|
|0001f810| 50 65 6e 20 3d 20 30 3b | 0a 09 09 09 09 09 09 74 |Pen = 0;|.......t|
|0001f820| 78 74 2e 44 72 61 77 4d | 6f 64 65 20 3d 20 4a 41 |xt.DrawM|ode = JA|
|0001f830| 4d 31 3b 0a 09 09 09 09 | 09 09 74 78 74 2e 4c 65 |M1;.....|..txt.Le|
|0001f840| 66 74 45 64 67 65 20 3d | 20 30 3b 0a 09 09 09 09 |ftEdge =| 0;.....|
|0001f850| 09 09 74 78 74 2e 54 6f | 70 45 64 67 65 20 3d 20 |..txt.To|pEdge = |
|0001f860| 30 3b 0a 09 09 09 09 09 | 09 74 78 74 2e 49 54 65 |0;......|.txt.ITe|
|0001f870| 78 74 46 6f 6e 74 20 3d | 20 70 75 62 5f 73 63 72 |xtFont =| pub_scr|
|0001f880| 65 65 6e 2d 3e 46 6f 6e | 74 3b 0a 09 09 09 09 09 |een->Fon|t;......|
|0001f890| 09 74 78 74 2e 49 54 65 | 78 74 20 3d 20 7a 3b 0a |.txt.ITe|xt = z;.|
|0001f8a0| 09 09 09 09 09 09 74 78 | 74 2e 4e 65 78 74 54 65 |......tx|t.NextTe|
|0001f8b0| 78 74 20 3d 20 6e 69 6c | 3b 0a 09 09 09 09 09 09 |xt = nil|;.......|
|0001f8c0| 0a 09 09 09 09 09 09 69 | 66 20 28 70 75 62 5f 73 |.......i|f (pub_s|
|0001f8d0| 63 72 65 65 6e 2d 3e 46 | 6f 6e 74 29 20 66 68 65 |creen->F|ont) fhe|
|0001f8e0| 69 67 68 74 20 3d 20 70 | 75 62 5f 73 63 72 65 65 |ight = p|ub_scree|
|0001f8f0| 6e 2d 3e 46 6f 6e 74 2d | 3e 74 61 5f 59 53 69 7a |n->Font-|>ta_YSiz|
|0001f900| 65 3b 0a 09 09 09 09 09 | 09 65 6c 73 65 20 66 68 |e;......|.else fh|
|0001f910| 65 69 67 68 74 20 3d 20 | 38 3b 0a 09 09 09 09 09 |eight = |8;......|
|0001f920| 09 0a 09 09 09 09 09 09 | 77 69 64 74 68 20 3d 20 |........|width = |
|0001f930| 49 6e 74 75 69 54 65 78 | 74 4c 65 6e 67 74 68 28 |IntuiTex|tLength(|
|0001f940| 26 74 78 74 29 20 2a 20 | 34 20 2f 20 33 3b 0a 09 |&txt) * |4 / 3;..|
|0001f950| 09 09 09 09 09 0a 09 09 | 09 09 09 09 74 78 74 2e |........|....txt.|
|0001f960| 4c 65 66 74 45 64 67 65 | 20 3d 20 77 69 64 74 68 |LeftEdge| = width|
|0001f970| 20 2f 20 38 3b 0a 09 09 | 09 09 09 09 74 78 74 2e | / 8;...|....txt.|
|0001f980| 54 6f 70 45 64 67 65 20 | 3d 20 66 68 65 69 67 68 |TopEdge |= fheigh|
|0001f990| 74 20 2f 20 32 3b 0a 09 | 09 09 09 09 09 0a 09 09 |t / 2;..|........|
|0001f9a0| 09 09 09 09 73 77 69 64 | 74 68 20 3d 20 72 65 63 |....swid|th = rec|
|0001f9b0| 74 2e 4d 61 78 58 20 2d | 20 72 65 63 74 2e 4d 69 |t.MaxX -| rect.Mi|
|0001f9c0| 6e 58 20 2b 20 31 3b 0a | 09 09 09 09 09 09 73 68 |nX + 1;.|......sh|
|0001f9d0| 65 69 67 68 74 20 3d 20 | 72 65 63 74 2e 4d 61 78 |eight = |rect.Max|
|0001f9e0| 59 20 2d 20 72 65 63 74 | 2e 4d 69 6e 59 20 2b 20 |Y - rect|.MinY + |
|0001f9f0| 31 3b 0a 09 09 09 09 09 | 09 0a 09 09 09 09 09 09 |1;......|........|
|0001fa00| 69 66 20 28 70 75 62 5f | 73 63 72 65 65 6e 2d 3e |if (pub_|screen->|
|0001fa10| 54 6f 70 45 64 67 65 20 | 3e 20 30 29 0a 09 09 09 |TopEdge |> 0)....|
|0001fa20| 09 09 09 09 73 68 65 69 | 67 68 74 20 2d 3d 20 70 |....shei|ght -= p|
|0001fa30| 75 62 5f 73 63 72 65 65 | 6e 2d 3e 54 6f 70 45 64 |ub_scree|n->TopEd|
|0001fa40| 67 65 3b 0a 09 09 09 09 | 09 09 0a 09 09 09 09 09 |ge;.....|........|
|0001fa50| 09 69 66 20 28 73 68 65 | 69 67 68 74 20 3e 20 70 |.if (she|ight > p|
|0001fa60| 75 62 5f 73 63 72 65 65 | 6e 2d 3e 48 65 69 67 68 |ub_scree|n->Heigh|
|0001fa70| 74 29 20 73 68 65 69 67 | 68 74 20 3d 20 70 75 62 |t) sheig|ht = pub|
|0001fa80| 5f 73 63 72 65 65 6e 2d | 3e 48 65 69 67 68 74 3b |_screen-|>Height;|
|0001fa90| 0a 09 09 09 09 09 09 69 | 66 20 28 73 77 69 64 74 |.......i|f (swidt|
|0001faa0| 68 20 3e 20 70 75 62 5f | 73 63 72 65 65 6e 2d 3e |h > pub_|screen->|
|0001fab0| 57 69 64 74 68 29 20 73 | 77 69 64 74 68 20 3d 20 |Width) s|width = |
|0001fac0| 70 75 62 5f 73 63 72 65 | 65 6e 2d 3e 57 69 64 74 |pub_scre|en->Widt|
|0001fad0| 68 3b 0a 09 09 09 09 09 | 09 0a 09 09 09 09 09 09 |h;......|........|
|0001fae0| 69 66 20 28 73 68 65 69 | 67 68 74 20 3c 20 66 68 |if (shei|ght < fh|
|0001faf0| 65 69 67 68 74 20 2a 20 | 36 29 20 73 68 65 69 67 |eight * |6) sheig|
|0001fb00| 68 74 20 3d 20 66 68 65 | 69 67 68 74 20 2a 20 36 |ht = fhe|ight * 6|
|0001fb10| 3b 0a 09 09 09 09 09 09 | 69 66 20 28 73 77 69 64 |;.......|if (swid|
|0001fb20| 74 68 20 3c 20 77 69 64 | 74 68 29 20 73 77 69 64 |th < wid|th) swid|
|0001fb30| 74 68 20 3d 20 77 69 64 | 74 68 3b 0a 09 09 09 09 |th = wid|th;.....|
|0001fb40| 09 09 0a 09 09 09 09 09 | 09 77 20 3d 20 4f 70 65 |........|.w = Ope|
|0001fb50| 6e 57 69 6e 64 6f 77 54 | 61 67 73 28 6e 69 6c 2c |nWindowT|ags(nil,|
|0001fb60| 0a 09 09 09 09 09 09 09 | 57 41 5f 4c 65 66 74 2c |........|WA_Left,|
|0001fb70| 09 73 77 69 64 74 68 20 | 2f 20 32 20 2d 20 70 75 |.swidth |/ 2 - pu|
|0001fb80| 62 5f 73 63 72 65 65 6e | 2d 3e 4c 65 66 74 45 64 |b_screen|->LeftEd|
|0001fb90| 67 65 20 2d 20 77 69 64 | 74 68 20 2f 20 32 2c 0a |ge - wid|th / 2,.|
|0001fba0| 09 09 09 09 09 09 09 57 | 41 5f 54 6f 70 2c 09 09 |.......W|A_Top,..|
|0001fbb0| 73 68 65 69 67 68 74 20 | 2f 20 32 20 2d 20 70 75 |sheight |/ 2 - pu|
|0001fbc0| 62 5f 73 63 72 65 65 6e | 2d 3e 54 6f 70 45 64 67 |b_screen|->TopEdg|
|0001fbd0| 65 20 2d 20 66 68 65 69 | 67 68 74 20 2a 20 33 2c |e - fhei|ght * 3,|
|0001fbe0| 0a 09 09 09 09 09 09 09 | 57 41 5f 57 69 64 74 68 |........|WA_Width|
|0001fbf0| 2c 09 77 69 64 74 68 2c | 0a 09 09 09 09 09 09 09 |,.width,|........|
|0001fc00| 57 41 5f 48 65 69 67 68 | 74 2c 09 66 68 65 69 67 |WA_Heigh|t,.fheig|
|0001fc10| 68 74 20 2a 20 36 2c 0a | 09 09 09 09 09 09 09 57 |ht * 6,.|.......W|
|0001fc20| 41 5f 46 6c 61 67 73 2c | 09 57 46 4c 47 5f 44 45 |A_Flags,|.WFLG_DE|
|0001fc30| 50 54 48 47 41 44 47 45 | 54 20 7c 20 57 46 4c 47 |PTHGADGE|T | WFLG|
|0001fc40| 5f 44 52 41 47 42 41 52 | 20 7c 0a 09 09 09 09 09 |_DRAGBAR| |......|
|0001fc50| 09 09 09 09 57 46 4c 47 | 5f 53 4d 41 52 54 5f 52 |....WFLG|_SMART_R|
|0001fc60| 45 46 52 45 53 48 20 7c | 20 0a 09 09 09 09 09 09 |EFRESH || .......|
|0001fc70| 09 09 09 57 46 4c 47 5f | 4e 4f 43 41 52 45 52 45 |...WFLG_|NOCARERE|
|0001fc80| 46 52 45 53 48 2c 0a 09 | 09 09 09 09 09 09 57 41 |FRESH,..|......WA|
|0001fc90| 5f 49 44 43 4d 50 2c 09 | 49 44 43 4d 50 5f 47 41 |_IDCMP,.|IDCMP_GA|
|0001fca0| 44 47 45 54 55 50 2c 0a | 09 09 09 09 09 09 09 57 |DGETUP,.|.......W|
|0001fcb0| 41 5f 50 75 62 53 63 72 | 65 65 6e 2c 09 70 75 62 |A_PubScr|een,.pub|
|0001fcc0| 5f 73 63 72 65 65 6e 2c | 0a 09 09 09 09 09 09 09 |_screen,|........|
|0001fcd0| 57 41 5f 54 69 74 6c 65 | 2c 09 73 74 72 69 6e 67 |WA_Title|,.string|
|0001fce0| 73 5b 4d 53 47 5f 43 4f | 4e 4e 45 43 54 49 4e 47 |s[MSG_CO|NNECTING|
|0001fcf0| 5d 2c 0a 09 09 09 09 09 | 09 09 54 41 47 5f 45 4e |],......|..TAG_EN|
|0001fd00| 44 2c 09 30 0a 09 09 09 | 09 09 09 29 3b 0a 09 09 |D,.0....|...);...|
|0001fd10| 09 09 09 09 0a 09 09 09 | 09 09 09 69 66 20 28 77 |........|...if (w|
|0001fd20| 29 20 7b 0a 09 09 09 09 | 09 09 09 55 6e 6c 6f 63 |) {.....|...Unloc|
|0001fd30| 6b 50 75 62 53 63 72 65 | 65 6e 28 6e 69 6c 2c 20 |kPubScre|en(nil, |
|0001fd40| 70 75 62 5f 73 63 72 65 | 65 6e 29 3b 0a 09 09 09 |pub_scre|en);....|
|0001fd50| 09 09 09 09 50 72 69 6e | 74 49 54 65 78 74 28 77 |....Prin|tIText(w|
|0001fd60| 2d 3e 52 50 6f 72 74 2c | 20 26 74 78 74 2c 20 30 |->RPort,| &txt, 0|
|0001fd70| 2c 20 77 2d 3e 42 6f 72 | 64 65 72 54 6f 70 29 3b |, w->Bor|derTop);|
|0001fd80| 0a 09 09 09 09 09 09 09 | 64 65 61 6c 6c 6f 63 61 |........|dealloca|
|0001fd90| 74 65 28 7a 2c 20 56 5f | 63 73 74 72 29 3b 0a 09 |te(z, V_|cstr);..|
|0001fda0| 09 09 09 09 09 09 77 2d | 3e 55 73 65 72 44 61 74 |......w-|>UserDat|
|0001fdb0| 61 20 3d 20 28 76 6f 69 | 64 20 2a 29 63 61 6e 63 |a = (voi|d *)canc|
|0001fdc0| 65 6c 3b 0a 09 09 09 09 | 09 09 09 63 61 6e 63 65 |el;.....|...cance|
|0001fdd0| 6c 2d 3e 4c 65 66 74 45 | 64 67 65 20 3d 20 77 2d |l->LeftE|dge = w-|
|0001fde0| 3e 57 69 64 74 68 20 2d | 20 77 2d 3e 42 6f 72 64 |>Width -| w->Bord|
|0001fdf0| 65 72 52 69 67 68 74 20 | 2d 20 66 68 65 69 67 68 |erRight |- fheigh|
|0001fe00| 74 20 2f 20 32 20 2d 20 | 63 61 6e 63 65 6c 2d 3e |t / 2 - |cancel->|
|0001fe10| 57 69 64 74 68 3b 0a 09 | 09 09 09 09 09 09 63 61 |Width;..|......ca|
|0001fe20| 6e 63 65 6c 2d 3e 54 6f | 70 45 64 67 65 20 3d 20 |ncel->To|pEdge = |
|0001fe30| 77 2d 3e 48 65 69 67 68 | 74 20 2d 20 77 2d 3e 42 |w->Heigh|t - w->B|
|0001fe40| 6f 72 64 65 72 42 6f 74 | 74 6f 6d 20 2d 20 66 68 |orderBot|tom - fh|
|0001fe50| 65 69 67 68 74 20 2f 20 | 33 20 2d 20 63 61 6e 63 |eight / |3 - canc|
|0001fe60| 65 6c 2d 3e 48 65 69 67 | 68 74 3b 0a 09 09 09 09 |el->Heig|ht;.....|
|0001fe70| 09 09 09 41 64 64 47 61 | 64 67 65 74 28 77 2c 20 |...AddGa|dget(w, |
|0001fe80| 63 61 6e 63 65 6c 2c 20 | 28 62 33 32 29 30 29 3b |cancel, |(b32)0);|
|0001fe90| 0a 09 09 09 09 09 09 09 | 52 65 66 72 65 73 68 47 |........|RefreshG|
|0001fea0| 4c 69 73 74 28 63 61 6e | 63 65 6c 2c 20 77 2c 20 |List(can|cel, w, |
|0001feb0| 6e 69 6c 2c 20 31 29 3b | 0a 09 09 09 09 09 09 09 |nil, 1);|........|
|0001fec0| 0a 09 09 09 09 09 09 09 | 72 65 74 75 72 6e 20 77 |........|return w|
|0001fed0| 3b 0a 09 09 09 09 09 09 | 7d 0a 09 09 09 09 09 09 |;.......|}.......|
|0001fee0| 0a 09 09 09 09 09 09 64 | 65 61 6c 6c 6f 63 61 74 |.......d|eallocat|
|0001fef0| 65 28 7a 2c 20 56 5f 63 | 73 74 72 29 3b 0a 09 09 |e(z, V_c|str);...|
|0001ff00| 09 09 09 7d 0a 09 09 09 | 09 09 0a 09 09 09 09 09 |...}....|........|
|0001ff10| 66 72 65 65 5f 67 61 64 | 67 65 74 28 63 61 6e 63 |free_gad|get(canc|
|0001ff20| 65 6c 29 3b 0a 09 09 09 | 09 7d 0a 09 09 09 7d 0a |el);....|.}....}.|
|0001ff30| 09 09 7d 0a 09 09 55 6e | 6c 6f 63 6b 50 75 62 53 |..}...Un|lockPubS|
|0001ff40| 63 72 65 65 6e 28 6e 69 | 6c 2c 20 70 75 62 5f 73 |creen(ni|l, pub_s|
|0001ff50| 63 72 65 65 6e 29 3b 0a | 09 7d 0a 09 0a 09 72 65 |creen);.|.}....re|
|0001ff60| 74 75 72 6e 20 6e 69 6c | 3b 0a 7d 0a 0a 76 6f 69 |turn nil|;.}..voi|
|0001ff70| 64 20 63 6c 6f 73 65 5f | 72 65 71 28 73 69 74 65 |d close_|req(site|
|0001ff80| 20 2a 73 70 2c 20 73 74 | 72 75 63 74 20 57 69 6e | *sp, st|ruct Win|
|0001ff90| 64 6f 77 20 2a 77 29 0a | 7b 0a 09 73 74 72 75 63 |dow *w).|{..struc|
|0001ffa0| 74 20 47 61 64 67 65 74 | 20 2a 63 61 6e 63 65 6c |t Gadget| *cancel|
|0001ffb0| 3b 0a 09 73 74 72 75 63 | 74 20 4d 65 73 73 61 67 |;..struc|t Messag|
|0001ffc0| 65 20 2a 6d 73 67 3b 0a | 09 0a 09 73 74 72 75 63 |e *msg;.|...struc|
|0001ffd0| 74 20 49 6e 74 75 69 74 | 69 6f 6e 42 61 73 65 20 |t Intuit|ionBase |
|0001ffe0| 2a 49 6e 74 75 69 74 69 | 6f 6e 42 61 73 65 3b 0a |*Intuiti|onBase;.|
|0001fff0| 09 0a 09 76 65 72 69 66 | 79 28 73 70 2c 20 56 5f |...verif|y(sp, V_|
|00020000| 73 69 74 65 29 3b 0a 09 | 0a 09 49 6e 74 75 69 74 |site);..|..Intuit|
|00020010| 69 6f 6e 42 61 73 65 20 | 3d 20 73 70 2d 3e 49 42 |ionBase |= sp->IB|
|00020020| 61 73 65 3b 0a 09 0a 09 | 46 6f 72 62 69 64 28 29 |ase;....|Forbid()|
|00020030| 3b 0a 09 77 68 69 6c 65 | 20 28 6d 73 67 20 3d 20 |;..while| (msg = |
|00020040| 47 65 74 4d 73 67 28 77 | 2d 3e 55 73 65 72 50 6f |GetMsg(w|->UserPo|
|00020050| 72 74 29 29 20 52 65 70 | 6c 79 4d 73 67 28 6d 73 |rt)) Rep|lyMsg(ms|
|00020060| 67 29 3b 0a 0a 09 63 61 | 6e 63 65 6c 20 3d 20 28 |g);...ca|ncel = (|
|00020070| 73 74 72 75 63 74 20 47 | 61 64 67 65 74 20 2a 29 |struct G|adget *)|
|00020080| 77 2d 3e 55 73 65 72 44 | 61 74 61 3b 0a 09 52 65 |w->UserD|ata;..Re|
|00020090| 6d 6f 76 65 47 61 64 67 | 65 74 28 77 2c 20 63 61 |moveGadg|et(w, ca|
|000200a0| 6e 63 65 6c 29 3b 0a 0a | 09 66 72 65 65 5f 67 61 |ncel);..|.free_ga|
|000200b0| 64 67 65 74 28 63 61 6e | 63 65 6c 29 3b 0a 09 0a |dget(can|cel);...|
|000200c0| 09 43 6c 6f 73 65 57 69 | 6e 64 6f 77 28 77 29 3b |.CloseWi|ndow(w);|
|000200d0| 0a 09 50 65 72 6d 69 74 | 28 29 3b 0a 7d 0a 0a 73 |..Permit|();.}..s|
|000200e0| 74 72 75 63 74 20 70 68 | 64 61 74 61 20 7b 0a 09 |truct ph|data {..|
|000200f0| 62 38 20 70 61 73 73 77 | 6f 72 64 5b 4d 41 58 5f |b8 passw|ord[MAX_|
|00020100| 50 41 53 53 5f 4c 45 4e | 47 54 48 20 2b 20 31 5d |PASS_LEN|GTH + 1]|
|00020110| 3b 0a 09 62 38 20 75 6e | 64 6f 5b 4d 41 58 5f 50 |;..b8 un|do[MAX_P|
|00020120| 41 53 53 5f 4c 45 4e 47 | 54 48 20 2b 20 31 5d 3b |ASS_LENG|TH + 1];|
|00020130| 0a 7d 3b 0a 0a 62 6f 6f | 6c 65 61 6e 20 5f 5f 73 |.};..boo|lean __s|
|00020140| 61 76 65 64 73 20 5f 5f | 61 73 6d 20 70 61 73 73 |aveds __|asm pass|
|00020150| 77 6f 72 64 5f 68 6f 6f | 6b 28 72 65 67 69 73 74 |word_hoo|k(regist|
|00020160| 65 72 20 5f 5f 61 30 20 | 73 74 72 75 63 74 20 48 |er __a0 |struct H|
|00020170| 6f 6f 6b 20 2a 68 6f 6f | 6b 2c 20 0a 09 09 09 09 |ook *hoo|k, .....|
|00020180| 72 65 67 69 73 74 65 72 | 20 5f 5f 61 31 20 62 33 |register| __a1 b3|
|00020190| 32 20 2a 6d 73 67 2c 20 | 0a 09 09 09 09 72 65 67 |2 *msg, |.....reg|
|000201a0| 69 73 74 65 72 20 5f 5f | 61 32 20 73 74 72 75 63 |ister __|a2 struc|
|000201b0| 74 20 53 47 57 6f 72 6b | 20 2a 73 67 77 29 0a 7b |t SGWork| *sgw).{|
|000201c0| 0a 09 73 74 72 75 63 74 | 20 70 68 64 61 74 61 20 |..struct| phdata |
|000201d0| 2a 70 68 64 3b 0a 09 0a | 09 70 68 64 20 3d 20 68 |*phd;...|.phd = h|
|000201e0| 6f 6f 6b 2d 3e 68 5f 44 | 61 74 61 3b 0a 09 0a 09 |ook->h_D|ata;....|
|000201f0| 69 66 20 28 2a 6d 73 67 | 20 3d 3d 20 53 47 48 5f |if (*msg| == SGH_|
|00020200| 4b 45 59 29 20 7b 0a 09 | 09 73 77 69 74 63 68 20 |KEY) {..|.switch |
|00020210| 28 73 67 77 2d 3e 45 64 | 69 74 4f 70 29 20 7b 0a |(sgw->Ed|itOp) {.|
|00020220| 09 09 63 61 73 65 20 45 | 4f 5f 52 45 50 4c 41 43 |..case E|O_REPLAC|
|00020230| 45 43 48 41 52 3a 0a 09 | 09 63 61 73 65 20 45 4f |ECHAR:..|.case EO|
|00020240| 5f 49 4e 53 45 52 54 43 | 48 41 52 3a 0a 09 09 09 |_INSERTC|HAR:....|
|00020250| 70 68 64 2d 3e 70 61 73 | 73 77 6f 72 64 5b 73 67 |phd->pas|sword[sg|
|00020260| 77 2d 3e 42 75 66 66 65 | 72 50 6f 73 20 2d 20 31 |w->Buffe|rPos - 1|
|00020270| 5d 20 3d 20 73 67 77 2d | 3e 57 6f 72 6b 42 75 66 |] = sgw-|>WorkBuf|
|00020280| 66 65 72 5b 73 67 77 2d | 3e 42 75 66 66 65 72 50 |fer[sgw-|>BufferP|
|00020290| 6f 73 20 2d 20 31 5d 3b | 0a 09 09 09 73 67 77 2d |os - 1];|....sgw-|
|000202a0| 3e 57 6f 72 6b 42 75 66 | 66 65 72 5b 73 67 77 2d |>WorkBuf|fer[sgw-|
|000202b0| 3e 42 75 66 66 65 72 50 | 6f 73 20 2d 20 31 5d 20 |>BufferP|os - 1] |
|000202c0| 3d 20 27 2a 27 3b 0a 09 | 09 09 62 72 65 61 6b 3b |= '*';..|..break;|
|000202d0| 0a 09 09 63 61 73 65 20 | 45 4f 5f 4d 4f 56 45 43 |...case |EO_MOVEC|
|000202e0| 55 52 53 4f 52 3a 0a 09 | 09 09 73 67 77 2d 3e 41 |URSOR:..|..sgw->A|
|000202f0| 63 74 69 6f 6e 73 20 26 | 3d 7e 20 53 47 41 5f 55 |ctions &|=~ SGA_U|
|00020300| 53 45 3b 0a 09 09 09 73 | 67 77 2d 3e 41 63 74 69 |SE;....s|gw->Acti|
|00020310| 6f 6e 73 20 7c 3d 20 53 | 47 41 5f 42 45 45 50 3b |ons |= S|GA_BEEP;|
|00020320| 0a 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 63 61 73 |....brea|k;...cas|
|00020330| 65 20 45 4f 5f 52 45 53 | 45 54 3a 0a 09 09 09 73 |e EO_RES|ET:....s|
|00020340| 74 72 63 70 79 28 70 68 | 64 2d 3e 70 61 73 73 77 |trcpy(ph|d->passw|
|00020350| 6f 72 64 2c 20 70 68 64 | 2d 3e 75 6e 64 6f 29 3b |ord, phd|->undo);|
|00020360| 0a 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 7d 0a 09 |....brea|k;...}..|
|00020370| 09 69 66 20 28 73 67 77 | 2d 3e 42 75 66 66 65 72 |.if (sgw|->Buffer|
|00020380| 50 6f 73 20 21 3d 20 73 | 67 77 2d 3e 4e 75 6d 43 |Pos != s|gw->NumC|
|00020390| 68 61 72 73 29 20 7b 0a | 09 09 09 73 67 77 2d 3e |hars) {.|...sgw->|
|000203a0| 42 75 66 66 65 72 50 6f | 73 20 3d 20 73 67 77 2d |BufferPo|s = sgw-|
|000203b0| 3e 4e 75 6d 43 68 61 72 | 73 3b 0a 09 09 09 73 67 |>NumChar|s;....sg|
|000203c0| 77 2d 3e 41 63 74 69 6f | 6e 73 20 7c 3d 20 53 47 |w->Actio|ns |= SG|
|000203d0| 41 5f 52 45 44 49 53 50 | 4c 41 59 3b 0a 09 09 7d |A_REDISP|LAY;...}|
|000203e0| 0a 09 09 70 68 64 2d 3e | 70 61 73 73 77 6f 72 64 |...phd->|password|
|000203f0| 5b 73 67 77 2d 3e 4e 75 | 6d 43 68 61 72 73 5d 20 |[sgw->Nu|mChars] |
|00020400| 3d 20 30 3b 0a 09 09 72 | 65 74 75 72 6e 20 74 72 |= 0;...r|eturn tr|
|00020410| 75 65 3b 0a 09 7d 20 65 | 6c 73 65 20 69 66 20 28 |ue;..} e|lse if (|
|00020420| 2a 6d 73 67 20 3d 3d 20 | 53 47 48 5f 43 4c 49 43 |*msg == |SGH_CLIC|
|00020430| 4b 29 20 7b 0a 09 09 73 | 67 77 2d 3e 42 75 66 66 |K) {...s|gw->Buff|
|00020440| 65 72 50 6f 73 20 3d 20 | 73 67 77 2d 3e 4e 75 6d |erPos = |sgw->Num|
|00020450| 43 68 61 72 73 3b 0a 09 | 09 73 67 77 2d 3e 41 63 |Chars;..|.sgw->Ac|
|00020460| 74 69 6f 6e 73 20 7c 3d | 20 53 47 41 5f 52 45 44 |tions |=| SGA_RED|
|00020470| 49 53 50 4c 41 59 3b 0a | 09 09 72 65 74 75 72 6e |ISPLAY;.|..return|
|00020480| 20 74 72 75 65 3b 0a 09 | 7d 20 65 6c 73 65 20 7b | true;..|} else {|
|00020490| 0a 09 09 72 65 74 75 72 | 6e 20 66 61 6c 73 65 3b |...retur|n false;|
|000204a0| 0a 09 7d 0a 7d 0a 0a 62 | 6f 6f 6c 65 61 6e 20 75 |..}.}..b|oolean u|
|000204b0| 73 65 72 5f 70 61 73 73 | 5f 72 65 71 75 65 73 74 |ser_pass|_request|
|000204c0| 28 73 69 74 65 20 2a 73 | 70 2c 20 73 74 72 75 63 |(site *s|p, struc|
|000204d0| 74 20 57 69 6e 64 6f 77 | 20 2a 63 61 6e 77 29 0a |t Window| *canw).|
|000204e0| 2f 2a 0a 20 2a 20 6f 70 | 65 6e 20 61 20 72 65 71 |/*. * op|en a req|
|000204f0| 75 65 73 74 65 72 20 61 | 73 6b 69 6e 67 20 66 6f |uester a|sking fo|
|00020500| 72 20 75 73 65 72 6e 61 | 6d 65 20 61 6e 64 20 70 |r userna|me and p|
|00020510| 61 73 73 77 6f 72 64 2c | 20 66 69 6c 6c 65 64 20 |assword,| filled |
|00020520| 69 6e 20 61 73 20 61 70 | 70 72 6f 70 72 69 61 74 |in as ap|propriat|
|00020530| 65 0a 20 2a 20 49 6e 70 | 75 74 73 3a 0a 20 2a 09 |e. * Inp|uts:. *.|
|00020540| 73 70 09 3a 20 73 69 74 | 65 20 70 6f 69 6e 74 65 |sp.: sit|e pointe|
|00020550| 72 0a 20 2a 09 63 61 6e | 77 09 3a 20 63 61 6e 63 |r. *.can|w.: canc|
|00020560| 65 6c 20 77 69 6e 64 6f | 77 20 28 77 69 6c 6c 20 |el windo|w (will |
|00020570| 73 74 69 6c 6c 20 62 65 | 20 6f 70 65 6e 20 69 6e |still be| open in|
|00020580| 20 74 68 65 20 62 61 63 | 6b 67 72 6f 75 6e 64 2c | the bac|kground,|
|00020590| 20 61 6e 64 20 6d 61 79 | 20 62 65 20 75 73 65 64 | and may| be used|
|000205a0| 29 0a 20 2a 0a 20 2a 20 | 52 65 73 75 6c 74 3a 0a |). *. * |Result:.|
|000205b0| 20 2a 09 66 61 6c 73 65 | 20 69 66 20 63 61 6e 63 | *.false| if canc|
|000205c0| 65 6c 20 69 73 20 73 65 | 6c 65 63 74 65 64 20 69 |el is se|lected i|
|000205d0| 6e 20 65 69 74 68 65 72 | 20 63 61 6e 77 20 6f 72 |n either| canw or|
|000205e0| 20 74 68 65 20 72 65 71 | 75 65 73 74 65 72 2c 20 | the req|uester, |
|000205f0| 6f 72 20 61 20 6d 61 6a | 6f 72 20 66 61 69 6c 75 |or a maj|or failu|
|00020600| 72 65 20 6f 63 63 75 72 | 72 65 64 0a 20 2a 09 74 |re occur|red. *.t|
|00020610| 72 75 65 20 69 66 20 6c | 6f 67 69 6e 20 69 73 20 |rue if l|ogin is |
|00020620| 73 65 6c 65 63 74 65 64 | 2c 20 6f 72 20 72 65 74 |selected|, or ret|
|00020630| 75 72 6e 20 69 73 20 70 | 72 65 73 73 65 64 20 69 |urn is p|ressed i|
|00020640| 6e 20 70 61 73 73 77 6f | 72 64 20 66 69 65 6c 64 |n passwo|rd field|
|00020650| 0a 20 2a 2f 0a 7b 0a 09 | 73 74 72 75 63 74 20 47 |. */.{..|struct G|
|00020660| 61 64 67 65 74 20 2a 67 | 6c 69 73 74 2c 20 2a 67 |adget *g|list, *g|
|00020670| 61 64 2c 20 2a 6c 6f 67 | 69 6e 2c 20 2a 63 61 6e |ad, *log|in, *can|
|00020680| 63 65 6c 2c 20 2a 75 73 | 65 72 67 2c 20 2a 70 61 |cel, *us|erg, *pa|
|00020690| 73 73 67 3b 0a 09 73 74 | 72 75 63 74 20 4e 65 77 |ssg;..st|ruct New|
|000206a0| 47 61 64 67 65 74 20 75 | 73 65 72 2c 20 70 61 73 |Gadget u|ser, pas|
|000206b0| 73 3b 0a 09 73 74 72 75 | 63 74 20 53 63 72 65 65 |s;..stru|ct Scree|
|000206c0| 6e 20 2a 73 3b 0a 09 76 | 6f 69 64 20 2a 76 69 3b |n *s;..v|oid *vi;|
|000206d0| 0a 09 62 33 32 20 73 63 | 72 65 65 6e 5f 6d 6f 64 |..b32 sc|reen_mod|
|000206e0| 65 49 44 3b 0a 09 73 74 | 72 75 63 74 20 52 65 63 |eID;..st|ruct Rec|
|000206f0| 74 61 6e 67 6c 65 20 72 | 65 63 74 3b 0a 09 73 74 |tangle r|ect;..st|
|00020700| 72 75 63 74 20 57 69 6e | 64 6f 77 20 2a 77 3b 0a |ruct Win|dow *w;.|
|00020710| 09 73 62 33 32 20 73 77 | 69 64 74 68 2c 20 73 68 |.sb32 sw|idth, sh|
|00020720| 65 69 67 68 74 2c 20 66 | 68 65 69 67 68 74 2c 20 |eight, f|height, |
|00020730| 77 68 65 69 67 68 74 3b | 0a 09 62 33 32 20 73 69 |wheight;|..b32 si|
|00020740| 67 6e 61 6c 73 2c 20 63 | 73 69 67 3b 0a 09 73 74 |gnals, c|sig;..st|
|00020750| 72 75 63 74 20 49 6e 74 | 75 69 4d 65 73 73 61 67 |ruct Int|uiMessag|
|00020760| 65 20 2a 69 6d 3b 0a 09 | 73 74 72 75 63 74 20 48 |e *im;..|struct H|
|00020770| 6f 6f 6b 20 70 61 73 73 | 5f 68 6f 6f 6b 3b 0a 09 |ook pass|_hook;..|
|00020780| 62 38 20 2a 7a 3b 0a 09 | 73 74 72 75 63 74 20 70 |b8 *z;..|struct p|
|00020790| 68 64 61 74 61 20 70 68 | 64 3b 0a 0a 09 73 74 72 |hdata ph|d;...str|
|000207a0| 75 63 74 20 49 6e 74 75 | 69 74 69 6f 6e 42 61 73 |uct Intu|itionBas|
|000207b0| 65 20 2a 49 6e 74 75 69 | 74 69 6f 6e 42 61 73 65 |e *Intui|tionBase|
|000207c0| 3b 0a 09 73 74 72 75 63 | 74 20 4c 69 62 72 61 72 |;..struc|t Librar|
|000207d0| 79 20 2a 47 61 64 54 6f | 6f 6c 73 42 61 73 65 3b |y *GadTo|olsBase;|
|000207e0| 0a 09 73 74 72 75 63 74 | 20 47 66 78 42 61 73 65 |..struct| GfxBase|
|000207f0| 20 2a 47 66 78 42 61 73 | 65 3b 0a 09 0a 09 76 65 | *GfxBas|e;....ve|
|00020800| 72 69 66 79 28 73 70 2c | 20 56 5f 73 69 74 65 29 |rify(sp,| V_site)|
|00020810| 3b 0a 09 0a 09 49 6e 74 | 75 69 74 69 6f 6e 42 61 |;....Int|uitionBa|
|00020820| 73 65 20 3d 20 73 70 2d | 3e 49 42 61 73 65 3b 0a |se = sp-|>IBase;.|
|00020830| 09 47 66 78 42 61 73 65 | 20 3d 20 73 70 2d 3e 47 |.GfxBase| = sp->G|
|00020840| 42 61 73 65 3b 0a 09 47 | 61 64 54 6f 6f 6c 73 42 |Base;..G|adToolsB|
|00020850| 61 73 65 20 3d 20 73 70 | 2d 3e 47 54 42 61 73 65 |ase = sp|->GTBase|
|00020860| 3b 0a 0a 09 67 6c 69 73 | 74 20 3d 20 6e 69 6c 3b |;...glis|t = nil;|
|00020870| 0a 09 0a 09 70 61 73 73 | 5f 68 6f 6f 6b 2e 68 5f |....pass|_hook.h_|
|00020880| 45 6e 74 72 79 20 3d 20 | 28 62 33 32 20 28 2a 29 |Entry = |(b32 (*)|
|00020890| 28 29 29 70 61 73 73 77 | 6f 72 64 5f 68 6f 6f 6b |())passw|ord_hook|
|000208a0| 3b 0a 09 70 61 73 73 5f | 68 6f 6f 6b 2e 68 5f 53 |;..pass_|hook.h_S|
|000208b0| 75 62 45 6e 74 72 79 20 | 3d 20 28 62 33 32 20 28 |ubEntry |= (b32 (|
|000208c0| 2a 29 28 29 29 6e 69 6c | 3b 0a 09 70 61 73 73 5f |*)())nil|;..pass_|
|000208d0| 68 6f 6f 6b 2e 68 5f 44 | 61 74 61 20 3d 20 28 76 |hook.h_D|ata = (v|
|000208e0| 6f 69 64 20 2a 29 26 70 | 68 64 3b 0a 09 0a 09 73 |oid *)&p|hd;....s|
|000208f0| 20 3d 20 4c 6f 63 6b 50 | 75 62 53 63 72 65 65 6e | = LockP|ubScreen|
|00020900| 28 6e 69 6c 29 3b 0a 09 | 69 66 20 28 21 73 29 20 |(nil);..|if (!s) |
|00020910| 72 65 74 75 72 6e 20 66 | 61 6c 73 65 3b 0a 0a 09 |return f|alse;...|
|00020920| 53 63 72 65 65 6e 54 6f | 46 72 6f 6e 74 28 73 29 |ScreenTo|Front(s)|
|00020930| 3b 0a 09 0a 09 69 66 20 | 28 73 2d 3e 46 6f 6e 74 |;....if |(s->Font|
|00020940| 29 20 66 68 65 69 67 68 | 74 20 3d 20 73 2d 3e 46 |) fheigh|t = s->F|
|00020950| 6f 6e 74 2d 3e 74 61 5f | 59 53 69 7a 65 3b 0a 09 |ont->ta_|YSize;..|
|00020960| 65 6c 73 65 20 66 68 65 | 69 67 68 74 20 3d 20 38 |else fhe|ight = 8|
|00020970| 3b 0a 09 0a 09 69 66 20 | 28 73 70 2d 3e 70 61 73 |;....if |(sp->pas|
|00020980| 73 77 6f 72 64 29 20 7b | 0a 09 09 73 74 72 63 70 |sword) {|...strcp|
|00020990| 79 28 70 68 64 2e 70 61 | 73 73 77 6f 72 64 2c 20 |y(phd.pa|ssword, |
|000209a0| 73 70 2d 3e 70 61 73 73 | 77 6f 72 64 29 3b 0a 09 |sp->pass|word);..|
|000209b0| 09 73 74 72 63 70 79 28 | 70 68 64 2e 75 6e 64 6f |.strcpy(|phd.undo|
|000209c0| 2c 20 73 70 2d 3e 70 61 | 73 73 77 6f 72 64 29 3b |, sp->pa|ssword);|
|000209d0| 0a 09 09 0a 09 09 7a 20 | 3d 20 73 70 2d 3e 70 61 |......z |= sp->pa|
|000209e0| 73 73 77 6f 72 64 3b 0a | 09 09 77 68 69 6c 65 20 |ssword;.|..while |
|000209f0| 28 2a 7a 29 20 7b 0a 09 | 09 09 2a 7a 2b 2b 20 3d |(*z) {..|..*z++ =|
|00020a00| 20 27 2a 27 3b 0a 09 09 | 7d 0a 09 7d 20 65 6c 73 | '*';...|}..} els|
|00020a10| 65 20 7b 0a 09 09 70 68 | 64 2e 70 61 73 73 77 6f |e {...ph|d.passwo|
|00020a20| 72 64 5b 30 5d 20 3d 20 | 30 3b 0a 09 09 70 68 64 |rd[0] = |0;...phd|
|00020a30| 2e 75 6e 64 6f 5b 30 5d | 20 3d 20 30 3b 0a 09 7d |.undo[0]| = 0;..}|
|00020a40| 0a 09 0a 09 77 68 65 69 | 67 68 74 20 3d 20 66 68 |....whei|ght = fh|
|00020a50| 65 69 67 68 74 20 2a 20 | 38 3b 0a 09 0a 09 76 69 |eight * |8;....vi|
|00020a60| 20 3d 20 47 65 74 56 69 | 73 75 61 6c 49 6e 66 6f | = GetVi|sualInfo|
|00020a70| 28 73 2c 20 54 41 47 5f | 45 4e 44 29 3b 0a 09 69 |(s, TAG_|END);..i|
|00020a80| 66 20 28 76 69 20 21 3d | 20 6e 69 6c 29 20 7b 0a |f (vi !=| nil) {.|
|00020a90| 09 09 73 63 72 65 65 6e | 5f 6d 6f 64 65 49 44 20 |..screen|_modeID |
|00020aa0| 3d 20 47 65 74 56 50 4d | 6f 64 65 49 44 28 26 73 |= GetVPM|odeID(&s|
|00020ab0| 2d 3e 56 69 65 77 50 6f | 72 74 29 3b 0a 09 09 69 |->ViewPo|rt);...i|
|00020ac0| 66 20 28 73 63 72 65 65 | 6e 5f 6d 6f 64 65 49 44 |f (scree|n_modeID|
|00020ad0| 20 21 3d 20 49 4e 56 41 | 4c 49 44 5f 49 44 29 20 | != INVA|LID_ID) |
|00020ae0| 7b 0a 09 09 09 69 66 20 | 28 51 75 65 72 79 4f 76 |{....if |(QueryOv|
|00020af0| 65 72 73 63 61 6e 28 73 | 63 72 65 65 6e 5f 6d 6f |erscan(s|creen_mo|
|00020b00| 64 65 49 44 2c 20 26 72 | 65 63 74 2c 20 4f 53 43 |deID, &r|ect, OSC|
|00020b10| 41 4e 5f 54 45 58 54 29 | 29 20 7b 0a 09 09 09 09 |AN_TEXT)|) {.....|
|00020b20| 73 77 69 64 74 68 20 3d | 20 72 65 63 74 2e 4d 61 |swidth =| rect.Ma|
|00020b30| 78 58 20 2d 20 72 65 63 | 74 2e 4d 69 6e 58 20 2b |xX - rec|t.MinX +|
|00020b40| 20 31 3b 0a 09 09 09 09 | 73 68 65 69 67 68 74 20 | 1;.....|sheight |
|00020b50| 3d 20 72 65 63 74 2e 4d | 61 78 59 20 2d 20 72 65 |= rect.M|axY - re|
|00020b60| 63 74 2e 4d 69 6e 59 20 | 2b 20 31 3b 0a 09 09 09 |ct.MinY |+ 1;....|
|00020b70| 09 0a 09 09 09 09 73 70 | 72 69 6e 74 66 28 73 70 |......sp|rintf(sp|
|00020b80| 2d 3e 72 65 61 64 5f 62 | 75 66 66 65 72 2c 20 73 |->read_b|uffer, s|
|00020b90| 74 72 69 6e 67 73 5b 4d | 53 47 5f 4c 4f 47 49 4e |trings[M|SG_LOGIN|
|00020ba0| 5f 54 4f 5d 2c 20 73 70 | 2d 3e 68 6f 73 74 29 3b |_TO], sp|->host);|
|00020bb0| 0a 09 09 09 09 0a 09 09 | 09 09 77 20 3d 20 4f 70 |........|..w = Op|
|00020bc0| 65 6e 57 69 6e 64 6f 77 | 54 61 67 73 28 6e 69 6c |enWindow|Tags(nil|
|00020bd0| 2c 0a 09 09 09 09 09 57 | 41 5f 4c 65 66 74 2c 09 |,......W|A_Left,.|
|00020be0| 73 77 69 64 74 68 20 2f | 20 34 20 2d 20 73 2d 3e |swidth /| 4 - s->|
|00020bf0| 4c 65 66 74 45 64 67 65 | 2c 0a 09 09 09 09 09 57 |LeftEdge|,......W|
|00020c00| 41 5f 54 6f 70 2c 09 09 | 73 68 65 69 67 68 74 20 |A_Top,..|sheight |
|00020c10| 2f 20 32 20 2d 20 77 68 | 65 69 67 68 74 20 2f 20 |/ 2 - wh|eight / |
|00020c20| 32 20 2d 20 73 2d 3e 54 | 6f 70 45 64 67 65 2c 0a |2 - s->T|opEdge,.|
|00020c30| 09 09 09 09 09 57 41 5f | 57 69 64 74 68 2c 09 73 |.....WA_|Width,.s|
|00020c40| 77 69 64 74 68 20 2f 20 | 32 2c 0a 09 09 09 09 09 |width / |2,......|
|00020c50| 57 41 5f 48 65 69 67 68 | 74 2c 09 77 68 65 69 67 |WA_Heigh|t,.wheig|
|00020c60| 68 74 2c 0a 09 09 09 09 | 09 57 41 5f 49 44 43 4d |ht,.....|.WA_IDCM|
|00020c70| 50 2c 09 49 44 43 4d 50 | 5f 41 43 54 49 56 45 57 |P,.IDCMP|_ACTIVEW|
|00020c80| 49 4e 44 4f 57 20 7c 20 | 49 44 43 4d 50 5f 52 45 |INDOW | |IDCMP_RE|
|00020c90| 46 52 45 53 48 57 49 4e | 44 4f 57 20 7c 20 0a 09 |FRESHWIN|DOW | ..|
|00020ca0| 09 09 09 09 09 09 42 55 | 54 54 4f 4e 49 44 43 4d |......BU|TTONIDCM|
|00020cb0| 50 20 7c 20 53 54 52 49 | 4e 47 49 44 43 4d 50 2c |P | STRI|NGIDCMP,|
|00020cc0| 0a 09 09 09 09 09 57 41 | 5f 50 75 62 53 63 72 65 |......WA|_PubScre|
|00020cd0| 65 6e 2c 09 73 2c 0a 09 | 09 09 09 09 57 41 5f 41 |en,.s,..|....WA_A|
|00020ce0| 63 74 69 76 61 74 65 2c | 09 74 72 75 65 2c 0a 09 |ctivate,|.true,..|
|00020cf0| 09 09 09 09 57 41 5f 44 | 72 61 67 42 61 72 2c 09 |....WA_D|ragBar,.|
|00020d00| 74 72 75 65 2c 0a 09 09 | 09 09 09 57 41 5f 44 65 |true,...|...WA_De|
|00020d10| 70 74 68 47 61 64 67 65 | 74 2c 09 74 72 75 65 2c |pthGadge|t,.true,|
|00020d20| 0a 09 09 09 09 09 57 41 | 5f 54 69 74 6c 65 2c 09 |......WA|_Title,.|
|00020d30| 73 70 2d 3e 72 65 61 64 | 5f 62 75 66 66 65 72 2c |sp->read|_buffer,|
|00020d40| 0a 09 09 09 09 09 57 41 | 5f 41 75 74 6f 41 64 6a |......WA|_AutoAdj|
|00020d50| 75 73 74 2c 09 74 72 75 | 65 2c 0a 09 09 09 09 09 |ust,.tru|e,......|
|00020d60| 54 41 47 5f 45 4e 44 0a | 09 09 09 09 29 3b 0a 09 |TAG_END.|....);..|
|00020d70| 09 09 09 69 66 20 28 77 | 29 20 7b 0a 09 09 09 09 |...if (w|) {.....|
|00020d80| 09 67 61 64 20 3d 20 43 | 72 65 61 74 65 43 6f 6e |.gad = C|reateCon|
|00020d90| 74 65 78 74 28 26 67 6c | 69 73 74 29 3b 0a 09 09 |text(&gl|ist);...|
|00020da0| 09 09 09 69 66 20 28 67 | 61 64 29 20 7b 0a 09 09 |...if (g|ad) {...|
|00020db0| 09 09 09 09 75 73 65 72 | 2e 6e 67 5f 4c 65 66 74 |....user|.ng_Left|
|00020dc0| 45 64 67 65 20 3d 20 77 | 2d 3e 57 69 64 74 68 20 |Edge = w|->Width |
|00020dd0| 2f 20 34 3b 0a 09 09 09 | 09 09 09 75 73 65 72 2e |/ 4;....|...user.|
|00020de0| 6e 67 5f 54 6f 70 45 64 | 67 65 20 3d 20 77 2d 3e |ng_TopEd|ge = w->|
|00020df0| 42 6f 72 64 65 72 54 6f | 70 20 2b 20 66 68 65 69 |BorderTo|p + fhei|
|00020e00| 67 68 74 20 2f 20 32 3b | 0a 09 09 09 09 09 09 75 |ght / 2;|.......u|
|00020e10| 73 65 72 2e 6e 67 5f 57 | 69 64 74 68 20 3d 20 28 |ser.ng_W|idth = (|
|00020e20| 77 2d 3e 57 69 64 74 68 | 20 2a 20 33 20 2f 20 34 |w->Width| * 3 / 4|
|00020e30| 29 20 2d 20 77 2d 3e 42 | 6f 72 64 65 72 52 69 67 |) - w->B|orderRig|
|00020e40| 68 74 20 2d 20 66 68 65 | 69 67 68 74 20 2f 20 32 |ht - fhe|ight / 2|
|00020e50| 3b 0a 09 09 09 09 09 09 | 75 73 65 72 2e 6e 67 5f |;.......|user.ng_|
|00020e60| 48 65 69 67 68 74 20 3d | 20 66 68 65 69 67 68 74 |Height =| fheight|
|00020e70| 20 2a 20 33 20 2f 20 32 | 3b 0a 09 09 09 09 09 09 | * 3 / 2|;.......|
|00020e80| 75 73 65 72 2e 6e 67 5f | 47 61 64 67 65 74 54 65 |user.ng_|GadgetTe|
|00020e90| 78 74 20 3d 20 73 74 72 | 69 6e 67 73 5b 4d 53 47 |xt = str|ings[MSG|
|00020ea0| 5f 55 53 45 52 5f 4e 41 | 4d 45 5d 3b 0a 09 09 09 |_USER_NA|ME];....|
|00020eb0| 09 09 09 75 73 65 72 2e | 6e 67 5f 54 65 78 74 41 |...user.|ng_TextA|
|00020ec0| 74 74 72 20 3d 20 73 2d | 3e 46 6f 6e 74 3b 0a 09 |ttr = s-|>Font;..|
|00020ed0| 09 09 09 09 09 75 73 65 | 72 2e 6e 67 5f 47 61 64 |.....use|r.ng_Gad|
|00020ee0| 67 65 74 49 44 20 3d 20 | 31 3b 0a 09 09 09 09 09 |getID = |1;......|
|00020ef0| 09 75 73 65 72 2e 6e 67 | 5f 46 6c 61 67 73 20 3d |.user.ng|_Flags =|
|00020f00| 20 50 4c 41 43 45 54 45 | 58 54 5f 4c 45 46 54 3b | PLACETE|XT_LEFT;|
|00020f10| 0a 09 09 09 09 09 09 75 | 73 65 72 2e 6e 67 5f 56 |.......u|ser.ng_V|
|00020f20| 69 73 75 61 6c 49 6e 66 | 6f 20 3d 20 76 69 3b 0a |isualInf|o = vi;.|
|00020f30| 09 09 09 09 09 09 0a 09 | 09 09 09 09 09 70 61 73 |........|.....pas|
|00020f40| 73 2e 6e 67 5f 4c 65 66 | 74 45 64 67 65 20 3d 20 |s.ng_Lef|tEdge = |
|00020f50| 77 2d 3e 57 69 64 74 68 | 20 2f 20 34 3b 0a 09 09 |w->Width| / 4;...|
|00020f60| 09 09 09 09 70 61 73 73 | 2e 6e 67 5f 54 6f 70 45 |....pass|.ng_TopE|
|00020f70| 64 67 65 20 3d 20 77 2d | 3e 42 6f 72 64 65 72 54 |dge = w-|>BorderT|
|00020f80| 6f 70 20 2b 20 28 66 68 | 65 69 67 68 74 20 2a 20 |op + (fh|eight * |
|00020f90| 35 20 2f 20 32 29 3b 0a | 09 09 09 09 09 09 70 61 |5 / 2);.|......pa|
|00020fa0| 73 73 2e 6e 67 5f 57 69 | 64 74 68 20 3d 20 28 77 |ss.ng_Wi|dth = (w|
|00020fb0| 2d 3e 57 69 64 74 68 20 | 2a 20 33 20 2f 20 34 29 |->Width |* 3 / 4)|
|00020fc0| 20 2d 20 77 2d 3e 42 6f | 72 64 65 72 52 69 67 68 | - w->Bo|rderRigh|
|00020fd0| 74 20 2d 20 66 68 65 69 | 67 68 74 20 2f 20 32 3b |t - fhei|ght / 2;|
|00020fe0| 0a 09 09 09 09 09 09 70 | 61 73 73 2e 6e 67 5f 48 |.......p|ass.ng_H|
|00020ff0| 65 69 67 68 74 20 3d 20 | 66 68 65 69 67 68 74 20 |eight = |fheight |
|00021000| 2a 20 33 20 2f 20 32 3b | 0a 09 09 09 09 09 09 70 |* 3 / 2;|.......p|
|00021010| 61 73 73 2e 6e 67 5f 47 | 61 64 67 65 74 54 65 78 |ass.ng_G|adgetTex|
|00021020| 74 20 3d 20 73 74 72 69 | 6e 67 73 5b 4d 53 47 5f |t = stri|ngs[MSG_|
|00021030| 50 41 53 53 57 4f 52 44 | 5f 4e 41 4d 45 5d 3b 0a |PASSWORD|_NAME];.|
|00021040| 09 09 09 09 09 09 70 61 | 73 73 2e 6e 67 5f 54 65 |......pa|ss.ng_Te|
|00021050| 78 74 41 74 74 72 20 3d | 20 73 2d 3e 46 6f 6e 74 |xtAttr =| s->Font|
|00021060| 3b 0a 09 09 09 09 09 09 | 70 61 73 73 2e 6e 67 5f |;.......|pass.ng_|
|00021070| 47 61 64 67 65 74 49 44 | 20 3d 20 32 3b 0a 09 09 |GadgetID| = 2;...|
|00021080| 09 09 09 09 70 61 73 73 | 2e 6e 67 5f 46 6c 61 67 |....pass|.ng_Flag|
|00021090| 73 20 3d 20 50 4c 41 43 | 45 54 45 58 54 5f 4c 45 |s = PLAC|ETEXT_LE|
|000210a0| 46 54 3b 0a 09 09 09 09 | 09 09 70 61 73 73 2e 6e |FT;.....|..pass.n|
|000210b0| 67 5f 56 69 73 75 61 6c | 49 6e 66 6f 20 3d 20 76 |g_Visual|Info = v|
|000210c0| 69 3b 0a 09 09 09 09 09 | 09 0a 09 09 09 09 09 09 |i;......|........|
|000210d0| 75 73 65 72 67 20 3d 20 | 67 61 64 20 3d 20 43 72 |userg = |gad = Cr|
|000210e0| 65 61 74 65 47 61 64 67 | 65 74 28 53 54 52 49 4e |eateGadg|et(STRIN|
|000210f0| 47 5f 4b 49 4e 44 2c 20 | 67 61 64 2c 20 26 75 73 |G_KIND, |gad, &us|
|00021100| 65 72 2c 0a 09 09 09 09 | 09 09 09 47 54 53 54 5f |er,.....|...GTST_|
|00021110| 53 74 72 69 6e 67 2c 09 | 73 70 2d 3e 75 73 65 72 |String,.|sp->user|
|00021120| 2c 0a 09 09 09 09 09 09 | 09 47 54 53 54 5f 4d 61 |,.......|.GTST_Ma|
|00021130| 78 43 68 61 72 73 2c 09 | 4d 41 58 5f 55 53 45 52 |xChars,.|MAX_USER|
|00021140| 5f 4c 45 4e 47 54 48 2c | 0a 09 09 09 09 09 09 09 |_LENGTH,|........|
|00021150| 54 41 47 5f 45 4e 44 0a | 09 09 09 09 09 09 29 3b |TAG_END.|......);|
|00021160| 0a 09 09 09 09 09 09 0a | 09 09 09 09 09 09 70 61 |........|......pa|
|00021170| 73 73 67 20 3d 20 67 61 | 64 20 3d 20 43 72 65 61 |ssg = ga|d = Crea|
|00021180| 74 65 47 61 64 67 65 74 | 28 53 54 52 49 4e 47 5f |teGadget|(STRING_|
|00021190| 4b 49 4e 44 2c 20 67 61 | 64 2c 20 26 70 61 73 73 |KIND, ga|d, &pass|
|000211a0| 2c 0a 09 09 09 09 09 09 | 09 47 54 53 54 5f 53 74 |,.......|.GTST_St|
|000211b0| 72 69 6e 67 2c 09 73 70 | 2d 3e 70 61 73 73 77 6f |ring,.sp|->passwo|
|000211c0| 72 64 2c 0a 09 09 09 09 | 09 09 09 47 54 53 54 5f |rd,.....|...GTST_|
|000211d0| 4d 61 78 43 68 61 72 73 | 2c 09 4d 41 58 5f 50 41 |MaxChars|,.MAX_PA|
|000211e0| 53 53 5f 4c 45 4e 47 54 | 48 2c 0a 09 09 09 09 09 |SS_LENGT|H,......|
|000211f0| 09 09 47 54 53 54 5f 45 | 64 69 74 48 6f 6f 6b 2c |..GTST_E|ditHook,|
|00021200| 09 28 62 33 32 29 26 70 | 61 73 73 5f 68 6f 6f 6b |.(b32)&p|ass_hook|
|00021210| 2c 0a 09 09 09 09 09 09 | 09 54 41 47 5f 45 4e 44 |,.......|.TAG_END|
|00021220| 0a 09 09 09 09 09 09 29 | 3b 0a 09 09 09 09 09 09 |.......)|;.......|
|00021230| 0a 09 09 09 09 09 09 69 | 66 20 28 67 61 64 29 20 |.......i|f (gad) |
|00021240| 7b 0a 09 09 09 09 09 09 | 09 6c 6f 67 69 6e 20 3d |{.......|.login =|
|00021250| 20 6d 61 6b 65 5f 67 61 | 64 67 65 74 28 6c 6f 67 | make_ga|dget(log|
|00021260| 69 6e 5f 67 69 6d 29 3b | 0a 09 09 09 09 09 09 09 |in_gim);|........|
|00021270| 69 66 20 28 6c 6f 67 69 | 6e 29 20 7b 0a 09 09 09 |if (logi|n) {....|
|00021280| 09 09 09 09 09 63 61 6e | 63 65 6c 20 3d 20 6d 61 |.....can|cel = ma|
|00021290| 6b 65 5f 67 61 64 67 65 | 74 28 63 61 6e 63 65 6c |ke_gadge|t(cancel|
|000212a0| 5f 67 69 6d 29 3b 0a 09 | 09 09 09 09 09 09 09 69 |_gim);..|.......i|
|000212b0| 66 20 28 63 61 6e 63 65 | 6c 29 20 7b 0a 09 09 09 |f (cance|l) {....|
|000212c0| 09 09 09 09 09 09 6c 6f | 67 69 6e 2d 3e 4c 65 66 |......lo|gin->Lef|
|000212d0| 74 45 64 67 65 20 3d 20 | 66 68 65 69 67 68 74 20 |tEdge = |fheight |
|000212e0| 2f 20 32 20 2b 20 77 2d | 3e 42 6f 72 64 65 72 4c |/ 2 + w-|>BorderL|
|000212f0| 65 66 74 3b 0a 09 09 09 | 09 09 09 09 09 09 6c 6f |eft;....|......lo|
|00021300| 67 69 6e 2d 3e 54 6f 70 | 45 64 67 65 20 3d 20 77 |gin->Top|Edge = w|
|00021310| 2d 3e 48 65 69 67 68 74 | 20 2d 20 77 2d 3e 42 6f |->Height| - w->Bo|
|00021320| 72 64 65 72 42 6f 74 74 | 6f 6d 20 2d 20 6c 6f 67 |rderBott|om - log|
|00021330| 69 6e 2d 3e 48 65 69 67 | 68 74 20 2d 20 66 68 65 |in->Heig|ht - fhe|
|00021340| 69 67 68 74 20 2f 20 32 | 3b 0a 09 09 09 09 09 09 |ight / 2|;.......|
|00021350| 09 09 09 0a 09 09 09 09 | 09 09 09 09 09 63 61 6e |........|.....can|
|00021360| 63 65 6c 2d 3e 4c 65 66 | 74 45 64 67 65 20 3d 20 |cel->Lef|tEdge = |
|00021370| 77 2d 3e 57 69 64 74 68 | 20 2d 20 77 2d 3e 42 6f |w->Width| - w->Bo|
|00021380| 72 64 65 72 52 69 67 68 | 74 20 2d 20 63 61 6e 63 |rderRigh|t - canc|
|00021390| 65 6c 2d 3e 57 69 64 74 | 68 20 2d 20 66 68 65 69 |el->Widt|h - fhei|
|000213a0| 67 68 74 20 2f 20 32 3b | 0a 09 09 09 09 09 09 09 |ght / 2;|........|
|000213b0| 09 09 63 61 6e 63 65 6c | 2d 3e 54 6f 70 45 64 67 |..cancel|->TopEdg|
|000213c0| 65 20 3d 20 6c 6f 67 69 | 6e 2d 3e 54 6f 70 45 64 |e = logi|n->TopEd|
|000213d0| 67 65 3b 0a 09 09 09 09 | 09 09 09 09 09 0a 09 09 |ge;.....|........|
|000213e0| 09 09 09 09 09 09 09 6c | 6f 67 69 6e 2d 3e 47 61 |.......l|ogin->Ga|
|000213f0| 64 67 65 74 49 44 20 3d | 20 33 3b 0a 09 09 09 09 |dgetID =| 3;.....|
|00021400| 09 09 09 09 09 63 61 6e | 63 65 6c 2d 3e 47 61 64 |.....can|cel->Gad|
|00021410| 67 65 74 49 44 20 3d 20 | 34 3b 0a 09 09 09 09 09 |getID = |4;......|
|00021420| 09 09 09 09 0a 09 09 09 | 09 09 09 09 09 09 41 64 |........|......Ad|
|00021430| 64 47 61 64 67 65 74 28 | 77 2c 20 63 61 6e 63 65 |dGadget(|w, cance|
|00021440| 6c 2c 20 31 30 30 29 3b | 0a 09 09 09 09 09 09 09 |l, 100);|........|
|00021450| 09 09 41 64 64 47 61 64 | 67 65 74 28 77 2c 20 6c |..AddGad|get(w, l|
|00021460| 6f 67 69 6e 2c 20 31 30 | 30 29 3b 0a 09 09 09 09 |ogin, 10|0);.....|
|00021470| 09 09 09 0a 09 09 09 09 | 09 09 09 09 09 41 64 64 |........|.....Add|
|00021480| 47 4c 69 73 74 28 77 2c | 20 67 6c 69 73 74 2c 20 |GList(w,| glist, |
|00021490| 30 2c 20 31 30 30 2c 20 | 6e 69 6c 29 3b 0a 09 09 |0, 100, |nil);...|
|000214a0| 09 09 09 09 09 09 09 0a | 09 09 09 09 09 09 09 09 |........|........|
|000214b0| 09 52 65 66 72 65 73 68 | 47 61 64 67 65 74 73 28 |.Refresh|Gadgets(|
|000214c0| 67 6c 69 73 74 2c 20 77 | 2c 20 6e 69 6c 29 3b 0a |glist, w|, nil);.|
|000214d0| 09 09 09 09 09 09 09 09 | 09 47 54 5f 52 65 66 72 |........|.GT_Refr|
|000214e0| 65 73 68 57 69 6e 64 6f | 77 28 77 2c 20 6e 69 6c |eshWindo|w(w, nil|
|000214f0| 29 3b 0a 09 09 09 09 09 | 09 09 0a 09 09 09 09 09 |);......|........|
|00021500| 09 09 09 09 67 6f 74 6f | 20 6c 69 73 74 65 6e 3b |....goto| listen;|
|00021510| 0a 09 09 09 09 09 09 09 | 09 7d 0a 09 09 09 09 09 |........|.}......|
|00021520| 09 09 09 66 72 65 65 5f | 67 61 64 67 65 74 28 6c |...free_|gadget(l|
|00021530| 6f 67 69 6e 29 3b 0a 09 | 09 09 09 09 09 09 7d 0a |ogin);..|......}.|
|00021540| 09 09 09 09 09 09 7d 0a | 09 09 09 09 09 09 0a 09 |......}.|........|
|00021550| 09 09 09 09 09 46 72 65 | 65 47 61 64 67 65 74 73 |.....Fre|eGadgets|
|00021560| 28 67 6c 69 73 74 29 3b | 0a 09 09 09 09 09 7d 0a |(glist);|......}.|
|00021570| 09 09 09 09 09 43 6c 6f | 73 65 57 69 6e 64 6f 77 |.....Clo|seWindow|
|00021580| 28 77 29 3b 0a 09 09 09 | 09 7d 0a 09 09 09 7d 0a |(w);....|.}....}.|
|00021590| 09 09 7d 0a 09 09 46 72 | 65 65 56 69 73 75 61 6c |..}...Fr|eeVisual|
|000215a0| 49 6e 66 6f 28 76 69 29 | 3b 0a 09 7d 0a 09 0a 09 |Info(vi)|;..}....|
|000215b0| 55 6e 6c 6f 63 6b 50 75 | 62 53 63 72 65 65 6e 28 |UnlockPu|bScreen(|
|000215c0| 6e 69 6c 2c 20 73 29 3b | 0a 09 0a 09 72 65 74 75 |nil, s);|....retu|
|000215d0| 72 6e 20 66 61 6c 73 65 | 3b 0a 0a 6c 69 73 74 65 |rn false|;..liste|
|000215e0| 6e 3a 0a 09 63 73 69 67 | 20 3d 20 31 20 3c 3c 20 |n:..csig| = 1 << |
|000215f0| 63 61 6e 77 2d 3e 55 73 | 65 72 50 6f 72 74 2d 3e |canw->Us|erPort->|
|00021600| 6d 70 5f 53 69 67 42 69 | 74 20 7c 20 73 70 2d 3e |mp_SigBi|t | sp->|
|00021610| 61 62 6f 72 74 5f 73 69 | 67 6e 61 6c 73 20 7c 20 |abort_si|gnals | |
|00021620| 73 70 2d 3e 64 69 73 63 | 6f 6e 6e 65 63 74 5f 73 |sp->disc|onnect_s|
|00021630| 69 67 6e 61 6c 73 3b 0a | 09 73 69 67 6e 61 6c 73 |ignals;.|.signals|
|00021640| 20 3d 20 28 31 20 3c 3c | 20 77 2d 3e 55 73 65 72 | = (1 <<| w->User|
|00021650| 50 6f 72 74 2d 3e 6d 70 | 5f 53 69 67 42 69 74 29 |Port->mp|_SigBit)|
|00021660| 20 7c 20 63 73 69 67 3b | 0a 0a 09 77 68 69 6c 65 | | csig;|...while|
|00021670| 20 28 31 29 20 7b 0a 09 | 09 69 66 20 28 57 61 69 | (1) {..|.if (Wai|
|00021680| 74 28 73 69 67 6e 61 6c | 73 29 20 26 20 63 73 69 |t(signal|s) & csi|
|00021690| 67 29 20 7b 0a 09 09 09 | 43 6c 6f 73 65 57 69 6e |g) {....|CloseWin|
|000216a0| 64 6f 77 28 77 29 3b 0a | 0a 09 09 09 46 72 65 65 |dow(w);.|....Free|
|000216b0| 47 61 64 67 65 74 73 28 | 67 6c 69 73 74 29 3b 0a |Gadgets(|glist);.|
|000216c0| 0a 09 09 09 66 72 65 65 | 5f 67 61 64 67 65 74 28 |....free|_gadget(|
|000216d0| 63 61 6e 63 65 6c 29 3b | 0a 09 09 09 66 72 65 65 |cancel);|....free|
|000216e0| 5f 67 61 64 67 65 74 28 | 6c 6f 67 69 6e 29 3b 0a |_gadget(|login);.|
|000216f0| 0a 09 09 09 46 72 65 65 | 56 69 73 75 61 6c 49 6e |....Free|VisualIn|
|00021700| 66 6f 28 76 69 29 3b 0a | 09 09 09 55 6e 6c 6f 63 |fo(vi);.|...Unloc|
|00021710| 6b 50 75 62 53 63 72 65 | 65 6e 28 6e 69 6c 2c 20 |kPubScre|en(nil, |
|00021720| 73 29 3b 0a 09 09 09 09 | 09 09 09 0a 09 09 09 72 |s);.....|.......r|
|00021730| 65 74 75 72 6e 20 66 61 | 6c 73 65 3b 0a 09 09 7d |eturn fa|lse;...}|
|00021740| 0a 09 09 0a 09 09 77 68 | 69 6c 65 20 28 69 6d 20 |......wh|ile (im |
|00021750| 3d 20 47 54 5f 47 65 74 | 49 4d 73 67 28 77 2d 3e |= GT_Get|IMsg(w->|
|00021760| 55 73 65 72 50 6f 72 74 | 29 29 20 7b 0a 09 09 09 |UserPort|)) {....|
|00021770| 67 61 64 20 3d 20 28 73 | 74 72 75 63 74 20 47 61 |gad = (s|truct Ga|
|00021780| 64 67 65 74 20 2a 29 69 | 6d 2d 3e 49 41 64 64 72 |dget *)i|m->IAddr|
|00021790| 65 73 73 3b 0a 09 09 09 | 0a 09 09 09 73 77 69 74 |ess;....|....swit|
|000217a0| 63 68 20 28 69 6d 2d 3e | 43 6c 61 73 73 29 20 7b |ch (im->|Class) {|
|000217b0| 0a 09 09 09 63 61 73 65 | 20 49 44 43 4d 50 5f 41 |....case| IDCMP_A|
|000217c0| 43 54 49 56 45 57 49 4e | 44 4f 57 3a 0a 09 09 09 |CTIVEWIN|DOW:....|
|000217d0| 09 69 66 20 28 73 70 2d | 3e 6e 65 65 64 73 5f 75 |.if (sp-|>needs_u|
|000217e0| 73 65 72 29 20 7b 0a 09 | 09 09 09 09 41 63 74 69 |ser) {..|....Acti|
|000217f0| 76 61 74 65 47 61 64 67 | 65 74 28 75 73 65 72 67 |vateGadg|et(userg|
|00021800| 2c 20 77 2c 20 6e 69 6c | 29 3b 0a 09 09 09 09 7d |, w, nil|);.....}|
|00021810| 20 65 6c 73 65 20 7b 0a | 09 09 09 09 09 41 63 74 | else {.|.....Act|
|00021820| 69 76 61 74 65 47 61 64 | 67 65 74 28 70 61 73 73 |ivateGad|get(pass|
|00021830| 67 2c 20 77 2c 20 6e 69 | 6c 29 3b 0a 09 09 09 09 |g, w, ni|l);.....|
|00021840| 7d 0a 09 09 09 09 62 72 | 65 61 6b 3b 0a 09 09 09 |}.....br|eak;....|
|00021850| 63 61 73 65 20 49 44 43 | 4d 50 5f 47 41 44 47 45 |case IDC|MP_GADGE|
|00021860| 54 55 50 3a 0a 09 09 09 | 09 73 77 69 74 63 68 20 |TUP:....|.switch |
|00021870| 28 67 61 64 2d 3e 47 61 | 64 67 65 74 49 44 29 20 |(gad->Ga|dgetID) |
|00021880| 7b 0a 09 09 09 09 63 61 | 73 65 20 31 3a 0a 09 09 |{.....ca|se 1:...|
|00021890| 09 09 09 69 66 20 28 69 | 6d 2d 3e 43 6f 64 65 20 |...if (i|m->Code |
|000218a0| 3d 3d 20 30 29 20 7b 0a | 09 09 09 09 09 09 41 63 |== 0) {.|......Ac|
|000218b0| 74 69 76 61 74 65 47 61 | 64 67 65 74 28 70 61 73 |tivateGa|dget(pas|
|000218c0| 73 67 2c 20 77 2c 20 6e | 69 6c 29 3b 0a 09 09 09 |sg, w, n|il);....|
|000218d0| 09 09 7d 0a 09 09 09 09 | 09 73 70 2d 3e 6e 65 65 |..}.....|.sp->nee|
|000218e0| 64 73 5f 75 73 65 72 20 | 3d 20 66 61 6c 73 65 3b |ds_user |= false;|
|000218f0| 0a 09 09 09 09 09 62 72 | 65 61 6b 3b 0a 09 09 09 |......br|eak;....|
|00021900| 09 63 61 73 65 20 32 3a | 0a 09 09 09 09 09 69 66 |.case 2:|......if|
|00021910| 20 28 69 6d 2d 3e 43 6f | 64 65 20 21 3d 20 30 29 | (im->Co|de != 0)|
|00021920| 20 7b 0a 09 09 09 09 09 | 09 62 72 65 61 6b 3b 0a | {......|.break;.|
|00021930| 09 09 09 09 09 7d 0a 09 | 09 09 09 09 2f 2a 20 65 |.....}..|..../* e|
|00021940| 6c 73 65 20 66 61 6c 6c | 20 74 68 72 6f 75 67 68 |lse fall| through|
|00021950| 20 74 6f 20 4c 6f 67 69 | 6e 20 2a 2f 0a 09 09 09 | to Logi|n */....|
|00021960| 09 63 61 73 65 20 33 3a | 0a 09 09 09 09 09 69 66 |.case 3:|......if|
|00021970| 20 28 73 70 2d 3e 75 73 | 65 72 29 20 64 65 61 6c | (sp->us|er) deal|
|00021980| 6c 6f 63 61 74 65 28 73 | 70 2d 3e 75 73 65 72 2c |locate(s|p->user,|
|00021990| 20 56 5f 63 73 74 72 29 | 3b 0a 09 09 09 09 09 69 | V_cstr)|;......i|
|000219a0| 66 20 28 73 70 2d 3e 70 | 61 73 73 77 6f 72 64 29 |f (sp->p|assword)|
|000219b0| 20 64 65 61 6c 6c 6f 63 | 61 74 65 28 73 70 2d 3e | dealloc|ate(sp->|
|000219c0| 70 61 73 73 77 6f 72 64 | 2c 20 56 5f 63 73 74 72 |password|, V_cstr|
|000219d0| 29 3b 0a 09 09 09 09 09 | 0a 09 09 09 09 09 7a 20 |);......|......z |
|000219e0| 3d 20 28 28 73 74 72 75 | 63 74 20 53 74 72 69 6e |= ((stru|ct Strin|
|000219f0| 67 49 6e 66 6f 20 2a 29 | 75 73 65 72 67 2d 3e 53 |gInfo *)|userg->S|
|00021a00| 70 65 63 69 61 6c 49 6e | 66 6f 29 2d 3e 42 75 66 |pecialIn|fo)->Buf|
|00021a10| 66 65 72 3b 0a 09 09 09 | 09 09 69 66 20 28 7a 5b |fer;....|..if (z[|
|00021a20| 30 5d 20 21 3d 20 27 5c | 30 27 29 20 7b 0a 09 09 |0] != '\|0') {...|
|00021a30| 09 09 09 09 73 70 2d 3e | 75 73 65 72 20 3d 20 28 |....sp->|user = (|
|00021a40| 62 38 20 2a 29 61 6c 6c | 6f 63 61 74 65 28 73 74 |b8 *)all|ocate(st|
|00021a50| 72 6c 65 6e 28 7a 29 20 | 2b 20 31 2c 20 56 5f 63 |rlen(z) |+ 1, V_c|
|00021a60| 73 74 72 29 3b 0a 09 09 | 09 09 09 09 69 66 20 28 |str);...|....if (|
|00021a70| 73 70 2d 3e 75 73 65 72 | 29 20 7b 0a 09 09 09 09 |sp->user|) {.....|
|00021a80| 09 09 09 73 74 72 63 70 | 79 28 73 70 2d 3e 75 73 |...strcp|y(sp->us|
|00021a90| 65 72 2c 20 7a 29 3b 0a | 09 09 09 09 09 09 7d 0a |er, z);.|......}.|
|00021aa0| 09 09 09 09 09 7d 20 65 | 6c 73 65 20 7b 0a 09 09 |.....} e|lse {...|
|00021ab0| 09 09 09 09 73 70 2d 3e | 75 73 65 72 20 3d 20 6e |....sp->|user = n|
|00021ac0| 69 6c 3b 0a 09 09 09 09 | 09 7d 0a 09 09 09 09 09 |il;.....|.}......|
|00021ad0| 0a 09 09 09 09 09 7a 20 | 3d 20 70 68 64 2e 70 61 |......z |= phd.pa|
|00021ae0| 73 73 77 6f 72 64 3b 0a | 09 09 09 09 09 69 66 20 |ssword;.|.....if |
|00021af0| 28 7a 5b 30 5d 20 21 3d | 20 27 5c 30 27 29 20 7b |(z[0] !=| '\0') {|
|00021b00| 0a 09 09 09 09 09 09 73 | 70 2d 3e 70 61 73 73 77 |.......s|p->passw|
|00021b10| 6f 72 64 20 3d 20 28 62 | 38 20 2a 29 61 6c 6c 6f |ord = (b|8 *)allo|
|00021b20| 63 61 74 65 28 73 74 72 | 6c 65 6e 28 7a 29 20 2b |cate(str|len(z) +|
|00021b30| 20 31 2c 20 56 5f 63 73 | 74 72 29 3b 0a 09 09 09 | 1, V_cs|tr);....|
|00021b40| 09 09 09 69 66 20 28 73 | 70 2d 3e 70 61 73 73 77 |...if (s|p->passw|
|00021b50| 6f 72 64 29 20 7b 0a 09 | 09 09 09 09 09 09 73 74 |ord) {..|......st|
|00021b60| 72 63 70 79 28 73 70 2d | 3e 70 61 73 73 77 6f 72 |rcpy(sp-|>passwor|
|00021b70| 64 2c 20 7a 29 3b 0a 09 | 09 09 09 09 09 7d 0a 09 |d, z);..|.....}..|
|00021b80| 09 09 09 09 7d 20 65 6c | 73 65 20 7b 0a 09 09 09 |....} el|se {....|
|00021b90| 09 09 09 73 70 2d 3e 70 | 61 73 73 77 6f 72 64 20 |...sp->p|assword |
|00021ba0| 3d 20 6e 69 6c 3b 0a 09 | 09 09 09 09 7d 0a 09 09 |= nil;..|....}...|
|00021bb0| 09 09 09 0a 09 09 09 09 | 09 46 6f 72 62 69 64 28 |........|.Forbid(|
|00021bc0| 29 3b 0a 09 09 09 09 09 | 47 54 5f 52 65 70 6c 79 |);......|GT_Reply|
|00021bd0| 49 4d 73 67 28 69 6d 29 | 3b 0a 09 09 09 09 09 0a |IMsg(im)|;.......|
|00021be0| 09 09 09 09 09 43 6c 6f | 73 65 57 69 6e 64 6f 77 |.....Clo|seWindow|
|00021bf0| 28 77 29 3b 0a 09 09 09 | 09 09 50 65 72 6d 69 74 |(w);....|..Permit|
|00021c00| 28 29 3b 0a 09 09 09 09 | 09 0a 09 09 09 09 09 46 |();.....|.......F|
|00021c10| 72 65 65 47 61 64 67 65 | 74 73 28 67 6c 69 73 74 |reeGadge|ts(glist|
|00021c20| 29 3b 0a 09 09 09 09 09 | 66 72 65 65 5f 67 61 64 |);......|free_gad|
|00021c30| 67 65 74 28 63 61 6e 63 | 65 6c 29 3b 0a 09 09 09 |get(canc|el);....|
|00021c40| 09 09 66 72 65 65 5f 67 | 61 64 67 65 74 28 6c 6f |..free_g|adget(lo|
|00021c50| 67 69 6e 29 3b 0a 0a 09 | 09 09 09 09 46 72 65 65 |gin);...|....Free|
|00021c60| 56 69 73 75 61 6c 49 6e | 66 6f 28 76 69 29 3b 0a |VisualIn|fo(vi);.|
|00021c70| 09 09 09 09 09 55 6e 6c | 6f 63 6b 50 75 62 53 63 |.....Unl|ockPubSc|
|00021c80| 72 65 65 6e 28 6e 69 6c | 2c 20 73 29 3b 0a 09 09 |reen(nil|, s);...|
|00021c90| 09 09 09 09 09 0a 09 09 | 09 09 09 72 65 74 75 72 |........|...retur|
|00021ca0| 6e 20 74 72 75 65 3b 0a | 09 09 09 09 63 61 73 65 |n true;.|....case|
|00021cb0| 20 34 3a 0a 09 09 09 09 | 09 46 6f 72 62 69 64 28 | 4:.....|.Forbid(|
|00021cc0| 29 3b 0a 09 09 09 09 09 | 47 54 5f 52 65 70 6c 79 |);......|GT_Reply|
|00021cd0| 49 4d 73 67 28 69 6d 29 | 3b 0a 09 09 09 09 09 0a |IMsg(im)|;.......|
|00021ce0| 09 09 09 09 09 43 6c 6f | 73 65 57 69 6e 64 6f 77 |.....Clo|seWindow|
|00021cf0| 28 77 29 3b 0a 09 09 09 | 09 09 50 65 72 6d 69 74 |(w);....|..Permit|
|00021d00| 28 29 3b 0a 09 09 09 09 | 09 0a 09 09 09 09 09 46 |();.....|.......F|
|00021d10| 72 65 65 47 61 64 67 65 | 74 73 28 67 6c 69 73 74 |reeGadge|ts(glist|
|00021d20| 29 3b 0a 09 09 09 09 09 | 0a 09 09 09 09 09 66 72 |);......|......fr|
|00021d30| 65 65 5f 67 61 64 67 65 | 74 28 63 61 6e 63 65 6c |ee_gadge|t(cancel|
|00021d40| 29 3b 0a 09 09 09 09 09 | 66 72 65 65 5f 67 61 64 |);......|free_gad|
|00021d50| 67 65 74 28 6c 6f 67 69 | 6e 29 3b 0a 0a 09 09 09 |get(logi|n);.....|
|00021d60| 09 09 46 72 65 65 56 69 | 73 75 61 6c 49 6e 66 6f |..FreeVi|sualInfo|
|00021d70| 28 76 69 29 3b 0a 09 09 | 09 09 09 55 6e 6c 6f 63 |(vi);...|...Unloc|
|00021d80| 6b 50 75 62 53 63 72 65 | 65 6e 28 6e 69 6c 2c 20 |kPubScre|en(nil, |
|00021d90| 73 29 3b 0a 09 09 09 09 | 09 09 09 0a 09 09 09 09 |s);.....|........|
|00021da0| 09 72 65 74 75 72 6e 20 | 66 61 6c 73 65 3b 0a 09 |.return |false;..|
|00021db0| 09 09 09 7d 0a 09 09 09 | 09 62 72 65 61 6b 3b 0a |...}....|.break;.|
|00021dc0| 09 09 09 63 61 73 65 20 | 49 44 43 4d 50 5f 52 45 |...case |IDCMP_RE|
|00021dd0| 46 52 45 53 48 57 49 4e | 44 4f 57 3a 0a 09 09 09 |FRESHWIN|DOW:....|
|00021de0| 09 47 54 5f 42 65 67 69 | 6e 52 65 66 72 65 73 68 |.GT_Begi|nRefresh|
|00021df0| 28 77 29 3b 0a 09 09 09 | 09 47 54 5f 45 6e 64 52 |(w);....|.GT_EndR|
|00021e00| 65 66 72 65 73 68 28 77 | 2c 20 74 72 75 65 29 3b |efresh(w|, true);|
|00021e10| 0a 09 09 09 09 62 72 65 | 61 6b 3b 0a 09 09 09 7d |.....bre|ak;....}|
|00021e20| 0a 09 09 09 0a 09 09 09 | 47 54 5f 52 65 70 6c 79 |........|GT_Reply|
|00021e30| 49 4d 73 67 28 69 6d 29 | 3b 0a 09 09 7d 0a 09 7d |IMsg(im)|;...}..}|
|00021e40| 0a 7d 0a 0a 73 74 72 75 | 63 74 20 57 69 6e 64 6f |.}..stru|ct Windo|
|00021e50| 77 20 2a 6f 70 65 6e 5f | 6d 61 69 6e 5f 77 69 6e |w *open_|main_win|
|00021e60| 64 6f 77 28 73 74 72 75 | 63 74 20 4c 69 73 74 20 |dow(stru|ct List |
|00021e70| 2a 73 69 74 65 5f 6c 61 | 62 65 6c 73 2c 20 73 74 |*site_la|bels, st|
|00021e80| 72 75 63 74 20 49 6e 74 | 75 69 74 69 6f 6e 42 61 |ruct Int|uitionBa|
|00021e90| 73 65 20 2a 49 6e 74 75 | 69 74 69 6f 6e 42 61 73 |se *Intu|itionBas|
|00021ea0| 65 2c 20 73 74 72 75 63 | 74 20 4c 69 62 72 61 72 |e, struc|t Librar|
|00021eb0| 79 20 2a 47 61 64 54 6f | 6f 6c 73 42 61 73 65 2c |y *GadTo|olsBase,|
|00021ec0| 20 73 74 72 75 63 74 20 | 47 66 78 42 61 73 65 20 | struct |GfxBase |
|00021ed0| 2a 47 66 78 42 61 73 65 | 29 0a 7b 0a 09 73 74 72 |*GfxBase|).{..str|
|00021ee0| 75 63 74 20 47 61 64 67 | 65 74 20 2a 67 6c 69 73 |uct Gadg|et *glis|
|00021ef0| 74 2c 20 2a 67 61 64 3b | 0a 09 73 74 72 75 63 74 |t, *gad;|..struct|
|00021f00| 20 4e 65 77 47 61 64 67 | 65 74 20 6e 67 3b 0a 09 | NewGadg|et ng;..|
|00021f10| 73 74 72 75 63 74 20 53 | 63 72 65 65 6e 20 2a 73 |struct S|creen *s|
|00021f20| 3b 0a 09 76 6f 69 64 20 | 2a 76 69 3b 0a 09 62 33 |;..void |*vi;..b3|
|00021f30| 32 20 73 63 72 65 65 6e | 5f 6d 6f 64 65 49 44 3b |2 screen|_modeID;|
|00021f40| 0a 09 73 74 72 75 63 74 | 20 52 65 63 74 61 6e 67 |..struct| Rectang|
|00021f50| 6c 65 20 72 65 63 74 3b | 0a 09 73 74 72 75 63 74 |le rect;|..struct|
|00021f60| 20 57 69 6e 64 6f 77 20 | 2a 77 3b 0a 09 73 62 33 | Window |*w;..sb3|
|00021f70| 32 20 73 77 69 64 74 68 | 2c 20 73 68 65 69 67 68 |2 swidth|, sheigh|
|00021f80| 74 3b 0a 09 0a 09 67 6c | 69 73 74 20 3d 20 6e 69 |t;....gl|ist = ni|
|00021f90| 6c 3b 0a 09 0a 09 73 20 | 3d 20 4c 6f 63 6b 50 75 |l;....s |= LockPu|
|00021fa0| 62 53 63 72 65 65 6e 28 | 6e 69 6c 29 3b 0a 09 69 |bScreen(|nil);..i|
|00021fb0| 66 20 28 21 73 29 20 72 | 65 74 75 72 6e 20 6e 69 |f (!s) r|eturn ni|
|00021fc0| 6c 3b 0a 09 0a 09 76 69 | 20 3d 20 47 65 74 56 69 |l;....vi| = GetVi|
|00021fd0| 73 75 61 6c 49 6e 66 6f | 28 73 2c 20 54 41 47 5f |sualInfo|(s, TAG_|
|00021fe0| 45 4e 44 29 3b 0a 09 69 | 66 20 28 76 69 20 21 3d |END);..i|f (vi !=|
|00021ff0| 20 6e 69 6c 29 20 7b 0a | 09 09 73 63 72 65 65 6e | nil) {.|..screen|
|00022000| 5f 6d 6f 64 65 49 44 20 | 3d 20 47 65 74 56 50 4d |_modeID |= GetVPM|
|00022010| 6f 64 65 49 44 28 26 73 | 2d 3e 56 69 65 77 50 6f |odeID(&s|->ViewPo|
|00022020| 72 74 29 3b 0a 09 09 69 | 66 20 28 73 63 72 65 65 |rt);...i|f (scree|
|00022030| 6e 5f 6d 6f 64 65 49 44 | 20 21 3d 20 49 4e 56 41 |n_modeID| != INVA|
|00022040| 4c 49 44 5f 49 44 29 20 | 7b 0a 09 09 09 69 66 20 |LID_ID) |{....if |
|00022050| 28 51 75 65 72 79 4f 76 | 65 72 73 63 61 6e 28 73 |(QueryOv|erscan(s|
|00022060| 63 72 65 65 6e 5f 6d 6f | 64 65 49 44 2c 20 26 72 |creen_mo|deID, &r|
|00022070| 65 63 74 2c 20 4f 53 43 | 41 4e 5f 54 45 58 54 29 |ect, OSC|AN_TEXT)|
|00022080| 29 20 7b 0a 09 09 09 09 | 73 77 69 64 74 68 20 3d |) {.....|swidth =|
|00022090| 20 72 65 63 74 2e 4d 61 | 78 58 20 2d 20 72 65 63 | rect.Ma|xX - rec|
|000220a0| 74 2e 4d 69 6e 58 20 2b | 20 31 3b 0a 09 09 09 09 |t.MinX +| 1;.....|
|000220b0| 73 68 65 69 67 68 74 20 | 3d 20 72 65 63 74 2e 4d |sheight |= rect.M|
|000220c0| 61 78 59 20 2d 20 72 65 | 63 74 2e 4d 69 6e 59 20 |axY - re|ct.MinY |
|000220d0| 2b 20 31 3b 0a 09 09 09 | 09 0a 09 09 09 09 77 20 |+ 1;....|......w |
|000220e0| 3d 20 4f 70 65 6e 57 69 | 6e 64 6f 77 54 61 67 73 |= OpenWi|ndowTags|
|000220f0| 28 6e 69 6c 2c 0a 09 09 | 09 09 09 57 41 5f 4c 65 |(nil,...|...WA_Le|
|00022100| 66 74 2c 09 73 77 69 64 | 74 68 20 2f 20 33 20 2d |ft,.swid|th / 3 -|
|00022110| 20 73 2d 3e 4c 65 66 74 | 45 64 67 65 2c 0a 09 09 | s->Left|Edge,...|
|00022120| 09 09 09 57 41 5f 54 6f | 70 2c 09 09 73 68 65 69 |...WA_To|p,..shei|
|00022130| 67 68 74 20 2f 20 34 20 | 2d 20 73 2d 3e 54 6f 70 |ght / 4 |- s->Top|
|00022140| 45 64 67 65 2c 0a 09 09 | 09 09 09 57 41 5f 57 69 |Edge,...|...WA_Wi|
|00022150| 64 74 68 2c 09 73 77 69 | 64 74 68 20 2f 20 33 2c |dth,.swi|dth / 3,|
|00022160| 0a 09 09 09 09 09 57 41 | 5f 48 65 69 67 68 74 2c |......WA|_Height,|
|00022170| 09 73 68 65 69 67 68 74 | 20 2f 20 32 2c 0a 09 09 |.sheight| / 2,...|
|00022180| 09 09 09 57 41 5f 49 44 | 43 4d 50 2c 09 49 44 43 |...WA_ID|CMP,.IDC|
|00022190| 4d 50 5f 43 4c 4f 53 45 | 57 49 4e 44 4f 57 20 7c |MP_CLOSE|WINDOW ||
|000221a0| 20 49 44 43 4d 50 5f 52 | 45 46 52 45 53 48 57 49 | IDCMP_R|EFRESHWI|
|000221b0| 4e 44 4f 57 20 7c 20 4c | 49 53 54 56 49 45 57 49 |NDOW | L|ISTVIEWI|
|000221c0| 44 43 4d 50 2c 0a 09 09 | 09 09 09 57 41 5f 50 75 |DCMP,...|...WA_Pu|
|000221d0| 62 53 63 72 65 65 6e 2c | 09 73 2c 0a 09 09 09 09 |bScreen,|.s,.....|
|000221e0| 09 57 41 5f 41 63 74 69 | 76 61 74 65 2c 09 74 72 |.WA_Acti|vate,.tr|
|000221f0| 75 65 2c 0a 09 09 09 09 | 09 57 41 5f 44 72 61 67 |ue,.....|.WA_Drag|
|00022200| 42 61 72 2c 09 74 72 75 | 65 2c 0a 09 09 09 09 09 |Bar,.tru|e,......|
|00022210| 57 41 5f 44 65 70 74 68 | 47 61 64 67 65 74 2c 09 |WA_Depth|Gadget,.|
|00022220| 74 72 75 65 2c 0a 09 09 | 09 09 09 57 41 5f 43 6c |true,...|...WA_Cl|
|00022230| 6f 73 65 47 61 64 67 65 | 74 2c 09 74 72 75 65 2c |oseGadge|t,.true,|
|00022240| 0a 09 09 09 09 09 57 41 | 5f 54 69 74 6c 65 2c 09 |......WA|_Title,.|
|00022250| 73 74 72 69 6e 67 73 5b | 4d 53 47 5f 43 55 52 52 |strings[|MSG_CURR|
|00022260| 45 4e 54 5f 53 49 54 45 | 53 5d 2c 0a 09 09 09 09 |ENT_SITE|S],.....|
|00022270| 09 57 41 5f 41 75 74 6f | 41 64 6a 75 73 74 2c 09 |.WA_Auto|Adjust,.|
|00022280| 74 72 75 65 2c 0a 09 09 | 09 09 09 54 41 47 5f 45 |true,...|...TAG_E|
|00022290| 4e 44 0a 09 09 09 09 29 | 3b 0a 09 09 09 09 69 66 |ND.....)|;.....if|
|000222a0| 20 28 77 29 20 7b 0a 09 | 09 09 09 09 67 61 64 20 | (w) {..|....gad |
|000222b0| 3d 20 43 72 65 61 74 65 | 43 6f 6e 74 65 78 74 28 |= Create|Context(|
|000222c0| 26 67 6c 69 73 74 29 3b | 0a 09 09 09 09 09 69 66 |&glist);|......if|
|000222d0| 20 28 67 61 64 29 20 7b | 0a 09 09 09 09 09 09 6e | (gad) {|.......n|
|000222e0| 67 2e 6e 67 5f 54 65 78 | 74 41 74 74 72 20 3d 20 |g.ng_Tex|tAttr = |
|000222f0| 73 2d 3e 46 6f 6e 74 3b | 0a 09 09 09 09 09 09 6e |s->Font;|.......n|
|00022300| 67 2e 6e 67 5f 56 69 73 | 75 61 6c 49 6e 66 6f 20 |g.ng_Vis|ualInfo |
|00022310| 3d 20 76 69 3b 0a 09 09 | 09 09 09 09 6e 67 2e 6e |= vi;...|....ng.n|
|00022320| 67 5f 4c 65 66 74 45 64 | 67 65 20 3d 20 77 2d 3e |g_LeftEd|ge = w->|
|00022330| 42 6f 72 64 65 72 4c 65 | 66 74 3b 0a 09 09 09 09 |BorderLe|ft;.....|
|00022340| 09 09 6e 67 2e 6e 67 5f | 54 6f 70 45 64 67 65 20 |..ng.ng_|TopEdge |
|00022350| 3d 20 77 2d 3e 42 6f 72 | 64 65 72 54 6f 70 3b 0a |= w->Bor|derTop;.|
|00022360| 09 09 09 09 09 09 6e 67 | 2e 6e 67 5f 57 69 64 74 |......ng|.ng_Widt|
|00022370| 68 20 3d 20 77 2d 3e 57 | 69 64 74 68 20 2d 20 77 |h = w->W|idth - w|
|00022380| 2d 3e 42 6f 72 64 65 72 | 4c 65 66 74 20 2d 20 77 |->Border|Left - w|
|00022390| 2d 3e 42 6f 72 64 65 72 | 52 69 67 68 74 3b 0a 09 |->Border|Right;..|
|000223a0| 09 09 09 09 09 6e 67 2e | 6e 67 5f 48 65 69 67 68 |.....ng.|ng_Heigh|
|000223b0| 74 20 3d 20 77 2d 3e 48 | 65 69 67 68 74 20 2d 20 |t = w->H|eight - |
|000223c0| 77 2d 3e 42 6f 72 64 65 | 72 54 6f 70 20 2d 20 77 |w->Borde|rTop - w|
|000223d0| 2d 3e 42 6f 72 64 65 72 | 42 6f 74 74 6f 6d 3b 0a |->Border|Bottom;.|
|000223e0| 09 09 09 09 09 09 6e 67 | 2e 6e 67 5f 47 61 64 67 |......ng|.ng_Gadg|
|000223f0| 65 74 54 65 78 74 20 3d | 20 6e 69 6c 3b 0a 09 09 |etText =| nil;...|
|00022400| 09 09 09 09 6e 67 2e 6e | 67 5f 47 61 64 67 65 74 |....ng.n|g_Gadget|
|00022410| 49 44 20 3d 20 30 3b 0a | 09 09 09 09 09 09 6e 67 |ID = 0;.|......ng|
|00022420| 2e 6e 67 5f 46 6c 61 67 | 73 20 3d 20 30 3b 0a 09 |.ng_Flag|s = 0;..|
|00022430| 09 09 09 09 09 67 61 64 | 20 3d 20 43 72 65 61 74 |.....gad| = Creat|
|00022440| 65 47 61 64 67 65 74 28 | 4c 49 53 54 56 49 45 57 |eGadget(|LISTVIEW|
|00022450| 5f 4b 49 4e 44 2c 20 67 | 61 64 2c 20 26 6e 67 2c |_KIND, g|ad, &ng,|
|00022460| 20 0a 09 09 09 09 09 09 | 09 47 54 4c 56 5f 52 65 | .......|.GTLV_Re|
|00022470| 61 64 4f 6e 6c 79 2c 09 | 66 61 6c 73 65 2c 20 0a |adOnly,.|false, .|
|00022480| 09 09 09 09 09 09 09 47 | 54 4c 56 5f 4c 61 62 65 |.......G|TLV_Labe|
|00022490| 6c 73 2c 09 73 69 74 65 | 5f 6c 61 62 65 6c 73 2c |ls,.site|_labels,|
|000224a0| 0a 09 09 09 09 09 09 09 | 54 41 47 5f 45 4e 44 0a |........|TAG_END.|
|000224b0| 09 09 09 09 09 09 29 3b | 0a 09 09 09 09 09 09 69 |......);|.......i|
|000224c0| 66 20 28 67 61 64 29 20 | 7b 0a 09 09 09 09 09 09 |f (gad) |{.......|
|000224d0| 09 41 64 64 47 4c 69 73 | 74 28 77 2c 20 67 6c 69 |.AddGLis|t(w, gli|
|000224e0| 73 74 2c 20 30 2c 20 2d | 31 2c 20 6e 69 6c 29 3b |st, 0, -|1, nil);|
|000224f0| 0a 09 09 09 09 09 09 09 | 0a 09 09 09 09 09 09 09 |........|........|
|00022500| 52 65 66 72 65 73 68 47 | 61 64 67 65 74 73 28 67 |RefreshG|adgets(g|
|00022510| 6c 69 73 74 2c 20 77 2c | 20 6e 69 6c 29 3b 0a 09 |list, w,| nil);..|
|00022520| 09 09 09 09 09 09 47 54 | 5f 52 65 66 72 65 73 68 |......GT|_Refresh|
|00022530| 57 69 6e 64 6f 77 28 77 | 2c 20 6e 69 6c 29 3b 0a |Window(w|, nil);.|
|00022540| 09 09 09 09 09 09 09 0a | 09 09 09 09 09 09 09 77 |........|.......w|
|00022550| 2d 3e 55 73 65 72 44 61 | 74 61 20 3d 20 28 76 6f |->UserDa|ta = (vo|
|00022560| 69 64 20 2a 29 67 6c 69 | 73 74 3b 0a 09 09 09 09 |id *)gli|st;.....|
|00022570| 09 09 09 0a 09 09 09 09 | 09 09 09 46 72 65 65 56 |........|...FreeV|
|00022580| 69 73 75 61 6c 49 6e 66 | 6f 28 76 69 29 3b 0a 09 |isualInf|o(vi);..|
|00022590| 09 09 09 09 09 09 55 6e | 6c 6f 63 6b 50 75 62 53 |......Un|lockPubS|
|000225a0| 63 72 65 65 6e 28 6e 69 | 6c 2c 20 73 29 3b 0a 09 |creen(ni|l, s);..|
|000225b0| 09 09 09 09 09 09 0a 09 | 09 09 09 09 09 09 72 65 |........|......re|
|000225c0| 74 75 72 6e 20 77 3b 0a | 09 09 09 09 09 09 7d 0a |turn w;.|......}.|
|000225d0| 09 09 09 09 09 09 46 72 | 65 65 47 61 64 67 65 74 |......Fr|eeGadget|
|000225e0| 73 28 67 6c 69 73 74 29 | 3b 0a 09 09 09 09 09 7d |s(glist)|;......}|
|000225f0| 0a 09 09 09 09 09 43 6c | 6f 73 65 57 69 6e 64 6f |......Cl|oseWindo|
|00022600| 77 28 77 29 3b 0a 09 09 | 09 09 7d 0a 09 09 09 7d |w(w);...|..}....}|
|00022610| 0a 09 09 7d 0a 09 09 46 | 72 65 65 56 69 73 75 61 |...}...F|reeVisua|
|00022620| 6c 49 6e 66 6f 28 76 69 | 29 3b 0a 09 7d 0a 09 0a |lInfo(vi|);..}...|
|00022630| 09 55 6e 6c 6f 63 6b 50 | 75 62 53 63 72 65 65 6e |.UnlockP|ubScreen|
|00022640| 28 6e 69 6c 2c 20 73 29 | 3b 0a 09 0a 09 72 65 74 |(nil, s)|;....ret|
|00022650| 75 72 6e 20 6e 69 6c 3b | 0a 7d 0a 0a 76 6f 69 64 |urn nil;|.}..void|
|00022660| 20 63 6c 6f 73 65 5f 6d | 61 69 6e 5f 77 69 6e 64 | close_m|ain_wind|
|00022670| 6f 77 28 73 74 72 75 63 | 74 20 57 69 6e 64 6f 77 |ow(struc|t Window|
|00022680| 20 2a 77 2c 20 73 74 72 | 75 63 74 20 49 6e 74 75 | *w, str|uct Intu|
|00022690| 69 74 69 6f 6e 42 61 73 | 65 20 2a 49 6e 74 75 69 |itionBas|e *Intui|
|000226a0| 74 69 6f 6e 42 61 73 65 | 2c 20 73 74 72 75 63 74 |tionBase|, struct|
|000226b0| 20 4c 69 62 72 61 72 79 | 20 2a 47 61 64 54 6f 6f | Library| *GadToo|
|000226c0| 6c 73 42 61 73 65 29 0a | 7b 0a 09 73 74 72 75 63 |lsBase).|{..struc|
|000226d0| 74 20 47 61 64 67 65 74 | 20 2a 67 6c 69 73 74 3b |t Gadget| *glist;|
|000226e0| 0a 09 73 74 72 75 63 74 | 20 49 6e 74 75 69 4d 65 |..struct| IntuiMe|
|000226f0| 73 73 61 67 65 20 2a 69 | 6d 3b 0a 09 0a 09 46 6f |ssage *i|m;....Fo|
|00022700| 72 62 69 64 28 29 3b 0a | 09 77 68 69 6c 65 20 28 |rbid();.|.while (|
|00022710| 69 6d 20 3d 20 47 54 5f | 47 65 74 49 4d 73 67 28 |im = GT_|GetIMsg(|
|00022720| 77 2d 3e 55 73 65 72 50 | 6f 72 74 29 29 20 7b 0a |w->UserP|ort)) {.|
|00022730| 09 09 69 66 20 28 69 6d | 2d 3e 43 6c 61 73 73 20 |..if (im|->Class |
|00022740| 3d 3d 20 49 44 43 4d 50 | 5f 52 45 46 52 45 53 48 |== IDCMP|_REFRESH|
|00022750| 57 49 4e 44 4f 57 29 20 | 7b 0a 09 09 09 47 54 5f |WINDOW) |{....GT_|
|00022760| 42 65 67 69 6e 52 65 66 | 72 65 73 68 28 77 29 3b |BeginRef|resh(w);|
|00022770| 0a 09 09 09 47 54 5f 45 | 6e 64 52 65 66 72 65 73 |....GT_E|ndRefres|
|00022780| 68 28 77 2c 20 74 72 75 | 65 29 3b 0a 09 09 7d 0a |h(w, tru|e);...}.|
|00022790| 09 09 47 54 5f 52 65 70 | 6c 79 49 4d 73 67 28 69 |..GT_Rep|lyIMsg(i|
|000227a0| 6d 29 3b 0a 09 7d 0a 09 | 0a 09 67 6c 69 73 74 20 |m);..}..|..glist |
|000227b0| 3d 20 28 73 74 72 75 63 | 74 20 47 61 64 67 65 74 |= (struc|t Gadget|
|000227c0| 20 2a 29 77 2d 3e 55 73 | 65 72 44 61 74 61 3b 0a | *)w->Us|erData;.|
|000227d0| 09 0a 09 43 6c 6f 73 65 | 57 69 6e 64 6f 77 28 77 |...Close|Window(w|
|000227e0| 29 3b 0a 09 46 72 65 65 | 47 61 64 67 65 74 73 28 |);..Free|Gadgets(|
|000227f0| 67 6c 69 73 74 29 3b 0a | 09 50 65 72 6d 69 74 28 |glist);.|.Permit(|
|00022800| 29 3b 0a 7d 0a 0a 23 64 | 65 66 69 6e 65 20 56 5f |);.}..#d|efine V_|
|00022810| 4c 69 73 74 20 31 39 35 | 36 31 0a 23 64 65 66 69 |List 195|61.#defi|
|00022820| 6e 65 20 56 5f 4e 6f 64 | 65 20 32 30 30 37 39 0a |ne V_Nod|e 20079.|
|00022830| 0a 73 74 72 75 63 74 20 | 4c 69 73 74 20 2a 73 69 |.struct |List *si|
|00022840| 74 65 5f 6c 69 73 74 28 | 76 6f 69 64 29 0a 7b 0a |te_list(|void).{.|
|00022850| 09 73 74 72 75 63 74 20 | 4c 69 73 74 20 2a 6c 3b |.struct |List *l;|
|00022860| 0a 09 73 74 72 75 63 74 | 20 4e 6f 64 65 20 2a 6e |..struct| Node *n|
|00022870| 3b 0a 09 73 69 74 65 20 | 2a 73 70 3b 0a 09 0a 09 |;..site |*sp;....|
|00022880| 6c 20 3d 20 28 73 74 72 | 75 63 74 20 4c 69 73 74 |l = (str|uct List|
|00022890| 20 2a 29 61 6c 6c 6f 63 | 61 74 65 28 73 69 7a 65 | *)alloc|ate(size|
|000228a0| 6f 66 28 2a 6c 29 2c 20 | 56 5f 4c 69 73 74 29 3b |of(*l), |V_List);|
|000228b0| 0a 09 69 66 20 28 21 6c | 29 20 72 65 74 75 72 6e |..if (!l|) return|
|000228c0| 20 6c 3b 0a 09 0a 09 4e | 65 77 4c 69 73 74 28 6c | l;....N|ewList(l|
|000228d0| 29 3b 0a 09 0a 09 46 6f | 72 62 69 64 28 29 3b 0a |);....Fo|rbid();.|
|000228e0| 09 73 70 20 3d 20 73 69 | 74 65 73 3b 0a 09 77 68 |.sp = si|tes;..wh|
|000228f0| 69 6c 65 20 28 73 70 29 | 20 7b 0a 09 09 6e 20 3d |ile (sp)| {...n =|
|00022900| 20 28 73 74 72 75 63 74 | 20 4e 6f 64 65 20 2a 29 | (struct| Node *)|
|00022910| 61 6c 6c 6f 63 61 74 65 | 28 73 69 7a 65 6f 66 28 |allocate|(sizeof(|
|00022920| 2a 6e 29 2c 20 56 5f 4e | 6f 64 65 29 3b 0a 09 09 |*n), V_N|ode);...|
|00022930| 69 66 20 28 21 6e 29 20 | 7b 0a 09 09 09 50 65 72 |if (!n) |{....Per|
|00022940| 6d 69 74 28 29 3b 0a 09 | 09 09 72 65 74 75 72 6e |mit();..|..return|
|00022950| 20 6c 3b 0a 09 09 7d 0a | 09 09 0a 09 09 6e 2d 3e | l;...}.|.....n->|
|00022960| 6c 6e 5f 4e 61 6d 65 20 | 3d 20 28 62 38 20 2a 29 |ln_Name |= (b8 *)|
|00022970| 61 6c 6c 6f 63 61 74 65 | 28 73 74 72 6c 65 6e 28 |allocate|(strlen(|
|00022980| 73 70 2d 3e 6e 61 6d 65 | 29 20 2b 20 31 2c 20 56 |sp->name|) + 1, V|
|00022990| 5f 63 73 74 72 29 3b 0a | 09 09 69 66 20 28 21 6e |_cstr);.|..if (!n|
|000229a0| 2d 3e 6c 6e 5f 4e 61 6d | 65 29 20 7b 0a 09 09 09 |->ln_Nam|e) {....|
|000229b0| 50 65 72 6d 69 74 28 29 | 3b 0a 09 09 09 64 65 61 |Permit()|;....dea|
|000229c0| 6c 6c 6f 63 61 74 65 28 | 6e 2c 20 56 5f 4e 6f 64 |llocate(|n, V_Nod|
|000229d0| 65 29 3b 0a 09 09 09 72 | 65 74 75 72 6e 20 6c 3b |e);....r|eturn l;|
|000229e0| 0a 09 09 7d 0a 09 09 0a | 09 09 73 74 72 63 70 79 |...}....|..strcpy|
|000229f0| 28 6e 2d 3e 6c 6e 5f 4e | 61 6d 65 2c 20 73 70 2d |(n->ln_N|ame, sp-|
|00022a00| 3e 6e 61 6d 65 29 3b 0a | 09 09 0a 09 09 6e 2d 3e |>name);.|.....n->|
|00022a10| 6c 6e 5f 50 72 69 20 3d | 20 30 3b 0a 09 09 41 64 |ln_Pri =| 0;...Ad|
|00022a20| 64 54 61 69 6c 28 6c 2c | 20 6e 29 3b 0a 09 09 73 |dTail(l,| n);...s|
|00022a30| 70 20 3d 20 73 70 2d 3e | 6e 65 78 74 3b 0a 09 7d |p = sp->|next;..}|
|00022a40| 0a 09 50 65 72 6d 69 74 | 28 29 3b 0a 09 0a 09 72 |..Permit|();....r|
|00022a50| 65 74 75 72 6e 20 6c 3b | 0a 7d 0a 0a 76 6f 69 64 |eturn l;|.}..void|
|00022a60| 20 66 72 65 65 5f 6c 61 | 62 65 6c 73 28 73 74 72 | free_la|bels(str|
|00022a70| 75 63 74 20 4c 69 73 74 | 20 2a 6c 29 0a 7b 0a 09 |uct List| *l).{..|
|00022a80| 73 74 72 75 63 74 20 4e | 6f 64 65 20 2a 6e 3b 0a |struct N|ode *n;.|
|00022a90| 09 0a 09 77 68 69 6c 65 | 20 28 6e 20 3d 20 52 65 |...while| (n = Re|
|00022aa0| 6d 48 65 61 64 28 6c 29 | 29 20 7b 0a 09 09 64 65 |mHead(l)|) {...de|
|00022ab0| 61 6c 6c 6f 63 61 74 65 | 28 6e 2d 3e 6c 6e 5f 4e |allocate|(n->ln_N|
|00022ac0| 61 6d 65 2c 20 56 5f 63 | 73 74 72 29 3b 0a 09 09 |ame, V_c|str);...|
|00022ad0| 64 65 61 6c 6c 6f 63 61 | 74 65 28 6e 2c 20 56 5f |dealloca|te(n, V_|
|00022ae0| 4e 6f 64 65 29 3b 0a 09 | 7d 0a 09 0a 09 64 65 61 |Node);..|}....dea|
|00022af0| 6c 6c 6f 63 61 74 65 28 | 6c 2c 20 56 5f 4c 69 73 |llocate(|l, V_Lis|
|00022b00| 74 29 3b 0a 7d 0a 0a 76 | 6f 69 64 20 64 72 61 77 |t);.}..v|oid draw|
|00022b10| 5f 66 69 6c 6c 5f 62 61 | 72 28 73 69 74 65 20 2a |_fill_ba|r(site *|
|00022b20| 73 70 2c 20 73 74 72 75 | 63 74 20 49 6e 74 75 69 |sp, stru|ct Intui|
|00022b30| 74 69 6f 6e 42 61 73 65 | 20 2a 49 6e 74 75 69 74 |tionBase| *Intuit|
|00022b40| 69 6f 6e 42 61 73 65 2c | 20 73 74 72 75 63 74 20 |ionBase,| struct |
|00022b50| 47 66 78 42 61 73 65 20 | 2a 47 66 78 42 61 73 65 |GfxBase |*GfxBase|
|00022b60| 29 0a 7b 0a 09 73 74 72 | 75 63 74 20 57 69 6e 64 |).{..str|uct Wind|
|00022b70| 6f 77 20 2a 77 3b 0a 09 | 73 74 72 75 63 74 20 52 |ow *w;..|struct R|
|00022b80| 61 73 74 50 6f 72 74 20 | 2a 72 70 3b 0a 09 62 33 |astPort |*rp;..b3|
|00022b90| 32 20 78 31 2c 20 79 31 | 2c 20 78 32 2c 20 79 32 |2 x1, y1|, x2, y2|
|00022ba0| 2c 20 67 61 70 3b 0a 09 | 0a 09 76 65 72 69 66 79 |, gap;..|..verify|
|00022bb0| 28 73 70 2c 20 56 5f 73 | 69 74 65 29 3b 0a 09 0a |(sp, V_s|ite);...|
|00022bc0| 09 77 20 3d 20 73 70 2d | 3e 73 74 61 74 75 73 5f |.w = sp-|>status_|
|00022bd0| 77 69 6e 64 6f 77 3b 0a | 09 69 66 20 28 21 77 29 |window;.|.if (!w)|
|00022be0| 20 72 65 74 75 72 6e 3b | 0a 09 0a 09 72 70 20 3d | return;|....rp =|
|00022bf0| 20 77 2d 3e 52 50 6f 72 | 74 3b 0a 09 0a 09 78 31 | w->RPor|t;....x1|
|00022c00| 20 3d 20 77 2d 3e 42 6f | 72 64 65 72 4c 65 66 74 | = w->Bo|rderLeft|
|00022c10| 3b 0a 09 79 31 20 3d 20 | 77 2d 3e 42 6f 72 64 65 |;..y1 = |w->Borde|
|00022c20| 72 54 6f 70 3b 0a 09 0a | 09 78 32 20 3d 20 77 2d |rTop;...|.x2 = w-|
|00022c30| 3e 57 69 64 74 68 20 2d | 20 77 2d 3e 42 6f 72 64 |>Width -| w->Bord|
|00022c40| 65 72 52 69 67 68 74 20 | 2d 20 31 3b 0a 09 79 32 |erRight |- 1;..y2|
|00022c50| 20 3d 20 73 70 2d 3e 61 | 62 6f 72 74 5f 67 61 64 | = sp->a|bort_gad|
|00022c60| 67 65 74 2d 3e 54 6f 70 | 45 64 67 65 20 2d 20 31 |get->Top|Edge - 1|
|00022c70| 3b 0a 09 0a 09 67 61 70 | 20 3d 20 28 79 32 20 2d |;....gap| = (y2 -|
|00022c80| 20 79 31 29 20 2f 20 34 | 3b 0a 09 0a 09 78 32 20 | y1) / 4|;....x2 |
|00022c90| 3d 20 78 31 20 2b 20 28 | 78 32 20 2d 20 78 31 29 |= x1 + (|x2 - x1)|
|00022ca0| 20 2a 20 33 20 2f 20 34 | 3b 0a 09 0a 09 78 31 20 | * 3 / 4|;....x1 |
|00022cb0| 2b 3d 20 67 61 70 3b 0a | 09 79 31 20 2b 3d 20 67 |+= gap;.|.y1 += g|
|00022cc0| 61 70 3b 0a 09 79 32 20 | 2d 3d 20 67 61 70 3b 0a |ap;..y2 |-= gap;.|
|00022cd0| 09 0a 09 53 65 74 44 72 | 4d 64 28 72 70 2c 20 4a |...SetDr|Md(rp, J|
|00022ce0| 41 4d 32 29 3b 0a 09 0a | 09 53 65 74 41 50 65 6e |AM2);...|.SetAPen|
|00022cf0| 28 72 70 2c 20 6c 69 67 | 68 74 70 65 6e 29 3b 0a |(rp, lig|htpen);.|
|00022d00| 09 4d 6f 76 65 28 72 70 | 2c 20 78 32 2c 20 79 31 |.Move(rp|, x2, y1|
|00022d10| 29 3b 0a 09 44 72 61 77 | 28 72 70 2c 20 78 32 2c |);..Draw|(rp, x2,|
|00022d20| 20 79 32 29 3b 0a 09 44 | 72 61 77 28 72 70 2c 20 | y2);..D|raw(rp, |
|00022d30| 78 31 2c 20 79 32 29 3b | 0a 09 53 65 74 41 50 65 |x1, y2);|..SetAPe|
|00022d40| 6e 28 72 70 2c 20 64 61 | 72 6b 70 65 6e 29 3b 0a |n(rp, da|rkpen);.|
|00022d50| 09 44 72 61 77 28 72 70 | 2c 20 78 31 2c 20 79 31 |.Draw(rp|, x1, y1|
|00022d60| 29 3b 0a 09 44 72 61 77 | 28 72 70 2c 20 78 32 2c |);..Draw|(rp, x2,|
|00022d70| 20 79 31 29 3b 0a 09 0a | 09 53 65 74 41 50 65 6e | y1);...|.SetAPen|
|00022d80| 28 72 70 2c 20 66 69 6c | 6c 70 65 6e 29 3b 0a 09 |(rp, fil|lpen);..|
|00022d90| 0a 09 78 31 2b 2b 3b 0a | 09 79 31 2b 2b 3b 0a 09 |..x1++;.|.y1++;..|
|00022da0| 79 32 2d 2d 3b 0a 09 78 | 32 2d 2d 3b 0a 09 0a 09 |y2--;..x|2--;....|
|00022db0| 69 66 20 28 73 70 2d 3e | 66 69 6c 65 5f 6c 69 73 |if (sp->|file_lis|
|00022dc0| 74 29 20 7b 0a 09 09 76 | 65 72 69 66 79 28 73 70 |t) {...v|erify(sp|
|00022dd0| 2d 3e 66 69 6c 65 5f 6c | 69 73 74 2c 20 56 5f 66 |->file_l|ist, V_f|
|00022de0| 69 6c 65 5f 69 6e 66 6f | 29 3b 0a 09 09 0a 09 09 |ile_info|);......|
|00022df0| 78 32 20 3d 20 78 31 20 | 2b 20 28 28 78 32 20 2d |x2 = x1 |+ ((x2 -|
|00022e00| 20 78 31 29 20 2a 20 73 | 70 2d 3e 66 69 6c 65 5f | x1) * s|p->file_|
|00022e10| 6c 69 73 74 2d 3e 72 70 | 6f 73 29 20 2f 20 73 70 |list->rp|os) / sp|
|00022e20| 2d 3e 66 69 6c 65 5f 6c | 69 73 74 2d 3e 65 6e 64 |->file_l|ist->end|
|00022e30| 3b 0a 09 09 52 65 63 74 | 46 69 6c 6c 28 72 70 2c |;...Rect|Fill(rp,|
|00022e40| 20 78 31 2c 20 79 31 2c | 20 78 32 2c 20 79 32 29 | x1, y1,| x2, y2)|
|00022e50| 3b 0a 09 7d 0a 7d 0a 0a | 76 6f 69 64 20 75 70 64 |;..}.}..|void upd|
|00022e60| 61 74 65 5f 66 69 6c 6c | 5f 62 61 72 28 73 69 74 |ate_fill|_bar(sit|
|00022e70| 65 20 2a 73 70 2c 20 73 | 74 72 75 63 74 20 49 6e |e *sp, s|truct In|
|00022e80| 74 75 69 74 69 6f 6e 42 | 61 73 65 20 2a 49 6e 74 |tuitionB|ase *Int|
|00022e90| 75 69 74 69 6f 6e 42 61 | 73 65 2c 20 73 74 72 75 |uitionBa|se, stru|
|00022ea0| 63 74 20 47 66 78 42 61 | 73 65 20 2a 47 66 78 42 |ct GfxBa|se *GfxB|
|00022eb0| 61 73 65 29 0a 7b 0a 09 | 73 74 72 75 63 74 20 57 |ase).{..|struct W|
|00022ec0| 69 6e 64 6f 77 20 2a 77 | 3b 0a 09 73 74 72 75 63 |indow *w|;..struc|
|00022ed0| 74 20 52 61 73 74 50 6f | 72 74 20 2a 72 70 3b 0a |t RastPo|rt *rp;.|
|00022ee0| 09 62 33 32 20 78 31 2c | 20 79 31 2c 20 78 32 2c |.b32 x1,| y1, x2,|
|00022ef0| 20 79 32 2c 20 67 61 70 | 3b 0a 09 73 74 72 75 63 | y2, gap|;..struc|
|00022f00| 74 20 49 6e 74 75 69 54 | 65 78 74 20 74 78 74 3b |t IntuiT|ext txt;|
|00022f10| 0a 09 62 38 20 62 75 66 | 66 65 72 5b 32 30 5d 2c |..b8 buf|fer[20],|
|00022f20| 20 2a 7a 3b 0a 09 66 69 | 6c 65 5f 69 6e 66 6f 20 | *z;..fi|le_info |
|00022f30| 2a 66 69 70 3b 0a 09 0a | 09 76 65 72 69 66 79 28 |*fip;...|.verify(|
|00022f40| 73 70 2c 20 56 5f 73 69 | 74 65 29 3b 0a 09 0a 09 |sp, V_si|te);....|
|00022f50| 77 20 3d 20 73 70 2d 3e | 73 74 61 74 75 73 5f 77 |w = sp->|status_w|
|00022f60| 69 6e 64 6f 77 3b 0a 09 | 69 66 20 28 21 77 29 20 |indow;..|if (!w) |
|00022f70| 72 65 74 75 72 6e 3b 0a | 09 0a 09 46 6f 72 62 69 |return;.|...Forbi|
|00022f80| 64 28 29 3b 0a 09 66 69 | 70 20 3d 20 73 70 2d 3e |d();..fi|p = sp->|
|00022f90| 66 69 6c 65 5f 6c 69 73 | 74 3b 0a 09 69 66 20 28 |file_lis|t;..if (|
|00022fa0| 21 66 69 70 29 20 7b 0a | 09 09 50 65 72 6d 69 74 |!fip) {.|..Permit|
|00022fb0| 28 29 3b 0a 09 09 72 65 | 74 75 72 6e 3b 0a 09 7d |();...re|turn;..}|
|00022fc0| 0a 09 76 65 72 69 66 79 | 28 66 69 70 2c 20 56 5f |..verify|(fip, V_|
|00022fd0| 66 69 6c 65 5f 69 6e 66 | 6f 29 3b 0a 09 0a 09 7a |file_inf|o);....z|
|00022fe0| 20 3d 20 66 69 70 2d 3e | 66 6e 61 6d 65 20 2b 20 | = fip->|fname + |
|00022ff0| 73 74 72 6c 65 6e 28 66 | 69 70 2d 3e 66 6e 61 6d |strlen(f|ip->fnam|
|00023000| 65 29 20 2d 20 31 3b 0a | 09 77 68 69 6c 65 20 28 |e) - 1;.|.while (|
|00023010| 7a 20 3e 20 66 69 70 2d | 3e 66 6e 61 6d 65 20 26 |z > fip-|>fname &|
|00023020| 26 20 2a 7a 20 21 3d 20 | 27 2f 27 29 20 7a 2d 2d |& *z != |'/') z--|
|00023030| 3b 0a 09 69 66 20 28 2a | 7a 20 3d 3d 20 27 2f 27 |;..if (*|z == '/'|
|00023040| 29 20 7a 2b 2b 3b 0a 09 | 0a 09 72 70 20 3d 20 77 |) z++;..|..rp = w|
|00023050| 2d 3e 52 50 6f 72 74 3b | 0a 09 0a 09 78 31 20 3d |->RPort;|....x1 =|
|00023060| 20 77 2d 3e 42 6f 72 64 | 65 72 4c 65 66 74 3b 0a | w->Bord|erLeft;.|
|00023070| 09 79 31 20 3d 20 77 2d | 3e 42 6f 72 64 65 72 54 |.y1 = w-|>BorderT|
|00023080| 6f 70 3b 0a 09 0a 09 78 | 32 20 3d 20 77 2d 3e 57 |op;....x|2 = w->W|
|00023090| 69 64 74 68 20 2d 20 77 | 2d 3e 42 6f 72 64 65 72 |idth - w|->Border|
|000230a0| 52 69 67 68 74 20 2d 20 | 31 3b 0a 09 79 32 20 3d |Right - |1;..y2 =|
|000230b0| 20 73 70 2d 3e 61 62 6f | 72 74 5f 67 61 64 67 65 | sp->abo|rt_gadge|
|000230c0| 74 2d 3e 54 6f 70 45 64 | 67 65 20 2d 20 31 3b 0a |t->TopEd|ge - 1;.|
|000230d0| 09 0a 09 67 61 70 20 3d | 20 28 79 32 20 2d 20 79 |...gap =| (y2 - y|
|000230e0| 31 29 20 2f 20 34 3b 0a | 09 0a 09 78 32 20 3d 20 |1) / 4;.|...x2 = |
|000230f0| 78 31 20 2b 20 28 78 32 | 20 2d 20 78 31 29 20 2a |x1 + (x2| - x1) *|
|00023100| 20 33 20 2f 20 34 20 2d | 20 31 3b 0a 09 0a 09 78 | 3 / 4 -| 1;....x|
|00023110| 31 20 2b 3d 20 67 61 70 | 20 2b 20 31 3b 0a 09 79 |1 += gap| + 1;..y|
|00023120| 31 20 2b 3d 20 67 61 70 | 20 2b 20 31 3b 0a 09 79 |1 += gap| + 1;..y|
|00023130| 32 20 2d 3d 20 67 61 70 | 20 2b 20 31 3b 0a 09 0a |2 -= gap| + 1;...|
|00023140| 09 69 66 20 28 73 70 2d | 3e 73 69 74 65 5f 73 74 |.if (sp-|>site_st|
|00023150| 61 74 65 20 3d 3d 20 53 | 53 5f 57 52 49 54 49 4e |ate == S|S_WRITIN|
|00023160| 47 20 7c 7c 20 21 66 69 | 70 2d 3e 65 6e 64 29 20 |G || !fi|p->end) |
|00023170| 7b 09 2f 2a 20 6a 75 73 | 74 20 70 72 69 6e 74 20 |{./* jus|t print |
|00023180| 68 6f 77 20 6d 61 6e 79 | 20 6b 20 77 65 20 68 61 |how many| k we ha|
|00023190| 76 65 20 74 72 61 6e 73 | 66 65 72 72 65 64 20 2a |ve trans|ferred *|
|000231a0| 2f 0a 09 09 74 78 74 2e | 46 72 6f 6e 74 50 65 6e |/...txt.|FrontPen|
|000231b0| 20 3d 20 74 65 78 74 70 | 65 6e 3b 0a 09 09 74 78 | = textp|en;...tx|
|000231c0| 74 2e 42 61 63 6b 50 65 | 6e 20 3d 20 30 3b 0a 09 |t.BackPe|n = 0;..|
|000231d0| 09 74 78 74 2e 44 72 61 | 77 4d 6f 64 65 20 3d 20 |.txt.Dra|wMode = |
|000231e0| 4a 41 4d 32 3b 0a 09 09 | 74 78 74 2e 4c 65 66 74 |JAM2;...|txt.Left|
|000231f0| 45 64 67 65 20 3d 20 78 | 31 3b 0a 09 09 74 78 74 |Edge = x|1;...txt|
|00023200| 2e 54 6f 70 45 64 67 65 | 20 3d 20 79 31 3b 0a 09 |.TopEdge| = y1;..|
|00023210| 09 74 78 74 2e 49 54 65 | 78 74 46 6f 6e 74 20 3d |.txt.ITe|xtFont =|
|00023220| 20 73 70 2d 3e 73 74 61 | 74 75 73 5f 77 69 6e 64 | sp->sta|tus_wind|
|00023230| 6f 77 2d 3e 57 53 63 72 | 65 65 6e 2d 3e 46 6f 6e |ow->WScr|een->Fon|
|00023240| 74 3b 0a 09 09 74 78 74 | 2e 4e 65 78 74 54 65 78 |t;...txt|.NextTex|
|00023250| 74 20 3d 20 6e 69 6c 3b | 0a 09 09 74 78 74 2e 49 |t = nil;|...txt.I|
|00023260| 54 65 78 74 20 3d 20 7a | 3b 0a 09 09 50 72 69 6e |Text = z|;...Prin|
|00023270| 74 49 54 65 78 74 28 72 | 70 2c 20 26 74 78 74 2c |tIText(r|p, &txt,|
|00023280| 20 30 2c 20 30 29 3b 0a | 09 09 0a 09 09 74 78 74 | 0, 0);.|.....txt|
|00023290| 2e 4c 65 66 74 45 64 67 | 65 20 2b 3d 20 49 6e 74 |.LeftEdg|e += Int|
|000232a0| 75 69 54 65 78 74 4c 65 | 6e 67 74 68 28 26 74 78 |uiTextLe|ngth(&tx|
|000232b0| 74 29 3b 0a 09 09 74 78 | 74 2e 46 72 6f 6e 74 50 |t);...tx|t.FrontP|
|000232c0| 65 6e 20 3d 20 74 65 78 | 74 70 65 6e 3b 0a 09 09 |en = tex|tpen;...|
|000232d0| 74 78 74 2e 49 54 65 78 | 74 20 3d 20 62 75 66 66 |txt.ITex|t = buff|
|000232e0| 65 72 3b 0a 0a 09 09 62 | 75 66 66 65 72 5b 30 5d |er;....b|uffer[0]|
|000232f0| 20 3d 20 27 3a 27 3b 0a | 09 09 62 75 66 66 65 72 | = ':';.|..buffer|
|00023300| 5b 31 5d 20 3d 20 27 20 | 27 3b 0a 09 09 78 31 20 |[1] = ' |';...x1 |
|00023310| 3d 20 32 3b 0a 09 09 79 | 31 20 3d 20 66 69 70 2d |= 2;...y|1 = fip-|
|00023320| 3e 72 70 6f 73 20 2f 20 | 31 30 32 34 3b 0a 09 09 |>rpos / |1024;...|
|00023330| 62 75 66 66 65 72 5b 78 | 31 5d 20 3d 20 27 30 27 |buffer[x|1] = '0'|
|00023340| 3b 0a 09 09 77 68 69 6c | 65 20 28 79 31 20 3e 3d |;...whil|e (y1 >=|
|00023350| 20 31 30 30 30 30 30 29 | 20 7b 0a 09 09 09 62 75 | 100000)| {....bu|
|00023360| 66 66 65 72 5b 78 31 5d | 2b 2b 3b 0a 09 09 09 79 |ffer[x1]|++;....y|
|00023370| 31 20 2d 3d 20 31 30 30 | 30 30 30 3b 0a 09 09 7d |1 -= 100|000;...}|
|00023380| 0a 09 09 69 66 20 28 62 | 75 66 66 65 72 5b 78 31 |...if (b|uffer[x1|
|00023390| 5d 20 3e 20 27 30 27 29 | 20 78 31 2b 2b 3b 0a 09 |] > '0')| x1++;..|
|000233a0| 09 62 75 66 66 65 72 5b | 78 31 5d 20 3d 20 27 30 |.buffer[|x1] = '0|
|000233b0| 27 3b 0a 09 09 77 68 69 | 6c 65 20 28 79 31 20 3e |';...whi|le (y1 >|
|000233c0| 3d 20 31 30 30 30 30 29 | 20 7b 0a 09 09 09 62 75 |= 10000)| {....bu|
|000233d0| 66 66 65 72 5b 78 31 5d | 2b 2b 3b 0a 09 09 09 79 |ffer[x1]|++;....y|
|000233e0| 31 20 2d 3d 20 31 30 30 | 30 30 3b 0a 09 09 7d 0a |1 -= 100|00;...}.|
|000233f0| 09 09 69 66 20 28 62 75 | 66 66 65 72 5b 78 31 5d |..if (bu|ffer[x1]|
|00023400| 20 3e 20 27 30 27 20 7c | 7c 20 78 31 20 21 3d 20 | > '0' ||| x1 != |
|00023410| 32 29 20 78 31 2b 2b 3b | 0a 09 09 62 75 66 66 65 |2) x1++;|...buffe|
|00023420| 72 5b 78 31 5d 20 3d 20 | 27 30 27 3b 0a 09 09 77 |r[x1] = |'0';...w|
|00023430| 68 69 6c 65 20 28 79 31 | 20 3e 3d 20 31 30 30 30 |hile (y1| >= 1000|
|00023440| 29 20 7b 0a 09 09 09 62 | 75 66 66 65 72 5b 78 31 |) {....b|uffer[x1|
|00023450| 5d 2b 2b 3b 0a 09 09 09 | 79 31 20 2d 3d 20 31 30 |]++;....|y1 -= 10|
|00023460| 30 30 3b 0a 09 09 7d 0a | 09 09 69 66 20 28 62 75 |00;...}.|..if (bu|
|00023470| 66 66 65 72 5b 78 31 5d | 20 3e 20 27 30 27 20 7c |ffer[x1]| > '0' ||
|00023480| 7c 20 78 31 20 21 3d 20 | 32 29 20 78 31 2b 2b 3b || x1 != |2) x1++;|
|00023490| 0a 09 09 62 75 66 66 65 | 72 5b 78 31 5d 20 3d 20 |...buffe|r[x1] = |
|000234a0| 27 30 27 3b 0a 09 09 77 | 68 69 6c 65 20 28 79 31 |'0';...w|hile (y1|
|000234b0| 20 3e 3d 20 31 30 30 29 | 20 7b 0a 09 09 09 62 75 | >= 100)| {....bu|
|000234c0| 66 66 65 72 5b 78 31 5d | 2b 2b 3b 0a 09 09 09 79 |ffer[x1]|++;....y|
|000234d0| 31 20 2d 3d 20 31 30 30 | 3b 0a 09 09 7d 0a 09 09 |1 -= 100|;...}...|
|000234e0| 69 66 20 28 62 75 66 66 | 65 72 5b 78 31 5d 20 3e |if (buff|er[x1] >|
|000234f0| 20 27 30 27 20 7c 7c 20 | 78 31 20 21 3d 20 32 29 | '0' || |x1 != 2)|
|00023500| 20 78 31 2b 2b 3b 0a 09 | 09 62 75 66 66 65 72 5b | x1++;..|.buffer[|
|00023510| 78 31 5d 20 3d 20 27 30 | 27 3b 0a 09 09 77 68 69 |x1] = '0|';...whi|
|00023520| 6c 65 20 28 79 31 20 3e | 3d 20 31 30 29 20 7b 0a |le (y1 >|= 10) {.|
|00023530| 09 09 09 62 75 66 66 65 | 72 5b 78 31 5d 2b 2b 3b |...buffe|r[x1]++;|
|00023540| 0a 09 09 09 79 31 20 2d | 3d 20 31 30 3b 0a 09 09 |....y1 -|= 10;...|
|00023550| 7d 0a 09 09 69 66 20 28 | 62 75 66 66 65 72 5b 78 |}...if (|buffer[x|
|00023560| 31 5d 20 3e 20 27 30 27 | 20 7c 7c 20 78 31 20 21 |1] > '0'| || x1 !|
|00023570| 3d 20 32 29 20 78 31 2b | 2b 3b 0a 09 09 62 75 66 |= 2) x1+|+;...buf|
|00023580| 66 65 72 5b 78 31 2b 2b | 5d 20 3d 20 79 31 20 2b |fer[x1++|] = y1 +|
|00023590| 20 27 30 27 3b 0a 09 09 | 62 75 66 66 65 72 5b 78 | '0';...|buffer[x|
|000235a0| 31 2b 2b 5d 20 3d 20 27 | 20 27 3b 0a 09 09 62 75 |1++] = '| ';...bu|
|000235b0| 66 66 65 72 5b 78 31 2b | 2b 5d 20 3d 20 27 6b 27 |ffer[x1+|+] = 'k'|
|000235c0| 3b 0a 09 09 62 75 66 66 | 65 72 5b 78 31 2b 2b 5d |;...buff|er[x1++]|
|000235d0| 20 3d 20 27 20 27 3b 0a | 09 09 62 75 66 66 65 72 | = ' ';.|..buffer|
|000235e0| 5b 78 31 2b 2b 5d 20 3d | 20 27 20 27 3b 0a 09 09 |[x1++] =| ' ';...|
|000235f0| 62 75 66 66 65 72 5b 78 | 31 5d 20 3d 20 30 3b 0a |buffer[x|1] = 0;.|
|00023600| 0a 09 09 50 72 69 6e 74 | 49 54 65 78 74 28 72 70 |...Print|IText(rp|
|00023610| 2c 20 26 74 78 74 2c 20 | 30 2c 20 30 29 3b 0a 09 |, &txt, |0, 0);..|
|00023620| 09 0a 09 09 50 65 72 6d | 69 74 28 29 3b 0a 09 09 |....Perm|it();...|
|00023630| 0a 09 09 72 65 74 75 72 | 6e 3b 0a 09 7d 0a 09 0a |...retur|n;..}...|
|00023640| 09 2f 2a 20 72 65 61 64 | 69 6e 67 20 2e 2e 2e 20 |./* read|ing ... |
|00023650| 63 61 6e 20 64 6f 20 61 | 20 66 69 6c 6c 65 72 20 |can do a| filler |
|00023660| 62 61 72 20 2a 2f 0a 09 | 0a 09 53 65 74 44 72 4d |bar */..|..SetDrM|
|00023670| 64 28 72 70 2c 20 4a 41 | 4d 32 29 3b 0a 09 53 65 |d(rp, JA|M2);..Se|
|00023680| 74 41 50 65 6e 28 72 70 | 2c 20 66 69 6c 6c 70 65 |tAPen(rp|, fillpe|
|00023690| 6e 29 3b 0a 0a 09 74 78 | 74 2e 46 72 6f 6e 74 50 |n);...tx|t.FrontP|
|000236a0| 65 6e 20 3d 20 6c 69 67 | 68 74 70 65 6e 3b 0a 09 |en = lig|htpen;..|
|000236b0| 74 78 74 2e 42 61 63 6b | 50 65 6e 20 3d 20 30 3b |txt.Back|Pen = 0;|
|000236c0| 0a 09 74 78 74 2e 44 72 | 61 77 4d 6f 64 65 20 3d |..txt.Dr|awMode =|
|000236d0| 20 4a 41 4d 31 3b 0a 09 | 74 78 74 2e 54 6f 70 45 | JAM1;..|txt.TopE|
|000236e0| 64 67 65 20 3d 20 79 31 | 3b 0a 09 74 78 74 2e 49 |dge = y1|;..txt.I|
|000236f0| 54 65 78 74 46 6f 6e 74 | 20 3d 20 73 70 2d 3e 73 |TextFont| = sp->s|
|00023700| 74 61 74 75 73 5f 77 69 | 6e 64 6f 77 2d 3e 57 53 |tatus_wi|ndow->WS|
|00023710| 63 72 65 65 6e 2d 3e 46 | 6f 6e 74 3b 0a 09 74 78 |creen->F|ont;..tx|
|00023720| 74 2e 4e 65 78 74 54 65 | 78 74 20 3d 20 6e 69 6c |t.NextTe|xt = nil|
|00023730| 3b 0a 09 74 78 74 2e 49 | 54 65 78 74 20 3d 20 7a |;..txt.I|Text = z|
|00023740| 3b 0a 09 0a 09 74 78 74 | 2e 4c 65 66 74 45 64 67 |;....txt|.LeftEdg|
|00023750| 65 20 3d 20 28 78 31 20 | 2b 20 78 32 29 20 2f 20 |e = (x1 |+ x2) / |
|00023760| 32 20 2d 20 49 6e 74 75 | 69 54 65 78 74 4c 65 6e |2 - Intu|iTextLen|
|00023770| 67 74 68 28 26 74 78 74 | 29 20 2f 20 32 3b 0a 09 |gth(&txt|) / 2;..|
|00023780| 0a 09 78 32 20 3d 20 78 | 31 20 2b 20 28 28 78 32 |..x2 = x|1 + ((x2|
|00023790| 20 2d 20 78 31 29 20 2a | 20 73 70 2d 3e 66 69 6c | - x1) *| sp->fil|
|000237a0| 65 5f 6c 69 73 74 2d 3e | 72 70 6f 73 29 20 2f 20 |e_list->|rpos) / |
|000237b0| 73 70 2d 3e 66 69 6c 65 | 5f 6c 69 73 74 2d 3e 65 |sp->file|_list->e|
|000237c0| 6e 64 3b 0a 09 52 65 63 | 74 46 69 6c 6c 28 72 70 |nd;..Rec|tFill(rp|
|000237d0| 2c 20 78 31 2c 20 79 31 | 2c 20 78 32 2c 20 79 32 |, x1, y1|, x2, y2|
|000237e0| 29 3b 0a 0a 09 50 72 69 | 6e 74 49 54 65 78 74 28 |);...Pri|ntIText(|
|000237f0| 72 70 2c 20 26 74 78 74 | 2c 20 30 2c 20 30 29 3b |rp, &txt|, 0, 0);|
|00023800| 0a 09 0a 09 50 65 72 6d | 69 74 28 29 3b 0a 09 0a |....Perm|it();...|
|00023810| 09 72 65 74 75 72 6e 3b | 0a 7d 0a 0a 76 6f 69 64 |.return;|.}..void|
|00023820| 20 64 72 61 77 5f 73 74 | 61 74 65 28 73 69 74 65 | draw_st|ate(site|
|00023830| 20 2a 73 70 2c 20 73 74 | 72 75 63 74 20 49 6e 74 | *sp, st|ruct Int|
|00023840| 75 69 74 69 6f 6e 42 61 | 73 65 20 2a 49 6e 74 75 |uitionBa|se *Intu|
|00023850| 69 74 69 6f 6e 42 61 73 | 65 2c 20 73 74 72 75 63 |itionBas|e, struc|
|00023860| 74 20 47 66 78 42 61 73 | 65 20 2a 47 66 78 42 61 |t GfxBas|e *GfxBa|
|00023870| 73 65 29 0a 7b 0a 09 73 | 74 72 75 63 74 20 49 6e |se).{..s|truct In|
|00023880| 74 75 69 54 65 78 74 20 | 74 78 74 3b 0a 09 0a 09 |tuiText |txt;....|
|00023890| 2f 2a 20 67 61 64 67 65 | 74 20 73 74 61 74 65 73 |/* gadge|t states|
|000238a0| 20 2a 2f 0a 09 73 77 69 | 74 63 68 20 28 73 70 2d | */..swi|tch (sp-|
|000238b0| 3e 73 69 74 65 5f 73 74 | 61 74 65 29 20 7b 0a 09 |>site_st|ate) {..|
|000238c0| 63 61 73 65 20 53 53 5f | 44 49 53 43 4f 4e 4e 45 |case SS_|DISCONNE|
|000238d0| 43 54 45 44 3a 0a 09 63 | 61 73 65 20 53 53 5f 44 |CTED:..c|ase SS_D|
|000238e0| 49 53 43 4f 4e 4e 45 43 | 54 49 4e 47 3a 0a 09 09 |ISCONNEC|TING:...|
|000238f0| 69 66 20 28 21 28 73 70 | 2d 3e 61 62 6f 72 74 5f |if (!(sp|->abort_|
|00023900| 67 61 64 67 65 74 2d 3e | 46 6c 61 67 73 20 26 20 |gadget->|Flags & |
|00023910| 47 46 4c 47 5f 44 49 53 | 41 42 4c 45 44 29 29 20 |GFLG_DIS|ABLED)) |
|00023920| 7b 0a 09 09 09 4f 66 66 | 47 61 64 67 65 74 28 73 |{....Off|Gadget(s|
|00023930| 70 2d 3e 61 62 6f 72 74 | 5f 67 61 64 67 65 74 2c |p->abort|_gadget,|
|00023940| 20 73 70 2d 3e 73 74 61 | 74 75 73 5f 77 69 6e 64 | sp->sta|tus_wind|
|00023950| 6f 77 2c 20 6e 69 6c 29 | 3b 0a 09 09 7d 0a 09 09 |ow, nil)|;...}...|
|00023960| 69 66 20 28 21 28 73 70 | 2d 3e 64 69 73 63 6f 6e |if (!(sp|->discon|
|00023970| 6e 65 63 74 5f 67 61 64 | 67 65 74 2d 3e 46 6c 61 |nect_gad|get->Fla|
|00023980| 67 73 20 26 20 47 46 4c | 47 5f 44 49 53 41 42 4c |gs & GFL|G_DISABL|
|00023990| 45 44 29 29 20 7b 0a 09 | 09 09 4f 66 66 47 61 64 |ED)) {..|..OffGad|
|000239a0| 67 65 74 28 73 70 2d 3e | 64 69 73 63 6f 6e 6e 65 |get(sp->|disconne|
|000239b0| 63 74 5f 67 61 64 67 65 | 74 2c 20 73 70 2d 3e 73 |ct_gadge|t, sp->s|
|000239c0| 74 61 74 75 73 5f 77 69 | 6e 64 6f 77 2c 20 6e 69 |tatus_wi|ndow, ni|
|000239d0| 6c 29 3b 0a 09 09 7d 0a | 09 09 62 72 65 61 6b 3b |l);...}.|..break;|
|000239e0| 0a 09 63 61 73 65 20 53 | 53 5f 43 4f 4e 4e 45 43 |..case S|S_CONNEC|
|000239f0| 54 49 4e 47 3a 0a 09 63 | 61 73 65 20 53 53 5f 49 |TING:..c|ase SS_I|
|00023a00| 44 4c 45 3a 0a 09 63 61 | 73 65 20 53 53 5f 4c 4f |DLE:..ca|se SS_LO|
|00023a10| 47 49 4e 3a 0a 09 63 61 | 73 65 20 53 53 5f 41 42 |GIN:..ca|se SS_AB|
|00023a20| 4f 52 54 49 4e 47 3a 0a | 09 09 69 66 20 28 21 28 |ORTING:.|..if (!(|
|00023a30| 73 70 2d 3e 61 62 6f 72 | 74 5f 67 61 64 67 65 74 |sp->abor|t_gadget|
|00023a40| 2d 3e 46 6c 61 67 73 20 | 26 20 47 46 4c 47 5f 44 |->Flags |& GFLG_D|
|00023a50| 49 53 41 42 4c 45 44 29 | 29 20 7b 0a 09 09 09 4f |ISABLED)|) {....O|
|00023a60| 66 66 47 61 64 67 65 74 | 28 73 70 2d 3e 61 62 6f |ffGadget|(sp->abo|
|00023a70| 72 74 5f 67 61 64 67 65 | 74 2c 20 73 70 2d 3e 73 |rt_gadge|t, sp->s|
|00023a80| 74 61 74 75 73 5f 77 69 | 6e 64 6f 77 2c 20 6e 69 |tatus_wi|ndow, ni|
|00023a90| 6c 29 3b 0a 09 09 7d 0a | 09 09 69 66 20 28 73 70 |l);...}.|..if (sp|
|00023aa0| 2d 3e 64 69 73 63 6f 6e | 6e 65 63 74 5f 67 61 64 |->discon|nect_gad|
|00023ab0| 67 65 74 2d 3e 46 6c 61 | 67 73 20 26 20 47 46 4c |get->Fla|gs & GFL|
|00023ac0| 47 5f 44 49 53 41 42 4c | 45 44 29 20 7b 0a 09 09 |G_DISABL|ED) {...|
|00023ad0| 09 4f 6e 47 61 64 67 65 | 74 28 73 70 2d 3e 64 69 |.OnGadge|t(sp->di|
|00023ae0| 73 63 6f 6e 6e 65 63 74 | 5f 67 61 64 67 65 74 2c |sconnect|_gadget,|
|00023af0| 20 73 70 2d 3e 73 74 61 | 74 75 73 5f 77 69 6e 64 | sp->sta|tus_wind|
|00023b00| 6f 77 2c 20 6e 69 6c 29 | 3b 0a 09 09 7d 0a 09 09 |ow, nil)|;...}...|
|00023b10| 62 72 65 61 6b 3b 0a 09 | 64 65 66 61 75 6c 74 3a |break;..|default:|
|00023b20| 0a 09 09 69 66 20 28 73 | 70 2d 3e 61 62 6f 72 74 |...if (s|p->abort|
|00023b30| 5f 67 61 64 67 65 74 2d | 3e 46 6c 61 67 73 20 26 |_gadget-|>Flags &|
|00023b40| 20 47 46 4c 47 5f 44 49 | 53 41 42 4c 45 44 29 20 | GFLG_DI|SABLED) |
|00023b50| 7b 0a 09 09 09 4f 6e 47 | 61 64 67 65 74 28 73 70 |{....OnG|adget(sp|
|00023b60| 2d 3e 61 62 6f 72 74 5f | 67 61 64 67 65 74 2c 20 |->abort_|gadget, |
|00023b70| 73 70 2d 3e 73 74 61 74 | 75 73 5f 77 69 6e 64 6f |sp->stat|us_windo|
|00023b80| 77 2c 20 6e 69 6c 29 3b | 0a 09 09 7d 0a 09 09 69 |w, nil);|...}...i|
|00023b90| 66 20 28 73 70 2d 3e 64 | 69 73 63 6f 6e 6e 65 63 |f (sp->d|isconnec|
|00023ba0| 74 5f 67 61 64 67 65 74 | 2d 3e 46 6c 61 67 73 20 |t_gadget|->Flags |
|00023bb0| 26 20 47 46 4c 47 5f 44 | 49 53 41 42 4c 45 44 29 |& GFLG_D|ISABLED)|
|00023bc0| 20 7b 0a 09 09 09 4f 6e | 47 61 64 67 65 74 28 73 | {....On|Gadget(s|
|00023bd0| 70 2d 3e 64 69 73 63 6f | 6e 6e 65 63 74 5f 67 61 |p->disco|nnect_ga|
|00023be0| 64 67 65 74 2c 20 73 70 | 2d 3e 73 74 61 74 75 73 |dget, sp|->status|
|00023bf0| 5f 77 69 6e 64 6f 77 2c | 20 6e 69 6c 29 3b 0a 09 |_window,| nil);..|
|00023c00| 09 7d 0a 09 09 62 72 65 | 61 6b 3b 0a 09 7d 0a 09 |.}...bre|ak;..}..|
|00023c10| 0a 09 74 78 74 2e 46 72 | 6f 6e 74 50 65 6e 20 3d |..txt.Fr|ontPen =|
|00023c20| 20 74 65 78 74 70 65 6e | 3b 0a 09 74 78 74 2e 42 | textpen|;..txt.B|
|00023c30| 61 63 6b 50 65 6e 20 3d | 20 30 3b 0a 09 74 78 74 |ackPen =| 0;..txt|
|00023c40| 2e 44 72 61 77 4d 6f 64 | 65 20 3d 20 4a 41 4d 32 |.DrawMod|e = JAM2|
|00023c50| 3b 0a 09 74 78 74 2e 4c | 65 66 74 45 64 67 65 20 |;..txt.L|eftEdge |
|00023c60| 3d 20 32 3b 0a 09 74 78 | 74 2e 54 6f 70 45 64 67 |= 2;..tx|t.TopEdg|
|00023c70| 65 20 3d 20 30 3b 0a 09 | 74 78 74 2e 49 54 65 78 |e = 0;..|txt.ITex|
|00023c80| 74 46 6f 6e 74 20 3d 20 | 73 70 2d 3e 73 74 61 74 |tFont = |sp->stat|
|00023c90| 75 73 5f 77 69 6e 64 6f | 77 2d 3e 57 53 63 72 65 |us_windo|w->WScre|
|00023ca0| 65 6e 2d 3e 46 6f 6e 74 | 3b 0a 09 74 78 74 2e 4e |en->Font|;..txt.N|
|00023cb0| 65 78 74 54 65 78 74 20 | 3d 20 6e 69 6c 3b 0a 09 |extText |= nil;..|
|00023cc0| 74 78 74 2e 49 54 65 78 | 74 20 3d 20 73 74 72 69 |txt.ITex|t = stri|
|00023cd0| 6e 67 73 5b 4d 53 47 5f | 53 54 41 54 45 5f 55 4e |ngs[MSG_|STATE_UN|
|00023ce0| 4b 4e 4f 57 4e 20 2b 20 | 73 70 2d 3e 73 69 74 65 |KNOWN + |sp->site|
|00023cf0| 5f 73 74 61 74 65 5d 3b | 0a 09 0a 09 50 72 69 6e |_state];|....Prin|
|00023d00| 74 49 54 65 78 74 28 73 | 70 2d 3e 73 74 61 74 75 |tIText(s|p->statu|
|00023d10| 73 5f 77 69 6e 64 6f 77 | 2d 3e 52 50 6f 72 74 2c |s_window|->RPort,|
|00023d20| 20 26 74 78 74 2c 20 73 | 70 2d 3e 73 74 61 74 75 | &txt, s|p->statu|
|00023d30| 73 5f 77 69 6e 64 6f 77 | 2d 3e 42 6f 72 64 65 72 |s_window|->Border|
|00023d40| 4c 65 66 74 2c 0a 09 09 | 73 70 2d 3e 61 62 6f 72 |Left,...|sp->abor|
|00023d50| 74 5f 67 61 64 67 65 74 | 2d 3e 54 6f 70 45 64 67 |t_gadget|->TopEdg|
|00023d60| 65 20 2b 20 73 70 2d 3e | 61 62 6f 72 74 5f 67 61 |e + sp->|abort_ga|
|00023d70| 64 67 65 74 2d 3e 48 65 | 69 67 68 74 20 2f 20 34 |dget->He|ight / 4|
|00023d80| 29 3b 0a 09 0a 09 69 66 | 20 28 73 70 2d 3e 71 75 |);....if| (sp->qu|
|00023d90| 69 63 6b 29 20 7b 0a 09 | 09 74 78 74 2e 4c 65 66 |ick) {..|.txt.Lef|
|00023da0| 74 45 64 67 65 20 2b 3d | 20 49 6e 74 75 69 54 65 |tEdge +=| IntuiTe|
|00023db0| 78 74 4c 65 6e 67 74 68 | 28 26 74 78 74 29 3b 0a |xtLength|(&txt);.|
|00023dc0| 09 09 74 78 74 2e 49 54 | 65 78 74 20 3d 20 73 74 |..txt.IT|ext = st|
|00023dd0| 72 69 6e 67 73 5b 4d 53 | 47 5f 51 55 49 43 4b 5f |rings[MS|G_QUICK_|
|00023de0| 46 4c 41 47 5d 3b 0a 09 | 09 50 72 69 6e 74 49 54 |FLAG];..|.PrintIT|
|00023df0| 65 78 74 28 73 70 2d 3e | 73 74 61 74 75 73 5f 77 |ext(sp->|status_w|
|00023e00| 69 6e 64 6f 77 2d 3e 52 | 50 6f 72 74 2c 20 26 74 |indow->R|Port, &t|
|00023e10| 78 74 2c 20 73 70 2d 3e | 73 74 61 74 75 73 5f 77 |xt, sp->|status_w|
|00023e20| 69 6e 64 6f 77 2d 3e 42 | 6f 72 64 65 72 4c 65 66 |indow->B|orderLef|
|00023e30| 74 2c 0a 09 09 09 73 70 | 2d 3e 61 62 6f 72 74 5f |t,....sp|->abort_|
|00023e40| 67 61 64 67 65 74 2d 3e | 54 6f 70 45 64 67 65 20 |gadget->|TopEdge |
|00023e50| 2b 20 73 70 2d 3e 61 62 | 6f 72 74 5f 67 61 64 67 |+ sp->ab|ort_gadg|
|00023e60| 65 74 2d 3e 48 65 69 67 | 68 74 20 2f 20 34 29 3b |et->Heig|ht / 4);|
|00023e70| 0a 09 7d 0a 09 0a 09 69 | 66 20 28 73 70 2d 3e 73 |..}....i|f (sp->s|
|00023e80| 69 74 65 5f 73 74 61 74 | 65 20 3d 3d 20 53 53 5f |ite_stat|e == SS_|
|00023e90| 52 45 41 44 49 4e 47 20 | 26 26 20 73 70 2d 3e 66 |READING |&& sp->f|
|00023ea0| 69 6c 65 5f 6c 69 73 74 | 20 26 26 20 73 70 2d 3e |ile_list| && sp->|
|00023eb0| 66 69 6c 65 5f 6c 69 73 | 74 2d 3e 65 6e 64 20 3e |file_lis|t->end >|
|00023ec0| 20 30 29 20 7b 0a 09 09 | 64 72 61 77 5f 66 69 6c | 0) {...|draw_fil|
|00023ed0| 6c 5f 62 61 72 28 73 70 | 2c 20 49 6e 74 75 69 74 |l_bar(sp|, Intuit|
|00023ee0| 69 6f 6e 42 61 73 65 2c | 20 47 66 78 42 61 73 65 |ionBase,| GfxBase|
|00023ef0| 29 3b 0a 09 7d 0a 7d 0a | 0a 76 6f 69 64 20 63 6c |);..}.}.|.void cl|
|00023f00| 65 61 72 5f 73 74 61 74 | 65 28 73 69 74 65 20 2a |ear_stat|e(site *|
|00023f10| 73 70 2c 20 73 74 72 75 | 63 74 20 49 6e 74 75 69 |sp, stru|ct Intui|
|00023f20| 74 69 6f 6e 42 61 73 65 | 20 2a 49 6e 74 75 69 74 |tionBase| *Intuit|
|00023f30| 69 6f 6e 42 61 73 65 2c | 20 73 74 72 75 63 74 20 |ionBase,| struct |
|00023f40| 47 66 78 42 61 73 65 20 | 2a 47 66 78 42 61 73 65 |GfxBase |*GfxBase|
|00023f50| 29 0a 7b 0a 09 76 65 72 | 69 66 79 28 73 70 2c 20 |).{..ver|ify(sp, |
|00023f60| 56 5f 73 69 74 65 29 3b | 0a 09 74 72 75 74 68 28 |V_site);|..truth(|
|00023f70| 73 70 2d 3e 73 74 61 74 | 75 73 5f 77 69 6e 64 6f |sp->stat|us_windo|
|00023f80| 77 20 21 3d 20 6e 69 6c | 29 3b 0a 0a 09 53 65 74 |w != nil|);...Set|
|00023f90| 41 50 65 6e 28 73 70 2d | 3e 73 74 61 74 75 73 5f |APen(sp-|>status_|
|00023fa0| 77 69 6e 64 6f 77 2d 3e | 52 50 6f 72 74 2c 20 30 |window->|RPort, 0|
|00023fb0| 29 3b 0a 09 53 65 74 44 | 72 4d 64 28 73 70 2d 3e |);..SetD|rMd(sp->|
|00023fc0| 73 74 61 74 75 73 5f 77 | 69 6e 64 6f 77 2d 3e 52 |status_w|indow->R|
|00023fd0| 50 6f 72 74 2c 20 4a 41 | 4d 31 29 3b 0a 09 0a 09 |Port, JA|M1);....|
|00023fe0| 52 65 63 74 46 69 6c 6c | 28 73 70 2d 3e 73 74 61 |RectFill|(sp->sta|
|00023ff0| 74 75 73 5f 77 69 6e 64 | 6f 77 2d 3e 52 50 6f 72 |tus_wind|ow->RPor|
|00024000| 74 2c 20 73 70 2d 3e 73 | 74 61 74 75 73 5f 77 69 |t, sp->s|tatus_wi|
|00024010| 6e 64 6f 77 2d 3e 42 6f | 72 64 65 72 4c 65 66 74 |ndow->Bo|rderLeft|
|00024020| 2c 20 73 70 2d 3e 73 74 | 61 74 75 73 5f 77 69 6e |, sp->st|atus_win|
|00024030| 64 6f 77 2d 3e 42 6f 72 | 64 65 72 54 6f 70 2c 0a |dow->Bor|derTop,.|
|00024040| 09 09 73 70 2d 3e 61 62 | 6f 72 74 5f 67 61 64 67 |..sp->ab|ort_gadg|
|00024050| 65 74 2d 3e 4c 65 66 74 | 45 64 67 65 20 2d 20 31 |et->Left|Edge - 1|
|00024060| 2c 20 73 70 2d 3e 73 74 | 61 74 75 73 5f 77 69 6e |, sp->st|atus_win|
|00024070| 64 6f 77 2d 3e 48 65 69 | 67 68 74 20 2d 20 73 70 |dow->Hei|ght - sp|
|00024080| 2d 3e 73 74 61 74 75 73 | 5f 77 69 6e 64 6f 77 2d |->status|_window-|
|00024090| 3e 42 6f 72 64 65 72 42 | 6f 74 74 6f 6d 20 2d 20 |>BorderB|ottom - |
|000240a0| 31 29 3b 0a 09 0a 09 52 | 65 63 74 46 69 6c 6c 28 |1);....R|ectFill(|
|000240b0| 73 70 2d 3e 73 74 61 74 | 75 73 5f 77 69 6e 64 6f |sp->stat|us_windo|
|000240c0| 77 2d 3e 52 50 6f 72 74 | 2c 20 73 70 2d 3e 61 62 |w->RPort|, sp->ab|
|000240d0| 6f 72 74 5f 67 61 64 67 | 65 74 2d 3e 4c 65 66 74 |ort_gadg|et->Left|
|000240e0| 45 64 67 65 2c 20 73 70 | 2d 3e 73 74 61 74 75 73 |Edge, sp|->status|
|000240f0| 5f 77 69 6e 64 6f 77 2d | 3e 42 6f 72 64 65 72 54 |_window-|>BorderT|
|00024100| 6f 70 2c 0a 09 09 73 70 | 2d 3e 73 74 61 74 75 73 |op,...sp|->status|
|00024110| 5f 77 69 6e 64 6f 77 2d | 3e 57 69 64 74 68 20 2d |_window-|>Width -|
|00024120| 20 73 70 2d 3e 73 74 61 | 74 75 73 5f 77 69 6e 64 | sp->sta|tus_wind|
|00024130| 6f 77 2d 3e 42 6f 72 64 | 65 72 52 69 67 68 74 20 |ow->Bord|erRight |
|00024140| 2d 20 31 2c 20 0a 09 09 | 73 70 2d 3e 61 62 6f 72 |- 1, ...|sp->abor|
|00024150| 74 5f 67 61 64 67 65 74 | 2d 3e 54 6f 70 45 64 67 |t_gadget|->TopEdg|
|00024160| 65 20 2d 20 31 29 3b 0a | 7d 0a 0a 76 6f 69 64 20 |e - 1);.|}..void |
|00024170| 6f 70 65 6e 5f 73 74 61 | 74 75 73 5f 77 69 6e 64 |open_sta|tus_wind|
|00024180| 6f 77 28 73 69 74 65 20 | 2a 73 70 2c 20 73 74 72 |ow(site |*sp, str|
|00024190| 75 63 74 20 4d 73 67 50 | 6f 72 74 20 2a 77 70 6f |uct MsgP|ort *wpo|
|000241a0| 72 74 2c 20 73 74 72 75 | 63 74 20 49 6e 74 75 69 |rt, stru|ct Intui|
|000241b0| 74 69 6f 6e 42 61 73 65 | 20 2a 49 6e 74 75 69 74 |tionBase| *Intuit|
|000241c0| 69 6f 6e 42 61 73 65 2c | 20 73 74 72 75 63 74 20 |ionBase,| struct |
|000241d0| 47 66 78 42 61 73 65 20 | 2a 47 66 78 42 61 73 65 |GfxBase |*GfxBase|
|000241e0| 29 0a 7b 0a 09 73 74 72 | 75 63 74 20 53 63 72 65 |).{..str|uct Scre|
|000241f0| 65 6e 20 2a 73 3b 0a 09 | 73 74 72 75 63 74 20 52 |en *s;..|struct R|
|00024200| 65 63 74 61 6e 67 6c 65 | 20 72 65 63 74 3b 0a 09 |ectangle| rect;..|
|00024210| 62 33 32 20 73 63 72 65 | 65 6e 5f 6d 6f 64 65 49 |b32 scre|en_modeI|
|00024220| 44 3b 0a 09 73 74 72 75 | 63 74 20 47 61 64 67 65 |D;..stru|ct Gadge|
|00024230| 74 20 2a 61 62 6f 72 67 | 2c 20 2a 64 69 73 67 3b |t *aborg|, *disg;|
|00024240| 0a 09 62 31 36 20 73 77 | 69 64 74 68 2c 20 73 68 |..b16 sw|idth, sh|
|00024250| 65 69 67 68 74 2c 20 66 | 68 65 69 67 68 74 3b 0a |eight, f|height;.|
|00024260| 09 73 74 72 75 63 74 20 | 57 69 6e 64 6f 77 20 2a |.struct |Window *|
|00024270| 77 3b 0a 0a 09 76 65 72 | 69 66 79 28 73 70 2c 20 |w;...ver|ify(sp, |
|00024280| 56 5f 73 69 74 65 29 3b | 0a 09 0a 09 69 66 20 28 |V_site);|....if (|
|00024290| 73 70 2d 3e 73 74 61 74 | 75 73 5f 77 69 6e 64 6f |sp->stat|us_windo|
|000242a0| 77 29 20 7b 0a 09 09 57 | 69 6e 64 6f 77 54 6f 46 |w) {...W|indowToF|
|000242b0| 72 6f 6e 74 28 73 70 2d | 3e 73 74 61 74 75 73 5f |ront(sp-|>status_|
|000242c0| 77 69 6e 64 6f 77 29 3b | 0a 09 09 41 63 74 69 76 |window);|...Activ|
|000242d0| 61 74 65 57 69 6e 64 6f | 77 28 73 70 2d 3e 73 74 |ateWindo|w(sp->st|
|000242e0| 61 74 75 73 5f 77 69 6e | 64 6f 77 29 3b 0a 09 09 |atus_win|dow);...|
|000242f0| 72 65 74 75 72 6e 3b 0a | 09 7d 0a 09 0a 09 73 20 |return;.|.}....s |
|00024300| 3d 20 4c 6f 63 6b 50 75 | 62 53 63 72 65 65 6e 28 |= LockPu|bScreen(|
|00024310| 6e 69 6c 29 3b 0a 09 69 | 66 20 28 21 73 29 20 72 |nil);..i|f (!s) r|
|00024320| 65 74 75 72 6e 3b 0a 09 | 0a 09 69 66 20 28 73 2d |eturn;..|..if (s-|
|00024330| 3e 46 6f 6e 74 29 20 66 | 68 65 69 67 68 74 20 3d |>Font) f|height =|
|00024340| 20 73 2d 3e 46 6f 6e 74 | 2d 3e 74 61 5f 59 53 69 | s->Font|->ta_YSi|
|00024350| 7a 65 3b 0a 09 65 6c 73 | 65 20 66 68 65 69 67 68 |ze;..els|e fheigh|
|00024360| 74 20 3d 20 38 3b 0a 09 | 0a 09 73 63 72 65 65 6e |t = 8;..|..screen|
|00024370| 5f 6d 6f 64 65 49 44 20 | 3d 20 47 65 74 56 50 4d |_modeID |= GetVPM|
|00024380| 6f 64 65 49 44 28 26 73 | 2d 3e 56 69 65 77 50 6f |odeID(&s|->ViewPo|
|00024390| 72 74 29 3b 0a 09 69 66 | 20 28 73 63 72 65 65 6e |rt);..if| (screen|
|000243a0| 5f 6d 6f 64 65 49 44 20 | 21 3d 20 49 4e 56 41 4c |_modeID |!= INVAL|
|000243b0| 49 44 5f 49 44 29 20 7b | 0a 09 09 69 66 20 28 51 |ID_ID) {|...if (Q|
|000243c0| 75 65 72 79 4f 76 65 72 | 73 63 61 6e 28 73 63 72 |ueryOver|scan(scr|
|000243d0| 65 65 6e 5f 6d 6f 64 65 | 49 44 2c 20 26 72 65 63 |een_mode|ID, &rec|
|000243e0| 74 2c 20 4f 53 43 41 4e | 5f 54 45 58 54 29 29 20 |t, OSCAN|_TEXT)) |
|000243f0| 7b 0a 09 09 09 61 62 6f | 72 67 20 3d 20 6d 61 6b |{....abo|rg = mak|
|00024400| 65 5f 67 61 64 67 65 74 | 28 61 62 6f 72 74 5f 67 |e_gadget|(abort_g|
|00024410| 69 6d 29 3b 0a 09 09 09 | 69 66 20 28 61 62 6f 72 |im);....|if (abor|
|00024420| 67 29 20 7b 0a 09 09 09 | 09 61 62 6f 72 67 2d 3e |g) {....|.aborg->|
|00024430| 47 61 64 67 65 74 49 44 | 20 3d 20 31 3b 0a 09 09 |GadgetID| = 1;...|
|00024440| 09 09 64 69 73 67 20 3d | 20 6d 61 6b 65 5f 67 61 |..disg =| make_ga|
|00024450| 64 67 65 74 28 64 69 73 | 63 6f 6e 6e 65 63 74 5f |dget(dis|connect_|
|00024460| 67 69 6d 29 3b 0a 09 09 | 09 09 69 66 20 28 64 69 |gim);...|..if (di|
|00024470| 73 67 29 20 7b 0a 09 09 | 09 09 09 64 69 73 67 2d |sg) {...|...disg-|
|00024480| 3e 47 61 64 67 65 74 49 | 44 20 3d 20 32 3b 0a 09 |>GadgetI|D = 2;..|
|00024490| 09 09 09 09 73 77 69 64 | 74 68 20 3d 20 72 65 63 |....swid|th = rec|
|000244a0| 74 2e 4d 61 78 58 20 2d | 20 72 65 63 74 2e 4d 69 |t.MaxX -| rect.Mi|
|000244b0| 6e 58 20 2b 20 31 3b 0a | 09 09 09 09 09 73 68 65 |nX + 1;.|.....she|
|000244c0| 69 67 68 74 20 3d 20 72 | 65 63 74 2e 4d 61 78 59 |ight = r|ect.MaxY|
|000244d0| 20 2d 20 72 65 63 74 2e | 4d 69 6e 59 20 2b 20 31 | - rect.|MinY + 1|
|000244e0| 3b 0a 09 09 09 09 09 0a | 09 09 09 09 09 77 20 3d |;.......|.....w =|
|000244f0| 20 4f 70 65 6e 57 69 6e | 64 6f 77 54 61 67 73 28 | OpenWin|dowTags(|
|00024500| 6e 69 6c 2c 0a 09 09 09 | 09 09 09 57 41 5f 4c 65 |nil,....|...WA_Le|
|00024510| 66 74 2c 09 73 77 69 64 | 74 68 20 2f 20 34 20 2d |ft,.swid|th / 4 -|
|00024520| 20 73 2d 3e 4c 65 66 74 | 45 64 67 65 2c 0a 09 09 | s->Left|Edge,...|
|00024530| 09 09 09 09 57 41 5f 54 | 6f 70 2c 09 09 73 68 65 |....WA_T|op,..she|
|00024540| 69 67 68 74 20 2f 20 33 | 20 2d 20 73 2d 3e 54 6f |ight / 3| - s->To|
|00024550| 70 45 64 67 65 2c 0a 09 | 09 09 09 09 09 57 41 5f |pEdge,..|.....WA_|
|00024560| 57 69 64 74 68 2c 09 73 | 77 69 64 74 68 20 2f 20 |Width,.s|width / |
|00024570| 32 2c 0a 09 09 09 09 09 | 09 57 41 5f 48 65 69 67 |2,......|.WA_Heig|
|00024580| 68 74 2c 09 66 68 65 69 | 67 68 74 20 2a 20 34 20 |ht,.fhei|ght * 4 |
|00024590| 2b 20 64 69 73 67 2d 3e | 48 65 69 67 68 74 2c 0a |+ disg->|Height,.|
|000245a0| 09 09 09 09 09 09 57 41 | 5f 46 6c 61 67 73 2c 09 |......WA|_Flags,.|
|000245b0| 57 46 4c 47 5f 44 45 50 | 54 48 47 41 44 47 45 54 |WFLG_DEP|THGADGET|
|000245c0| 20 7c 20 57 46 4c 47 5f | 44 52 41 47 42 41 52 20 | | WFLG_|DRAGBAR |
|000245d0| 7c 0a 09 09 09 09 09 09 | 09 09 57 46 4c 47 5f 53 ||.......|..WFLG_S|
|000245e0| 4d 41 52 54 5f 52 45 46 | 52 45 53 48 20 7c 20 0a |MART_REF|RESH | .|
|000245f0| 09 09 09 09 09 09 09 09 | 57 46 4c 47 5f 43 4c 4f |........|WFLG_CLO|
|00024600| 53 45 47 41 44 47 45 54 | 20 7c 0a 09 09 09 09 09 |SEGADGET| |......|
|00024610| 09 09 09 57 46 4c 47 5f | 4e 4f 43 41 52 45 52 45 |...WFLG_|NOCARERE|
|00024620| 46 52 45 53 48 2c 0a 09 | 09 09 09 09 09 57 41 5f |FRESH,..|.....WA_|
|00024630| 49 44 43 4d 50 2c 09 30 | 2c 0a 09 09 09 09 09 09 |IDCMP,.0|,.......|
|00024640| 57 41 5f 50 75 62 53 63 | 72 65 65 6e 2c 09 73 2c |WA_PubSc|reen,.s,|
|00024650| 0a 09 09 09 09 09 09 57 | 41 5f 54 69 74 6c 65 2c |.......W|A_Title,|
|00024660| 09 73 70 2d 3e 6e 61 6d | 65 2c 0a 09 09 09 09 09 |.sp->nam|e,......|
|00024670| 09 54 41 47 5f 45 4e 44 | 2c 09 30 0a 09 09 09 09 |.TAG_END|,.0.....|
|00024680| 09 29 3b 0a 09 09 09 09 | 09 69 66 20 28 77 29 20 |.);.....|.if (w) |
|00024690| 7b 0a 09 09 09 09 09 09 | 55 6e 6c 6f 63 6b 50 75 |{.......|UnlockPu|
|000246a0| 62 53 63 72 65 65 6e 28 | 6e 69 6c 2c 20 73 29 3b |bScreen(|nil, s);|
|000246b0| 0a 09 09 09 09 09 09 77 | 2d 3e 55 73 65 72 50 6f |.......w|->UserPo|
|000246c0| 72 74 20 3d 20 77 70 6f | 72 74 3b 0a 09 09 09 09 |rt = wpo|rt;.....|
|000246d0| 09 09 4d 6f 64 69 66 79 | 49 44 43 4d 50 28 77 2c |..Modify|IDCMP(w,|
|000246e0| 20 49 44 43 4d 50 5f 43 | 4c 4f 53 45 57 49 4e 44 | IDCMP_C|LOSEWIND|
|000246f0| 4f 57 20 7c 20 49 44 43 | 4d 50 5f 47 41 44 47 45 |OW | IDC|MP_GADGE|
|00024700| 54 55 50 29 3b 0a 09 09 | 09 09 09 09 0a 09 09 09 |TUP);...|........|
|00024710| 09 09 09 61 62 6f 72 67 | 2d 3e 4e 65 78 74 47 61 |...aborg|->NextGa|
|00024720| 64 67 65 74 20 3d 20 64 | 69 73 67 3b 0a 09 09 09 |dget = d|isg;....|
|00024730| 09 09 09 64 69 73 67 2d | 3e 4e 65 78 74 47 61 64 |...disg-|>NextGad|
|00024740| 67 65 74 20 3d 20 6e 69 | 6c 3b 0a 09 09 09 09 09 |get = ni|l;......|
|00024750| 09 0a 09 09 09 09 09 09 | 73 70 2d 3e 61 62 6f 72 |........|sp->abor|
|00024760| 74 5f 67 61 64 67 65 74 | 20 3d 20 61 62 6f 72 67 |t_gadget| = aborg|
|00024770| 3b 0a 09 09 09 09 09 09 | 73 70 2d 3e 64 69 73 63 |;.......|sp->disc|
|00024780| 6f 6e 6e 65 63 74 5f 67 | 61 64 67 65 74 20 3d 20 |onnect_g|adget = |
|00024790| 64 69 73 67 3b 0a 09 09 | 09 09 09 09 0a 09 09 09 |disg;...|........|
|000247a0| 09 09 09 64 69 73 67 2d | 3e 4c 65 66 74 45 64 67 |...disg-|>LeftEdg|
|000247b0| 65 20 3d 20 77 2d 3e 57 | 69 64 74 68 20 2d 20 77 |e = w->W|idth - w|
|000247c0| 2d 3e 42 6f 72 64 65 72 | 52 69 67 68 74 20 2d 20 |->Border|Right - |
|000247d0| 64 69 73 67 2d 3e 57 69 | 64 74 68 20 2d 20 66 68 |disg->Wi|dth - fh|
|000247e0| 65 69 67 68 74 20 2f 20 | 32 3b 0a 09 09 09 09 09 |eight / |2;......|
|000247f0| 09 64 69 73 67 2d 3e 54 | 6f 70 45 64 67 65 20 3d |.disg->T|opEdge =|
|00024800| 20 77 2d 3e 48 65 69 67 | 68 74 20 2d 20 77 2d 3e | w->Heig|ht - w->|
|00024810| 42 6f 72 64 65 72 42 6f | 74 74 6f 6d 20 2d 20 64 |BorderBo|ttom - d|
|00024820| 69 73 67 2d 3e 48 65 69 | 67 68 74 20 2d 20 66 68 |isg->Hei|ght - fh|
|00024830| 65 69 67 68 74 20 2f 20 | 33 3b 0a 09 09 09 09 09 |eight / |3;......|
|00024840| 09 0a 09 09 09 09 09 09 | 61 62 6f 72 67 2d 3e 54 |........|aborg->T|
|00024850| 6f 70 45 64 67 65 20 3d | 20 64 69 73 67 2d 3e 54 |opEdge =| disg->T|
|00024860| 6f 70 45 64 67 65 3b 0a | 09 09 09 09 09 09 61 62 |opEdge;.|......ab|
|00024870| 6f 72 67 2d 3e 4c 65 66 | 74 45 64 67 65 20 3d 20 |org->Lef|tEdge = |
|00024880| 64 69 73 67 2d 3e 4c 65 | 66 74 45 64 67 65 20 2d |disg->Le|ftEdge -|
|00024890| 20 61 62 6f 72 67 2d 3e | 57 69 64 74 68 20 2d 20 | aborg->|Width - |
|000248a0| 66 68 65 69 67 68 74 20 | 2f 20 32 3b 0a 09 09 09 |fheight |/ 2;....|
|000248b0| 09 09 09 0a 09 09 09 09 | 09 09 41 64 64 47 4c 69 |........|..AddGLi|
|000248c0| 73 74 28 77 2c 20 61 62 | 6f 72 67 2c 20 28 62 33 |st(w, ab|org, (b3|
|000248d0| 32 29 2d 31 2c 20 32 2c | 20 6e 69 6c 29 3b 0a 09 |2)-1, 2,| nil);..|
|000248e0| 09 09 09 09 09 52 65 66 | 72 65 73 68 47 61 64 67 |.....Ref|reshGadg|
|000248f0| 65 74 73 28 61 62 6f 72 | 67 2c 20 77 2c 20 6e 69 |ets(abor|g, w, ni|
|00024900| 6c 29 3b 0a 09 09 09 09 | 09 09 0a 09 09 09 09 09 |l);.....|........|
|00024910| 09 73 70 2d 3e 73 74 61 | 74 75 73 5f 77 69 6e 64 |.sp->sta|tus_wind|
|00024920| 6f 77 20 3d 20 77 3b 0a | 09 09 09 09 09 09 77 2d |ow = w;.|......w-|
|00024930| 3e 55 73 65 72 44 61 74 | 61 20 3d 20 28 76 6f 69 |>UserDat|a = (voi|
|00024940| 64 20 2a 29 73 70 3b 0a | 09 09 09 09 09 09 0a 09 |d *)sp;.|........|
|00024950| 09 09 09 09 09 64 72 61 | 77 5f 73 74 61 74 65 28 |.....dra|w_state(|
|00024960| 73 70 2c 20 49 6e 74 75 | 69 74 69 6f 6e 42 61 73 |sp, Intu|itionBas|
|00024970| 65 2c 20 47 66 78 42 61 | 73 65 29 3b 0a 09 09 09 |e, GfxBa|se);....|
|00024980| 09 09 09 0a 09 09 09 09 | 09 09 72 65 74 75 72 6e |........|..return|
|00024990| 3b 0a 09 09 09 09 09 7d | 0a 09 09 09 09 09 66 72 |;......}|......fr|
|000249a0| 65 65 5f 67 61 64 67 65 | 74 28 64 69 73 67 29 3b |ee_gadge|t(disg);|
|000249b0| 0a 09 09 09 09 7d 0a 09 | 09 09 09 66 72 65 65 5f |.....}..|...free_|
|000249c0| 67 61 64 67 65 74 28 61 | 62 6f 72 67 29 3b 0a 09 |gadget(a|borg);..|
|000249d0| 09 09 7d 0a 09 09 7d 0a | 09 7d 0a 09 0a 09 55 6e |..}...}.|.}....Un|
|000249e0| 6c 6f 63 6b 50 75 62 53 | 63 72 65 65 6e 28 6e 69 |lockPubS|creen(ni|
|000249f0| 6c 2c 20 73 29 3b 0a 09 | 72 65 74 75 72 6e 3b 0a |l, s);..|return;.|
|00024a00| 7d 0a 0a 76 6f 69 64 20 | 63 6c 6f 73 65 5f 73 74 |}..void |close_st|
|00024a10| 61 74 75 73 5f 77 69 6e | 64 6f 77 28 73 69 74 65 |atus_win|dow(site|
|00024a20| 20 2a 73 70 2c 20 73 74 | 72 75 63 74 20 4d 73 67 | *sp, st|ruct Msg|
|00024a30| 50 6f 72 74 20 2a 77 70 | 6f 72 74 2c 20 73 74 72 |Port *wp|ort, str|
|00024a40| 75 63 74 20 49 6e 74 75 | 69 74 69 6f 6e 42 61 73 |uct Intu|itionBas|
|00024a50| 65 20 2a 49 6e 74 75 69 | 74 69 6f 6e 42 61 73 65 |e *Intui|tionBase|
|00024a60| 29 0a 7b 0a 09 73 74 72 | 75 63 74 20 49 6e 74 75 |).{..str|uct Intu|
|00024a70| 69 4d 65 73 73 61 67 65 | 20 2a 69 6d 3b 0a 09 73 |iMessage| *im;..s|
|00024a80| 74 72 75 63 74 20 4e 6f | 64 65 20 2a 73 75 63 63 |truct No|de *succ|
|00024a90| 3b 0a 09 73 74 72 75 63 | 74 20 57 69 6e 64 6f 77 |;..struc|t Window|
|00024aa0| 20 2a 77 3b 0a 09 0a 09 | 76 65 72 69 66 79 28 73 | *w;....|verify(s|
|00024ab0| 70 2c 20 56 5f 73 69 74 | 65 29 3b 0a 09 0a 09 77 |p, V_sit|e);....w|
|00024ac0| 20 3d 20 73 70 2d 3e 73 | 74 61 74 75 73 5f 77 69 | = sp->s|tatus_wi|
|00024ad0| 6e 64 6f 77 3b 0a 09 0a | 09 69 66 20 28 21 77 29 |ndow;...|.if (!w)|
|00024ae0| 20 72 65 74 75 72 6e 3b | 0a 09 0a 09 46 6f 72 62 | return;|....Forb|
|00024af0| 69 64 28 29 3b 0a 09 69 | 6d 20 3d 20 28 73 74 72 |id();..i|m = (str|
|00024b00| 75 63 74 20 49 6e 74 75 | 69 4d 65 73 73 61 67 65 |uct Intu|iMessage|
|00024b10| 20 2a 29 77 70 6f 72 74 | 2d 3e 6d 70 5f 4d 73 67 | *)wport|->mp_Msg|
|00024b20| 4c 69 73 74 2e 6c 68 5f | 48 65 61 64 3b 0a 09 77 |List.lh_|Head;..w|
|00024b30| 68 69 6c 65 20 28 73 75 | 63 63 20 3d 20 69 6d 2d |hile (su|cc = im-|
|00024b40| 3e 45 78 65 63 4d 65 73 | 73 61 67 65 2e 6d 6e 5f |>ExecMes|sage.mn_|
|00024b50| 4e 6f 64 65 2e 6c 6e 5f | 53 75 63 63 29 20 7b 0a |Node.ln_|Succ) {.|
|00024b60| 09 09 69 66 20 28 69 6d | 2d 3e 49 44 43 4d 50 57 |..if (im|->IDCMPW|
|00024b70| 69 6e 64 6f 77 20 3d 3d | 20 77 29 20 7b 0a 09 09 |indow ==| w) {...|
|00024b80| 09 52 65 6d 6f 76 65 28 | 28 73 74 72 75 63 74 20 |.Remove(|(struct |
|00024b90| 4e 6f 64 65 20 2a 29 69 | 6d 29 3b 0a 09 09 09 52 |Node *)i|m);....R|
|00024ba0| 65 70 6c 79 4d 73 67 28 | 28 73 74 72 75 63 74 20 |eplyMsg(|(struct |
|00024bb0| 4d 65 73 73 61 67 65 20 | 2a 29 69 6d 29 3b 0a 09 |Message |*)im);..|
|00024bc0| 09 7d 0a 09 09 69 6d 20 | 3d 20 28 73 74 72 75 63 |.}...im |= (struc|
|00024bd0| 74 20 49 6e 74 75 69 4d | 65 73 73 61 67 65 20 2a |t IntuiM|essage *|
|00024be0| 29 73 75 63 63 3b 0a 09 | 7d 0a 09 0a 09 77 2d 3e |)succ;..|}....w->|
|00024bf0| 55 73 65 72 50 6f 72 74 | 20 3d 20 6e 69 6c 3b 0a |UserPort| = nil;.|
|00024c00| 09 4d 6f 64 69 66 79 49 | 44 43 4d 50 28 77 2c 20 |.ModifyI|DCMP(w, |
|00024c10| 30 29 3b 0a 09 50 65 72 | 6d 69 74 28 29 3b 0a 09 |0);..Per|mit();..|
|00024c20| 0a 09 43 6c 6f 73 65 57 | 69 6e 64 6f 77 28 77 29 |..CloseW|indow(w)|
|00024c30| 3b 0a 09 0a 09 66 72 65 | 65 5f 67 61 64 67 65 74 |;....fre|e_gadget|
|00024c40| 28 73 70 2d 3e 61 62 6f | 72 74 5f 67 61 64 67 65 |(sp->abo|rt_gadge|
|00024c50| 74 29 3b 0a 09 66 72 65 | 65 5f 67 61 64 67 65 74 |t);..fre|e_gadget|
|00024c60| 28 73 70 2d 3e 64 69 73 | 63 6f 6e 6e 65 63 74 5f |(sp->dis|connect_|
|00024c70| 67 61 64 67 65 74 29 3b | 0a 09 0a 09 73 70 2d 3e |gadget);|....sp->|
|00024c80| 73 74 61 74 75 73 5f 77 | 69 6e 64 6f 77 20 3d 20 |status_w|indow = |
|00024c90| 6e 69 6c 3b 0a 09 0a 09 | 72 65 74 75 72 6e 3b 0a |nil;....|return;.|
|00024ca0| 7d 0a 0a 76 6f 69 64 20 | 5f 5f 73 61 76 65 64 73 |}..void |__saveds|
|00024cb0| 20 73 74 61 74 75 73 5f | 68 61 6e 64 6c 65 72 28 | status_|handler(|
|00024cc0| 76 6f 69 64 29 0a 7b 0a | 09 73 74 72 75 63 74 20 |void).{.|.struct |
|00024cd0| 50 72 6f 63 65 73 73 20 | 2a 6d 65 3b 0a 09 73 74 |Process |*me;..st|
|00024ce0| 72 75 63 74 20 4d 73 67 | 50 6f 72 74 20 2a 72 61 |ruct Msg|Port *ra|
|00024cf0| 6e 6b 2c 20 2a 73 79 6e | 63 2c 20 2a 6d 79 70 6f |nk, *syn|c, *mypo|
|00024d00| 72 74 2c 20 2a 63 78 70 | 6f 72 74 2c 20 2a 77 69 |rt, *cxp|ort, *wi|
|00024d10| 6e 70 6f 72 74 3b 0a 09 | 73 74 61 74 75 73 5f 6d |nport;..|status_m|
|00024d20| 65 73 73 61 67 65 20 2a | 72 65 73 65 72 76 65 2c |essage *|reserve,|
|00024d30| 20 2a 73 74 61 72 74 75 | 70 2c 20 2a 73 6d 3b 0a | *startu|p, *sm;.|
|00024d40| 09 73 74 72 75 63 74 20 | 4c 69 62 72 61 72 79 20 |.struct |Library |
|00024d50| 2a 47 61 64 54 6f 6f 6c | 73 42 61 73 65 2c 20 2a |*GadTool|sBase, *|
|00024d60| 43 78 42 61 73 65 3b 0a | 09 73 74 72 75 63 74 20 |CxBase;.|.struct |
|00024d70| 49 6e 74 75 69 74 69 6f | 6e 42 61 73 65 20 2a 49 |Intuitio|nBase *I|
|00024d80| 6e 74 75 69 74 69 6f 6e | 42 61 73 65 3b 0a 09 73 |ntuition|Base;..s|
|00024d90| 74 72 75 63 74 20 47 66 | 78 42 61 73 65 20 2a 47 |truct Gf|xBase *G|
|00024da0| 66 78 42 61 73 65 3b 0a | 09 43 78 4f 62 6a 20 2a |fxBase;.|.CxObj *|
|00024db0| 62 72 6f 6b 65 72 2c 20 | 2a 66 69 6c 74 65 72 2c |broker, |*filter,|
|00024dc0| 20 2a 73 65 6e 64 65 72 | 2c 20 2a 74 72 61 6e 73 | *sender|, *trans|
|00024dd0| 6c 61 74 65 3b 0a 09 43 | 78 4d 73 67 20 2a 63 78 |late;..C|xMsg *cx|
|00024de0| 6d 73 67 3b 0a 09 62 33 | 32 20 73 69 67 6e 61 6c |msg;..b3|2 signal|
|00024df0| 73 3b 0a 09 62 33 32 20 | 6d 73 67 69 64 2c 20 6d |s;..b32 |msgid, m|
|00024e00| 73 67 74 79 70 65 3b 0a | 09 73 74 72 75 63 74 20 |sgtype;.|.struct |
|00024e10| 57 69 6e 64 6f 77 20 2a | 6d 61 69 6e 77 3b 0a 09 |Window *|mainw;..|
|00024e20| 73 74 72 75 63 74 20 4e | 65 77 42 72 6f 6b 65 72 |struct N|ewBroker|
|00024e30| 20 6e 62 3b 0a 09 73 74 | 72 75 63 74 20 4c 69 73 | nb;..st|ruct Lis|
|00024e40| 74 20 2a 73 69 74 65 5f | 6c 61 62 65 6c 73 3b 0a |t *site_|labels;.|
|00024e50| 09 73 74 72 75 63 74 20 | 49 6e 74 75 69 4d 65 73 |.struct |IntuiMes|
|00024e60| 73 61 67 65 20 2a 69 6d | 73 67 3b 0a 09 73 74 72 |sage *im|sg;..str|
|00024e70| 75 63 74 20 4e 6f 64 65 | 20 2a 6e 3b 0a 09 73 69 |uct Node| *n;..si|
|00024e80| 74 65 20 2a 73 70 3b 0a | 09 0a 09 6d 61 69 6e 77 |te *sp;.|...mainw|
|00024e90| 20 3d 20 6e 69 6c 3b 0a | 09 73 69 74 65 5f 6c 61 | = nil;.|.site_la|
|00024ea0| 62 65 6c 73 20 3d 20 6e | 69 6c 3b 0a 09 0a 09 6d |bels = n|il;....m|
|00024eb0| 65 20 3d 20 28 73 74 72 | 75 63 74 20 50 72 6f 63 |e = (str|uct Proc|
|00024ec0| 65 73 73 20 2a 29 46 69 | 6e 64 54 61 73 6b 28 30 |ess *)Fi|ndTask(0|
|00024ed0| 6c 29 3b 0a 09 6d 79 70 | 6f 72 74 20 3d 20 26 6d |l);..myp|ort = &m|
|00024ee0| 65 2d 3e 70 72 5f 4d 73 | 67 50 6f 72 74 3b 0a 09 |e->pr_Ms|gPort;..|
|00024ef0| 0a 09 57 61 69 74 50 6f | 72 74 28 6d 79 70 6f 72 |..WaitPo|rt(mypor|
|00024f00| 74 29 3b 0a 09 73 74 61 | 72 74 75 70 20 3d 20 28 |t);..sta|rtup = (|
|00024f10| 73 74 61 74 75 73 5f 6d | 65 73 73 61 67 65 20 2a |status_m|essage *|
|00024f20| 29 47 65 74 4d 73 67 28 | 6d 79 70 6f 72 74 29 3b |)GetMsg(|myport);|
|00024f30| 0a 09 0a 09 6d 65 6d 5f | 74 72 61 63 6b 69 6e 67 |....mem_|tracking|
|00024f40| 5f 6f 6e 28 29 3b 0a 09 | 0a 09 49 6e 74 75 69 74 |_on();..|..Intuit|
|00024f50| 69 6f 6e 42 61 73 65 20 | 3d 20 28 73 74 72 75 63 |ionBase |= (struc|
|00024f60| 74 20 49 6e 74 75 69 74 | 69 6f 6e 42 61 73 65 20 |t Intuit|ionBase |
|00024f70| 2a 29 4f 70 65 6e 4c 69 | 62 72 61 72 79 28 22 69 |*)OpenLi|brary("i|
|00024f80| 6e 74 75 69 74 69 6f 6e | 2e 6c 69 62 72 61 72 79 |ntuition|.library|
|00024f90| 22 2c 20 33 36 29 3b 0a | 09 69 66 20 28 49 6e 74 |", 36);.|.if (Int|
|00024fa0| 75 69 74 69 6f 6e 42 61 | 73 65 29 20 7b 0a 09 09 |uitionBa|se) {...|
|00024fb0| 47 66 78 42 61 73 65 20 | 3d 20 28 73 74 72 75 63 |GfxBase |= (struc|
|00024fc0| 74 20 47 66 78 42 61 73 | 65 20 2a 29 4f 70 65 6e |t GfxBas|e *)Open|
|00024fd0| 4c 69 62 72 61 72 79 28 | 22 67 72 61 70 68 69 63 |Library(|"graphic|
|00024fe0| 73 2e 6c 69 62 72 61 72 | 79 22 2c 20 33 36 29 3b |s.librar|y", 36);|
|00024ff0| 0a 09 09 69 66 20 28 47 | 66 78 42 61 73 65 29 20 |...if (G|fxBase) |
|00025000| 7b 0a 09 09 09 47 61 64 | 54 6f 6f 6c 73 42 61 73 |{....Gad|ToolsBas|
|00025010| 65 20 3d 20 4f 70 65 6e | 4c 69 62 72 61 72 79 28 |e = Open|Library(|
|00025020| 22 67 61 64 74 6f 6f 6c | 73 2e 6c 69 62 72 61 72 |"gadtool|s.librar|
|00025030| 79 22 2c 20 30 29 3b 0a | 09 09 09 69 66 20 28 47 |y", 0);.|...if (G|
|00025040| 61 64 54 6f 6f 6c 73 42 | 61 73 65 29 20 7b 0a 09 |adToolsB|ase) {..|
|00025050| 09 09 09 43 78 42 61 73 | 65 20 3d 20 4f 70 65 6e |...CxBas|e = Open|
|00025060| 4c 69 62 72 61 72 79 28 | 22 63 6f 6d 6d 6f 64 69 |Library(|"commodi|
|00025070| 74 69 65 73 2e 6c 69 62 | 72 61 72 79 22 2c 20 30 |ties.lib|rary", 0|
|00025080| 29 3b 0a 09 09 09 09 69 | 66 20 28 43 78 42 61 73 |);.....i|f (CxBas|
|00025090| 65 29 20 7b 0a 09 09 09 | 09 09 72 61 6e 6b 20 3d |e) {....|..rank =|
|000250a0| 20 43 72 65 61 74 65 50 | 6f 72 74 28 30 2c 20 30 | CreateP|ort(0, 0|
|000250b0| 29 3b 0a 09 09 09 09 09 | 69 66 20 28 72 61 6e 6b |);......|if (rank|
|000250c0| 29 20 7b 0a 09 09 09 09 | 09 09 73 79 6e 63 20 3d |) {.....|..sync =|
|000250d0| 20 43 72 65 61 74 65 50 | 6f 72 74 28 30 2c 20 30 | CreateP|ort(0, 0|
|000250e0| 29 3b 0a 09 09 09 09 09 | 09 69 66 20 28 73 79 6e |);......|.if (syn|
|000250f0| 63 29 20 7b 0a 09 09 09 | 09 09 09 09 63 78 70 6f |c) {....|....cxpo|
|00025100| 72 74 20 3d 20 43 72 65 | 61 74 65 50 6f 72 74 28 |rt = Cre|atePort(|
|00025110| 30 2c 20 30 29 3b 0a 09 | 09 09 09 09 09 09 69 66 |0, 0);..|......if|
|00025120| 20 28 63 78 70 6f 72 74 | 29 20 7b 0a 09 09 09 09 | (cxport|) {.....|
|00025130| 09 09 09 09 77 69 6e 70 | 6f 72 74 20 3d 20 43 72 |....winp|ort = Cr|
|00025140| 65 61 74 65 50 6f 72 74 | 28 30 2c 20 30 29 3b 0a |eatePort|(0, 0);.|
|00025150| 09 09 09 09 09 09 09 09 | 69 66 20 28 77 69 6e 70 |........|if (winp|
|00025160| 6f 72 74 29 20 7b 0a 09 | 09 09 09 09 09 09 09 09 |ort) {..|........|
|00025170| 72 65 73 65 72 76 65 20 | 3d 20 28 73 74 61 74 75 |reserve |= (statu|
|00025180| 73 5f 6d 65 73 73 61 67 | 65 20 2a 29 61 6c 6c 6f |s_messag|e *)allo|
|00025190| 63 61 74 65 5f 66 6c 61 | 67 73 28 73 69 7a 65 6f |cate_fla|gs(sizeo|
|000251a0| 66 28 2a 72 65 73 65 72 | 76 65 29 2c 20 4d 45 4d |f(*reser|ve), MEM|
|000251b0| 46 5f 50 55 42 4c 49 43 | 2c 20 56 5f 73 74 61 74 |F_PUBLIC|, V_stat|
|000251c0| 75 73 5f 6d 65 73 73 61 | 67 65 29 3b 0a 09 09 09 |us_messa|ge);....|
|000251d0| 09 09 09 09 09 09 69 66 | 20 28 72 65 73 65 72 76 |......if| (reserv|
|000251e0| 65 29 20 7b 0a 09 09 09 | 09 09 09 09 09 09 09 65 |e) {....|.......e|
|000251f0| 6e 73 75 72 65 28 72 65 | 73 65 72 76 65 2c 20 56 |nsure(re|serve, V|
|00025200| 5f 73 74 61 74 75 73 5f | 6d 65 73 73 61 67 65 29 |_status_|message)|
|00025210| 3b 0a 09 0a 09 09 09 09 | 09 09 09 09 09 09 72 65 |;.......|......re|
|00025220| 73 65 72 76 65 2d 3e 68 | 65 61 64 65 72 2e 6d 6e |serve->h|eader.mn|
|00025230| 5f 4c 65 6e 67 74 68 20 | 3d 20 73 69 7a 65 6f 66 |_Length |= sizeof|
|00025240| 28 2a 72 65 73 65 72 76 | 65 29 3b 0a 09 09 09 09 |(*reserv|e);.....|
|00025250| 09 09 09 09 09 09 72 65 | 73 65 72 76 65 2d 3e 68 |......re|serve->h|
|00025260| 65 61 64 65 72 2e 6d 6e | 5f 52 65 70 6c 79 50 6f |eader.mn|_ReplyPo|
|00025270| 72 74 20 3d 20 73 79 6e | 63 3b 0a 09 09 09 09 09 |rt = syn|c;......|
|00025280| 09 09 09 09 09 72 65 73 | 65 72 76 65 2d 3e 68 65 |.....res|erve->he|
|00025290| 61 64 65 72 2e 6d 6e 5f | 4e 6f 64 65 2e 6c 6e 5f |ader.mn_|Node.ln_|
|000252a0| 4e 61 6d 65 20 3d 20 22 | 66 74 70 73 74 61 74 75 |Name = "|ftpstatu|
|000252b0| 73 20 72 65 73 65 72 76 | 65 20 6d 65 73 73 61 67 |s reserv|e messag|
|000252c0| 65 22 3b 0a 09 09 09 09 | 09 09 09 09 09 09 72 65 |e";.....|......re|
|000252d0| 73 65 72 76 65 2d 3e 68 | 65 61 64 65 72 2e 6d 6e |serve->h|eader.mn|
|000252e0| 5f 4e 6f 64 65 2e 6c 6e | 5f 54 79 70 65 20 3d 20 |_Node.ln|_Type = |
|000252f0| 4e 54 5f 4d 45 53 53 41 | 47 45 3b 0a 09 09 09 09 |NT_MESSA|GE;.....|
|00025300| 09 09 09 09 09 09 72 65 | 73 65 72 76 65 2d 3e 68 |......re|serve->h|
|00025310| 65 61 64 65 72 2e 6d 6e | 5f 4e 6f 64 65 2e 6c 6e |eader.mn|_Node.ln|
|00025320| 5f 50 72 69 20 3d 20 30 | 3b 0a 09 09 09 09 09 09 |_Pri = 0|;.......|
|00025330| 09 09 0a 09 09 09 09 09 | 09 09 09 09 09 6e 62 2e |........|.....nb.|
|00025340| 6e 62 5f 56 65 72 73 69 | 6f 6e 20 3d 20 4e 42 5f |nb_Versi|on = NB_|
|00025350| 56 45 52 53 49 4f 4e 3b | 0a 09 09 09 09 09 09 09 |VERSION;|........|
|00025360| 09 09 09 6e 62 2e 6e 62 | 5f 4e 61 6d 65 20 3d 20 |...nb.nb|_Name = |
|00025370| 73 74 72 69 6e 67 73 5b | 4d 53 47 5f 42 52 4f 4b |strings[|MSG_BROK|
|00025380| 45 52 5f 4e 41 4d 45 5d | 3b 0a 09 09 09 09 09 09 |ER_NAME]|;.......|
|00025390| 09 09 09 09 6e 62 2e 6e | 62 5f 54 69 74 6c 65 20 |....nb.n|b_Title |
|000253a0| 3d 20 22 46 54 50 4d 6f | 75 6e 74 20 76 22 20 56 |= "FTPMo|unt v" V|
|000253b0| 45 52 53 49 4f 4e 20 22 | 2e 22 20 52 45 56 49 53 |ERSION "|." REVIS|
|000253c0| 49 4f 4e 3b 0a 09 09 09 | 09 09 09 09 09 09 09 6e |ION;....|.......n|
|000253d0| 62 2e 6e 62 5f 44 65 73 | 63 72 20 3d 20 73 74 72 |b.nb_Des|cr = str|
|000253e0| 69 6e 67 73 5b 4d 53 47 | 5f 42 52 4f 4b 45 52 5f |ings[MSG|_BROKER_|
|000253f0| 44 45 53 43 52 5d 3b 0a | 09 09 09 09 09 09 09 09 |DESCR];.|........|
|00025400| 09 09 6e 62 2e 6e 62 5f | 55 6e 69 71 75 65 20 3d |..nb.nb_|Unique =|
|00025410| 20 4e 42 55 5f 44 55 50 | 4c 49 43 41 54 45 3b 0a | NBU_DUP|LICATE;.|
|00025420| 09 09 09 09 09 09 09 09 | 09 09 6e 62 2e 6e 62 5f |........|..nb.nb_|
|00025430| 46 6c 61 67 73 20 3d 20 | 43 4f 46 5f 53 48 4f 57 |Flags = |COF_SHOW|
|00025440| 5f 48 49 44 45 3b 0a 09 | 09 09 09 09 09 09 09 09 |_HIDE;..|........|
|00025450| 09 6e 62 2e 6e 62 5f 50 | 72 69 20 3d 20 30 3b 0a |.nb.nb_P|ri = 0;.|
|00025460| 09 09 09 09 09 09 09 09 | 09 09 6e 62 2e 6e 62 5f |........|..nb.nb_|
|00025470| 50 6f 72 74 20 3d 20 63 | 78 70 6f 72 74 3b 0a 09 |Port = c|xport;..|
|00025480| 09 09 09 09 09 09 09 09 | 09 6e 62 2e 6e 62 5f 52 |........|.nb.nb_R|
|00025490| 65 73 65 72 76 65 64 43 | 68 61 6e 6e 65 6c 20 3d |eservedC|hannel =|
|000254a0| 20 30 3b 0a 09 09 09 09 | 0a 09 09 09 09 09 09 09 | 0;.....|........|
|000254b0| 09 09 09 62 72 6f 6b 65 | 72 20 3d 20 43 78 42 72 |...broke|r = CxBr|
|000254c0| 6f 6b 65 72 28 26 6e 62 | 2c 20 6e 69 6c 29 3b 0a |oker(&nb|, nil);.|
|000254d0| 09 09 09 09 09 09 09 09 | 09 09 69 66 20 28 62 72 |........|..if (br|
|000254e0| 6f 6b 65 72 29 20 7b 0a | 09 09 09 09 09 09 09 09 |oker) {.|........|
|000254f0| 09 09 09 2f 2a 20 74 68 | 69 73 20 68 6f 74 6b 65 |.../* th|is hotke|
|00025500| 79 20 73 74 75 66 66 20 | 74 61 6b 65 6e 20 64 69 |y stuff |taken di|
|00025510| 72 65 63 74 6c 79 20 66 | 72 6f 6d 20 52 4b 4d 20 |rectly f|rom RKM |
|00025520| 65 78 61 6d 70 6c 65 20 | 2a 2f 0a 09 09 09 09 09 |example |*/......|
|00025530| 09 09 09 09 09 09 69 66 | 20 28 66 69 6c 74 65 72 |......if| (filter|
|00025540| 20 3d 20 43 78 46 69 6c | 74 65 72 28 73 74 72 69 | = CxFil|ter(stri|
|00025550| 6e 67 73 5b 4d 53 47 5f | 48 4f 54 4b 45 59 5d 29 |ngs[MSG_|HOTKEY])|
|00025560| 29 20 7b 0a 09 09 09 09 | 09 09 09 09 09 09 09 09 |) {.....|........|
|00025570| 2f 2a 20 69 66 20 77 65 | 20 63 61 6e 27 74 20 61 |/* if we| can't a|
|00025580| 64 64 20 74 68 65 20 68 | 6f 74 6b 65 79 20 73 74 |dd the h|otkey st|
|00025590| 75 66 66 2c 20 64 6f 6e | 27 74 20 66 61 69 6c 20 |uff, don|'t fail |
|000255a0| 2a 2f 0a 09 09 09 09 09 | 09 09 09 09 09 09 09 69 |*/......|.......i|
|000255b0| 66 20 28 73 65 6e 64 65 | 72 20 3d 20 43 78 53 65 |f (sende|r = CxSe|
|000255c0| 6e 64 65 72 28 63 78 70 | 6f 72 74 2c 20 31 29 29 |nder(cxp|ort, 1))|
|000255d0| 20 7b 0a 09 09 09 09 09 | 09 09 09 09 09 09 09 09 | {......|........|
|000255e0| 69 66 20 28 74 72 61 6e | 73 6c 61 74 65 20 3d 20 |if (tran|slate = |
|000255f0| 28 43 78 54 72 61 6e 73 | 6c 61 74 65 28 6e 69 6c |(CxTrans|late(nil|
|00025600| 29 29 29 20 7b 0a 09 09 | 09 09 09 09 09 09 09 09 |))) {...|........|
|00025610| 09 09 09 09 41 74 74 61 | 63 68 43 78 4f 62 6a 28 |....Atta|chCxObj(|
|00025620| 62 72 6f 6b 65 72 2c 20 | 66 69 6c 74 65 72 29 3b |broker, |filter);|
|00025630| 0a 09 09 09 09 09 09 09 | 09 09 09 09 09 09 09 41 |........|.......A|
|00025640| 74 74 61 63 68 43 78 4f | 62 6a 28 66 69 6c 74 65 |ttachCxO|bj(filte|
|00025650| 72 2c 20 73 65 6e 64 65 | 72 29 3b 0a 09 09 09 09 |r, sende|r);.....|
|00025660| 09 09 09 09 09 09 09 09 | 09 09 41 74 74 61 63 68 |........|..Attach|
|00025670| 43 78 4f 62 6a 28 66 69 | 6c 74 65 72 2c 20 74 72 |CxObj(fi|lter, tr|
|00025680| 61 6e 73 6c 61 74 65 29 | 3b 0a 09 09 09 09 09 09 |anslate)|;.......|
|00025690| 09 09 09 09 09 09 09 7d | 0a 09 09 09 09 09 09 09 |.......}|........|
|000256a0| 09 09 09 09 09 7d 0a 09 | 09 09 09 09 09 09 09 09 |.....}..|........|
|000256b0| 09 09 7d 0a 09 09 09 09 | 09 09 09 09 09 09 09 41 |..}.....|.......A|
|000256c0| 63 74 69 76 61 74 65 43 | 78 4f 62 6a 28 62 72 6f |ctivateC|xObj(bro|
|000256d0| 6b 65 72 2c 20 31 6c 29 | 3b 0a 09 09 09 09 09 09 |ker, 1l)|;.......|
|000256e0| 09 09 09 0a 09 09 09 09 | 09 09 09 09 09 09 09 73 |........|.......s|
|000256f0| 74 61 72 74 75 70 2d 3e | 63 6f 6d 6d 61 6e 64 20 |tartup->|command |
|00025700| 3d 20 30 3b 0a 09 09 09 | 09 09 09 09 09 09 09 09 |= 0;....|........|
|00025710| 52 65 70 6c 79 4d 73 67 | 28 26 73 74 61 72 74 75 |ReplyMsg|(&startu|
|00025720| 70 2d 3e 68 65 61 64 65 | 72 29 3b 0a 09 09 09 09 |p->heade|r);.....|
|00025730| 09 09 09 09 09 09 09 67 | 6f 74 6f 20 62 65 67 69 |.......g|oto begi|
|00025740| 6e 5f 6c 69 73 74 65 6e | 69 6e 67 3b 0a 09 09 09 |n_listen|ing;....|
|00025750| 09 09 09 09 09 09 09 7d | 0a 09 09 09 09 09 09 09 |.......}|........|
|00025760| 09 09 09 64 65 61 6c 6c | 6f 63 61 74 65 28 72 65 |...deall|ocate(re|
|00025770| 73 65 72 76 65 2c 20 56 | 5f 73 74 61 74 75 73 5f |serve, V|_status_|
|00025780| 6d 65 73 73 61 67 65 29 | 3b 0a 09 09 09 09 09 09 |message)|;.......|
|00025790| 09 09 09 7d 0a 09 09 09 | 09 09 09 09 09 09 44 65 |...}....|......De|
|000257a0| 6c 65 74 65 50 6f 72 74 | 28 77 69 6e 70 6f 72 74 |letePort|(winport|
|000257b0| 29 3b 0a 09 09 09 09 09 | 09 09 09 7d 0a 09 09 09 |);......|...}....|
|000257c0| 09 09 09 09 09 44 65 6c | 65 74 65 50 6f 72 74 28 |.....Del|etePort(|
|000257d0| 63 78 70 6f 72 74 29 3b | 0a 09 09 09 09 09 09 09 |cxport);|........|
|000257e0| 7d 0a 09 09 09 09 09 09 | 09 44 65 6c 65 74 65 50 |}.......|.DeleteP|
|000257f0| 6f 72 74 28 73 79 6e 63 | 29 3b 0a 09 09 09 09 09 |ort(sync|);......|
|00025800| 09 7d 0a 09 09 09 09 09 | 09 44 65 6c 65 74 65 50 |.}......|.DeleteP|
|00025810| 6f 72 74 28 72 61 6e 6b | 29 3b 0a 09 09 09 09 09 |ort(rank|);......|
|00025820| 7d 0a 09 09 09 09 09 43 | 6c 6f 73 65 4c 69 62 72 |}......C|loseLibr|
|00025830| 61 72 79 28 43 78 42 61 | 73 65 29 3b 0a 09 09 09 |ary(CxBa|se);....|
|00025840| 09 7d 0a 09 09 09 09 43 | 6c 6f 73 65 4c 69 62 72 |.}.....C|loseLibr|
|00025850| 61 72 79 28 47 61 64 54 | 6f 6f 6c 73 42 61 73 65 |ary(GadT|oolsBase|
|00025860| 29 3b 0a 09 09 09 7d 0a | 09 09 09 43 6c 6f 73 65 |);....}.|...Close|
|00025870| 4c 69 62 72 61 72 79 28 | 28 73 74 72 75 63 74 20 |Library(|(struct |
|00025880| 4c 69 62 72 61 72 79 20 | 2a 29 47 66 78 42 61 73 |Library |*)GfxBas|
|00025890| 65 29 3b 0a 09 09 7d 0a | 09 09 43 6c 6f 73 65 4c |e);...}.|..CloseL|
|000258a0| 69 62 72 61 72 79 28 28 | 73 74 72 75 63 74 20 4c |ibrary((|struct L|
|000258b0| 69 62 72 61 72 79 20 2a | 29 49 6e 74 75 69 74 69 |ibrary *|)Intuiti|
|000258c0| 6f 6e 42 61 73 65 29 3b | 0a 09 7d 0a 09 0a 09 73 |onBase);|..}....s|
|000258d0| 74 61 72 74 75 70 2d 3e | 63 6f 6d 6d 61 6e 64 20 |tartup->|command |
|000258e0| 3d 20 53 4d 5f 4b 49 4c | 4c 3b 0a 09 46 6f 72 62 |= SM_KIL|L;..Forb|
|000258f0| 69 64 28 29 3b 0a 09 52 | 65 70 6c 79 4d 73 67 28 |id();..R|eplyMsg(|
|00025900| 26 73 74 61 72 74 75 70 | 2d 3e 68 65 61 64 65 72 |&startup|->header|
|00025910| 29 3b 0a 09 72 65 74 75 | 72 6e 3b 0a 0a 62 65 67 |);..retu|rn;..beg|
|00025920| 69 6e 5f 6c 69 73 74 65 | 6e 69 6e 67 3a 0a 09 73 |in_liste|ning:..s|
|00025930| 69 67 6e 61 6c 73 20 3d | 20 28 31 20 3c 3c 20 6d |ignals =| (1 << m|
|00025940| 79 70 6f 72 74 2d 3e 6d | 70 5f 53 69 67 42 69 74 |yport->m|p_SigBit|
|00025950| 29 20 7c 20 28 31 20 3c | 3c 20 63 78 70 6f 72 74 |) | (1 <|< cxport|
|00025960| 2d 3e 6d 70 5f 53 69 67 | 42 69 74 29 20 7c 20 28 |->mp_Sig|Bit) | (|
|00025970| 31 20 3c 3c 20 77 69 6e | 70 6f 72 74 2d 3e 6d 70 |1 << win|port->mp|
|00025980| 5f 53 69 67 42 69 74 29 | 3b 0a 0a 09 77 68 69 6c |_SigBit)|;...whil|
|00025990| 65 20 28 31 29 20 7b 0a | 09 09 57 61 69 74 28 73 |e (1) {.|..Wait(s|
|000259a0| 69 67 6e 61 6c 73 29 3b | 0a 09 09 0a 09 09 77 68 |ignals);|......wh|
|000259b0| 69 6c 65 20 28 63 78 6d | 73 67 20 3d 20 28 43 78 |ile (cxm|sg = (Cx|
|000259c0| 4d 73 67 20 2a 29 47 65 | 74 4d 73 67 28 63 78 70 |Msg *)Ge|tMsg(cxp|
|000259d0| 6f 72 74 29 29 20 7b 0a | 09 09 09 6d 73 67 69 64 |ort)) {.|...msgid|
|000259e0| 20 3d 20 43 78 4d 73 67 | 49 44 28 63 78 6d 73 67 | = CxMsg|ID(cxmsg|
|000259f0| 29 3b 0a 09 09 09 6d 73 | 67 74 79 70 65 20 3d 20 |);....ms|gtype = |
|00025a00| 43 78 4d 73 67 54 79 70 | 65 28 63 78 6d 73 67 29 |CxMsgTyp|e(cxmsg)|
|00025a10| 3b 0a 09 09 09 0a 09 09 | 09 52 65 70 6c 79 4d 73 |;.......|.ReplyMs|
|00025a20| 67 28 28 73 74 72 75 63 | 74 20 4d 65 73 73 61 67 |g((struc|t Messag|
|00025a30| 65 20 2a 29 63 78 6d 73 | 67 29 3b 0a 09 09 09 0a |e *)cxms|g);.....|
|00025a40| 09 09 09 73 77 69 74 63 | 68 20 28 6d 73 67 74 79 |...switc|h (msgty|
|00025a50| 70 65 29 20 7b 0a 09 09 | 09 63 61 73 65 20 43 58 |pe) {...|.case CX|
|00025a60| 4d 5f 49 45 56 45 4e 54 | 3a 09 2f 2a 20 63 6f 70 |M_IEVENT|:./* cop|
|00025a70| 69 65 64 20 66 72 6f 6d | 20 43 58 43 4d 44 5f 41 |ied from| CXCMD_A|
|00025a80| 50 50 45 41 52 20 62 65 | 6c 6f 77 20 2a 2f 0a 09 |PPEAR be|low */..|
|00025a90| 09 09 09 69 66 20 28 6d | 61 69 6e 77 20 21 3d 20 |...if (m|ainw != |
|00025aa0| 6e 69 6c 29 20 7b 0a 09 | 09 09 09 09 63 6c 6f 73 |nil) {..|....clos|
|00025ab0| 65 5f 6d 61 69 6e 5f 77 | 69 6e 64 6f 77 28 6d 61 |e_main_w|indow(ma|
|00025ac0| 69 6e 77 2c 20 49 6e 74 | 75 69 74 69 6f 6e 42 61 |inw, Int|uitionBa|
|00025ad0| 73 65 2c 20 47 61 64 54 | 6f 6f 6c 73 42 61 73 65 |se, GadT|oolsBase|
|00025ae0| 29 3b 0a 09 09 09 09 09 | 6d 61 69 6e 77 20 3d 20 |);......|mainw = |
|00025af0| 6e 69 6c 3b 0a 09 09 09 | 09 09 66 72 65 65 5f 6c |nil;....|..free_l|
|00025b00| 61 62 65 6c 73 28 73 69 | 74 65 5f 6c 61 62 65 6c |abels(si|te_label|
|00025b10| 73 29 3b 0a 09 09 09 09 | 7d 0a 09 09 09 09 0a 09 |s);.....|}.......|
|00025b20| 09 09 09 73 69 74 65 5f | 6c 61 62 65 6c 73 20 3d |...site_|labels =|
|00025b30| 20 73 69 74 65 5f 6c 69 | 73 74 28 29 3b 0a 09 09 | site_li|st();...|
|00025b40| 09 09 6d 61 69 6e 77 20 | 3d 20 6f 70 65 6e 5f 6d |..mainw |= open_m|
|00025b50| 61 69 6e 5f 77 69 6e 64 | 6f 77 28 73 69 74 65 5f |ain_wind|ow(site_|
|00025b60| 6c 61 62 65 6c 73 2c 20 | 49 6e 74 75 69 74 69 6f |labels, |Intuitio|
|00025b70| 6e 42 61 73 65 2c 20 47 | 61 64 54 6f 6f 6c 73 42 |nBase, G|adToolsB|
|00025b80| 61 73 65 2c 20 47 66 78 | 42 61 73 65 29 3b 0a 09 |ase, Gfx|Base);..|
|00025b90| 09 09 09 73 69 67 6e 61 | 6c 73 20 3d 20 28 31 20 |...signa|ls = (1 |
|00025ba0| 3c 3c 20 63 78 70 6f 72 | 74 2d 3e 6d 70 5f 53 69 |<< cxpor|t->mp_Si|
|00025bb0| 67 42 69 74 29 20 7c 0a | 09 09 09 09 09 09 28 31 |gBit) |.|......(1|
|00025bc0| 20 3c 3c 20 6d 79 70 6f | 72 74 2d 3e 6d 70 5f 53 | << mypo|rt->mp_S|
|00025bd0| 69 67 42 69 74 29 20 7c | 0a 09 09 09 09 09 09 28 |igBit) ||.......(|
|00025be0| 31 20 3c 3c 20 77 69 6e | 70 6f 72 74 2d 3e 6d 70 |1 << win|port->mp|
|00025bf0| 5f 53 69 67 42 69 74 29 | 3b 0a 09 09 09 09 69 66 |_SigBit)|;.....if|
|00025c00| 20 28 6d 61 69 6e 77 20 | 21 3d 20 6e 69 6c 29 20 | (mainw |!= nil) |
|00025c10| 7b 0a 09 09 09 09 09 73 | 69 67 6e 61 6c 73 20 7c |{......s|ignals ||
|00025c20| 3d 20 28 31 20 3c 3c 20 | 6d 61 69 6e 77 2d 3e 55 |= (1 << |mainw->U|
|00025c30| 73 65 72 50 6f 72 74 2d | 3e 6d 70 5f 53 69 67 42 |serPort-|>mp_SigB|
|00025c40| 69 74 29 3b 0a 09 09 09 | 09 7d 0a 09 09 09 09 0a |it);....|.}......|
|00025c50| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 09 63 61 |....brea|k;....ca|
|00025c60| 73 65 20 43 58 4d 5f 43 | 4f 4d 4d 41 4e 44 3a 0a |se CXM_C|OMMAND:.|
|00025c70| 09 09 09 09 73 77 69 74 | 63 68 20 28 6d 73 67 69 |....swit|ch (msgi|
|00025c80| 64 29 20 7b 0a 09 09 09 | 09 63 61 73 65 20 43 58 |d) {....|.case CX|
|00025c90| 43 4d 44 5f 44 49 53 41 | 42 4c 45 3a 0a 09 09 09 |CMD_DISA|BLE:....|
|00025ca0| 09 09 72 65 73 65 72 76 | 65 2d 3e 63 6f 6d 6d 61 |..reserv|e->comma|
|00025cb0| 6e 64 20 3d 20 53 4d 5f | 53 55 53 50 45 4e 44 3b |nd = SM_|SUSPEND;|
|00025cc0| 0a 09 09 09 09 09 50 75 | 74 4d 73 67 28 73 74 61 |......Pu|tMsg(sta|
|00025cd0| 74 75 73 5f 63 6f 6e 74 | 72 6f 6c 2c 20 26 72 65 |tus_cont|rol, &re|
|00025ce0| 73 65 72 76 65 2d 3e 68 | 65 61 64 65 72 29 3b 0a |serve->h|eader);.|
|00025cf0| 09 09 09 09 09 57 61 69 | 74 50 6f 72 74 28 73 79 |.....Wai|tPort(sy|
|00025d00| 6e 63 29 3b 20 47 65 74 | 4d 73 67 28 73 79 6e 63 |nc); Get|Msg(sync|
|00025d10| 29 3b 0a 09 09 09 09 09 | 0a 09 09 09 09 09 41 63 |);......|......Ac|
|00025d20| 74 69 76 61 74 65 43 78 | 4f 62 6a 28 62 72 6f 6b |tivateCx|Obj(brok|
|00025d30| 65 72 2c 20 30 6c 29 3b | 0a 09 09 09 09 09 62 72 |er, 0l);|......br|
|00025d40| 65 61 6b 3b 0a 09 09 09 | 09 63 61 73 65 20 43 58 |eak;....|.case CX|
|00025d50| 43 4d 44 5f 45 4e 41 42 | 4c 45 3a 0a 09 09 09 09 |CMD_ENAB|LE:.....|
|00025d60| 09 72 65 73 65 72 76 65 | 2d 3e 63 6f 6d 6d 61 6e |.reserve|->comman|
|00025d70| 64 20 3d 20 53 4d 5f 52 | 45 53 55 4d 45 3b 0a 09 |d = SM_R|ESUME;..|
|00025d80| 09 09 09 09 50 75 74 4d | 73 67 28 73 74 61 74 75 |....PutM|sg(statu|
|00025d90| 73 5f 63 6f 6e 74 72 6f | 6c 2c 20 26 72 65 73 65 |s_contro|l, &rese|
|00025da0| 72 76 65 2d 3e 68 65 61 | 64 65 72 29 3b 0a 09 09 |rve->hea|der);...|
|00025db0| 09 09 09 57 61 69 74 50 | 6f 72 74 28 73 79 6e 63 |...WaitP|ort(sync|
|00025dc0| 29 3b 20 47 65 74 4d 73 | 67 28 73 79 6e 63 29 3b |); GetMs|g(sync);|
|00025dd0| 0a 09 09 09 09 09 0a 09 | 09 09 09 09 41 63 74 69 |........|....Acti|
|00025de0| 76 61 74 65 43 78 4f 62 | 6a 28 62 72 6f 6b 65 72 |vateCxOb|j(broker|
|00025df0| 2c 20 31 6c 29 3b 0a 09 | 09 09 09 09 62 72 65 61 |, 1l);..|....brea|
|00025e00| 6b 3b 0a 09 09 09 09 63 | 61 73 65 20 43 58 43 4d |k;.....c|ase CXCM|
|00025e10| 44 5f 4b 49 4c 4c 3a 0a | 09 09 09 09 09 72 65 73 |D_KILL:.|.....res|
|00025e20| 65 72 76 65 2d 3e 63 6f | 6d 6d 61 6e 64 20 3d 20 |erve->co|mmand = |
|00025e30| 53 4d 5f 4b 49 4c 4c 3b | 0a 09 09 09 09 09 50 75 |SM_KILL;|......Pu|
|00025e40| 74 4d 73 67 28 73 74 61 | 74 75 73 5f 63 6f 6e 74 |tMsg(sta|tus_cont|
|00025e50| 72 6f 6c 2c 20 26 72 65 | 73 65 72 76 65 2d 3e 68 |rol, &re|serve->h|
|00025e60| 65 61 64 65 72 29 3b 0a | 09 09 09 09 09 57 61 69 |eader);.|.....Wai|
|00025e70| 74 50 6f 72 74 28 73 79 | 6e 63 29 3b 20 47 65 74 |tPort(sy|nc); Get|
|00025e80| 4d 73 67 28 73 79 6e 63 | 29 3b 0a 09 09 09 09 09 |Msg(sync|);......|
|00025e90| 0a 09 09 09 09 09 62 72 | 65 61 6b 3b 0a 09 09 09 |......br|eak;....|
|00025ea0| 09 63 61 73 65 20 43 58 | 43 4d 44 5f 41 50 50 45 |.case CX|CMD_APPE|
|00025eb0| 41 52 3a 0a 09 09 09 09 | 09 69 66 20 28 6d 61 69 |AR:.....|.if (mai|
|00025ec0| 6e 77 20 21 3d 20 6e 69 | 6c 29 20 7b 0a 09 09 09 |nw != ni|l) {....|
|00025ed0| 09 09 09 63 6c 6f 73 65 | 5f 6d 61 69 6e 5f 77 69 |...close|_main_wi|
|00025ee0| 6e 64 6f 77 28 6d 61 69 | 6e 77 2c 20 49 6e 74 75 |ndow(mai|nw, Intu|
|00025ef0| 69 74 69 6f 6e 42 61 73 | 65 2c 20 47 61 64 54 6f |itionBas|e, GadTo|
|00025f00| 6f 6c 73 42 61 73 65 29 | 3b 0a 09 09 09 09 09 09 |olsBase)|;.......|
|00025f10| 6d 61 69 6e 77 20 3d 20 | 6e 69 6c 3b 0a 09 09 09 |mainw = |nil;....|
|00025f20| 09 09 09 66 72 65 65 5f | 6c 61 62 65 6c 73 28 73 |...free_|labels(s|
|00025f30| 69 74 65 5f 6c 61 62 65 | 6c 73 29 3b 0a 09 09 09 |ite_labe|ls);....|
|00025f40| 09 09 7d 0a 09 09 09 09 | 09 0a 09 09 09 09 09 73 |..}.....|.......s|
|00025f50| 69 74 65 5f 6c 61 62 65 | 6c 73 20 3d 20 73 69 74 |ite_labe|ls = sit|
|00025f60| 65 5f 6c 69 73 74 28 29 | 3b 0a 09 09 09 09 09 6d |e_list()|;......m|
|00025f70| 61 69 6e 77 20 3d 20 6f | 70 65 6e 5f 6d 61 69 6e |ainw = o|pen_main|
|00025f80| 5f 77 69 6e 64 6f 77 28 | 73 69 74 65 5f 6c 61 62 |_window(|site_lab|
|00025f90| 65 6c 73 2c 20 49 6e 74 | 75 69 74 69 6f 6e 42 61 |els, Int|uitionBa|
|00025fa0| 73 65 2c 20 47 61 64 54 | 6f 6f 6c 73 42 61 73 65 |se, GadT|oolsBase|
|00025fb0| 2c 20 47 66 78 42 61 73 | 65 29 3b 0a 09 09 09 09 |, GfxBas|e);.....|
|00025fc0| 09 73 69 67 6e 61 6c 73 | 20 3d 20 28 31 20 3c 3c |.signals| = (1 <<|
|00025fd0| 20 63 78 70 6f 72 74 2d | 3e 6d 70 5f 53 69 67 42 | cxport-|>mp_SigB|
|00025fe0| 69 74 29 20 7c 0a 09 09 | 09 09 09 09 09 28 31 20 |it) |...|.....(1 |
|00025ff0| 3c 3c 20 6d 79 70 6f 72 | 74 2d 3e 6d 70 5f 53 69 |<< mypor|t->mp_Si|
|00026000| 67 42 69 74 29 20 7c 0a | 09 09 09 09 09 09 09 28 |gBit) |.|.......(|
|00026010| 31 20 3c 3c 20 77 69 6e | 70 6f 72 74 2d 3e 6d 70 |1 << win|port->mp|
|00026020| 5f 53 69 67 42 69 74 29 | 3b 0a 09 09 09 09 09 69 |_SigBit)|;......i|
|00026030| 66 20 28 6d 61 69 6e 77 | 20 21 3d 20 6e 69 6c 29 |f (mainw| != nil)|
|00026040| 20 7b 0a 09 09 09 09 09 | 09 73 69 67 6e 61 6c 73 | {......|.signals|
|00026050| 20 7c 3d 20 28 31 20 3c | 3c 20 6d 61 69 6e 77 2d | |= (1 <|< mainw-|
|00026060| 3e 55 73 65 72 50 6f 72 | 74 2d 3e 6d 70 5f 53 69 |>UserPor|t->mp_Si|
|00026070| 67 42 69 74 29 3b 0a 09 | 09 09 09 09 7d 0a 09 09 |gBit);..|....}...|
|00026080| 09 09 09 0a 09 09 09 09 | 09 62 72 65 61 6b 3b 0a |........|.break;.|
|00026090| 09 09 09 09 63 61 73 65 | 20 43 58 43 4d 44 5f 44 |....case| CXCMD_D|
|000260a0| 49 53 41 50 50 45 41 52 | 3a 0a 09 09 09 09 09 69 |ISAPPEAR|:......i|
|000260b0| 66 20 28 6d 61 69 6e 77 | 20 21 3d 20 6e 69 6c 29 |f (mainw| != nil)|
|000260c0| 20 7b 0a 09 09 09 09 09 | 09 63 6c 6f 73 65 5f 6d | {......|.close_m|
|000260d0| 61 69 6e 5f 77 69 6e 64 | 6f 77 28 6d 61 69 6e 77 |ain_wind|ow(mainw|
|000260e0| 2c 20 49 6e 74 75 69 74 | 69 6f 6e 42 61 73 65 2c |, Intuit|ionBase,|
|000260f0| 20 47 61 64 54 6f 6f 6c | 73 42 61 73 65 29 3b 0a | GadTool|sBase);.|
|00026100| 09 09 09 09 09 09 6d 61 | 69 6e 77 20 3d 20 6e 69 |......ma|inw = ni|
|00026110| 6c 3b 0a 09 09 09 09 09 | 09 66 72 65 65 5f 6c 61 |l;......|.free_la|
|00026120| 62 65 6c 73 28 73 69 74 | 65 5f 6c 61 62 65 6c 73 |bels(sit|e_labels|
|00026130| 29 3b 0a 09 09 09 09 09 | 09 0a 09 09 09 09 09 09 |);......|........|
|00026140| 73 69 67 6e 61 6c 73 20 | 3d 20 28 31 20 3c 3c 20 |signals |= (1 << |
|00026150| 63 78 70 6f 72 74 2d 3e | 6d 70 5f 53 69 67 42 69 |cxport->|mp_SigBi|
|00026160| 74 29 20 7c 0a 09 09 09 | 09 09 09 09 09 28 31 20 |t) |....|.....(1 |
|00026170| 3c 3c 20 6d 79 70 6f 72 | 74 2d 3e 6d 70 5f 53 69 |<< mypor|t->mp_Si|
|00026180| 67 42 69 74 29 20 7c 0a | 09 09 09 09 09 09 09 09 |gBit) |.|........|
|00026190| 28 31 20 3c 3c 20 77 69 | 6e 70 6f 72 74 2d 3e 6d |(1 << wi|nport->m|
|000261a0| 70 5f 53 69 67 42 69 74 | 29 3b 0a 09 09 09 09 09 |p_SigBit|);......|
|000261b0| 7d 0a 09 09 09 09 09 62 | 72 65 61 6b 3b 0a 09 09 |}......b|reak;...|
|000261c0| 09 09 7d 0a 09 09 09 7d | 0a 09 09 7d 0a 09 09 0a |..}....}|...}....|
|000261d0| 09 09 77 68 69 6c 65 20 | 28 6d 61 69 6e 77 20 26 |..while |(mainw &|
|000261e0| 26 20 28 69 6d 73 67 20 | 3d 20 47 54 5f 47 65 74 |& (imsg |= GT_Get|
|000261f0| 49 4d 73 67 28 6d 61 69 | 6e 77 2d 3e 55 73 65 72 |IMsg(mai|nw->User|
|00026200| 50 6f 72 74 29 29 29 20 | 7b 0a 09 09 09 73 77 69 |Port))) |{....swi|
|00026210| 74 63 68 20 28 69 6d 73 | 67 2d 3e 43 6c 61 73 73 |tch (ims|g->Class|
|00026220| 29 20 7b 0a 09 09 09 63 | 61 73 65 20 49 44 43 4d |) {....c|ase IDCM|
|00026230| 50 5f 43 4c 4f 53 45 57 | 49 4e 44 4f 57 3a 0a 09 |P_CLOSEW|INDOW:..|
|00026240| 09 09 09 47 54 5f 52 65 | 70 6c 79 49 4d 73 67 28 |...GT_Re|plyIMsg(|
|00026250| 69 6d 73 67 29 3b 0a 09 | 09 09 09 63 6c 6f 73 65 |imsg);..|...close|
|00026260| 5f 6d 61 69 6e 5f 77 69 | 6e 64 6f 77 28 6d 61 69 |_main_wi|ndow(mai|
|00026270| 6e 77 2c 20 49 6e 74 75 | 69 74 69 6f 6e 42 61 73 |nw, Intu|itionBas|
|00026280| 65 2c 20 47 61 64 54 6f | 6f 6c 73 42 61 73 65 29 |e, GadTo|olsBase)|
|00026290| 3b 0a 09 09 09 09 6d 61 | 69 6e 77 20 3d 20 6e 69 |;.....ma|inw = ni|
|000262a0| 6c 3b 0a 09 09 09 09 66 | 72 65 65 5f 6c 61 62 65 |l;.....f|ree_labe|
|000262b0| 6c 73 28 73 69 74 65 5f | 6c 61 62 65 6c 73 29 3b |ls(site_|labels);|
|000262c0| 0a 09 09 09 09 0a 09 09 | 09 09 73 69 67 6e 61 6c |........|..signal|
|000262d0| 73 20 3d 20 28 31 20 3c | 3c 20 63 78 70 6f 72 74 |s = (1 <|< cxport|
|000262e0| 2d 3e 6d 70 5f 53 69 67 | 42 69 74 29 20 7c 0a 09 |->mp_Sig|Bit) |..|
|000262f0| 09 09 09 09 09 28 31 20 | 3c 3c 20 6d 79 70 6f 72 |.....(1 |<< mypor|
|00026300| 74 2d 3e 6d 70 5f 53 69 | 67 42 69 74 29 20 7c 0a |t->mp_Si|gBit) |.|
|00026310| 09 09 09 09 09 09 28 31 | 20 3c 3c 20 77 69 6e 70 |......(1| << winp|
|00026320| 6f 72 74 2d 3e 6d 70 5f | 53 69 67 42 69 74 29 3b |ort->mp_|SigBit);|
|00026330| 0a 09 09 09 09 63 6f 6e | 74 69 6e 75 65 3b 0a 09 |.....con|tinue;..|
|00026340| 09 09 63 61 73 65 20 49 | 44 43 4d 50 5f 52 45 46 |..case I|DCMP_REF|
|00026350| 52 45 53 48 57 49 4e 44 | 4f 57 3a 0a 09 09 09 09 |RESHWIND|OW:.....|
|00026360| 47 54 5f 42 65 67 69 6e | 52 65 66 72 65 73 68 28 |GT_Begin|Refresh(|
|00026370| 6d 61 69 6e 77 29 3b 0a | 09 09 09 09 47 54 5f 45 |mainw);.|....GT_E|
|00026380| 6e 64 52 65 66 72 65 73 | 68 28 6d 61 69 6e 77 2c |ndRefres|h(mainw,|
|00026390| 20 74 72 75 65 29 3b 0a | 09 09 09 09 62 72 65 61 | true);.|....brea|
|000263a0| 6b 3b 0a 09 09 09 63 61 | 73 65 20 49 44 43 4d 50 |k;....ca|se IDCMP|
|000263b0| 5f 47 41 44 47 45 54 55 | 50 3a 0a 09 09 09 09 6d |_GADGETU|P:.....m|
|000263c0| 73 67 69 64 20 3d 20 69 | 6d 73 67 2d 3e 43 6f 64 |sgid = i|msg->Cod|
|000263d0| 65 3b 0a 09 09 09 09 47 | 54 5f 52 65 70 6c 79 49 |e;.....G|T_ReplyI|
|000263e0| 4d 73 67 28 69 6d 73 67 | 29 3b 0a 09 09 09 09 63 |Msg(imsg|);.....c|
|000263f0| 6c 6f 73 65 5f 6d 61 69 | 6e 5f 77 69 6e 64 6f 77 |lose_mai|n_window|
|00026400| 28 6d 61 69 6e 77 2c 20 | 49 6e 74 75 69 74 69 6f |(mainw, |Intuitio|
|00026410| 6e 42 61 73 65 2c 20 47 | 61 64 54 6f 6f 6c 73 42 |nBase, G|adToolsB|
|00026420| 61 73 65 29 3b 0a 09 09 | 09 09 6d 61 69 6e 77 20 |ase);...|..mainw |
|00026430| 3d 20 6e 69 6c 3b 0a 09 | 09 09 09 0a 09 09 09 09 |= nil;..|........|
|00026440| 6e 20 3d 20 73 69 74 65 | 5f 6c 61 62 65 6c 73 2d |n = site|_labels-|
|00026450| 3e 6c 68 5f 48 65 61 64 | 3b 0a 09 09 09 09 77 68 |>lh_Head|;.....wh|
|00026460| 69 6c 65 20 28 6d 73 67 | 69 64 2d 2d 20 26 26 20 |ile (msg|id-- && |
|00026470| 28 6e 2d 3e 6c 6e 5f 53 | 75 63 63 29 29 20 7b 0a |(n->ln_S|ucc)) {.|
|00026480| 09 09 09 09 09 6e 20 3d | 20 6e 2d 3e 6c 6e 5f 53 |.....n =| n->ln_S|
|00026490| 75 63 63 3b 0a 09 09 09 | 09 7d 0a 09 09 09 09 0a |ucc;....|.}......|
|000264a0| 09 09 09 09 69 66 20 28 | 6e 2d 3e 6c 6e 5f 53 75 |....if (|n->ln_Su|
|000264b0| 63 63 29 20 7b 0a 09 09 | 09 09 09 73 70 20 3d 20 |cc) {...|...sp = |
|000264c0| 73 69 74 65 73 3b 0a 09 | 09 09 09 09 77 68 69 6c |sites;..|....whil|
|000264d0| 65 20 28 73 70 29 20 7b | 0a 09 09 09 09 09 09 69 |e (sp) {|.......i|
|000264e0| 66 20 28 73 74 72 63 6d | 70 28 73 70 2d 3e 6e 61 |f (strcm|p(sp->na|
|000264f0| 6d 65 2c 20 6e 2d 3e 6c | 6e 5f 4e 61 6d 65 29 20 |me, n->l|n_Name) |
|00026500| 3d 3d 20 30 29 20 7b 0a | 09 09 09 09 09 09 09 62 |== 0) {.|.......b|
|00026510| 72 65 61 6b 3b 0a 09 09 | 09 09 09 09 7d 0a 09 09 |reak;...|....}...|
|00026520| 09 09 09 09 73 70 20 3d | 20 73 70 2d 3e 6e 65 78 |....sp =| sp->nex|
|00026530| 74 3b 0a 09 09 09 09 09 | 7d 0a 09 09 09 09 09 0a |t;......|}.......|
|00026540| 09 09 09 09 09 69 66 20 | 28 73 70 29 20 7b 0a 09 |.....if |(sp) {..|
|00026550| 09 09 09 09 09 6f 70 65 | 6e 5f 73 74 61 74 75 73 |.....ope|n_status|
|00026560| 5f 77 69 6e 64 6f 77 28 | 73 70 2c 20 77 69 6e 70 |_window(|sp, winp|
|00026570| 6f 72 74 2c 20 49 6e 74 | 75 69 74 69 6f 6e 42 61 |ort, Int|uitionBa|
|00026580| 73 65 2c 20 47 66 78 42 | 61 73 65 29 3b 0a 09 09 |se, GfxB|ase);...|
|00026590| 09 09 09 7d 0a 09 09 09 | 09 7d 0a 09 09 09 09 0a |...}....|.}......|
|000265a0| 09 09 09 09 66 72 65 65 | 5f 6c 61 62 65 6c 73 28 |....free|_labels(|
|000265b0| 73 69 74 65 5f 6c 61 62 | 65 6c 73 29 3b 0a 09 09 |site_lab|els);...|
|000265c0| 09 09 0a 09 09 09 09 73 | 69 67 6e 61 6c 73 20 3d |.......s|ignals =|
|000265d0| 20 28 31 20 3c 3c 20 63 | 78 70 6f 72 74 2d 3e 6d | (1 << c|xport->m|
|000265e0| 70 5f 53 69 67 42 69 74 | 29 20 7c 0a 09 09 09 09 |p_SigBit|) |.....|
|000265f0| 09 09 28 31 20 3c 3c 20 | 6d 79 70 6f 72 74 2d 3e |..(1 << |myport->|
|00026600| 6d 70 5f 53 69 67 42 69 | 74 29 20 7c 0a 09 09 09 |mp_SigBi|t) |....|
|00026610| 09 09 09 28 31 20 3c 3c | 20 77 69 6e 70 6f 72 74 |...(1 <<| winport|
|00026620| 2d 3e 6d 70 5f 53 69 67 | 42 69 74 29 3b 0a 09 09 |->mp_Sig|Bit);...|
|00026630| 09 09 63 6f 6e 74 69 6e | 75 65 3b 0a 09 09 09 64 |..contin|ue;....d|
|00026640| 65 66 61 75 6c 74 3a 0a | 09 09 09 09 62 72 65 61 |efault:.|....brea|
|00026650| 6b 3b 0a 09 09 09 7d 0a | 09 09 09 47 54 5f 52 65 |k;....}.|...GT_Re|
|00026660| 70 6c 79 49 4d 73 67 28 | 69 6d 73 67 29 3b 0a 09 |plyIMsg(|imsg);..|
|00026670| 09 7d 0a 09 09 0a 09 09 | 77 68 69 6c 65 20 28 69 |.}......|while (i|
|00026680| 6d 73 67 20 3d 20 28 73 | 74 72 75 63 74 20 49 6e |msg = (s|truct In|
|00026690| 74 75 69 4d 65 73 73 61 | 67 65 20 2a 29 47 65 74 |tuiMessa|ge *)Get|
|000266a0| 4d 73 67 28 77 69 6e 70 | 6f 72 74 29 29 20 7b 0a |Msg(winp|ort)) {.|
|000266b0| 09 09 09 73 70 20 3d 20 | 28 73 69 74 65 20 2a 29 |...sp = |(site *)|
|000266c0| 69 6d 73 67 2d 3e 49 44 | 43 4d 50 57 69 6e 64 6f |imsg->ID|CMPWindo|
|000266d0| 77 2d 3e 55 73 65 72 44 | 61 74 61 3b 0a 09 09 09 |w->UserD|ata;....|
|000266e0| 76 65 72 69 66 79 28 73 | 70 2c 20 56 5f 73 69 74 |verify(s|p, V_sit|
|000266f0| 65 29 3b 0a 09 09 09 0a | 09 09 09 73 77 69 74 63 |e);.....|...switc|
|00026700| 68 20 28 69 6d 73 67 2d | 3e 43 6c 61 73 73 29 20 |h (imsg-|>Class) |
|00026710| 7b 0a 09 09 09 63 61 73 | 65 20 49 44 43 4d 50 5f |{....cas|e IDCMP_|
|00026720| 43 4c 4f 53 45 57 49 4e | 44 4f 57 3a 0a 09 09 09 |CLOSEWIN|DOW:....|
|00026730| 09 52 65 70 6c 79 4d 73 | 67 28 28 73 74 72 75 63 |.ReplyMs|g((struc|
|00026740| 74 20 4d 65 73 73 61 67 | 65 20 2a 29 69 6d 73 67 |t Messag|e *)imsg|
|00026750| 29 3b 0a 09 09 09 09 63 | 6c 6f 73 65 5f 73 74 61 |);.....c|lose_sta|
|00026760| 74 75 73 5f 77 69 6e 64 | 6f 77 28 73 70 2c 20 77 |tus_wind|ow(sp, w|
|00026770| 69 6e 70 6f 72 74 2c 20 | 49 6e 74 75 69 74 69 6f |inport, |Intuitio|
|00026780| 6e 42 61 73 65 29 3b 0a | 09 09 09 09 63 6f 6e 74 |nBase);.|....cont|
|00026790| 69 6e 75 65 3b 0a 09 09 | 09 63 61 73 65 20 49 44 |inue;...|.case ID|
|000267a0| 43 4d 50 5f 47 41 44 47 | 45 54 55 50 3a 0a 09 09 |CMP_GADG|ETUP:...|
|000267b0| 09 09 69 66 20 28 28 28 | 73 74 72 75 63 74 20 47 |..if (((|struct G|
|000267c0| 61 64 67 65 74 20 2a 29 | 69 6d 73 67 2d 3e 49 41 |adget *)|imsg->IA|
|000267d0| 64 64 72 65 73 73 29 2d | 3e 47 61 64 67 65 74 49 |ddress)-|>GadgetI|
|000267e0| 44 20 3d 3d 20 31 29 20 | 7b 0a 09 09 09 09 09 2f |D == 1) |{....../|
|000267f0| 2a 20 61 62 6f 72 74 20 | 2a 2f 0a 09 09 09 09 09 |* abort |*/......|
|00026800| 53 69 67 6e 61 6c 28 73 | 70 2d 3e 70 6f 72 74 2d |Signal(s|p->port-|
|00026810| 3e 6d 70 5f 53 69 67 54 | 61 73 6b 2c 20 73 70 2d |>mp_SigT|ask, sp-|
|00026820| 3e 61 62 6f 72 74 5f 73 | 69 67 6e 61 6c 73 29 3b |>abort_s|ignals);|
|00026830| 0a 09 09 09 09 7d 20 65 | 6c 73 65 20 7b 0a 09 09 |.....} e|lse {...|
|00026840| 09 09 09 2f 2a 20 64 69 | 73 63 6f 6e 6e 65 63 74 |.../* di|sconnect|
|00026850| 20 2a 2f 0a 09 09 09 09 | 09 53 69 67 6e 61 6c 28 | */.....|.Signal(|
|00026860| 73 70 2d 3e 70 6f 72 74 | 2d 3e 6d 70 5f 53 69 67 |sp->port|->mp_Sig|
|00026870| 54 61 73 6b 2c 20 73 70 | 2d 3e 64 69 73 63 6f 6e |Task, sp|->discon|
|00026880| 6e 65 63 74 5f 73 69 67 | 6e 61 6c 73 29 3b 0a 09 |nect_sig|nals);..|
|00026890| 09 09 09 7d 0a 09 09 09 | 09 62 72 65 61 6b 3b 0a |...}....|.break;.|
|000268a0| 09 09 09 7d 0a 09 09 0a | 09 09 09 52 65 70 6c 79 |...}....|...Reply|
|000268b0| 4d 73 67 28 28 73 74 72 | 75 63 74 20 4d 65 73 73 |Msg((str|uct Mess|
|000268c0| 61 67 65 20 2a 29 69 6d | 73 67 29 3b 0a 09 09 7d |age *)im|sg);...}|
|000268d0| 0a 09 09 0a 09 09 77 68 | 69 6c 65 20 28 73 6d 20 |......wh|ile (sm |
|000268e0| 3d 20 28 73 74 61 74 75 | 73 5f 6d 65 73 73 61 67 |= (statu|s_messag|
|000268f0| 65 20 2a 29 47 65 74 4d | 73 67 28 6d 79 70 6f 72 |e *)GetM|sg(mypor|
|00026900| 74 29 29 20 7b 0a 09 09 | 09 76 65 72 69 66 79 28 |t)) {...|.verify(|
|00026910| 73 6d 2c 20 56 5f 73 74 | 61 74 75 73 5f 6d 65 73 |sm, V_st|atus_mes|
|00026920| 73 61 67 65 29 3b 0a 09 | 09 09 0a 09 09 09 73 77 |sage);..|......sw|
|00026930| 69 74 63 68 20 28 73 6d | 2d 3e 63 6f 6d 6d 61 6e |itch (sm|->comman|
|00026940| 64 29 20 7b 0a 09 09 09 | 63 61 73 65 20 53 4d 5f |d) {....|case SM_|
|00026950| 4b 49 4c 4c 3a 0a 09 09 | 09 09 69 66 20 28 6d 61 |KILL:...|..if (ma|
|00026960| 69 6e 77 20 21 3d 20 6e | 69 6c 29 20 7b 0a 09 09 |inw != n|il) {...|
|00026970| 09 09 09 63 6c 6f 73 65 | 5f 6d 61 69 6e 5f 77 69 |...close|_main_wi|
|00026980| 6e 64 6f 77 28 6d 61 69 | 6e 77 2c 20 49 6e 74 75 |ndow(mai|nw, Intu|
|00026990| 69 74 69 6f 6e 42 61 73 | 65 2c 20 47 61 64 54 6f |itionBas|e, GadTo|
|000269a0| 6f 6c 73 42 61 73 65 29 | 3b 0a 09 09 09 09 09 66 |olsBase)|;......f|
|000269b0| 72 65 65 5f 6c 61 62 65 | 6c 73 28 73 69 74 65 5f |ree_labe|ls(site_|
|000269c0| 6c 61 62 65 6c 73 29 3b | 0a 09 09 09 09 7d 0a 09 |labels);|.....}..|
|000269d0| 09 09 09 0a 09 09 09 09 | 46 6f 72 62 69 64 28 29 |........|Forbid()|
|000269e0| 3b 0a 09 09 09 09 77 68 | 69 6c 65 20 28 63 78 6d |;.....wh|ile (cxm|
|000269f0| 73 67 20 3d 20 28 43 78 | 4d 73 67 20 2a 29 47 65 |sg = (Cx|Msg *)Ge|
|00026a00| 00 00 00 10 00 00 01 35 | 00 00 00 03 00 00 00 00 |.......5|........|
|00026a10| 00 00 00 00 ff ff fa 2a | 00 00 00 00 00 00 00 00 |.......*|........|
|00026a20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026a30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026a40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026a50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026a60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026a70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026a80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026a90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026aa0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026ab0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026ac0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026ad0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026ae0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026af0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026b00| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026b10| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026b20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 01 38 |........|.......8|
|00026b30| 00 00 01 37 00 00 01 36 | 00 00 00 00 00 00 00 00 |...7...6|........|
|00026b40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026b50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026b60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026b70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026b80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026b90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026ba0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026bb0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026bc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026bd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026be0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00026bf0| 00 00 00 00 00 00 00 ec | 00 00 00 00 ff ff ff fd |........|........|
|00026c00| 74 4d 73 67 28 63 78 70 | 6f 72 74 29 29 20 7b 0a |tMsg(cxp|ort)) {.|
|00026c10| 09 09 09 09 09 52 65 70 | 6c 79 4d 73 67 28 28 73 |.....Rep|lyMsg((s|
|00026c20| 74 72 75 63 74 20 4d 65 | 73 73 61 67 65 20 2a 29 |truct Me|ssage *)|
|00026c30| 63 78 6d 73 67 29 3b 0a | 09 09 09 09 7d 0a 09 09 |cxmsg);.|....}...|
|00026c40| 09 09 0a 09 09 09 09 44 | 65 6c 65 74 65 43 78 4f |.......D|eleteCxO|
|00026c50| 62 6a 41 6c 6c 28 62 72 | 6f 6b 65 72 29 3b 0a 09 |bjAll(br|oker);..|
|00026c60| 09 09 09 50 65 72 6d 69 | 74 28 29 3b 0a 09 09 09 |...Permi|t();....|
|00026c70| 09 0a 09 09 09 09 64 65 | 61 6c 6c 6f 63 61 74 65 |......de|allocate|
|00026c80| 28 72 65 73 65 72 76 65 | 2c 20 56 5f 73 74 61 74 |(reserve|, V_stat|
|00026c90| 75 73 5f 6d 65 73 73 61 | 67 65 29 3b 0a 09 09 09 |us_messa|ge);....|
|00026ca0| 09 0a 09 09 09 09 44 65 | 6c 65 74 65 50 6f 72 74 |......De|letePort|
|00026cb0| 28 77 69 6e 70 6f 72 74 | 29 3b 0a 09 09 09 09 44 |(winport|);.....D|
|00026cc0| 65 6c 65 74 65 50 6f 72 | 74 28 63 78 70 6f 72 74 |eletePor|t(cxport|
|00026cd0| 29 3b 0a 09 09 09 09 44 | 65 6c 65 74 65 50 6f 72 |);.....D|eletePor|
|00026ce0| 74 28 73 79 6e 63 29 3b | 0a 09 09 09 09 44 65 6c |t(sync);|.....Del|
|00026cf0| 65 74 65 50 6f 72 74 28 | 72 61 6e 6b 29 3b 0a 09 |etePort(|rank);..|
|00026d00| 09 09 09 0a 09 09 09 09 | 63 68 65 63 6b 5f 6d 65 |........|check_me|
|00026d10| 6d 6f 72 79 28 29 3b 0a | 0a 09 09 09 09 43 6c 6f |mory();.|.....Clo|
|00026d20| 73 65 4c 69 62 72 61 72 | 79 28 43 78 42 61 73 65 |seLibrar|y(CxBase|
|00026d30| 29 3b 0a 09 09 09 09 43 | 6c 6f 73 65 4c 69 62 72 |);.....C|loseLibr|
|00026d40| 61 72 79 28 47 61 64 54 | 6f 6f 6c 73 42 61 73 65 |ary(GadT|oolsBase|
|00026d50| 29 3b 0a 09 09 09 09 43 | 6c 6f 73 65 4c 69 62 72 |);.....C|loseLibr|
|00026d60| 61 72 79 28 28 73 74 72 | 75 63 74 20 4c 69 62 72 |ary((str|uct Libr|
|00026d70| 61 72 79 20 2a 29 47 66 | 78 42 61 73 65 29 3b 0a |ary *)Gf|xBase);.|
|00026d80| 09 09 09 09 43 6c 6f 73 | 65 4c 69 62 72 61 72 79 |....Clos|eLibrary|
|00026d90| 28 28 73 74 72 75 63 74 | 20 4c 69 62 72 61 72 79 |((struct| Library|
|00026da0| 20 2a 29 49 6e 74 75 69 | 74 69 6f 6e 42 61 73 65 | *)Intui|tionBase|
|00026db0| 29 3b 0a 09 09 09 09 0a | 09 09 09 09 46 6f 72 62 |);......|....Forb|
|00026dc0| 69 64 28 29 3b 0a 09 09 | 09 09 52 65 70 6c 79 4d |id();...|..ReplyM|
|00026dd0| 73 67 28 26 73 6d 2d 3e | 68 65 61 64 65 72 29 3b |sg(&sm->|header);|
|00026de0| 0a 09 09 09 09 72 65 74 | 75 72 6e 3b 0a 09 09 09 |.....ret|urn;....|
|00026df0| 63 61 73 65 20 53 4d 5f | 4e 45 57 5f 53 49 54 45 |case SM_|NEW_SITE|
|00026e00| 3a 0a 09 09 09 09 69 66 | 20 28 73 6d 2d 3e 64 61 |:.....if| (sm->da|
|00026e10| 74 61 29 20 7b 0a 09 09 | 09 09 09 6f 70 65 6e 5f |ta) {...|...open_|
|00026e20| 73 74 61 74 75 73 5f 77 | 69 6e 64 6f 77 28 73 6d |status_w|indow(sm|
|00026e30| 2d 3e 74 68 69 73 5f 73 | 69 74 65 2c 20 77 69 6e |->this_s|ite, win|
|00026e40| 70 6f 72 74 2c 20 49 6e | 74 75 69 74 69 6f 6e 42 |port, In|tuitionB|
|00026e50| 61 73 65 2c 20 47 66 78 | 42 61 73 65 29 3b 0a 09 |ase, Gfx|Base);..|
|00026e60| 09 09 09 7d 0a 09 09 09 | 09 62 72 65 61 6b 3b 0a |...}....|.break;.|
|00026e70| 09 09 09 63 61 73 65 20 | 53 4d 5f 44 45 41 44 5f |...case |SM_DEAD_|
|00026e80| 53 49 54 45 3a 0a 09 09 | 09 09 63 6c 6f 73 65 5f |SITE:...|..close_|
|00026e90| 73 74 61 74 75 73 5f 77 | 69 6e 64 6f 77 28 73 6d |status_w|indow(sm|
|00026ea0| 2d 3e 74 68 69 73 5f 73 | 69 74 65 2c 20 77 69 6e |->this_s|ite, win|
|00026eb0| 70 6f 72 74 2c 20 49 6e | 74 75 69 74 69 6f 6e 42 |port, In|tuitionB|
|00026ec0| 61 73 65 29 3b 0a 09 09 | 09 09 62 72 65 61 6b 3b |ase);...|..break;|
|00026ed0| 0a 09 09 09 63 61 73 65 | 20 53 4d 5f 53 54 41 54 |....case| SM_STAT|
|00026ee0| 45 5f 43 48 41 4e 47 45 | 3a 0a 09 09 09 09 69 66 |E_CHANGE|:.....if|
|00026ef0| 20 28 73 6d 2d 3e 74 68 | 69 73 5f 73 69 74 65 2d | (sm->th|is_site-|
|00026f00| 3e 73 74 61 74 75 73 5f | 77 69 6e 64 6f 77 29 20 |>status_|window) |
|00026f10| 7b 0a 09 09 09 09 09 63 | 6c 65 61 72 5f 73 74 61 |{......c|lear_sta|
|00026f20| 74 65 28 73 6d 2d 3e 74 | 68 69 73 5f 73 69 74 65 |te(sm->t|his_site|
|00026f30| 2c 20 49 6e 74 75 69 74 | 69 6f 6e 42 61 73 65 2c |, Intuit|ionBase,|
|00026f40| 20 47 66 78 42 61 73 65 | 29 3b 0a 09 09 09 09 09 | GfxBase|);......|
|00026f50| 64 72 61 77 5f 73 74 61 | 74 65 28 73 6d 2d 3e 74 |draw_sta|te(sm->t|
|00026f60| 68 69 73 5f 73 69 74 65 | 2c 20 49 6e 74 75 69 74 |his_site|, Intuit|
|00026f70| 69 6f 6e 42 61 73 65 2c | 20 47 66 78 42 61 73 65 |ionBase,| GfxBase|
|00026f80| 29 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 62 72 65 |);.....}|.....bre|
|00026f90| 61 6b 3b 0a 09 09 09 63 | 61 73 65 20 53 4d 5f 50 |ak;....c|ase SM_P|
|00026fa0| 52 4f 47 52 45 53 53 3a | 0a 09 09 09 09 69 66 20 |ROGRESS:|.....if |
|00026fb0| 28 73 6d 2d 3e 74 68 69 | 73 5f 73 69 74 65 2d 3e |(sm->thi|s_site->|
|00026fc0| 73 74 61 74 75 73 5f 77 | 69 6e 64 6f 77 29 20 7b |status_w|indow) {|
|00026fd0| 0a 09 09 09 09 09 75 70 | 64 61 74 65 5f 66 69 6c |......up|date_fil|
|00026fe0| 6c 5f 62 61 72 28 73 6d | 2d 3e 74 68 69 73 5f 73 |l_bar(sm|->this_s|
|00026ff0| 69 74 65 2c 20 49 6e 74 | 75 69 74 69 6f 6e 42 61 |ite, Int|uitionBa|
|00027000| 73 65 2c 20 47 66 78 42 | 61 73 65 29 3b 0a 09 09 |se, GfxB|ase);...|
|00027010| 09 09 7d 0a 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |..}.....|break;..|
|00027020| 09 09 7d 0a 09 09 09 52 | 65 70 6c 79 4d 73 67 28 |..}....R|eplyMsg(|
|00027030| 26 73 6d 2d 3e 68 65 61 | 64 65 72 29 3b 0a 09 09 |&sm->hea|der);...|
|00027040| 7d 0a 09 7d 0a 7d 0a 0a | 00 00 00 00 00 00 00 00 |}..}.}..|........|
|00027050| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027060| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027070| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027080| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027090| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000270a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000270b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000270c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000270d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000270e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000270f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027100| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027110| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027120| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027130| 00 00 00 00 00 00 00 eb | 00 00 00 00 00 00 00 00 |........|........|
|00027140| 00 00 00 00 00 00 00 e3 | 00 00 00 00 00 00 00 00 |........|........|
|00027150| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027160| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027170| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027180| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027190| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000271a0| 00 00 00 00 00 00 19 39 | 00 00 03 56 00 00 00 00 |.......9|...V....|
|000271b0| 07 6c 6f 63 61 6c 2e 68 | 00 00 00 00 00 00 00 00 |.local.h|........|
|000271c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000271d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000271e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000271f0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00027200| 00 00 00 02 00 00 01 39 | 00 00 00 03 00 00 00 00 |.......9|........|
|00027210| 00 00 01 3a 52 bf f5 6e | 00 00 00 00 00 00 00 00 |...:R..n|........|
|00027220| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027230| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027240| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027250| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027260| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027270| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027280| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027290| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000272a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000272b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000272c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000272d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000272e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000272f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027300| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027310| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027320| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 01 3c |........|.......<|
|00027330| 00 00 01 3b 00 00 01 3a | 00 00 00 00 00 00 00 00 |...;...:|........|
|00027340| 00 00 00 00 00 00 04 b0 | 00 00 00 00 00 00 00 00 |........|........|
|00027350| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027360| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027370| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027380| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027390| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000273a0| 00 00 00 00 00 00 19 39 | 00 00 03 55 00 00 0a 28 |.......9|...U...(|
|000273b0| 09 72 65 71 75 65 73 74 | 2e 68 00 00 00 00 00 00 |.request|.h......|
|000273c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000273d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000273e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000273f0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00027400| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|00027410| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|00027420| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|00027430| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|00027440| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|00027450| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|00027460| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|00027470| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|00027480| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|00027490| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|000274a0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|000274b0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|000274c0| 73 74 72 75 63 74 20 57 | 69 6e 64 6f 77 20 2a 63 |struct W|indow *c|
|000274d0| 6f 6e 6e 65 63 74 5f 72 | 65 71 28 73 74 72 75 63 |onnect_r|eq(struc|
|000274e0| 74 20 73 69 74 65 5f 73 | 20 2a 73 70 2c 20 62 38 |t site_s| *sp, b8|
|000274f0| 20 2a 29 3b 0a 76 6f 69 | 64 20 63 6c 6f 73 65 5f | *);.voi|d close_|
|00027500| 72 65 71 28 73 74 72 75 | 63 74 20 73 69 74 65 5f |req(stru|ct site_|
|00027510| 73 20 2a 73 70 2c 20 73 | 74 72 75 63 74 20 57 69 |s *sp, s|truct Wi|
|00027520| 6e 64 6f 77 20 2a 29 3b | 0a 73 74 72 75 63 74 20 |ndow *);|.struct |
|00027530| 67 69 6d 20 2a 6d 61 6b | 65 5f 67 69 6d 28 62 38 |gim *mak|e_gim(b8|
|00027540| 20 2a 6e 61 6d 65 2c 20 | 62 33 32 20 74 65 78 74 | *name, |b32 text|
|00027550| 70 65 6e 2c 20 62 33 32 | 20 6c 69 67 68 74 70 65 |pen, b32| lightpe|
|00027560| 6e 2c 20 62 33 32 20 64 | 61 72 6b 70 65 6e 2c 20 |n, b32 d|arkpen, |
|00027570| 73 74 72 75 63 74 20 53 | 63 72 65 65 6e 20 2a 73 |struct S|creen *s|
|00027580| 2c 20 0a 09 09 09 73 74 | 72 75 63 74 20 49 6e 74 |, ....st|ruct Int|
|00027590| 75 69 74 69 6f 6e 42 61 | 73 65 20 2a 49 6e 74 75 |uitionBa|se *Intu|
|000275a0| 69 74 69 6f 6e 42 61 73 | 65 2c 20 73 74 72 75 63 |itionBas|e, struc|
|000275b0| 74 20 47 66 78 42 61 73 | 65 20 2a 47 66 78 42 61 |t GfxBas|e *GfxBa|
|000275c0| 73 65 29 3b 0a 76 6f 69 | 64 20 66 72 65 65 5f 67 |se);.voi|d free_g|
|000275d0| 69 6d 28 73 74 72 75 63 | 74 20 67 69 6d 20 2a 67 |im(struc|t gim *g|
|000275e0| 69 6d 2c 20 73 74 72 75 | 63 74 20 49 6e 74 75 69 |im, stru|ct Intui|
|000275f0| 74 69 6f 6e 42 61 73 65 | 20 2a 49 6e 74 75 69 74 |tionBase| *Intuit|
|00027600| 69 6f 6e 42 61 73 65 2c | 20 73 74 72 75 63 74 20 |ionBase,| struct |
|00027610| 47 66 78 42 61 73 65 20 | 2a 47 66 78 42 61 73 65 |GfxBase |*GfxBase|
|00027620| 29 3b 0a 0a 62 6f 6f 6c | 65 61 6e 20 75 73 65 72 |);..bool|ean user|
|00027630| 5f 70 61 73 73 5f 72 65 | 71 75 65 73 74 28 73 74 |_pass_re|quest(st|
|00027640| 72 75 63 74 20 73 69 74 | 65 5f 73 20 2a 73 70 2c |ruct sit|e_s *sp,|
|00027650| 20 73 74 72 75 63 74 20 | 57 69 6e 64 6f 77 20 2a | struct |Window *|
|00027660| 63 61 6e 77 29 3b 0a 0a | 76 6f 69 64 20 5f 5f 73 |canw);..|void __s|
|00027670| 61 76 65 64 73 20 73 74 | 61 74 75 73 5f 68 61 6e |aveds st|atus_han|
|00027680| 64 6c 65 72 28 76 6f 69 | 64 29 3b 0a 0a 23 64 65 |dler(voi|d);..#de|
|00027690| 66 69 6e 65 20 56 5f 67 | 69 6d 20 39 39 30 34 30 |fine V_g|im 99040|
|000276a0| 0a 0a 73 74 72 75 63 74 | 20 67 69 6d 20 7b 0a 09 |..struct| gim {..|
|000276b0| 6d 61 67 69 63 5f 76 65 | 72 69 66 79 3b 0a 0a 09 |magic_ve|rify;...|
|000276c0| 73 74 72 75 63 74 20 49 | 6d 61 67 65 20 69 6d 31 |struct I|mage im1|
|000276d0| 3b 0a 09 73 74 72 75 63 | 74 20 49 6d 61 67 65 20 |;..struc|t Image |
|000276e0| 69 6d 32 3b 0a 09 73 74 | 72 75 63 74 20 52 61 73 |im2;..st|ruct Ras|
|000276f0| 74 50 6f 72 74 20 2a 72 | 70 31 3b 0a 09 73 74 72 |tPort *r|p1;..str|
|00027700| 75 63 74 20 52 61 73 74 | 50 6f 72 74 20 2a 72 70 |uct Rast|Port *rp|
|00027710| 32 3b 0a 7d 3b 0a 0a 23 | 64 65 66 69 6e 65 20 56 |2;.};..#|define V|
|00027720| 5f 47 61 64 67 65 74 20 | 31 38 32 37 33 0a 0a 74 |_Gadget |18273..t|
|00027730| 79 70 65 64 65 66 20 73 | 74 72 75 63 74 20 73 74 |ypedef s|truct st|
|00027740| 61 74 75 73 5f 6d 65 73 | 73 61 67 65 20 7b 0a 09 |atus_mes|sage {..|
|00027750| 73 74 72 75 63 74 20 4d | 65 73 73 61 67 65 20 68 |struct M|essage h|
|00027760| 65 61 64 65 72 3b 0a 09 | 0a 09 6d 61 67 69 63 5f |eader;..|..magic_|
|00027770| 76 65 72 69 66 79 3b 0a | 09 0a 09 62 31 36 20 63 |verify;.|...b16 c|
|00027780| 6f 6d 6d 61 6e 64 3b 0a | 09 62 31 36 20 64 61 74 |ommand;.|.b16 dat|
|00027790| 61 3b 0a 09 73 74 72 75 | 63 74 20 73 69 74 65 5f |a;..stru|ct site_|
|000277a0| 73 20 2a 74 68 69 73 5f | 73 69 74 65 3b 0a 7d 20 |s *this_|site;.} |
|000277b0| 73 74 61 74 75 73 5f 6d | 65 73 73 61 67 65 3b 0a |status_m|essage;.|
|000277c0| 0a 23 64 65 66 69 6e 65 | 20 56 5f 73 74 61 74 75 |.#define| V_statu|
|000277d0| 73 5f 6d 65 73 73 61 67 | 65 20 32 39 35 34 39 0a |s_messag|e 29549.|
|000277e0| 0a 23 64 65 66 69 6e 65 | 20 53 4d 5f 4b 49 4c 4c |.#define| SM_KILL|
|000277f0| 20 31 0a 23 64 65 66 69 | 6e 65 20 53 4d 5f 53 55 | 1.#defi|ne SM_SU|
|00027800| 53 50 45 4e 44 20 32 0a | 23 64 65 66 69 6e 65 20 |SPEND 2.|#define |
|00027810| 53 4d 5f 52 45 53 55 4d | 45 20 33 0a 23 64 65 66 |SM_RESUM|E 3.#def|
|00027820| 69 6e 65 20 53 4d 5f 4e | 45 57 5f 53 49 54 45 20 |ine SM_N|EW_SITE |
|00027830| 34 0a 23 64 65 66 69 6e | 65 20 53 4d 5f 44 45 41 |4.#defin|e SM_DEA|
|00027840| 44 5f 53 49 54 45 20 35 | 0a 23 64 65 66 69 6e 65 |D_SITE 5|.#define|
|00027850| 20 53 4d 5f 53 54 41 54 | 45 5f 43 48 41 4e 47 45 | SM_STAT|E_CHANGE|
|00027860| 20 36 0a 23 64 65 66 69 | 6e 65 20 53 4d 5f 50 52 | 6.#defi|ne SM_PR|
|00027870| 4f 47 52 45 53 53 20 37 | 0a 0a 23 64 65 66 69 6e |OGRESS 7|..#defin|
|00027880| 65 20 4d 41 58 5f 55 53 | 45 52 5f 4c 45 4e 47 54 |e MAX_US|ER_LENGT|
|00027890| 48 20 34 30 0a 23 64 65 | 66 69 6e 65 20 4d 41 58 |H 40.#de|fine MAX|
|000278a0| 5f 50 41 53 53 5f 4c 45 | 4e 47 54 48 20 34 30 0a |_PASS_LE|NGTH 40.|
|000278b0| 00 00 01 0e 00 00 01 0d | 00 00 01 0c 00 00 01 0b |........|........|
|000278c0| 00 00 01 0a 00 00 01 09 | 00 00 01 08 00 00 01 07 |........|........|
|000278d0| 00 00 01 06 00 00 01 05 | 00 00 01 04 00 00 01 03 |........|........|
|000278e0| 00 00 01 02 00 00 01 01 | 00 00 01 00 00 00 00 ff |........|........|
|000278f0| 00 00 00 fe 00 00 00 fd | 00 00 00 fc 00 00 00 fb |........|........|
|00027900| 00 00 00 fa 00 00 00 f9 | 00 00 00 f8 00 00 00 f7 |........|........|
|00027910| 00 00 00 f6 00 00 00 f5 | 00 00 00 f4 00 00 00 f3 |........|........|
|00027920| 00 00 00 f2 00 00 00 f1 | 00 00 00 f0 00 00 00 ef |........|........|
|00027930| 00 00 00 ee 00 00 00 ed | 00 00 00 00 00 00 00 00 |........|........|
|00027940| 00 00 00 00 00 00 94 48 | 00 00 00 00 00 00 00 00 |.......H|........|
|00027950| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027960| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027970| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027980| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027990| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000279a0| 00 00 00 00 00 00 19 98 | 00 00 03 6e 00 00 03 20 |........|...n... |
|000279b0| 09 72 65 71 75 65 73 74 | 2e 63 00 00 00 00 00 00 |.request|.c......|
|000279c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000279d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000279e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000279f0| 00 00 00 00 00 00 00 21 | 00 00 01 35 ff ff ff fd |.......!|...5....|
|00027a00| 00 00 00 02 00 00 01 3d | 00 00 00 01 00 00 00 00 |.......=|........|
|00027a10| 00 00 01 3e 58 05 4a 87 | 00 00 00 00 00 00 00 00 |...>X.J.|........|
|00027a20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027a30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027a40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027a50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027a60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027a70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027a80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027a90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027aa0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027ab0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027ac0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027ad0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027ae0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027af0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027b00| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027b10| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027b20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027b30| 00 00 00 00 00 00 01 3e | 00 00 00 00 00 00 00 00 |.......>|........|
|00027b40| 00 00 00 00 00 00 00 4f | 00 00 00 00 00 00 00 00 |.......O|........|
|00027b50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027b60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027b70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027b80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027b90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027ba0| 00 00 00 00 00 00 1a 14 | 00 00 05 26 00 00 05 78 |........|...&...x|
|00027bb0| 09 53 43 4f 50 54 49 4f | 4e 53 00 00 00 00 00 00 |.SCOPTIO|NS......|
|00027bc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027bd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027be0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027bf0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00027c00| 4e 4f 53 54 41 43 4b 43 | 48 45 43 4b 0a 53 54 52 |NOSTACKC|HECK.STR|
|00027c10| 55 43 54 55 52 45 45 51 | 55 49 56 41 4c 45 4e 43 |UCTUREEQ|UIVALENC|
|00027c20| 45 0a 4e 4f 49 43 4f 4e | 53 0a 49 4e 43 4c 55 44 |E.NOICON|S.INCLUD|
|00027c30| 45 44 49 52 3d 64 68 30 | 3a 61 6d 69 74 63 70 2d |EDIR=dh0|:amitcp-|
|00027c40| 32 2e 32 2f 6e 65 74 69 | 6e 63 6c 75 64 65 0a 00 |2.2/neti|nclude..|
|00027c50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 03 78 |........|.......x|
|00027c60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027c70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027c80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027c90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027ca0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027cb0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027cc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027cd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027ce0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027cf0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027d00| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027d10| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027d20| 00 00 00 00 00 00 00 00 | 00 00 03 72 00 00 05 f5 |........|...r....|
|00027d30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 03 71 |........|.......q|
|00027d40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027d50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027d60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027d70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027d80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027d90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027da0| 00 00 00 00 00 00 1a f9 | 00 00 04 15 00 00 08 b7 |........|........|
|00027db0| 0a 4d 41 53 68 61 72 65 | 5f 36 34 00 00 00 00 00 |.MAShare|_64.....|
|00027dc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027dd0| 00 00 00 00 00 00 00 00 | 00 00 1a f9 00 00 04 15 |........|........|
|00027de0| 00 00 09 1d 00 00 1a f9 | 00 00 03 fa 00 00 01 25 |........|.......%|
|00027df0| 00 00 00 00 00 00 00 00 | 00 00 03 71 00 00 00 01 |........|...q....|
|00027e00| 00 00 00 02 00 00 01 3f | 00 00 00 48 00 00 00 00 |.......?|...H....|
|00027e10| 00 00 01 40 94 5c e1 81 | 00 00 01 87 00 00 01 86 |...@.\..|........|
|00027e20| 00 00 01 85 00 00 01 84 | 00 00 01 83 00 00 01 82 |........|........|
|00027e30| 00 00 01 81 00 00 01 80 | 00 00 01 7f 00 00 01 7e |........|.......~|
|00027e40| 00 00 01 7d 00 00 01 7c | 00 00 01 7b 00 00 01 7a |...}...||...{...z|
|00027e50| 00 00 01 79 00 00 01 78 | 00 00 01 77 00 00 01 76 |...y...x|...w...v|
|00027e60| 00 00 01 75 00 00 01 74 | 00 00 01 73 00 00 01 72 |...u...t|...s...r|
|00027e70| 00 00 01 71 00 00 01 70 | 00 00 01 6f 00 00 01 6e |...q...p|...o...n|
|00027e80| 00 00 01 6d 00 00 01 6c | 00 00 01 6b 00 00 01 6a |...m...l|...k...j|
|00027e90| 00 00 01 69 00 00 01 68 | 00 00 01 67 00 00 01 66 |...i...h|...g...f|
|00027ea0| 00 00 01 65 00 00 01 64 | 00 00 01 63 00 00 01 62 |...e...d|...c...b|
|00027eb0| 00 00 01 61 00 00 01 60 | 00 00 01 5f 00 00 01 5e |...a...`|..._...^|
|00027ec0| 00 00 01 5d 00 00 01 5c | 00 00 01 5b 00 00 01 5a |...]...\|...[...Z|
|00027ed0| 00 00 01 59 00 00 01 58 | 00 00 01 57 00 00 01 56 |...Y...X|...W...V|
|00027ee0| 00 00 01 55 00 00 01 54 | 00 00 01 53 00 00 01 52 |...U...T|...S...R|
|00027ef0| 00 00 01 51 00 00 01 50 | 00 00 01 4f 00 00 01 4e |...Q...P|...O...N|
|00027f00| 00 00 01 4d 00 00 01 4c | 00 00 01 4b 00 00 01 4a |...M...L|...K...J|
|00027f10| 00 00 01 49 00 00 01 48 | 00 00 01 47 00 00 01 46 |...I...H|...G...F|
|00027f20| 00 00 01 45 00 00 01 44 | 00 00 01 43 00 00 01 42 |...E...D|...C...B|
|00027f30| 00 00 01 41 00 00 01 40 | 00 00 00 00 00 00 00 00 |...A...@|........|
|00027f40| 00 00 00 00 00 00 c5 b4 | 00 00 00 00 00 00 00 00 |........|........|
|00027f50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027f60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027f70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027f80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027f90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027fa0| 00 00 00 00 00 00 19 98 | 00 00 03 b0 00 00 06 a4 |........|........|
|00027fb0| 06 73 69 74 65 2e 63 00 | 00 00 00 00 00 00 00 00 |.site.c.|........|
|00027fc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027fd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027fe0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00027ff0| 00 00 00 00 00 00 00 21 | 00 00 01 88 ff ff ff fd |.......!|........|
|00028000| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|00028010| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|00028020| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|00028030| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|00028040| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|00028050| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|00028060| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|00028070| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|00028080| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|00028090| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|000280a0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|000280b0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|000280c0| 23 69 6e 63 6c 75 64 65 | 20 3c 65 78 65 63 2f 74 |#include| <exec/t|
|000280d0| 79 70 65 73 2e 68 3e 0a | 23 69 6e 63 6c 75 64 65 |ypes.h>.|#include|
|000280e0| 20 3c 65 78 65 63 2f 6d | 65 6d 6f 72 79 2e 68 3e | <exec/m|emory.h>|
|000280f0| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 65 78 65 63 2f |.#includ|e <exec/|
|00028100| 61 6c 65 72 74 73 2e 68 | 3e 0a 0a 23 69 6e 63 6c |alerts.h|>..#incl|
|00028110| 75 64 65 20 3c 64 65 76 | 69 63 65 73 2f 74 69 6d |ude <dev|ices/tim|
|00028120| 65 72 2e 68 3e 0a 0a 23 | 69 6e 63 6c 75 64 65 20 |er.h>..#|include |
|00028130| 3c 64 6f 73 2f 64 6f 73 | 2e 68 3e 0a 23 69 6e 63 |<dos/dos|.h>.#inc|
|00028140| 6c 75 64 65 20 3c 64 6f | 73 2f 64 6f 73 65 78 74 |lude <do|s/dosext|
|00028150| 65 6e 73 2e 68 3e 0a 23 | 69 6e 63 6c 75 64 65 20 |ens.h>.#|include |
|00028160| 3c 64 6f 73 2f 64 6f 73 | 74 61 67 73 2e 68 3e 0a |<dos/dos|tags.h>.|
|00028170| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 77 6f 72 6b 62 |.#includ|e <workb|
|00028180| 65 6e 63 68 2f 77 6f 72 | 6b 62 65 6e 63 68 2e 68 |ench/wor|kbench.h|
|00028190| 3e 0a 0a 23 69 6e 63 6c | 75 64 65 20 3c 70 72 6f |>..#incl|ude <pro|
|000281a0| 74 6f 2f 65 78 65 63 2e | 68 3e 0a 23 69 6e 63 6c |to/exec.|h>.#incl|
|000281b0| 75 64 65 20 3c 70 72 6f | 74 6f 2f 64 6f 73 2e 68 |ude <pro|to/dos.h|
|000281c0| 3e 0a 23 69 6e 63 6c 75 | 64 65 20 3c 70 72 6f 74 |>.#inclu|de <prot|
|000281d0| 6f 2f 69 6e 74 75 69 74 | 69 6f 6e 2e 68 3e 0a 23 |o/intuit|ion.h>.#|
|000281e0| 69 6e 63 6c 75 64 65 20 | 3c 70 72 6f 74 6f 2f 69 |include |<proto/i|
|000281f0| 63 6f 6e 2e 68 3e 0a 23 | 69 6e 63 6c 75 64 65 20 |con.h>.#|include |
|00028200| 3c 70 72 6f 74 6f 2f 67 | 61 64 74 6f 6f 6c 73 2e |<proto/g|adtools.|
|00028210| 68 3e 0a 0a 23 69 6e 63 | 6c 75 64 65 20 3c 73 74 |h>..#inc|lude <st|
|00028220| 64 69 6f 2e 68 3e 0a 23 | 69 6e 63 6c 75 64 65 20 |dio.h>.#|include |
|00028230| 3c 73 74 64 6c 69 62 2e | 68 3e 0a 23 69 6e 63 6c |<stdlib.|h>.#incl|
|00028240| 75 64 65 20 3c 73 74 72 | 69 6e 67 2e 68 3e 0a 0a |ude <str|ing.h>..|
|00028250| 23 69 6e 63 6c 75 64 65 | 20 22 65 76 74 79 70 65 |#include| "evtype|
|00028260| 73 2e 68 22 0a 23 69 6e | 63 6c 75 64 65 20 22 76 |s.h".#in|clude "v|
|00028270| 65 72 69 66 79 2e 68 22 | 0a 23 69 6e 63 6c 75 64 |erify.h"|.#includ|
|00028280| 65 20 22 74 63 70 2e 68 | 22 0a 0a 23 69 6e 63 6c |e "tcp.h|"..#incl|
|00028290| 75 64 65 20 22 73 69 74 | 65 2e 68 22 0a 23 69 6e |ude "sit|e.h".#in|
|000282a0| 63 6c 75 64 65 20 22 66 | 74 70 2e 68 22 0a 23 69 |clude "f|tp.h".#i|
|000282b0| 6e 63 6c 75 64 65 20 22 | 73 70 6c 69 74 2e 68 22 |nclude "|split.h"|
|000282c0| 0a 23 69 6e 63 6c 75 64 | 65 20 22 66 74 70 69 6e |.#includ|e "ftpin|
|000282d0| 66 6f 2e 68 22 0a 23 69 | 6e 63 6c 75 64 65 20 22 |fo.h".#i|nclude "|
|000282e0| 63 6f 6e 6e 65 63 74 2e | 68 22 0a 23 69 6e 63 6c |connect.|h".#incl|
|000282f0| 75 64 65 20 22 72 65 71 | 75 65 73 74 2e 68 22 0a |ude "req|uest.h".|
|00028300| 0a 23 69 6e 63 6c 75 64 | 65 20 22 67 6c 6f 62 61 |.#includ|e "globa|
|00028310| 6c 73 2e 68 22 0a 23 69 | 6e 63 6c 75 64 65 20 22 |ls.h".#i|nclude "|
|00028320| 73 74 72 69 6e 67 73 2e | 68 22 0a 0a 73 74 72 75 |strings.|h"..stru|
|00028330| 63 74 20 4d 73 67 50 6f | 72 74 20 2a 67 65 74 5f |ct MsgPo|rt *get_|
|00028340| 73 69 74 65 28 62 38 20 | 2a 73 29 0a 7b 0a 09 73 |site(b8 |*s).{..s|
|00028350| 69 74 65 20 2a 73 70 3b | 0a 09 73 74 72 75 63 74 |ite *sp;|..struct|
|00028360| 20 50 72 6f 63 65 73 73 | 20 2a 63 68 69 6c 64 3b | Process| *child;|
|00028370| 0a 09 73 74 72 75 63 74 | 20 53 74 61 6e 64 61 72 |..struct| Standar|
|00028380| 64 50 61 63 6b 65 74 20 | 2a 73 74 64 5f 70 6b 74 |dPacket |*std_pkt|
|00028390| 3b 0a 09 73 74 72 75 63 | 74 20 44 69 73 6b 4f 62 |;..struc|t DiskOb|
|000283a0| 6a 65 63 74 20 2a 64 6f | 62 6a 3b 0a 09 42 50 54 |ject *do|bj;..BPT|
|000283b0| 52 20 6f 63 64 3b 0a 09 | 62 38 20 2a 74 6d 70 3b |R ocd;..|b8 *tmp;|
|000283c0| 0a 09 0a 09 73 70 20 3d | 20 73 69 74 65 73 3b 0a |....sp =| sites;.|
|000283d0| 09 77 68 69 6c 65 20 28 | 73 70 29 20 7b 0a 09 09 |.while (|sp) {...|
|000283e0| 69 66 20 28 73 74 72 69 | 63 6d 70 28 73 70 2d 3e |if (stri|cmp(sp->|
|000283f0| 6e 61 6d 65 2c 20 73 29 | 20 3d 3d 20 30 29 20 72 |name, s)| == 0) r|
|00028400| 65 74 75 72 6e 20 73 70 | 2d 3e 70 6f 72 74 3b 0a |eturn sp|->port;.|
|00028410| 09 09 73 70 20 3d 20 73 | 70 2d 3e 6e 65 78 74 3b |..sp = s|p->next;|
|00028420| 0a 09 7d 0a 09 0a 09 73 | 70 20 3d 20 28 73 69 74 |..}....s|p = (sit|
|00028430| 65 20 2a 29 61 6c 6c 6f | 63 61 74 65 28 73 69 7a |e *)allo|cate(siz|
|00028440| 65 6f 66 28 2a 73 70 29 | 20 2b 20 73 74 72 6c 65 |eof(*sp)| + strle|
|00028450| 6e 28 73 29 20 2b 20 31 | 2c 20 56 5f 73 69 74 65 |n(s) + 1|, V_site|
|00028460| 29 3b 0a 09 69 66 20 28 | 21 73 70 29 20 72 65 74 |);..if (|!sp) ret|
|00028470| 75 72 6e 20 6e 69 6c 3b | 0a 09 0a 09 65 6e 73 75 |urn nil;|....ensu|
|00028480| 72 65 28 73 70 2c 20 56 | 5f 73 69 74 65 29 3b 0a |re(sp, V|_site);.|
|00028490| 09 0a 09 2f 2a 20 66 69 | 72 73 74 20 73 6f 72 74 |.../* fi|rst sort|
|000284a0| 20 6f 75 74 20 64 65 66 | 61 75 6c 74 20 6c 6f 67 | out def|ault log|
|000284b0| 69 6e 20 69 6e 66 6f 72 | 6d 61 74 69 6f 6e 20 2a |in infor|mation *|
|000284c0| 2f 0a 09 0a 09 73 70 2d | 3e 75 73 65 72 20 3d 20 |/....sp-|>user = |
|000284d0| 6e 69 6c 3b 0a 09 73 70 | 2d 3e 70 61 73 73 77 6f |nil;..sp|->passwo|
|000284e0| 72 64 20 3d 20 6e 69 6c | 3b 0a 09 0a 09 73 70 2d |rd = nil|;....sp-|
|000284f0| 3e 6e 65 65 64 73 5f 75 | 73 65 72 20 3d 20 66 61 |>needs_u|ser = fa|
|00028500| 6c 73 65 3b 0a 09 73 70 | 2d 3e 6e 65 65 64 73 5f |lse;..sp|->needs_|
|00028510| 70 61 73 73 77 6f 72 64 | 20 3d 20 66 61 6c 73 65 |password| = false|
|00028520| 3b 0a 09 0a 09 73 70 2d | 3e 72 6f 6f 74 20 3d 20 |;....sp-|>root = |
|00028530| 6e 69 6c 3b 0a 09 73 70 | 2d 3e 75 73 65 72 20 3d |nil;..sp|->user =|
|00028540| 20 6e 69 6c 3b 0a 09 73 | 70 2d 3e 70 61 73 73 77 | nil;..s|p->passw|
|00028550| 6f 72 64 20 3d 20 6e 69 | 6c 3b 0a 09 73 70 2d 3e |ord = ni|l;..sp->|
|00028560| 68 6f 73 74 20 3d 20 6e | 69 6c 3b 0a 09 0a 09 73 |host = n|il;....s|
|00028570| 70 2d 3e 6f 70 65 6e 5f | 73 74 61 74 75 73 20 3d |p->open_|status =|
|00028580| 20 66 61 6c 73 65 3b 0a | 09 73 70 2d 3e 71 75 69 | false;.|.sp->qui|
|00028590| 63 6b 20 3d 20 74 72 75 | 65 3b 0a 09 73 70 2d 3e |ck = tru|e;..sp->|
|000285a0| 63 61 73 65 5f 73 65 6e | 73 69 74 69 76 65 20 3d |case_sen|sitive =|
|000285b0| 20 66 61 6c 73 65 3b 0a | 09 73 70 2d 3e 61 6c 6c | false;.|.sp->all|
|000285c0| 5f 6d 65 73 73 61 67 65 | 73 20 3d 20 74 72 75 65 |_message|s = true|
|000285d0| 3b 0a 09 73 70 2d 3e 65 | 72 72 6f 72 5f 6d 65 73 |;..sp->e|rror_mes|
|000285e0| 73 61 67 65 73 20 3d 20 | 74 72 75 65 3b 0a 0a 09 |sages = |true;...|
|000285f0| 73 70 2d 3e 70 6f 72 74 | 5f 6e 75 6d 62 65 72 20 |sp->port|_number |
|00028600| 3d 20 66 74 70 5f 70 6f | 72 74 5f 6e 75 6d 62 65 |= ftp_po|rt_numbe|
|00028610| 72 3b 0a 09 0a 09 74 6d | 70 20 3d 20 73 3b 0a 09 |r;....tm|p = s;..|
|00028620| 77 68 69 6c 65 20 28 2a | 74 6d 70 20 26 26 20 2a |while (*|tmp && *|
|00028630| 74 6d 70 20 21 3d 20 27 | 40 27 29 20 74 6d 70 2b |tmp != '|@') tmp+|
|00028640| 2b 3b 0a 09 0a 09 69 66 | 20 28 2a 74 6d 70 20 3d |+;....if| (*tmp =|
|00028650| 3d 20 27 40 27 29 20 7b | 0a 09 09 73 70 2d 3e 68 |= '@') {|...sp->h|
|00028660| 6f 73 74 20 3d 20 28 62 | 38 20 2a 29 61 6c 6c 6f |ost = (b|8 *)allo|
|00028670| 63 61 74 65 28 73 74 72 | 6c 65 6e 28 74 6d 70 20 |cate(str|len(tmp |
|00028680| 2b 20 31 29 20 2b 20 31 | 2c 20 56 5f 63 73 74 72 |+ 1) + 1|, V_cstr|
|00028690| 29 3b 0a 09 09 69 66 20 | 28 73 70 2d 3e 68 6f 73 |);...if |(sp->hos|
|000286a0| 74 29 20 7b 0a 09 09 09 | 73 74 72 63 70 79 28 73 |t) {....|strcpy(s|
|000286b0| 70 2d 3e 68 6f 73 74 2c | 20 74 6d 70 20 2b 20 31 |p->host,| tmp + 1|
|000286c0| 29 3b 0a 09 09 7d 0a 09 | 09 0a 09 09 73 70 2d 3e |);...}..|....sp->|
|000286d0| 6e 65 65 64 73 5f 75 73 | 65 72 20 3d 20 74 72 75 |needs_us|er = tru|
|000286e0| 65 3b 0a 09 09 73 70 2d | 3e 6e 65 65 64 73 5f 70 |e;...sp-|>needs_p|
|000286f0| 61 73 73 77 6f 72 64 20 | 3d 20 74 72 75 65 3b 0a |assword |= true;.|
|00028700| 09 09 0a 09 09 69 66 20 | 28 74 6d 70 20 21 3d 20 |.....if |(tmp != |
|00028710| 73 29 20 7b 0a 09 09 09 | 73 70 2d 3e 75 73 65 72 |s) {....|sp->user|
|00028720| 20 3d 20 28 62 38 20 2a | 29 61 6c 6c 6f 63 61 74 | = (b8 *|)allocat|
|00028730| 65 28 74 6d 70 20 2d 20 | 73 20 2b 20 31 2c 20 56 |e(tmp - |s + 1, V|
|00028740| 5f 63 73 74 72 29 3b 0a | 09 09 09 69 66 20 28 73 |_cstr);.|...if (s|
|00028750| 70 2d 3e 75 73 65 72 29 | 20 7b 0a 09 09 09 09 73 |p->user)| {.....s|
|00028760| 74 72 6e 63 70 79 28 73 | 70 2d 3e 75 73 65 72 2c |trncpy(s|p->user,|
|00028770| 20 73 2c 20 74 6d 70 20 | 2d 20 73 29 3b 0a 09 09 | s, tmp |- s);...|
|00028780| 09 09 73 70 2d 3e 75 73 | 65 72 5b 74 6d 70 20 2d |..sp->us|er[tmp -|
|00028790| 20 73 5d 20 3d 20 30 3b | 0a 09 09 09 09 73 70 2d | s] = 0;|.....sp-|
|000287a0| 3e 6e 65 65 64 73 5f 75 | 73 65 72 20 3d 20 66 61 |>needs_u|ser = fa|
|000287b0| 6c 73 65 3b 0a 09 09 09 | 7d 0a 09 09 7d 0a 09 7d |lse;....|}...}..}|
|000287c0| 20 65 6c 73 65 20 7b 0a | 09 09 73 70 2d 3e 68 6f | else {.|..sp->ho|
|000287d0| 73 74 20 3d 20 28 62 38 | 20 2a 29 61 6c 6c 6f 63 |st = (b8| *)alloc|
|000287e0| 61 74 65 28 73 74 72 6c | 65 6e 28 73 29 20 2b 20 |ate(strl|en(s) + |
|000287f0| 31 2c 20 56 5f 63 73 74 | 72 29 3b 0a 09 09 69 66 |1, V_cst|r);...if|
|00028800| 20 28 73 70 2d 3e 68 6f | 73 74 29 20 7b 0a 09 09 | (sp->ho|st) {...|
|00028810| 09 73 74 72 63 70 79 28 | 73 70 2d 3e 68 6f 73 74 |.strcpy(|sp->host|
|00028820| 2c 20 73 29 3b 0a 09 09 | 7d 0a 09 7d 0a 09 0a 09 |, s);...|}..}....|
|00028830| 2f 2a 20 6e 6f 77 20 74 | 72 79 20 74 6f 20 67 65 |/* now t|ry to ge|
|00028840| 74 20 69 6e 66 6f 20 66 | 72 6f 6d 20 69 63 6f 6e |t info f|rom icon|
|00028850| 20 2a 2f 0a 09 0a 09 69 | 66 20 28 49 63 6f 6e 42 | */....i|f (IconB|
|00028860| 61 73 65 29 20 7b 0a 09 | 09 6f 63 64 20 3d 20 43 |ase) {..|.ocd = C|
|00028870| 75 72 72 65 6e 74 44 69 | 72 28 66 74 70 68 6f 73 |urrentDi|r(ftphos|
|00028880| 74 73 5f 6c 6f 63 6b 29 | 3b 0a 09 09 64 6f 62 6a |ts_lock)|;...dobj|
|00028890| 20 3d 20 47 65 74 44 69 | 73 6b 4f 62 6a 65 63 74 | = GetDi|skObject|
|000288a0| 28 73 29 3b 0a 09 09 69 | 66 20 28 21 64 6f 62 6a |(s);...i|f (!dobj|
|000288b0| 29 0a 09 09 7b 0a 09 09 | 09 64 6f 62 6a 20 3d 20 |)...{...|.dobj = |
|000288c0| 47 65 74 44 69 73 6b 4f | 62 6a 65 63 74 28 73 74 |GetDiskO|bject(st|
|000288d0| 72 69 6e 67 73 5b 4d 53 | 47 5f 44 45 46 41 55 4c |rings[MS|G_DEFAUL|
|000288e0| 54 5d 29 3b 0a 09 09 7d | 0a 09 09 43 75 72 72 65 |T]);...}|...Curre|
|000288f0| 6e 74 44 69 72 28 6f 63 | 64 29 3b 0a 09 7d 20 65 |ntDir(oc|d);..} e|
|00028900| 6c 73 65 20 7b 0a 09 09 | 64 6f 62 6a 20 3d 20 6e |lse {...|dobj = n|
|00028910| 69 6c 3b 0a 09 7d 0a 09 | 0a 09 69 66 20 28 64 6f |il;..}..|..if (do|
|00028920| 62 6a 29 20 7b 0a 09 09 | 2f 2a 0a 09 09 20 2a 20 |bj) {...|/*... * |
|00028930| 48 4f 53 54 20 6f 76 65 | 72 72 69 64 65 73 20 74 |HOST ove|rrides t|
|00028940| 68 65 20 22 74 69 74 6c | 65 22 2c 20 77 68 65 72 |he "titl|e", wher|
|00028950| 65 61 73 20 55 53 45 52 | 20 64 6f 65 73 6e 27 74 |eas USER| doesn't|
|00028960| 20 2e 2e 2e 0a 09 09 20 | 2a 20 69 73 20 74 68 69 | ...... |* is thi|
|00028970| 73 20 69 6e 63 6f 6e 73 | 69 73 74 65 6e 74 20 6f |s incons|istent o|
|00028980| 72 20 69 73 20 69 74 20 | 76 61 6c 69 64 3f 0a 09 |r is it |valid?..|
|00028990| 09 20 2a 2f 0a 09 09 69 | 66 20 28 21 73 70 2d 3e |. */...i|f (!sp->|
|000289a0| 75 73 65 72 29 20 7b 0a | 09 09 09 74 6d 70 20 3d |user) {.|...tmp =|
|000289b0| 20 46 69 6e 64 54 6f 6f | 6c 54 79 70 65 28 64 6f | FindToo|lType(do|
|000289c0| 62 6a 2d 3e 64 6f 5f 54 | 6f 6f 6c 54 79 70 65 73 |bj->do_T|oolTypes|
|000289d0| 2c 20 73 74 72 69 6e 67 | 73 5b 4d 53 47 5f 55 53 |, string|s[MSG_US|
|000289e0| 45 52 5f 54 54 5d 29 3b | 0a 09 09 09 69 66 20 28 |ER_TT]);|....if (|
|000289f0| 74 6d 70 29 20 7b 0a 09 | 09 09 09 73 70 2d 3e 75 |tmp) {..|...sp->u|
|00028a00| 73 65 72 20 3d 20 28 62 | 38 20 2a 29 61 6c 6c 6f |ser = (b|8 *)allo|
|00028a10| 63 61 74 65 28 73 74 72 | 6c 65 6e 28 74 6d 70 29 |cate(str|len(tmp)|
|00028a20| 20 2b 20 31 2c 20 56 5f | 63 73 74 72 29 3b 0a 09 | + 1, V_|cstr);..|
|00028a30| 09 09 09 69 66 20 28 73 | 70 2d 3e 75 73 65 72 29 |...if (s|p->user)|
|00028a40| 20 7b 0a 09 09 09 09 09 | 73 74 72 63 70 79 28 73 | {......|strcpy(s|
|00028a50| 70 2d 3e 75 73 65 72 2c | 20 74 6d 70 29 3b 0a 09 |p->user,| tmp);..|
|00028a60| 09 09 09 09 73 70 2d 3e | 6e 65 65 64 73 5f 75 73 |....sp->|needs_us|
|00028a70| 65 72 20 3d 20 66 61 6c | 73 65 3b 0a 09 09 09 09 |er = fal|se;.....|
|00028a80| 7d 0a 09 09 09 7d 0a 09 | 09 7d 0a 09 09 0a 09 09 |}....}..|.}......|
|00028a90| 74 6d 70 20 3d 20 46 69 | 6e 64 54 6f 6f 6c 54 79 |tmp = Fi|ndToolTy|
|00028aa0| 70 65 28 64 6f 62 6a 2d | 3e 64 6f 5f 54 6f 6f 6c |pe(dobj-|>do_Tool|
|00028ab0| 54 79 70 65 73 2c 20 73 | 74 72 69 6e 67 73 5b 4d |Types, s|trings[M|
|00028ac0| 53 47 5f 50 41 53 53 57 | 4f 52 44 5f 54 54 5d 29 |SG_PASSW|ORD_TT])|
|00028ad0| 3b 0a 09 09 69 66 20 28 | 74 6d 70 29 20 7b 0a 09 |;...if (|tmp) {..|
|00028ae0| 09 09 73 70 2d 3e 70 61 | 73 73 77 6f 72 64 20 3d |..sp->pa|ssword =|
|00028af0| 20 28 62 38 20 2a 29 61 | 6c 6c 6f 63 61 74 65 28 | (b8 *)a|llocate(|
|00028b00| 73 74 72 6c 65 6e 28 74 | 6d 70 29 20 2b 20 31 2c |strlen(t|mp) + 1,|
|00028b10| 20 56 5f 63 73 74 72 29 | 3b 0a 09 09 09 69 66 20 | V_cstr)|;....if |
|00028b20| 28 73 70 2d 3e 70 61 73 | 73 77 6f 72 64 29 20 7b |(sp->pas|sword) {|
|00028b30| 0a 09 09 09 09 73 74 72 | 63 70 79 28 73 70 2d 3e |.....str|cpy(sp->|
|00028b40| 70 61 73 73 77 6f 72 64 | 2c 20 74 6d 70 29 3b 0a |password|, tmp);.|
|00028b50| 09 09 09 09 73 70 2d 3e | 6e 65 65 64 73 5f 70 61 |....sp->|needs_pa|
|00028b60| 73 73 77 6f 72 64 20 3d | 20 66 61 6c 73 65 3b 0a |ssword =| false;.|
|00028b70| 09 09 09 7d 0a 09 09 7d | 0a 09 09 0a 09 09 74 6d |...}...}|......tm|
|00028b80| 70 20 3d 20 46 69 6e 64 | 54 6f 6f 6c 54 79 70 65 |p = Find|ToolType|
|00028b90| 28 64 6f 62 6a 2d 3e 64 | 6f 5f 54 6f 6f 6c 54 79 |(dobj->d|o_ToolTy|
|00028ba0| 70 65 73 2c 20 73 74 72 | 69 6e 67 73 5b 4d 53 47 |pes, str|ings[MSG|
|00028bb0| 5f 53 54 41 54 55 53 5f | 54 54 5d 29 3b 0a 09 09 |_STATUS_|TT]);...|
|00028bc0| 69 66 20 28 74 6d 70 29 | 20 7b 0a 09 09 09 69 66 |if (tmp)| {....if|
|00028bd0| 20 28 73 74 72 69 63 6d | 70 28 74 6d 70 2c 20 73 | (stricm|p(tmp, s|
|00028be0| 74 72 69 6e 67 73 5b 4d | 53 47 5f 4f 46 46 5d 29 |trings[M|SG_OFF])|
|00028bf0| 20 21 3d 20 30 20 26 26 | 0a 09 09 09 09 09 73 74 | != 0 &&|......st|
|00028c00| 72 69 63 6d 70 28 74 6d | 70 2c 20 73 74 72 69 6e |ricmp(tm|p, strin|
|00028c10| 67 73 5b 4d 53 47 5f 46 | 41 4c 53 45 5d 29 20 21 |gs[MSG_F|ALSE]) !|
|00028c20| 3d 20 30 29 20 7b 0a 09 | 09 09 09 73 70 2d 3e 6f |= 0) {..|...sp->o|
|00028c30| 70 65 6e 5f 73 74 61 74 | 75 73 20 3d 20 74 72 75 |pen_stat|us = tru|
|00028c40| 65 3b 0a 09 09 09 7d 0a | 09 09 7d 0a 0a 09 09 74 |e;....}.|..}....t|
|00028c50| 6d 70 20 3d 20 46 69 6e | 64 54 6f 6f 6c 54 79 70 |mp = Fin|dToolTyp|
|00028c60| 65 28 64 6f 62 6a 2d 3e | 64 6f 5f 54 6f 6f 6c 54 |e(dobj->|do_ToolT|
|00028c70| 79 70 65 73 2c 20 73 74 | 72 69 6e 67 73 5b 4d 53 |ypes, st|rings[MS|
|00028c80| 47 5f 51 55 49 43 4b 5f | 54 54 5d 29 3b 0a 09 09 |G_QUICK_|TT]);...|
|00028c90| 69 66 20 28 74 6d 70 29 | 20 7b 0a 09 09 09 69 66 |if (tmp)| {....if|
|00028ca0| 20 28 73 74 72 69 63 6d | 70 28 74 6d 70 2c 20 73 | (stricm|p(tmp, s|
|00028cb0| 74 72 69 6e 67 73 5b 4d | 53 47 5f 4f 46 46 5d 29 |trings[M|SG_OFF])|
|00028cc0| 20 3d 3d 20 30 20 7c 7c | 0a 09 09 09 09 09 73 74 | == 0 |||......st|
|00028cd0| 72 69 63 6d 70 28 74 6d | 70 2c 20 73 74 72 69 6e |ricmp(tm|p, strin|
|00028ce0| 67 73 5b 4d 53 47 5f 46 | 41 4c 53 45 5d 29 20 3d |gs[MSG_F|ALSE]) =|
|00028cf0| 3d 20 30 29 20 7b 0a 09 | 09 09 09 73 70 2d 3e 71 |= 0) {..|...sp->q|
|00028d00| 75 69 63 6b 20 3d 20 66 | 61 6c 73 65 3b 0a 09 09 |uick = f|alse;...|
|00028d10| 09 7d 20 65 6c 73 65 20 | 7b 0a 09 09 09 09 73 70 |.} else |{.....sp|
|00028d20| 2d 3e 71 75 69 63 6b 20 | 3d 20 74 72 75 65 3b 0a |->quick |= true;.|
|00028d30| 09 09 09 7d 0a 09 09 7d | 0a 09 09 0a 09 09 74 6d |...}...}|......tm|
|00028d40| 70 20 3d 20 46 69 6e 64 | 54 6f 6f 6c 54 79 70 65 |p = Find|ToolType|
|00028d50| 28 64 6f 62 6a 2d 3e 64 | 6f 5f 54 6f 6f 6c 54 79 |(dobj->d|o_ToolTy|
|00028d60| 70 65 73 2c 20 73 74 72 | 69 6e 67 73 5b 4d 53 47 |pes, str|ings[MSG|
|00028d70| 5f 53 4c 4f 57 5f 54 54 | 5d 29 3b 0a 09 09 69 66 |_SLOW_TT|]);...if|
|00028d80| 20 28 74 6d 70 29 20 7b | 0a 09 09 09 69 66 20 28 | (tmp) {|....if (|
|00028d90| 73 74 72 69 63 6d 70 28 | 74 6d 70 2c 20 73 74 72 |stricmp(|tmp, str|
|00028da0| 69 6e 67 73 5b 4d 53 47 | 5f 4f 46 46 5d 29 20 21 |ings[MSG|_OFF]) !|
|00028db0| 3d 20 30 20 26 26 0a 09 | 09 09 09 09 73 74 72 69 |= 0 &&..|....stri|
|00028dc0| 63 6d 70 28 74 6d 70 2c | 20 73 74 72 69 6e 67 73 |cmp(tmp,| strings|
|00028dd0| 5b 4d 53 47 5f 46 41 4c | 53 45 5d 29 20 21 3d 20 |[MSG_FAL|SE]) != |
|00028de0| 30 29 20 7b 0a 09 09 09 | 09 73 70 2d 3e 71 75 69 |0) {....|.sp->qui|
|00028df0| 63 6b 20 3d 20 66 61 6c | 73 65 3b 0a 09 09 09 7d |ck = fal|se;....}|
|00028e00| 20 65 6c 73 65 20 7b 0a | 09 09 09 09 73 70 2d 3e | else {.|....sp->|
|00028e10| 71 75 69 63 6b 20 3d 20 | 74 72 75 65 3b 0a 09 09 |quick = |true;...|
|00028e20| 09 7d 0a 09 09 7d 0a 09 | 09 0a 09 09 74 6d 70 20 |.}...}..|....tmp |
|00028e30| 3d 20 46 69 6e 64 54 6f | 6f 6c 54 79 70 65 28 64 |= FindTo|olType(d|
|00028e40| 6f 62 6a 2d 3e 64 6f 5f | 54 6f 6f 6c 54 79 70 65 |obj->do_|ToolType|
|00028e50| 73 2c 20 73 74 72 69 6e | 67 73 5b 4d 53 47 5f 43 |s, strin|gs[MSG_C|
|00028e60| 41 53 45 5f 54 54 5d 29 | 3b 0a 09 09 69 66 20 28 |ASE_TT])|;...if (|
|00028e70| 74 6d 70 29 20 7b 0a 09 | 09 09 69 66 20 28 73 74 |tmp) {..|..if (st|
|00028e80| 72 69 63 6d 70 28 74 6d | 70 2c 20 73 74 72 69 6e |ricmp(tm|p, strin|
|00028e90| 67 73 5b 4d 53 47 5f 4f | 46 46 5d 29 20 21 3d 20 |gs[MSG_O|FF]) != |
|00028ea0| 30 20 26 26 0a 09 09 09 | 09 09 73 74 72 69 63 6d |0 &&....|..stricm|
|00028eb0| 70 28 74 6d 70 2c 20 73 | 74 72 69 6e 67 73 5b 4d |p(tmp, s|trings[M|
|00028ec0| 53 47 5f 46 41 4c 53 45 | 5d 29 20 21 3d 20 30 29 |SG_FALSE|]) != 0)|
|00028ed0| 20 7b 0a 09 09 09 09 73 | 70 2d 3e 63 61 73 65 5f | {.....s|p->case_|
|00028ee0| 73 65 6e 73 69 74 69 76 | 65 20 3d 20 74 72 75 65 |sensitiv|e = true|
|00028ef0| 3b 0a 09 09 09 7d 0a 09 | 09 7d 0a 09 09 0a 09 09 |;....}..|.}......|
|00028f00| 74 6d 70 20 3d 20 46 69 | 6e 64 54 6f 6f 6c 54 79 |tmp = Fi|ndToolTy|
|00028f10| 70 65 28 64 6f 62 6a 2d | 3e 64 6f 5f 54 6f 6f 6c |pe(dobj-|>do_Tool|
|00028f20| 54 79 70 65 73 2c 20 73 | 74 72 69 6e 67 73 5b 4d |Types, s|trings[M|
|00028f30| 53 47 5f 48 4f 53 54 5f | 54 54 5d 29 3b 0a 09 09 |SG_HOST_|TT]);...|
|00028f40| 69 66 20 28 74 6d 70 29 | 20 7b 0a 09 09 09 69 66 |if (tmp)| {....if|
|00028f50| 20 28 73 70 2d 3e 68 6f | 73 74 29 20 64 65 61 6c | (sp->ho|st) deal|
|00028f60| 6c 6f 63 61 74 65 28 73 | 70 2d 3e 68 6f 73 74 2c |locate(s|p->host,|
|00028f70| 20 56 5f 63 73 74 72 29 | 3b 0a 09 09 09 73 70 2d | V_cstr)|;....sp-|
|00028f80| 3e 68 6f 73 74 20 3d 20 | 61 6c 6c 6f 63 61 74 65 |>host = |allocate|
|00028f90| 28 73 74 72 6c 65 6e 28 | 74 6d 70 29 20 2b 20 31 |(strlen(|tmp) + 1|
|00028fa0| 2c 20 56 5f 63 73 74 72 | 29 3b 0a 09 09 09 69 66 |, V_cstr|);....if|
|00028fb0| 20 28 73 70 2d 3e 68 6f | 73 74 29 20 7b 0a 09 09 | (sp->ho|st) {...|
|00028fc0| 09 09 73 74 72 63 70 79 | 28 73 70 2d 3e 68 6f 73 |..strcpy|(sp->hos|
|00028fd0| 74 2c 20 74 6d 70 29 3b | 0a 09 09 09 7d 0a 09 09 |t, tmp);|....}...|
|00028fe0| 7d 0a 09 09 0a 09 09 74 | 6d 70 20 3d 20 46 69 6e |}......t|mp = Fin|
|00028ff0| 64 54 6f 6f 6c 54 79 70 | 65 28 64 6f 62 6a 2d 3e |dToolTyp|e(dobj->|
|00029000| 64 6f 5f 54 6f 6f 6c 54 | 79 70 65 73 2c 20 73 74 |do_ToolT|ypes, st|
|00029010| 72 69 6e 67 73 5b 4d 53 | 47 5f 52 4f 4f 54 5f 54 |rings[MS|G_ROOT_T|
|00029020| 54 5d 29 3b 0a 09 09 69 | 66 20 28 74 6d 70 29 0a |T]);...i|f (tmp).|
|00029030| 09 09 7b 0a 09 09 09 73 | 70 2d 3e 72 6f 6f 74 20 |..{....s|p->root |
|00029040| 3d 20 61 6c 6c 6f 63 61 | 74 65 28 73 74 72 6c 65 |= alloca|te(strle|
|00029050| 6e 28 74 6d 70 29 20 2b | 20 31 2c 20 56 5f 63 73 |n(tmp) +| 1, V_cs|
|00029060| 74 72 29 3b 0a 09 09 09 | 69 66 20 28 73 70 2d 3e |tr);....|if (sp->|
|00029070| 72 6f 6f 74 29 0a 09 09 | 09 7b 0a 09 09 09 09 73 |root)...|.{.....s|
|00029080| 74 72 63 70 79 28 73 70 | 2d 3e 72 6f 6f 74 2c 20 |trcpy(sp|->root, |
|00029090| 74 6d 70 29 3b 0a 09 09 | 09 7d 0a 09 09 7d 0a 09 |tmp);...|.}...}..|
|000290a0| 09 0a 09 09 74 6d 70 20 | 3d 20 46 69 6e 64 54 6f |....tmp |= FindTo|
|000290b0| 6f 6c 54 79 70 65 28 64 | 6f 62 6a 2d 3e 64 6f 5f |olType(d|obj->do_|
|000290c0| 54 6f 6f 6c 54 79 70 65 | 73 2c 20 73 74 72 69 6e |ToolType|s, strin|
|000290d0| 67 73 5b 4d 53 47 5f 4d | 45 53 53 41 47 45 53 5f |gs[MSG_M|ESSAGES_|
|000290e0| 54 54 5d 29 3b 0a 09 09 | 69 66 20 28 74 6d 70 29 |TT]);...|if (tmp)|
|000290f0| 20 7b 0a 09 09 09 69 66 | 20 28 73 74 72 69 63 6d | {....if| (stricm|
|00029100| 70 28 74 6d 70 2c 20 73 | 74 72 69 6e 67 73 5b 4d |p(tmp, s|trings[M|
|00029110| 53 47 5f 41 4c 4c 5d 29 | 20 3d 3d 20 30 29 0a 09 |SG_ALL])| == 0)..|
|00029120| 09 09 7b 0a 09 09 09 09 | 73 70 2d 3e 65 72 72 6f |..{.....|sp->erro|
|00029130| 72 5f 6d 65 73 73 61 67 | 65 73 20 3d 20 74 72 75 |r_messag|es = tru|
|00029140| 65 3b 0a 09 09 09 09 73 | 70 2d 3e 61 6c 6c 5f 6d |e;.....s|p->all_m|
|00029150| 65 73 73 61 67 65 73 20 | 3d 20 74 72 75 65 3b 0a |essages |= true;.|
|00029160| 09 09 09 7d 0a 09 09 09 | 65 6c 73 65 20 69 66 20 |...}....|else if |
|00029170| 28 73 74 72 69 63 6d 70 | 28 74 6d 70 2c 20 73 74 |(stricmp|(tmp, st|
|00029180| 72 69 6e 67 73 5b 4d 53 | 47 5f 45 52 52 4f 52 5d |rings[MS|G_ERROR]|
|00029190| 29 20 3d 3d 20 30 29 0a | 09 09 09 7b 0a 09 09 09 |) == 0).|...{....|
|000291a0| 09 73 70 2d 3e 61 6c 6c | 5f 6d 65 73 73 61 67 65 |.sp->all|_message|
|000291b0| 73 20 3d 20 66 61 6c 73 | 65 3b 0a 09 09 09 09 73 |s = fals|e;.....s|
|000291c0| 70 2d 3e 65 72 72 6f 72 | 5f 6d 65 73 73 61 67 65 |p->error|_message|
|000291d0| 73 20 3d 20 74 72 75 65 | 3b 0a 09 09 09 7d 0a 09 |s = true|;....}..|
|000291e0| 09 09 65 6c 73 65 20 69 | 66 20 28 73 74 72 69 63 |..else i|f (stric|
|000291f0| 6d 70 28 74 6d 70 2c 20 | 73 74 72 69 6e 67 73 5b |mp(tmp, |strings[|
|00029200| 4d 53 47 5f 4e 4f 4e 45 | 5d 29 20 3d 3d 20 30 29 |MSG_NONE|]) == 0)|
|00029210| 0a 09 09 09 7b 0a 09 09 | 09 09 73 70 2d 3e 61 6c |....{...|..sp->al|
|00029220| 6c 5f 6d 65 73 73 61 67 | 65 73 20 3d 20 66 61 6c |l_messag|es = fal|
|00029230| 73 65 3b 0a 09 09 09 09 | 73 70 2d 3e 65 72 72 6f |se;.....|sp->erro|
|00029240| 72 5f 6d 65 73 73 61 67 | 65 73 20 3d 20 66 61 6c |r_messag|es = fal|
|00029250| 73 65 3b 0a 09 09 09 7d | 0a 09 09 7d 0a 0a 09 09 |se;....}|...}....|
|00029260| 74 6d 70 20 3d 20 46 69 | 6e 64 54 6f 6f 6c 54 79 |tmp = Fi|ndToolTy|
|00029270| 70 65 28 64 6f 62 6a 2d | 3e 64 6f 5f 54 6f 6f 6c |pe(dobj-|>do_Tool|
|00029280| 54 79 70 65 73 2c 20 73 | 74 72 69 6e 67 73 5b 4d |Types, s|trings[M|
|00029290| 53 47 5f 50 4f 52 54 5f | 54 54 5d 29 3b 0a 09 09 |SG_PORT_|TT]);...|
|000292a0| 69 66 20 28 74 6d 70 29 | 20 7b 0a 09 09 09 73 70 |if (tmp)| {....sp|
|000292b0| 2d 3e 70 6f 72 74 5f 6e | 75 6d 62 65 72 20 3d 20 |->port_n|umber = |
|000292c0| 61 74 6f 69 28 74 6d 70 | 29 3b 0a 09 09 7d 0a 09 |atoi(tmp|);...}..|
|000292d0| 09 0a 09 09 46 72 65 65 | 44 69 73 6b 4f 62 6a 65 |....Free|DiskObje|
|000292e0| 63 74 28 64 6f 62 6a 29 | 3b 0a 09 7d 0a 09 0a 09 |ct(dobj)|;..}....|
|000292f0| 69 66 20 28 21 73 70 2d | 3e 68 6f 73 74 29 20 7b |if (!sp-|>host) {|
|00029300| 0a 09 09 69 66 20 28 73 | 70 2d 3e 75 73 65 72 29 |...if (s|p->user)|
|00029310| 20 64 65 61 6c 6c 6f 63 | 61 74 65 28 73 70 2d 3e | dealloc|ate(sp->|
|00029320| 75 73 65 72 2c 20 56 5f | 63 73 74 72 29 3b 0a 09 |user, V_|cstr);..|
|00029330| 09 69 66 20 28 73 70 2d | 3e 70 61 73 73 77 6f 72 |.if (sp-|>passwor|
|00029340| 64 29 20 64 65 61 6c 6c | 6f 63 61 74 65 28 73 70 |d) deall|ocate(sp|
|00029350| 2d 3e 70 61 73 73 77 6f | 72 64 2c 20 56 5f 63 73 |->passwo|rd, V_cs|
|00029360| 74 72 29 3b 0a 09 09 69 | 66 20 28 73 70 2d 3e 72 |tr);...i|f (sp->r|
|00029370| 6f 6f 74 29 20 64 65 61 | 6c 6c 6f 63 61 74 65 28 |oot) dea|llocate(|
|00029380| 73 70 2d 3e 72 6f 6f 74 | 2c 20 56 5f 63 73 74 72 |sp->root|, V_cstr|
|00029390| 29 3b 0a 09 09 0a 09 09 | 64 65 61 6c 6c 6f 63 61 |);......|dealloca|
|000293a0| 74 65 28 73 70 2c 20 56 | 5f 73 69 74 65 29 3b 0a |te(sp, V|_site);.|
|000293b0| 09 09 0a 09 09 72 65 74 | 75 72 6e 20 6e 69 6c 3b |.....ret|urn nil;|
|000293c0| 0a 09 7d 0a 09 0a 09 73 | 74 64 5f 70 6b 74 20 3d |..}....s|td_pkt =|
|000293d0| 20 28 73 74 72 75 63 74 | 20 53 74 61 6e 64 61 72 | (struct| Standar|
|000293e0| 64 50 61 63 6b 65 74 20 | 2a 29 61 6c 6c 6f 63 61 |dPacket |*)alloca|
|000293f0| 74 65 28 73 69 7a 65 6f | 66 28 2a 73 74 64 5f 70 |te(sizeo|f(*std_p|
|00029400| 6b 74 29 2c 20 56 5f 53 | 74 61 6e 64 61 72 64 50 |kt), V_S|tandardP|
|00029410| 61 63 6b 65 74 29 3b 0a | 09 69 66 20 28 21 73 74 |acket);.|.if (!st|
|00029420| 64 5f 70 6b 74 29 20 7b | 0a 09 09 64 65 61 6c 6c |d_pkt) {|...deall|
|00029430| 6f 63 61 74 65 28 73 70 | 2d 3e 68 6f 73 74 2c 20 |ocate(sp|->host, |
|00029440| 56 5f 63 73 74 72 29 3b | 0a 09 09 0a 09 09 69 66 |V_cstr);|......if|
|00029450| 20 28 73 70 2d 3e 75 73 | 65 72 29 20 64 65 61 6c | (sp->us|er) deal|
|00029460| 6c 6f 63 61 74 65 28 73 | 70 2d 3e 75 73 65 72 2c |locate(s|p->user,|
|00029470| 20 56 5f 63 73 74 72 29 | 3b 0a 09 09 69 66 20 28 | V_cstr)|;...if (|
|00029480| 73 70 2d 3e 70 61 73 73 | 77 6f 72 64 29 20 64 65 |sp->pass|word) de|
|00029490| 61 6c 6c 6f 63 61 74 65 | 28 73 70 2d 3e 70 61 73 |allocate|(sp->pas|
|000294a0| 73 77 6f 72 64 2c 20 56 | 5f 63 73 74 72 29 3b 0a |sword, V|_cstr);.|
|000294b0| 09 09 69 66 20 28 73 70 | 2d 3e 72 6f 6f 74 29 20 |..if (sp|->root) |
|000294c0| 64 65 61 6c 6c 6f 63 61 | 74 65 28 73 70 2d 3e 72 |dealloca|te(sp->r|
|000294d0| 6f 6f 74 2c 20 56 5f 63 | 73 74 72 29 3b 0a 09 09 |oot, V_c|str);...|
|000294e0| 0a 09 09 64 65 61 6c 6c | 6f 63 61 74 65 28 73 70 |...deall|ocate(sp|
|000294f0| 2c 20 56 5f 73 69 74 65 | 29 3b 0a 09 09 0a 09 09 |, V_site|);......|
|00029500| 72 65 74 75 72 6e 20 6e | 69 6c 3b 0a 09 7d 0a 09 |return n|il;..}..|
|00029510| 0a 09 73 74 64 5f 70 6b | 74 2d 3e 73 70 5f 4d 73 |..std_pk|t->sp_Ms|
|00029520| 67 2e 6d 6e 5f 4e 6f 64 | 65 2e 6c 6e 5f 4e 61 6d |g.mn_Nod|e.ln_Nam|
|00029530| 65 20 3d 20 28 76 6f 69 | 64 20 2a 29 26 73 74 64 |e = (voi|d *)&std|
|00029540| 5f 70 6b 74 2d 3e 73 70 | 5f 50 6b 74 3b 0a 09 73 |_pkt->sp|_Pkt;..s|
|00029550| 74 64 5f 70 6b 74 2d 3e | 73 70 5f 50 6b 74 2e 64 |td_pkt->|sp_Pkt.d|
|00029560| 70 5f 4c 69 6e 6b 20 3d | 20 26 73 74 64 5f 70 6b |p_Link =| &std_pk|
|00029570| 74 2d 3e 73 70 5f 4d 73 | 67 3b 0a 09 0a 09 73 74 |t->sp_Ms|g;....st|
|00029580| 64 5f 70 6b 74 2d 3e 73 | 70 5f 50 6b 74 2e 64 70 |d_pkt->s|p_Pkt.dp|
|00029590| 5f 54 79 70 65 20 3d 20 | 41 43 54 49 4f 4e 5f 44 |_Type = |ACTION_D|
|000295a0| 49 45 3b 09 2f 2a 20 69 | 67 6e 6f 72 65 64 20 77 |IE;./* i|gnored w|
|000295b0| 68 65 6e 20 75 73 65 64 | 20 61 74 20 73 74 61 72 |hen used| at star|
|000295c0| 74 75 70 20 2a 2f 0a 09 | 73 74 64 5f 70 6b 74 2d |tup */..|std_pkt-|
|000295d0| 3e 73 70 5f 50 6b 74 2e | 64 70 5f 41 72 67 31 20 |>sp_Pkt.|dp_Arg1 |
|000295e0| 3d 20 28 62 33 32 29 73 | 70 3b 0a 09 73 74 64 5f |= (b32)s|p;..std_|
|000295f0| 70 6b 74 2d 3e 73 70 5f | 50 6b 74 2e 64 70 5f 50 |pkt->sp_|Pkt.dp_P|
|00029600| 6f 72 74 20 3d 20 73 74 | 61 72 74 75 70 5f 73 79 |ort = st|artup_sy|
|00029610| 6e 63 3b 0a 09 0a 09 73 | 74 72 63 70 79 28 73 70 |nc;....s|trcpy(sp|
|00029620| 2d 3e 6e 61 6d 65 2c 20 | 73 29 3b 0a 09 0a 09 73 |->name, |s);....s|
|00029630| 70 2d 3e 6c 6f 63 6b 5f | 6c 69 73 74 20 3d 20 6e |p->lock_|list = n|
|00029640| 69 6c 3b 0a 09 73 70 2d | 3e 66 69 6c 65 5f 6c 69 |il;..sp-|>file_li|
|00029650| 73 74 20 3d 20 6e 69 6c | 3b 0a 09 0a 09 73 70 2d |st = nil|;....sp-|
|00029660| 3e 69 6e 66 6f 73 20 3d | 20 6e 69 6c 3b 0a 0a 09 |>infos =| nil;...|
|00029670| 73 70 2d 3e 63 6f 6e 74 | 72 6f 6c 20 3d 20 6e 69 |sp->cont|rol = ni|
|00029680| 6c 3b 0a 09 73 70 2d 3e | 69 6e 74 72 20 3d 20 6e |l;..sp->|intr = n|
|00029690| 69 6c 3b 0a 0a 09 73 70 | 2d 3e 63 77 64 20 3d 20 |il;...sp|->cwd = |
|000296a0| 6e 69 6c 3b 0a 09 0a 09 | 73 70 2d 3e 63 6f 6e 6e |nil;....|sp->conn|
|000296b0| 65 63 74 65 64 20 3d 20 | 66 61 6c 73 65 3b 0a 09 |ected = |false;..|
|000296c0| 73 70 2d 3e 72 65 61 64 | 5f 62 61 6e 6e 65 72 73 |sp->read|_banners|
|000296d0| 20 3d 20 66 61 6c 73 65 | 3b 0a 09 73 70 2d 3e 75 | = false|;..sp->u|
|000296e0| 6e 69 78 5f 70 61 74 68 | 73 20 3d 20 74 72 75 65 |nix_path|s = true|
|000296f0| 3b 0a 09 0a 09 73 70 2d | 3e 63 66 69 6c 65 20 3d |;....sp-|>cfile =|
|00029700| 20 6e 69 6c 3b 0a 09 73 | 70 2d 3e 63 66 69 6c 65 | nil;..s|p->cfile|
|00029710| 5f 74 79 70 65 20 3d 20 | 30 3b 0a 09 0a 09 73 70 |_type = |0;....sp|
|00029720| 2d 3e 61 62 6f 72 74 5f | 73 69 67 6e 61 6c 73 20 |->abort_|signals |
|00029730| 3d 20 73 70 2d 3e 64 69 | 73 63 6f 6e 6e 65 63 74 |= sp->di|sconnect|
|00029740| 5f 73 69 67 6e 61 6c 73 | 20 3d 20 30 3b 0a 09 73 |_signals| = 0;..s|
|00029750| 70 2d 3e 73 69 74 65 5f | 73 74 61 74 65 20 3d 20 |p->site_|state = |
|00029760| 53 53 5f 44 49 53 43 4f | 4e 4e 45 43 54 45 44 3b |SS_DISCO|NNECTED;|
|00029770| 0a 09 0a 09 73 70 2d 3e | 73 74 61 74 75 73 5f 77 |....sp->|status_w|
|00029780| 69 6e 64 6f 77 20 3d 20 | 6e 69 6c 3b 0a 09 0a 09 |indow = |nil;....|
|00029790| 63 68 69 6c 64 20 3d 20 | 43 72 65 61 74 65 4e 65 |child = |CreateNe|
|000297a0| 77 50 72 6f 63 54 61 67 | 73 28 0a 09 09 4e 50 5f |wProcTag|s(...NP_|
|000297b0| 45 6e 74 72 79 2c 09 73 | 69 74 65 5f 68 61 6e 64 |Entry,.s|ite_hand|
|000297c0| 6c 65 72 2c 0a 09 09 4e | 50 5f 4e 61 6d 65 2c 09 |ler,...N|P_Name,.|
|000297d0| 73 70 2d 3e 6e 61 6d 65 | 2c 0a 09 09 4e 50 5f 53 |sp->name|,...NP_S|
|000297e0| 74 61 63 6b 53 69 7a 65 | 2c 09 36 30 30 30 2c 0a |tackSize|,.6000,.|
|000297f0| 09 09 4e 50 5f 50 72 69 | 6f 72 69 74 79 2c 09 30 |..NP_Pri|ority,.0|
|00029800| 2c 0a 09 09 54 41 47 5f | 45 4e 44 2c 09 30 0a 09 |,...TAG_|END,.0..|
|00029810| 29 3b 0a 09 0a 09 69 66 | 20 28 21 63 68 69 6c 64 |);....if| (!child|
|00029820| 29 20 7b 0a 09 09 64 65 | 61 6c 6c 6f 63 61 74 65 |) {...de|allocate|
|00029830| 28 73 70 2d 3e 68 6f 73 | 74 2c 20 56 5f 63 73 74 |(sp->hos|t, V_cst|
|00029840| 72 29 3b 0a 09 09 0a 09 | 09 69 66 20 28 73 70 2d |r);.....|.if (sp-|
|00029850| 3e 75 73 65 72 29 20 64 | 65 61 6c 6c 6f 63 61 74 |>user) d|eallocat|
|00029860| 65 28 73 70 2d 3e 75 73 | 65 72 2c 20 56 5f 63 73 |e(sp->us|er, V_cs|
|00029870| 74 72 29 3b 0a 09 09 69 | 66 20 28 73 70 2d 3e 70 |tr);...i|f (sp->p|
|00029880| 61 73 73 77 6f 72 64 29 | 20 64 65 61 6c 6c 6f 63 |assword)| dealloc|
|00029890| 61 74 65 28 73 70 2d 3e | 70 61 73 73 77 6f 72 64 |ate(sp->|password|
|000298a0| 2c 20 56 5f 63 73 74 72 | 29 3b 0a 09 09 69 66 20 |, V_cstr|);...if |
|000298b0| 28 73 70 2d 3e 72 6f 6f | 74 29 20 64 65 61 6c 6c |(sp->roo|t) deall|
|000298c0| 6f 63 61 74 65 28 73 70 | 2d 3e 72 6f 6f 74 2c 20 |ocate(sp|->root, |
|000298d0| 56 5f 63 73 74 72 29 3b | 0a 09 09 0a 09 09 64 65 |V_cstr);|......de|
|000298e0| 61 6c 6c 6f 63 61 74 65 | 28 73 74 64 5f 70 6b 74 |allocate|(std_pkt|
|000298f0| 2c 20 56 5f 53 74 61 6e | 64 61 72 64 50 61 63 6b |, V_Stan|dardPack|
|00029900| 65 74 29 3b 0a 09 09 64 | 65 61 6c 6c 6f 63 61 74 |et);...d|eallocat|
|00029910| 65 28 73 70 2c 20 56 5f | 73 69 74 65 29 3b 0a 09 |e(sp, V_|site);..|
|00029920| 09 72 65 74 75 72 6e 20 | 6e 69 6c 3b 0a 09 7d 0a |.return |nil;..}.|
|00029930| 09 0a 09 73 70 2d 3e 70 | 6f 72 74 20 3d 20 26 63 |...sp->p|ort = &c|
|00029940| 68 69 6c 64 2d 3e 70 72 | 5f 4d 73 67 50 6f 72 74 |hild->pr|_MsgPort|
|00029950| 3b 0a 09 0a 09 50 75 74 | 4d 73 67 28 73 70 2d 3e |;....Put|Msg(sp->|
|00029960| 70 6f 72 74 2c 20 26 73 | 74 64 5f 70 6b 74 2d 3e |port, &s|td_pkt->|
|00029970| 73 70 5f 4d 73 67 29 3b | 0a 09 57 61 69 74 50 6f |sp_Msg);|..WaitPo|
|00029980| 72 74 28 73 74 61 72 74 | 75 70 5f 73 79 6e 63 29 |rt(start|up_sync)|
|00029990| 3b 20 47 65 74 4d 73 67 | 28 73 74 61 72 74 75 70 |; GetMsg|(startup|
|000299a0| 5f 73 79 6e 63 29 3b 0a | 09 0a 09 69 66 20 28 73 |_sync);.|...if (s|
|000299b0| 74 64 5f 70 6b 74 2d 3e | 73 70 5f 50 6b 74 2e 64 |td_pkt->|sp_Pkt.d|
|000299c0| 70 5f 52 65 73 31 29 20 | 7b 0a 09 09 73 70 2d 3e |p_Res1) |{...sp->|
|000299d0| 64 65 61 74 68 5f 70 61 | 63 6b 65 74 20 3d 20 73 |death_pa|cket = s|
|000299e0| 74 64 5f 70 6b 74 3b 0a | 09 09 0a 09 09 73 70 2d |td_pkt;.|.....sp-|
|000299f0| 3e 6e 65 78 74 20 3d 20 | 73 69 74 65 73 3b 0a 09 |>next = |sites;..|
|00029a00| 09 73 69 74 65 73 20 3d | 20 73 70 3b 0a 09 09 0a |.sites =| sp;....|
|00029a10| 09 09 72 65 74 75 72 6e | 20 73 70 2d 3e 70 6f 72 |..return| sp->por|
|00029a20| 74 3b 0a 09 7d 20 65 6c | 73 65 20 7b 0a 09 09 64 |t;..} el|se {...d|
|00029a30| 65 61 6c 6c 6f 63 61 74 | 65 28 73 70 2d 3e 68 6f |eallocat|e(sp->ho|
|00029a40| 73 74 2c 20 56 5f 63 73 | 74 72 29 3b 0a 09 09 0a |st, V_cs|tr);....|
|00029a50| 09 09 69 66 20 28 73 70 | 2d 3e 75 73 65 72 29 20 |..if (sp|->user) |
|00029a60| 64 65 61 6c 6c 6f 63 61 | 74 65 28 73 70 2d 3e 75 |dealloca|te(sp->u|
|00029a70| 73 65 72 2c 20 56 5f 63 | 73 74 72 29 3b 0a 09 09 |ser, V_c|str);...|
|00029a80| 69 66 20 28 73 70 2d 3e | 70 61 73 73 77 6f 72 64 |if (sp->|password|
|00029a90| 29 20 64 65 61 6c 6c 6f | 63 61 74 65 28 73 70 2d |) deallo|cate(sp-|
|00029aa0| 3e 70 61 73 73 77 6f 72 | 64 2c 20 56 5f 63 73 74 |>passwor|d, V_cst|
|00029ab0| 72 29 3b 0a 09 09 69 66 | 20 28 73 70 2d 3e 72 6f |r);...if| (sp->ro|
|00029ac0| 6f 74 29 20 64 65 61 6c | 6c 6f 63 61 74 65 28 73 |ot) deal|locate(s|
|00029ad0| 70 2d 3e 72 6f 6f 74 2c | 20 56 5f 63 73 74 72 29 |p->root,| V_cstr)|
|00029ae0| 3b 0a 09 09 0a 09 09 64 | 65 61 6c 6c 6f 63 61 74 |;......d|eallocat|
|00029af0| 65 28 73 74 64 5f 70 6b | 74 2c 20 56 5f 53 74 61 |e(std_pk|t, V_Sta|
|00029b00| 6e 64 61 72 64 50 61 63 | 6b 65 74 29 3b 0a 09 09 |ndardPac|ket);...|
|00029b10| 64 65 61 6c 6c 6f 63 61 | 74 65 28 73 70 2c 20 56 |dealloca|te(sp, V|
|00029b20| 5f 73 69 74 65 29 3b 0a | 09 09 0a 09 09 72 65 74 |_site);.|.....ret|
|00029b30| 75 72 6e 20 6e 69 6c 3b | 0a 09 7d 0a 7d 0a 0a 76 |urn nil;|..}.}..v|
|00029b40| 6f 69 64 20 72 65 6d 6f | 76 65 5f 73 69 74 65 28 |oid remo|ve_site(|
|00029b50| 73 69 74 65 20 2a 73 70 | 29 0a 7b 0a 09 73 69 74 |site *sp|).{..sit|
|00029b60| 65 20 2a 2a 73 70 73 3b | 0a 09 0a 09 76 65 72 69 |e **sps;|....veri|
|00029b70| 66 79 28 73 70 2c 20 56 | 5f 73 69 74 65 29 3b 0a |fy(sp, V|_site);.|
|00029b80| 09 0a 09 73 70 73 20 3d | 20 26 73 69 74 65 73 3b |...sps =| &sites;|
|00029b90| 0a 09 77 68 69 6c 65 20 | 28 2a 73 70 73 20 26 26 |..while |(*sps &&|
|00029ba0| 20 2a 73 70 73 20 21 3d | 20 73 70 29 20 7b 0a 09 | *sps !=| sp) {..|
|00029bb0| 09 73 70 73 20 3d 20 26 | 28 2a 73 70 73 29 2d 3e |.sps = &|(*sps)->|
|00029bc0| 6e 65 78 74 3b 0a 09 7d | 0a 09 0a 09 69 66 20 28 |next;..}|....if (|
|00029bd0| 2a 73 70 73 29 20 7b 0a | 09 09 2a 73 70 73 20 3d |*sps) {.|..*sps =|
|00029be0| 20 73 70 2d 3e 6e 65 78 | 74 3b 0a 09 09 0a 09 09 | sp->nex|t;......|
|00029bf0| 69 66 20 28 73 70 2d 3e | 68 6f 73 74 29 20 64 65 |if (sp->|host) de|
|00029c00| 61 6c 6c 6f 63 61 74 65 | 28 73 70 2d 3e 68 6f 73 |allocate|(sp->hos|
|00029c10| 74 2c 20 56 5f 63 73 74 | 72 29 3b 0a 09 09 69 66 |t, V_cst|r);...if|
|00029c20| 20 28 73 70 2d 3e 72 6f | 6f 74 29 20 64 65 61 6c | (sp->ro|ot) deal|
|00029c30| 6c 6f 63 61 74 65 28 73 | 70 2d 3e 72 6f 6f 74 2c |locate(s|p->root,|
|00029c40| 20 56 5f 63 73 74 72 29 | 3b 0a 09 09 0a 09 09 64 | V_cstr)|;......d|
|00029c50| 65 61 6c 6c 6f 63 61 74 | 65 28 73 70 2d 3e 64 65 |eallocat|e(sp->de|
|00029c60| 61 74 68 5f 70 61 63 6b | 65 74 2c 20 56 5f 53 74 |ath_pack|et, V_St|
|00029c70| 61 6e 64 61 72 64 50 61 | 63 6b 65 74 29 3b 0a 09 |andardPa|cket);..|
|00029c80| 09 64 65 61 6c 6c 6f 63 | 61 74 65 28 73 70 2c 20 |.dealloc|ate(sp, |
|00029c90| 56 5f 73 69 74 65 29 3b | 0a 09 7d 0a 09 0a 09 72 |V_site);|..}....r|
|00029ca0| 65 74 75 72 6e 3b 0a 7d | 0a 0a 76 6f 69 64 20 73 |eturn;.}|..void s|
|00029cb0| 68 75 74 64 6f 77 6e 5f | 73 69 74 65 73 28 76 6f |hutdown_|sites(vo|
|00029cc0| 69 64 29 0a 7b 0a 09 73 | 69 74 65 20 2a 73 70 2c |id).{..s|ite *sp,|
|00029cd0| 20 2a 73 70 6e 3b 0a 09 | 73 74 72 75 63 74 20 44 | *spn;..|struct D|
|00029ce0| 6f 73 50 61 63 6b 65 74 | 20 2a 64 70 3b 0a 09 6c |osPacket| *dp;..l|
|00029cf0| 6f 63 6b 20 2a 6c 3b 0a | 09 0a 09 73 70 20 3d 20 |ock *l;.|...sp = |
|00029d00| 73 69 74 65 73 3b 0a 09 | 77 68 69 6c 65 20 28 73 |sites;..|while (s|
|00029d10| 70 29 20 7b 0a 09 09 76 | 65 72 69 66 79 28 73 70 |p) {...v|erify(sp|
|00029d20| 2c 20 56 5f 73 69 74 65 | 29 3b 0a 09 0a 09 09 73 |, V_site|);.....s|
|00029d30| 70 6e 20 3d 20 73 70 2d | 3e 6e 65 78 74 3b 0a 09 |pn = sp-|>next;..|
|00029d40| 09 0a 09 09 64 70 20 3d | 20 26 73 70 2d 3e 64 65 |....dp =| &sp->de|
|00029d50| 61 74 68 5f 70 61 63 6b | 65 74 2d 3e 73 70 5f 50 |ath_pack|et->sp_P|
|00029d60| 6b 74 3b 0a 09 09 64 70 | 2d 3e 64 70 5f 54 79 70 |kt;...dp|->dp_Typ|
|00029d70| 65 20 3d 20 41 43 54 49 | 4f 4e 5f 44 49 45 3b 0a |e = ACTI|ON_DIE;.|
|00029d80| 09 09 64 70 2d 3e 64 70 | 5f 50 6f 72 74 20 3d 20 |..dp->dp|_Port = |
|00029d90| 73 74 61 72 74 75 70 5f | 73 79 6e 63 3b 0a 09 09 |startup_|sync;...|
|00029da0| 0a 09 09 50 75 74 4d 73 | 67 28 73 70 2d 3e 70 6f |...PutMs|g(sp->po|
|00029db0| 72 74 2c 20 64 70 2d 3e | 64 70 5f 4c 69 6e 6b 29 |rt, dp->|dp_Link)|
|00029dc0| 3b 0a 09 09 57 61 69 74 | 50 6f 72 74 28 73 74 61 |;...Wait|Port(sta|
|00029dd0| 72 74 75 70 5f 73 79 6e | 63 29 3b 20 47 65 74 4d |rtup_syn|c); GetM|
|00029de0| 73 67 28 73 74 61 72 74 | 75 70 5f 73 79 6e 63 29 |sg(start|up_sync)|
|00029df0| 3b 0a 09 09 0a 09 09 6c | 20 3d 20 28 6c 6f 63 6b |;......l| = (lock|
|00029e00| 20 2a 29 64 70 2d 3e 64 | 70 5f 52 65 73 32 3b 0a | *)dp->d|p_Res2;.|
|00029e10| 09 09 77 68 69 6c 65 20 | 28 6c 29 20 7b 0a 09 09 |..while |(l) {...|
|00029e20| 09 61 64 6f 70 74 28 6c | 2c 20 56 5f 6c 6f 63 6b |.adopt(l|, V_lock|
|00029e30| 29 3b 0a 09 09 09 6c 20 | 3d 20 6c 2d 3e 6e 65 78 |);....l |= l->nex|
|00029e40| 74 3b 0a 09 09 7d 0a 09 | 09 0a 09 09 69 66 20 28 |t;...}..|....if (|
|00029e50| 73 70 2d 3e 68 6f 73 74 | 29 20 64 65 61 6c 6c 6f |sp->host|) deallo|
|00029e60| 63 61 74 65 28 73 70 2d | 3e 68 6f 73 74 2c 20 56 |cate(sp-|>host, V|
|00029e70| 5f 63 73 74 72 29 3b 0a | 09 09 69 66 20 28 73 70 |_cstr);.|..if (sp|
|00029e80| 2d 3e 72 6f 6f 74 29 20 | 64 65 61 6c 6c 6f 63 61 |->root) |dealloca|
|00029e90| 74 65 28 73 70 2d 3e 72 | 6f 6f 74 2c 20 56 5f 63 |te(sp->r|oot, V_c|
|00029ea0| 73 74 72 29 3b 0a 09 09 | 0a 09 09 64 65 61 6c 6c |str);...|...deall|
|00029eb0| 6f 63 61 74 65 28 73 70 | 2d 3e 64 65 61 74 68 5f |ocate(sp|->death_|
|00029ec0| 70 61 63 6b 65 74 2c 20 | 56 5f 53 74 61 6e 64 61 |packet, |V_Standa|
|00029ed0| 72 64 50 61 63 6b 65 74 | 29 3b 0a 09 09 64 65 61 |rdPacket|);...dea|
|00029ee0| 6c 6c 6f 63 61 74 65 28 | 73 70 2c 20 56 5f 73 69 |llocate(|sp, V_si|
|00029ef0| 74 65 29 3b 0a 09 09 73 | 70 20 3d 20 73 70 6e 3b |te);...s|p = spn;|
|00029f00| 0a 09 7d 0a 09 0a 09 73 | 69 74 65 73 20 3d 20 6e |..}....s|ites = n|
|00029f10| 69 6c 3b 0a 7d 0a 0a 76 | 6f 69 64 20 73 75 73 70 |il;.}..v|oid susp|
|00029f20| 65 6e 64 5f 73 69 74 65 | 73 28 76 6f 69 64 29 0a |end_site|s(void).|
|00029f30| 7b 0a 09 73 69 74 65 20 | 2a 73 70 3b 0a 09 73 74 |{..site |*sp;..st|
|00029f40| 72 75 63 74 20 44 6f 73 | 50 61 63 6b 65 74 20 2a |ruct Dos|Packet *|
|00029f50| 64 70 3b 0a 09 0a 09 73 | 70 20 3d 20 73 69 74 65 |dp;....s|p = site|
|00029f60| 73 3b 0a 09 77 68 69 6c | 65 20 28 73 70 29 20 7b |s;..whil|e (sp) {|
|00029f70| 0a 09 09 76 65 72 69 66 | 79 28 73 70 2c 20 56 5f |...verif|y(sp, V_|
|00029f80| 73 69 74 65 29 3b 0a 09 | 0a 09 09 64 70 20 3d 20 |site);..|...dp = |
|00029f90| 26 73 70 2d 3e 64 65 61 | 74 68 5f 70 61 63 6b 65 |&sp->dea|th_packe|
|00029fa0| 74 2d 3e 73 70 5f 50 6b | 74 3b 0a 09 09 64 70 2d |t->sp_Pk|t;...dp-|
|00029fb0| 3e 64 70 5f 54 79 70 65 | 20 3d 20 61 63 74 69 6f |>dp_Type| = actio|
|00029fc0| 6e 5f 53 55 53 50 45 4e | 44 3b 0a 09 09 64 70 2d |n_SUSPEN|D;...dp-|
|00029fd0| 3e 64 70 5f 50 6f 72 74 | 20 3d 20 73 74 61 72 74 |>dp_Port| = start|
|00029fe0| 75 70 5f 73 79 6e 63 3b | 0a 09 09 0a 09 09 50 75 |up_sync;|......Pu|
|00029ff0| 74 4d 73 67 28 73 70 2d | 3e 70 6f 72 74 2c 20 64 |tMsg(sp-|>port, d|
|0002a000| 70 2d 3e 64 70 5f 4c 69 | 6e 6b 29 3b 0a 09 09 57 |p->dp_Li|nk);...W|
|0002a010| 61 69 74 50 6f 72 74 28 | 73 74 61 72 74 75 70 5f |aitPort(|startup_|
|0002a020| 73 79 6e 63 29 3b 20 47 | 65 74 4d 73 67 28 73 74 |sync); G|etMsg(st|
|0002a030| 61 72 74 75 70 5f 73 79 | 6e 63 29 3b 0a 09 09 0a |artup_sy|nc);....|
|0002a040| 09 09 73 70 20 3d 20 73 | 70 2d 3e 6e 65 78 74 3b |..sp = s|p->next;|
|0002a050| 0a 09 7d 0a 7d 0a 0a 73 | 74 72 75 63 74 20 69 6e |..}.}..s|truct in|
|0002a060| 66 6f 5f 68 65 61 64 65 | 72 20 2a 67 65 74 5f 64 |fo_heade|r *get_d|
|0002a070| 69 72 28 73 69 74 65 20 | 2a 73 70 2c 20 62 38 20 |ir(site |*sp, b8 |
|0002a080| 2a 6e 61 6d 65 29 0a 7b | 0a 09 73 74 72 75 63 74 |*name).{|..struct|
|0002a090| 20 69 6e 66 6f 5f 68 65 | 61 64 65 72 20 2a 69 68 | info_he|ader *ih|
|0002a0a0| 3b 0a 09 0a 09 76 65 72 | 69 66 79 28 73 70 2c 20 |;....ver|ify(sp, |
|0002a0b0| 56 5f 73 69 74 65 29 3b | 0a 09 74 72 75 74 68 28 |V_site);|..truth(|
|0002a0c0| 6e 61 6d 65 20 21 3d 20 | 6e 69 6c 29 3b 0a 09 0a |name != |nil);...|
|0002a0d0| 09 69 68 20 3d 20 66 69 | 6e 64 5f 69 6e 66 6f 5f |.ih = fi|nd_info_|
|0002a0e0| 68 65 61 64 65 72 28 73 | 70 2c 20 6e 61 6d 65 29 |header(s|p, name)|
|0002a0f0| 3b 0a 09 69 66 20 28 69 | 68 29 20 72 65 74 75 72 |;..if (i|h) retur|
|0002a100| 6e 20 69 68 3b 0a 09 0a | 09 2f 2a 20 6f 68 20 6b |n ih;...|./* oh k|
|0002a110| 61 79 20 2a 2f 0a 09 0a | 09 69 66 20 28 73 70 2d |ay */...|.if (sp-|
|0002a120| 3e 63 66 69 6c 65 29 20 | 7b 0a 09 09 76 65 72 69 |>cfile) |{...veri|
|0002a130| 66 79 28 73 70 2d 3e 66 | 69 6c 65 5f 6c 69 73 74 |fy(sp->f|ile_list|
|0002a140| 2c 20 56 5f 66 69 6c 65 | 5f 69 6e 66 6f 29 3b 0a |, V_file|_info);.|
|0002a150| 09 09 0a 09 09 69 66 20 | 28 73 70 2d 3e 66 69 6c |.....if |(sp->fil|
|0002a160| 65 5f 6c 69 73 74 2d 3e | 63 6c 6f 73 65 64 29 20 |e_list->|closed) |
|0002a170| 7b 0a 09 09 09 63 6c 6f | 73 65 5f 66 69 6c 65 28 |{....clo|se_file(|
|0002a180| 73 70 2c 20 74 72 75 65 | 29 3b 0a 09 09 7d 20 65 |sp, true|);...} e|
|0002a190| 6c 73 65 20 7b 0a 09 09 | 09 72 65 74 75 72 6e 20 |lse {...|.return |
|0002a1a0| 6e 69 6c 3b 0a 09 09 7d | 0a 09 7d 0a 09 0a 09 69 |nil;...}|..}....i|
|0002a1b0| 66 20 28 21 63 68 61 6e | 67 65 5f 64 69 72 28 73 |f (!chan|ge_dir(s|
|0002a1c0| 70 2c 20 6e 61 6d 65 29 | 29 20 72 65 74 75 72 6e |p, name)|) return|
|0002a1d0| 20 6e 69 6c 3b 0a 09 0a | 09 69 68 20 3d 20 6e 65 | nil;...|.ih = ne|
|0002a1e0| 77 5f 69 6e 66 6f 5f 68 | 65 61 64 65 72 28 73 70 |w_info_h|eader(sp|
|0002a1f0| 2c 20 6e 61 6d 65 29 3b | 0a 09 69 66 20 28 21 69 |, name);|..if (!i|
|0002a200| 68 29 20 72 65 74 75 72 | 6e 20 6e 69 6c 3b 09 2f |h) retur|n nil;./|
|0002a210| 2a 20 6a 75 73 74 20 6f | 75 74 20 6f 66 20 6d 65 |* just o|ut of me|
|0002a220| 6d 6f 72 79 20 2e 2e 2e | 20 62 75 74 20 77 74 68 |mory ...| but wth|
|0002a230| 20 2a 2f 0a 09 0a 09 67 | 65 74 5f 6c 69 73 74 28 | */....g|et_list(|
|0002a240| 73 70 2c 20 69 68 29 3b | 0a 09 0a 09 72 65 74 75 |sp, ih);|....retu|
|0002a250| 72 6e 20 69 68 3b 0a 7d | 0a 0a 66 74 70 69 6e 66 |rn ih;.}|..ftpinf|
|0002a260| 6f 20 2a 67 65 74 5f 69 | 6e 66 6f 28 73 69 74 65 |o *get_i|nfo(site|
|0002a270| 20 2a 66 74 70 5f 73 69 | 74 65 2c 20 62 38 20 2a | *ftp_si|te, b8 *|
|0002a280| 6e 61 6d 65 29 0a 7b 0a | 09 62 38 20 2a 73 3b 0a |name).{.|.b8 *s;.|
|0002a290| 09 73 74 72 75 63 74 20 | 69 6e 66 6f 5f 68 65 61 |.struct |info_hea|
|0002a2a0| 64 65 72 20 2a 69 68 3b | 0a 09 0a 09 76 65 72 69 |der *ih;|....veri|
|0002a2b0| 66 79 28 66 74 70 5f 73 | 69 74 65 2c 20 56 5f 73 |fy(ftp_s|ite, V_s|
|0002a2c0| 69 74 65 29 3b 0a 09 74 | 72 75 74 68 28 6e 61 6d |ite);..t|ruth(nam|
|0002a2d0| 65 20 21 3d 20 6e 69 6c | 29 3b 0a 09 0a 09 2f 2a |e != nil|);..../*|
|0002a2e0| 20 67 65 74 20 70 61 72 | 65 6e 74 20 64 69 72 20 | get par|ent dir |
|0002a2f0| 6e 61 6d 65 20 2a 2f 0a | 09 09 0a 09 73 20 3d 20 |name */.|....s = |
|0002a300| 6e 61 6d 65 20 2b 20 73 | 74 72 6c 65 6e 28 6e 61 |name + s|trlen(na|
|0002a310| 6d 65 29 20 2d 20 31 3b | 0a 09 77 68 69 6c 65 20 |me) - 1;|..while |
|0002a320| 28 73 20 3e 3d 20 6e 61 | 6d 65 20 26 26 20 2a 73 |(s >= na|me && *s|
|0002a330| 20 21 3d 20 27 2f 27 29 | 20 73 2d 2d 3b 0a 09 0a | != '/')| s--;...|
|0002a340| 09 69 66 20 28 73 20 3e | 3d 20 6e 61 6d 65 29 20 |.if (s >|= name) |
|0002a350| 7b 0a 09 09 2a 73 20 3d | 20 30 3b 0a 09 09 69 68 |{...*s =| 0;...ih|
|0002a360| 20 3d 20 67 65 74 5f 64 | 69 72 28 66 74 70 5f 73 | = get_d|ir(ftp_s|
|0002a370| 69 74 65 2c 20 6e 61 6d | 65 29 3b 0a 09 09 2a 73 |ite, nam|e);...*s|
|0002a380| 2b 2b 20 3d 20 27 2f 27 | 3b 0a 09 7d 20 65 6c 73 |++ = '/'|;..} els|
|0002a390| 65 20 7b 0a 09 09 73 20 | 3d 20 6e 61 6d 65 3b 0a |e {...s |= name;.|
|0002a3a0| 09 09 69 68 20 3d 20 67 | 65 74 5f 64 69 72 28 66 |..ih = g|et_dir(f|
|0002a3b0| 74 70 5f 73 69 74 65 2c | 20 22 22 29 3b 0a 09 7d |tp_site,| "");..}|
|0002a3c0| 0a 09 0a 09 69 66 20 28 | 21 69 68 29 20 72 65 74 |....if (|!ih) ret|
|0002a3d0| 75 72 6e 20 6e 69 6c 3b | 0a 09 0a 09 72 65 74 75 |urn nil;|....retu|
|0002a3e0| 72 6e 20 66 69 6e 64 5f | 69 6e 66 6f 28 69 68 2c |rn find_|info(ih,|
|0002a3f0| 20 73 29 3b 0a 7d 0a 0a | 76 6f 69 64 20 66 6c 75 | s);.}..|void flu|
|0002a400| 73 68 5f 69 6e 66 6f 28 | 73 69 74 65 20 2a 66 74 |sh_info(|site *ft|
|0002a410| 70 5f 73 69 74 65 2c 20 | 62 38 20 2a 6e 61 6d 65 |p_site, |b8 *name|
|0002a420| 29 0a 7b 0a 09 62 38 20 | 2a 73 3b 0a 09 73 74 72 |).{..b8 |*s;..str|
|0002a430| 75 63 74 20 69 6e 66 6f | 5f 68 65 61 64 65 72 20 |uct info|_header |
|0002a440| 2a 69 68 3b 0a 09 0a 09 | 76 65 72 69 66 79 28 66 |*ih;....|verify(f|
|0002a450| 74 70 5f 73 69 74 65 2c | 20 56 5f 73 69 74 65 29 |tp_site,| V_site)|
|0002a460| 3b 0a 09 74 72 75 74 68 | 28 6e 61 6d 65 20 21 3d |;..truth|(name !=|
|0002a470| 20 6e 69 6c 29 3b 0a 09 | 0a 09 2f 2a 20 67 65 74 | nil);..|../* get|
|0002a480| 20 70 61 72 65 6e 74 20 | 64 69 72 20 6e 61 6d 65 | parent |dir name|
|0002a490| 20 2a 2f 0a 09 09 0a 09 | 73 20 3d 20 6e 61 6d 65 | */.....|s = name|
|0002a4a0| 20 2b 20 73 74 72 6c 65 | 6e 28 6e 61 6d 65 29 20 | + strle|n(name) |
|0002a4b0| 2d 20 31 3b 0a 09 77 68 | 69 6c 65 20 28 73 20 3e |- 1;..wh|ile (s >|
|0002a4c0| 3d 20 6e 61 6d 65 20 26 | 26 20 2a 73 20 21 3d 20 |= name &|& *s != |
|0002a4d0| 27 2f 27 29 20 73 2d 2d | 3b 0a 09 0a 09 69 66 20 |'/') s--|;....if |
|0002a4e0| 28 73 20 3e 3d 20 6e 61 | 6d 65 29 20 7b 0a 09 09 |(s >= na|me) {...|
|0002a4f0| 2a 73 20 3d 20 30 3b 0a | 09 09 69 68 20 3d 20 66 |*s = 0;.|..ih = f|
|0002a500| 69 6e 64 5f 69 6e 66 6f | 5f 68 65 61 64 65 72 28 |ind_info|_header(|
|0002a510| 66 74 70 5f 73 69 74 65 | 2c 20 6e 61 6d 65 29 3b |ftp_site|, name);|
|0002a520| 0a 09 09 2a 73 2b 2b 20 | 3d 20 27 2f 27 3b 0a 09 |...*s++ |= '/';..|
|0002a530| 7d 20 65 6c 73 65 20 7b | 0a 09 09 73 20 3d 20 6e |} else {|...s = n|
|0002a540| 61 6d 65 3b 0a 09 09 69 | 68 20 3d 20 66 69 6e 64 |ame;...i|h = find|
|0002a550| 5f 69 6e 66 6f 5f 68 65 | 61 64 65 72 28 66 74 70 |_info_he|ader(ftp|
|0002a560| 5f 73 69 74 65 2c 20 22 | 22 29 3b 0a 09 7d 0a 09 |_site, "|");..}..|
|0002a570| 0a 09 69 66 20 28 69 68 | 29 20 7b 0a 09 09 66 72 |..if (ih|) {...fr|
|0002a580| 65 65 5f 69 6e 66 6f 5f | 68 65 61 64 65 72 28 69 |ee_info_|header(i|
|0002a590| 68 29 3b 0a 09 7d 0a 09 | 0a 09 72 65 74 75 72 6e |h);..}..|..return|
|0002a5a0| 3b 0a 7d 0a 0a 73 74 61 | 74 75 73 5f 6d 65 73 73 |;.}..sta|tus_mess|
|0002a5b0| 61 67 65 20 2a 67 65 74 | 5f 73 6d 28 73 69 74 65 |age *get|_sm(site|
|0002a5c0| 20 2a 73 70 29 0a 7b 0a | 09 73 74 61 74 75 73 5f | *sp).{.|.status_|
|0002a5d0| 6d 65 73 73 61 67 65 20 | 2a 73 6d 3b 0a 09 0a 09 |message |*sm;....|
|0002a5e0| 76 65 72 69 66 79 28 73 | 70 2c 20 56 5f 73 69 74 |verify(s|p, V_sit|
|0002a5f0| 65 29 3b 0a 09 0a 09 69 | 66 20 28 73 6d 20 3d 20 |e);....i|f (sm = |
|0002a600| 28 73 74 61 74 75 73 5f | 6d 65 73 73 61 67 65 20 |(status_|message |
|0002a610| 2a 29 47 65 74 4d 73 67 | 28 73 70 2d 3e 72 61 6e |*)GetMsg|(sp->ran|
|0002a620| 6b 29 29 20 72 65 74 75 | 72 6e 20 73 6d 3b 0a 09 |k)) retu|rn sm;..|
|0002a630| 0a 09 73 6d 20 3d 20 28 | 73 74 61 74 75 73 5f 6d |..sm = (|status_m|
|0002a640| 65 73 73 61 67 65 20 2a | 29 61 6c 6c 6f 63 61 74 |essage *|)allocat|
|0002a650| 65 28 73 69 7a 65 6f 66 | 28 2a 73 6d 29 2c 20 56 |e(sizeof|(*sm), V|
|0002a660| 5f 73 74 61 74 75 73 5f | 6d 65 73 73 61 67 65 29 |_status_|message)|
|0002a670| 3b 0a 09 69 66 20 28 21 | 73 6d 29 20 72 65 74 75 |;..if (!|sm) retu|
|0002a680| 72 6e 20 6e 69 6c 3b 0a | 09 0a 09 65 6e 73 75 72 |rn nil;.|...ensur|
|0002a690| 65 28 73 6d 2c 20 56 5f | 73 74 61 74 75 73 5f 6d |e(sm, V_|status_m|
|0002a6a0| 65 73 73 61 67 65 29 3b | 0a 09 0a 09 73 6d 2d 3e |essage);|....sm->|
|0002a6b0| 68 65 61 64 65 72 2e 6d | 6e 5f 52 65 70 6c 79 50 |header.m|n_ReplyP|
|0002a6c0| 6f 72 74 20 3d 20 73 70 | 2d 3e 72 61 6e 6b 3b 0a |ort = sp|->rank;.|
|0002a6d0| 09 73 6d 2d 3e 68 65 61 | 64 65 72 2e 6d 6e 5f 4c |.sm->hea|der.mn_L|
|0002a6e0| 65 6e 67 74 68 20 3d 20 | 73 69 7a 65 6f 66 28 2a |ength = |sizeof(*|
|0002a6f0| 73 6d 29 3b 0a 09 73 6d | 2d 3e 68 65 61 64 65 72 |sm);..sm|->header|
|0002a700| 2e 6d 6e 5f 4e 6f 64 65 | 2e 6c 6e 5f 54 79 70 65 |.mn_Node|.ln_Type|
|0002a710| 20 3d 20 4e 54 5f 4d 45 | 53 53 41 47 45 3b 0a 09 | = NT_ME|SSAGE;..|
|0002a720| 73 6d 2d 3e 68 65 61 64 | 65 72 2e 6d 6e 5f 4e 6f |sm->head|er.mn_No|
|0002a730| 64 65 2e 6c 6e 5f 4e 61 | 6d 65 20 3d 20 22 73 69 |de.ln_Na|me = "si|
|0002a740| 74 65 20 73 74 61 74 75 | 73 20 6d 65 73 73 61 67 |te statu|s messag|
|0002a750| 65 22 3b 0a 09 73 6d 2d | 3e 68 65 61 64 65 72 2e |e";..sm-|>header.|
|0002a760| 6d 6e 5f 4e 6f 64 65 2e | 6c 6e 5f 50 72 69 20 3d |mn_Node.|ln_Pri =|
|0002a770| 20 30 3b 0a 09 0a 09 73 | 6d 2d 3e 74 68 69 73 5f | 0;....s|m->this_|
|0002a780| 73 69 74 65 20 3d 20 73 | 70 3b 0a 09 0a 09 72 65 |site = s|p;....re|
|0002a790| 74 75 72 6e 20 73 6d 3b | 0a 7d 0a 0a 76 6f 69 64 |turn sm;|.}..void|
|0002a7a0| 20 73 74 61 74 65 5f 63 | 68 61 6e 67 65 28 73 69 | state_c|hange(si|
|0002a7b0| 74 65 20 2a 73 70 2c 20 | 62 31 36 20 73 74 61 74 |te *sp, |b16 stat|
|0002a7c0| 65 29 0a 7b 0a 09 73 74 | 61 74 75 73 5f 6d 65 73 |e).{..st|atus_mes|
|0002a7d0| 73 61 67 65 20 2a 73 6d | 3b 0a 09 0a 09 76 65 72 |sage *sm|;....ver|
|0002a7e0| 69 66 79 28 73 70 2c 20 | 56 5f 73 69 74 65 29 3b |ify(sp, |V_site);|
|0002a7f0| 0a 09 0a 09 69 66 20 28 | 73 70 2d 3e 73 69 74 65 |....if (|sp->site|
|0002a800| 5f 73 74 61 74 65 20 3d | 3d 20 73 74 61 74 65 29 |_state =|= state)|
|0002a810| 20 72 65 74 75 72 6e 3b | 0a 0a 09 73 70 2d 3e 73 | return;|...sp->s|
|0002a820| 69 74 65 5f 73 74 61 74 | 65 20 3d 20 73 74 61 74 |ite_stat|e = stat|
|0002a830| 65 3b 0a 09 0a 09 73 6d | 20 3d 20 67 65 74 5f 73 |e;....sm| = get_s|
|0002a840| 6d 28 73 70 29 3b 0a 09 | 69 66 20 28 73 6d 29 20 |m(sp);..|if (sm) |
|0002a850| 7b 0a 09 09 73 6d 2d 3e | 63 6f 6d 6d 61 6e 64 20 |{...sm->|command |
|0002a860| 3d 20 53 4d 5f 53 54 41 | 54 45 5f 43 48 41 4e 47 |= SM_STA|TE_CHANG|
|0002a870| 45 3b 0a 09 09 50 75 74 | 4d 73 67 28 73 74 61 74 |E;...Put|Msg(stat|
|0002a880| 75 73 5f 70 6f 72 74 2c | 20 26 73 6d 2d 3e 68 65 |us_port,| &sm->he|
|0002a890| 61 64 65 72 29 3b 0a 09 | 7d 0a 7d 0a 0a 76 6f 69 |ader);..|}.}..voi|
|0002a8a0| 64 20 5f 5f 73 61 76 65 | 64 73 20 73 69 74 65 5f |d __save|ds site_|
|0002a8b0| 68 61 6e 64 6c 65 72 28 | 76 6f 69 64 29 0a 7b 0a |handler(|void).{.|
|0002a8c0| 09 73 74 72 75 63 74 20 | 50 72 6f 63 65 73 73 20 |.struct |Process |
|0002a8d0| 2a 6d 65 3b 0a 09 73 74 | 72 75 63 74 20 4d 65 73 |*me;..st|ruct Mes|
|0002a8e0| 73 61 67 65 20 2a 6d 73 | 67 3b 0a 09 73 74 72 75 |sage *ms|g;..stru|
|0002a8f0| 63 74 20 44 6f 73 50 61 | 63 6b 65 74 20 2a 64 70 |ct DosPa|cket *dp|
|0002a900| 3b 0a 09 73 74 72 75 63 | 74 20 4d 73 67 50 6f 72 |;..struc|t MsgPor|
|0002a910| 74 20 2a 6c 6f 63 61 6c | 2c 20 2a 72 65 70 6c 79 |t *local|, *reply|
|0002a920| 2c 20 2a 73 79 6e 63 2c | 20 2a 74 69 6d 65 70 6f |, *sync,| *timepo|
|0002a930| 72 74 2c 20 2a 72 61 6e | 6b 3b 0a 09 73 74 72 75 |rt, *ran|k;..stru|
|0002a940| 63 74 20 53 74 61 6e 64 | 61 72 64 50 61 63 6b 65 |ct Stand|ardPacke|
|0002a950| 74 20 2a 69 64 6c 65 5f | 70 61 63 6b 65 74 3b 0a |t *idle_|packet;.|
|0002a960| 09 73 74 72 75 63 74 20 | 74 69 6d 65 72 65 71 75 |.struct |timerequ|
|0002a970| 65 73 74 20 2a 74 69 6d | 65 72 3b 0a 09 73 74 61 |est *tim|er;..sta|
|0002a980| 74 75 73 5f 6d 65 73 73 | 61 67 65 20 2a 73 6d 2c |tus_mess|age *sm,|
|0002a990| 20 2a 74 73 6d 3b 0a 09 | 6c 6f 63 6b 20 2a 6e 65 | *tsm;..|lock *ne|
|0002a9a0| 77 5f 6c 6f 63 6b 2c 20 | 2a 73 6c 6f 63 6b 2c 20 |w_lock, |*slock, |
|0002a9b0| 2a 2a 6c 6f 63 6b 73 3b | 0a 09 73 69 74 65 20 2a |**locks;|..site *|
|0002a9c0| 66 74 70 5f 73 69 74 65 | 3b 0a 09 62 33 32 20 73 |ftp_site|;..b32 s|
|0002a9d0| 69 67 6e 61 6c 73 3b 0a | 09 69 6e 74 20 69 64 6c |ignals;.|.int idl|
|0002a9e0| 65 63 6f 75 6e 74 2c 20 | 6e 3b 0a 09 73 70 6c 69 |ecount, |n;..spli|
|0002a9f0| 74 20 73 64 2c 20 73 64 | 32 3b 0a 09 62 38 20 2a |t sd, sd|2;..b8 *|
|0002aa00| 73 3b 0a 09 73 74 72 75 | 63 74 20 69 6e 66 6f 5f |s;..stru|ct info_|
|0002aa10| 68 65 61 64 65 72 20 2a | 69 68 3b 0a 09 66 74 70 |header *|ih;..ftp|
|0002aa20| 69 6e 66 6f 20 2a 66 69 | 3b 0a 09 66 69 6c 65 5f |info *fi|;..file_|
|0002aa30| 69 6e 66 6f 20 2a 66 69 | 70 3b 0a 09 73 74 72 75 |info *fi|p;..stru|
|0002aa40| 63 74 20 46 69 6c 65 48 | 61 6e 64 6c 65 20 2a 66 |ct FileH|andle *f|
|0002aa50| 68 3b 0a 09 73 74 72 75 | 63 74 20 46 69 6c 65 49 |h;..stru|ct FileI|
|0002aa60| 6e 66 6f 42 6c 6f 63 6b | 20 2a 66 69 62 3b 0a 09 |nfoBlock| *fib;..|
|0002aa70| 62 33 32 20 6f 31 2c 20 | 6f 32 2c 20 6f 33 3b 0a |b32 o1, |o2, o3;.|
|0002aa80| 09 0a 09 6d 65 20 3d 20 | 28 73 74 72 75 63 74 20 |...me = |(struct |
|0002aa90| 50 72 6f 63 65 73 73 20 | 2a 29 46 69 6e 64 54 61 |Process |*)FindTa|
|0002aaa0| 73 6b 28 30 29 3b 0a 09 | 0a 09 6c 6f 63 61 6c 20 |sk(0);..|..local |
|0002aab0| 3d 20 26 6d 65 2d 3e 70 | 72 5f 4d 73 67 50 6f 72 |= &me->p|r_MsgPor|
|0002aac0| 74 3b 0a 0a 09 57 61 69 | 74 50 6f 72 74 28 6c 6f |t;...Wai|tPort(lo|
|0002aad0| 63 61 6c 29 3b 0a 09 6d | 73 67 20 3d 20 47 65 74 |cal);..m|sg = Get|
|0002aae0| 4d 73 67 28 6c 6f 63 61 | 6c 29 3b 0a 09 0a 09 64 |Msg(loca|l);....d|
|0002aaf0| 70 20 3d 20 28 73 74 72 | 75 63 74 20 44 6f 73 50 |p = (str|uct DosP|
|0002ab00| 61 63 6b 65 74 20 2a 29 | 6d 73 67 2d 3e 6d 6e 5f |acket *)|msg->mn_|
|0002ab10| 4e 6f 64 65 2e 6c 6e 5f | 4e 61 6d 65 3b 0a 09 0a |Node.ln_|Name;...|
|0002ab20| 09 72 65 70 6c 79 20 3d | 20 64 70 2d 3e 64 70 5f |.reply =| dp->dp_|
|0002ab30| 50 6f 72 74 3b 0a 09 64 | 70 2d 3e 64 70 5f 50 6f |Port;..d|p->dp_Po|
|0002ab40| 72 74 20 3d 20 6c 6f 63 | 61 6c 3b 0a 09 0a 09 66 |rt = loc|al;....f|
|0002ab50| 74 70 5f 73 69 74 65 20 | 3d 20 28 73 69 74 65 20 |tp_site |= (site |
|0002ab60| 2a 29 64 70 2d 3e 64 70 | 5f 41 72 67 31 3b 0a 09 |*)dp->dp|_Arg1;..|
|0002ab70| 0a 09 76 65 72 69 66 79 | 28 66 74 70 5f 73 69 74 |..verify|(ftp_sit|
|0002ab80| 65 2c 20 56 5f 73 69 74 | 65 29 3b 0a 09 0a 09 6c |e, V_sit|e);....l|
|0002ab90| 6f 63 61 6c 2d 3e 6d 70 | 5f 4e 6f 64 65 2e 6c 6e |ocal->mp|_Node.ln|
|0002aba0| 5f 4e 61 6d 65 20 3d 20 | 66 74 70 5f 73 69 74 65 |_Name = |ftp_site|
|0002abb0| 2d 3e 6e 61 6d 65 3b 0a | 09 0a 09 69 64 6c 65 63 |->name;.|...idlec|
|0002abc0| 6f 75 6e 74 20 3d 20 30 | 3b 0a 09 0a 09 6d 65 6d |ount = 0|;....mem|
|0002abd0| 5f 74 72 61 63 6b 69 6e | 67 5f 6f 6e 28 29 3b 0a |_trackin|g_on();.|
|0002abe0| 09 0a 09 66 74 70 5f 73 | 69 74 65 2d 3e 49 42 61 |...ftp_s|ite->IBa|
|0002abf0| 73 65 20 3d 20 28 73 74 | 72 75 63 74 20 49 6e 74 |se = (st|ruct Int|
|0002ac00| 75 69 74 69 6f 6e 42 61 | 73 65 20 2a 29 4f 70 65 |uitionBa|se *)Ope|
|0002ac10| 6e 4c 69 62 72 61 72 79 | 28 22 69 6e 74 75 69 74 |nLibrary|("intuit|
|0002ac20| 69 6f 6e 2e 6c 69 62 72 | 61 72 79 22 2c 20 33 36 |ion.libr|ary", 36|
|0002ac30| 29 3b 0a 09 69 66 20 28 | 66 74 70 5f 73 69 74 65 |);..if (|ftp_site|
|0002ac40| 2d 3e 49 42 61 73 65 29 | 20 7b 0a 09 09 66 74 70 |->IBase)| {...ftp|
|0002ac50| 5f 73 69 74 65 2d 3e 47 | 54 42 61 73 65 20 3d 20 |_site->G|TBase = |
|0002ac60| 4f 70 65 6e 4c 69 62 72 | 61 72 79 28 22 67 61 64 |OpenLibr|ary("gad|
|0002ac70| 74 6f 6f 6c 73 2e 6c 69 | 62 72 61 72 79 22 2c 20 |tools.li|brary", |
|0002ac80| 30 29 3b 0a 09 09 69 66 | 20 28 66 74 70 5f 73 69 |0);...if| (ftp_si|
|0002ac90| 74 65 2d 3e 47 54 42 61 | 73 65 29 20 7b 0a 09 09 |te->GTBa|se) {...|
|0002aca0| 09 66 74 70 5f 73 69 74 | 65 2d 3e 47 42 61 73 65 |.ftp_sit|e->GBase|
|0002acb0| 20 3d 20 28 73 74 72 75 | 63 74 20 47 66 78 42 61 | = (stru|ct GfxBa|
|0002acc0| 73 65 20 2a 29 4f 70 65 | 6e 4c 69 62 72 61 72 79 |se *)Ope|nLibrary|
|0002acd0| 28 22 67 72 61 70 68 69 | 63 73 2e 6c 69 62 72 61 |("graphi|cs.libra|
|0002ace0| 72 79 22 2c 20 33 36 29 | 3b 0a 09 09 09 69 66 20 |ry", 36)|;....if |
|0002acf0| 28 66 74 70 5f 73 69 74 | 65 2d 3e 47 42 61 73 65 |(ftp_sit|e->GBase|
|0002ad00| 29 20 7b 0a 09 09 09 09 | 73 79 6e 63 20 3d 20 43 |) {.....|sync = C|
|0002ad10| 72 65 61 74 65 50 6f 72 | 74 28 30 2c 20 30 29 3b |reatePor|t(0, 0);|
|0002ad20| 0a 09 09 09 09 69 66 20 | 28 73 79 6e 63 29 20 7b |.....if |(sync) {|
|0002ad30| 0a 09 09 09 09 09 66 74 | 70 5f 73 69 74 65 2d 3e |......ft|p_site->|
|0002ad40| 73 79 6e 63 20 3d 20 73 | 79 6e 63 3b 0a 09 09 09 |sync = s|ync;....|
|0002ad50| 09 0a 09 09 09 09 09 74 | 69 6d 65 70 6f 72 74 20 |.......t|imeport |
|0002ad60| 3d 20 43 72 65 61 74 65 | 50 6f 72 74 28 30 2c 20 |= Create|Port(0, |
|0002ad70| 30 29 3b 0a 09 09 09 09 | 09 69 66 20 28 74 69 6d |0);.....|.if (tim|
|0002ad80| 65 70 6f 72 74 29 20 7b | 0a 09 09 09 09 09 09 74 |eport) {|.......t|
|0002ad90| 69 6d 65 72 20 3d 20 28 | 73 74 72 75 63 74 20 74 |imer = (|struct t|
|0002ada0| 69 6d 65 72 65 71 75 65 | 73 74 20 2a 29 43 72 65 |imereque|st *)Cre|
|0002adb0| 61 74 65 45 78 74 49 4f | 28 74 69 6d 65 70 6f 72 |ateExtIO|(timepor|
|0002adc0| 74 2c 20 73 69 7a 65 6f | 66 28 2a 74 69 6d 65 72 |t, sizeo|f(*timer|
|0002add0| 29 29 3b 0a 09 09 09 09 | 09 09 69 66 20 28 74 69 |));.....|..if (ti|
|0002ade0| 6d 65 72 29 20 7b 0a 09 | 09 09 09 09 09 09 69 64 |mer) {..|......id|
|0002adf0| 6c 65 5f 70 61 63 6b 65 | 74 20 3d 20 28 73 74 72 |le_packe|t = (str|
|0002ae00| 75 63 74 20 53 74 61 6e | 64 61 72 64 50 61 63 6b |uct Stan|dardPack|
|0002ae10| 65 74 20 2a 29 61 6c 6c | 6f 63 61 74 65 28 73 69 |et *)all|ocate(si|
|0002ae20| 7a 65 6f 66 28 2a 69 64 | 6c 65 5f 70 61 63 6b 65 |zeof(*id|le_packe|
|0002ae30| 74 29 2c 20 56 5f 53 74 | 61 6e 64 61 72 64 50 61 |t), V_St|andardPa|
|0002ae40| 63 6b 65 74 29 3b 0a 09 | 09 09 09 09 09 09 69 66 |cket);..|......if|
|0002ae50| 20 28 69 64 6c 65 5f 70 | 61 63 6b 65 74 29 20 7b | (idle_p|acket) {|
|0002ae60| 0a 09 09 09 09 09 09 09 | 09 69 64 6c 65 5f 70 61 |........|.idle_pa|
|0002ae70| 63 6b 65 74 2d 3e 73 70 | 5f 4d 73 67 2e 6d 6e 5f |cket->sp|_Msg.mn_|
|0002ae80| 4e 6f 64 65 2e 6c 6e 5f | 4e 61 6d 65 20 3d 0a 09 |Node.ln_|Name =..|
|0002ae90| 09 09 09 09 09 09 09 09 | 28 76 6f 69 64 20 2a 29 |........|(void *)|
|0002aea0| 26 69 64 6c 65 5f 70 61 | 63 6b 65 74 2d 3e 73 70 |&idle_pa|cket->sp|
|0002aeb0| 5f 50 6b 74 3b 0a 09 09 | 09 09 09 09 09 09 69 64 |_Pkt;...|......id|
|0002aec0| 6c 65 5f 70 61 63 6b 65 | 74 2d 3e 73 70 5f 50 6b |le_packe|t->sp_Pk|
|0002aed0| 74 2e 64 70 5f 4c 69 6e | 6b 20 3d 20 26 69 64 6c |t.dp_Lin|k = &idl|
|0002aee0| 65 5f 70 61 63 6b 65 74 | 2d 3e 73 70 5f 4d 73 67 |e_packet|->sp_Msg|
|0002aef0| 3b 0a 09 09 09 09 09 09 | 09 09 69 64 6c 65 5f 70 |;.......|..idle_p|
|0002af00| 61 63 6b 65 74 2d 3e 73 | 70 5f 50 6b 74 2e 64 70 |acket->s|p_Pkt.dp|
|0002af10| 5f 54 79 70 65 20 3d 20 | 61 63 74 69 6f 6e 5f 49 |_Type = |action_I|
|0002af20| 44 4c 45 3b 0a 09 09 09 | 09 09 09 09 09 69 64 6c |DLE;....|.....idl|
|0002af30| 65 5f 70 61 63 6b 65 74 | 2d 3e 73 70 5f 50 6b 74 |e_packet|->sp_Pkt|
|0002af40| 2e 64 70 5f 41 72 67 31 | 20 3d 20 28 62 33 32 29 |.dp_Arg1| = (b32)|
|0002af50| 66 74 70 5f 73 69 74 65 | 3b 0a 09 09 09 09 09 09 |ftp_site|;.......|
|0002af60| 0a 09 09 09 09 09 09 09 | 09 70 72 69 6d 65 2d 3e |........|.prime->|
|0002af70| 68 65 61 64 65 72 2e 6d | 6e 5f 52 65 70 6c 79 50 |header.m|n_ReplyP|
|0002af80| 6f 72 74 20 3d 20 73 79 | 6e 63 3b 0a 09 09 09 09 |ort = sy|nc;.....|
|0002af90| 09 09 09 09 70 72 69 6d | 65 2d 3e 63 6f 6d 6d 61 |....prim|e->comma|
|0002afa0| 6e 64 20 3d 20 54 43 50 | 5f 4e 45 57 4d 45 53 53 |nd = TCP|_NEWMESS|
|0002afb0| 41 47 45 3b 0a 09 09 09 | 09 09 09 09 09 50 75 74 |AGE;....|.....Put|
|0002afc0| 4d 73 67 28 74 63 70 2c | 20 26 70 72 69 6d 65 2d |Msg(tcp,| &prime-|
|0002afd0| 3e 68 65 61 64 65 72 29 | 3b 0a 09 09 09 09 09 09 |>header)|;.......|
|0002afe0| 09 09 57 61 69 74 50 6f | 72 74 28 73 79 6e 63 29 |..WaitPo|rt(sync)|
|0002aff0| 3b 20 47 65 74 4d 73 67 | 28 73 79 6e 63 29 3b 0a |; GetMsg|(sync);.|
|0002b000| 09 09 09 09 09 09 09 09 | 69 66 20 28 70 72 69 6d |........|if (prim|
|0002b010| 65 2d 3e 72 65 73 75 6c | 74 29 20 7b 0a 09 09 09 |e->resul|t) {....|
|0002b020| 09 09 09 09 09 09 66 74 | 70 5f 73 69 74 65 2d 3e |......ft|p_site->|
|0002b030| 63 6f 6e 74 72 6f 6c 20 | 3d 20 70 72 69 6d 65 2d |control |= prime-|
|0002b040| 3e 64 61 74 61 3b 0a 09 | 09 09 09 09 09 09 09 0a |>data;..|........|
|0002b050| 09 09 09 09 09 09 09 09 | 09 50 75 74 4d 73 67 28 |........|.PutMsg(|
|0002b060| 74 63 70 2c 20 26 70 72 | 69 6d 65 2d 3e 68 65 61 |tcp, &pr|ime->hea|
|0002b070| 64 65 72 29 3b 0a 09 09 | 09 09 09 09 09 09 09 57 |der);...|.......W|
|0002b080| 61 69 74 50 6f 72 74 28 | 73 79 6e 63 29 3b 20 47 |aitPort(|sync); G|
|0002b090| 65 74 4d 73 67 28 73 79 | 6e 63 29 3b 0a 09 09 09 |etMsg(sy|nc);....|
|0002b0a0| 09 09 09 09 09 09 69 66 | 20 28 70 72 69 6d 65 2d |......if| (prime-|
|0002b0b0| 3e 72 65 73 75 6c 74 29 | 20 7b 0a 09 09 09 09 09 |>result)| {......|
|0002b0c0| 09 09 09 09 09 66 74 70 | 5f 73 69 74 65 2d 3e 69 |.....ftp|_site->i|
|0002b0d0| 6e 74 72 20 3d 20 70 72 | 69 6d 65 2d 3e 64 61 74 |ntr = pr|ime->dat|
|0002b0e0| 61 3b 0a 09 09 09 09 09 | 09 09 09 09 09 66 74 70 |a;......|.....ftp|
|0002b0f0| 5f 73 69 74 65 2d 3e 69 | 6e 74 72 2d 3e 69 6e 74 |_site->i|ntr->int|
|0002b100| 65 72 72 75 70 74 20 3d | 20 66 74 70 5f 73 69 74 |errupt =| ftp_sit|
|0002b110| 65 2d 3e 63 6f 6e 74 72 | 6f 6c 3b 0a 09 09 09 09 |e->contr|ol;.....|
|0002b120| 09 09 09 09 09 09 66 74 | 70 5f 73 69 74 65 2d 3e |......ft|p_site->|
|0002b130| 69 6e 74 72 2d 3e 68 65 | 61 64 65 72 2e 6d 6e 5f |intr->he|ader.mn_|
|0002b140| 52 65 70 6c 79 50 6f 72 | 74 20 3d 20 73 79 6e 63 |ReplyPor|t = sync|
|0002b150| 3b 0a 09 09 09 09 09 09 | 09 09 09 09 66 74 70 5f |;.......|....ftp_|
|0002b160| 73 69 74 65 2d 3e 69 6e | 74 72 2d 3e 63 6f 6d 6d |site->in|tr->comm|
|0002b170| 61 6e 64 20 3d 20 54 43 | 50 5f 49 4e 54 45 52 52 |and = TC|P_INTERR|
|0002b180| 55 50 54 3b 0a 0a 09 09 | 09 09 09 09 09 09 09 09 |UPT;....|........|
|0002b190| 69 66 20 28 4f 70 65 6e | 44 65 76 69 63 65 28 22 |if (Open|Device("|
|0002b1a0| 74 69 6d 65 72 2e 64 65 | 76 69 63 65 22 2c 20 55 |timer.de|vice", U|
|0002b1b0| 4e 49 54 5f 56 42 4c 41 | 4e 4b 2c 20 28 73 74 72 |NIT_VBLA|NK, (str|
|0002b1c0| 75 63 74 20 49 4f 52 65 | 71 75 65 73 74 20 2a 29 |uct IORe|quest *)|
|0002b1d0| 74 69 6d 65 72 2c 20 30 | 29 20 3d 3d 20 30 29 20 |timer, 0|) == 0) |
|0002b1e0| 7b 0a 09 09 09 09 09 09 | 09 09 09 09 09 73 6d 20 |{.......|.....sm |
|0002b1f0| 3d 20 28 73 74 61 74 75 | 73 5f 6d 65 73 73 61 67 |= (statu|s_messag|
|0002b200| 65 20 2a 29 61 6c 6c 6f | 63 61 74 65 28 73 69 7a |e *)allo|cate(siz|
|0002b210| 65 6f 66 28 2a 73 6d 29 | 2c 20 56 5f 73 74 61 74 |eof(*sm)|, V_stat|
|0002b220| 75 73 5f 6d 65 73 73 61 | 67 65 29 3b 0a 09 09 09 |us_messa|ge);....|
|0002b230| 09 09 09 09 09 09 09 09 | 69 66 20 28 73 6d 29 20 |........|if (sm) |
|0002b240| 7b 0a 09 09 09 09 09 09 | 09 09 09 09 09 09 72 61 |{.......|......ra|
|0002b250| 6e 6b 20 3d 20 43 72 65 | 61 74 65 50 6f 72 74 28 |nk = Cre|atePort(|
|0002b260| 30 2c 20 30 29 3b 0a 09 | 09 09 09 09 09 09 09 09 |0, 0);..|........|
|0002b270| 09 09 09 69 66 20 28 72 | 61 6e 6b 29 20 7b 0a 09 |...if (r|ank) {..|
|0002b280| 09 09 09 09 09 09 09 09 | 09 09 09 09 66 74 70 5f |........|....ftp_|
|0002b290| 73 69 74 65 2d 3e 72 61 | 6e 6b 20 3d 20 72 61 6e |site->ra|nk = ran|
|0002b2a0| 6b 3b 0a 09 09 09 09 09 | 09 09 09 09 09 09 09 09 |k;......|........|
|0002b2b0| 67 6f 74 6f 20 62 65 67 | 69 6e 3b 0a 09 09 09 09 |goto beg|in;.....|
|0002b2c0| 09 09 09 09 09 09 09 09 | 7d 20 65 6c 73 65 20 64 |........|} else d|
|0002b2d0| 70 2d 3e 64 70 5f 52 65 | 73 32 20 3d 20 45 52 52 |p->dp_Re|s2 = ERR|
|0002b2e0| 4f 52 5f 4e 4f 5f 46 52 | 45 45 5f 53 54 4f 52 45 |OR_NO_FR|EE_STORE|
|0002b2f0| 3b 0a 09 09 09 09 09 09 | 09 09 09 09 09 09 64 65 |;.......|......de|
|0002b300| 61 6c 6c 6f 63 61 74 65 | 28 73 6d 2c 20 56 5f 73 |allocate|(sm, V_s|
|0002b310| 74 61 74 75 73 5f 6d 65 | 73 73 61 67 65 29 3b 0a |tatus_me|ssage);.|
|0002b320| 09 09 09 09 09 09 09 09 | 09 09 09 7d 20 65 6c 73 |........|...} els|
|0002b330| 65 20 64 70 2d 3e 64 70 | 5f 52 65 73 32 20 3d 20 |e dp->dp|_Res2 = |
|0002b340| 45 52 52 4f 52 5f 4e 4f | 5f 46 52 45 45 5f 53 54 |ERROR_NO|_FREE_ST|
|0002b350| 4f 52 45 3b 0a 09 09 09 | 09 09 09 09 09 09 09 09 |ORE;....|........|
|0002b360| 43 6c 6f 73 65 44 65 76 | 69 63 65 28 28 73 74 72 |CloseDev|ice((str|
|0002b370| 75 63 74 20 49 4f 52 65 | 71 75 65 73 74 20 2a 29 |uct IORe|quest *)|
|0002b380| 74 69 6d 65 72 29 3b 0a | 09 09 09 09 09 09 09 09 |timer);.|........|
|0002b390| 09 09 7d 20 65 6c 73 65 | 20 64 70 2d 3e 64 70 5f |..} else| dp->dp_|
|0002b3a0| 52 65 73 32 20 3d 20 45 | 52 52 4f 52 5f 44 45 56 |Res2 = E|RROR_DEV|
|0002b3b0| 49 43 45 5f 4e 4f 54 5f | 4d 4f 55 4e 54 45 44 3b |ICE_NOT_|MOUNTED;|
|0002b3c0| 0a 09 09 09 09 09 09 09 | 09 09 09 66 74 70 5f 73 |........|...ftp_s|
|0002b3d0| 69 74 65 2d 3e 69 6e 74 | 72 2d 3e 63 6f 6d 6d 61 |ite->int|r->comma|
|0002b3e0| 6e 64 20 3d 20 54 43 50 | 5f 44 49 53 50 4f 53 45 |nd = TCP|_DISPOSE|
|0002b3f0| 3b 0a 09 09 09 09 09 09 | 09 09 09 09 50 75 74 4d |;.......|....PutM|
|0002b400| 73 67 28 74 63 70 2c 20 | 26 66 74 70 5f 73 69 74 |sg(tcp, |&ftp_sit|
|0002b410| 65 2d 3e 69 6e 74 72 2d | 3e 68 65 61 64 65 72 29 |e->intr-|>header)|
|0002b420| 3b 0a 09 09 09 09 09 09 | 09 09 09 7d 20 65 6c 73 |;.......|...} els|
|0002b430| 65 20 64 70 2d 3e 64 70 | 5f 52 65 73 32 20 3d 20 |e dp->dp|_Res2 = |
|0002b440| 45 52 52 4f 52 5f 4e 4f | 5f 46 52 45 45 5f 53 54 |ERROR_NO|_FREE_ST|
|0002b450| 4f 52 45 3b 0a 09 09 09 | 09 09 09 09 09 09 66 74 |ORE;....|......ft|
|0002b460| 70 5f 73 69 74 65 2d 3e | 63 6f 6e 74 72 6f 6c 2d |p_site->|control-|
|0002b470| 3e 63 6f 6d 6d 61 6e 64 | 20 3d 20 54 43 50 5f 44 |>command| = TCP_D|
|0002b480| 49 53 50 4f 53 45 3b 0a | 09 09 09 09 09 09 09 09 |ISPOSE;.|........|
|0002b490| 09 50 75 74 4d 73 67 28 | 74 63 70 2c 20 26 66 74 |.PutMsg(|tcp, &ft|
|0002b4a0| 70 5f 73 69 74 65 2d 3e | 63 6f 6e 74 72 6f 6c 2d |p_site->|control-|
|0002b4b0| 3e 68 65 61 64 65 72 29 | 3b 0a 09 09 09 09 09 09 |>header)|;.......|
|0002b4c0| 09 09 7d 20 65 6c 73 65 | 20 64 70 2d 3e 64 70 5f |..} else| dp->dp_|
|0002b4d0| 52 65 73 32 20 3d 20 45 | 52 52 4f 52 5f 4e 4f 5f |Res2 = E|RROR_NO_|
|0002b4e0| 46 52 45 45 5f 53 54 4f | 52 45 3b 0a 09 09 09 09 |FREE_STO|RE;.....|
|0002b4f0| 09 09 09 09 64 65 61 6c | 6c 6f 63 61 74 65 28 69 |....deal|locate(i|
|0002b500| 64 6c 65 5f 70 61 63 6b | 65 74 2c 20 56 5f 53 74 |dle_pack|et, V_St|
|0002b510| 61 6e 64 61 72 64 50 61 | 63 6b 65 74 29 3b 0a 09 |andardPa|cket);..|
|0002b520| 09 09 09 09 09 09 7d 20 | 65 6c 73 65 20 64 70 2d |......} |else dp-|
|0002b530| 3e 64 70 5f 52 65 73 32 | 20 3d 20 45 52 52 4f 52 |>dp_Res2| = ERROR|
|0002b540| 5f 4e 4f 5f 46 52 45 45 | 5f 53 54 4f 52 45 3b 0a |_NO_FREE|_STORE;.|
|0002b550| 09 09 09 09 09 09 09 44 | 65 6c 65 74 65 45 78 74 |.......D|eleteExt|
|0002b560| 49 4f 28 28 73 74 72 75 | 63 74 20 49 4f 52 65 71 |IO((stru|ct IOReq|
|0002b570| 75 65 73 74 20 2a 29 74 | 69 6d 65 72 29 3b 0a 09 |uest *)t|imer);..|
|0002b580| 09 09 09 09 09 7d 20 65 | 6c 73 65 20 64 70 2d 3e |.....} e|lse dp->|
|0002b590| 64 70 5f 52 65 73 32 20 | 3d 20 45 52 52 4f 52 5f |dp_Res2 |= ERROR_|
|0002b5a0| 4e 4f 5f 46 52 45 45 5f | 53 54 4f 52 45 3b 0a 09 |NO_FREE_|STORE;..|
|0002b5b0| 09 09 09 09 09 44 65 6c | 65 74 65 50 6f 72 74 28 |.....Del|etePort(|
|0002b5c0| 74 69 6d 65 70 6f 72 74 | 29 3b 0a 09 09 09 09 09 |timeport|);......|
|0002b5d0| 7d 20 65 6c 73 65 20 64 | 70 2d 3e 64 70 5f 52 65 |} else d|p->dp_Re|
|0002b5e0| 73 32 20 3d 20 45 52 52 | 4f 52 5f 4e 4f 5f 46 52 |s2 = ERR|OR_NO_FR|
|0002b5f0| 45 45 5f 53 54 4f 52 45 | 3b 0a 09 09 09 09 09 44 |EE_STORE|;......D|
|0002b600| 65 6c 65 74 65 50 6f 72 | 74 28 73 79 6e 63 29 3b |eletePor|t(sync);|
|0002b610| 0a 09 09 09 09 7d 20 65 | 6c 73 65 20 64 70 2d 3e |.....} e|lse dp->|
|0002b620| 64 70 5f 52 65 73 32 20 | 3d 20 45 52 52 4f 52 5f |dp_Res2 |= ERROR_|
|0002b630| 4e 4f 5f 46 52 45 45 5f | 53 54 4f 52 45 3b 0a 09 |NO_FREE_|STORE;..|
|0002b640| 09 09 09 43 6c 6f 73 65 | 4c 69 62 72 61 72 79 28 |...Close|Library(|
|0002b650| 28 73 74 72 75 63 74 20 | 4c 69 62 72 61 72 79 20 |(struct |Library |
|0002b660| 2a 29 66 74 70 5f 73 69 | 74 65 2d 3e 47 42 61 73 |*)ftp_si|te->GBas|
|0002b670| 65 29 3b 0a 09 09 09 7d | 20 65 6c 73 65 20 64 70 |e);....}| else dp|
|0002b680| 2d 3e 64 70 5f 52 65 73 | 32 20 3d 20 45 52 52 4f |->dp_Res|2 = ERRO|
|0002b690| 52 5f 49 4e 56 41 4c 49 | 44 5f 52 45 53 49 44 45 |R_INVALI|D_RESIDE|
|0002b6a0| 4e 54 5f 4c 49 42 52 41 | 52 59 3b 0a 09 09 09 43 |NT_LIBRA|RY;....C|
|0002b6b0| 6c 6f 73 65 4c 69 62 72 | 61 72 79 28 66 74 70 5f |loseLibr|ary(ftp_|
|0002b6c0| 73 69 74 65 2d 3e 47 54 | 42 61 73 65 29 3b 0a 09 |site->GT|Base);..|
|0002b6d0| 09 7d 20 65 6c 73 65 20 | 64 70 2d 3e 64 70 5f 52 |.} else |dp->dp_R|
|0002b6e0| 65 73 32 20 3d 20 45 52 | 52 4f 52 5f 49 4e 56 41 |es2 = ER|ROR_INVA|
|0002b6f0| 4c 49 44 5f 52 45 53 49 | 44 45 4e 54 5f 4c 49 42 |LID_RESI|DENT_LIB|
|0002b700| 52 41 52 59 3b 0a 09 09 | 43 6c 6f 73 65 4c 69 62 |RARY;...|CloseLib|
|0002b710| 72 61 72 79 28 28 73 74 | 72 75 63 74 20 4c 69 62 |rary((st|ruct Lib|
|0002b720| 72 61 72 79 20 2a 29 66 | 74 70 5f 73 69 74 65 2d |rary *)f|tp_site-|
|0002b730| 3e 49 42 61 73 65 29 3b | 0a 09 7d 20 65 6c 73 65 |>IBase);|..} else|
|0002b740| 20 64 70 2d 3e 64 70 5f | 52 65 73 32 20 3d 20 45 | dp->dp_|Res2 = E|
|0002b750| 52 52 4f 52 5f 49 4e 56 | 41 4c 49 44 5f 52 45 53 |RROR_INV|ALID_RES|
|0002b760| 49 44 45 4e 54 5f 4c 49 | 42 52 41 52 59 3b 0a 09 |IDENT_LI|BRARY;..|
|0002b770| 0a 09 64 70 2d 3e 64 70 | 5f 52 65 73 31 20 3d 20 |..dp->dp|_Res1 = |
|0002b780| 44 4f 53 46 41 4c 53 45 | 3b 0a 09 0a 09 63 68 65 |DOSFALSE|;....che|
|0002b790| 63 6b 5f 6d 65 6d 6f 72 | 79 28 29 3b 0a 09 0a 09 |ck_memor|y();....|
|0002b7a0| 46 6f 72 62 69 64 28 29 | 3b 0a 09 50 75 74 4d 73 |Forbid()|;..PutMs|
|0002b7b0| 67 28 72 65 70 6c 79 2c | 20 64 70 2d 3e 64 70 5f |g(reply,| dp->dp_|
|0002b7c0| 4c 69 6e 6b 29 3b 0a 09 | 72 65 74 75 72 6e 3b 0a |Link);..|return;.|
|0002b7d0| 0a 62 65 67 69 6e 3a 0a | 09 74 69 6d 65 72 2d 3e |.begin:.|.timer->|
|0002b7e0| 74 72 5f 6e 6f 64 65 2e | 69 6f 5f 43 6f 6d 6d 61 |tr_node.|io_Comma|
|0002b7f0| 6e 64 20 3d 20 54 52 5f | 41 44 44 52 45 51 55 45 |nd = TR_|ADDREQUE|
|0002b800| 53 54 3b 0a 09 74 69 6d | 65 72 2d 3e 74 72 5f 74 |ST;..tim|er->tr_t|
|0002b810| 69 6d 65 2e 74 76 5f 73 | 65 63 73 20 3d 20 49 44 |ime.tv_s|ecs = ID|
|0002b820| 4c 45 5f 49 4e 54 45 52 | 56 41 4c 3b 0a 09 74 69 |LE_INTER|VAL;..ti|
|0002b830| 6d 65 72 2d 3e 74 72 5f | 74 69 6d 65 2e 74 76 5f |mer->tr_|time.tv_|
|0002b840| 6d 69 63 72 6f 20 3d 20 | 30 3b 0a 09 53 65 6e 64 |micro = |0;..Send|
|0002b850| 49 4f 28 28 73 74 72 75 | 63 74 20 49 4f 52 65 71 |IO((stru|ct IOReq|
|0002b860| 75 65 73 74 20 2a 29 74 | 69 6d 65 72 29 3b 0a 09 |uest *)t|imer);..|
|0002b870| 0a 09 65 6e 73 75 72 65 | 28 73 6d 2c 20 56 5f 73 |..ensure|(sm, V_s|
|0002b880| 74 61 74 75 73 5f 6d 65 | 73 73 61 67 65 29 3b 0a |tatus_me|ssage);.|
|0002b890| 09 0a 09 73 6d 2d 3e 68 | 65 61 64 65 72 2e 6d 6e |...sm->h|eader.mn|
|0002b8a0| 5f 52 65 70 6c 79 50 6f | 72 74 20 3d 20 73 79 6e |_ReplyPo|rt = syn|
|0002b8b0| 63 3b 0a 09 73 6d 2d 3e | 68 65 61 64 65 72 2e 6d |c;..sm->|header.m|
|0002b8c0| 6e 5f 4c 65 6e 67 74 68 | 20 3d 20 73 69 7a 65 6f |n_Length| = sizeo|
|0002b8d0| 66 28 2a 73 6d 29 3b 0a | 09 73 6d 2d 3e 68 65 61 |f(*sm);.|.sm->hea|
|0002b8e0| 64 65 72 2e 6d 6e 5f 4e | 6f 64 65 2e 6c 6e 5f 54 |der.mn_N|ode.ln_T|
|0002b8f0| 79 70 65 20 3d 20 4e 54 | 5f 4d 45 53 53 41 47 45 |ype = NT|_MESSAGE|
|0002b900| 3b 0a 09 73 6d 2d 3e 68 | 65 61 64 65 72 2e 6d 6e |;..sm->h|eader.mn|
|0002b910| 5f 4e 6f 64 65 2e 6c 6e | 5f 50 72 69 20 3d 20 30 |_Node.ln|_Pri = 0|
|0002b920| 3b 0a 09 73 6d 2d 3e 68 | 65 61 64 65 72 2e 6d 6e |;..sm->h|eader.mn|
|0002b930| 5f 4e 6f 64 65 2e 6c 6e | 5f 4e 61 6d 65 20 3d 20 |_Node.ln|_Name = |
|0002b940| 22 73 69 74 65 20 73 74 | 61 74 75 73 20 6d 65 73 |"site st|atus mes|
|0002b950| 73 61 67 65 22 3b 0a 09 | 0a 09 73 6d 2d 3e 63 6f |sage";..|..sm->co|
|0002b960| 6d 6d 61 6e 64 20 3d 20 | 53 4d 5f 4e 45 57 5f 53 |mmand = |SM_NEW_S|
|0002b970| 49 54 45 3b 0a 09 73 6d | 2d 3e 64 61 74 61 20 3d |ITE;..sm|->data =|
|0002b980| 20 66 74 70 5f 73 69 74 | 65 2d 3e 6f 70 65 6e 5f | ftp_sit|e->open_|
|0002b990| 73 74 61 74 75 73 3b 0a | 09 73 6d 2d 3e 74 68 69 |status;.|.sm->thi|
|0002b9a0| 73 5f 73 69 74 65 20 3d | 20 66 74 70 5f 73 69 74 |s_site =| ftp_sit|
|0002b9b0| 65 3b 0a 09 0a 09 50 75 | 74 4d 73 67 28 73 74 61 |e;....Pu|tMsg(sta|
|0002b9c0| 74 75 73 5f 70 6f 72 74 | 2c 20 26 73 6d 2d 3e 68 |tus_port|, &sm->h|
|0002b9d0| 65 61 64 65 72 29 3b 0a | 09 57 61 69 74 50 6f 72 |eader);.|.WaitPor|
|0002b9e0| 74 28 73 79 6e 63 29 3b | 20 47 65 74 4d 73 67 28 |t(sync);| GetMsg(|
|0002b9f0| 73 79 6e 63 29 3b 0a 09 | 0a 09 66 74 70 5f 73 69 |sync);..|..ftp_si|
|0002ba00| 74 65 2d 3e 61 62 6f 72 | 74 5f 73 69 67 6e 61 6c |te->abor|t_signal|
|0002ba10| 73 20 3d 20 28 31 20 3c | 3c 20 41 6c 6c 6f 63 53 |s = (1 <|< AllocS|
|0002ba20| 69 67 6e 61 6c 28 2d 31 | 29 29 3b 0a 09 66 74 70 |ignal(-1|));..ftp|
|0002ba30| 5f 73 69 74 65 2d 3e 64 | 69 73 63 6f 6e 6e 65 63 |_site->d|isconnec|
|0002ba40| 74 5f 73 69 67 6e 61 6c | 73 20 3d 20 28 31 20 3c |t_signal|s = (1 <|
|0002ba50| 3c 20 41 6c 6c 6f 63 53 | 69 67 6e 61 6c 28 2d 31 |< AllocS|ignal(-1|
|0002ba60| 29 29 3b 0a 09 09 09 09 | 09 09 0a 09 64 70 2d 3e |));.....|....dp->|
|0002ba70| 64 70 5f 52 65 73 31 20 | 3d 20 44 4f 53 54 52 55 |dp_Res1 |= DOSTRU|
|0002ba80| 45 3b 0a 09 64 70 2d 3e | 64 70 5f 52 65 73 32 20 |E;..dp->|dp_Res2 |
|0002ba90| 3d 20 30 3b 0a 09 0a 09 | 50 75 74 4d 73 67 28 72 |= 0;....|PutMsg(r|
|0002baa0| 65 70 6c 79 2c 20 64 70 | 2d 3e 64 70 5f 4c 69 6e |eply, dp|->dp_Lin|
|0002bab0| 6b 29 3b 09 2f 2a 20 73 | 65 6e 64 20 69 74 20 62 |k);./* s|end it b|
|0002bac0| 61 63 6b 20 74 6f 20 73 | 69 67 6e 61 6c 20 77 65 |ack to s|ignal we|
|0002bad0| 20 61 72 65 20 61 77 61 | 79 20 2a 2f 0a 09 0a 09 | are awa|y */....|
|0002bae0| 73 69 67 6e 61 6c 73 20 | 3d 20 28 31 20 3c 3c 20 |signals |= (1 << |
|0002baf0| 6c 6f 63 61 6c 2d 3e 6d | 70 5f 53 69 67 42 69 74 |local->m|p_SigBit|
|0002bb00| 29 20 7c 20 28 31 20 3c | 3c 20 74 69 6d 65 70 6f |) | (1 <|< timepo|
|0002bb10| 72 74 2d 3e 6d 70 5f 53 | 69 67 42 69 74 29 20 7c |rt->mp_S|igBit) ||
|0002bb20| 20 28 66 74 70 5f 73 69 | 74 65 2d 3e 64 69 73 63 | (ftp_si|te->disc|
|0002bb30| 6f 6e 6e 65 63 74 5f 73 | 69 67 6e 61 6c 73 29 3b |onnect_s|ignals);|
|0002bb40| 0a 09 0a 09 77 68 69 6c | 65 20 28 31 29 20 7b 0a |....whil|e (1) {.|
|0002bb50| 09 09 69 66 20 28 66 74 | 70 5f 73 69 74 65 2d 3e |..if (ft|p_site->|
|0002bb60| 63 6f 6e 6e 65 63 74 65 | 64 29 20 7b 0a 09 09 09 |connecte|d) {....|
|0002bb70| 69 66 20 28 21 66 74 70 | 5f 73 69 74 65 2d 3e 63 |if (!ftp|_site->c|
|0002bb80| 66 69 6c 65 29 20 7b 0a | 09 09 09 09 73 74 61 74 |file) {.|....stat|
|0002bb90| 65 5f 63 68 61 6e 67 65 | 28 66 74 70 5f 73 69 74 |e_change|(ftp_sit|
|0002bba0| 65 2c 20 53 53 5f 49 44 | 4c 45 29 3b 0a 09 09 09 |e, SS_ID|LE);....|
|0002bbb0| 7d 0a 09 09 7d 20 65 6c | 73 65 20 7b 0a 09 09 09 |}...} el|se {....|
|0002bbc0| 73 74 61 74 65 5f 63 68 | 61 6e 67 65 28 66 74 70 |state_ch|ange(ftp|
|0002bbd0| 5f 73 69 74 65 2c 20 53 | 53 5f 44 49 53 43 4f 4e |_site, S|S_DISCON|
|0002bbe0| 4e 45 43 54 45 44 29 3b | 0a 09 09 7d 0a 0a 09 09 |NECTED);|...}....|
|0002bbf0| 69 66 20 28 57 61 69 74 | 28 73 69 67 6e 61 6c 73 |if (Wait|(signals|
|0002bc00| 29 20 26 20 66 74 70 5f | 73 69 74 65 2d 3e 64 69 |) & ftp_|site->di|
|0002bc10| 73 63 6f 6e 6e 65 63 74 | 5f 73 69 67 6e 61 6c 73 |sconnect|_signals|
|0002bc20| 29 20 7b 0a 09 09 09 64 | 69 73 63 6f 6e 6e 65 63 |) {....d|isconnec|
|0002bc30| 74 28 66 74 70 5f 73 69 | 74 65 29 3b 0a 09 09 7d |t(ftp_si|te);...}|
|0002bc40| 0a 09 09 0a 09 09 69 66 | 20 28 47 65 74 4d 73 67 |......if| (GetMsg|
|0002bc50| 28 74 69 6d 65 70 6f 72 | 74 29 29 20 7b 0a 09 09 |(timepor|t)) {...|
|0002bc60| 09 74 69 6d 65 72 2d 3e | 74 72 5f 6e 6f 64 65 2e |.timer->|tr_node.|
|0002bc70| 69 6f 5f 43 6f 6d 6d 61 | 6e 64 20 3d 20 54 52 5f |io_Comma|nd = TR_|
|0002bc80| 41 44 44 52 45 51 55 45 | 53 54 3b 0a 09 09 09 74 |ADDREQUE|ST;....t|
|0002bc90| 69 6d 65 72 2d 3e 74 72 | 5f 74 69 6d 65 2e 74 76 |imer->tr|_time.tv|
|0002bca0| 5f 73 65 63 73 20 3d 20 | 49 44 4c 45 5f 49 4e 54 |_secs = |IDLE_INT|
|0002bcb0| 45 52 56 41 4c 3b 0a 09 | 09 09 74 69 6d 65 72 2d |ERVAL;..|..timer-|
|0002bcc0| 3e 74 72 5f 74 69 6d 65 | 2e 74 76 5f 6d 69 63 72 |>tr_time|.tv_micr|
|0002bcd0| 6f 20 3d 20 30 3b 0a 09 | 09 09 0a 09 09 09 69 64 |o = 0;..|......id|
|0002bce0| 6c 65 63 6f 75 6e 74 2b | 2b 3b 0a 09 09 09 0a 09 |lecount+|+;......|
|0002bcf0| 09 09 53 65 6e 64 49 4f | 28 28 73 74 72 75 63 74 |..SendIO|((struct|
|0002bd00| 20 49 4f 52 65 71 75 65 | 73 74 20 2a 29 74 69 6d | IOReque|st *)tim|
|0002bd10| 65 72 29 3b 0a 09 09 09 | 0a 09 09 09 69 66 20 28 |er);....|....if (|
|0002bd20| 66 74 70 5f 73 69 74 65 | 2d 3e 6c 6f 63 6b 5f 6c |ftp_site|->lock_l|
|0002bd30| 69 73 74 20 3d 3d 20 6e | 69 6c 20 26 26 20 66 74 |ist == n|il && ft|
|0002bd40| 70 5f 73 69 74 65 2d 3e | 66 69 6c 65 5f 6c 69 73 |p_site->|file_lis|
|0002bd50| 74 20 3d 3d 20 6e 69 6c | 29 20 7b 0a 09 09 09 09 |t == nil|) {.....|
|0002bd60| 69 66 20 28 66 74 70 5f | 73 69 74 65 2d 3e 63 6f |if (ftp_|site->co|
|0002bd70| 6e 6e 65 63 74 65 64 29 | 20 7b 0a 09 09 09 09 09 |nnected)| {......|
|0002bd80| 69 66 20 28 69 64 6c 65 | 63 6f 75 6e 74 20 3e 20 |if (idle|count > |
|0002bd90| 4e 4f 5f 4c 4f 43 4b 5f | 43 4f 4e 4e 5f 49 44 4c |NO_LOCK_|CONN_IDL|
|0002bda0| 45 29 20 7b 0a 09 09 09 | 09 09 09 69 64 6c 65 5f |E) {....|...idle_|
|0002bdb0| 70 61 63 6b 65 74 2d 3e | 73 70 5f 50 6b 74 2e 64 |packet->|sp_Pkt.d|
|0002bdc0| 70 5f 50 6f 72 74 20 3d | 20 73 79 6e 63 3b 0a 09 |p_Port =| sync;..|
|0002bdd0| 09 09 09 09 09 50 75 74 | 4d 73 67 28 66 74 70 5f |.....Put|Msg(ftp_|
|0002bde0| 70 6f 72 74 2c 20 26 69 | 64 6c 65 5f 70 61 63 6b |port, &i|dle_pack|
|0002bdf0| 65 74 2d 3e 73 70 5f 4d | 73 67 29 3b 0a 09 09 09 |et->sp_M|sg);....|
|0002be00| 09 09 09 57 61 69 74 50 | 6f 72 74 28 73 79 6e 63 |...WaitP|ort(sync|
|0002be10| 29 3b 20 47 65 74 4d 73 | 67 28 73 79 6e 63 29 3b |); GetMs|g(sync);|
|0002be20| 0a 09 09 09 09 09 7d 0a | 09 09 09 09 7d 20 65 6c |......}.|....} el|
|0002be30| 73 65 20 69 66 20 28 21 | 66 74 70 5f 73 69 74 65 |se if (!|ftp_site|
|0002be40| 2d 3e 63 6f 6e 6e 65 63 | 74 65 64 29 20 7b 0a 09 |->connec|ted) {..|
|0002be50| 09 09 09 09 69 66 20 28 | 69 64 6c 65 63 6f 75 6e |....if (|idlecoun|
|0002be60| 74 20 3e 20 4e 4f 5f 4c | 4f 43 4b 5f 4e 4f 5f 43 |t > NO_L|OCK_NO_C|
|0002be70| 4f 4e 4e 5f 49 44 4c 45 | 29 20 7b 0a 09 09 09 09 |ONN_IDLE|) {.....|
|0002be80| 09 09 69 64 6c 65 5f 70 | 61 63 6b 65 74 2d 3e 73 |..idle_p|acket->s|
|0002be90| 70 5f 50 6b 74 2e 64 70 | 5f 50 6f 72 74 20 3d 20 |p_Pkt.dp|_Port = |
|0002bea0| 73 79 6e 63 3b 0a 09 09 | 09 09 09 09 50 75 74 4d |sync;...|....PutM|
|0002beb0| 73 67 28 66 74 70 5f 70 | 6f 72 74 2c 20 26 69 64 |sg(ftp_p|ort, &id|
|0002bec0| 6c 65 5f 70 61 63 6b 65 | 74 2d 3e 73 70 5f 4d 73 |le_packe|t->sp_Ms|
|0002bed0| 67 29 3b 0a 09 09 09 09 | 09 09 57 61 69 74 50 6f |g);.....|..WaitPo|
|0002bee0| 72 74 28 73 79 6e 63 29 | 3b 20 47 65 74 4d 73 67 |rt(sync)|; GetMsg|
|0002bef0| 28 73 79 6e 63 29 3b 0a | 09 09 09 09 09 7d 0a 09 |(sync);.|.....}..|
|0002bf00| 09 09 09 7d 0a 09 09 09 | 7d 0a 09 09 7d 0a 09 09 |...}....|}...}...|
|0002bf10| 0a 09 09 77 68 69 6c 65 | 20 28 6d 73 67 20 3d 20 |...while| (msg = |
|0002bf20| 47 65 74 4d 73 67 28 6c | 6f 63 61 6c 29 29 20 7b |GetMsg(l|ocal)) {|
|0002bf30| 0a 09 09 09 69 64 6c 65 | 63 6f 75 6e 74 20 3d 20 |....idle|count = |
|0002bf40| 30 3b 0a 09 09 09 0a 09 | 09 09 64 70 20 3d 20 28 |0;......|..dp = (|
|0002bf50| 73 74 72 75 63 74 20 44 | 6f 73 50 61 63 6b 65 74 |struct D|osPacket|
|0002bf60| 20 2a 29 6d 73 67 2d 3e | 6d 6e 5f 4e 6f 64 65 2e | *)msg->|mn_Node.|
|0002bf70| 6c 6e 5f 4e 61 6d 65 3b | 0a 09 09 09 0a 09 09 09 |ln_Name;|........|
|0002bf80| 72 65 70 6c 79 20 3d 20 | 64 70 2d 3e 64 70 5f 50 |reply = |dp->dp_P|
|0002bf90| 6f 72 74 3b 0a 09 09 09 | 0a 09 09 09 73 77 69 74 |ort;....|....swit|
|0002bfa0| 63 68 20 28 64 70 2d 3e | 64 70 5f 54 79 70 65 29 |ch (dp->|dp_Type)|
|0002bfb0| 20 7b 0a 09 09 09 63 61 | 73 65 20 61 63 74 69 6f | {....ca|se actio|
|0002bfc0| 6e 5f 49 44 4c 45 5f 44 | 45 41 54 48 3a 0a 09 09 |n_IDLE_D|EATH:...|
|0002bfd0| 09 09 69 66 20 28 66 74 | 70 5f 73 69 74 65 2d 3e |..if (ft|p_site->|
|0002bfe0| 66 69 6c 65 5f 6c 69 73 | 74 20 26 26 20 66 74 70 |file_lis|t && ftp|
|0002bff0| 5f 73 69 74 65 2d 3e 66 | 69 6c 65 5f 6c 69 73 74 |_site->f|ile_list|
|0002c000| 2d 3e 63 6c 6f 73 65 64 | 29 20 7b 0a 09 09 09 09 |->closed|) {.....|
|0002c010| 09 63 6c 6f 73 65 5f 66 | 69 6c 65 28 66 74 70 5f |.close_f|ile(ftp_|
|0002c020| 73 69 74 65 2c 20 74 72 | 75 65 29 3b 0a 09 09 09 |site, tr|ue);....|
|0002c030| 09 7d 0a 09 09 09 09 69 | 66 20 28 66 74 70 5f 73 |.}.....i|f (ftp_s|
|0002c040| 69 74 65 2d 3e 6c 6f 63 | 6b 5f 6c 69 73 74 20 7c |ite->loc|k_list ||
|0002c050| 7c 20 66 74 70 5f 73 69 | 74 65 2d 3e 66 69 6c 65 || ftp_si|te->file|
|0002c060| 5f 6c 69 73 74 29 20 7b | 0a 09 09 09 09 09 64 70 |_list) {|......dp|
|0002c070| 2d 3e 64 70 5f 52 65 73 | 31 20 3d 20 44 4f 53 46 |->dp_Res|1 = DOSF|
|0002c080| 41 4c 53 45 3b 0a 09 09 | 09 09 09 64 70 2d 3e 64 |ALSE;...|...dp->d|
|0002c090| 70 5f 52 65 73 32 20 3d | 20 30 3b 0a 09 09 09 09 |p_Res2 =| 0;.....|
|0002c0a0| 09 0a 09 09 09 09 09 62 | 72 65 61 6b 3b 0a 09 09 |.......b|reak;...|
|0002c0b0| 09 09 7d 0a 09 09 09 09 | 2f 2a 20 66 61 6c 6c 20 |..}.....|/* fall |
|0002c0c0| 74 68 72 6f 75 67 68 20 | 74 6f 20 44 49 45 20 2a |through |to DIE *|
|0002c0d0| 2f 0a 09 09 09 63 61 73 | 65 20 41 43 54 49 4f 4e |/....cas|e ACTION|
|0002c0e0| 5f 44 49 45 3a 0a 09 09 | 09 09 73 74 61 74 65 5f |_DIE:...|..state_|
|0002c0f0| 63 68 61 6e 67 65 28 66 | 74 70 5f 73 69 74 65 2c |change(f|tp_site,|
|0002c100| 20 53 53 5f 44 49 53 43 | 4f 4e 4e 45 43 54 49 4e | SS_DISC|ONNECTIN|
|0002c110| 47 29 3b 0a 09 09 09 09 | 0a 09 09 09 09 73 6c 6f |G);.....|.....slo|
|0002c120| 63 6b 20 3d 20 66 74 70 | 5f 73 69 74 65 2d 3e 6c |ck = ftp|_site->l|
|0002c130| 6f 63 6b 5f 6c 69 73 74 | 3b 0a 09 09 09 09 77 68 |ock_list|;.....wh|
|0002c140| 69 6c 65 20 28 73 6c 6f | 63 6b 29 20 7b 0a 09 09 |ile (slo|ck) {...|
|0002c150| 09 09 09 6e 65 77 5f 6c | 6f 63 6b 20 3d 20 73 6c |...new_l|ock = sl|
|0002c160| 6f 63 6b 2d 3e 6e 65 78 | 74 3b 0a 09 09 09 09 09 |ock->nex|t;......|
|0002c170| 64 69 73 6f 77 6e 28 73 | 6c 6f 63 6b 2c 20 56 5f |disown(s|lock, V_|
|0002c180| 6c 6f 63 6b 29 3b 0a 09 | 09 09 09 09 73 6c 6f 63 |lock);..|....sloc|
|0002c190| 6b 20 3d 20 6e 65 77 5f | 6c 6f 63 6b 3b 0a 09 09 |k = new_|lock;...|
|0002c1a0| 09 09 7d 0a 09 09 09 09 | 0a 09 09 09 09 64 65 61 |..}.....|.....dea|
|0002c1b0| 6c 6c 6f 63 61 74 65 28 | 69 64 6c 65 5f 70 61 63 |llocate(|idle_pac|
|0002c1c0| 6b 65 74 2c 20 56 5f 53 | 74 61 6e 64 61 72 64 50 |ket, V_S|tandardP|
|0002c1d0| 61 63 6b 65 74 29 3b 0a | 09 09 09 09 0a 09 09 09 |acket);.|........|
|0002c1e0| 09 41 62 6f 72 74 49 4f | 28 28 73 74 72 75 63 74 |.AbortIO|((struct|
|0002c1f0| 20 49 4f 52 65 71 75 65 | 73 74 20 2a 29 74 69 6d | IOReque|st *)tim|
|0002c200| 65 72 29 3b 0a 09 09 09 | 09 57 61 69 74 50 6f 72 |er);....|.WaitPor|
|0002c210| 74 28 74 69 6d 65 70 6f | 72 74 29 3b 20 47 65 74 |t(timepo|rt); Get|
|0002c220| 4d 73 67 28 74 69 6d 65 | 70 6f 72 74 29 3b 0a 09 |Msg(time|port);..|
|0002c230| 09 09 09 0a 09 09 09 09 | 43 6c 6f 73 65 44 65 76 |........|CloseDev|
|0002c240| 69 63 65 28 28 73 74 72 | 75 63 74 20 49 4f 52 65 |ice((str|uct IORe|
|0002c250| 71 75 65 73 74 20 2a 29 | 74 69 6d 65 72 29 3b 0a |quest *)|timer);.|
|0002c260| 09 09 09 09 0a 09 09 09 | 09 69 66 20 28 66 74 70 |........|.if (ftp|
|0002c270| 5f 73 69 74 65 2d 3e 63 | 6f 6e 6e 65 63 74 65 64 |_site->c|onnected|
|0002c280| 29 20 7b 0a 09 09 09 09 | 09 66 74 70 5f 73 69 74 |) {.....|.ftp_sit|
|0002c290| 65 2d 3e 63 6f 6e 74 72 | 6f 6c 2d 3e 63 6f 6d 6d |e->contr|ol->comm|
|0002c2a0| 61 6e 64 20 3d 20 54 43 | 50 5f 43 4c 4f 53 45 3b |and = TC|P_CLOSE;|
|0002c2b0| 0a 09 09 09 09 09 50 75 | 74 4d 73 67 28 74 63 70 |......Pu|tMsg(tcp|
|0002c2c0| 2c 20 26 66 74 70 5f 73 | 69 74 65 2d 3e 63 6f 6e |, &ftp_s|ite->con|
|0002c2d0| 74 72 6f 6c 2d 3e 68 65 | 61 64 65 72 29 3b 0a 09 |trol->he|ader);..|
|0002c2e0| 09 09 09 09 57 61 69 74 | 50 6f 72 74 28 73 79 6e |....Wait|Port(syn|
|0002c2f0| 63 29 3b 20 47 65 74 4d | 73 67 28 73 79 6e 63 29 |c); GetM|sg(sync)|
|0002c300| 3b 0a 09 09 09 09 09 0a | 09 09 09 09 09 66 74 70 |;.......|.....ftp|
|0002c310| 5f 73 69 74 65 2d 3e 63 | 6f 6e 6e 65 63 74 65 64 |_site->c|onnected|
|0002c320| 20 3d 20 66 61 6c 73 65 | 3b 0a 09 09 09 09 7d 0a | = false|;.....}.|
|0002c330| 09 09 09 09 0a 09 09 09 | 09 66 74 70 5f 73 69 74 |........|.ftp_sit|
|0002c340| 65 2d 3e 63 6f 6e 74 72 | 6f 6c 2d 3e 63 6f 6d 6d |e->contr|ol->comm|
|0002c350| 61 6e 64 20 3d 20 54 43 | 50 5f 44 49 53 50 4f 53 |and = TC|P_DISPOS|
|0002c360| 45 3b 0a 09 09 09 09 50 | 75 74 4d 73 67 28 74 63 |E;.....P|utMsg(tc|
|0002c370| 70 2c 20 26 66 74 70 5f | 73 69 74 65 2d 3e 63 6f |p, &ftp_|site->co|
|0002c380| 6e 74 72 6f 6c 2d 3e 68 | 65 61 64 65 72 29 3b 0a |ntrol->h|eader);.|
|0002c390| 09 09 09 09 0a 09 09 09 | 09 66 74 70 5f 73 69 74 |........|.ftp_sit|
|0002c3a0| 65 2d 3e 69 6e 74 72 2d | 3e 63 6f 6d 6d 61 6e 64 |e->intr-|>command|
|0002c3b0| 20 3d 20 54 43 50 5f 44 | 49 53 50 4f 53 45 3b 0a | = TCP_D|ISPOSE;.|
|0002c3c0| 09 09 09 09 50 75 74 4d | 73 67 28 74 63 70 2c 20 |....PutM|sg(tcp, |
|0002c3d0| 26 66 74 70 5f 73 69 74 | 65 2d 3e 69 6e 74 72 2d |&ftp_sit|e->intr-|
|0002c3e0| 3e 68 65 61 64 65 72 29 | 3b 0a 09 09 09 09 0a 09 |>header)|;.......|
|0002c3f0| 09 09 09 73 6d 2d 3e 63 | 6f 6d 6d 61 6e 64 20 3d |...sm->c|ommand =|
|0002c400| 20 53 4d 5f 44 45 41 44 | 5f 53 49 54 45 3b 0a 09 | SM_DEAD|_SITE;..|
|0002c410| 09 09 09 0a 09 09 09 09 | 50 75 74 4d 73 67 28 73 |........|PutMsg(s|
|0002c420| 74 61 74 75 73 5f 70 6f | 72 74 2c 20 26 73 6d 2d |tatus_po|rt, &sm-|
|0002c430| 3e 68 65 61 64 65 72 29 | 3b 0a 09 09 09 09 57 61 |>header)|;.....Wa|
|0002c440| 69 74 50 6f 72 74 28 73 | 79 6e 63 29 3b 20 47 65 |itPort(s|ync); Ge|
|0002c450| 74 4d 73 67 28 73 79 6e | 63 29 3b 0a 09 09 09 09 |tMsg(syn|c);.....|
|0002c460| 0a 09 09 09 09 77 68 69 | 6c 65 20 28 74 73 6d 20 |.....whi|le (tsm |
|0002c470| 3d 20 28 73 74 61 74 75 | 73 5f 6d 65 73 73 61 67 |= (statu|s_messag|
|0002c480| 65 20 2a 29 47 65 74 4d | 73 67 28 72 61 6e 6b 29 |e *)GetM|sg(rank)|
|0002c490| 29 20 7b 0a 09 09 09 09 | 09 76 65 72 69 66 79 28 |) {.....|.verify(|
|0002c4a0| 74 73 6d 2c 20 56 5f 73 | 74 61 74 75 73 5f 6d 65 |tsm, V_s|tatus_me|
|0002c4b0| 73 73 61 67 65 29 3b 0a | 09 09 09 09 09 64 65 61 |ssage);.|.....dea|
|0002c4c0| 6c 6c 6f 63 61 74 65 28 | 74 73 6d 2c 20 56 5f 73 |llocate(|tsm, V_s|
|0002c4d0| 74 61 74 75 73 5f 6d 65 | 73 73 61 67 65 29 3b 0a |tatus_me|ssage);.|
|0002c4e0| 09 09 09 09 7d 0a 09 09 | 09 09 0a 09 09 09 09 44 |....}...|.......D|
|0002c4f0| 65 6c 65 74 65 50 6f 72 | 74 28 72 61 6e 6b 29 3b |eletePor|t(rank);|
|0002c500| 0a 09 09 09 09 64 65 61 | 6c 6c 6f 63 61 74 65 28 |.....dea|llocate(|
|0002c510| 73 6d 2c 20 56 5f 73 74 | 61 74 75 73 5f 6d 65 73 |sm, V_st|atus_mes|
|0002c520| 73 61 67 65 29 3b 0a 0a | 09 09 09 09 44 65 6c 65 |sage);..|....Dele|
|0002c530| 74 65 45 78 74 49 4f 28 | 28 73 74 72 75 63 74 20 |teExtIO(|(struct |
|0002c540| 49 4f 52 65 71 75 65 73 | 74 20 2a 29 74 69 6d 65 |IOReques|t *)time|
|0002c550| 72 29 3b 0a 09 09 09 09 | 44 65 6c 65 74 65 50 6f |r);.....|DeletePo|
|0002c560| 72 74 28 74 69 6d 65 70 | 6f 72 74 29 3b 0a 09 09 |rt(timep|ort);...|
|0002c570| 09 09 44 65 6c 65 74 65 | 50 6f 72 74 28 73 79 6e |..Delete|Port(syn|
|0002c580| 63 29 3b 0a 09 09 09 09 | 0a 09 09 09 09 43 6c 6f |c);.....|.....Clo|
|0002c590| 73 65 4c 69 62 72 61 72 | 79 28 28 73 74 72 75 63 |seLibrar|y((struc|
|0002c5a0| 74 20 4c 69 62 72 61 72 | 79 20 2a 29 66 74 70 5f |t Librar|y *)ftp_|
|0002c5b0| 73 69 74 65 2d 3e 47 42 | 61 73 65 29 3b 0a 09 09 |site->GB|ase);...|
|0002c5c0| 09 09 43 6c 6f 73 65 4c | 69 62 72 61 72 79 28 66 |..CloseL|ibrary(f|
|0002c5d0| 74 70 5f 73 69 74 65 2d | 3e 47 54 42 61 73 65 29 |tp_site-|>GTBase)|
|0002c5e0| 3b 0a 09 09 09 09 43 6c | 6f 73 65 4c 69 62 72 61 |;.....Cl|oseLibra|
|0002c5f0| 72 79 28 28 73 74 72 75 | 63 74 20 4c 69 62 72 61 |ry((stru|ct Libra|
|0002c600| 72 79 20 2a 29 66 74 70 | 5f 73 69 74 65 2d 3e 49 |ry *)ftp|_site->I|
|0002c610| 42 61 73 65 29 3b 0a 09 | 09 09 09 0a 09 09 09 09 |Base);..|........|
|0002c620| 77 68 69 6c 65 20 28 66 | 74 70 5f 73 69 74 65 2d |while (f|tp_site-|
|0002c630| 3e 69 6e 66 6f 73 29 20 | 66 72 65 65 5f 69 6e 66 |>infos) |free_inf|
|0002c640| 6f 5f 68 65 61 64 65 72 | 28 66 74 70 5f 73 69 74 |o_header|(ftp_sit|
|0002c650| 65 2d 3e 69 6e 66 6f 73 | 29 3b 0a 09 09 09 09 0a |e->infos|);......|
|0002c660| 09 09 09 09 69 66 20 28 | 66 74 70 5f 73 69 74 65 |....if (|ftp_site|
|0002c670| 2d 3e 63 77 64 29 20 64 | 65 61 6c 6c 6f 63 61 74 |->cwd) d|eallocat|
|0002c680| 65 28 66 74 70 5f 73 69 | 74 65 2d 3e 63 77 64 2c |e(ftp_si|te->cwd,|
|0002c690| 20 56 5f 63 73 74 72 29 | 3b 0a 09 09 09 09 69 66 | V_cstr)|;.....if|
|0002c6a0| 20 28 66 74 70 5f 73 69 | 74 65 2d 3e 72 6f 6f 74 | (ftp_si|te->root|
|0002c6b0| 29 20 7b 0a 09 09 09 09 | 09 2f 2a 20 74 68 69 73 |) {.....|./* this|
|0002c6c0| 20 6f 6e 65 20 6d 69 67 | 68 74 20 68 61 76 65 20 | one mig|ht have |
|0002c6d0| 62 65 65 6e 20 61 6c 6c | 6f 63 61 74 65 64 20 66 |been all|ocated f|
|0002c6e0| 72 6f 6d 20 6d 61 69 6e | 20 74 61 73 6b 20 2e 2e |rom main| task ..|
|0002c6f0| 2e 20 62 75 74 20 2a 2f | 0a 09 09 09 09 09 64 65 |. but */|......de|
|0002c700| 61 6c 6c 6f 63 61 74 65 | 28 66 74 70 5f 73 69 74 |allocate|(ftp_sit|
|0002c710| 65 2d 3e 72 6f 6f 74 2c | 20 56 5f 63 73 74 72 29 |e->root,| V_cstr)|
|0002c720| 3b 0a 09 09 09 09 09 66 | 74 70 5f 73 69 74 65 2d |;......f|tp_site-|
|0002c730| 3e 72 6f 6f 74 20 3d 20 | 6e 69 6c 3b 0a 09 09 09 |>root = |nil;....|
|0002c740| 09 7d 0a 09 09 09 09 0a | 09 09 09 09 2f 2a 20 61 |.}......|..../* a|
|0002c750| 67 61 69 6e 2c 20 74 68 | 65 73 65 20 6d 61 79 20 |gain, th|ese may |
|0002c760| 68 61 76 65 20 62 65 65 | 6e 20 61 6c 6c 6f 63 61 |have bee|n alloca|
|0002c770| 74 65 64 20 69 6e 20 65 | 69 74 68 65 72 20 74 68 |ted in e|ither th|
|0002c780| 65 20 6d 61 69 6e 20 74 | 61 73 6b 20 6f 72 0a 09 |e main t|ask or..|
|0002c790| 09 09 09 20 20 20 74 68 | 65 20 73 69 74 65 20 74 |... th|e site t|
|0002c7a0| 61 73 6b 20 2e 2e 2e 20 | 74 6f 6f 20 63 6f 6d 70 |ask ... |too comp|
|0002c7b0| 6c 69 63 61 74 65 64 20 | 74 6f 20 77 6f 72 6b 20 |licated |to work |
|0002c7c0| 69 74 20 6f 75 74 20 2e | 2e 2e 20 74 68 69 73 20 |it out .|.. this |
|0002c7d0| 77 6f 72 6b 73 20 66 6f | 72 20 6e 6f 77 20 2a 2f |works fo|r now */|
|0002c7e0| 0a 09 09 09 09 0a 09 09 | 09 09 69 66 20 28 66 74 |........|..if (ft|
|0002c7f0| 70 5f 73 69 74 65 2d 3e | 75 73 65 72 29 20 64 65 |p_site->|user) de|
|0002c800| 61 6c 6c 6f 63 61 74 65 | 28 66 74 70 5f 73 69 74 |allocate|(ftp_sit|
|0002c810| 65 2d 3e 75 73 65 72 2c | 20 56 5f 63 73 74 72 29 |e->user,| V_cstr)|
|0002c820| 3b 0a 09 09 09 09 69 66 | 20 28 66 74 70 5f 73 69 |;.....if| (ftp_si|
|0002c830| 74 65 2d 3e 70 61 73 73 | 77 6f 72 64 29 20 64 65 |te->pass|word) de|
|0002c840| 61 6c 6c 6f 63 61 74 65 | 28 66 74 70 5f 73 69 74 |allocate|(ftp_sit|
|0002c850| 65 2d 3e 70 61 73 73 77 | 6f 72 64 2c 20 56 5f 63 |e->passw|ord, V_c|
|0002c860| 73 74 72 29 3b 0a 09 0a | 09 09 09 09 64 70 2d 3e |str);...|....dp->|
|0002c870| 64 70 5f 52 65 73 31 20 | 3d 20 44 4f 53 54 52 55 |dp_Res1 |= DOSTRU|
|0002c880| 45 3b 0a 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |E;.....d|p->dp_Re|
|0002c890| 73 32 20 3d 20 28 62 33 | 32 29 28 66 74 70 5f 73 |s2 = (b3|2)(ftp_s|
|0002c8a0| 69 74 65 2d 3e 6c 6f 63 | 6b 5f 6c 69 73 74 29 3b |ite->loc|k_list);|
|0002c8b0| 09 2f 2a 20 73 6f 20 74 | 68 65 79 20 63 61 6e 20 |./* so t|hey can |
|0002c8c0| 61 64 6f 70 74 20 74 68 | 65 20 6c 6f 63 6b 73 20 |adopt th|e locks |
|0002c8d0| 2a 2f 0a 09 09 09 09 0a | 09 09 09 09 63 68 65 63 |*/......|....chec|
|0002c8e0| 6b 5f 6d 65 6d 6f 72 79 | 28 29 3b 0a 09 0a 09 09 |k_memory|();.....|
|0002c8f0| 09 09 46 6f 72 62 69 64 | 28 29 3b 0a 09 09 09 09 |..Forbid|();.....|
|0002c900| 50 75 74 4d 73 67 28 72 | 65 70 6c 79 2c 20 64 70 |PutMsg(r|eply, dp|
|0002c910| 2d 3e 64 70 5f 4c 69 6e | 6b 29 3b 0a 09 09 09 09 |->dp_Lin|k);.....|
|0002c920| 72 65 74 75 72 6e 3b 0a | 09 09 09 63 61 73 65 20 |return;.|...case |
|0002c930| 41 43 54 49 4f 4e 5f 4c | 4f 43 41 54 45 5f 4f 42 |ACTION_L|OCATE_OB|
|0002c940| 4a 45 43 54 3a 0a 09 09 | 09 09 69 66 20 28 21 73 |JECT:...|..if (!s|
|0002c950| 70 6c 69 74 5f 64 61 74 | 61 28 28 6c 6f 63 6b 20 |plit_dat|a((lock |
|0002c960| 2a 29 28 64 70 2d 3e 64 | 70 5f 41 72 67 31 20 3c |*)(dp->d|p_Arg1 <|
|0002c970| 3c 20 32 29 2c 20 28 62 | 38 20 2a 29 28 64 70 2d |< 2), (b|8 *)(dp-|
|0002c980| 3e 64 70 5f 41 72 67 32 | 20 3c 3c 20 32 29 2c 20 |>dp_Arg2| << 2), |
|0002c990| 26 73 64 29 29 20 7b 0a | 09 09 09 09 09 64 70 2d |&sd)) {.|.....dp-|
|0002c9a0| 3e 64 70 5f 52 65 73 31 | 20 3d 20 30 3b 0a 09 09 |>dp_Res1| = 0;...|
|0002c9b0| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 32 20 3d |...dp->d|p_Res2 =|
|0002c9c0| 20 45 52 52 4f 52 5f 4e | 4f 5f 46 52 45 45 5f 53 | ERROR_N|O_FREE_S|
|0002c9d0| 54 4f 52 45 3b 0a 09 09 | 09 09 09 0a 09 09 09 09 |TORE;...|........|
|0002c9e0| 09 62 72 65 61 6b 3b 0a | 09 09 09 09 7d 0a 09 09 |.break;.|....}...|
|0002c9f0| 09 09 0a 09 09 09 09 69 | 66 20 28 21 66 74 70 5f |.......i|f (!ftp_|
|0002ca00| 73 69 74 65 2d 3e 63 6f | 6e 6e 65 63 74 65 64 29 |site->co|nnected)|
|0002ca10| 20 7b 0a 09 09 09 09 09 | 69 6e 69 74 5f 63 6f 6e | {......|init_con|
|0002ca20| 6e 65 63 74 28 66 74 70 | 5f 73 69 74 65 29 3b 0a |nect(ftp|_site);.|
|0002ca30| 09 09 09 09 09 0a 09 09 | 09 09 09 69 66 20 28 21 |........|...if (!|
|0002ca40| 66 74 70 5f 73 69 74 65 | 2d 3e 63 6f 6e 6e 65 63 |ftp_site|->connec|
|0002ca50| 74 65 64 29 20 7b 0a 09 | 09 09 09 09 09 64 70 2d |ted) {..|.....dp-|
|0002ca60| 3e 64 70 5f 52 65 73 31 | 20 3d 20 30 3b 0a 09 09 |>dp_Res1| = 0;...|
|0002ca70| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 32 20 |....dp->|dp_Res2 |
|0002ca80| 3d 20 45 52 52 4f 52 5f | 4f 42 4a 45 43 54 5f 4e |= ERROR_|OBJECT_N|
|0002ca90| 4f 54 5f 46 4f 55 4e 44 | 3b 0a 09 09 09 09 09 09 |OT_FOUND|;.......|
|0002caa0| 0a 09 09 09 09 09 09 65 | 6e 64 5f 73 70 6c 69 74 |.......e|nd_split|
|0002cab0| 28 26 73 64 29 3b 0a 09 | 09 09 09 09 09 62 72 65 |(&sd);..|.....bre|
|0002cac0| 61 6b 3b 0a 09 09 09 09 | 09 7d 0a 09 09 09 09 7d |ak;.....|.}.....}|
|0002cad0| 0a 09 09 09 09 0a 09 09 | 09 09 69 66 20 28 21 73 |........|..if (!s|
|0002cae0| 64 2e 70 61 74 68 20 7c | 7c 20 73 64 2e 70 61 74 |d.path ||| sd.pat|
|0002caf0| 68 5b 30 5d 20 3d 3d 20 | 30 29 20 7b 0a 09 09 09 |h[0] == |0) {....|
|0002cb00| 09 09 2f 2a 20 74 68 65 | 20 72 6f 6f 74 20 2e 2e |../* the| root ..|
|0002cb10| 2e 20 74 68 69 73 20 69 | 73 20 6f 6b 20 2a 2f 0a |. this i|s ok */.|
|0002cb20| 09 09 09 09 09 69 66 20 | 28 64 70 2d 3e 64 70 5f |.....if |(dp->dp_|
|0002cb30| 41 72 67 33 20 3d 3d 20 | 45 58 43 4c 55 53 49 56 |Arg3 == |EXCLUSIV|
|0002cb40| 45 5f 4c 4f 43 4b 29 20 | 7b 0a 09 09 09 09 09 09 |E_LOCK) |{.......|
|0002cb50| 64 70 2d 3e 64 70 5f 52 | 65 73 31 20 3d 20 30 3b |dp->dp_R|es1 = 0;|
|0002cb60| 0a 09 09 09 09 09 09 2f | 2a 20 63 61 6e 27 74 20 |......./|* can't |
|0002cb70| 65 78 63 6c 75 73 69 76 | 65 20 6c 6f 63 6b 20 72 |exclusiv|e lock r|
|0002cb80| 6f 6f 74 20 2a 2f 0a 09 | 09 09 09 09 09 64 70 2d |oot */..|.....dp-|
|0002cb90| 3e 64 70 5f 52 65 73 32 | 20 3d 20 45 52 52 4f 52 |>dp_Res2| = ERROR|
|0002cba0| 5f 4f 42 4a 45 43 54 5f | 49 4e 5f 55 53 45 3b 0a |_OBJECT_|IN_USE;.|
|0002cbb0| 09 09 09 09 09 09 62 72 | 65 61 6b 3b 0a 09 09 09 |......br|eak;....|
|0002cbc0| 09 09 7d 0a 09 09 09 09 | 09 0a 09 09 09 09 09 6e |..}.....|.......n|
|0002cbd0| 65 77 5f 6c 6f 63 6b 20 | 3d 20 28 6c 6f 63 6b 20 |ew_lock |= (lock |
|0002cbe0| 2a 29 61 6c 6c 6f 63 61 | 74 65 28 73 69 7a 65 6f |*)alloca|te(sizeo|
|0002cbf0| 66 28 2a 6e 65 77 5f 6c | 6f 63 6b 29 20 2b 20 31 |f(*new_l|ock) + 1|
|0002cc00| 2c 20 56 5f 6c 6f 63 6b | 29 3b 0a 09 09 09 09 09 |, V_lock|);......|
|0002cc10| 69 66 20 28 21 6e 65 77 | 5f 6c 6f 63 6b 29 20 7b |if (!new|_lock) {|
|0002cc20| 0a 09 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |.......d|p->dp_Re|
|0002cc30| 73 31 20 3d 20 30 3b 0a | 09 09 09 09 09 09 64 70 |s1 = 0;.|......dp|
|0002cc40| 2d 3e 64 70 5f 52 65 73 | 32 20 3d 20 45 52 52 4f |->dp_Res|2 = ERRO|
|0002cc50| 52 5f 4e 4f 5f 46 52 45 | 45 5f 53 54 4f 52 45 3b |R_NO_FRE|E_STORE;|
|0002cc60| 0a 09 09 09 09 09 09 0a | 09 09 09 09 09 09 62 72 |........|......br|
|0002cc70| 65 61 6b 3b 0a 09 09 09 | 09 09 7d 0a 09 09 09 09 |eak;....|..}.....|
|0002cc80| 09 0a 09 09 09 09 09 65 | 6e 73 75 72 65 28 6e 65 |.......e|nsure(ne|
|0002cc90| 77 5f 6c 6f 63 6b 2c 20 | 56 5f 6c 6f 63 6b 29 3b |w_lock, |V_lock);|
|0002cca0| 0a 09 09 09 09 09 0a 09 | 09 09 09 09 6e 65 77 5f |........|....new_|
|0002ccb0| 6c 6f 63 6b 2d 3e 6e 65 | 78 74 20 3d 20 66 74 70 |lock->ne|xt = ftp|
|0002ccc0| 5f 73 69 74 65 2d 3e 6c | 6f 63 6b 5f 6c 69 73 74 |_site->l|ock_list|
|0002ccd0| 3b 0a 09 09 09 09 09 66 | 74 70 5f 73 69 74 65 2d |;......f|tp_site-|
|0002cce0| 3e 6c 6f 63 6b 5f 6c 69 | 73 74 20 3d 20 6e 65 77 |>lock_li|st = new|
|0002ccf0| 5f 6c 6f 63 6b 3b 0a 09 | 09 09 09 09 0a 09 09 09 |_lock;..|........|
|0002cd00| 09 09 6e 65 77 5f 6c 6f | 63 6b 2d 3e 70 6f 72 74 |..new_lo|ck->port|
|0002cd10| 20 3d 20 6c 6f 63 61 6c | 3b 0a 09 09 09 09 09 6e | = local|;......n|
|0002cd20| 65 77 5f 6c 6f 63 6b 2d | 3e 72 66 73 6c 20 3d 20 |ew_lock-|>rfsl = |
|0002cd30| 30 3b 0a 09 09 09 09 09 | 6e 65 77 5f 6c 6f 63 6b |0;......|new_lock|
|0002cd40| 2d 3e 6c 61 73 74 6b 65 | 79 20 3d 20 30 3b 0a 09 |->lastke|y = 0;..|
|0002cd50| 09 09 09 09 6e 65 77 5f | 6c 6f 63 6b 2d 3e 66 6e |....new_|lock->fn|
|0002cd60| 61 6d 65 5b 30 5d 20 3d | 20 30 3b 0a 09 09 09 09 |ame[0] =| 0;.....|
|0002cd70| 09 0a 09 09 09 09 09 6e | 65 77 5f 6c 6f 63 6b 2d |.......n|ew_lock-|
|0002cd80| 3e 66 6c 2e 66 6c 5f 4c | 69 6e 6b 20 3d 20 30 3b |>fl.fl_L|ink = 0;|
|0002cd90| 0a 09 09 09 09 09 6e 65 | 77 5f 6c 6f 63 6b 2d 3e |......ne|w_lock->|
|0002cda0| 66 6c 2e 66 6c 5f 4b 65 | 79 20 3d 20 30 3b 0a 09 |fl.fl_Ke|y = 0;..|
|0002cdb0| 09 09 09 09 6e 65 77 5f | 6c 6f 63 6b 2d 3e 66 6c |....new_|lock->fl|
|0002cdc0| 2e 66 6c 5f 41 63 63 65 | 73 73 20 3d 20 53 48 41 |.fl_Acce|ss = SHA|
|0002cdd0| 52 45 44 5f 4c 4f 43 4b | 3b 0a 09 09 09 09 09 6e |RED_LOCK|;......n|
|0002cde0| 65 77 5f 6c 6f 63 6b 2d | 3e 66 6c 2e 66 6c 5f 54 |ew_lock-|>fl.fl_T|
|0002cdf0| 61 73 6b 20 3d 20 66 74 | 70 5f 70 6f 72 74 3b 0a |ask = ft|p_port;.|
|0002ce00| 09 09 09 09 09 6e 65 77 | 5f 6c 6f 63 6b 2d 3e 66 |.....new|_lock->f|
|0002ce10| 6c 2e 66 6c 5f 56 6f 6c | 75 6d 65 20 3d 20 28 62 |l.fl_Vol|ume = (b|
|0002ce20| 33 32 29 66 74 70 5f 76 | 6f 6c 75 6d 65 20 3e 3e |32)ftp_v|olume >>|
|0002ce30| 20 32 3b 0a 09 09 09 09 | 09 0a 09 09 09 09 09 64 | 2;.....|.......d|
|0002ce40| 70 2d 3e 64 70 5f 52 65 | 73 31 20 3d 20 28 62 33 |p->dp_Re|s1 = (b3|
|0002ce50| 32 29 6e 65 77 5f 6c 6f | 63 6b 20 3e 3e 20 32 3b |2)new_lo|ck >> 2;|
|0002ce60| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|0002ce70| 32 20 3d 20 30 3b 0a 09 | 09 09 09 7d 20 65 6c 73 |2 = 0;..|...} els|
|0002ce80| 65 20 7b 0a 09 09 09 09 | 09 6e 65 77 5f 6c 6f 63 |e {.....|.new_loc|
|0002ce90| 6b 20 3d 20 28 6c 6f 63 | 6b 20 2a 29 61 6c 6c 6f |k = (loc|k *)allo|
|0002cea0| 63 61 74 65 28 73 69 7a | 65 6f 66 28 2a 6e 65 77 |cate(siz|eof(*new|
|0002ceb0| 5f 6c 6f 63 6b 29 20 2b | 20 73 74 72 6c 65 6e 28 |_lock) +| strlen(|
|0002cec0| 73 64 2e 70 61 74 68 29 | 20 2b 20 31 2c 20 56 5f |sd.path)| + 1, V_|
|0002ced0| 6c 6f 63 6b 29 3b 0a 09 | 09 09 09 09 69 66 20 28 |lock);..|....if (|
|0002cee0| 21 6e 65 77 5f 6c 6f 63 | 6b 29 20 7b 0a 09 09 09 |!new_loc|k) {....|
|0002cef0| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 31 20 3d |...dp->d|p_Res1 =|
|0002cf00| 20 30 3b 0a 09 09 09 09 | 09 09 64 70 2d 3e 64 70 | 0;.....|..dp->dp|
|0002cf10| 5f 52 65 73 32 20 3d 20 | 45 52 52 4f 52 5f 4e 4f |_Res2 = |ERROR_NO|
|0002cf20| 5f 46 52 45 45 5f 53 54 | 4f 52 45 3b 0a 09 09 09 |_FREE_ST|ORE;....|
|0002cf30| 09 09 09 62 72 65 61 6b | 3b 0a 09 09 09 09 09 7d |...break|;......}|
|0002cf40| 0a 09 09 09 09 09 0a 09 | 09 09 09 09 65 6e 73 75 |........|....ensu|
|0002cf50| 72 65 28 6e 65 77 5f 6c | 6f 63 6b 2c 20 56 5f 6c |re(new_l|ock, V_l|
|0002cf60| 6f 63 6b 29 3b 0a 09 09 | 09 09 09 0a 09 09 09 09 |ock);...|........|
|0002cf70| 09 73 74 72 63 70 79 28 | 6e 65 77 5f 6c 6f 63 6b |.strcpy(|new_lock|
|0002cf80| 2d 3e 66 6e 61 6d 65 2c | 20 73 64 2e 70 61 74 68 |->fname,| sd.path|
|0002cf90| 29 3b 0a 0a 09 09 09 09 | 09 6e 65 77 5f 6c 6f 63 |);......|.new_loc|
|0002cfa0| 6b 2d 3e 70 6f 72 74 20 | 3d 20 6c 6f 63 61 6c 3b |k->port |= local;|
|0002cfb0| 0a 09 09 09 09 09 6e 65 | 77 5f 6c 6f 63 6b 2d 3e |......ne|w_lock->|
|0002cfc0| 72 66 73 6c 20 3d 20 30 | 3b 0a 09 09 09 09 09 6e |rfsl = 0|;......n|
|0002cfd0| 65 77 5f 6c 6f 63 6b 2d | 3e 6c 61 73 74 6b 65 79 |ew_lock-|>lastkey|
|0002cfe0| 20 3d 20 30 3b 0a 09 09 | 09 09 09 0a 09 09 09 09 | = 0;...|........|
|0002cff0| 09 6e 65 77 5f 6c 6f 63 | 6b 2d 3e 66 6c 2e 66 6c |.new_loc|k->fl.fl|
|0002d000| 5f 4c 69 6e 6b 20 3d 20 | 30 3b 0a 09 09 09 09 09 |_Link = |0;......|
|0002d010| 6e 65 77 5f 6c 6f 63 6b | 2d 3e 66 6c 2e 66 6c 5f |new_lock|->fl.fl_|
|0002d020| 4b 65 79 20 3d 20 30 3b | 0a 09 09 09 09 09 6e 65 |Key = 0;|......ne|
|0002d030| 77 5f 6c 6f 63 6b 2d 3e | 66 6c 2e 66 6c 5f 41 63 |w_lock->|fl.fl_Ac|
|0002d040| 63 65 73 73 20 3d 20 53 | 48 41 52 45 44 5f 4c 4f |cess = S|HARED_LO|
|0002d050| 43 4b 3b 0a 09 09 09 09 | 09 6e 65 77 5f 6c 6f 63 |CK;.....|.new_loc|
|0002d060| 6b 2d 3e 66 6c 2e 66 6c | 5f 54 61 73 6b 20 3d 20 |k->fl.fl|_Task = |
|0002d070| 66 74 70 5f 70 6f 72 74 | 3b 0a 09 09 09 09 09 6e |ftp_port|;......n|
|0002d080| 65 77 5f 6c 6f 63 6b 2d | 3e 66 6c 2e 66 6c 5f 56 |ew_lock-|>fl.fl_V|
|0002d090| 6f 6c 75 6d 65 20 3d 20 | 28 62 33 32 29 66 74 70 |olume = |(b32)ftp|
|0002d0a0| 5f 76 6f 6c 75 6d 65 20 | 3e 3e 20 32 3b 0a 09 09 |_volume |>> 2;...|
|0002d0b0| 09 09 09 0a 09 09 09 09 | 09 2f 2a 20 73 65 61 72 |........|./* sear|
|0002d0c0| 63 68 20 66 6f 72 20 61 | 20 63 6f 6e 66 6c 69 63 |ch for a| conflic|
|0002d0d0| 74 69 6e 67 20 6c 6f 63 | 6b 20 2a 2f 0a 09 09 09 |ting loc|k */....|
|0002d0e0| 09 09 0a 09 09 09 09 09 | 73 6c 6f 63 6b 20 3d 20 |........|slock = |
|0002d0f0| 66 74 70 5f 73 69 74 65 | 2d 3e 6c 6f 63 6b 5f 6c |ftp_site|->lock_l|
|0002d100| 69 73 74 3b 0a 09 09 09 | 09 09 77 68 69 6c 65 20 |ist;....|..while |
|0002d110| 28 73 6c 6f 63 6b 29 20 | 7b 0a 09 09 09 09 09 09 |(slock) |{.......|
|0002d120| 69 66 20 28 73 74 72 63 | 6d 70 28 73 64 2e 70 61 |if (strc|mp(sd.pa|
|0002d130| 74 68 2c 20 73 6c 6f 63 | 6b 2d 3e 66 6e 61 6d 65 |th, sloc|k->fname|
|0002d140| 29 20 3d 3d 20 30 29 20 | 7b 0a 09 09 09 09 09 09 |) == 0) |{.......|
|0002d150| 09 69 66 20 28 64 70 2d | 3e 64 70 5f 41 72 67 33 |.if (dp-|>dp_Arg3|
|0002d160| 20 3d 3d 20 45 58 43 4c | 55 53 49 56 45 5f 4c 4f | == EXCL|USIVE_LO|
|0002d170| 43 4b 20 7c 7c 20 73 6c | 6f 63 6b 2d 3e 66 6c 2e |CK || sl|ock->fl.|
|0002d180| 66 6c 5f 41 63 63 65 73 | 73 20 3d 3d 20 45 58 43 |fl_Acces|s == EXC|
|0002d190| 4c 55 53 49 56 45 5f 4c | 4f 43 4b 29 20 7b 0a 09 |LUSIVE_L|OCK) {..|
|0002d1a0| 09 09 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |.......d|p->dp_Re|
|0002d1b0| 73 31 20 3d 20 30 3b 0a | 09 09 09 09 09 09 09 09 |s1 = 0;.|........|
|0002d1c0| 64 70 2d 3e 64 70 5f 52 | 65 73 32 20 3d 20 45 52 |dp->dp_R|es2 = ER|
|0002d1d0| 52 4f 52 5f 4f 42 4a 45 | 43 54 5f 49 4e 5f 55 53 |ROR_OBJE|CT_IN_US|
|0002d1e0| 45 3b 0a 09 09 09 09 09 | 09 09 09 0a 09 09 09 09 |E;......|........|
|0002d1f0| 09 09 09 09 64 65 61 6c | 6c 6f 63 61 74 65 28 6e |....deal|locate(n|
|0002d200| 65 77 5f 6c 6f 63 6b 2c | 20 56 5f 6c 6f 63 6b 29 |ew_lock,| V_lock)|
|0002d210| 3b 0a 09 09 09 09 09 09 | 09 09 65 6e 64 5f 73 70 |;.......|..end_sp|
|0002d220| 6c 69 74 28 26 73 64 29 | 3b 0a 09 09 09 09 09 09 |lit(&sd)|;.......|
|0002d230| 09 09 0a 09 09 09 09 09 | 09 09 09 67 6f 74 6f 20 |........|...goto |
|0002d240| 72 65 70 6c 79 5f 6d 73 | 67 3b 0a 09 09 09 09 09 |reply_ms|g;......|
|0002d250| 09 09 7d 0a 09 09 09 09 | 09 09 09 0a 09 09 09 09 |..}.....|........|
|0002d260| 09 09 09 2f 2a 20 6f 6b | 2c 20 74 68 69 73 20 6f |.../* ok|, this o|
|0002d270| 6e 65 20 69 73 20 67 75 | 61 72 61 6e 74 65 65 64 |ne is gu|aranteed|
|0002d280| 20 74 6f 20 77 6f 72 6b | 20 2a 2f 0a 09 09 09 09 | to work| */.....|
|0002d290| 09 09 09 0a 09 09 09 09 | 09 09 09 6e 65 77 5f 6c |........|...new_l|
|0002d2a0| 6f 63 6b 2d 3e 6e 65 78 | 74 20 3d 20 66 74 70 5f |ock->nex|t = ftp_|
|0002d2b0| 73 69 74 65 2d 3e 6c 6f | 63 6b 5f 6c 69 73 74 3b |site->lo|ck_list;|
|0002d2c0| 0a 09 09 09 09 09 09 09 | 66 74 70 5f 73 69 74 65 |........|ftp_site|
|0002d2d0| 2d 3e 6c 6f 63 6b 5f 6c | 69 73 74 20 3d 20 6e 65 |->lock_l|ist = ne|
|0002d2e0| 77 5f 6c 6f 63 6b 3b 0a | 09 09 09 09 09 09 09 0a |w_lock;.|........|
|0002d2f0| 09 09 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |.......d|p->dp_Re|
|0002d300| 73 31 20 3d 20 28 62 33 | 32 29 6e 65 77 5f 6c 6f |s1 = (b3|2)new_lo|
|0002d310| 63 6b 20 3e 3e 20 32 3b | 0a 09 09 09 09 09 09 09 |ck >> 2;|........|
|0002d320| 64 70 2d 3e 64 70 5f 52 | 65 73 32 20 3d 20 30 3b |dp->dp_R|es2 = 0;|
|0002d330| 0a 09 09 09 09 09 09 09 | 0a 09 09 09 09 09 09 09 |........|........|
|0002d340| 65 6e 64 5f 73 70 6c 69 | 74 28 26 73 64 29 3b 0a |end_spli|t(&sd);.|
|0002d350| 09 09 09 09 09 09 09 0a | 09 09 09 09 09 09 09 67 |........|.......g|
|0002d360| 6f 74 6f 20 72 65 70 6c | 79 5f 6d 73 67 3b 0a 09 |oto repl|y_msg;..|
|0002d370| 09 09 09 09 09 7d 0a 09 | 09 09 09 09 09 73 6c 6f |.....}..|.....slo|
|0002d380| 63 6b 20 3d 20 73 6c 6f | 63 6b 2d 3e 6e 65 78 74 |ck = slo|ck->next|
|0002d390| 3b 0a 09 09 09 09 09 7d | 0a 09 09 09 09 09 0a 09 |;......}|........|
|0002d3a0| 09 09 09 09 2f 2a 20 6f | 6b 2c 20 69 74 20 64 6f |..../* o|k, it do|
|0002d3b0| 65 73 6e 27 74 20 63 6f | 6e 66 6c 69 63 74 20 2e |esn't co|nflict .|
|0002d3c0| 2e 2e 20 63 68 65 63 6b | 20 69 66 20 69 74 20 61 |.. check| if it a|
|0002d3d0| 63 74 75 61 6c 6c 79 20 | 65 78 69 73 74 73 20 2a |ctually |exists *|
|0002d3e0| 2f 0a 09 09 09 09 09 0a | 09 09 09 09 09 66 69 20 |/.......|.....fi |
|0002d3f0| 3d 20 67 65 74 5f 69 6e | 66 6f 28 66 74 70 5f 73 |= get_in|fo(ftp_s|
|0002d400| 69 74 65 2c 20 73 64 2e | 70 61 74 68 29 3b 0a 09 |ite, sd.|path);..|
|0002d410| 09 09 09 09 69 66 20 28 | 21 66 69 29 20 7b 0a 09 |....if (|!fi) {..|
|0002d420| 09 09 09 09 09 64 65 61 | 6c 6c 6f 63 61 74 65 28 |.....dea|llocate(|
|0002d430| 6e 65 77 5f 6c 6f 63 6b | 2c 20 56 5f 6c 6f 63 6b |new_lock|, V_lock|
|0002d440| 29 3b 0a 09 09 09 09 09 | 09 65 6e 64 5f 73 70 6c |);......|.end_spl|
|0002d450| 69 74 28 26 73 64 29 3b | 0a 09 09 09 09 09 09 0a |it(&sd);|........|
|0002d460| 09 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|0002d470| 31 20 3d 20 30 3b 0a 09 | 09 09 09 09 09 69 66 20 |1 = 0;..|.....if |
|0002d480| 28 66 74 70 5f 73 69 74 | 65 2d 3e 63 66 69 6c 65 |(ftp_sit|e->cfile|
|0002d490| 29 0a 09 09 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |).......|.dp->dp_|
|0002d4a0| 52 65 73 32 20 3d 20 45 | 52 52 4f 52 5f 4f 42 4a |Res2 = E|RROR_OBJ|
|0002d4b0| 45 43 54 5f 49 4e 5f 55 | 53 45 3b 0a 09 09 09 09 |ECT_IN_U|SE;.....|
|0002d4c0| 09 09 65 6c 73 65 0a 09 | 09 09 09 09 09 09 64 70 |..else..|......dp|
|0002d4d0| 2d 3e 64 70 5f 52 65 73 | 32 20 3d 20 45 52 52 4f |->dp_Res|2 = ERRO|
|0002d4e0| 52 5f 4f 42 4a 45 43 54 | 5f 4e 4f 54 5f 46 4f 55 |R_OBJECT|_NOT_FOU|
|0002d4f0| 4e 44 3b 0a 09 09 09 09 | 09 09 67 6f 74 6f 20 72 |ND;.....|..goto r|
|0002d500| 65 70 6c 79 5f 6d 73 67 | 3b 0a 09 09 09 09 09 7d |eply_msg|;......}|
|0002d510| 0a 09 09 09 09 09 0a 09 | 09 09 09 09 2f 2a 20 77 |........|..../* w|
|0002d520| 65 6c 6c 2c 20 77 65 20 | 66 6f 75 6e 64 20 69 74 |ell, we |found it|
|0002d530| 21 20 2a 2f 0a 09 09 09 | 09 09 0a 09 09 09 09 09 |! */....|........|
|0002d540| 6e 65 77 5f 6c 6f 63 6b | 2d 3e 6e 65 78 74 20 3d |new_lock|->next =|
|0002d550| 20 66 74 70 5f 73 69 74 | 65 2d 3e 6c 6f 63 6b 5f | ftp_sit|e->lock_|
|0002d560| 6c 69 73 74 3b 0a 09 09 | 09 09 09 66 74 70 5f 73 |list;...|...ftp_s|
|0002d570| 69 74 65 2d 3e 6c 6f 63 | 6b 5f 6c 69 73 74 20 3d |ite->loc|k_list =|
|0002d580| 20 6e 65 77 5f 6c 6f 63 | 6b 3b 0a 09 09 09 09 09 | new_loc|k;......|
|0002d590| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|0002d5a0| 31 20 3d 20 28 62 33 32 | 29 6e 65 77 5f 6c 6f 63 |1 = (b32|)new_loc|
|0002d5b0| 6b 20 3e 3e 20 32 3b 0a | 09 09 09 09 09 64 70 2d |k >> 2;.|.....dp-|
|0002d5c0| 3e 64 70 5f 52 65 73 32 | 20 3d 20 30 3b 0a 09 09 |>dp_Res2| = 0;...|
|0002d5d0| 09 09 7d 0a 09 09 09 09 | 0a 09 09 09 09 65 6e 64 |..}.....|.....end|
|0002d5e0| 5f 73 70 6c 69 74 28 26 | 73 64 29 3b 0a 09 09 09 |_split(&|sd);....|
|0002d5f0| 09 62 72 65 61 6b 3b 0a | 09 09 09 63 61 73 65 20 |.break;.|...case |
|0002d600| 41 43 54 49 4f 4e 5f 46 | 52 45 45 5f 4c 4f 43 4b |ACTION_F|REE_LOCK|
|0002d610| 3a 0a 09 09 09 09 73 6c | 6f 63 6b 20 3d 20 28 6c |:.....sl|ock = (l|
|0002d620| 6f 63 6b 20 2a 29 28 64 | 70 2d 3e 64 70 5f 41 72 |ock *)(d|p->dp_Ar|
|0002d630| 67 31 20 3c 3c 20 32 29 | 3b 09 09 09 09 0a 09 09 |g1 << 2)|;.......|
|0002d640| 09 09 0a 09 09 09 09 69 | 66 20 28 21 73 6c 6f 63 |.......i|f (!sloc|
|0002d650| 6b 29 20 7b 0a 09 09 09 | 09 09 64 70 2d 3e 64 70 |k) {....|..dp->dp|
|0002d660| 5f 52 65 73 31 20 3d 20 | 44 4f 53 54 52 55 45 3b |_Res1 = |DOSTRUE;|
|0002d670| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|0002d680| 32 20 3d 20 30 3b 0a 09 | 09 09 09 09 62 72 65 61 |2 = 0;..|....brea|
|0002d690| 6b 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 0a 09 09 |k;.....}|........|
|0002d6a0| 09 09 76 65 72 69 66 79 | 28 73 6c 6f 63 6b 2c 20 |..verify|(slock, |
|0002d6b0| 56 5f 6c 6f 63 6b 29 3b | 0a 09 09 09 09 0a 09 09 |V_lock);|........|
|0002d6c0| 09 09 6c 6f 63 6b 73 20 | 3d 20 26 66 74 70 5f 73 |..locks |= &ftp_s|
|0002d6d0| 69 74 65 2d 3e 6c 6f 63 | 6b 5f 6c 69 73 74 3b 0a |ite->loc|k_list;.|
|0002d6e0| 09 09 09 09 77 68 69 6c | 65 20 28 2a 6c 6f 63 6b |....whil|e (*lock|
|0002d6f0| 73 20 26 26 20 2a 6c 6f | 63 6b 73 20 21 3d 20 73 |s && *lo|cks != s|
|0002d700| 6c 6f 63 6b 29 20 7b 0a | 09 09 09 09 09 6c 6f 63 |lock) {.|.....loc|
|0002d710| 6b 73 20 3d 20 26 28 2a | 6c 6f 63 6b 73 29 2d 3e |ks = &(*|locks)->|
|0002d720| 6e 65 78 74 3b 0a 09 09 | 09 09 7d 0a 09 09 09 09 |next;...|..}.....|
|0002d730| 0a 09 09 09 09 69 66 20 | 28 21 2a 6c 6f 63 6b 73 |.....if |(!*locks|
|0002d740| 29 20 7b 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |) {.....|.dp->dp_|
|0002d750| 52 65 73 31 20 3d 20 44 | 4f 53 46 41 4c 53 45 3b |Res1 = D|OSFALSE;|
|0002d760| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|0002d770| 32 20 3d 20 45 52 52 4f | 52 5f 49 4e 56 41 4c 49 |2 = ERRO|R_INVALI|
|0002d780| 44 5f 4c 4f 43 4b 3b 0a | 09 09 09 09 7d 20 65 6c |D_LOCK;.|....} el|
|0002d790| 73 65 20 7b 0a 09 09 09 | 09 09 2a 6c 6f 63 6b 73 |se {....|..*locks|
|0002d7a0| 20 3d 20 73 6c 6f 63 6b | 2d 3e 6e 65 78 74 3b 0a | = slock|->next;.|
|0002d7b0| 09 09 09 09 09 64 65 61 | 6c 6c 6f 63 61 74 65 28 |.....dea|llocate(|
|0002d7c0| 73 6c 6f 63 6b 2c 20 56 | 5f 6c 6f 63 6b 29 3b 0a |slock, V|_lock);.|
|0002d7d0| 09 09 09 09 09 0a 09 09 | 09 09 09 64 70 2d 3e 64 |........|...dp->d|
|0002d7e0| 70 5f 52 65 73 31 20 3d | 20 44 4f 53 54 52 55 45 |p_Res1 =| DOSTRUE|
|0002d7f0| 3b 0a 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |;......d|p->dp_Re|
|0002d800| 73 32 20 3d 20 30 3b 0a | 09 09 09 09 7d 0a 09 09 |s2 = 0;.|....}...|
|0002d810| 09 09 0a 09 09 09 09 62 | 72 65 61 6b 3b 0a 09 09 |.......b|reak;...|
|0002d820| 09 63 61 73 65 20 41 43 | 54 49 4f 4e 5f 44 45 4c |.case AC|TION_DEL|
|0002d830| 45 54 45 5f 4f 42 4a 45 | 43 54 3a 0a 09 09 09 09 |ETE_OBJE|CT:.....|
|0002d840| 69 66 20 28 21 73 70 6c | 69 74 5f 64 61 74 61 28 |if (!spl|it_data(|
|0002d850| 28 6c 6f 63 6b 20 2a 29 | 28 64 70 2d 3e 64 70 5f |(lock *)|(dp->dp_|
|0002d860| 41 72 67 31 20 3c 3c 20 | 32 29 2c 20 28 62 38 20 |Arg1 << |2), (b8 |
|0002d870| 2a 29 28 64 70 2d 3e 64 | 70 5f 41 72 67 32 20 3c |*)(dp->d|p_Arg2 <|
|0002d880| 3c 20 32 29 2c 20 26 73 | 64 29 29 20 7b 0a 09 09 |< 2), &s|d)) {...|
|0002d890| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 31 20 3d |...dp->d|p_Res1 =|
|0002d8a0| 20 44 4f 53 46 41 4c 53 | 45 3b 0a 09 09 09 09 09 | DOSFALS|E;......|
|0002d8b0| 64 70 2d 3e 64 70 5f 52 | 65 73 32 20 3d 20 45 52 |dp->dp_R|es2 = ER|
|0002d8c0| 52 4f 52 5f 4e 4f 5f 46 | 52 45 45 5f 53 54 4f 52 |ROR_NO_F|REE_STOR|
|0002d8d0| 45 3b 0a 09 09 09 09 09 | 0a 09 09 09 09 09 62 72 |E;......|......br|
|0002d8e0| 65 61 6b 3b 0a 09 09 09 | 09 7d 0a 09 09 09 09 0a |eak;....|.}......|
|0002d8f0| 09 09 09 09 69 66 20 28 | 66 74 70 5f 73 69 74 65 |....if (|ftp_site|
|0002d900| 2d 3e 66 69 6c 65 5f 6c | 69 73 74 29 20 7b 0a 09 |->file_l|ist) {..|
|0002d910| 09 09 09 09 69 66 20 28 | 66 74 70 5f 73 69 74 65 |....if (|ftp_site|
|0002d920| 2d 3e 66 69 6c 65 5f 6c | 69 73 74 2d 3e 63 6c 6f |->file_l|ist->clo|
|0002d930| 73 65 64 29 20 7b 0a 09 | 09 09 09 09 09 63 6c 6f |sed) {..|.....clo|
|0002d940| 73 65 5f 66 69 6c 65 28 | 66 74 70 5f 73 69 74 65 |se_file(|ftp_site|
|0002d950| 2c 20 74 72 75 65 29 3b | 0a 09 09 09 09 09 7d 20 |, true);|......} |
|0002d960| 65 6c 73 65 20 7b 0a 09 | 09 09 09 09 09 64 70 2d |else {..|.....dp-|
|0002d970| 3e 64 70 5f 52 65 73 31 | 20 3d 20 44 4f 53 46 41 |>dp_Res1| = DOSFA|
|0002d980| 4c 53 45 3b 0a 09 09 09 | 09 09 09 64 70 2d 3e 64 |LSE;....|...dp->d|
|0002d990| 70 5f 52 65 73 32 20 3d | 20 45 52 52 4f 52 5f 4f |p_Res2 =| ERROR_O|
|0002d9a0| 42 4a 45 43 54 5f 49 4e | 5f 55 53 45 3b 0a 09 09 |BJECT_IN|_USE;...|
|0002d9b0| 09 09 09 09 0a 09 09 09 | 09 09 09 65 6e 64 5f 73 |........|...end_s|
|0002d9c0| 70 6c 69 74 28 26 73 64 | 29 3b 0a 09 09 09 09 09 |plit(&sd|);......|
|0002d9d0| 09 0a 09 09 09 09 09 09 | 67 6f 74 6f 20 72 65 70 |........|goto rep|
|0002d9e0| 6c 79 5f 6d 73 67 3b 0a | 09 09 09 09 09 7d 0a 09 |ly_msg;.|.....}..|
|0002d9f0| 09 09 09 7d 0a 09 09 09 | 09 0a 09 09 09 09 2f 2a |...}....|....../*|
|0002da00| 20 73 65 61 72 63 68 20 | 66 6f 72 20 61 20 63 6f | search |for a co|
|0002da10| 6e 66 6c 69 63 74 69 6e | 67 20 6c 6f 63 6b 20 2a |nflictin|g lock *|
|0002da20| 2f 0a 09 09 09 09 0a 09 | 09 09 09 73 6c 6f 63 6b |/.......|...slock|
|0002da30| 20 3d 20 66 74 70 5f 73 | 69 74 65 2d 3e 6c 6f 63 | = ftp_s|ite->loc|
|0002da40| 6b 5f 6c 69 73 74 3b 0a | 09 09 09 09 77 68 69 6c |k_list;.|....whil|
|0002da50| 65 20 28 73 6c 6f 63 6b | 29 20 7b 0a 09 09 09 09 |e (slock|) {.....|
|0002da60| 09 69 66 20 28 73 74 72 | 63 6d 70 28 73 64 2e 70 |.if (str|cmp(sd.p|
|0002da70| 61 74 68 2c 20 73 6c 6f | 63 6b 2d 3e 66 6e 61 6d |ath, slo|ck->fnam|
|0002da80| 65 29 20 3d 3d 20 30 29 | 20 7b 0a 09 09 09 09 09 |e) == 0)| {......|
|0002da90| 09 64 70 2d 3e 64 70 5f | 52 65 73 31 20 3d 20 30 |.dp->dp_|Res1 = 0|
|0002daa0| 3b 0a 09 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 |;.......|dp->dp_R|
|0002dab0| 65 73 32 20 3d 20 45 52 | 52 4f 52 5f 4f 42 4a 45 |es2 = ER|ROR_OBJE|
|0002dac0| 43 54 5f 49 4e 5f 55 53 | 45 3b 0a 09 09 09 09 09 |CT_IN_US|E;......|
|0002dad0| 09 0a 09 09 09 09 09 09 | 65 6e 64 5f 73 70 6c 69 |........|end_spli|
|0002dae0| 74 28 26 73 64 29 3b 0a | 09 09 09 09 09 09 0a 09 |t(&sd);.|........|
|0002daf0| 09 09 09 09 09 67 6f 74 | 6f 20 72 65 70 6c 79 5f |.....got|o reply_|
|0002db00| 6d 73 67 3b 0a 09 09 09 | 09 09 7d 0a 09 09 09 09 |msg;....|..}.....|
|0002db10| 09 73 6c 6f 63 6b 20 3d | 20 73 6c 6f 63 6b 2d 3e |.slock =| slock->|
|0002db20| 6e 65 78 74 3b 0a 09 09 | 09 09 7d 0a 09 09 09 09 |next;...|..}.....|
|0002db30| 0a 09 09 09 09 66 69 20 | 3d 20 67 65 74 5f 69 6e |.....fi |= get_in|
|0002db40| 66 6f 28 66 74 70 5f 73 | 69 74 65 2c 20 73 64 2e |fo(ftp_s|ite, sd.|
|0002db50| 70 61 74 68 29 3b 0a 09 | 09 09 09 69 66 20 28 66 |path);..|...if (f|
|0002db60| 69 20 26 26 20 66 69 2d | 3e 66 6c 61 67 73 20 26 |i && fi-|>flags &|
|0002db70| 20 4d 59 46 4c 41 47 5f | 44 49 52 29 20 7b 0a 09 | MYFLAG_|DIR) {..|
|0002db80| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 32 20 |....dp->|dp_Res2 |
|0002db90| 3d 20 64 65 6c 65 74 65 | 5f 64 69 72 65 63 74 6f |= delete|_directo|
|0002dba0| 72 79 28 66 74 70 5f 73 | 69 74 65 2c 20 73 64 2e |ry(ftp_s|ite, sd.|
|0002dbb0| 70 61 74 68 29 3b 0a 09 | 09 09 09 7d 20 65 6c 73 |path);..|...} els|
|0002dbc0| 65 20 7b 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |e {.....|.dp->dp_|
|0002dbd0| 52 65 73 32 20 3d 20 64 | 65 6c 65 74 65 5f 66 69 |Res2 = d|elete_fi|
|0002dbe0| 6c 65 28 66 74 70 5f 73 | 69 74 65 2c 20 73 64 2e |le(ftp_s|ite, sd.|
|0002dbf0| 70 61 74 68 29 3b 0a 09 | 09 09 09 7d 0a 09 09 09 |path);..|...}....|
|0002dc00| 09 0a 09 09 09 09 69 66 | 20 28 64 70 2d 3e 64 70 |......if| (dp->dp|
|0002dc10| 5f 52 65 73 32 29 20 7b | 0a 09 09 09 09 09 64 70 |_Res2) {|......dp|
|0002dc20| 2d 3e 64 70 5f 52 65 73 | 31 20 3d 20 44 4f 53 46 |->dp_Res|1 = DOSF|
|0002dc30| 41 4c 53 45 3b 0a 09 09 | 09 09 7d 20 65 6c 73 65 |ALSE;...|..} else|
|0002dc40| 20 7b 0a 09 09 09 09 09 | 69 66 20 28 66 69 29 20 | {......|if (fi) |
|0002dc50| 66 69 2d 3e 66 6c 61 67 | 73 20 7c 3d 20 4d 59 46 |fi->flag|s |= MYF|
|0002dc60| 4c 41 47 5f 44 45 4c 45 | 54 45 44 3b 0a 09 09 09 |LAG_DELE|TED;....|
|0002dc70| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 31 20 3d 20 |..dp->dp|_Res1 = |
|0002dc80| 44 4f 53 54 52 55 45 3b | 0a 09 09 09 09 7d 0a 09 |DOSTRUE;|.....}..|
|0002dc90| 09 09 09 0a 09 09 09 09 | 65 6e 64 5f 73 70 6c 69 |........|end_spli|
|0002dca0| 74 28 26 73 64 29 3b 0a | 09 09 09 09 0a 09 09 09 |t(&sd);.|........|
|0002dcb0| 09 62 72 65 61 6b 3b 0a | 09 09 09 63 61 73 65 20 |.break;.|...case |
|0002dcc0| 41 43 54 49 4f 4e 5f 52 | 45 4e 41 4d 45 5f 4f 42 |ACTION_R|ENAME_OB|
|0002dcd0| 4a 45 43 54 3a 0a 09 09 | 09 09 69 66 20 28 21 73 |JECT:...|..if (!s|
|0002dce0| 70 6c 69 74 5f 64 61 74 | 61 28 28 6c 6f 63 6b 20 |plit_dat|a((lock |
|0002dcf0| 2a 29 28 64 70 2d 3e 64 | 70 5f 41 72 67 31 20 3c |*)(dp->d|p_Arg1 <|
|0002dd00| 3c 20 32 29 2c 20 28 62 | 38 20 2a 29 28 64 70 2d |< 2), (b|8 *)(dp-|
|0002dd10| 3e 64 70 5f 41 72 67 32 | 20 3c 3c 20 32 29 2c 20 |>dp_Arg2| << 2), |
|0002dd20| 26 73 64 29 29 20 7b 0a | 09 09 09 09 09 64 70 2d |&sd)) {.|.....dp-|
|0002dd30| 3e 64 70 5f 52 65 73 31 | 20 3d 20 44 4f 53 46 41 |>dp_Res1| = DOSFA|
|0002dd40| 4c 53 45 3b 0a 09 09 09 | 09 09 64 70 2d 3e 64 70 |LSE;....|..dp->dp|
|0002dd50| 5f 52 65 73 32 20 3d 20 | 45 52 52 4f 52 5f 4e 4f |_Res2 = |ERROR_NO|
|0002dd60| 5f 46 52 45 45 5f 53 54 | 4f 52 45 3b 0a 09 09 09 |_FREE_ST|ORE;....|
|0002dd70| 09 09 0a 09 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |........|break;..|
|0002dd80| 09 09 09 7d 0a 09 09 09 | 09 0a 09 09 09 09 69 66 |...}....|......if|
|0002dd90| 20 28 21 73 70 6c 69 74 | 5f 64 61 74 61 28 28 6c | (!split|_data((l|
|0002dda0| 6f 63 6b 20 2a 29 28 64 | 70 2d 3e 64 70 5f 41 72 |ock *)(d|p->dp_Ar|
|0002ddb0| 67 33 20 3c 3c 20 32 29 | 2c 20 28 62 38 20 2a 29 |g3 << 2)|, (b8 *)|
|0002ddc0| 28 64 70 2d 3e 64 70 5f | 41 72 67 34 20 3c 3c 20 |(dp->dp_|Arg4 << |
|0002ddd0| 32 29 2c 20 26 73 64 32 | 29 29 20 7b 0a 09 09 09 |2), &sd2|)) {....|
|0002dde0| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 31 20 3d 20 |..dp->dp|_Res1 = |
|0002ddf0| 44 4f 53 46 41 4c 53 45 | 3b 0a 09 09 09 09 09 64 |DOSFALSE|;......d|
|0002de00| 70 2d 3e 64 70 5f 52 65 | 73 32 20 3d 20 45 52 52 |p->dp_Re|s2 = ERR|
|0002de10| 4f 52 5f 4e 4f 5f 46 52 | 45 45 5f 53 54 4f 52 45 |OR_NO_FR|EE_STORE|
|0002de20| 3b 0a 09 09 09 09 09 0a | 09 09 09 09 09 65 6e 64 |;.......|.....end|
|0002de30| 5f 73 70 6c 69 74 28 26 | 73 64 29 3b 0a 09 09 09 |_split(&|sd);....|
|0002de40| 09 09 0a 09 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |........|break;..|
|0002de50| 09 09 09 7d 0a 09 09 09 | 09 0a 09 09 09 09 66 69 |...}....|......fi|
|0002de60| 20 3d 20 67 65 74 5f 69 | 6e 66 6f 28 66 74 70 5f | = get_i|nfo(ftp_|
|0002de70| 73 69 74 65 2c 20 73 64 | 2e 70 61 74 68 29 3b 0a |site, sd|.path);.|
|0002de80| 09 09 09 09 0a 09 09 09 | 09 64 70 2d 3e 64 70 5f |........|.dp->dp_|
|0002de90| 52 65 73 32 20 3d 20 72 | 65 6e 61 6d 65 5f 6f 62 |Res2 = r|ename_ob|
|0002dea0| 6a 65 63 74 28 66 74 70 | 5f 73 69 74 65 2c 20 73 |ject(ftp|_site, s|
|0002deb0| 64 2e 70 61 74 68 2c 20 | 73 64 32 2e 70 61 74 68 |d.path, |sd2.path|
|0002dec0| 29 3b 0a 09 09 09 09 0a | 09 09 09 09 69 66 20 28 |);......|....if (|
|0002ded0| 64 70 2d 3e 64 70 5f 52 | 65 73 32 29 20 7b 0a 09 |dp->dp_R|es2) {..|
|0002dee0| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |....dp->|dp_Res1 |
|0002def0| 3d 20 44 4f 53 46 41 4c | 53 45 3b 0a 09 09 09 09 |= DOSFAL|SE;.....|
|0002df00| 7d 20 65 6c 73 65 20 7b | 0a 09 09 09 09 09 69 66 |} else {|......if|
|0002df10| 20 28 66 69 29 20 66 69 | 2d 3e 66 6c 61 67 73 20 | (fi) fi|->flags |
|0002df20| 7c 3d 20 4d 59 46 4c 41 | 47 5f 44 45 4c 45 54 45 ||= MYFLA|G_DELETE|
|0002df30| 44 3b 0a 09 09 09 09 09 | 66 6c 75 73 68 5f 69 6e |D;......|flush_in|
|0002df40| 66 6f 28 66 74 70 5f 73 | 69 74 65 2c 20 73 64 32 |fo(ftp_s|ite, sd2|
|0002df50| 2e 70 61 74 68 29 3b 0a | 09 09 09 09 09 64 70 2d |.path);.|.....dp-|
|0002df60| 3e 64 70 5f 52 65 73 31 | 20 3d 20 44 4f 53 54 52 |>dp_Res1| = DOSTR|
|0002df70| 55 45 3b 0a 09 09 09 09 | 7d 0a 09 09 09 09 0a 09 |UE;.....|}.......|
|0002df80| 09 09 09 65 6e 64 5f 73 | 70 6c 69 74 28 26 73 64 |...end_s|plit(&sd|
|0002df90| 29 3b 0a 09 09 09 09 65 | 6e 64 5f 73 70 6c 69 74 |);.....e|nd_split|
|0002dfa0| 28 26 73 64 32 29 3b 0a | 09 09 09 09 0a 09 09 09 |(&sd2);.|........|
|0002dfb0| 09 62 72 65 61 6b 3b 0a | 09 09 09 63 61 73 65 20 |.break;.|...case |
|0002dfc0| 41 43 54 49 4f 4e 5f 43 | 4f 50 59 5f 44 49 52 3a |ACTION_C|OPY_DIR:|
|0002dfd0| 0a 09 09 09 09 73 6c 6f | 63 6b 20 3d 20 28 6c 6f |.....slo|ck = (lo|
|0002dfe0| 63 6b 20 2a 29 28 64 70 | 2d 3e 64 70 5f 41 72 67 |ck *)(dp|->dp_Arg|
|0002dff0| 31 20 3c 3c 20 32 29 3b | 0a 09 09 09 09 69 66 20 |1 << 2);|.....if |
|0002e000| 28 21 73 6c 6f 63 6b 29 | 20 7b 0a 09 09 09 09 09 |(!slock)| {......|
|0002e010| 64 70 2d 3e 64 70 5f 52 | 65 73 31 20 3d 20 30 3b |dp->dp_R|es1 = 0;|
|0002e020| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|0002e030| 32 20 3d 20 30 3b 0a 09 | 09 09 09 09 62 72 65 61 |2 = 0;..|....brea|
|0002e040| 6b 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 0a 09 09 |k;.....}|........|
|0002e050| 09 09 76 65 72 69 66 79 | 28 73 6c 6f 63 6b 2c 20 |..verify|(slock, |
|0002e060| 56 5f 6c 6f 63 6b 29 3b | 0a 09 09 09 09 0a 09 09 |V_lock);|........|
|0002e070| 09 09 69 66 20 28 73 6c | 6f 63 6b 2d 3e 66 6c 2e |..if (sl|ock->fl.|
|0002e080| 66 6c 5f 41 63 63 65 73 | 73 20 3d 3d 20 45 58 43 |fl_Acces|s == EXC|
|0002e090| 4c 55 53 49 56 45 5f 4c | 4f 43 4b 29 20 7b 0a 09 |LUSIVE_L|OCK) {..|
|0002e0a0| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |....dp->|dp_Res1 |
|0002e0b0| 3d 20 30 3b 0a 09 09 09 | 09 09 64 70 2d 3e 64 70 |= 0;....|..dp->dp|
|0002e0c0| 5f 52 65 73 32 20 3d 20 | 45 52 52 4f 52 5f 4f 42 |_Res2 = |ERROR_OB|
|0002e0d0| 4a 45 43 54 5f 49 4e 5f | 55 53 45 3b 0a 09 09 09 |JECT_IN_|USE;....|
|0002e0e0| 09 09 62 72 65 61 6b 3b | 0a 09 09 09 09 7d 0a 09 |..break;|.....}..|
|0002e0f0| 09 09 09 0a 09 09 09 09 | 6e 65 77 5f 6c 6f 63 6b |........|new_lock|
|0002e100| 20 3d 20 28 6c 6f 63 6b | 20 2a 29 61 6c 6c 6f 63 | = (lock| *)alloc|
|0002e110| 61 74 65 28 73 69 7a 65 | 6f 66 28 2a 6e 65 77 5f |ate(size|of(*new_|
|0002e120| 6c 6f 63 6b 29 20 2b 20 | 73 74 72 6c 65 6e 28 73 |lock) + |strlen(s|
|0002e130| 6c 6f 63 6b 2d 3e 66 6e | 61 6d 65 29 20 2b 20 31 |lock->fn|ame) + 1|
|0002e140| 2c 20 56 5f 6c 6f 63 6b | 29 3b 0a 09 09 09 09 69 |, V_lock|);.....i|
|0002e150| 66 20 28 21 6e 65 77 5f | 6c 6f 63 6b 29 20 7b 0a |f (!new_|lock) {.|
|0002e160| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 31 |.....dp-|>dp_Res1|
|0002e170| 20 3d 20 30 3b 0a 09 09 | 09 09 09 64 70 2d 3e 64 | = 0;...|...dp->d|
|0002e180| 70 5f 52 65 73 32 20 3d | 20 45 52 52 4f 52 5f 4e |p_Res2 =| ERROR_N|
|0002e190| 4f 5f 46 52 45 45 5f 53 | 54 4f 52 45 3b 0a 09 09 |O_FREE_S|TORE;...|
|0002e1a0| 09 09 09 62 72 65 61 6b | 3b 0a 09 09 09 09 7d 0a |...break|;.....}.|
|0002e1b0| 09 09 09 09 0a 09 09 09 | 09 2a 6e 65 77 5f 6c 6f |........|.*new_lo|
|0002e1c0| 63 6b 20 3d 20 2a 73 6c | 6f 63 6b 3b 0a 09 09 09 |ck = *sl|ock;....|
|0002e1d0| 09 73 74 72 63 70 79 28 | 6e 65 77 5f 6c 6f 63 6b |.strcpy(|new_lock|
|0002e1e0| 2d 3e 66 6e 61 6d 65 2c | 20 73 6c 6f 63 6b 2d 3e |->fname,| slock->|
|0002e1f0| 66 6e 61 6d 65 29 3b 0a | 09 09 09 09 0a 09 09 09 |fname);.|........|
|0002e200| 09 6e 65 77 5f 6c 6f 63 | 6b 2d 3e 6e 65 78 74 20 |.new_loc|k->next |
|0002e210| 3d 20 73 6c 6f 63 6b 2d | 3e 6e 65 78 74 3b 0a 09 |= slock-|>next;..|
|0002e220| 09 09 09 73 6c 6f 63 6b | 2d 3e 6e 65 78 74 20 3d |...slock|->next =|
|0002e230| 20 6e 65 77 5f 6c 6f 63 | 6b 3b 0a 09 09 09 09 0a | new_loc|k;......|
|0002e240| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |....dp->|dp_Res1 |
|0002e250| 3d 20 28 62 33 32 29 6e | 65 77 5f 6c 6f 63 6b 20 |= (b32)n|ew_lock |
|0002e260| 3e 3e 20 32 3b 0a 09 09 | 09 09 64 70 2d 3e 64 70 |>> 2;...|..dp->dp|
|0002e270| 5f 52 65 73 32 20 3d 20 | 30 3b 0a 09 09 09 09 62 |_Res2 = |0;.....b|
|0002e280| 72 65 61 6b 3b 0a 09 09 | 09 63 61 73 65 20 41 43 |reak;...|.case AC|
|0002e290| 54 49 4f 4e 5f 43 52 45 | 41 54 45 5f 44 49 52 3a |TION_CRE|ATE_DIR:|
|0002e2a0| 0a 09 09 09 09 69 66 20 | 28 21 73 70 6c 69 74 5f |.....if |(!split_|
|0002e2b0| 64 61 74 61 28 28 6c 6f | 63 6b 20 2a 29 28 64 70 |data((lo|ck *)(dp|
|0002e2c0| 2d 3e 64 70 5f 41 72 67 | 31 20 3c 3c 20 32 29 2c |->dp_Arg|1 << 2),|
|0002e2d0| 20 28 62 38 20 2a 29 28 | 64 70 2d 3e 64 70 5f 41 | (b8 *)(|dp->dp_A|
|0002e2e0| 72 67 32 20 3c 3c 20 32 | 29 2c 20 26 73 64 29 29 |rg2 << 2|), &sd))|
|0002e2f0| 20 7b 0a 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 | {......|dp->dp_R|
|0002e300| 65 73 31 20 3d 20 30 3b | 0a 09 09 09 09 09 64 70 |es1 = 0;|......dp|
|0002e310| 2d 3e 64 70 5f 52 65 73 | 32 20 3d 20 45 52 52 4f |->dp_Res|2 = ERRO|
|0002e320| 52 5f 4e 4f 5f 46 52 45 | 45 5f 53 54 4f 52 45 3b |R_NO_FRE|E_STORE;|
|0002e330| 0a 09 09 09 09 09 0a 09 | 09 09 09 09 62 72 65 61 |........|....brea|
|0002e340| 6b 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 0a 09 09 |k;.....}|........|
|0002e350| 09 09 69 66 20 28 66 74 | 70 5f 73 69 74 65 2d 3e |..if (ft|p_site->|
|0002e360| 66 69 6c 65 5f 6c 69 73 | 74 29 20 7b 0a 09 09 09 |file_lis|t) {....|
|0002e370| 09 09 69 66 20 28 66 74 | 70 5f 73 69 74 65 2d 3e |..if (ft|p_site->|
|0002e380| 66 69 6c 65 5f 6c 69 73 | 74 2d 3e 63 6c 6f 73 65 |file_lis|t->close|
|0002e390| 64 29 20 7b 0a 09 09 09 | 09 09 09 63 6c 6f 73 65 |d) {....|...close|
|0002e3a0| 5f 66 69 6c 65 28 66 74 | 70 5f 73 69 74 65 2c 20 |_file(ft|p_site, |
|0002e3b0| 74 72 75 65 29 3b 0a 09 | 09 09 09 09 7d 20 65 6c |true);..|....} el|
|0002e3c0| 73 65 20 7b 0a 09 09 09 | 09 09 09 64 70 2d 3e 64 |se {....|...dp->d|
|0002e3d0| 70 5f 52 65 73 31 20 3d | 20 30 3b 0a 09 09 09 09 |p_Res1 =| 0;.....|
|0002e3e0| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 32 20 3d 20 |..dp->dp|_Res2 = |
|0002e3f0| 45 52 52 4f 52 5f 4f 42 | 4a 45 43 54 5f 49 4e 5f |ERROR_OB|JECT_IN_|
|0002e400| 55 53 45 3b 0a 09 09 09 | 09 09 09 0a 09 09 09 09 |USE;....|........|
|0002e410| 09 09 65 6e 64 5f 73 70 | 6c 69 74 28 26 73 64 29 |..end_sp|lit(&sd)|
|0002e420| 3b 0a 09 09 09 09 09 09 | 0a 09 09 09 09 09 09 67 |;.......|.......g|
|0002e430| 6f 74 6f 20 72 65 70 6c | 79 5f 6d 73 67 3b 0a 09 |oto repl|y_msg;..|
|0002e440| 09 09 09 09 7d 0a 09 09 | 09 09 7d 0a 09 09 09 09 |....}...|..}.....|
|0002e450| 0a 09 09 09 09 6e 65 77 | 5f 6c 6f 63 6b 20 3d 20 |.....new|_lock = |
|0002e460| 28 6c 6f 63 6b 20 2a 29 | 61 6c 6c 6f 63 61 74 65 |(lock *)|allocate|
|0002e470| 28 73 69 7a 65 6f 66 28 | 2a 6e 65 77 5f 6c 6f 63 |(sizeof(|*new_loc|
|0002e480| 6b 29 20 2b 20 73 74 72 | 6c 65 6e 28 73 64 2e 70 |k) + str|len(sd.p|
|0002e490| 61 74 68 29 20 2b 20 31 | 2c 20 56 5f 6c 6f 63 6b |ath) + 1|, V_lock|
|0002e4a0| 29 3b 0a 09 09 09 09 69 | 66 20 28 21 6e 65 77 5f |);.....i|f (!new_|
|0002e4b0| 6c 6f 63 6b 29 20 7b 0a | 09 09 09 09 09 64 70 2d |lock) {.|.....dp-|
|0002e4c0| 3e 64 70 5f 52 65 73 31 | 20 3d 20 30 3b 0a 09 09 |>dp_Res1| = 0;...|
|0002e4d0| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 32 20 3d |...dp->d|p_Res2 =|
|0002e4e0| 20 45 52 52 4f 52 5f 4e | 4f 5f 46 52 45 45 5f 53 | ERROR_N|O_FREE_S|
|0002e4f0| 54 4f 52 45 3b 0a 09 09 | 09 09 09 0a 09 09 09 09 |TORE;...|........|
|0002e500| 09 65 6e 64 5f 73 70 6c | 69 74 28 26 73 64 29 3b |.end_spl|it(&sd);|
|0002e510| 0a 09 09 09 09 09 0a 09 | 09 09 09 09 62 72 65 61 |........|....brea|
|0002e520| 6b 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 0a 09 09 |k;.....}|........|
|0002e530| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 32 20 3d 20 |..dp->dp|_Res2 = |
|0002e540| 6d 61 6b 65 5f 64 69 72 | 65 63 74 6f 72 79 28 66 |make_dir|ectory(f|
|0002e550| 74 70 5f 73 69 74 65 2c | 20 73 64 2e 70 61 74 68 |tp_site,| sd.path|
|0002e560| 29 3b 0a 09 09 09 09 66 | 6c 75 73 68 5f 69 6e 66 |);.....f|lush_inf|
|0002e570| 6f 28 66 74 70 5f 73 69 | 74 65 2c 20 73 64 2e 70 |o(ftp_si|te, sd.p|
|0002e580| 61 74 68 29 3b 0a 09 09 | 09 09 0a 09 09 09 09 69 |ath);...|.......i|
|0002e590| 66 20 28 64 70 2d 3e 64 | 70 5f 52 65 73 32 29 20 |f (dp->d|p_Res2) |
|0002e5a0| 7b 0a 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |{......d|p->dp_Re|
|0002e5b0| 73 31 20 3d 20 30 3b 0a | 09 09 09 09 09 0a 09 09 |s1 = 0;.|........|
|0002e5c0| 09 09 09 64 65 61 6c 6c | 6f 63 61 74 65 28 6e 65 |...deall|ocate(ne|
|0002e5d0| 77 5f 6c 6f 63 6b 2c 20 | 56 5f 6c 6f 63 6b 29 3b |w_lock, |V_lock);|
|0002e5e0| 0a 09 09 09 09 7d 20 65 | 6c 73 65 20 7b 0a 09 09 |.....} e|lse {...|
|0002e5f0| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 31 20 3d |...dp->d|p_Res1 =|
|0002e600| 20 28 62 33 32 29 6e 65 | 77 5f 6c 6f 63 6b 20 3e | (b32)ne|w_lock >|
|0002e610| 3e 20 32 3b 0a 09 09 09 | 09 09 0a 09 09 09 09 09 |> 2;....|........|
|0002e620| 65 6e 73 75 72 65 28 6e | 65 77 5f 6c 6f 63 6b 2c |ensure(n|ew_lock,|
|0002e630| 20 56 5f 6c 6f 63 6b 29 | 3b 0a 0a 09 09 09 09 09 | V_lock)|;.......|
|0002e640| 6e 65 77 5f 6c 6f 63 6b | 2d 3e 6e 65 78 74 20 3d |new_lock|->next =|
|0002e650| 20 66 74 70 5f 73 69 74 | 65 2d 3e 6c 6f 63 6b 5f | ftp_sit|e->lock_|
|0002e660| 6c 69 73 74 3b 0a 09 09 | 09 09 09 66 74 70 5f 73 |list;...|...ftp_s|
|0002e670| 69 74 65 2d 3e 6c 6f 63 | 6b 5f 6c 69 73 74 20 3d |ite->loc|k_list =|
|0002e680| 20 6e 65 77 5f 6c 6f 63 | 6b 3b 0a 09 09 09 09 09 | new_loc|k;......|
|0002e690| 0a 09 09 09 09 09 73 74 | 72 63 70 79 28 6e 65 77 |......st|rcpy(new|
|0002e6a0| 5f 6c 6f 63 6b 2d 3e 66 | 6e 61 6d 65 2c 20 73 64 |_lock->f|name, sd|
|0002e6b0| 2e 70 61 74 68 29 3b 0a | 0a 09 09 09 09 09 6e 65 |.path);.|......ne|
|0002e6c0| 77 5f 6c 6f 63 6b 2d 3e | 70 6f 72 74 20 3d 20 6c |w_lock->|port = l|
|0002e6d0| 6f 63 61 6c 3b 0a 09 09 | 09 09 09 6e 65 77 5f 6c |ocal;...|...new_l|
|0002e6e0| 6f 63 6b 2d 3e 72 66 73 | 6c 20 3d 20 30 3b 0a 09 |ock->rfs|l = 0;..|
|0002e6f0| 09 09 09 09 6e 65 77 5f | 6c 6f 63 6b 2d 3e 6c 61 |....new_|lock->la|
|0002e700| 73 74 6b 65 79 20 3d 20 | 30 3b 0a 09 09 09 09 09 |stkey = |0;......|
|0002e710| 0a 09 09 09 09 09 6e 65 | 77 5f 6c 6f 63 6b 2d 3e |......ne|w_lock->|
|0002e720| 66 6c 2e 66 6c 5f 4c 69 | 6e 6b 20 3d 20 30 3b 0a |fl.fl_Li|nk = 0;.|
|0002e730| 09 09 09 09 09 6e 65 77 | 5f 6c 6f 63 6b 2d 3e 66 |.....new|_lock->f|
|0002e740| 6c 2e 66 6c 5f 4b 65 79 | 20 3d 20 30 3b 0a 09 09 |l.fl_Key| = 0;...|
|0002e750| 09 09 09 6e 65 77 5f 6c | 6f 63 6b 2d 3e 66 6c 2e |...new_l|ock->fl.|
|0002e760| 66 6c 5f 41 63 63 65 73 | 73 20 3d 20 53 48 41 52 |fl_Acces|s = SHAR|
|0002e770| 45 44 5f 4c 4f 43 4b 3b | 0a 09 09 09 09 09 6e 65 |ED_LOCK;|......ne|
|0002e780| 77 5f 6c 6f 63 6b 2d 3e | 66 6c 2e 66 6c 5f 54 61 |w_lock->|fl.fl_Ta|
|0002e790| 73 6b 20 3d 20 66 74 70 | 5f 70 6f 72 74 3b 0a 09 |sk = ftp|_port;..|
|0002e7a0| 09 09 09 09 6e 65 77 5f | 6c 6f 63 6b 2d 3e 66 6c |....new_|lock->fl|
|0002e7b0| 2e 66 6c 5f 56 6f 6c 75 | 6d 65 20 3d 20 28 62 33 |.fl_Volu|me = (b3|
|0002e7c0| 32 29 66 74 70 5f 76 6f | 6c 75 6d 65 20 3e 3e 20 |2)ftp_vo|lume >> |
|0002e7d0| 32 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 0a 09 09 |2;.....}|........|
|0002e7e0| 09 09 65 6e 64 5f 73 70 | 6c 69 74 28 26 73 64 29 |..end_sp|lit(&sd)|
|0002e7f0| 3b 0a 09 09 09 09 0a 09 | 09 09 09 62 72 65 61 6b |;.......|...break|
|0002e800| 3b 0a 09 09 09 63 61 73 | 65 20 41 43 54 49 4f 4e |;....cas|e ACTION|
|0002e810| 5f 45 58 41 4d 49 4e 45 | 5f 4f 42 4a 45 43 54 3a |_EXAMINE|_OBJECT:|
|0002e820| 0a 09 09 09 09 73 6c 6f | 63 6b 20 3d 20 28 6c 6f |.....slo|ck = (lo|
|0002e830| 63 6b 20 2a 29 28 64 70 | 2d 3e 64 70 5f 41 72 67 |ck *)(dp|->dp_Arg|
|0002e840| 31 20 3c 3c 20 32 29 3b | 0a 09 09 09 09 66 69 62 |1 << 2);|.....fib|
|0002e850| 20 3d 20 28 73 74 72 75 | 63 74 20 46 69 6c 65 49 | = (stru|ct FileI|
|0002e860| 6e 66 6f 42 6c 6f 63 6b | 20 2a 29 28 64 70 2d 3e |nfoBlock| *)(dp->|
|0002e870| 64 70 5f 41 72 67 32 20 | 3c 3c 20 32 29 3b 0a 09 |dp_Arg2 |<< 2);..|
|0002e880| 09 09 09 0a 09 09 09 09 | 76 65 72 69 66 79 28 73 |........|verify(s|
|0002e890| 6c 6f 63 6b 2c 20 56 5f | 6c 6f 63 6b 29 3b 0a 09 |lock, V_|lock);..|
|0002e8a0| 09 09 09 74 72 75 74 68 | 28 66 69 62 20 21 3d 20 |...truth|(fib != |
|0002e8b0| 6e 69 6c 29 3b 0a 09 09 | 09 09 0a 09 09 09 09 69 |nil);...|.......i|
|0002e8c0| 66 20 28 73 6c 6f 63 6b | 2d 3e 66 6e 61 6d 65 5b |f (slock|->fname[|
|0002e8d0| 30 5d 20 3d 3d 20 30 29 | 20 7b 0a 09 09 09 09 09 |0] == 0)| {......|
|0002e8e0| 2f 2a 20 72 6f 6f 74 20 | 6f 66 20 74 68 69 73 20 |/* root |of this |
|0002e8f0| 73 69 74 65 20 2a 2f 0a | 09 09 09 09 09 66 69 62 |site */.|.....fib|
|0002e900| 2d 3e 66 69 62 5f 44 69 | 73 6b 4b 65 79 20 3d 20 |->fib_Di|skKey = |
|0002e910| 30 3b 0a 09 09 09 09 09 | 66 69 62 2d 3e 66 69 62 |0;......|fib->fib|
|0002e920| 5f 44 69 72 45 6e 74 72 | 79 54 79 70 65 20 3d 20 |_DirEntr|yType = |
|0002e930| 53 54 5f 55 53 45 52 44 | 49 52 3b 0a 09 09 09 09 |ST_USERD|IR;.....|
|0002e940| 09 66 69 62 2d 3e 66 69 | 62 5f 45 6e 74 72 79 54 |.fib->fi|b_EntryT|
|0002e950| 79 70 65 20 3d 20 53 54 | 5f 55 53 45 52 44 49 52 |ype = ST|_USERDIR|
|0002e960| 3b 0a 09 09 09 09 09 0a | 09 09 09 09 09 73 74 72 |;.......|.....str|
|0002e970| 63 70 79 28 26 66 69 62 | 2d 3e 66 69 62 5f 46 69 |cpy(&fib|->fib_Fi|
|0002e980| 6c 65 4e 61 6d 65 5b 31 | 5d 2c 20 66 74 70 5f 73 |leName[1|], ftp_s|
|0002e990| 69 74 65 2d 3e 6e 61 6d | 65 29 3b 0a 09 09 09 09 |ite->nam|e);.....|
|0002e9a0| 09 66 69 62 2d 3e 66 69 | 62 5f 46 69 6c 65 4e 61 |.fib->fi|b_FileNa|
|0002e9b0| 6d 65 5b 30 5d 20 3d 20 | 73 74 72 6c 65 6e 28 66 |me[0] = |strlen(f|
|0002e9c0| 74 70 5f 73 69 74 65 2d | 3e 6e 61 6d 65 29 3b 0a |tp_site-|>name);.|
|0002e9d0| 09 09 09 09 09 0a 09 09 | 09 09 09 66 69 62 2d 3e |........|...fib->|
|0002e9e0| 66 69 62 5f 50 72 6f 74 | 65 63 74 69 6f 6e 20 3d |fib_Prot|ection =|
|0002e9f0| 20 30 78 66 3b 0a 09 09 | 09 09 09 66 69 62 2d 3e | 0xf;...|...fib->|
|0002ea00| 66 69 62 5f 53 69 7a 65 | 20 3d 20 30 3b 0a 09 09 |fib_Size| = 0;...|
|0002ea10| 09 09 09 66 69 62 2d 3e | 66 69 62 5f 4e 75 6d 42 |...fib->|fib_NumB|
|0002ea20| 6c 6f 63 6b 73 20 3d 20 | 30 3b 0a 09 09 09 09 09 |locks = |0;......|
|0002ea30| 66 69 62 2d 3e 66 69 62 | 5f 44 61 74 65 20 3d 20 |fib->fib|_Date = |
|0002ea40| 66 74 70 5f 76 6f 6c 75 | 6d 65 2d 3e 64 6f 6c 5f |ftp_volu|me->dol_|
|0002ea50| 6d 69 73 63 2e 64 6f 6c | 5f 76 6f 6c 75 6d 65 2e |misc.dol|_volume.|
|0002ea60| 64 6f 6c 5f 56 6f 6c 75 | 6d 65 44 61 74 65 3b 0a |dol_Volu|meDate;.|
|0002ea70| 09 09 09 09 09 66 69 62 | 2d 3e 66 69 62 5f 43 6f |.....fib|->fib_Co|
|0002ea80| 6d 6d 65 6e 74 5b 30 5d | 20 3d 20 30 3b 0a 09 09 |mment[0]| = 0;...|
|0002ea90| 09 09 09 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |........|.dp->dp_|
|0002eaa0| 52 65 73 31 20 3d 20 44 | 4f 53 54 52 55 45 3b 0a |Res1 = D|OSTRUE;.|
|0002eab0| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 32 |.....dp-|>dp_Res2|
|0002eac0| 20 3d 20 30 3b 0a 09 09 | 09 09 09 0a 09 09 09 09 | = 0;...|........|
|0002ead0| 09 62 72 65 61 6b 3b 0a | 09 09 09 09 7d 0a 09 09 |.break;.|....}...|
|0002eae0| 09 09 0a 09 09 09 09 73 | 20 3d 20 73 6c 6f 63 6b |.......s| = slock|
|0002eaf0| 2d 3e 66 6e 61 6d 65 20 | 2b 20 73 74 72 6c 65 6e |->fname |+ strlen|
|0002eb00| 28 73 6c 6f 63 6b 2d 3e | 66 6e 61 6d 65 29 20 2d |(slock->|fname) -|
|0002eb10| 20 31 3b 0a 09 09 09 09 | 77 68 69 6c 65 20 28 73 | 1;.....|while (s|
|0002eb20| 20 3e 20 73 6c 6f 63 6b | 2d 3e 66 6e 61 6d 65 20 | > slock|->fname |
|0002eb30| 26 26 20 2a 73 20 21 3d | 20 27 2f 27 29 20 73 2d |&& *s !=| '/') s-|
|0002eb40| 2d 3b 0a 09 09 09 09 0a | 09 09 09 09 69 66 20 28 |-;......|....if (|
|0002eb50| 73 20 3d 3d 20 73 6c 6f | 63 6b 2d 3e 66 6e 61 6d |s == slo|ck->fnam|
|0002eb60| 65 29 20 7b 0a 09 09 09 | 09 09 69 68 20 3d 20 67 |e) {....|..ih = g|
|0002eb70| 65 74 5f 64 69 72 28 66 | 74 70 5f 73 69 74 65 2c |et_dir(f|tp_site,|
|0002eb80| 20 22 22 29 3b 0a 09 09 | 09 09 7d 20 65 6c 73 65 | "");...|..} else|
|0002eb90| 20 7b 0a 09 09 09 09 09 | 2a 73 20 3d 20 30 3b 0a | {......|*s = 0;.|
|0002eba0| 09 09 09 09 09 69 68 20 | 3d 20 67 65 74 5f 64 69 |.....ih |= get_di|
|0002ebb0| 72 28 66 74 70 5f 73 69 | 74 65 2c 20 73 6c 6f 63 |r(ftp_si|te, sloc|
|0002ebc0| 6b 2d 3e 66 6e 61 6d 65 | 29 3b 0a 09 09 09 09 09 |k->fname|);......|
|0002ebd0| 2a 73 2b 2b 20 3d 20 27 | 2f 27 3b 0a 09 09 09 09 |*s++ = '|/';.....|
|0002ebe0| 7d 0a 09 09 09 09 0a 09 | 09 09 09 69 66 20 28 21 |}.......|...if (!|
|0002ebf0| 69 68 29 20 7b 0a 09 09 | 09 09 09 64 70 2d 3e 64 |ih) {...|...dp->d|
|0002ec00| 70 5f 52 65 73 31 20 3d | 20 44 4f 53 46 41 4c 53 |p_Res1 =| DOSFALS|
|0002ec10| 45 3b 0a 09 09 09 09 09 | 69 66 20 28 66 74 70 5f |E;......|if (ftp_|
|0002ec20| 73 69 74 65 2d 3e 63 66 | 69 6c 65 29 0a 09 09 09 |site->cf|ile)....|
|0002ec30| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 32 20 3d |...dp->d|p_Res2 =|
|0002ec40| 20 45 52 52 4f 52 5f 4f | 42 4a 45 43 54 5f 49 4e | ERROR_O|BJECT_IN|
|0002ec50| 5f 55 53 45 3b 0a 09 09 | 09 09 09 65 6c 73 65 0a |_USE;...|...else.|
|0002ec60| 09 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|0002ec70| 32 20 3d 20 45 52 52 4f | 52 5f 4f 42 4a 45 43 54 |2 = ERRO|R_OBJECT|
|0002ec80| 5f 4e 4f 54 5f 46 4f 55 | 4e 44 3b 0a 09 09 09 09 |_NOT_FOU|ND;.....|
|0002ec90| 09 09 2f 2a 20 67 65 6e | 65 72 61 6c 20 22 63 6f |../* gen|eral "co|
|0002eca0| 6e 6e 65 63 74 69 6f 6e | 20 62 75 67 67 65 72 65 |nnection| buggere|
|0002ecb0| 64 22 20 2a 2f 0a 09 09 | 09 09 09 62 72 65 61 6b |d" */...|...break|
|0002ecc0| 3b 0a 09 09 09 09 7d 0a | 09 09 09 09 0a 09 09 09 |;.....}.|........|
|0002ecd0| 09 66 69 20 3d 20 66 69 | 6e 64 5f 69 6e 66 6f 28 |.fi = fi|nd_info(|
|0002ece0| 69 68 2c 20 73 29 3b 0a | 09 09 09 09 69 66 20 28 |ih, s);.|....if (|
|0002ecf0| 21 66 69 29 20 7b 0a 09 | 09 09 09 09 64 70 2d 3e |!fi) {..|....dp->|
|0002ed00| 64 70 5f 52 65 73 31 20 | 3d 20 44 4f 53 46 41 4c |dp_Res1 |= DOSFAL|
|0002ed10| 53 45 3b 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |SE;.....|.dp->dp_|
|0002ed20| 52 65 73 32 20 3d 20 45 | 52 52 4f 52 5f 4f 42 4a |Res2 = E|RROR_OBJ|
|0002ed30| 45 43 54 5f 4e 4f 54 5f | 46 4f 55 4e 44 3b 0a 09 |ECT_NOT_|FOUND;..|
|0002ed40| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 09 09 7d |....brea|k;.....}|
|0002ed50| 0a 09 09 09 09 0a 09 09 | 09 09 69 66 20 28 66 69 |........|..if (fi|
|0002ed60| 2d 3e 66 6c 61 67 73 20 | 26 20 4d 59 46 4c 41 47 |->flags |& MYFLAG|
|0002ed70| 5f 44 49 52 29 20 7b 0a | 09 09 09 09 09 66 69 62 |_DIR) {.|.....fib|
|0002ed80| 2d 3e 66 69 62 5f 44 69 | 72 45 6e 74 72 79 54 79 |->fib_Di|rEntryTy|
|0002ed90| 70 65 20 3d 20 53 54 5f | 55 53 45 52 44 49 52 3b |pe = ST_|USERDIR;|
|0002eda0| 0a 09 09 09 09 7d 20 65 | 6c 73 65 20 7b 0a 09 09 |.....} e|lse {...|
|0002edb0| 09 09 09 66 69 62 2d 3e | 66 69 62 5f 44 69 72 45 |...fib->|fib_DirE|
|0002edc0| 6e 74 72 79 54 79 70 65 | 20 3d 20 53 54 5f 46 49 |ntryType| = ST_FI|
|0002edd0| 4c 45 3b 0a 09 09 09 09 | 7d 0a 09 09 09 09 0a 09 |LE;.....|}.......|
|0002ede0| 09 09 09 66 69 62 2d 3e | 66 69 62 5f 45 6e 74 72 |...fib->|fib_Entr|
|0002edf0| 79 54 79 70 65 20 3d 20 | 66 69 62 2d 3e 66 69 62 |yType = |fib->fib|
|0002ee00| 5f 44 69 72 45 6e 74 72 | 79 54 79 70 65 3b 0a 09 |_DirEntr|yType;..|
|0002ee10| 09 09 09 66 69 62 2d 3e | 66 69 62 5f 44 69 73 6b |...fib->|fib_Disk|
|0002ee20| 4b 65 79 20 3d 20 30 3b | 0a 09 09 09 09 73 6c 6f |Key = 0;|.....slo|
|0002ee30| 63 6b 2d 3e 6c 61 73 74 | 6b 65 79 20 3d 20 30 3b |ck->last|key = 0;|
|0002ee40| 0a 09 09 09 09 66 69 62 | 2d 3e 66 69 62 5f 46 69 |.....fib|->fib_Fi|
|0002ee50| 6c 65 4e 61 6d 65 5b 30 | 5d 20 3d 20 73 74 72 6c |leName[0|] = strl|
|0002ee60| 65 6e 28 66 69 2d 3e 6e | 61 6d 65 29 3b 0a 09 09 |en(fi->n|ame);...|
|0002ee70| 09 09 73 74 72 63 70 79 | 28 26 66 69 62 2d 3e 66 |..strcpy|(&fib->f|
|0002ee80| 69 62 5f 46 69 6c 65 4e | 61 6d 65 5b 31 5d 2c 20 |ib_FileN|ame[1], |
|0002ee90| 66 69 2d 3e 6e 61 6d 65 | 29 3b 0a 09 09 09 09 0a |fi->name|);......|
|0002eea0| 09 09 09 09 66 69 62 2d | 3e 66 69 62 5f 50 72 6f |....fib-|>fib_Pro|
|0002eeb0| 74 65 63 74 69 6f 6e 20 | 3d 20 66 69 2d 3e 66 6c |tection |= fi->fl|
|0002eec0| 61 67 73 20 26 20 30 78 | 66 66 3b 0a 09 09 09 09 |ags & 0x|ff;.....|
|0002eed0| 66 69 62 2d 3e 66 69 62 | 5f 53 69 7a 65 20 3d 20 |fib->fib|_Size = |
|0002eee0| 66 69 2d 3e 73 69 7a 65 | 3b 0a 09 09 09 09 66 69 |fi->size|;.....fi|
|0002eef0| 62 2d 3e 66 69 62 5f 4e | 75 6d 42 6c 6f 63 6b 73 |b->fib_N|umBlocks|
|0002ef00| 20 3d 20 66 69 2d 3e 62 | 6c 6f 63 6b 73 3b 0a 09 | = fi->b|locks;..|
|0002ef10| 09 09 09 66 69 62 2d 3e | 66 69 62 5f 44 61 74 65 |...fib->|fib_Date|
|0002ef20| 20 3d 20 66 69 2d 3e 6d | 6f 64 69 66 69 65 64 3b | = fi->m|odified;|
|0002ef30| 0a 09 09 09 09 66 69 62 | 2d 3e 66 69 62 5f 43 6f |.....fib|->fib_Co|
|0002ef40| 6d 6d 65 6e 74 5b 30 5d | 20 3d 20 30 3b 0a 09 09 |mment[0]| = 0;...|
|0002ef50| 09 09 0a 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |.......d|p->dp_Re|
|0002ef60| 73 31 20 3d 20 44 4f 53 | 54 52 55 45 3b 0a 09 09 |s1 = DOS|TRUE;...|
|0002ef70| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 32 20 3d 20 |..dp->dp|_Res2 = |
|0002ef80| 30 3b 0a 09 09 09 09 62 | 72 65 61 6b 3b 0a 09 09 |0;.....b|reak;...|
|0002ef90| 09 63 61 73 65 20 41 43 | 54 49 4f 4e 5f 45 58 41 |.case AC|TION_EXA|
|0002efa0| 4d 49 4e 45 5f 4e 45 58 | 54 3a 0a 09 09 09 09 73 |MINE_NEX|T:.....s|
|0002efb0| 6c 6f 63 6b 20 3d 20 28 | 6c 6f 63 6b 20 2a 29 28 |lock = (|lock *)(|
|0002efc0| 64 70 2d 3e 64 70 5f 41 | 72 67 31 20 3c 3c 20 32 |dp->dp_A|rg1 << 2|
|0002efd0| 29 3b 0a 09 09 09 09 66 | 69 62 20 3d 20 28 73 74 |);.....f|ib = (st|
|0002efe0| 72 75 63 74 20 46 69 6c | 65 49 6e 66 6f 42 6c 6f |ruct Fil|eInfoBlo|
|0002eff0| 63 6b 20 2a 29 28 64 70 | 2d 3e 64 70 5f 41 72 67 |ck *)(dp|->dp_Arg|
|0002f000| 32 20 3c 3c 20 32 29 3b | 0a 09 09 09 09 0a 09 09 |2 << 2);|........|
|0002f010| 09 09 76 65 72 69 66 79 | 28 73 6c 6f 63 6b 2c 20 |..verify|(slock, |
|0002f020| 56 5f 6c 6f 63 6b 29 3b | 0a 09 09 09 09 74 72 75 |V_lock);|.....tru|
|0002f030| 74 68 28 66 69 62 20 21 | 3d 20 6e 69 6c 29 3b 0a |th(fib !|= nil);.|
|0002f040| 09 09 09 09 0a 09 09 09 | 09 69 68 20 3d 20 67 65 |........|.ih = ge|
|0002f050| 74 5f 64 69 72 28 66 74 | 70 5f 73 69 74 65 2c 20 |t_dir(ft|p_site, |
|0002f060| 73 6c 6f 63 6b 2d 3e 66 | 6e 61 6d 65 29 3b 0a 09 |slock->f|name);..|
|0002f070| 09 09 09 69 66 20 28 21 | 69 68 29 20 7b 0a 09 09 |...if (!|ih) {...|
|0002f080| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 31 20 3d |...dp->d|p_Res1 =|
|0002f090| 20 44 4f 53 46 41 4c 53 | 45 3b 0a 09 09 09 09 09 | DOSFALS|E;......|
|0002f0a0| 69 66 20 28 66 74 70 5f | 73 69 74 65 2d 3e 63 66 |if (ftp_|site->cf|
|0002f0b0| 69 6c 65 29 0a 09 09 09 | 09 09 09 64 70 2d 3e 64 |ile)....|...dp->d|
|0002f0c0| 70 5f 52 65 73 32 20 3d | 20 45 52 52 4f 52 5f 4f |p_Res2 =| ERROR_O|
|0002f0d0| 42 4a 45 43 54 5f 49 4e | 5f 55 53 45 3b 0a 09 09 |BJECT_IN|_USE;...|
|0002f0e0| 09 09 09 65 6c 73 65 0a | 09 09 09 09 09 09 64 70 |...else.|......dp|
|0002f0f0| 2d 3e 64 70 5f 52 65 73 | 32 20 3d 20 45 52 52 4f |->dp_Res|2 = ERRO|
|0002f100| 52 5f 4f 42 4a 45 43 54 | 5f 4e 4f 54 5f 46 4f 55 |R_OBJECT|_NOT_FOU|
|0002f110| 4e 44 3b 0a 09 09 09 09 | 09 62 72 65 61 6b 3b 0a |ND;.....|.break;.|
|0002f120| 09 09 09 09 7d 0a 09 09 | 09 09 0a 09 09 09 09 2f |....}...|......./|
|0002f130| 2f 20 6e 20 3d 20 66 69 | 62 2d 3e 66 69 62 5f 44 |/ n = fi|b->fib_D|
|0002f140| 69 73 6b 4b 65 79 3b 0a | 09 09 09 09 6e 20 3d 20 |iskKey;.|....n = |
|0002f150| 73 6c 6f 63 6b 2d 3e 6c | 61 73 74 6b 65 79 3b 0a |slock->l|astkey;.|
|0002f160| 09 09 09 09 0a 09 09 09 | 09 73 6c 6f 63 6b 2d 3e |........|.slock->|
|0002f170| 6c 61 73 74 6b 65 79 2b | 2b 3b 0a 09 09 09 09 0a |lastkey+|+;......|
|0002f180| 09 09 09 09 66 69 20 3d | 20 69 68 2d 3e 69 6e 66 |....fi =| ih->inf|
|0002f190| 6f 73 3b 0a 09 09 09 09 | 77 68 69 6c 65 20 28 66 |os;.....|while (f|
|0002f1a0| 69 20 26 26 20 6e 29 20 | 7b 0a 09 09 09 09 09 66 |i && n) |{......f|
|0002f1b0| 69 20 3d 20 66 69 2d 3e | 6e 65 78 74 3b 0a 09 09 |i = fi->|next;...|
|0002f1c0| 09 09 09 6e 2d 2d 3b 0a | 09 09 09 09 7d 0a 09 09 |...n--;.|....}...|
|0002f1d0| 09 09 0a 09 09 09 09 77 | 68 69 6c 65 20 28 66 69 |.......w|hile (fi|
|0002f1e0| 20 26 26 20 66 69 2d 3e | 66 6c 61 67 73 20 26 20 | && fi->|flags & |
|0002f1f0| 4d 59 46 4c 41 47 5f 44 | 45 4c 45 54 45 44 29 20 |MYFLAG_D|ELETED) |
|0002f200| 7b 0a 09 09 09 09 09 66 | 69 20 3d 20 66 69 2d 3e |{......f|i = fi->|
|0002f210| 6e 65 78 74 3b 0a 09 09 | 09 09 09 73 6c 6f 63 6b |next;...|...slock|
|0002f220| 2d 3e 6c 61 73 74 6b 65 | 79 2b 2b 3b 0a 09 09 09 |->lastke|y++;....|
|0002f230| 09 7d 0a 09 09 09 09 0a | 09 09 09 09 66 69 62 2d |.}......|....fib-|
|0002f240| 3e 66 69 62 5f 44 69 73 | 6b 4b 65 79 20 3d 20 73 |>fib_Dis|kKey = s|
|0002f250| 6c 6f 63 6b 2d 3e 6c 61 | 73 74 6b 65 79 3b 0a 0a |lock->la|stkey;..|
|0002f260| 09 09 09 09 69 66 20 28 | 21 66 69 29 20 7b 0a 09 |....if (|!fi) {..|
|0002f270| 09 09 09 09 73 6c 6f 63 | 6b 2d 3e 6c 61 73 74 6b |....sloc|k->lastk|
|0002f280| 65 79 20 3d 20 30 3b 0a | 09 09 09 09 09 66 69 62 |ey = 0;.|.....fib|
|0002f290| 2d 3e 66 69 62 5f 44 69 | 73 6b 4b 65 79 20 3d 20 |->fib_Di|skKey = |
|0002f2a0| 30 3b 0a 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 |0;......|dp->dp_R|
|0002f2b0| 65 73 31 20 3d 20 44 4f | 53 46 41 4c 53 45 3b 0a |es1 = DO|SFALSE;.|
|0002f2c0| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 32 |.....dp-|>dp_Res2|
|0002f2d0| 20 3d 20 45 52 52 4f 52 | 5f 4e 4f 5f 4d 4f 52 45 | = ERROR|_NO_MORE|
|0002f2e0| 5f 45 4e 54 52 49 45 53 | 3b 0a 09 09 09 09 09 62 |_ENTRIES|;......b|
|0002f2f0| 72 65 61 6b 3b 0a 09 09 | 09 09 7d 0a 09 09 09 09 |reak;...|..}.....|
|0002f300| 0a 09 09 09 09 69 66 20 | 28 66 69 2d 3e 66 6c 61 |.....if |(fi->fla|
|0002f310| 67 73 20 26 20 4d 59 46 | 4c 41 47 5f 44 49 52 29 |gs & MYF|LAG_DIR)|
|0002f320| 20 7b 0a 09 09 09 09 09 | 66 69 62 2d 3e 66 69 62 | {......|fib->fib|
|0002f330| 5f 44 69 72 45 6e 74 72 | 79 54 79 70 65 20 3d 20 |_DirEntr|yType = |
|0002f340| 53 54 5f 55 53 45 52 44 | 49 52 3b 0a 09 09 09 09 |ST_USERD|IR;.....|
|0002f350| 7d 20 65 6c 73 65 20 7b | 0a 09 09 09 09 09 66 69 |} else {|......fi|
|0002f360| 62 2d 3e 66 69 62 5f 44 | 69 72 45 6e 74 72 79 54 |b->fib_D|irEntryT|
|0002f370| 79 70 65 20 3d 20 53 54 | 5f 46 49 4c 45 3b 0a 09 |ype = ST|_FILE;..|
|0002f380| 09 09 09 7d 0a 09 09 09 | 09 0a 09 09 09 09 66 69 |...}....|......fi|
|0002f390| 62 2d 3e 66 69 62 5f 45 | 6e 74 72 79 54 79 70 65 |b->fib_E|ntryType|
|0002f3a0| 20 3d 20 66 69 62 2d 3e | 66 69 62 5f 44 69 72 45 | = fib->|fib_DirE|
|0002f3b0| 6e 74 72 79 54 79 70 65 | 3b 0a 09 09 09 09 66 69 |ntryType|;.....fi|
|0002f3c0| 62 2d 3e 66 69 62 5f 46 | 69 6c 65 4e 61 6d 65 5b |b->fib_F|ileName[|
|0002f3d0| 30 5d 20 3d 20 73 74 72 | 6c 65 6e 28 66 69 2d 3e |0] = str|len(fi->|
|0002f3e0| 6e 61 6d 65 29 3b 0a 09 | 09 09 09 73 74 72 63 70 |name);..|...strcp|
|0002f3f0| 79 28 26 66 69 62 2d 3e | 66 69 62 5f 46 69 6c 65 |y(&fib->|fib_File|
|0002f400| 4e 61 6d 65 5b 31 5d 2c | 20 66 69 2d 3e 6e 61 6d |Name[1],| fi->nam|
|0002f410| 65 29 3b 0a 09 09 09 09 | 0a 09 09 09 09 66 69 62 |e);.....|.....fib|
|0002f420| 2d 3e 66 69 62 5f 50 72 | 6f 74 65 63 74 69 6f 6e |->fib_Pr|otection|
|0002f430| 20 3d 20 66 69 2d 3e 66 | 6c 61 67 73 20 26 20 30 | = fi->f|lags & 0|
|0002f440| 78 66 66 3b 0a 09 09 09 | 09 66 69 62 2d 3e 66 69 |xff;....|.fib->fi|
|0002f450| 62 5f 53 69 7a 65 20 3d | 20 66 69 2d 3e 73 69 7a |b_Size =| fi->siz|
|0002f460| 65 3b 0a 09 09 09 09 66 | 69 62 2d 3e 66 69 62 5f |e;.....f|ib->fib_|
|0002f470| 4e 75 6d 42 6c 6f 63 6b | 73 20 3d 20 66 69 2d 3e |NumBlock|s = fi->|
|0002f480| 62 6c 6f 63 6b 73 3b 0a | 09 09 09 09 66 69 62 2d |blocks;.|....fib-|
|0002f490| 3e 66 69 62 5f 44 61 74 | 65 20 3d 20 66 69 2d 3e |>fib_Dat|e = fi->|
|0002f4a0| 6d 6f 64 69 66 69 65 64 | 3b 0a 09 09 09 09 66 69 |modified|;.....fi|
|0002f4b0| 62 2d 3e 66 69 62 5f 43 | 6f 6d 6d 65 6e 74 5b 30 |b->fib_C|omment[0|
|0002f4c0| 5d 20 3d 20 30 3b 0a 09 | 09 09 09 0a 09 09 09 09 |] = 0;..|........|
|0002f4d0| 64 70 2d 3e 64 70 5f 52 | 65 73 31 20 3d 20 44 4f |dp->dp_R|es1 = DO|
|0002f4e0| 53 54 52 55 45 3b 0a 09 | 09 09 09 64 70 2d 3e 64 |STRUE;..|...dp->d|
|0002f4f0| 70 5f 52 65 73 32 20 3d | 20 30 3b 0a 09 09 09 09 |p_Res2 =| 0;.....|
|0002f500| 0a 09 09 09 09 62 72 65 | 61 6b 3b 0a 09 09 09 63 |.....bre|ak;....c|
|0002f510| 61 73 65 20 41 43 54 49 | 4f 4e 5f 50 41 52 45 4e |ase ACTI|ON_PAREN|
|0002f520| 54 3a 0a 09 09 09 09 73 | 6c 6f 63 6b 20 3d 20 28 |T:.....s|lock = (|
|0002f530| 6c 6f 63 6b 20 2a 29 28 | 64 70 2d 3e 64 70 5f 41 |lock *)(|dp->dp_A|
|0002f540| 72 67 31 20 3c 3c 20 32 | 29 3b 0a 09 09 09 09 69 |rg1 << 2|);.....i|
|0002f550| 66 20 28 21 73 6c 6f 63 | 6b 29 20 7b 0a 09 09 09 |f (!sloc|k) {....|
|0002f560| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 31 20 3d 20 |..dp->dp|_Res1 = |
|0002f570| 30 3b 0a 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 |0;......|dp->dp_R|
|0002f580| 65 73 32 20 3d 20 30 3b | 0a 09 09 09 09 09 62 72 |es2 = 0;|......br|
|0002f590| 65 61 6b 3b 0a 09 09 09 | 09 7d 0a 09 09 09 09 0a |eak;....|.}......|
|0002f5a0| 09 09 09 09 69 66 20 28 | 73 6c 6f 63 6b 2d 3e 66 |....if (|slock->f|
|0002f5b0| 6e 61 6d 65 5b 30 5d 20 | 3d 3d 20 30 29 20 7b 0a |name[0] |== 0) {.|
|0002f5c0| 09 09 09 09 09 2f 2a 20 | 6e 65 65 64 20 72 6f 6f |...../* |need roo|
|0002f5d0| 74 20 6f 66 20 46 54 50 | 3a 20 28 74 68 65 20 73 |t of FTP|: (the s|
|0002f5e0| 6c 69 6d 79 20 77 61 79 | 29 20 2a 2f 0a 09 09 09 |limy way|) */....|
|0002f5f0| 09 09 64 70 2d 3e 64 70 | 5f 50 6f 72 74 20 3d 20 |..dp->dp|_Port = |
|0002f600| 66 74 70 5f 73 69 74 65 | 2d 3e 73 79 6e 63 3b 0a |ftp_site|->sync;.|
|0002f610| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 54 79 70 65 |.....dp-|>dp_Type|
|0002f620| 20 3d 20 41 43 54 49 4f | 4e 5f 4c 4f 43 41 54 45 | = ACTIO|N_LOCATE|
|0002f630| 5f 4f 42 4a 45 43 54 3b | 0a 09 09 09 09 09 0a 09 |_OBJECT;|........|
|0002f640| 09 09 09 09 6f 31 20 3d | 20 64 70 2d 3e 64 70 5f |....o1 =| dp->dp_|
|0002f650| 41 72 67 31 3b 0a 09 09 | 09 09 09 6f 32 20 3d 20 |Arg1;...|...o2 = |
|0002f660| 64 70 2d 3e 64 70 5f 41 | 72 67 32 3b 0a 09 09 09 |dp->dp_A|rg2;....|
|0002f670| 09 09 6f 33 20 3d 20 64 | 70 2d 3e 64 70 5f 41 72 |..o3 = d|p->dp_Ar|
|0002f680| 67 33 3b 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |g3;.....|.dp->dp_|
|0002f690| 41 72 67 31 20 3d 20 30 | 3b 0a 09 09 09 09 09 64 |Arg1 = 0|;......d|
|0002f6a0| 70 2d 3e 64 70 5f 41 72 | 67 32 20 3d 20 28 62 33 |p->dp_Ar|g2 = (b3|
|0002f6b0| 32 29 28 26 28 22 5c 30 | 5c 30 5c 30 5c 30 22 5b |2)(&("\0|\0\0\0"[|
|0002f6c0| 33 5d 29 29 20 3e 3e 20 | 32 3b 0a 09 09 09 09 09 |3])) >> |2;......|
|0002f6d0| 64 70 2d 3e 64 70 5f 41 | 72 67 33 20 3d 20 53 48 |dp->dp_A|rg3 = SH|
|0002f6e0| 41 52 45 44 5f 4c 4f 43 | 4b 3b 0a 09 09 09 09 09 |ARED_LOC|K;......|
|0002f6f0| 0a 09 09 09 09 09 50 75 | 74 4d 73 67 28 6c 6f 63 |......Pu|tMsg(loc|
|0002f700| 61 6c 5f 70 6f 72 74 2c | 20 64 70 2d 3e 64 70 5f |al_port,| dp->dp_|
|0002f710| 4c 69 6e 6b 29 3b 0a 09 | 09 09 09 09 57 61 69 74 |Link);..|....Wait|
|0002f720| 50 6f 72 74 28 66 74 70 | 5f 73 69 74 65 2d 3e 73 |Port(ftp|_site->s|
|0002f730| 79 6e 63 29 3b 20 47 65 | 74 4d 73 67 28 66 74 70 |ync); Ge|tMsg(ftp|
|0002f740| 5f 73 69 74 65 2d 3e 73 | 79 6e 63 29 3b 0a 09 09 |_site->s|ync);...|
|0002f750| 09 09 09 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |........|.dp->dp_|
|0002f760| 41 72 67 31 20 3d 20 6f | 31 3b 0a 09 09 09 09 09 |Arg1 = o|1;......|
|0002f770| 64 70 2d 3e 64 70 5f 41 | 72 67 32 20 3d 20 6f 32 |dp->dp_A|rg2 = o2|
|0002f780| 3b 0a 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 41 72 |;......d|p->dp_Ar|
|0002f790| 67 33 20 3d 20 6f 33 3b | 0a 09 09 09 09 09 64 70 |g3 = o3;|......dp|
|0002f7a0| 2d 3e 64 70 5f 54 79 70 | 65 20 3d 20 41 43 54 49 |->dp_Typ|e = ACTI|
|0002f7b0| 4f 4e 5f 50 41 52 45 4e | 54 3b 0a 09 09 09 09 09 |ON_PAREN|T;......|
|0002f7c0| 62 72 65 61 6b 3b 0a 09 | 09 09 09 7d 0a 09 09 09 |break;..|...}....|
|0002f7d0| 09 0a 09 09 09 09 73 20 | 3d 20 73 6c 6f 63 6b 2d |......s |= slock-|
|0002f7e0| 3e 66 6e 61 6d 65 20 2b | 20 73 74 72 6c 65 6e 28 |>fname +| strlen(|
|0002f7f0| 73 6c 6f 63 6b 2d 3e 66 | 6e 61 6d 65 29 20 2d 20 |slock->f|name) - |
|0002f800| 31 3b 0a 09 09 09 09 77 | 68 69 6c 65 20 28 73 20 |1;.....w|hile (s |
|0002f810| 3e 20 73 6c 6f 63 6b 2d | 3e 66 6e 61 6d 65 20 26 |> slock-|>fname &|
|0002f820| 26 20 2a 73 20 21 3d 20 | 27 2f 27 29 20 73 2d 2d |& *s != |'/') s--|
|0002f830| 3b 0a 09 09 09 09 0a 09 | 09 09 09 69 66 20 28 73 |;.......|...if (s|
|0002f840| 20 3d 3d 20 73 6c 6f 63 | 6b 2d 3e 66 6e 61 6d 65 | == sloc|k->fname|
|0002f850| 29 20 7b 0a 09 09 09 09 | 09 6e 65 77 5f 6c 6f 63 |) {.....|.new_loc|
|0002f860| 6b 20 3d 20 28 6c 6f 63 | 6b 20 2a 29 61 6c 6c 6f |k = (loc|k *)allo|
|0002f870| 63 61 74 65 28 73 69 7a | 65 6f 66 28 2a 6e 65 77 |cate(siz|eof(*new|
|0002f880| 5f 6c 6f 63 6b 29 20 2b | 20 31 2c 20 56 5f 6c 6f |_lock) +| 1, V_lo|
|0002f890| 63 6b 29 3b 0a 09 09 09 | 09 09 69 66 20 28 21 6e |ck);....|..if (!n|
|0002f8a0| 65 77 5f 6c 6f 63 6b 29 | 20 7b 0a 09 09 09 09 09 |ew_lock)| {......|
|0002f8b0| 09 64 70 2d 3e 64 70 5f | 52 65 73 31 20 3d 20 30 |.dp->dp_|Res1 = 0|
|0002f8c0| 3b 0a 09 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 |;.......|dp->dp_R|
|0002f8d0| 65 73 32 20 3d 20 45 52 | 52 4f 52 5f 4e 4f 5f 46 |es2 = ER|ROR_NO_F|
|0002f8e0| 52 45 45 5f 53 54 4f 52 | 45 3b 0a 09 09 09 09 09 |REE_STOR|E;......|
|0002f8f0| 09 0a 09 09 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |........|break;..|
|0002f900| 09 09 09 09 7d 0a 09 09 | 09 09 09 0a 09 09 09 09 |....}...|........|
|0002f910| 09 65 6e 73 75 72 65 28 | 6e 65 77 5f 6c 6f 63 6b |.ensure(|new_lock|
|0002f920| 2c 20 56 5f 6c 6f 63 6b | 29 3b 0a 09 09 09 09 09 |, V_lock|);......|
|0002f930| 0a 09 09 09 09 09 6e 65 | 77 5f 6c 6f 63 6b 2d 3e |......ne|w_lock->|
|0002f940| 6e 65 78 74 20 3d 20 66 | 74 70 5f 73 69 74 65 2d |next = f|tp_site-|
|0002f950| 3e 6c 6f 63 6b 5f 6c 69 | 73 74 3b 0a 09 09 09 09 |>lock_li|st;.....|
|0002f960| 09 66 74 70 5f 73 69 74 | 65 2d 3e 6c 6f 63 6b 5f |.ftp_sit|e->lock_|
|0002f970| 6c 69 73 74 20 3d 20 6e | 65 77 5f 6c 6f 63 6b 3b |list = n|ew_lock;|
|0002f980| 0a 09 09 09 09 09 0a 09 | 09 09 09 09 6e 65 77 5f |........|....new_|
|0002f990| 6c 6f 63 6b 2d 3e 70 6f | 72 74 20 3d 20 6c 6f 63 |lock->po|rt = loc|
|0002f9a0| 61 6c 3b 0a 09 09 09 09 | 09 6e 65 77 5f 6c 6f 63 |al;.....|.new_loc|
|0002f9b0| 6b 2d 3e 72 66 73 6c 20 | 3d 20 30 3b 0a 09 09 09 |k->rfsl |= 0;....|
|0002f9c0| 09 09 6e 65 77 5f 6c 6f | 63 6b 2d 3e 66 6e 61 6d |..new_lo|ck->fnam|
|0002f9d0| 65 5b 30 5d 20 3d 20 30 | 3b 0a 09 09 09 09 09 0a |e[0] = 0|;.......|
|0002f9e0| 09 09 09 09 09 6e 65 77 | 5f 6c 6f 63 6b 2d 3e 66 |.....new|_lock->f|
|0002f9f0| 6c 2e 66 6c 5f 4c 69 6e | 6b 20 3d 20 30 3b 0a 09 |l.fl_Lin|k = 0;..|
|0002fa00| 09 09 09 09 6e 65 77 5f | 6c 6f 63 6b 2d 3e 66 6c |....new_|lock->fl|
|0002fa10| 2e 66 6c 5f 4b 65 79 20 | 3d 20 30 3b 0a 09 09 09 |.fl_Key |= 0;....|
|0002fa20| 09 09 6e 65 77 5f 6c 6f | 63 6b 2d 3e 66 6c 2e 66 |..new_lo|ck->fl.f|
|0002fa30| 6c 5f 41 63 63 65 73 73 | 20 3d 20 53 48 41 52 45 |l_Access| = SHARE|
|0002fa40| 44 5f 4c 4f 43 4b 3b 0a | 09 09 09 09 09 6e 65 77 |D_LOCK;.|.....new|
|0002fa50| 5f 6c 6f 63 6b 2d 3e 66 | 6c 2e 66 6c 5f 54 61 73 |_lock->f|l.fl_Tas|
|0002fa60| 6b 20 3d 20 66 74 70 5f | 70 6f 72 74 3b 0a 09 09 |k = ftp_|port;...|
|0002fa70| 09 09 09 6e 65 77 5f 6c | 6f 63 6b 2d 3e 66 6c 2e |...new_l|ock->fl.|
|0002fa80| 66 6c 5f 56 6f 6c 75 6d | 65 20 3d 20 28 62 33 32 |fl_Volum|e = (b32|
|0002fa90| 29 66 74 70 5f 76 6f 6c | 75 6d 65 20 3e 3e 20 32 |)ftp_vol|ume >> 2|
|0002faa0| 3b 0a 09 09 09 09 09 0a | 09 09 09 09 09 64 70 2d |;.......|.....dp-|
|0002fab0| 3e 64 70 5f 52 65 73 31 | 20 3d 20 28 62 33 32 29 |>dp_Res1| = (b32)|
|0002fac0| 6e 65 77 5f 6c 6f 63 6b | 20 3e 3e 20 32 3b 0a 09 |new_lock| >> 2;..|
|0002fad0| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 32 20 |....dp->|dp_Res2 |
|0002fae0| 3d 20 30 3b 0a 09 09 09 | 09 7d 20 65 6c 73 65 20 |= 0;....|.} else |
|0002faf0| 7b 0a 09 09 09 09 09 2a | 73 20 3d 20 30 3b 0a 09 |{......*|s = 0;..|
|0002fb00| 09 09 09 09 0a 09 09 09 | 09 09 6e 65 77 5f 6c 6f |........|..new_lo|
|0002fb10| 63 6b 20 3d 20 28 6c 6f | 63 6b 20 2a 29 61 6c 6c |ck = (lo|ck *)all|
|0002fb20| 6f 63 61 74 65 28 73 69 | 7a 65 6f 66 28 2a 6e 65 |ocate(si|zeof(*ne|
|0002fb30| 77 5f 6c 6f 63 6b 29 20 | 2b 20 73 74 72 6c 65 6e |w_lock) |+ strlen|
|0002fb40| 28 73 6c 6f 63 6b 2d 3e | 66 6e 61 6d 65 29 20 2b |(slock->|fname) +|
|0002fb50| 20 31 2c 20 56 5f 6c 6f | 63 6b 29 3b 0a 09 09 09 | 1, V_lo|ck);....|
|0002fb60| 09 09 69 66 20 28 21 6e | 65 77 5f 6c 6f 63 6b 29 |..if (!n|ew_lock)|
|0002fb70| 20 7b 0a 09 09 09 09 09 | 09 2a 73 20 3d 20 27 2f | {......|.*s = '/|
|0002fb80| 27 3b 0a 09 09 09 09 09 | 09 0a 09 09 09 09 09 09 |';......|........|
|0002fb90| 64 70 2d 3e 64 70 5f 52 | 65 73 31 20 3d 20 30 3b |dp->dp_R|es1 = 0;|
|0002fba0| 0a 09 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |.......d|p->dp_Re|
|0002fbb0| 73 32 20 3d 20 45 52 52 | 4f 52 5f 4e 4f 5f 46 52 |s2 = ERR|OR_NO_FR|
|0002fbc0| 45 45 5f 53 54 4f 52 45 | 3b 0a 09 09 09 09 09 09 |EE_STORE|;.......|
|0002fbd0| 62 72 65 61 6b 3b 0a 09 | 09 09 09 09 7d 0a 09 09 |break;..|....}...|
|0002fbe0| 09 09 09 0a 09 09 09 09 | 09 65 6e 73 75 72 65 28 |........|.ensure(|
|0002fbf0| 6e 65 77 5f 6c 6f 63 6b | 2c 20 56 5f 6c 6f 63 6b |new_lock|, V_lock|
|0002fc00| 29 3b 0a 09 09 09 09 09 | 0a 09 09 09 09 09 73 74 |);......|......st|
|0002fc10| 72 63 70 79 28 6e 65 77 | 5f 6c 6f 63 6b 2d 3e 66 |rcpy(new|_lock->f|
|0002fc20| 6e 61 6d 65 2c 20 73 6c | 6f 63 6b 2d 3e 66 6e 61 |name, sl|ock->fna|
|0002fc30| 6d 65 29 3b 0a 09 09 09 | 09 09 0a 09 09 09 09 09 |me);....|........|
|0002fc40| 2a 73 20 3d 20 27 2f 27 | 3b 0a 0a 09 09 09 09 09 |*s = '/'|;.......|
|0002fc50| 6e 65 77 5f 6c 6f 63 6b | 2d 3e 70 6f 72 74 20 3d |new_lock|->port =|
|0002fc60| 20 6c 6f 63 61 6c 3b 0a | 09 09 09 09 09 6e 65 77 | local;.|.....new|
|0002fc70| 5f 6c 6f 63 6b 2d 3e 72 | 66 73 6c 20 3d 20 30 3b |_lock->r|fsl = 0;|
|0002fc80| 0a 09 09 09 09 09 0a 09 | 09 09 09 09 6e 65 77 5f |........|....new_|
|0002fc90| 6c 6f 63 6b 2d 3e 66 6c | 2e 66 6c 5f 4c 69 6e 6b |lock->fl|.fl_Link|
|0002fca0| 20 3d 20 30 3b 0a 09 09 | 09 09 09 6e 65 77 5f 6c | = 0;...|...new_l|
|0002fcb0| 6f 63 6b 2d 3e 66 6c 2e | 66 6c 5f 4b 65 79 20 3d |ock->fl.|fl_Key =|
|0002fcc0| 20 30 3b 0a 09 09 09 09 | 09 6e 65 77 5f 6c 6f 63 | 0;.....|.new_loc|
|0002fcd0| 6b 2d 3e 66 6c 2e 66 6c | 5f 41 63 63 65 73 73 20 |k->fl.fl|_Access |
|0002fce0| 3d 20 53 48 41 52 45 44 | 5f 4c 4f 43 4b 3b 0a 09 |= SHARED|_LOCK;..|
|0002fcf0| 09 09 09 09 6e 65 77 5f | 6c 6f 63 6b 2d 3e 66 6c |....new_|lock->fl|
|0002fd00| 2e 66 6c 5f 54 61 73 6b | 20 3d 20 66 74 70 5f 70 |.fl_Task| = ftp_p|
|0002fd10| 6f 72 74 3b 0a 09 09 09 | 09 09 6e 65 77 5f 6c 6f |ort;....|..new_lo|
|0002fd20| 63 6b 2d 3e 66 6c 2e 66 | 6c 5f 56 6f 6c 75 6d 65 |ck->fl.f|l_Volume|
|0002fd30| 20 3d 20 28 62 33 32 29 | 66 74 70 5f 76 6f 6c 75 | = (b32)|ftp_volu|
|0002fd40| 6d 65 20 3e 3e 20 32 3b | 0a 09 09 09 09 09 0a 09 |me >> 2;|........|
|0002fd50| 09 09 09 09 2f 2a 20 73 | 65 61 72 63 68 20 66 6f |..../* s|earch fo|
|0002fd60| 72 20 61 20 63 6f 6e 66 | 6c 69 63 74 69 6e 67 20 |r a conf|licting |
|0002fd70| 6c 6f 63 6b 20 2a 2f 0a | 09 09 09 09 09 0a 09 09 |lock */.|........|
|0002fd80| 09 09 09 73 6c 6f 63 6b | 20 3d 20 66 74 70 5f 73 |...slock| = ftp_s|
|0002fd90| 69 74 65 2d 3e 6c 6f 63 | 6b 5f 6c 69 73 74 3b 0a |ite->loc|k_list;.|
|0002fda0| 09 09 09 09 09 77 68 69 | 6c 65 20 28 73 6c 6f 63 |.....whi|le (sloc|
|0002fdb0| 6b 29 20 7b 0a 09 09 09 | 09 09 09 69 66 20 28 73 |k) {....|...if (s|
|0002fdc0| 74 72 63 6d 70 28 6e 65 | 77 5f 6c 6f 63 6b 2d 3e |trcmp(ne|w_lock->|
|0002fdd0| 66 6e 61 6d 65 2c 20 73 | 6c 6f 63 6b 2d 3e 66 6e |fname, s|lock->fn|
|0002fde0| 61 6d 65 29 20 3d 3d 20 | 30 29 20 7b 0a 09 09 09 |ame) == |0) {....|
|0002fdf0| 09 09 09 09 69 66 20 28 | 73 6c 6f 63 6b 2d 3e 66 |....if (|slock->f|
|0002fe00| 6c 2e 66 6c 5f 41 63 63 | 65 73 73 20 3d 3d 20 45 |l.fl_Acc|ess == E|
|0002fe10| 58 43 4c 55 53 49 56 45 | 5f 4c 4f 43 4b 29 20 7b |XCLUSIVE|_LOCK) {|
|0002fe20| 0a 09 09 09 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |........|.dp->dp_|
|0002fe30| 52 65 73 31 20 3d 20 30 | 3b 0a 09 09 09 09 09 09 |Res1 = 0|;.......|
|0002fe40| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 32 20 3d 20 |..dp->dp|_Res2 = |
|0002fe50| 45 52 52 4f 52 5f 4f 42 | 4a 45 43 54 5f 49 4e 5f |ERROR_OB|JECT_IN_|
|0002fe60| 55 53 45 3b 0a 09 09 09 | 09 09 09 09 09 0a 09 09 |USE;....|........|
|0002fe70| 09 09 09 09 09 09 64 65 | 61 6c 6c 6f 63 61 74 65 |......de|allocate|
|0002fe80| 28 6e 65 77 5f 6c 6f 63 | 6b 2c 20 56 5f 6c 6f 63 |(new_loc|k, V_loc|
|0002fe90| 6b 29 3b 0a 09 09 09 09 | 09 09 09 09 67 6f 74 6f |k);.....|....goto|
|0002fea0| 20 72 65 70 6c 79 5f 6d | 73 67 3b 0a 09 09 09 09 | reply_m|sg;.....|
|0002feb0| 09 09 09 7d 0a 09 09 09 | 09 09 09 09 0a 09 09 09 |...}....|........|
|0002fec0| 09 09 09 09 2f 2a 20 6f | 6b 2c 20 74 68 69 73 20 |..../* o|k, this |
|0002fed0| 6f 6e 65 20 69 73 20 67 | 75 61 72 61 6e 74 65 65 |one is g|uarantee|
|0002fee0| 64 20 74 6f 20 77 6f 72 | 6b 20 2a 2f 0a 09 09 09 |d to wor|k */....|
|0002fef0| 09 09 09 09 0a 09 09 09 | 09 09 09 09 6e 65 77 5f |........|....new_|
|0002ff00| 6c 6f 63 6b 2d 3e 6e 65 | 78 74 20 3d 20 66 74 70 |lock->ne|xt = ftp|
|0002ff10| 5f 73 69 74 65 2d 3e 6c | 6f 63 6b 5f 6c 69 73 74 |_site->l|ock_list|
|0002ff20| 3b 0a 09 09 09 09 09 09 | 09 66 74 70 5f 73 69 74 |;.......|.ftp_sit|
|0002ff30| 65 2d 3e 6c 6f 63 6b 5f | 6c 69 73 74 20 3d 20 6e |e->lock_|list = n|
|0002ff40| 65 77 5f 6c 6f 63 6b 3b | 0a 09 09 09 09 09 09 09 |ew_lock;|........|
|0002ff50| 0a 09 09 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 |........|dp->dp_R|
|0002ff60| 65 73 31 20 3d 20 28 62 | 33 32 29 6e 65 77 5f 6c |es1 = (b|32)new_l|
|0002ff70| 6f 63 6b 20 3e 3e 20 32 | 3b 0a 09 09 09 09 09 09 |ock >> 2|;.......|
|0002ff80| 09 64 70 2d 3e 64 70 5f | 52 65 73 32 20 3d 20 30 |.dp->dp_|Res2 = 0|
|0002ff90| 3b 0a 09 09 09 09 09 09 | 09 0a 09 09 09 09 09 09 |;.......|........|
|0002ffa0| 09 67 6f 74 6f 20 72 65 | 70 6c 79 5f 6d 73 67 3b |.goto re|ply_msg;|
|0002ffb0| 0a 09 09 09 09 09 09 7d | 0a 09 09 09 09 09 09 73 |.......}|.......s|
|0002ffc0| 6c 6f 63 6b 20 3d 20 73 | 6c 6f 63 6b 2d 3e 6e 65 |lock = s|lock->ne|
|0002ffd0| 78 74 3b 0a 09 09 09 09 | 09 7d 0a 09 09 09 09 09 |xt;.....|.}......|
|0002ffe0| 0a 09 09 09 09 09 2f 2a | 20 6f 6b 2c 20 69 74 20 |....../*| ok, it |
|0002fff0| 64 6f 65 73 6e 27 74 20 | 63 6f 6e 66 6c 69 63 74 |doesn't |conflict|
|00030000| 20 2e 2e 2e 20 69 74 20 | 6d 75 73 74 20 65 78 69 | ... it |must exi|
|00030010| 73 74 2a 2f 0a 09 09 09 | 09 09 0a 09 09 09 09 09 |st*/....|........|
|00030020| 6e 65 77 5f 6c 6f 63 6b | 2d 3e 6e 65 78 74 20 3d |new_lock|->next =|
|00030030| 20 66 74 70 5f 73 69 74 | 65 2d 3e 6c 6f 63 6b 5f | ftp_sit|e->lock_|
|00030040| 6c 69 73 74 3b 0a 09 09 | 09 09 09 66 74 70 5f 73 |list;...|...ftp_s|
|00030050| 69 74 65 2d 3e 6c 6f 63 | 6b 5f 6c 69 73 74 20 3d |ite->loc|k_list =|
|00030060| 20 6e 65 77 5f 6c 6f 63 | 6b 3b 0a 09 09 09 09 09 | new_loc|k;......|
|00030070| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|00030080| 31 20 3d 20 28 62 33 32 | 29 6e 65 77 5f 6c 6f 63 |1 = (b32|)new_loc|
|00030090| 6b 20 3e 3e 20 32 3b 0a | 09 09 09 09 09 64 70 2d |k >> 2;.|.....dp-|
|000300a0| 3e 64 70 5f 52 65 73 32 | 20 3d 20 30 3b 0a 09 09 |>dp_Res2| = 0;...|
|000300b0| 09 09 7d 0a 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |..}.....|break;..|
|000300c0| 09 09 63 61 73 65 20 41 | 43 54 49 4f 4e 5f 53 41 |..case A|CTION_SA|
|000300d0| 4d 45 5f 4c 4f 43 4b 3a | 0a 09 09 09 09 73 6c 6f |ME_LOCK:|.....slo|
|000300e0| 63 6b 20 3d 20 28 6c 6f | 63 6b 20 2a 29 28 64 70 |ck = (lo|ck *)(dp|
|000300f0| 2d 3e 64 70 5f 41 72 67 | 31 20 3c 3c 20 32 29 3b |->dp_Arg|1 << 2);|
|00030100| 0a 09 09 09 09 6e 65 77 | 5f 6c 6f 63 6b 20 3d 20 |.....new|_lock = |
|00030110| 28 6c 6f 63 6b 20 2a 29 | 28 64 70 2d 3e 64 70 5f |(lock *)|(dp->dp_|
|00030120| 41 72 67 32 20 3c 3c 20 | 32 29 3b 0a 09 09 09 09 |Arg2 << |2);.....|
|00030130| 0a 09 09 09 09 76 65 72 | 69 66 79 28 73 6c 6f 63 |.....ver|ify(sloc|
|00030140| 6b 2c 20 56 5f 6c 6f 63 | 6b 29 3b 0a 09 09 09 09 |k, V_loc|k);.....|
|00030150| 76 65 72 69 66 79 28 6e | 65 77 5f 6c 6f 63 6b 2c |verify(n|ew_lock,|
|00030160| 20 56 5f 6c 6f 63 6b 29 | 3b 0a 09 09 09 09 0a 09 | V_lock)|;.......|
|00030170| 09 09 09 69 66 20 28 73 | 74 72 63 6d 70 28 73 6c |...if (s|trcmp(sl|
|00030180| 6f 63 6b 2d 3e 66 6e 61 | 6d 65 2c 20 6e 65 77 5f |ock->fna|me, new_|
|00030190| 6c 6f 63 6b 2d 3e 66 6e | 61 6d 65 29 20 3d 3d 20 |lock->fn|ame) == |
|000301a0| 30 29 20 7b 0a 09 09 09 | 09 09 64 70 2d 3e 64 70 |0) {....|..dp->dp|
|000301b0| 5f 52 65 73 31 20 3d 20 | 44 4f 53 54 52 55 45 3b |_Res1 = |DOSTRUE;|
|000301c0| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|000301d0| 32 20 3d 20 30 3b 0a 09 | 09 09 09 7d 20 65 6c 73 |2 = 0;..|...} els|
|000301e0| 65 20 7b 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |e {.....|.dp->dp_|
|000301f0| 52 65 73 31 20 3d 20 44 | 4f 53 46 41 4c 53 45 3b |Res1 = D|OSFALSE;|
|00030200| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|00030210| 32 20 3d 20 30 3b 0a 09 | 09 09 09 7d 0a 09 09 09 |2 = 0;..|...}....|
|00030220| 09 62 72 65 61 6b 3b 0a | 09 09 09 63 61 73 65 20 |.break;.|...case |
|00030230| 41 43 54 49 4f 4e 5f 52 | 45 41 44 3a 0a 09 09 09 |ACTION_R|EAD:....|
|00030240| 09 66 69 70 20 3d 20 28 | 66 69 6c 65 5f 69 6e 66 |.fip = (|file_inf|
|00030250| 6f 20 2a 29 64 70 2d 3e | 64 70 5f 41 72 67 31 3b |o *)dp->|dp_Arg1;|
|00030260| 0a 09 09 09 09 76 65 72 | 69 66 79 28 66 69 70 2c |.....ver|ify(fip,|
|00030270| 20 56 5f 66 69 6c 65 5f | 69 6e 66 6f 29 3b 0a 09 | V_file_|info);..|
|00030280| 09 09 09 0a 09 09 09 09 | 69 66 20 28 21 66 74 70 |........|if (!ftp|
|00030290| 5f 73 69 74 65 2d 3e 63 | 6f 6e 6e 65 63 74 65 64 |_site->c|onnected|
|000302a0| 20 7c 7c 20 66 74 70 5f | 73 69 74 65 2d 3e 63 66 | || ftp_|site->cf|
|000302b0| 69 6c 65 20 3d 3d 20 6e | 69 6c 29 20 7b 0a 09 09 |ile == n|il) {...|
|000302c0| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 31 20 3d |...dp->d|p_Res1 =|
|000302d0| 20 30 3b 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f | 0;.....|.dp->dp_|
|000302e0| 52 65 73 32 20 3d 20 45 | 52 52 4f 52 5f 4f 42 4a |Res2 = E|RROR_OBJ|
|000302f0| 45 43 54 5f 4e 4f 54 5f | 46 4f 55 4e 44 3b 0a 09 |ECT_NOT_|FOUND;..|
|00030300| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 09 09 7d |....brea|k;.....}|
|00030310| 0a 09 09 09 09 0a 09 09 | 09 09 69 66 20 28 66 74 |........|..if (ft|
|00030320| 70 5f 73 69 74 65 2d 3e | 63 66 69 6c 65 5f 74 79 |p_site->|cfile_ty|
|00030330| 70 65 20 21 3d 20 41 43 | 54 49 4f 4e 5f 46 49 4e |pe != AC|TION_FIN|
|00030340| 44 49 4e 50 55 54 29 20 | 7b 0a 09 09 09 09 09 64 |DINPUT) |{......d|
|00030350| 70 2d 3e 64 70 5f 52 65 | 73 31 20 3d 20 30 3b 0a |p->dp_Re|s1 = 0;.|
|00030360| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 32 |.....dp-|>dp_Res2|
|00030370| 20 3d 20 45 52 52 4f 52 | 5f 52 45 41 44 5f 50 52 | = ERROR|_READ_PR|
|00030380| 4f 54 45 43 54 45 44 3b | 0a 09 09 09 09 09 62 72 |OTECTED;|......br|
|00030390| 65 61 6b 3b 0a 09 09 09 | 09 7d 0a 09 09 09 09 0a |eak;....|.}......|
|000303a0| 09 09 09 09 69 66 20 28 | 66 69 70 2d 3e 73 65 65 |....if (|fip->see|
|000303b0| 6b 5f 65 6e 64 29 20 7b | 09 2f 2a 20 61 72 74 69 |k_end) {|./* arti|
|000303c0| 66 69 63 69 61 6c 6c 79 | 20 61 74 20 65 6e 64 20 |ficially| at end |
|000303d0| 2a 2f 0a 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 |*/......|dp->dp_R|
|000303e0| 65 73 31 20 3d 20 30 3b | 0a 09 09 09 09 09 64 70 |es1 = 0;|......dp|
|000303f0| 2d 3e 64 70 5f 52 65 73 | 32 20 3d 20 30 3b 0a 09 |->dp_Res|2 = 0;..|
|00030400| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 09 09 7d |....brea|k;.....}|
|00030410| 0a 09 09 09 09 0a 09 09 | 09 09 73 74 61 74 65 5f |........|..state_|
|00030420| 63 68 61 6e 67 65 28 66 | 74 70 5f 73 69 74 65 2c |change(f|tp_site,|
|00030430| 20 53 53 5f 52 45 41 44 | 49 4e 47 29 3b 0a 09 09 | SS_READ|ING);...|
|00030440| 09 09 0a 09 09 09 09 6f | 31 20 3d 20 64 70 2d 3e |.......o|1 = dp->|
|00030450| 64 70 5f 41 72 67 33 3b | 0a 09 09 09 09 73 20 3d |dp_Arg3;|.....s =|
|00030460| 20 28 62 38 20 2a 29 64 | 70 2d 3e 64 70 5f 41 72 | (b8 *)d|p->dp_Ar|
|00030470| 67 32 3b 0a 09 09 09 09 | 0a 09 09 09 09 69 66 20 |g2;.....|.....if |
|00030480| 28 6f 31 20 3d 3d 20 30 | 29 20 7b 0a 09 09 09 09 |(o1 == 0|) {.....|
|00030490| 09 64 70 2d 3e 64 70 5f | 52 65 73 31 20 3d 20 30 |.dp->dp_|Res1 = 0|
|000304a0| 3b 0a 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |;......d|p->dp_Re|
|000304b0| 73 32 20 3d 20 30 3b 0a | 09 09 09 09 09 62 72 65 |s2 = 0;.|.....bre|
|000304c0| 61 6b 3b 0a 09 09 09 09 | 7d 0a 09 09 09 09 0a 09 |ak;.....|}.......|
|000304d0| 09 09 09 69 66 20 28 66 | 69 70 2d 3e 76 70 6f 73 |...if (f|ip->vpos|
|000304e0| 20 3c 20 46 49 52 53 54 | 5f 42 4c 4f 43 4b 5f 53 | < FIRST|_BLOCK_S|
|000304f0| 49 5a 45 20 26 26 20 66 | 69 70 2d 3e 76 70 6f 73 |IZE && f|ip->vpos|
|00030500| 20 3c 20 66 69 70 2d 3e | 72 70 6f 73 29 20 7b 0a | < fip->|rpos) {.|
|00030510| 09 09 09 09 09 6f 32 20 | 3d 20 6f 31 3b 0a 09 09 |.....o2 |= o1;...|
|00030520| 09 09 09 69 66 20 28 6f | 32 20 3e 20 46 49 52 53 |...if (o|2 > FIRS|
|00030530| 54 5f 42 4c 4f 43 4b 5f | 53 49 5a 45 20 2d 20 66 |T_BLOCK_|SIZE - f|
|00030540| 69 70 2d 3e 76 70 6f 73 | 29 20 6f 32 20 3d 20 46 |ip->vpos|) o2 = F|
|00030550| 49 52 53 54 5f 42 4c 4f | 43 4b 5f 53 49 5a 45 20 |IRST_BLO|CK_SIZE |
|00030560| 2d 20 66 69 70 2d 3e 76 | 70 6f 73 3b 0a 09 09 09 |- fip->v|pos;....|
|00030570| 09 09 69 66 20 28 6f 32 | 20 3e 20 66 69 70 2d 3e |..if (o2| > fip->|
|00030580| 72 70 6f 73 20 2d 20 66 | 69 70 2d 3e 76 70 6f 73 |rpos - f|ip->vpos|
|00030590| 29 20 6f 32 20 3d 20 66 | 69 70 2d 3e 72 70 6f 73 |) o2 = f|ip->rpos|
|000305a0| 20 2d 20 66 69 70 2d 3e | 76 70 6f 73 3b 0a 09 09 | - fip->|vpos;...|
|000305b0| 09 09 09 0a 09 09 09 09 | 09 6d 65 6d 63 70 79 28 |........|.memcpy(|
|000305c0| 73 2c 20 26 66 69 70 2d | 3e 66 69 72 73 74 5f 62 |s, &fip-|>first_b|
|000305d0| 6c 6f 63 6b 5b 66 69 70 | 2d 3e 76 70 6f 73 5d 2c |lock[fip|->vpos],|
|000305e0| 20 6f 32 29 3b 0a 09 09 | 09 09 09 0a 09 09 09 09 | o2);...|........|
|000305f0| 09 66 69 70 2d 3e 76 70 | 6f 73 20 2b 3d 20 6f 32 |.fip->vp|os += o2|
|00030600| 3b 0a 09 09 09 09 09 0a | 09 09 09 09 09 69 66 20 |;.......|.....if |
|00030610| 28 6f 32 20 3d 3d 20 6f | 31 29 20 7b 0a 09 09 09 |(o2 == o|1) {....|
|00030620| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 31 20 3d |...dp->d|p_Res1 =|
|00030630| 20 6f 31 3b 0a 09 09 09 | 09 09 09 64 70 2d 3e 64 | o1;....|...dp->d|
|00030640| 70 5f 52 65 73 32 20 3d | 20 30 3b 0a 09 09 09 09 |p_Res2 =| 0;.....|
|00030650| 09 0a 09 09 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |........|break;..|
|00030660| 09 09 09 09 7d 20 65 6c | 73 65 20 7b 0a 09 09 09 |....} el|se {....|
|00030670| 09 09 09 73 20 2b 3d 20 | 6f 32 3b 0a 09 09 09 09 |...s += |o2;.....|
|00030680| 09 09 6f 31 20 2d 3d 20 | 6f 32 3b 0a 09 09 09 09 |..o1 -= |o2;.....|
|00030690| 09 7d 0a 09 09 09 09 7d | 0a 09 09 09 09 0a 09 09 |.}.....}|........|
|000306a0| 09 09 69 66 20 28 66 69 | 70 2d 3e 76 70 6f 73 20 |..if (fi|p->vpos |
|000306b0| 21 3d 20 66 69 70 2d 3e | 72 70 6f 73 29 20 7b 0a |!= fip->|rpos) {.|
|000306c0| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 31 |.....dp-|>dp_Res1|
|000306d0| 20 3d 20 2d 31 3b 0a 09 | 09 09 09 09 64 70 2d 3e | = -1;..|....dp->|
|000306e0| 64 70 5f 52 65 73 32 20 | 3d 20 45 52 52 4f 52 5f |dp_Res2 |= ERROR_|
|000306f0| 53 45 45 4b 5f 45 52 52 | 4f 52 3b 0a 09 09 09 09 |SEEK_ERR|OR;.....|
|00030700| 09 62 72 65 61 6b 3b 0a | 09 09 09 09 7d 0a 09 09 |.break;.|....}...|
|00030710| 09 09 0a 09 09 09 09 77 | 68 69 6c 65 20 28 6f 31 |.......w|hile (o1|
|00030720| 29 20 7b 0a 09 09 09 09 | 09 69 66 20 28 6f 31 20 |) {.....|.if (o1 |
|00030730| 3e 20 4d 41 58 5f 52 45 | 41 44 5f 53 49 5a 45 29 |> MAX_RE|AD_SIZE)|
|00030740| 20 7b 0a 09 09 09 09 09 | 09 6f 32 20 3d 20 4d 41 | {......|.o2 = MA|
|00030750| 58 5f 52 45 41 44 5f 53 | 49 5a 45 3b 0a 09 09 09 |X_READ_S|IZE;....|
|00030760| 09 09 09 6f 31 20 2d 3d | 20 6f 32 3b 0a 09 09 09 |...o1 -=| o2;....|
|00030770| 09 09 7d 20 65 6c 73 65 | 20 7b 0a 09 09 09 09 09 |..} else| {......|
|00030780| 09 6f 32 20 3d 20 6f 31 | 3b 0a 09 09 09 09 09 09 |.o2 = o1|;.......|
|00030790| 6f 31 20 3d 20 30 3b 0a | 09 09 09 09 09 7d 0a 09 |o1 = 0;.|.....}..|
|000307a0| 09 09 09 09 73 77 69 74 | 63 68 20 28 72 65 61 64 |....swit|ch (read|
|000307b0| 5f 66 69 6c 65 28 66 74 | 70 5f 73 69 74 65 2c 20 |_file(ft|p_site, |
|000307c0| 73 2c 20 26 6f 32 29 29 | 20 7b 0a 09 09 09 09 09 |s, &o2))| {......|
|000307d0| 63 61 73 65 20 4e 4f 5f | 45 52 52 4f 52 3a 0a 09 |case NO_|ERROR:..|
|000307e0| 09 09 09 09 09 73 20 2b | 3d 20 6f 32 3b 0a 09 09 |.....s +|= o2;...|
|000307f0| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 09 09 09 |....brea|k;......|
|00030800| 63 61 73 65 20 45 52 52 | 4f 52 5f 45 4f 46 3a 0a |case ERR|OR_EOF:.|
|00030810| 09 09 09 09 09 09 73 20 | 2b 3d 20 6f 32 3b 0a 09 |......s |+= o2;..|
|00030820| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 31 |.....dp-|>dp_Res1|
|00030830| 20 3d 20 73 20 2d 20 28 | 62 38 20 2a 29 64 70 2d | = s - (|b8 *)dp-|
|00030840| 3e 64 70 5f 41 72 67 32 | 3b 0a 09 09 09 09 09 09 |>dp_Arg2|;.......|
|00030850| 64 70 2d 3e 64 70 5f 52 | 65 73 32 20 3d 20 30 3b |dp->dp_R|es2 = 0;|
|00030860| 0a 09 09 09 09 09 09 6f | 31 20 3d 20 30 3b 0a 09 |.......o|1 = 0;..|
|00030870| 09 09 09 09 09 66 69 70 | 2d 3e 65 6f 66 20 3d 20 |.....fip|->eof = |
|00030880| 74 72 75 65 3b 0a 09 09 | 09 09 09 09 62 72 65 61 |true;...|....brea|
|00030890| 6b 3b 0a 09 09 09 09 09 | 64 65 66 61 75 6c 74 3a |k;......|default:|
|000308a0| 0a 09 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |.......d|p->dp_Re|
|000308b0| 73 31 20 3d 20 2d 31 3b | 0a 09 09 09 09 09 09 64 |s1 = -1;|.......d|
|000308c0| 70 2d 3e 64 70 5f 52 65 | 73 32 20 3d 20 45 52 52 |p->dp_Re|s2 = ERR|
|000308d0| 4f 52 5f 4f 42 4a 45 43 | 54 5f 4e 4f 54 5f 46 4f |OR_OBJEC|T_NOT_FO|
|000308e0| 55 4e 44 3b 0a 09 09 09 | 09 09 09 6f 31 20 3d 20 |UND;....|...o1 = |
|000308f0| 30 3b 0a 09 09 09 09 09 | 09 62 72 65 61 6b 3b 0a |0;......|.break;.|
|00030900| 09 09 09 09 09 7d 0a 09 | 09 09 09 09 66 69 70 2d |.....}..|....fip-|
|00030910| 3e 72 70 6f 73 20 2b 3d | 20 6f 32 3b 0a 09 09 09 |>rpos +=| o2;....|
|00030920| 09 09 66 69 70 2d 3e 76 | 70 6f 73 20 3d 20 66 69 |..fip->v|pos = fi|
|00030930| 70 2d 3e 72 70 6f 73 3b | 0a 09 09 09 09 09 74 73 |p->rpos;|......ts|
|00030940| 6d 20 3d 20 67 65 74 5f | 73 6d 28 66 74 70 5f 73 |m = get_|sm(ftp_s|
|00030950| 69 74 65 29 3b 0a 09 09 | 09 09 09 69 66 20 28 74 |ite);...|...if (t|
|00030960| 73 6d 29 20 7b 0a 09 09 | 09 09 09 09 74 73 6d 2d |sm) {...|....tsm-|
|00030970| 3e 63 6f 6d 6d 61 6e 64 | 20 3d 20 53 4d 5f 50 52 |>command| = SM_PR|
|00030980| 4f 47 52 45 53 53 3b 0a | 09 09 09 09 09 09 50 75 |OGRESS;.|......Pu|
|00030990| 74 4d 73 67 28 73 74 61 | 74 75 73 5f 70 6f 72 74 |tMsg(sta|tus_port|
|000309a0| 2c 20 26 74 73 6d 2d 3e | 68 65 61 64 65 72 29 3b |, &tsm->|header);|
|000309b0| 0a 09 09 09 09 09 7d 0a | 09 09 09 09 7d 0a 09 09 |......}.|....}...|
|000309c0| 09 09 0a 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |.......d|p->dp_Re|
|000309d0| 73 31 20 3d 20 73 20 2d | 20 28 62 38 20 2a 29 64 |s1 = s -| (b8 *)d|
|000309e0| 70 2d 3e 64 70 5f 41 72 | 67 32 3b 0a 09 09 09 09 |p->dp_Ar|g2;.....|
|000309f0| 64 70 2d 3e 64 70 5f 52 | 65 73 32 20 3d 20 30 3b |dp->dp_R|es2 = 0;|
|00030a00| 0a 09 09 09 09 0a 09 09 | 09 09 62 72 65 61 6b 3b |........|..break;|
|00030a10| 0a 09 09 09 63 61 73 65 | 20 41 43 54 49 4f 4e 5f |....case| ACTION_|
|00030a20| 57 52 49 54 45 3a 0a 09 | 09 09 09 66 69 70 20 3d |WRITE:..|...fip =|
|00030a30| 20 28 66 69 6c 65 5f 69 | 6e 66 6f 20 2a 29 64 70 | (file_i|nfo *)dp|
|00030a40| 2d 3e 64 70 5f 41 72 67 | 31 3b 0a 09 09 09 09 76 |->dp_Arg|1;.....v|
|00030a50| 65 72 69 66 79 28 66 69 | 70 2c 20 56 5f 66 69 6c |erify(fi|p, V_fil|
|00030a60| 65 5f 69 6e 66 6f 29 3b | 0a 09 09 09 09 0a 09 09 |e_info);|........|
|00030a70| 09 09 69 66 20 28 21 66 | 74 70 5f 73 69 74 65 2d |..if (!f|tp_site-|
|00030a80| 3e 63 6f 6e 6e 65 63 74 | 65 64 20 7c 7c 20 66 74 |>connect|ed || ft|
|00030a90| 70 5f 73 69 74 65 2d 3e | 63 66 69 6c 65 20 3d 3d |p_site->|cfile ==|
|00030aa0| 20 6e 69 6c 29 20 7b 0a | 09 09 09 09 09 64 70 2d | nil) {.|.....dp-|
|00030ab0| 3e 64 70 5f 52 65 73 31 | 20 3d 20 30 3b 0a 09 09 |>dp_Res1| = 0;...|
|00030ac0| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 32 20 3d |...dp->d|p_Res2 =|
|00030ad0| 20 45 52 52 4f 52 5f 4f | 42 4a 45 43 54 5f 4e 4f | ERROR_O|BJECT_NO|
|00030ae0| 54 5f 46 4f 55 4e 44 3b | 0a 09 09 09 09 09 62 72 |T_FOUND;|......br|
|00030af0| 65 61 6b 3b 0a 09 09 09 | 09 7d 0a 09 09 09 09 0a |eak;....|.}......|
|00030b00| 09 09 09 09 69 66 20 28 | 66 74 70 5f 73 69 74 65 |....if (|ftp_site|
|00030b10| 2d 3e 63 66 69 6c 65 5f | 74 79 70 65 20 21 3d 20 |->cfile_|type != |
|00030b20| 41 43 54 49 4f 4e 5f 46 | 49 4e 44 4f 55 54 50 55 |ACTION_F|INDOUTPU|
|00030b30| 54 29 20 7b 0a 09 09 09 | 09 09 64 70 2d 3e 64 70 |T) {....|..dp->dp|
|00030b40| 5f 52 65 73 31 20 3d 20 | 30 3b 0a 09 09 09 09 09 |_Res1 = |0;......|
|00030b50| 64 70 2d 3e 64 70 5f 52 | 65 73 32 20 3d 20 45 52 |dp->dp_R|es2 = ER|
|00030b60| 52 4f 52 5f 57 52 49 54 | 45 5f 50 52 4f 54 45 43 |ROR_WRIT|E_PROTEC|
|00030b70| 54 45 44 3b 0a 09 09 09 | 09 09 62 72 65 61 6b 3b |TED;....|..break;|
|00030b80| 0a 09 09 09 09 7d 0a 09 | 09 09 09 0a 09 09 09 09 |.....}..|........|
|00030b90| 73 74 61 74 65 5f 63 68 | 61 6e 67 65 28 66 74 70 |state_ch|ange(ftp|
|00030ba0| 5f 73 69 74 65 2c 20 53 | 53 5f 57 52 49 54 49 4e |_site, S|S_WRITIN|
|00030bb0| 47 29 3b 0a 0a 09 09 09 | 09 6f 31 20 3d 20 64 70 |G);.....|.o1 = dp|
|00030bc0| 2d 3e 64 70 5f 41 72 67 | 33 3b 0a 09 09 09 09 73 |->dp_Arg|3;.....s|
|00030bd0| 20 3d 20 28 62 38 20 2a | 29 64 70 2d 3e 64 70 5f | = (b8 *|)dp->dp_|
|00030be0| 41 72 67 32 3b 0a 09 09 | 09 09 0a 09 09 09 09 69 |Arg2;...|.......i|
|00030bf0| 66 20 28 6f 31 20 3d 3d | 20 30 29 20 7b 0a 09 09 |f (o1 ==| 0) {...|
|00030c00| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 31 20 3d |...dp->d|p_Res1 =|
|00030c10| 20 30 3b 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f | 0;.....|.dp->dp_|
|00030c20| 52 65 73 32 20 3d 20 30 | 3b 0a 09 09 09 09 09 62 |Res2 = 0|;......b|
|00030c30| 72 65 61 6b 3b 0a 09 09 | 09 09 7d 0a 09 09 09 09 |reak;...|..}.....|
|00030c40| 0a 09 09 09 09 69 66 20 | 28 66 69 70 2d 3e 76 70 |.....if |(fip->vp|
|00030c50| 6f 73 20 21 3d 20 66 69 | 70 2d 3e 72 70 6f 73 29 |os != fi|p->rpos)|
|00030c60| 20 7b 0a 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 | {......|dp->dp_R|
|00030c70| 65 73 31 20 3d 20 2d 31 | 3b 0a 09 09 09 09 09 64 |es1 = -1|;......d|
|00030c80| 70 2d 3e 64 70 5f 52 65 | 73 32 20 3d 20 45 52 52 |p->dp_Re|s2 = ERR|
|00030c90| 4f 52 5f 53 45 45 4b 5f | 45 52 52 4f 52 3b 0a 09 |OR_SEEK_|ERROR;..|
|00030ca0| 09 09 09 09 62 72 65 61 | 6b 3b 0a 09 09 09 09 7d |....brea|k;.....}|
|00030cb0| 0a 09 09 09 09 0a 09 09 | 09 09 77 68 69 6c 65 20 |........|..while |
|00030cc0| 28 6f 31 29 20 7b 0a 09 | 09 09 09 09 69 66 20 28 |(o1) {..|....if (|
|00030cd0| 6f 31 20 3e 20 4d 41 58 | 5f 52 45 41 44 5f 53 49 |o1 > MAX|_READ_SI|
|00030ce0| 5a 45 29 20 7b 0a 09 09 | 09 09 09 09 6f 32 20 3d |ZE) {...|....o2 =|
|00030cf0| 20 4d 41 58 5f 52 45 41 | 44 5f 53 49 5a 45 3b 0a | MAX_REA|D_SIZE;.|
|00030d00| 09 09 09 09 09 09 6f 31 | 20 2d 3d 20 6f 32 3b 0a |......o1| -= o2;.|
|00030d10| 09 09 09 09 09 7d 20 65 | 6c 73 65 20 7b 0a 09 09 |.....} e|lse {...|
|00030d20| 09 09 09 09 6f 32 20 3d | 20 6f 31 3b 0a 09 09 09 |....o2 =| o1;....|
|00030d30| 09 09 09 6f 31 20 3d 20 | 30 3b 0a 09 09 09 09 09 |...o1 = |0;......|
|00030d40| 7d 0a 09 09 09 09 09 73 | 77 69 74 63 68 20 28 77 |}......s|witch (w|
|00030d50| 72 69 74 65 5f 66 69 6c | 65 28 66 74 70 5f 73 69 |rite_fil|e(ftp_si|
|00030d60| 74 65 2c 20 73 2c 20 26 | 6f 32 29 29 20 7b 0a 09 |te, s, &|o2)) {..|
|00030d70| 09 09 09 09 63 61 73 65 | 20 4e 4f 5f 45 52 52 4f |....case| NO_ERRO|
|00030d80| 52 3a 0a 09 09 09 09 09 | 09 73 20 2b 3d 20 6f 32 |R:......|.s += o2|
|00030d90| 3b 0a 09 09 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |;.......|break;..|
|00030da0| 09 09 09 09 63 61 73 65 | 20 45 52 52 4f 52 5f 45 |....case| ERROR_E|
|00030db0| 4f 46 3a 0a 09 09 09 09 | 09 09 73 20 2b 3d 20 6f |OF:.....|..s += o|
|00030dc0| 32 3b 0a 09 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |2;......|.dp->dp_|
|00030dd0| 52 65 73 31 20 3d 20 73 | 20 2d 20 28 62 38 20 2a |Res1 = s| - (b8 *|
|00030de0| 29 64 70 2d 3e 64 70 5f | 41 72 67 32 3b 0a 09 09 |)dp->dp_|Arg2;...|
|00030df0| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 32 20 |....dp->|dp_Res2 |
|00030e00| 3d 20 30 3b 0a 09 09 09 | 09 09 09 6f 31 20 3d 20 |= 0;....|...o1 = |
|00030e10| 30 3b 0a 09 09 09 09 09 | 09 66 69 70 2d 3e 65 6f |0;......|.fip->eo|
|00030e20| 66 20 3d 20 74 72 75 65 | 3b 0a 09 09 09 09 09 09 |f = true|;.......|
|00030e30| 62 72 65 61 6b 3b 0a 09 | 09 09 09 09 64 65 66 61 |break;..|....defa|
|00030e40| 75 6c 74 3a 0a 09 09 09 | 09 09 09 64 70 2d 3e 64 |ult:....|...dp->d|
|00030e50| 70 5f 52 65 73 31 20 3d | 20 2d 31 3b 0a 09 09 09 |p_Res1 =| -1;....|
|00030e60| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 32 20 3d |...dp->d|p_Res2 =|
|00030e70| 20 45 52 52 4f 52 5f 4f | 42 4a 45 43 54 5f 4e 4f | ERROR_O|BJECT_NO|
|00030e80| 54 5f 46 4f 55 4e 44 3b | 0a 09 09 09 09 09 09 6f |T_FOUND;|.......o|
|00030e90| 31 20 3d 20 30 3b 0a 09 | 09 09 09 09 09 62 72 65 |1 = 0;..|.....bre|
|00030ea0| 61 6b 3b 0a 09 09 09 09 | 09 7d 0a 09 09 09 09 09 |ak;.....|.}......|
|00030eb0| 66 69 70 2d 3e 72 70 6f | 73 20 2b 3d 20 6f 32 3b |fip->rpo|s += o2;|
|00030ec0| 0a 09 09 09 09 09 66 69 | 70 2d 3e 76 70 6f 73 20 |......fi|p->vpos |
|00030ed0| 3d 20 66 69 70 2d 3e 72 | 70 6f 73 3b 0a 09 09 09 |= fip->r|pos;....|
|00030ee0| 09 09 74 73 6d 20 3d 20 | 67 65 74 5f 73 6d 28 66 |..tsm = |get_sm(f|
|00030ef0| 74 70 5f 73 69 74 65 29 | 3b 0a 09 09 09 09 09 69 |tp_site)|;......i|
|00030f00| 66 20 28 74 73 6d 29 20 | 7b 0a 09 09 09 09 09 09 |f (tsm) |{.......|
|00030f10| 74 73 6d 2d 3e 63 6f 6d | 6d 61 6e 64 20 3d 20 53 |tsm->com|mand = S|
|00030f20| 4d 5f 50 52 4f 47 52 45 | 53 53 3b 0a 09 09 09 09 |M_PROGRE|SS;.....|
|00030f30| 09 09 50 75 74 4d 73 67 | 28 73 74 61 74 75 73 5f |..PutMsg|(status_|
|00030f40| 70 6f 72 74 2c 20 26 74 | 73 6d 2d 3e 68 65 61 64 |port, &t|sm->head|
|00030f50| 65 72 29 3b 0a 09 09 09 | 09 09 7d 0a 09 09 09 09 |er);....|..}.....|
|00030f60| 7d 0a 09 09 09 09 0a 09 | 09 09 09 64 70 2d 3e 64 |}.......|...dp->d|
|00030f70| 70 5f 52 65 73 31 20 3d | 20 73 20 2d 20 28 62 38 |p_Res1 =| s - (b8|
|00030f80| 20 2a 29 64 70 2d 3e 64 | 70 5f 41 72 67 32 3b 0a | *)dp->d|p_Arg2;.|
|00030f90| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 32 20 |....dp->|dp_Res2 |
|00030fa0| 3d 20 30 3b 0a 0a 09 09 | 09 09 62 72 65 61 6b 3b |= 0;....|..break;|
|00030fb0| 0a 09 09 09 63 61 73 65 | 20 41 43 54 49 4f 4e 5f |....case| ACTION_|
|00030fc0| 46 49 4e 44 49 4e 50 55 | 54 3a 0a 09 09 09 63 61 |FINDINPU|T:....ca|
|00030fd0| 73 65 20 41 43 54 49 4f | 4e 5f 46 49 4e 44 4f 55 |se ACTIO|N_FINDOU|
|00030fe0| 54 50 55 54 3a 0a 09 09 | 09 09 69 66 20 28 21 73 |TPUT:...|..if (!s|
|00030ff0| 70 6c 69 74 5f 64 61 74 | 61 28 28 6c 6f 63 6b 20 |plit_dat|a((lock |
|00031000| 00 00 00 10 00 00 01 88 | 00 00 00 1b 00 00 00 00 |........|........|
|00031010| 00 00 00 00 ff ff d2 3f | 00 00 00 00 00 00 00 00 |.......?|........|
|00031020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00031030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00031040| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00031050| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00031060| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00031070| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00031080| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00031090| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000310a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000310b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000310c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 01 a3 |........|........|
|000310d0| 00 00 01 a2 00 00 01 a1 | 00 00 01 a0 00 00 01 9f |........|........|
|000310e0| 00 00 01 9e 00 00 01 9d | 00 00 01 9c 00 00 01 9b |........|........|
|000310f0| 00 00 01 9a 00 00 01 99 | 00 00 01 98 00 00 01 97 |........|........|
|00031100| 00 00 01 96 00 00 01 95 | 00 00 01 94 00 00 01 93 |........|........|
|00031110| 00 00 01 92 00 00 01 91 | 00 00 01 90 00 00 01 8f |........|........|
|00031120| 00 00 01 8e 00 00 01 8d | 00 00 01 8c 00 00 01 8b |........|........|
|00031130| 00 00 01 8a 00 00 01 89 | 00 00 00 00 00 00 00 00 |........|........|
|00031140| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00031150| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00031160| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00031170| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00031180| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00031190| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000311a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000311b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000311c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000311d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000311e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000311f0| 00 00 00 00 00 00 01 3f | 00 00 00 00 ff ff ff fd |.......?|........|
|00031200| 2a 29 28 64 70 2d 3e 64 | 70 5f 41 72 67 32 20 3c |*)(dp->d|p_Arg2 <|
|00031210| 3c 20 32 29 2c 0a 09 09 | 09 09 09 09 09 28 62 38 |< 2),...|.....(b8|
|00031220| 20 2a 29 28 64 70 2d 3e | 64 70 5f 41 72 67 33 20 | *)(dp->|dp_Arg3 |
|00031230| 3c 3c 20 32 29 2c 20 26 | 73 64 29 29 20 7b 0a 09 |<< 2), &|sd)) {..|
|00031240| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |....dp->|dp_Res1 |
|00031250| 3d 20 44 4f 53 46 41 4c | 53 45 3b 0a 09 09 09 09 |= DOSFAL|SE;.....|
|00031260| 09 64 70 2d 3e 64 70 5f | 52 65 73 32 20 3d 20 45 |.dp->dp_|Res2 = E|
|00031270| 52 52 4f 52 5f 4e 4f 5f | 46 52 45 45 5f 53 54 4f |RROR_NO_|FREE_STO|
|00031280| 52 45 3b 0a 09 09 09 09 | 09 62 72 65 61 6b 3b 0a |RE;.....|.break;.|
|00031290| 09 09 09 09 7d 0a 09 09 | 09 09 0a 09 09 09 09 69 |....}...|.......i|
|000312a0| 66 20 28 21 66 74 70 5f | 73 69 74 65 2d 3e 63 6f |f (!ftp_|site->co|
|000312b0| 6e 6e 65 63 74 65 64 29 | 0a 09 09 09 09 09 69 6e |nnected)|......in|
|000312c0| 69 74 5f 63 6f 6e 6e 65 | 63 74 28 66 74 70 5f 73 |it_conne|ct(ftp_s|
|000312d0| 69 74 65 29 3b 0a 09 09 | 09 09 0a 09 09 09 09 69 |ite);...|.......i|
|000312e0| 66 20 28 21 66 74 70 5f | 73 69 74 65 2d 3e 63 6f |f (!ftp_|site->co|
|000312f0| 6e 6e 65 63 74 65 64 29 | 20 7b 0a 09 09 09 09 09 |nnected)| {......|
|00031300| 64 70 2d 3e 64 70 5f 52 | 65 73 31 20 3d 20 44 4f |dp->dp_R|es1 = DO|
|00031310| 53 46 41 4c 53 45 3b 0a | 09 09 09 09 09 64 70 2d |SFALSE;.|.....dp-|
|00031320| 3e 64 70 5f 52 65 73 32 | 20 3d 20 45 52 52 4f 52 |>dp_Res2| = ERROR|
|00031330| 5f 4f 42 4a 45 43 54 5f | 4e 4f 54 5f 46 4f 55 4e |_OBJECT_|NOT_FOUN|
|00031340| 44 3b 0a 09 09 09 09 09 | 0a 09 09 09 09 09 65 6e |D;......|......en|
|00031350| 64 5f 73 70 6c 69 74 28 | 26 73 64 29 3b 0a 09 09 |d_split(|&sd);...|
|00031360| 09 09 09 62 72 65 61 6b | 3b 0a 09 09 09 09 7d 0a |...break|;.....}.|
|00031370| 09 09 09 09 0a 09 09 09 | 09 69 66 20 28 66 74 70 |........|.if (ftp|
|00031380| 5f 73 69 74 65 2d 3e 63 | 66 69 6c 65 29 20 7b 0a |_site->c|file) {.|
|00031390| 09 09 09 09 09 66 69 70 | 20 3d 20 66 74 70 5f 73 |.....fip| = ftp_s|
|000313a0| 69 74 65 2d 3e 66 69 6c | 65 5f 6c 69 73 74 3b 0a |ite->fil|e_list;.|
|000313b0| 09 09 09 09 09 76 65 72 | 69 66 79 28 66 69 70 2c |.....ver|ify(fip,|
|000313c0| 20 56 5f 66 69 6c 65 5f | 69 6e 66 6f 29 3b 0a 09 | V_file_|info);..|
|000313d0| 09 09 09 09 0a 09 09 09 | 09 09 69 66 20 28 66 69 |........|..if (fi|
|000313e0| 70 2d 3e 63 6c 6f 73 65 | 64 29 20 7b 0a 09 09 09 |p->close|d) {....|
|000313f0| 09 09 09 69 66 20 28 73 | 74 72 63 6d 70 28 73 64 |...if (s|trcmp(sd|
|00031400| 2e 70 61 74 68 2c 20 66 | 69 70 2d 3e 66 6e 61 6d |.path, f|ip->fnam|
|00031410| 65 29 20 3d 3d 20 30 20 | 26 26 0a 09 09 09 09 09 |e) == 0 |&&......|
|00031420| 09 09 09 64 70 2d 3e 64 | 70 5f 54 79 70 65 20 3d |...dp->d|p_Type =|
|00031430| 3d 20 41 43 54 49 4f 4e | 5f 46 49 4e 44 49 4e 50 |= ACTION|_FINDINP|
|00031440| 55 54 29 20 7b 0a 09 09 | 09 09 09 09 09 2f 2a 20 |UT) {...|...../* |
|00031450| 22 72 65 6f 70 65 6e 22 | 20 74 68 69 73 20 66 69 |"reopen"| this fi|
|00031460| 6c 65 20 2a 2f 0a 09 09 | 09 09 09 09 09 66 68 20 |le */...|.....fh |
|00031470| 3d 20 28 73 74 72 75 63 | 74 20 46 69 6c 65 48 61 |= (struc|t FileHa|
|00031480| 6e 64 6c 65 20 2a 29 28 | 64 70 2d 3e 64 70 5f 41 |ndle *)(|dp->dp_A|
|00031490| 72 67 31 20 3c 3c 20 32 | 29 3b 0a 09 09 09 09 0a |rg1 << 2|);......|
|000314a0| 09 09 09 09 09 09 09 74 | 72 75 74 68 28 66 68 20 |.......t|ruth(fh |
|000314b0| 21 3d 20 6e 69 6c 29 3b | 0a 09 09 09 09 0a 09 09 |!= nil);|........|
|000314c0| 09 09 09 09 09 66 68 2d | 3e 66 68 5f 54 79 70 65 |.....fh-|>fh_Type|
|000314d0| 20 3d 20 66 74 70 5f 70 | 6f 72 74 3b 0a 09 09 09 | = ftp_p|ort;....|
|000314e0| 09 09 09 09 66 68 2d 3e | 66 68 5f 41 72 67 73 20 |....fh->|fh_Args |
|000314f0| 3d 20 28 62 33 32 29 66 | 69 70 3b 0a 09 09 09 09 |= (b32)f|ip;.....|
|00031500| 0a 09 09 09 09 09 09 09 | 66 69 70 2d 3e 63 6c 6f |........|fip->clo|
|00031510| 73 65 64 20 3d 20 66 61 | 6c 73 65 3b 0a 09 09 09 |sed = fa|lse;....|
|00031520| 09 09 09 09 66 69 70 2d | 3e 76 70 6f 73 20 3d 20 |....fip-|>vpos = |
|00031530| 30 3b 0a 09 09 09 09 09 | 09 09 66 69 70 2d 3e 73 |0;......|..fip->s|
|00031540| 65 65 6b 5f 65 6e 64 20 | 3d 20 66 61 6c 73 65 3b |eek_end |= false;|
|00031550| 0a 09 09 09 09 09 09 09 | 0a 09 09 09 09 09 09 09 |........|........|
|00031560| 64 70 2d 3e 64 70 5f 52 | 65 73 31 20 3d 20 44 4f |dp->dp_R|es1 = DO|
|00031570| 53 54 52 55 45 3b 0a 09 | 09 09 09 09 09 09 64 70 |STRUE;..|......dp|
|00031580| 2d 3e 64 70 5f 52 65 73 | 32 20 3d 20 30 3b 0a 09 |->dp_Res|2 = 0;..|
|00031590| 09 09 09 09 09 09 0a 09 | 09 09 09 09 09 09 65 6e |........|......en|
|000315a0| 64 5f 73 70 6c 69 74 28 | 26 73 64 29 3b 0a 09 09 |d_split(|&sd);...|
|000315b0| 09 09 09 09 09 62 72 65 | 61 6b 3b 0a 09 09 09 09 |.....bre|ak;.....|
|000315c0| 09 09 7d 0a 09 09 09 09 | 09 09 0a 09 09 09 09 09 |..}.....|........|
|000315d0| 09 63 6c 6f 73 65 5f 66 | 69 6c 65 28 66 74 70 5f |.close_f|ile(ftp_|
|000315e0| 73 69 74 65 2c 20 74 72 | 75 65 29 3b 0a 09 09 09 |site, tr|ue);....|
|000315f0| 09 09 7d 20 65 6c 73 65 | 20 7b 0a 09 09 09 09 09 |..} else| {......|
|00031600| 09 2f 2a 20 6f 6e 6c 79 | 20 6f 6e 65 20 66 69 6c |./* only| one fil|
|00031610| 65 20 61 74 20 61 20 74 | 69 6d 65 21 20 20 3a 28 |e at a t|ime! :(|
|00031620| 20 2a 2f 0a 09 09 09 09 | 09 09 64 70 2d 3e 64 70 | */.....|..dp->dp|
|00031630| 5f 52 65 73 31 20 3d 20 | 44 4f 53 46 41 4c 53 45 |_Res1 = |DOSFALSE|
|00031640| 3b 0a 09 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 |;.......|dp->dp_R|
|00031650| 65 73 32 20 3d 20 45 52 | 52 4f 52 5f 4f 42 4a 45 |es2 = ER|ROR_OBJE|
|00031660| 43 54 5f 49 4e 5f 55 53 | 45 3b 0a 09 09 09 09 09 |CT_IN_US|E;......|
|00031670| 0a 09 09 09 09 09 09 65 | 6e 64 5f 73 70 6c 69 74 |.......e|nd_split|
|00031680| 28 26 73 64 29 3b 0a 09 | 09 09 09 09 09 62 72 65 |(&sd);..|.....bre|
|00031690| 61 6b 3b 0a 09 09 09 09 | 09 7d 0a 09 09 09 09 7d |ak;.....|.}.....}|
|000316a0| 0a 09 09 09 09 0a 09 09 | 09 09 2f 2a 20 73 65 61 |........|../* sea|
|000316b0| 72 63 68 20 66 6f 72 20 | 61 20 63 6f 6e 66 6c 69 |rch for |a confli|
|000316c0| 63 74 69 6e 67 20 6c 6f | 63 6b 20 2a 2f 0a 09 09 |cting lo|ck */...|
|000316d0| 09 09 09 0a 09 09 09 09 | 73 6c 6f 63 6b 20 3d 20 |........|slock = |
|000316e0| 66 74 70 5f 73 69 74 65 | 2d 3e 6c 6f 63 6b 5f 6c |ftp_site|->lock_l|
|000316f0| 69 73 74 3b 0a 09 09 09 | 09 77 68 69 6c 65 20 28 |ist;....|.while (|
|00031700| 73 6c 6f 63 6b 29 20 7b | 0a 09 09 09 09 09 69 66 |slock) {|......if|
|00031710| 20 28 73 74 72 63 6d 70 | 28 73 64 2e 70 61 74 68 | (strcmp|(sd.path|
|00031720| 2c 20 73 6c 6f 63 6b 2d | 3e 66 6e 61 6d 65 29 20 |, slock-|>fname) |
|00031730| 3d 3d 20 30 29 20 7b 0a | 09 09 09 09 09 09 69 66 |== 0) {.|......if|
|00031740| 20 28 64 70 2d 3e 64 70 | 5f 54 79 70 65 20 3d 3d | (dp->dp|_Type ==|
|00031750| 20 41 43 54 49 4f 4e 5f | 46 49 4e 44 4f 55 54 50 | ACTION_|FINDOUTP|
|00031760| 55 54 20 7c 7c 20 73 6c | 6f 63 6b 2d 3e 66 6c 2e |UT || sl|ock->fl.|
|00031770| 66 6c 5f 41 63 63 65 73 | 73 20 3d 3d 20 45 58 43 |fl_Acces|s == EXC|
|00031780| 4c 55 53 49 56 45 5f 4c | 4f 43 4b 29 20 7b 0a 09 |LUSIVE_L|OCK) {..|
|00031790| 09 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|000317a0| 31 20 3d 20 30 3b 0a 09 | 09 09 09 09 09 09 64 70 |1 = 0;..|......dp|
|000317b0| 2d 3e 64 70 5f 52 65 73 | 32 20 3d 20 45 52 52 4f |->dp_Res|2 = ERRO|
|000317c0| 52 5f 4f 42 4a 45 43 54 | 5f 49 4e 5f 55 53 45 3b |R_OBJECT|_IN_USE;|
|000317d0| 0a 09 09 09 09 09 09 09 | 0a 09 09 09 09 09 09 09 |........|........|
|000317e0| 65 6e 64 5f 73 70 6c 69 | 74 28 26 73 64 29 3b 0a |end_spli|t(&sd);.|
|000317f0| 09 09 09 09 09 09 09 0a | 09 09 09 09 09 09 09 67 |........|.......g|
|00031800| 6f 74 6f 20 72 65 70 6c | 79 5f 6d 73 67 3b 0a 09 |oto repl|y_msg;..|
|00031810| 09 09 09 09 09 7d 0a 09 | 09 09 09 09 7d 0a 09 09 |.....}..|....}...|
|00031820| 09 09 09 73 6c 6f 63 6b | 20 3d 20 73 6c 6f 63 6b |...slock| = slock|
|00031830| 2d 3e 6e 65 78 74 3b 0a | 09 09 09 09 7d 0a 09 09 |->next;.|....}...|
|00031840| 09 09 0a 09 09 09 09 2f | 2a 20 6d 61 6b 65 20 73 |......./|* make s|
|00031850| 75 72 65 20 77 65 20 68 | 61 76 65 20 69 6e 66 6f |ure we h|ave info|
|00031860| 72 6d 61 74 69 6f 6e 20 | 6f 6e 20 74 68 69 73 20 |rmation |on this |
|00031870| 66 69 6c 65 20 42 45 46 | 4f 52 45 20 77 65 20 73 |file BEF|ORE we s|
|00031880| 74 61 72 74 20 2a 2f 0a | 09 09 09 09 0a 09 09 09 |tart */.|........|
|00031890| 09 69 66 20 28 64 70 2d | 3e 64 70 5f 54 79 70 65 |.if (dp-|>dp_Type|
|000318a0| 20 3d 3d 20 41 43 54 49 | 4f 4e 5f 46 49 4e 44 49 | == ACTI|ON_FINDI|
|000318b0| 4e 50 55 54 29 20 7b 0a | 09 09 09 09 09 66 69 20 |NPUT) {.|.....fi |
|000318c0| 3d 20 67 65 74 5f 69 6e | 66 6f 28 66 74 70 5f 73 |= get_in|fo(ftp_s|
|000318d0| 69 74 65 2c 20 73 64 2e | 70 61 74 68 29 3b 0a 09 |ite, sd.|path);..|
|000318e0| 09 09 09 2f 2f 09 69 66 | 20 28 21 66 69 29 20 7b |...//.if| (!fi) {|
|000318f0| 0a 09 09 09 09 2f 2f 09 | 09 64 70 2d 3e 64 70 5f |.....//.|.dp->dp_|
|00031900| 52 65 73 31 20 3d 20 30 | 3b 0a 09 09 09 09 2f 2f |Res1 = 0|;.....//|
|00031910| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 32 20 3d 20 |..dp->dp|_Res2 = |
|00031920| 45 52 52 4f 52 5f 4f 42 | 4a 45 43 54 5f 4e 4f 54 |ERROR_OB|JECT_NOT|
|00031930| 5f 46 4f 55 4e 44 3b 0a | 09 09 09 09 2f 2f 09 09 |_FOUND;.|....//..|
|00031940| 0a 09 09 09 09 2f 2f 09 | 09 65 6e 64 5f 73 70 6c |.....//.|.end_spl|
|00031950| 69 74 28 26 73 64 29 3b | 0a 09 09 09 09 2f 2f 09 |it(&sd);|.....//.|
|00031960| 0a 09 09 09 09 2f 2f 09 | 09 62 72 65 61 6b 3b 0a |.....//.|.break;.|
|00031970| 09 09 09 09 2f 2f 09 7d | 0a 09 09 09 09 7d 20 65 |....//.}|.....} e|
|00031980| 6c 73 65 20 7b 0a 09 09 | 09 09 09 66 69 20 3d 20 |lse {...|...fi = |
|00031990| 6e 69 6c 3b 0a 09 09 09 | 09 7d 0a 09 09 09 09 0a |nil;....|.}......|
|000319a0| 09 09 09 09 69 66 20 28 | 64 70 2d 3e 64 70 5f 54 |....if (|dp->dp_T|
|000319b0| 79 70 65 20 3d 3d 20 41 | 43 54 49 4f 4e 5f 46 49 |ype == A|CTION_FI|
|000319c0| 4e 44 49 4e 50 55 54 29 | 20 7b 0a 09 09 09 09 09 |NDINPUT)| {......|
|000319d0| 69 66 20 28 66 69 29 20 | 7b 0a 09 09 09 09 09 09 |if (fi) |{.......|
|000319e0| 64 70 2d 3e 64 70 5f 52 | 65 73 32 20 3d 20 6f 70 |dp->dp_R|es2 = op|
|000319f0| 65 6e 5f 66 69 6c 65 28 | 66 74 70 5f 73 69 74 65 |en_file(|ftp_site|
|00031a00| 2c 20 73 64 2e 70 61 74 | 68 2c 20 66 61 6c 73 65 |, sd.pat|h, false|
|00031a10| 2c 20 66 69 2d 3e 6e 61 | 6d 65 29 3b 0a 09 09 09 |, fi->na|me);....|
|00031a20| 09 09 7d 20 65 6c 73 65 | 20 7b 0a 09 09 09 09 09 |..} else| {......|
|00031a30| 09 64 70 2d 3e 64 70 5f | 52 65 73 32 20 3d 20 6f |.dp->dp_|Res2 = o|
|00031a40| 70 65 6e 5f 66 69 6c 65 | 28 66 74 70 5f 73 69 74 |pen_file|(ftp_sit|
|00031a50| 65 2c 20 73 64 2e 70 61 | 74 68 2c 20 66 61 6c 73 |e, sd.pa|th, fals|
|00031a60| 65 2c 20 6e 69 6c 29 3b | 0a 09 09 09 09 09 7d 0a |e, nil);|......}.|
|00031a70| 09 09 09 09 7d 20 65 6c | 73 65 20 7b 0a 09 09 09 |....} el|se {....|
|00031a80| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 32 20 3d 20 |..dp->dp|_Res2 = |
|00031a90| 6f 70 65 6e 5f 66 69 6c | 65 28 66 74 70 5f 73 69 |open_fil|e(ftp_si|
|00031aa0| 74 65 2c 20 73 64 2e 70 | 61 74 68 2c 20 74 72 75 |te, sd.p|ath, tru|
|00031ab0| 65 2c 20 6e 69 6c 29 3b | 0a 09 09 09 09 09 66 6c |e, nil);|......fl|
|00031ac0| 75 73 68 5f 69 6e 66 6f | 28 66 74 70 5f 73 69 74 |ush_info|(ftp_sit|
|00031ad0| 65 2c 20 73 64 2e 70 61 | 74 68 29 3b 0a 09 09 09 |e, sd.pa|th);....|
|00031ae0| 09 7d 0a 09 09 09 09 0a | 09 09 09 09 69 66 20 28 |.}......|....if (|
|00031af0| 64 70 2d 3e 64 70 5f 52 | 65 73 32 20 21 3d 20 30 |dp->dp_R|es2 != 0|
|00031b00| 29 20 7b 0a 09 09 09 09 | 09 65 6e 64 5f 73 70 6c |) {.....|.end_spl|
|00031b10| 69 74 28 26 73 64 29 3b | 0a 09 09 09 09 09 0a 09 |it(&sd);|........|
|00031b20| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |....dp->|dp_Res1 |
|00031b30| 3d 20 30 3b 0a 09 09 09 | 09 09 62 72 65 61 6b 3b |= 0;....|..break;|
|00031b40| 0a 09 09 09 09 7d 0a 09 | 09 09 09 0a 09 09 09 09 |.....}..|........|
|00031b50| 66 69 70 20 3d 20 66 74 | 70 5f 73 69 74 65 2d 3e |fip = ft|p_site->|
|00031b60| 66 69 6c 65 5f 6c 69 73 | 74 3b 0a 09 09 09 09 0a |file_lis|t;......|
|00031b70| 09 09 09 09 69 66 20 28 | 66 69 29 20 7b 0a 09 09 |....if (|fi) {...|
|00031b80| 09 09 09 66 69 70 2d 3e | 65 6e 64 20 3d 20 66 69 |...fip->|end = fi|
|00031b90| 2d 3e 73 69 7a 65 3b 0a | 09 09 09 09 7d 20 65 6c |->size;.|....} el|
|00031ba0| 73 65 20 7b 0a 09 09 09 | 09 09 66 69 70 2d 3e 65 |se {....|..fip->e|
|00031bb0| 6e 64 20 3d 20 30 3b 0a | 09 09 09 09 7d 0a 0a 09 |nd = 0;.|....}...|
|00031bc0| 09 09 09 66 69 70 2d 3e | 70 6f 72 74 20 3d 20 6c |...fip->|port = l|
|00031bd0| 6f 63 61 6c 3b 0a 09 09 | 09 09 66 69 70 2d 3e 74 |ocal;...|..fip->t|
|00031be0| 79 70 65 20 3d 20 66 74 | 70 5f 73 69 74 65 2d 3e |ype = ft|p_site->|
|00031bf0| 63 66 69 6c 65 5f 74 79 | 70 65 20 3d 20 64 70 2d |cfile_ty|pe = dp-|
|00031c00| 3e 64 70 5f 54 79 70 65 | 3b 0a 09 09 09 09 0a 09 |>dp_Type|;.......|
|00031c10| 09 09 09 65 6e 64 5f 73 | 70 6c 69 74 28 26 73 64 |...end_s|plit(&sd|
|00031c20| 29 3b 0a 09 09 09 09 0a | 09 09 09 09 66 68 20 3d |);......|....fh =|
|00031c30| 20 28 73 74 72 75 63 74 | 20 46 69 6c 65 48 61 6e | (struct| FileHan|
|00031c40| 64 6c 65 20 2a 29 28 64 | 70 2d 3e 64 70 5f 41 72 |dle *)(d|p->dp_Ar|
|00031c50| 67 31 20 3c 3c 20 32 29 | 3b 0a 09 09 09 09 0a 09 |g1 << 2)|;.......|
|00031c60| 09 09 09 74 72 75 74 68 | 28 66 68 20 21 3d 20 6e |...truth|(fh != n|
|00031c70| 69 6c 29 3b 0a 09 09 09 | 09 0a 09 09 09 09 66 68 |il);....|......fh|
|00031c80| 2d 3e 66 68 5f 54 79 70 | 65 20 3d 20 66 74 70 5f |->fh_Typ|e = ftp_|
|00031c90| 70 6f 72 74 3b 0a 09 09 | 09 09 66 68 2d 3e 66 68 |port;...|..fh->fh|
|00031ca0| 5f 41 72 67 73 20 3d 20 | 28 62 33 32 29 66 69 70 |_Args = |(b32)fip|
|00031cb0| 3b 0a 09 09 09 09 0a 09 | 09 09 09 69 66 20 28 64 |;.......|...if (d|
|00031cc0| 70 2d 3e 64 70 5f 54 79 | 70 65 20 3d 3d 20 41 43 |p->dp_Ty|pe == AC|
|00031cd0| 54 49 4f 4e 5f 46 49 4e | 44 49 4e 50 55 54 29 20 |TION_FIN|DINPUT) |
|00031ce0| 7b 0a 09 09 09 09 09 6f | 31 20 3d 20 46 49 52 53 |{......o|1 = FIRS|
|00031cf0| 54 5f 42 4c 4f 43 4b 5f | 53 49 5a 45 3b 0a 09 09 |T_BLOCK_|SIZE;...|
|00031d00| 09 09 09 73 77 69 74 63 | 68 20 28 72 65 61 64 5f |...switc|h (read_|
|00031d10| 66 69 6c 65 28 66 74 70 | 5f 73 69 74 65 2c 20 66 |file(ftp|_site, f|
|00031d20| 69 70 2d 3e 66 69 72 73 | 74 5f 62 6c 6f 63 6b 2c |ip->firs|t_block,|
|00031d30| 20 26 6f 31 29 29 20 7b | 0a 09 09 09 09 09 63 61 | &o1)) {|......ca|
|00031d40| 73 65 20 45 52 52 4f 52 | 5f 45 4f 46 3a 0a 09 09 |se ERROR|_EOF:...|
|00031d50| 09 09 09 09 66 69 70 2d | 3e 65 6f 66 20 3d 20 74 |....fip-|>eof = t|
|00031d60| 72 75 65 3b 0a 09 09 09 | 09 09 63 61 73 65 20 4e |rue;....|..case N|
|00031d70| 4f 5f 45 52 52 4f 52 3a | 0a 09 09 09 09 09 09 66 |O_ERROR:|.......f|
|00031d80| 69 70 2d 3e 72 70 6f 73 | 20 3d 20 6f 31 3b 0a 09 |ip->rpos| = o1;..|
|00031d90| 09 09 09 09 09 0a 09 09 | 09 09 09 09 64 70 2d 3e |........|....dp->|
|00031da0| 64 70 5f 52 65 73 31 20 | 3d 20 44 4f 53 54 52 55 |dp_Res1 |= DOSTRU|
|00031db0| 45 3b 0a 09 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |E;......|.dp->dp_|
|00031dc0| 52 65 73 32 20 3d 20 30 | 3b 0a 09 09 09 09 09 09 |Res2 = 0|;.......|
|00031dd0| 0a 09 09 09 09 09 09 62 | 72 65 61 6b 3b 0a 09 09 |.......b|reak;...|
|00031de0| 09 09 09 64 65 66 61 75 | 6c 74 3a 0a 09 09 09 09 |...defau|lt:.....|
|00031df0| 09 09 63 6c 6f 73 65 5f | 66 69 6c 65 28 66 74 70 |..close_|file(ftp|
|00031e00| 5f 73 69 74 65 2c 20 74 | 72 75 65 29 3b 0a 09 09 |_site, t|rue);...|
|00031e10| 09 09 09 09 0a 09 09 09 | 09 09 09 64 70 2d 3e 64 |........|...dp->d|
|00031e20| 70 5f 52 65 73 31 20 3d | 20 44 4f 53 46 41 4c 53 |p_Res1 =| DOSFALS|
|00031e30| 45 3b 0a 09 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |E;......|.dp->dp_|
|00031e40| 52 65 73 32 20 3d 20 45 | 52 52 4f 52 5f 4f 42 4a |Res2 = E|RROR_OBJ|
|00031e50| 45 43 54 5f 4e 4f 54 5f | 46 4f 55 4e 44 3b 0a 09 |ECT_NOT_|FOUND;..|
|00031e60| 09 09 09 09 09 0a 09 09 | 09 09 09 09 62 72 65 61 |........|....brea|
|00031e70| 6b 3b 0a 09 09 09 09 09 | 7d 0a 09 09 09 09 7d 20 |k;......|}.....} |
|00031e80| 65 6c 73 65 20 7b 0a 09 | 09 09 09 09 64 70 2d 3e |else {..|....dp->|
|00031e90| 64 70 5f 52 65 73 31 3d | 20 44 4f 53 54 52 55 45 |dp_Res1=| DOSTRUE|
|00031ea0| 3b 0a 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |;......d|p->dp_Re|
|00031eb0| 73 32 20 3d 20 30 3b 0a | 09 09 09 09 7d 0a 0a 09 |s2 = 0;.|....}...|
|00031ec0| 09 09 09 62 72 65 61 6b | 3b 0a 09 09 09 63 61 73 |...break|;....cas|
|00031ed0| 65 20 41 43 54 49 4f 4e | 5f 45 4e 44 3a 0a 09 09 |e ACTION|_END:...|
|00031ee0| 09 09 66 69 70 20 3d 20 | 28 66 69 6c 65 5f 69 6e |..fip = |(file_in|
|00031ef0| 66 6f 20 2a 29 64 70 2d | 3e 64 70 5f 41 72 67 31 |fo *)dp-|>dp_Arg1|
|00031f00| 3b 0a 09 09 09 09 0a 09 | 09 09 09 76 65 72 69 66 |;.......|...verif|
|00031f10| 79 28 66 69 70 2c 20 56 | 5f 66 69 6c 65 5f 69 6e |y(fip, V|_file_in|
|00031f20| 66 6f 29 3b 0a 09 09 09 | 09 0a 09 09 09 09 69 66 |fo);....|......if|
|00031f30| 20 28 66 69 70 2d 3e 74 | 79 70 65 20 3d 3d 20 41 | (fip->t|ype == A|
|00031f40| 43 54 49 4f 4e 5f 46 49 | 4e 44 49 4e 50 55 54 20 |CTION_FI|NDINPUT |
|00031f50| 26 26 20 66 69 70 2d 3e | 72 70 6f 73 20 3c 3d 20 |&& fip->|rpos <= |
|00031f60| 46 49 52 53 54 5f 42 4c | 4f 43 4b 5f 53 49 5a 45 |FIRST_BL|OCK_SIZE|
|00031f70| 29 20 7b 0a 09 09 09 09 | 09 66 69 70 2d 3e 63 6c |) {.....|.fip->cl|
|00031f80| 6f 73 65 64 20 3d 20 74 | 72 75 65 3b 0a 09 09 09 |osed = t|rue;....|
|00031f90| 09 7d 20 65 6c 73 65 20 | 7b 0a 09 09 09 09 09 63 |.} else |{......c|
|00031fa0| 6c 6f 73 65 5f 66 69 6c | 65 28 66 74 70 5f 73 69 |lose_fil|e(ftp_si|
|00031fb0| 74 65 2c 20 74 72 75 65 | 29 3b 0a 09 09 09 09 7d |te, true|);.....}|
|00031fc0| 0a 09 09 09 09 0a 09 09 | 09 09 64 70 2d 3e 64 70 |........|..dp->dp|
|00031fd0| 5f 52 65 73 31 20 3d 20 | 44 4f 53 54 52 55 45 3b |_Res1 = |DOSTRUE;|
|00031fe0| 0a 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 32 |.....dp-|>dp_Res2|
|00031ff0| 20 3d 20 30 3b 0a 09 09 | 09 09 0a 09 09 09 09 62 | = 0;...|.......b|
|00032000| 72 65 61 6b 3b 0a 09 09 | 09 63 61 73 65 20 41 43 |reak;...|.case AC|
|00032010| 54 49 4f 4e 5f 53 45 45 | 4b 3a 0a 09 09 09 09 66 |TION_SEE|K:.....f|
|00032020| 69 70 20 3d 20 28 66 69 | 6c 65 5f 69 6e 66 6f 20 |ip = (fi|le_info |
|00032030| 2a 29 64 70 2d 3e 64 70 | 5f 41 72 67 31 3b 0a 09 |*)dp->dp|_Arg1;..|
|00032040| 09 09 09 76 65 72 69 66 | 79 28 66 69 70 2c 20 56 |...verif|y(fip, V|
|00032050| 5f 66 69 6c 65 5f 69 6e | 66 6f 29 3b 0a 09 09 09 |_file_in|fo);....|
|00032060| 09 0a 09 09 09 09 69 66 | 20 28 64 70 2d 3e 64 70 |......if| (dp->dp|
|00032070| 5f 41 72 67 33 20 3d 3d | 20 4f 46 46 53 45 54 5f |_Arg3 ==| OFFSET_|
|00032080| 45 4e 44 20 26 26 20 64 | 70 2d 3e 64 70 5f 41 72 |END && d|p->dp_Ar|
|00032090| 67 32 20 3d 3d 20 30 29 | 20 7b 0a 09 09 09 09 09 |g2 == 0)| {......|
|000320a0| 2f 2a 20 67 6f 20 74 6f | 20 74 68 65 20 65 6e 64 |/* go to| the end|
|000320b0| 20 6f 66 20 74 68 65 20 | 66 69 6c 65 20 2e 2e 2e | of the |file ...|
|000320c0| 20 72 65 61 6c 6c 79 20 | 77 65 20 61 72 65 20 3a | really |we are :|
|000320d0| 29 20 2a 2f 0a 09 09 09 | 09 09 0a 09 09 09 09 09 |) */....|........|
|000320e0| 69 66 20 28 66 69 70 2d | 3e 73 65 65 6b 5f 65 6e |if (fip-|>seek_en|
|000320f0| 64 29 20 7b 0a 09 09 09 | 09 09 09 64 70 2d 3e 64 |d) {....|...dp->d|
|00032100| 70 5f 52 65 73 31 20 3d | 20 66 69 70 2d 3e 65 6e |p_Res1 =| fip->en|
|00032110| 64 3b 0a 09 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |d;......|.dp->dp_|
|00032120| 52 65 73 32 20 3d 20 30 | 3b 0a 09 09 09 09 09 09 |Res2 = 0|;.......|
|00032130| 62 72 65 61 6b 3b 0a 09 | 09 09 09 09 7d 0a 09 09 |break;..|....}...|
|00032140| 09 09 09 0a 09 09 09 09 | 09 69 66 20 28 66 69 70 |........|.if (fip|
|00032150| 2d 3e 74 79 70 65 20 3d | 3d 20 41 43 54 49 4f 4e |->type =|= ACTION|
|00032160| 5f 46 49 4e 44 49 4e 50 | 55 54 29 0a 09 09 09 09 |_FINDINP|UT).....|
|00032170| 09 09 66 69 70 2d 3e 73 | 65 65 6b 5f 65 6e 64 20 |..fip->s|eek_end |
|00032180| 3d 20 74 72 75 65 3b 0a | 09 09 09 09 09 0a 09 09 |= true;.|........|
|00032190| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 31 20 3d |...dp->d|p_Res1 =|
|000321a0| 20 66 69 70 2d 3e 76 70 | 6f 73 3b 0a 09 09 09 09 | fip->vp|os;.....|
|000321b0| 09 64 70 2d 3e 64 70 5f | 52 65 73 32 20 3d 20 30 |.dp->dp_|Res2 = 0|
|000321c0| 3b 0a 09 09 09 09 09 0a | 09 09 09 09 09 62 72 65 |;.......|.....bre|
|000321d0| 61 6b 3b 0a 09 09 09 09 | 7d 0a 09 09 09 09 0a 09 |ak;.....|}.......|
|000321e0| 09 09 09 69 66 20 28 64 | 70 2d 3e 64 70 5f 41 72 |...if (d|p->dp_Ar|
|000321f0| 67 33 20 3d 3d 20 4f 46 | 46 53 45 54 5f 42 45 47 |g3 == OF|FSET_BEG|
|00032200| 49 4e 4e 49 4e 47 29 20 | 7b 0a 09 09 09 09 09 6f |INNING) |{......o|
|00032210| 31 20 3d 20 64 70 2d 3e | 64 70 5f 41 72 67 32 3b |1 = dp->|dp_Arg2;|
|00032220| 0a 09 09 09 09 7d 20 65 | 6c 73 65 20 69 66 20 28 |.....} e|lse if (|
|00032230| 64 70 2d 3e 64 70 5f 41 | 72 67 33 20 3d 3d 20 4f |dp->dp_A|rg3 == O|
|00032240| 46 46 53 45 54 5f 45 4e | 44 29 20 7b 0a 09 09 09 |FFSET_EN|D) {....|
|00032250| 09 09 6f 31 20 3d 20 66 | 69 70 2d 3e 65 6e 64 20 |..o1 = f|ip->end |
|00032260| 2b 20 64 70 2d 3e 64 70 | 5f 41 72 67 32 3b 0a 09 |+ dp->dp|_Arg2;..|
|00032270| 09 09 09 7d 20 65 6c 73 | 65 20 69 66 20 28 64 70 |...} els|e if (dp|
|00032280| 2d 3e 64 70 5f 41 72 67 | 33 20 3d 3d 20 4f 46 46 |->dp_Arg|3 == OFF|
|00032290| 53 45 54 5f 43 55 52 52 | 45 4e 54 29 20 7b 0a 09 |SET_CURR|ENT) {..|
|000322a0| 09 09 09 09 6f 31 20 3d | 20 66 69 70 2d 3e 76 70 |....o1 =| fip->vp|
|000322b0| 6f 73 20 2b 20 64 70 2d | 3e 64 70 5f 41 72 67 32 |os + dp-|>dp_Arg2|
|000322c0| 3b 0a 09 09 09 09 7d 0a | 09 09 09 09 0a 09 09 09 |;.....}.|........|
|000322d0| 09 69 66 20 28 6f 31 20 | 3d 3d 20 66 69 70 2d 3e |.if (o1 |== fip->|
|000322e0| 76 70 6f 73 29 20 7b 0a | 09 09 09 09 09 2f 2a 20 |vpos) {.|...../* |
|000322f0| 6e 6f 74 20 61 63 74 75 | 61 6c 6c 79 20 6d 6f 76 |not actu|ally mov|
|00032300| 69 6e 67 20 2a 2f 0a 09 | 09 09 09 09 0a 09 09 09 |ing */..|........|
|00032310| 09 09 69 66 20 28 66 69 | 70 2d 3e 73 65 65 6b 5f |..if (fi|p->seek_|
|00032320| 65 6e 64 29 20 7b 0a 09 | 09 09 09 09 09 64 70 2d |end) {..|.....dp-|
|00032330| 3e 64 70 5f 52 65 73 31 | 20 3d 20 66 69 70 2d 3e |>dp_Res1| = fip->|
|00032340| 65 6e 64 3b 0a 09 09 09 | 09 09 09 64 70 2d 3e 64 |end;....|...dp->d|
|00032350| 70 5f 52 65 73 32 20 3d | 20 30 3b 0a 09 09 09 09 |p_Res2 =| 0;.....|
|00032360| 09 09 0a 09 09 09 09 09 | 09 66 69 70 2d 3e 73 65 |........|.fip->se|
|00032370| 65 6b 5f 65 6e 64 20 3d | 20 66 61 6c 73 65 3b 0a |ek_end =| false;.|
|00032380| 09 09 09 09 09 7d 20 65 | 6c 73 65 20 7b 0a 09 09 |.....} e|lse {...|
|00032390| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |....dp->|dp_Res1 |
|000323a0| 3d 20 66 69 70 2d 3e 76 | 70 6f 73 3b 0a 09 09 09 |= fip->v|pos;....|
|000323b0| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 32 20 3d |...dp->d|p_Res2 =|
|000323c0| 20 30 3b 0a 09 09 09 09 | 09 7d 0a 09 09 09 09 09 | 0;.....|.}......|
|000323d0| 62 72 65 61 6b 3b 0a 09 | 09 09 09 7d 0a 09 09 09 |break;..|...}....|
|000323e0| 09 0a 09 09 09 09 69 66 | 20 28 6f 31 20 3d 3d 20 |......if| (o1 == |
|000323f0| 66 69 70 2d 3e 72 70 6f | 73 29 20 7b 0a 09 09 09 |fip->rpo|s) {....|
|00032400| 09 09 2f 2a 20 6e 6f 74 | 20 5f 72 65 61 6c 6c 79 |../* not| _really|
|00032410| 5f 20 6d 6f 76 69 6e 67 | 20 2a 2f 0a 09 09 09 09 |_ moving| */.....|
|00032420| 09 0a 09 09 09 09 09 69 | 66 20 28 66 69 70 2d 3e |.......i|f (fip->|
|00032430| 73 65 65 6b 5f 65 6e 64 | 29 20 7b 0a 09 09 09 09 |seek_end|) {.....|
|00032440| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 31 20 3d 20 |..dp->dp|_Res1 = |
|00032450| 66 69 70 2d 3e 65 6e 64 | 3b 0a 09 09 09 09 09 09 |fip->end|;.......|
|00032460| 64 70 2d 3e 64 70 5f 52 | 65 73 32 20 3d 20 30 3b |dp->dp_R|es2 = 0;|
|00032470| 0a 09 09 09 09 09 09 0a | 09 09 09 09 09 09 66 69 |........|......fi|
|00032480| 70 2d 3e 73 65 65 6b 5f | 65 6e 64 20 3d 20 66 61 |p->seek_|end = fa|
|00032490| 6c 73 65 3b 0a 09 09 09 | 09 09 7d 20 65 6c 73 65 |lse;....|..} else|
|000324a0| 20 7b 0a 09 09 09 09 09 | 09 64 70 2d 3e 64 70 5f | {......|.dp->dp_|
|000324b0| 52 65 73 31 20 3d 20 66 | 69 70 2d 3e 76 70 6f 73 |Res1 = f|ip->vpos|
|000324c0| 3b 0a 09 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 |;.......|dp->dp_R|
|000324d0| 65 73 32 20 3d 20 30 3b | 0a 09 09 09 09 09 7d 0a |es2 = 0;|......}.|
|000324e0| 09 09 09 09 09 0a 09 09 | 09 09 09 66 69 70 2d 3e |........|...fip->|
|000324f0| 76 70 6f 73 20 3d 20 66 | 69 70 2d 3e 72 70 6f 73 |vpos = f|ip->rpos|
|00032500| 3b 0a 09 09 09 09 09 62 | 72 65 61 6b 3b 0a 09 09 |;......b|reak;...|
|00032510| 09 09 7d 0a 0a 09 09 09 | 09 69 66 20 28 6f 31 20 |..}.....|.if (o1 |
|00032520| 3c 20 66 69 70 2d 3e 72 | 70 6f 73 20 26 26 20 6f |< fip->r|pos && o|
|00032530| 31 20 3c 20 46 49 52 53 | 54 5f 42 4c 4f 43 4b 5f |1 < FIRS|T_BLOCK_|
|00032540| 53 49 5a 45 29 20 7b 0a | 09 09 09 09 09 2f 2a 20 |SIZE) {.|...../* |
|00032550| 73 65 65 6b 69 6e 67 20 | 69 6e 74 6f 20 6f 75 72 |seeking |into our|
|00032560| 20 73 74 6f 72 65 64 20 | 66 69 72 73 74 20 62 6c | stored |first bl|
|00032570| 6f 63 6b 20 2a 2f 0a 09 | 09 09 09 09 69 66 20 28 |ock */..|....if (|
|00032580| 66 69 70 2d 3e 73 65 65 | 6b 5f 65 6e 64 29 20 7b |fip->see|k_end) {|
|00032590| 0a 09 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |.......d|p->dp_Re|
|000325a0| 73 31 20 3d 20 66 69 70 | 2d 3e 65 6e 64 3b 0a 09 |s1 = fip|->end;..|
|000325b0| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 32 |.....dp-|>dp_Res2|
|000325c0| 20 3d 20 30 3b 0a 09 09 | 09 09 09 09 0a 09 09 09 | = 0;...|........|
|000325d0| 09 09 09 66 69 70 2d 3e | 73 65 65 6b 5f 65 6e 64 |...fip->|seek_end|
|000325e0| 20 3d 20 66 61 6c 73 65 | 3b 0a 09 09 09 09 09 7d | = false|;......}|
|000325f0| 20 65 6c 73 65 20 7b 0a | 09 09 09 09 09 09 64 70 | else {.|......dp|
|00032600| 2d 3e 64 70 5f 52 65 73 | 31 20 3d 20 66 69 70 2d |->dp_Res|1 = fip-|
|00032610| 3e 76 70 6f 73 3b 0a 09 | 09 09 09 09 09 64 70 2d |>vpos;..|.....dp-|
|00032620| 3e 64 70 5f 52 65 73 32 | 20 3d 20 30 3b 0a 09 09 |>dp_Res2| = 0;...|
|00032630| 09 09 09 7d 0a 09 09 09 | 09 09 66 69 70 2d 3e 76 |...}....|..fip->v|
|00032640| 70 6f 73 20 3d 20 6f 31 | 3b 0a 09 09 09 09 09 62 |pos = o1|;......b|
|00032650| 72 65 61 6b 3b 0a 09 09 | 09 09 7d 0a 09 09 09 09 |reak;...|..}.....|
|00032660| 0a 09 09 09 09 73 68 6f | 77 5f 73 74 72 69 6e 67 |.....sho|w_string|
|00032670| 28 22 53 45 45 4b 3a 22 | 29 3b 0a 09 09 09 09 73 |("SEEK:"|);.....s|
|00032680| 68 6f 77 5f 69 6e 74 28 | 64 70 2d 3e 64 70 5f 41 |how_int(|dp->dp_A|
|00032690| 72 67 32 29 3b 0a 09 09 | 09 09 73 68 6f 77 5f 69 |rg2);...|..show_i|
|000326a0| 6e 74 28 64 70 2d 3e 64 | 70 5f 41 72 67 33 29 3b |nt(dp->d|p_Arg3);|
|000326b0| 0a 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 31 |.....dp-|>dp_Res1|
|000326c0| 20 3d 20 44 4f 53 46 41 | 4c 53 45 3b 0a 09 09 09 | = DOSFA|LSE;....|
|000326d0| 09 64 70 2d 3e 64 70 5f | 52 65 73 32 20 3d 20 45 |.dp->dp_|Res2 = E|
|000326e0| 52 52 4f 52 5f 41 43 54 | 49 4f 4e 5f 4e 4f 54 5f |RROR_ACT|ION_NOT_|
|000326f0| 4b 4e 4f 57 4e 3b 0a 09 | 09 09 09 62 72 65 61 6b |KNOWN;..|...break|
|00032700| 3b 0a 09 09 09 63 61 73 | 65 20 41 43 54 49 4f 4e |;....cas|e ACTION|
|00032710| 5f 46 48 5f 46 52 4f 4d | 5f 4c 4f 43 4b 3a 0a 09 |_FH_FROM|_LOCK:..|
|00032720| 09 09 09 66 68 20 3d 20 | 28 73 74 72 75 63 74 20 |...fh = |(struct |
|00032730| 46 69 6c 65 48 61 6e 64 | 6c 65 20 2a 29 28 64 70 |FileHand|le *)(dp|
|00032740| 2d 3e 64 70 5f 41 72 67 | 31 20 3c 3c 20 32 29 3b |->dp_Arg|1 << 2);|
|00032750| 0a 09 09 09 09 73 6c 6f | 63 6b 20 3d 20 28 6c 6f |.....slo|ck = (lo|
|00032760| 63 6b 20 2a 29 28 64 70 | 2d 3e 64 70 5f 41 72 67 |ck *)(dp|->dp_Arg|
|00032770| 32 20 3c 3c 20 32 29 3b | 0a 09 09 09 09 0a 09 09 |2 << 2);|........|
|00032780| 09 09 74 72 75 74 68 28 | 66 68 20 21 3d 20 6e 69 |..truth(|fh != ni|
|00032790| 6c 29 3b 0a 09 09 09 09 | 76 65 72 69 66 79 28 73 |l);.....|verify(s|
|000327a0| 6c 6f 63 6b 2c 20 56 5f | 6c 6f 63 6b 29 3b 0a 09 |lock, V_|lock);..|
|000327b0| 09 09 09 0a 09 09 09 09 | 69 66 20 28 21 66 74 70 |........|if (!ftp|
|000327c0| 5f 73 69 74 65 2d 3e 63 | 6f 6e 6e 65 63 74 65 64 |_site->c|onnected|
|000327d0| 29 0a 09 09 09 09 09 69 | 6e 69 74 5f 63 6f 6e 6e |)......i|nit_conn|
|000327e0| 65 63 74 28 66 74 70 5f | 73 69 74 65 29 3b 0a 09 |ect(ftp_|site);..|
|000327f0| 09 09 09 0a 09 09 09 09 | 69 66 20 28 21 66 74 70 |........|if (!ftp|
|00032800| 5f 73 69 74 65 2d 3e 63 | 6f 6e 6e 65 63 74 65 64 |_site->c|onnected|
|00032810| 29 20 7b 0a 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |) {.....|.dp->dp_|
|00032820| 52 65 73 31 20 3d 20 44 | 4f 53 46 41 4c 53 45 3b |Res1 = D|OSFALSE;|
|00032830| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|00032840| 32 20 3d 20 45 52 52 4f | 52 5f 4f 42 4a 45 43 54 |2 = ERRO|R_OBJECT|
|00032850| 5f 4e 4f 54 5f 46 4f 55 | 4e 44 3b 0a 09 09 09 09 |_NOT_FOU|ND;.....|
|00032860| 09 0a 09 09 09 09 09 62 | 72 65 61 6b 3b 0a 09 09 |.......b|reak;...|
|00032870| 09 09 7d 0a 09 09 09 09 | 0a 09 09 09 09 69 66 20 |..}.....|.....if |
|00032880| 28 66 74 70 5f 73 69 74 | 65 2d 3e 63 66 69 6c 65 |(ftp_sit|e->cfile|
|00032890| 29 20 7b 0a 09 09 09 09 | 09 66 69 70 20 3d 20 66 |) {.....|.fip = f|
|000328a0| 74 70 5f 73 69 74 65 2d | 3e 66 69 6c 65 5f 6c 69 |tp_site-|>file_li|
|000328b0| 73 74 3b 0a 09 09 09 09 | 09 76 65 72 69 66 79 28 |st;.....|.verify(|
|000328c0| 66 69 70 2c 20 56 5f 66 | 69 6c 65 5f 69 6e 66 6f |fip, V_f|ile_info|
|000328d0| 29 3b 0a 09 09 09 09 09 | 0a 09 09 09 09 09 69 66 |);......|......if|
|000328e0| 20 28 66 69 70 2d 3e 63 | 6c 6f 73 65 64 29 20 7b | (fip->c|losed) {|
|000328f0| 0a 09 09 09 09 09 09 69 | 66 20 28 73 74 72 63 6d |.......i|f (strcm|
|00032900| 70 28 73 6c 6f 63 6b 2d | 3e 66 6e 61 6d 65 2c 20 |p(slock-|>fname, |
|00032910| 66 69 70 2d 3e 66 6e 61 | 6d 65 29 20 3d 3d 20 30 |fip->fna|me) == 0|
|00032920| 20 26 26 0a 09 09 09 09 | 09 09 09 09 73 6c 6f 63 | &&.....|....sloc|
|00032930| 6b 2d 3e 66 6c 2e 66 6c | 5f 41 63 63 65 73 73 20 |k->fl.fl|_Access |
|00032940| 3d 3d 20 53 48 41 52 45 | 44 5f 4c 4f 43 4b 29 20 |== SHARE|D_LOCK) |
|00032950| 7b 0a 09 09 09 09 09 09 | 09 2f 2a 20 22 72 65 6f |{.......|./* "reo|
|00032960| 70 65 6e 22 20 74 68 69 | 73 20 66 69 6c 65 20 2a |pen" thi|s file *|
|00032970| 2f 0a 09 09 09 09 0a 09 | 09 09 09 09 09 09 66 68 |/.......|......fh|
|00032980| 2d 3e 66 68 5f 54 79 70 | 65 20 3d 20 66 74 70 5f |->fh_Typ|e = ftp_|
|00032990| 70 6f 72 74 3b 0a 09 09 | 09 09 09 09 09 66 68 2d |port;...|.....fh-|
|000329a0| 3e 66 68 5f 41 72 67 73 | 20 3d 20 28 62 33 32 29 |>fh_Args| = (b32)|
|000329b0| 66 69 70 3b 0a 09 09 09 | 09 0a 09 09 09 09 09 09 |fip;....|........|
|000329c0| 09 66 69 70 2d 3e 63 6c | 6f 73 65 64 20 3d 20 66 |.fip->cl|osed = f|
|000329d0| 61 6c 73 65 3b 0a 09 09 | 09 09 09 09 09 66 69 70 |alse;...|.....fip|
|000329e0| 2d 3e 76 70 6f 73 20 3d | 20 30 3b 0a 09 09 09 09 |->vpos =| 0;.....|
|000329f0| 09 09 09 66 69 70 2d 3e | 73 65 65 6b 5f 65 6e 64 |...fip->|seek_end|
|00032a00| 20 3d 20 66 61 6c 73 65 | 3b 0a 09 09 09 09 09 09 | = false|;.......|
|00032a10| 09 0a 09 09 09 09 09 09 | 09 64 70 2d 3e 64 70 5f |........|.dp->dp_|
|00032a20| 52 65 73 31 20 3d 20 44 | 4f 53 54 52 55 45 3b 0a |Res1 = D|OSTRUE;.|
|00032a30| 09 09 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |.......d|p->dp_Re|
|00032a40| 73 32 20 3d 20 30 3b 0a | 0a 09 09 09 09 09 09 09 |s2 = 0;.|........|
|00032a50| 62 72 65 61 6b 3b 0a 09 | 09 09 09 09 09 7d 0a 09 |break;..|.....}..|
|00032a60| 09 09 09 09 09 0a 09 09 | 09 09 09 09 63 6c 6f 73 |........|....clos|
|00032a70| 65 5f 66 69 6c 65 28 66 | 74 70 5f 73 69 74 65 2c |e_file(f|tp_site,|
|00032a80| 20 74 72 75 65 29 3b 0a | 09 09 09 09 09 7d 20 65 | true);.|.....} e|
|00032a90| 6c 73 65 20 7b 0a 09 09 | 09 09 09 09 2f 2a 20 6f |lse {...|..../* o|
|00032aa0| 6e 6c 79 20 6f 6e 65 20 | 66 69 6c 65 20 61 74 20 |nly one |file at |
|00032ab0| 61 20 74 69 6d 65 21 20 | 20 3a 28 20 2a 2f 0a 09 |a time! | :( */..|
|00032ac0| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 31 |.....dp-|>dp_Res1|
|00032ad0| 20 3d 20 44 4f 53 46 41 | 4c 53 45 3b 0a 09 09 09 | = DOSFA|LSE;....|
|00032ae0| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 32 20 3d |...dp->d|p_Res2 =|
|00032af0| 20 45 52 52 4f 52 5f 4f | 42 4a 45 43 54 5f 49 4e | ERROR_O|BJECT_IN|
|00032b00| 5f 55 53 45 3b 0a 09 09 | 09 09 09 09 62 72 65 61 |_USE;...|....brea|
|00032b10| 6b 3b 0a 09 09 09 09 09 | 7d 0a 09 09 09 09 7d 0a |k;......|}.....}.|
|00032b20| 09 09 09 09 0a 09 09 09 | 09 69 66 20 28 73 6c 6f |........|.if (slo|
|00032b30| 63 6b 2d 3e 66 6c 2e 66 | 6c 5f 41 63 63 65 73 73 |ck->fl.f|l_Access|
|00032b40| 20 3d 3d 20 53 48 41 52 | 45 44 5f 4c 4f 43 4b 29 | == SHAR|ED_LOCK)|
|00032b50| 20 7b 0a 09 09 09 09 09 | 66 69 20 3d 20 67 65 74 | {......|fi = get|
|00032b60| 5f 69 6e 66 6f 28 66 74 | 70 5f 73 69 74 65 2c 20 |_info(ft|p_site, |
|00032b70| 73 6c 6f 63 6b 2d 3e 66 | 6e 61 6d 65 29 3b 0a 09 |slock->f|name);..|
|00032b80| 09 09 09 7d 20 65 6c 73 | 65 20 7b 0a 09 09 09 09 |...} els|e {.....|
|00032b90| 09 66 69 20 3d 20 6e 69 | 6c 3b 0a 09 09 09 09 7d |.fi = ni|l;.....}|
|00032ba0| 0a 09 09 09 09 0a 09 09 | 09 09 69 66 20 28 73 6c |........|..if (sl|
|00032bb0| 6f 63 6b 2d 3e 66 6c 2e | 66 6c 5f 41 63 63 65 73 |ock->fl.|fl_Acces|
|00032bc0| 73 20 3d 3d 20 53 48 41 | 52 45 44 5f 4c 4f 43 4b |s == SHA|RED_LOCK|
|00032bd0| 29 20 7b 0a 09 09 09 09 | 09 69 66 20 28 66 69 29 |) {.....|.if (fi)|
|00032be0| 20 7b 0a 09 09 09 09 09 | 09 64 70 2d 3e 64 70 5f | {......|.dp->dp_|
|00032bf0| 52 65 73 32 20 3d 20 6f | 70 65 6e 5f 66 69 6c 65 |Res2 = o|pen_file|
|00032c00| 28 66 74 70 5f 73 69 74 | 65 2c 20 73 6c 6f 63 6b |(ftp_sit|e, slock|
|00032c10| 2d 3e 66 6e 61 6d 65 2c | 20 66 61 6c 73 65 2c 20 |->fname,| false, |
|00032c20| 66 69 2d 3e 6e 61 6d 65 | 29 3b 0a 09 09 09 09 09 |fi->name|);......|
|00032c30| 7d 20 65 6c 73 65 20 7b | 0a 09 09 09 09 09 09 64 |} else {|.......d|
|00032c40| 70 2d 3e 64 70 5f 52 65 | 73 32 20 3d 20 6f 70 65 |p->dp_Re|s2 = ope|
|00032c50| 6e 5f 66 69 6c 65 28 66 | 74 70 5f 73 69 74 65 2c |n_file(f|tp_site,|
|00032c60| 20 73 6c 6f 63 6b 2d 3e | 66 6e 61 6d 65 2c 20 66 | slock->|fname, f|
|00032c70| 61 6c 73 65 2c 20 6e 69 | 6c 29 3b 0a 09 09 09 09 |alse, ni|l);.....|
|00032c80| 09 7d 0a 09 09 09 09 7d | 20 65 6c 73 65 20 7b 0a |.}.....}| else {.|
|00032c90| 09 09 09 09 09 64 70 2d | 3e 64 70 5f 52 65 73 32 |.....dp-|>dp_Res2|
|00032ca0| 20 3d 20 6f 70 65 6e 5f | 66 69 6c 65 28 66 74 70 | = open_|file(ftp|
|00032cb0| 5f 73 69 74 65 2c 20 73 | 6c 6f 63 6b 2d 3e 66 6e |_site, s|lock->fn|
|00032cc0| 61 6d 65 2c 20 74 72 75 | 65 2c 20 6e 69 6c 29 3b |ame, tru|e, nil);|
|00032cd0| 0a 09 09 09 09 09 66 6c | 75 73 68 5f 69 6e 66 6f |......fl|ush_info|
|00032ce0| 28 66 74 70 5f 73 69 74 | 65 2c 20 73 6c 6f 63 6b |(ftp_sit|e, slock|
|00032cf0| 2d 3e 66 6e 61 6d 65 29 | 3b 0a 09 09 09 09 7d 0a |->fname)|;.....}.|
|00032d00| 09 09 09 09 0a 09 09 09 | 09 69 66 20 28 64 70 2d |........|.if (dp-|
|00032d10| 3e 64 70 5f 52 65 73 32 | 20 21 3d 20 30 29 20 7b |>dp_Res2| != 0) {|
|00032d20| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|00032d30| 31 20 3d 20 30 3b 0a 09 | 09 09 09 09 62 72 65 61 |1 = 0;..|....brea|
|00032d40| 6b 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 0a 09 09 |k;.....}|........|
|00032d50| 09 09 66 69 70 20 3d 20 | 66 74 70 5f 73 69 74 65 |..fip = |ftp_site|
|00032d60| 2d 3e 66 69 6c 65 5f 6c | 69 73 74 3b 0a 09 09 09 |->file_l|ist;....|
|00032d70| 09 0a 09 09 09 09 69 66 | 20 28 66 69 29 20 7b 0a |......if| (fi) {.|
|00032d80| 09 09 09 09 09 66 69 70 | 2d 3e 65 6e 64 20 3d 20 |.....fip|->end = |
|00032d90| 66 69 2d 3e 73 69 7a 65 | 3b 0a 09 09 09 09 7d 20 |fi->size|;.....} |
|00032da0| 65 6c 73 65 20 7b 0a 09 | 09 09 09 09 66 69 70 2d |else {..|....fip-|
|00032db0| 3e 65 6e 64 20 3d 20 30 | 3b 0a 09 09 09 09 7d 0a |>end = 0|;.....}.|
|00032dc0| 0a 09 09 09 09 66 69 70 | 2d 3e 70 6f 72 74 20 3d |.....fip|->port =|
|00032dd0| 20 6c 6f 63 61 6c 3b 0a | 09 09 09 09 0a 09 09 09 | local;.|........|
|00032de0| 09 69 66 20 28 73 6c 6f | 63 6b 2d 3e 66 6c 2e 66 |.if (slo|ck->fl.f|
|00032df0| 6c 5f 41 63 63 65 73 73 | 20 3d 3d 20 53 48 41 52 |l_Access| == SHAR|
|00032e00| 45 44 5f 4c 4f 43 4b 29 | 20 7b 0a 09 09 09 09 09 |ED_LOCK)| {......|
|00032e10| 66 69 70 2d 3e 74 79 70 | 65 20 3d 20 66 74 70 5f |fip->typ|e = ftp_|
|00032e20| 73 69 74 65 2d 3e 63 66 | 69 6c 65 5f 74 79 70 65 |site->cf|ile_type|
|00032e30| 20 3d 20 41 43 54 49 4f | 4e 5f 46 49 4e 44 49 4e | = ACTIO|N_FINDIN|
|00032e40| 50 55 54 3b 0a 09 09 09 | 09 7d 20 65 6c 73 65 20 |PUT;....|.} else |
|00032e50| 7b 0a 09 09 09 09 09 66 | 69 70 2d 3e 74 79 70 65 |{......f|ip->type|
|00032e60| 20 3d 20 66 74 70 5f 73 | 69 74 65 2d 3e 63 66 69 | = ftp_s|ite->cfi|
|00032e70| 6c 65 5f 74 79 70 65 20 | 3d 20 41 43 54 49 4f 4e |le_type |= ACTION|
|00032e80| 5f 46 49 4e 44 4f 55 54 | 50 55 54 3b 0a 09 09 09 |_FINDOUT|PUT;....|
|00032e90| 09 7d 0a 09 09 09 09 0a | 09 09 09 09 66 68 2d 3e |.}......|....fh->|
|00032ea0| 66 68 5f 54 79 70 65 20 | 3d 20 66 74 70 5f 70 6f |fh_Type |= ftp_po|
|00032eb0| 72 74 3b 0a 09 09 09 09 | 66 68 2d 3e 66 68 5f 41 |rt;.....|fh->fh_A|
|00032ec0| 72 67 73 20 3d 20 28 62 | 33 32 29 66 69 70 3b 0a |rgs = (b|32)fip;.|
|00032ed0| 09 09 09 09 0a 09 09 09 | 09 69 66 20 28 73 6c 6f |........|.if (slo|
|00032ee0| 63 6b 2d 3e 66 6c 2e 66 | 6c 5f 41 63 63 65 73 73 |ck->fl.f|l_Access|
|00032ef0| 20 3d 3d 20 53 48 41 52 | 45 44 5f 4c 4f 43 4b 29 | == SHAR|ED_LOCK)|
|00032f00| 20 7b 0a 09 09 09 09 09 | 6f 31 20 3d 20 46 49 52 | {......|o1 = FIR|
|00032f10| 53 54 5f 42 4c 4f 43 4b | 5f 53 49 5a 45 3b 0a 09 |ST_BLOCK|_SIZE;..|
|00032f20| 09 09 09 09 73 77 69 74 | 63 68 20 28 72 65 61 64 |....swit|ch (read|
|00032f30| 5f 66 69 6c 65 28 66 74 | 70 5f 73 69 74 65 2c 20 |_file(ft|p_site, |
|00032f40| 66 69 70 2d 3e 66 69 72 | 73 74 5f 62 6c 6f 63 6b |fip->fir|st_block|
|00032f50| 2c 20 26 6f 31 29 29 20 | 7b 0a 09 09 09 09 09 63 |, &o1)) |{......c|
|00032f60| 61 73 65 20 45 52 52 4f | 52 5f 45 4f 46 3a 0a 09 |ase ERRO|R_EOF:..|
|00032f70| 09 09 09 09 09 66 69 70 | 2d 3e 65 6f 66 20 3d 20 |.....fip|->eof = |
|00032f80| 74 72 75 65 3b 0a 09 09 | 09 09 09 63 61 73 65 20 |true;...|...case |
|00032f90| 4e 4f 5f 45 52 52 4f 52 | 3a 0a 09 09 09 09 09 09 |NO_ERROR|:.......|
|00032fa0| 66 69 70 2d 3e 72 70 6f | 73 20 3d 20 6f 31 3b 0a |fip->rpo|s = o1;.|
|00032fb0| 09 09 09 09 09 09 0a 09 | 09 09 09 09 09 64 70 2d |........|.....dp-|
|00032fc0| 3e 64 70 5f 52 65 73 31 | 20 3d 20 44 4f 53 54 52 |>dp_Res1| = DOSTR|
|00032fd0| 55 45 3b 0a 09 09 09 09 | 09 09 64 70 2d 3e 64 70 |UE;.....|..dp->dp|
|00032fe0| 5f 52 65 73 32 20 3d 20 | 30 3b 0a 09 09 09 09 09 |_Res2 = |0;......|
|00032ff0| 09 0a 09 09 09 09 09 09 | 62 72 65 61 6b 3b 0a 09 |........|break;..|
|00033000| 09 09 09 09 64 65 66 61 | 75 6c 74 3a 0a 09 09 09 |....defa|ult:....|
|00033010| 09 09 09 63 6c 6f 73 65 | 5f 66 69 6c 65 28 66 74 |...close|_file(ft|
|00033020| 70 5f 73 69 74 65 2c 20 | 74 72 75 65 29 3b 0a 09 |p_site, |true);..|
|00033030| 09 09 09 09 09 0a 09 09 | 09 09 09 09 64 70 2d 3e |........|....dp->|
|00033040| 64 70 5f 52 65 73 31 20 | 3d 20 44 4f 53 46 41 4c |dp_Res1 |= DOSFAL|
|00033050| 53 45 3b 0a 09 09 09 09 | 09 09 64 70 2d 3e 64 70 |SE;.....|..dp->dp|
|00033060| 5f 52 65 73 32 20 3d 20 | 45 52 52 4f 52 5f 4f 42 |_Res2 = |ERROR_OB|
|00033070| 4a 45 43 54 5f 4e 4f 54 | 5f 46 4f 55 4e 44 3b 0a |JECT_NOT|_FOUND;.|
|00033080| 09 09 09 09 09 09 0a 09 | 09 09 09 09 09 62 72 65 |........|.....bre|
|00033090| 61 6b 3b 0a 09 09 09 09 | 09 7d 0a 09 09 09 09 7d |ak;.....|.}.....}|
|000330a0| 20 65 6c 73 65 20 7b 0a | 09 09 09 09 09 64 70 2d | else {.|.....dp-|
|000330b0| 3e 64 70 5f 52 65 73 31 | 3d 20 44 4f 53 54 52 55 |>dp_Res1|= DOSTRU|
|000330c0| 45 3b 0a 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 |E;......|dp->dp_R|
|000330d0| 65 73 32 20 3d 20 30 3b | 0a 09 09 09 09 7d 0a 09 |es2 = 0;|.....}..|
|000330e0| 09 09 09 0a 09 09 09 09 | 69 66 20 28 64 70 2d 3e |........|if (dp->|
|000330f0| 64 70 5f 52 65 73 31 29 | 20 7b 0a 09 09 09 09 09 |dp_Res1)| {......|
|00033100| 2f 2a 20 63 6c 6f 73 65 | 20 74 68 65 20 6c 6f 63 |/* close| the loc|
|00033110| 6b 20 2a 2f 0a 09 09 09 | 09 09 65 6e 73 75 72 65 |k */....|..ensure|
|00033120| 28 73 6c 6f 63 6b 2c 20 | 30 29 3b 0a 09 09 09 09 |(slock, |0);.....|
|00033130| 09 0a 09 09 09 09 09 6c | 6f 63 6b 73 20 3d 20 26 |.......l|ocks = &|
|00033140| 66 74 70 5f 73 69 74 65 | 2d 3e 6c 6f 63 6b 5f 6c |ftp_site|->lock_l|
|00033150| 69 73 74 3b 0a 09 09 09 | 09 09 77 68 69 6c 65 20 |ist;....|..while |
|00033160| 28 2a 6c 6f 63 6b 73 20 | 26 26 20 2a 6c 6f 63 6b |(*locks |&& *lock|
|00033170| 73 20 21 3d 20 73 6c 6f | 63 6b 29 20 7b 0a 09 09 |s != slo|ck) {...|
|00033180| 09 09 09 09 6c 6f 63 6b | 73 20 3d 20 26 28 2a 6c |....lock|s = &(*l|
|00033190| 6f 63 6b 73 29 2d 3e 6e | 65 78 74 3b 0a 09 09 09 |ocks)->n|ext;....|
|000331a0| 09 09 7d 0a 09 09 09 09 | 0a 09 09 09 09 09 69 66 |..}.....|......if|
|000331b0| 20 28 2a 6c 6f 63 6b 73 | 29 20 7b 0a 09 09 09 09 | (*locks|) {.....|
|000331c0| 09 09 2a 6c 6f 63 6b 73 | 20 3d 20 73 6c 6f 63 6b |..*locks| = slock|
|000331d0| 2d 3e 6e 65 78 74 3b 0a | 09 09 09 09 09 09 64 65 |->next;.|......de|
|000331e0| 61 6c 6c 6f 63 61 74 65 | 28 73 6c 6f 63 6b 2c 20 |allocate|(slock, |
|000331f0| 56 5f 6c 6f 63 6b 29 3b | 0a 09 09 09 09 09 7d 0a |V_lock);|......}.|
|00033200| 09 09 09 09 7d 0a 0a 09 | 09 09 09 62 72 65 61 6b |....}...|...break|
|00033210| 3b 0a 09 09 09 63 61 73 | 65 20 41 43 54 49 4f 4e |;....cas|e ACTION|
|00033220| 5f 43 4f 50 59 5f 44 49 | 52 5f 46 48 3a 0a 09 09 |_COPY_DI|R_FH:...|
|00033230| 09 09 66 68 20 3d 20 28 | 73 74 72 75 63 74 20 46 |..fh = (|struct F|
|00033240| 69 6c 65 48 61 6e 64 6c | 65 20 2a 29 28 64 70 2d |ileHandl|e *)(dp-|
|00033250| 3e 64 70 5f 41 72 67 31 | 20 3c 3c 20 32 29 3b 0a |>dp_Arg1| << 2);.|
|00033260| 09 09 09 09 69 66 20 28 | 21 66 68 29 20 7b 0a 09 |....if (|!fh) {..|
|00033270| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |....dp->|dp_Res1 |
|00033280| 3d 20 30 3b 0a 09 09 09 | 09 09 64 70 2d 3e 64 70 |= 0;....|..dp->dp|
|00033290| 5f 52 65 73 32 20 3d 20 | 45 52 52 4f 52 5f 4f 42 |_Res2 = |ERROR_OB|
|000332a0| 4a 45 43 54 5f 4e 4f 54 | 5f 46 4f 55 4e 44 3b 0a |JECT_NOT|_FOUND;.|
|000332b0| 09 09 09 09 09 62 72 65 | 61 6b 3b 0a 09 09 09 09 |.....bre|ak;.....|
|000332c0| 7d 0a 09 09 09 09 0a 09 | 09 09 09 66 69 70 20 3d |}.......|...fip =|
|000332d0| 20 28 66 69 6c 65 5f 69 | 6e 66 6f 20 2a 29 66 68 | (file_i|nfo *)fh|
|000332e0| 2d 3e 66 68 5f 41 72 67 | 73 3b 0a 09 09 09 09 0a |->fh_Arg|s;......|
|000332f0| 09 09 09 09 76 65 72 69 | 66 79 28 66 69 70 2c 20 |....veri|fy(fip, |
|00033300| 56 5f 66 69 6c 65 5f 69 | 6e 66 6f 29 3b 0a 09 09 |V_file_i|nfo);...|
|00033310| 09 09 0a 09 09 09 09 69 | 66 20 28 66 69 70 2d 3e |.......i|f (fip->|
|00033320| 74 79 70 65 20 3d 3d 20 | 41 43 54 49 4f 4e 5f 46 |type == |ACTION_F|
|00033330| 49 4e 44 4f 55 54 50 55 | 54 29 20 7b 0a 09 09 09 |INDOUTPU|T) {....|
|00033340| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 31 20 3d 20 |..dp->dp|_Res1 = |
|00033350| 30 3b 0a 09 09 09 09 09 | 64 70 2d 3e 64 70 5f 52 |0;......|dp->dp_R|
|00033360| 65 73 32 20 3d 20 45 52 | 52 4f 52 5f 4f 42 4a 45 |es2 = ER|ROR_OBJE|
|00033370| 43 54 5f 49 4e 5f 55 53 | 45 3b 0a 09 09 09 09 09 |CT_IN_US|E;......|
|00033380| 62 72 65 61 6b 3b 0a 09 | 09 09 09 7d 0a 09 09 09 |break;..|...}....|
|00033390| 09 0a 09 09 09 09 6e 65 | 77 5f 6c 6f 63 6b 20 3d |......ne|w_lock =|
|000333a0| 20 28 6c 6f 63 6b 20 2a | 29 61 6c 6c 6f 63 61 74 | (lock *|)allocat|
|000333b0| 65 28 73 69 7a 65 6f 66 | 28 2a 6e 65 77 5f 6c 6f |e(sizeof|(*new_lo|
|000333c0| 63 6b 29 20 2b 20 73 74 | 72 6c 65 6e 28 66 69 70 |ck) + st|rlen(fip|
|000333d0| 2d 3e 66 6e 61 6d 65 29 | 20 2b 20 31 2c 20 56 5f |->fname)| + 1, V_|
|000333e0| 6c 6f 63 6b 29 3b 0a 09 | 09 09 09 69 66 20 28 21 |lock);..|...if (!|
|000333f0| 6e 65 77 5f 6c 6f 63 6b | 29 20 7b 0a 09 09 09 09 |new_lock|) {.....|
|00033400| 09 64 70 2d 3e 64 70 5f | 52 65 73 31 20 3d 20 30 |.dp->dp_|Res1 = 0|
|00033410| 3b 0a 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |;......d|p->dp_Re|
|00033420| 73 32 20 3d 20 45 52 52 | 4f 52 5f 4e 4f 5f 46 52 |s2 = ERR|OR_NO_FR|
|00033430| 45 45 5f 53 54 4f 52 45 | 3b 0a 09 09 09 09 09 62 |EE_STORE|;......b|
|00033440| 72 65 61 6b 3b 0a 09 09 | 09 09 7d 0a 09 09 09 09 |reak;...|..}.....|
|00033450| 0a 09 09 09 09 6e 65 77 | 5f 6c 6f 63 6b 2d 3e 70 |.....new|_lock->p|
|00033460| 6f 72 74 20 3d 20 6c 6f | 63 61 6c 3b 0a 09 09 09 |ort = lo|cal;....|
|00033470| 09 6e 65 77 5f 6c 6f 63 | 6b 2d 3e 72 66 73 6c 20 |.new_loc|k->rfsl |
|00033480| 3d 20 30 3b 0a 09 09 09 | 09 6e 65 77 5f 6c 6f 63 |= 0;....|.new_loc|
|00033490| 6b 2d 3e 6c 61 73 74 6b | 65 79 20 3d 20 30 3b 0a |k->lastk|ey = 0;.|
|000334a0| 09 09 09 09 0a 09 09 09 | 09 6e 65 77 5f 6c 6f 63 |........|.new_loc|
|000334b0| 6b 2d 3e 66 6c 2e 66 6c | 5f 4c 69 6e 6b 20 3d 20 |k->fl.fl|_Link = |
|000334c0| 30 3b 0a 09 09 09 09 6e | 65 77 5f 6c 6f 63 6b 2d |0;.....n|ew_lock-|
|000334d0| 3e 66 6c 2e 66 6c 5f 4b | 65 79 20 3d 20 30 3b 0a |>fl.fl_K|ey = 0;.|
|000334e0| 09 09 09 09 6e 65 77 5f | 6c 6f 63 6b 2d 3e 66 6c |....new_|lock->fl|
|000334f0| 2e 66 6c 5f 41 63 63 65 | 73 73 20 3d 20 53 48 41 |.fl_Acce|ss = SHA|
|00033500| 52 45 44 5f 4c 4f 43 4b | 3b 0a 09 09 09 09 6e 65 |RED_LOCK|;.....ne|
|00033510| 77 5f 6c 6f 63 6b 2d 3e | 66 6c 2e 66 6c 5f 54 61 |w_lock->|fl.fl_Ta|
|00033520| 73 6b 20 3d 20 66 74 70 | 5f 70 6f 72 74 3b 0a 09 |sk = ftp|_port;..|
|00033530| 09 09 09 6e 65 77 5f 6c | 6f 63 6b 2d 3e 66 6c 2e |...new_l|ock->fl.|
|00033540| 66 6c 5f 56 6f 6c 75 6d | 65 20 3d 20 28 62 33 32 |fl_Volum|e = (b32|
|00033550| 29 66 74 70 5f 76 6f 6c | 75 6d 65 20 3e 3e 20 32 |)ftp_vol|ume >> 2|
|00033560| 3b 0a 09 09 09 09 09 0a | 09 09 09 09 73 74 72 63 |;.......|....strc|
|00033570| 70 79 28 6e 65 77 5f 6c | 6f 63 6b 2d 3e 66 6e 61 |py(new_l|ock->fna|
|00033580| 6d 65 2c 20 66 69 70 2d | 3e 66 6e 61 6d 65 29 3b |me, fip-|>fname);|
|00033590| 0a 09 09 09 09 0a 09 09 | 09 09 6e 65 77 5f 6c 6f |........|..new_lo|
|000335a0| 63 6b 2d 3e 6e 65 78 74 | 20 3d 20 66 74 70 5f 73 |ck->next| = ftp_s|
|000335b0| 69 74 65 2d 3e 6c 6f 63 | 6b 5f 6c 69 73 74 3b 0a |ite->loc|k_list;.|
|000335c0| 09 09 09 09 66 74 70 5f | 73 69 74 65 2d 3e 6c 6f |....ftp_|site->lo|
|000335d0| 63 6b 5f 6c 69 73 74 20 | 3d 20 6e 65 77 5f 6c 6f |ck_list |= new_lo|
|000335e0| 63 6b 3b 0a 09 09 09 09 | 0a 09 09 09 09 64 70 2d |ck;.....|.....dp-|
|000335f0| 3e 64 70 5f 52 65 73 31 | 20 3d 20 28 62 33 32 29 |>dp_Res1| = (b32)|
|00033600| 6e 65 77 5f 6c 6f 63 6b | 20 3e 3e 20 32 3b 0a 09 |new_lock| >> 2;..|
|00033610| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 32 20 3d |...dp->d|p_Res2 =|
|00033620| 20 30 3b 0a 09 09 09 09 | 0a 09 09 09 09 62 72 65 | 0;.....|.....bre|
|00033630| 61 6b 3b 0a 09 09 09 63 | 61 73 65 20 41 43 54 49 |ak;....c|ase ACTI|
|00033640| 4f 4e 5f 50 41 52 45 4e | 54 5f 46 48 3a 0a 09 09 |ON_PAREN|T_FH:...|
|00033650| 09 09 66 68 20 3d 20 28 | 73 74 72 75 63 74 20 46 |..fh = (|struct F|
|00033660| 69 6c 65 48 61 6e 64 6c | 65 20 2a 29 28 64 70 2d |ileHandl|e *)(dp-|
|00033670| 3e 64 70 5f 41 72 67 31 | 20 3c 3c 20 32 29 3b 0a |>dp_Arg1| << 2);.|
|00033680| 09 09 09 09 69 66 20 28 | 21 66 68 29 20 7b 0a 09 |....if (|!fh) {..|
|00033690| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 31 20 |....dp->|dp_Res1 |
|000336a0| 3d 20 30 3b 0a 09 09 09 | 09 09 64 70 2d 3e 64 70 |= 0;....|..dp->dp|
|000336b0| 5f 52 65 73 32 20 3d 20 | 45 52 52 4f 52 5f 4f 42 |_Res2 = |ERROR_OB|
|000336c0| 4a 45 43 54 5f 4e 4f 54 | 5f 46 4f 55 4e 44 3b 0a |JECT_NOT|_FOUND;.|
|000336d0| 09 09 09 09 09 62 72 65 | 61 6b 3b 0a 09 09 09 09 |.....bre|ak;.....|
|000336e0| 7d 0a 09 09 09 09 0a 09 | 09 09 09 66 69 70 20 3d |}.......|...fip =|
|000336f0| 20 28 66 69 6c 65 5f 69 | 6e 66 6f 20 2a 29 66 68 | (file_i|nfo *)fh|
|00033700| 2d 3e 66 68 5f 41 72 67 | 73 3b 0a 09 09 09 09 0a |->fh_Arg|s;......|
|00033710| 09 09 09 09 76 65 72 69 | 66 79 28 66 69 70 2c 20 |....veri|fy(fip, |
|00033720| 56 5f 66 69 6c 65 5f 69 | 6e 66 6f 29 3b 0a 09 09 |V_file_i|nfo);...|
|00033730| 09 09 0a 09 09 09 09 73 | 20 3d 20 66 69 70 2d 3e |.......s| = fip->|
|00033740| 66 6e 61 6d 65 20 2b 20 | 73 74 72 6c 65 6e 28 66 |fname + |strlen(f|
|00033750| 69 70 2d 3e 66 6e 61 6d | 65 29 20 2d 20 31 3b 0a |ip->fnam|e) - 1;.|
|00033760| 09 09 09 09 77 68 69 6c | 65 20 28 73 20 3e 20 66 |....whil|e (s > f|
|00033770| 69 70 2d 3e 66 6e 61 6d | 65 20 26 26 20 2a 73 20 |ip->fnam|e && *s |
|00033780| 21 3d 20 27 2f 27 29 20 | 73 2d 2d 3b 0a 09 09 09 |!= '/') |s--;....|
|00033790| 09 0a 09 09 09 09 69 66 | 20 28 73 20 3d 3d 20 66 |......if| (s == f|
|000337a0| 69 70 2d 3e 66 6e 61 6d | 65 29 20 7b 0a 09 09 09 |ip->fnam|e) {....|
|000337b0| 09 09 6e 65 77 5f 6c 6f | 63 6b 20 3d 20 28 6c 6f |..new_lo|ck = (lo|
|000337c0| 63 6b 20 2a 29 61 6c 6c | 6f 63 61 74 65 28 73 69 |ck *)all|ocate(si|
|000337d0| 7a 65 6f 66 28 2a 6e 65 | 77 5f 6c 6f 63 6b 29 20 |zeof(*ne|w_lock) |
|000337e0| 2b 20 31 2c 20 56 5f 6c | 6f 63 6b 29 3b 0a 09 09 |+ 1, V_l|ock);...|
|000337f0| 09 09 09 69 66 20 28 21 | 6e 65 77 5f 6c 6f 63 6b |...if (!|new_lock|
|00033800| 29 20 7b 0a 09 09 09 09 | 09 09 64 70 2d 3e 64 70 |) {.....|..dp->dp|
|00033810| 5f 52 65 73 31 20 3d 20 | 30 3b 0a 09 09 09 09 09 |_Res1 = |0;......|
|00033820| 09 64 70 2d 3e 64 70 5f | 52 65 73 32 20 3d 20 45 |.dp->dp_|Res2 = E|
|00033830| 52 52 4f 52 5f 4e 4f 5f | 46 52 45 45 5f 53 54 4f |RROR_NO_|FREE_STO|
|00033840| 52 45 3b 0a 09 09 09 09 | 09 09 0a 09 09 09 09 09 |RE;.....|........|
|00033850| 09 62 72 65 61 6b 3b 0a | 09 09 09 09 09 7d 0a 09 |.break;.|.....}..|
|00033860| 09 09 09 09 0a 09 09 09 | 09 09 65 6e 73 75 72 65 |........|..ensure|
|00033870| 28 6e 65 77 5f 6c 6f 63 | 6b 2c 20 56 5f 6c 6f 63 |(new_loc|k, V_loc|
|00033880| 6b 29 3b 0a 09 09 09 09 | 09 0a 09 09 09 09 09 6e |k);.....|.......n|
|00033890| 65 77 5f 6c 6f 63 6b 2d | 3e 6e 65 78 74 20 3d 20 |ew_lock-|>next = |
|000338a0| 66 74 70 5f 73 69 74 65 | 2d 3e 6c 6f 63 6b 5f 6c |ftp_site|->lock_l|
|000338b0| 69 73 74 3b 0a 09 09 09 | 09 09 66 74 70 5f 73 69 |ist;....|..ftp_si|
|000338c0| 74 65 2d 3e 6c 6f 63 6b | 5f 6c 69 73 74 20 3d 20 |te->lock|_list = |
|000338d0| 6e 65 77 5f 6c 6f 63 6b | 3b 0a 09 09 09 09 09 0a |new_lock|;.......|
|000338e0| 09 09 09 09 09 6e 65 77 | 5f 6c 6f 63 6b 2d 3e 70 |.....new|_lock->p|
|000338f0| 6f 72 74 20 3d 20 6c 6f | 63 61 6c 3b 0a 09 09 09 |ort = lo|cal;....|
|00033900| 09 09 6e 65 77 5f 6c 6f | 63 6b 2d 3e 72 66 73 6c |..new_lo|ck->rfsl|
|00033910| 20 3d 20 30 3b 0a 09 09 | 09 09 09 6e 65 77 5f 6c | = 0;...|...new_l|
|00033920| 6f 63 6b 2d 3e 66 6e 61 | 6d 65 5b 30 5d 20 3d 20 |ock->fna|me[0] = |
|00033930| 30 3b 0a 09 09 09 09 09 | 0a 09 09 09 09 09 6e 65 |0;......|......ne|
|00033940| 77 5f 6c 6f 63 6b 2d 3e | 66 6c 2e 66 6c 5f 4c 69 |w_lock->|fl.fl_Li|
|00033950| 6e 6b 20 3d 20 30 3b 0a | 09 09 09 09 09 6e 65 77 |nk = 0;.|.....new|
|00033960| 5f 6c 6f 63 6b 2d 3e 66 | 6c 2e 66 6c 5f 4b 65 79 |_lock->f|l.fl_Key|
|00033970| 20 3d 20 30 3b 0a 09 09 | 09 09 09 6e 65 77 5f 6c | = 0;...|...new_l|
|00033980| 6f 63 6b 2d 3e 66 6c 2e | 66 6c 5f 41 63 63 65 73 |ock->fl.|fl_Acces|
|00033990| 73 20 3d 20 53 48 41 52 | 45 44 5f 4c 4f 43 4b 3b |s = SHAR|ED_LOCK;|
|000339a0| 0a 09 09 09 09 09 6e 65 | 77 5f 6c 6f 63 6b 2d 3e |......ne|w_lock->|
|000339b0| 66 6c 2e 66 6c 5f 54 61 | 73 6b 20 3d 20 66 74 70 |fl.fl_Ta|sk = ftp|
|000339c0| 5f 70 6f 72 74 3b 0a 09 | 09 09 09 09 6e 65 77 5f |_port;..|....new_|
|000339d0| 6c 6f 63 6b 2d 3e 66 6c | 2e 66 6c 5f 56 6f 6c 75 |lock->fl|.fl_Volu|
|000339e0| 6d 65 20 3d 20 28 62 33 | 32 29 66 74 70 5f 76 6f |me = (b3|2)ftp_vo|
|000339f0| 6c 75 6d 65 20 3e 3e 20 | 32 3b 0a 09 09 09 09 09 |lume >> |2;......|
|00033a00| 0a 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|00033a10| 31 20 3d 20 28 62 33 32 | 29 6e 65 77 5f 6c 6f 63 |1 = (b32|)new_loc|
|00033a20| 6b 20 3e 3e 20 32 3b 0a | 09 09 09 09 09 64 70 2d |k >> 2;.|.....dp-|
|00033a30| 3e 64 70 5f 52 65 73 32 | 20 3d 20 30 3b 0a 09 09 |>dp_Res2| = 0;...|
|00033a40| 09 09 7d 20 65 6c 73 65 | 20 7b 0a 09 09 09 09 09 |..} else| {......|
|00033a50| 2a 73 20 3d 20 30 3b 0a | 09 09 09 09 09 0a 09 09 |*s = 0;.|........|
|00033a60| 09 09 09 6e 65 77 5f 6c | 6f 63 6b 20 3d 20 28 6c |...new_l|ock = (l|
|00033a70| 6f 63 6b 20 2a 29 61 6c | 6c 6f 63 61 74 65 28 73 |ock *)al|locate(s|
|00033a80| 69 7a 65 6f 66 28 2a 6e | 65 77 5f 6c 6f 63 6b 29 |izeof(*n|ew_lock)|
|00033a90| 20 2b 20 73 74 72 6c 65 | 6e 28 66 69 70 2d 3e 66 | + strle|n(fip->f|
|00033aa0| 6e 61 6d 65 29 20 2b 20 | 31 2c 20 56 5f 6c 6f 63 |name) + |1, V_loc|
|00033ab0| 6b 29 3b 0a 09 09 09 09 | 09 69 66 20 28 21 6e 65 |k);.....|.if (!ne|
|00033ac0| 77 5f 6c 6f 63 6b 29 20 | 7b 0a 09 09 09 09 09 09 |w_lock) |{.......|
|00033ad0| 2a 73 20 3d 20 27 2f 27 | 3b 0a 09 09 09 09 09 09 |*s = '/'|;.......|
|00033ae0| 0a 09 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |.......d|p->dp_Re|
|00033af0| 73 31 20 3d 20 30 3b 0a | 09 09 09 09 09 09 64 70 |s1 = 0;.|......dp|
|00033b00| 2d 3e 64 70 5f 52 65 73 | 32 20 3d 20 45 52 52 4f |->dp_Res|2 = ERRO|
|00033b10| 52 5f 4e 4f 5f 46 52 45 | 45 5f 53 54 4f 52 45 3b |R_NO_FRE|E_STORE;|
|00033b20| 0a 09 09 09 09 09 09 62 | 72 65 61 6b 3b 0a 09 09 |.......b|reak;...|
|00033b30| 09 09 09 7d 0a 09 09 09 | 09 09 0a 09 09 09 09 09 |...}....|........|
|00033b40| 65 6e 73 75 72 65 28 6e | 65 77 5f 6c 6f 63 6b 2c |ensure(n|ew_lock,|
|00033b50| 20 56 5f 6c 6f 63 6b 29 | 3b 0a 09 09 09 09 09 0a | V_lock)|;.......|
|00033b60| 09 09 09 09 09 73 74 72 | 63 70 79 28 6e 65 77 5f |.....str|cpy(new_|
|00033b70| 6c 6f 63 6b 2d 3e 66 6e | 61 6d 65 2c 20 66 69 70 |lock->fn|ame, fip|
|00033b80| 2d 3e 66 6e 61 6d 65 29 | 3b 0a 09 09 09 09 09 0a |->fname)|;.......|
|00033b90| 09 09 09 09 09 2a 73 20 | 3d 20 27 2f 27 3b 0a 0a |.....*s |= '/';..|
|00033ba0| 09 09 09 09 09 6e 65 77 | 5f 6c 6f 63 6b 2d 3e 70 |.....new|_lock->p|
|00033bb0| 6f 72 74 20 3d 20 6c 6f | 63 61 6c 3b 0a 09 09 09 |ort = lo|cal;....|
|00033bc0| 09 09 6e 65 77 5f 6c 6f | 63 6b 2d 3e 72 66 73 6c |..new_lo|ck->rfsl|
|00033bd0| 20 3d 20 30 3b 0a 09 09 | 09 09 09 0a 09 09 09 09 | = 0;...|........|
|00033be0| 09 6e 65 77 5f 6c 6f 63 | 6b 2d 3e 66 6c 2e 66 6c |.new_loc|k->fl.fl|
|00033bf0| 5f 4c 69 6e 6b 20 3d 20 | 30 3b 0a 09 09 09 09 09 |_Link = |0;......|
|00033c00| 6e 65 77 5f 6c 6f 63 6b | 2d 3e 66 6c 2e 66 6c 5f |new_lock|->fl.fl_|
|00033c10| 4b 65 79 20 3d 20 30 3b | 0a 09 09 09 09 09 6e 65 |Key = 0;|......ne|
|00033c20| 77 5f 6c 6f 63 6b 2d 3e | 66 6c 2e 66 6c 5f 41 63 |w_lock->|fl.fl_Ac|
|00033c30| 63 65 73 73 20 3d 20 53 | 48 41 52 45 44 5f 4c 4f |cess = S|HARED_LO|
|00033c40| 43 4b 3b 0a 09 09 09 09 | 09 6e 65 77 5f 6c 6f 63 |CK;.....|.new_loc|
|00033c50| 6b 2d 3e 66 6c 2e 66 6c | 5f 54 61 73 6b 20 3d 20 |k->fl.fl|_Task = |
|00033c60| 66 74 70 5f 70 6f 72 74 | 3b 0a 09 09 09 09 09 6e |ftp_port|;......n|
|00033c70| 65 77 5f 6c 6f 63 6b 2d | 3e 66 6c 2e 66 6c 5f 56 |ew_lock-|>fl.fl_V|
|00033c80| 6f 6c 75 6d 65 20 3d 20 | 28 62 33 32 29 66 74 70 |olume = |(b32)ftp|
|00033c90| 5f 76 6f 6c 75 6d 65 20 | 3e 3e 20 32 3b 0a 09 09 |_volume |>> 2;...|
|00033ca0| 09 09 09 0a 09 09 09 09 | 09 2f 2a 20 73 65 61 72 |........|./* sear|
|00033cb0| 63 68 20 66 6f 72 20 61 | 20 63 6f 6e 66 6c 69 63 |ch for a| conflic|
|00033cc0| 74 69 6e 67 20 6c 6f 63 | 6b 20 2a 2f 0a 09 09 09 |ting loc|k */....|
|00033cd0| 09 09 0a 09 09 09 09 09 | 73 6c 6f 63 6b 20 3d 20 |........|slock = |
|00033ce0| 66 74 70 5f 73 69 74 65 | 2d 3e 6c 6f 63 6b 5f 6c |ftp_site|->lock_l|
|00033cf0| 69 73 74 3b 0a 09 09 09 | 09 09 77 68 69 6c 65 20 |ist;....|..while |
|00033d00| 28 73 6c 6f 63 6b 29 20 | 7b 0a 09 09 09 09 09 09 |(slock) |{.......|
|00033d10| 69 66 20 28 73 74 72 63 | 6d 70 28 6e 65 77 5f 6c |if (strc|mp(new_l|
|00033d20| 6f 63 6b 2d 3e 66 6e 61 | 6d 65 2c 20 73 6c 6f 63 |ock->fna|me, sloc|
|00033d30| 6b 2d 3e 66 6e 61 6d 65 | 29 20 3d 3d 20 30 29 20 |k->fname|) == 0) |
|00033d40| 7b 0a 09 09 09 09 09 09 | 09 69 66 20 28 73 6c 6f |{.......|.if (slo|
|00033d50| 63 6b 2d 3e 66 6c 2e 66 | 6c 5f 41 63 63 65 73 73 |ck->fl.f|l_Access|
|00033d60| 20 3d 3d 20 45 58 43 4c | 55 53 49 56 45 5f 4c 4f | == EXCL|USIVE_LO|
|00033d70| 43 4b 29 20 7b 0a 09 09 | 09 09 09 09 09 09 64 70 |CK) {...|......dp|
|00033d80| 2d 3e 64 70 5f 52 65 73 | 31 20 3d 20 30 3b 0a 09 |->dp_Res|1 = 0;..|
|00033d90| 09 09 09 09 09 09 09 64 | 70 2d 3e 64 70 5f 52 65 |.......d|p->dp_Re|
|00033da0| 73 32 20 3d 20 45 52 52 | 4f 52 5f 4f 42 4a 45 43 |s2 = ERR|OR_OBJEC|
|00033db0| 54 5f 49 4e 5f 55 53 45 | 3b 0a 09 09 09 09 09 09 |T_IN_USE|;.......|
|00033dc0| 09 09 0a 09 09 09 09 09 | 09 09 09 64 65 61 6c 6c |........|...deall|
|00033dd0| 6f 63 61 74 65 28 6e 65 | 77 5f 6c 6f 63 6b 2c 20 |ocate(ne|w_lock, |
|00033de0| 56 5f 6c 6f 63 6b 29 3b | 0a 09 09 09 09 09 09 09 |V_lock);|........|
|00033df0| 09 67 6f 74 6f 20 72 65 | 70 6c 79 5f 6d 73 67 3b |.goto re|ply_msg;|
|00033e00| 0a 09 09 09 09 09 09 09 | 7d 0a 09 09 09 09 09 09 |........|}.......|
|00033e10| 09 0a 09 09 09 09 09 09 | 09 2f 2a 20 6f 6b 2c 20 |........|./* ok, |
|00033e20| 74 68 69 73 20 6f 6e 65 | 20 69 73 20 67 75 61 72 |this one| is guar|
|00033e30| 61 6e 74 65 65 64 20 74 | 6f 20 77 6f 72 6b 20 2a |anteed t|o work *|
|00033e40| 2f 0a 09 09 09 09 09 09 | 09 0a 09 09 09 09 09 09 |/.......|........|
|00033e50| 09 6e 65 77 5f 6c 6f 63 | 6b 2d 3e 6e 65 78 74 20 |.new_loc|k->next |
|00033e60| 3d 20 66 74 70 5f 73 69 | 74 65 2d 3e 6c 6f 63 6b |= ftp_si|te->lock|
|00033e70| 5f 6c 69 73 74 3b 0a 09 | 09 09 09 09 09 09 66 74 |_list;..|......ft|
|00033e80| 70 5f 73 69 74 65 2d 3e | 6c 6f 63 6b 5f 6c 69 73 |p_site->|lock_lis|
|00033e90| 74 20 3d 20 6e 65 77 5f | 6c 6f 63 6b 3b 0a 09 09 |t = new_|lock;...|
|00033ea0| 09 09 09 09 09 0a 09 09 | 09 09 09 09 09 64 70 2d |........|.....dp-|
|00033eb0| 3e 64 70 5f 52 65 73 31 | 20 3d 20 28 62 33 32 29 |>dp_Res1| = (b32)|
|00033ec0| 6e 65 77 5f 6c 6f 63 6b | 20 3e 3e 20 32 3b 0a 09 |new_lock| >> 2;..|
|00033ed0| 09 09 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|00033ee0| 32 20 3d 20 30 3b 0a 09 | 09 09 09 09 09 09 0a 09 |2 = 0;..|........|
|00033ef0| 09 09 09 09 09 09 67 6f | 74 6f 20 72 65 70 6c 79 |......go|to reply|
|00033f00| 5f 6d 73 67 3b 0a 09 09 | 09 09 09 09 7d 0a 09 09 |_msg;...|....}...|
|00033f10| 09 09 09 09 73 6c 6f 63 | 6b 20 3d 20 73 6c 6f 63 |....sloc|k = sloc|
|00033f20| 6b 2d 3e 6e 65 78 74 3b | 0a 09 09 09 09 09 7d 0a |k->next;|......}.|
|00033f30| 09 09 09 09 09 0a 09 09 | 09 09 09 2f 2a 20 6f 6b |........|.../* ok|
|00033f40| 2c 20 69 74 20 64 6f 65 | 73 6e 27 74 20 63 6f 6e |, it doe|sn't con|
|00033f50| 66 6c 69 63 74 20 2e 2e | 2e 20 69 74 20 6d 75 73 |flict ..|. it mus|
|00033f60| 74 20 65 78 69 73 74 2a | 2f 0a 09 09 09 09 09 0a |t exist*|/.......|
|00033f70| 09 09 09 09 09 6e 65 77 | 5f 6c 6f 63 6b 2d 3e 6e |.....new|_lock->n|
|00033f80| 65 78 74 20 3d 20 66 74 | 70 5f 73 69 74 65 2d 3e |ext = ft|p_site->|
|00033f90| 6c 6f 63 6b 5f 6c 69 73 | 74 3b 0a 09 09 09 09 09 |lock_lis|t;......|
|00033fa0| 66 74 70 5f 73 69 74 65 | 2d 3e 6c 6f 63 6b 5f 6c |ftp_site|->lock_l|
|00033fb0| 69 73 74 20 3d 20 6e 65 | 77 5f 6c 6f 63 6b 3b 0a |ist = ne|w_lock;.|
|00033fc0| 09 09 09 09 09 0a 09 09 | 09 09 09 64 70 2d 3e 64 |........|...dp->d|
|00033fd0| 70 5f 52 65 73 31 20 3d | 20 28 62 33 32 29 6e 65 |p_Res1 =| (b32)ne|
|00033fe0| 77 5f 6c 6f 63 6b 20 3e | 3e 20 32 3b 0a 09 09 09 |w_lock >|> 2;....|
|00033ff0| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 32 20 3d 20 |..dp->dp|_Res2 = |
|00034000| 30 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 62 72 65 |0;.....}|.....bre|
|00034010| 61 6b 3b 0a 09 09 09 63 | 61 73 65 20 41 43 54 49 |ak;....c|ase ACTI|
|00034020| 4f 4e 5f 45 58 41 4d 49 | 4e 45 5f 46 48 3a 0a 09 |ON_EXAMI|NE_FH:..|
|00034030| 09 09 09 66 68 20 3d 20 | 28 73 74 72 75 63 74 20 |...fh = |(struct |
|00034040| 46 69 6c 65 48 61 6e 64 | 6c 65 20 2a 29 28 64 70 |FileHand|le *)(dp|
|00034050| 2d 3e 64 70 5f 41 72 67 | 31 20 3c 3c 20 32 29 3b |->dp_Arg|1 << 2);|
|00034060| 0a 09 09 09 09 66 69 70 | 20 3d 20 28 66 69 6c 65 |.....fip| = (file|
|00034070| 5f 69 6e 66 6f 20 2a 29 | 66 68 2d 3e 66 68 5f 41 |_info *)|fh->fh_A|
|00034080| 72 67 73 3b 0a 09 09 09 | 09 0a 09 09 09 09 76 65 |rgs;....|......ve|
|00034090| 72 69 66 79 28 66 69 70 | 2c 20 56 5f 66 69 6c 65 |rify(fip|, V_file|
|000340a0| 5f 69 6e 66 6f 29 3b 0a | 09 09 09 09 0a 09 09 09 |_info);.|........|
|000340b0| 09 66 69 62 20 3d 20 28 | 73 74 72 75 63 74 20 46 |.fib = (|struct F|
|000340c0| 69 6c 65 49 6e 66 6f 42 | 6c 6f 63 6b 20 2a 29 28 |ileInfoB|lock *)(|
|000340d0| 64 70 2d 3e 64 70 5f 41 | 72 67 32 20 3c 3c 20 32 |dp->dp_A|rg2 << 2|
|000340e0| 29 3b 0a 09 09 09 09 0a | 09 09 09 09 74 72 75 74 |);......|....trut|
|000340f0| 68 28 66 69 62 20 21 3d | 20 6e 69 6c 29 3b 0a 09 |h(fib !=| nil);..|
|00034100| 09 09 09 0a 09 09 09 09 | 73 20 3d 20 66 69 70 2d |........|s = fip-|
|00034110| 3e 66 6e 61 6d 65 20 2b | 20 73 74 72 6c 65 6e 28 |>fname +| strlen(|
|00034120| 66 69 70 2d 3e 66 6e 61 | 6d 65 29 20 2d 20 31 3b |fip->fna|me) - 1;|
|00034130| 0a 09 09 09 09 77 68 69 | 6c 65 20 28 73 20 3e 20 |.....whi|le (s > |
|00034140| 66 69 70 2d 3e 66 6e 61 | 6d 65 20 26 26 20 2a 73 |fip->fna|me && *s|
|00034150| 20 21 3d 20 27 2f 27 29 | 20 73 2d 2d 3b 0a 09 09 | != '/')| s--;...|
|00034160| 09 09 0a 09 09 09 09 69 | 66 20 28 73 20 3d 3d 20 |.......i|f (s == |
|00034170| 66 69 70 2d 3e 66 6e 61 | 6d 65 29 20 7b 0a 09 09 |fip->fna|me) {...|
|00034180| 09 09 09 69 68 20 3d 20 | 67 65 74 5f 64 69 72 28 |...ih = |get_dir(|
|00034190| 66 74 70 5f 73 69 74 65 | 2c 20 22 22 29 3b 0a 09 |ftp_site|, "");..|
|000341a0| 09 09 09 7d 20 65 6c 73 | 65 20 7b 0a 09 09 09 09 |...} els|e {.....|
|000341b0| 09 2a 73 20 3d 20 30 3b | 0a 09 09 09 09 09 69 68 |.*s = 0;|......ih|
|000341c0| 20 3d 20 67 65 74 5f 64 | 69 72 28 66 74 70 5f 73 | = get_d|ir(ftp_s|
|000341d0| 69 74 65 2c 20 66 69 70 | 2d 3e 66 6e 61 6d 65 29 |ite, fip|->fname)|
|000341e0| 3b 0a 09 09 09 09 09 2a | 73 2b 2b 20 3d 20 27 2f |;......*|s++ = '/|
|000341f0| 27 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 0a 09 09 |';.....}|........|
|00034200| 09 09 69 66 20 28 21 69 | 68 29 20 7b 0a 09 09 09 |..if (!i|h) {....|
|00034210| 09 09 64 70 2d 3e 64 70 | 5f 52 65 73 31 20 3d 20 |..dp->dp|_Res1 = |
|00034220| 44 4f 53 46 41 4c 53 45 | 3b 0a 09 09 09 09 09 69 |DOSFALSE|;......i|
|00034230| 66 20 28 66 74 70 5f 73 | 69 74 65 2d 3e 63 66 69 |f (ftp_s|ite->cfi|
|00034240| 6c 65 29 0a 09 09 09 09 | 09 09 64 70 2d 3e 64 70 |le).....|..dp->dp|
|00034250| 5f 52 65 73 32 20 3d 20 | 45 52 52 4f 52 5f 4f 42 |_Res2 = |ERROR_OB|
|00034260| 4a 45 43 54 5f 49 4e 5f | 55 53 45 3b 0a 09 09 09 |JECT_IN_|USE;....|
|00034270| 09 09 65 6c 73 65 0a 09 | 09 09 09 09 09 64 70 2d |..else..|.....dp-|
|00034280| 3e 64 70 5f 52 65 73 32 | 20 3d 20 45 52 52 4f 52 |>dp_Res2| = ERROR|
|00034290| 5f 4f 42 4a 45 43 54 5f | 4e 4f 54 5f 46 4f 55 4e |_OBJECT_|NOT_FOUN|
|000342a0| 44 3b 0a 09 09 09 09 09 | 09 2f 2a 20 67 65 6e 65 |D;......|./* gene|
|000342b0| 72 61 6c 20 22 63 6f 6e | 6e 65 63 74 69 6f 6e 20 |ral "con|nection |
|000342c0| 62 75 67 67 65 72 65 64 | 22 20 2a 2f 0a 09 09 09 |buggered|" */....|
|000342d0| 09 09 62 72 65 61 6b 3b | 0a 09 09 09 09 7d 0a 09 |..break;|.....}..|
|000342e0| 09 09 09 0a 09 09 09 09 | 66 69 20 3d 20 66 69 6e |........|fi = fin|
|000342f0| 64 5f 69 6e 66 6f 28 69 | 68 2c 20 73 29 3b 0a 09 |d_info(i|h, s);..|
|00034300| 09 09 09 69 66 20 28 21 | 66 69 29 20 7b 0a 09 09 |...if (!|fi) {...|
|00034310| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 31 20 3d |...dp->d|p_Res1 =|
|00034320| 20 44 4f 53 46 41 4c 53 | 45 3b 0a 09 09 09 09 09 | DOSFALS|E;......|
|00034330| 64 70 2d 3e 64 70 5f 52 | 65 73 32 20 3d 20 45 52 |dp->dp_R|es2 = ER|
|00034340| 52 4f 52 5f 4f 42 4a 45 | 43 54 5f 4e 4f 54 5f 46 |ROR_OBJE|CT_NOT_F|
|00034350| 4f 55 4e 44 3b 0a 09 09 | 09 09 09 62 72 65 61 6b |OUND;...|...break|
|00034360| 3b 0a 09 09 09 09 7d 0a | 09 09 09 09 0a 09 09 09 |;.....}.|........|
|00034370| 09 69 66 20 28 66 69 2d | 3e 66 6c 61 67 73 20 26 |.if (fi-|>flags &|
|00034380| 20 4d 59 46 4c 41 47 5f | 44 49 52 29 20 7b 0a 09 | MYFLAG_|DIR) {..|
|00034390| 09 09 09 09 66 69 62 2d | 3e 66 69 62 5f 44 69 72 |....fib-|>fib_Dir|
|000343a0| 45 6e 74 72 79 54 79 70 | 65 20 3d 20 53 54 5f 55 |EntryTyp|e = ST_U|
|000343b0| 53 45 52 44 49 52 3b 0a | 09 09 09 09 7d 20 65 6c |SERDIR;.|....} el|
|000343c0| 73 65 20 7b 0a 09 09 09 | 09 09 66 69 62 2d 3e 66 |se {....|..fib->f|
|000343d0| 69 62 5f 44 69 72 45 6e | 74 72 79 54 79 70 65 20 |ib_DirEn|tryType |
|000343e0| 3d 20 53 54 5f 46 49 4c | 45 3b 0a 09 09 09 09 7d |= ST_FIL|E;.....}|
|000343f0| 0a 09 09 09 09 0a 09 09 | 09 09 66 69 62 2d 3e 66 |........|..fib->f|
|00034400| 69 62 5f 45 6e 74 72 79 | 54 79 70 65 20 3d 20 66 |ib_Entry|Type = f|
|00034410| 69 62 2d 3e 66 69 62 5f | 44 69 72 45 6e 74 72 79 |ib->fib_|DirEntry|
|00034420| 54 79 70 65 3b 0a 09 09 | 09 09 66 69 62 2d 3e 66 |Type;...|..fib->f|
|00034430| 69 62 5f 44 69 73 6b 4b | 65 79 20 3d 20 30 3b 0a |ib_DiskK|ey = 0;.|
|00034440| 09 09 09 09 66 69 62 2d | 3e 66 69 62 5f 46 69 6c |....fib-|>fib_Fil|
|00034450| 65 4e 61 6d 65 5b 30 5d | 20 3d 20 73 74 72 6c 65 |eName[0]| = strle|
|00034460| 6e 28 66 69 2d 3e 6e 61 | 6d 65 29 3b 0a 09 09 09 |n(fi->na|me);....|
|00034470| 09 73 74 72 63 70 79 28 | 26 66 69 62 2d 3e 66 69 |.strcpy(|&fib->fi|
|00034480| 62 5f 46 69 6c 65 4e 61 | 6d 65 5b 31 5d 2c 20 66 |b_FileNa|me[1], f|
|00034490| 69 2d 3e 6e 61 6d 65 29 | 3b 0a 09 09 09 09 0a 09 |i->name)|;.......|
|000344a0| 09 09 09 66 69 62 2d 3e | 66 69 62 5f 50 72 6f 74 |...fib->|fib_Prot|
|000344b0| 65 63 74 69 6f 6e 20 3d | 20 66 69 2d 3e 66 6c 61 |ection =| fi->fla|
|000344c0| 67 73 20 26 20 30 78 66 | 66 3b 0a 09 09 09 09 66 |gs & 0xf|f;.....f|
|000344d0| 69 62 2d 3e 66 69 62 5f | 53 69 7a 65 20 3d 20 66 |ib->fib_|Size = f|
|000344e0| 69 2d 3e 73 69 7a 65 3b | 0a 09 09 09 09 66 69 62 |i->size;|.....fib|
|000344f0| 2d 3e 66 69 62 5f 4e 75 | 6d 42 6c 6f 63 6b 73 20 |->fib_Nu|mBlocks |
|00034500| 3d 20 66 69 2d 3e 62 6c | 6f 63 6b 73 3b 0a 09 09 |= fi->bl|ocks;...|
|00034510| 09 09 66 69 62 2d 3e 66 | 69 62 5f 44 61 74 65 20 |..fib->f|ib_Date |
|00034520| 3d 20 66 69 2d 3e 6d 6f | 64 69 66 69 65 64 3b 0a |= fi->mo|dified;.|
|00034530| 09 09 09 09 66 69 62 2d | 3e 66 69 62 5f 43 6f 6d |....fib-|>fib_Com|
|00034540| 6d 65 6e 74 5b 30 5d 20 | 3d 20 30 3b 0a 09 09 09 |ment[0] |= 0;....|
|00034550| 09 0a 09 09 09 09 64 70 | 2d 3e 64 70 5f 52 65 73 |......dp|->dp_Res|
|00034560| 31 20 3d 20 44 4f 53 54 | 52 55 45 3b 0a 09 09 09 |1 = DOST|RUE;....|
|00034570| 09 64 70 2d 3e 64 70 5f | 52 65 73 32 20 3d 20 30 |.dp->dp_|Res2 = 0|
|00034580| 3b 0a 09 09 09 09 62 72 | 65 61 6b 3b 0a 09 09 09 |;.....br|eak;....|
|00034590| 63 61 73 65 20 61 63 74 | 69 6f 6e 5f 53 55 53 50 |case act|ion_SUSP|
|000345a0| 45 4e 44 3a 0a 09 09 09 | 09 69 66 20 28 66 74 70 |END:....|.if (ftp|
|000345b0| 5f 73 69 74 65 2d 3e 63 | 6f 6e 6e 65 63 74 65 64 |_site->c|onnected|
|000345c0| 29 20 7b 0a 09 09 09 09 | 09 64 69 73 63 6f 6e 6e |) {.....|.disconn|
|000345d0| 65 63 74 28 66 74 70 5f | 73 69 74 65 29 3b 0a 09 |ect(ftp_|site);..|
|000345e0| 09 09 09 7d 0a 09 09 09 | 09 0a 09 09 09 09 64 70 |...}....|......dp|
|000345f0| 2d 3e 64 70 5f 52 65 73 | 31 20 3d 20 44 4f 53 54 |->dp_Res|1 = DOST|
|00034600| 52 55 45 3b 0a 09 09 09 | 09 64 70 2d 3e 64 70 5f |RUE;....|.dp->dp_|
|00034610| 52 65 73 32 20 3d 20 30 | 3b 0a 09 09 09 09 0a 09 |Res2 = 0|;.......|
|00034620| 09 09 09 64 70 2d 3e 64 | 70 5f 50 6f 72 74 20 3d |...dp->d|p_Port =|
|00034630| 20 66 74 70 5f 70 6f 72 | 74 3b 0a 09 09 09 09 50 | ftp_por|t;.....P|
|00034640| 75 74 4d 73 67 28 72 65 | 70 6c 79 2c 20 64 70 2d |utMsg(re|ply, dp-|
|00034650| 3e 64 70 5f 4c 69 6e 6b | 29 3b 0a 09 09 09 09 0a |>dp_Link|);......|
|00034660| 09 09 09 09 69 64 6c 65 | 5f 70 61 63 6b 65 74 2d |....idle|_packet-|
|00034670| 3e 73 70 5f 50 6b 74 2e | 64 70 5f 50 6f 72 74 20 |>sp_Pkt.|dp_Port |
|00034680| 3d 20 73 79 6e 63 3b 0a | 09 09 09 09 50 75 74 4d |= sync;.|....PutM|
|00034690| 73 67 28 66 74 70 5f 70 | 6f 72 74 2c 20 26 69 64 |sg(ftp_p|ort, &id|
|000346a0| 6c 65 5f 70 61 63 6b 65 | 74 2d 3e 73 70 5f 4d 73 |le_packe|t->sp_Ms|
|000346b0| 67 29 3b 0a 09 09 09 09 | 57 61 69 74 50 6f 72 74 |g);.....|WaitPort|
|000346c0| 28 73 79 6e 63 29 3b 20 | 47 65 74 4d 73 67 28 73 |(sync); |GetMsg(s|
|000346d0| 79 6e 63 29 3b 0a 0a 09 | 09 09 09 63 6f 6e 74 69 |ync);...|...conti|
|000346e0| 6e 75 65 3b 0a 09 09 09 | 64 65 66 61 75 6c 74 3a |nue;....|default:|
|000346f0| 0a 09 09 09 09 73 68 6f | 77 5f 69 6e 74 28 64 70 |.....sho|w_int(dp|
|00034700| 2d 3e 64 70 5f 54 79 70 | 65 29 3b 0a 09 09 09 09 |->dp_Typ|e);.....|
|00034710| 64 70 2d 3e 64 70 5f 52 | 65 73 31 20 3d 20 44 4f |dp->dp_R|es1 = DO|
|00034720| 53 46 41 4c 53 45 3b 0a | 09 09 09 09 64 70 2d 3e |SFALSE;.|....dp->|
|00034730| 64 70 5f 52 65 73 32 20 | 3d 20 45 52 52 4f 52 5f |dp_Res2 |= ERROR_|
|00034740| 41 43 54 49 4f 4e 5f 4e | 4f 54 5f 4b 4e 4f 57 4e |ACTION_N|OT_KNOWN|
|00034750| 3b 0a 09 09 09 09 62 72 | 65 61 6b 3b 0a 09 09 09 |;.....br|eak;....|
|00034760| 7d 0a 09 09 09 0a 72 65 | 70 6c 79 5f 6d 73 67 3a |}.....re|ply_msg:|
|00034770| 0a 09 09 09 64 70 2d 3e | 64 70 5f 50 6f 72 74 20 |....dp->|dp_Port |
|00034780| 3d 20 66 74 70 5f 70 6f | 72 74 3b 0a 09 09 09 50 |= ftp_po|rt;....P|
|00034790| 75 74 4d 73 67 28 72 65 | 70 6c 79 2c 20 64 70 2d |utMsg(re|ply, dp-|
|000347a0| 3e 64 70 5f 4c 69 6e 6b | 29 3b 0a 09 09 7d 0a 09 |>dp_Link|);...}..|
|000347b0| 7d 0a 7d 0a 50 54 49 4f | 4e 53 00 00 00 00 00 00 |}.}.PTIO|NS......|
|000347c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000347d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000347e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000347f0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00034800| 00 00 00 02 00 00 01 a4 | 00 00 00 04 00 00 00 00 |........|........|
|00034810| 00 00 01 a5 94 5d f6 1a | 00 00 00 00 00 00 00 00 |.....]..|........|
|00034820| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00034830| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00034840| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00034850| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00034860| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00034870| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00034880| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00034890| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000348a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000348b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000348c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000348d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000348e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000348f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00034900| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00034910| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00034920| 00 00 00 00 00 00 00 00 | 00 00 01 a8 00 00 01 a7 |........|........|
|00034930| 00 00 01 a6 00 00 01 a5 | 00 00 00 00 00 00 00 00 |........|........|
|00034940| 00 00 00 00 00 00 06 8c | 00 00 00 00 00 00 00 00 |........|........|
|00034950| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00034960| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00034970| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00034980| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00034990| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000349a0| 00 00 00 00 00 00 19 98 | 00 00 03 57 00 00 0a f0 |........|...W....|
|000349b0| 06 73 69 74 65 2e 68 00 | 00 00 00 00 00 00 00 00 |.site.h.|........|
|000349c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000349d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000349e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000349f0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00034a00| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|00034a10| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|00034a20| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|00034a30| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|00034a40| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|00034a50| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|00034a60| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|00034a70| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|00034a80| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|00034a90| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|00034aa0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|00034ab0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|00034ac0| 23 64 65 66 69 6e 65 20 | 52 45 41 44 5f 42 55 46 |#define |READ_BUF|
|00034ad0| 46 45 52 5f 4c 45 4e 47 | 54 48 20 32 30 30 0a 0a |FER_LENG|TH 200..|
|00034ae0| 74 79 70 65 64 65 66 20 | 73 74 72 75 63 74 20 73 |typedef |struct s|
|00034af0| 69 74 65 5f 73 20 7b 0a | 09 73 74 72 75 63 74 20 |ite_s {.|.struct |
|00034b00| 73 69 74 65 5f 73 20 2a | 6e 65 78 74 3b 0a 09 0a |site_s *|next;...|
|00034b10| 09 6d 61 67 69 63 5f 76 | 65 72 69 66 79 3b 0a 09 |.magic_v|erify;..|
|00034b20| 0a 09 73 74 72 75 63 74 | 20 6d 79 5f 6c 6f 63 6b |..struct| my_lock|
|00034b30| 20 2a 6c 6f 63 6b 5f 6c | 69 73 74 3b 0a 09 73 74 | *lock_l|ist;..st|
|00034b40| 72 75 63 74 20 6d 79 5f | 66 69 6c 65 5f 69 6e 66 |ruct my_|file_inf|
|00034b50| 6f 20 2a 66 69 6c 65 5f | 6c 69 73 74 3b 0a 09 73 |o *file_|list;..s|
|00034b60| 74 72 75 63 74 20 74 63 | 70 6d 20 2a 63 6f 6e 74 |truct tc|pm *cont|
|00034b70| 72 6f 6c 2c 20 2a 69 6e | 74 72 2c 20 2a 63 66 69 |rol, *in|tr, *cfi|
|00034b80| 6c 65 3b 0a 09 73 74 72 | 75 63 74 20 53 74 61 6e |le;..str|uct Stan|
|00034b90| 64 61 72 64 50 61 63 6b | 65 74 20 2a 64 65 61 74 |dardPack|et *deat|
|00034ba0| 68 5f 70 61 63 6b 65 74 | 3b 0a 09 73 74 72 75 63 |h_packet|;..struc|
|00034bb0| 74 20 4d 73 67 50 6f 72 | 74 20 2a 70 6f 72 74 2c |t MsgPor|t *port,|
|00034bc0| 20 2a 73 79 6e 63 2c 20 | 2a 72 61 6e 6b 3b 0a 09 | *sync, |*rank;..|
|00034bd0| 73 74 72 75 63 74 20 69 | 6e 66 6f 5f 68 65 61 64 |struct i|nfo_head|
|00034be0| 65 72 20 2a 69 6e 66 6f | 73 3b 0a 09 62 38 20 2a |er *info|s;..b8 *|
|00034bf0| 75 73 65 72 2c 20 2a 70 | 61 73 73 77 6f 72 64 3b |user, *p|assword;|
|00034c00| 0a 09 62 38 20 2a 63 77 | 64 2c 20 2a 72 6f 6f 74 |..b8 *cw|d, *root|
|00034c10| 3b 0a 09 62 38 20 2a 68 | 6f 73 74 3b 0a 09 62 33 |;..b8 *h|ost;..b3|
|00034c20| 32 20 63 66 69 6c 65 5f | 74 79 70 65 3b 0a 09 62 |2 cfile_|type;..b|
|00034c30| 33 32 20 61 62 6f 72 74 | 5f 73 69 67 6e 61 6c 73 |32 abort|_signals|
|00034c40| 2c 20 64 69 73 63 6f 6e | 6e 65 63 74 5f 73 69 67 |, discon|nect_sig|
|00034c50| 6e 61 6c 73 3b 0a 09 73 | 74 72 75 63 74 20 57 69 |nals;..s|truct Wi|
|00034c60| 6e 64 6f 77 20 2a 73 74 | 61 74 75 73 5f 77 69 6e |ndow *st|atus_win|
|00034c70| 64 6f 77 3b 0a 09 73 74 | 72 75 63 74 20 47 61 64 |dow;..st|ruct Gad|
|00034c80| 67 65 74 20 2a 61 62 6f | 72 74 5f 67 61 64 67 65 |get *abo|rt_gadge|
|00034c90| 74 2c 20 2a 64 69 73 63 | 6f 6e 6e 65 63 74 5f 67 |t, *disc|onnect_g|
|00034ca0| 61 64 67 65 74 3b 0a 09 | 0a 09 73 74 72 75 63 74 |adget;..|..struct|
|00034cb0| 20 49 6e 74 75 69 74 69 | 6f 6e 42 61 73 65 20 2a | Intuiti|onBase *|
|00034cc0| 49 42 61 73 65 3b 0a 09 | 73 74 72 75 63 74 20 47 |IBase;..|struct G|
|00034cd0| 66 78 42 61 73 65 20 2a | 47 42 61 73 65 3b 0a 09 |fxBase *|GBase;..|
|00034ce0| 73 74 72 75 63 74 20 4c | 69 62 72 61 72 79 20 2a |struct L|ibrary *|
|00034cf0| 47 54 42 61 73 65 3b 0a | 09 0a 09 62 6f 6f 6c 65 |GTBase;.|...boole|
|00034d00| 61 6e 20 63 6f 6e 6e 65 | 63 74 65 64 2c 20 72 65 |an conne|cted, re|
|00034d10| 61 64 5f 62 61 6e 6e 65 | 72 73 2c 20 75 6e 69 78 |ad_banne|rs, unix|
|00034d20| 5f 70 61 74 68 73 2c 20 | 6f 70 65 6e 5f 73 74 61 |_paths, |open_sta|
|00034d30| 74 75 73 2c 20 71 75 69 | 63 6b 3b 0a 09 62 6f 6f |tus, qui|ck;..boo|
|00034d40| 6c 65 61 6e 20 6e 65 65 | 64 73 5f 75 73 65 72 2c |lean nee|ds_user,|
|00034d50| 20 6e 65 65 64 73 5f 70 | 61 73 73 77 6f 72 64 2c | needs_p|assword,|
|00034d60| 20 63 61 73 65 5f 73 65 | 6e 73 69 74 69 76 65 2c | case_se|nsitive,|
|00034d70| 20 61 6c 6c 5f 6d 65 73 | 73 61 67 65 73 2c 20 65 | all_mes|sages, e|
|00034d80| 72 72 6f 72 5f 6d 65 73 | 73 61 67 65 73 3b 0a 09 |rror_mes|sages;..|
|00034d90| 62 31 36 20 70 6f 72 74 | 5f 6e 75 6d 62 65 72 3b |b16 port|_number;|
|00034da0| 0a 09 0a 09 62 38 20 73 | 69 74 65 5f 73 74 61 74 |....b8 s|ite_stat|
|00034db0| 65 3b 0a 09 62 38 20 72 | 65 61 64 5f 62 75 66 66 |e;..b8 r|ead_buff|
|00034dc0| 65 72 5b 52 45 41 44 5f | 42 55 46 46 45 52 5f 4c |er[READ_|BUFFER_L|
|00034dd0| 45 4e 47 54 48 5d 3b 0a | 09 0a 09 62 38 20 6e 61 |ENGTH];.|...b8 na|
|00034de0| 6d 65 5b 30 5d 3b 0a 7d | 20 73 69 74 65 3b 0a 0a |me[0];.}| site;..|
|00034df0| 23 64 65 66 69 6e 65 20 | 56 5f 73 69 74 65 20 32 |#define |V_site 2|
|00034e00| 39 35 34 35 0a 0a 73 74 | 72 75 63 74 20 4d 73 67 |9545..st|ruct Msg|
|00034e10| 50 6f 72 74 20 2a 67 65 | 74 5f 73 69 74 65 28 62 |Port *ge|t_site(b|
|00034e20| 38 20 2a 73 29 3b 0a 76 | 6f 69 64 20 5f 5f 73 61 |8 *s);.v|oid __sa|
|00034e30| 76 65 64 73 20 73 69 74 | 65 5f 68 61 6e 64 6c 65 |veds sit|e_handle|
|00034e40| 72 28 76 6f 69 64 29 3b | 0a 76 6f 69 64 20 72 65 |r(void);|.void re|
|00034e50| 6d 6f 76 65 5f 73 69 74 | 65 28 73 69 74 65 20 2a |move_sit|e(site *|
|00034e60| 29 3b 0a 76 6f 69 64 20 | 73 68 75 74 64 6f 77 6e |);.void |shutdown|
|00034e70| 5f 73 69 74 65 73 28 76 | 6f 69 64 29 3b 0a 76 6f |_sites(v|oid);.vo|
|00034e80| 69 64 20 73 75 73 70 65 | 6e 64 5f 73 69 74 65 73 |id suspe|nd_sites|
|00034e90| 28 76 6f 69 64 29 3b 0a | 0a 76 6f 69 64 20 73 74 |(void);.|.void st|
|00034ea0| 61 74 65 5f 63 68 61 6e | 67 65 28 73 69 74 65 20 |ate_chan|ge(site |
|00034eb0| 2a 2c 20 62 31 36 29 3b | 0a 0a 23 64 65 66 69 6e |*, b16);|..#defin|
|00034ec0| 65 20 49 44 4c 45 5f 49 | 4e 54 45 52 56 41 4c 20 |e IDLE_I|NTERVAL |
|00034ed0| 32 30 09 2f 2a 20 32 30 | 20 73 65 63 6f 6e 64 20 |20./* 20| second |
|00034ee0| 69 6e 74 65 72 76 61 6c | 20 2a 2f 0a 0a 23 64 65 |interval| */..#de|
|00034ef0| 66 69 6e 65 20 4e 4f 5f | 4c 4f 43 4b 5f 4e 4f 5f |fine NO_|LOCK_NO_|
|00034f00| 43 4f 4e 4e 5f 49 44 4c | 45 20 31 0a 23 64 65 66 |CONN_IDL|E 1.#def|
|00034f10| 69 6e 65 20 4e 4f 5f 4c | 4f 43 4b 5f 43 4f 4e 4e |ine NO_L|OCK_CONN|
|00034f20| 5f 49 44 4c 45 20 36 0a | 23 64 65 66 69 6e 65 20 |_IDLE 6.|#define |
|00034f30| 4c 4f 43 4b 5f 43 4f 4e | 4e 5f 49 44 4c 45 20 31 |LOCK_CON|N_IDLE 1|
|00034f40| 35 0a 0a 23 64 65 66 69 | 6e 65 20 53 53 5f 44 49 |5..#defi|ne SS_DI|
|00034f50| 53 43 4f 4e 4e 45 43 54 | 45 44 20 31 0a 23 64 65 |SCONNECT|ED 1.#de|
|00034f60| 66 69 6e 65 20 53 53 5f | 43 4f 4e 4e 45 43 54 49 |fine SS_|CONNECTI|
|00034f70| 4e 47 20 32 0a 23 64 65 | 66 69 6e 65 20 53 53 5f |NG 2.#de|fine SS_|
|00034f80| 49 44 4c 45 20 33 0a 23 | 64 65 66 69 6e 65 20 53 |IDLE 3.#|define S|
|00034f90| 53 5f 44 49 53 43 4f 4e | 4e 45 43 54 49 4e 47 20 |S_DISCON|NECTING |
|00034fa0| 34 0a 23 64 65 66 69 6e | 65 20 53 53 5f 4c 49 53 |4.#defin|e SS_LIS|
|00034fb0| 54 49 4e 47 20 35 0a 23 | 64 65 66 69 6e 65 20 53 |TING 5.#|define S|
|00034fc0| 53 5f 43 57 44 20 36 0a | 23 64 65 66 69 6e 65 20 |S_CWD 6.|#define |
|00034fd0| 53 53 5f 4f 50 45 4e 49 | 4e 47 20 37 0a 23 64 65 |SS_OPENI|NG 7.#de|
|00034fe0| 66 69 6e 65 20 53 53 5f | 43 4c 4f 53 49 4e 47 20 |fine SS_|CLOSING |
|00034ff0| 38 0a 23 64 65 66 69 6e | 65 20 53 53 5f 52 45 41 |8.#defin|e SS_REA|
|00035000| 44 49 4e 47 20 39 0a 23 | 64 65 66 69 6e 65 20 53 |DING 9.#|define S|
|00035010| 53 5f 57 52 49 54 49 4e | 47 20 31 30 0a 23 64 65 |S_WRITIN|G 10.#de|
|00035020| 66 69 6e 65 20 53 53 5f | 4c 4f 47 49 4e 20 31 31 |fine SS_|LOGIN 11|
|00035030| 0a 23 64 65 66 69 6e 65 | 20 53 53 5f 41 42 4f 52 |.#define| SS_ABOR|
|00035040| 54 49 4e 47 20 31 32 0a | 23 64 65 66 69 6e 65 20 |TING 12.|#define |
|00035050| 53 53 5f 44 45 4c 45 54 | 49 4e 47 20 31 33 0a 23 |SS_DELET|ING 13.#|
|00035060| 64 65 66 69 6e 65 20 53 | 53 5f 4d 41 4b 45 44 49 |define S|S_MAKEDI|
|00035070| 52 20 31 34 0a 23 64 65 | 66 69 6e 65 20 53 53 5f |R 14.#de|fine SS_|
|00035080| 52 45 4e 41 4d 49 4e 47 | 20 31 35 0a 00 00 00 00 |RENAMING| 15.....|
|00035090| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000350a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000350b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000350c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000350d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000350e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000350f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035100| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035110| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035120| 00 00 00 00 00 00 00 00 | 00 00 03 72 00 00 05 f5 |........|...r....|
|00035130| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 03 71 |........|.......q|
|00035140| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035150| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035160| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035170| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035180| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035190| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000351a0| 00 00 00 00 00 00 1a f9 | 00 00 04 15 00 00 08 b7 |........|........|
|000351b0| 0a 4d 41 53 68 61 72 65 | 5f 36 34 00 00 00 00 00 |.MAShare|_64.....|
|000351c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000351d0| 00 00 00 00 00 00 00 00 | 00 00 1a f9 00 00 04 15 |........|........|
|000351e0| 00 00 09 1d 00 00 1a f9 | 00 00 03 fa 00 00 01 25 |........|.......%|
|000351f0| 00 00 00 00 00 00 00 00 | 00 00 03 71 00 00 00 01 |........|...q....|
|00035200| 00 00 00 02 00 00 01 a9 | 00 00 00 03 00 00 00 00 |........|........|
|00035210| 00 00 01 aa 1e c1 f7 d9 | 00 00 00 00 00 00 00 00 |........|........|
|00035220| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035230| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035240| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035250| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035260| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035270| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035280| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035290| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000352a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000352b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000352c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000352d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000352e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000352f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035300| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035310| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035320| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 01 ac |........|........|
|00035330| 00 00 01 ab 00 00 01 aa | 00 00 00 00 00 00 00 00 |........|........|
|00035340| 00 00 00 00 00 00 04 ed | 00 00 00 00 00 00 00 00 |........|........|
|00035350| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035360| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035370| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035380| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035390| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000353a0| 00 00 00 00 00 00 19 1e | 00 00 04 17 00 00 09 c4 |........|........|
|000353b0| 09 73 6d 61 6b 65 66 69 | 6c 65 00 00 00 00 00 00 |.smakefi|le......|
|000353c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000353d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000353e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000353f0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00035400| 23 0a 23 20 4d 61 6b 65 | 66 69 6c 65 20 61 75 74 |#.# Make|file aut|
|00035410| 6f 6d 61 74 69 63 61 6c | 6c 79 20 67 65 6e 65 72 |omatical|ly gener|
|00035420| 61 74 65 64 20 62 79 20 | 4d 4b 4d 4b 20 56 36 2e |ated by |MKMK V6.|
|00035430| 35 30 20 6f 6e 20 4f 63 | 74 20 20 31 20 31 39 39 |50 on Oc|t 1 199|
|00035440| 33 20 61 74 20 30 31 3a | 34 36 3a 31 30 0a 23 0a |3 at 01:|46:10.#.|
|00035450| 0a 4f 42 4a 53 3d 20 74 | 63 70 2e 6f 20 73 74 61 |.OBJS= t|cp.o sta|
|00035460| 72 74 75 70 2e 6f 20 63 | 6f 6e 6e 65 63 74 2e 6f |rtup.o c|onnect.o|
|00035470| 20 6c 69 73 74 65 6e 2e | 6f 20 66 74 70 69 6e 66 | listen.|o ftpinf|
|00035480| 6f 2e 6f 20 73 70 6c 69 | 74 2e 6f 20 73 69 74 65 |o.o spli|t.o site|
|00035490| 2e 6f 20 6c 6f 63 61 6c | 2e 6f 5c 0a 20 20 20 20 |.o local|.o\. |
|000354a0| 72 65 71 75 65 73 74 2e | 6f 0a 0a 73 74 61 72 74 |request.|o..start|
|000354b0| 75 70 3a 20 24 28 4f 42 | 4a 53 29 0a 09 73 6c 69 |up: $(OB|JS)..sli|
|000354c0| 6e 6b 20 66 72 6f 6d 20 | 73 74 61 72 74 75 70 2e |nk from |startup.|
|000354d0| 6f 2b 74 63 70 2e 6f 2b | 63 6f 6e 6e 65 63 74 2e |o+tcp.o+|connect.|
|000354e0| 6f 2b 66 74 70 69 6e 66 | 6f 2e 6f 2b 73 69 74 65 |o+ftpinf|o.o+site|
|000354f0| 2e 6f 2b 72 65 71 75 65 | 73 74 2e 6f 2b 6c 6f 63 |.o+reque|st.o+loc|
|00035500| 61 6c 2e 6f 2b 73 70 6c | 69 74 2e 6f 2b 6c 69 73 |al.o+spl|it.o+lis|
|00035510| 74 65 6e 2e 6f 20 74 6f | 20 73 74 61 72 74 75 70 |ten.o to| startup|
|00035520| 20 6c 69 62 20 6c 69 62 | 3a 61 6d 69 67 61 2e 6c | lib lib|:amiga.l|
|00035530| 69 62 2c 6c 69 62 3a 73 | 63 2e 6c 69 62 0a 0a 74 |ib,lib:s|c.lib..t|
|00035540| 63 70 2e 6f 3a 20 74 63 | 70 2e 63 20 65 76 74 79 |cp.o: tc|p.c evty|
|00035550| 70 65 73 2e 68 20 76 65 | 72 69 66 79 2e 68 20 74 |pes.h ve|rify.h t|
|00035560| 63 70 2e 68 0a 0a 73 74 | 61 72 74 75 70 2e 6f 3a |cp.h..st|artup.o:|
|00035570| 20 73 74 61 72 74 75 70 | 2e 63 20 65 76 74 79 70 | startup|.c evtyp|
|00035580| 65 73 2e 68 20 76 65 72 | 69 66 79 2e 68 20 74 63 |es.h ver|ify.h tc|
|00035590| 70 2e 68 20 73 69 74 65 | 2e 68 20 66 74 70 2e 68 |p.h site|.h ftp.h|
|000355a0| 20 6c 6f 63 61 6c 2e 68 | 20 72 65 71 75 65 73 74 | local.h| request|
|000355b0| 2e 68 5c 0a 20 67 6c 6f | 62 61 6c 73 2e 68 20 73 |.h\. glo|bals.h s|
|000355c0| 74 72 69 6e 67 73 2e 68 | 20 76 65 72 69 66 79 5f |trings.h| verify_|
|000355d0| 63 6f 64 65 2e 68 0a 0a | 63 6f 6e 6e 65 63 74 2e |code.h..|connect.|
|000355e0| 6f 3a 20 63 6f 6e 6e 65 | 63 74 2e 63 20 65 76 74 |o: conne|ct.c evt|
|000355f0| 79 70 65 73 2e 68 20 76 | 65 72 69 66 79 2e 68 20 |ypes.h v|erify.h |
|00035600| 74 63 70 2e 68 20 73 69 | 74 65 2e 68 20 66 74 70 |tcp.h si|te.h ftp|
|00035610| 2e 68 20 73 70 6c 69 74 | 2e 68 20 66 74 70 69 6e |.h split|.h ftpin|
|00035620| 66 6f 2e 68 5c 0a 20 63 | 6f 6e 6e 65 63 74 2e 68 |fo.h\. c|onnect.h|
|00035630| 20 72 65 71 75 65 73 74 | 2e 68 20 67 6c 6f 62 61 | request|.h globa|
|00035640| 6c 73 2e 68 20 73 74 72 | 69 6e 67 73 2e 68 0a 0a |ls.h str|ings.h..|
|00035650| 6c 69 73 74 65 6e 2e 6f | 3a 20 6c 69 73 74 65 6e |listen.o|: listen|
|00035660| 2e 63 20 65 76 74 79 70 | 65 73 2e 68 20 76 65 72 |.c evtyp|es.h ver|
|00035670| 69 66 79 2e 68 20 74 63 | 70 2e 68 20 73 69 74 65 |ify.h tc|p.h site|
|00035680| 2e 68 20 66 74 70 2e 68 | 20 73 70 6c 69 74 2e 68 |.h ftp.h| split.h|
|00035690| 20 72 65 71 75 65 73 74 | 2e 68 5c 0a 20 67 6c 6f | request|.h\. glo|
|000356a0| 62 61 6c 73 2e 68 0a 0a | 66 74 70 69 6e 66 6f 2e |bals.h..|ftpinfo.|
|000356b0| 6f 3a 20 66 74 70 69 6e | 66 6f 2e 63 20 65 76 74 |o: ftpin|fo.c evt|
|000356c0| 79 70 65 73 2e 68 20 76 | 65 72 69 66 79 2e 68 20 |ypes.h v|erify.h |
|000356d0| 74 63 70 2e 68 20 73 69 | 74 65 2e 68 20 66 74 70 |tcp.h si|te.h ftp|
|000356e0| 2e 68 20 73 70 6c 69 74 | 2e 68 20 66 74 70 69 6e |.h split|.h ftpin|
|000356f0| 66 6f 2e 68 5c 0a 20 63 | 6f 6e 6e 65 63 74 2e 68 |fo.h\. c|onnect.h|
|00035700| 20 67 6c 6f 62 61 6c 73 | 2e 68 0a 0a 73 70 6c 69 | globals|.h..spli|
|00035710| 74 2e 6f 3a 20 73 70 6c | 69 74 2e 63 20 65 76 74 |t.o: spl|it.c evt|
|00035720| 79 70 65 73 2e 68 20 76 | 65 72 69 66 79 2e 68 20 |ypes.h v|erify.h |
|00035730| 74 63 70 2e 68 20 73 69 | 74 65 2e 68 20 66 74 70 |tcp.h si|te.h ftp|
|00035740| 2e 68 20 73 70 6c 69 74 | 2e 68 20 67 6c 6f 62 61 |.h split|.h globa|
|00035750| 6c 73 2e 68 0a 0a 73 69 | 74 65 2e 6f 3a 20 73 69 |ls.h..si|te.o: si|
|00035760| 74 65 2e 63 20 65 76 74 | 79 70 65 73 2e 68 20 76 |te.c evt|ypes.h v|
|00035770| 65 72 69 66 79 2e 68 20 | 74 63 70 2e 68 20 73 69 |erify.h |tcp.h si|
|00035780| 74 65 2e 68 20 66 74 70 | 2e 68 20 73 70 6c 69 74 |te.h ftp|.h split|
|00035790| 2e 68 20 66 74 70 69 6e | 66 6f 2e 68 20 63 6f 6e |.h ftpin|fo.h con|
|000357a0| 6e 65 63 74 2e 68 5c 0a | 20 72 65 71 75 65 73 74 |nect.h\.| request|
|000357b0| 2e 68 20 67 6c 6f 62 61 | 6c 73 2e 68 20 73 74 72 |.h globa|ls.h str|
|000357c0| 69 6e 67 73 2e 68 0a 0a | 6c 6f 63 61 6c 2e 6f 3a |ings.h..|local.o:|
|000357d0| 20 6c 6f 63 61 6c 2e 63 | 20 65 76 74 79 70 65 73 | local.c| evtypes|
|000357e0| 2e 68 20 76 65 72 69 66 | 79 2e 68 20 74 63 70 2e |.h verif|y.h tcp.|
|000357f0| 68 20 73 69 74 65 2e 68 | 20 66 74 70 2e 68 20 73 |h site.h| ftp.h s|
|00035800| 70 6c 69 74 2e 68 20 6c | 6f 63 61 6c 2e 68 20 67 |plit.h l|ocal.h g|
|00035810| 6c 6f 62 61 6c 73 2e 68 | 0a 0a 72 65 71 75 65 73 |lobals.h|..reques|
|00035820| 74 2e 6f 3a 20 72 65 71 | 75 65 73 74 2e 63 20 65 |t.o: req|uest.c e|
|00035830| 76 74 79 70 65 73 2e 68 | 20 76 65 72 69 66 79 2e |vtypes.h| verify.|
|00035840| 68 20 66 74 70 2e 68 20 | 73 69 74 65 2e 68 20 67 |h ftp.h |site.h g|
|00035850| 6c 6f 62 61 6c 73 2e 68 | 20 73 74 72 69 6e 67 73 |lobals.h| strings|
|00035860| 2e 68 5c 0a 20 72 65 71 | 75 65 73 74 2e 68 0a 0a |.h\. req|uest.h..|
|00035870| 0a 0a 0a 0a 0a 0a 0a 0a | 0a 0a 0a 0a 0a 20 20 20 |........|..... |
|00035880| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|00035890| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000358a0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000358b0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000358c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000358d0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | | |
|000358e0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 00 00 00 | | ...|
|000358f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035900| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035910| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035920| 00 00 00 00 00 00 00 00 | 00 00 03 72 00 00 05 f5 |........|...r....|
|00035930| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 03 71 |........|.......q|
|00035940| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035950| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035960| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035970| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035980| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035990| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000359a0| 00 00 00 00 00 00 1a f9 | 00 00 04 15 00 00 08 b7 |........|........|
|000359b0| 0a 4d 41 53 68 61 72 65 | 5f 36 34 00 00 00 00 00 |.MAShare|_64.....|
|000359c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000359d0| 00 00 00 00 00 00 00 00 | 00 00 1a f9 00 00 04 15 |........|........|
|000359e0| 00 00 09 1d 00 00 1a f9 | 00 00 03 fa 00 00 01 25 |........|.......%|
|000359f0| 00 00 00 00 00 00 00 00 | 00 00 03 71 00 00 00 01 |........|...q....|
|00035a00| 00 00 00 02 00 00 01 ad | 00 00 00 0a 00 00 00 00 |........|........|
|00035a10| 00 00 01 ae 8f 18 14 29 | 00 00 00 00 00 00 00 00 |.......)|........|
|00035a20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035a30| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035a40| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035a50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035a60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035a70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035a80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035a90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035aa0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035ab0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035ac0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035ad0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035ae0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035af0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035b00| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035b10| 00 00 01 b7 00 00 01 b6 | 00 00 01 b5 00 00 01 b4 |........|........|
|00035b20| 00 00 01 b3 00 00 01 b2 | 00 00 01 b1 00 00 01 b0 |........|........|
|00035b30| 00 00 01 af 00 00 01 ae | 00 00 00 00 00 00 00 00 |........|........|
|00035b40| 00 00 00 00 00 00 12 a3 | 00 00 00 00 00 00 00 00 |........|........|
|00035b50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035b60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035b70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035b80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035b90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035ba0| 00 00 00 00 00 00 19 98 | 00 00 03 53 00 00 08 fc |........|...S....|
|00035bb0| 07 73 70 6c 69 74 2e 63 | 00 00 00 00 00 00 00 00 |.split.c|........|
|00035bc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035bd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035be0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00035bf0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00035c00| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|00035c10| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|00035c20| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|00035c30| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|00035c40| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|00035c50| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|00035c60| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|00035c70| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|00035c80| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|00035c90| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|00035ca0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|00035cb0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|00035cc0| 23 69 6e 63 6c 75 64 65 | 20 3c 65 78 65 63 2f 74 |#include| <exec/t|
|00035cd0| 79 70 65 73 2e 68 3e 0a | 23 69 6e 63 6c 75 64 65 |ypes.h>.|#include|
|00035ce0| 20 3c 65 78 65 63 2f 6d | 65 6d 6f 72 79 2e 68 3e | <exec/m|emory.h>|
|00035cf0| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 65 78 65 63 2f |.#includ|e <exec/|
|00035d00| 61 6c 65 72 74 73 2e 68 | 3e 0a 0a 23 69 6e 63 6c |alerts.h|>..#incl|
|00035d10| 75 64 65 20 3c 64 6f 73 | 2f 64 6f 73 2e 68 3e 0a |ude <dos|/dos.h>.|
|00035d20| 23 69 6e 63 6c 75 64 65 | 20 3c 64 6f 73 2f 64 6f |#include| <dos/do|
|00035d30| 73 65 78 74 65 6e 73 2e | 68 3e 0a 23 69 6e 63 6c |sextens.|h>.#incl|
|00035d40| 75 64 65 20 3c 64 6f 73 | 2f 64 6f 73 74 61 67 73 |ude <dos|/dostags|
|00035d50| 2e 68 3e 0a 0a 23 69 6e | 63 6c 75 64 65 20 3c 70 |.h>..#in|clude <p|
|00035d60| 72 6f 74 6f 2f 65 78 65 | 63 2e 68 3e 0a 23 69 6e |roto/exe|c.h>.#in|
|00035d70| 63 6c 75 64 65 20 3c 70 | 72 6f 74 6f 2f 64 6f 73 |clude <p|roto/dos|
|00035d80| 2e 68 3e 0a 0a 23 69 6e | 63 6c 75 64 65 20 3c 73 |.h>..#in|clude <s|
|00035d90| 74 64 69 6f 2e 68 3e 0a | 23 69 6e 63 6c 75 64 65 |tdio.h>.|#include|
|00035da0| 20 3c 73 74 64 6c 69 62 | 2e 68 3e 0a 23 69 6e 63 | <stdlib|.h>.#inc|
|00035db0| 6c 75 64 65 20 3c 73 74 | 72 69 6e 67 2e 68 3e 0a |lude <st|ring.h>.|
|00035dc0| 0a 23 69 6e 63 6c 75 64 | 65 20 22 65 76 74 79 70 |.#includ|e "evtyp|
|00035dd0| 65 73 2e 68 22 0a 23 69 | 6e 63 6c 75 64 65 20 22 |es.h".#i|nclude "|
|00035de0| 76 65 72 69 66 79 2e 68 | 22 0a 23 69 6e 63 6c 75 |verify.h|".#inclu|
|00035df0| 64 65 20 22 74 63 70 2e | 68 22 0a 0a 23 69 6e 63 |de "tcp.|h"..#inc|
|00035e00| 6c 75 64 65 20 22 73 69 | 74 65 2e 68 22 0a 23 69 |lude "si|te.h".#i|
|00035e10| 6e 63 6c 75 64 65 20 22 | 66 74 70 2e 68 22 0a 23 |nclude "|ftp.h".#|
|00035e20| 69 6e 63 6c 75 64 65 20 | 22 73 70 6c 69 74 2e 68 |include |"split.h|
|00035e30| 22 0a 0a 23 69 6e 63 6c | 75 64 65 20 22 67 6c 6f |"..#incl|ude "glo|
|00035e40| 62 61 6c 73 2e 68 22 0a | 0a 62 6f 6f 6c 65 61 6e |bals.h".|.boolean|
|00035e50| 20 63 6f 6c 6c 61 70 73 | 65 28 62 38 20 2a 73 29 | collaps|e(b8 *s)|
|00035e60| 0a 7b 0a 09 62 38 20 2a | 74 2c 20 2a 75 3b 0a 09 |.{..b8 *|t, *u;..|
|00035e70| 0a 09 74 20 3d 20 73 3b | 0a 09 75 20 3d 20 73 3b |..t = s;|..u = s;|
|00035e80| 0a 09 0a 09 2f 2a 20 2e | 20 26 20 2e 2e 20 61 72 |..../* .| & .. ar|
|00035e90| 65 20 69 6c 6c 65 67 61 | 6c 20 2a 2f 0a 09 69 66 |e illega|l */..if|
|00035ea0| 20 28 75 5b 30 5d 20 3d | 3d 20 27 2e 27 29 20 7b | (u[0] =|= '.') {|
|00035eb0| 0a 09 09 69 66 20 28 75 | 5b 31 5d 20 3d 3d 20 30 |...if (u|[1] == 0|
|00035ec0| 29 20 72 65 74 75 72 6e | 20 66 61 6c 73 65 3b 0a |) return| false;.|
|00035ed0| 09 09 69 66 20 28 75 5b | 31 5d 20 3d 3d 20 27 2f |..if (u[|1] == '/|
|00035ee0| 27 29 20 72 65 74 75 72 | 6e 20 66 61 6c 73 65 3b |') retur|n false;|
|00035ef0| 0a 09 09 69 66 20 28 75 | 5b 31 5d 20 3d 3d 20 27 |...if (u|[1] == '|
|00035f00| 2e 27 29 20 7b 0a 09 09 | 09 69 66 20 28 75 5b 32 |.') {...|.if (u[2|
|00035f10| 5d 20 3d 3d 20 30 29 20 | 72 65 74 75 72 6e 20 66 |] == 0) |return f|
|00035f20| 61 6c 73 65 3b 0a 09 09 | 09 69 66 20 28 75 5b 32 |alse;...|.if (u[2|
|00035f30| 5d 20 3d 3d 20 27 2f 27 | 29 20 72 65 74 75 72 6e |] == '/'|) return|
|00035f40| 20 66 61 6c 73 65 3b 0a | 09 09 7d 0a 09 7d 0a 09 | false;.|..}..}..|
|00035f50| 0a 09 77 68 69 6c 65 20 | 28 2a 75 29 20 7b 0a 09 |..while |(*u) {..|
|00035f60| 09 69 66 20 28 74 20 3d | 3d 20 73 20 26 26 20 75 |.if (t =|= s && u|
|00035f70| 5b 30 5d 20 3d 3d 20 27 | 2f 27 29 20 7b 0a 09 09 |[0] == '|/') {...|
|00035f80| 09 2f 2f 20 72 65 74 75 | 72 6e 20 66 61 6c 73 65 |.// retu|rn false|
|00035f90| 3b 20 2f 2f 20 75 73 65 | 64 20 74 6f 20 64 6f 20 |; // use|d to do |
|00035fa0| 74 68 69 73 2c 20 62 75 | 74 20 70 65 6f 70 6c 65 |this, bu|t people|
|00035fb0| 20 64 69 64 6e 27 74 20 | 77 61 6e 74 20 69 74 20 | didn't |want it |
|00035fc0| 74 6f 20 65 72 72 6f 72 | 0a 09 09 09 75 2b 2b 3b |to error|....u++;|
|00035fd0| 09 2f 2a 20 69 67 6e 6f | 72 65 20 69 74 20 2a 2f |./* igno|re it */|
|00035fe0| 0a 09 09 09 63 6f 6e 74 | 69 6e 75 65 3b 0a 09 09 |....cont|inue;...|
|00035ff0| 7d 0a 09 09 0a 09 09 69 | 66 20 28 75 5b 30 5d 20 |}......i|f (u[0] |
|00036000| 3d 3d 20 27 2f 27 20 26 | 26 20 75 5b 31 5d 20 3d |== '/' &|& u[1] =|
|00036010| 3d 20 27 2e 27 29 20 7b | 0a 09 09 09 69 66 20 28 |= '.') {|....if (|
|00036020| 75 5b 32 5d 20 3d 3d 20 | 30 29 20 72 65 74 75 72 |u[2] == |0) retur|
|00036030| 6e 20 66 61 6c 73 65 3b | 0a 09 09 09 69 66 20 28 |n false;|....if (|
|00036040| 75 5b 32 5d 20 3d 3d 20 | 27 2f 27 29 20 72 65 74 |u[2] == |'/') ret|
|00036050| 75 72 6e 20 66 61 6c 73 | 65 3b 0a 09 09 09 69 66 |urn fals|e;....if|
|00036060| 20 28 75 5b 32 5d 20 3d | 3d 20 27 2e 27 29 20 7b | (u[2] =|= '.') {|
|00036070| 0a 09 09 09 09 69 66 20 | 28 75 5b 33 5d 20 3d 3d |.....if |(u[3] ==|
|00036080| 20 30 29 20 72 65 74 75 | 72 6e 20 66 61 6c 73 65 | 0) retu|rn false|
|00036090| 3b 0a 09 09 09 09 69 66 | 20 28 75 5b 33 5d 20 3d |;.....if| (u[3] =|
|000360a0| 3d 20 27 2f 27 29 20 72 | 65 74 75 72 6e 20 66 61 |= '/') r|eturn fa|
|000360b0| 6c 73 65 3b 0a 09 09 09 | 7d 0a 09 09 7d 0a 09 09 |lse;....|}...}...|
|000360c0| 0a 09 09 69 66 20 28 75 | 5b 30 5d 20 3d 3d 20 27 |...if (u|[0] == '|
|000360d0| 2f 27 20 26 26 20 75 5b | 31 5d 20 3d 3d 20 27 2f |/' && u[|1] == '/|
|000360e0| 27 29 20 7b 0a 09 09 09 | 77 68 69 6c 65 20 28 2d |') {....|while (-|
|000360f0| 2d 74 20 3e 20 73 29 20 | 7b 0a 09 09 09 09 69 66 |-t > s) |{.....if|
|00036100| 20 28 2a 74 20 3d 3d 20 | 27 2f 27 29 20 62 72 65 | (*t == |'/') bre|
|00036110| 61 6b 3b 0a 09 09 09 7d | 0a 09 09 09 75 2b 2b 3b |ak;....}|....u++;|
|00036120| 0a 09 09 09 69 66 20 28 | 74 20 3d 3d 20 73 29 20 |....if (|t == s) |
|00036130| 75 2b 2b 3b 0a 09 09 7d | 20 65 6c 73 65 20 7b 0a |u++;...}| else {.|
|00036140| 09 09 09 2a 74 2b 2b 20 | 3d 20 2a 75 2b 2b 3b 0a |...*t++ |= *u++;.|
|00036150| 09 09 7d 0a 09 7d 0a 09 | 0a 09 69 66 20 28 74 20 |..}..}..|..if (t |
|00036160| 3e 20 73 20 26 26 20 74 | 5b 2d 31 5d 20 3d 3d 20 |> s && t|[-1] == |
|00036170| 27 2f 27 29 20 74 5b 2d | 31 5d 20 3d 20 30 3b 09 |'/') t[-|1] = 0;.|
|00036180| 2f 2a 20 63 75 6c 6c 20 | 74 68 65 20 74 72 61 69 |/* cull |the trai|
|00036190| 6c 69 6e 67 20 27 2f 27 | 20 2a 2f 0a 09 0a 09 2a |ling '/'| */....*|
|000361a0| 74 20 3d 20 30 3b 0a 09 | 0a 09 72 65 74 75 72 6e |t = 0;..|..return|
|000361b0| 20 74 72 75 65 3b 0a 7d | 0a 0a 62 6f 6f 6c 65 61 | true;.}|..boolea|
|000361c0| 6e 20 73 70 6c 69 74 5f | 64 61 74 61 28 6c 6f 63 |n split_|data(loc|
|000361d0| 6b 20 2a 6c 2c 20 62 38 | 20 2a 7a 2c 20 73 70 6c |k *l, b8| *z, spl|
|000361e0| 69 74 20 2a 73 64 29 0a | 7b 0a 09 62 38 20 2a 73 |it *sd).|{..b8 *s|
|000361f0| 2c 20 2a 74 3b 0a 09 69 | 6e 74 20 6c 65 6e 31 2c |, *t;..i|nt len1,|
|00036200| 20 6c 65 6e 32 2c 20 6c | 65 6e 33 3b 0a 09 2f 2a | len2, l|en3;../*|
|00036210| 20 0a 09 20 2a 20 73 69 | 67 68 20 2e 2e 2e 20 61 | .. * si|gh ... a|
|00036220| 6c 6c 20 74 68 61 74 20 | 77 6f 72 6b 20 74 6f 20 |ll that |work to |
|00036230| 73 65 70 61 72 61 74 65 | 20 74 68 65 20 6c 69 62 |separate| the lib|
|00036240| 73 20 74 6f 20 70 72 6f | 63 65 73 73 65 73 20 2e |s to pro|cesses .|
|00036250| 2e 2e 20 6a 75 73 74 0a | 09 20 2a 20 67 69 76 65 |.. just.|. * give|
|00036260| 6e 20 75 70 20 61 6e 64 | 20 75 73 65 64 20 74 68 |n up and| used th|
|00036270| 65 20 67 6c 6f 62 61 6c | 20 44 6f 73 42 61 73 65 |e global| DosBase|
|00036280| 20 68 65 72 65 0a 09 20 | 2a 2f 0a 09 73 74 72 75 | here.. |*/..stru|
|00036290| 63 74 20 44 65 76 50 72 | 6f 63 20 2a 64 70 3b 0a |ct DevPr|oc *dp;.|
|000362a0| 09 0a 09 74 72 75 74 68 | 28 7a 20 21 3d 20 6e 69 |...truth|(z != ni|
|000362b0| 6c 29 3b 0a 09 0a 09 69 | 66 20 28 21 6c 20 26 26 |l);....i|f (!l &&|
|000362c0| 20 7a 5b 30 5d 20 3d 3d | 20 30 29 20 7b 0a 09 09 | z[0] ==| 0) {...|
|000362d0| 0a 09 09 73 64 2d 3e 70 | 6f 72 74 20 3d 20 6c 6f |...sd->p|ort = lo|
|000362e0| 63 61 6c 5f 70 6f 72 74 | 3b 0a 09 09 73 64 2d 3e |cal_port|;...sd->|
|000362f0| 70 61 74 68 20 3d 20 6e | 69 6c 3b 0a 09 09 0a 09 |path = n|il;.....|
|00036300| 09 73 64 2d 3e 77 6f 72 | 6b 20 3d 20 6e 69 6c 3b |.sd->wor|k = nil;|
|00036310| 0a 0a 09 09 72 65 74 75 | 72 6e 20 74 72 75 65 3b |....retu|rn true;|
|00036320| 0a 09 7d 0a 09 0a 09 73 | 20 3d 20 28 62 38 20 2a |..}....s| = (b8 *|
|00036330| 29 61 6c 6c 6f 63 61 74 | 65 28 7a 5b 30 5d 20 2b |)allocat|e(z[0] +|
|00036340| 20 31 2c 20 56 5f 63 73 | 74 72 29 3b 0a 09 69 66 | 1, V_cs|tr);..if|
|00036350| 20 28 21 73 29 20 7b 0a | 09 09 73 64 2d 3e 77 6f | (!s) {.|..sd->wo|
|00036360| 72 6b 20 3d 20 6e 69 6c | 3b 0a 09 09 72 65 74 75 |rk = nil|;...retu|
|00036370| 72 6e 20 66 61 6c 73 65 | 3b 0a 09 7d 0a 09 0a 09 |rn false|;..}....|
|00036380| 69 66 20 28 7a 5b 30 5d | 29 0a 09 09 6d 65 6d 63 |if (z[0]|)...memc|
|00036390| 70 79 28 73 2c 20 26 7a | 5b 31 5d 2c 20 7a 5b 30 |py(s, &z|[1], z[0|
|000363a0| 5d 29 3b 0a 0a 09 73 5b | 7a 5b 30 5d 5d 20 3d 20 |]);...s[|z[0]] = |
|000363b0| 30 3b 0a 09 0a 09 73 64 | 2d 3e 77 6f 72 6b 20 3d |0;....sd|->work =|
|000363c0| 20 73 3b 0a 0a 09 66 6f | 72 20 28 3b 20 3b 20 73 | s;...fo|r (; ; s|
|000363d0| 2b 2b 29 20 7b 09 0a 09 | 09 69 66 20 28 21 2a 73 |++) {...|.if (!*s|
|000363e0| 29 20 7b 0a 09 09 09 7a | 20 3d 20 73 64 2d 3e 77 |) {....z| = sd->w|
|000363f0| 6f 72 6b 3b 0a 09 09 09 | 62 72 65 61 6b 3b 0a 09 |ork;....|break;..|
|00036400| 09 7d 0a 09 09 0a 09 09 | 69 66 20 28 2a 73 20 3d |.}......|if (*s =|
|00036410| 3d 20 27 3a 27 29 20 7b | 0a 09 09 09 73 2b 2b 3b |= ':') {|....s++;|
|00036420| 0a 09 09 09 64 70 20 3d | 20 47 65 74 44 65 76 69 |....dp =| GetDevi|
|00036430| 63 65 50 72 6f 63 28 73 | 64 2d 3e 77 6f 72 6b 2c |ceProc(s|d->work,|
|00036440| 20 6e 69 6c 29 3b 0a 09 | 09 09 69 66 20 28 21 64 | nil);..|..if (!d|
|00036450| 70 29 20 7b 0a 09 09 09 | 09 64 65 61 6c 6c 6f 63 |p) {....|.dealloc|
|00036460| 61 74 65 28 73 64 2d 3e | 77 6f 72 6b 2c 20 56 5f |ate(sd->|work, V_|
|00036470| 63 73 74 72 29 3b 0a 09 | 09 09 09 73 64 2d 3e 77 |cstr);..|...sd->w|
|00036480| 6f 72 6b 20 3d 20 6e 69 | 6c 3b 0a 09 09 09 09 72 |ork = ni|l;.....r|
|00036490| 65 74 75 72 6e 20 66 61 | 6c 73 65 3b 0a 09 09 09 |eturn fa|lse;....|
|000364a0| 7d 0a 09 09 09 0a 09 09 | 09 6c 20 3d 20 28 6c 6f |}.......|.l = (lo|
|000364b0| 63 6b 20 2a 29 28 64 70 | 2d 3e 64 76 70 5f 4c 6f |ck *)(dp|->dvp_Lo|
|000364c0| 63 6b 20 3c 3c 20 32 29 | 3b 0a 09 09 09 0a 09 09 |ck << 2)|;.......|
|000364d0| 09 46 72 65 65 44 65 76 | 69 63 65 50 72 6f 63 28 |.FreeDev|iceProc(|
|000364e0| 64 70 29 3b 0a 09 09 09 | 0a 09 09 09 7a 20 3d 20 |dp);....|....z = |
|000364f0| 73 3b 0a 09 09 09 0a 09 | 09 09 62 72 65 61 6b 3b |s;......|..break;|
|00036500| 0a 09 09 7d 0a 09 7d 0a | 09 0a 09 2f 2a 20 68 61 |...}..}.|.../* ha|
|00036510| 76 65 20 74 6f 20 6c 6f | 6f 6b 20 61 74 20 6c 6f |ve to lo|ok at lo|
|00036520| 63 6b 20 74 6f 20 73 65 | 65 20 77 68 65 72 65 20 |ck to se|e where |
|00036530| 77 65 20 61 72 65 20 72 | 65 6c 61 74 69 76 65 20 |we are r|elative |
|00036540| 74 6f 20 2a 2f 0a 09 0a | 09 69 66 20 28 21 6c 20 |to */...|.if (!l |
|00036550| 7c 7c 20 28 6c 2d 3e 70 | 6f 72 74 20 3d 3d 20 6c ||| (l->p|ort == l|
|00036560| 6f 63 61 6c 5f 70 6f 72 | 74 20 26 26 20 6c 2d 3e |ocal_por|t && l->|
|00036570| 72 66 73 6c 20 3d 3d 20 | 66 74 70 68 6f 73 74 73 |rfsl == |ftphosts|
|00036580| 5f 6c 6f 63 6b 29 29 20 | 7b 0a 09 09 73 20 3d 20 |_lock)) |{...s = |
|00036590| 7a 3b 0a 09 09 67 6f 74 | 6f 20 72 65 73 6f 6c 76 |z;...got|o resolv|
|000365a0| 65 3b 0a 09 7d 0a 09 0a | 09 76 65 72 69 66 79 28 |e;..}...|.verify(|
|000365b0| 6c 2c 20 56 5f 6c 6f 63 | 6b 29 3b 0a 09 0a 09 69 |l, V_loc|k);....i|
|000365c0| 66 20 28 6c 2d 3e 70 6f | 72 74 20 3d 3d 20 6c 6f |f (l->po|rt == lo|
|000365d0| 63 61 6c 5f 70 6f 72 74 | 29 20 7b 09 2f 2a 20 6d |cal_port|) {./* m|
|000365e0| 6f 73 74 20 68 61 6e 64 | 6c 65 72 73 20 6d 69 67 |ost hand|lers mig|
|000365f0| 68 74 20 61 6c 6c 6f 77 | 20 74 68 69 73 2c 20 62 |ht allow| this, b|
|00036600| 75 74 20 74 68 65 72 65 | 27 73 20 6e 6f 20 70 6f |ut there|'s no po|
|00036610| 69 6e 74 20 2a 2f 0a 09 | 09 73 68 6f 77 5f 73 74 |int */..|.show_st|
|00036620| 72 69 6e 67 28 22 53 70 | 6c 69 74 20 46 61 69 6c |ring("Sp|lit Fail|
|00036630| 20 42 22 29 3b 0a 09 09 | 64 65 61 6c 6c 6f 63 61 | B");...|dealloca|
|00036640| 74 65 28 73 64 2d 3e 77 | 6f 72 6b 2c 20 56 5f 63 |te(sd->w|ork, V_c|
|00036650| 73 74 72 29 3b 0a 09 09 | 73 64 2d 3e 77 6f 72 6b |str);...|sd->work|
|00036660| 20 3d 20 6e 69 6c 3b 0a | 09 09 72 65 74 75 72 6e | = nil;.|..return|
|00036670| 20 66 61 6c 73 65 3b 0a | 09 7d 0a 09 0a 09 2f 2a | false;.|.}..../*|
|00036680| 20 63 6f 6e 73 74 72 75 | 63 74 20 61 20 66 75 6c | constru|ct a ful|
|00036690| 6c 20 70 61 74 68 20 6e | 61 6d 65 20 73 6f 20 77 |l path n|ame so w|
|000366a0| 65 20 63 61 6e 20 63 6f | 6c 6c 61 70 73 65 20 69 |e can co|llapse i|
|000366b0| 74 20 73 65 6e 73 69 62 | 6c 79 20 2a 2f 0a 09 0a |t sensib|ly */...|
|000366c0| 09 69 66 20 28 6c 2d 3e | 66 6e 61 6d 65 5b 30 5d |.if (l->|fname[0]|
|000366d0| 20 3d 3d 20 30 29 20 7b | 0a 09 09 6c 65 6e 31 20 | == 0) {|...len1 |
|000366e0| 3d 20 73 74 72 6c 65 6e | 28 6c 2d 3e 70 6f 72 74 |= strlen|(l->port|
|000366f0| 2d 3e 6d 70 5f 4e 6f 64 | 65 2e 6c 6e 5f 4e 61 6d |->mp_Nod|e.ln_Nam|
|00036700| 65 29 3b 0a 09 09 6c 65 | 6e 32 20 3d 20 73 74 72 |e);...le|n2 = str|
|00036710| 6c 65 6e 28 7a 29 3b 0a | 09 09 0a 09 09 73 20 3d |len(z);.|.....s =|
|00036720| 20 28 62 38 20 2a 29 61 | 6c 6c 6f 63 61 74 65 28 | (b8 *)a|llocate(|
|00036730| 6c 65 6e 31 20 2b 20 6c | 65 6e 32 20 2b 20 32 2c |len1 + l|en2 + 2,|
|00036740| 20 56 5f 63 73 74 72 29 | 3b 0a 09 09 69 66 20 28 | V_cstr)|;...if (|
|00036750| 21 73 29 20 7b 0a 09 09 | 09 64 65 61 6c 6c 6f 63 |!s) {...|.dealloc|
|00036760| 61 74 65 28 73 64 2d 3e | 77 6f 72 6b 2c 20 56 5f |ate(sd->|work, V_|
|00036770| 63 73 74 72 29 3b 0a 09 | 09 09 73 64 2d 3e 77 6f |cstr);..|..sd->wo|
|00036780| 72 6b 20 3d 20 6e 69 6c | 3b 0a 09 09 09 72 65 74 |rk = nil|;....ret|
|00036790| 75 72 6e 20 66 61 6c 73 | 65 3b 0a 09 09 7d 0a 09 |urn fals|e;...}..|
|000367a0| 09 0a 09 09 73 74 72 63 | 70 79 28 73 2c 20 6c 2d |....strc|py(s, l-|
|000367b0| 3e 70 6f 72 74 2d 3e 6d | 70 5f 4e 6f 64 65 2e 6c |>port->m|p_Node.l|
|000367c0| 6e 5f 4e 61 6d 65 29 3b | 0a 09 09 0a 09 09 69 66 |n_Name);|......if|
|000367d0| 20 28 73 64 2d 3e 77 6f | 72 6b 5b 30 5d 29 20 7b | (sd->wo|rk[0]) {|
|000367e0| 0a 09 09 09 73 5b 6c 65 | 6e 31 5d 20 3d 20 27 2f |....s[le|n1] = '/|
|000367f0| 27 3b 0a 09 09 09 73 74 | 72 63 70 79 28 26 73 5b |';....st|rcpy(&s[|
|00036800| 6c 65 6e 31 20 2b 20 31 | 5d 2c 20 7a 29 3b 0a 09 |len1 + 1|], z);..|
|00036810| 09 7d 20 65 6c 73 65 20 | 7b 0a 09 09 09 73 5b 6c |.} else |{....s[l|
|00036820| 65 6e 31 5d 20 3d 20 30 | 3b 0a 09 09 7d 0a 09 09 |en1] = 0|;...}...|
|00036830| 0a 09 09 64 65 61 6c 6c | 6f 63 61 74 65 28 73 64 |...deall|ocate(sd|
|00036840| 2d 3e 77 6f 72 6b 2c 20 | 56 5f 63 73 74 72 29 3b |->work, |V_cstr);|
|00036850| 0a 09 09 73 64 2d 3e 77 | 6f 72 6b 20 3d 20 73 3b |...sd->w|ork = s;|
|00036860| 0a 09 7d 20 65 6c 73 65 | 20 7b 0a 09 09 6c 65 6e |..} else| {...len|
|00036870| 31 20 3d 20 73 74 72 6c | 65 6e 28 6c 2d 3e 70 6f |1 = strl|en(l->po|
|00036880| 72 74 2d 3e 6d 70 5f 4e | 6f 64 65 2e 6c 6e 5f 4e |rt->mp_N|ode.ln_N|
|00036890| 61 6d 65 29 3b 0a 09 09 | 6c 65 6e 32 20 3d 20 73 |ame);...|len2 = s|
|000368a0| 74 72 6c 65 6e 28 6c 2d | 3e 66 6e 61 6d 65 29 3b |trlen(l-|>fname);|
|000368b0| 0a 09 09 6c 65 6e 33 20 | 3d 20 73 74 72 6c 65 6e |...len3 |= strlen|
|000368c0| 28 7a 29 3b 0a 09 09 0a | 09 09 73 20 3d 20 28 62 |(z);....|..s = (b|
|000368d0| 38 20 2a 29 61 6c 6c 6f | 63 61 74 65 28 6c 65 6e |8 *)allo|cate(len|
|000368e0| 31 20 2b 20 6c 65 6e 32 | 20 2b 20 6c 65 6e 33 20 |1 + len2| + len3 |
|000368f0| 2b 20 33 2c 20 56 5f 63 | 73 74 72 29 3b 0a 09 09 |+ 3, V_c|str);...|
|00036900| 69 66 20 28 21 73 29 20 | 7b 0a 09 09 09 64 65 61 |if (!s) |{....dea|
|00036910| 6c 6c 6f 63 61 74 65 28 | 73 64 2d 3e 77 6f 72 6b |llocate(|sd->work|
|00036920| 2c 20 56 5f 63 73 74 72 | 29 3b 0a 09 09 09 73 64 |, V_cstr|);....sd|
|00036930| 2d 3e 77 6f 72 6b 20 3d | 20 6e 69 6c 3b 0a 09 09 |->work =| nil;...|
|00036940| 09 72 65 74 75 72 6e 20 | 66 61 6c 73 65 3b 0a 09 |.return |false;..|
|00036950| 09 7d 0a 09 09 0a 09 09 | 73 74 72 63 70 79 28 73 |.}......|strcpy(s|
|00036960| 2c 20 6c 2d 3e 70 6f 72 | 74 2d 3e 6d 70 5f 4e 6f |, l->por|t->mp_No|
|00036970| 64 65 2e 6c 6e 5f 4e 61 | 6d 65 29 3b 0a 09 09 73 |de.ln_Na|me);...s|
|00036980| 5b 6c 65 6e 31 5d 20 3d | 20 27 2f 27 3b 0a 09 09 |[len1] =| '/';...|
|00036990| 73 74 72 63 70 79 28 26 | 73 5b 6c 65 6e 31 20 2b |strcpy(&|s[len1 +|
|000369a0| 20 31 5d 2c 20 6c 2d 3e | 66 6e 61 6d 65 29 3b 0a | 1], l->|fname);.|
|000369b0| 09 09 69 66 20 28 73 64 | 2d 3e 77 6f 72 6b 5b 30 |..if (sd|->work[0|
|000369c0| 5d 29 20 7b 0a 09 09 09 | 73 5b 6c 65 6e 31 20 2b |]) {....|s[len1 +|
|000369d0| 20 6c 65 6e 32 20 2b 20 | 31 5d 20 3d 20 27 2f 27 | len2 + |1] = '/'|
|000369e0| 3b 0a 09 09 09 73 74 72 | 63 70 79 28 26 73 5b 6c |;....str|cpy(&s[l|
|000369f0| 65 6e 31 20 2b 20 6c 65 | 6e 32 20 2b 20 32 5d 2c |en1 + le|n2 + 2],|
|00036a00| 20 7a 29 3b 0a 09 09 7d | 20 65 6c 73 65 20 7b 0a | z);...}| else {.|
|00036a10| 09 09 09 73 5b 6c 65 6e | 31 20 2b 20 6c 65 6e 32 |...s[len|1 + len2|
|00036a20| 20 2b 20 31 5d 20 3d 20 | 30 3b 0a 09 09 7d 0a 09 | + 1] = |0;...}..|
|00036a30| 09 64 65 61 6c 6c 6f 63 | 61 74 65 28 73 64 2d 3e |.dealloc|ate(sd->|
|00036a40| 77 6f 72 6b 2c 20 56 5f | 63 73 74 72 29 3b 0a 09 |work, V_|cstr);..|
|00036a50| 09 73 64 2d 3e 77 6f 72 | 6b 20 3d 20 73 3b 0a 09 |.sd->wor|k = s;..|
|00036a60| 7d 0a 09 0a 72 65 73 6f | 6c 76 65 3a 0a 09 69 66 |}...reso|lve:..if|
|00036a70| 20 28 21 63 6f 6c 6c 61 | 70 73 65 28 73 29 29 20 | (!colla|pse(s)) |
|00036a80| 7b 0a 09 09 64 65 61 6c | 6c 6f 63 61 74 65 28 73 |{...deal|locate(s|
|00036a90| 64 2d 3e 77 6f 72 6b 2c | 20 56 5f 63 73 74 72 29 |d->work,| V_cstr)|
|00036aa0| 3b 0a 09 09 73 64 2d 3e | 77 6f 72 6b 20 3d 20 6e |;...sd->|work = n|
|00036ab0| 69 6c 3b 0a 09 09 72 65 | 74 75 72 6e 20 66 61 6c |il;...re|turn fal|
|00036ac0| 73 65 3b 0a 09 7d 0a 09 | 0a 09 66 6f 72 20 28 74 |se;..}..|..for (t|
|00036ad0| 20 3d 20 73 3b 20 2a 74 | 3b 20 74 2b 2b 29 20 7b | = s; *t|; t++) {|
|00036ae0| 0a 09 09 69 66 20 28 2a | 74 20 3d 3d 20 27 2f 27 |...if (*|t == '/'|
|00036af0| 29 20 7b 0a 09 09 09 2a | 74 2b 2b 20 3d 20 30 3b |) {....*|t++ = 0;|
|00036b00| 0a 09 09 09 73 64 2d 3e | 70 6f 72 74 20 3d 20 67 |....sd->|port = g|
|00036b10| 65 74 5f 73 69 74 65 28 | 73 29 3b 0a 09 09 09 69 |et_site(|s);....i|
|00036b20| 66 20 28 21 73 64 2d 3e | 70 6f 72 74 29 20 7b 0a |f (!sd->|port) {.|
|00036b30| 09 09 09 09 64 65 61 6c | 6c 6f 63 61 74 65 28 73 |....deal|locate(s|
|00036b40| 64 2d 3e 77 6f 72 6b 2c | 20 56 5f 63 73 74 72 29 |d->work,| V_cstr)|
|00036b50| 3b 0a 09 09 09 09 73 64 | 2d 3e 77 6f 72 6b 20 3d |;.....sd|->work =|
|00036b60| 20 6e 69 6c 3b 0a 09 09 | 09 09 72 65 74 75 72 6e | nil;...|..return|
|00036b70| 20 66 61 6c 73 65 3b 0a | 09 09 09 7d 0a 09 09 09 | false;.|...}....|
|00036b80| 69 66 20 28 74 5b 30 5d | 29 0a 09 09 09 09 73 64 |if (t[0]|).....sd|
|00036b90| 2d 3e 70 61 74 68 20 3d | 20 74 3b 0a 09 09 09 65 |->path =| t;....e|
|00036ba0| 6c 73 65 0a 09 09 09 09 | 73 64 2d 3e 70 61 74 68 |lse.....|sd->path|
|00036bb0| 20 3d 20 6e 69 6c 3b 0a | 09 09 09 72 65 74 75 72 | = nil;.|...retur|
|00036bc0| 6e 20 74 72 75 65 3b 0a | 09 09 7d 0a 09 7d 0a 09 |n true;.|..}..}..|
|00036bd0| 0a 09 69 66 20 28 73 5b | 30 5d 20 3d 3d 20 30 29 |..if (s[|0] == 0)|
|00036be0| 20 7b 0a 09 09 64 65 61 | 6c 6c 6f 63 61 74 65 28 | {...dea|llocate(|
|00036bf0| 73 64 2d 3e 77 6f 72 6b | 2c 20 56 5f 63 73 74 72 |sd->work|, V_cstr|
|00036c00| 29 3b 0a 09 09 73 64 2d | 3e 77 6f 72 6b 20 3d 20 |);...sd-|>work = |
|00036c10| 6e 69 6c 3b 0a 09 09 73 | 64 2d 3e 70 61 74 68 20 |nil;...s|d->path |
|00036c20| 3d 20 6e 69 6c 3b 0a 09 | 09 73 64 2d 3e 70 6f 72 |= nil;..|.sd->por|
|00036c30| 74 20 3d 20 6c 6f 63 61 | 6c 5f 70 6f 72 74 3b 0a |t = loca|l_port;.|
|00036c40| 09 09 72 65 74 75 72 6e | 20 74 72 75 65 3b 0a 09 |..return| true;..|
|00036c50| 7d 0a 09 0a 09 2f 2a 20 | 6f 6b 2c 20 77 65 20 64 |}..../* |ok, we d|
|00036c60| 6f 6e 27 74 20 68 61 76 | 65 20 61 20 27 2f 27 20 |on't hav|e a '/' |
|00036c70| 73 6f 20 63 68 65 63 6b | 20 66 6f 72 20 2e 69 6e |so check| for .in|
|00036c80| 66 6f 20 6f 72 20 55 6e | 6e 61 6d 65 64 20 6f 72 |fo or Un|named or|
|00036c90| 0a 09 20 20 20 44 69 73 | 6b 20 6f 72 20 44 65 66 |.. Dis|k or Def|
|00036ca0| 61 75 6c 74 20 2e 2e 2e | 20 74 68 65 79 20 61 72 |ault ...| they ar|
|00036cb0| 65 20 22 73 70 65 63 69 | 61 6c 22 20 2a 2f 0a 09 |e "speci|al" */..|
|00036cc0| 69 66 20 28 73 74 72 69 | 63 6d 70 28 73 2c 20 22 |if (stri|cmp(s, "|
|00036cd0| 44 69 73 6b 22 29 20 3d | 3d 20 30 20 7c 7c 0a 09 |Disk") =|= 0 ||..|
|00036ce0| 09 09 73 74 72 6e 69 63 | 6d 70 28 73 2c 20 22 55 |..strnic|mp(s, "U|
|00036cf0| 6e 6e 61 6d 65 64 22 2c | 20 37 29 20 3d 3d 20 30 |nnamed",| 7) == 0|
|00036d00| 20 7c 7c 0a 09 09 09 73 | 74 72 69 63 6d 70 28 73 | ||....s|tricmp(s|
|00036d10| 2c 20 22 2e 62 61 63 6b | 64 72 6f 70 22 29 20 3d |, ".back|drop") =|
|00036d20| 3d 20 30 20 7c 7c 0a 09 | 09 09 73 74 72 69 63 6d |= 0 ||..|..stricm|
|00036d30| 70 28 73 2c 20 22 44 65 | 66 61 75 6c 74 22 29 20 |p(s, "De|fault") |
|00036d40| 3d 3d 20 30 20 7c 7c 0a | 09 09 09 73 74 72 69 63 |== 0 ||.|...stric|
|00036d50| 6d 70 28 26 73 5b 73 74 | 72 6c 65 6e 28 73 29 20 |mp(&s[st|rlen(s) |
|00036d60| 2d 20 35 5d 2c 20 22 2e | 69 6e 66 6f 22 29 20 3d |- 5], ".|info") =|
|00036d70| 3d 20 30 29 20 7b 0a 09 | 09 73 64 2d 3e 70 6f 72 |= 0) {..|.sd->por|
|00036d80| 74 20 3d 20 6c 6f 63 61 | 6c 5f 70 6f 72 74 3b 0a |t = loca|l_port;.|
|00036d90| 09 09 73 64 2d 3e 70 61 | 74 68 20 3d 20 73 3b 0a |..sd->pa|th = s;.|
|00036da0| 09 09 72 65 74 75 72 6e | 20 74 72 75 65 3b 0a 09 |..return| true;..|
|00036db0| 7d 0a 09 0a 09 73 64 2d | 3e 70 6f 72 74 20 3d 20 |}....sd-|>port = |
|00036dc0| 67 65 74 5f 73 69 74 65 | 28 73 29 3b 0a 09 64 65 |get_site|(s);..de|
|00036dd0| 61 6c 6c 6f 63 61 74 65 | 28 73 64 2d 3e 77 6f 72 |allocate|(sd->wor|
|00036de0| 6b 2c 20 56 5f 63 73 74 | 72 29 3b 0a 09 73 64 2d |k, V_cst|r);..sd-|
|00036df0| 3e 77 6f 72 6b 20 3d 20 | 6e 69 6c 3b 0a 09 73 64 |>work = |nil;..sd|
|00036e00| 2d 3e 70 61 74 68 20 3d | 20 6e 69 6c 3b 0a 09 0a |->path =| nil;...|
|00036e10| 09 69 66 20 28 21 73 64 | 2d 3e 70 6f 72 74 29 20 |.if (!sd|->port) |
|00036e20| 72 65 74 75 72 6e 20 66 | 61 6c 73 65 3b 0a 09 72 |return f|alse;..r|
|00036e30| 65 74 75 72 6e 20 74 72 | 75 65 3b 0a 7d 0a 0a 76 |eturn tr|ue;.}..v|
|00036e40| 6f 69 64 20 65 6e 64 5f | 73 70 6c 69 74 28 73 70 |oid end_|split(sp|
|00036e50| 6c 69 74 20 2a 73 64 29 | 0a 7b 0a 09 69 66 20 28 |lit *sd)|.{..if (|
|00036e60| 73 64 2d 3e 77 6f 72 6b | 29 20 7b 0a 09 09 64 65 |sd->work|) {...de|
|00036e70| 61 6c 6c 6f 63 61 74 65 | 28 73 64 2d 3e 77 6f 72 |allocate|(sd->wor|
|00036e80| 6b 2c 20 56 5f 63 73 74 | 72 29 3b 0a 09 09 73 64 |k, V_cst|r);...sd|
|00036e90| 2d 3e 77 6f 72 6b 20 3d | 20 6e 69 6c 3b 0a 09 7d |->work =| nil;..}|
|00036ea0| 0a 7d 0a 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |.}......|........|
|00036eb0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00036ec0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00036ed0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00036ee0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00036ef0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00036f00| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00036f10| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00036f20| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 01 ac |........|........|
|00036f30| 00 00 01 ab 00 00 01 aa | 00 00 00 00 00 00 00 00 |........|........|
|00036f40| 00 00 00 00 00 00 04 ed | 00 00 00 00 00 00 00 00 |........|........|
|00036f50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00036f60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00036f70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00036f80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00036f90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00036fa0| 00 00 00 00 00 00 19 1e | 00 00 04 17 00 00 09 c4 |........|........|
|00036fb0| 09 73 6d 61 6b 65 66 69 | 6c 65 00 00 00 00 00 00 |.smakefi|le......|
|00036fc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00036fd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00036fe0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00036ff0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00037000| 00 00 00 02 00 00 01 b8 | 00 00 00 01 00 00 00 00 |........|........|
|00037010| 00 00 01 b9 8f 18 32 f0 | 00 00 00 00 00 00 00 00 |......2.|........|
|00037020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037040| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037050| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037060| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037070| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037080| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037090| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000370a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000370b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000370c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000370d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000370e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000370f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037100| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037110| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037120| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037130| 00 00 00 00 00 00 01 b9 | 00 00 00 00 00 00 00 00 |........|........|
|00037140| 00 00 00 00 00 00 01 73 | 00 00 00 00 00 00 00 00 |.......s|........|
|00037150| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037160| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037170| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037180| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037190| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000371a0| 00 00 00 00 00 00 19 39 | 00 00 03 55 00 00 0a f0 |.......9|...U....|
|000371b0| 07 73 70 6c 69 74 2e 68 | 00 00 00 00 00 00 00 00 |.split.h|........|
|000371c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000371d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000371e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000371f0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00037200| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|00037210| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|00037220| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|00037230| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|00037240| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|00037250| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|00037260| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|00037270| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|00037280| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|00037290| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|000372a0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|000372b0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|000372c0| 74 79 70 65 64 65 66 20 | 73 74 72 75 63 74 20 7b |typedef |struct {|
|000372d0| 0a 09 6d 61 67 69 63 5f | 76 65 72 69 66 79 3b 0a |..magic_|verify;.|
|000372e0| 0a 09 73 74 72 75 63 74 | 20 4d 73 67 50 6f 72 74 |..struct| MsgPort|
|000372f0| 20 2a 70 6f 72 74 3b 0a | 09 62 38 20 2a 70 61 74 | *port;.|.b8 *pat|
|00037300| 68 3b 0a 09 62 38 20 2a | 77 6f 72 6b 3b 0a 7d 20 |h;..b8 *|work;.} |
|00037310| 73 70 6c 69 74 3b 0a 0a | 23 64 65 66 69 6e 65 20 |split;..|#define |
|00037320| 56 5f 73 70 6c 69 74 20 | 32 39 35 35 32 0a 0a 62 |V_split |29552..b|
|00037330| 6f 6f 6c 65 61 6e 20 73 | 70 6c 69 74 5f 64 61 74 |oolean s|plit_dat|
|00037340| 61 28 6c 6f 63 6b 20 2a | 2c 20 62 38 20 2a 2c 20 |a(lock *|, b8 *, |
|00037350| 73 70 6c 69 74 20 2a 29 | 3b 0a 76 6f 69 64 20 65 |split *)|;.void e|
|00037360| 6e 64 5f 73 70 6c 69 74 | 28 73 70 6c 69 74 20 2a |nd_split|(split *|
|00037370| 29 3b 0a 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |);......|........|
|00037380| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037390| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000373a0| 00 00 00 00 00 00 19 98 | 00 00 03 53 00 00 08 fc |........|...S....|
|000373b0| 07 73 70 6c 69 74 2e 63 | 00 00 00 00 00 00 00 00 |.split.c|........|
|000373c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000373d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000373e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000373f0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00037400| 00 00 00 02 00 00 01 ba | 00 00 00 1e 00 00 00 00 |........|........|
|00037410| 00 00 01 bb 55 b4 80 0e | 00 00 00 00 00 00 00 00 |....U...|........|
|00037420| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037430| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037440| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037450| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037460| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037470| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037480| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037490| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000374a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000374b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000374c0| 00 00 01 d8 00 00 01 d7 | 00 00 01 d6 00 00 01 d5 |........|........|
|000374d0| 00 00 01 d4 00 00 01 d3 | 00 00 01 d2 00 00 01 d1 |........|........|
|000374e0| 00 00 01 d0 00 00 01 cf | 00 00 01 ce 00 00 01 cd |........|........|
|000374f0| 00 00 01 cc 00 00 01 cb | 00 00 01 ca 00 00 01 c9 |........|........|
|00037500| 00 00 01 c8 00 00 01 c7 | 00 00 01 c6 00 00 01 c5 |........|........|
|00037510| 00 00 01 c4 00 00 01 c3 | 00 00 01 c2 00 00 01 c1 |........|........|
|00037520| 00 00 01 c0 00 00 01 bf | 00 00 01 be 00 00 01 bd |........|........|
|00037530| 00 00 01 bc 00 00 01 bb | 00 00 00 00 00 00 00 00 |........|........|
|00037540| 00 00 00 00 00 00 3a 11 | 00 00 00 00 00 00 00 00 |......:.|........|
|00037550| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037560| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037570| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037580| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00037590| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000375a0| 00 00 00 00 00 00 19 39 | 00 00 03 55 00 00 04 4c |.......9|...U...L|
|000375b0| 09 73 74 61 72 74 75 70 | 2e 63 00 00 00 00 00 00 |.startup|.c......|
|000375c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000375d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000375e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|000375f0| 00 00 01 e6 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|00037600| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|00037610| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|00037620| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|00037630| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|00037640| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|00037650| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|00037660| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|00037670| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|00037680| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|00037690| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|000376a0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|000376b0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|000376c0| 23 69 6e 63 6c 75 64 65 | 20 3c 65 78 65 63 2f 74 |#include| <exec/t|
|000376d0| 79 70 65 73 2e 68 3e 0a | 23 69 6e 63 6c 75 64 65 |ypes.h>.|#include|
|000376e0| 20 3c 65 78 65 63 2f 6d | 65 6d 6f 72 79 2e 68 3e | <exec/m|emory.h>|
|000376f0| 0a 23 69 6e 63 6c 75 64 | 65 20 3c 65 78 65 63 2f |.#includ|e <exec/|
|00037700| 61 6c 65 72 74 73 2e 68 | 3e 0a 0a 23 69 6e 63 6c |alerts.h|>..#incl|
|00037710| 75 64 65 20 3c 64 6f 73 | 2f 64 6f 73 2e 68 3e 0a |ude <dos|/dos.h>.|
|00037720| 23 69 6e 63 6c 75 64 65 | 20 3c 64 6f 73 2f 64 6f |#include| <dos/do|
|00037730| 73 65 78 74 65 6e 73 2e | 68 3e 0a 23 69 6e 63 6c |sextens.|h>.#incl|
|00037740| 75 64 65 20 3c 64 6f 73 | 2f 64 6f 73 74 61 67 73 |ude <dos|/dostags|
|00037750| 2e 68 3e 0a 0a 23 69 6e | 63 6c 75 64 65 20 3c 70 |.h>..#in|clude <p|
|00037760| 72 6f 74 6f 2f 65 78 65 | 63 2e 68 3e 0a 23 69 6e |roto/exe|c.h>.#in|
|00037770| 63 6c 75 64 65 20 3c 70 | 72 6f 74 6f 2f 64 6f 73 |clude <p|roto/dos|
|00037780| 2e 68 3e 0a 23 69 6e 63 | 6c 75 64 65 20 3c 70 72 |.h>.#inc|lude <pr|
|00037790| 6f 74 6f 2f 67 72 61 70 | 68 69 63 73 2e 68 3e 0a |oto/grap|hics.h>.|
|000377a0| 23 69 6e 63 6c 75 64 65 | 20 3c 70 72 6f 74 6f 2f |#include| <proto/|
|000377b0| 69 6e 74 75 69 74 69 6f | 6e 2e 68 3e 0a 23 69 6e |intuitio|n.h>.#in|
|000377c0| 63 6c 75 64 65 20 3c 70 | 72 6f 74 6f 2f 6c 6f 63 |clude <p|roto/loc|
|000377d0| 61 6c 65 2e 68 3e 0a 0a | 23 69 6e 63 6c 75 64 65 |ale.h>..|#include|
|000377e0| 20 3c 73 74 64 69 6f 2e | 68 3e 0a 23 69 6e 63 6c | <stdio.|h>.#incl|
|000377f0| 75 64 65 20 3c 73 74 64 | 6c 69 62 2e 68 3e 0a 23 |ude <std|lib.h>.#|
|00037800| 69 6e 63 6c 75 64 65 20 | 3c 73 74 72 69 6e 67 2e |include |<string.|
|00037810| 68 3e 0a 0a 23 69 6e 63 | 6c 75 64 65 20 22 65 76 |h>..#inc|lude "ev|
|00037820| 74 79 70 65 73 2e 68 22 | 0a 23 69 6e 63 6c 75 64 |types.h"|.#includ|
|00037830| 65 20 22 76 65 72 69 66 | 79 2e 68 22 0a 23 69 6e |e "verif|y.h".#in|
|00037840| 63 6c 75 64 65 20 22 74 | 63 70 2e 68 22 0a 0a 23 |clude "t|cp.h"..#|
|00037850| 69 6e 63 6c 75 64 65 20 | 22 73 69 74 65 2e 68 22 |include |"site.h"|
|00037860| 0a 23 69 6e 63 6c 75 64 | 65 20 22 66 74 70 2e 68 |.#includ|e "ftp.h|
|00037870| 22 0a 23 69 6e 63 6c 75 | 64 65 20 22 6c 6f 63 61 |".#inclu|de "loca|
|00037880| 6c 2e 68 22 0a 23 69 6e | 63 6c 75 64 65 20 22 72 |l.h".#in|clude "r|
|00037890| 65 71 75 65 73 74 2e 68 | 22 0a 0a 23 64 65 66 69 |equest.h|"..#defi|
|000378a0| 6e 65 20 44 45 43 4c 41 | 52 45 5f 47 4c 4f 42 41 |ne DECLA|RE_GLOBA|
|000378b0| 4c 53 5f 48 45 52 45 20 | 31 0a 23 69 6e 63 6c 75 |LS_HERE |1.#inclu|
|000378c0| 64 65 20 22 67 6c 6f 62 | 61 6c 73 2e 68 22 0a 23 |de "glob|als.h".#|
|000378d0| 69 6e 63 6c 75 64 65 20 | 22 73 74 72 69 6e 67 73 |include |"strings|
|000378e0| 2e 68 22 0a 0a 73 74 72 | 75 63 74 20 44 6f 73 50 |.h"..str|uct DosP|
|000378f0| 61 63 6b 65 74 20 2a 66 | 68 5f 6c 69 73 74 65 6e |acket *f|h_listen|
|00037900| 28 76 6f 69 64 29 3b 0a | 76 6f 69 64 20 66 68 5f |(void);.|void fh_|
|00037910| 69 67 6e 6f 72 65 28 76 | 6f 69 64 29 3b 0a 0a 62 |ignore(v|oid);..b|
|00037920| 6f 6f 6c 65 61 6e 20 6c | 61 75 6e 63 68 5f 74 63 |oolean l|aunch_tc|
|00037930| 70 5f 68 61 6e 64 6c 65 | 72 28 76 6f 69 64 29 3b |p_handle|r(void);|
|00037940| 0a 62 6f 6f 6c 65 61 6e | 20 6c 61 75 6e 63 68 5f |.boolean| launch_|
|00037950| 6c 6f 63 61 6c 28 76 6f | 69 64 29 3b 0a 76 6f 69 |local(vo|id);.voi|
|00037960| 64 20 73 68 75 74 64 6f | 77 6e 5f 74 63 70 5f 68 |d shutdo|wn_tcp_h|
|00037970| 61 6e 64 6c 65 72 28 76 | 6f 69 64 29 3b 0a 76 6f |andler(v|oid);.vo|
|00037980| 69 64 20 73 68 75 74 64 | 6f 77 6e 5f 6c 6f 63 61 |id shutd|own_loca|
|00037990| 6c 28 76 6f 69 64 29 3b | 0a 0a 62 6f 6f 6c 65 61 |l(void);|..boolea|
|000379a0| 6e 20 6f 70 65 6e 5f 6c | 69 62 72 61 72 69 65 73 |n open_l|ibraries|
|000379b0| 28 76 6f 69 64 29 3b 0a | 76 6f 69 64 20 63 6c 6f |(void);.|void clo|
|000379c0| 73 65 5f 6c 69 62 72 61 | 72 69 65 73 28 76 6f 69 |se_libra|ries(voi|
|000379d0| 64 29 3b 0a 0a 62 6f 6f | 6c 65 61 6e 20 6d 61 6b |d);..boo|lean mak|
|000379e0| 65 5f 67 69 6d 73 28 76 | 6f 69 64 29 3b 0a 76 6f |e_gims(v|oid);.vo|
|000379f0| 69 64 20 66 72 65 65 5f | 67 69 6d 73 28 76 6f 69 |id free_|gims(voi|
|00037a00| 64 29 3b 0a 0a 76 6f 69 | 64 20 73 74 61 72 74 75 |d);..voi|d startu|
|00037a10| 70 5f 65 72 72 6f 72 28 | 62 38 20 2a 73 29 3b 0a |p_error(|b8 *s);.|
|00037a20| 0a 62 6f 6f 6c 65 61 6e | 20 67 65 74 5f 61 6e 6f |.boolean| get_ano|
|00037a30| 6e 5f 6c 6f 67 69 6e 28 | 76 6f 69 64 29 3b 0a 0a |n_login(|void);..|
|00037a40| 62 6f 6f 6c 65 61 6e 20 | 63 72 65 61 74 65 5f 76 |boolean |create_v|
|00037a50| 6f 6c 75 6d 65 28 76 6f | 69 64 29 3b 0a 76 6f 69 |olume(vo|id);.voi|
|00037a60| 64 20 64 65 73 74 72 6f | 79 5f 76 6f 6c 75 6d 65 |d destro|y_volume|
|00037a70| 28 76 6f 69 64 29 3b 0a | 0a 62 6f 6f 6c 65 61 6e |(void);.|.boolean|
|00037a80| 20 6c 61 75 6e 63 68 5f | 73 74 61 74 75 73 28 76 | launch_|status(v|
|00037a90| 6f 69 64 29 3b 0a 76 6f | 69 64 20 73 68 75 74 64 |oid);.vo|id shutd|
|00037aa0| 6f 77 6e 5f 73 74 61 74 | 75 73 28 76 6f 69 64 29 |own_stat|us(void)|
|00037ab0| 3b 0a 0a 76 6f 69 64 20 | 73 65 74 75 70 5f 73 74 |;..void |setup_st|
|00037ac0| 72 69 6e 67 73 28 76 6f | 69 64 29 3b 0a 76 6f 69 |rings(vo|id);.voi|
|00037ad0| 64 20 63 6c 65 61 6e 75 | 70 5f 73 74 72 69 6e 67 |d cleanu|p_string|
|00037ae0| 73 28 76 6f 69 64 29 3b | 0a 0a 76 6f 69 64 20 5f |s(void);|..void _|
|00037af0| 5f 73 61 76 65 64 73 20 | 73 74 61 72 74 28 76 6f |_saveds |start(vo|
|00037b00| 69 64 29 0a 7b 0a 09 73 | 74 72 75 63 74 20 50 72 |id).{..s|truct Pr|
|00037b10| 6f 63 65 73 73 20 2a 6d | 65 3b 0a 09 73 74 72 75 |ocess *m|e;..stru|
|00037b20| 63 74 20 4d 65 73 73 61 | 67 65 20 2a 6d 73 67 3b |ct Messa|ge *msg;|
|00037b30| 0a 09 73 74 72 75 63 74 | 20 44 6f 73 50 61 63 6b |..struct| DosPack|
|00037b40| 65 74 20 2a 64 70 3b 0a | 09 73 74 72 75 63 74 20 |et *dp;.|.struct |
|00037b50| 4d 73 67 50 6f 72 74 20 | 2a 72 65 70 6c 79 3b 0a |MsgPort |*reply;.|
|00037b60| 09 73 74 72 75 63 74 20 | 44 61 74 65 54 69 6d 65 |.struct |DateTime|
|00037b70| 20 64 74 69 6d 65 3b 0a | 09 62 38 20 74 65 6d 70 | dtime;.|.b8 temp|
|00037b80| 5b 31 35 5d 3b 0a 0a 09 | 53 79 73 42 61 73 65 20 |[15];...|SysBase |
|00037b90| 3d 20 2a 28 73 74 72 75 | 63 74 20 45 78 65 63 42 |= *(stru|ct ExecB|
|00037ba0| 61 73 65 20 2a 2a 29 34 | 3b 0a 0a 09 6d 65 20 3d |ase **)4|;...me =|
|00037bb0| 20 28 73 74 72 75 63 74 | 20 50 72 6f 63 65 73 73 | (struct| Process|
|00037bc0| 20 2a 29 46 69 6e 64 54 | 61 73 6b 28 30 6c 29 3b | *)FindT|ask(0l);|
|00037bd0| 0a 09 0a 09 66 74 70 5f | 70 6f 72 74 20 3d 20 26 |....ftp_|port = &|
|00037be0| 6d 65 2d 3e 70 72 5f 4d | 73 67 50 6f 72 74 3b 0a |me->pr_M|sgPort;.|
|00037bf0| 09 0a 09 57 61 69 74 50 | 6f 72 74 28 66 74 70 5f |...WaitP|ort(ftp_|
|00037c00| 70 6f 72 74 29 3b 09 2f | 2a 20 77 61 69 74 20 66 |port);./|* wait f|
|00037c10| 6f 72 20 73 74 61 72 74 | 75 70 20 70 61 63 6b 65 |or start|up packe|
|00037c20| 74 20 2a 2f 0a 09 6d 73 | 67 20 3d 20 47 65 74 4d |t */..ms|g = GetM|
|00037c30| 73 67 28 66 74 70 5f 70 | 6f 72 74 29 3b 0a 09 0a |sg(ftp_p|ort);...|
|00037c40| 09 64 70 20 3d 20 28 73 | 74 72 75 63 74 20 44 6f |.dp = (s|truct Do|
|00037c50| 73 50 61 63 6b 65 74 20 | 2a 29 6d 73 67 2d 3e 6d |sPacket |*)msg->m|
|00037c60| 6e 5f 4e 6f 64 65 2e 6c | 6e 5f 4e 61 6d 65 3b 0a |n_Node.l|n_Name;.|
|00037c70| 09 72 65 70 6c 79 20 3d | 20 64 70 2d 3e 64 70 5f |.reply =| dp->dp_|
|00037c80| 50 6f 72 74 3b 0a 09 64 | 70 2d 3e 64 70 5f 50 6f |Port;..d|p->dp_Po|
|00037c90| 72 74 20 3d 20 66 74 70 | 5f 70 6f 72 74 3b 0a 09 |rt = ftp|_port;..|
|00037ca0| 0a 09 66 74 70 5f 64 65 | 76 69 63 65 20 3d 20 28 |..ftp_de|vice = (|
|00037cb0| 73 74 72 75 63 74 20 44 | 6f 73 4c 69 73 74 20 2a |struct D|osList *|
|00037cc0| 29 28 64 70 2d 3e 64 70 | 5f 41 72 67 33 20 3c 3c |)(dp->dp|_Arg3 <<|
|00037cd0| 20 32 29 3b 0a 09 66 74 | 70 5f 64 65 76 69 63 65 | 2);..ft|p_device|
|00037ce0| 2d 3e 64 6f 6c 5f 54 61 | 73 6b 20 3d 20 66 74 70 |->dol_Ta|sk = ftp|
|00037cf0| 5f 70 6f 72 74 3b 09 2f | 2a 20 66 69 6c 6c 20 69 |_port;./|* fill i|
|00037d00| 6e 20 6f 75 72 20 6d 65 | 73 73 61 67 65 20 70 6f |n our me|ssage po|
|00037d10| 72 74 20 2a 2f 0a 09 0a | 09 2f 2a 20 67 65 74 20 |rt */...|./* get |
|00037d20| 64 6f 77 6e 20 74 6f 20 | 69 6e 69 74 69 61 6c 69 |down to |initiali|
|00037d30| 7a 69 6e 67 20 65 76 65 | 72 79 74 68 69 6e 67 20 |zing eve|rything |
|00037d40| 2a 2f 0a 09 0a 09 73 69 | 74 65 73 20 3d 20 6e 69 |*/....si|tes = ni|
|00037d50| 6c 3b 0a 09 6f 72 70 68 | 61 6e 65 64 5f 6c 6f 63 |l;..orph|aned_loc|
|00037d60| 6b 73 20 3d 20 6e 69 6c | 3b 0a 09 0a 09 69 66 20 |ks = nil|;....if |
|00037d70| 28 6f 70 65 6e 5f 6c 69 | 62 72 61 72 69 65 73 28 |(open_li|braries(|
|00037d80| 29 29 20 7b 0a 09 09 66 | 74 70 64 69 72 5f 6c 6f |)) {...f|tpdir_lo|
|00037d90| 63 6b 20 3d 20 4c 6f 63 | 6b 28 22 46 54 50 4d 6f |ck = Loc|k("FTPMo|
|00037da0| 75 6e 74 44 69 72 3a 22 | 2c 20 53 48 41 52 45 44 |untDir:"|, SHARED|
|00037db0| 5f 4c 4f 43 4b 29 3b 0a | 09 09 69 66 20 28 66 74 |_LOCK);.|..if (ft|
|00037dc0| 70 64 69 72 5f 6c 6f 63 | 6b 29 20 7b 0a 09 09 09 |pdir_loc|k) {....|
|00037dd0| 55 6e 4c 6f 63 6b 28 43 | 75 72 72 65 6e 74 44 69 |UnLock(C|urrentDi|
|00037de0| 72 28 66 74 70 64 69 72 | 5f 6c 6f 63 6b 29 29 3b |r(ftpdir|_lock));|
|00037df0| 0a 09 09 09 55 6e 4c 6f | 63 6b 28 53 65 74 50 72 |....UnLo|ck(SetPr|
|00037e00| 6f 67 72 61 6d 44 69 72 | 28 66 74 70 64 69 72 5f |ogramDir|(ftpdir_|
|00037e10| 6c 6f 63 6b 29 29 3b 0a | 09 09 09 0a 09 09 09 2f |lock));.|......./|
|00037e20| 2a 20 73 65 74 75 70 20 | 50 52 4f 47 44 49 52 3a |* setup |PROGDIR:|
|00037e30| 20 73 6f 20 77 65 20 63 | 61 6e 20 6f 70 65 6e 20 | so we c|an open |
|00037e40| 74 68 65 20 63 61 74 61 | 6c 6f 67 20 61 73 61 70 |the cata|log asap|
|00037e50| 20 2a 2f 0a 09 09 09 0a | 09 09 09 73 65 74 75 70 | */.....|...setup|
|00037e60| 5f 73 74 72 69 6e 67 73 | 28 29 3b 0a 0a 09 09 09 |_strings|();.....|
|00037e70| 6d 65 6d 5f 74 72 61 63 | 6b 69 6e 67 5f 6f 6e 28 |mem_trac|king_on(|
|00037e80| 29 3b 0a 09 09 0a 09 09 | 09 44 61 74 65 53 74 61 |);......|.DateSta|
|00037e90| 6d 70 28 26 64 74 69 6d | 65 2e 64 61 74 5f 53 74 |mp(&dtim|e.dat_St|
|00037ea0| 61 6d 70 29 3b 0a 09 09 | 0a 09 09 09 64 74 69 6d |amp);...|....dtim|
|00037eb0| 65 2e 64 61 74 5f 53 74 | 72 44 61 74 65 20 3d 20 |e.dat_St|rDate = |
|00037ec0| 74 65 6d 70 3b 0a 09 09 | 09 64 74 69 6d 65 2e 64 |temp;...|.dtime.d|
|00037ed0| 61 74 5f 53 74 72 44 61 | 79 20 3d 20 6e 69 6c 3b |at_StrDa|y = nil;|
|00037ee0| 0a 09 09 09 64 74 69 6d | 65 2e 64 61 74 5f 53 74 |....dtim|e.dat_St|
|00037ef0| 72 54 69 6d 65 20 3d 20 | 6e 69 6c 3b 0a 09 09 09 |rTime = |nil;....|
|00037f00| 64 74 69 6d 65 2e 64 61 | 74 5f 46 6c 61 67 73 20 |dtime.da|t_Flags |
|00037f10| 3d 20 30 3b 0a 09 09 09 | 64 74 69 6d 65 2e 64 61 |= 0;....|dtime.da|
|00037f20| 74 5f 46 6f 72 6d 61 74 | 20 3d 20 46 4f 52 4d 41 |t_Format| = FORMA|
|00037f30| 54 5f 49 4e 54 3b 0a 09 | 09 0a 09 09 09 44 61 74 |T_INT;..|.....Dat|
|00037f40| 65 54 6f 53 74 72 28 26 | 64 74 69 6d 65 29 3b 0a |eToStr(&|dtime);.|
|00037f50| 09 09 0a 09 09 09 79 65 | 61 72 20 3d 20 61 74 6f |......ye|ar = ato|
|00037f60| 69 28 74 65 6d 70 29 3b | 0a 09 09 0a 09 09 09 69 |i(temp);|.......i|
|00037f70| 66 20 28 79 65 61 72 20 | 3e 3d 20 37 38 29 20 79 |f (year |>= 78) y|
|00037f80| 65 61 72 20 2b 3d 20 31 | 39 30 30 3b 0a 09 09 09 |ear += 1|900;....|
|00037f90| 65 6c 73 65 20 79 65 61 | 72 20 2b 3d 20 32 30 30 |else yea|r += 200|
|00037fa0| 30 3b 0a 09 09 0a 09 09 | 09 69 66 20 28 67 65 74 |0;......|.if (get|
|00037fb0| 5f 61 6e 6f 6e 5f 6c 6f | 67 69 6e 28 29 29 20 7b |_anon_lo|gin()) {|
|00037fc0| 0a 09 09 09 09 69 66 20 | 28 6d 61 6b 65 5f 67 69 |.....if |(make_gi|
|00037fd0| 6d 73 28 29 29 20 7b 0a | 09 09 09 09 09 69 66 20 |ms()) {.|.....if |
|00037fe0| 28 6c 61 75 6e 63 68 5f | 74 63 70 5f 68 61 6e 64 |(launch_|tcp_hand|
|00037ff0| 6c 65 72 28 29 29 20 7b | 0a 09 09 09 09 09 09 69 |ler()) {|.......i|
|00038000| 66 20 28 6c 61 75 6e 63 | 68 5f 6c 6f 63 61 6c 28 |f (launc|h_local(|
|00038010| 29 29 20 7b 0a 09 09 09 | 09 09 09 09 66 74 70 68 |)) {....|....ftph|
|00038020| 6f 73 74 73 5f 6c 6f 63 | 6b 20 3d 20 4c 6f 63 6b |osts_loc|k = Lock|
|00038030| 28 73 74 72 69 6e 67 73 | 5b 4d 53 47 5f 48 4f 53 |(strings|[MSG_HOS|
|00038040| 54 53 5d 2c 20 53 48 41 | 52 45 44 5f 4c 4f 43 4b |TS], SHA|RED_LOCK|
|00038050| 29 3b 0a 09 09 09 09 09 | 09 09 69 66 20 28 66 74 |);......|..if (ft|
|00038060| 70 68 6f 73 74 73 5f 6c | 6f 63 6b 29 20 7b 0a 09 |phosts_l|ock) {..|
|00038070| 09 09 09 09 09 09 09 69 | 66 20 28 6c 61 75 6e 63 |.......i|f (launc|
|00038080| 68 5f 73 74 61 74 75 73 | 28 29 29 20 7b 0a 09 09 |h_status|()) {...|
|00038090| 09 09 09 09 09 09 09 69 | 66 20 28 63 72 65 61 74 |.......i|f (creat|
|000380a0| 65 5f 76 6f 6c 75 6d 65 | 28 29 29 20 7b 0a 09 09 |e_volume|()) {...|
|000380b0| 09 09 09 09 09 09 09 09 | 2f 2a 20 69 6e 69 74 69 |........|/* initi|
|000380c0| 61 6c 69 7a 61 74 69 6f | 6e 20 69 73 20 63 6f 6d |alizatio|n is com|
|000380d0| 70 6c 65 74 65 20 2a 2f | 0a 09 09 09 09 09 09 09 |plete */|........|
|000380e0| 09 09 09 64 70 2d 3e 64 | 70 5f 52 65 73 31 20 3d |...dp->d|p_Res1 =|
|000380f0| 20 44 4f 53 54 52 55 45 | 3b 0a 09 09 09 09 09 09 | DOSTRUE|;.......|
|00038100| 09 09 09 09 64 70 2d 3e | 64 70 5f 52 65 73 32 20 |....dp->|dp_Res2 |
|00038110| 3d 20 30 3b 0a 09 09 09 | 09 09 09 09 09 0a 09 09 |= 0;....|........|
|00038120| 09 09 09 09 09 09 09 09 | 50 75 74 4d 73 67 28 72 |........|PutMsg(r|
|00038130| 65 70 6c 79 2c 20 64 70 | 2d 3e 64 70 5f 4c 69 6e |eply, dp|->dp_Lin|
|00038140| 6b 29 3b 0a 09 09 09 09 | 09 09 09 09 0a 09 09 09 |k);.....|........|
|00038150| 09 09 09 09 09 09 09 64 | 70 20 3d 20 66 68 5f 6c |.......d|p = fh_l|
|00038160| 69 73 74 65 6e 28 29 3b | 0a 09 09 09 09 09 09 09 |isten();|........|
|00038170| 09 0a 09 09 09 09 09 09 | 09 09 09 09 2f 2a 20 6f |........|..../* o|
|00038180| 6e 6c 79 20 63 6f 6d 65 | 73 20 62 61 63 6b 20 6f |nly come|s back o|
|00038190| 6e 20 61 20 44 49 45 20 | 2a 2f 0a 09 09 09 09 09 |n a DIE |*/......|
|000381a0| 09 09 09 09 09 0a 09 09 | 09 09 09 09 09 09 09 09 |........|........|
|000381b0| 73 68 75 74 64 6f 77 6e | 5f 73 69 74 65 73 28 29 |shutdown|_sites()|
|000381c0| 3b 0a 0a 09 09 09 09 09 | 09 09 09 09 09 73 68 75 |;.......|.....shu|
|000381d0| 74 64 6f 77 6e 5f 73 74 | 61 74 75 73 28 29 3b 0a |tdown_st|atus();.|
|000381e0| 09 09 09 09 09 09 09 09 | 09 09 73 68 75 74 64 6f |........|..shutdo|
|000381f0| 77 6e 5f 6c 6f 63 61 6c | 28 29 3b 0a 09 09 09 09 |wn_local|();.....|
|00038200| 09 09 09 09 09 09 73 68 | 75 74 64 6f 77 6e 5f 74 |......sh|utdown_t|
|00038210| 63 70 5f 68 61 6e 64 6c | 65 72 28 29 3b 0a 09 09 |cp_handl|er();...|
|00038220| 09 09 0a 09 09 09 09 09 | 09 09 09 09 09 55 6e 4c |........|.....UnL|
|00038230| 6f 63 6b 28 66 74 70 68 | 6f 73 74 73 5f 6c 6f 63 |ock(ftph|osts_loc|
|00038240| 6b 29 3b 0a 09 09 09 09 | 09 09 09 09 09 09 55 6e |k);.....|......Un|
|00038250| 4c 6f 63 6b 28 66 74 70 | 64 69 72 5f 6c 6f 63 6b |Lock(ftp|dir_lock|
|00038260| 29 3b 0a 09 09 09 09 09 | 09 09 09 0a 09 09 09 09 |);......|........|
|00038270| 09 09 09 09 09 09 66 72 | 65 65 5f 67 69 6d 73 28 |......fr|ee_gims(|
|00038280| 29 3b 0a 09 09 09 09 09 | 09 09 09 09 0a 09 09 09 |);......|........|
|00038290| 09 09 09 09 09 09 09 69 | 66 20 28 61 6e 6f 6e 5f |.......i|f (anon_|
|000382a0| 6c 6f 67 69 6e 29 20 0a | 09 09 09 09 09 09 09 09 |login) .|........|
|000382b0| 09 09 09 64 65 61 6c 6c | 6f 63 61 74 65 28 61 6e |...deall|ocate(an|
|000382c0| 6f 6e 5f 6c 6f 67 69 6e | 2c 20 56 5f 63 73 74 72 |on_login|, V_cstr|
|000382d0| 29 3b 0a 09 09 09 09 09 | 09 09 09 09 0a 09 09 09 |);......|........|
|000382e0| 09 09 09 09 09 09 09 64 | 65 73 74 72 6f 79 5f 76 |.......d|estroy_v|
|000382f0| 6f 6c 75 6d 65 28 29 3b | 0a 0a 09 09 09 09 09 09 |olume();|........|
|00038300| 09 09 09 09 63 68 65 63 | 6b 5f 6d 65 6d 6f 72 79 |....chec|k_memory|
|00038310| 28 29 3b 0a 09 09 09 09 | 09 09 09 09 0a 09 09 09 |();.....|........|
|00038320| 09 09 09 09 09 09 09 63 | 6c 6f 73 65 5f 6c 69 62 |.......c|lose_lib|
|00038330| 72 61 72 69 65 73 28 29 | 3b 0a 0a 09 09 09 09 09 |raries()|;.......|
|00038340| 09 09 09 09 09 69 66 20 | 28 64 70 29 20 7b 0a 09 |.....if |(dp) {..|
|00038350| 09 09 09 09 09 09 09 09 | 09 09 64 70 2d 3e 64 70 |........|..dp->dp|
|00038360| 5f 52 65 73 31 20 3d 20 | 44 4f 53 54 52 55 45 3b |_Res1 = |DOSTRUE;|
|00038370| 0a 09 09 09 09 09 09 09 | 09 09 09 09 64 70 2d 3e |........|....dp->|
|00038380| 64 70 5f 52 65 73 32 20 | 3d 20 30 3b 0a 09 09 09 |dp_Res2 |= 0;....|
|00038390| 09 09 09 09 09 09 0a 09 | 09 09 09 09 09 09 09 09 |........|........|
|000383a0| 09 09 72 65 70 6c 79 20 | 3d 20 64 70 2d 3e 64 70 |..reply |= dp->dp|
|000383b0| 5f 50 6f 72 74 3b 0a 09 | 09 09 09 09 09 09 09 09 |_Port;..|........|
|000383c0| 09 09 64 70 2d 3e 64 70 | 5f 50 6f 72 74 20 3d 20 |..dp->dp|_Port = |
|000383d0| 66 74 70 5f 70 6f 72 74 | 3b 0a 09 09 09 09 09 09 |ftp_port|;.......|
|000383e0| 09 09 09 0a 09 09 09 09 | 09 09 09 09 09 09 09 50 |........|.......P|
|000383f0| 75 74 4d 73 67 28 72 65 | 70 6c 79 2c 20 64 70 2d |utMsg(re|ply, dp-|
|00038400| 3e 64 70 5f 4c 69 6e 6b | 29 3b 0a 09 09 09 09 09 |>dp_Link|);......|
|00038410| 09 09 09 09 09 7d 0a 09 | 09 09 09 09 09 09 09 09 |.....}..|........|
|00038420| 0a 09 09 09 09 09 09 09 | 09 09 09 66 68 5f 69 67 |........|...fh_ig|
|00038430| 6e 6f 72 65 28 29 3b 09 | 2f 2a 20 6e 65 76 65 72 |nore();.|/* never|
|00038440| 20 63 6f 6d 65 73 20 62 | 61 63 6b 20 2a 2f 0a 09 | comes b|ack */..|
|00038450| 09 09 09 09 09 09 09 09 | 7d 20 65 6c 73 65 20 64 |........|} else d|
|00038460| 70 2d 3e 64 70 5f 52 65 | 73 32 20 3d 20 45 52 52 |p->dp_Re|s2 = ERR|
|00038470| 4f 52 5f 4e 4f 5f 46 52 | 45 45 5f 53 54 4f 52 45 |OR_NO_FR|EE_STORE|
|00038480| 3b 0a 09 09 09 09 09 09 | 09 09 09 73 68 75 74 64 |;.......|...shutd|
|00038490| 6f 77 6e 5f 73 74 61 74 | 75 73 28 29 3b 0a 09 09 |own_stat|us();...|
|000384a0| 09 09 09 09 09 09 7d 20 | 65 6c 73 65 20 64 70 2d |......} |else dp-|
|000384b0| 3e 64 70 5f 52 65 73 32 | 20 3d 20 45 52 52 4f 52 |>dp_Res2| = ERROR|
|000384c0| 5f 4e 4f 5f 46 52 45 45 | 5f 53 54 4f 52 45 3b 0a |_NO_FREE|_STORE;.|
|000384d0| 09 09 09 09 09 09 09 09 | 55 6e 4c 6f 63 6b 28 66 |........|UnLock(f|
|000384e0| 74 70 68 6f 73 74 73 5f | 6c 6f 63 6b 29 3b 0a 09 |tphosts_|lock);..|
|000384f0| 09 09 09 09 09 09 7d 20 | 65 6c 73 65 20 7b 0a 09 |......} |else {..|
|00038500| 09 09 09 09 09 09 09 73 | 74 61 72 74 75 70 5f 65 |.......s|tartup_e|
|00038510| 72 72 6f 72 28 73 74 72 | 69 6e 67 73 5b 4d 53 47 |rror(str|ings[MSG|
|00038520| 5f 43 41 4e 54 5f 46 49 | 4e 44 5f 48 4f 53 54 53 |_CANT_FI|ND_HOSTS|
|00038530| 5d 29 3b 0a 09 09 09 09 | 09 09 09 09 64 70 2d 3e |]);.....|....dp->|
|00038540| 64 70 5f 52 65 73 32 20 | 3d 20 45 52 52 4f 52 5f |dp_Res2 |= ERROR_|
|00038550| 44 49 52 5f 4e 4f 54 5f | 46 4f 55 4e 44 3b 0a 09 |DIR_NOT_|FOUND;..|
|00038560| 09 09 09 09 09 09 7d 0a | 09 09 09 09 09 09 09 73 |......}.|.......s|
|00038570| 68 75 74 64 6f 77 6e 5f | 6c 6f 63 61 6c 28 29 3b |hutdown_|local();|
|00038580| 0a 09 09 09 09 09 09 7d | 20 65 6c 73 65 20 64 70 |.......}| else dp|
|00038590| 2d 3e 64 70 5f 52 65 73 | 32 20 3d 20 45 52 52 4f |->dp_Res|2 = ERRO|
|000385a0| 52 5f 4e 4f 5f 46 52 45 | 45 5f 53 54 4f 52 45 3b |R_NO_FRE|E_STORE;|
|000385b0| 0a 09 09 09 09 09 09 73 | 68 75 74 64 6f 77 6e 5f |.......s|hutdown_|
|000385c0| 74 63 70 5f 68 61 6e 64 | 6c 65 72 28 29 3b 0a 09 |tcp_hand|ler();..|
|000385d0| 09 09 09 09 7d 20 65 6c | 73 65 20 64 70 2d 3e 64 |....} el|se dp->d|
|000385e0| 70 5f 52 65 73 32 20 3d | 20 45 52 52 4f 52 5f 4e |p_Res2 =| ERROR_N|
|000385f0| 4f 5f 46 52 45 45 5f 53 | 54 4f 52 45 3b 0a 09 09 |O_FREE_S|TORE;...|
|00038600| 09 09 09 66 72 65 65 5f | 67 69 6d 73 28 29 3b 0a |...free_|gims();.|
|00038610| 09 09 09 09 7d 20 65 6c | 73 65 20 64 70 2d 3e 64 |....} el|se dp->d|
|00038620| 70 5f 52 65 73 32 20 3d | 20 45 52 52 4f 52 5f 4e |p_Res2 =| ERROR_N|
|00038630| 4f 5f 46 52 45 45 5f 53 | 54 4f 52 45 3b 0a 09 09 |O_FREE_S|TORE;...|
|00038640| 09 09 69 66 20 28 61 6e | 6f 6e 5f 6c 6f 67 69 6e |..if (an|on_login|
|00038650| 29 20 64 65 61 6c 6c 6f | 63 61 74 65 28 61 6e 6f |) deallo|cate(ano|
|00038660| 6e 5f 6c 6f 67 69 6e 2c | 20 56 5f 63 73 74 72 29 |n_login,| V_cstr)|
|00038670| 3b 0a 09 09 09 7d 20 65 | 6c 73 65 20 64 70 2d 3e |;....} e|lse dp->|
|00038680| 64 70 5f 52 65 73 32 20 | 3d 20 45 52 52 4f 52 5f |dp_Res2 |= ERROR_|
|00038690| 52 45 51 55 49 52 45 44 | 5f 41 52 47 5f 4d 49 53 |REQUIRED|_ARG_MIS|
|000386a0| 53 49 4e 47 3b 0a 09 09 | 0a 09 09 09 63 68 65 63 |SING;...|....chec|
|000386b0| 6b 5f 6d 65 6d 6f 72 79 | 28 29 3b 0a 09 09 09 0a |k_memory|();.....|
|000386c0| 09 09 09 63 6c 65 61 6e | 75 70 5f 73 74 72 69 6e |...clean|up_strin|
|000386d0| 67 73 28 29 3b 0a 09 09 | 09 0a 09 09 09 53 65 74 |gs();...|.....Set|
|000386e0| 50 72 6f 67 72 61 6d 44 | 69 72 28 30 29 3b 0a 09 |ProgramD|ir(0);..|
|000386f0| 09 09 43 75 72 72 65 6e | 74 44 69 72 28 30 29 3b |..Curren|tDir(0);|
|00038700| 0a 09 09 0a 09 09 09 55 | 6e 4c 6f 63 6b 28 66 74 |.......U|nLock(ft|
|00038710| 70 64 69 72 5f 6c 6f 63 | 6b 29 3b 0a 09 09 7d 20 |pdir_loc|k);...} |
|00038720| 65 6c 73 65 20 64 70 2d | 3e 64 70 5f 52 65 73 32 |else dp-|>dp_Res2|
|00038730| 20 3d 20 45 52 52 4f 52 | 5f 44 49 52 5f 4e 4f 54 | = ERROR|_DIR_NOT|
|00038740| 5f 46 4f 55 4e 44 3b 0a | 09 09 63 6c 6f 73 65 5f |_FOUND;.|..close_|
|00038750| 6c 69 62 72 61 72 69 65 | 73 28 29 3b 0a 09 7d 20 |librarie|s();..} |
|00038760| 65 6c 73 65 20 64 70 2d | 3e 64 70 5f 52 65 73 32 |else dp-|>dp_Res2|
|00038770| 20 3d 20 45 52 52 4f 52 | 5f 49 4e 56 41 4c 49 44 | = ERROR|_INVALID|
|00038780| 5f 52 45 53 49 44 45 4e | 54 5f 4c 49 42 52 41 52 |_RESIDEN|T_LIBRAR|
|00038790| 59 3b 0a 0a 09 66 74 70 | 5f 64 65 76 69 63 65 2d |Y;...ftp|_device-|
|000387a0| 3e 64 6f 6c 5f 54 61 73 | 6b 20 3d 20 30 3b 0a 09 |>dol_Tas|k = 0;..|
|000387b0| 0a 09 64 70 2d 3e 64 70 | 5f 52 65 73 31 20 3d 20 |..dp->dp|_Res1 = |
|000387c0| 44 4f 53 46 41 4c 53 45 | 3b 0a 09 0a 09 46 6f 72 |DOSFALSE|;....For|
|000387d0| 62 69 64 28 29 3b 09 2f | 2a 20 74 68 69 73 20 69 |bid();./|* this i|
|000387e0| 73 20 73 6f 20 74 68 65 | 79 20 63 61 6e 27 74 20 |s so the|y can't |
|000387f0| 75 6e 6c 6f 61 64 73 65 | 67 20 75 73 20 75 6e 74 |unloadse|g us unt|
|00038800| 69 6c 20 77 65 20 68 61 | 76 65 20 66 69 6e 69 73 |il we ha|ve finis|
|00038810| 68 65 64 20 2a 2f 0a 09 | 50 75 74 4d 73 67 28 72 |hed */..|PutMsg(r|
|00038820| 65 70 6c 79 2c 20 64 70 | 2d 3e 64 70 5f 4c 69 6e |eply, dp|->dp_Lin|
|00038830| 6b 29 3b 0a 09 72 65 74 | 75 72 6e 3b 0a 7d 0a 0a |k);..ret|urn;.}..|
|00038840| 2f 2a 20 68 61 73 20 74 | 6f 20 62 65 20 61 66 74 |/* has t|o be aft|
|00038850| 65 72 20 74 68 65 20 73 | 74 61 72 74 75 70 20 66 |er the s|tartup f|
|00038860| 75 6e 63 74 69 6f 6e 20 | 2a 2f 0a 23 69 6e 63 6c |unction |*/.#incl|
|00038870| 75 64 65 20 22 76 65 72 | 69 66 79 5f 63 6f 64 65 |ude "ver|ify_code|
|00038880| 2e 68 22 0a 0a 76 6f 69 | 64 20 73 74 61 72 74 75 |.h"..voi|d startu|
|00038890| 70 5f 65 72 72 6f 72 28 | 62 38 20 2a 73 29 0a 7b |p_error(|b8 *s).{|
|000388a0| 0a 09 73 74 72 75 63 74 | 20 45 61 73 79 53 74 72 |..struct| EasyStr|
|000388b0| 75 63 74 20 65 73 3b 0a | 09 0a 09 65 73 2e 65 73 |uct es;.|...es.es|
|000388c0| 5f 53 74 72 75 63 74 53 | 69 7a 65 20 3d 20 73 69 |_StructS|ize = si|
|000388d0| 7a 65 6f 66 28 73 74 72 | 75 63 74 20 45 61 73 79 |zeof(str|uct Easy|
|000388e0| 53 74 72 75 63 74 29 3b | 0a 09 65 73 2e 65 73 5f |Struct);|..es.es_|
|000388f0| 46 6c 61 67 73 20 3d 20 | 30 3b 0a 09 65 73 2e 65 |Flags = |0;..es.e|
|00038900| 73 5f 54 69 74 6c 65 20 | 3d 20 73 74 72 69 6e 67 |s_Title |= string|
|00038910| 73 5b 4d 53 47 5f 46 54 | 50 4d 5f 53 54 41 52 54 |s[MSG_FT|PM_START|
|00038920| 55 50 5f 45 52 52 4f 52 | 5d 3b 0a 09 65 73 2e 65 |UP_ERROR|];..es.e|
|00038930| 73 5f 47 61 64 67 65 74 | 46 6f 72 6d 61 74 20 3d |s_Gadget|Format =|
|00038940| 20 73 74 72 69 6e 67 73 | 5b 4d 53 47 5f 4f 4b 5d | strings|[MSG_OK]|
|00038950| 3b 0a 09 65 73 2e 65 73 | 5f 54 65 78 74 46 6f 72 |;..es.es|_TextFor|
|00038960| 6d 61 74 20 3d 20 73 3b | 0a 09 0a 09 45 61 73 79 |mat = s;|....Easy|
|00038970| 52 65 71 75 65 73 74 28 | 6e 69 6c 2c 20 26 65 73 |Request(|nil, &es|
|00038980| 2c 20 6e 69 6c 29 3b 0a | 7d 0a 0a 62 6f 6f 6c 65 |, nil);.|}..boole|
|00038990| 61 6e 20 6c 61 75 6e 63 | 68 5f 74 63 70 5f 68 61 |an launc|h_tcp_ha|
|000389a0| 6e 64 6c 65 72 28 76 6f | 69 64 29 0a 7b 0a 09 73 |ndler(vo|id).{..s|
|000389b0| 74 72 75 63 74 20 50 72 | 6f 63 65 73 73 20 2a 63 |truct Pr|ocess *c|
|000389c0| 68 69 6c 64 3b 0a 09 74 | 63 70 6d 65 73 73 61 67 |hild;..t|cpmessag|
|000389d0| 65 20 2a 74 6d 3b 0a 09 | 0a 09 75 6e 69 71 75 65 |e *tm;..|..unique|
|000389e0| 5f 6e 61 6d 65 28 46 69 | 6e 64 54 61 73 6b 28 30 |_name(Fi|ndTask(0|
|000389f0| 29 2c 20 22 3a 20 46 54 | 50 4d 6f 75 6e 74 22 2c |), ": FT|PMount",|
|00038a00| 20 75 6e 69 71 75 65 5f | 62 75 66 66 65 72 29 3b | unique_|buffer);|
|00038a10| 0a 09 0a 09 73 74 61 72 | 74 75 70 5f 73 79 6e 63 |....star|tup_sync|
|00038a20| 20 3d 20 43 72 65 61 74 | 65 50 6f 72 74 28 75 6e | = Creat|ePort(un|
|00038a30| 69 71 75 65 5f 62 75 66 | 66 65 72 2c 20 30 29 3b |ique_buf|fer, 0);|
|00038a40| 0a 09 69 66 20 28 73 74 | 61 72 74 75 70 5f 73 79 |..if (st|artup_sy|
|00038a50| 6e 63 29 20 7b 0a 09 09 | 63 68 69 6c 64 20 3d 20 |nc) {...|child = |
|00038a60| 43 72 65 61 74 65 4e 65 | 77 50 72 6f 63 54 61 67 |CreateNe|wProcTag|
|00038a70| 73 28 0a 09 09 09 4e 50 | 5f 45 6e 74 72 79 2c 09 |s(....NP|_Entry,.|
|00038a80| 74 63 70 5f 68 61 6e 64 | 6c 65 72 2c 0a 09 09 09 |tcp_hand|ler,....|
|00038a90| 4e 50 5f 41 72 67 75 6d | 65 6e 74 73 2c 09 75 6e |NP_Argum|ents,.un|
|00038aa0| 69 71 75 65 5f 62 75 66 | 66 65 72 2c 0a 09 09 09 |ique_buf|fer,....|
|00038ab0| 4e 50 5f 4e 61 6d 65 2c | 09 73 74 72 69 6e 67 73 |NP_Name,|.strings|
|00038ac0| 5b 4d 53 47 5f 54 43 50 | 5f 48 41 4e 44 4c 45 52 |[MSG_TCP|_HANDLER|
|00038ad0| 5d 2c 0a 09 09 09 4e 50 | 5f 53 74 61 63 6b 53 69 |],....NP|_StackSi|
|00038ae0| 7a 65 2c 09 36 30 30 30 | 2c 0a 09 09 09 54 41 47 |ze,.6000|,....TAG|
|00038af0| 5f 45 4e 44 2c 09 30 0a | 09 09 29 3b 0a 09 09 69 |_END,.0.|..);...i|
|00038b00| 66 20 28 63 68 69 6c 64 | 29 20 7b 0a 09 09 09 57 |f (child|) {....W|
|00038b10| 61 69 74 28 31 20 3c 3c | 20 73 74 61 72 74 75 70 |ait(1 <<| startup|
|00038b20| 5f 73 79 6e 63 2d 3e 6d | 70 5f 53 69 67 42 69 74 |_sync->m|p_SigBit|
|00038b30| 29 3b 0a 09 09 09 74 6d | 20 3d 20 28 74 63 70 6d |);....tm| = (tcpm|
|00038b40| 65 73 73 61 67 65 20 2a | 29 47 65 74 4d 73 67 28 |essage *|)GetMsg(|
|00038b50| 73 74 61 72 74 75 70 5f | 73 79 6e 63 29 3b 0a 09 |startup_|sync);..|
|00038b60| 09 09 0a 09 09 09 69 66 | 20 28 74 6d 29 20 7b 0a |......if| (tm) {.|
|00038b70| 09 09 09 09 76 65 72 69 | 66 79 28 74 6d 2c 20 56 |....veri|fy(tm, V|
|00038b80| 5f 74 63 70 6d 65 73 73 | 61 67 65 29 3b 0a 09 09 |_tcpmess|age);...|
|00038b90| 09 09 0a 09 09 09 09 69 | 66 20 28 74 6d 2d 3e 72 |.......i|f (tm->r|
|00038ba0| 65 73 75 6c 74 29 20 7b | 0a 09 09 09 09 09 74 63 |esult) {|......tc|
|00038bb0| 70 20 3d 20 74 6d 2d 3e | 64 61 74 61 3b 0a 09 09 |p = tm->|data;...|
|00038bc0| 09 09 09 52 65 70 6c 79 | 4d 73 67 28 26 74 6d 2d |...Reply|Msg(&tm-|
|00038bd0| 3e 68 65 61 64 65 72 29 | 3b 0a 09 09 09 09 09 0a |>header)|;.......|
|00038be0| 09 09 09 09 09 57 61 69 | 74 50 6f 72 74 28 73 74 |.....Wai|tPort(st|
|00038bf0| 61 72 74 75 70 5f 73 79 | 6e 63 29 3b 0a 09 09 09 |artup_sy|nc);....|
|00038c00| 09 09 70 72 69 6d 65 20 | 3d 20 28 74 63 70 6d 65 |..prime |= (tcpme|
|00038c10| 73 73 61 67 65 20 2a 29 | 47 65 74 4d 73 67 28 73 |ssage *)|GetMsg(s|
|00038c20| 74 61 72 74 75 70 5f 73 | 79 6e 63 29 3b 0a 09 09 |tartup_s|ync);...|
|00038c30| 09 09 09 0a 09 09 09 09 | 09 2f 2a 20 6f 6b 21 20 |........|./* ok! |
|00038c40| 20 6f 66 66 20 77 65 20 | 74 72 75 6e 64 6c 65 20 | off we |trundle |
|00038c50| 2a 2f 0a 09 09 09 09 09 | 0a 09 09 09 09 09 70 72 |*/......|......pr|
|00038c60| 69 6d 65 2d 3e 63 6f 6d | 6d 61 6e 64 20 3d 20 54 |ime->com|mand = T|
|00038c70| 43 50 5f 53 45 52 56 49 | 43 45 3b 0a 09 09 09 09 |CP_SERVI|CE;.....|
|00038c80| 09 70 72 69 6d 65 2d 3e | 64 61 74 61 20 3d 20 73 |.prime->|data = s|
|00038c90| 74 72 69 6e 67 73 5b 4d | 53 47 5f 53 45 52 56 49 |trings[M|SG_SERVI|
|00038ca0| 43 45 5d 3b 0a 09 09 09 | 09 09 0a 09 09 09 09 09 |CE];....|........|
|00038cb0| 50 75 74 4d 73 67 28 74 | 63 70 2c 20 26 70 72 69 |PutMsg(t|cp, &pri|
|00038cc0| 6d 65 2d 3e 68 65 61 64 | 65 72 29 3b 0a 09 09 09 |me->head|er);....|
|00038cd0| 09 09 57 61 69 74 50 6f | 72 74 28 73 74 61 72 74 |..WaitPo|rt(start|
|00038ce0| 75 70 5f 73 79 6e 63 29 | 3b 20 47 65 74 4d 73 67 |up_sync)|; GetMsg|
|00038cf0| 28 73 74 61 72 74 75 70 | 5f 73 79 6e 63 29 3b 0a |(startup|_sync);.|
|00038d00| 09 09 09 09 09 0a 09 09 | 09 09 09 69 66 20 28 70 |........|...if (p|
|00038d10| 72 69 6d 65 2d 3e 72 65 | 73 75 6c 74 29 20 7b 0a |rime->re|sult) {.|
|00038d20| 09 09 09 09 09 09 66 74 | 70 5f 70 6f 72 74 5f 6e |......ft|p_port_n|
|00038d30| 75 6d 62 65 72 20 3d 20 | 70 72 69 6d 65 2d 3e 70 |umber = |prime->p|
|00038d40| 6f 72 74 2e 77 3b 0a 09 | 09 09 09 09 7d 20 65 6c |ort.w;..|....} el|
|00038d50| 73 65 20 7b 0a 09 09 09 | 09 09 09 66 74 70 5f 70 |se {....|...ftp_p|
|00038d60| 6f 72 74 5f 6e 75 6d 62 | 65 72 20 3d 20 30 3b 09 |ort_numb|er = 0;.|
|00038d70| 2f 2a 20 66 69 6c 6c 20 | 69 74 20 69 6e 20 61 74 |/* fill |it in at|
|00038d80| 20 63 6f 6e 6e 65 63 74 | 20 74 69 6d 65 20 2a 2f | connect| time */|
|00038d90| 0a 09 09 09 09 09 7d 0a | 09 09 09 09 09 0a 09 09 |......}.|........|
|00038da0| 09 09 09 72 65 74 75 72 | 6e 20 74 72 75 65 3b 0a |...retur|n true;.|
|00038db0| 09 09 09 09 7d 0a 09 09 | 09 09 52 65 70 6c 79 4d |....}...|..ReplyM|
|00038dc0| 73 67 28 26 74 6d 2d 3e | 68 65 61 64 65 72 29 3b |sg(&tm->|header);|
|00038dd0| 0a 09 09 09 09 0a 09 09 | 09 09 2f 2a 20 77 68 65 |........|../* whe|
|00038de0| 74 68 65 72 20 63 68 69 | 6c 64 20 69 73 20 73 74 |ther chi|ld is st|
|00038df0| 69 6c 6c 20 61 6c 69 76 | 65 20 68 65 72 65 3f 3f |ill aliv|e here??|
|00038e00| 3f 20 2a 2f 0a 09 09 09 | 7d 0a 09 09 7d 0a 09 09 |? */....|}...}...|
|00038e10| 44 65 6c 65 74 65 50 6f | 72 74 28 73 74 61 72 74 |DeletePo|rt(start|
|00038e20| 75 70 5f 73 79 6e 63 29 | 3b 0a 09 7d 0a 09 0a 09 |up_sync)|;..}....|
|00038e30| 73 74 61 72 74 75 70 5f | 65 72 72 6f 72 28 73 74 |startup_|error(st|
|00038e40| 72 69 6e 67 73 5b 4d 53 | 47 5f 43 41 4e 54 5f 4c |rings[MS|G_CANT_L|
|00038e50| 41 55 4e 43 48 5f 54 43 | 50 5d 29 3b 0a 09 0a 09 |AUNCH_TC|P]);....|
|00038e60| 72 65 74 75 72 6e 20 66 | 61 6c 73 65 3b 0a 7d 0a |return f|alse;.}.|
|00038e70| 0a 76 6f 69 64 20 73 68 | 75 74 64 6f 77 6e 5f 74 |.void sh|utdown_t|
|00038e80| 63 70 5f 68 61 6e 64 6c | 65 72 28 76 6f 69 64 29 |cp_handl|er(void)|
|00038e90| 0a 7b 0a 09 70 72 69 6d | 65 2d 3e 63 6f 6d 6d 61 |.{..prim|e->comma|
|00038ea0| 6e 64 20 3d 20 54 43 50 | 5f 44 49 45 3b 0a 09 70 |nd = TCP|_DIE;..p|
|00038eb0| 72 69 6d 65 2d 3e 68 65 | 61 64 65 72 2e 6d 6e 5f |rime->he|ader.mn_|
|00038ec0| 52 65 70 6c 79 50 6f 72 | 74 20 3d 20 73 74 61 72 |ReplyPor|t = star|
|00038ed0| 74 75 70 5f 73 79 6e 63 | 3b 0a 09 0a 09 50 75 74 |tup_sync|;....Put|
|00038ee0| 4d 73 67 28 74 63 70 2c | 20 26 70 72 69 6d 65 2d |Msg(tcp,| &prime-|
|00038ef0| 3e 68 65 61 64 65 72 29 | 3b 0a 09 0a 09 57 61 69 |>header)|;....Wai|
|00038f00| 74 28 31 20 3c 3c 20 73 | 74 61 72 74 75 70 5f 73 |t(1 << s|tartup_s|
|00038f10| 79 6e 63 2d 3e 6d 70 5f | 53 69 67 42 69 74 29 3b |ync->mp_|SigBit);|
|00038f20| 09 2f 2a 20 57 61 69 74 | 20 74 69 6c 20 74 68 65 |./* Wait| til the|
|00038f30| 20 63 68 69 6c 64 20 73 | 69 67 6e 61 6c 73 20 69 | child s|ignals i|
|00038f40| 74 20 69 73 20 64 65 61 | 64 20 2a 2f 0a 09 0a 09 |t is dea|d */....|
|00038f50| 44 65 6c 65 74 65 50 6f | 72 74 28 73 74 61 72 74 |DeletePo|rt(start|
|00038f60| 75 70 5f 73 79 6e 63 29 | 3b 0a 09 72 65 74 75 72 |up_sync)|;..retur|
|00038f70| 6e 3b 0a 7d 0a 0a 62 6f | 6f 6c 65 61 6e 20 6c 61 |n;.}..bo|olean la|
|00038f80| 75 6e 63 68 5f 6c 6f 63 | 61 6c 28 76 6f 69 64 29 |unch_loc|al(void)|
|00038f90| 0a 7b 0a 09 73 74 72 75 | 63 74 20 53 74 61 6e 64 |.{..stru|ct Stand|
|00038fa0| 61 72 64 50 61 63 6b 65 | 74 20 2a 73 70 3b 0a 09 |ardPacke|t *sp;..|
|00038fb0| 73 74 72 75 63 74 20 50 | 72 6f 63 65 73 73 20 2a |struct P|rocess *|
|00038fc0| 63 68 69 6c 64 3b 0a 09 | 0a 09 73 70 20 3d 20 28 |child;..|..sp = (|
|00038fd0| 73 74 72 75 63 74 20 53 | 74 61 6e 64 61 72 64 50 |struct S|tandardP|
|00038fe0| 61 63 6b 65 74 20 2a 29 | 61 6c 6c 6f 63 61 74 65 |acket *)|allocate|
|00038ff0| 5f 66 6c 61 67 73 28 73 | 69 7a 65 6f 66 28 2a 73 |_flags(s|izeof(*s|
|00039000| 70 29 2c 20 4d 45 4d 46 | 5f 50 55 42 4c 49 43 2c |p), MEMF|_PUBLIC,|
|00039010| 20 56 5f 53 74 61 6e 64 | 61 72 64 50 61 63 6b 65 | V_Stand|ardPacke|
|00039020| 74 29 3b 0a 09 69 66 20 | 28 21 73 70 29 20 72 65 |t);..if |(!sp) re|
|00039030| 74 75 72 6e 20 66 61 6c | 73 65 3b 0a 09 0a 09 6c |turn fal|se;....l|
|00039040| 6f 63 61 6c 5f 6d 73 67 | 20 3d 20 26 73 70 2d 3e |ocal_msg| = &sp->|
|00039050| 73 70 5f 4d 73 67 3b 0a | 09 6c 6f 63 61 6c 5f 6d |sp_Msg;.|.local_m|
|00039060| 73 67 2d 3e 6d 6e 5f 4e | 6f 64 65 2e 6c 6e 5f 4e |sg->mn_N|ode.ln_N|
|00039070| 61 6d 65 20 3d 20 28 63 | 68 61 72 20 2a 29 26 73 |ame = (c|har *)&s|
|00039080| 70 2d 3e 73 70 5f 50 6b | 74 3b 0a 09 73 70 2d 3e |p->sp_Pk|t;..sp->|
|00039090| 73 70 5f 50 6b 74 2e 64 | 70 5f 4c 69 6e 6b 20 3d |sp_Pkt.d|p_Link =|
|000390a0| 20 6c 6f 63 61 6c 5f 6d | 73 67 3b 0a 09 0a 09 73 | local_m|sg;....s|
|000390b0| 70 2d 3e 73 70 5f 50 6b | 74 2e 64 70 5f 54 79 70 |p->sp_Pk|t.dp_Typ|
|000390c0| 65 20 3d 20 41 43 54 49 | 4f 4e 5f 44 49 45 3b 09 |e = ACTI|ON_DIE;.|
|000390d0| 2f 2a 20 66 6f 72 20 73 | 74 61 72 74 75 70 20 69 |/* for s|tartup i|
|000390e0| 74 20 73 68 6f 75 6c 64 | 20 69 67 6e 6f 72 65 20 |t should| ignore |
|000390f0| 74 68 69 73 20 3a 29 20 | 2a 2f 0a 09 0a 09 73 70 |this :) |*/....sp|
|00039100| 2d 3e 73 70 5f 50 6b 74 | 2e 64 70 5f 50 6f 72 74 |->sp_Pkt|.dp_Port|
|00039110| 20 3d 20 73 74 61 72 74 | 75 70 5f 73 79 6e 63 3b | = start|up_sync;|
|00039120| 09 2f 2a 20 74 68 69 73 | 20 69 73 20 62 61 64 20 |./* this| is bad |
|00039130| 70 72 6f 67 72 61 6d 6d | 69 6e 67 20 2e 2e 2e 20 |programm|ing ... |
|00039140| 69 6e 63 72 65 61 73 65 | 73 20 6c 69 6e 6b 61 67 |increase|s linkag|
|00039150| 65 20 2a 2f 0a 09 0a 09 | 63 68 69 6c 64 20 3d 20 |e */....|child = |
|00039160| 43 72 65 61 74 65 4e 65 | 77 50 72 6f 63 54 61 67 |CreateNe|wProcTag|
|00039170| 73 28 0a 09 09 4e 50 5f | 45 6e 74 72 79 2c 09 6c |s(...NP_|Entry,.l|
|00039180| 6f 63 61 6c 5f 68 61 6e | 64 6c 65 72 2c 0a 09 09 |ocal_han|dler,...|
|00039190| 4e 50 5f 4e 61 6d 65 2c | 09 73 74 72 69 6e 67 73 |NP_Name,|.strings|
|000391a0| 5b 4d 53 47 5f 4c 4f 43 | 41 4c 5f 48 41 4e 44 4c |[MSG_LOC|AL_HANDL|
|000391b0| 45 52 5d 2c 0a 09 09 4e | 50 5f 53 74 61 63 6b 53 |ER],...N|P_StackS|
|000391c0| 69 7a 65 2c 09 36 30 30 | 30 2c 0a 09 09 54 41 47 |ize,.600|0,...TAG|
|000391d0| 5f 45 4e 44 2c 09 30 0a | 09 29 3b 0a 09 69 66 20 |_END,.0.|.);..if |
|000391e0| 28 63 68 69 6c 64 29 20 | 7b 0a 09 09 6c 6f 63 61 |(child) |{...loca|
|000391f0| 6c 5f 70 6f 72 74 20 3d | 20 26 63 68 69 6c 64 2d |l_port =| &child-|
|00039200| 3e 70 72 5f 4d 73 67 50 | 6f 72 74 3b 0a 09 09 0a |>pr_MsgP|ort;....|
|00039210| 09 09 50 75 74 4d 73 67 | 28 6c 6f 63 61 6c 5f 70 |..PutMsg|(local_p|
|00039220| 6f 72 74 2c 20 6c 6f 63 | 61 6c 5f 6d 73 67 29 3b |ort, loc|al_msg);|
|00039230| 0a 09 09 57 61 69 74 50 | 6f 72 74 28 73 74 61 72 |...WaitP|ort(star|
|00039240| 74 75 70 5f 73 79 6e 63 | 29 3b 20 47 65 74 4d 73 |tup_sync|); GetMs|
|00039250| 67 28 73 74 61 72 74 75 | 70 5f 73 79 6e 63 29 3b |g(startu|p_sync);|
|00039260| 0a 09 09 0a 09 09 69 66 | 20 28 73 70 2d 3e 73 70 |......if| (sp->sp|
|00039270| 5f 50 6b 74 2e 64 70 5f | 52 65 73 31 29 20 7b 0a |_Pkt.dp_|Res1) {.|
|00039280| 09 09 09 72 65 74 75 72 | 6e 20 74 72 75 65 3b 0a |...retur|n true;.|
|00039290| 09 09 7d 0a 09 7d 0a 0a | 09 64 65 61 6c 6c 6f 63 |..}..}..|.dealloc|
|000392a0| 61 74 65 28 73 70 2c 20 | 56 5f 53 74 61 6e 64 61 |ate(sp, |V_Standa|
|000392b0| 72 64 50 61 63 6b 65 74 | 29 3b 0a 0a 09 73 74 61 |rdPacket|);...sta|
|000392c0| 72 74 75 70 5f 65 72 72 | 6f 72 28 73 74 72 69 6e |rtup_err|or(strin|
|000392d0| 67 73 5b 4d 53 47 5f 43 | 41 4e 54 5f 4c 41 55 4e |gs[MSG_C|ANT_LAUN|
|000392e0| 43 48 5f 4c 4f 43 41 4c | 5d 29 3b 0a 09 0a 09 72 |CH_LOCAL|]);....r|
|000392f0| 65 74 75 72 6e 20 66 61 | 6c 73 65 3b 0a 7d 0a 0a |eturn fa|lse;.}..|
|00039300| 76 6f 69 64 20 73 68 75 | 74 64 6f 77 6e 5f 6c 6f |void shu|tdown_lo|
|00039310| 63 61 6c 28 76 6f 69 64 | 29 0a 7b 0a 09 73 74 72 |cal(void|).{..str|
|00039320| 75 63 74 20 53 74 61 6e | 64 61 72 64 50 61 63 6b |uct Stan|dardPack|
|00039330| 65 74 20 2a 73 70 3b 0a | 09 0a 09 73 70 20 3d 20 |et *sp;.|...sp = |
|00039340| 28 73 74 72 75 63 74 20 | 53 74 61 6e 64 61 72 64 |(struct |Standard|
|00039350| 50 61 63 6b 65 74 20 2a | 29 6c 6f 63 61 6c 5f 6d |Packet *|)local_m|
|00039360| 73 67 3b 0a 09 0a 09 73 | 70 2d 3e 73 70 5f 50 6b |sg;....s|p->sp_Pk|
|00039370| 74 2e 64 70 5f 50 6f 72 | 74 20 3d 20 73 74 61 72 |t.dp_Por|t = star|
|00039380| 74 75 70 5f 73 79 6e 63 | 3b 0a 09 0a 09 50 75 74 |tup_sync|;....Put|
|00039390| 4d 73 67 28 6c 6f 63 61 | 6c 5f 70 6f 72 74 2c 20 |Msg(loca|l_port, |
|000393a0| 6c 6f 63 61 6c 5f 6d 73 | 67 29 3b 0a 09 57 61 69 |local_ms|g);..Wai|
|000393b0| 74 50 6f 72 74 28 73 74 | 61 72 74 75 70 5f 73 79 |tPort(st|artup_sy|
|000393c0| 6e 63 29 3b 20 47 65 74 | 4d 73 67 28 73 74 61 72 |nc); Get|Msg(star|
|000393d0| 74 75 70 5f 73 79 6e 63 | 29 3b 0a 09 0a 09 64 65 |tup_sync|);....de|
|000393e0| 61 6c 6c 6f 63 61 74 65 | 28 73 70 2c 20 56 5f 53 |allocate|(sp, V_S|
|000393f0| 74 61 6e 64 61 72 64 50 | 61 63 6b 65 74 29 3b 0a |tandardP|acket);.|
|00039400| 09 0a 09 72 65 74 75 72 | 6e 3b 0a 7d 0a 0a 62 6f |...retur|n;.}..bo|
|00039410| 6f 6c 65 61 6e 20 6f 70 | 65 6e 5f 6c 69 62 72 61 |olean op|en_libra|
|00039420| 72 69 65 73 28 76 6f 69 | 64 29 0a 7b 0a 09 49 6e |ries(voi|d).{..In|
|00039430| 74 75 69 74 69 6f 6e 42 | 61 73 65 20 3d 20 28 73 |tuitionB|ase = (s|
|00039440| 74 72 75 63 74 20 49 6e | 74 75 69 74 69 6f 6e 42 |truct In|tuitionB|
|00039450| 61 73 65 20 2a 29 4f 70 | 65 6e 4c 69 62 72 61 72 |ase *)Op|enLibrar|
|00039460| 79 28 22 69 6e 74 75 69 | 74 69 6f 6e 2e 6c 69 62 |y("intui|tion.lib|
|00039470| 72 61 72 79 22 2c 20 33 | 36 29 3b 0a 09 69 66 20 |rary", 3|6);..if |
|00039480| 28 49 6e 74 75 69 74 69 | 6f 6e 42 61 73 65 29 20 |(Intuiti|onBase) |
|00039490| 7b 0a 09 09 44 4f 53 42 | 61 73 65 20 3d 20 28 73 |{...DOSB|ase = (s|
|000394a0| 74 72 75 63 74 20 44 6f | 73 4c 69 62 72 61 72 79 |truct Do|sLibrary|
|000394b0| 20 2a 29 4f 70 65 6e 4c | 69 62 72 61 72 79 28 22 | *)OpenL|ibrary("|
|000394c0| 64 6f 73 2e 6c 69 62 72 | 61 72 79 22 2c 20 33 36 |dos.libr|ary", 36|
|000394d0| 29 3b 0a 09 09 69 66 20 | 28 44 4f 53 42 61 73 65 |);...if |(DOSBase|
|000394e0| 29 20 7b 0a 09 09 09 47 | 66 78 42 61 73 65 20 3d |) {....G|fxBase =|
|000394f0| 20 28 73 74 72 75 63 74 | 20 47 66 78 42 61 73 65 | (struct| GfxBase|
|00039500| 20 2a 29 4f 70 65 6e 4c | 69 62 72 61 72 79 28 22 | *)OpenL|ibrary("|
|00039510| 67 72 61 70 68 69 63 73 | 2e 6c 69 62 72 61 72 79 |graphics|.library|
|00039520| 22 2c 20 30 29 3b 0a 09 | 09 09 69 66 20 28 47 66 |", 0);..|..if (Gf|
|00039530| 78 42 61 73 65 29 20 7b | 0a 09 09 09 09 49 63 6f |xBase) {|.....Ico|
|00039540| 6e 42 61 73 65 20 3d 20 | 4f 70 65 6e 4c 69 62 72 |nBase = |OpenLibr|
|00039550| 61 72 79 28 22 69 63 6f | 6e 2e 6c 69 62 72 61 72 |ary("ico|n.librar|
|00039560| 79 22 2c 20 30 29 3b 0a | 09 09 09 09 4c 6f 63 61 |y", 0);.|....Loca|
|00039570| 6c 65 42 61 73 65 20 3d | 20 4f 70 65 6e 4c 69 62 |leBase =| OpenLib|
|00039580| 72 61 72 79 28 22 6c 6f | 63 61 6c 65 2e 6c 69 62 |rary("lo|cale.lib|
|00039590| 72 61 72 79 22 2c 20 30 | 29 3b 0a 09 09 09 09 0a |rary", 0|);......|
|000395a0| 09 09 09 09 72 65 74 75 | 72 6e 20 74 72 75 65 3b |....retu|rn true;|
|000395b0| 0a 09 09 09 7d 20 65 6c | 73 65 20 73 74 61 72 74 |....} el|se start|
|000395c0| 75 70 5f 65 72 72 6f 72 | 28 22 46 54 50 4d 6f 75 |up_error|("FTPMou|
|000395d0| 6e 74 20 63 61 6e 6e 6f | 74 20 6f 70 65 6e 20 67 |nt canno|t open g|
|000395e0| 72 61 70 68 69 63 73 2e | 6c 69 62 72 61 72 79 22 |raphics.|library"|
|000395f0| 29 3b 0a 09 09 09 43 6c | 6f 73 65 4c 69 62 72 61 |);....Cl|oseLibra|
|00039600| 72 79 28 28 73 74 72 75 | 63 74 20 4c 69 62 72 61 |ry((stru|ct Libra|
|00039610| 72 79 20 2a 29 44 4f 53 | 42 61 73 65 29 3b 0a 09 |ry *)DOS|Base);..|
|00039620| 09 7d 20 65 6c 73 65 20 | 73 74 61 72 74 75 70 5f |.} else |startup_|
|00039630| 65 72 72 6f 72 28 22 46 | 54 50 4d 6f 75 6e 74 20 |error("F|TPMount |
|00039640| 72 65 71 75 69 72 65 73 | 20 56 33 36 20 64 6f 73 |requires| V36 dos|
|00039650| 2e 6c 69 62 72 61 72 79 | 22 29 3b 0a 09 09 43 6c |.library|");...Cl|
|00039660| 6f 73 65 4c 69 62 72 61 | 72 79 28 28 73 74 72 75 |oseLibra|ry((stru|
|00039670| 63 74 20 4c 69 62 72 61 | 72 79 20 2a 29 49 6e 74 |ct Libra|ry *)Int|
|00039680| 75 69 74 69 6f 6e 42 61 | 73 65 29 3b 0a 09 7d 0a |uitionBa|se);..}.|
|00039690| 09 0a 09 72 65 74 75 72 | 6e 20 66 61 6c 73 65 3b |...retur|n false;|
|000396a0| 0a 7d 0a 0a 76 6f 69 64 | 20 63 6c 6f 73 65 5f 6c |.}..void| close_l|
|000396b0| 69 62 72 61 72 69 65 73 | 28 76 6f 69 64 29 0a 7b |ibraries|(void).{|
|000396c0| 0a 09 69 66 20 28 4c 6f | 63 61 6c 65 42 61 73 65 |..if (Lo|caleBase|
|000396d0| 29 20 43 6c 6f 73 65 4c | 69 62 72 61 72 79 28 4c |) CloseL|ibrary(L|
|000396e0| 6f 63 61 6c 65 42 61 73 | 65 29 3b 0a 09 69 66 20 |ocaleBas|e);..if |
|000396f0| 28 49 63 6f 6e 42 61 73 | 65 29 20 43 6c 6f 73 65 |(IconBas|e) Close|
|00039700| 4c 69 62 72 61 72 79 28 | 49 63 6f 6e 42 61 73 65 |Library(|IconBase|
|00039710| 29 3b 0a 09 43 6c 6f 73 | 65 4c 69 62 72 61 72 79 |);..Clos|eLibrary|
|00039720| 28 28 73 74 72 75 63 74 | 20 4c 69 62 72 61 72 79 |((struct| Library|
|00039730| 20 2a 29 47 66 78 42 61 | 73 65 29 3b 0a 09 43 6c | *)GfxBa|se);..Cl|
|00039740| 6f 73 65 4c 69 62 72 61 | 72 79 28 28 73 74 72 75 |oseLibra|ry((stru|
|00039750| 63 74 20 4c 69 62 72 61 | 72 79 20 2a 29 44 4f 53 |ct Libra|ry *)DOS|
|00039760| 42 61 73 65 29 3b 0a 09 | 43 6c 6f 73 65 4c 69 62 |Base);..|CloseLib|
|00039770| 72 61 72 79 28 28 73 74 | 72 75 63 74 20 4c 69 62 |rary((st|ruct Lib|
|00039780| 72 61 72 79 20 2a 29 49 | 6e 74 75 69 74 69 6f 6e |rary *)I|ntuition|
|00039790| 42 61 73 65 29 3b 0a 7d | 0a 0a 62 6f 6f 6c 65 61 |Base);.}|..boolea|
|000397a0| 6e 20 6d 61 6b 65 5f 67 | 69 6d 73 28 76 6f 69 64 |n make_g|ims(void|
|000397b0| 29 0a 7b 0a 09 73 74 72 | 75 63 74 20 53 63 72 65 |).{..str|uct Scre|
|000397c0| 65 6e 20 2a 73 3b 0a 09 | 73 74 72 75 63 74 20 44 |en *s;..|struct D|
|000397d0| 72 61 77 49 6e 66 6f 20 | 2a 64 72 61 77 69 6e 66 |rawInfo |*drawinf|
|000397e0| 6f 3b 0a 09 0a 09 73 20 | 3d 20 4c 6f 63 6b 50 75 |o;....s |= LockPu|
|000397f0| 62 53 63 72 65 65 6e 28 | 6e 69 6c 29 3b 0a 09 69 |bScreen(|nil);..i|
|00039800| 66 20 28 21 73 29 20 72 | 65 74 75 72 6e 20 66 61 |f (!s) r|eturn fa|
|00039810| 6c 73 65 3b 0a 09 0a 09 | 6c 69 67 68 74 70 65 6e |lse;....|lightpen|
|00039820| 20 3d 20 32 3b 0a 09 64 | 61 72 6b 70 65 6e 20 3d | = 2;..d|arkpen =|
|00039830| 20 31 3b 0a 09 74 65 78 | 74 70 65 6e 20 3d 20 31 | 1;..tex|tpen = 1|
|00039840| 3b 0a 09 66 69 6c 6c 70 | 65 6e 20 3d 20 33 3b 0a |;..fillp|en = 3;.|
|00039850| 09 0a 09 64 72 61 77 69 | 6e 66 6f 20 3d 20 47 65 |...drawi|nfo = Ge|
|00039860| 74 53 63 72 65 65 6e 44 | 72 61 77 49 6e 66 6f 28 |tScreenD|rawInfo(|
|00039870| 73 29 3b 0a 09 69 66 20 | 28 64 72 61 77 69 6e 66 |s);..if |(drawinf|
|00039880| 6f 29 20 7b 0a 09 09 69 | 66 20 28 64 72 61 77 69 |o) {...i|f (drawi|
|00039890| 6e 66 6f 2d 3e 64 72 69 | 5f 4e 75 6d 50 65 6e 73 |nfo->dri|_NumPens|
|000398a0| 20 3e 20 53 48 41 44 4f | 57 50 45 4e 29 20 7b 0a | > SHADO|WPEN) {.|
|000398b0| 09 09 09 6c 69 67 68 74 | 70 65 6e 20 3d 20 64 72 |...light|pen = dr|
|000398c0| 61 77 69 6e 66 6f 2d 3e | 64 72 69 5f 50 65 6e 73 |awinfo->|dri_Pens|
|000398d0| 5b 53 48 49 4e 45 50 45 | 4e 5d 3b 0a 09 09 09 64 |[SHINEPE|N];....d|
|000398e0| 61 72 6b 70 65 6e 20 3d | 20 64 72 61 77 69 6e 66 |arkpen =| drawinf|
|000398f0| 6f 2d 3e 64 72 69 5f 50 | 65 6e 73 5b 53 48 41 44 |o->dri_P|ens[SHAD|
|00039900| 4f 57 50 45 4e 5d 3b 0a | 09 09 09 74 65 78 74 70 |OWPEN];.|...textp|
|00039910| 65 6e 20 3d 20 64 72 61 | 77 69 6e 66 6f 2d 3e 64 |en = dra|winfo->d|
|00039920| 72 69 5f 50 65 6e 73 5b | 54 45 58 54 50 45 4e 5d |ri_Pens[|TEXTPEN]|
|00039930| 3b 0a 09 09 09 66 69 6c | 6c 70 65 6e 20 3d 20 64 |;....fil|lpen = d|
|00039940| 72 61 77 69 6e 66 6f 2d | 3e 64 72 69 5f 50 65 6e |rawinfo-|>dri_Pen|
|00039950| 73 5b 46 49 4c 4c 50 45 | 4e 5d 3b 0a 09 09 7d 0a |s[FILLPE|N];...}.|
|00039960| 09 09 46 72 65 65 53 63 | 72 65 65 6e 44 72 61 77 |..FreeSc|reenDraw|
|00039970| 49 6e 66 6f 28 73 2c 20 | 64 72 61 77 69 6e 66 6f |Info(s, |drawinfo|
|00039980| 29 3b 0a 09 7d 0a 09 0a | 09 63 61 6e 63 65 6c 5f |);..}...|.cancel_|
|00039990| 67 69 6d 20 3d 20 6d 61 | 6b 65 5f 67 69 6d 28 73 |gim = ma|ke_gim(s|
|000399a0| 74 72 69 6e 67 73 5b 4d | 53 47 5f 43 41 4e 43 45 |trings[M|SG_CANCE|
|000399b0| 4c 5d 2c 20 74 65 78 74 | 70 65 6e 2c 20 6c 69 67 |L], text|pen, lig|
|000399c0| 68 74 70 65 6e 2c 20 64 | 61 72 6b 70 65 6e 2c 20 |htpen, d|arkpen, |
|000399d0| 73 2c 20 49 6e 74 75 69 | 74 69 6f 6e 42 61 73 65 |s, Intui|tionBase|
|000399e0| 2c 20 47 66 78 42 61 73 | 65 29 3b 0a 09 69 66 20 |, GfxBas|e);..if |
|000399f0| 28 63 61 6e 63 65 6c 5f | 67 69 6d 29 20 7b 0a 09 |(cancel_|gim) {..|
|00039a00| 09 61 62 6f 72 74 5f 67 | 69 6d 20 3d 20 6d 61 6b |.abort_g|im = mak|
|00039a10| 65 5f 67 69 6d 28 73 74 | 72 69 6e 67 73 5b 4d 53 |e_gim(st|rings[MS|
|00039a20| 47 5f 41 42 4f 52 54 5d | 2c 20 74 65 78 74 70 65 |G_ABORT]|, textpe|
|00039a30| 6e 2c 20 6c 69 67 68 74 | 70 65 6e 2c 20 64 61 72 |n, light|pen, dar|
|00039a40| 6b 70 65 6e 2c 20 73 2c | 20 49 6e 74 75 69 74 69 |kpen, s,| Intuiti|
|00039a50| 6f 6e 42 61 73 65 2c 20 | 47 66 78 42 61 73 65 29 |onBase, |GfxBase)|
|00039a60| 3b 0a 09 09 69 66 20 28 | 61 62 6f 72 74 5f 67 69 |;...if (|abort_gi|
|00039a70| 6d 29 20 7b 0a 09 09 09 | 64 69 73 63 6f 6e 6e 65 |m) {....|disconne|
|00039a80| 63 74 5f 67 69 6d 20 3d | 20 6d 61 6b 65 5f 67 69 |ct_gim =| make_gi|
|00039a90| 6d 28 73 74 72 69 6e 67 | 73 5b 4d 53 47 5f 44 49 |m(string|s[MSG_DI|
|00039aa0| 53 43 4f 4e 4e 45 43 54 | 5d 2c 20 74 65 78 74 70 |SCONNECT|], textp|
|00039ab0| 65 6e 2c 20 6c 69 67 68 | 74 70 65 6e 2c 20 64 61 |en, ligh|tpen, da|
|00039ac0| 72 6b 70 65 6e 2c 20 73 | 2c 20 49 6e 74 75 69 74 |rkpen, s|, Intuit|
|00039ad0| 69 6f 6e 42 61 73 65 2c | 20 47 66 78 42 61 73 65 |ionBase,| GfxBase|
|00039ae0| 29 3b 0a 09 09 09 69 66 | 20 28 64 69 73 63 6f 6e |);....if| (discon|
|00039af0| 6e 65 63 74 5f 67 69 6d | 29 20 7b 0a 09 09 09 09 |nect_gim|) {.....|
|00039b00| 6c 6f 67 69 6e 5f 67 69 | 6d 20 3d 20 6d 61 6b 65 |login_gi|m = make|
|00039b10| 5f 67 69 6d 28 73 74 72 | 69 6e 67 73 5b 4d 53 47 |_gim(str|ings[MSG|
|00039b20| 5f 4c 4f 47 49 4e 5d 2c | 20 74 65 78 74 70 65 6e |_LOGIN],| textpen|
|00039b30| 2c 20 6c 69 67 68 74 70 | 65 6e 2c 20 64 61 72 6b |, lightp|en, dark|
|00039b40| 70 65 6e 2c 20 73 2c 20 | 49 6e 74 75 69 74 69 6f |pen, s, |Intuitio|
|00039b50| 6e 42 61 73 65 2c 20 47 | 66 78 42 61 73 65 29 3b |nBase, G|fxBase);|
|00039b60| 0a 09 09 09 09 69 66 20 | 28 6c 6f 67 69 6e 5f 67 |.....if |(login_g|
|00039b70| 69 6d 29 20 7b 0a 09 09 | 09 09 09 55 6e 6c 6f 63 |im) {...|...Unloc|
|00039b80| 6b 50 75 62 53 63 72 65 | 65 6e 28 6e 69 6c 2c 20 |kPubScre|en(nil, |
|00039b90| 73 29 3b 0a 09 09 09 09 | 09 72 65 74 75 72 6e 20 |s);.....|.return |
|00039ba0| 74 72 75 65 3b 0a 09 09 | 09 09 7d 0a 09 09 09 09 |true;...|..}.....|
|00039bb0| 66 72 65 65 5f 67 69 6d | 28 64 69 73 63 6f 6e 6e |free_gim|(disconn|
|00039bc0| 65 63 74 5f 67 69 6d 2c | 20 49 6e 74 75 69 74 69 |ect_gim,| Intuiti|
|00039bd0| 6f 6e 42 61 73 65 2c 20 | 47 66 78 42 61 73 65 29 |onBase, |GfxBase)|
|00039be0| 3b 0a 09 09 09 7d 0a 09 | 09 09 66 72 65 65 5f 67 |;....}..|..free_g|
|00039bf0| 69 6d 28 61 62 6f 72 74 | 5f 67 69 6d 2c 20 49 6e |im(abort|_gim, In|
|00039c00| 74 75 69 74 69 6f 6e 42 | 61 73 65 2c 20 47 66 78 |tuitionB|ase, Gfx|
|00039c10| 42 61 73 65 29 3b 0a 09 | 09 7d 0a 09 09 66 72 65 |Base);..|.}...fre|
|00039c20| 65 5f 67 69 6d 28 63 61 | 6e 63 65 6c 5f 67 69 6d |e_gim(ca|ncel_gim|
|00039c30| 2c 20 49 6e 74 75 69 74 | 69 6f 6e 42 61 73 65 2c |, Intuit|ionBase,|
|00039c40| 20 47 66 78 42 61 73 65 | 29 3b 0a 09 7d 0a 09 0a | GfxBase|);..}...|
|00039c50| 09 55 6e 6c 6f 63 6b 50 | 75 62 53 63 72 65 65 6e |.UnlockP|ubScreen|
|00039c60| 28 6e 69 6c 2c 20 73 29 | 3b 0a 09 0a 09 72 65 74 |(nil, s)|;....ret|
|00039c70| 75 72 6e 20 66 61 6c 73 | 65 3b 0a 7d 0a 0a 76 6f |urn fals|e;.}..vo|
|00039c80| 69 64 20 66 72 65 65 5f | 67 69 6d 73 28 76 6f 69 |id free_|gims(voi|
|00039c90| 64 29 0a 7b 0a 09 66 72 | 65 65 5f 67 69 6d 28 6c |d).{..fr|ee_gim(l|
|00039ca0| 6f 67 69 6e 5f 67 69 6d | 2c 20 49 6e 74 75 69 74 |ogin_gim|, Intuit|
|00039cb0| 69 6f 6e 42 61 73 65 2c | 20 47 66 78 42 61 73 65 |ionBase,| GfxBase|
|00039cc0| 29 3b 0a 09 66 72 65 65 | 5f 67 69 6d 28 64 69 73 |);..free|_gim(dis|
|00039cd0| 63 6f 6e 6e 65 63 74 5f | 67 69 6d 2c 20 49 6e 74 |connect_|gim, Int|
|00039ce0| 75 69 74 69 6f 6e 42 61 | 73 65 2c 20 47 66 78 42 |uitionBa|se, GfxB|
|00039cf0| 61 73 65 29 3b 0a 09 66 | 72 65 65 5f 67 69 6d 28 |ase);..f|ree_gim(|
|00039d00| 61 62 6f 72 74 5f 67 69 | 6d 2c 20 49 6e 74 75 69 |abort_gi|m, Intui|
|00039d10| 74 69 6f 6e 42 61 73 65 | 2c 20 47 66 78 42 61 73 |tionBase|, GfxBas|
|00039d20| 65 29 3b 0a 09 66 72 65 | 65 5f 67 69 6d 28 63 61 |e);..fre|e_gim(ca|
|00039d30| 6e 63 65 6c 5f 67 69 6d | 2c 20 49 6e 74 75 69 74 |ncel_gim|, Intuit|
|00039d40| 69 6f 6e 42 61 73 65 2c | 20 47 66 78 42 61 73 65 |ionBase,| GfxBase|
|00039d50| 29 3b 0a 7d 0a 0a 23 64 | 65 66 69 6e 65 20 42 55 |);.}..#d|efine BU|
|00039d60| 46 46 5f 53 49 5a 45 20 | 31 30 30 0a 0a 62 6f 6f |FF_SIZE |100..boo|
|00039d70| 6c 65 61 6e 20 67 65 74 | 5f 61 6e 6f 6e 5f 6c 6f |lean get|_anon_lo|
|00039d80| 67 69 6e 28 76 6f 69 64 | 29 0a 7b 0a 09 62 38 20 |gin(void|).{..b8 |
|00039d90| 75 73 65 72 5b 42 55 46 | 46 5f 53 49 5a 45 5d 2c |user[BUF|F_SIZE],|
|00039da0| 20 68 6f 73 74 5b 42 55 | 46 46 5f 53 49 5a 45 5d | host[BU|FF_SIZE]|
|00039db0| 3b 0a 09 73 62 33 32 20 | 69 2c 20 6a 3b 0a 09 73 |;..sb32 |i, j;..s|
|00039dc0| 74 72 75 63 74 20 45 61 | 73 79 53 74 72 75 63 74 |truct Ea|syStruct|
|00039dd0| 20 65 73 3b 0a 09 0a 09 | 65 73 2e 65 73 5f 53 74 | es;....|es.es_St|
|00039de0| 72 75 63 74 53 69 7a 65 | 20 3d 20 73 69 7a 65 6f |ructSize| = sizeo|
|00039df0| 66 28 73 74 72 75 63 74 | 20 45 61 73 79 53 74 72 |f(struct| EasyStr|
|00039e00| 75 63 74 29 3b 0a 09 65 | 73 2e 65 73 5f 46 6c 61 |uct);..e|s.es_Fla|
|00039e10| 67 73 20 3d 20 30 3b 0a | 09 65 73 2e 65 73 5f 54 |gs = 0;.|.es.es_T|
|00039e20| 69 74 6c 65 20 3d 20 73 | 74 72 69 6e 67 73 5b 4d |itle = s|trings[M|
|00039e30| 53 47 5f 46 54 50 4d 5f | 53 54 41 52 54 55 50 5f |SG_FTPM_|STARTUP_|
|00039e40| 45 52 52 4f 52 5d 3b 0a | 09 65 73 2e 65 73 5f 47 |ERROR];.|.es.es_G|
|00039e50| 61 64 67 65 74 46 6f 72 | 6d 61 74 20 3d 20 73 74 |adgetFor|mat = st|
|00039e60| 72 69 6e 67 73 5b 4d 53 | 47 5f 43 4f 4e 54 49 4e |rings[MS|G_CONTIN|
|00039e70| 55 45 5f 45 58 49 54 5d | 3b 0a 09 0a 09 69 20 3d |UE_EXIT]|;....i =|
|00039e80| 20 47 65 74 56 61 72 28 | 73 74 72 69 6e 67 73 5b | GetVar(|strings[|
|00039e90| 4d 53 47 5f 55 53 45 52 | 5d 2c 20 75 73 65 72 2c |MSG_USER|], user,|
|00039ea0| 20 42 55 46 46 5f 53 49 | 5a 45 2c 20 30 29 3b 0a | BUFF_SI|ZE, 0);.|
|00039eb0| 09 6a 20 3d 20 47 65 74 | 56 61 72 28 73 74 72 69 |.j = Get|Var(stri|
|00039ec0| 6e 67 73 5b 4d 53 47 5f | 48 4f 53 54 5d 2c 20 68 |ngs[MSG_|HOST], h|
|00039ed0| 6f 73 74 2c 20 42 55 46 | 46 5f 53 49 5a 45 2c 20 |ost, BUF|F_SIZE, |
|00039ee0| 30 29 3b 0a 09 0a 09 2f | 2a 20 66 6f 75 72 20 63 |0);..../|* four c|
|00039ef0| 61 73 65 73 20 68 65 72 | 65 20 2a 2f 0a 09 69 66 |ases her|e */..if|
|00039f00| 20 28 69 20 3e 3d 20 30 | 20 26 26 20 6a 20 3e 3d | (i >= 0| && j >=|
|00039f10| 20 30 29 20 7b 0a 09 09 | 61 6e 6f 6e 5f 6c 6f 67 | 0) {...|anon_log|
|00039f20| 69 6e 20 3d 20 28 62 38 | 20 2a 29 61 6c 6c 6f 63 |in = (b8| *)alloc|
|00039f30| 61 74 65 28 69 20 2b 20 | 6a 20 2b 20 32 2c 20 56 |ate(i + |j + 2, V|
|00039f40| 5f 63 73 74 72 29 3b 0a | 09 09 69 66 20 28 21 61 |_cstr);.|..if (!a|
|00039f50| 6e 6f 6e 5f 6c 6f 67 69 | 6e 29 20 72 65 74 75 72 |non_logi|n) retur|
|00039f60| 6e 20 66 61 6c 73 65 3b | 0a 09 09 0a 09 09 73 74 |n false;|......st|
|00039f70| 72 63 70 79 28 61 6e 6f | 6e 5f 6c 6f 67 69 6e 2c |rcpy(ano|n_login,|
|00039f80| 20 75 73 65 72 29 3b 0a | 09 09 61 6e 6f 6e 5f 6c | user);.|..anon_l|
|00039f90| 6f 67 69 6e 5b 69 5d 20 | 3d 20 27 40 27 3b 0a 09 |ogin[i] |= '@';..|
|00039fa0| 09 73 74 72 63 70 79 28 | 61 6e 6f 6e 5f 6c 6f 67 |.strcpy(|anon_log|
|00039fb0| 69 6e 20 2b 20 69 20 2b | 20 31 2c 20 68 6f 73 74 |in + i +| 1, host|
|00039fc0| 29 3b 0a 09 7d 20 65 6c | 73 65 20 69 66 20 28 69 |);..} el|se if (i|
|00039fd0| 20 3c 20 30 20 26 26 20 | 6a 20 3e 3d 20 30 29 20 | < 0 && |j >= 0) |
|00039fe0| 7b 0a 09 09 61 6e 6f 6e | 5f 6c 6f 67 69 6e 20 3d |{...anon|_login =|
|00039ff0| 20 28 62 38 20 2a 29 61 | 6c 6c 6f 63 61 74 65 28 | (b8 *)a|llocate(|
|0003a000| 6a 20 2b 20 39 2c 20 56 | 5f 63 73 74 72 29 3b 0a |j + 9, V|_cstr);.|
|0003a010| 09 09 69 66 20 28 21 61 | 6e 6f 6e 5f 6c 6f 67 69 |..if (!a|non_logi|
|0003a020| 6e 29 20 72 65 74 75 72 | 6e 20 66 61 6c 73 65 3b |n) retur|n false;|
|0003a030| 0a 0a 09 09 73 74 72 63 | 70 79 28 61 6e 6f 6e 5f |....strc|py(anon_|
|0003a040| 6c 6f 67 69 6e 2c 20 22 | 75 6e 6b 6e 6f 77 6e 40 |login, "|unknown@|
|0003a050| 22 29 3b 0a 09 09 73 74 | 72 63 61 74 28 61 6e 6f |");...st|rcat(ano|
|0003a060| 6e 5f 6c 6f 67 69 6e 2c | 20 68 6f 73 74 29 3b 0a |n_login,| host);.|
|0003a070| 0a 09 09 65 73 2e 65 73 | 5f 54 65 78 74 46 6f 72 |...es.es|_TextFor|
|0003a080| 6d 61 74 20 3d 20 73 74 | 72 69 6e 67 73 5b 4d 53 |mat = st|rings[MS|
|0003a090| 47 5f 55 53 45 52 5f 4e | 4f 54 5f 53 45 54 5d 3b |G_USER_N|OT_SET];|
|0003a0a0| 0a 09 09 69 66 20 28 21 | 45 61 73 79 52 65 71 75 |...if (!|EasyRequ|
|0003a0b0| 65 73 74 28 6e 69 6c 2c | 20 26 65 73 2c 20 30 2c |est(nil,| &es, 0,|
|0003a0c0| 20 61 6e 6f 6e 5f 6c 6f | 67 69 6e 29 29 20 7b 0a | anon_lo|gin)) {.|
|0003a0d0| 09 09 09 64 65 61 6c 6c | 6f 63 61 74 65 28 61 6e |...deall|ocate(an|
|0003a0e0| 6f 6e 5f 6c 6f 67 69 6e | 2c 20 56 5f 63 73 74 72 |on_login|, V_cstr|
|0003a0f0| 29 3b 0a 09 09 09 72 65 | 74 75 72 6e 20 66 61 6c |);....re|turn fal|
|0003a100| 73 65 3b 0a 09 09 7d 0a | 09 7d 20 65 6c 73 65 20 |se;...}.|.} else |
|0003a110| 69 66 20 28 69 20 3e 3d | 20 30 20 26 26 20 6a 20 |if (i >=| 0 && j |
|0003a120| 3c 20 30 29 20 7b 0a 09 | 09 61 6e 6f 6e 5f 6c 6f |< 0) {..|.anon_lo|
|0003a130| 67 69 6e 20 3d 20 28 62 | 38 20 2a 29 61 6c 6c 6f |gin = (b|8 *)allo|
|0003a140| 63 61 74 65 28 69 20 2b | 20 39 2c 20 56 5f 63 73 |cate(i +| 9, V_cs|
|0003a150| 74 72 29 3b 0a 09 09 69 | 66 20 28 21 61 6e 6f 6e |tr);...i|f (!anon|
|0003a160| 5f 6c 6f 67 69 6e 29 20 | 72 65 74 75 72 6e 20 66 |_login) |return f|
|0003a170| 61 6c 73 65 3b 0a 0a 09 | 09 73 74 72 63 70 79 28 |alse;...|.strcpy(|
|0003a180| 61 6e 6f 6e 5f 6c 6f 67 | 69 6e 2c 20 75 73 65 72 |anon_log|in, user|
|0003a190| 29 3b 0a 09 09 73 74 72 | 63 61 74 28 61 6e 6f 6e |);...str|cat(anon|
|0003a1a0| 5f 6c 6f 67 69 6e 2c 20 | 22 40 75 6e 6b 6e 6f 77 |_login, |"@unknow|
|0003a1b0| 6e 22 29 3b 0a 0a 09 09 | 65 73 2e 65 73 5f 54 65 |n");....|es.es_Te|
|0003a1c0| 78 74 46 6f 72 6d 61 74 | 20 3d 20 73 74 72 69 6e |xtFormat| = strin|
|0003a1d0| 67 73 5b 4d 53 47 5f 48 | 4f 53 54 5f 4e 4f 54 5f |gs[MSG_H|OST_NOT_|
|0003a1e0| 53 45 54 5d 3b 0a 09 09 | 69 66 20 28 21 45 61 73 |SET];...|if (!Eas|
|0003a1f0| 79 52 65 71 75 65 73 74 | 28 6e 69 6c 2c 20 26 65 |yRequest|(nil, &e|
|0003a200| 73 2c 20 30 2c 20 61 6e | 6f 6e 5f 6c 6f 67 69 6e |s, 0, an|on_login|
|0003a210| 29 29 20 7b 0a 09 09 09 | 64 65 61 6c 6c 6f 63 61 |)) {....|dealloca|
|0003a220| 74 65 28 61 6e 6f 6e 5f | 6c 6f 67 69 6e 2c 20 56 |te(anon_|login, V|
|0003a230| 5f 63 73 74 72 29 3b 0a | 09 09 09 72 65 74 75 72 |_cstr);.|...retur|
|0003a240| 6e 20 66 61 6c 73 65 3b | 0a 09 09 7d 0a 09 7d 20 |n false;|...}..} |
|0003a250| 65 6c 73 65 20 7b 0a 09 | 09 61 6e 6f 6e 5f 6c 6f |else {..|.anon_lo|
|0003a260| 67 69 6e 20 3d 20 28 62 | 38 20 2a 29 61 6c 6c 6f |gin = (b|8 *)allo|
|0003a270| 63 61 74 65 28 31 36 2c | 20 56 5f 63 73 74 72 29 |cate(16,| V_cstr)|
|0003a280| 3b 0a 09 09 69 66 20 28 | 21 61 6e 6f 6e 5f 6c 6f |;...if (|!anon_lo|
|0003a290| 67 69 6e 29 20 72 65 74 | 75 72 6e 20 66 61 6c 73 |gin) ret|urn fals|
|0003a2a0| 65 3b 0a 0a 09 09 73 74 | 72 63 70 79 28 61 6e 6f |e;....st|rcpy(ano|
|0003a2b0| 6e 5f 6c 6f 67 69 6e 2c | 20 22 75 6e 6b 6e 6f 77 |n_login,| "unknow|
|0003a2c0| 6e 40 75 6e 6b 6e 6f 77 | 6e 22 29 3b 0a 09 09 09 |n@unknow|n");....|
|0003a2d0| 0a 09 09 65 73 2e 65 73 | 5f 54 65 78 74 46 6f 72 |...es.es|_TextFor|
|0003a2e0| 6d 61 74 20 3d 20 73 74 | 72 69 6e 67 73 5b 4d 53 |mat = st|rings[MS|
|0003a2f0| 47 5f 55 53 45 52 5f 48 | 4f 53 54 5f 4e 4f 54 5f |G_USER_H|OST_NOT_|
|0003a300| 53 45 54 5d 3b 0a 09 09 | 69 66 20 28 21 45 61 73 |SET];...|if (!Eas|
|0003a310| 79 52 65 71 75 65 73 74 | 28 6e 69 6c 2c 20 26 65 |yRequest|(nil, &e|
|0003a320| 73 2c 20 30 2c 20 61 6e | 6f 6e 5f 6c 6f 67 69 6e |s, 0, an|on_login|
|0003a330| 29 29 20 7b 0a 09 09 09 | 64 65 61 6c 6c 6f 63 61 |)) {....|dealloca|
|0003a340| 74 65 28 61 6e 6f 6e 5f | 6c 6f 67 69 6e 2c 20 56 |te(anon_|login, V|
|0003a350| 5f 63 73 74 72 29 3b 0a | 09 09 09 72 65 74 75 72 |_cstr);.|...retur|
|0003a360| 6e 20 66 61 6c 73 65 3b | 0a 09 09 7d 0a 09 7d 0a |n false;|...}..}.|
|0003a370| 09 0a 09 72 65 74 75 72 | 6e 20 74 72 75 65 3b 0a |...retur|n true;.|
|0003a380| 7d 0a 0a 62 6f 6f 6c 65 | 61 6e 20 63 72 65 61 74 |}..boole|an creat|
|0003a390| 65 5f 76 6f 6c 75 6d 65 | 28 76 6f 69 64 29 0a 7b |e_volume|(void).{|
|0003a3a0| 0a 09 62 33 32 20 76 6c | 65 6e 3b 0a 0a 09 66 74 |..b32 vl|en;...ft|
|0003a3b0| 70 5f 76 6f 6c 75 6d 65 | 20 3d 20 28 73 74 72 75 |p_volume| = (stru|
|0003a3c0| 63 74 20 44 6f 73 4c 69 | 73 74 20 2a 29 61 6c 6c |ct DosLi|st *)all|
|0003a3d0| 6f 63 61 74 65 5f 66 6c | 61 67 73 28 73 69 7a 65 |ocate_fl|ags(size|
|0003a3e0| 6f 66 28 73 74 72 75 63 | 74 20 44 6f 73 4c 69 73 |of(struc|t DosLis|
|0003a3f0| 74 29 2c 20 4d 45 4d 46 | 5f 50 55 42 4c 49 43 2c |t), MEMF|_PUBLIC,|
|0003a400| 20 56 5f 44 6f 73 4c 69 | 73 74 29 3b 0a 09 69 66 | V_DosLi|st);..if|
|0003a410| 20 28 66 74 70 5f 76 6f | 6c 75 6d 65 29 20 7b 0a | (ftp_vo|lume) {.|
|0003a420| 09 09 66 74 70 5f 76 6f | 6c 75 6d 65 2d 3e 64 6f |..ftp_vo|lume->do|
|0003a430| 6c 5f 54 79 70 65 20 3d | 20 44 4c 54 5f 56 4f 4c |l_Type =| DLT_VOL|
|0003a440| 55 4d 45 3b 0a 09 09 66 | 74 70 5f 76 6f 6c 75 6d |UME;...f|tp_volum|
|0003a450| 65 2d 3e 64 6f 6c 5f 54 | 61 73 6b 20 3d 20 66 74 |e->dol_T|ask = ft|
|0003a460| 70 5f 70 6f 72 74 3b 0a | 09 09 66 74 70 5f 76 6f |p_port;.|..ftp_vo|
|0003a470| 6c 75 6d 65 2d 3e 64 6f | 6c 5f 4c 6f 63 6b 20 3d |lume->do|l_Lock =|
|0003a480| 20 30 3b 0a 09 09 44 61 | 74 65 53 74 61 6d 70 28 | 0;...Da|teStamp(|
|0003a490| 26 66 74 70 5f 76 6f 6c | 75 6d 65 2d 3e 64 6f 6c |&ftp_vol|ume->dol|
|0003a4a0| 5f 6d 69 73 63 2e 64 6f | 6c 5f 76 6f 6c 75 6d 65 |_misc.do|l_volume|
|0003a4b0| 2e 64 6f 6c 5f 56 6f 6c | 75 6d 65 44 61 74 65 29 |.dol_Vol|umeDate)|
|0003a4c0| 3b 0a 09 09 66 74 70 5f | 76 6f 6c 75 6d 65 2d 3e |;...ftp_|volume->|
|0003a4d0| 64 6f 6c 5f 6d 69 73 63 | 2e 64 6f 6c 5f 76 6f 6c |dol_misc|.dol_vol|
|0003a4e0| 75 6d 65 2e 64 6f 6c 5f | 4c 6f 63 6b 4c 69 73 74 |ume.dol_|LockList|
|0003a4f0| 20 3d 20 30 3b 0a 09 09 | 66 74 70 5f 76 6f 6c 75 | = 0;...|ftp_volu|
|0003a500| 6d 65 2d 3e 64 6f 6c 5f | 6d 69 73 63 2e 64 6f 6c |me->dol_|misc.dol|
|0003a510| 5f 76 6f 6c 75 6d 65 2e | 64 6f 6c 5f 44 69 73 6b |_volume.|dol_Disk|
|0003a520| 54 79 70 65 20 3d 20 49 | 44 5f 44 4f 53 5f 44 49 |Type = I|D_DOS_DI|
|0003a530| 53 4b 3b 0a 09 0a 09 09 | 76 6c 65 6e 20 3d 20 73 |SK;.....|vlen = s|
|0003a540| 74 72 6c 65 6e 28 73 74 | 72 69 6e 67 73 5b 4d 53 |trlen(st|rings[MS|
|0003a550| 47 5f 56 4f 4c 55 4d 45 | 5d 29 3b 0a 09 09 76 6f |G_VOLUME|]);...vo|
|0003a560| 6c 75 6d 65 5f 6e 61 6d | 65 20 3d 20 28 62 38 20 |lume_nam|e = (b8 |
|0003a570| 2a 29 61 6c 6c 6f 63 61 | 74 65 5f 66 6c 61 67 73 |*)alloca|te_flags|
|0003a580| 28 76 6c 65 6e 20 2b 20 | 32 2c 20 4d 45 4d 46 5f |(vlen + |2, MEMF_|
|0003a590| 50 55 42 4c 49 43 2c 20 | 56 5f 62 73 74 72 29 3b |PUBLIC, |V_bstr);|
|0003a5a0| 0a 09 09 69 66 20 28 76 | 6f 6c 75 6d 65 5f 6e 61 |...if (v|olume_na|
|0003a5b0| 6d 65 29 20 7b 0a 09 09 | 09 76 6f 6c 75 6d 65 5f |me) {...|.volume_|
|0003a5c0| 6e 61 6d 65 5b 30 5d 20 | 3d 20 76 6c 65 6e 3b 0a |name[0] |= vlen;.|
|0003a5d0| 09 09 09 73 74 72 63 70 | 79 28 26 76 6f 6c 75 6d |...strcp|y(&volum|
|0003a5e0| 65 5f 6e 61 6d 65 5b 31 | 5d 2c 20 73 74 72 69 6e |e_name[1|], strin|
|0003a5f0| 67 73 5b 4d 53 47 5f 56 | 4f 4c 55 4d 45 5d 29 3b |gs[MSG_V|OLUME]);|
|0003a600| 0a 0a 09 09 09 66 74 70 | 5f 76 6f 6c 75 6d 65 2d |.....ftp|_volume-|
|0003a610| 3e 64 6f 6c 5f 4e 61 6d | 65 20 3d 20 28 62 33 32 |>dol_Nam|e = (b32|
|0003a620| 29 76 6f 6c 75 6d 65 5f | 6e 61 6d 65 20 3e 3e 20 |)volume_|name >> |
|0003a630| 32 3b 0a 09 09 09 69 66 | 20 28 41 64 64 44 6f 73 |2;....if| (AddDos|
|0003a640| 45 6e 74 72 79 28 66 74 | 70 5f 76 6f 6c 75 6d 65 |Entry(ft|p_volume|
|0003a650| 29 29 20 7b 0a 09 09 09 | 09 72 65 74 75 72 6e 20 |)) {....|.return |
|0003a660| 74 72 75 65 3b 0a 09 09 | 09 7d 0a 09 09 09 0a 09 |true;...|.}......|
|0003a670| 09 09 64 65 61 6c 6c 6f | 63 61 74 65 28 76 6f 6c |..deallo|cate(vol|
|0003a680| 75 6d 65 5f 6e 61 6d 65 | 2c 20 56 5f 62 73 74 72 |ume_name|, V_bstr|
|0003a690| 29 3b 0a 09 09 7d 0a 09 | 09 64 65 61 6c 6c 6f 63 |);...}..|.dealloc|
|0003a6a0| 61 74 65 28 66 74 70 5f | 76 6f 6c 75 6d 65 2c 20 |ate(ftp_|volume, |
|0003a6b0| 56 5f 44 6f 73 4c 69 73 | 74 29 3b 0a 09 7d 0a 09 |V_DosLis|t);..}..|
|0003a6c0| 0a 09 72 65 74 75 72 6e | 20 66 61 6c 73 65 3b 0a |..return| false;.|
|0003a6d0| 7d 0a 0a 76 6f 69 64 20 | 64 65 73 74 72 6f 79 5f |}..void |destroy_|
|0003a6e0| 76 6f 6c 75 6d 65 28 76 | 6f 69 64 29 0a 7b 0a 09 |volume(v|oid).{..|
|0003a6f0| 73 74 72 75 63 74 20 44 | 6f 73 4c 69 73 74 20 2a |struct D|osList *|
|0003a700| 64 6c 6c 6f 63 6b 3b 0a | 09 0a 09 64 6c 6c 6f 63 |dllock;.|...dlloc|
|0003a710| 6b 20 3d 20 4c 6f 63 6b | 44 6f 73 4c 69 73 74 28 |k = Lock|DosList(|
|0003a720| 4c 44 46 5f 56 4f 4c 55 | 4d 45 53 20 7c 20 4c 44 |LDF_VOLU|MES | LD|
|0003a730| 46 5f 44 45 4c 45 54 45 | 20 7c 20 4c 44 46 5f 57 |F_DELETE| | LDF_W|
|0003a740| 52 49 54 45 29 3b 0a 09 | 0a 09 69 66 20 28 52 65 |RITE);..|..if (Re|
|0003a750| 6d 44 6f 73 45 6e 74 72 | 79 28 66 74 70 5f 76 6f |mDosEntr|y(ftp_vo|
|0003a760| 6c 75 6d 65 29 29 20 7b | 0a 09 09 64 65 61 6c 6c |lume)) {|...deall|
|0003a770| 6f 63 61 74 65 28 76 6f | 6c 75 6d 65 5f 6e 61 6d |ocate(vo|lume_nam|
|0003a780| 65 2c 20 56 5f 62 73 74 | 72 29 3b 0a 09 09 64 65 |e, V_bst|r);...de|
|0003a790| 61 6c 6c 6f 63 61 74 65 | 28 66 74 70 5f 76 6f 6c |allocate|(ftp_vol|
|0003a7a0| 75 6d 65 2c 20 56 5f 44 | 6f 73 4c 69 73 74 29 3b |ume, V_D|osList);|
|0003a7b0| 0a 09 7d 0a 09 0a 09 55 | 6e 4c 6f 63 6b 44 6f 73 |..}....U|nLockDos|
|0003a7c0| 4c 69 73 74 28 4c 44 46 | 5f 56 4f 4c 55 4d 45 53 |List(LDF|_VOLUMES|
|0003a7d0| 20 7c 20 4c 44 46 5f 44 | 45 4c 45 54 45 20 7c 20 | | LDF_D|ELETE | |
|0003a7e0| 4c 44 46 5f 57 52 49 54 | 45 29 3b 0a 09 0a 09 72 |LDF_WRIT|E);....r|
|0003a7f0| 65 74 75 72 6e 3b 0a 7d | 0a 0a 62 6f 6f 6c 65 61 |eturn;.}|..boolea|
|0003a800| 6e 20 6c 61 75 6e 63 68 | 5f 73 74 61 74 75 73 28 |n launch|_status(|
|0003a810| 76 6f 69 64 29 0a 7b 0a | 09 73 74 72 75 63 74 20 |void).{.|.struct |
|0003a820| 50 72 6f 63 65 73 73 20 | 2a 63 68 69 6c 64 3b 0a |Process |*child;.|
|0003a830| 09 0a 09 73 74 61 74 75 | 73 5f 6d 65 73 73 20 3d |...statu|s_mess =|
|0003a840| 20 28 73 74 61 74 75 73 | 5f 6d 65 73 73 61 67 65 | (status|_message|
|0003a850| 20 2a 29 61 6c 6c 6f 63 | 61 74 65 28 73 69 7a 65 | *)alloc|ate(size|
|0003a860| 6f 66 28 2a 73 74 61 74 | 75 73 5f 6d 65 73 73 29 |of(*stat|us_mess)|
|0003a870| 2c 20 56 5f 73 74 61 74 | 75 73 5f 6d 65 73 73 61 |, V_stat|us_messa|
|0003a880| 67 65 29 3b 0a 09 69 66 | 20 28 21 73 74 61 74 75 |ge);..if| (!statu|
|0003a890| 73 5f 6d 65 73 73 29 20 | 72 65 74 75 72 6e 20 66 |s_mess) |return f|
|0003a8a0| 61 6c 73 65 3b 0a 09 0a | 09 73 74 61 74 75 73 5f |alse;...|.status_|
|0003a8b0| 6d 65 73 73 2d 3e 68 65 | 61 64 65 72 2e 6d 6e 5f |mess->he|ader.mn_|
|0003a8c0| 4c 65 6e 67 74 68 20 3d | 20 73 69 7a 65 6f 66 28 |Length =| sizeof(|
|0003a8d0| 2a 73 74 61 74 75 73 5f | 6d 65 73 73 29 3b 0a 09 |*status_|mess);..|
|0003a8e0| 73 74 61 74 75 73 5f 6d | 65 73 73 2d 3e 68 65 61 |status_m|ess->hea|
|0003a8f0| 64 65 72 2e 6d 6e 5f 4e | 6f 64 65 2e 6c 6e 5f 4e |der.mn_N|ode.ln_N|
|0003a900| 61 6d 65 20 3d 20 22 73 | 74 61 74 75 73 20 73 74 |ame = "s|tatus st|
|0003a910| 61 72 74 75 70 20 6d 65 | 73 73 61 67 65 22 3b 0a |artup me|ssage";.|
|0003a920| 09 73 74 61 74 75 73 5f | 6d 65 73 73 2d 3e 68 65 |.status_|mess->he|
|0003a930| 61 64 65 72 2e 6d 6e 5f | 4e 6f 64 65 2e 6c 6e 5f |ader.mn_|Node.ln_|
|0003a940| 54 79 70 65 20 3d 20 4e | 54 5f 4d 45 53 53 41 47 |Type = N|T_MESSAG|
|0003a950| 45 3b 0a 09 73 74 61 74 | 75 73 5f 6d 65 73 73 2d |E;..stat|us_mess-|
|0003a960| 3e 68 65 61 64 65 72 2e | 6d 6e 5f 4e 6f 64 65 2e |>header.|mn_Node.|
|0003a970| 6c 6e 5f 50 72 69 20 3d | 20 30 3b 0a 09 0a 09 65 |ln_Pri =| 0;....e|
|0003a980| 6e 73 75 72 65 28 73 74 | 61 74 75 73 5f 6d 65 73 |nsure(st|atus_mes|
|0003a990| 73 2c 20 56 5f 73 74 61 | 74 75 73 5f 6d 65 73 73 |s, V_sta|tus_mess|
|0003a9a0| 61 67 65 29 3b 0a 09 0a | 09 73 74 61 74 75 73 5f |age);...|.status_|
|0003a9b0| 63 6f 6e 74 72 6f 6c 20 | 3d 20 43 72 65 61 74 65 |control |= Create|
|0003a9c0| 50 6f 72 74 28 30 2c 20 | 30 29 3b 0a 09 69 66 20 |Port(0, |0);..if |
|0003a9d0| 28 73 74 61 74 75 73 5f | 63 6f 6e 74 72 6f 6c 29 |(status_|control)|
|0003a9e0| 20 7b 0a 09 09 63 68 69 | 6c 64 20 3d 20 43 72 65 | {...chi|ld = Cre|
|0003a9f0| 61 74 65 4e 65 77 50 72 | 6f 63 54 61 67 73 28 0a |ateNewPr|ocTags(.|
|0003aa00| 09 09 09 4e 50 5f 45 6e | 74 72 79 2c 09 73 74 61 |...NP_En|try,.sta|
|0003aa10| 74 75 73 5f 68 61 6e 64 | 6c 65 72 2c 0a 09 09 09 |tus_hand|ler,....|
|0003aa20| 4e 50 5f 4e 61 6d 65 2c | 09 73 74 72 69 6e 67 73 |NP_Name,|.strings|
|0003aa30| 5b 4d 53 47 5f 53 54 41 | 54 55 53 5f 48 41 4e 44 |[MSG_STA|TUS_HAND|
|0003aa40| 4c 45 52 5d 2c 0a 09 09 | 09 4e 50 5f 53 74 61 63 |LER],...|.NP_Stac|
|0003aa50| 6b 53 69 7a 65 2c 09 36 | 30 30 30 2c 0a 09 09 09 |kSize,.6|000,....|
|0003aa60| 54 41 47 5f 45 4e 44 2c | 09 30 0a 09 09 29 3b 0a |TAG_END,|.0...);.|
|0003aa70| 09 0a 09 09 69 66 20 28 | 63 68 69 6c 64 29 20 7b |....if (|child) {|
|0003aa80| 0a 09 09 09 73 74 61 74 | 75 73 5f 70 6f 72 74 20 |....stat|us_port |
|0003aa90| 3d 20 26 63 68 69 6c 64 | 2d 3e 70 72 5f 4d 73 67 |= &child|->pr_Msg|
|0003aaa0| 50 6f 72 74 3b 0a 09 09 | 0a 09 09 09 73 74 61 74 |Port;...|....stat|
|0003aab0| 75 73 5f 6d 65 73 73 2d | 3e 68 65 61 64 65 72 2e |us_mess-|>header.|
|0003aac0| 6d 6e 5f 52 65 70 6c 79 | 50 6f 72 74 20 3d 20 73 |mn_Reply|Port = s|
|0003aad0| 74 61 72 74 75 70 5f 73 | 79 6e 63 3b 0a 09 09 09 |tartup_s|ync;....|
|0003aae0| 50 75 74 4d 73 67 28 73 | 74 61 74 75 73 5f 70 6f |PutMsg(s|tatus_po|
|0003aaf0| 72 74 2c 20 26 73 74 61 | 74 75 73 5f 6d 65 73 73 |rt, &sta|tus_mess|
|0003ab00| 2d 3e 68 65 61 64 65 72 | 29 3b 0a 09 09 0a 09 09 |->header|);......|
|0003ab10| 09 57 61 69 74 50 6f 72 | 74 28 73 74 61 72 74 75 |.WaitPor|t(startu|
|0003ab20| 70 5f 73 79 6e 63 29 3b | 20 47 65 74 4d 73 67 28 |p_sync);| GetMsg(|
|0003ab30| 73 74 61 72 74 75 70 5f | 73 79 6e 63 29 3b 0a 09 |startup_|sync);..|
|0003ab40| 09 0a 09 09 09 69 66 20 | 28 73 74 61 74 75 73 5f |.....if |(status_|
|0003ab50| 6d 65 73 73 2d 3e 63 6f | 6d 6d 61 6e 64 20 21 3d |mess->co|mmand !=|
|0003ab60| 20 53 4d 5f 4b 49 4c 4c | 29 20 7b 0a 09 09 09 09 | SM_KILL|) {.....|
|0003ab70| 72 65 74 75 72 6e 20 74 | 72 75 65 3b 0a 09 09 09 |return t|rue;....|
|0003ab80| 7d 0a 09 09 7d 0a 09 09 | 0a 09 09 44 65 6c 65 74 |}...}...|...Delet|
|0003ab90| 65 50 6f 72 74 28 73 74 | 61 74 75 73 5f 63 6f 6e |ePort(st|atus_con|
|0003aba0| 74 72 6f 6c 29 3b 0a 09 | 7d 0a 09 0a 09 64 65 61 |trol);..|}....dea|
|0003abb0| 6c 6c 6f 63 61 74 65 28 | 73 74 61 74 75 73 5f 6d |llocate(|status_m|
|0003abc0| 65 73 73 2c 20 56 5f 73 | 74 61 74 75 73 5f 6d 65 |ess, V_s|tatus_me|
|0003abd0| 73 73 61 67 65 29 3b 0a | 09 0a 09 73 74 61 72 74 |ssage);.|...start|
|0003abe0| 75 70 5f 65 72 72 6f 72 | 28 73 74 72 69 6e 67 73 |up_error|(strings|
|0003abf0| 5b 4d 53 47 5f 43 41 4e | 54 5f 4c 41 55 4e 43 48 |[MSG_CAN|T_LAUNCH|
|0003ac00| 5f 53 54 41 54 55 53 5d | 29 3b 0a 09 0a 09 72 65 |_STATUS]|);....re|
|0003ac10| 74 75 72 6e 20 66 61 6c | 73 65 3b 0a 7d 0a 0a 76 |turn fal|se;.}..v|
|0003ac20| 6f 69 64 20 73 68 75 74 | 64 6f 77 6e 5f 73 74 61 |oid shut|down_sta|
|0003ac30| 74 75 73 28 76 6f 69 64 | 29 0a 7b 0a 09 73 74 61 |tus(void|).{..sta|
|0003ac40| 74 75 73 5f 6d 65 73 73 | 61 67 65 20 2a 73 6d 3b |tus_mess|age *sm;|
|0003ac50| 0a 09 0a 09 73 74 61 74 | 75 73 5f 6d 65 73 73 2d |....stat|us_mess-|
|0003ac60| 3e 63 6f 6d 6d 61 6e 64 | 20 3d 20 53 4d 5f 4b 49 |>command| = SM_KI|
|0003ac70| 4c 4c 3b 0a 09 73 74 61 | 74 75 73 5f 6d 65 73 73 |LL;..sta|tus_mess|
|0003ac80| 2d 3e 68 65 61 64 65 72 | 2e 6d 6e 5f 52 65 70 6c |->header|.mn_Repl|
|0003ac90| 79 50 6f 72 74 20 3d 20 | 73 74 61 72 74 75 70 5f |yPort = |startup_|
|0003aca0| 73 79 6e 63 3b 0a 09 0a | 09 50 75 74 4d 73 67 28 |sync;...|.PutMsg(|
|0003acb0| 73 74 61 74 75 73 5f 70 | 6f 72 74 2c 20 26 73 74 |status_p|ort, &st|
|0003acc0| 61 74 75 73 5f 6d 65 73 | 73 2d 3e 68 65 61 64 65 |atus_mes|s->heade|
|0003acd0| 72 29 3b 0a 09 0a 09 77 | 68 69 6c 65 20 28 31 29 |r);....w|hile (1)|
|0003ace0| 20 7b 0a 09 09 57 61 69 | 74 20 28 28 31 20 3c 3c | {...Wai|t ((1 <<|
|0003acf0| 20 73 74 61 74 75 73 5f | 63 6f 6e 74 72 6f 6c 2d | status_|control-|
|0003ad00| 3e 6d 70 5f 53 69 67 42 | 69 74 29 20 7c 20 28 31 |>mp_SigB|it) | (1|
|0003ad10| 20 3c 3c 20 73 74 61 72 | 74 75 70 5f 73 79 6e 63 | << star|tup_sync|
|0003ad20| 2d 3e 6d 70 5f 53 69 67 | 42 69 74 29 29 3b 0a 09 |->mp_Sig|Bit));..|
|0003ad30| 09 0a 09 09 77 68 69 6c | 65 20 28 73 6d 20 3d 20 |....whil|e (sm = |
|0003ad40| 28 73 74 61 74 75 73 5f | 6d 65 73 73 61 67 65 20 |(status_|message |
|0003ad50| 2a 29 47 65 74 4d 73 67 | 28 73 74 61 74 75 73 5f |*)GetMsg|(status_|
|0003ad60| 63 6f 6e 74 72 6f 6c 29 | 29 20 7b 0a 09 09 09 76 |control)|) {....v|
|0003ad70| 65 72 69 66 79 28 73 6d | 2c 20 56 5f 73 74 61 74 |erify(sm|, V_stat|
|0003ad80| 75 73 5f 6d 65 73 73 61 | 67 65 29 3b 0a 09 09 09 |us_messa|ge);....|
|0003ad90| 0a 09 09 09 52 65 70 6c | 79 4d 73 67 28 26 73 6d |....Repl|yMsg(&sm|
|0003ada0| 2d 3e 68 65 61 64 65 72 | 29 3b 0a 09 09 7d 0a 09 |->header|);...}..|
|0003adb0| 09 0a 09 09 69 66 20 28 | 73 6d 20 3d 20 28 73 74 |....if (|sm = (st|
|0003adc0| 61 74 75 73 5f 6d 65 73 | 73 61 67 65 20 2a 29 47 |atus_mes|sage *)G|
|0003add0| 65 74 4d 73 67 28 73 74 | 61 72 74 75 70 5f 73 79 |etMsg(st|artup_sy|
|0003ade0| 6e 63 29 29 20 7b 0a 09 | 09 09 64 65 61 6c 6c 6f |nc)) {..|..deallo|
|0003adf0| 63 61 74 65 28 73 74 61 | 74 75 73 5f 6d 65 73 73 |cate(sta|tus_mess|
|0003ae00| 2c 20 56 5f 73 74 61 74 | 75 73 5f 6d 65 73 73 61 |, V_stat|us_messa|
|0003ae10| 67 65 29 3b 0a 09 09 09 | 44 65 6c 65 74 65 50 6f |ge);....|DeletePo|
|0003ae20| 72 74 28 73 74 61 74 75 | 73 5f 63 6f 6e 74 72 6f |rt(statu|s_contro|
|0003ae30| 6c 29 3b 0a 09 09 09 72 | 65 74 75 72 6e 3b 0a 09 |l);....r|eturn;..|
|0003ae40| 09 7d 0a 09 7d 0a 7d 0a | 0a 76 6f 69 64 20 73 65 |.}..}.}.|.void se|
|0003ae50| 74 75 70 5f 73 74 72 69 | 6e 67 73 28 76 6f 69 64 |tup_stri|ngs(void|
|0003ae60| 29 0a 7b 0a 09 69 6e 74 | 20 69 3b 0a 0a 09 6d 79 |).{..int| i;...my|
|0003ae70| 5f 6c 6f 63 61 6c 65 20 | 3d 20 6e 69 6c 3b 0a 09 |_locale |= nil;..|
|0003ae80| 63 61 74 20 3d 20 6e 69 | 6c 3b 0a 0a 09 69 66 20 |cat = ni|l;...if |
|0003ae90| 28 4c 6f 63 61 6c 65 42 | 61 73 65 29 20 7b 0a 09 |(LocaleB|ase) {..|
|0003aea0| 09 6d 79 5f 6c 6f 63 61 | 6c 65 20 3d 20 4f 70 65 |.my_loca|le = Ope|
|0003aeb0| 6e 4c 6f 63 61 6c 65 28 | 30 29 3b 0a 09 09 69 66 |nLocale(|0);...if|
|0003aec0| 20 28 6d 79 5f 6c 6f 63 | 61 6c 65 29 20 7b 0a 09 | (my_loc|ale) {..|
|0003aed0| 09 09 63 61 74 20 3d 20 | 4f 70 65 6e 43 61 74 61 |..cat = |OpenCata|
|0003aee0| 6c 6f 67 28 6d 79 5f 6c | 6f 63 61 6c 65 2c 20 22 |log(my_l|ocale, "|
|0003aef0| 46 54 50 4d 6f 75 6e 74 | 2e 63 61 74 61 6c 6f 67 |FTPMount|.catalog|
|0003af00| 22 2c 0a 09 09 09 09 4f | 43 5f 42 75 69 6c 74 49 |",.....O|C_BuiltI|
|0003af10| 6e 4c 61 6e 67 75 61 67 | 65 2c 20 22 65 6e 67 6c |nLanguag|e, "engl|
|0003af20| 69 73 68 22 2c 0a 09 09 | 09 09 54 41 47 5f 45 4e |ish",...|..TAG_EN|
|0003af30| 44 0a 09 09 09 29 3b 0a | 09 09 7d 0a 09 7d 0a 09 |D....);.|..}..}..|
|0003af40| 0a 09 69 66 20 28 63 61 | 74 29 20 7b 0a 09 09 66 |..if (ca|t) {...f|
|0003af50| 6f 72 20 28 69 20 3d 20 | 30 3b 20 69 20 3c 20 4e |or (i = |0; i < N|
|0003af60| 55 4d 5f 4d 53 47 53 3b | 20 69 2b 2b 29 20 7b 0a |UM_MSGS;| i++) {.|
|0003af70| 09 09 09 73 74 72 69 6e | 67 73 5b 69 5d 20 3d 20 |...strin|gs[i] = |
|0003af80| 47 65 74 43 61 74 61 6c | 6f 67 53 74 72 28 63 61 |GetCatal|ogStr(ca|
|0003af90| 74 2c 20 69 2c 20 73 74 | 72 69 6e 67 73 5b 69 5d |t, i, st|rings[i]|
|0003afa0| 29 3b 0a 09 09 7d 0a 09 | 7d 0a 7d 0a 0a 76 6f 69 |);...}..|}.}..voi|
|0003afb0| 64 20 63 6c 65 61 6e 75 | 70 5f 73 74 72 69 6e 67 |d cleanu|p_string|
|0003afc0| 73 28 76 6f 69 64 29 0a | 7b 0a 09 69 66 20 28 63 |s(void).|{..if (c|
|0003afd0| 61 74 29 20 43 6c 6f 73 | 65 43 61 74 61 6c 6f 67 |at) Clos|eCatalog|
|0003afe0| 28 63 61 74 29 3b 0a 09 | 69 66 20 28 6d 79 5f 6c |(cat);..|if (my_l|
|0003aff0| 6f 63 61 6c 65 29 20 43 | 6c 6f 73 65 4c 6f 63 61 |ocale) C|loseLoca|
|0003b000| 6c 65 28 6d 79 5f 6c 6f | 63 61 6c 65 29 3b 0a 7d |le(my_lo|cale);.}|
|0003b010| 0a 00 00 00 2e 1a 94 34 | 00 00 00 00 00 00 00 00 |.......4|........|
|0003b020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b040| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b050| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 03 78 |........|.......x|
|0003b060| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b070| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b080| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b090| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b0a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b0b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b0c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b0d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b0e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b0f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b100| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b110| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b120| 00 00 00 00 00 00 00 00 | 00 00 03 72 00 00 05 f5 |........|...r....|
|0003b130| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 03 71 |........|.......q|
|0003b140| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b150| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b160| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b170| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b180| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b190| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b1a0| 00 00 00 00 00 00 1a f9 | 00 00 04 15 00 00 08 b7 |........|........|
|0003b1b0| 0a 4d 41 53 68 61 72 65 | 5f 36 34 00 00 00 00 00 |.MAShare|_64.....|
|0003b1c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b1d0| 00 00 00 00 00 00 00 00 | 00 00 1a f9 00 00 04 15 |........|........|
|0003b1e0| 00 00 09 1d 00 00 1a f9 | 00 00 03 fa 00 00 01 25 |........|.......%|
|0003b1f0| 00 00 00 00 00 00 00 00 | 00 00 03 71 00 00 00 01 |........|...q....|
|0003b200| 00 00 00 02 00 00 01 d9 | 00 00 00 0c 00 00 00 00 |........|........|
|0003b210| 00 00 01 da 5e b5 cd fe | 00 00 00 00 00 00 00 00 |....^...|........|
|0003b220| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b230| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b240| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b250| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b260| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b270| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b280| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b290| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b2a0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b2b0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b2c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b2d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b2e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b2f0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b300| 00 00 00 00 00 00 00 00 | 00 00 01 e5 00 00 01 e4 |........|........|
|0003b310| 00 00 01 e3 00 00 01 e2 | 00 00 01 e1 00 00 01 e0 |........|........|
|0003b320| 00 00 01 df 00 00 01 de | 00 00 01 dd 00 00 01 dc |........|........|
|0003b330| 00 00 01 db 00 00 01 da | 00 00 00 00 00 00 00 00 |........|........|
|0003b340| 00 00 00 00 00 00 17 77 | 00 00 00 00 00 00 00 00 |.......w|........|
|0003b350| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b360| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b370| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b380| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b390| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b3a0| 00 00 00 00 00 00 19 98 | 00 00 03 ad 00 00 07 08 |........|........|
|0003b3b0| 09 73 74 72 69 6e 67 73 | 2e 68 00 00 00 00 00 00 |.strings|.h......|
|0003b3c0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b3d0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b3e0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003b3f0| 00 00 00 00 00 00 00 21 | 00 00 00 00 ff ff ff fd |.......!|........|
|0003b400| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|0003b410| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|0003b420| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|0003b430| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|0003b440| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|0003b450| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|0003b460| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|0003b470| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|0003b480| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|0003b490| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|0003b4a0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|0003b4b0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|0003b4c0| 23 64 65 66 69 6e 65 20 | 4d 53 47 5f 48 4f 54 4b |#define |MSG_HOTK|
|0003b4d0| 45 59 20 28 30 29 0a 23 | 64 65 66 69 6e 65 20 4d |EY (0).#|define M|
|0003b4e0| 53 47 5f 48 4f 53 54 53 | 20 28 31 29 0a 23 64 65 |SG_HOSTS| (1).#de|
|0003b4f0| 66 69 6e 65 20 4d 53 47 | 5f 43 41 4e 54 5f 46 49 |fine MSG|_CANT_FI|
|0003b500| 4e 44 5f 48 4f 53 54 53 | 20 28 32 29 0a 23 64 65 |ND_HOSTS| (2).#de|
|0003b510| 66 69 6e 65 20 4d 53 47 | 5f 46 54 50 4d 5f 53 54 |fine MSG|_FTPM_ST|
|0003b520| 41 52 54 55 50 5f 45 52 | 52 4f 52 20 28 33 29 0a |ARTUP_ER|ROR (3).|
|0003b530| 23 64 65 66 69 6e 65 20 | 4d 53 47 5f 4f 4b 20 28 |#define |MSG_OK (|
|0003b540| 34 29 0a 23 64 65 66 69 | 6e 65 20 4d 53 47 5f 54 |4).#defi|ne MSG_T|
|0003b550| 43 50 5f 48 41 4e 44 4c | 45 52 20 28 35 29 0a 23 |CP_HANDL|ER (5).#|
|0003b560| 64 65 66 69 6e 65 20 4d | 53 47 5f 53 45 52 56 49 |define M|SG_SERVI|
|0003b570| 43 45 20 28 36 29 0a 23 | 64 65 66 69 6e 65 20 4d |CE (6).#|define M|
|0003b580| 53 47 5f 43 41 4e 54 5f | 4c 41 55 4e 43 48 5f 54 |SG_CANT_|LAUNCH_T|
|0003b590| 43 50 20 28 37 29 0a 23 | 64 65 66 69 6e 65 20 4d |CP (7).#|define M|
|0003b5a0| 53 47 5f 4c 4f 43 41 4c | 5f 48 41 4e 44 4c 45 52 |SG_LOCAL|_HANDLER|
|0003b5b0| 20 28 38 29 0a 23 64 65 | 66 69 6e 65 20 4d 53 47 | (8).#de|fine MSG|
|0003b5c0| 5f 43 41 4e 54 5f 4c 41 | 55 4e 43 48 5f 4c 4f 43 |_CANT_LA|UNCH_LOC|
|0003b5d0| 41 4c 20 28 39 29 0a 23 | 64 65 66 69 6e 65 20 4d |AL (9).#|define M|
|0003b5e0| 53 47 5f 43 4f 4e 54 49 | 4e 55 45 5f 45 58 49 54 |SG_CONTI|NUE_EXIT|
|0003b5f0| 20 28 31 30 29 0a 23 64 | 65 66 69 6e 65 20 4d 53 | (10).#d|efine MS|
|0003b600| 47 5f 55 53 45 52 20 28 | 31 31 29 0a 23 64 65 66 |G_USER (|11).#def|
|0003b610| 69 6e 65 20 4d 53 47 5f | 48 4f 53 54 20 28 31 32 |ine MSG_|HOST (12|
|0003b620| 29 0a 23 64 65 66 69 6e | 65 20 4d 53 47 5f 55 53 |).#defin|e MSG_US|
|0003b630| 45 52 5f 4e 4f 54 5f 53 | 45 54 20 28 31 33 29 0a |ER_NOT_S|ET (13).|
|0003b640| 23 64 65 66 69 6e 65 20 | 4d 53 47 5f 48 4f 53 54 |#define |MSG_HOST|
|0003b650| 5f 4e 4f 54 5f 53 45 54 | 20 28 31 34 29 0a 23 64 |_NOT_SET| (14).#d|
|0003b660| 65 66 69 6e 65 20 4d 53 | 47 5f 55 53 45 52 5f 48 |efine MS|G_USER_H|
|0003b670| 4f 53 54 5f 4e 4f 54 5f | 53 45 54 20 28 31 35 29 |OST_NOT_|SET (15)|
|0003b680| 0a 23 64 65 66 69 6e 65 | 20 4d 53 47 5f 56 4f 4c |.#define| MSG_VOL|
|0003b690| 55 4d 45 20 28 31 36 29 | 0a 23 64 65 66 69 6e 65 |UME (16)|.#define|
|0003b6a0| 20 4d 53 47 5f 53 54 41 | 54 55 53 5f 48 41 4e 44 | MSG_STA|TUS_HAND|
|0003b6b0| 4c 45 52 20 28 31 37 29 | 0a 23 64 65 66 69 6e 65 |LER (17)|.#define|
|0003b6c0| 20 4d 53 47 5f 43 41 4e | 54 5f 4c 41 55 4e 43 48 | MSG_CAN|T_LAUNCH|
|0003b6d0| 5f 53 54 41 54 55 53 20 | 28 31 38 29 0a 23 64 65 |_STATUS |(18).#de|
|0003b6e0| 66 69 6e 65 20 4d 53 47 | 5f 55 4e 4b 4e 4f 57 4e |fine MSG|_UNKNOWN|
|0003b6f0| 20 28 31 39 29 0a 23 64 | 65 66 69 6e 65 20 4d 53 | (19).#d|efine MS|
|0003b700| 47 5f 52 45 54 52 59 5f | 4d 4f 52 45 5f 43 41 4e |G_RETRY_|MORE_CAN|
|0003b710| 43 45 4c 20 28 32 30 29 | 0a 23 64 65 66 69 6e 65 |CEL (20)|.#define|
|0003b720| 20 4d 53 47 5f 52 45 54 | 52 59 5f 43 41 4e 43 45 | MSG_RET|RY_CANCE|
|0003b730| 4c 20 28 32 31 29 0a 23 | 64 65 66 69 6e 65 20 4d |L (21).#|define M|
|0003b740| 53 47 5f 4d 4f 52 45 5f | 4f 4b 20 28 32 32 29 0a |SG_MORE_|OK (22).|
|0003b750| 23 64 65 66 69 6e 65 20 | 4d 53 47 5f 4f 50 45 52 |#define |MSG_OPER|
|0003b760| 41 54 49 4f 4e 41 4c 5f | 45 52 52 4f 52 20 28 32 |ATIONAL_|ERROR (2|
|0003b770| 33 29 0a 23 64 65 66 69 | 6e 65 20 4d 53 47 5f 4f |3).#defi|ne MSG_O|
|0003b780| 4f 4d 5f 52 4f 4f 54 20 | 28 32 34 29 0a 23 64 65 |OM_ROOT |(24).#de|
|0003b790| 66 69 6e 65 20 4d 53 47 | 5f 50 57 44 5f 47 41 52 |fine MSG|_PWD_GAR|
|0003b7a0| 42 41 47 45 20 28 32 35 | 29 0a 23 64 65 66 69 6e |BAGE (25|).#defin|
|0003b7b0| 65 20 4d 53 47 5f 46 41 | 49 4c 45 44 5f 50 57 44 |e MSG_FA|ILED_PWD|
|0003b7c0| 20 28 32 36 29 0a 23 64 | 65 66 69 6e 65 20 4d 53 | (26).#d|efine MS|
|0003b7d0| 47 5f 45 52 52 4f 52 5f | 52 45 41 44 49 4e 47 5f |G_ERROR_|READING_|
|0003b7e0| 50 57 44 20 28 32 37 29 | 0a 23 64 65 66 69 6e 65 |PWD (27)|.#define|
|0003b7f0| 20 4d 53 47 5f 45 52 52 | 4f 52 5f 52 45 51 55 45 | MSG_ERR|OR_REQUE|
|0003b800| 53 54 49 4e 47 5f 50 57 | 44 20 28 32 38 29 0a 23 |STING_PW|D (28).#|
|0003b810| 64 65 66 69 6e 65 20 4d | 53 47 5f 45 52 52 4f 52 |define M|SG_ERROR|
|0003b820| 5f 52 45 41 44 49 4e 47 | 5f 54 59 50 45 20 28 32 |_READING|_TYPE (2|
|0003b830| 39 29 0a 23 64 65 66 69 | 6e 65 20 4d 53 47 5f 45 |9).#defi|ne MSG_E|
|0003b840| 52 52 4f 52 5f 53 45 54 | 54 49 4e 47 5f 54 59 50 |RROR_SET|TING_TYP|
|0003b850| 45 20 28 33 30 29 0a 23 | 64 65 66 69 6e 65 20 4d |E (30).#|define M|
|0003b860| 53 47 5f 4c 4f 47 49 4e | 5f 53 55 43 43 45 45 44 |SG_LOGIN|_SUCCEED|
|0003b870| 45 44 5f 4e 4f 5f 50 41 | 53 53 20 28 33 31 29 0a |ED_NO_PA|SS (31).|
|0003b880| 23 64 65 66 69 6e 65 20 | 4d 53 47 5f 4c 4f 47 49 |#define |MSG_LOGI|
|0003b890| 4e 5f 53 55 43 43 45 45 | 44 45 44 20 28 33 32 29 |N_SUCCEE|DED (32)|
|0003b8a0| 0a 23 64 65 66 69 6e 65 | 20 4d 53 47 5f 4c 4f 47 |.#define| MSG_LOG|
|0003b8b0| 49 4e 5f 46 41 49 4c 45 | 44 20 28 33 33 29 0a 23 |IN_FAILE|D (33).#|
|0003b8c0| 64 65 66 69 6e 65 20 4d | 53 47 5f 41 43 43 54 5f |define M|SG_ACCT_|
|0003b8d0| 52 45 51 55 45 53 54 45 | 44 20 28 33 34 29 0a 23 |REQUESTE|D (34).#|
|0003b8e0| 64 65 66 69 6e 65 20 4d | 53 47 5f 4c 4f 47 49 4e |define M|SG_LOGIN|
|0003b8f0| 5f 49 4e 43 4f 52 52 45 | 43 54 20 28 33 35 29 0a |_INCORRE|CT (35).|
|0003b900| 23 64 65 66 69 6e 65 20 | 4d 53 47 5f 4c 4f 47 49 |#define |MSG_LOGI|
|0003b910| 4e 5f 46 41 49 4c 45 44 | 5f 50 41 53 53 20 28 33 |N_FAILED|_PASS (3|
|0003b920| 36 29 0a 23 64 65 66 69 | 6e 65 20 4d 53 47 5f 4c |6).#defi|ne MSG_L|
|0003b930| 4f 47 49 4e 5f 45 52 52 | 4f 52 20 28 33 37 29 0a |OGIN_ERR|OR (37).|
|0003b940| 23 64 65 66 69 6e 65 20 | 4d 53 47 5f 4c 4f 53 54 |#define |MSG_LOST|
|0003b950| 5f 43 4f 4e 4e 5f 44 55 | 52 49 4e 47 5f 4c 4f 47 |_CONN_DU|RING_LOG|
|0003b960| 49 4e 5f 50 41 53 53 20 | 28 33 38 29 0a 23 64 65 |IN_PASS |(38).#de|
|0003b970| 66 69 6e 65 20 4d 53 47 | 5f 47 41 52 42 41 47 45 |fine MSG|_GARBAGE|
|0003b980| 5f 52 45 43 45 49 56 45 | 44 5f 50 41 53 53 20 28 |_RECEIVE|D_PASS (|
|0003b990| 33 39 29 0a 23 64 65 66 | 69 6e 65 20 4d 53 47 5f |39).#def|ine MSG_|
|0003b9a0| 54 45 4d 50 5f 4c 4f 47 | 49 4e 5f 46 41 49 4c 55 |TEMP_LOG|IN_FAILU|
|0003b9b0| 52 45 5f 55 53 45 52 20 | 28 34 30 29 0a 23 64 65 |RE_USER |(40).#de|
|0003b9c0| 66 69 6e 65 20 4d 53 47 | 5f 4c 4f 47 49 4e 5f 46 |fine MSG|_LOGIN_F|
|0003b9d0| 41 49 4c 45 44 5f 55 53 | 45 52 20 28 34 31 29 0a |AILED_US|ER (41).|
|0003b9e0| 23 64 65 66 69 6e 65 20 | 4d 53 47 5f 4c 4f 53 54 |#define |MSG_LOST|
|0003b9f0| 5f 43 4f 4e 4e 5f 44 55 | 52 49 4e 47 5f 4c 4f 47 |_CONN_DU|RING_LOG|
|0003ba00| 49 4e 20 28 34 32 29 0a | 23 64 65 66 69 6e 65 20 |IN (42).|#define |
|0003ba10| 4d 53 47 5f 47 41 52 42 | 41 47 45 5f 52 45 43 45 |MSG_GARB|AGE_RECE|
|0003ba20| 49 56 45 44 5f 55 53 45 | 52 20 28 34 33 29 0a 23 |IVED_USE|R (43).#|
|0003ba30| 64 65 66 69 6e 65 20 4d | 53 47 5f 45 52 52 4f 52 |define M|SG_ERROR|
|0003ba40| 5f 55 53 45 52 5f 52 45 | 53 50 4f 4e 53 45 20 28 |_USER_RE|SPONSE (|
|0003ba50| 34 34 29 0a 23 64 65 66 | 69 6e 65 20 4d 53 47 5f |44).#def|ine MSG_|
|0003ba60| 45 52 52 4f 52 5f 57 52 | 49 54 49 4e 47 5f 50 41 |ERROR_WR|ITING_PA|
|0003ba70| 53 53 20 28 34 35 29 0a | 23 64 65 66 69 6e 65 20 |SS (45).|#define |
|0003ba80| 4d 53 47 5f 45 52 52 4f | 52 5f 57 52 49 54 49 4e |MSG_ERRO|R_WRITIN|
|0003ba90| 47 5f 55 53 45 52 20 28 | 34 36 29 0a 23 64 65 66 |G_USER (|46).#def|
|0003baa0| 69 6e 65 20 4d 53 47 5f | 43 4f 4e 4e 45 43 54 5f |ine MSG_|CONNECT_|
|0003bab0| 45 52 52 4f 52 20 28 34 | 37 29 0a 23 64 65 66 69 |ERROR (4|7).#defi|
|0003bac0| 6e 65 20 4d 53 47 5f 41 | 4d 49 54 43 50 5f 4e 4f |ne MSG_A|MITCP_NO|
|0003bad0| 54 5f 52 55 4e 4e 49 4e | 47 20 28 34 38 29 0a 23 |T_RUNNIN|G (48).#|
|0003bae0| 64 65 66 69 6e 65 20 4d | 53 47 5f 48 4f 53 54 5f |define M|SG_HOST_|
|0003baf0| 55 4e 4b 4e 4f 57 4e 20 | 28 34 39 29 0a 23 64 65 |UNKNOWN |(49).#de|
|0003bb00| 66 69 6e 65 20 4d 53 47 | 5f 48 4f 53 54 5f 55 4e |fine MSG|_HOST_UN|
|0003bb10| 52 45 41 43 48 41 42 4c | 45 20 28 35 30 29 0a 23 |REACHABL|E (50).#|
|0003bb20| 64 65 66 69 6e 65 20 4d | 53 47 5f 46 54 50 5f 52 |define M|SG_FTP_R|
|0003bb30| 45 46 55 53 45 44 20 28 | 35 31 29 0a 23 64 65 66 |EFUSED (|51).#def|
|0003bb40| 69 6e 65 20 4d 53 47 5f | 43 41 4e 54 5f 43 4f 4e |ine MSG_|CANT_CON|
|0003bb50| 4e 45 43 54 20 28 35 32 | 29 0a 23 64 65 66 69 6e |NECT (52|).#defin|
|0003bb60| 65 20 4d 53 47 5f 4c 4f | 53 54 5f 43 4f 4e 4e 5f |e MSG_LO|ST_CONN_|
|0003bb70| 44 55 52 49 4e 47 5f 49 | 4e 54 52 4f 20 28 35 33 |DURING_I|NTRO (53|
|0003bb80| 29 0a 23 64 65 66 69 6e | 65 20 4d 53 47 5f 47 41 |).#defin|e MSG_GA|
|0003bb90| 52 42 41 47 45 5f 44 55 | 52 49 4e 47 5f 49 4e 54 |RBAGE_DU|RING_INT|
|0003bba0| 52 4f 20 28 35 34 29 0a | 23 64 65 66 69 6e 65 20 |RO (54).|#define |
|0003bbb0| 4d 53 47 5f 45 52 52 4f | 52 5f 44 55 52 49 4e 47 |MSG_ERRO|R_DURING|
|0003bbc0| 5f 49 4e 54 52 4f 20 28 | 35 35 29 0a 23 64 65 66 |_INTRO (|55).#def|
|0003bbd0| 69 6e 65 20 4d 53 47 5f | 43 4f 4e 4e 5f 44 45 4c |ine MSG_|CONN_DEL|
|0003bbe0| 41 59 20 28 35 36 29 0a | 23 64 65 66 69 6e 65 20 |AY (56).|#define |
|0003bbf0| 4d 53 47 5f 54 45 4d 50 | 5f 43 4f 4e 4e 5f 46 41 |MSG_TEMP|_CONN_FA|
|0003bc00| 49 4c 55 52 45 20 28 35 | 37 29 0a 23 64 65 66 69 |ILURE (5|7).#defi|
|0003bc10| 6e 65 20 4d 53 47 5f 43 | 4f 4e 4e 5f 46 41 49 4c |ne MSG_C|ONN_FAIL|
|0003bc20| 45 44 20 28 35 38 29 0a | 23 64 65 66 69 6e 65 20 |ED (58).|#define |
|0003bc30| 4d 53 47 5f 43 4f 4e 4e | 45 43 54 49 4e 47 5f 54 |MSG_CONN|ECTING_T|
|0003bc40| 4f 20 28 35 39 29 0a 23 | 64 65 66 69 6e 65 20 4d |O (59).#|define M|
|0003bc50| 53 47 5f 43 4f 4e 4e 45 | 43 54 49 4e 47 20 28 36 |SG_CONNE|CTING (6|
|0003bc60| 30 29 0a 23 64 65 66 69 | 6e 65 20 4d 53 47 5f 4c |0).#defi|ne MSG_L|
|0003bc70| 4f 47 49 4e 5f 54 4f 20 | 28 36 31 29 0a 23 64 65 |OGIN_TO |(61).#de|
|0003bc80| 66 69 6e 65 20 4d 53 47 | 5f 55 53 45 52 5f 4e 41 |fine MSG|_USER_NA|
|0003bc90| 4d 45 20 28 36 32 29 0a | 23 64 65 66 69 6e 65 20 |ME (62).|#define |
|0003bca0| 4d 53 47 5f 50 41 53 53 | 57 4f 52 44 5f 4e 41 4d |MSG_PASS|WORD_NAM|
|0003bcb0| 45 20 28 36 33 29 0a 23 | 64 65 66 69 6e 65 20 4d |E (63).#|define M|
|0003bcc0| 53 47 5f 43 55 52 52 45 | 4e 54 5f 53 49 54 45 53 |SG_CURRE|NT_SITES|
|0003bcd0| 20 28 36 34 29 0a 23 64 | 65 66 69 6e 65 20 4d 53 | (64).#d|efine MS|
|0003bce0| 47 5f 53 54 41 54 45 5f | 55 4e 4b 4e 4f 57 4e 20 |G_STATE_|UNKNOWN |
|0003bcf0| 28 36 35 29 0a 23 64 65 | 66 69 6e 65 20 4d 53 47 |(65).#de|fine MSG|
|0003bd00| 5f 53 54 41 54 45 5f 44 | 49 53 43 4f 4e 4e 45 43 |_STATE_D|ISCONNEC|
|0003bd10| 54 45 44 20 28 36 36 29 | 0a 23 64 65 66 69 6e 65 |TED (66)|.#define|
|0003bd20| 20 4d 53 47 5f 53 54 41 | 54 45 5f 43 4f 4e 4e 45 | MSG_STA|TE_CONNE|
|0003bd30| 43 54 49 4e 47 20 28 36 | 37 29 0a 23 64 65 66 69 |CTING (6|7).#defi|
|0003bd40| 6e 65 20 4d 53 47 5f 53 | 54 41 54 45 5f 49 44 4c |ne MSG_S|TATE_IDL|
|0003bd50| 45 20 28 36 38 29 0a 23 | 64 65 66 69 6e 65 20 4d |E (68).#|define M|
|0003bd60| 53 47 5f 53 54 41 54 45 | 5f 44 49 53 43 4f 4e 4e |SG_STATE|_DISCONN|
|0003bd70| 45 43 54 49 4e 47 20 28 | 36 39 29 0a 23 64 65 66 |ECTING (|69).#def|
|0003bd80| 69 6e 65 20 4d 53 47 5f | 53 54 41 54 45 5f 4c 49 |ine MSG_|STATE_LI|
|0003bd90| 53 54 49 4e 47 20 28 37 | 30 29 0a 23 64 65 66 69 |STING (7|0).#defi|
|0003bda0| 6e 65 20 4d 53 47 5f 53 | 54 41 54 45 5f 43 44 20 |ne MSG_S|TATE_CD |
|0003bdb0| 28 37 31 29 0a 23 64 65 | 66 69 6e 65 20 4d 53 47 |(71).#de|fine MSG|
|0003bdc0| 5f 53 54 41 54 45 5f 4f | 50 45 4e 49 4e 47 20 28 |_STATE_O|PENING (|
|0003bdd0| 37 32 29 0a 23 64 65 66 | 69 6e 65 20 4d 53 47 5f |72).#def|ine MSG_|
|0003bde0| 53 54 41 54 45 5f 43 4c | 4f 53 49 4e 47 20 28 37 |STATE_CL|OSING (7|
|0003bdf0| 33 29 0a 23 64 65 66 69 | 6e 65 20 4d 53 47 5f 53 |3).#defi|ne MSG_S|
|0003be00| 54 41 54 45 5f 52 45 41 | 44 49 4e 47 20 28 37 34 |TATE_REA|DING (74|
|0003be10| 29 0a 23 64 65 66 69 6e | 65 20 4d 53 47 5f 53 54 |).#defin|e MSG_ST|
|0003be20| 41 54 45 5f 57 52 49 54 | 49 4e 47 20 28 37 35 29 |ATE_WRIT|ING (75)|
|0003be30| 0a 23 64 65 66 69 6e 65 | 20 4d 53 47 5f 53 54 41 |.#define| MSG_STA|
|0003be40| 54 45 5f 4c 4f 47 49 4e | 20 28 37 36 29 0a 23 64 |TE_LOGIN| (76).#d|
|0003be50| 65 66 69 6e 65 20 4d 53 | 47 5f 53 54 41 54 45 5f |efine MS|G_STATE_|
|0003be60| 41 42 4f 52 54 49 4e 47 | 20 28 37 37 29 0a 23 64 |ABORTING| (77).#d|
|0003be70| 65 66 69 6e 65 20 4d 53 | 47 5f 53 54 41 54 45 5f |efine MS|G_STATE_|
|0003be80| 44 45 4c 45 54 49 4e 47 | 20 28 37 38 29 0a 23 64 |DELETING| (78).#d|
|0003be90| 65 66 69 6e 65 20 4d 53 | 47 5f 53 54 41 54 45 5f |efine MS|G_STATE_|
|0003bea0| 4d 41 4b 45 44 49 52 20 | 28 37 39 29 0a 23 64 65 |MAKEDIR |(79).#de|
|0003beb0| 66 69 6e 65 20 4d 53 47 | 5f 53 54 41 54 45 5f 52 |fine MSG|_STATE_R|
|0003bec0| 45 4e 41 4d 49 4e 47 20 | 28 38 30 29 0a 23 64 65 |ENAMING |(80).#de|
|0003bed0| 66 69 6e 65 20 4d 53 47 | 5f 53 54 41 54 45 5f 50 |fine MSG|_STATE_P|
|0003bee0| 41 44 31 20 28 38 31 29 | 0a 23 64 65 66 69 6e 65 |AD1 (81)|.#define|
|0003bef0| 20 4d 53 47 5f 53 54 41 | 54 45 5f 50 41 44 32 20 | MSG_STA|TE_PAD2 |
|0003bf00| 28 38 32 29 0a 23 64 65 | 66 69 6e 65 20 4d 53 47 |(82).#de|fine MSG|
|0003bf10| 5f 53 54 41 54 45 5f 50 | 41 44 33 20 28 38 33 29 |_STATE_P|AD3 (83)|
|0003bf20| 0a 23 64 65 66 69 6e 65 | 20 4d 53 47 5f 51 55 49 |.#define| MSG_QUI|
|0003bf30| 43 4b 5f 46 4c 41 47 20 | 28 38 34 29 0a 23 64 65 |CK_FLAG |(84).#de|
|0003bf40| 66 69 6e 65 20 4d 53 47 | 5f 42 52 4f 4b 45 52 5f |fine MSG|_BROKER_|
|0003bf50| 4e 41 4d 45 20 28 38 35 | 29 0a 23 64 65 66 69 6e |NAME (85|).#defin|
|0003bf60| 65 20 4d 53 47 5f 42 52 | 4f 4b 45 52 5f 44 45 53 |e MSG_BR|OKER_DES|
|0003bf70| 43 52 20 28 38 36 29 0a | 23 64 65 66 69 6e 65 20 |CR (86).|#define |
|0003bf80| 4d 53 47 5f 55 53 45 52 | 5f 54 54 20 28 38 37 29 |MSG_USER|_TT (87)|
|0003bf90| 0a 23 64 65 66 69 6e 65 | 20 4d 53 47 5f 50 41 53 |.#define| MSG_PAS|
|0003bfa0| 53 57 4f 52 44 5f 54 54 | 20 28 38 38 29 0a 23 64 |SWORD_TT| (88).#d|
|0003bfb0| 65 66 69 6e 65 20 4d 53 | 47 5f 53 54 41 54 55 53 |efine MS|G_STATUS|
|0003bfc0| 5f 54 54 20 28 38 39 29 | 0a 23 64 65 66 69 6e 65 |_TT (89)|.#define|
|0003bfd0| 20 4d 53 47 5f 51 55 49 | 43 4b 5f 54 54 20 28 39 | MSG_QUI|CK_TT (9|
|0003bfe0| 30 29 0a 23 64 65 66 69 | 6e 65 20 4d 53 47 5f 48 |0).#defi|ne MSG_H|
|0003bff0| 4f 53 54 5f 54 54 20 28 | 39 31 29 0a 23 64 65 66 |OST_TT (|91).#def|
|0003c000| 69 6e 65 20 4d 53 47 5f | 52 4f 4f 54 5f 54 54 20 |ine MSG_|ROOT_TT |
|0003c010| 28 39 32 29 0a 23 64 65 | 66 69 6e 65 20 4d 53 47 |(92).#de|fine MSG|
|0003c020| 5f 43 41 4e 43 45 4c 20 | 28 39 33 29 0a 23 64 65 |_CANCEL |(93).#de|
|0003c030| 66 69 6e 65 20 4d 53 47 | 5f 41 42 4f 52 54 20 28 |fine MSG|_ABORT (|
|0003c040| 39 34 29 0a 23 64 65 66 | 69 6e 65 20 4d 53 47 5f |94).#def|ine MSG_|
|0003c050| 44 49 53 43 4f 4e 4e 45 | 43 54 20 28 39 35 29 0a |DISCONNE|CT (95).|
|0003c060| 23 64 65 66 69 6e 65 20 | 4d 53 47 5f 4c 4f 47 49 |#define |MSG_LOGI|
|0003c070| 4e 20 28 39 36 29 0a 23 | 64 65 66 69 6e 65 20 4d |N (96).#|define M|
|0003c080| 53 47 5f 45 52 52 4f 52 | 5f 52 45 53 50 4f 4e 53 |SG_ERROR|_RESPONS|
|0003c090| 45 5f 50 41 53 53 20 28 | 39 37 29 0a 23 64 65 66 |E_PASS (|97).#def|
|0003c0a0| 69 6e 65 20 4d 53 47 5f | 4f 46 46 20 28 39 38 29 |ine MSG_|OFF (98)|
|0003c0b0| 0a 23 64 65 66 69 6e 65 | 20 4d 53 47 5f 46 41 4c |.#define| MSG_FAL|
|0003c0c0| 53 45 20 28 39 39 29 0a | 23 64 65 66 69 6e 65 20 |SE (99).|#define |
|0003c0d0| 4d 53 47 5f 43 41 53 45 | 5f 54 54 20 28 31 30 30 |MSG_CASE|_TT (100|
|0003c0e0| 29 0a 23 64 65 66 69 6e | 65 20 4d 53 47 5f 53 4c |).#defin|e MSG_SL|
|0003c0f0| 4f 57 5f 54 54 20 28 31 | 30 31 29 0a 23 64 65 66 |OW_TT (1|01).#def|
|0003c100| 69 6e 65 20 4d 53 47 5f | 4d 45 53 53 41 47 45 53 |ine MSG_|MESSAGES|
|0003c110| 5f 54 54 20 28 31 30 32 | 29 0a 23 64 65 66 69 6e |_TT (102|).#defin|
|0003c120| 65 20 4d 53 47 5f 41 4c | 4c 20 28 31 30 33 29 0a |e MSG_AL|L (103).|
|0003c130| 23 64 65 66 69 6e 65 20 | 4d 53 47 5f 4e 4f 4e 45 |#define |MSG_NONE|
|0003c140| 20 28 31 30 34 29 0a 23 | 64 65 66 69 6e 65 20 4d | (104).#|define M|
|0003c150| 53 47 5f 45 52 52 4f 52 | 20 28 31 30 35 29 0a 23 |SG_ERROR| (105).#|
|0003c160| 64 65 66 69 6e 65 20 4d | 53 47 5f 44 45 46 41 55 |define M|SG_DEFAU|
|0003c170| 4c 54 20 28 31 30 36 29 | 0a 23 64 65 66 69 6e 65 |LT (106)|.#define|
|0003c180| 20 4d 53 47 5f 50 4f 52 | 54 5f 54 54 20 28 31 30 | MSG_POR|T_TT (10|
|0003c190| 37 29 0a 0a 23 64 65 66 | 69 6e 65 20 4e 55 4d 5f |7)..#def|ine NUM_|
|0003c1a0| 4d 53 47 53 20 31 30 38 | 0a 0a 23 69 66 64 65 66 |MSGS 108|..#ifdef|
|0003c1b0| 20 44 45 43 4c 41 52 45 | 5f 47 4c 4f 42 41 4c 53 | DECLARE|_GLOBALS|
|0003c1c0| 5f 48 45 52 45 0a 62 38 | 20 2a 73 74 72 69 6e 67 |_HERE.b8| *string|
|0003c1d0| 73 5b 5d 20 3d 20 7b 0a | 09 22 63 74 72 6c 20 61 |s[] = {.|."ctrl a|
|0003c1e0| 6c 74 20 66 22 2c 0a 09 | 22 48 6f 73 74 73 22 2c |lt f",..|"Hosts",|
|0003c1f0| 0a 09 22 43 61 6e 27 74 | 20 66 69 6e 64 20 48 6f |.."Can't| find Ho|
|0003c200| 73 74 73 20 64 69 72 22 | 2c 0a 09 22 46 54 50 4d |sts dir"|,.."FTPM|
|0003c210| 6f 75 6e 74 20 73 74 61 | 72 74 75 70 20 65 72 72 |ount sta|rtup err|
|0003c220| 6f 72 22 2c 0a 09 22 4f | 6b 22 2c 0a 09 22 28 46 |or",.."O|k",.."(F|
|0003c230| 54 50 4d 6f 75 6e 74 29 | 20 54 43 50 20 48 61 6e |TPMount)| TCP Han|
|0003c240| 64 6c 65 72 22 2c 0a 09 | 22 66 74 70 22 2c 0a 09 |dler",..|"ftp",..|
|0003c250| 22 43 61 6e 27 74 20 6c | 61 75 6e 63 68 20 54 43 |"Can't l|aunch TC|
|0003c260| 50 20 68 61 6e 64 6c 65 | 72 22 2c 0a 09 22 28 46 |P handle|r",.."(F|
|0003c270| 54 50 4d 6f 75 6e 74 29 | 20 6c 6f 63 61 6c 20 68 |TPMount)| local h|
|0003c280| 61 6e 64 6c 65 72 22 2c | 0a 09 22 43 61 6e 27 74 |andler",|.."Can't|
|0003c290| 20 6c 61 75 6e 63 68 20 | 6c 6f 63 61 6c 20 68 61 | launch |local ha|
|0003c2a0| 6e 64 6c 65 72 22 2c 0a | 09 22 43 6f 6e 74 69 6e |ndler",.|."Contin|
|0003c2b0| 75 65 7c 45 78 69 74 22 | 2c 0a 09 22 55 53 45 52 |ue|Exit"|,.."USER|
|0003c2c0| 22 2c 0a 09 22 48 4f 53 | 54 22 2c 0a 09 22 55 53 |",.."HOS|T",.."US|
|0003c2d0| 45 52 20 65 6e 76 69 72 | 6f 6e 6d 65 6e 74 20 76 |ER envir|onment v|
|0003c2e0| 61 72 69 61 62 6c 65 20 | 6e 6f 74 20 73 65 74 5c |ariable |not set\|
|0003c2f0| 6e 41 6e 6f 6e 79 6d 6f | 75 73 20 6c 6f 67 69 6e |nAnonymo|us login|
|0003c300| 20 77 69 74 68 20 25 73 | 5c 6e 75 73 65 64 20 61 | with %s|\nused a|
|0003c310| 73 20 79 6f 75 72 20 61 | 64 64 72 65 73 73 22 2c |s your a|ddress",|
|0003c320| 0a 09 22 48 4f 53 54 20 | 65 6e 76 69 72 6f 6e 6d |.."HOST |environm|
|0003c330| 65 6e 74 20 76 61 72 69 | 61 62 6c 65 20 6e 6f 74 |ent vari|able not|
|0003c340| 20 73 65 74 5c 6e 41 6e | 6f 6e 79 6d 6f 75 73 20 | set\nAn|onymous |
|0003c350| 6c 6f 67 69 6e 20 77 69 | 74 68 20 25 73 5c 6e 75 |login wi|th %s\nu|
|0003c360| 73 65 64 20 61 73 20 79 | 6f 75 72 20 61 64 64 72 |sed as y|our addr|
|0003c370| 65 73 73 22 2c 0a 09 22 | 55 53 45 52 20 61 6e 64 |ess",.."|USER and|
|0003c380| 20 48 4f 53 54 20 65 6e | 76 69 72 6f 6e 6d 65 6e | HOST en|vironmen|
|0003c390| 74 20 76 61 72 69 61 62 | 6c 65 73 20 6e 6f 74 20 |t variab|les not |
|0003c3a0| 73 65 74 5c 6e 41 6e 6f | 6e 79 6d 6f 75 73 20 6c |set\nAno|nymous l|
|0003c3b0| 6f 67 69 6e 20 77 69 74 | 68 20 25 73 5c 6e 75 73 |ogin wit|h %s\nus|
|0003c3c0| 65 64 20 61 73 20 79 6f | 75 72 20 61 64 64 72 65 |ed as yo|ur addre|
|0003c3d0| 73 73 22 2c 0a 09 22 46 | 54 50 4d 6f 75 6e 74 22 |ss",.."F|TPMount"|
|0003c3e0| 2c 0a 09 22 28 46 54 50 | 4d 6f 75 6e 74 29 20 73 |,.."(FTP|Mount) s|
|0003c3f0| 74 61 74 75 73 20 68 61 | 6e 64 6c 65 72 22 2c 0a |tatus ha|ndler",.|
|0003c400| 09 22 43 61 6e 27 74 20 | 6c 61 75 6e 63 68 20 73 |."Can't |launch s|
|0003c410| 74 61 74 75 73 20 68 61 | 6e 64 6c 65 72 22 2c 0a |tatus ha|ndler",.|
|0003c420| 09 22 55 6e 6b 6e 6f 77 | 6e 20 63 6f 6e 64 69 74 |."Unknow|n condit|
|0003c430| 69 6f 6e 20 28 6c 6f 77 | 20 6f 6e 20 6d 65 6d 6f |ion (low| on memo|
|0003c440| 72 79 3f 29 22 2c 0a 09 | 22 52 65 74 72 79 7c 4d |ry?)",..|"Retry|M|
|0003c450| 6f 72 65 20 2e 2e 2e 7c | 43 61 6e 63 65 6c 22 2c |ore ...||Cancel",|
|0003c460| 0a 09 22 52 65 74 72 79 | 7c 43 61 6e 63 65 6c 22 |.."Retry||Cancel"|
|0003c470| 2c 0a 09 22 4d 6f 72 65 | 20 2e 2e 2e 7c 4f 6b 22 |,.."More| ...|Ok"|
|0003c480| 2c 0a 09 22 4f 70 65 72 | 61 74 69 6f 6e 61 6c 20 |,.."Oper|ational |
|0003c490| 65 72 72 6f 72 22 2c 0a | 09 22 4f 75 74 20 6f 66 |error",.|."Out of|
|0003c4a0| 20 6d 65 6d 6f 72 79 20 | 66 6f 72 20 72 6f 6f 74 | memory |for root|
|0003c4b0| 20 73 74 72 69 6e 67 22 | 2c 0a 09 22 50 57 44 20 | string"|,.."PWD |
|0003c4c0| 72 65 73 70 6f 6e 73 65 | 20 69 73 20 75 6e 69 6e |response| is unin|
|0003c4d0| 74 65 6c 6c 69 67 69 62 | 6c 65 22 2c 0a 09 22 46 |telligib|le",.."F|
|0003c4e0| 61 69 6c 65 64 20 74 6f | 20 67 65 74 20 50 57 44 |ailed to| get PWD|
|0003c4f0| 20 72 65 73 70 6f 6e 73 | 65 22 2c 0a 09 22 45 72 | respons|e",.."Er|
|0003c500| 72 6f 72 20 72 65 61 64 | 69 6e 67 20 50 57 44 20 |ror read|ing PWD |
|0003c510| 72 65 73 70 6f 6e 73 65 | 22 2c 0a 09 22 45 72 72 |response|",.."Err|
|0003c520| 6f 72 20 77 68 69 6c 65 | 20 72 65 71 75 65 73 74 |or while| request|
|0003c530| 69 6e 67 20 50 57 44 22 | 2c 0a 09 22 45 72 72 6f |ing PWD"|,.."Erro|
|0003c540| 72 20 77 68 69 6c 65 20 | 72 65 61 64 69 6e 67 20 |r while |reading |
|0003c550| 54 59 50 45 20 49 20 72 | 65 73 70 6f 6e 73 65 22 |TYPE I r|esponse"|
|0003c560| 2c 0a 09 22 45 72 72 6f | 72 20 77 68 69 6c 65 20 |,.."Erro|r while |
|0003c570| 73 65 74 74 69 6e 67 20 | 54 59 50 45 20 49 22 2c |setting |TYPE I",|
|0003c580| 0a 09 22 4c 6f 67 69 6e | 20 73 75 63 63 65 65 64 |.."Login| succeed|
|0003c590| 65 64 20 28 6e 6f 20 70 | 61 73 73 77 6f 72 64 20 |ed (no p|assword |
|0003c5a0| 72 65 71 75 69 72 65 64 | 29 22 2c 0a 09 22 4c 6f |required|)",.."Lo|
|0003c5b0| 67 69 6e 20 73 75 63 63 | 65 65 64 65 64 22 2c 0a |gin succ|eeded",.|
|0003c5c0| 09 22 4c 6f 67 69 6e 20 | 66 61 69 6c 65 64 22 2c |."Login |failed",|
|0003c5d0| 0a 09 22 41 43 43 54 20 | 72 65 71 75 65 73 74 65 |.."ACCT |requeste|
|0003c5e0| 64 22 2c 0a 09 22 4c 6f | 67 69 6e 20 69 6e 63 6f |d",.."Lo|gin inco|
|0003c5f0| 72 72 65 63 74 22 2c 0a | 09 22 4c 6f 67 69 6e 20 |rrect",.|."Login |
|0003c600| 66 61 69 6c 65 64 20 28 | 50 41 53 53 29 22 2c 0a |failed (|PASS)",.|
|0003c610| 09 22 4c 6f 67 69 6e 20 | 65 72 72 6f 72 22 2c 0a |."Login |error",.|
|0003c620| 09 22 4c 6f 73 74 20 63 | 6f 6e 6e 65 63 74 69 6f |."Lost c|onnectio|
|0003c630| 6e 20 64 75 72 69 6e 67 | 20 6c 6f 67 69 6e 20 28 |n during| login (|
|0003c640| 70 61 73 73 77 64 29 22 | 2c 0a 09 22 47 61 72 62 |passwd)"|,.."Garb|
|0003c650| 61 67 65 20 72 65 63 65 | 69 76 65 64 20 66 72 6f |age rece|ived fro|
|0003c660| 6d 20 72 65 6d 6f 74 65 | 20 73 69 74 65 20 28 70 |m remote| site (p|
|0003c670| 61 73 73 77 64 29 22 2c | 0a 09 22 54 65 6d 70 6f |asswd)",|.."Tempo|
|0003c680| 72 61 72 79 20 6c 6f 67 | 69 6e 20 66 61 69 6c 75 |rary log|in failu|
|0003c690| 72 65 20 28 55 53 45 52 | 29 22 2c 0a 09 22 4c 6f |re (USER|)",.."Lo|
|0003c6a0| 67 69 6e 20 66 61 69 6c | 65 64 20 28 55 53 45 52 |gin fail|ed (USER|
|0003c6b0| 29 22 2c 0a 09 22 4c 6f | 73 74 20 63 6f 6e 6e 65 |)",.."Lo|st conne|
|0003c6c0| 63 74 69 6f 6e 20 64 75 | 72 69 6e 67 20 6c 6f 67 |ction du|ring log|
|0003c6d0| 69 6e 22 2c 0a 09 22 47 | 61 72 62 61 67 65 20 72 |in",.."G|arbage r|
|0003c6e0| 65 63 65 69 76 65 64 20 | 66 72 6f 6d 20 72 65 6d |eceived |from rem|
|0003c6f0| 6f 74 65 20 73 69 74 65 | 22 2c 0a 09 22 45 72 72 |ote site|",.."Err|
|0003c700| 6f 72 20 72 65 61 64 69 | 6e 67 20 72 65 73 70 6f |or readi|ng respo|
|0003c710| 6e 73 65 20 74 6f 20 6c | 6f 67 69 6e 22 2c 0a 09 |nse to l|ogin",..|
|0003c720| 22 45 72 72 6f 72 20 77 | 72 69 74 69 6e 67 20 50 |"Error w|riting P|
|0003c730| 41 53 53 22 2c 0a 09 22 | 45 72 72 6f 72 20 77 72 |ASS",.."|Error wr|
|0003c740| 69 74 69 6e 67 20 55 53 | 45 52 22 2c 0a 09 22 43 |iting US|ER",.."C|
|0003c750| 6f 6e 6e 65 63 74 20 65 | 72 72 6f 72 22 2c 0a 09 |onnect e|rror",..|
|0003c760| 22 41 6d 69 54 43 50 20 | 69 73 20 6e 6f 74 20 72 |"AmiTCP |is not r|
|0003c770| 75 6e 6e 69 6e 67 22 2c | 0a 09 22 48 6f 73 74 20 |unning",|.."Host |
|0003c780| 25 73 20 69 73 20 75 6e | 6b 6e 6f 77 6e 22 2c 0a |%s is un|known",.|
|0003c790| 09 22 48 6f 73 74 20 25 | 73 20 69 73 20 75 6e 72 |."Host %|s is unr|
|0003c7a0| 65 61 63 68 61 62 6c 65 | 22 2c 0a 09 22 46 54 50 |eachable|",.."FTP|
|0003c7b0| 20 63 6f 6e 6e 65 63 74 | 69 6f 6e 20 74 6f 20 25 | connect|ion to %|
|0003c7c0| 73 20 68 61 73 20 62 65 | 65 6e 20 72 65 66 75 73 |s has be|en refus|
|0003c7d0| 65 64 22 2c 0a 09 22 43 | 61 6e 27 74 20 63 6f 6e |ed",.."C|an't con|
|0003c7e0| 6e 65 63 74 20 74 6f 20 | 25 73 20 28 25 6c 64 29 |nect to |%s (%ld)|
|0003c7f0| 22 2c 0a 09 22 4c 6f 73 | 74 20 63 6f 6e 6e 65 63 |",.."Los|t connec|
|0003c800| 74 69 6f 6e 20 64 75 72 | 69 6e 67 20 69 6e 74 72 |tion dur|ing intr|
|0003c810| 6f 22 2c 0a 09 22 47 61 | 72 62 61 67 65 20 72 65 |o",.."Ga|rbage re|
|0003c820| 63 65 69 76 65 64 20 66 | 72 6f 6d 20 25 73 22 2c |ceived f|rom %s",|
|0003c830| 0a 09 22 45 72 72 6f 72 | 20 72 65 61 64 69 6e 67 |.."Error| reading|
|0003c840| 20 69 6e 74 72 6f 64 75 | 63 74 69 6f 6e 22 2c 0a | introdu|ction",.|
|0003c850| 09 22 43 6f 6e 6e 65 63 | 74 69 6f 6e 20 64 65 6c |."Connec|tion del|
|0003c860| 61 79 20 2e 2e 2e 22 2c | 0a 09 22 54 65 6d 70 6f |ay ...",|.."Tempo|
|0003c870| 72 61 72 79 20 63 6f 6e | 6e 65 63 74 69 6f 6e 20 |rary con|nection |
|0003c880| 66 61 69 6c 75 72 65 20 | 2e 2e 2e 22 2c 0a 09 22 |failure |...",.."|
|0003c890| 43 6f 6e 6e 65 63 74 69 | 6f 6e 20 66 61 69 6c 65 |Connecti|on faile|
|0003c8a0| 64 20 2e 2e 2e 22 2c 0a | 09 22 43 6f 6e 6e 65 63 |d ...",.|."Connec|
|0003c8b0| 74 69 6e 67 20 74 6f 20 | 22 2c 0a 09 22 43 6f 6e |ting to |",.."Con|
|0003c8c0| 6e 65 63 74 69 6e 67 20 | 2e 2e 2e 22 2c 0a 09 22 |necting |...",.."|
|0003c8d0| 4c 6f 67 69 6e 20 74 6f | 20 25 73 22 2c 0a 09 22 |Login to| %s",.."|
|0003c8e0| 55 73 65 72 22 2c 0a 09 | 22 50 61 73 73 77 6f 72 |User",..|"Passwor|
|0003c8f0| 64 22 2c 0a 09 22 43 75 | 72 72 65 6e 74 20 73 69 |d",.."Cu|rrent si|
|0003c900| 74 65 73 22 2c 0a 09 22 | 55 6e 6b 6e 6f 77 6e 22 |tes",.."|Unknown"|
|0003c910| 2c 0a 09 22 44 69 73 63 | 6f 6e 6e 65 63 74 65 64 |,.."Disc|onnected|
|0003c920| 22 2c 0a 09 22 43 6f 6e | 6e 65 63 74 69 6e 67 22 |",.."Con|necting"|
|0003c930| 2c 0a 09 22 49 64 6c 65 | 22 2c 0a 09 22 44 69 73 |,.."Idle|",.."Dis|
|0003c940| 63 6f 6e 6e 65 63 74 69 | 6e 67 22 2c 0a 09 22 4c |connecti|ng",.."L|
|0003c950| 69 73 74 69 6e 67 22 2c | 0a 09 22 43 68 61 6e 67 |isting",|.."Chang|
|0003c960| 69 6e 67 20 44 69 72 65 | 63 74 6f 72 69 65 73 22 |ing Dire|ctories"|
|0003c970| 2c 0a 09 22 4f 70 65 6e | 69 6e 67 20 46 69 6c 65 |,.."Open|ing File|
|0003c980| 22 2c 0a 09 22 43 6c 6f | 73 69 6e 67 20 46 69 6c |",.."Clo|sing Fil|
|0003c990| 65 22 2c 0a 09 22 52 65 | 61 64 69 6e 67 22 2c 0a |e",.."Re|ading",.|
|0003c9a0| 09 22 57 72 69 74 69 6e | 67 22 2c 0a 09 22 4c 6f |."Writin|g",.."Lo|
|0003c9b0| 67 67 69 6e 67 20 69 6e | 22 2c 0a 09 22 41 62 6f |gging in|",.."Abo|
|0003c9c0| 72 74 69 6e 67 22 2c 0a | 09 22 44 65 6c 65 74 69 |rting",.|."Deleti|
|0003c9d0| 6e 67 22 2c 0a 09 22 4d | 61 6b 69 6e 67 20 44 69 |ng",.."M|aking Di|
|0003c9e0| 72 65 63 74 6f 72 79 22 | 2c 0a 09 22 52 65 6e 61 |rectory"|,.."Rena|
|0003c9f0| 6d 69 6e 67 22 2c 0a 09 | 22 50 61 64 20 31 22 2c |ming",..|"Pad 1",|
|0003ca00| 0a 09 22 50 61 64 20 32 | 22 2c 0a 09 22 50 61 64 |.."Pad 2|",.."Pad|
|0003ca10| 20 33 22 2c 0a 09 22 20 | 28 51 29 20 22 2c 0a 09 | 3",.." |(Q) ",..|
|0003ca20| 22 46 54 50 4d 6f 75 6e | 74 20 53 74 61 74 75 73 |"FTPMoun|t Status|
|0003ca30| 22 2c 0a 09 22 53 74 61 | 74 75 73 20 61 6e 64 20 |",.."Sta|tus and |
|0003ca40| 63 6f 6e 74 72 6f 6c 20 | 6f 66 20 46 54 50 4d 6f |control |of FTPMo|
|0003ca50| 75 6e 74 22 2c 0a 09 22 | 55 53 45 52 22 2c 0a 09 |unt",.."|USER",..|
|0003ca60| 22 50 41 53 53 57 4f 52 | 44 22 2c 0a 09 22 53 54 |"PASSWOR|D",.."ST|
|0003ca70| 41 54 55 53 22 2c 0a 09 | 22 51 55 49 43 4b 22 2c |ATUS",..|"QUICK",|
|0003ca80| 0a 09 22 48 4f 53 54 22 | 2c 0a 09 22 52 4f 4f 54 |.."HOST"|,.."ROOT|
|0003ca90| 22 2c 0a 09 22 43 61 6e | 63 65 6c 22 2c 0a 09 22 |",.."Can|cel",.."|
|0003caa0| 41 62 6f 72 74 22 2c 0a | 09 22 44 69 73 63 6f 6e |Abort",.|."Discon|
|0003cab0| 6e 65 63 74 22 2c 0a 09 | 22 4c 6f 67 69 6e 22 2c |nect",..|"Login",|
|0003cac0| 0a 09 22 45 72 72 6f 72 | 20 72 65 61 64 69 6e 67 |.."Error| reading|
|0003cad0| 20 72 65 73 70 6f 6e 73 | 65 20 74 6f 20 70 61 73 | respons|e to pas|
|0003cae0| 73 77 6f 72 64 22 2c 0a | 09 22 6f 66 66 22 2c 0a |sword",.|."off",.|
|0003caf0| 09 22 66 61 6c 73 65 22 | 2c 0a 09 22 43 41 53 45 |."false"|,.."CASE|
|0003cb00| 22 2c 0a 09 22 53 4c 4f | 57 22 2c 0a 09 22 4d 45 |",.."SLO|W",.."ME|
|0003cb10| 53 53 41 47 45 53 22 2c | 0a 09 22 41 4c 4c 22 2c |SSAGES",|.."ALL",|
|0003cb20| 0a 09 22 4e 4f 4e 45 22 | 2c 0a 09 22 45 52 52 4f |.."NONE"|,.."ERRO|
|0003cb30| 52 22 2c 0a 09 22 44 65 | 66 61 75 6c 74 22 2c 0a |R",.."De|fault",.|
|0003cb40| 09 22 50 4f 52 54 22 0a | 7d 3b 0a 23 65 6c 73 65 |."PORT".|};.#else|
|0003cb50| 0a 65 78 74 65 72 6e 20 | 62 38 20 2a 73 74 72 69 |.extern |b8 *stri|
|0003cb60| 6e 67 73 5b 4e 55 4d 5f | 4d 53 47 53 5d 3b 0a 23 |ngs[NUM_|MSGS];.#|
|0003cb70| 65 6e 64 69 66 0a 0a 00 | 00 00 00 00 00 00 00 00 |endif...|........|
|0003cb80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003cb90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003cba0| 00 00 00 00 00 00 1a f9 | 00 00 04 15 00 00 08 b7 |........|........|
|0003cbb0| 0a 4d 41 53 68 61 72 65 | 5f 36 34 00 00 00 00 00 |.MAShare|_64.....|
|0003cbc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003cbd0| 00 00 00 00 00 00 00 00 | 00 00 1a f9 00 00 04 15 |........|........|
|0003cbe0| 00 00 09 1d 00 00 1a f9 | 00 00 03 fa 00 00 01 25 |........|.......%|
|0003cbf0| 00 00 00 00 00 00 00 00 | 00 00 03 71 00 00 00 01 |........|...q....|
|0003cc00| 00 00 00 02 00 00 01 e6 | 00 00 00 48 00 00 00 00 |........|...H....|
|0003cc10| 00 00 01 e7 cc 27 52 36 | 00 00 02 2e 00 00 02 2d |.....'R6|.......-|
|0003cc20| 00 00 02 2c 00 00 02 2b | 00 00 02 2a 00 00 02 29 |...,...+|...*...)|
|0003cc30| 00 00 02 28 00 00 02 27 | 00 00 02 26 00 00 02 25 |...(...'|...&...%|
|0003cc40| 00 00 02 24 00 00 02 23 | 00 00 02 22 00 00 02 21 |...$...#|..."...!|
|0003cc50| 00 00 02 20 00 00 02 1f | 00 00 02 1e 00 00 02 1d |... ....|........|
|0003cc60| 00 00 02 1c 00 00 02 1b | 00 00 02 1a 00 00 02 19 |........|........|
|0003cc70| 00 00 02 18 00 00 02 17 | 00 00 02 16 00 00 02 15 |........|........|
|0003cc80| 00 00 02 14 00 00 02 13 | 00 00 02 12 00 00 02 11 |........|........|
|0003cc90| 00 00 02 10 00 00 02 0f | 00 00 02 0e 00 00 02 0d |........|........|
|0003cca0| 00 00 02 0c 00 00 02 0b | 00 00 02 0a 00 00 02 09 |........|........|
|0003ccb0| 00 00 02 08 00 00 02 07 | 00 00 02 06 00 00 02 05 |........|........|
|0003ccc0| 00 00 02 04 00 00 02 03 | 00 00 02 02 00 00 02 01 |........|........|
|0003ccd0| 00 00 02 00 00 00 01 ff | 00 00 01 fe 00 00 01 fd |........|........|
|0003cce0| 00 00 01 fc 00 00 01 fb | 00 00 01 fa 00 00 01 f9 |........|........|
|0003ccf0| 00 00 01 f8 00 00 01 f7 | 00 00 01 f6 00 00 01 f5 |........|........|
|0003cd00| 00 00 01 f4 00 00 01 f3 | 00 00 01 f2 00 00 01 f1 |........|........|
|0003cd10| 00 00 01 f0 00 00 01 ef | 00 00 01 ee 00 00 01 ed |........|........|
|0003cd20| 00 00 01 ec 00 00 01 eb | 00 00 01 ea 00 00 01 e9 |........|........|
|0003cd30| 00 00 01 e8 00 00 01 e7 | 00 00 00 00 00 00 00 00 |........|........|
|0003cd40| 00 00 00 00 00 00 92 1c | 00 00 00 00 00 00 00 00 |........|........|
|0003cd50| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003cd60| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003cd70| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003cd80| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003cd90| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003cda0| 00 00 00 00 00 00 19 39 | 00 00 03 55 00 00 02 58 |.......9|...U...X|
|0003cdb0| 05 74 63 70 2e 63 00 00 | 00 00 00 00 00 00 00 00 |.tcp.c..|........|
|0003cdc0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003cdd0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003cde0| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|0003cdf0| 00 00 00 00 00 00 00 21 | 00 00 02 2f ff ff ff fd |.......!|.../....|
|0003ce00| 2f 2a 0a 20 2a 20 54 68 | 69 73 20 73 6f 75 72 63 |/*. * Th|is sourc|
|0003ce10| 65 20 66 69 6c 65 20 69 | 73 20 43 6f 70 79 72 69 |e file i|s Copyri|
|0003ce20| 67 68 74 20 31 39 39 35 | 20 62 79 20 45 76 61 6e |ght 1995| by Evan|
|0003ce30| 20 53 63 6f 74 74 2e 0a | 20 2a 20 41 6c 6c 20 72 | Scott..| * All r|
|0003ce40| 69 67 68 74 73 20 72 65 | 73 65 72 76 65 64 2e 0a |ights re|served..|
|0003ce50| 20 2a 20 50 65 72 6d 69 | 73 73 69 6f 6e 20 69 73 | * Permi|ssion is|
|0003ce60| 20 67 72 61 6e 74 65 64 | 20 74 6f 20 64 69 73 74 | granted| to dist|
|0003ce70| 72 69 62 75 74 65 20 74 | 68 69 73 20 66 69 6c 65 |ribute t|his file|
|0003ce80| 20 70 72 6f 76 69 64 65 | 64 20 6e 6f 0a 20 2a 20 | provide|d no. * |
|0003ce90| 66 65 65 73 20 62 65 79 | 6f 6e 64 20 64 69 73 74 |fees bey|ond dist|
|0003cea0| 72 69 62 75 74 69 6f 6e | 20 63 6f 73 74 73 20 61 |ribution| costs a|
|0003ceb0| 72 65 20 6c 65 76 69 65 | 64 2e 0a 20 2a 2f 0a 0a |re levie|d.. */..|
|0003cec0| 2f 2a 0a 20 2a 20 61 20 | 6d 65 73 73 61 67 65 20 |/*. * a |message |
|0003ced0| 70 61 73 73 69 6e 67 20 | 41 50 49 20 66 6f 72 20 |passing |API for |
|0003cee0| 61 6d 69 74 63 70 0a 20 | 2a 2f 0a 0a 23 69 6e 63 |amitcp. |*/..#inc|
|0003cef0| 6c 75 64 65 20 3c 65 78 | 65 63 2f 74 79 70 65 73 |lude <ex|ec/types|
|0003cf00| 2e 68 3e 0a 23 69 6e 63 | 6c 75 64 65 20 3c 65 78 |.h>.#inc|lude <ex|
|0003cf10| 65 63 2f 70 6f 72 74 73 | 2e 68 3e 0a 0a 23 69 6e |ec/ports|.h>..#in|
|0003cf20| 63 6c 75 64 65 20 3c 64 | 6f 73 2f 64 6f 73 2e 68 |clude <d|os/dos.h|
|0003cf30| 3e 0a 23 69 6e 63 6c 75 | 64 65 20 3c 64 6f 73 2f |>.#inclu|de <dos/|
|0003cf40| 64 6f 73 74 61 67 73 2e | 68 3e 0a 0a 23 69 6e 63 |dostags.|h>..#inc|
|0003cf50| 6c 75 64 65 20 3c 70 72 | 6f 74 6f 2f 65 78 65 63 |lude <pr|oto/exec|
|0003cf60| 2e 68 3e 0a 23 69 6e 63 | 6c 75 64 65 20 3c 70 72 |.h>.#inc|lude <pr|
|0003cf70| 6f 74 6f 2f 64 6f 73 2e | 68 3e 0a 0a 23 64 65 66 |oto/dos.|h>..#def|
|0003cf80| 69 6e 65 20 49 4e 4c 49 | 4e 45 53 5f 41 53 5f 4d |ine INLI|NES_AS_M|
|0003cf90| 41 43 52 4f 53 20 31 09 | 2f 2a 20 53 41 53 20 64 |ACROS 1.|/* SAS d|
|0003cfa0| 6f 65 73 6e 27 74 20 73 | 65 65 6d 20 74 6f 20 64 |oesn't s|eem to d|
|0003cfb0| 6f 20 69 6e 6c 69 6e 65 | 73 20 70 72 6f 70 65 72 |o inline|s proper|
|0003cfc0| 6c 79 20 2a 2f 0a 23 69 | 6e 63 6c 75 64 65 20 3c |ly */.#i|nclude <|
|0003cfd0| 70 72 6f 74 6f 2f 73 6f | 63 6b 65 74 2e 68 3e 0a |proto/so|cket.h>.|
|0003cfe0| 0a 2f 2a 20 74 68 65 73 | 65 20 70 61 72 74 69 63 |./* thes|e partic|
|0003cff0| 75 6c 61 72 6c 79 20 6e | 65 65 64 20 74 6f 20 62 |ularly n|eed to b|
|0003d000| 65 20 74 68 65 20 61 6d | 69 74 63 70 20 69 6e 63 |e the am|itcp inc|
|0003d010| 6c 75 64 65 73 20 2a 2f | 0a 23 69 6e 63 6c 75 64 |ludes */|.#includ|
|0003d020| 65 20 3c 73 79 73 2f 65 | 72 72 6e 6f 2e 68 3e 0a |e <sys/e|rrno.h>.|
|0003d030| 23 69 6e 63 6c 75 64 65 | 20 3c 73 79 73 2f 69 6f |#include| <sys/io|
|0003d040| 63 74 6c 2e 68 3e 0a 0a | 23 69 6e 63 6c 75 64 65 |ctl.h>..|#include|
|0003d050| 20 3c 6e 65 74 64 62 2e | 68 3e 0a 23 69 6e 63 6c | <netdb.|h>.#incl|
|0003d060| 75 64 65 20 3c 73 74 72 | 69 6e 67 2e 68 3e 0a 0a |ude <str|ing.h>..|
|0003d070| 23 69 6e 63 6c 75 64 65 | 20 22 65 76 74 79 70 65 |#include| "evtype|
|0003d080| 73 2e 68 22 0a 23 69 6e | 63 6c 75 64 65 20 22 76 |s.h".#in|clude "v|
|0003d090| 65 72 69 66 79 2e 68 22 | 0a 0a 23 69 6e 63 6c 75 |erify.h"|..#inclu|
|0003d0a0| 64 65 20 22 74 63 70 2e | 68 22 0a 0a 74 63 70 6d |de "tcp.|h"..tcpm|
|0003d0b0| 65 73 73 61 67 65 20 2a | 6e 65 77 5f 74 63 70 6d |essage *|new_tcpm|
|0003d0c0| 65 73 73 61 67 65 28 73 | 74 72 75 63 74 20 4d 73 |essage(s|truct Ms|
|0003d0d0| 67 50 6f 72 74 20 2a 72 | 65 70 6c 79 5f 70 6f 72 |gPort *r|eply_por|
|0003d0e0| 74 29 0a 7b 0a 09 74 63 | 70 6d 65 73 73 61 67 65 |t).{..tc|pmessage|
|0003d0f0| 20 2a 7a 3b 0a 09 0a 09 | 7a 20 3d 20 28 74 63 70 | *z;....|z = (tcp|
|0003d100| 6d 65 73 73 61 67 65 20 | 2a 29 61 6c 6c 6f 63 61 |message |*)alloca|
|0003d110| 74 65 28 73 69 7a 65 6f | 66 28 2a 7a 29 2c 20 56 |te(sizeo|f(*z), V|
|0003d120| 5f 74 63 70 6d 65 73 73 | 61 67 65 29 3b 0a 09 69 |_tcpmess|age);..i|
|0003d130| 66 20 28 21 7a 29 20 72 | 65 74 75 72 6e 20 6e 69 |f (!z) r|eturn ni|
|0003d140| 6c 3b 0a 09 0a 09 65 6e | 73 75 72 65 28 7a 2c 20 |l;....en|sure(z, |
|0003d150| 56 5f 74 63 70 6d 65 73 | 73 61 67 65 29 3b 0a 09 |V_tcpmes|sage);..|
|0003d160| 0a 09 7a 2d 3e 68 65 61 | 64 65 72 2e 6d 6e 5f 4e |..z->hea|der.mn_N|
|0003d170| 6f 64 65 2e 6c 6e 5f 54 | 79 70 65 20 3d 20 4e 54 |ode.ln_T|ype = NT|
|0003d180| 5f 4d 45 53 53 41 47 45 | 3b 0a 09 7a 2d 3e 68 65 |_MESSAGE|;..z->he|
|0003d190| 61 64 65 72 2e 6d 6e 5f | 4e 6f 64 65 2e 6c 6e 5f |ader.mn_|Node.ln_|
|0003d1a0| 50 72 69 20 3d 20 30 3b | 0a 09 7a 2d 3e 68 65 61 |Pri = 0;|..z->hea|
|0003d1b0| 64 65 72 2e 6d 6e 5f 4e | 6f 64 65 2e 6c 6e 5f 4e |der.mn_N|ode.ln_N|
|0003d1c0| 61 6d 65 20 3d 20 22 54 | 43 50 4d 65 73 73 61 67 |ame = "T|CPMessag|
|0003d1d0| 65 22 3b 0a 09 7a 2d 3e | 68 65 61 64 65 72 2e 6d |e";..z->|header.m|
|0003d1e0| 6e 5f 52 65 70 6c 79 50 | 6f 72 74 20 3d 20 72 65 |n_ReplyP|ort = re|
|0003d1f0| 70 6c 79 5f 70 6f 72 74 | 3b 0a 09 7a 2d 3e 68 65 |ply_port|;..z->he|
|0003d200| 61 64 65 72 2e 6d 6e 5f | 4c 65 6e 67 74 68 20 3d |ader.mn_|Length =|
|0003d210| 20 73 69 7a 65 6f 66 28 | 2a 7a 29 3b 0a 09 0a 09 | sizeof(|*z);....|
|0003d220| 7a 2d 3e 63 6f 6d 6d 61 | 6e 64 20 3d 20 54 43 50 |z->comma|nd = TCP|
|0003d230| 5f 4e 4f 4f 50 3b 0a 09 | 7a 2d 3e 69 64 65 6e 74 |_NOOP;..|z->ident|
|0003d240| 20 3d 20 6e 69 6c 3b 0a | 09 7a 2d 3e 61 64 64 72 | = nil;.|.z->addr|
|0003d250| 65 73 73 2e 6c 20 3d 20 | 30 3b 0a 09 7a 2d 3e 70 |ess.l = |0;..z->p|
|0003d260| 6f 72 74 2e 77 20 3d 20 | 30 3b 0a 09 0a 09 7a 2d |ort.w = |0;....z-|
|0003d270| 3e 64 61 74 61 20 3d 20 | 6e 69 6c 3b 0a 09 7a 2d |>data = |nil;..z-|
|0003d280| 3e 69 6e 74 65 72 72 75 | 70 74 20 3d 20 6e 69 6c |>interru|pt = nil|
|0003d290| 3b 0a 09 7a 2d 3e 6c 65 | 6e 67 74 68 20 3d 20 30 |;..z->le|ngth = 0|
|0003d2a0| 3b 0a 09 7a 2d 3e 72 65 | 73 75 6c 74 20 3d 20 30 |;..z->re|sult = 0|
|0003d2b0| 3b 0a 09 7a 2d 3e 65 72 | 72 6f 72 20 3d 20 4e 4f |;..z->er|ror = NO|
|0003d2c0| 5f 45 52 52 4f 52 3b 0a | 09 7a 2d 3e 66 6c 61 67 |_ERROR;.|.z->flag|
|0003d2d0| 73 20 3d 20 30 3b 0a 09 | 0a 09 72 65 74 75 72 6e |s = 0;..|..return|
|0003d2e0| 20 7a 3b 0a 7d 0a 0a 76 | 6f 69 64 20 66 72 65 65 | z;.}..v|oid free|
|0003d2f0| 5f 74 63 70 6d 65 73 73 | 61 67 65 28 74 63 70 6d |_tcpmess|age(tcpm|
|0003d300| 65 73 73 61 67 65 20 2a | 74 6d 29 0a 7b 0a 09 76 |essage *|tm).{..v|
|0003d310| 65 72 69 66 79 28 74 6d | 2c 20 56 5f 74 63 70 6d |erify(tm|, V_tcpm|
|0003d320| 65 73 73 61 67 65 29 3b | 0a 09 0a 09 65 6e 73 75 |essage);|....ensu|
|0003d330| 72 65 28 74 6d 2c 20 30 | 29 3b 0a 09 0a 09 64 65 |re(tm, 0|);....de|
|0003d340| 61 6c 6c 6f 63 61 74 65 | 28 74 6d 2c 20 56 5f 74 |allocate|(tm, V_t|
|0003d350| 63 70 6d 65 73 73 61 67 | 65 29 3b 0a 09 0a 09 72 |cpmessag|e);....r|
|0003d360| 65 74 75 72 6e 3b 0a 7d | 0a 0a 74 63 70 69 64 65 |eturn;.}|..tcpide|
|0003d370| 6e 74 20 2a 6e 65 77 5f | 74 63 70 69 64 65 6e 74 |nt *new_|tcpident|
|0003d380| 28 73 62 33 32 20 66 64 | 29 0a 7b 0a 09 74 63 70 |(sb32 fd|).{..tcp|
|0003d390| 69 64 65 6e 74 20 2a 74 | 69 3b 0a 0a 09 74 69 20 |ident *t|i;...ti |
|0003d3a0| 3d 20 28 74 63 70 69 64 | 65 6e 74 20 2a 29 61 6c |= (tcpid|ent *)al|
|0003d3b0| 6c 6f 63 61 74 65 28 73 | 69 7a 65 6f 66 28 2a 74 |locate(s|izeof(*t|
|0003d3c0| 69 29 2c 20 56 5f 74 63 | 70 69 64 65 6e 74 29 3b |i), V_tc|pident);|
|0003d3d0| 0a 09 69 66 20 28 21 74 | 69 29 20 72 65 74 75 72 |..if (!t|i) retur|
|0003d3e0| 6e 20 6e 69 6c 3b 0a 0a | 09 65 6e 73 75 72 65 28 |n nil;..|.ensure(|
|0003d3f0| 74 69 2c 20 56 5f 74 63 | 70 69 64 65 6e 74 29 3b |ti, V_tc|pident);|
|0003d400| 0a 0a 09 74 69 2d 3e 66 | 64 20 3d 20 66 64 3b 0a |...ti->f|d = fd;.|
|0003d410| 09 74 69 2d 3e 65 6f 66 | 20 3d 20 66 61 6c 73 65 |.ti->eof| = false|
|0003d420| 3b 0a 0a 09 72 65 74 75 | 72 6e 20 74 69 3b 0a 7d |;...retu|rn ti;.}|
|0003d430| 0a 0a 76 6f 69 64 20 66 | 72 65 65 5f 74 63 70 69 |..void f|ree_tcpi|
|0003d440| 64 65 6e 74 28 74 63 70 | 69 64 65 6e 74 20 2a 74 |dent(tcp|ident *t|
|0003d450| 69 29 0a 7b 0a 09 76 65 | 72 69 66 79 28 74 69 2c |i).{..ve|rify(ti,|
|0003d460| 20 56 5f 74 63 70 69 64 | 65 6e 74 29 3b 0a 09 0a | V_tcpid|ent);...|
|0003d470| 09 65 6e 73 75 72 65 28 | 74 69 2c 20 30 29 3b 0a |.ensure(|ti, 0);.|
|0003d480| 0a 09 64 65 61 6c 6c 6f | 63 61 74 65 28 74 69 2c |..deallo|cate(ti,|
|0003d490| 20 56 5f 74 63 70 69 64 | 65 6e 74 29 3b 0a 0a 09 | V_tcpid|ent);...|
|0003d4a0| 72 65 74 75 72 6e 3b 0a | 7d 0a 0a 76 6f 69 64 20 |return;.|}..void |
|0003d4b0| 66 69 78 5f 72 65 61 64 | 5f 73 65 74 28 73 74 72 |fix_read|_set(str|
|0003d4c0| 75 63 74 20 4c 69 73 74 | 20 2a 77 61 69 74 5f 6c |uct List| *wait_l|
|0003d4d0| 69 73 74 2c 20 66 64 5f | 73 65 74 20 2a 72 65 61 |ist, fd_|set *rea|
|0003d4e0| 64 73 2c 20 73 62 33 32 | 20 2a 6d 61 78 5f 66 64 |ds, sb32| *max_fd|
|0003d4f0| 29 0a 7b 0a 09 74 63 70 | 6d 65 73 73 61 67 65 20 |).{..tcp|message |
|0003d500| 2a 74 6d 3b 0a 09 74 63 | 70 69 64 65 6e 74 20 2a |*tm;..tc|pident *|
|0003d510| 74 69 3b 0a 09 0a 09 46 | 44 5f 5a 45 52 4f 28 72 |ti;....F|D_ZERO(r|
|0003d520| 65 61 64 73 29 3b 0a 09 | 2a 6d 61 78 5f 66 64 20 |eads);..|*max_fd |
|0003d530| 3d 20 2d 31 3b 0a 09 0a | 09 66 6f 72 20 28 74 6d |= -1;...|.for (tm|
|0003d540| 20 3d 20 28 74 63 70 6d | 65 73 73 61 67 65 20 2a | = (tcpm|essage *|
|0003d550| 29 77 61 69 74 5f 6c 69 | 73 74 2d 3e 6c 68 5f 48 |)wait_li|st->lh_H|
|0003d560| 65 61 64 3b 0a 09 09 09 | 74 6d 2d 3e 68 65 61 64 |ead;....|tm->head|
|0003d570| 65 72 2e 6d 6e 5f 4e 6f | 64 65 2e 6c 6e 5f 53 75 |er.mn_No|de.ln_Su|
|0003d580| 63 63 3b 0a 09 09 09 74 | 6d 20 3d 20 28 74 63 70 |cc;....t|m = (tcp|
|0003d590| 6d 65 73 73 61 67 65 20 | 2a 29 74 6d 2d 3e 68 65 |message |*)tm->he|
|0003d5a0| 61 64 65 72 2e 6d 6e 5f | 4e 6f 64 65 2e 6c 6e 5f |ader.mn_|Node.ln_|
|0003d5b0| 53 75 63 63 29 20 7b 0a | 09 09 74 69 20 3d 20 74 |Succ) {.|..ti = t|
|0003d5c0| 6d 2d 3e 69 64 65 6e 74 | 3b 0a 09 09 76 65 72 69 |m->ident|;...veri|
|0003d5d0| 66 79 28 74 69 2c 20 56 | 5f 74 63 70 69 64 65 6e |fy(ti, V|_tcpiden|
|0003d5e0| 74 29 3b 0a 09 09 0a 09 | 09 69 66 20 28 74 69 2d |t);.....|.if (ti-|
|0003d5f0| 3e 66 64 20 3e 20 2a 6d | 61 78 5f 66 64 29 20 2a |>fd > *m|ax_fd) *|
|0003d600| 6d 61 78 5f 66 64 20 3d | 20 74 69 2d 3e 66 64 3b |max_fd =| ti->fd;|
|0003d610| 0a 09 09 0a 09 09 69 66 | 20 28 74 6d 2d 3e 63 6f |......if| (tm->co|
|0003d620| 6d 6d 61 6e 64 20 3d 3d | 20 54 43 50 5f 4c 49 53 |mmand ==| TCP_LIS|
|0003d630| 54 45 4e 20 7c 7c 20 74 | 6d 2d 3e 63 6f 6d 6d 61 |TEN || t|m->comma|
|0003d640| 6e 64 20 3d 3d 20 54 43 | 50 5f 52 45 41 44 29 20 |nd == TC|P_READ) |
|0003d650| 7b 0a 09 09 09 46 44 5f | 53 45 54 28 74 69 2d 3e |{....FD_|SET(ti->|
|0003d660| 66 64 2c 20 72 65 61 64 | 73 29 3b 0a 09 09 09 62 |fd, read|s);....b|
|0003d670| 72 65 61 6b 3b 0a 09 09 | 7d 0a 09 7d 0a 7d 0a 0a |reak;...|}..}.}..|
|0003d680| 76 6f 69 64 20 66 69 78 | 5f 77 72 69 74 65 5f 73 |void fix|_write_s|
|0003d690| 65 74 28 73 74 72 75 63 | 74 20 4c 69 73 74 20 2a |et(struc|t List *|
|0003d6a0| 77 61 69 74 5f 6c 69 73 | 74 2c 20 66 64 5f 73 65 |wait_lis|t, fd_se|
|0003d6b0| 74 20 2a 77 72 69 74 65 | 73 2c 20 73 62 33 32 20 |t *write|s, sb32 |
|0003d6c0| 2a 6d 61 78 5f 66 64 29 | 0a 7b 0a 09 74 63 70 6d |*max_fd)|.{..tcpm|
|0003d6d0| 65 73 73 61 67 65 20 2a | 74 6d 3b 0a 09 74 63 70 |essage *|tm;..tcp|
|0003d6e0| 69 64 65 6e 74 20 2a 74 | 69 3b 0a 09 0a 09 46 44 |ident *t|i;....FD|
|0003d6f0| 5f 5a 45 52 4f 28 77 72 | 69 74 65 73 29 3b 0a 09 |_ZERO(wr|ites);..|
|0003d700| 2a 6d 61 78 5f 66 64 20 | 3d 20 2d 31 3b 0a 09 0a |*max_fd |= -1;...|
|0003d710| 09 66 6f 72 20 28 74 6d | 20 3d 20 28 74 63 70 6d |.for (tm| = (tcpm|
|0003d720| 65 73 73 61 67 65 20 2a | 29 77 61 69 74 5f 6c 69 |essage *|)wait_li|
|0003d730| 73 74 2d 3e 6c 68 5f 48 | 65 61 64 3b 0a 09 09 09 |st->lh_H|ead;....|
|0003d740| 74 6d 2d 3e 68 65 61 64 | 65 72 2e 6d 6e 5f 4e 6f |tm->head|er.mn_No|
|0003d750| 64 65 2e 6c 6e 5f 53 75 | 63 63 3b 0a 09 09 09 74 |de.ln_Su|cc;....t|
|0003d760| 6d 20 3d 20 28 74 63 70 | 6d 65 73 73 61 67 65 20 |m = (tcp|message |
|0003d770| 2a 29 74 6d 2d 3e 68 65 | 61 64 65 72 2e 6d 6e 5f |*)tm->he|ader.mn_|
|0003d780| 4e 6f 64 65 2e 6c 6e 5f | 53 75 63 63 29 20 7b 0a |Node.ln_|Succ) {.|
|0003d790| 09 09 74 69 20 3d 20 74 | 6d 2d 3e 69 64 65 6e 74 |..ti = t|m->ident|
|0003d7a0| 3b 0a 09 09 76 65 72 69 | 66 79 28 74 69 2c 20 56 |;...veri|fy(ti, V|
|0003d7b0| 5f 74 63 70 69 64 65 6e | 74 29 3b 0a 09 09 0a 09 |_tcpiden|t);.....|
|0003d7c0| 09 69 66 20 28 74 69 2d | 3e 66 64 20 3e 20 2a 6d |.if (ti-|>fd > *m|
|0003d7d0| 61 78 5f 66 64 29 20 2a | 6d 61 78 5f 66 64 20 3d |ax_fd) *|max_fd =|
|0003d7e0| 20 74 69 2d 3e 66 64 3b | 0a 09 09 0a 09 09 69 66 | ti->fd;|......if|
|0003d7f0| 20 28 74 6d 2d 3e 63 6f | 6d 6d 61 6e 64 20 3d 3d | (tm->co|mmand ==|
|0003d800| 20 54 43 50 5f 57 52 49 | 54 45 29 20 7b 0a 09 09 | TCP_WRI|TE) {...|
|0003d810| 09 46 44 5f 53 45 54 28 | 74 69 2d 3e 66 64 2c 20 |.FD_SET(|ti->fd, |
|0003d820| 77 72 69 74 65 73 29 3b | 0a 09 09 09 62 72 65 61 |writes);|....brea|
|0003d830| 6b 3b 0a 09 09 7d 0a 09 | 7d 0a 7d 0a 0a 76 6f 69 |k;...}..|}.}..voi|
|0003d840| 64 20 6e 6f 6e 5f 62 6c | 6f 63 6b 69 6e 67 28 73 |d non_bl|ocking(s|
|0003d850| 74 72 75 63 74 20 4c 69 | 62 72 61 72 79 20 2a 53 |truct Li|brary *S|
|0003d860| 6f 63 6b 65 74 42 61 73 | 65 2c 20 73 62 33 32 20 |ocketBas|e, sb32 |
|0003d870| 66 64 29 0a 7b 0a 09 6c | 6f 6e 67 20 6f 6e 65 3b |fd).{..l|ong one;|
|0003d880| 0a 09 0a 09 6f 6e 65 20 | 3d 20 31 3b 0a 09 0a 09 |....one |= 1;....|
|0003d890| 49 6f 63 74 6c 53 6f 63 | 6b 65 74 28 66 64 2c 20 |IoctlSoc|ket(fd, |
|0003d8a0| 46 49 4f 4e 42 49 4f 2c | 20 28 76 6f 69 64 20 2a |FIONBIO,| (void *|
|0003d8b0| 29 26 6f 6e 65 29 3b 0a | 7d 0a 0a 76 6f 69 64 20 |)&one);.|}..void |
|0003d8c0| 75 6e 69 71 75 65 5f 6e | 61 6d 65 28 76 6f 69 64 |unique_n|ame(void|
|0003d8d0| 20 2a 74 70 2c 20 62 38 | 20 2a 73 2c 20 62 38 20 | *tp, b8| *s, b8 |
|0003d8e0| 2a 62 75 66 66 65 72 29 | 0a 7b 0a 09 62 33 32 20 |*buffer)|.{..b32 |
|0003d8f0| 74 61 73 6b 3b 0a 09 0a | 09 74 61 73 6b 20 3d 20 |task;...|.task = |
|0003d900| 28 62 33 32 29 74 70 3b | 0a 0a 09 62 75 66 66 65 |(b32)tp;|...buffe|
|0003d910| 72 5b 30 5d 20 3d 20 28 | 74 61 73 6b 20 3e 3e 20 |r[0] = (|task >> |
|0003d920| 32 38 29 20 26 20 30 78 | 66 3b 0a 09 62 75 66 66 |28) & 0x|f;..buff|
|0003d930| 65 72 5b 31 5d 20 3d 20 | 28 74 61 73 6b 20 3e 3e |er[1] = |(task >>|
|0003d940| 20 32 34 29 20 26 20 30 | 78 66 3b 0a 09 62 75 66 | 24) & 0|xf;..buf|
|0003d950| 66 65 72 5b 32 5d 20 3d | 20 28 74 61 73 6b 20 3e |fer[2] =| (task >|
|0003d960| 3e 20 32 30 29 20 26 20 | 30 78 66 3b 0a 09 62 75 |> 20) & |0xf;..bu|
|0003d970| 66 66 65 72 5b 33 5d 20 | 3d 20 28 74 61 73 6b 20 |ffer[3] |= (task |
|0003d980| 3e 3e 20 31 36 29 20 26 | 20 30 78 66 3b 0a 09 62 |>> 16) &| 0xf;..b|
|0003d990| 75 66 66 65 72 5b 34 5d | 20 3d 20 28 74 61 73 6b |uffer[4]| = (task|
|0003d9a0| 20 3e 3e 20 31 32 29 20 | 26 20 30 78 66 3b 0a 09 | >> 12) |& 0xf;..|
|0003d9b0| 62 75 66 66 65 72 5b 35 | 5d 20 3d 20 28 74 61 73 |buffer[5|] = (tas|
|0003d9c0| 6b 20 3e 3e 20 38 29 20 | 26 20 30 78 66 3b 0a 09 |k >> 8) |& 0xf;..|
|0003d9d0| 62 75 66 66 65 72 5b 36 | 5d 20 3d 20 28 74 61 73 |buffer[6|] = (tas|
|0003d9e0| 6b 20 3e 3e 20 34 29 20 | 26 20 30 78 66 3b 0a 09 |k >> 4) |& 0xf;..|
|0003d9f0| 62 75 66 66 65 72 5b 37 | 5d 20 3d 20 74 61 73 6b |buffer[7|] = task|
|0003da00| 20 26 20 30 78 66 3b 0a | 09 0a 09 69 66 20 28 62 | & 0xf;.|...if (b|
|0003da10| 75 66 66 65 72 5b 30 5d | 20 3e 20 39 29 20 62 75 |uffer[0]| > 9) bu|
|0003da20| 66 66 65 72 5b 30 5d 20 | 2b 3d 20 27 61 27 20 2d |ffer[0] |+= 'a' -|
|0003da30| 20 31 30 3b 20 65 6c 73 | 65 20 62 75 66 66 65 72 | 10; els|e buffer|
|0003da40| 5b 30 5d 20 2b 3d 20 27 | 30 27 3b 0a 09 69 66 20 |[0] += '|0';..if |
|0003da50| 28 62 75 66 66 65 72 5b | 31 5d 20 3e 20 39 29 20 |(buffer[|1] > 9) |
|0003da60| 62 75 66 66 65 72 5b 31 | 5d 20 2b 3d 20 27 61 27 |buffer[1|] += 'a'|
|0003da70| 20 2d 20 31 30 3b 20 65 | 6c 73 65 20 62 75 66 66 | - 10; e|lse buff|
|0003da80| 65 72 5b 31 5d 20 2b 3d | 20 27 30 27 3b 0a 09 69 |er[1] +=| '0';..i|
|0003da90| 66 20 28 62 75 66 66 65 | 72 5b 32 5d 20 3e 20 39 |f (buffe|r[2] > 9|
|0003daa0| 29 20 62 75 66 66 65 72 | 5b 32 5d 20 2b 3d 20 27 |) buffer|[2] += '|
|0003dab0| 61 27 20 2d 20 31 30 3b | 20 65 6c 73 65 20 62 75 |a' - 10;| else bu|
|0003dac0| 66 66 65 72 5b 32 5d 20 | 2b 3d 20 27 30 27 3b 0a |ffer[2] |+= '0';.|
|0003dad0| 09 69 66 20 28 62 75 66 | 66 65 72 5b 33 5d 20 3e |.if (buf|fer[3] >|
|0003dae0| 20 39 29 20 62 75 66 66 | 65 72 5b 33 5d 20 2b 3d | 9) buff|er[3] +=|
|0003daf0| 20 27 61 27 20 2d 20 31 | 30 3b 20 65 6c 73 65 20 | 'a' - 1|0; else |
|0003db00| 62 75 66 66 65 72 5b 33 | 5d 20 2b 3d 20 27 30 27 |buffer[3|] += '0'|
|0003db10| 3b 0a 09 69 66 20 28 62 | 75 66 66 65 72 5b 34 5d |;..if (b|uffer[4]|
|0003db20| 20 3e 20 39 29 20 62 75 | 66 66 65 72 5b 34 5d 20 | > 9) bu|ffer[4] |
|0003db30| 2b 3d 20 27 61 27 20 2d | 20 31 30 3b 20 65 6c 73 |+= 'a' -| 10; els|
|0003db40| 65 20 62 75 66 66 65 72 | 5b 34 5d 20 2b 3d 20 27 |e buffer|[4] += '|
|0003db50| 30 27 3b 0a 09 69 66 20 | 28 62 75 66 66 65 72 5b |0';..if |(buffer[|
|0003db60| 35 5d 20 3e 20 39 29 20 | 62 75 66 66 65 72 5b 35 |5] > 9) |buffer[5|
|0003db70| 5d 20 2b 3d 20 27 61 27 | 20 2d 20 31 30 3b 20 65 |] += 'a'| - 10; e|
|0003db80| 6c 73 65 20 62 75 66 66 | 65 72 5b 35 5d 20 2b 3d |lse buff|er[5] +=|
|0003db90| 20 27 30 27 3b 0a 09 69 | 66 20 28 62 75 66 66 65 | '0';..i|f (buffe|
|0003dba0| 72 5b 36 5d 20 3e 20 39 | 29 20 62 75 66 66 65 72 |r[6] > 9|) buffer|
|0003dbb0| 5b 36 5d 20 2b 3d 20 27 | 61 27 20 2d 20 31 30 3b |[6] += '|a' - 10;|
|0003dbc0| 20 65 6c 73 65 20 62 75 | 66 66 65 72 5b 36 5d 20 | else bu|ffer[6] |
|0003dbd0| 2b 3d 20 27 30 27 3b 0a | 09 69 66 20 28 62 75 66 |+= '0';.|.if (buf|
|0003dbe0| 66 65 72 5b 37 5d 20 3e | 20 39 29 20 62 75 66 66 |fer[7] >| 9) buff|
|0003dbf0| 65 72 5b 37 5d 20 2b 3d | 20 27 61 27 20 2d 20 31 |er[7] +=| 'a' - 1|
|0003dc00| 30 3b 20 65 6c 73 65 20 | 62 75 66 66 65 72 5b 37 |0; else |buffer[7|
|0003dc10| 5d 20 2b 3d 20 27 30 27 | 3b 0a 09 0a 09 73 74 72 |] += '0'|;....str|
|0003dc20| 63 70 79 28 26 62 75 66 | 66 65 72 5b 38 5d 2c 20 |cpy(&buf|fer[8], |
|0003dc30| 73 29 3b 0a 7d 0a 0a 76 | 6f 69 64 20 74 63 70 5f |s);.}..v|oid tcp_|
|0003dc40| 72 65 61 64 28 73 74 72 | 75 63 74 20 4c 69 62 72 |read(str|uct Libr|
|0003dc50| 61 72 79 20 2a 53 6f 63 | 6b 65 74 42 61 73 65 2c |ary *Soc|ketBase,|
|0003dc60| 20 74 63 70 6d 65 73 73 | 61 67 65 20 2a 74 6d 2c | tcpmess|age *tm,|
|0003dc70| 20 73 74 72 75 63 74 20 | 4c 69 73 74 20 2a 77 61 | struct |List *wa|
|0003dc80| 69 74 5f 6c 69 73 74 2c | 20 66 64 5f 73 65 74 20 |it_list,| fd_set |
|0003dc90| 2a 72 65 61 64 73 2c 20 | 73 62 33 32 20 2a 6d 61 |*reads, |sb32 *ma|
|0003dca0| 78 5f 66 64 29 0a 7b 0a | 09 74 63 70 69 64 65 6e |x_fd).{.|.tcpiden|
|0003dcb0| 74 20 2a 74 69 3b 0a 09 | 73 62 33 32 20 72 65 73 |t *ti;..|sb32 res|
|0003dcc0| 75 6c 74 3b 0a 09 62 38 | 20 2a 73 3b 0a 0a 09 74 |ult;..b8| *s;...t|
|0003dcd0| 72 75 74 68 28 53 6f 63 | 6b 65 74 42 61 73 65 20 |ruth(Soc|ketBase |
|0003dce0| 21 3d 20 6e 69 6c 29 3b | 0a 09 74 72 75 74 68 28 |!= nil);|..truth(|
|0003dcf0| 6d 61 78 5f 66 64 20 21 | 3d 20 6e 69 6c 29 3b 0a |max_fd !|= nil);.|
|0003dd00| 09 74 72 75 74 68 28 72 | 65 61 64 73 20 21 3d 20 |.truth(r|eads != |
|0003dd10| 6e 69 6c 29 3b 0a 09 74 | 72 75 74 68 28 77 61 69 |nil);..t|ruth(wai|
|0003dd20| 74 5f 6c 69 73 74 20 21 | 3d 20 6e 69 6c 29 3b 0a |t_list !|= nil);.|
|0003dd30| 0a 09 76 65 72 69 66 79 | 28 74 6d 2c 20 56 5f 74 |..verify|(tm, V_t|
|0003dd40| 63 70 6d 65 73 73 61 67 | 65 29 3b 0a 09 0a 09 74 |cpmessag|e);....t|
|0003dd50| 69 20 3d 20 74 6d 2d 3e | 69 64 65 6e 74 3b 0a 0a |i = tm->|ident;..|
|0003dd60| 09 69 66 20 28 21 74 69 | 29 20 7b 0a 09 09 74 6d |.if (!ti|) {...tm|
|0003dd70| 2d 3e 72 65 73 75 6c 74 | 20 3d 20 30 3b 0a 09 09 |->result| = 0;...|
|0003dd80| 74 6d 2d 3e 65 72 72 6f | 72 20 3d 20 45 52 52 4f |tm->erro|r = ERRO|
|0003dd90| 52 5f 4e 4f 5f 43 4f 4e | 4e 45 43 54 49 4f 4e 3b |R_NO_CON|NECTION;|
|0003dda0| 0a 09 09 0a 09 09 52 65 | 70 6c 79 4d 73 67 28 26 |......Re|plyMsg(&|
|0003ddb0| 74 6d 2d 3e 68 65 61 64 | 65 72 29 3b 0a 09 09 72 |tm->head|er);...r|
|0003ddc0| 65 74 75 72 6e 3b 0a 09 | 7d 0a 09 0a 09 76 65 72 |eturn;..|}....ver|
|0003ddd0| 69 66 79 28 74 69 2c 20 | 56 5f 74 63 70 69 64 65 |ify(ti, |V_tcpide|
|0003dde0| 6e 74 29 3b 0a 09 0a 09 | 69 66 20 28 74 6d 2d 3e |nt);....|if (tm->|
|0003ddf0| 6c 65 6e 67 74 68 20 3d | 3d 20 30 29 20 7b 0a 09 |length =|= 0) {..|
|0003de00| 09 74 6d 2d 3e 72 65 73 | 75 6c 74 20 3d 20 30 3b |.tm->res|ult = 0;|
|0003de10| 0a 09 09 0a 09 09 69 66 | 20 28 74 69 2d 3e 65 6f |......if| (ti->eo|
|0003de20| 66 29 0a 09 09 09 74 6d | 2d 3e 65 72 72 6f 72 20 |f)....tm|->error |
|0003de30| 3d 20 45 52 52 4f 52 5f | 45 4f 46 3b 0a 09 09 65 |= ERROR_|EOF;...e|
|0003de40| 6c 73 65 0a 09 09 09 74 | 6d 2d 3e 65 72 72 6f 72 |lse....t|m->error|
|0003de50| 20 3d 20 4e 4f 5f 45 52 | 52 4f 52 3b 0a 09 09 0a | = NO_ER|ROR;....|
|0003de60| 09 09 52 65 70 6c 79 4d | 73 67 28 26 74 6d 2d 3e |..ReplyM|sg(&tm->|
|0003de70| 68 65 61 64 65 72 29 3b | 0a 09 09 72 65 74 75 72 |header);|...retur|
|0003de80| 6e 3b 0a 09 7d 0a 09 0a | 09 2f 2a 20 73 6f 63 6b |n;..}...|./* sock|
|0003de90| 65 74 20 68 61 73 20 67 | 6f 74 20 74 6f 20 62 65 |et has g|ot to be|
|0003dea0| 20 73 65 74 20 74 6f 20 | 6e 6f 6e 2d 62 6c 6f 63 | set to |non-bloc|
|0003deb0| 6b 69 6e 67 20 2a 2f 0a | 09 0a 09 69 66 20 28 74 |king */.|...if (t|
|0003dec0| 6d 2d 3e 66 6c 61 67 73 | 20 26 20 46 4c 41 47 5f |m->flags| & FLAG_|
|0003ded0| 52 45 41 44 4c 49 4e 45 | 29 20 7b 0a 09 09 73 20 |READLINE|) {...s |
|0003dee0| 3d 20 74 6d 2d 3e 64 61 | 74 61 3b 0a 09 09 74 6d |= tm->da|ta;...tm|
|0003def0| 2d 3e 72 65 73 75 6c 74 | 20 3d 20 30 3b 0a 09 09 |->result| = 0;...|
|0003df00| 0a 09 09 77 68 69 6c 65 | 20 28 31 29 20 7b 0a 09 |...while| (1) {..|
|0003df10| 09 09 72 65 73 75 6c 74 | 20 3d 20 72 65 63 76 28 |..result| = recv(|
|0003df20| 74 69 2d 3e 66 64 2c 20 | 73 2c 20 31 2c 20 30 29 |ti->fd, |s, 1, 0)|
|0003df30| 3b 0a 09 09 09 69 66 20 | 28 72 65 73 75 6c 74 20 |;....if |(result |
|0003df40| 3d 3d 20 31 29 20 7b 0a | 09 09 09 09 74 6d 2d 3e |== 1) {.|....tm->|
|0003df50| 72 65 73 75 6c 74 2b 2b | 3b 0a 09 09 09 09 69 66 |result++|;.....if|
|0003df60| 20 28 2a 73 20 3d 3d 20 | 27 5c 72 27 20 7c 7c 20 | (*s == |'\r' || |
|0003df70| 2a 73 20 3d 3d 20 27 5c | 6e 27 29 20 7b 0a 09 09 |*s == '\|n') {...|
|0003df80| 09 09 09 69 66 20 28 74 | 6d 2d 3e 72 65 73 75 6c |...if (t|m->resul|
|0003df90| 74 20 3d 3d 20 31 29 20 | 7b 09 2f 2a 20 62 6c 61 |t == 1) |{./* bla|
|0003dfa0| 6e 6b 20 6c 69 6e 65 20 | 2e 2e 2e 20 73 6b 69 70 |nk line |... skip|
|0003dfb0| 20 69 74 20 2a 2f 0a 09 | 09 09 09 09 09 74 6d 2d | it */..|.....tm-|
|0003dfc0| 3e 72 65 73 75 6c 74 2d | 2d 3b 0a 09 09 09 09 09 |>result-|-;......|
|0003dfd0| 09 63 6f 6e 74 69 6e 75 | 65 3b 0a 09 09 09 09 09 |.continu|e;......|
|0003dfe0| 7d 0a 09 09 09 09 09 74 | 6d 2d 3e 65 72 72 6f 72 |}......t|m->error|
|0003dff0| 20 3d 20 4e 4f 5f 45 52 | 52 4f 52 3b 0a 09 09 09 | = NO_ER|ROR;....|
|0003e000| 09 09 0a 09 09 09 09 09 | 52 65 70 6c 79 4d 73 67 |........|ReplyMsg|
|0003e010| 28 26 74 6d 2d 3e 68 65 | 61 64 65 72 29 3b 0a 09 |(&tm->he|ader);..|
|0003e020| 09 09 09 09 72 65 74 75 | 72 6e 3b 0a 09 09 09 09 |....retu|rn;.....|
|0003e030| 7d 0a 09 09 09 09 73 2b | 2b 3b 0a 09 09 09 09 69 |}.....s+|+;.....i|
|0003e040| 66 20 28 74 6d 2d 3e 72 | 65 73 75 6c 74 20 3d 3d |f (tm->r|esult ==|
|0003e050| 20 74 6d 2d 3e 6c 65 6e | 67 74 68 29 20 7b 0a 09 | tm->len|gth) {..|
|0003e060| 09 09 09 09 74 6d 2d 3e | 65 72 72 6f 72 20 3d 20 |....tm->|error = |
|0003e070| 4e 4f 5f 45 52 52 4f 52 | 3b 0a 09 09 09 09 09 52 |NO_ERROR|;......R|
|0003e080| 65 70 6c 79 4d 73 67 28 | 26 74 6d 2d 3e 68 65 61 |eplyMsg(|&tm->hea|
|0003e090| 64 65 72 29 3b 0a 09 09 | 09 09 09 72 65 74 75 72 |der);...|...retur|
|0003e0a0| 6e 3b 0a 09 09 09 09 7d | 0a 09 09 09 09 63 6f 6e |n;.....}|.....con|
|0003e0b0| 74 69 6e 75 65 3b 0a 09 | 09 09 7d 20 65 6c 73 65 |tinue;..|..} else|
|0003e0c0| 20 69 66 20 28 72 65 73 | 75 6c 74 20 3d 3d 20 30 | if (res|ult == 0|
|0003e0d0| 29 20 7b 09 2f 2a 20 67 | 6f 74 20 74 6f 20 62 65 |) {./* g|ot to be|
|0003e0e0| 20 45 4f 46 20 2a 2f 0a | 09 09 09 09 74 69 2d 3e | EOF */.|....ti->|
|0003e0f0| 65 6f 66 20 3d 20 74 72 | 75 65 3b 0a 09 09 09 09 |eof = tr|ue;.....|
|0003e100| 74 6d 2d 3e 65 72 72 6f | 72 20 3d 20 45 52 52 4f |tm->erro|r = ERRO|
|0003e110| 52 5f 45 4f 46 3b 0a 09 | 09 09 09 0a 09 09 09 09 |R_EOF;..|........|
|0003e120| 52 65 70 6c 79 4d 73 67 | 28 26 74 6d 2d 3e 68 65 |ReplyMsg|(&tm->he|
|0003e130| 61 64 65 72 29 3b 0a 09 | 09 09 09 72 65 74 75 72 |ader);..|...retur|
|0003e140| 6e 3b 0a 09 09 09 7d 20 | 65 6c 73 65 20 7b 0a 09 |n;....} |else {..|
|0003e150| 09 09 09 73 77 69 74 63 | 68 20 28 45 72 72 6e 6f |...switc|h (Errno|
|0003e160| 28 29 29 20 7b 0a 09 09 | 09 09 63 61 73 65 20 45 |()) {...|..case E|
|0003e170| 49 4e 54 52 3a 0a 09 09 | 09 09 63 61 73 65 20 45 |INTR:...|..case E|
|0003e180| 57 4f 55 4c 44 42 4c 4f | 43 4b 3a 09 2f 2a 20 6e |WOULDBLO|CK:./* n|
|0003e190| 6f 74 68 69 6e 67 20 74 | 68 65 72 65 20 74 6f 20 |othing t|here to |
|0003e1a0| 72 65 61 64 20 79 65 74 | 20 2a 2f 0a 09 09 09 09 |read yet| */.....|
|0003e1b0| 09 41 64 64 54 61 69 6c | 28 77 61 69 74 5f 6c 69 |.AddTail|(wait_li|
|0003e1c0| 73 74 2c 20 28 73 74 72 | 75 63 74 20 4e 6f 64 65 |st, (str|uct Node|
|0003e1d0| 20 2a 29 74 6d 29 3b 0a | 09 09 09 09 09 46 44 5f | *)tm);.|.....FD_|
|0003e1e0| 53 45 54 28 74 69 2d 3e | 66 64 2c 20 72 65 61 64 |SET(ti->|fd, read|
|0003e1f0| 73 29 3b 0a 09 09 09 09 | 09 69 66 20 28 74 69 2d |s);.....|.if (ti-|
|0003e200| 3e 66 64 20 3e 20 2a 6d | 61 78 5f 66 64 29 20 2a |>fd > *m|ax_fd) *|
|0003e210| 6d 61 78 5f 66 64 20 3d | 20 74 69 2d 3e 66 64 3b |max_fd =| ti->fd;|
|0003e220| 0a 09 09 09 09 09 72 65 | 74 75 72 6e 3b 0a 09 09 |......re|turn;...|
|0003e230| 09 09 64 65 66 61 75 6c | 74 3a 09 09 2f 2a 20 73 |..defaul|t:../* s|
|0003e240| 6f 6d 65 74 68 69 6e 67 | 20 77 65 6e 74 20 77 72 |omething| went wr|
|0003e250| 6f 6e 67 20 2a 2f 0a 09 | 09 09 09 09 74 6d 2d 3e |ong */..|....tm->|
|0003e260| 65 72 72 6f 72 20 3d 20 | 45 52 52 4f 52 5f 4c 4f |error = |ERROR_LO|
|0003e270| 53 54 5f 43 4f 4e 4e 45 | 43 54 49 4f 4e 3b 0a 09 |ST_CONNE|CTION;..|
|0003e280| 09 09 0a 09 09 09 09 09 | 52 65 70 6c 79 4d 73 67 |........|ReplyMsg|
|0003e290| 28 26 74 6d 2d 3e 68 65 | 61 64 65 72 29 3b 0a 09 |(&tm->he|ader);..|
|0003e2a0| 09 09 09 7d 0a 09 09 09 | 09 72 65 74 75 72 6e 3b |...}....|.return;|
|0003e2b0| 0a 09 09 09 7d 0a 09 09 | 7d 0a 09 7d 20 65 6c 73 |....}...|}..} els|
|0003e2c0| 65 20 7b 0a 09 09 72 65 | 73 75 6c 74 20 3d 20 72 |e {...re|sult = r|
|0003e2d0| 65 63 76 28 74 69 2d 3e | 66 64 2c 20 74 6d 2d 3e |ecv(ti->|fd, tm->|
|0003e2e0| 64 61 74 61 2c 20 74 6d | 2d 3e 6c 65 6e 67 74 68 |data, tm|->length|
|0003e2f0| 2c 20 30 29 3b 0a 09 09 | 69 66 20 28 72 65 73 75 |, 0);...|if (resu|
|0003e300| 6c 74 20 3d 3d 20 74 6d | 2d 3e 6c 65 6e 67 74 68 |lt == tm|->length|
|0003e310| 29 20 7b 09 2f 2a 20 73 | 61 74 69 73 66 69 65 64 |) {./* s|atisfied|
|0003e320| 20 69 6d 6d 65 64 69 61 | 74 65 6c 79 20 2a 2f 0a | immedia|tely */.|
|0003e330| 09 09 09 74 6d 2d 3e 72 | 65 73 75 6c 74 20 3d 20 |...tm->r|esult = |
|0003e340| 74 6d 2d 3e 6c 65 6e 67 | 74 68 3b 0a 09 09 09 74 |tm->leng|th;....t|
|0003e350| 6d 2d 3e 65 72 72 6f 72 | 20 3d 20 4e 4f 5f 45 52 |m->error| = NO_ER|
|0003e360| 52 4f 52 3b 0a 09 09 09 | 0a 09 09 09 52 65 70 6c |ROR;....|....Repl|
|0003e370| 79 4d 73 67 28 26 74 6d | 2d 3e 68 65 61 64 65 72 |yMsg(&tm|->header|
|0003e380| 29 3b 0a 09 09 09 72 65 | 74 75 72 6e 3b 0a 09 09 |);....re|turn;...|
|0003e390| 7d 0a 09 7d 0a 09 0a 09 | 69 66 20 28 72 65 73 75 |}..}....|if (resu|
|0003e3a0| 6c 74 20 3d 3d 20 30 29 | 20 7b 09 2f 2a 20 67 6f |lt == 0)| {./* go|
|0003e3b0| 74 20 74 6f 20 62 65 20 | 45 4f 46 20 2a 2f 0a 09 |t to be |EOF */..|
|0003e3c0| 09 74 69 2d 3e 65 6f 66 | 20 3d 20 74 72 75 65 3b |.ti->eof| = true;|
|0003e3d0| 0a 09 09 74 6d 2d 3e 72 | 65 73 75 6c 74 20 3d 20 |...tm->r|esult = |
|0003e3e0| 30 3b 0a 09 09 74 6d 2d | 3e 65 72 72 6f 72 20 3d |0;...tm-|>error =|
|0003e3f0| 20 45 52 52 4f 52 5f 45 | 4f 46 3b 0a 09 09 0a 09 | ERROR_E|OF;.....|
|0003e400| 09 52 65 70 6c 79 4d 73 | 67 28 26 74 6d 2d 3e 68 |.ReplyMs|g(&tm->h|
|0003e410| 65 61 64 65 72 29 3b 0a | 09 09 72 65 74 75 72 6e |eader);.|..return|
|0003e420| 3b 0a 09 7d 0a 09 0a 09 | 2f 2a 20 66 72 6f 6d 20 |;..}....|/* from |
|0003e430| 68 65 72 65 20 77 65 20 | 68 61 76 65 20 74 68 65 |here we |have the|
|0003e440| 20 73 74 75 66 66 20 77 | 65 20 68 61 76 65 20 74 | stuff w|e have t|
|0003e450| 6f 20 77 61 69 74 20 66 | 6f 72 20 2a 2f 0a 09 09 |o wait f|or */...|
|0003e460| 0a 09 69 66 20 28 72 65 | 73 75 6c 74 20 3c 20 30 |..if (re|sult < 0|
|0003e470| 29 20 7b 0a 09 09 73 77 | 69 74 63 68 20 28 45 72 |) {...sw|itch (Er|
|0003e480| 72 6e 6f 28 29 29 20 7b | 0a 09 09 63 61 73 65 20 |rno()) {|...case |
|0003e490| 45 49 4e 54 52 3a 0a 09 | 09 63 61 73 65 20 45 57 |EINTR:..|.case EW|
|0003e4a0| 4f 55 4c 44 42 4c 4f 43 | 4b 3a 09 2f 2a 20 6e 6f |OULDBLOC|K:./* no|
|0003e4b0| 74 68 69 6e 67 20 74 68 | 65 72 65 20 74 6f 20 72 |thing th|ere to r|
|0003e4c0| 65 61 64 20 79 65 74 20 | 2a 2f 0a 09 09 09 74 6d |ead yet |*/....tm|
|0003e4d0| 2d 3e 72 65 73 75 6c 74 | 20 3d 20 30 3b 0a 09 09 |->result| = 0;...|
|0003e4e0| 09 41 64 64 54 61 69 6c | 28 77 61 69 74 5f 6c 69 |.AddTail|(wait_li|
|0003e4f0| 73 74 2c 20 28 73 74 72 | 75 63 74 20 4e 6f 64 65 |st, (str|uct Node|
|0003e500| 20 2a 29 74 6d 29 3b 0a | 09 09 09 46 44 5f 53 45 | *)tm);.|...FD_SE|
|0003e510| 54 28 74 69 2d 3e 66 64 | 2c 20 72 65 61 64 73 29 |T(ti->fd|, reads)|
|0003e520| 3b 0a 09 09 09 69 66 20 | 28 74 69 2d 3e 66 64 20 |;....if |(ti->fd |
|0003e530| 3e 20 2a 6d 61 78 5f 66 | 64 29 20 2a 6d 61 78 5f |> *max_f|d) *max_|
|0003e540| 66 64 20 3d 20 74 69 2d | 3e 66 64 3b 0a 09 09 09 |fd = ti-|>fd;....|
|0003e550| 72 65 74 75 72 6e 3b 0a | 09 09 64 65 66 61 75 6c |return;.|..defaul|
|0003e560| 74 3a 09 09 2f 2a 20 73 | 6f 6d 65 74 68 69 6e 67 |t:../* s|omething|
|0003e570| 20 77 65 6e 74 20 77 72 | 6f 6e 67 20 2a 2f 0a 09 | went wr|ong */..|
|0003e580| 09 09 74 6d 2d 3e 72 65 | 73 75 6c 74 20 3d 20 30 |..tm->re|sult = 0|
|0003e590| 3b 0a 09 09 09 74 6d 2d | 3e 65 72 72 6f 72 20 3d |;....tm-|>error =|
|0003e5a0| 20 45 52 52 4f 52 5f 4c | 4f 53 54 5f 43 4f 4e 4e | ERROR_L|OST_CONN|
|0003e5b0| 45 43 54 49 4f 4e 3b 0a | 09 09 09 0a 09 09 09 52 |ECTION;.|.......R|
|0003e5c0| 65 70 6c 79 4d 73 67 28 | 26 74 6d 2d 3e 68 65 61 |eplyMsg(|&tm->hea|
|0003e5d0| 64 65 72 29 3b 0a 09 09 | 09 72 65 74 75 72 6e 3b |der);...|.return;|
|0003e5e0| 0a 09 09 7d 0a 09 7d 0a | 09 0a 09 74 72 75 74 68 |...}..}.|...truth|
|0003e5f0| 28 72 65 73 75 6c 74 20 | 3c 20 74 6d 2d 3e 6c 65 |(result |< tm->le|
|0003e600| 6e 67 74 68 29 3b 0a 09 | 0a 09 74 6d 2d 3e 72 65 |ngth);..|..tm->re|
|0003e610| 73 75 6c 74 20 3d 20 72 | 65 73 75 6c 74 3b 0a 09 |sult = r|esult;..|
|0003e620| 41 64 64 54 61 69 6c 28 | 77 61 69 74 5f 6c 69 73 |AddTail(|wait_lis|
|0003e630| 74 2c 20 28 73 74 72 75 | 63 74 20 4e 6f 64 65 20 |t, (stru|ct Node |
|0003e640| 2a 29 74 6d 29 3b 0a 09 | 46 44 5f 53 45 54 28 74 |*)tm);..|FD_SET(t|
|0003e650| 69 2d 3e 66 64 2c 20 72 | 65 61 64 73 29 3b 0a 09 |i->fd, r|eads);..|
|0003e660| 69 66 20 28 74 69 2d 3e | 66 64 20 3e 20 2a 6d 61 |if (ti->|fd > *ma|
|0003e670| 78 5f 66 64 29 20 2a 6d | 61 78 5f 66 64 20 3d 20 |x_fd) *m|ax_fd = |
|0003e680| 74 69 2d 3e 66 64 3b 0a | 09 72 65 74 75 72 6e 3b |ti->fd;.|.return;|
|0003e690| 0a 7d 0a 0a 76 6f 69 64 | 20 74 63 70 5f 77 72 69 |.}..void| tcp_wri|
|0003e6a0| 74 65 28 73 74 72 75 63 | 74 20 4c 69 62 72 61 72 |te(struc|t Librar|
|0003e6b0| 79 20 2a 53 6f 63 6b 65 | 74 42 61 73 65 2c 20 74 |y *Socke|tBase, t|
|0003e6c0| 63 70 6d 65 73 73 61 67 | 65 20 2a 74 6d 2c 20 73 |cpmessag|e *tm, s|
|0003e6d0| 74 72 75 63 74 20 4c 69 | 73 74 20 2a 77 61 69 74 |truct Li|st *wait|
|0003e6e0| 5f 6c 69 73 74 2c 20 66 | 64 5f 73 65 74 20 2a 77 |_list, f|d_set *w|
|0003e6f0| 72 69 74 65 73 2c 20 73 | 62 33 32 20 2a 6d 61 78 |rites, s|b32 *max|
|0003e700| 5f 66 64 29 0a 7b 0a 09 | 74 63 70 69 64 65 6e 74 |_fd).{..|tcpident|
|0003e710| 20 2a 74 69 3b 0a 09 73 | 62 33 32 20 72 65 73 75 | *ti;..s|b32 resu|
|0003e720| 6c 74 3b 0a 0a 09 74 72 | 75 74 68 28 53 6f 63 6b |lt;...tr|uth(Sock|
|0003e730| 65 74 42 61 73 65 20 21 | 3d 20 6e 69 6c 29 3b 0a |etBase !|= nil);.|
|0003e740| 09 74 72 75 74 68 28 6d | 61 78 5f 66 64 20 21 3d |.truth(m|ax_fd !=|
|0003e750| 20 6e 69 6c 29 3b 0a 09 | 74 72 75 74 68 28 77 72 | nil);..|truth(wr|
|0003e760| 69 74 65 73 20 21 3d 20 | 6e 69 6c 29 3b 0a 09 74 |ites != |nil);..t|
|0003e770| 72 75 74 68 28 77 61 69 | 74 5f 6c 69 73 74 20 21 |ruth(wai|t_list !|
|0003e780| 3d 20 6e 69 6c 29 3b 0a | 0a 09 76 65 72 69 66 79 |= nil);.|..verify|
|0003e790| 28 74 6d 2c 20 56 5f 74 | 63 70 6d 65 73 73 61 67 |(tm, V_t|cpmessag|
|0003e7a0| 65 29 3b 0a 09 0a 09 74 | 69 20 3d 20 74 6d 2d 3e |e);....t|i = tm->|
|0003e7b0| 69 64 65 6e 74 3b 0a 0a | 09 69 66 20 28 21 74 69 |ident;..|.if (!ti|
|0003e7c0| 29 20 7b 0a 09 09 74 6d | 2d 3e 72 65 73 75 6c 74 |) {...tm|->result|
|0003e7d0| 20 3d 20 30 3b 0a 09 09 | 74 6d 2d 3e 65 72 72 6f | = 0;...|tm->erro|
|0003e7e0| 72 20 3d 20 45 52 52 4f | 52 5f 4e 4f 5f 43 4f 4e |r = ERRO|R_NO_CON|
|0003e7f0| 4e 45 43 54 49 4f 4e 3b | 0a 09 09 0a 09 09 52 65 |NECTION;|......Re|
+--------+-------------------------+-------------------------+--------+--------+
Only 250.0 KB of data is shown above.