home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 22 / AACD 22.iso / AACD / Programming / RxMUI / Examples / EmCheckFun.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  2001-05-24  |  3.2 KB  |  119 lines

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