delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin-developers/1999/08/03/10:20:54

Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm
Sender: cygwin-developers-owner AT sourceware DOT cygnus DOT com
List-Unsubscribe: <mailto:cygwin-developers-unsubscribe-archive-cygwin-developers=delorie DOT com AT sourceware DOT cygnus DOT com>
List-Archive: <http://sourceware.cygnus.com/ml/cygwin-developers/>
List-Help: <mailto:cygwin-developers-help AT sourceware DOT cygnus DOT com>,
<http://sourceware.cygnus.com/ml/#faqs>
Delivered-To: mailing list cygwin-developers AT sourceware DOT cygnus DOT com
Message-ID: <002801beddbb$188f4d20$02af6080@sokhapki-2.cc.bellcore.com>
From: "Sergey Okhapkin" <sos AT prospect DOT com DOT ru>
To: <cygwin-developers AT sourceware DOT cygnus DOT com>
Subject: AF_UNIX implementation for cygwin
Date: Tue, 3 Aug 1999 10:18:44 -0400
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 4.72.3612.1700
X-MimeOLE: Produced By Microsoft MimeOLE V4.72.3612.1700

fhandler.cc        (fhandler_disk_file::fstat) check if the file is unix
domain socket.
                        (fhandler_disk_file::open) call set_socket_p().

fhandler.h          (FH_LOCAL, FH_FIFO) new fhandler type flags.
                        (fhandler_base) get/set_socket_p - new member
functions.
                        (fhandler_socket::addr_family) new member, not used
now.
                        (fhandler_socket::get/set_addr_family) new functions
to access addr_family.

include/sys/un.h new file.

net.cc               include <sys/un.h>
                        (cygwin_socket) alway create socket of AF_INET
family, store argument's family.
                        (get_inet_addr) new static function, does nothing
for AF_INET, converts AF_UNIX requests
                         into corresponding AF_INET requests.
                        (cygwin_sendto) use get_inet_addr().
                        (cygwin_connect) likewise.
                        (cygwin_accept) check for sockaddr length.
                        (cygwin_bind) if bind address is of AF_UNIX family,
bind to any available port
                         of loopback interface, store port number in the
"socket file", set file attribute to S_IFSOCK.

path.cc            (symlink_check_one) if the file begins with
SOCKET_COOKIE, mark the file as PATH_SOCKET.

path.h                (PATH_SOCKET) new enum value.
                        (path_conv::issocket) new member function.
                        (SOCKET_COOKIE) new define.

syscalls.cc        (chmod) mark socket files with system file attribute.




Sergey Okhapkin, http://www.lexa.ru/sos
Piscataway, NJ


