home *** CD-ROM | disk | FTP | other *** search
/ Beijing Paradise BBS Backup / PARADISE.ISO / software / BBSDOORW / SCRIPTS.ZIP / GEMSGUP.T < prev    next >
Text File  |  1991-04-18  |  8KB  |  232 lines

  1. :: GEnie IBM PC RoundTable message upload script for YAM TurboDial 2.18+
  2. ::
  3. :: Author:  Rahul Dhesi
  4. :: Date:    1986/10/25
  5. :: Version: 2.1 CAF Rev 10-4-90
  6. ::
  7. :: Ideas were borrowed from Paul Homchick's file uploading script.  This 
  8. :: script may be freely copied and modified by all.  I accept no liability 
  9. :: should you go insane trying to figure out YAM's script commands.
  10. ::
  11. ::
  12. ::                               MESSAGE FORMAT
  13. ::
  14. :: Each message to be uploaded is kept in a separate file.  Each message file
  15. :: must begin with the prefix "msg" and must not have any extension.  Good
  16. :: names to use are "msg1", "msg2", ..., "msg10", "msg11", and so on.  Each 
  17. :: message file has one of the the following formats:
  18. ::  Old format:
  19. ::
  20. ::      line 1:  category number
  21. ::      line 2:  topic number
  22. ::      rest:    message text
  23. ::
  24. ::  New format:
  25. ::    line 1: Category 5,  Topic 36
  26. ::      rest:    message text
  27. ::
  28. :: See the sample message files provided.
  29. ::
  30. :: This script is invoked after you are already logged in to GEnie and
  31. :: are at any GEnie menu.  It is invoked from your phones.t file and
  32. :: a sample phones.t file is supplied to show how this is done.
  33. :: This script simply returns to its caller.  The portion of phones.t
  34. :: that invokes this script is responsible for logging you out.
  35. ::
  36. ::                         ADJUSTABLE PARAMETERS
  37. ::
  38. :: This script assumes that your system-wide prompt character is ">".  If
  39. :: your prompt character is different, e.g. "?", see items I and II. If your 
  40. :: GENie break character is not control C, make a change in item III.  
  41.  
  42. ::I.  SET PROMPT CHARACTER.  Here we set the system-wide prompt character 
  43. :: to ">".  If your prompt character is different, change the following 
  44. :: line, e.g.:  set pr "?"   (set in phone directory)
  45. :    set pr "\006"
  46. :       set pr "?"      : not currently in use
  47.  
  48. ::II.  SET ASCII CODE FOR PROMPT CHARACTER.  Here we set the decimal ASCII 
  49. :: code for your system-wide prompt character.  For example, if your prompt 
  50. :: character is "?", the next line will become:  set code "63"
  51.     set code "62"
  52. :       set code "63"   : not currently in use
  53.  
  54. ::III. SET BREAK CHARACTER.  Now, make sure that our break character is 
  55. :: known to the script.  If it is control C, the value is "\003". Otherwise, 
  56. :: change the following line.
  57. :    set intr "\003"   (set in phone directory)
  58.  
  59. ::IV.  Set page number in s7
  60. :    set s7 "615"
  61.  
  62.  
  63. ::*******************************************************************
  64. ::The script itself starts here.  Some patterns are initialized and we
  65. ::try to reach the RoundTable Bulletin Board first.
  66.     on !c return
  67.     echof ""
  68.         echoc "MSGUP:  Beginning upload of file %1"
  69.         set blankfill "  "              : convert null lines to blanks
  70.         pattern
  71.         pat 1v "P %s7%pr"        : e.g. "P 615>"
  72.     pat 3v "1 %pr"            : e.g. "1 >"
  73.     pat 7v "<H>elp"
  74.     pat 8v "Returning to <P>revious page."
  75.  
  76. ::Send a carriage return and see what GEnie does
  77.         put "\r"                : hit return
  78.         wait -f20                  : wait for any pattern
  79.     if 7 put "m%s7:1\r" wait -f20
  80.     while 7&&L<2 put "c\r" wait -f20
  81.     if 8 wait -f15; return
  82.         while !1&&!3&&L<2 put "c\r" wait -f20
  83.         while !1&&L<3 put "m%s7:1\r" wait -f40  : try to go to RT BBS
  84.  
  85. ::If nothing happened, send our break character to wake GEnie & try again
  86.     if !3 put "%intr" wait -f20        : send break
  87.     if !1&&!3&&!5 goto failed        : no pattern still? give up
  88.     if 3 goto foundrt            : if found "1 >", go on...
  89.     while !3&&L<3 put "m%s7;1\r" wait -f20    : else try to go to RT BBS
  90.     if !3 goto failed            : not reached BBS?  fail
  91.  
  92. ::If we reach the bulletin board and see the prompt for category 1
  93. ::(e.g. "1 >"), we find the next message and select category and topic.
  94. foundrt:
  95.         open -!tg %1            : open message file
  96.                     : !t = no throttle (full speed)
  97.                     : !g = don't send file yet
  98.     set s0 ""            : get 1st two lines (cat & topic)
  99.     while "t&&!%s0"  grab s0
  100.     if !ps0,Category goto oldf
  101.     ss s0 "([0-9]+)(,[^0-9]*)([0-9]+)"
  102.     sets s0 %z1
  103.     sets s1 %z3
  104.     : set
  105.     : abort
  106.     goto newf
  107. oldf:    grab s1                : get 1st two lines (cat & topic)
  108.         if !t goto nullmsg
  109. newf:    if "as0<1" goto nonumber    : category must be nonzero
  110.     if "as1<1" goto nonumber    : topic must nonzero
  111.     pat 2 "ot \256vailable"         : \256 is wildcard for pattern match
  112.     pat 3i "%s0 %pr"             : e.g. pat 3 "5 >"
  113.  
  114. ::Select the desired category
  115.         put "set %s0\r"            : e.g. "set 5<cr>", 5 being category
  116.         wait -f30            : wait for cat to be chosen
  117.     if 2 goto nosuchcat
  118.         if !3 goto nocat               : give up if not chosen cat
  119.  
  120. ::Select the desired topic
  121.     pattern
  122.     pat 2 "is closed"
  123.     pat 3 "ot \256vailable"
  124.     pat 4 "annot \256eply"
  125.     pat 5 "# of topic"
  126.     pat 6l "nter \256emo \256ext"
  127.     put "reply %s1\r"        : e.g. "reply 22<cr>", 22 being topic
  128.         wait -f30
  129.     while n&&L<2 put "reply %s1\r" wait -f20 : Give GEnie two chances
  130.  
  131. ::If GEnie says, "Enter # of topic..." something must have gone wrong.
  132. :: We escape from there with a break character and give up on this one.
  133.     if 5 put "%intr" goto nosuchtop : escape from prompt & give up
  134.  
  135. ::Closed topic, or no such topic, or no "Enter memo text" prompt
  136.     if 2||4 goto closed        : topic is closed, can't reply to it
  137.     if 3 goto nosuchtop        : No such topic
  138.         if !6 goto noreply             : no reply prompt
  139.     pat 7 ">"
  140.     wait
  141.  
  142. ::We reach here if we saw a string asking us to reply to the topic
  143.  
  144. ::Following lines from Paul Homchick's file upload script.  No idea what they
  145. :: do but we'll let them stay there since they don't cause any harm.
  146.     if !dP ena -p            : Ask Paul
  147.     if dP ena -r            : Ask Paul
  148.  
  149.     pp4
  150.     put "*u\r"            : Shift gears, no echo upload
  151.     pat 6l INPUT
  152.     wait; pat; sleep 10
  153. ::Upload the message, waiting for the prompt character after each line has
  154. ::been sent
  155.         t -Hgx                : send file, continue script when done
  156.     ena -ht!p            : enable throttle, disable wait for ">"
  157.     : pp250                : disable prompt character
  158.     pattern
  159.     pat 1 "entered"
  160.     put "%intr"
  161.     pat 6 ">"
  162.     wait
  163.         put "*s\r"                      : send "*s<cr>"
  164.     wait -f20
  165.     if !1 put "*s\r" wait -f20
  166.     if !1 goto doubtful
  167.     : put "set 1\r"
  168.     goto goodret
  169.  
  170. goodret:
  171.         if !dv "!%mv %1 Z%1.tmp" : ren original to Z*.tmp
  172.         if dv "!%rename %1 Z%1.tmp"
  173.     echof ""
  174.         echoc "MSGUP:  Message %1 transmitted."    : record successful transmission
  175.         return
  176. failed:
  177.     echof ""
  178.     echoc "MSGUP:  Could not find RoundTable BBS."
  179.     goto badret
  180. closed:
  181.     echof ""
  182.     echoc "MSGUP:  Category %s0 topic %s1 is closed.  Cannot reply."
  183.         goto badret
  184. nosuchtop:
  185.     echof ""
  186.     echoc "MSGUP:  Category %s0 has no topic %s1.  Cannot reply."
  187.         goto badret
  188. nosuchcat:
  189.     echof ""
  190.     echoc "MSGUP:  Category %s0 is not available.  Cannot reply."
  191.     goto badret
  192. nullmsg:
  193.     echof ""
  194.     echoc "MSGUP:  Message null, not sent."
  195.     goto badret
  196. nocat:
  197.     echof ""
  198.     echoc "MSGUP:  Could not set category %s0."
  199.     goto badret
  200. noreply:
  201.     echof ""
  202.     echoc "MSGUP:  Did not receive Reply prompt."
  203.         goto badret
  204. nonumber:
  205.     echof ""
  206.     echoc "MSGUP:  Category or topic not nonzero."
  207.     goto badret
  208.  
  209. ::Reach here if something went wrong.  Rename file to Y*.tmp.
  210. :: Send a "set 1" for good measure and return.
  211. badret:
  212.     if !dv "!%mv %1 Y%1.tmp"
  213.     if dv "!%rename %1 Y%1.tmp"
  214.     goto restore
  215.  
  216. ::Reach here if we thought we sent the message OK but GEnie didn't seem
  217. :: notice.  Rename to W*.tmp
  218. doubtful:
  219.     echof ""
  220.     echoc "MSGUP:  Message may or may not have been entered"
  221.     if !dv "!%mv %1 W%1.tmp"
  222.     if dv "!%rename %1 W%1.tmp"
  223.     goto restore
  224.  
  225. restore:
  226.     pattern
  227.     pattern 1 "%pr"
  228.         while !1&&L<2 put "\r" wait -f20
  229.     pattern 1 "1 %pr"
  230.     closetx
  231.         return
  232.