home *** CD-ROM | disk | FTP | other *** search
- /* EMCheckFun 1.1 (11.11.2000) */
-
- signal on halt
- signal on break_c
- signal on syntax
- signal on error
-
- SafeStart:
- global.keyword=word(arg(1),1)
- global.this=x2d(pragma("ID"))
- "MACRO" global.keyword global.this
- global.haltok=1
- if global.halted=1 then exit
-
- call start()
- call SafeQuit()
- /* never reached */
-
- break_c:
- halt:
- signal on break_c
- signal on halt
- if global.haltok=1 then call err "Macro broken."
- global.halted=1
- signal SafeStart
-
- start: procedure expose global.
-
- TEMPLATE = "ID/A,HOST/A,HOSTPORT/A/N,USER/A,PASS/A"
- if ~RMH_ReadArgs(TEMPLATE) then call err(DosString(IoErr()))
- host=parm.1.value
- HostPort=parm.2.value
- login=parm.3.value
- pass=parm.4.value
-
- call info "Resolving <"host">..."
- remote.AddrAddr=resolve(host)
- if remote.AddrAddr==-1 then call err "Host <"host"> not found."
- remote.AddrPort=hostPort
-
- call SetSocketBaseSingle("BREAKMASK",2**12)
-
- global.sock=socket("INET","STREAM")
- if global.sock<0 then call err "Can't create my socket."
-
- call info "Connecting to <"host":"hostPort">..."
- res=connect(global.sock,"REMOTE")
- if res<0 then call err "Can't connect to <"host":"hostPort"> ("ErrorString()")."
-
- call info "Loggin in.."
-
- call rec
-
- call sen("USER" login)
-
- call rec
-
- call sen("PASS" pass)
-
- call rec
-
- call info "Statistics..."
- call sen("STAT")
-
- stat=rec()
-
- num=word(stat,2)
- if num>0 then msg="You have" num "new mail(s), for" word(stat,3) "total bytes."
- else msg="You have no new mail."
- call info msg
-
- call sen("QUIT")
-
- "EOM" global.keyword
- exit
-
-
- rec: procedure expose global.
-
- len=recv(global.sock,"B",256)
-
- if len<1 then call err "Error receiving ("ErrorString()")."
-
- parse var b b"D"x
- if word(b,1)=="-ERR" then call err right(b,length(b)-wordindex(b,2)+1) "(errore server)."
- return b
-
-
- sen: procedure expose global.
- parse arg string
-
- string=string"D0A"x
- res=send(global.sock,string)
-
- if res~=length(string) then call err "Error sending ("ErrorString()")."
- return
-
- info: procedure expose global.
- parse arg msg
- "INFO" global.keyword msg
- return
-
- err: procedure expose global.
- parse arg msg,err
- "ERR" global.keyword msg
- exit
-
- syntax:
- call err "Syntax error:"rc "line:"sigl"."
-
- error:
- call err "Error:"rc "line:"sigl"."
-
-