| 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
 | 
|---|