begin 666 AF_UNIX.diff
M9&EF9B M=7!R3B O=VEN<W5P+V9H86YD;&5R+F-C('=I;G-U<"]F:&%N9&QE
M<BYC8PHM+2T@+W=I;G-U<"]F:&%N9&QE<BYC8PE4:'4 AT 2G5L(#$U(# V.C0Y
M.C$X(#$Y.3D**RLK('=I;G-U<"]F:&%N9&QE<BYC8PE4=64 AT 2G5L(#(W(# V
M.C Q.C(V(#$Y.3D*0$ @+3DR-2PV("LY,C4L."! 0"!F:&%N9&QE<E]D:7-K
M7V9I;&4Z.F9S=&%T("AS=')U8W0@<W1A=" J"B @(" @("!B=68M/G-T7VUO
M9&4@)CT@?E-?249-5#L*(" @(" @(&EF("AG971?<WEM;&EN:U]P("@I*0H@
M"6)U9BT^<W1?;6]D92!\/2!37TE&3$Y+.PHK(" @(" @96QS92!I9B H9V5T
M7W-O8VME=%]P("@I*0HK"6)U9BT^<W1?;6]D92!\/2!37TE&4T]#2SL*(" @
M(" @(&5L<V4@:68@*&QO8V%L+F1W1FEL94%T=')I8G5T97,@)B!&24Q%7T%4
M5%))0E5415]$25)%0U1/4EDI"B )8G5F+3YS=%]M;V1E('P](%-?249$25([
M"B @(" @("!E;'-E"D! ("TY-#$L-B K.30S+#@@0$ @9FAA;F1L97)?9&ES
M:U]F:6QE.CIF<W1A=" H<W1R=6-T('-T870@*@H@"B @(" @("!I9B H9V5T
M7W-Y;6QI;FM?<" H*2D*( EB=68M/G-T7VUO9&4@?#T AT 4U])1DQ.2SL**R @
M(" @(&5L<V4@:68@*&=E=%]S;V-K971?<" H*2D**PEB=68M/G-T7VUO9&4@
M?#T AT 4U])1E-/0TL["B @(" @("!E;'-E"B )<W=I=&-H("A'971&:6QE5'EP
M92 H9V5T7VAA;F1L92 H*2DI"B )("!["D! ("TQ,3DU+#8@*S$Q.3DL-R! 
M0"!F:&%N9&QE<E]D:7-K7V9I;&4Z.F]P96X@*'!A=&A?8V]N=B8@<F5A"B *
M(" @<V5T7W-Y;6QI;FM?<" H<F5A;%]P871H+FES<WEM;&EN:R H*2D["B @
M('-E=%]E>&5C86)L95]P("AR96%L7W!A=&@N:7-E>&5C("@I*3L**R @<V5T
M7W-O8VME=%]P("AR96%L7W!A=&@N:7-S;V-K970@*"DI.PH@"B!O=70Z"B @
M('-Y<V-A;&Q?<')I;G1F("@B)60@/2!F:&%N9&QE<E]D:7-K7V9I;&4Z.F]P
M96X@*"5S+" E<"DB+"!R97,L"F1I9F8@+75P<DX@+W=I;G-U<"]F:&%N9&QE
M<BYH('=I;G-U<"]F:&%N9&QE<BYH"BTM+2 O=VEN<W5P+V9H86YD;&5R+F@)
M5&AU($IU;" Q-2 P-CHT.3HQ." Q.3DY"BLK*R!W:6YS=7 O9FAA;F1L97(N
M: E4:'4 AT 2G5L(#(Y(# S.C(P.C$V(#$Y.3D*0$ @+38R+#8@*S8R+#@@0$ @
M96YU;0H@"0D)"2 @('=I;F1O=W-?<&%T:%]N86UE7R!O;B!D97-T<G5C=&EO
M;BX@*B\*(" @1DA?3D]%24Y44B ](#!X,#$P,# P,# L"2\J(%-E="!I9B!)
M+T\@<VAO=6QD(&)E('5N:6YT97)R=7!T:6)L92X@*B\*(" @1DA?1D9)6%50
M(" ](#!X,#(P,# P,# L"2\J(%-E="!I9B!N965D('1O(&9I>'5P(&%F=&5R
M(&9O<FLN("HO"BL@($9(7TQ/0T%,(" @/2 P># T,# P,# P+ DO*B!&:6QE
M(&ES('5N:7@@9&]M86EN('-O8VME=" J+PHK("!&2%]&249/(" @(#T@,'@P
M.# P,# P,"P)+RH AT 1FEL92!I<R!&249/("HO"B @($9(7TA!4T%#3%,@/2 P
M>#0P,# P,# P+ DO*B!4<G5E(&]F(&9S(&]F(&9I;&4@:&%S($%#3%,@*B\*
M( H@(" O*B!$979I8V4 AT 9FQA9W,@*B\*0$ @+3$Y-2PV("LQ.3<L,3 @0$ @
M<'5B;&EC DOT  AT H@("!V;VED('-E=%]S>6UL:6YK7W @*&EN="!V86PI('L AT 1DA#
M3TY$4T541B H=F%L+"!364U,24Y+*3L@?0H@("!V;VED('-E=%]S>6UL:6YK
M7W @*"D@>R!&2%-%5$8@*%-934Q)3DLI.R!]"B **R @:6YT(&=E=%]S;V-K
M971?<" H*2![(')E='5R;B!&2$E34T541B H3$]#04PI.R!]"BL@('9O:60@
M<V5T7W-O8VME=%]P("AI;G0@=F%L*2![($9(0T].1%-%5$8@*'9A;"P AT 3$]#
M04PI.R!]"BL@('9O:60@<V5T7W-O8VME=%]P("@I('L AT 1DA3151&("A,3T-!
M3"D[('T**PH@("!I;G0 AT 9V5T7V5X96-A8FQE7W @*"D@>R!R971U<FX AT 1DA)
M4U-%5$8@*$5814-!0DPI.R!]"B @('9O:60@<V5T7V5X96-A8FQE7W @*&EN
M="!V86PI('L AT 1DA#3TY$4T541B H=F%L+"!%6$5#04),*3L@?0H@("!V;VED
M('-E=%]E>&5C86)L95]P("@I('L AT 1DA3151&("A%6$5#04),*3L@?0I 0" M
M,CDP+#8@*S(Y-BPX($! ('!U8FQI8SH*( H AT 8VQA<W,@9FAA;F1L97)?<V]C
M:V5T.B!P=6)L:6,@9FAA;F1L97)?8F%S90H@>PHK<')I=F%T93H**R @:6YT
M(&%D9')?9F%M:6QY.PH@<'5B;&EC DOT  AT H@("!F:&%N9&QE<E]S;V-K970@*&-O
M;G-T(&-H87(@*FYA;64@/2 P*3L*(" @9FAA;F1L97)?<V]C:V5T("AU;G-I
M9VYE9"!I;G0L(&-O;G-T(&-H87(@*FYA;64@/2 P*3L*0$ @+3,P-BPV("LS
M,30L."! 0"!P=6)L:6,Z"B @('-E;&5C=%]R96-O<F0@*G-E;&5C=%]W<FET
M92 H<V5L96-T7W)E8V]R9" J<RD["B @('-E;&5C=%]R96-O<F0@*G-E;&5C
M=%]E>&-E<'0@*'-E;&5C=%]R96-O<F0@*G,I.PH@("!I;G0@<F5A9'E?9F]R
M7W)E860@*&EN="!F9"P AT 1%=/4D0@:&]W;&]N9RP@:6YT(&EG;G)A*3L**R @
M:6YT(&=E=%]A9&1R7V9A;6EL>2 H*2![<F5T=7)N(&%D9')?9F%M:6QY.WT*
M*R @=F]I9"!S971?861D<E]F86UI;'D@*&EN="!A9BD@>V%D9')?9F%M:6QY
M(#T AT 868[?0H@?3L*( H AT 8VQA<W,@9FAA;F1L97)?<&EP93H@<'5B;&EC(&9H
M86YD;&5R7V)A<V4*9&EF9B M=7!R3B O=VEN<W5P+VEN8VQU9&4O<WES+W5N
M+F@@=VEN<W5P+VEN8VQU9&4O<WES+W5N+F@*+2TM("]W:6YS=7 O:6YC;'5D
M92]S>7,O=6XN: E4:'4 AT 2F%N(# Q(# T.C P.C P(#$Y-S **RLK('=I;G-U
M<"]I;F-L=61E+W-Y<R]U;BYH"51H=2!*=6P@,CD@,#,Z,S(Z,CD@,3DY.0I 
M0" M,"PP("LQ+#D AT 0$ **R-I9FYD968 AT 7U-94U]53E]("BLC9&5F:6YE(%]3
M65-?54Y?2 HK"BMS=')U8W0@<V]C:V%D9')?=6X@>PHK("!U;G-I9VYE9"!S
M:&]R= ES=6Y?9F%M:6QY.PDO*B!A9&1R97-S(&9A;6EL>2P AT 049?>'AX"2HO
M"BL@(&-H87()"0ES=6Y?<&%T:%LQ,#A=.PDO*B Q,#@@8GET97,@;V8@<V]C
M:V5T(&%D9')E<W,)*B\**WT["BL**R-E;F1I9 AT ID:69F("UU<').("]W:6YS
M=7 O;F5T+F-C('=I;G-U<"]N970N8V,*+2TM("]W:6YS=7 O;F5T+F-C"49R
M:2!*=6P@,#(@,#<Z,3DZ,C0@,3DY.0HK*RL@=VEN<W5P+VYE="YC8PE3870@
M2G5L(#,Q(#(P.C0S.C0X(#$Y.3D*0$ @+3$U+#8@*S$U+#<@0$ @9&5T86EL
M<RX@*B\*("-I;F-L=61E(#QS=&1I;RYH/@H@(VEN8VQU9&4@/&5R<FYO+F@^
M"B C:6YC;'5D92 \<WES+W-O8VME="YH/@HK(VEN8VQU9&4@/'-Y<R]U;BYH
M/@H@"B C9&5F:6YE(%=I;C,R7U=I;G-O8VL*("-I;F-L=61E(")W:6YS=7 N
M:"(*0$ @+3,W,2PR.2 K,S<R+#,S($! (&-Y9W=I;E]S;V-K970@*&EN="!A
M9BP@:6YT('1Y<&4L(&EN="!P<F\*(" @:68@*&9D(#P@,"D*(" @("!["B @
M(" @("!S971?97)R;F\@*$5.349)3$4I.PHM(" @(" @9V]T;R!D;VYE.PH@
M(" @('T**R @96QS90HK(" @('L**R @(" @(&1E8G5G7W!R:6YT9B H(G-O
M8VME=" H)60L("5D+" E9"DB+"!A9BP@='EP92P@<')O=&]C;VPI.PH@"BT@
M(&1E8G5G7W!R:6YT9B H(G-O8VME=" H)60L("5D+" E9"DB+"!A9BP@='EP
M92P@<')O=&]C;VPI.PHK(" @(" @<V]C(#T@<V]C:V5T("A!1E])3D54+"!T
M>7!E+" P*3L*( HM("!S;V,@/2!S;V-K970@*&%F+"!T>7!E+"!P<F]T;V-O
M;"D["BL@(" @("!I9B H<V]C(#T]($E.5D%,241?4T]#2T54*0HK(" @(" @
M("!["BL@(" @(" @(" @<V5T7W=I;G-O8VM?97)R;F\@*"D["BL@(" @(" @
M(" @9V]T;R!D;VYE.PHK(" @(" @("!]"B *+2 @:68@*'-O8R ]/2!)3E9!
M3$E$7U-/0TM%5"D*+2 @("!["BT@(" @("!S971?=VEN<V]C:U]E<G)N;R H
M*3L*+2 @(" @(&=O=&\@9&]N93L*+2 @("!]"BL@(" @("!S;V,@/2!D=7!L
M:6-A=&5?<V]C:V5T("AS;V,I.PH@"BT@('-O8R ](&1U<&QI8V%T95]S;V-K
M970@*'-O8RD["BL@(" @("!C;VYS="!C:&%R("IN86UE.PHK(" @(" @:68@
M*&%F(#T]($%&7TE.150I"BL@(" @(" @(&YA;64@/2 H='EP92 ]/2!33T-+
M7U-44D5!32 _("(O9&5V+W1C<"(@.B B+V1E=B]U9' B*3L**R @(" @(&5L
M<V4**R @(" @(" @;F%M92 ]("AT>7!E(#T](%-/0TM?4U1214%-(#\@(B]D
M978O<W1R96%M<V]C:V5T(B Z("(O9&5V+V1G<V]C:V5T(BD["B *+2 @8V]N
M<W0 AT 8VAA<B J;F%M93L*+2 @:68@*&%F(#T]($%&7TE.150I"BT@(" @;F%M
M92 ]("AT>7!E(#T](%-/0TM?4U1214%-(#\@(B]D978O=&-P(B Z("(O9&5V
M+W5D<"(I.PHM("!E;'-E"BT@(" @;F%M92 ]("AT>7!E(#T](%-/0TM?4U12
M14%-(#\@(B]D978O<W1R96%M<V]C:V5T(B Z("(O9&5V+V1G<V]C:V5T(BD[
M"BL@(" @("!F9'-O8VL@*&9D+"!N86UE+"!S;V,I.PHK(" @(" @<F5S(#T@
M9F0["BL@(" @("!F:&%N9&QE<E]S;V-K970@*F@@/2 H9FAA;F1L97)?<V]C
M:V5T("HI(&1T86)L95MF9%T["B *+2 @9F1S;V-K("AF9"P@;F%M92P@<V]C
M*3L*+2 @<F5S(#T AT 9F0["BL@(" @("!H+3YS971?861D<E]F86UI;'D@*&%F
M*3L**R @("!]"B *(&1O;F4Z"B @(&]U=" H(G-O8VME="(I.PI 0" M-# R
M+#8@*S0P-RPT,R! 0"!D;VYE DOT  AT H@("!R971U<FX@<F5S.PH@?0H@"BLO*B!C
M>6=W:6X@:6YT97)N86PZ(&UA<"!S;V-K861D<B!I;G1O(&EN=&5R;F5T(&1O
M;6%I;B!A9&1R97-S("HO"BL**W-T871I8R!I;G0 AT 9V5T7VEN971?861D<B H
M8V]N<W0@<W1R=6-T('-O8VMA9&1R("II;BP@:6YT(&EN;&5N+ HK"0D)(" @
M<W1R=6-T('-O8VMA9&1R7VEN("IO=70L(&EN=" J;W5T;&5N*0HK>PHK("!I
M9B H:6XM/G-A7V9A;6EL>2 ]/2!!1E])3D54*0HK(" @('L**R @(" @("IO
M=70@/2 J("AS;V-K861D<E]I;B J*6EN.PHK(" @(" @*F]U=&QE;B ](&EN
M;&5N.PHK(" @(" @<F5T=7)N(#$["BL@(" @?0HK("!E;'-E(&EF("AI;BT^
M<V%?9F%M:6QY(#T]($%&7U5 DOT 25 AT I"BL@(" @>PHK(" @(" @<V]C:V%D9')?
M:6X@<VEN.PHK(" @(" @8VAA<B!B=69;,S)=.PHK"BL@(" @("!M96US970@
M*&)U9BP@,"P@<VEZ96]F(&)U9BD["BL@(" @("!I;G0 AT 9F0@/2!O<&5N("AI
M;BT^<V%?9&%T82P AT 3U]21$].3%DI.PHK(" @(" @:68@*&9D(#T]("TQ*0HK
M"7)E='5R;B P.PHK(" @(" @:68@*')E860@*&9D+"!B=68L('-I>F5O9B!B
M=68I(#T]("TQ*0HK"7)E='5R;B P.PHK(" @(" @<VEN+G-I;E]F86UI;'D@
M/2!!1E])3D54.PHK(" @(" @<W-C86YF("AB=68@*R!S=')L96X@*%-/0TM%
M5%]#3T]+244I+" B)6AU(BP@)G-I;BYS:6Y?<&]R="D["BL@(" @("!S:6XN
M<VEN7W!O<G0@/2!H=&]N<R H<VEN+G-I;E]P;W)T*3L**R @(" @('-I;BYS
M:6Y?861D<BYS7V%D9'(@/2!H=&]N;"A)3D%$1%)?3$]/4$)!0TLI.PHK(" @
M(" @*F]U=" ]('-I;CL**R @(" @("IO=71L96X@/2!S:7IE;V8@<VEN.PHK
M(" @(" @<F5T=7)N(#$["BL@(" @?0HK("!E;'-E"BL@(" @>PHK(" @(" @
M<V5T7V5R<FYO("A%049.3U-54%!/4E0I.PHK(" @(" @<F5T=7)N(# ["BL@
M(" @?0HK?0HK"B O*B!E>'!O<G1E9"!A<R!S96YD=&\Z('-T86YD87)D<S\@
M*B\*(&5X=&5R;B B0R(*(&EN= I 0" M-#$U+#@@*S0U-RPQ-"! 0"!C>6=W
M:6Y?<V5N9'1O("AI;G0 AT 9F0L"B @(&9H86YD;&5R7W-O8VME=" J:" ]("AF
M:&%N9&QE<E]S;V-K970@*BD AT 9'1A8FQE6V9D73L*( H@("!I;B H(G-E;F1T
M;R(I.PHK"BL@('-O8VMA9&1R7VEN('-I;CL**PHK("!I9B H9V5T7VEN971?
M861D<B H=&\L('1O;&5N+" F<VEN+" F=&]L96XI(#T](# I"BL@(" @<F5T
M=7)N("TQ.PHK(" *(" @:6YT(')E<R ]('-E;F1T;R H:"T^9V5T7W-O8VME
M=" H*2P@*&-O;G-T(&-H87(@*BD AT 8G5F+"!L96XL"BT)"0D)"0D@(" @("!F
M;&%G<RP@=&\L('1O;&5N*3L**PD)"0EF;&%G<RP@*'-O8VMA9&1R("HI("9S
M:6XL('1O;&5N*3L*(" @:68@*')E<R ]/2!33T-+151?15)23U(I"B @(" @
M>PH@(" @(" @<V5T7W=I;G-O8VM?97)R;F\@*"D["D! ("TT-# L-B K-#@X
M+#<@0$ @8WEG=VEN7W)E8W9F<F]M("AI;G0 AT 9F0L"B @(&EN("@B<F5C=F9R
M;VTB*3L*( H@("!D96)U9U]P<FEN=&8@*")R96-V9G)O;2 E9"(L(&@M/F=E
M=%]S;V-K970@*"DI.PHK(" *(" @:6YT(')E<R ](')E8W9F<F]M("AH+3YG
M971?<V]C:V5T("@I+"!B=68L(&QE;BP AT 9FQA9W,L(&9R;VTL(&9R;VUL96XI
M.PH@("!I9B H<F5S(#T](%-/0TM%5%]%4E)/4BD*(" @("!["D! ("TU DOT 3 AT L
M,3,@*S8T-RPQ."! 0"!C>6=W:6Y?8V]N;F5C=" H:6YT(&9D+ H@("!I;B H
M(F-O;FYE8W0B*3L*(" @:6YT(')E<SL*(" @9FAA;F1L97)?<V]C:V5T("IS
M;V-K(#T AT 9V5T("AF9"D["BL@('-O8VMA9&1R7VEN('-I;CL**PHK("!I9B H
M9V5T7VEN971?861D<B H;F%M92P@;F%M96QE;BP@)G-I;BP@)FYA;65L96XI
M(#T](# I"BL@(" @<F5T=7)N("TQ.PHK(" *(" @:68@*"%S;V-K*0H@(" @
M('L*(" @(" @(')E<R ]("TQ.PH@(" @('T*(" @96QS90H@(" @('L*+2 @
M(" @(')E<R ](&-O;FYE8W0@*'-O8VLM/F=E=%]S;V-K970@*"DL(&YA;64L
M(&YA;65L96XI.PHK(" @(" @<F5S(#T AT 8V]N;F5C=" H<V]C:RT^9V5T7W-O
M8VME=" H*2P@*'-O8VMA9&1R("HI("9S:6XL(&YA;65L96XI.PH@(" @(" @
M:68@*')E<RD*( ES971?=VEN<V]C:U]E<G)N;R H*3L*(" @(" @(&]U=" H
M(F-O;FYE8W0B*3L*0$ @+3<S."PY("LW.3(L,3@@0$ @8WEG=VEN7V%C8V5P
M=" H:6YT(&9D+"!S=')U8W0@<V]C:V%D9'(@*@H@("!I;G0@<F5S(#T@+3$[
M"B *(" @:6X@*")A8V-E<'0B*3L**R @"B @(&9H86YD;&5R7W-O8VME=" J
M<V]C:R ](&=E=" H9F0I.PH@("!I9B H<V]C:RD*(" @("!["BL**R @(" @
M("\J(&%C8V5P="!O;B!.5"!F86EL<R!I9B!L96X@/"!S:7IE;V8@*'-O8VMA
M9&1R7VEN*0HK(" @(" @("H@<V]M92!P<F]G<F%M<R!S970@;&5N('1O( HK
M(" @(" @("H@<VEZ96]F*&YA;64N<W5N7V9A;6EL>2D@*R!S=')L96XH;F%M
M92YS=6Y?<&%T:"D AT 9F]R(%5.25@@9&]M86EN"BL@(" @(" @*B\**R @(" @
M(&EF("AL96X@)B8@*"AU;G-I9VYE9"D@*FQE;B \('-I>F5O9B H<W1R=6-T
M('-O8VMA9&1R7VEN*2DI"BL)*FQE;B ]('-I>F5O9B H<W1R=6-T('-O8VMA
M9&1R7VEN*3L**PH@(" @(" @<F5S(#T AT 86-C97!T("AS;V-K+3YG971?<V]C
M:V5T("@I+"!P965R+"!L96XI.R @+R\@8V%N)W0@=7-E(&$@8FQO8VMI;F<@
M8V%L;"!I;G-I9&4 AT 82!L;V-K"B *(" @(" @(%-E=%)E<V]U<F-E3&]C:RA,
M3T-+7T9$7TQ)4U0L5U))5$5?3$]#2WQ214%$7TQ/0TLL(B!A8V-E<'0B*3L*
M0$ @+3<X,"PQ," K.#0S+#8W($! (&-Y9W=I;E]B:6YD("AI;G0 AT 9F0L('-T
M<G5C="!S;V-K861D<B J;7D*(" @9FAA;F1L97)?<V]C:V5T("IS;V-K(#T@
M9V5T("AF9"D["B @(&EF("AS;V-K*0H@(" @('L*+2 @(" @(')E<R ](&)I
M;F0@*'-O8VLM/F=E=%]S;V-K970@*"DL(&UY7V%D9'(L(&%D9')L96XI.PHM
M(" @(" @:68@*')E<RD*+0ES971?=VEN<V]C:U]E<G)N;R H*3L**R @(" @
M(&EF("AM>5]A9&1R+3YS85]F86UI;'D@/3T AT 049?54Y)6"D**PE["BL)("!S
M=')U8W0@<V]C:V%D9')?:6X@<VEN.PHK"2 @:6YT(&QE;B ]('-I>F5O9B!S
M:6X["BL)("!I;G0 AT 9F0["BL**PD@('-I;BYS:6Y?9F%M:6QY(#T AT 049?24Y%
M5#L**PD@('-I;BYS:6Y?<&]R=" ](# ["BL)("!S:6XN<VEN7V%D9'(N<U]A
M9&1R(#T@:'1O;FP@*$E.041$4E],3T]00D%#2RD["BL)("!R97,@/2!B:6YD
M("AS;V-K+3YG971?<V]C:V5T("@I+" H<V]C:V%D9'(@*BD@)G-I;BP@;&5N
M*3L**PD@(&EF("AR97,I"BL)(" @('L**PD@(" @("!S971?=VEN<V]C:U]E
M<G)N;R H*3L**PD@(" @("!S>7-C86QL7W!R:6YT9B H(D%&7U5 DOT 25 AT Z(&)I
M;F0 AT 9F%I;&5D("5D(BP AT 9V5T7V5R<FYO("@I*3L**PD@(" @("!G;W1O(&]U
M=#L**PD@(" @?0HK"2 @<F5S(#T AT 9V5T<V]C:VYA;64@*'-O8VLM/F=E=%]S
M;V-K970@*"DL("AS;V-K861D<B J*2 F<VEN+" F;&5N*3L**PD@(&EF("AR
M97,I"BL)(" @('L**PD@(" @("!S971?=VEN<V]C:U]E<G)N;R H*3L**PD@
M(" @("!S>7-C86QL7W!R:6YT9B H(D%&7U5 DOT 25 AT Z(&=E='-O8VMN86UE(&9A
M:6QE9" E9"(L(&=E=%]E<G)N;R H*2D["BL)(" @(" @9V]T;R!O=70["BL)
M(" @('T**PHK"2 @<VEN+G-I;E]P;W)T(#T@;G1O:',@*'-I;BYS:6Y?<&]R
M="D["BL)("!D96)U9U]P<FEN=&8@*")!1E]53DE8.B!S;V-K970 AT 8F]U;F0@
M=&\@<&]R=" E=2(L('-I;BYS:6Y?<&]R="D["BL**PD@(')E<R ]("TQ.PHK
M"2 @9F0@/2!?;W!E;B H;7E?861D<BT^<V%?9&%T82P AT 3U]74D].3%D@?"!/
M7T-214%4('P AT 3U]"24Y!4EDL(# I.PHK"2 @:68@*&9D(#X](# I"BL)(" @
M('L**PD@(" @("!C:&%R(&)U9EMS:7IE;V8@*%-/0TM%5%]#3T]+244I("L@
M,3!=.PHK"BL)(" @(" @7U]S;6%L;%]S<')I;G1F("AB=68L("(E<R5U(BP@
M4T]#2T547T-/3TM)12P@<VEN+G-I;E]P;W)T*3L**PD@(" @("!I;G0@;&5N
M(#T@<W1R;&5N("AB=68I("L@,3L**PHK"2 @(" @("\J($YO=&4@=&AA="!T
M:&4@=&5R;6EN871I;F<@;G5L(&ES('=R:71T96XN(" J+PHK"2 @(" @(&EF
M("A?=W)I=&4@*&9D+"!B=68L(&QE;BD@(3T@;&5N*0HK"0E["BL)"2 @:6YT
M('-A=F5D7V5R<FYO(#T AT 9V5T7V5R<FYO("@I.PHK"0D@(%]C;&]S92 H9F0I
M.PHK"0D@(%]U;FQI;FL@*&UY7V%D9'(M/G-A7V1A=&$I.PHK"0D@('-E=%]E
M<G)N;R H<V%V961?97)R;F\I.PHK"0E]"BL)(" @(" @96QS90HK"0E["BL)
M"2 @7V-L;W-E("AF9"D["BL)"2 @8VAM;V0@*&UY7V%D9'(M/G-A7V1A=&$L
M"BL)"2 @(" H4U])1E-/0TL@?"!37TE25UA5('P AT 4U])4E=81R!\(%-?25)7
M6$\I("8@?FUY<V5L9BT^=6UA<VLI.PHK"0D@(')E<R ](# ["BL)"7T**PD@
M(" @?0HK"7T**R @(" @(&5L<V4**PE["BL)("!R97,@/2!B:6YD("AS;V-K
M+3YG971?<V]C:V5T("@I+"!M>5]A9&1R+"!A9&1R;&5N*3L**PD@(&EF("AR
M97,I"BL)(" @('-E=%]W:6YS;V-K7V5R<FYO("@I.PHK"7T*(" @("!]"BMO
M=70Z"B @(&]U=" H(F)I;F0B*3L*(" @<WES8V%L;%]P<FEN=&8@*"(E9" ]
M(&)I;F0@*"5D+" E>"P@)60I(BP@<F5S+"!F9"P@;7E?861D<BP AT 861D<FQE
M;BD["B @(')E='5R;B!R97,["F1I9F8@+75P<DX@+W=I;G-U<"]P871H+F-C
M('=I;G-U<"]P871H+F-C"BTM+2 O=VEN<W5P+W!A=&@N8V,)5&AU($IU;" Q
M-2 P-CHT.3HR-" Q.3DY"BLK*R!W:6YS=7 O<&%T:"YC8PE4=64 AT 2G5L(#(W
M(# U.C4Q.C Q(#$Y.3D*0$ @+3(Q-C AT L-B K,C$V."PQ,R! 0"!S>6UL:6YK
M7V-H96-K7V]N92 H8V]N<W0 AT 8VAA<B J:6Y?<&%T:"P@"B )"2 @("!R97,@
M/2!G;W0["B )"7T*( D@(" @?0HK"2 @96QS92!I9B H9V]T(#T]('-I>F5O
M9B H8V]O:VEE7V)U9BD**PD)(" @)B8@;65M8VUP("AC;V]K:65?8G5F+"!3
M3T-+151?0T]/2TE%+ HK"0D)(" @(" @<VEZ96]F("AC;V]K:65?8G5F*2D@
M/3T@,"D**PD@(" @>PHK"2 @(" @(')E<R ](# ["BL)(" @(" @*G!F;&%G
M<R!\/2!0051(7U-/0TM%5#L**PD@(" @?0H@"2 @96QS92!I9B H*G!F;&%G
M<R F(%!!5$A?15A%0RD*( D@(" @9V]T;R!C;&]S95]A;F1?<F5T=7)N.PH@
M"2 @96QS92!I9B H(2 AT J<&9L86=S("8 AT 4$%42%]%6$5#*2D*9&EF9B M=7!R
M3B O=VEN<W5P+W!A=&@N:"!W:6YS=7 O<&%T:"YH"BTM+2 O=VEN<W5P+W!A
M=&@N: E&<FD AT 2G5L(# Y(# V.C0S.C X(#$Y.3D**RLK('=I;G-U<"]P871H
M+F@)5'5E($IU;" R-R P-3HT-3HQ-B Q.3DY"D! ("TS,"PV("LS,"PW($! 
M(&5N=6T*(" @4$%42%]364U,24Y+(#T@,2P*(" @4$%42%]"24Y!4ED@/2!-
M3U5.5%]"24Y!4EDL"B @(%!!5$A?15A%0R ]($U/54Y47T5814,L"BL@(%!!
M5$A?4T]#2T54(#T@(#!X-# P,# P,# L"B @(%!!5$A?2$%304-,4R ](#!X
M.# P,# P,# *('T["B *0$ @+30U+#8@*S0V+#<@0$ @8VQA<W,@<&%T:%]C
M;VYV"B @(&EN="!H87-G;V]D7VEN;V1E("@I('MR971U<FX@<&%T:%]F;&%G
M<R F(%!!5$A?2$%304-,4SM](" O+R!.;W0@<W1R:6-T;'D AT 8V]R<F5C= H@
M("!I;G0@:7-B:6YA<GD@*"D@>W)E='5R;B!P871H7V9L86=S("8 AT 4$%42%]"
M24Y!4ED[?0H@("!I;G0@:7-S>6UL:6YK("@I('MR971U<FX@<&%T:%]F;&%G
M<R F(%!!5$A?4UE-3$E.2SM]"BL@(&EN="!I<W-O8VME=" H*2![<F5T=7)N
M('!A=&A?9FQA9W,@)B!0051(7U-/0TM%5#M]"B @(&EN="!I<V5X96,@*"D@
M>W)E='5R;B!P871H7V9L86=S("8 AT 4$%42%]%6$5#.WT*( H@("!V;VED('-E
M=%]B:6YA<GD@*"D@>W!A=&A?9FQA9W,@?#T AT 4$%42%]"24Y!4ED[?0I 0" M
M-S$L-B K-S,L.2! 0"!C;&%S<R!P871H7V-O;G8*( H@+RH AT 4WEM;&EN:R!M
M87)K97(@*B\*("-D969I;F4 AT 4UE-3$E.2U]#3T]+244@(B$\<WEM;&EN:SXB
M"BL**R\J(%-O8VME="!M87)K97(@*B\**R-D969I;F4 AT 4T]#2T547T-/3TM)
M12 @(B$\<V]C:V5T(#XB"B *("\J($UA>&EM=6T AT 9&5P=&@@;V8@<WEM;&EN
M:W,@*&%F=&5R('=H:6-H($5,3T]0(&ES(&ES<W5E9"DN(" J+PH@(V1E9FEN
M92!-05A?3$E.2U]$15!42" Q, ID:69F("UU<').("]W:6YS=7 O<WES8V%L
M;',N8V,@=VEN<W5P+W-Y<V-A;&QS+F-C"BTM+2 O=VEN<W5P+W-Y<V-A;&QS
M+F-C"51H=2!*=6P@,#@@,#@Z,3,Z,S$@,3DY.0HK*RL@=VEN<W5P+W-Y<V-A
M;&QS+F-C"51H=2!*=6P@,CD@,38Z,C<Z-3$@,3DY.0I 0" M-S$T+#<@*S<Q
M-"PW($! (&-H;6]D("AC;VYS="!C:&%R("IP871H+"!M;V1E7W0@;6]D92D*
M( E["B )("!N;W<@?#T AT 1DE,15]!5%1224)55$5?4D5!1$].3%D["B )?0HM
M(" @(" @:68@*%-?25-,3DL@*&UO9&4I*0HK(" @(" @:68@*%-?25-,3DL@
M*&UO9&4I('Q\(%-?25-33T-+("AM;V1E*2D*( E["B )("!N;W<@?#T AT 1DE,
815]!5%1224)55$5?4UE35$5-.PH@"7T*
`
end

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019