home *** CD-ROM | disk | FTP | other *** search
/ Jason Aller Floppy Collection / 199.img / HYPE4.ZIP / CHKMAIL.HP < prev    next >
Text File  |  1990-05-08  |  7KB  |  247 lines

  1. ; chkmail.hp
  2. ;
  3. ; This module uses <NAME> which is passed to it from the HA5 host, as an
  4. ; index to the file USERS.    USERS contains the callers name and the last
  5. ; message number (LAST-MSG) that <NAME> has read.  The file USERS has the
  6. ; format of:
  7. ;
  8. ;          John Doe~#10
  9. ;
  10. ; The tilde simply seperates <NAME> from the LAST-MSG.
  11. ;
  12. ; If <NAME> is not found in the USERS file, it is added to that file, and
  13. ; given a LAST-MSG value of 0.
  14. ;
  15. ; Once the LAST-MSG has been determined, this number is used as an index
  16. ; into the file named MSGIDX.  This is the message index file.    This file is
  17. ; used to determine if there are any new messages (messages numbers greater
  18. ; than LAST-MSG) for <NAME>.  The file MSGIDX has the format of:
  19. ;
  20. ; #1 TO:users name FROM:senders name SUBJECT:subject DATE:date PUB:y-or-n
  21. ;
  22. ; The messages are of three types, designating a priority of importance to
  23. ; the caller.
  24. ;
  25. ;      Type 1: Private messages sent directly to the callers name
  26. ;
  27. ;      Type 2: Messages left by others as a "To All" message
  28. ;
  29. ;      Type 3: Messages left by others, for others, but are public
  30. ;
  31. ;      Note that while all three types of messages are located, this
  32. ;      module will only notify the caller of messages sent to their
  33.  
  34.  
  35. ;      name (Message Type 1).  The others (type 2 and 3) are maintained
  36. ;      for subsequent read commands that may be issued at a later time.
  37. ;
  38.  
  39. ;   Get the directory for email files from the environment varialbe HA5_EMAIL
  40. ;   if it exists, otherwise use the same location as the file HA5.CFG.
  41. ;
  42.     set flag(F(9),false)
  43.     ifnot get environment(S(0),"HA5_TRACE") set flag(F(9),false)
  44.     if string match(S(0),"true") set flag(F(9),true)
  45.  
  46.     if flag(F(9)) print("Chkmail has been entered")
  47.  
  48. label(10)
  49.     if flag(F(9)) print("label(10)")
  50.     set flag(F(1),false)
  51.     if get environment(S(0),"HA5BBS") set flag(F(1),true)
  52.     ifnot get environment(S(0),"HA5_EMAIL") branch(15)
  53.     set string(S(0),"/S(0)")
  54.     branch(20)
  55. label(15)
  56.     if flag(F(9)) print("label(15)")
  57.     full filename(S(0),"HA5.CFG")
  58.     truncate(S(0),"\HA5.CFG")
  59. label(20)
  60.     if flag(F(9)) print("label(20)")
  61.     put environment("HA5_EMAIL","/S(0)")
  62.     get environment(S(6),"HA5_EMAIL")
  63.  
  64. label(25)
  65.     if flag(F(9)) print("label(25)")
  66.     option("ignore case",yes)
  67.     option("blank",yes)
  68.     key string(S(0),"") 
  69.     option("blank",no)
  70.     uppercase(S(0),"/S(0)")
  71.     put environment("NAME","/S(0)")
  72.     put environment("MSGS","")
  73.     put envoronment("LAST_MSG_NO","")
  74.  
  75. ; Read record 1 of MSGIDX to get the next message record number.
  76. ; Put this number into the environment variable NEXT_MSG_NO.  This
  77. ; variable will be used by sendmail.hp when a new message is generated.
  78. ;
  79. ; If MSGIDX file does not exist, put #1 into NEXT_MSG_NO environment
  80. ; variable.
  81. ;
  82.     ifnot read from("/S(6)\msgidx",no) branch(600)
  83.  
  84. label(30)
  85.     if flag(F(9)) print("label(30)")
  86.     ifnot read string(S(1),"NEXT_MSG_NO:") branch(600)
  87.     cut(S(1),"NEXT_MSG_NO:")
  88.     get integer(I(1),"/S(1)")
  89.     put environment("NEXT_MSG_NO","#/I(1)")
  90.     read from("")
  91.  
  92. ;Read <NAME> from USERS and get LAST-MSG read, or ADD <NAME> to USERS
  93. ;if <NAME> is new.    S(0) is <NAME>.
  94. ;
  95. label(40)
  96.     if flag(F(9)) print("label(40)")
  97.     ifnot read from("/S(6)\USERS",no) branch(55)
  98.     ifnot read string(S(4),"/S(0)") branch(50)
  99.     cut(S(4),"~")
  100.     read from("")
  101.     branch(90)
  102. label(50)
  103.     if flag(F(9)) print("label(50)")
  104.     read from("")
  105. label(55)
  106.     if flag(F(9)) print("label(55)")
  107.     write to("/S(6)\USERS")
  108.     write("/S(0)~#0")
  109.     write to("")
  110.     set string(S(4),"#0")
  111.  
  112. label(90)
  113.     if flag(F(9)) print("label(90)")
  114.     put environment("LAST_MSG_NO","/S(4)")
  115.  
  116.     set string(S(7),"")
  117.     set string(S(8),"")
  118.     set string(S(9),"")
  119.  
  120.     set integer(I(7),0)
  121.     set integer(I(8),0)
  122.     set integer(I(9),0)
  123.  
  124.     type("/rChecking your mail...",0)
  125.  
  126. ; Use LAST-MSG read # to find unread personal mail
  127. ;
  128. ;Label(100)
  129.     if flag(F(9)) print("label(100)")
  130.     get integer(I(1),"/S(4)")
  131.     add(I(1),1) 
  132.     
  133.     ifnot read from("/S(6)\msgidx",no) branch(150)
  134.  
  135.     ifnot read string(S(2),"") branch(150)
  136.  
  137. ; There are messages greater than LAST-MSG, are there any for this caller?
  138. ;
  139. label(110)
  140.     if flag(F(9)) print("label(110)")
  141.     type(".",0)
  142.     branch subroutine(500)
  143.     if read string(S(2),"") branch(110)
  144.     read from("")
  145.  
  146.     if equal(I(7),1) type("/r/rThere is 1 piece of mail for you today./r/r",0)
  147.  
  148.     if greater(I(7),1) type("/r/rThere are /I(7) pieces of mail for you today./r/r",0)
  149.  
  150.     set string(S(9),"/S(7)/S(8)/S(9)")
  151.     put environment("MSGS", "/S(9)")
  152.  
  153.     ifnot greater(I(7),0) branch(150)
  154.     branch(160)
  155.  
  156. ; There are no message numbers greater than S(1).
  157. ;
  158. label(150)
  159.     if flag(F(9)) print("label(150)")
  160.     ifnot truncate(S(0)," ") branch(155)
  161. label(155)
  162.     if flag(F(9)) print("label(155)")
  163.     type("/r/rSorry /S(0), there is no new mail for you today./r/r",0)
  164. label(160)
  165.     if flag(F(9)) print("label(160)")
  166.     if flag(F(1)) fetch character(S(0),"Press any key to continue...")
  167.     end()
  168.  
  169.  
  170. ;***************************************************************************
  171. ;Subroutine to find correct mail from msgidx file, called from label(110)
  172. ;
  173. ;     Expects:     S(2) contains the record from MSGIDX
  174. ;
  175. ;    Uses:         S(7) contains numbers matching <users name>
  176. ;                S(8) contains numbers matching <*>
  177. ;                S(9) contains numbers matching <public>
  178. ;
  179. ;***************************************************************************
  180. label(500)
  181.     if flag(F(9)) print("label(500)")
  182.     get integer(I(2),"/S(2)")
  183.     if less(I(2),I(1)) return()
  184.  
  185.     if string match(S(2),"TO:/S(0)") branch(505)
  186.     if string match(S(2),"TO:*")     branch(510)
  187.     if string match(S(2),"PUB:Y")    branch(515)
  188. label(501)
  189.     if flag(F(9)) print("label(501)")
  190.     return()
  191. label(505)
  192.     if flag(F(9)) print("label(505)")
  193.     truncate(S(2)," TO:")
  194.     set string(S(7),"/S(7)/S(2):")
  195.     add(I(7),1)
  196.     branch(501)
  197. label(510)
  198.     if flag(F(9)) print("label(510)")
  199.     truncate(S(2)," TO:")
  200.     set string(S(8),"/S(8)/S(2):")
  201.     add(I(8),1)
  202.     branch(501)
  203. label(515)
  204.     if flag(F(9)) print("label(515)")
  205.     if string match(S(2),"FROM:/S(0)") branch(501)
  206.     truncate(S(2)," TO:")
  207.     set string(S(9),"/S(9)/S(2):")
  208.     add(I(9),1)
  209.     branch(501)
  210.  
  211. ; MSGIDX does exist.  Put #1 into NEXT_MSG_NO in both MSGIDX header and
  212. ; the environment variable.
  213. ;
  214. label(600)
  215.     if flag(F(9)) print("label(600)")
  216.     read from("")
  217.     wrtie to("/S(6)\msgidx")
  218.     write("NEXT_MSG_NO:#1")
  219.     write to("")
  220.     put environment("NEXT_MSG_NO","#1")
  221.     put environment("LAST_MSG_NO","#0")
  222.     branch(40)
  223.     
  224. label(900)
  225.     if flag(F(9)) print("label(900)")
  226.     set string(S(9), "Could not open file:USERS")
  227.     branch(990)
  228. label(905)
  229.     if flag(F(9)) print("label(905)")
  230.     set string(S(9), "Could not close file:USERS")
  231.     branch(990)
  232. label(910)
  233.     if flag(F(9)) print("label(910)")
  234.     set string(S(9), "Could not open file:MSGIDX")
  235.     branch(990)
  236. label(980)
  237.     if flag(F(9)) print("label(980)")
  238.     set string(S(9), "Error not trapped")
  239. label(990)
  240.     if flag(F(9)) print("label(990)")
  241.     ifnot write to("answer.log") branch(995)
  242.     ifnot write("ERROR:/S(9)/n") branch(995)
  243.     ifnot write to("") branch(995)
  244. label(995)
  245.     if flag(F(9)) print("label(995)")
  246.     end()
  247.