1 | XMLTCP ;(WASH ISC)/CAP-TCP/IP to MailMan ;07/23/2002 06:54
|
---|
2 | ;;8.0;MailMan;;Jun 28, 2002
|
---|
3 | ; modified to run with MSM NT and Protocol TCP/IP-MAILMAN (file 3.4)
|
---|
4 | SEND ;returns ER(0 OR 1), XMLER=number of "soft" errors
|
---|
5 | I $$NEWERR^%ZTER N $ETRAP,$ESTACK S $ETRAP="D C^XMCTRAP"
|
---|
6 | E S X="C^XMCTRAP",@^%ZOSF("TRAP")
|
---|
7 | I $G(XMINST) D XMTSTAT^XMTDR(XMINST,"S",XMSG,1)
|
---|
8 | W XMSG,$C(13,10),!
|
---|
9 | Q
|
---|
10 | REC ;Receive a line (must keep buffer / lines divided by LF)
|
---|
11 | I $$NEWERR^%ZTER N $ETRAP,$ESTACK S $ETRAP="D C^XMCTRAP"
|
---|
12 | E S X="C^XMCTRAP",@^%ZOSF("TRAP")
|
---|
13 | ;Return line if read last time
|
---|
14 | RE G R:XMLTCP[$C(10) S %=255-$L(XMLTCP) G R:%<1
|
---|
15 | ;Insure can clean up if line dropped, etc.
|
---|
16 | I $S(XMOS["VAX":1,+$G(XMOS("MSMVER"))<8:1,XMOS["OpenM-NT":1,1:0) R X#$S(%:%,1:1):$G(XMSTIME,160) G RE2
|
---|
17 | ;Compliant with M standard
|
---|
18 | R X:$G(XMSTIME,60)
|
---|
19 | ;
|
---|
20 | RE2 I '$T,"."_$C(10)'=XMLTCP S XMRG="" D ERTRAN^XMC1("Receiver timed out") Q
|
---|
21 | I X="" S ER=ER+.1 S:ER=1 XMRG="" Q:ER=1 H 1 G RE
|
---|
22 | S XMLTCP=XMLTCP_X I XMLTCP'[$C(10) G RE
|
---|
23 | R S %=$F(XMLTCP,$C(10))
|
---|
24 | ;
|
---|
25 | ;Strip out LF (and CR, if present)
|
---|
26 | I %,%<256 S XMRG=$E(XMLTCP,1,%-3+($A(XMLTCP,%-2)'=13)),XMLTCP=$E(XMLTCP,%,$L(XMLTCP)) G RQ
|
---|
27 | ;
|
---|
28 | ;Line too long or doesn't contain a Line Feed, return first 255 chars.
|
---|
29 | S XMRG=$E(XMLTCP,1,255),XMLTCP=$E(XMLTCP,256,$L(XMLTCP))
|
---|
30 | ;S:$E(XMLTCP)="." XMLTCP="."_XMLTCP
|
---|
31 | ;
|
---|
32 | RQ I $L(XMRG),$C(13,10)[$E(XMRG) S XMRG=$E(XMRG,2,$L(XMRG)) G RQ
|
---|
33 | I $G(XMINST) D XMTSTAT^XMTDR(XMINST,"R",XMRG)
|
---|
34 | Q
|
---|
35 | SNDGTM ; Send for GT.M
|
---|
36 | I $$NEWERR^%ZTER N $ETRAP,$ESTACK S $ETRAP="D C^XMCTRAP"
|
---|
37 | E S X="C^XMCTRAP",@^%ZOSF("TRAP")
|
---|
38 | I $G(XMINST) D XMTSTAT^XMTDR(XMINST,"S",XMSG,1)
|
---|
39 | W XMSG,$C(13,10),#
|
---|
40 | Q
|
---|
41 | RECGTM ; Receive for GT.M
|
---|
42 | I $$NEWERR^%ZTER N $ETRAP,$ESTACK S $ETRAP="D C^XMCTRAP"
|
---|
43 | E S X="C^XMCTRAP",@^%ZOSF("TRAP")
|
---|
44 | R XMRG:$G(XMSTIME,60)
|
---|
45 | I '$T S XMRG="" D ERTRAN^XMC1("Receiver timed out") Q
|
---|
46 | S XMRG=$TR(XMRG,$C(10,12,13))
|
---|
47 | I $G(XMINST) D XMTSTAT^XMTDR(XMINST,"R",XMRG)
|
---|
48 | Q
|
---|