home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 19 / AACD19.BIN / AACD / Programming / rxmui / examples / applications / EmCheckFun.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  2001-01-29  |  2.3 KB  |  114 lines

  1. /* EMCheckFun 1.1 (11.11.2000) */
  2.  
  3. signal on halt
  4. signal on break_c
  5. signal on syntax
  6. signal on error
  7.  
  8. SafeStart:
  9.   global.keyword=word(arg(1),1)
  10.   global.this=x2d(pragma("ID"))
  11.   "MACRO" global.keyword global.this
  12.   global.haltok=1
  13.   if global.halted=1 then exit
  14.  
  15. call start()
  16. call SafeQuit()
  17. /* never reached */
  18.  
  19. break_c:
  20. halt:
  21.     signal on break_c
  22.     signal on halt
  23.     if global.haltok=1 then call err "Macro broken."
  24.     global.halted=1
  25.     signal SafeStart
  26.  
  27. start: procedure expose global.
  28.  
  29.     TEMPLATE = "ID/A,HOST/A,HOSTPORT/A/N,USER/A,PASS/A"
  30.     if ~RMH_ReadArgs(TEMPLATE) then call err(DosString(IoErr()))
  31.     host=parm.1.value
  32.     HostPort=parm.2.value
  33.     login=parm.3.value
  34.     pass=parm.4.value
  35.  
  36.     call info "Resolving <"host">..."
  37.     remote.AddrAddr=resolve(host)
  38.     if remote.AddrAddr==-1 then call err "Host <"host"> not found."
  39.     remote.AddrPort=hostPort
  40.  
  41.     call SetSocketBaseSingle("BREAKMASK",2**12)
  42.  
  43.     global.sock=socket("INET","STREAM")
  44.     if global.sock<0 then call err "Can't create my socket."
  45.  
  46.     call info "Connecting to <"host":"hostPort">..."
  47.     res=connect(global.sock,"REMOTE")
  48.     if res<0 then call err "Can't connect to <"host":"hostPort"> ("ErrorString()")."
  49.  
  50.     call info "Loggin in.."
  51.  
  52.     call rec
  53.  
  54.     call sen("USER" login)
  55.  
  56.     call rec
  57.  
  58.     call sen("PASS" pass)
  59.  
  60.     call rec
  61.  
  62.     call info "Statistics..."
  63.     call sen("STAT")
  64.  
  65.     stat=rec()
  66.  
  67.     num=word(stat,2)
  68.     if num>0 then msg="You have" num "new mail(s), for" word(stat,3) "total bytes."
  69.     else msg="You have no new mail."
  70.     call info msg
  71.  
  72.     call sen("QUIT")
  73.  
  74.     "EOM" global.keyword
  75.     exit
  76.  
  77.  
  78. rec: procedure expose global.
  79.  
  80.     len=recv(global.sock,"B",256)
  81.  
  82.     if len<1 then call err "Error receiving ("ErrorString()")."
  83.  
  84.     parse var b b"D"x
  85.     if word(b,1)=="-ERR" then call err right(b,length(b)-wordindex(b,2)+1) "(errore server)."
  86.     return b
  87.  
  88.  
  89. sen: procedure expose global.
  90. parse arg string
  91.  
  92.     string=string"D0A"x
  93.     res=send(global.sock,string)
  94.  
  95.     if res~=length(string) then call err "Error sending ("ErrorString()")."
  96.     return
  97.  
  98. info: procedure expose global.
  99. parse arg msg
  100.     "INFO" global.keyword msg
  101.     return
  102.  
  103. err: procedure expose global.
  104. parse arg msg,err
  105.     "ERR" global.keyword msg
  106.     exit
  107.  
  108. syntax:
  109.     call err "Syntax error:"rc "line:"sigl"."
  110.  
  111. error:
  112.     call err "Error:"rc "line:"sigl"."
  113.  
  114.