home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / altsrcs / 3 / 3595 < prev    next >
SHell self-extracting ARchive  |  1991-07-11  |  38.9 KB

open in: MacOS 8.1     |     Win98     |     DOS

view JSON data     |     view as text

This file was processed as: SHell self-extracting ARchive (archive/shar).

You can browse this item here: 3595

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



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 4e 65 77 73 67 72 6f 75 | 70 73 3a 20 61 6c 74 2e |Newsgrou|ps: alt.|
|00000010| 73 6f 75 72 63 65 73 0a | 46 72 6f 6d 3a 20 6a 70 |sources.|From: jp|
|00000020| 72 40 6a 70 72 61 64 6c | 65 79 2e 6a 70 72 2e 63 |r@jpradl|ey.jpr.c|
|00000030| 6f 6d 20 28 4a 65 61 6e | 2d 50 69 65 72 72 65 20 |om (Jean|-Pierre |
|00000040| 52 61 64 6c 65 79 29 0a | 53 75 62 6a 65 63 74 3a |Radley).|Subject:|
|00000050| 20 58 43 20 33 2e 30 62 | 20 32 2f 35 20 43 6f 6d | XC 3.0b| 2/5 Com|
|00000060| 6d 75 6e 69 63 61 74 69 | 6f 6e 73 20 50 72 6f 67 |municati|ons Prog|
|00000070| 72 61 6d 0a 44 61 74 65 | 3a 20 54 75 65 2c 20 30 |ram.Date|: Tue, 0|
|00000080| 39 20 4a 75 6c 20 31 39 | 39 31 20 30 31 3a 30 32 |9 Jul 19|91 01:02|
|00000090| 3a 30 35 20 47 4d 54 0a | 4d 65 73 73 61 67 65 2d |:05 GMT.|Message-|
|000000a0| 49 44 3a 20 3c 31 39 39 | 31 4a 75 6c 30 39 2e 30 |ID: <199|1Jul09.0|
|000000b0| 31 30 32 30 35 2e 37 38 | 34 34 40 6a 70 72 61 64 |10205.78|44@jprad|
|000000c0| 6c 65 79 2e 6a 70 72 2e | 63 6f 6d 3e 0a 0a 2d 2d |ley.jpr.|com>..--|
|000000d0| 2d 63 75 74 2d 2d 2d 0a | 23 21 2f 62 69 6e 2f 73 |-cut---.|#!/bin/s|
|000000e0| 68 0a 23 20 54 68 69 73 | 20 69 73 20 61 20 73 68 |h.# This| is a sh|
|000000f0| 65 6c 6c 20 61 72 63 68 | 69 76 65 2c 20 6d 65 61 |ell arch|ive, mea|
|00000100| 6e 69 6e 67 3a 0a 23 20 | 31 2e 20 52 65 6d 6f 76 |ning:.# |1. Remov|
|00000110| 65 20 65 76 65 72 79 74 | 68 69 6e 67 20 61 62 6f |e everyt|hing abo|
|00000120| 76 65 20 74 68 65 20 23 | 21 2f 62 69 6e 2f 73 68 |ve the #|!/bin/sh|
|00000130| 20 6c 69 6e 65 2e 0a 23 | 20 32 2e 20 53 61 76 65 | line..#| 2. Save|
|00000140| 20 74 68 65 20 72 65 73 | 75 6c 74 69 6e 67 20 74 | the res|ulting t|
|00000150| 65 78 74 20 69 6e 20 61 | 20 66 69 6c 65 2e 0a 23 |ext in a| file..#|
|00000160| 20 33 2e 20 45 78 65 63 | 75 74 65 20 74 68 65 20 | 3. Exec|ute the |
|00000170| 66 69 6c 65 20 77 69 74 | 68 20 2f 62 69 6e 2f 73 |file wit|h /bin/s|
|00000180| 68 20 28 6e 6f 74 20 63 | 73 68 29 20 74 6f 20 63 |h (not c|sh) to c|
|00000190| 72 65 61 74 65 20 74 68 | 65 20 66 69 6c 65 73 3a |reate th|e files:|
|000001a0| 0a 23 09 78 63 62 2b 2e | 63 0a 23 09 78 63 70 6f |.#.xcb+.|c.#.xcpo|
|000001b0| 72 74 2e 63 0a 23 09 6d | 79 6d 61 6e 0a 23 20 54 |rt.c.#.m|yman.# T|
|000001c0| 68 69 73 20 61 72 63 68 | 69 76 65 20 63 72 65 61 |his arch|ive crea|
|000001d0| 74 65 64 3a 20 4d 6f 6e | 20 4a 75 6c 20 20 38 20 |ted: Mon| Jul 8 |
|000001e0| 32 30 3a 33 37 3a 33 35 | 20 31 39 39 31 0a 65 78 |20:37:35| 1991.ex|
|000001f0| 70 6f 72 74 20 50 41 54 | 48 3b 20 50 41 54 48 3d |port PAT|H; PATH=|
|00000200| 2f 62 69 6e 3a 24 50 41 | 54 48 0a 65 63 68 6f 20 |/bin:$PA|TH.echo |
|00000210| 73 68 61 72 3a 20 65 78 | 74 72 61 63 74 69 6e 67 |shar: ex|tracting|
|00000220| 20 22 27 78 63 62 2b 2e | 63 27 22 20 27 28 32 33 | "'xcb+.|c'" '(23|
|00000230| 31 37 33 20 63 68 61 72 | 61 63 74 65 72 73 29 27 |173 char|acters)'|
|00000240| 0a 69 66 20 74 65 73 74 | 20 2d 66 20 27 78 63 62 |.if test| -f 'xcb|
|00000250| 2b 2e 63 27 0a 74 68 65 | 6e 0a 09 65 63 68 6f 20 |+.c'.the|n..echo |
|00000260| 73 68 61 72 3a 20 77 69 | 6c 6c 20 6e 6f 74 20 6f |shar: wi|ll not o|
|00000270| 76 65 72 2d 77 72 69 74 | 65 20 65 78 69 73 74 69 |ver-writ|e existi|
|00000280| 6e 67 20 66 69 6c 65 20 | 22 27 78 63 62 2b 2e 63 |ng file |"'xcb+.c|
|00000290| 27 22 0a 65 6c 73 65 0a | 73 65 64 20 27 73 2f 5e |'".else.|sed 's/^|
|000002a0| 7c 2f 2f 27 20 3c 3c 20 | 5c 53 48 41 52 5f 45 4f ||//' << |\SHAR_EO|
|000002b0| 46 20 3e 20 27 78 63 62 | 2b 2e 63 27 0a 7c 2f 2a |F > 'xcb|+.c'.|/*|
|000002c0| 09 78 63 62 2b 2e 63 20 | 2d 2d 20 43 49 53 20 42 |.xcb+.c |-- CIS B|
|000002d0| 2b 20 50 72 6f 74 6f 63 | 6f 6c 20 6d 6f 64 75 6c |+ Protoc|ol modul|
|000002e0| 65 20 66 6f 72 20 58 43 | 0a 7c 09 54 68 69 73 20 |e for XC|.|.This |
|000002f0| 66 69 6c 65 20 75 73 65 | 73 20 34 2d 63 68 61 72 |file use|s 4-char|
|00000300| 61 63 74 65 72 20 74 61 | 62 73 74 6f 70 73 0a 7c |acter ta|bstops.||
|00000310| 20 2a 2f 0a 7c 0a 7c 23 | 69 66 64 65 66 20 44 45 | */.|.|#|ifdef DE|
|00000320| 42 55 47 0a 7c 23 75 6e | 64 65 66 20 44 45 42 55 |BUG.|#un|def DEBU|
|00000330| 47 0a 7c 23 65 6e 64 69 | 66 0a 7c 23 69 6e 63 6c |G.|#endi|f.|#incl|
|00000340| 75 64 65 20 3c 73 74 64 | 69 6f 2e 68 3e 0a 7c 23 |ude <std|io.h>.|#|
|00000350| 69 6e 63 6c 75 64 65 20 | 3c 73 79 73 2f 74 79 70 |include |<sys/typ|
|00000360| 65 73 2e 68 3e 0a 7c 23 | 69 6e 63 6c 75 64 65 20 |es.h>.|#|include |
|00000370| 3c 73 79 73 2f 73 74 61 | 74 2e 68 3e 0a 7c 23 69 |<sys/sta|t.h>.|#i|
|00000380| 6e 63 6c 75 64 65 20 3c | 73 69 67 6e 61 6c 2e 68 |nclude <|signal.h|
|00000390| 3e 0a 7c 23 69 6e 63 6c | 75 64 65 20 3c 74 69 6d |>.|#incl|ude <tim|
|000003a0| 65 2e 68 3e 0a 7c 23 69 | 6e 63 6c 75 64 65 20 3c |e.h>.|#i|nclude <|
|000003b0| 66 63 6e 74 6c 2e 68 3e | 0a 7c 23 69 6e 63 6c 75 |fcntl.h>|.|#inclu|
|000003c0| 64 65 20 3c 63 74 79 70 | 65 2e 68 3e 0a 7c 23 69 |de <ctyp|e.h>.|#i|
|000003d0| 6e 63 6c 75 64 65 20 22 | 78 63 2e 68 22 0a 7c 0a |nclude "|xc.h".|.|
|000003e0| 7c 23 64 65 66 69 6e 65 | 20 6d 69 6e 28 78 2c 79 ||#define| min(x,y|
|000003f0| 29 09 28 28 69 6e 74 29 | 28 78 29 3c 28 69 6e 74 |).((int)|(x)<(int|
|00000400| 29 28 79 29 3f 28 78 29 | 3a 28 79 29 29 0a 7c 23 |)(y)?(x)|:(y)).|#|
|00000410| 64 65 66 69 6e 65 20 6d | 61 78 28 78 2c 79 29 09 |define m|ax(x,y).|
|00000420| 28 28 69 6e 74 29 28 78 | 29 3e 28 69 6e 74 29 28 |((int)(x|)>(int)(|
|00000430| 79 29 3f 28 78 29 3a 28 | 79 29 29 0a 7c 23 64 65 |y)?(x):(|y)).|#de|
|00000440| 66 69 6e 65 20 4d 61 73 | 6b 4c 6f 77 52 61 6e 67 |fine Mas|kLowRang|
|00000450| 65 20 30 78 30 31 0a 7c | 23 64 65 66 69 6e 65 20 |e 0x01.||#define |
|00000460| 4d 61 73 6b 48 69 52 61 | 6e 67 65 20 30 78 31 30 |MaskHiRa|nge 0x10|
|00000470| 0a 7c 0a 7c 23 64 65 66 | 69 6e 65 20 43 68 65 63 |.|.|#def|ine Chec|
|00000480| 6b 5f 42 09 09 09 30 0a | 7c 23 64 65 66 69 6e 65 |k_B...0.||#define|
|00000490| 20 43 68 65 63 6b 5f 43 | 52 43 09 09 31 0a 7c 23 | Check_C|RC..1.|#|
|000004a0| 64 65 66 69 6e 65 20 53 | 65 6e 64 5f 41 68 65 61 |define S|end_Ahea|
|000004b0| 64 5f 42 75 66 66 65 72 | 73 09 35 0a 7c 0a 7c 23 |d_Buffer|s.5.|.|#|
|000004c0| 64 65 66 69 6e 65 20 51 | 75 6f 74 65 5f 44 65 66 |define Q|uote_Def|
|000004d0| 61 75 6c 74 09 09 30 0a | 7c 23 64 65 66 69 6e 65 |ault..0.||#define|
|000004e0| 20 51 75 6f 74 65 5f 4e | 6f 74 5f 4e 55 4c 4c 09 | Quote_N|ot_NULL.|
|000004f0| 09 31 0a 7c 23 64 65 66 | 69 6e 65 20 51 75 6f 74 |.1.|#def|ine Quot|
|00000500| 65 5f 45 78 74 65 6e 64 | 65 64 09 09 32 0a 7c 23 |e_Extend|ed..2.|#|
|00000510| 64 65 66 69 6e 65 20 51 | 75 6f 74 65 5f 46 75 6c |define Q|uote_Ful|
|00000520| 6c 09 09 33 0a 7c 23 64 | 65 66 69 6e 65 20 51 75 |l..3.|#d|efine Qu|
|00000530| 6f 74 65 5f 4d 61 73 6b | 09 09 34 0a 7c 0a 7c 23 |ote_Mask|..4.|.|#|
|00000540| 64 65 66 69 6e 65 20 4f | 76 65 72 77 72 69 74 65 |define O|verwrite|
|00000550| 09 30 0a 7c 23 64 65 66 | 69 6e 65 20 52 65 73 75 |.0.|#def|ine Resu|
|00000560| 6d 65 09 09 31 0a 7c 0a | 7c 23 64 65 66 69 6e 65 |me..1.|.||#define|
|00000570| 20 52 65 73 75 6d 65 5f | 41 6c 6c 6f 77 65 64 09 | Resume_|Allowed.|
|00000580| 09 30 0a 7c 23 64 65 66 | 69 6e 65 20 52 65 73 75 |.0.|#def|ine Resu|
|00000590| 6d 65 5f 4e 6f 74 5f 41 | 6c 6c 6f 77 65 64 09 31 |me_Not_A|llowed.1|
|000005a0| 0a 7c 23 64 65 66 69 6e | 65 20 52 65 73 75 6d 65 |.|#defin|e Resume|
|000005b0| 5f 46 61 69 6c 65 64 09 | 09 32 0a 7c 23 64 65 66 |_Failed.|.2.|#def|
|000005c0| 69 6e 65 20 52 65 73 75 | 6d 65 5f 44 65 6e 69 65 |ine Resu|me_Denie|
|000005d0| 64 09 09 33 0a 7c 0a 7c | 65 78 74 65 72 6e 20 73 |d..3.|.||extern s|
|000005e0| 68 6f 72 74 20 63 72 5f | 61 64 64 3b 0a 7c 65 78 |hort cr_|add;.|ex|
|000005f0| 74 65 72 6e 20 76 6f 69 | 64 20 63 6c 5f 6c 69 6e |tern voi|d cl_lin|
|00000600| 65 28 29 3b 0a 7c 73 74 | 61 74 69 63 20 63 68 61 |e();.|st|atic cha|
|00000610| 72 20 53 5f 42 75 66 66 | 65 72 5b 31 30 33 33 5d |r S_Buff|er[1033]|
|00000620| 2c 20 52 5f 42 75 66 66 | 65 72 5b 31 30 33 33 5d |, R_Buff|er[1033]|
|00000630| 2c 20 74 64 69 72 5b 33 | 32 5d 3b 0a 7c 63 68 61 |, tdir[3|2];.|cha|
|00000640| 72 20 20 20 4e 61 6d 65 | 5b 53 4d 5f 42 55 46 46 |r Name|[SM_BUFF|
|00000650| 5d 3b 0a 7c 73 74 61 74 | 69 63 20 75 6e 73 69 67 |];.|stat|ic unsig|
|00000660| 6e 65 64 20 63 68 61 72 | 20 4d 61 73 6b 5b 33 32 |ned char| Mask[32|
|00000670| 5d 3b 0a 7c 73 74 61 74 | 69 63 20 75 6e 73 69 67 |];.|stat|ic unsig|
|00000680| 6e 65 64 20 43 68 65 63 | 6b 73 75 6d 3b 0a 7c 73 |ned Chec|ksum;.|s|
|00000690| 74 61 74 69 63 20 69 6e | 74 09 43 68 2c 09 09 09 |tatic in|t.Ch,...|
|000006a0| 09 2f 2a 20 6c 61 73 74 | 20 63 68 61 72 20 72 65 |./* last| char re|
|000006b0| 61 64 20 66 72 6f 6d 20 | 72 65 6d 6f 74 65 20 2a |ad from |remote *|
|000006c0| 2f 0a 7c 09 09 09 51 75 | 6f 74 69 6e 67 2c 09 09 |/.|...Qu|oting,..|
|000006d0| 2f 2a 20 71 75 6f 74 69 | 6e 67 20 6c 65 76 65 6c |/* quoti|ng level|
|000006e0| 20 72 65 71 75 65 73 74 | 65 64 20 62 79 20 74 68 | request|ed by th|
|000006f0| 65 20 75 73 65 72 20 2a | 2f 0a 7c 09 09 09 57 69 |e user *|/.|...Wi|
|00000700| 6e 64 6f 77 5f 53 69 7a | 65 2c 09 2f 2a 20 53 65 |ndow_Siz|e,./* Se|
|00000710| 6e 64 20 73 69 7a 65 20 | 6f 66 20 73 65 6e 64 20 |nd size |of send |
|00000720| 61 68 65 61 64 20 77 69 | 6e 64 6f 77 20 2a 2f 0a |ahead wi|ndow */.|
|00000730| 7c 09 09 09 50 61 63 6b | 65 54 5f 53 69 7a 65 2c ||...Pack|eT_Size,|
|00000740| 09 2f 2a 20 4d 61 78 69 | 6d 75 6d 20 62 6c 6f 63 |./* Maxi|mum bloc|
|00000750| 6b 20 73 69 7a 65 2e 20 | 2a 2f 0a 7c 09 09 09 52 |k size. |*/.|...R|
|00000760| 5f 42 55 66 66 65 72 5f | 4c 65 6e 2c 20 53 5f 42 |_BUffer_|Len, S_B|
|00000770| 79 74 65 73 2c 20 52 5f | 42 79 74 65 73 2c 20 53 |ytes, R_|Bytes, S|
|00000780| 65 71 5f 4e 75 6d 2c 20 | 50 65 6e 64 69 6e 47 5f |eq_Num, |PendinG_|
|00000790| 43 6f 75 6e 74 2c 0a 7c | 09 09 09 4e 65 78 74 5f |Count,.||...Next_|
|000007a0| 50 61 63 6b 65 74 2c 20 | 50 61 63 6b 65 74 73 5f |Packet, |Packets_|
|000007b0| 42 74 77 6e 5f 41 43 4b | 73 2c 20 4c 61 73 74 5f |Btwn_ACK|s, Last_|
|000007c0| 41 43 4b 2c 20 74 65 78 | 74 6d 6f 64 65 2c 20 4c |ACK, tex|tmode, L|
|000007d0| 61 73 74 5f 43 68 72 2c | 0a 7c 09 09 09 53 65 6e |ast_Chr,|.|...Sen|
|000007e0| 64 5f 45 72 72 6f 72 73 | 2c 20 52 65 61 64 5f 45 |d_Errors|, Read_E|
|000007f0| 72 72 6f 72 73 3b 0a 7c | 73 74 61 74 69 63 20 73 |rrors;.||static s|
|00000800| 68 6f 72 74 20 4d 61 78 | 5f 45 72 72 6f 72 73 3d |hort Max|_Errors=|
|00000810| 31 30 2c 20 41 62 6f 72 | 74 5f 46 6c 61 67 2c 20 |10, Abor|t_Flag, |
|00000820| 4e 6f 74 5f 4d 61 73 6b | 65 64 2c 20 53 65 6e 74 |Not_Mask|ed, Sent|
|00000830| 5f 45 4e 51 2c 20 41 63 | 74 75 61 6c 5f 43 68 65 |_ENQ, Ac|tual_Che|
|00000840| 63 6b 2c 0a 7c 09 09 09 | 56 61 6c 69 64 5f 54 6f |ck,.|...|Valid_To|
|00000850| 5f 52 65 73 75 6d 65 5f | 44 6f 77 6e 6c 6f 61 64 |_Resume_|Download|
|00000860| 2c 20 56 61 6c 69 44 5f | 54 6f 5f 52 65 73 75 6d |, ValiD_|To_Resum|
|00000870| 65 5f 55 70 6c 6f 61 64 | 2c 0a 7c 09 09 09 53 65 |e_Upload|,.|...Se|
|00000880| 6e 64 5f 46 49 6c 65 5f | 49 6e 66 6f 72 6d 61 74 |nd_FIle_|Informat|
|00000890| 69 6f 6e 2c 20 50 61 63 | 6b 65 74 5f 52 65 63 65 |ion, Pac|ket_Rece|
|000008a0| 69 76 65 64 2c 20 52 65 | 73 75 6c 74 3b 0a 7c 73 |ived, Re|sult;.|s|
|000008b0| 74 61 74 69 63 20 46 49 | 4c 45 20 2a 44 61 74 61 |tatic FI|LE *Data|
|000008c0| 5f 46 69 6c 65 3b 0a 7c | 73 74 61 74 69 63 20 6c |_File;.||static l|
|000008d0| 6f 6e 67 09 61 6c 72 65 | 61 64 79 5f 68 61 76 65 |ong.alre|ady_have|
|000008e0| 2c 20 64 61 74 61 2c 20 | 74 6f 74 61 6c 5f 72 65 |, data, |total_re|
|000008f0| 61 64 2c 20 74 6f 74 61 | 6c 5f 73 65 6e 74 2c 0a |ad, tota|l_sent,.|
|00000900| 7c 09 09 09 66 73 69 7a | 65 2c 20 73 74 61 72 74 ||...fsiz|e, start|
|00000910| 2c 20 63 61 72 72 69 61 | 67 65 5f 72 65 74 75 72 |, carria|ge_retur|
|00000920| 6e 3b 0a 7c 0a 7c 74 79 | 70 65 64 65 66 20 65 6e |n;.|.|ty|pedef en|
|00000930| 75 6d 20 7b 0a 7c 09 53 | 5f 47 65 74 5f 44 4c 45 |um {.|.S|_Get_DLE|
|00000940| 2c 0a 7c 09 53 5f 44 4c | 45 5f 53 65 65 6e 2c 0a |,.|.S_DL|E_Seen,.|
|00000950| 7c 09 53 5f 44 4c 45 5f | 42 5f 53 65 65 6e 2c 0a ||.S_DLE_|B_Seen,.|
|00000960| 7c 09 53 5f 47 65 74 5f | 44 61 74 61 2c 0a 7c 09 ||.S_Get_|Data,.|.|
|00000970| 53 5f 47 65 74 5f 63 68 | 65 63 6b 2c 0a 7c 09 53 |S_Get_ch|eck,.|.S|
|00000980| 5f 47 65 74 5f 43 52 43 | 2c 0a 7c 09 53 5f 56 65 |_Get_CRC|,.|.S_Ve|
|00000990| 72 69 66 79 5f 43 52 43 | 2c 0a 7c 09 53 5f 56 45 |rify_CRC|,.|.S_VE|
|000009a0| 72 69 66 79 5f 43 4b 53 | 2c 0a 7c 09 53 5f 56 65 |rify_CKS|,.|.S_Ve|
|000009b0| 72 49 66 79 5f 50 61 63 | 6b 65 74 2c 0a 7c 09 53 |rIfy_Pac|ket,.|.S|
|000009c0| 5f 53 65 6e 64 5f 4e 41 | 4b 2c 0a 7c 09 53 5f 53 |_Send_NA|K,.|.S_S|
|000009d0| 65 6e 44 5f 41 43 4b 2c | 0a 7c 09 53 5f 53 45 6e |enD_ACK,|.|.S_SEn|
|000009e0| 64 5f 45 4e 51 2c 0a 7c | 09 53 5f 52 65 73 65 6e |d_ENQ,.||.S_Resen|
|000009f0| 64 5f 50 61 63 6b 65 74 | 73 2c 0a 7c 7d 20 53 65 |d_Packet|s,.|} Se|
|00000a00| 6e 64 65 72 5f 41 63 74 | 69 6f 6e 3b 0a 7c 0a 7c |nder_Act|ion;.|.||
|00000a10| 74 79 70 65 64 65 66 20 | 73 74 72 75 63 74 20 7b |typedef |struct {|
|00000a20| 0a 7c 09 69 6e 74 20 53 | 65 71 3b 0a 7c 09 69 6e |.|.int S|eq;.|.in|
|00000a30| 74 20 50 61 63 6b 65 54 | 5f 53 69 7a 65 3b 0a 7c |t PackeT|_Size;.||
|00000a40| 09 63 68 61 72 20 2a 70 | 61 63 6b 65 74 3b 0a 7c |.char *p|acket;.||
|00000a50| 7d 20 50 45 6e 64 69 6e | 67 5f 45 6c 65 6d 65 6e |} PEndin|g_Elemen|
|00000a60| 74 3b 0a 7c 0a 7c 50 45 | 6e 64 69 6e 67 5f 45 6c |t;.|.|PE|nding_El|
|00000a70| 65 6d 65 6e 74 20 50 65 | 6e 64 69 6e 67 5b 53 65 |ement Pe|nding[Se|
|00000a80| 6e 64 5f 41 68 65 61 64 | 5f 42 75 66 66 65 72 73 |nd_Ahead|_Buffers|
|00000a90| 5d 3b 0a 7c 0a 7c 65 78 | 74 65 72 6e 20 75 6e 73 |];.|.|ex|tern uns|
|00000aa0| 69 67 6e 65 64 20 73 68 | 6f 72 74 20 63 72 63 5f |igned sh|ort crc_|
|00000ab0| 78 6d 6f 64 65 6d 5f 74 | 61 62 5b 32 35 36 5d 3b |xmodem_t|ab[256];|
|00000ac0| 0a 7c 0a 7c 73 74 61 74 | 69 63 20 76 6f 69 64 20 |.|.|stat|ic void |
|00000ad0| 69 6e 69 74 5f 63 68 65 | 63 6b 28 29 0a 7c 7b 0a |init_che|ck().|{.|
|00000ae0| 7c 09 43 68 65 63 6b 73 | 75 6d 3d 41 63 74 75 61 ||.Checks|um=Actua|
|00000af0| 6c 5f 43 68 65 63 6b 20 | 3f 20 30 78 66 66 66 66 |l_Check |? 0xffff|
|00000b00| 20 3a 20 30 3b 0a 7c 7d | 0a 7c 0a 7c 73 74 61 74 | : 0;.|}|.|.|stat|
|00000b10| 69 63 20 76 6f 69 64 20 | 64 6f 5f 63 68 65 63 6b |ic void |do_check|
|00000b20| 73 75 6d 28 63 68 29 0a | 7c 75 6e 73 69 67 6e 65 |sum(ch).||unsigne|
|00000b30| 64 20 63 68 3b 0a 7c 7b | 0a 7c 09 69 66 20 28 41 |d ch;.|{|.|.if (A|
|00000b40| 63 74 75 61 6c 5f 43 68 | 65 63 6b 3d 3d 43 68 65 |ctual_Ch|eck==Che|
|00000b50| 63 6b 5f 42 29 7b 0a 7c | 09 09 43 68 65 63 6b 73 |ck_B){.||..Checks|
|00000b60| 75 6d 3c 3c 3d 31 3b 0a | 7c 09 09 69 66 20 28 43 |um<<=1;.||..if (C|
|00000b70| 68 65 63 6b 73 75 6d 3e | 32 35 35 29 0a 7c 09 09 |hecksum>|255).|..|
|00000b80| 09 43 68 65 63 6b 73 75 | 6d 3d 28 43 68 65 63 6b |.Checksu|m=(Check|
|00000b90| 73 75 6d 26 30 78 46 46 | 29 2b 31 3b 0a 7c 09 09 |sum&0xFF|)+1;.|..|
|00000ba0| 43 68 65 63 6b 73 75 6d | 2b 3d 63 68 26 30 78 46 |Checksum|+=ch&0xF|
|00000bb0| 46 3b 0a 7c 09 09 69 66 | 20 28 43 68 65 63 6b 73 |F;.|..if| (Checks|
|00000bc0| 75 6d 3e 32 35 35 29 0a | 7c 09 09 09 43 68 65 63 |um>255).||...Chec|
|00000bd0| 6b 73 75 6d 3d 28 43 68 | 65 63 6b 73 75 6d 26 30 |ksum=(Ch|ecksum&0|
|00000be0| 78 46 46 29 2b 31 3b 0a | 7c 09 7d 20 65 6c 73 65 |xFF)+1;.||.} else|
|00000bf0| 0a 7c 09 43 68 65 63 6b | 73 75 6d 3d 28 63 72 63 |.|.Check|sum=(crc|
|00000c00| 5f 78 6d 6f 64 65 6d 5f | 74 61 62 5b 28 28 43 68 |_xmodem_|tab[((Ch|
|00000c10| 65 63 6b 73 75 6d 3e 3e | 38 29 5e 63 68 29 26 30 |ecksum>>|8)^ch)&0|
|00000c20| 78 66 66 5d 5e 28 43 68 | 65 63 6b 73 75 6d 3c 3c |xff]^(Ch|ecksum<<|
|00000c30| 38 29 29 26 30 78 66 66 | 66 66 3b 0a 7c 7d 0a 7c |8))&0xff|ff;.|}.||
|00000c40| 0a 7c 2f 2a 20 23 64 65 | 66 69 6e 65 20 43 49 53 |.|/* #de|fine CIS|
|00000c50| 5f 44 45 42 55 47 20 2f | 2a 20 66 6f 72 20 42 2b |_DEBUG /|* for B+|
|00000c60| 20 72 65 63 6f 72 64 3b | 20 75 73 65 20 6f 6e 6c | record;| use onl|
|00000c70| 79 20 6f 6e 20 22 66 61 | 73 74 22 20 68 61 72 64 |y on "fa|st" hard|
|00000c80| 77 61 72 65 20 2a 2f 0a | 7c 0a 7c 23 69 66 64 65 |ware */.||.|#ifde|
|00000c90| 66 20 43 49 53 5f 44 45 | 42 55 47 0a 7c 73 74 61 |f CIS_DE|BUG.|sta|
|00000ca0| 74 69 63 20 46 49 4c 45 | 20 2a 62 66 70 3b 0a 7c |tic FILE| *bfp;.||
|00000cb0| 73 74 61 74 69 63 20 76 | 6f 69 64 20 78 63 6c 6f |static v|oid xclo|
|00000cc0| 67 28 64 69 72 2c 20 76 | 61 6c 29 0a 7c 63 68 61 |g(dir, v|al).|cha|
|00000cd0| 72 09 64 69 72 3b 0a 7c | 69 6e 74 09 76 61 6c 3b |r.dir;.||int.val;|
|00000ce0| 0a 7c 7b 0a 7c 09 73 74 | 61 74 69 63 20 69 6e 74 |.|{.|.st|atic int|
|00000cf0| 20 63 6e 74 2c 20 6c 61 | 73 74 64 69 72 3b 0a 7c | cnt, la|stdir;.||
|00000d00| 0a 7c 09 69 66 20 28 62 | 66 70 3d 3d 4e 55 4c 4c |.|.if (b|fp==NULL|
|00000d10| 46 29 0a 7c 09 09 62 66 | 70 3d 66 6f 70 65 6e 28 |F).|..bf|p=fopen(|
|00000d20| 22 78 63 2e 6c 6f 67 22 | 2c 22 77 22 29 2c 0a 7c |"xc.log"|,"w"),.||
|00000d30| 09 09 63 6e 74 3d 30 2c | 0a 7c 09 09 6c 61 73 74 |..cnt=0,|.|..last|
|00000d40| 64 69 72 3d 64 69 72 3b | 0a 7c 0a 7c 09 69 66 20 |dir=dir;|.|.|.if |
|00000d50| 28 2b 2b 63 6e 74 3e 32 | 30 7c 7c 6c 61 73 74 64 |(++cnt>2|0||lastd|
|00000d60| 69 72 21 3d 64 69 72 29 | 0a 7c 09 09 66 70 72 69 |ir!=dir)|.|..fpri|
|00000d70| 6e 74 66 28 62 66 70 2c | 22 5c 6e 22 29 2c 0a 7c |ntf(bfp,|"\n"),.||
|00000d80| 09 09 63 6e 74 3d 31 3b | 0a 7c 0a 7c 09 69 66 20 |..cnt=1;|.|.|.if |
|00000d90| 28 6c 61 73 74 64 69 72 | 21 3d 64 69 72 29 0a 7c |(lastdir|!=dir).||
|00000da0| 09 09 66 70 72 69 6e 74 | 66 28 62 66 70 2c 22 5c |..fprint|f(bfp,"\|
|00000db0| 6e 22 29 3b 0a 7c 0a 7c | 09 69 66 20 28 76 61 6c |n");.|.||.if (val|
|00000dc0| 3e 27 7e 27 7c 7c 76 61 | 6c 3c 27 20 27 29 0a 7c |>'~'||va|l<' ').||
|00000dd0| 09 09 66 70 72 69 6e 74 | 66 28 62 66 70 2c 22 25 |..fprint|f(bfp,"%|
|00000de0| 63 25 31 78 25 31 78 20 | 22 2c 64 69 72 2c 76 61 |c%1x%1x |",dir,va|
|00000df0| 6c 2f 31 36 2c 76 61 6c | 25 31 36 29 3b 0a 7c 09 |l/16,val|%16);.|.|
|00000e00| 65 6c 73 65 0a 7c 09 09 | 66 70 72 69 6e 74 66 28 |else.|..|fprintf(|
|00000e10| 62 66 70 2c 22 25 63 25 | 63 20 20 22 2c 64 69 72 |bfp,"%c%|c ",dir|
|00000e20| 2c 76 61 6c 29 3b 0a 7c | 0a 7c 09 6c 61 73 74 64 |,val);.||.|.lastd|
|00000e30| 69 72 3d 64 69 72 3b 0a | 7c 7d 0a 7c 0a 7c 73 74 |ir=dir;.||}.|.|st|
|00000e40| 61 74 69 63 20 76 6f 69 | 64 20 57 68 79 5f 4e 41 |atic voi|d Why_NA|
|00000e50| 4b 28 72 65 61 73 6f 6e | 29 0a 7c 63 68 61 72 20 |K(reason|).|char |
|00000e60| 2a 72 65 61 73 6f 6e 3b | 0a 7c 7b 0a 7c 09 73 70 |*reason;|.|{.|.sp|
|00000e70| 72 69 6e 74 66 28 4d 73 | 67 2c 22 53 65 6e 64 69 |rintf(Ms|g,"Sendi|
|00000e80| 6e 67 20 4e 41 4b 2c 20 | 25 73 22 2c 72 65 61 73 |ng NAK, |%s",reas|
|00000e90| 6f 6e 29 3b 0a 7c 09 73 | 68 6f 77 28 30 2c 4d 73 |on);.|.s|how(0,Ms|
|00000ea0| 67 29 3b 0a 7c 7d 0a 7c | 0a 7c 23 65 6c 73 65 0a |g);.|}.||.|#else.|
|00000eb0| 7c 23 64 65 66 69 6e 65 | 20 78 63 6c 6f 67 28 64 ||#define| xclog(d|
|00000ec0| 69 72 2c 76 61 6c 29 0a | 7c 23 64 65 66 69 6e 65 |ir,val).||#define|
|00000ed0| 20 57 68 79 5f 4e 41 4b | 28 72 65 61 73 6f 6e 29 | Why_NAK|(reason)|
|00000ee0| 0a 7c 23 65 6e 64 69 66 | 0a 7c 0a 7c 73 74 61 74 |.|#endif|.|.|stat|
|00000ef0| 69 63 20 76 6f 69 64 20 | 73 74 61 74 73 28 63 6f |ic void |stats(co|
|00000f00| 75 6e 74 29 0a 7c 69 6e | 74 20 63 6f 75 6e 74 3b |unt).|in|t count;|
|00000f10| 0a 7c 7b 0a 7c 09 69 6e | 74 20 72 61 74 65 2c 20 |.|{.|.in|t rate, |
|00000f20| 6d 69 6e 75 74 65 73 2c | 20 73 65 63 2c 20 64 61 |minutes,| sec, da|
|00000f30| 74 61 5f 70 65 72 63 65 | 6e 74 2c 20 72 61 74 65 |ta_perce|nt, rate|
|00000f40| 5f 70 65 72 63 65 6e 74 | 3b 0a 7c 09 6c 6f 6e 67 |_percent|;.|.long|
|00000f50| 20 63 68 61 72 73 2c 20 | 65 6c 61 70 73 65 64 2c | chars, |elapsed,|
|00000f60| 20 6e 6f 77 2c 20 72 65 | 6d 3b 0a 7c 0a 7c 09 64 | now, re|m;.|.|.d|
|00000f70| 61 74 61 2b 3d 63 6f 75 | 6e 74 3b 0a 7c 0a 7c 09 |ata+=cou|nt;.|.|.|
|00000f80| 69 66 20 28 66 73 69 7a | 65 3d 3d 30 29 0a 7c 09 |if (fsiz|e==0).|.|
|00000f90| 09 64 61 74 61 5f 70 65 | 72 63 65 6e 74 3d 30 3b |.data_pe|rcent=0;|
|00000fa0| 0a 7c 09 65 6c 73 65 0a | 7c 09 09 64 61 74 61 5f |.|.else.||..data_|
|00000fb0| 70 65 72 63 65 6e 74 3d | 31 30 30 2a 28 64 61 74 |percent=|100*(dat|
|00000fc0| 61 2b 63 61 72 72 69 61 | 67 65 5f 72 65 74 75 72 |a+carria|ge_retur|
|00000fd0| 6e 29 2f 66 73 69 7a 65 | 3b 0a 7c 0a 7c 09 69 66 |n)/fsize|;.|.|.if|
|00000fe0| 20 28 64 61 74 61 5f 70 | 65 72 63 65 6e 74 3e 31 | (data_p|ercent>1|
|00000ff0| 30 30 29 0a 7c 09 09 64 | 61 74 61 5f 70 65 72 63 |00).|..d|ata_perc|
|00001000| 65 6e 74 3d 31 30 30 3b | 0a 7c 0a 7c 09 74 69 6d |ent=100;|.|.|.tim|
|00001010| 65 28 26 6e 6f 77 29 3b | 0a 7c 0a 7c 09 65 6c 61 |e(&now);|.|.|.ela|
|00001020| 70 73 65 64 3d 6e 6f 77 | 2d 73 74 61 72 74 3b 0a |psed=now|-start;.|
|00001030| 7c 09 63 68 61 72 73 3d | 64 61 74 61 2b 63 61 72 ||.chars=|data+car|
|00001040| 72 69 61 67 65 5f 72 65 | 74 75 72 6e 2d 61 6c 72 |riage_re|turn-alr|
|00001050| 65 61 64 79 5f 68 61 76 | 65 2d 28 74 64 69 72 5b |eady_hav|e-(tdir[|
|00001060| 30 5d 3d 3d 27 54 27 3f | 50 61 63 6b 65 54 5f 53 |0]=='T'?|PackeT_S|
|00001070| 69 7a 65 2d 31 3a 30 29 | 3b 0a 7c 09 69 66 20 28 |ize-1:0)|;.|.if (|
|00001080| 65 6c 61 70 73 65 64 3c | 35 7c 7c 63 68 61 72 73 |elapsed<|5||chars|
|00001090| 3d 3d 30 29 0a 7c 09 09 | 74 74 67 6f 74 6f 28 4c |==0).|..|ttgoto(L|
|000010a0| 49 2d 36 2c 32 36 29 2c | 0a 7c 09 09 66 70 72 69 |I-6,26),|.|..fpri|
|000010b0| 6e 74 66 28 74 66 70 2c | 22 65 73 74 69 6d 61 74 |ntf(tfp,|"estimat|
|000010c0| 69 6e 67 22 29 3b 0a 7c | 09 65 6c 73 65 20 7b 0a |ing");.||.else {.|
|000010d0| 7c 09 09 72 61 74 65 3d | 63 68 61 72 73 2f 65 6c ||..rate=|chars/el|
|000010e0| 61 70 73 65 64 3b 0a 7c | 09 09 72 65 6d 3d 28 66 |apsed;.||..rem=(f|
|000010f0| 73 69 7a 65 2d 28 64 61 | 74 61 2b 63 61 72 72 69 |size-(da|ta+carri|
|00001100| 61 67 65 5f 72 65 74 75 | 72 6e 2d 61 6c 72 65 61 |age_retu|rn-alrea|
|00001110| 64 79 5f 68 61 76 65 29 | 29 2f 72 61 74 65 3b 0a |dy_have)|)/rate;.|
|00001120| 7c 09 09 6d 69 6e 75 74 | 65 73 3d 72 65 6d 2f 36 ||..minut|es=rem/6|
|00001130| 30 3b 0a 7c 09 09 73 65 | 63 3d 72 65 6d 25 36 30 |0;.|..se|c=rem%60|
|00001140| 3b 0a 7c 09 09 72 61 74 | 65 5f 70 65 72 63 65 6e |;.|..rat|e_percen|
|00001150| 74 3d 31 30 30 2a 72 61 | 74 65 2f 6d 72 61 74 65 |t=100*ra|te/mrate|
|00001160| 28 4e 55 4c 4c 53 29 3b | 0a 7c 0a 7c 09 09 74 74 |(NULLS);|.|.|..tt|
|00001170| 67 6f 74 6f 28 4c 49 2d | 36 2c 32 36 29 3b 0a 7c |goto(LI-|6,26);.||
|00001180| 09 09 66 70 72 69 6e 74 | 66 28 74 66 70 2c 22 25 |..fprint|f(tfp,"%|
|00001190| 38 2e 31 64 3a 25 32 2e | 32 64 22 2c 6d 69 6e 75 |8.1d:%2.|2d",minu|
|000011a0| 74 65 73 2c 73 65 63 29 | 3b 0a 7c 0a 7c 09 09 6d |tes,sec)|;.|.|..m|
|000011b0| 69 6e 75 74 65 73 3d 65 | 6c 61 70 73 65 64 2f 36 |inutes=e|lapsed/6|
|000011c0| 30 3b 0a 7c 09 09 73 65 | 63 3d 65 6c 61 70 73 65 |0;.|..se|c=elapse|
|000011d0| 64 25 36 30 3b 0a 7c 09 | 09 74 74 67 6f 74 6f 28 |d%60;.|.|.ttgoto(|
|000011e0| 4c 49 2d 36 2c 36 31 29 | 3b 0a 7c 09 09 66 70 72 |LI-6,61)|;.|..fpr|
|000011f0| 69 6e 74 66 28 74 66 70 | 2c 22 25 38 2e 31 64 3a |intf(tfp|,"%8.1d:|
|00001200| 25 32 2e 32 64 22 2c 6d | 69 6e 75 74 65 73 2c 73 |%2.2d",m|inutes,s|
|00001210| 65 63 29 3b 0a 7c 0a 7c | 09 09 74 74 67 6f 74 6f |ec);.|.||..ttgoto|
|00001220| 28 4c 49 2d 34 2c 31 34 | 29 3b 0a 7c 09 09 66 70 |(LI-4,14|);.|..fp|
|00001230| 72 69 6e 74 66 28 74 66 | 70 2c 22 52 61 74 65 20 |rintf(tf|p,"Rate |
|00001240| 69 73 20 25 64 20 63 68 | 61 72 73 20 70 65 72 20 |is %d ch|ars per |
|00001250| 73 65 63 6f 6e 64 20 28 | 25 64 20 25 25 20 6f 66 |second (|%d %% of|
|00001260| 20 6e 6f 6d 69 6e 61 6c | 20 62 70 73 29 20 5c 6e | nominal| bps) \n|
|00001270| 22 2c 0a 7c 09 09 09 72 | 61 74 65 2c 72 61 74 65 |",.|...r|ate,rate|
|00001280| 5f 70 65 72 63 65 6e 74 | 29 3b 0a 7c 2f 2a 0a 7c |_percent|);.|/*.||
|00001290| 09 09 74 74 67 6f 74 6f | 28 4c 49 2d 34 2c 32 36 |..ttgoto|(LI-4,26|
|000012a0| 29 3b 0a 7c 09 09 66 70 | 72 69 6e 74 66 28 74 66 |);.|..fp|rintf(tf|
|000012b0| 70 2c 22 52 61 74 65 20 | 69 73 20 25 64 20 63 68 |p,"Rate |is %d ch|
|000012c0| 61 72 73 20 70 65 72 20 | 73 65 63 6f 6e 64 20 5c |ars per |second \|
|000012d0| 6e 22 2c 0a 7c 09 09 09 | 72 61 74 65 2c 72 61 74 |n",.|...|rate,rat|
|000012e0| 65 5f 70 65 72 63 65 6e | 74 29 3b 0a 7c 2a 2f 0a |e_percen|t);.|*/.|
|000012f0| 7c 09 7d 0a 7c 0a 7c 09 | 74 74 67 6f 74 6f 28 4c ||.}.|.|.|ttgoto(L|
|00001300| 49 2d 38 2c 30 29 2c 0a | 7c 09 66 70 72 69 6e 74 |I-8,0),.||.fprint|
|00001310| 66 28 74 66 70 2c 22 25 | 38 2e 31 6c 64 22 2c 74 |f(tfp,"%|8.1ld",t|
|00001320| 6f 74 61 6c 5f 73 65 6e | 74 29 2c 0a 7c 09 74 74 |otal_sen|t),.|.tt|
|00001330| 67 6f 74 6f 28 4c 49 2d | 38 2c 32 30 29 2c 0a 7c |goto(LI-|8,20),.||
|00001340| 09 66 70 72 69 6e 74 66 | 28 74 66 70 2c 22 25 38 |.fprintf|(tfp,"%8|
|00001350| 2e 31 6c 64 22 2c 74 6f | 74 61 6c 5f 72 65 61 64 |.1ld",to|tal_read|
|00001360| 29 2c 0a 7c 09 74 74 67 | 6f 74 6f 28 4c 49 2d 38 |),.|.ttg|oto(LI-8|
|00001370| 2c 34 30 29 3b 0a 7c 09 | 69 66 20 28 64 61 74 61 |,40);.|.|if (data|
|00001380| 5f 70 65 72 63 65 6e 74 | 3d 3d 30 29 0a 7c 09 09 |_percent|==0).|..|
|00001390| 66 70 72 69 6e 74 66 28 | 74 66 70 2c 22 25 38 2e |fprintf(|tfp,"%8.|
|000013a0| 31 6c 64 22 2c 64 61 74 | 61 29 3b 0a 7c 09 65 6c |1ld",dat|a);.|.el|
|000013b0| 73 65 0a 7c 09 09 66 70 | 72 69 6e 74 66 28 74 66 |se.|..fp|rintf(tf|
|000013c0| 70 2c 22 25 38 2e 31 6c | 64 20 25 33 2e 31 75 20 |p,"%8.1l|d %3.1u |
|000013d0| 25 25 22 2c 64 61 74 61 | 2c 64 61 74 61 5f 70 65 |%%",data|,data_pe|
|000013e0| 72 63 65 6e 74 29 3b 0a | 7c 09 69 66 20 28 63 61 |rcent);.||.if (ca|
|000013f0| 72 72 69 61 67 65 5f 72 | 65 74 75 72 6e 29 0a 7c |rriage_r|eturn).||
|00001400| 09 09 74 74 67 6f 74 6f | 28 4c 49 2d 38 2c 36 30 |..ttgoto|(LI-8,60|
|00001410| 29 2c 0a 7c 09 09 66 70 | 72 69 6e 74 66 28 74 66 |),.|..fp|rintf(tf|
|00001420| 70 2c 22 25 2b 37 2e 31 | 6c 64 22 2c 63 61 72 72 |p,"%+7.1|ld",carr|
|00001430| 69 61 67 65 5f 72 65 74 | 75 72 6e 29 3b 0a 7c 7d |iage_ret|urn);.|}|
|00001440| 0a 7c 0a 7c 73 74 61 74 | 69 63 20 76 6f 69 64 20 |.|.|stat|ic void |
|00001450| 73 68 6f 77 6d 6f 64 65 | 28 29 0a 7c 7b 0a 7c 09 |showmode|().|{.|.|
|00001460| 69 6e 74 20 6c 3b 0a 7c | 09 73 70 72 69 6e 74 66 |int l;.||.sprintf|
|00001470| 28 4d 73 67 2c 22 25 73 | 20 25 73 20 28 25 6c 64 |(Msg,"%s| %s (%ld|
|00001480| 20 62 79 74 65 73 29 20 | 61 73 20 25 73 22 2c 74 | bytes) |as %s",t|
|00001490| 64 69 72 2c 4e 61 6d 65 | 2c 66 73 69 7a 65 2c 0a |dir,Name|,fsize,.|
|000014a0| 7c 09 09 74 65 78 74 6d | 6f 64 65 3f 22 41 53 43 ||..textm|ode?"ASC|
|000014b0| 49 49 22 3a 22 42 49 4e | 41 52 59 22 29 3b 0a 7c |II":"BIN|ARY");.||
|000014c0| 0a 7c 09 74 74 67 6f 74 | 6f 28 4c 49 2d 31 32 2c |.|.ttgot|o(LI-12,|
|000014d0| 30 29 3b 0a 7c 09 63 6c | 5f 6c 69 6e 65 28 29 3b |0);.|.cl|_line();|
|000014e0| 0a 7c 09 69 66 20 28 28 | 6c 3d 73 74 72 6c 65 6e |.|.if ((|l=strlen|
|000014f0| 28 4d 73 67 29 29 20 3c | 20 43 4f 29 0a 7c 09 09 |(Msg)) <| CO).|..|
|00001500| 74 74 67 6f 74 6f 28 4c | 49 2d 31 32 2c 28 43 4f |ttgoto(L|I-12,(CO|
|00001510| 2d 6c 29 2f 32 20 2d 31 | 29 3b 0a 7c 09 66 70 72 |-l)/2 -1|);.|.fpr|
|00001520| 69 6e 74 66 28 74 66 70 | 2c 4d 73 67 29 3b 0a 7c |intf(tfp|,Msg);.||
|00001530| 0a 7c 09 74 69 6d 65 28 | 26 73 74 61 72 74 29 3b |.|.time(|&start);|
|00001540| 0a 7c 7d 0a 7c 0a 7c 73 | 74 61 74 69 63 20 76 6f |.|}.|.|s|tatic vo|
|00001550| 69 64 20 44 69 73 63 61 | 72 64 5f 41 43 4b 65 64 |id Disca|rd_ACKed|
|00001560| 5f 50 61 63 6b 65 74 73 | 28 29 0a 7c 7b 0a 7c 09 |_Packets|().|{.|.|
|00001570| 69 6e 74 20 69 2c 20 6e | 3b 0a 7c 09 75 6e 73 69 |int i, n|;.|.unsi|
|00001580| 67 6e 65 64 20 73 68 6f | 72 74 20 50 61 63 6b 65 |gned sho|rt Packe|
|00001590| 74 5f 41 63 6b 65 64 3d | 46 41 4c 53 45 3b 0a 7c |t_Acked=|FALSE;.||
|000015a0| 0a 7c 09 4c 61 73 74 5f | 41 43 4b 3d 43 68 3b 0a |.|.Last_|ACK=Ch;.|
|000015b0| 7c 09 6e 3d 28 4e 65 78 | 74 5f 50 61 63 6b 65 74 ||.n=(Nex|t_Packet|
|000015c0| 2b 50 65 6e 64 69 6e 47 | 5f 43 6f 75 6e 74 29 25 |+PendinG|_Count)%|
|000015d0| 53 65 6e 64 5f 41 68 65 | 61 64 5f 42 75 66 66 65 |Send_Ahe|ad_Buffe|
|000015e0| 72 73 3b 0a 7c 0a 7c 09 | 66 6f 72 20 28 69 3d 50 |rs;.|.|.|for (i=P|
|000015f0| 65 6e 64 69 6e 47 5f 43 | 6f 75 6e 74 3b 69 3e 30 |endinG_C|ount;i>0|
|00001600| 3b 69 2d 2d 29 7b 0a 7c | 09 09 6e 2d 2d 3b 0a 7c |;i--){.||..n--;.||
|00001610| 09 09 69 66 20 28 6e 3c | 30 29 0a 7c 09 09 09 6e |..if (n<|0).|...n|
|00001620| 2b 3d 35 3b 0a 7c 0a 7c | 09 09 69 66 20 28 50 65 |+=5;.|.||..if (Pe|
|00001630| 6e 64 69 6e 67 5b 6e 5d | 2e 53 65 71 3d 3d 43 68 |nding[n]|.Seq==Ch|
|00001640| 2d 27 30 27 29 0a 7c 09 | 09 09 50 61 63 6b 65 74 |-'0').|.|..Packet|
|00001650| 5f 41 63 6b 65 64 3d 54 | 52 55 45 2c 0a 7c 09 09 |_Acked=T|RUE,.|..|
|00001660| 09 4e 65 78 74 5f 50 61 | 63 6b 65 74 3d 28 6e 2b |.Next_Pa|cket=(n+|
|00001670| 31 29 25 53 65 6e 64 5f | 41 68 65 61 64 5f 42 75 |1)%Send_|Ahead_Bu|
|00001680| 66 66 65 72 73 3b 0a 7c | 0a 7c 09 09 69 66 20 28 |ffers;.||.|..if (|
|00001690| 50 61 63 6b 65 74 5f 41 | 63 6b 65 64 3d 3d 54 52 |Packet_A|cked==TR|
|000016a0| 55 45 29 0a 7c 09 09 09 | 66 72 65 65 28 50 65 6e |UE).|...|free(Pen|
|000016b0| 64 69 6e 67 5b 6e 5d 2e | 70 61 63 6b 65 74 29 2c |ding[n].|packet),|
|000016c0| 0a 7c 09 09 09 50 65 6e | 64 69 6e 67 5b 6e 5d 2e |.|...Pen|ding[n].|
|000016d0| 70 61 63 6b 65 74 3d 4e | 55 4c 4c 53 2c 0a 7c 09 |packet=N|ULLS,.|.|
|000016e0| 09 09 50 65 6e 64 69 6e | 47 5f 43 6f 75 6e 74 2d |..Pendin|G_Count-|
|000016f0| 2d 3b 0a 7c 09 7d 0a 7c | 7d 0a 7c 0a 7c 73 74 61 |-;.|.}.||}.|.|sta|
|00001700| 74 69 63 20 76 6f 69 64 | 20 53 65 6e 64 5f 42 79 |tic void| Send_By|
|00001710| 74 65 28 63 68 29 0a 7c | 69 6e 74 20 63 68 3b 0a |te(ch).||int ch;.|
|00001720| 7c 7b 0a 7c 09 73 65 6e | 64 62 79 74 65 28 63 68 ||{.|.sen|dbyte(ch|
|00001730| 29 3b 0a 7c 09 74 6f 74 | 61 6c 5f 73 65 6e 74 2b |);.|.tot|al_sent+|
|00001740| 2b 3b 0a 7c 09 78 63 6c | 6f 67 28 27 3e 27 2c 63 |+;.|.xcl|og('>',c|
|00001750| 68 29 3b 0a 7c 7d 0a 7c | 0a 7c 73 74 61 74 69 63 |h);.|}.||.|static|
|00001760| 20 76 6f 69 64 20 53 65 | 6e 64 5f 4d 61 73 6b 65 | void Se|nd_Maske|
|00001770| 64 5f 42 79 74 65 28 63 | 68 29 0a 7c 69 6e 74 20 |d_Byte(c|h).|int |
|00001780| 63 68 3b 0a 7c 7b 0a 7c | 09 69 66 20 28 63 68 3c |ch;.|{.||.if (ch<|
|00001790| 30 78 32 30 29 7b 0a 7c | 09 09 69 66 20 28 51 75 |0x20){.||..if (Qu|
|000017a0| 6f 74 69 6e 67 3d 3d 51 | 75 6f 74 65 5f 46 75 6c |oting==Q|uote_Ful|
|000017b0| 6c 7c 7c 28 4d 61 73 6b | 5b 63 68 5d 26 4d 61 73 |l||(Mask|[ch]&Mas|
|000017c0| 6b 4c 6f 77 52 61 6e 67 | 65 29 29 0a 7c 09 09 09 |kLowRang|e)).|...|
|000017d0| 53 65 6e 64 5f 42 79 74 | 65 28 44 4c 45 29 2c 0a |Send_Byt|e(DLE),.|
|000017e0| 7c 09 09 09 63 68 2b 3d | 27 40 27 3b 0a 7c 09 7d ||...ch+=|'@';.|.}|
|000017f0| 20 65 6c 73 65 20 69 66 | 20 28 63 68 3e 3d 30 78 | else if| (ch>=0x|
|00001800| 38 30 26 26 63 68 3c 30 | 78 41 30 26 26 0a 7c 09 |80&&ch<0|xA0&&.|.|
|00001810| 09 28 51 75 6f 74 69 6e | 67 3d 3d 51 75 6f 74 65 |.(Quotin|g==Quote|
|00001820| 5f 46 75 6c 6c 7c 7c 28 | 4d 61 73 6b 5b 63 68 2d |_Full||(|Mask[ch-|
|00001830| 30 78 38 30 5d 26 4d 61 | 73 6b 48 69 52 61 6e 67 |0x80]&Ma|skHiRang|
|00001840| 65 29 29 29 0a 7c 09 09 | 09 53 65 6e 64 5f 42 79 |e))).|..|.Send_By|
|00001850| 74 65 28 44 4c 45 29 2c | 0a 7c 09 09 09 63 68 3d |te(DLE),|.|...ch=|
|00001860| 63 68 2b 27 60 27 2d 30 | 78 38 30 3b 0a 7c 0a 7c |ch+'`'-0|x80;.|.||
|00001870| 09 53 65 6e 64 5f 42 79 | 74 65 28 63 68 29 3b 0a |.Send_By|te(ch);.|
|00001880| 7c 7d 0a 7c 0a 7c 73 74 | 61 74 69 63 20 52 65 61 ||}.|.|st|atic Rea|
|00001890| 64 5f 42 79 74 65 28 29 | 0a 7c 7b 0a 7c 09 69 66 |d_Byte()|.|{.|.if|
|000018a0| 20 28 28 43 68 3d 72 65 | 61 64 62 79 74 65 28 31 | ((Ch=re|adbyte(1|
|000018b0| 30 29 29 3d 3d 20 2d 31 | 29 0a 7c 09 09 72 65 74 |0))== -1|).|..ret|
|000018c0| 75 72 6e 20 46 41 49 4c | 55 52 45 3b 0a 7c 09 74 |urn FAIL|URE;.|.t|
|000018d0| 6f 74 61 6c 5f 72 65 61 | 64 2b 2b 3b 0a 7c 09 78 |otal_rea|d++;.|.x|
|000018e0| 63 6c 6f 67 28 27 3c 27 | 2c 43 68 29 3b 0a 7c 09 |clog('<'|,Ch);.|.|
|000018f0| 72 65 74 75 72 6e 20 53 | 55 43 43 45 53 53 3b 0a |return S|UCCESS;.|
|00001900| 7c 7d 0a 7c 0a 7c 73 74 | 61 74 69 63 20 52 65 61 ||}.|.|st|atic Rea|
|00001910| 64 5f 4d 61 73 6b 65 64 | 5f 42 79 74 65 28 29 0a |d_Masked|_Byte().|
|00001920| 7c 7b 0a 7c 09 4e 6f 74 | 5f 4d 61 73 6b 65 64 3d ||{.|.Not|_Masked=|
|00001930| 54 52 55 45 3b 0a 7c 0a | 7c 09 69 66 20 28 21 52 |TRUE;.|.||.if (!R|
|00001940| 65 61 64 5f 42 79 74 65 | 28 29 29 0a 7c 09 09 72 |ead_Byte|()).|..r|
|00001950| 65 74 75 72 6e 20 46 41 | 49 4c 55 52 45 3b 0a 7c |eturn FA|ILURE;.||
|00001960| 0a 7c 09 69 66 20 28 43 | 68 3d 3d 44 4c 45 29 7b |.|.if (C|h==DLE){|
|00001970| 0a 7c 09 09 69 66 20 28 | 21 52 65 61 64 5f 42 79 |.|..if (|!Read_By|
|00001980| 74 65 28 29 29 0a 7c 09 | 09 09 72 65 74 75 72 6e |te()).|.|..return|
|00001990| 20 46 41 49 4c 55 52 45 | 3b 0a 7c 0a 7c 09 09 4e | FAILURE|;.|.|..N|
|000019a0| 6f 74 5f 4d 61 73 6b 65 | 64 3d 46 41 4c 53 45 3b |ot_Maske|d=FALSE;|
|000019b0| 0a 7c 0a 7c 09 09 69 66 | 20 28 43 68 3e 3d 27 60 |.|.|..if| (Ch>='`|
|000019c0| 27 29 0a 7c 09 09 09 43 | 68 2b 3d 30 78 38 30 3b |').|...C|h+=0x80;|
|000019d0| 0a 7c 0a 7c 09 09 43 68 | 26 3d 30 78 39 46 3b 0a |.|.|..Ch|&=0x9F;.|
|000019e0| 7c 09 7d 0a 7c 09 72 65 | 74 75 72 6e 20 53 55 43 ||.}.|.re|turn SUC|
|000019f0| 43 45 53 53 3b 0a 7c 7d | 0a 7c 0a 7c 73 74 61 74 |CESS;.|}|.|.|stat|
|00001a00| 69 63 20 76 6f 69 64 20 | 53 65 6e 64 5f 41 43 4b |ic void |Send_ACK|
|00001a10| 28 29 0a 7c 7b 0a 7c 09 | 53 65 6e 64 5f 42 79 74 |().|{.|.|Send_Byt|
|00001a20| 65 28 44 4c 45 29 3b 0a | 7c 09 53 65 6e 64 5f 42 |e(DLE);.||.Send_B|
|00001a30| 79 74 65 28 53 65 71 5f | 4e 75 6d 2b 27 30 27 29 |yte(Seq_|Num+'0')|
|00001a40| 3b 0a 7c 7d 0a 7c 0a 7c | 73 74 61 74 69 63 20 76 |;.|}.|.||static v|
|00001a50| 6f 69 64 20 49 6e 69 74 | 28 29 0a 7c 7b 0a 7c 09 |oid Init|().|{.|.|
|00001a60| 69 6e 74 20 69 3b 0a 7c | 0a 7c 09 52 5f 42 55 66 |int i;.||.|.R_BUf|
|00001a70| 66 65 72 5f 4c 65 6e 3d | 57 69 6e 64 6f 77 5f 53 |fer_Len=|Window_S|
|00001a80| 69 7a 65 3d 50 65 6e 64 | 69 6e 47 5f 43 6f 75 6e |ize=Pend|inG_Coun|
|00001a90| 74 3d 4e 65 78 74 5f 50 | 61 63 6b 65 74 3d 0a 7c |t=Next_P|acket=.||
|00001aa0| 09 09 52 5f 42 79 74 65 | 73 3d 53 5f 42 79 74 65 |..R_Byte|s=S_Byte|
|00001ab0| 73 3d 53 65 71 5f 4e 75 | 6d 3d 50 61 63 6b 65 74 |s=Seq_Nu|m=Packet|
|00001ac0| 73 5f 42 74 77 6e 5f 41 | 43 4b 73 3d 4c 61 73 74 |s_Btwn_A|CKs=Last|
|00001ad0| 5f 41 43 4b 3d 30 3b 0a | 7c 0a 7c 09 50 61 63 6b |_ACK=0;.||.|.Pack|
|00001ae0| 65 54 5f 53 69 7a 65 3d | 28 31 30 2a 6d 72 61 74 |eT_Size=|(10*mrat|
|00001af0| 65 28 4e 55 4c 4c 53 29 | 29 20 3e 20 31 32 30 30 |e(NULLS)|) > 1200|
|00001b00| 20 3f 20 31 30 32 35 20 | 3a 20 35 31 33 3b 0a 7c | ? 1025 |: 513;.||
|00001b10| 0a 7c 09 51 75 6f 74 69 | 6e 67 3d 51 75 6f 74 65 |.|.Quoti|ng=Quote|
|00001b20| 5f 4d 61 73 6b 3b 0a 7c | 0a 7c 09 66 6f 72 20 28 |_Mask;.||.|.for (|
|00001b30| 69 3d 30 3b 69 3c 53 65 | 6e 64 5f 41 68 65 61 64 |i=0;i<Se|nd_Ahead|
|00001b40| 5f 42 75 66 66 65 72 73 | 3b 69 2b 2b 29 0a 7c 09 |_Buffers|;i++).|.|
|00001b50| 09 50 65 6e 64 69 6e 67 | 5b 69 5d 2e 70 61 63 6b |.Pending|[i].pack|
|00001b60| 65 74 3d 4e 55 4c 4c 53 | 3b 0a 7c 0a 7c 09 41 63 |et=NULLS|;.|.|.Ac|
|00001b70| 74 75 61 6c 5f 43 68 65 | 63 6b 3d 43 68 65 63 6b |tual_Che|ck=Check|
|00001b80| 5f 42 3b 0a 7c 09 41 62 | 6f 72 74 5f 46 6c 61 67 |_B;.|.Ab|ort_Flag|
|00001b90| 3d 53 65 6e 74 5f 45 4e | 51 3d 46 41 4c 53 45 3b |=Sent_EN|Q=FALSE;|
|00001ba0| 0a 7c 0a 7c 09 6d 65 6d | 73 65 74 28 4d 61 73 6b |.|.|.mem|set(Mask|
|00001bb0| 2c 30 2c 33 32 29 3b 0a | 7c 0a 7c 09 4d 61 73 6b |,0,32);.||.|.Mask|
|00001bc0| 5b 45 54 58 5d 3d 4d 61 | 73 6b 5b 45 4e 51 5d 3d |[ETX]=Ma|sk[ENQ]=|
|00001bd0| 4d 61 73 6b 5b 44 4c 45 | 5d 3d 4d 61 73 6b 5b 4e |Mask[DLE|]=Mask[N|
|00001be0| 41 4b 5d 3d 4d 61 73 6b | 5b 58 4f 4e 5d 3d 4d 61 |AK]=Mask|[XON]=Ma|
|00001bf0| 73 6b 5b 58 4f 46 46 5d | 3d 4d 61 73 6b 4c 6f 77 |sk[XOFF]|=MaskLow|
|00001c00| 52 61 6e 67 65 3b 0a 7c | 0a 7c 09 74 6f 74 61 6c |Range;.||.|.total|
|00001c10| 5f 73 65 6e 74 3d 74 6f | 74 61 6c 5f 72 65 61 64 |_sent=to|tal_read|
|00001c20| 3d 64 61 74 61 3d 66 73 | 69 7a 65 3d 52 65 61 64 |=data=fs|ize=Read|
|00001c30| 5f 45 72 72 6f 72 73 3d | 53 65 6e 64 5f 45 72 72 |_Errors=|Send_Err|
|00001c40| 6f 72 73 3d 0a 7c 09 09 | 61 6c 72 65 61 64 79 5f |ors=.|..|already_|
|00001c50| 68 61 76 65 3d 63 61 72 | 72 69 61 67 65 5f 72 65 |have=car|riage_re|
|00001c60| 74 75 72 6e 3d 30 3b 0a | 7c 09 66 70 72 69 6e 74 |turn=0;.||.fprint|
|00001c70| 66 28 74 66 70 2c 22 5c | 6e 5c 6e 5c 6e 5c 6e 5c |f(tfp,"\|n\n\n\n\|
|00001c80| 6e 5c 6e 5c 6e 5c 6e 5c | 6e 5c 6e 5c 6e 5c 6e 5c |n\n\n\n\|n\n\n\n\|
|00001c90| 6e 5c 6e 5c 6e 22 29 3b | 0a 7c 09 74 74 67 6f 74 |n\n\n");|.|.ttgot|
|00001ca0| 6f 28 4c 49 2d 31 34 2c | 32 35 29 3b 0a 7c 09 73 |o(LI-14,|25);.|.s|
|00001cb0| 68 6f 77 28 31 2c 22 43 | 49 53 20 42 2d 50 6c 75 |how(1,"C|IS B-Plu|
|00001cc0| 73 20 50 72 6f 74 6f 63 | 6f 6c 20 54 72 61 6e 73 |s Protoc|ol Trans|
|00001cd0| 66 65 72 22 29 3b 0a 7c | 0a 7c 09 74 74 67 6f 74 |fer");.||.|.ttgot|
|00001ce0| 6f 28 4c 49 2d 31 30 2c | 30 29 3b 0a 7c 09 66 70 |o(LI-10,|0);.|.fp|
|00001cf0| 72 69 6e 74 66 28 74 66 | 70 2c 22 42 2b 20 42 79 |rintf(tf|p,"B+ By|
|00001d00| 74 65 73 20 53 65 6e 74 | 20 20 20 20 20 20 20 42 |tes Sent| B|
|00001d10| 2b 20 42 79 74 65 73 20 | 52 63 76 64 22 29 3b 0a |+ Bytes |Rcvd");.|
|00001d20| 7c 09 74 74 67 6f 74 6f | 28 4c 49 2d 31 30 2c 34 ||.ttgoto|(LI-10,4|
|00001d30| 30 29 3b 0a 7c 09 66 70 | 72 69 6e 74 66 28 74 66 |0);.|.fp|rintf(tf|
|00001d40| 70 2c 22 44 61 74 61 20 | 42 79 74 65 73 20 20 20 |p,"Data |Bytes |
|00001d50| 20 20 20 20 20 20 20 43 | 61 72 72 69 61 67 65 20 | C|arriage |
|00001d60| 52 65 74 75 72 6e 73 22 | 29 3b 0a 7c 09 74 74 67 |Returns"|);.|.ttg|
|00001d70| 6f 74 6f 28 4c 49 2d 36 | 2c 31 30 29 3b 0a 7c 09 |oto(LI-6|,10);.|.|
|00001d80| 66 70 72 69 6e 74 66 28 | 74 66 70 2c 22 54 69 6d |fprintf(|tfp,"Tim|
|00001d90| 65 20 52 65 6d 61 69 6e | 69 6e 67 3a 22 29 3b 0a |e Remain|ing:");.|
|00001da0| 7c 09 74 74 67 6f 74 6f | 28 4c 49 2d 36 2c 34 38 ||.ttgoto|(LI-6,48|
|00001db0| 29 3b 0a 7c 09 66 70 72 | 69 6e 74 66 28 74 66 70 |);.|.fpr|intf(tfp|
|00001dc0| 2c 22 45 6c 61 70 73 65 | 64 20 54 69 6d 65 3a 22 |,"Elapse|d Time:"|
|00001dd0| 29 3b 0a 7c 7d 0a 7c 0a | 7c 73 74 61 74 69 63 20 |);.|}.|.||static |
|00001de0| 76 6f 69 64 20 58 6d 69 | 74 5f 50 61 63 6b 65 74 |void Xmi|t_Packet|
|00001df0| 28 53 69 7a 65 2c 53 65 | 71 2c 50 61 63 6b 65 74 |(Size,Se|q,Packet|
|00001e00| 29 0a 7c 69 6e 74 20 53 | 69 7a 65 2c 20 53 65 71 |).|int S|ize, Seq|
|00001e10| 3b 0a 7c 75 6e 73 69 67 | 6e 65 64 20 63 68 61 72 |;.|unsig|ned char|
|00001e20| 20 2a 50 61 63 6b 65 74 | 3b 0a 7c 7b 0a 7c 09 72 | *Packet|;.|{.|.r|
|00001e30| 65 67 69 73 74 65 72 20 | 49 3b 0a 7c 0a 7c 09 69 |egister |I;.|.|.i|
|00001e40| 6e 69 74 5f 63 68 65 63 | 6b 28 29 3b 0a 7c 09 53 |nit_chec|k();.|.S|
|00001e50| 65 6e 64 5f 42 79 74 65 | 28 44 4c 45 29 3b 0a 7c |end_Byte|(DLE);.||
|00001e60| 09 53 65 6e 64 5f 42 79 | 74 65 28 27 42 27 29 3b |.Send_By|te('B');|
|00001e70| 0a 7c 09 53 65 6e 64 5f | 42 79 74 65 28 53 65 71 |.|.Send_|Byte(Seq|
|00001e80| 2b 27 30 27 29 3b 0a 7c | 09 64 6f 5f 63 68 65 63 |+'0');.||.do_chec|
|00001e90| 6b 73 75 6d 28 53 65 71 | 2b 27 30 27 29 3b 0a 7c |ksum(Seq|+'0');.||
|00001ea0| 0a 7c 09 66 6f 72 20 28 | 49 3d 30 3b 49 3c 53 69 |.|.for (|I=0;I<Si|
|00001eb0| 7a 65 3b 49 2b 2b 29 0a | 7c 09 09 53 65 6e 64 5f |ze;I++).||..Send_|
|00001ec0| 4d 61 73 6b 65 64 5f 42 | 79 74 65 28 50 61 63 6b |Masked_B|yte(Pack|
|00001ed0| 65 74 5b 49 5d 29 2c 0a | 7c 09 09 64 6f 5f 63 68 |et[I]),.||..do_ch|
|00001ee0| 65 63 6b 73 75 6d 28 50 | 61 63 6b 65 74 5b 49 5d |ecksum(P|acket[I]|
|00001ef0| 29 3b 0a 7c 0a 7c 09 53 | 65 6e 64 5f 42 79 74 65 |);.|.|.S|end_Byte|
|00001f00| 28 45 54 58 29 3b 0a 7c | 09 64 6f 5f 63 68 65 63 |(ETX);.||.do_chec|
|00001f10| 6b 73 75 6d 28 45 54 58 | 29 3b 0a 7c 09 69 66 20 |ksum(ETX|);.|.if |
|00001f20| 28 41 63 74 75 61 6c 5f | 43 68 65 63 6b 3d 3d 43 |(Actual_|Check==C|
|00001f30| 68 65 63 6b 5f 42 29 0a | 7c 09 09 53 65 6e 64 5f |heck_B).||..Send_|
|00001f40| 4d 61 73 6b 65 64 5f 42 | 79 74 65 28 43 68 65 63 |Masked_B|yte(Chec|
|00001f50| 6b 73 75 6d 29 3b 0a 7c | 09 65 6c 73 65 0a 7c 09 |ksum);.||.else.|.|
|00001f60| 09 53 65 6e 64 5f 4d 61 | 73 6b 65 64 5f 42 79 74 |.Send_Ma|sked_Byt|
|00001f70| 65 28 43 68 65 63 6b 73 | 75 6d 3e 3e 38 29 2c 0a |e(Checks|um>>8),.|
|00001f80| 7c 09 09 53 65 6e 64 5f | 4d 61 73 6b 65 64 5f 42 ||..Send_|Masked_B|
|00001f90| 79 74 65 28 43 68 65 63 | 6b 73 75 6d 26 30 78 66 |yte(Chec|ksum&0xf|
|00001fa0| 66 29 3b 0a 7c 7d 0a 7c | 0a 7c 73 74 61 74 69 63 |f);.|}.||.|static|
|00001fb0| 20 76 6f 69 64 20 53 65 | 6e 64 5f 46 61 69 6c 75 | void Se|nd_Failu|
|00001fc0| 72 65 28 43 6f 64 65 2c | 54 65 78 74 29 0a 7c 63 |re(Code,|Text).|c|
|00001fd0| 68 61 72 20 43 6f 64 65 | 2c 20 2a 54 65 78 74 3b |har Code|, *Text;|
|00001fe0| 0a 7c 7b 0a 7c 09 69 6e | 74 20 4c 65 6e 2c 20 53 |.|{.|.in|t Len, S|
|00001ff0| 65 71 3b 0a 7c 0a 7c 09 | 53 5f 42 75 66 66 65 72 |eq;.|.|.|S_Buffer|
|00002000| 5b 30 5d 3d 27 46 27 3b | 0a 7c 09 53 5f 42 75 66 |[0]='F';|.|.S_Buf|
|00002010| 66 65 72 5b 31 5d 3d 43 | 6f 64 65 3b 0a 7c 09 4c |fer[1]=C|ode;.|.L|
|00002020| 65 6e 3d 32 3b 0a 7c 09 | 77 68 69 6c 65 20 28 2a |en=2;.|.|while (*|
|00002030| 54 65 78 74 29 0a 7c 09 | 09 53 5f 42 75 66 66 65 |Text).|.|.S_Buffe|
|00002040| 72 5b 4c 65 6e 2b 2b 5d | 3d 20 2a 54 65 78 74 2b |r[Len++]|= *Text+|
|00002050| 2b 3b 0a 7c 0a 7c 09 53 | 65 71 3d 28 53 65 71 5f |+;.|.|.S|eq=(Seq_|
|00002060| 4e 75 6d 2b 31 29 25 31 | 30 3b 0a 7c 0a 7c 09 77 |Num+1)%1|0;.|.|.w|
|00002070| 68 69 6c 65 20 28 50 65 | 6e 64 69 6e 47 5f 43 6f |hile (Pe|ndinG_Co|
|00002080| 75 6e 74 26 26 57 61 69 | 74 5f 46 6f 72 5f 41 43 |unt&&Wai|t_For_AC|
|00002090| 4b 28 46 41 4c 53 45 2c | 46 41 4c 53 45 2c 46 41 |K(FALSE,|FALSE,FA|
|000020a0| 4c 53 45 29 29 0a 7c 09 | 09 3b 0a 7c 0a 7c 09 58 |LSE)).|.|.;.|.|.X|
|000020b0| 6d 69 74 5f 50 61 63 6b | 65 74 28 4c 65 6e 2c 53 |mit_Pack|et(Len,S|
|000020c0| 65 71 2c 53 5f 42 75 66 | 66 65 72 29 3b 0a 7c 0a |eq,S_Buf|fer);.|.|
|000020d0| 7c 09 64 6f 0a 7c 09 09 | 57 61 69 74 5f 46 6f 72 ||.do.|..|Wait_For|
|000020e0| 5f 41 43 4b 28 46 41 4c | 53 45 2c 46 41 4c 53 45 |_ACK(FAL|SE,FALSE|
|000020f0| 2c 46 41 4c 53 45 29 3b | 0a 7c 09 77 68 69 6c 65 |,FALSE);|.|.while|
|00002100| 20 28 50 61 63 6b 65 74 | 5f 52 65 63 65 69 76 65 | (Packet|_Receive|
|00002110| 64 29 3b 0a 7c 7d 0a 7c | 0a 7c 73 74 61 74 69 63 |d);.|}.||.|static|
|00002120| 20 46 6c 75 73 68 5f 50 | 65 6e 64 69 6e 67 28 29 | Flush_P|ending()|
|00002130| 0a 7c 7b 0a 7c 09 77 68 | 69 6c 65 20 28 50 65 6e |.|{.|.wh|ile (Pen|
|00002140| 64 69 6e 47 5f 43 6f 75 | 6e 74 29 0a 7c 09 09 69 |dinG_Cou|nt).|..i|
|00002150| 66 20 28 21 57 61 69 74 | 5f 46 6f 72 5f 41 43 4b |f (!Wait|_For_ACK|
|00002160| 28 46 41 4c 53 45 2c 54 | 52 55 45 2c 54 52 55 45 |(FALSE,T|RUE,TRUE|
|00002170| 29 29 0a 7c 09 09 09 72 | 65 74 75 72 6e 20 46 41 |)).|...r|eturn FA|
|00002180| 49 4c 55 52 45 3b 0a 7c | 0a 7c 09 72 65 74 75 72 |ILURE;.||.|.retur|
|00002190| 6e 20 53 55 43 43 45 53 | 53 3b 0a 7c 7d 0a 7c 0a |n SUCCES|S;.|}.|.|
|000021a0| 7c 73 74 61 74 69 63 20 | 57 61 69 74 5f 46 6f 72 ||static |Wait_For|
|000021b0| 5f 41 43 4b 28 48 61 76 | 65 5f 44 4c 45 5f 42 2c |_ACK(Hav|e_DLE_B,|
|000021c0| 41 63 6b 6e 6f 77 6c 65 | 64 67 65 2c 52 65 73 65 |Acknowle|dge,Rese|
|000021d0| 6e 64 29 0a 7c 75 6e 73 | 69 67 6e 65 64 20 73 68 |nd).|uns|igned sh|
|000021e0| 6f 72 74 20 48 61 76 65 | 5f 44 4c 45 5f 42 2c 20 |ort Have|_DLE_B, |
|000021f0| 41 63 6b 6e 6f 77 6c 65 | 64 67 65 2c 20 52 65 73 |Acknowle|dge, Res|
|00002200| 65 6e 64 3b 0a 7c 7b 0a | 7c 09 53 65 6e 64 65 72 |end;.|{.||.Sender|
|00002210| 5f 41 63 74 69 6f 6e 20 | 41 63 74 69 6f 6e 3b 0a |_Action |Action;.|
|00002220| 7c 0a 7c 09 69 6e 74 20 | 69 3d 30 2c 20 6e 2c 20 ||.|.int |i=0, n, |
|00002230| 52 43 56 5f 4e 75 6d 2c | 20 45 72 72 6f 72 73 3d |RCV_Num,| Errors=|
|00002240| 30 3b 0a 7c 0a 7c 09 52 | 5f 42 55 66 66 65 72 5f |0;.|.|.R|_BUffer_|
|00002250| 4c 65 6e 3d 30 3b 0a 7c | 09 50 61 63 6b 65 74 5f |Len=0;.||.Packet_|
|00002260| 52 65 63 65 69 76 65 64 | 3d 46 41 4c 53 45 3b 0a |Received|=FALSE;.|
|00002270| 7c 0a 7c 09 69 66 20 28 | 48 61 76 65 5f 44 4c 45 ||.|.if (|Have_DLE|
|00002280| 5f 42 29 0a 7c 09 09 41 | 63 74 69 6f 6e 3d 53 5f |_B).|..A|ction=S_|
|00002290| 44 4c 45 5f 42 5f 53 65 | 65 6e 3b 0a 7c 09 65 6c |DLE_B_Se|en;.|.el|
|000022a0| 73 65 0a 7c 09 09 41 63 | 74 69 6f 6e 3d 53 5f 47 |se.|..Ac|tion=S_G|
|000022b0| 65 74 5f 44 4c 45 3b 0a | 7c 0a 7c 09 77 68 69 6c |et_DLE;.||.|.whil|
|000022c0| 65 20 28 45 72 72 6f 72 | 73 3c 4d 61 78 5f 45 72 |e (Error|s<Max_Er|
|000022d0| 72 6f 72 73 29 0a 7c 09 | 09 73 77 69 74 63 68 20 |rors).|.|.switch |
|000022e0| 28 41 63 74 69 6f 6e 29 | 7b 0a 7c 09 09 63 61 73 |(Action)|{.|..cas|
|000022f0| 65 20 53 5f 47 65 74 5f | 44 61 74 61 3a 0a 7c 09 |e S_Get_|Data:.|.|
|00002300| 09 09 69 66 20 28 52 65 | 61 64 5f 4d 61 73 6b 65 |..if (Re|ad_Maske|
|00002310| 64 5f 42 79 74 65 28 29 | 3d 3d 46 41 49 4c 55 52 |d_Byte()|==FAILUR|
|00002320| 45 29 7b 0a 7c 09 09 09 | 09 41 63 74 69 6f 6e 3d |E){.|...|.Action=|
|00002330| 53 5f 53 65 6e 64 5f 4e | 41 4b 3b 0a 7c 09 09 09 |S_Send_N|AK;.|...|
|00002340| 09 57 68 79 5f 4e 41 4b | 28 22 63 6f 75 6c 64 6e |.Why_NAK|("couldn|
|00002350| 27 74 20 72 65 61 64 20 | 6e 65 78 74 20 64 61 74 |'t read |next dat|
|00002360| 61 20 62 79 74 65 22 29 | 3b 0a 7c 09 09 09 7d 0a |a byte")|;.|...}.|
|00002370| 7c 09 09 09 65 6c 73 65 | 20 69 66 20 28 4e 6f 74 ||...else| if (Not|
|00002380| 5f 4d 61 73 6b 65 64 20 | 26 26 20 43 68 3d 3d 45 |_Masked |&& Ch==E|
|00002390| 54 58 29 0a 7c 09 09 09 | 09 41 63 74 69 6f 6e 3d |TX).|...|.Action=|
|000023a0| 53 5f 47 65 74 5f 63 68 | 65 63 6b 3b 0a 7c 09 09 |S_Get_ch|eck;.|..|
|000023b0| 09 65 6c 73 65 20 69 66 | 20 28 4e 6f 74 5f 4d 61 |.else if| (Not_Ma|
|000023c0| 73 6b 65 64 20 26 26 20 | 43 68 3d 3d 45 4e 51 29 |sked && |Ch==ENQ)|
|000023d0| 0a 7c 09 09 09 09 41 63 | 74 69 6f 6e 3d 53 5f 53 |.|....Ac|tion=S_S|
|000023e0| 65 6e 44 5f 41 43 4b 3b | 0a 7c 09 09 09 65 6c 73 |enD_ACK;|.|...els|
|000023f0| 65 20 69 66 20 28 69 3d | 3d 50 61 63 6b 65 54 5f |e if (i=|=PackeT_|
|00002400| 53 69 7a 65 29 7b 0a 7c | 09 09 09 09 41 63 74 69 |Size){.||....Acti|
|00002410| 6f 6e 3d 53 5f 53 65 6e | 64 5f 4e 41 4b 3b 0a 7c |on=S_Sen|d_NAK;.||
|00002420| 09 09 09 09 57 68 79 5f | 4e 41 4b 28 22 69 6e 63 |....Why_|NAK("inc|
|00002430| 6f 6d 69 6e 67 20 62 75 | 66 66 65 72 20 6f 76 65 |oming bu|ffer ove|
|00002440| 72 66 6c 6f 77 22 29 3b | 0a 7c 09 09 09 09 7d 20 |rflow");|.|....} |
|00002450| 65 6c 73 65 0a 7c 09 09 | 09 09 09 52 5f 42 75 66 |else.|..|...R_Buf|
|00002460| 66 65 72 5b 69 2b 2b 5d | 3d 43 68 2c 0a 7c 09 09 |fer[i++]|=Ch,.|..|
|00002470| 09 09 09 64 6f 5f 63 68 | 65 63 6b 73 75 6d 28 43 |...do_ch|ecksum(C|
|00002480| 68 29 3b 0a 7c 09 09 09 | 62 72 65 61 6b 3b 0a 7c |h);.|...|break;.||
|00002490| 0a 7c 09 09 63 61 73 65 | 20 53 5f 47 65 74 5f 44 |.|..case| S_Get_D|
|000024a0| 4c 45 3a 0a 7c 09 09 09 | 69 66 20 28 50 61 63 6b |LE:.|...|if (Pack|
|000024b0| 65 74 73 5f 42 74 77 6e | 5f 41 43 4b 73 3e 57 69 |ets_Btwn|_ACKs>Wi|
|000024c0| 6e 64 6f 77 5f 53 69 7a | 65 2b 32 26 26 50 65 6e |ndow_Siz|e+2&&Pen|
|000024d0| 64 69 6e 47 5f 43 6f 75 | 6e 74 29 7b 0a 7c 09 09 |dinG_Cou|nt){.|..|
|000024e0| 09 09 50 61 63 6b 65 74 | 73 5f 42 74 77 6e 5f 41 |..Packet|s_Btwn_A|
|000024f0| 43 4b 73 3d 30 3b 0a 7c | 09 09 09 09 41 63 74 69 |CKs=0;.||....Acti|
|00002500| 6f 6e 3d 53 5f 53 45 6e | 64 5f 45 4e 51 3b 0a 7c |on=S_SEn|d_ENQ;.||
|00002510| 09 09 09 09 63 6f 6e 74 | 69 6e 75 65 3b 0a 7c 09 |....cont|inue;.|.|
|00002520| 09 09 7d 0a 7c 09 09 09 | 69 66 20 28 21 52 65 61 |..}.|...|if (!Rea|
|00002530| 64 5f 42 79 74 65 28 29 | 29 0a 7c 09 09 09 09 41 |d_Byte()|).|....A|
|00002540| 63 74 69 6f 6e 3d 53 5f | 53 45 6e 64 5f 45 4e 51 |ction=S_|SEnd_ENQ|
|00002550| 3b 0a 7c 09 09 09 65 6c | 73 65 20 69 66 20 28 43 |;.|...el|se if (C|
|00002560| 68 3d 3d 44 4c 45 29 0a | 7c 09 09 09 09 41 63 74 |h==DLE).||....Act|
|00002570| 69 6f 6e 3d 53 5f 44 4c | 45 5f 53 65 65 6e 3b 0a |ion=S_DL|E_Seen;.|
|00002580| 7c 09 09 09 65 6c 73 65 | 20 69 66 20 28 43 68 3d ||...else| if (Ch=|
|00002590| 3d 4e 41 4b 29 0a 7c 09 | 09 09 09 41 63 74 69 6f |=NAK).|.|...Actio|
|000025a0| 6e 3d 53 5f 53 45 6e 64 | 5f 45 4e 51 3b 0a 7c 09 |n=S_SEnd|_ENQ;.|.|
|000025b0| 09 09 65 6c 73 65 20 69 | 66 20 28 43 68 3d 3d 45 |..else i|f (Ch==E|
|000025c0| 4e 51 29 0a 7c 09 09 09 | 09 41 63 74 69 6f 6e 3d |NQ).|...|.Action=|
|000025d0| 53 5f 53 65 6e 44 5f 41 | 43 4b 3b 0a 7c 09 09 09 |S_SenD_A|CK;.|...|
|000025e0| 65 6c 73 65 20 69 66 20 | 28 43 68 3d 3d 45 54 58 |else if |(Ch==ETX|
|000025f0| 29 7b 0a 7c 09 09 09 09 | 41 63 74 69 6f 6e 3d 53 |){.|....|Action=S|
|00002600| 5f 53 65 6e 64 5f 4e 41 | 4b 3b 0a 7c 09 09 09 09 |_Send_NA|K;.|....|
|00002610| 57 68 79 5f 4e 41 4b 28 | 22 61 77 61 69 74 69 6e |Why_NAK(|"awaitin|
|00002620| 67 20 44 4c 45 2c 20 67 | 6f 74 20 45 54 58 22 29 |g DLE, g|ot ETX")|
|00002630| 3b 0a 7c 09 09 09 7d 0a | 7c 09 09 09 62 72 65 61 |;.|...}.||...brea|
|00002640| 6b 3b 0a 7c 0a 7c 09 09 | 63 61 73 65 20 53 5f 44 |k;.|.|..|case S_D|
|00002650| 4c 45 5f 53 65 65 6e 3a | 0a 7c 09 09 09 69 66 20 |LE_Seen:|.|...if |
|00002660| 28 21 52 65 61 64 5f 42 | 79 74 65 28 29 29 0a 7c |(!Read_B|yte()).||
|00002670| 09 09 09 09 41 63 74 69 | 6f 6e 3d 53 5f 53 45 6e |....Acti|on=S_SEn|
|00002680| 64 5f 45 4e 51 3b 0a 7c | 09 09 09 65 6c 73 65 20 |d_ENQ;.||...else |
|00002690| 69 66 20 28 43 68 3e 3d | 27 30 27 26 26 43 68 3c |if (Ch>=|'0'&&Ch<|
|000026a0| 3d 27 39 27 29 0a 7c 09 | 09 09 09 69 66 20 28 53 |='9').|.|...if (S|
|000026b0| 65 6e 74 5f 45 4e 51 26 | 26 43 68 3d 3d 4c 61 73 |ent_ENQ&|&Ch==Las|
|000026c0| 74 5f 41 43 4b 29 7b 0a | 7c 09 09 09 09 09 53 65 |t_ACK){.||.....Se|
|000026d0| 6e 74 5f 45 4e 51 3d 46 | 41 4c 53 45 3b 0a 7c 0a |nt_ENQ=F|ALSE;.|.|
|000026e0| 7c 09 09 09 09 09 69 66 | 20 28 21 50 65 6e 64 69 ||.....if| (!Pendi|
|000026f0| 6e 47 5f 43 6f 75 6e 74 | 29 0a 7c 09 09 09 09 09 |nG_Count|).|.....|
|00002700| 09 72 65 74 75 72 6e 20 | 53 55 43 43 45 53 53 3b |.return |SUCCESS;|
|00002710| 0a 7c 09 09 09 09 09 65 | 6c 73 65 0a 7c 09 09 09 |.|.....e|lse.|...|
|00002720| 09 09 09 41 63 74 69 6f | 6e 3d 53 5f 52 65 73 65 |...Actio|n=S_Rese|
|00002730| 6e 64 5f 50 61 63 6b 65 | 74 73 3b 0a 7c 09 09 09 |nd_Packe|ts;.|...|
|00002740| 09 7d 20 65 6c 73 65 20 | 7b 0a 7c 09 09 09 09 09 |.} else |{.|.....|
|00002750| 44 69 73 63 61 72 64 5f | 41 43 4b 65 64 5f 50 61 |Discard_|ACKed_Pa|
|00002760| 63 6b 65 74 73 28 29 3b | 0a 7c 09 09 09 09 09 69 |ckets();|.|.....i|
|00002770| 66 20 28 53 65 6e 74 5f | 45 4e 51 29 0a 7c 09 09 |f (Sent_|ENQ).|..|
|00002780| 09 09 09 09 41 63 74 69 | 6f 6e 3d 53 5f 47 65 74 |....Acti|on=S_Get|
|00002790| 5f 44 4c 45 3b 0a 7c 09 | 09 09 09 09 65 6c 73 65 |_DLE;.|.|....else|
|000027a0| 0a 7c 09 09 09 09 09 09 | 72 65 74 75 72 6e 20 53 |.|......|return S|
|000027b0| 55 43 43 45 53 53 3b 0a | 7c 09 09 09 09 7d 0a 7c |UCCESS;.||....}.||
|000027c0| 09 09 09 65 6c 73 65 20 | 69 66 20 28 43 68 3d 3d |...else |if (Ch==|
|000027d0| 27 3b 27 29 0a 7c 09 09 | 09 09 41 63 74 69 6f 6e |';').|..|..Action|
|000027e0| 3d 53 5f 47 65 74 5f 44 | 4c 45 3b 0a 7c 09 09 09 |=S_Get_D|LE;.|...|
|000027f0| 65 6c 73 65 20 69 66 20 | 28 43 68 3d 3d 27 42 27 |else if |(Ch=='B'|
|00002800| 29 0a 7c 09 09 09 09 41 | 63 74 69 6f 6e 3d 53 5f |).|....A|ction=S_|
|00002810| 44 4c 45 5f 42 5f 53 65 | 65 6e 3b 0a 7c 09 09 09 |DLE_B_Se|en;.|...|
|00002820| 65 6c 73 65 20 69 66 20 | 28 43 68 3d 3d 45 4e 51 |else if |(Ch==ENQ|
|00002830| 29 0a 7c 09 09 09 09 41 | 63 74 69 6f 6e 3d 53 5f |).|....A|ction=S_|
|00002840| 53 65 6e 44 5f 41 43 4b | 3b 0a 7c 09 09 09 65 6c |SenD_ACK|;.|...el|
|00002850| 73 65 0a 7c 09 09 09 09 | 41 63 74 69 6f 6e 3d 53 |se.|....|Action=S|
|00002860| 5f 47 65 74 5f 44 4c 45 | 3b 0a 7c 09 09 09 62 72 |_Get_DLE|;.|...br|
|00002870| 65 61 6b 3b 0a 7c 0a 7c | 09 09 63 61 73 65 20 53 |eak;.|.||..case S|
|00002880| 5f 44 4c 45 5f 42 5f 53 | 65 65 6e 3a 0a 7c 09 09 |_DLE_B_S|een:.|..|
|00002890| 09 69 66 20 28 21 52 65 | 61 64 5f 42 79 74 65 28 |.if (!Re|ad_Byte(|
|000028a0| 29 29 7b 0a 7c 09 09 09 | 09 41 63 74 69 6f 6e 3d |)){.|...|.Action=|
|000028b0| 53 5f 53 65 6e 64 5f 4e | 41 4b 3b 0a 7c 09 09 09 |S_Send_N|AK;.|...|
|000028c0| 09 57 68 79 5f 4e 41 4b | 28 22 6e 6f 20 64 61 74 |.Why_NAK|("no dat|
|000028d0| 61 20 62 79 74 65 20 61 | 66 74 65 72 20 44 4c 45 |a byte a|fter DLE|
|000028e0| 2d 42 22 29 3b 0a 7c 09 | 09 09 7d 20 65 6c 73 65 |-B");.|.|..} else|
|000028f0| 20 69 66 20 28 43 68 3d | 3d 45 4e 51 29 0a 7c 09 | if (Ch=|=ENQ).|.|
|00002900| 09 09 09 41 63 74 69 6f | 6e 3d 53 5f 53 65 6e 44 |...Actio|n=S_SenD|
|00002910| 5f 41 43 4b 3b 0a 7c 09 | 09 09 65 6c 73 65 0a 7c |_ACK;.|.|..else.||
|00002920| 09 09 09 09 69 6e 69 74 | 5f 63 68 65 63 6b 28 29 |....init|_check()|
|00002930| 2c 0a 7c 09 09 09 09 52 | 43 56 5f 4e 75 6d 3d 43 |,.|....R|CV_Num=C|
|00002940| 68 2d 27 30 27 2c 0a 7c | 09 09 09 09 64 6f 5f 63 |h-'0',.||....do_c|
|00002950| 68 65 63 6b 73 75 6d 28 | 43 68 29 2c 0a 7c 09 09 |hecksum(|Ch),.|..|
|00002960| 09 09 69 3d 30 2c 0a 7c | 09 09 09 09 41 63 74 69 |..i=0,.||....Acti|
|00002970| 6f 6e 3d 53 5f 47 65 74 | 5f 44 61 74 61 3b 0a 7c |on=S_Get|_Data;.||
|00002980| 09 09 09 62 72 65 61 6b | 3b 0a 7c 0a 7c 09 09 63 |...break|;.|.|..c|
|00002990| 61 73 65 20 53 5f 47 65 | 74 5f 63 68 65 63 6b 3a |ase S_Ge|t_check:|
|000029a0| 0a 7c 09 09 09 64 6f 5f | 63 68 65 63 6b 73 75 6d |.|...do_|checksum|
|000029b0| 28 45 54 58 29 3b 0a 7c | 0a 7c 09 09 09 69 66 20 |(ETX);.||.|...if |
|000029c0| 28 52 65 61 64 5f 4d 61 | 73 6b 65 64 5f 42 79 74 |(Read_Ma|sked_Byt|
|000029d0| 65 28 29 3d 3d 46 41 49 | 4c 55 52 45 29 7b 0a 7c |e()==FAI|LURE){.||
|000029e0| 09 09 09 09 41 63 74 69 | 6f 6e 3d 53 5f 53 65 6e |....Acti|on=S_Sen|
|000029f0| 64 5f 4e 41 4b 3b 0a 7c | 09 09 09 09 57 68 79 5f |d_NAK;.||....Why_|
|00002a00| 4e 41 4b 28 22 6e 6f 20 | 69 6e 63 6f 6d 69 6e 67 |NAK("no |incoming|
|00002a10| 20 63 68 65 63 6b 73 75 | 6d 22 29 3b 0a 7c 09 09 | checksu|m");.|..|
|00002a20| 09 7d 20 65 6c 73 65 20 | 69 66 20 28 4e 6f 74 5f |.} else |if (Not_|
|00002a30| 4d 61 73 6b 65 64 26 26 | 43 68 3d 3d 45 4e 51 29 |Masked&&|Ch==ENQ)|
|00002a40| 0a 7c 09 09 09 09 41 63 | 74 69 6f 6e 3d 53 5f 53 |.|....Ac|tion=S_S|
|00002a50| 65 6e 44 5f 41 43 4b 3b | 0a 7c 09 09 09 65 6c 73 |enD_ACK;|.|...els|
|00002a60| 65 20 69 66 20 28 41 63 | 74 75 61 6c 5f 43 68 65 |e if (Ac|tual_Che|
|00002a70| 63 6b 3d 3d 43 68 65 63 | 6b 5f 43 52 43 29 0a 7c |ck==Chec|k_CRC).||
|00002a80| 09 09 09 09 41 63 74 69 | 6f 6e 3d 53 5f 47 65 74 |....Acti|on=S_Get|
|00002a90| 5f 43 52 43 3b 0a 7c 09 | 09 09 65 6c 73 65 0a 7c |_CRC;.|.|..else.||
|00002aa0| 09 09 09 09 41 63 74 69 | 6f 6e 3d 53 5f 56 45 72 |....Acti|on=S_VEr|
|00002ab0| 69 66 79 5f 43 4b 53 3b | 0a 7c 09 09 09 62 72 65 |ify_CKS;|.|...bre|
|00002ac0| 61 6b 3b 0a 7c 0a 7c 09 | 09 63 61 73 65 20 53 5f |ak;.|.|.|.case S_|
|00002ad0| 47 65 74 5f 43 52 43 3a | 0a 7c 09 09 09 64 6f 5f |Get_CRC:|.|...do_|
|00002ae0| 63 68 65 63 6b 73 75 6d | 28 43 68 29 3b 0a 7c 0a |checksum|(Ch);.|.|
|00002af0| 7c 09 09 09 69 66 20 28 | 52 65 61 64 5f 4d 61 73 ||...if (|Read_Mas|
|00002b00| 6b 65 64 5f 42 79 74 65 | 28 29 3d 3d 46 41 49 4c |ked_Byte|()==FAIL|
|00002b10| 55 52 45 29 7b 0a 7c 09 | 09 09 09 41 63 74 69 6f |URE){.|.|...Actio|
|00002b20| 6e 3d 53 5f 53 65 6e 64 | 5f 4e 41 4b 3b 0a 7c 09 |n=S_Send|_NAK;.|.|
|00002b30| 09 09 09 57 68 79 5f 4e | 41 4b 28 22 6e 6f 20 69 |...Why_N|AK("no i|
|00002b40| 6e 63 6f 6d 69 6e 67 20 | 43 52 43 20 76 61 6c 75 |ncoming |CRC valu|
|00002b50| 65 22 29 3b 0a 7c 09 09 | 09 7d 20 65 6c 73 65 20 |e");.|..|.} else |
|00002b60| 69 66 20 28 4e 6f 74 5f | 4d 61 73 6b 65 64 26 26 |if (Not_|Masked&&|
|00002b70| 43 68 3d 3d 45 4e 51 29 | 0a 7c 09 09 09 09 41 63 |Ch==ENQ)|.|....Ac|
|00002b80| 74 69 6f 6e 3d 53 5f 53 | 65 6e 44 5f 41 43 4b 3b |tion=S_S|enD_ACK;|
|00002b90| 0a 7c 09 09 09 65 6c 73 | 65 0a 7c 09 09 09 09 41 |.|...els|e.|....A|
|00002ba0| 63 74 69 6f 6e 3d 53 5f | 56 65 72 69 66 79 5f 43 |ction=S_|Verify_C|
|00002bb0| 52 43 3b 0a 7c 09 09 09 | 62 72 65 61 6b 3b 0a 7c |RC;.|...|break;.||
|00002bc0| 0a 7c 09 09 63 61 73 65 | 20 53 5f 56 65 72 69 66 |.|..case| S_Verif|
|00002bd0| 79 5f 43 52 43 3a 0a 7c | 09 09 09 64 6f 5f 63 68 |y_CRC:.||...do_ch|
|00002be0| 65 63 6b 73 75 6d 28 43 | 68 29 3b 0a 7c 0a 7c 09 |ecksum(C|h);.|.|.|
|00002bf0| 09 09 69 66 20 28 43 68 | 65 63 6b 73 75 6d 3d 3d |..if (Ch|ecksum==|
|00002c00| 30 29 0a 7c 09 09 09 09 | 41 63 74 69 6f 6e 3d 53 |0).|....|Action=S|
|00002c10| 5f 56 65 72 49 66 79 5f | 50 61 63 6b 65 74 3b 0a |_VerIfy_|Packet;.|
|00002c20| 7c 09 09 09 65 6c 73 65 | 20 7b 0a 7c 09 09 09 09 ||...else| {.|....|
|00002c30| 41 63 74 69 6f 6e 3d 53 | 5f 53 65 6e 64 5f 4e 41 |Action=S|_Send_NA|
|00002c40| 4b 3b 0a 7c 09 09 09 09 | 57 68 79 5f 4e 41 4b 28 |K;.|....|Why_NAK(|
|00002c50| 22 43 52 43 20 65 72 72 | 6f 72 22 29 3b 0a 7c 09 |"CRC err|or");.|.|
|00002c60| 09 09 7d 0a 7c 09 09 09 | 62 72 65 61 6b 3b 0a 7c |..}.|...|break;.||
|00002c70| 0a 7c 09 09 63 61 73 65 | 20 53 5f 56 45 72 69 66 |.|..case| S_VErif|
|00002c80| 79 5f 43 4b 53 3a 0a 7c | 09 09 09 69 66 20 28 43 |y_CKS:.||...if (C|
|00002c90| 68 65 63 6b 73 75 6d 3d | 3d 43 68 29 0a 7c 09 09 |hecksum=|=Ch).|..|
|00002ca0| 09 09 41 63 74 69 6f 6e | 3d 53 5f 56 65 72 49 66 |..Action|=S_VerIf|
|00002cb0| 79 5f 50 61 63 6b 65 74 | 3b 0a 7c 09 09 09 65 6c |y_Packet|;.|...el|
|00002cc0| 73 65 20 7b 0a 7c 09 09 | 09 09 41 63 74 69 6f 6e |se {.|..|..Action|
|00002cd0| 3d 53 5f 53 65 6e 64 5f | 4e 41 4b 3b 0a 7c 09 09 |=S_Send_|NAK;.|..|
|00002ce0| 09 09 57 68 79 5f 4e 41 | 4b 28 22 43 68 65 63 6b |..Why_NA|K("Check|
|00002cf0| 73 75 6d 20 65 72 72 6f | 72 22 29 3b 0a 7c 09 09 |sum erro|r");.|..|
|00002d00| 09 7d 0a 7c 09 09 09 62 | 72 65 61 6b 3b 0a 7c 0a |.}.|...b|reak;.|.|
|00002d10| 7c 09 09 63 61 73 65 20 | 53 5f 56 65 72 49 66 79 ||..case |S_VerIfy|
|00002d20| 5f 50 61 63 6b 65 74 3a | 0a 7c 09 09 09 69 66 20 |_Packet:|.|...if |
|00002d30| 28 52 43 56 5f 4e 75 6d | 3d 3d 28 28 53 65 71 5f |(RCV_Num|==((Seq_|
|00002d40| 4e 75 6d 2b 31 29 25 31 | 30 29 7c 7c 52 5f 42 75 |Num+1)%1|0)||R_Bu|
|00002d50| 66 66 65 72 5b 30 5d 3d | 3d 27 46 27 29 7b 0a 7c |ffer[0]=|='F'){.||
|00002d60| 09 09 09 09 50 61 63 6b | 65 74 73 5f 42 74 77 6e |....Pack|ets_Btwn|
|00002d70| 5f 41 43 4b 73 2b 2b 3b | 0a 7c 09 09 09 09 53 65 |_ACKs++;|.|....Se|
|00002d80| 71 5f 4e 75 6d 3d 52 43 | 56 5f 4e 75 6d 3b 0a 7c |q_Num=RC|V_Num;.||
|00002d90| 09 09 09 09 69 66 20 28 | 41 63 6b 6e 6f 77 6c 65 |....if (|Acknowle|
|00002da0| 64 67 65 29 0a 7c 09 09 | 09 09 09 53 65 6e 64 5f |dge).|..|...Send_|
|00002db0| 41 43 4b 28 29 3b 0a 7c | 09 09 09 09 52 5f 42 55 |ACK();.||....R_BU|
|00002dc0| 66 66 65 72 5f 4c 65 6e | 3d 69 3b 0a 7c 09 09 09 |ffer_Len|=i;.|...|
|00002dd0| 09 50 61 63 6b 65 74 5f | 52 65 63 65 69 76 65 64 |.Packet_|Received|
|00002de0| 3d 54 52 55 45 3b 0a 7c | 09 09 09 09 72 65 74 75 |=TRUE;.||....retu|
|00002df0| 72 6e 20 46 41 49 4c 55 | 52 45 3b 0a 7c 09 09 09 |rn FAILU|RE;.|...|
|00002e00| 7d 20 65 6c 73 65 20 69 | 66 20 28 52 43 56 5f 4e |} else i|f (RCV_N|
|00002e10| 75 6d 3d 3d 53 65 71 5f | 4e 75 6d 29 0a 7c 09 09 |um==Seq_|Num).|..|
|00002e20| 09 09 41 63 74 69 6f 6e | 3d 53 5f 53 65 6e 44 5f |..Action|=S_SenD_|
|00002e30| 41 43 4b 3b 0a 7c 09 09 | 09 65 6c 73 65 20 7b 0a |ACK;.|..|.else {.|
|00002e40| 7c 09 09 09 09 41 63 74 | 69 6f 6e 3d 53 5f 53 65 ||....Act|ion=S_Se|
|00002e50| 6e 64 5f 4e 41 4b 3b 0a | 7c 09 09 09 09 57 68 79 |nd_NAK;.||....Why|
|00002e60| 5f 4e 41 4b 28 22 70 61 | 63 6b 65 74 20 6f 75 74 |_NAK("pa|cket out|
|00002e70| 20 6f 66 20 73 65 71 75 | 65 6e 63 65 22 29 3b 0a | of sequ|ence");.|
|00002e80| 7c 09 09 09 7d 0a 7c 09 | 09 09 62 72 65 61 6b 3b ||...}.|.|..break;|
|00002e90| 0a 7c 0a 7c 09 09 63 61 | 73 65 20 53 5f 53 65 6e |.|.|..ca|se S_Sen|
|00002ea0| 64 5f 4e 41 4b 3a 0a 7c | 09 09 09 74 74 67 6f 74 |d_NAK:.||...ttgot|
|00002eb0| 6f 28 4c 49 2d 32 2c 32 | 30 29 3b 0a 7c 09 09 09 |o(LI-2,2|0);.|...|
|00002ec0| 73 70 72 69 6e 74 66 28 | 4d 73 67 2c 22 52 65 61 |sprintf(|Msg,"Rea|
|00002ed0| 64 20 45 72 72 6f 72 73 | 3a 20 25 32 2e 31 64 22 |d Errors|: %2.1d"|
|00002ee0| 2c 2b 2b 52 65 61 64 5f | 45 72 72 6f 72 73 29 3b |,++Read_|Errors);|
|00002ef0| 0a 7c 09 09 09 53 3b 0a | 7c 09 09 09 45 72 72 6f |.|...S;.||...Erro|
|00002f00| 72 73 2b 2b 3b 0a 7c 09 | 09 09 53 65 6e 64 5f 42 |rs++;.|.|..Send_B|
|00002f10| 79 74 65 28 4e 41 4b 29 | 3b 0a 7c 09 09 09 41 63 |yte(NAK)|;.|...Ac|
|00002f20| 74 69 6f 6e 3d 53 5f 47 | 65 74 5f 44 4c 45 3b 0a |tion=S_G|et_DLE;.|
|00002f30| 7c 09 09 09 62 72 65 61 | 6b 3b 0a 7c 0a 7c 09 09 ||...brea|k;.|.|..|
|00002f40| 63 61 73 65 20 53 5f 53 | 65 6e 44 5f 41 43 4b 3a |case S_S|enD_ACK:|
|00002f50| 0a 7c 09 09 09 53 65 6e | 64 5f 41 43 4b 28 29 3b |.|...Sen|d_ACK();|
|00002f60| 0a 7c 09 09 09 41 63 74 | 69 6f 6e 3d 53 5f 47 65 |.|...Act|ion=S_Ge|
|00002f70| 74 5f 44 4c 45 3b 0a 7c | 09 09 09 62 72 65 61 6b |t_DLE;.||...break|
|00002f80| 3b 0a 7c 0a 7c 09 09 63 | 61 73 65 20 53 5f 53 45 |;.|.|..c|ase S_SE|
|00002f90| 6e 64 5f 45 4e 51 3a 0a | 7c 09 09 09 74 74 67 6f |nd_ENQ:.||...ttgo|
|00002fa0| 74 6f 28 4c 49 2d 32 2c | 34 30 29 3b 0a 7c 09 09 |to(LI-2,|40);.|..|
|00002fb0| 09 73 70 72 69 6e 74 66 | 28 4d 73 67 2c 22 53 65 |.sprintf|(Msg,"Se|
|00002fc0| 6e 64 20 45 72 72 6f 72 | 73 3a 20 25 32 2e 31 64 |nd Error|s: %2.1d|
|00002fd0| 22 2c 2b 2b 53 65 6e 64 | 5f 45 72 72 6f 72 73 29 |",++Send|_Errors)|
|00002fe0| 3b 0a 7c 09 09 09 53 3b | 0a 7c 09 09 09 45 72 72 |;.|...S;|.|...Err|
|00002ff0| 6f 72 73 2b 2b 3b 0a 7c | 09 09 09 53 65 6e 74 5f |ors++;.||...Sent_|
|00003000| 45 4e 51 3d 54 52 55 45 | 3b 0a 7c 09 09 09 53 65 |ENQ=TRUE|;.|...Se|
|00003010| 6e 64 5f 42 79 74 65 28 | 45 4e 51 29 3b 0a 7c 09 |nd_Byte(|ENQ);.|.|
|00003020| 09 09 53 65 6e 64 5f 42 | 79 74 65 28 45 4e 51 29 |..Send_B|yte(ENQ)|
|00003030| 3b 0a 7c 09 09 09 41 63 | 74 69 6f 6e 3d 53 5f 47 |;.|...Ac|tion=S_G|
|00003040| 65 74 5f 44 4c 45 3b 0a | 7c 09 09 09 62 72 65 61 |et_DLE;.||...brea|
|00003050| 6b 3b 0a 7c 0a 7c 09 09 | 63 61 73 65 20 53 5f 52 |k;.|.|..|case S_R|
|00003060| 65 73 65 6e 64 5f 50 61 | 63 6b 65 74 73 3a 0a 7c |esend_Pa|ckets:.||
|00003070| 09 09 09 69 66 20 28 52 | 65 73 65 6e 64 29 7b 0a |...if (R|esend){.|
|00003080| 7c 09 09 09 09 66 6f 72 | 20 28 69 3d 30 3b 69 3c ||....for| (i=0;i<|
|00003090| 50 65 6e 64 69 6e 47 5f | 43 6f 75 6e 74 3b 69 2b |PendinG_|Count;i+|
|000030a0| 2b 29 0a 7c 09 09 09 09 | 09 6e 3d 28 4e 65 78 74 |+).|....|.n=(Next|
|000030b0| 5f 50 61 63 6b 65 74 2b | 69 29 25 53 65 6e 64 5f |_Packet+|i)%Send_|
|000030c0| 41 68 65 61 64 5f 42 75 | 66 66 65 72 73 2c 0a 7c |Ahead_Bu|ffers,.||
|000030d0| 09 09 09 09 09 58 6d 69 | 74 5f 50 61 63 6b 65 74 |.....Xmi|t_Packet|
|000030e0| 28 0a 7c 09 09 09 09 09 | 09 50 65 6e 64 69 6e 67 |(.|.....|.Pending|
|000030f0| 5b 6e 5d 2e 50 61 63 6b | 65 54 5f 53 69 7a 65 2c |[n].Pack|eT_Size,|
|00003100| 0a 7c 09 09 09 09 09 09 | 50 65 6e 64 69 6e 67 5b |.|......|Pending[|
|00003110| 6e 5d 2e 53 65 71 2c 0a | 7c 09 09 09 09 09 09 50 |n].Seq,.||......P|
|00003120| 65 6e 64 69 6e 67 5b 6e | 5d 2e 70 61 63 6b 65 74 |ending[n|].packet|
|00003130| 29 3b 0a 7c 09 09 09 7d | 65 6c 73 65 0a 7c 09 09 |);.|...}|else.|..|
|00003140| 09 09 72 65 74 75 72 6e | 20 46 41 49 4c 55 52 45 |..return| FAILURE|
|00003150| 3b 0a 7c 0a 7c 09 09 09 | 41 63 74 69 6f 6e 3d 53 |;.|.|...|Action=S|
|00003160| 5f 47 65 74 5f 44 4c 45 | 3b 0a 7c 09 09 09 62 72 |_Get_DLE|;.|...br|
|00003170| 65 61 6b 3b 0a 7c 09 09 | 7d 0a 7c 09 72 65 74 75 |eak;.|..|}.|.retu|
|00003180| 72 6e 20 46 41 49 4c 55 | 52 45 3b 0a 7c 7d 0a 7c |rn FAILU|RE;.|}.||
|00003190| 0a 7c 73 74 61 74 69 63 | 20 76 6f 69 64 20 53 65 |.|static| void Se|
|000031a0| 6e 64 5f 41 62 6f 72 74 | 28 29 0a 7c 7b 0a 7c 09 |nd_Abort|().|{.|.|
|000031b0| 66 63 6c 6f 73 65 28 44 | 61 74 61 5f 46 69 6c 65 |fclose(D|ata_File|
|000031c0| 29 3b 0a 7c 09 73 70 72 | 69 6e 74 66 28 4d 73 67 |);.|.spr|intf(Msg|
|000031d0| 2c 22 54 72 61 6e 73 66 | 65 72 20 61 62 6f 72 74 |,"Transf|er abort|
|000031e0| 20 72 65 71 75 65 73 74 | 65 64 22 29 3b 0a 7c 09 | request|ed");.|.|
|000031f0| 73 68 6f 77 28 30 2c 4d | 73 67 29 3b 0a 7c 09 53 |show(0,M|sg);.|.S|
|00003200| 65 6e 64 5f 46 61 69 6c | 75 72 65 28 27 41 27 2c |end_Fail|ure('A',|
|00003210| 4d 73 67 29 3b 0a 7c 7d | 0a 7c 0a 7c 73 74 61 74 |Msg);.|}|.|.|stat|
|00003220| 69 63 20 53 65 6e 64 5f | 50 61 63 6b 65 74 28 53 |ic Send_|Packet(S|
|00003230| 69 7a 65 29 0a 7c 69 6e | 74 20 53 69 7a 65 3b 0a |ize).|in|t Size;.|
|00003240| 7c 7b 0a 7c 09 72 65 67 | 69 73 74 65 72 20 69 3b ||{.|.reg|ister i;|
|00003250| 0a 7c 09 69 6e 74 20 20 | 4e 65 78 74 2c 20 4e 65 |.|.int |Next, Ne|
|00003260| 78 74 5f 53 65 71 3b 0a | 7c 09 63 68 61 72 20 2a |xt_Seq;.||.char *|
|00003270| 70 74 72 3b 0a 7c 0a 7c | 09 77 68 69 6c 65 20 28 |ptr;.|.||.while (|
|00003280| 28 50 65 6e 64 69 6e 47 | 5f 43 6f 75 6e 74 3e 57 |(PendinG|_Count>W|
|00003290| 69 6e 64 6f 77 5f 53 69 | 7a 65 29 29 0a 7c 09 09 |indow_Si|ze)).|..|
|000032a0| 69 66 20 28 21 57 61 69 | 74 5f 46 6f 72 5f 41 43 |if (!Wai|t_For_AC|
|000032b0| 4b 28 46 41 4c 53 45 2c | 54 52 55 45 2c 54 52 55 |K(FALSE,|TRUE,TRU|
|000032c0| 45 29 29 7b 0a 7c 09 09 | 09 53 65 6e 64 5f 41 62 |E)){.|..|.Send_Ab|
|000032d0| 6f 72 74 28 29 3b 0a 7c | 09 09 09 72 65 74 75 72 |ort();.||...retur|
|000032e0| 6e 20 46 41 49 4c 55 52 | 45 3b 0a 7c 09 09 7d 0a |n FAILUR|E;.|..}.|
|000032f0| 7c 0a 7c 09 69 66 20 28 | 28 70 74 72 3d 28 63 68 ||.|.if (|(ptr=(ch|
|00003300| 61 72 20 2a 29 6d 61 6c | 6c 6f 63 28 53 69 7a 65 |ar *)mal|loc(Size|
|00003310| 29 29 3d 3d 4e 55 4c 4c | 53 29 7b 0a 7c 09 09 53 |))==NULL|S){.|..S|
|00003320| 65 6e 64 5f 41 62 6f 72 | 74 28 29 3b 0a 7c 09 09 |end_Abor|t();.|..|
|00003330| 72 65 74 75 72 6e 20 46 | 41 49 4c 55 52 45 3b 0a |return F|AILURE;.|
|00003340| 7c 09 7d 0a 7c 0a 7c 09 | 4e 65 78 74 3d 28 4e 65 ||.}.|.|.|Next=(Ne|
|00003350| 78 74 5f 50 61 63 6b 65 | 74 2b 50 65 6e 64 69 6e |xt_Packe|t+Pendin|
|00003360| 47 5f 43 6f 75 6e 74 29 | 25 53 65 6e 64 5f 41 68 |G_Count)|%Send_Ah|
|00003370| 65 61 64 5f 42 75 66 66 | 65 72 73 3b 0a 7c 09 50 |ead_Buff|ers;.|.P|
|00003380| 65 6e 64 69 6e 47 5f 43 | 6f 75 6e 74 2b 2b 3b 0a |endinG_C|ount++;.|
|00003390| 7c 0a 7c 09 4e 65 78 74 | 5f 53 65 71 3d 53 65 71 ||.|.Next|_Seq=Seq|
|000033a0| 5f 4e 75 6d 3d 28 53 65 | 71 5f 4e 75 6d 2b 31 29 |_Num=(Se|q_Num+1)|
|000033b0| 25 31 30 3b 0a 7c 09 50 | 65 6e 64 69 6e 67 5b 4e |%10;.|.P|ending[N|
|000033c0| 65 78 74 5d 2e 53 65 71 | 3d 4e 65 78 74 5f 53 65 |ext].Seq|=Next_Se|
|000033d0| 71 3b 0a 7c 09 50 65 6e | 64 69 6e 67 5b 4e 65 78 |q;.|.Pen|ding[Nex|
|000033e0| 74 5d 2e 70 61 63 6b 65 | 74 3d 70 74 72 3b 0a 7c |t].packe|t=ptr;.||
|000033f0| 09 50 65 6e 64 69 6e 67 | 5b 4e 65 78 74 5d 2e 50 |.Pending|[Next].P|
|00003400| 61 63 6b 65 54 5f 53 69 | 7a 65 3d 53 69 7a 65 3b |ackeT_Si|ze=Size;|
|00003410| 0a 7c 09 50 61 63 6b 65 | 74 73 5f 42 74 77 6e 5f |.|.Packe|ts_Btwn_|
|00003420| 41 43 4b 73 3d 30 3b 0a | 7c 0a 7c 09 58 6d 69 74 |ACKs=0;.||.|.Xmit|
|00003430| 5f 50 61 63 6b 65 74 28 | 53 69 7a 65 2c 4e 65 78 |_Packet(|Size,Nex|
|00003440| 74 5f 53 65 71 2c 53 5f | 42 75 66 66 65 72 29 3b |t_Seq,S_|Buffer);|
|00003450| 0a 7c 0a 7c 09 66 6f 72 | 20 28 69 3d 30 3b 69 3c |.|.|.for| (i=0;i<|
|00003460| 53 69 7a 65 3b 69 2b 2b | 29 0a 7c 09 09 70 74 72 |Size;i++|).|..ptr|
|00003470| 5b 69 5d 3d 53 5f 42 75 | 66 66 65 72 5b 69 5d 3b |[i]=S_Bu|ffer[i];|
|00003480| 0a 7c 0a 7c 09 72 65 74 | 75 72 6e 20 53 55 43 43 |.|.|.ret|urn SUCC|
|00003490| 45 53 53 3b 0a 7c 7d 0a | 7c 0a 7c 73 74 61 74 69 |ESS;.|}.||.|stati|
|000034a0| 63 20 75 6e 73 69 67 6e | 65 64 20 6c 6f 6e 67 20 |c unsign|ed long |
|000034b0| 63 6e 76 41 74 6f 4c 28 | 70 74 72 29 0a 7c 63 68 |cnvAtoL(|ptr).|ch|
|000034c0| 61 72 20 2a 70 74 72 3b | 0a 7c 7b 0a 7c 09 75 6e |ar *ptr;|.|{.|.un|
|000034d0| 73 69 67 6e 65 64 20 73 | 68 6f 72 74 20 73 69 67 |signed s|hort sig|
|000034e0| 6e 3d 46 41 4c 53 45 3b | 0a 7c 09 63 68 61 72 20 |n=FALSE;|.|.char |
|000034f0| 63 68 3b 0a 7c 09 75 6e | 73 69 67 6e 65 64 20 6c |ch;.|.un|signed l|
|00003500| 6f 6e 67 20 72 65 73 75 | 6c 74 3d 30 3b 0a 7c 0a |ong resu|lt=0;.|.|
|00003510| 7c 09 63 68 3d 20 2a 70 | 74 72 2b 2b 3b 0a 7c 0a ||.ch= *p|tr++;.|.|
|00003520| 7c 09 69 66 20 28 63 68 | 3d 3d 27 2d 27 29 0a 7c ||.if (ch|=='-').||
|00003530| 09 09 73 69 67 6e 3d 54 | 52 55 45 2c 0a 7c 09 09 |..sign=T|RUE,.|..|
|00003540| 63 68 3d 20 2a 70 74 72 | 2b 2b 3b 0a 7c 0a 7c 09 |ch= *ptr|++;.|.|.|
|00003550| 77 68 69 6c 65 20 28 63 | 68 3e 3d 27 30 27 26 26 |while (c|h>='0'&&|
|00003560| 63 68 3c 3d 27 39 27 29 | 0a 7c 09 09 72 65 73 75 |ch<='9')|.|..resu|
|00003570| 6c 74 3d 72 65 73 75 6c | 74 2a 31 30 2b 28 63 68 |lt=resul|t*10+(ch|
|00003580| 2d 27 30 27 29 2c 0a 7c | 09 09 63 68 3d 20 2a 70 |-'0'),.||..ch= *p|
|00003590| 74 72 2b 2b 3b 0a 7c 0a | 7c 09 72 65 74 75 72 6e |tr++;.|.||.return|
|000035a0| 28 73 69 67 6e 3f 2d 72 | 65 73 75 6c 74 3a 72 65 |(sign?-r|esult:re|
|000035b0| 73 75 6c 74 29 3b 0a 7c | 7d 0a 7c 0a 7c 73 74 61 |sult);.||}.|.|sta|
|000035c0| 74 69 63 20 63 68 61 72 | 20 2a 63 6e 76 4c 74 6f |tic char| *cnvLto|
|000035d0| 41 28 70 74 72 2c 6e 29 | 0a 7c 63 68 61 72 20 2a |A(ptr,n)|.|char *|
|000035e0| 70 74 72 3b 0a 7c 75 6e | 73 69 67 6e 65 64 20 6c |ptr;.|un|signed l|
|000035f0| 6f 6e 67 20 6e 3b 0a 7c | 7b 0a 7c 09 63 68 61 72 |ong n;.||{.|.char|
|00003600| 20 74 6d 70 31 5b 31 31 | 5d 2c 20 2a 74 6d 70 32 | tmp1[11|], *tmp2|
|00003610| 3d 74 6d 70 31 3b 0a 7c | 0a 7c 09 69 66 20 28 6e |=tmp1;.||.|.if (n|
|00003620| 3d 3d 30 29 7b 0a 7c 09 | 09 2a 70 74 72 2b 2b 20 |==0){.|.|.*ptr++ |
|00003630| 3d 27 30 27 3b 0a 7c 09 | 09 72 65 74 75 72 6e 20 |='0';.|.|.return |
|00003640| 70 74 72 3b 0a 7c 09 7d | 0a 7c 0a 7c 09 2a 74 6d |ptr;.|.}|.|.|.*tm|
|00003650| 70 32 2b 2b 20 3d 30 3b | 0a 7c 09 64 6f 20 7b 0a |p2++ =0;|.|.do {.|
|00003660| 7c 09 09 2a 74 6d 70 32 | 2b 2b 20 3d 28 28 63 68 ||..*tmp2|++ =((ch|
|00003670| 61 72 29 28 6e 25 31 30 | 29 29 2b 27 30 27 3b 0a |ar)(n%10|))+'0';.|
|00003680| 7c 09 09 6e 2f 3d 31 30 | 3b 0a 7c 09 7d 20 77 68 ||..n/=10|;.|.} wh|
|00003690| 69 6c 65 20 28 6e 3e 30 | 29 3b 0a 7c 0a 7c 09 74 |ile (n>0|);.|.|.t|
|000036a0| 6d 70 32 2d 2d 3b 0a 7c | 09 77 68 69 6c 65 20 28 |mp2--;.||.while (|
|000036b0| 2a 74 6d 70 32 29 0a 7c | 09 09 2a 70 74 72 2b 2b |*tmp2).||..*ptr++|
|000036c0| 20 3d 20 2a 74 6d 70 32 | 2d 2d 3b 0a 7c 0a 7c 09 | = *tmp2|--;.|.|.|
|000036d0| 72 65 74 75 72 6e 20 70 | 74 72 3b 0a 7c 7d 0a 7c |return p|tr;.|}.||
|000036e0| 0a 7c 73 74 61 74 69 63 | 20 76 6f 69 64 20 53 65 |.|static| void Se|
|000036f0| 6e 64 5f 55 6e 65 78 70 | 65 63 74 65 64 5f 50 61 |nd_Unexp|ected_Pa|
|00003700| 63 6b 65 74 28 29 0a 7c | 7b 0a 7c 09 73 70 72 69 |cket().||{.|.spri|
|00003710| 6e 74 66 28 4d 73 67 2c | 22 55 6e 65 78 70 65 63 |ntf(Msg,|"Unexpec|
|00003720| 74 65 64 20 70 61 63 6b | 65 74 20 74 79 70 65 22 |ted pack|et type"|
|00003730| 29 3b 0a 7c 09 73 68 6f | 77 28 30 2c 4d 73 67 29 |);.|.sho|w(0,Msg)|
|00003740| 3b 0a 7c 09 53 65 6e 64 | 5f 46 61 69 6c 75 72 65 |;.|.Send|_Failure|
|00003750| 28 27 4e 27 2c 4d 73 67 | 29 3b 0a 7c 7d 0a 7c 0a |('N',Msg|);.|}.|.|
|00003760| 7c 46 49 4c 45 20 2a 51 | 75 65 72 79 43 72 65 61 ||FILE *Q|ueryCrea|
|00003770| 74 65 28 4f 66 66 65 72 | 5f 52 65 73 75 6d 65 29 |te(Offer|_Resume)|
|00003780| 0a 7c 73 68 6f 72 74 20 | 4f 66 66 65 72 5f 52 65 |.|short |Offer_Re|
|00003790| 73 75 6d 65 3b 0a 7c 7b | 0a 7c 09 69 6e 74 20 6b |sume;.|{|.|.int k|
|000037a0| 65 79 3b 0a 7c 09 73 68 | 6f 72 74 20 43 6f 6e 64 |ey;.|.sh|ort Cond|
|000037b0| 69 74 69 6f 6e 3b 0a 7c | 09 46 49 4c 45 20 2a 66 |ition;.||.FILE *f|
|000037c0| 69 6c 65 70 74 72 3b 0a | 7c 0a 7c 09 43 6f 6e 64 |ileptr;.||.|.Cond|
|000037d0| 69 74 69 6f 6e 20 3d 20 | 69 73 72 65 67 66 69 6c |ition = |isregfil|
|000037e0| 65 28 4e 61 6d 65 29 20 | 3f 20 4f 66 66 65 72 5f |e(Name) |? Offer_|
|000037f0| 52 65 73 75 6d 65 20 3a | 20 52 65 73 75 6d 65 5f |Resume :| Resume_|
|00003800| 44 65 6e 69 65 64 3b 0a | 7c 0a 7c 09 69 66 20 28 |Denied;.||.|.if (|
|00003810| 61 63 63 65 73 73 28 4e | 61 6d 65 2c 30 29 26 26 |access(N|ame,0)&&|
|00003820| 28 66 69 6c 65 70 74 72 | 3d 66 6f 70 65 6e 28 4e |(fileptr|=fopen(N|
|00003830| 61 6d 65 2c 22 77 22 29 | 29 29 7b 0a 7c 09 09 52 |ame,"w")|)){.|..R|
|00003840| 65 73 75 6c 74 3d 4f 76 | 65 72 77 72 69 74 65 3b |esult=Ov|erwrite;|
|00003850| 0a 7c 09 09 72 65 74 75 | 72 6e 20 66 69 6c 65 70 |.|..retu|rn filep|
|00003860| 74 72 3b 0a 7c 09 7d 20 | 65 6c 73 65 20 69 66 20 |tr;.|.} |else if |
|00003870| 28 61 63 63 65 73 73 28 | 4e 61 6d 65 2c 32 29 29 |(access(|Name,2))|
|00003880| 0a 7c 09 09 43 6f 6e 64 | 69 74 69 6f 6e 20 3d 20 |.|..Cond|ition = |
|00003890| 52 65 73 75 6d 65 5f 44 | 65 6e 69 65 64 3b 0a 7c |Resume_D|enied;.||
|000038a0| 0a 7c 09 73 77 69 74 63 | 68 28 43 6f 6e 64 69 74 |.|.switc|h(Condit|
|000038b0| 69 6f 6e 29 7b 0a 7c 09 | 63 61 73 65 20 52 65 73 |ion){.|.|case Res|
|000038c0| 75 6d 65 5f 41 6c 6c 6f | 77 65 64 3a 0a 7c 09 09 |ume_Allo|wed:.|..|
|000038d0| 73 70 72 69 6e 74 66 28 | 4d 73 67 2c 22 27 25 73 |sprintf(|Msg,"'%s|
|000038e0| 27 20 65 78 69 73 74 73 | 3b 20 4f 76 65 72 77 72 |' exists|; Overwr|
|000038f0| 69 74 65 2c 20 52 65 73 | 75 6d 65 2c 20 72 65 4e |ite, Res|ume, reN|
|00003900| 61 6d 65 2c 20 6f 72 20 | 41 62 6f 72 74 3f 22 2c |ame, or |Abort?",|
|00003910| 4e 61 6d 65 29 3b 0a 7c | 09 09 62 72 65 61 6b 3b |Name);.||..break;|
|00003920| 0a 7c 0a 7c 09 63 61 73 | 65 20 52 65 73 75 6d 65 |.|.|.cas|e Resume|
|00003930| 5f 4e 6f 74 5f 41 6c 6c | 6f 77 65 64 3a 0a 7c 09 |_Not_All|owed:.|.|
|00003940| 09 73 70 72 69 6e 74 66 | 28 4d 73 67 2c 22 27 25 |.sprintf|(Msg,"'%|
|00003950| 73 27 20 65 78 69 73 74 | 73 3b 20 4f 76 65 72 77 |s' exist|s; Overw|
|00003960| 72 69 74 65 2c 20 72 65 | 4e 61 6d 65 2c 20 6f 72 |rite, re|Name, or|
|00003970| 20 41 62 6f 72 74 3f 22 | 2c 4e 61 6d 65 29 3b 0a | Abort?"|,Name);.|
|00003980| 7c 09 09 62 72 65 61 6b | 3b 0a 7c 0a 7c 09 63 61 ||..break|;.|.|.ca|
|00003990| 73 65 20 52 65 73 75 6d | 65 5f 46 61 69 6c 65 64 |se Resum|e_Failed|
|000039a0| 3a 0a 7c 09 09 73 70 72 | 69 6e 74 66 28 4d 73 67 |:.|..spr|intf(Msg|
|000039b0| 2c 22 27 25 73 27 20 43 | 52 43 20 65 72 72 6f 72 |,"'%s' C|RC error|
|000039c0| 3b 20 4f 76 65 72 77 72 | 69 74 65 2c 20 72 65 4e |; Overwr|ite, reN|
|000039d0| 61 6d 65 20 6f 72 20 41 | 62 6f 72 74 3f 22 2c 4e |ame or A|bort?",N|
|000039e0| 61 6d 65 29 3b 0a 7c 09 | 09 62 72 65 61 6b 3b 0a |ame);.|.|.break;.|
|000039f0| 7c 0a 7c 09 63 61 73 65 | 20 52 65 73 75 6d 65 5f ||.|.case| Resume_|
|00003a00| 44 65 6e 69 65 64 3a 0a | 7c 09 09 73 70 72 69 6e |Denied:.||..sprin|
|00003a10| 74 66 28 4d 73 67 2c 22 | 50 65 72 6d 69 73 73 69 |tf(Msg,"|Permissi|
|00003a20| 6f 6e 20 64 65 6e 69 65 | 64 20 66 6f 72 20 27 25 |on denie|d for '%|
|00003a30| 73 27 3b 20 72 65 4e 61 | 6d 65 2c 20 6f 72 20 41 |s'; reNa|me, or A|
|00003a40| 62 6f 72 74 3f 22 2c 4e | 61 6d 65 29 3b 0a 7c 09 |bort?",N|ame);.|.|
|00003a50| 09 62 72 65 61 6b 3b 0a | 7c 09 7d 0a 7c 09 73 68 |.break;.||.}.|.sh|
|00003a60| 6f 77 28 30 2c 4d 73 67 | 29 3b 0a 7c 0a 7c 09 66 |ow(0,Msg|);.|.|.f|
|00003a70| 6f 72 20 28 3b 3b 29 7b | 0a 7c 09 09 62 65 65 70 |or (;;){|.|..beep|
|00003a80| 28 29 3b 0a 7c 09 09 6b | 65 79 3d 74 6f 75 70 70 |();.|..k|ey=toupp|
|00003a90| 65 72 28 64 67 65 74 63 | 68 28 29 29 3b 0a 7c 09 |er(dgetc|h());.|.|
|00003aa0| 09 69 66 20 28 69 73 75 | 70 70 65 72 28 6b 65 79 |.if (isu|pper(key|
|00003ab0| 29 29 7b 0a 7c 09 09 09 | 66 70 75 74 63 28 6b 65 |)){.|...|fputc(ke|
|00003ac0| 79 2c 74 66 70 29 3b 0a | 7c 0a 7c 09 09 09 73 77 |y,tfp);.||.|...sw|
|00003ad0| 69 74 63 68 28 6b 65 79 | 29 7b 0a 7c 09 09 09 63 |itch(key|){.|...c|
|00003ae0| 61 73 65 20 27 4f 27 3a | 0a 7c 09 09 09 09 69 66 |ase 'O':|.|....if|
|00003af0| 20 28 43 6f 6e 64 69 74 | 69 6f 6e 21 3d 52 65 73 | (Condit|ion!=Res|
|00003b00| 75 6d 65 5f 44 65 6e 69 | 65 64 29 7b 0a 7c 09 09 |ume_Deni|ed){.|..|
|00003b10| 09 09 09 52 65 73 75 6c | 74 3d 4f 76 65 72 77 72 |...Resul|t=Overwr|
|00003b20| 69 74 65 3b 0a 7c 09 09 | 09 09 09 72 65 74 75 72 |ite;.|..|...retur|
|00003b30| 6e 20 66 6f 70 65 6e 28 | 4e 61 6d 65 2c 22 77 22 |n fopen(|Name,"w"|
|00003b40| 29 3b 0a 7c 09 09 09 09 | 7d 0a 7c 09 09 09 09 62 |);.|....|}.|....b|
|00003b50| 72 65 61 6b 3b 0a 7c 0a | 7c 09 09 09 63 61 73 65 |reak;.|.||...case|
|00003b60| 20 27 4e 27 3a 0a 7c 09 | 09 09 09 66 70 75 74 63 | 'N':.|.|...fputc|
|00003b70| 28 27 5c 72 27 2c 74 66 | 70 29 3b 0a 7c 09 09 09 |('\r',tf|p);.|...|
|00003b80| 09 63 6c 5f 6c 69 6e 65 | 28 29 3b 0a 7c 09 09 09 |.cl_line|();.|...|
|00003b90| 09 73 68 6f 77 28 2d 31 | 2c 22 45 6e 74 65 72 20 |.show(-1|,"Enter |
|00003ba0| 4e 65 77 20 4e 61 6d 65 | 3a 22 29 3b 0a 7c 09 09 |New Name|:");.|..|
|00003bb0| 09 09 67 65 74 6c 69 6e | 65 28 29 3b 0a 7c 09 09 |..getlin|e();.|..|
|00003bc0| 09 09 67 65 74 77 6f 72 | 64 28 29 3b 0a 7c 09 09 |..getwor|d();.|..|
|00003bd0| 09 09 73 74 72 63 70 79 | 28 4e 61 6d 65 2c 77 6f |..strcpy|(Name,wo|
|00003be0| 72 64 29 3b 0a 7c 09 09 | 09 09 72 65 74 75 72 6e |rd);.|..|..return|
|00003bf0| 20 51 75 65 72 79 43 72 | 65 61 74 65 28 4f 66 66 | QueryCr|eate(Off|
|00003c00| 65 72 5f 52 65 73 75 6d | 65 29 3b 0a 7c 0a 7c 09 |er_Resum|e);.|.|.|
|00003c10| 09 09 63 61 73 65 20 27 | 41 27 3a 0a 7c 09 09 09 |..case '|A':.|...|
|00003c20| 09 72 65 74 75 72 6e 20 | 4e 55 4c 4c 46 3b 0a 7c |.return |NULLF;.||
|00003c30| 0a 7c 09 09 09 63 61 73 | 65 20 27 52 27 3a 0a 7c |.|...cas|e 'R':.||
|00003c40| 09 09 09 09 69 66 20 28 | 43 6f 6e 64 69 74 69 6f |....if (|Conditio|
|00003c50| 6e 3d 3d 52 65 73 75 6d | 65 5f 41 6c 6c 6f 77 65 |n==Resum|e_Allowe|
|00003c60| 64 29 7b 0a 7c 09 09 09 | 09 09 52 65 73 75 6c 74 |d){.|...|..Result|
|00003c70| 3d 52 65 73 75 6d 65 3b | 0a 7c 09 09 09 09 09 72 |=Resume;|.|.....r|
|00003c80| 65 74 75 72 6e 20 66 6f | 70 65 6e 28 4e 61 6d 65 |eturn fo|pen(Name|
|00003c90| 2c 22 72 2b 22 29 3b 0a | 7c 09 09 09 09 7d 0a 7c |,"r+");.||....}.||
|00003ca0| 09 09 09 09 62 72 65 61 | 6b 3b 0a 7c 09 09 09 7d |....brea|k;.|...}|
|00003cb0| 0a 7c 09 09 09 66 70 75 | 74 63 28 27 5c 62 27 2c |.|...fpu|tc('\b',|
|00003cc0| 74 66 70 29 3b 0a 7c 09 | 09 7d 0a 7c 09 7d 0a 7c |tfp);.|.|.}.|.}.||
|00003cd0| 7d 0a 7c 0a 7c 73 74 61 | 74 69 63 20 52 65 63 65 |}.|.|sta|tic Rece|
|00003ce0| 69 76 65 5f 46 69 6c 65 | 28 29 0a 7c 7b 0a 7c 09 |ive_File|().|{.|.|
|00003cf0| 63 68 61 72 20 2a 70 74 | 72 3b 0a 7c 09 69 6e 74 |char *pt|r;.|.int|
|00003d00| 20 4e 2c 20 69 3b 0a 7c | 09 73 68 6f 72 74 20 52 | N, i;.||.short R|
|00003d10| 65 71 75 65 73 74 5f 52 | 65 73 75 6d 65 3b 0a 7c |equest_R|esume;.||
|00003d20| 0a 7c 09 52 65 73 75 6c | 74 3d 4f 76 65 72 77 72 |.|.Resul|t=Overwr|
|00003d30| 69 74 65 3b 0a 7c 09 69 | 66 20 28 56 61 6c 69 64 |ite;.|.i|f (Valid|
|00003d40| 5f 54 6f 5f 52 65 73 75 | 6d 65 5f 44 6f 77 6e 6c |_To_Resu|me_Downl|
|00003d50| 6f 61 64 3d 3d 32 29 0a | 7c 09 09 52 65 71 75 65 |oad==2).||..Reque|
|00003d60| 73 74 5f 52 65 73 75 6d | 65 3d 52 65 73 75 6d 65 |st_Resum|e=Resume|
|00003d70| 5f 41 6c 6c 6f 77 65 64 | 3b 0a 7c 09 65 6c 73 65 |_Allowed|;.|.else|
|00003d80| 0a 7c 09 09 52 65 71 75 | 65 73 74 5f 52 65 73 75 |.|..Requ|est_Resu|
|00003d90| 6d 65 3d 52 65 73 75 6d | 65 5f 4e 6f 74 5f 41 6c |me=Resum|e_Not_Al|
|00003da0| 6c 6f 77 65 64 3b 0a 7c | 0a 7c 09 69 66 20 28 28 |lowed;.||.|.if ((|
|00003db0| 44 61 74 61 5f 46 69 6c | 65 3d 51 75 65 72 79 43 |Data_Fil|e=QueryC|
|00003dc0| 72 65 61 74 65 28 52 65 | 71 75 65 73 74 5f 52 65 |reate(Re|quest_Re|
|00003dd0| 73 75 6d 65 29 29 3d 3d | 4e 55 4c 4c 46 29 7b 0a |sume))==|NULLF){.|
|00003de0| 7c 09 09 53 65 6e 64 5f | 41 62 6f 72 74 28 29 3b ||..Send_|Abort();|
|00003df0| 0a 7c 09 09 72 65 74 75 | 72 6e 20 46 41 49 4c 55 |.|..retu|rn FAILU|
|00003e00| 52 45 3b 0a 7c 09 7d 0a | 7c 0a 7c 09 63 68 6f 77 |RE;.|.}.||.|.chow|
|00003e10| 6e 28 4e 61 6d 65 2c 67 | 65 74 75 69 64 28 29 2c |n(Name,g|etuid(),|
|00003e20| 67 65 74 67 69 64 28 29 | 29 3b 0a 7c 0a 7c 09 69 |getgid()|);.|.|.i|
|00003e30| 66 20 28 52 65 73 75 6c | 74 3d 3d 52 65 73 75 6d |f (Resul|t==Resum|
|00003e40| 65 29 7b 0a 7c 09 09 73 | 74 72 63 70 79 28 74 64 |e){.|..s|trcpy(td|
|00003e50| 69 72 2c 22 41 74 74 65 | 6d 70 74 69 6e 67 20 72 |ir,"Atte|mpting r|
|00003e60| 65 63 65 69 76 65 20 72 | 65 73 75 6d 65 20 6f 66 |eceive r|esume of|
|00003e70| 22 29 3b 0a 7c 09 09 73 | 68 6f 77 6d 6f 64 65 28 |");.|..s|howmode(|
|00003e80| 29 3b 0a 7c 0a 7c 09 09 | 69 6e 69 74 5f 63 68 65 |);.|.|..|init_che|
|00003e90| 63 6b 28 29 3b 0a 7c 0a | 7c 09 09 64 6f 20 7b 0a |ck();.|.||..do {.|
|00003ea0| 7c 09 09 09 53 5f 42 75 | 66 66 65 72 5b 30 5d 3d ||...S_Bu|ffer[0]=|
|00003eb0| 27 4e 27 3b 0a 7c 09 09 | 09 4e 3d 52 65 61 64 28 |'N';.|..|.N=Read(|
|00003ec0| 44 61 74 61 5f 46 69 6c | 65 2c 26 53 5f 42 75 66 |Data_Fil|e,&S_Buf|
|00003ed0| 66 65 72 5b 30 5d 2c 50 | 61 63 6b 65 54 5f 53 69 |fer[0],P|ackeT_Si|
|00003ee0| 7a 65 2d 31 29 3b 0a 7c | 0a 7c 09 09 09 69 66 20 |ze-1);.||.|...if |
|00003ef0| 28 4e 3e 30 29 7b 0a 7c | 09 09 09 09 66 6f 72 20 |(N>0){.||....for |
|00003f00| 28 69 3d 30 3b 69 3c 4e | 3b 69 2b 2b 29 0a 7c 09 |(i=0;i<N|;i++).|.|
|00003f10| 09 09 09 09 64 6f 5f 63 | 68 65 63 6b 73 75 6d 28 |....do_c|hecksum(|
|00003f20| 53 5f 42 75 66 66 65 72 | 5b 69 5d 29 3b 0a 7c 09 |S_Buffer|[i]);.|.|
|00003f30| 09 09 09 69 66 20 28 41 | 62 6f 72 74 5f 46 6c 61 |...if (A|bort_Fla|
|00003f40| 67 29 7b 0a 7c 09 09 09 | 09 09 53 65 6e 64 5f 41 |g){.|...|..Send_A|
|00003f50| 62 6f 72 74 28 29 3b 0a | 7c 09 09 09 09 09 72 65 |bort();.||.....re|
|00003f60| 74 75 72 6e 20 46 41 49 | 4c 55 52 45 3b 0a 7c 09 |turn FAI|LURE;.|.|
|00003f70| 09 09 09 7d 0a 7c 0a 7c | 09 09 09 09 61 6c 72 65 |...}.|.||....alre|
|00003f80| 61 64 79 5f 68 61 76 65 | 2b 3d 4e 3b 0a 7c 09 09 |ady_have|+=N;.|..|
|00003f90| 09 7d 0a 7c 09 09 7d 20 | 77 68 69 6c 65 20 28 4e |.}.|..} |while (N|
|00003fa0| 3e 30 29 3b 0a 7c 0a 7c | 09 09 70 74 72 3d 20 26 |>0);.|.||..ptr= &|
|00003fb0| 53 5f 42 75 66 66 65 72 | 5b 30 5d 3b 0a 7c 0a 7c |S_Buffer|[0];.|.||
|00003fc0| 09 09 2a 70 74 72 2b 2b | 20 3d 27 54 27 3b 0a 7c |..*ptr++| ='T';.||
|00003fd0| 09 09 2a 70 74 72 2b 2b | 20 3d 27 72 27 3b 0a 7c |..*ptr++| ='r';.||
|00003fe0| 0a 7c 09 09 70 74 72 3d | 63 6e 76 4c 74 6f 41 28 |.|..ptr=|cnvLtoA(|
|00003ff0| 70 74 72 2c 28 75 6e 73 | 69 67 6e 65 64 20 6c 6f |ptr,(uns|igned lo|
|00004000| 6e 67 29 61 6c 72 65 61 | 64 79 5f 68 61 76 65 29 |ng)alrea|dy_have)|
|00004010| 3b 0a 7c 09 09 2a 70 74 | 72 2b 2b 20 3d 27 20 27 |;.|..*pt|r++ =' '|
|00004020| 3b 0a 7c 09 09 70 74 72 | 3d 63 6e 76 4c 74 6f 41 |;.|..ptr|=cnvLtoA|
|00004030| 28 70 74 72 2c 28 75 6e | 73 69 67 6e 65 64 20 6c |(ptr,(un|signed l|
|00004040| 6f 6e 67 29 43 68 65 63 | 6b 73 75 6d 29 3b 0a 7c |ong)Chec|ksum);.||
|00004050| 0a 7c 09 09 69 66 20 28 | 21 53 65 6e 64 5f 50 61 |.|..if (|!Send_Pa|
|00004060| 63 6b 65 74 28 70 74 72 | 2d 20 26 53 5f 42 75 66 |cket(ptr|- &S_Buf|
|00004070| 66 65 72 5b 30 5d 29 7c | 7c 21 46 6c 75 73 68 5f |fer[0])|||!Flush_|
|00004080| 50 65 6e 64 69 6e 67 28 | 29 29 7b 0a 7c 09 09 09 |Pending(|)){.|...|
|00004090| 66 63 6c 6f 73 65 28 44 | 61 74 61 5f 46 69 6c 65 |fclose(D|ata_File|
|000040a0| 29 3b 0a 7c 09 09 09 73 | 68 6f 77 28 30 2c 22 43 |);.|...s|how(0,"C|
|000040b0| 61 6e 27 74 20 72 65 73 | 75 6d 65 20 74 72 61 6e |an't res|ume tran|
|000040c0| 73 66 65 72 22 29 3b 0a | 7c 09 09 09 72 65 74 75 |sfer");.||...retu|
|000040d0| 72 6e 20 46 41 49 4c 55 | 52 45 3b 0a 7c 09 09 7d |rn FAILU|RE;.|..}|
|000040e0| 0a 7c 0a 7c 09 09 66 73 | 65 65 6b 28 44 61 74 61 |.|.|..fs|eek(Data|
|000040f0| 5f 46 69 6c 65 2c 28 6c | 6f 6e 67 29 30 2c 32 29 |_File,(l|ong)0,2)|
|00004100| 3b 0a 7c 0a 7c 09 09 73 | 74 72 63 70 79 28 74 64 |;.|.|..s|trcpy(td|
|00004110| 69 72 2c 22 52 65 73 75 | 6d 69 6e 67 20 72 65 63 |ir,"Resu|ming rec|
|00004120| 65 69 76 65 20 6f 66 22 | 29 3b 0a 7c 09 09 64 61 |eive of"|);.|..da|
|00004130| 74 61 3d 61 6c 72 65 61 | 64 79 5f 68 61 76 65 2d |ta=alrea|dy_have-|
|00004140| 63 61 72 72 69 61 67 65 | 5f 72 65 74 75 72 6e 3b |carriage|_return;|
|00004150| 0a 7c 09 09 63 61 72 72 | 69 61 67 65 5f 72 65 74 |.|..carr|iage_ret|
|00004160| 75 72 6e 3d 20 2d 63 61 | 72 72 69 61 67 65 5f 72 |urn= -ca|rriage_r|
|00004170| 65 74 75 72 6e 3b 0a 7c | 09 09 73 68 6f 77 6d 6f |eturn;.||..showmo|
|00004180| 64 65 28 29 3b 0a 7c 09 | 7d 20 65 6c 73 65 0a 7c |de();.|.|} else.||
|00004190| 09 09 53 65 6e 64 5f 41 | 43 4b 28 29 2c 0a 7c 09 |..Send_A|CK(),.|.|
|000041a0| 09 73 74 72 63 70 79 28 | 74 64 69 72 2c 22 52 65 |.strcpy(|tdir,"Re|
|000041b0| 63 65 69 76 69 6e 67 22 | 29 2c 0a 7c 09 09 61 6c |ceiving"|),.|..al|
|000041c0| 72 65 61 64 79 5f 68 61 | 76 65 3d 30 3b 0a 7c 0a |ready_ha|ve=0;.|.|
|000041d0| 7c 09 66 6f 72 20 28 3b | 3b 29 7b 0a 7c 09 09 69 ||.for (;|;){.|..i|
|000041e0| 66 20 28 41 62 6f 72 74 | 5f 46 6c 61 67 29 7b 0a |f (Abort|_Flag){.|
|000041f0| 7c 09 09 09 53 65 6e 64 | 5f 41 62 6f 72 74 28 29 ||...Send|_Abort()|
|00004200| 3b 0a 7c 09 09 09 72 65 | 74 75 72 6e 20 46 41 49 |;.|...re|turn FAI|
|00004210| 4c 55 52 45 3b 0a 7c 09 | 09 7d 0a 7c 0a 7c 09 09 |LURE;.|.|.}.|.|..|
|00004220| 57 61 69 74 5f 46 6f 72 | 5f 41 43 4b 28 46 41 4c |Wait_For|_ACK(FAL|
|00004230| 53 45 2c 54 52 55 45 2c | 54 52 55 45 29 3b 0a 7c |SE,TRUE,|TRUE);.||
|00004240| 0a 7c 09 09 69 66 20 28 | 50 61 63 6b 65 74 5f 52 |.|..if (|Packet_R|
|00004250| 65 63 65 69 76 65 64 29 | 0a 7c 09 09 09 73 77 69 |eceived)|.|...swi|
|00004260| 74 63 68 28 52 5f 42 75 | 66 66 65 72 5b 30 5d 29 |tch(R_Bu|ffer[0])|
|00004270| 7b 0a 7c 09 09 09 63 61 | 73 65 20 27 4e 27 3a 0a |{.|...ca|se 'N':.|
|00004280| 7c 09 09 09 09 69 66 20 | 28 28 4e 3d 57 72 69 74 ||....if |((N=Writ|
|00004290| 65 28 44 61 74 61 5f 46 | 69 6c 65 2c 26 52 5f 42 |e(Data_F|ile,&R_B|
|000042a0| 75 66 66 65 72 5b 31 5d | 2c 52 5f 42 55 66 66 65 |uffer[1]|,R_BUffe|
|000042b0| 72 5f 4c 65 6e 2d 31 29 | 29 3d 3d 20 2d 31 29 7b |r_Len-1)|)== -1){|
|000042c0| 0a 7c 09 09 09 09 09 73 | 70 72 69 6e 74 66 28 4d |.|.....s|printf(M|
|000042d0| 73 67 2c 22 44 69 73 6b | 20 77 72 69 74 65 20 65 |sg,"Disk| write e|
|000042e0| 72 72 6f 72 22 29 3b 0a | 7c 09 09 09 09 09 73 68 |rror");.||.....sh|
|000042f0| 6f 77 28 30 2c 4d 73 67 | 29 3b 0a 7c 09 09 09 09 |ow(0,Msg|);.|....|
|00004300| 09 53 65 6e 64 5f 46 61 | 69 6c 75 72 65 28 27 49 |.Send_Fa|ilure('I|
|00004310| 27 2c 4d 73 67 29 3b 0a | 7c 09 09 09 09 09 66 63 |',Msg);.||.....fc|
|00004320| 6c 6f 73 65 28 44 61 74 | 61 5f 46 69 6c 65 29 3b |lose(Dat|a_File);|
|00004330| 0a 7c 09 09 09 09 09 72 | 65 74 75 72 6e 20 46 41 |.|.....r|eturn FA|
|00004340| 49 4c 55 52 45 3b 0a 7c | 09 09 09 09 7d 0a 7c 0a |ILURE;.||....}.|.|
|00004350| 7c 09 09 09 09 73 74 61 | 74 73 28 4e 29 3b 0a 7c ||....sta|ts(N);.||
|00004360| 09 09 09 09 62 72 65 61 | 6b 3b 0a 7c 0a 7c 09 09 |....brea|k;.|.|..|
|00004370| 09 63 61 73 65 20 27 54 | 27 3a 0a 7c 09 09 09 09 |.case 'T|':.|....|
|00004380| 73 77 69 74 63 68 28 52 | 5f 42 75 66 66 65 72 5b |switch(R|_Buffer[|
|00004390| 31 5d 29 7b 0a 7c 09 09 | 09 09 63 61 73 65 20 27 |1]){.|..|..case '|
|000043a0| 49 27 3a 0a 7c 09 09 09 | 09 09 66 73 69 7a 65 3d |I':.|...|..fsize=|
|000043b0| 63 6e 76 41 74 6f 4c 28 | 26 52 5f 42 75 66 66 65 |cnvAtoL(|&R_Buffe|
|000043c0| 72 5b 34 5d 29 3b 0a 7c | 09 09 09 09 09 73 68 6f |r[4]);.||.....sho|
|000043d0| 77 6d 6f 64 65 28 29 3b | 0a 7c 09 09 09 09 09 62 |wmode();|.|.....b|
|000043e0| 72 65 61 6b 3b 0a 7c 0a | 7c 09 09 09 09 63 61 73 |reak;.|.||....cas|
|000043f0| 65 20 27 43 27 3a 0a 7c | 09 09 09 09 09 66 63 6c |e 'C':.||.....fcl|
|00004400| 6f 73 65 28 44 61 74 61 | 5f 46 69 6c 65 29 3b 0a |ose(Data|_File);.|
|00004410| 7c 09 09 09 09 09 72 65 | 74 75 72 6e 20 53 55 43 ||.....re|turn SUC|
|00004420| 43 45 53 53 3b 0a 7c 0a | 7c 09 09 09 09 63 61 73 |CESS;.|.||....cas|
|00004430| 65 20 27 66 27 3a 0a 7c | 09 09 09 09 09 66 63 6c |e 'f':.||.....fcl|
|00004440| 6f 73 65 28 44 61 74 61 | 5f 46 69 6c 65 29 3b 0a |ose(Data|_File);.|
|00004450| 7c 0a 7c 09 09 09 09 09 | 69 66 20 28 28 44 61 74 ||.|.....|if ((Dat|
|00004460| 61 5f 46 69 6c 65 3d 51 | 75 65 72 79 43 72 65 61 |a_File=Q|ueryCrea|
|00004470| 74 65 28 52 65 73 75 6d | 65 5f 46 61 69 6c 65 64 |te(Resum|e_Failed|
|00004480| 29 29 3d 3d 4e 55 4c 4c | 46 29 7b 0a 7c 09 09 09 |))==NULL|F){.|...|
|00004490| 09 09 09 53 65 6e 64 5f | 41 62 6f 72 74 28 29 3b |...Send_|Abort();|
|000044a0| 0a 7c 09 09 09 09 09 09 | 72 65 74 75 72 6e 20 46 |.|......|return F|
|000044b0| 41 49 4c 55 52 45 3b 0a | 7c 09 09 09 09 09 7d 0a |AILURE;.||.....}.|
|000044c0| 7c 0a 7c 09 09 09 09 09 | 63 68 6f 77 6e 28 4e 61 ||.|.....|chown(Na|
|000044d0| 6d 65 2c 67 65 74 75 69 | 64 28 29 2c 67 65 74 67 |me,getui|d(),getg|
|000044e0| 69 64 28 29 29 3b 0a 7c | 09 09 09 09 09 73 74 72 |id());.||.....str|
|000044f0| 63 70 79 28 74 64 69 72 | 2c 22 52 65 63 65 69 76 |cpy(tdir|,"Receiv|
|00004500| 69 6e 67 22 29 3b 0a 7c | 09 09 09 09 09 64 61 74 |ing");.||.....dat|
|00004510| 61 3d 61 6c 72 65 61 64 | 79 5f 68 61 76 65 3d 63 |a=alread|y_have=c|
|00004520| 61 72 72 69 61 67 65 5f | 72 65 74 75 72 6e 3d 30 |arriage_|return=0|
|00004530| 3b 0a 7c 09 09 09 09 09 | 73 68 6f 77 6d 6f 64 65 |;.|.....|showmode|
|00004540| 28 29 3b 0a 7c 09 09 09 | 09 09 62 72 65 61 6b 3b |();.|...|..break;|
|00004550| 0a 7c 0a 7c 09 09 09 09 | 64 65 66 61 75 6c 74 3a |.|.|....|default:|
|00004560| 0a 7c 09 09 09 09 09 53 | 65 6e 64 5f 55 6e 65 78 |.|.....S|end_Unex|
|00004570| 70 65 63 74 65 64 5f 50 | 61 63 6b 65 74 28 29 3b |pected_P|acket();|
|00004580| 0a 7c 09 09 09 09 09 66 | 63 6c 6f 73 65 28 44 61 |.|.....f|close(Da|
|00004590| 74 61 5f 46 69 6c 65 29 | 3b 0a 7c 09 09 09 09 09 |ta_File)|;.|.....|
|000045a0| 72 65 74 75 72 6e 20 46 | 41 49 4c 55 52 45 3b 0a |return F|AILURE;.|
|000045b0| 7c 09 09 09 09 7d 0a 7c | 09 09 09 09 62 72 65 61 ||....}.||....brea|
|000045c0| 6b 3b 0a 7c 0a 7c 09 09 | 09 63 61 73 65 20 27 46 |k;.|.|..|.case 'F|
|000045d0| 27 3a 0a 7c 09 09 09 09 | 66 63 6c 6f 73 65 28 44 |':.|....|fclose(D|
|000045e0| 61 74 61 5f 46 69 6c 65 | 29 3b 0a 7c 09 09 09 09 |ata_File|);.|....|
|000045f0| 52 5f 42 75 66 66 65 72 | 5b 52 5f 42 55 66 66 65 |R_Buffer|[R_BUffe|
|00004600| 72 5f 4c 65 6e 5d 3d 30 | 3b 0a 7c 0a 7c 09 09 09 |r_Len]=0|;.|.|...|
|00004610| 09 69 66 20 28 52 65 73 | 75 6c 74 3d 3d 52 65 73 |.if (Res|ult==Res|
|00004620| 75 6d 65 29 0a 7c 09 09 | 09 09 09 73 70 72 69 6e |ume).|..|...sprin|
|00004630| 74 66 28 4d 73 67 2c 22 | 43 61 6e 27 74 20 72 65 |tf(Msg,"|Can't re|
|00004640| 73 75 6d 65 20 74 72 61 | 6e 73 66 65 72 3a 20 25 |sume tra|nsfer: %|
|00004650| 73 22 2c 26 52 5f 42 75 | 66 66 65 72 5b 33 5d 29 |s",&R_Bu|ffer[3])|
|00004660| 3b 0a 7c 09 09 09 09 65 | 6c 73 65 0a 7c 09 09 09 |;.|....e|lse.|...|
|00004670| 09 09 73 70 72 69 6e 74 | 66 28 4d 73 67 2c 22 42 |..sprint|f(Msg,"B|
|00004680| 20 70 72 6f 74 6f 63 6f | 6c 20 46 61 69 6c 75 72 | protoco|l Failur|
|00004690| 65 3a 20 25 73 22 2c 26 | 52 5f 42 75 66 66 65 72 |e: %s",&|R_Buffer|
|000046a0| 5b 33 5d 29 3b 0a 7c 0a | 7c 09 09 09 09 73 68 6f |[3]);.|.||....sho|
|000046b0| 77 28 30 2c 4d 73 67 29 | 3b 0a 7c 09 09 09 09 72 |w(0,Msg)|;.|....r|
|000046c0| 65 74 75 72 6e 20 46 41 | 49 4c 55 52 45 3b 0a 7c |eturn FA|ILURE;.||
|000046d0| 0a 7c 09 09 09 64 65 66 | 61 75 6c 74 3a 0a 7c 09 |.|...def|ault:.|.|
|000046e0| 09 09 09 53 65 6e 64 5f | 55 6e 65 78 70 65 63 74 |...Send_|Unexpect|
|000046f0| 65 64 5f 50 61 63 6b 65 | 74 28 29 3b 0a 7c 09 09 |ed_Packe|t();.|..|
|00004700| 09 09 66 63 6c 6f 73 65 | 28 44 61 74 61 5f 46 69 |..fclose|(Data_Fi|
|00004710| 6c 65 29 3b 0a 7c 09 09 | 09 09 72 65 74 75 72 6e |le);.|..|..return|
|00004720| 20 46 41 49 4c 55 52 45 | 3b 0a 7c 09 09 09 7d 0a | FAILURE|;.|...}.|
|00004730| 7c 09 09 65 6c 73 65 20 | 7b 0a 7c 09 09 09 66 63 ||..else |{.|...fc|
|00004740| 6c 6f 73 65 28 44 61 74 | 61 5f 46 69 6c 65 29 3b |lose(Dat|a_File);|
|00004750| 0a 7c 09 09 09 72 65 74 | 75 72 6e 20 46 41 49 4c |.|...ret|urn FAIL|
|00004760| 55 52 45 3b 0a 7c 09 09 | 7d 0a 7c 09 7d 0a 7c 7d |URE;.|..|}.|.}.|}|
|00004770| 0a 7c 0a 7c 73 74 61 74 | 69 63 20 63 68 61 72 20 |.|.|stat|ic char |
|00004780| 2a 48 61 6e 64 6c 65 5f | 53 65 6e 64 5f 46 61 69 |*Handle_|Send_Fai|
|00004790| 6c 75 72 65 28 29 0a 7c | 7b 0a 7c 09 69 66 20 28 |lure().||{.|.if (|
|000047a0| 52 5f 42 55 66 66 65 72 | 5f 4c 65 6e 3d 3d 30 29 |R_BUffer|_Len==0)|
|000047b0| 0a 7c 09 09 72 65 74 75 | 72 6e 28 22 52 65 6d 6f |.|..retu|rn("Remo|
|000047c0| 74 65 20 69 73 20 6e 6f | 74 20 72 65 73 70 6f 6e |te is no|t respon|
|000047d0| 64 69 6e 67 22 29 3b 0a | 7c 09 65 6c 73 65 20 7b |ding");.||.else {|
|000047e0| 0a 7c 09 09 69 66 20 28 | 52 5f 42 75 66 66 65 72 |.|..if (|R_Buffer|
|000047f0| 5b 30 5d 3d 3d 27 46 27 | 29 7b 0a 7c 09 09 09 69 |[0]=='F'|){.|...i|
|00004800| 66 20 28 52 5f 42 55 66 | 66 65 72 5f 4c 65 6e 3e |f (R_BUf|fer_Len>|
|00004810| 3d 32 29 7b 0a 7c 09 09 | 09 09 09 52 5f 42 75 66 |=2){.|..|...R_Buf|
|00004820| 66 65 72 5b 6d 69 6e 28 | 38 31 2c 52 5f 42 55 66 |fer[min(|81,R_BUf|
|00004830| 66 65 72 5f 4c 65 6e 29 | 5d 3d 27 5c 30 27 3b 0a |fer_Len)|]='\0';.|
|00004840| 7c 09 09 09 09 09 72 65 | 74 75 72 6e 28 26 52 5f ||.....re|turn(&R_|
|00004850| 42 75 66 66 65 72 5b 31 | 5d 29 3b 0a 7c 09 09 09 |Buffer[1|]);.|...|
|00004860| 09 7d 20 65 6c 73 65 0a | 7c 09 09 09 09 09 72 65 |.} else.||.....re|
|00004870| 74 75 72 6e 28 22 4e 6f | 20 72 65 61 73 6f 6e 20 |turn("No| reason |
|00004880| 67 69 76 65 6e 20 62 79 | 20 72 65 6d 6f 74 65 22 |given by| remote"|
|00004890| 29 3b 0a 7c 09 09 7d 20 | 65 6c 73 65 20 7b 0a 7c |);.|..} |else {.||
|000048a0| 09 09 09 53 65 6e 64 5f | 46 61 69 6c 75 72 65 28 |...Send_|Failure(|
|000048b0| 27 45 27 2c 22 55 6e 65 | 78 70 65 63 74 65 64 20 |'E',"Une|xpected |
|000048c0| 70 61 63 6b 65 74 20 74 | 79 70 65 22 29 3b 0a 7c |packet t|ype");.||
|000048d0| 09 09 09 72 65 74 75 72 | 6e 28 22 55 6e 65 78 70 |...retur|n("Unexp|
|000048e0| 65 63 74 65 64 20 70 61 | 63 6b 65 74 20 74 79 70 |ected pa|cket typ|
|000048f0| 65 22 29 3b 0a 7c 09 09 | 7d 0a 7c 09 7d 0a 7c 7d |e");.|..|}.|.}.|}|
|00004900| 0a 7c 0a 7c 73 74 61 74 | 69 63 20 53 65 6e 64 5f |.|.|stat|ic Send_|
|00004910| 46 69 6c 65 28 29 0a 7c | 7b 0a 7c 09 69 6e 74 20 |File().||{.|.int |
|00004920| 4e 3b 0a 7c 09 73 74 72 | 75 63 74 20 73 74 61 74 |N;.|.str|uct stat|
|00004930| 20 73 74 61 74 62 75 66 | 3b 0a 7c 0a 7c 09 69 66 | statbuf|;.|.|.if|
|00004940| 20 28 28 44 61 74 61 5f | 46 69 6c 65 3d 66 6f 70 | ((Data_|File=fop|
|00004950| 65 6e 28 4e 61 6d 65 2c | 22 72 22 29 29 3d 3d 4e |en(Name,|"r"))==N|
|00004960| 55 4c 4c 46 29 7b 0a 7c | 09 09 73 70 72 69 6e 74 |ULLF){.||..sprint|
|00004970| 66 28 4d 73 67 2c 22 43 | 61 6e 27 74 20 61 63 63 |f(Msg,"C|an't acc|
|00004980| 65 73 73 20 27 25 73 27 | 22 2c 4e 61 6d 65 29 3b |ess '%s'|",Name);|
|00004990| 0a 7c 09 09 73 68 6f 77 | 28 30 2c 4d 73 67 29 3b |.|..show|(0,Msg);|
|000049a0| 0a 7c 09 09 53 65 6e 64 | 5f 46 61 69 6c 75 72 65 |.|..Send|_Failure|
|000049b0| 28 27 4d 27 2c 4d 73 67 | 29 3b 0a 7c 09 09 72 65 |('M',Msg|);.|..re|
|000049c0| 74 75 72 6e 20 46 41 49 | 4c 55 52 45 3b 0a 7c 09 |turn FAI|LURE;.|.|
|000049d0| 7d 0a 7c 0a 7c 09 66 73 | 74 61 74 28 66 69 6c 65 |}.|.|.fs|tat(file|
|000049e0| 6e 6f 28 44 61 74 61 5f | 46 69 6c 65 29 2c 26 73 |no(Data_|File),&s|
|000049f0| 74 61 74 62 75 66 29 3b | 0a 7c 09 66 73 69 7a 65 |tatbuf);|.|.fsize|
|00004a00| 3d 73 74 61 74 62 75 66 | 2e 73 74 5f 73 69 7a 65 |=statbuf|.st_size|
|00004a10| 3b 0a 7c 0a 7c 09 73 74 | 72 63 70 79 28 74 64 69 |;.|.|.st|rcpy(tdi|
|00004a20| 72 2c 22 54 72 61 6e 73 | 6d 69 74 74 69 6e 67 22 |r,"Trans|mitting"|
|00004a30| 29 3b 0a 7c 09 73 68 6f | 77 6d 6f 64 65 28 29 3b |);.|.sho|wmode();|
|00004a40| 0a 7c 0a 7c 09 64 6f 20 | 7b 0a 7c 09 09 53 5f 42 |.|.|.do |{.|..S_B|
|00004a50| 75 66 66 65 72 5b 30 5d | 3d 27 4e 27 3b 0a 7c 09 |uffer[0]|='N';.|.|
|00004a60| 09 4e 3d 52 65 61 64 28 | 44 61 74 61 5f 46 69 6c |.N=Read(|Data_Fil|
|00004a70| 65 2c 26 53 5f 42 75 66 | 66 65 72 5b 31 5d 2c 50 |e,&S_Buf|fer[1],P|
|00004a80| 61 63 6b 65 54 5f 53 69 | 7a 65 2d 31 29 3b 0a 7c |ackeT_Si|ze-1);.||
|00004a90| 0a 7c 09 09 69 66 20 28 | 4e 3e 30 29 7b 0a 7c 09 |.|..if (|N>0){.|.|
|00004aa0| 09 09 69 66 20 28 21 53 | 65 6e 64 5f 50 61 63 6b |..if (!S|end_Pack|
|00004ab0| 65 74 28 4e 2b 31 29 29 | 7b 0a 7c 09 09 09 09 66 |et(N+1))|{.|....f|
|00004ac0| 63 6c 6f 73 65 28 44 61 | 74 61 5f 46 69 6c 65 29 |close(Da|ta_File)|
|00004ad0| 3b 0a 7c 09 09 09 09 73 | 68 6f 77 28 30 2c 48 61 |;.|....s|how(0,Ha|
|00004ae0| 6e 64 6c 65 5f 53 65 6e | 64 5f 46 61 69 6c 75 72 |ndle_Sen|d_Failur|
|00004af0| 65 28 29 29 3b 0a 7c 09 | 09 09 09 72 65 74 75 72 |e());.|.|...retur|
|00004b00| 6e 20 46 41 49 4c 55 52 | 45 3b 0a 7c 09 09 09 7d |n FAILUR|E;.|...}|
|00004b10| 0a 7c 0a 7c 09 09 09 69 | 66 20 28 41 62 6f 72 74 |.|.|...i|f (Abort|
|00004b20| 5f 46 6c 61 67 29 7b 0a | 7c 09 09 09 09 53 65 6e |_Flag){.||....Sen|
|00004b30| 64 5f 41 62 6f 72 74 28 | 29 3b 0a 7c 09 09 09 09 |d_Abort(|);.|....|
|00004b40| 72 65 74 75 72 6e 20 46 | 41 49 4c 55 52 45 3b 0a |return F|AILURE;.|
|00004b50| 7c 09 09 09 7d 0a 7c 0a | 7c 09 09 09 73 74 61 74 ||...}.|.||...stat|
|00004b60| 73 28 4e 29 3b 0a 7c 09 | 09 7d 0a 7c 09 7d 20 77 |s(N);.|.|.}.|.} w|
|00004b70| 68 69 6c 65 20 28 4e 3e | 30 29 3b 0a 7c 0a 7c 09 |hile (N>|0);.|.|.|
|00004b80| 69 66 20 28 4e 3d 3d 30 | 29 7b 0a 7c 09 09 66 63 |if (N==0|){.|..fc|
|00004b90| 6c 6f 73 65 28 44 61 74 | 61 5f 46 69 6c 65 29 3b |lose(Dat|a_File);|
|00004ba0| 0a 7c 09 09 53 5f 42 75 | 66 66 65 72 5b 30 5d 3d |.|..S_Bu|ffer[0]=|
|00004bb0| 27 54 27 3b 0a 7c 09 09 | 53 5f 42 75 66 66 65 72 |'T';.|..|S_Buffer|
|00004bc0| 5b 31 5d 3d 27 43 27 3b | 0a 7c 0a 7c 09 09 69 66 |[1]='C';|.|.|..if|
|00004bd0| 20 28 21 53 65 6e 64 5f | 50 61 63 6b 65 74 28 32 | (!Send_|Packet(2|
|00004be0| 29 29 7b 0a 7c 09 09 09 | 73 68 6f 77 28 30 2c 48 |)){.|...|show(0,H|
|00004bf0| 61 6e 64 6c 65 5f 53 65 | 6e 64 5f 46 61 69 6c 75 |andle_Se|nd_Failu|
|00004c00| 72 65 28 29 29 3b 0a 7c | 09 09 09 72 65 74 75 72 |re());.||...retur|
|00004c10| 6e 20 46 41 49 4c 55 52 | 45 3b 0a 7c 09 09 7d 0a |n FAILUR|E;.|..}.|
|00004c20| 7c 0a 7c 09 09 72 65 74 | 75 72 6e 20 46 6c 75 73 ||.|..ret|urn Flus|
|00004c30| 68 5f 50 65 6e 64 69 6e | 67 28 29 3b 0a 7c 09 7d |h_Pendin|g();.|.}|
|00004c40| 20 65 6c 73 65 20 7b 0a | 7c 09 09 73 70 72 69 6e | else {.||..sprin|
|00004c50| 74 66 28 4d 73 67 2c 22 | 44 69 73 6b 20 72 65 61 |tf(Msg,"|Disk rea|
|00004c60| 64 20 65 72 72 6f 72 22 | 29 3b 0a 7c 09 09 73 68 |d error"|);.|..sh|
|00004c70| 6f 77 28 30 2c 4d 73 67 | 29 3b 0a 7c 09 09 53 65 |ow(0,Msg|);.|..Se|
|00004c80| 6e 64 5f 46 61 69 6c 75 | 72 65 28 27 49 27 2c 4d |nd_Failu|re('I',M|
|00004c90| 73 67 29 3b 0a 7c 09 09 | 72 65 74 75 72 6e 20 46 |sg);.|..|return F|
|00004ca0| 41 49 4c 55 52 45 3b 0a | 7c 09 7d 0a 7c 7d 0a 7c |AILURE;.||.}.|}.||
|00004cb0| 0a 7c 73 74 61 74 69 63 | 20 44 6f 5f 54 72 61 6e |.|static| Do_Tran|
|00004cc0| 73 66 65 72 28 29 0a 7c | 7b 0a 7c 09 69 6e 74 20 |sfer().||{.|.int |
|00004cd0| 49 2c 20 4e 3b 0a 7c 09 | 73 68 6f 72 74 20 48 61 |I, N;.|.|short Ha|
|00004ce0| 76 65 5f 44 4c 45 5f 42 | 3d 54 52 55 45 3b 0a 7c |ve_DLE_B|=TRUE;.||
|00004cf0| 0a 7c 09 66 6f 72 20 28 | 3b 3b 29 7b 0a 7c 09 09 |.|.for (|;;){.|..|
|00004d00| 57 61 69 74 5f 46 6f 72 | 5f 41 43 4b 28 48 61 76 |Wait_For|_ACK(Hav|
|00004d10| 65 5f 44 4c 45 5f 42 2c | 46 41 4c 53 45 2c 54 52 |e_DLE_B,|FALSE,TR|
|00004d20| 55 45 29 3b 0a 7c 09 09 | 69 66 20 28 50 61 63 6b |UE);.|..|if (Pack|
|00004d30| 65 74 5f 52 65 63 65 69 | 76 65 64 29 7b 0a 7c 09 |et_Recei|ved){.|.|
|00004d40| 09 09 69 66 20 28 52 5f | 42 75 66 66 65 72 5b 30 |..if (R_|Buffer[0|
|00004d50| 5d 3d 3d 27 54 27 29 7b | 0a 7c 09 09 09 09 69 66 |]=='T'){|.|....if|
|00004d60| 20 28 52 5f 42 75 66 66 | 65 72 5b 31 5d 21 3d 27 | (R_Buff|er[1]!='|
|00004d70| 44 27 26 26 52 5f 42 75 | 66 66 65 72 5b 31 5d 21 |D'&&R_Bu|ffer[1]!|
|00004d80| 3d 27 55 27 29 7b 0a 7c | 09 09 09 09 09 73 68 6f |='U'){.||.....sho|
|00004d90| 77 28 30 2c 22 49 6e 76 | 61 6c 69 64 20 74 72 61 |w(0,"Inv|alid tra|
|00004da0| 6e 73 66 65 72 20 64 69 | 72 65 63 74 69 6f 6e 22 |nsfer di|rection"|
|00004db0| 29 3b 0a 7c 09 09 09 09 | 09 53 65 6e 64 5f 46 61 |);.|....|.Send_Fa|
|00004dc0| 69 6c 75 72 65 28 27 4e | 27 2c 22 4e 6f 74 20 69 |ilure('N|',"Not i|
|00004dd0| 6d 70 6c 65 6d 65 6e 74 | 65 64 22 29 3b 0a 7c 09 |mplement|ed");.|.|
|00004de0| 09 09 09 09 72 65 74 75 | 72 6e 20 46 41 49 4c 55 |....retu|rn FAILU|
|00004df0| 52 45 3b 0a 7c 09 09 09 | 09 7d 0a 7c 09 09 09 09 |RE;.|...|.}.|....|
|00004e00| 69 66 20 28 52 5f 42 75 | 66 66 65 72 5b 32 5d 21 |if (R_Bu|ffer[2]!|
|00004e10| 3d 27 41 27 26 26 52 5f | 42 75 66 66 65 72 5b 32 |='A'&&R_|Buffer[2|
|00004e20| 5d 21 3d 27 42 27 29 7b | 0a 7c 09 09 09 09 09 73 |]!='B'){|.|.....s|
|00004e30| 68 6f 77 28 30 2c 22 49 | 6e 76 61 6c 69 64 20 74 |how(0,"I|nvalid t|
|00004e40| 72 61 6e 73 66 65 72 20 | 74 79 70 65 22 29 3b 0a |ransfer |type");.|
|00004e50| 7c 09 09 09 09 09 53 65 | 6e 64 5f 46 61 69 6c 75 ||.....Se|nd_Failu|
|00004e60| 72 65 28 27 4e 27 2c 22 | 4e 6f 74 20 69 6d 70 6c |re('N',"|Not impl|
|00004e70| 65 6d 65 6e 74 65 64 22 | 29 3b 0a 7c 09 09 09 09 |emented"|);.|....|
|00004e80| 09 72 65 74 75 72 6e 20 | 46 41 49 4c 55 52 45 3b |.return |FAILURE;|
|00004e90| 0a 7c 09 09 09 09 7d 0a | 7c 09 09 09 09 4e 3d 6d |.|....}.||....N=m|
|00004ea0| 69 6e 28 52 5f 42 55 66 | 66 65 72 5f 4c 65 6e 2d |in(R_BUf|fer_Len-|
|00004eb0| 33 2c 53 4d 5f 42 55 46 | 46 2d 31 29 3b 0a 7c 09 |3,SM_BUF|F-1);.|.|
|00004ec0| 09 09 09 66 6f 72 20 28 | 49 3d 30 3b 49 3c 4e 3b |...for (|I=0;I<N;|
|00004ed0| 49 2b 2b 29 0a 7c 09 09 | 09 09 09 4e 61 6d 65 5b |I++).|..|...Name[|
|00004ee0| 49 5d 3d 52 5f 42 75 66 | 66 65 72 5b 49 2b 33 5d |I]=R_Buf|fer[I+3]|
|00004ef0| 3b 0a 7c 09 09 09 09 4e | 61 6d 65 5b 49 5d 3d 27 |;.|....N|ame[I]='|
|00004f00| 5c 30 27 3b 0a 7c 09 09 | 09 09 74 65 78 74 6d 6f |\0';.|..|..textmo|
|00004f10| 64 65 3d 28 52 5f 42 75 | 66 66 65 72 5b 32 5d 3d |de=(R_Bu|ffer[2]=|
|00004f20| 3d 27 41 27 29 3b 0a 7c | 0a 7c 09 09 09 09 69 66 |='A');.||.|....if|
|00004f30| 20 28 52 5f 42 75 66 66 | 65 72 5b 31 5d 3d 3d 27 | (R_Buff|er[1]=='|
|00004f40| 55 27 29 20 7b 0a 7c 09 | 09 09 09 09 53 65 6e 64 |U') {.|.|....Send|
|00004f50| 5f 41 43 4b 28 29 3b 0a | 7c 09 09 09 09 09 72 65 |_ACK();.||.....re|
|00004f60| 74 75 72 6e 20 53 65 6e | 64 5f 46 69 6c 65 28 29 |turn Sen|d_File()|
|00004f70| 3b 0a 7c 09 09 09 09 7d | 20 65 6c 73 65 0a 7c 09 |;.|....}| else.|.|
|00004f80| 09 09 09 09 72 65 74 75 | 72 6e 20 52 65 63 65 69 |....retu|rn Recei|
|00004f90| 76 65 5f 46 69 6c 65 28 | 29 3b 0a 7c 0a 7c 09 09 |ve_File(|);.|.|..|
|00004fa0| 09 7d 20 65 6c 73 65 20 | 69 66 20 28 52 5f 42 75 |.} else |if (R_Bu|
|00004fb0| 66 66 65 72 5b 30 5d 3d | 3d 27 2b 27 29 7b 0a 7c |ffer[0]=|='+'){.||
|00004fc0| 09 09 09 09 69 66 20 28 | 50 6c 75 73 5f 52 65 73 |....if (|Plus_Res|
|00004fd0| 70 6f 6e 64 28 29 29 0a | 7c 09 09 09 09 09 48 61 |pond()).||.....Ha|
|00004fe0| 76 65 5f 44 4c 45 5f 42 | 3d 46 41 4c 53 45 3b 0a |ve_DLE_B|=FALSE;.|
|00004ff0| 7c 09 09 09 09 65 6c 73 | 65 20 7b 0a 7c 09 09 09 ||....els|e {.|...|
|00005000| 09 09 73 68 6f 77 28 30 | 2c 22 43 6f 75 6c 64 20 |..show(0|,"Could |
|00005010| 6e 6f 74 20 6e 65 67 6f | 74 69 61 74 65 20 42 2d |not nego|tiate B-|
|00005020| 50 6c 75 73 20 70 61 72 | 61 6d 65 74 65 72 73 22 |Plus par|ameters"|
|00005030| 29 3b 0a 7c 09 09 09 09 | 09 72 65 74 75 72 6e 20 |);.|....|.return |
|00005040| 46 41 49 4c 55 52 45 3b | 0a 7c 09 09 09 09 7d 0a |FAILURE;|.|....}.|
|00005050| 7c 09 09 09 7d 20 65 6c | 73 65 20 7b 0a 7c 09 09 ||...} el|se {.|..|
|00005060| 09 09 53 65 6e 64 5f 55 | 6e 65 78 70 65 63 74 65 |..Send_U|nexpecte|
|00005070| 64 5f 50 61 63 6b 65 74 | 28 29 3b 0a 7c 09 09 09 |d_Packet|();.|...|
|00005080| 09 72 65 74 75 72 6e 20 | 46 41 49 4c 55 52 45 3b |.return |FAILURE;|
|00005090| 0a 7c 09 09 09 7d 0a 7c | 09 09 7d 20 65 6c 73 65 |.|...}.||..} else|
|000050a0| 20 7b 0a 7c 09 09 09 73 | 68 6f 77 28 30 2c 22 52 | {.|...s|how(0,"R|
|000050b0| 65 6d 6f 74 65 20 69 73 | 20 6e 6f 74 20 72 65 73 |emote is| not res|
|000050c0| 70 6f 6e 64 69 6e 67 22 | 29 3b 0a 7c 09 09 09 72 |ponding"|);.|...r|
|000050d0| 65 74 75 72 6e 20 46 41 | 49 4c 55 52 45 3b 0a 7c |eturn FA|ILURE;.||
|000050e0| 09 09 7d 0a 7c 09 7d 0a | 7c 7d 0a 7c 0a 7c 23 64 |..}.|.}.||}.|.|#d|
|000050f0| 65 66 69 6e 65 20 50 6c | 75 73 5f 50 61 63 6b 65 |efine Pl|us_Packe|
|00005100| 54 5f 53 69 7a 65 09 31 | 38 0a 7c 23 64 65 66 69 |T_Size.1|8.|#defi|
|00005110| 6e 65 20 4c 6f 77 52 61 | 6e 67 65 09 09 37 0a 7c |ne LowRa|nge..7.||
|00005120| 23 64 65 66 69 6e 65 20 | 48 69 52 61 6e 67 65 09 |#define |HiRange.|
|00005130| 09 09 31 31 0a 7c 0a 7c | 23 64 65 66 69 6e 65 20 |..11.|.||#define |
|00005140| 4d 79 5f 53 65 6e 64 5f | 57 69 6e 64 6f 77 5f 53 |My_Send_|Window_S|
|00005150| 69 7a 65 09 31 0a 7c 23 | 64 65 66 69 6e 65 20 4d |ize.1.|#|define M|
|00005160| 79 5f 52 65 63 76 5f 57 | 69 6e 64 6f 77 5f 53 69 |y_Recv_W|indow_Si|
|00005170| 7a 65 09 31 0a 7c 23 64 | 65 66 69 6e 65 20 4d 79 |ze.1.|#d|efine My|
|00005180| 5f 42 75 66 66 65 72 5f | 53 69 7a 65 09 09 38 0a |_Buffer_|Size..8.|
|00005190| 7c 23 64 65 66 69 6e 65 | 20 4d 79 5f 43 68 65 63 ||#define| My_Chec|
|000051a0| 6b 5f 4d 65 74 68 6f 64 | 09 09 43 68 65 63 6b 5f |k_Method|..Check_|
|000051b0| 43 52 43 0a 7c 23 64 65 | 66 69 6e 65 20 4d 79 5f |CRC.|#de|fine My_|
|000051c0| 44 6f 77 6e 6c 6f 61 64 | 5f 52 65 73 75 6d 65 09 |Download|_Resume.|
|000051d0| 32 0a 7c 23 64 65 66 69 | 6e 65 20 4d 79 5f 55 70 |2.|#defi|ne My_Up|
|000051e0| 6c 6f 61 64 5f 52 65 73 | 75 6d 65 09 30 0a 7c 23 |load_Res|ume.0.|#|
|000051f0| 64 65 66 69 6e 65 20 4d | 79 5f 46 69 6c 65 5f 49 |define M|y_File_I|
|00005200| 6e 66 6f 72 6d 61 74 69 | 6f 6e 09 31 0a 7c 0a 7c |nformati|on.1.|.||
|00005210| 73 74 61 74 69 63 20 63 | 68 61 72 20 51 75 6f 74 |static c|har Quot|
|00005220| 65 5f 4c 65 76 65 6c 5f | 53 65 6c 65 63 74 5f 4c |e_Level_|Select_L|
|00005230| 6f 77 5b 5d 3d 7b 0a 7c | 09 31 2c 20 33 2c 20 33 |ow[]={.||.1, 3, 3|
|00005240| 2c 20 30 2c 20 33 2c 20 | 30 2c 20 33 2c 20 33 2c |, 0, 3, |0, 3, 3,|
|00005250| 20 33 2c 20 33 2c 20 33 | 2c 20 33 2c 20 33 2c 20 | 3, 3, 3|, 3, 3, |
|00005260| 33 2c 20 33 2c 20 33 2c | 0a 7c 09 30 2c 20 30 2c |3, 3, 3,|.|.0, 0,|
|00005270| 20 33 2c 20 30 2c 20 33 | 2c 20 30 2c 20 33 2c 20 | 3, 0, 3|, 0, 3, |
|00005280| 33 2c 20 33 2c 20 33 2c | 20 33 2c 20 33 2c 20 33 |3, 3, 3,| 3, 3, 3|
|00005290| 2c 20 33 2c 20 33 2c 20 | 33 0a 7c 7d 3b 0a 7c 0a |, 3, 3, |3.|};.|.|
|000052a0| 7c 0a 7c 73 74 61 74 69 | 63 20 63 68 61 72 20 51 ||.|stati|c char Q|
|000052b0| 75 6f 74 45 5f 4c 65 76 | 65 6c 5f 73 65 6c 65 63 |uotE_Lev|el_selec|
|000052c0| 74 5f 48 69 5b 5d 3d 7b | 0a 7c 09 33 2c 20 33 2c |t_Hi[]={|.|.3, 3,|
|000052d0| 20 33 2c 20 33 2c 20 33 | 2c 20 33 2c 20 33 2c 20 | 3, 3, 3|, 3, 3, |
|000052e0| 33 2c 20 33 2c 20 33 2c | 20 33 2c 20 33 2c 20 33 |3, 3, 3,| 3, 3, 3|
|000052f0| 2c 20 33 2c 20 33 2c 20 | 33 2c 0a 7c 09 33 2c 20 |, 3, 3, |3,.|.3, |
|00005300| 32 2c 20 33 2c 20 32 2c | 20 33 2c 20 33 2c 20 33 |2, 3, 2,| 3, 3, 3|
|00005310| 2c 20 33 2c 20 33 2c 20 | 33 2c 20 33 2c 20 33 2c |, 3, 3, |3, 3, 3,|
|00005320| 20 33 2c 20 33 2c 20 33 | 2c 20 33 0a 7c 7d 3b 0a | 3, 3, 3|, 3.|};.|
|00005330| 7c 0a 7c 73 74 61 74 69 | 63 20 63 68 61 72 20 51 ||.|stati|c char Q|
|00005340| 55 6f 74 65 5f 4c 65 76 | 65 6c 5f 4d 61 70 70 69 |Uote_Lev|el_Mappi|
|00005350| 6e 67 5b 5d 3d 7b 0a 7c | 09 51 75 6f 74 65 5f 4e |ng[]={.||.Quote_N|
|00005360| 6f 74 5f 4e 55 4c 4c 2c | 0a 7c 09 51 75 6f 74 65 |ot_NULL,|.|.Quote|
|00005370| 5f 44 65 66 61 75 6c 74 | 2c 0a 7c 09 51 75 6f 74 |_Default|,.|.Quot|
|00005380| 65 5f 45 78 74 65 6e 64 | 65 64 2c 0a 7c 09 51 75 |e_Extend|ed,.|.Qu|
|00005390| 6f 74 65 5f 46 75 6c 6c | 0a 7c 7d 3b 0a 7c 0a 7c |ote_Full|.|};.|.||
|000053a0| 73 74 61 74 69 63 20 50 | 6c 75 73 5f 52 65 73 70 |static P|lus_Resp|
|000053b0| 6f 6e 64 28 29 0a 7c 7b | 0a 7c 09 69 6e 74 20 53 |ond().|{|.|.int S|
|000053c0| 74 61 74 75 73 2c 20 74 | 65 6d 70 5f 77 69 6e 64 |tatus, t|emp_wind|
|000053d0| 6f 77 5f 73 69 7a 65 2c | 20 74 65 6d 70 5f 6d 65 |ow_size,| temp_me|
|000053e0| 74 68 6f 64 2c 20 74 65 | 6d 70 5f 73 69 7a 65 2c |thod, te|mp_size,|
|000053f0| 20 4d 61 73 6b 42 79 74 | 65 2c 20 42 69 74 2c 20 | MaskByt|e, Bit, |
|00005400| 69 3b 0a 7c 09 63 68 61 | 72 20 45 73 74 69 6d 61 |i;.|.cha|r Estima|
|00005410| 74 65 64 5f 51 75 6f 74 | 65 5f 4c 65 76 65 6c 3d |ted_Quot|e_Level=|
|00005420| 30 3b 0a 7c 0a 7c 09 53 | 5f 42 75 66 66 65 72 5b |0;.|.|.S|_Buffer[|
|00005430| 30 5d 3d 27 2b 27 3b 0a | 7c 09 53 5f 42 75 66 66 |0]='+';.||.S_Buff|
|00005440| 65 72 5b 31 5d 3d 4d 79 | 5f 53 65 6e 64 5f 57 69 |er[1]=My|_Send_Wi|
|00005450| 6e 64 6f 77 5f 53 69 7a | 65 3b 0a 7c 09 53 5f 42 |ndow_Siz|e;.|.S_B|
|00005460| 75 66 66 65 72 5b 32 5d | 3d 4d 79 5f 52 65 63 76 |uffer[2]|=My_Recv|
|00005470| 5f 57 69 6e 64 6f 77 5f | 53 69 7a 65 3b 0a 7c 0a |_Window_|Size;.|.|
|00005480| 7c 09 53 5f 42 75 66 66 | 65 72 5b 33 5d 3d 50 61 ||.S_Buff|er[3]=Pa|
|00005490| 63 6b 65 54 5f 53 69 7a | 65 2f 31 32 38 3b 0a 7c |ckeT_Siz|e/128;.||
|000054a0| 0a 7c 09 53 5f 42 75 66 | 66 65 72 5b 34 5d 3d 4d |.|.S_Buf|fer[4]=M|
|000054b0| 79 5f 43 68 65 63 6b 5f | 4d 65 74 68 6f 64 3b 0a |y_Check_|Method;.|
|000054c0| 7c 0a 7c 09 53 5f 42 75 | 66 66 65 72 5b 35 5d 3d ||.|.S_Bu|ffer[5]=|
|000054d0| 51 75 6f 74 65 5f 44 65 | 66 61 75 6c 74 3b 0a 7c |Quote_De|fault;.||
|000054e0| 09 53 5f 42 75 66 66 65 | 72 5b 36 5d 3d 46 41 4c |.S_Buffe|r[6]=FAL|
|000054f0| 53 45 3b 0a 7c 0a 7c 09 | 53 5f 42 75 66 66 65 72 |SE;.|.|.|S_Buffer|
|00005500| 5b 31 35 5d 3d 4d 79 5f | 44 6f 77 6e 6c 6f 61 64 |[15]=My_|Download|
|00005510| 5f 52 65 73 75 6d 65 3b | 0a 7c 09 53 5f 42 75 66 |_Resume;|.|.S_Buf|
|00005520| 66 65 72 5b 31 36 5d 3d | 4d 79 5f 55 70 6c 6f 61 |fer[16]=|My_Uploa|
|00005530| 64 5f 52 65 73 75 6d 65 | 3b 0a 7c 09 53 5f 42 75 |d_Resume|;.|.S_Bu|
|00005540| 66 66 65 72 5b 31 37 5d | 3d 4d 79 5f 46 69 6c 65 |ffer[17]|=My_File|
|00005550| 5f 49 6e 66 6f 72 6d 61 | 74 69 6f 6e 3b 0a 7c 0a |_Informa|tion;.|.|
|00005560| 7c 09 66 6f 72 20 28 69 | 3d 30 3b 69 3c 38 3b 69 ||.for (i|=0;i<8;i|
|00005570| 2b 2b 29 0a 7c 09 09 53 | 5f 42 75 66 66 65 72 5b |++).|..S|_Buffer[|
|00005580| 69 2b 4c 6f 77 52 61 6e | 67 65 5d 3d 30 3b 0a 7c |i+LowRan|ge]=0;.||
|00005590| 0a 7c 09 66 6f 72 20 28 | 4d 61 73 6b 42 79 74 65 |.|.for (|MaskByte|
|000055a0| 3d 30 3b 4d 61 73 6b 42 | 79 74 65 3c 34 3b 4d 61 |=0;MaskB|yte<4;Ma|
|000055b0| 73 6b 42 79 74 65 2b 2b | 29 0a 7c 09 09 66 6f 72 |skByte++|).|..for|
|000055c0| 20 28 42 69 74 3d 30 3b | 42 69 74 3c 38 3b 42 69 | (Bit=0;|Bit<8;Bi|
|000055d0| 74 2b 2b 29 7b 0a 7c 09 | 09 09 69 66 20 28 4d 61 |t++){.|.|..if (Ma|
|000055e0| 73 6b 5b 4d 61 73 6b 42 | 79 74 65 2a 38 2b 42 69 |sk[MaskB|yte*8+Bi|
|000055f0| 74 5d 26 4d 61 73 6b 4c | 6f 77 52 61 6e 67 65 29 |t]&MaskL|owRange)|
|00005600| 0a 7c 09 09 09 09 53 5f | 42 75 66 66 65 72 5b 4d |.|....S_|Buffer[M|
|00005610| 61 73 6b 42 79 74 65 2b | 4c 6f 77 52 61 6e 67 65 |askByte+|LowRange|
|00005620| 5d 7c 3d 30 78 38 30 3e | 3e 42 69 74 3b 0a 7c 0a |]|=0x80>|>Bit;.|.|
|00005630| 7c 09 09 09 69 66 20 28 | 4d 61 73 6b 5b 4d 61 73 ||...if (|Mask[Mas|
|00005640| 6b 42 79 74 65 2a 38 2b | 42 69 74 5d 26 4d 61 73 |kByte*8+|Bit]&Mas|
|00005650| 6b 48 69 52 61 6e 67 65 | 29 0a 7c 09 09 09 09 53 |kHiRange|).|....S|
|00005660| 5f 42 75 66 66 65 72 5b | 4d 61 73 6b 42 79 74 65 |_Buffer[|MaskByte|
|00005670| 2b 48 69 52 61 6e 67 65 | 5d 7c 3d 30 78 38 30 3e |+HiRange|]|=0x80>|
|00005680| 3e 42 69 74 3b 0a 7c 09 | 09 7d 0a 7c 0a 7c 09 66 |>Bit;.|.|.}.|.|.f|
|00005690| 6f 72 20 28 69 3d 52 5f | 42 55 66 66 65 72 5f 4c |or (i=R_|BUffer_L|
|000056a0| 65 6e 3b 69 3c 50 6c 75 | 73 5f 50 61 63 6b 65 54 |en;i<Plu|s_PackeT|
|000056b0| 5f 53 69 7a 65 3b 69 2b | 2b 29 0a 7c 09 09 52 5f |_Size;i+|+).|..R_|
|000056c0| 42 75 66 66 65 72 5b 69 | 5d 3d 30 3b 0a 7c 0a 7c |Buffer[i|]=0;.|.||
|000056d0| 09 69 66 20 28 52 5f 42 | 75 66 66 65 72 5b 33 5d |.if (R_B|uffer[3]|
|000056e0| 3c 53 5f 42 75 66 66 65 | 72 5b 33 5d 29 0a 7c 09 |<S_Buffe|r[3]).|.|
|000056f0| 09 74 65 6d 70 5f 73 69 | 7a 65 3d 28 52 5f 42 75 |.temp_si|ze=(R_Bu|
|00005700| 66 66 65 72 5b 33 5d 2a | 31 32 38 29 2b 31 3b 0a |ffer[3]*|128)+1;.|
|00005710| 7c 09 65 6c 73 65 0a 7c | 09 09 74 65 6d 70 5f 73 ||.else.||..temp_s|
|00005720| 69 7a 65 3d 28 53 5f 42 | 75 66 66 65 72 5b 33 5d |ize=(S_B|uffer[3]|
|00005730| 2a 31 32 38 29 2b 31 3b | 0a 7c 0a 7c 0a 7c 09 74 |*128)+1;|.|.|.|.t|
|00005740| 65 6d 70 5f 77 69 6e 64 | 6f 77 5f 73 69 7a 65 3d |emp_wind|ow_size=|
|00005750| 6d 69 6e 28 52 5f 42 75 | 66 66 65 72 5b 32 5d 2c |min(R_Bu|ffer[2],|
|00005760| 4d 79 5f 53 65 6e 64 5f | 57 69 6e 64 6f 77 5f 53 |My_Send_|Window_S|
|00005770| 69 7a 65 29 3b 0a 7c 09 | 74 65 6d 70 5f 6d 65 74 |ize);.|.|temp_met|
|00005780| 68 6f 64 3d 6d 69 6e 28 | 52 5f 42 75 66 66 65 72 |hod=min(|R_Buffer|
|00005790| 5b 34 5d 2c 4d 79 5f 43 | 68 65 63 6b 5f 4d 65 74 |[4],My_C|heck_Met|
|000057a0| 68 6f 64 29 3b 0a 7c 09 | 56 61 6c 69 64 5f 54 6f |hod);.|.|Valid_To|
|000057b0| 5f 52 65 73 75 6d 65 5f | 44 6f 77 6e 6c 6f 61 64 |_Resume_|Download|
|000057c0| 3d 6d 69 6e 28 52 5f 42 | 75 66 66 65 72 5b 31 35 |=min(R_B|uffer[15|
|000057d0| 5d 2c 4d 79 5f 44 6f 77 | 6e 6c 6f 61 64 5f 52 65 |],My_Dow|nload_Re|
|000057e0| 73 75 6d 65 29 3b 0a 7c | 09 56 61 6c 69 44 5f 54 |sume);.||.ValiD_T|
|000057f0| 6f 5f 52 65 73 75 6d 65 | 5f 55 70 6c 6f 61 64 3d |o_Resume|_Upload=|
|00005800| 6d 69 6e 28 52 5f 42 75 | 66 66 65 72 5b 31 36 5d |min(R_Bu|ffer[16]|
|00005810| 2c 4d 79 5f 55 70 6c 6f | 61 64 5f 52 65 73 75 6d |,My_Uplo|ad_Resum|
|00005820| 65 29 3b 0a 7c 09 53 65 | 6e 64 5f 46 49 6c 65 5f |e);.|.Se|nd_FIle_|
|00005830| 49 6e 66 6f 72 6d 61 74 | 69 6f 6e 3d 6d 69 6e 28 |Informat|ion=min(|
|00005840| 52 5f 42 75 66 66 65 72 | 5b 31 37 5d 2c 4d 79 5f |R_Buffer|[17],My_|
|00005850| 46 69 6c 65 5f 49 6e 66 | 6f 72 6d 61 74 69 6f 6e |File_Inf|ormation|
|00005860| 29 3b 0a 7c 0a 7c 09 69 | 66 20 28 52 5f 42 55 66 |);.|.|.i|f (R_BUf|
|00005870| 66 65 72 5f 4c 65 6e 3e | 3d 50 6c 75 73 5f 50 61 |fer_Len>|=Plus_Pa|
|00005880| 63 6b 65 54 5f 53 69 7a | 65 29 0a 7c 09 09 66 6f |ckeT_Siz|e).|..fo|
|00005890| 72 20 28 4d 61 73 6b 42 | 79 74 65 3d 30 3b 4d 61 |r (MaskB|yte=0;Ma|
|000058a0| 73 6b 42 79 74 65 3c 34 | 3b 4d 61 73 6b 42 79 74 |skByte<4|;MaskByt|
|000058b0| 65 2b 2b 29 0a 7c 09 09 | 09 66 6f 72 20 28 42 69 |e++).|..|.for (Bi|
|000058c0| 74 3d 30 3b 42 69 74 3c | 38 3b 42 69 74 2b 2b 29 |t=0;Bit<|8;Bit++)|
|000058d0| 20 7b 0a 7c 09 09 09 09 | 69 66 20 28 52 5f 42 75 | {.|....|if (R_Bu|
|000058e0| 66 66 65 72 5b 4c 6f 77 | 52 61 6e 67 65 2b 4d 61 |ffer[Low|Range+Ma|
|000058f0| 73 6b 42 79 74 65 5d 26 | 28 30 78 38 30 3e 3e 42 |skByte]&|(0x80>>B|
|00005900| 69 74 29 29 0a 7c 09 09 | 09 09 09 4d 61 73 6b 5b |it)).|..|...Mask[|
|00005910| 4d 61 73 6b 42 79 74 65 | 2a 38 2b 42 69 74 5d 7c |MaskByte|*8+Bit]||
|00005920| 3d 4d 61 73 6b 4c 6f 77 | 52 61 6e 67 65 3b 0a 7c |=MaskLow|Range;.||
|00005930| 0a 7c 09 09 09 09 69 66 | 20 28 52 5f 42 75 66 66 |.|....if| (R_Buff|
|00005940| 65 72 5b 48 69 52 61 6e | 67 65 2b 4d 61 73 6b 42 |er[HiRan|ge+MaskB|
|00005950| 79 74 65 5d 26 28 30 78 | 38 30 3e 3e 42 69 74 29 |yte]&(0x|80>>Bit)|
|00005960| 29 0a 7c 09 09 09 09 09 | 4d 61 73 6b 5b 4d 61 73 |).|.....|Mask[Mas|
|00005970| 6b 42 79 74 65 2a 38 2b | 42 69 74 5d 7c 3d 4d 61 |kByte*8+|Bit]|=Ma|
|00005980| 73 6b 48 69 52 61 6e 67 | 65 3b 0a 7c 09 09 09 7d |skHiRang|e;.|...}|
|00005990| 0a 7c 09 65 6c 73 65 20 | 7b 0a 7c 09 09 66 6f 72 |.|.else |{.|..for|
|000059a0| 20 28 69 3d 30 3b 69 3c | 33 32 26 26 45 73 74 69 | (i=0;i<|32&&Esti|
|000059b0| 6d 61 74 65 64 5f 51 75 | 6f 74 65 5f 4c 65 76 65 |mated_Qu|ote_Leve|
|000059c0| 6c 3c 33 3b 69 2b 2b 29 | 7b 0a 7c 09 09 09 69 66 |l<3;i++)|{.|...if|
|000059d0| 20 28 4d 61 73 6b 5b 69 | 5d 26 4d 61 73 6b 4c 6f | (Mask[i|]&MaskLo|
|000059e0| 77 52 61 6e 67 65 29 0a | 7c 09 09 09 09 45 73 74 |wRange).||....Est|
|000059f0| 69 6d 61 74 65 64 5f 51 | 75 6f 74 65 5f 4c 65 76 |imated_Q|uote_Lev|
|00005a00| 65 6c 3d 0a 7c 09 09 09 | 09 09 6d 61 78 28 51 75 |el=.|...|..max(Qu|
|00005a10| 6f 74 65 5f 4c 65 76 65 | 6c 5f 53 65 6c 65 63 74 |ote_Leve|l_Select|
|00005a20| 5f 4c 6f 77 5b 69 5d 2c | 45 73 74 69 6d 61 74 65 |_Low[i],|Estimate|
|00005a30| 64 5f 51 75 6f 74 65 5f | 4c 65 76 65 6c 29 3b 0a |d_Quote_|Level);.|
|00005a40| 7c 0a 7c 09 09 09 69 66 | 20 28 4d 61 73 6b 5b 69 ||.|...if| (Mask[i|
|00005a50| 5d 26 4d 61 73 6b 48 69 | 52 61 6e 67 65 29 0a 7c |]&MaskHi|Range).||
|00005a60| 09 09 09 09 45 73 74 69 | 6d 61 74 65 64 5f 51 75 |....Esti|mated_Qu|
|00005a70| 6f 74 65 5f 4c 65 76 65 | 6c 3d 0a 7c 09 09 09 09 |ote_Leve|l=.|....|
|00005a80| 09 6d 61 78 28 51 75 6f | 74 45 5f 4c 65 76 65 6c |.max(Quo|tE_Level|
|00005a90| 5f 73 65 6c 65 63 74 5f | 48 69 5b 69 5d 2c 45 73 |_select_|Hi[i],Es|
|00005aa0| 74 69 6d 61 74 65 64 5f | 51 75 6f 74 65 5f 4c 65 |timated_|Quote_Le|
|00005ab0| 76 65 6c 29 3b 0a 7c 09 | 09 7d 0a 7c 09 7d 0a 7c |vel);.|.|.}.|.}.||
|00005ac0| 0a 7c 09 51 75 6f 74 69 | 6e 67 3d 51 75 6f 74 65 |.|.Quoti|ng=Quote|
|00005ad0| 5f 46 75 6c 6c 3b 0a 7c | 09 53 5f 42 75 66 66 65 |_Full;.||.S_Buffe|
|00005ae0| 72 5b 35 5d 3d 51 55 6f | 74 65 5f 4c 65 76 65 6c |r[5]=QUo|te_Level|
|00005af0| 5f 4d 61 70 70 69 6e 67 | 5b 45 73 74 69 6d 61 74 |_Mapping|[Estimat|
|00005b00| 65 64 5f 51 75 6f 74 65 | 5f 4c 65 76 65 6c 5d 3b |ed_Quote|_Level];|
|00005b10| 0a 7c 0a 7c 09 69 66 20 | 28 53 74 61 74 75 73 3d |.|.|.if |(Status=|
|00005b20| 53 65 6e 64 5f 50 61 63 | 6b 65 74 28 50 6c 75 73 |Send_Pac|ket(Plus|
|00005b30| 5f 50 61 63 6b 65 54 5f | 53 69 7a 65 29 29 0a 7c |_PackeT_|Size)).||
|00005b40| 09 09 69 66 20 28 53 74 | 61 74 75 73 3d 46 6c 75 |..if (St|atus=Flu|
|00005b50| 73 68 5f 50 65 6e 64 69 | 6e 67 28 29 29 7b 0a 7c |sh_Pendi|ng()){.||
|00005b60| 09 09 09 41 63 74 75 61 | 6c 5f 43 68 65 63 6b 3d |...Actua|l_Check=|
|00005b70| 74 65 6d 70 5f 6d 65 74 | 68 6f 64 3b 0a 7c 09 09 |temp_met|hod;.|..|
|00005b80| 09 50 61 63 6b 65 54 5f | 53 69 7a 65 3d 74 65 6d |.PackeT_|Size=tem|
|00005b90| 70 5f 73 69 7a 65 3b 0a | 7c 09 09 09 57 69 6e 64 |p_size;.||...Wind|
|00005ba0| 6f 77 5f 53 69 7a 65 3d | 74 65 6d 70 5f 77 69 6e |ow_Size=|temp_win|
|00005bb0| 64 6f 77 5f 73 69 7a 65 | 3b 0a 7c 09 09 7d 0a 7c |dow_size|;.|..}.||
|00005bc0| 09 51 75 6f 74 69 6e 67 | 3d 51 75 6f 74 65 5f 4d |.Quoting|=Quote_M|
|00005bd0| 61 73 6b 3b 0a 7c 0a 7c | 09 72 65 74 75 72 6e 20 |ask;.|.||.return |
|00005be0| 53 74 61 74 75 73 3b 0a | 7c 7d 0a 7c 0a 7c 73 74 |Status;.||}.|.|st|
|00005bf0| 61 74 69 63 20 52 65 61 | 64 28 66 70 2c 62 75 66 |atic Rea|d(fp,buf|
|00005c00| 2c 77 61 6e 74 29 0a 7c | 46 49 4c 45 20 2a 66 70 |,want).||FILE *fp|
|00005c10| 3b 0a 7c 63 68 61 72 20 | 2a 62 75 66 3b 0a 7c 72 |;.|char |*buf;.|r|
|00005c20| 65 67 69 73 74 65 72 20 | 77 61 6e 74 3b 0a 7c 7b |egister |want;.|{|
|00005c30| 0a 7c 09 72 65 67 69 73 | 74 65 72 20 63 3b 0a 7c |.|.regis|ter c;.||
|00005c40| 09 69 6e 74 20 72 65 61 | 64 3d 30 3b 0a 7c 0a 7c |.int rea|d=0;.|.||
|00005c50| 09 77 68 69 6c 65 20 28 | 77 61 6e 74 2d 2d 29 0a |.while (|want--).|
|00005c60| 7c 09 09 73 77 69 74 63 | 68 28 63 3d 67 65 74 63 ||..switc|h(c=getc|
|00005c70| 28 66 70 29 29 7b 0a 7c | 09 09 63 61 73 65 20 45 |(fp)){.||..case E|
|00005c80| 4f 46 3a 0a 7c 09 09 09 | 72 65 74 75 72 6e 20 72 |OF:.|...|return r|
|00005c90| 65 61 64 3b 0a 7c 0a 7c | 09 09 63 61 73 65 20 27 |ead;.|.||..case '|
|00005ca0| 5c 6e 27 3a 0a 7c 09 09 | 09 69 66 20 28 63 72 5f |\n':.|..|.if (cr_|
|00005cb0| 61 64 64 26 26 74 65 78 | 74 6d 6f 64 65 26 26 4c |add&&tex|tmode&&L|
|00005cc0| 61 73 74 5f 43 68 72 21 | 3d 27 5c 72 27 29 0a 7c |ast_Chr!|='\r').||
|00005cd0| 09 09 09 09 75 6e 67 65 | 74 63 28 63 2c 66 70 29 |....unge|tc(c,fp)|
|00005ce0| 2c 0a 7c 09 09 09 09 63 | 61 72 72 69 61 67 65 5f |,.|....c|arriage_|
|00005cf0| 72 65 74 75 72 6e 2b 2b | 2c 0a 7c 09 09 09 09 63 |return++|,.|....c|
|00005d00| 3d 27 5c 72 27 3b 0a 7c | 0a 7c 09 09 64 65 66 61 |='\r';.||.|..defa|
|00005d10| 75 6c 74 3a 0a 7c 09 09 | 09 4c 61 73 74 5f 43 68 |ult:.|..|.Last_Ch|
|00005d20| 72 3d 20 2a 62 75 66 2b | 2b 20 3d 63 3b 0a 7c 09 |r= *buf+|+ =c;.|.|
|00005d30| 09 09 72 65 61 64 2b 2b | 3b 0a 7c 09 09 7d 0a 7c |..read++|;.|..}.||
|00005d40| 0a 7c 09 72 65 74 75 72 | 6e 20 72 65 61 64 3b 0a |.|.retur|n read;.|
|00005d50| 7c 7d 0a 7c 0a 7c 73 74 | 61 74 69 63 20 57 72 69 ||}.|.|st|atic Wri|
|00005d60| 74 65 28 66 70 2c 62 75 | 66 2c 77 61 6e 74 29 0a |te(fp,bu|f,want).|
|00005d70| 7c 46 49 4c 45 20 2a 66 | 70 3b 0a 7c 63 68 61 72 ||FILE *f|p;.|char|
|00005d80| 20 2a 62 75 66 3b 0a 7c | 72 65 67 69 73 74 65 72 | *buf;.||register|
|00005d90| 20 77 61 6e 74 3b 0a 7c | 7b 0a 7c 09 69 6e 74 20 | want;.||{.|.int |
|00005da0| 77 72 69 74 74 65 6e 3d | 30 3b 0a 7c 0a 7c 09 66 |written=|0;.|.|.f|
|00005db0| 6f 72 20 28 3b 77 61 6e | 74 2d 2d 3e 30 3b 62 75 |or (;wan|t-->0;bu|
|00005dc0| 66 2b 2b 29 7b 0a 7c 09 | 09 69 66 20 28 74 65 78 |f++){.|.|.if (tex|
|00005dd0| 74 6d 6f 64 65 29 7b 0a | 7c 09 09 09 69 66 20 28 |tmode){.||...if (|
|00005de0| 2a 62 75 66 3d 3d 27 5c | 72 27 29 7b 0a 7c 09 09 |*buf=='\|r'){.|..|
|00005df0| 09 09 4c 61 73 74 5f 43 | 68 72 3d 20 2a 62 75 66 |..Last_C|hr= *buf|
|00005e00| 3b 0a 7c 09 09 09 09 63 | 6f 6e 74 69 6e 75 65 3b |;.|....c|ontinue;|
|00005e10| 0a 7c 09 09 09 7d 0a 7c | 09 09 09 69 66 20 28 4c |.|...}.||...if (L|
|00005e20| 61 73 74 5f 43 68 72 3d | 3d 27 5c 72 27 29 0a 7c |ast_Chr=|='\r').||
|00005e30| 09 09 09 09 69 66 20 28 | 2a 62 75 66 3d 3d 27 5c |....if (|*buf=='\|
|00005e40| 6e 27 29 0a 7c 09 09 09 | 09 09 63 61 72 72 69 61 |n').|...|..carria|
|00005e50| 67 65 5f 72 65 74 75 72 | 6e 2d 2d 3b 0a 7c 09 09 |ge_retur|n--;.|..|
|00005e60| 09 09 65 6c 73 65 0a 7c | 09 09 09 09 09 69 66 20 |..else.||.....if |
|00005e70| 28 66 70 75 74 63 28 27 | 5c 72 27 2c 66 70 29 3d |(fputc('|\r',fp)=|
|00005e80| 3d 20 2d 31 29 0a 7c 09 | 09 09 09 09 09 72 65 74 |= -1).|.|.....ret|
|00005e90| 75 72 6e 20 2d 31 3b 0a | 7c 09 09 09 09 09 65 6c |urn -1;.||.....el|
|00005ea0| 73 65 0a 7c 09 09 09 09 | 09 09 77 72 69 74 74 65 |se.|....|..writte|
|00005eb0| 6e 2b 2b 3b 0a 7c 0a 7c | 09 09 09 4c 61 73 74 5f |n++;.|.||...Last_|
|00005ec0| 43 68 72 3d 20 2a 62 75 | 66 3b 0a 7c 09 09 7d 0a |Chr= *bu|f;.|..}.|
|00005ed0| 7c 0a 7c 09 69 66 20 28 | 66 70 75 74 63 28 2a 62 ||.|.if (|fputc(*b|
|00005ee0| 75 66 2c 66 70 29 3d 3d | 20 2d 31 29 0a 7c 09 09 |uf,fp)==| -1).|..|
|00005ef0| 72 65 74 75 72 6e 20 2d | 31 3b 0a 7c 09 65 6c 73 |return -|1;.|.els|
|00005f00| 65 0a 7c 09 09 77 72 69 | 74 74 65 6e 2b 2b 3b 0a |e.|..wri|tten++;.|
|00005f10| 7c 09 7d 0a 7c 0a 7c 09 | 72 65 74 75 72 6e 20 77 ||.}.|.|.|return w|
|00005f20| 72 69 74 74 65 6e 3b 0a | 7c 7d 0a 7c 0a 7c 73 74 |ritten;.||}.|.|st|
|00005f30| 61 74 69 63 20 76 6f 69 | 64 20 63 69 73 62 73 69 |atic voi|d cisbsi|
|00005f40| 67 69 6e 74 28 29 0a 7c | 7b 0a 7c 09 73 69 67 6e |gint().||{.|.sign|
|00005f50| 61 6c 28 53 49 47 49 4e | 54 2c 63 69 73 62 73 69 |al(SIGIN|T,cisbsi|
|00005f60| 67 69 6e 74 29 3b 0a 7c | 09 41 62 6f 72 74 5f 46 |gint);.||.Abort_F|
|00005f70| 6c 61 67 3d 54 52 55 45 | 3b 0a 7c 7d 0a 7c 0a 7c |lag=TRUE|;.|}.|.||
|00005f80| 76 6f 69 64 20 42 5f 54 | 72 61 6e 73 66 65 72 28 |void B_T|ransfer(|
|00005f90| 29 0a 7c 7b 0a 7c 09 73 | 68 6f 72 74 20 53 74 61 |).|{.|.s|hort Sta|
|00005fa0| 74 75 73 3d 46 41 4c 53 | 45 3b 0a 7c 09 63 75 72 |tus=FALS|E;.|.cur|
|00005fb0| 5f 6f 66 66 28 29 3b 0a | 7c 09 78 63 5f 73 65 74 |_off();.||.xc_set|
|00005fc0| 66 6c 6f 77 28 46 41 4c | 53 45 29 3b 0a 7c 09 69 |flow(FAL|SE);.|.i|
|00005fd0| 6e 74 64 65 6c 28 54 52 | 55 45 29 3b 0a 7c 09 73 |ntdel(TR|UE);.|.s|
|00005fe0| 69 67 6e 61 6c 28 53 49 | 47 49 4e 54 2c 63 69 73 |ignal(SI|GINT,cis|
|00005ff0| 62 73 69 67 69 6e 74 29 | 3b 0a 7c 09 49 6e 69 74 |bsigint)|;.|.Init|
|00006000| 28 29 3b 0a 7c 09 53 65 | 6e 64 5f 42 79 74 65 28 |();.|.Se|nd_Byte(|
|00006010| 44 4c 45 29 3b 0a 7c 09 | 53 65 6e 64 5f 42 79 74 |DLE);.|.|Send_Byt|
|00006020| 65 28 27 2b 27 29 3b 0a | 7c 09 53 65 6e 64 5f 42 |e('+');.||.Send_B|
|00006030| 79 74 65 28 27 2b 27 29 | 3b 0a 7c 09 53 65 6e 64 |yte('+')|;.|.Send|
|00006040| 5f 41 43 4b 28 29 3b 0a | 7c 0a 7c 09 52 65 61 64 |_ACK();.||.|.Read|
|00006050| 5f 42 79 74 65 28 29 3b | 0a 7c 09 73 77 69 74 63 |_Byte();|.|.switc|
|00006060| 68 28 43 68 29 7b 0a 7c | 09 63 61 73 65 20 44 4c |h(Ch){.||.case DL|
|00006070| 45 3a 0a 7c 09 09 52 65 | 61 64 5f 42 79 74 65 28 |E:.|..Re|ad_Byte(|
|00006080| 29 3b 0a 7c 09 09 69 66 | 20 28 43 68 3d 3d 27 42 |);.|..if| (Ch=='B|
|00006090| 27 29 0a 7c 09 09 09 53 | 74 61 74 75 73 3d 44 6f |').|...S|tatus=Do|
|000060a0| 5f 54 72 61 6e 73 66 65 | 72 28 29 3b 0a 7c 09 09 |_Transfe|r();.|..|
|000060b0| 62 72 65 61 6b 3b 0a 7c | 0a 7c 09 64 65 66 61 75 |break;.||.|.defau|
|000060c0| 6c 74 3a 0a 7c 09 09 66 | 70 75 74 63 28 43 68 2c |lt:.|..f|putc(Ch,|
|000060d0| 74 66 70 29 3b 0a 7c 09 | 09 62 72 65 61 6b 3b 0a |tfp);.|.|.break;.|
|000060e0| 7c 09 7d 0a 7c 0a 7c 09 | 73 70 72 69 6e 74 66 28 ||.}.|.|.|sprintf(|
|000060f0| 4d 73 67 2c 22 46 69 6c | 65 20 54 72 61 6e 73 66 |Msg,"Fil|e Transf|
|00006100| 65 72 20 25 73 22 2c 53 | 74 61 74 75 73 3f 22 53 |er %s",S|tatus?"S|
|00006110| 75 63 63 65 65 64 65 64 | 22 3a 22 46 61 69 6c 65 |ucceeded|":"Faile|
|00006120| 64 22 29 3b 0a 7c 09 73 | 68 6f 77 28 30 2c 4d 73 |d");.|.s|how(0,Ms|
|00006130| 67 29 3b 0a 7c 09 62 65 | 65 70 28 29 3b 0a 7c 0a |g);.|.be|ep();.|.|
|00006140| 7c 09 69 66 20 28 41 62 | 6f 72 74 5f 46 6c 61 67 ||.if (Ab|ort_Flag|
|00006150| 29 7b 0a 7c 09 09 77 68 | 69 6c 65 20 28 52 65 61 |){.|..wh|ile (Rea|
|00006160| 64 5f 42 79 74 65 28 29 | 20 26 26 20 43 68 3d 3d |d_Byte()| && Ch==|
|00006170| 45 4e 51 29 7b 0a 7c 09 | 09 09 53 65 71 5f 4e 75 |ENQ){.|.|..Seq_Nu|
|00006180| 6d 3d 30 3b 0a 7c 09 09 | 09 53 65 6e 64 5f 42 79 |m=0;.|..|.Send_By|
|00006190| 74 65 28 44 4c 45 29 3b | 0a 7c 09 09 09 53 65 6e |te(DLE);|.|...Sen|
|000061a0| 64 5f 42 79 74 65 28 27 | 2b 27 29 3b 0a 7c 09 09 |d_Byte('|+');.|..|
|000061b0| 09 53 65 6e 64 5f 42 79 | 74 65 28 27 2b 27 29 3b |.Send_By|te('+');|
|000061c0| 0a 7c 09 09 09 53 65 6e | 64 5f 41 43 4b 28 29 3b |.|...Sen|d_ACK();|
|000061d0| 0a 7c 09 09 7d 0a 7c 09 | 7d 0a 7c 0a 7c 09 69 6e |.|..}.|.|}.|.|.in|
|000061e0| 74 64 65 6c 28 46 41 4c | 53 45 29 3b 0a 7c 09 78 |tdel(FAL|SE);.|.x|
|000061f0| 63 5f 73 65 74 66 6c 6f | 77 28 66 6c 6f 77 66 6c |c_setflo|w(flowfl|
|00006200| 61 67 29 3b 0a 7c 09 63 | 75 72 5f 6f 6e 28 29 3b |ag);.|.c|ur_on();|
|00006210| 0a 7c 09 73 69 67 6e 61 | 6c 28 53 49 47 49 4e 54 |.|.signa|l(SIGINT|
|00006220| 2c 53 49 47 5f 49 47 4e | 29 3b 0a 7c 7d 0a 53 48 |,SIG_IGN|);.|}.SH|
|00006230| 41 52 5f 45 4f 46 0a 69 | 66 20 74 65 73 74 20 32 |AR_EOF.i|f test 2|
|00006240| 33 31 37 33 20 2d 6e 65 | 20 22 60 77 63 20 2d 63 |3173 -ne| "`wc -c|
|00006250| 20 3c 20 27 78 63 62 2b | 2e 63 27 60 22 0a 74 68 | < 'xcb+|.c'`".th|
|00006260| 65 6e 0a 09 65 63 68 6f | 20 73 68 61 72 3a 20 65 |en..echo| shar: e|
|00006270| 72 72 6f 72 20 74 72 61 | 6e 73 6d 69 74 74 69 6e |rror tra|nsmittin|
|00006280| 67 20 22 27 78 63 62 2b | 2e 63 27 22 20 27 28 73 |g "'xcb+|.c'" '(s|
|00006290| 68 6f 75 6c 64 20 68 61 | 76 65 20 62 65 65 6e 20 |hould ha|ve been |
|000062a0| 32 33 31 37 33 20 63 68 | 61 72 61 63 74 65 72 73 |23173 ch|aracters|
|000062b0| 29 27 0a 66 69 0a 66 69 | 20 23 20 65 6e 64 20 6f |)'.fi.fi| # end o|
|000062c0| 66 20 6f 76 65 72 77 72 | 69 74 69 6e 67 20 63 68 |f overwr|iting ch|
|000062d0| 65 63 6b 0a 65 63 68 6f | 20 73 68 61 72 3a 20 65 |eck.echo| shar: e|
|000062e0| 78 74 72 61 63 74 69 6e | 67 20 22 27 78 63 70 6f |xtractin|g "'xcpo|
|000062f0| 72 74 2e 63 27 22 20 27 | 28 31 30 34 38 39 20 63 |rt.c'" '|(10489 c|
|00006300| 68 61 72 61 63 74 65 72 | 73 29 27 0a 69 66 20 74 |haracter|s)'.if t|
|00006310| 65 73 74 20 2d 66 20 27 | 78 63 70 6f 72 74 2e 63 |est -f '|xcport.c|
|00006320| 27 0a 74 68 65 6e 0a 09 | 65 63 68 6f 20 73 68 61 |'.then..|echo sha|
|00006330| 72 3a 20 77 69 6c 6c 20 | 6e 6f 74 20 6f 76 65 72 |r: will |not over|
|00006340| 2d 77 72 69 74 65 20 65 | 78 69 73 74 69 6e 67 20 |-write e|xisting |
|00006350| 66 69 6c 65 20 22 27 78 | 63 70 6f 72 74 2e 63 27 |file "'x|cport.c'|
|00006360| 22 0a 65 6c 73 65 0a 73 | 65 64 20 27 73 2f 5e 7c |".else.s|ed 's/^||
|00006370| 2f 2f 27 20 3c 3c 20 5c | 53 48 41 52 5f 45 4f 46 |//' << \|SHAR_EOF|
|00006380| 20 3e 20 27 78 63 70 6f | 72 74 2e 63 27 0a 7c 2f | > 'xcpo|rt.c'.|/|
|00006390| 2a 09 78 63 70 6f 72 74 | 2e 63 20 2d 2d 20 6d 6f |*.xcport|.c -- mo|
|000063a0| 64 65 6d 20 69 6e 74 65 | 72 66 61 63 65 20 72 6f |dem inte|rface ro|
|000063b0| 75 74 69 6e 65 73 20 66 | 6f 72 20 58 43 0a 7c 09 |utines f|or XC.|.|
|000063c0| 54 68 69 73 20 66 69 6c | 65 20 75 73 65 73 20 34 |This fil|e uses 4|
|000063d0| 2d 63 68 61 72 61 63 74 | 65 72 20 74 61 62 73 74 |-charact|er tabst|
|000063e0| 6f 70 73 0a 7c 2a 2f 0a | 7c 0a 7c 23 69 6e 63 6c |ops.|*/.||.|#incl|
|000063f0| 75 64 65 20 3c 73 74 64 | 69 6f 2e 68 3e 0a 7c 23 |ude <std|io.h>.|#|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.