home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD2.bin / bbs / comm / ems-1.0.lha / EMS / Rexx / DMreply.ems < prev    next >
Text File  |  1993-08-30  |  45KB  |  1,591 lines

  1. /***************/
  2. /* DMreply.ems */
  3. /**********************/
  4. /* Commands:          */
  5. /*                    */
  6. /* EDIT             1 */
  7. /* EDIT_FILE        2 */
  8. /* WRITE            3 */
  9. /* WRITE_FILE       4 */
  10. /* REPLY            5 */
  11. /* REPLY_FORWARD    6 */
  12. /* REPLY_MULTISEND  7 */
  13. /* FORWARD          8 */
  14. /* MULTISEND        9 */
  15. /* RESEND          10 */
  16. /* ARCHIVE         11 */
  17. /* CONFIG          12 */
  18. /*                    */
  19. /* ASK                */
  20. /**********************/
  21. /* Arguments        */
  22. /*                  */
  23. /* NO_REQS          */
  24. /* CARBON_COPY      */
  25. /* REPLY_KLUDGES    */
  26. /* CHOOSE_OPENING   */
  27. /* CHOOSE_COD       */
  28. /* CHOOSE_SIGNATURE */
  29. /* CHOOSE_ORIGIN    */
  30. /**************************************/
  31. /* $VER: DMreply.ems 1.0 (29.08.93)   */
  32. /**************************************/
  33.  
  34. script_name    = 'DMreply'
  35. script_version = 'v1.0'
  36.  
  37.  
  38. options results
  39. signal on error
  40. signal on syntax
  41.  
  42. parse arg session_number src_area msg_num cmd_name cmd_args
  43.  
  44.  
  45. cmd_args = strip( cmd_args, 'B' )
  46.  
  47. if( ~show( 'l', "rexxsupport.library" ) ) then
  48. do
  49.    if( ~addlib( "rexxsupport.library", 0, -30, 0 ) )then
  50.    do
  51.       say "Could not open rexxsupport.library"
  52.       exit 10
  53.    end
  54. end
  55.  
  56. if( ~show( 'l', "ems_rexx.library" ) ) then
  57. do
  58.    if( ~addlib( "ems_rexx.library", 0, -30, 0 ) )then
  59.    do
  60.       say "Could not open ems_rexx.library"
  61.       exit 10
  62.    end
  63. end
  64.  
  65. if datatype( session_number, 'N' ) ~= 1  then signal Usage
  66. if datatype( msg_num       , 'N' ) ~= 1  then signal Usage
  67. if           src_area               = '' then signal Usage
  68.  
  69.  
  70. reply_cfg.         = ''
  71. dst_areas.0        = 0
  72. carbon_copy_name.0 = 0
  73. carbon_copy_addr.0 = 0
  74.  
  75. /*
  76. ** Search for areas of type MAIL
  77. */
  78. call EMS_Areas_Mail( 'areas_mail' )
  79.  
  80.  
  81.  
  82. cmd_num = ParseCommand( src_area, cmd_name, cmd_args )
  83.  
  84. if cmd_num = 0 then signal ScriptExit
  85.  
  86.  
  87. mask = Local_Cfg_Get( 'Cmd_AskAreas' )
  88.  
  89. if mask = 0 then
  90. do
  91.  
  92.    call EMS_Add_To_Stem( 'dst_areas', src_area )
  93.  
  94. end
  95.  
  96. if mask = 1 then
  97. do
  98.  
  99.    if EMS_Area_Select( 'area' ) = 'OK' then call EMS_Add_To_Stem( 'dst_areas', area )
  100.  
  101. end
  102.  
  103. if mask = 2 then
  104. do
  105.  
  106.    area = ''
  107.  
  108.    do while EMS_Area_Select( 'area' ) = 'OK'
  109.  
  110.       call EMS_Add_To_Stem( 'dst_areas', area ); area = ''
  111.  
  112.    end
  113.  
  114. end
  115.  
  116.  
  117. if Local_Cfg_GetBit( 'Cmd_Actions', 'Carbon_Copy' ) = 'TRUE' then
  118. do
  119.  
  120.    addr = ''
  121.  
  122.    do while EMS_User_Select( 'name', 'addr' ) = 'OK'
  123.  
  124.       call EMS_Add_To_Stem( 'carbon_copy_name', name )
  125.       call EMS_Add_To_Stem( 'carbon_copy_addr', addr )
  126.  
  127.       addr = ''
  128.  
  129.    end
  130.  
  131. end
  132.  
  133.  
  134. /* No areas where to write. */
  135. if dst_areas.0 = 0 then signal ScriptExit
  136.  
  137.  
  138. if cmd_num = 12 then /* CONFIG */
  139. do
  140.  
  141.    if Local_Cfg_GetBit( 'Cmd_Actions', 'Insert_Opening' ) = 'TRUE' then
  142.    do
  143.       call ChooseOpening( src_area, 'TRUE' )
  144.  
  145.       if Local_Cfg_Get( 'Req_Failed' ) = 'TRUE' then signal ScriptExit
  146.    end
  147.  
  148.    if Local_Cfg_GetBit( 'Cmd_Actions', 'Insert_Signature' ) = 'TRUE' then
  149.    do
  150.       call ChooseSignature( src_area, 'TRUE' )
  151.  
  152.       if Local_Cfg_Get( 'Req_Failed' ) = 'TRUE' then signal ScriptExit
  153.    end
  154.  
  155.    if Local_Cfg_GetBit( 'Cmd_Actions', 'Insert_COD' ) = 'TRUE' then
  156.    do
  157.       call ChooseCOD( src_area, 'TRUE' )
  158.  
  159.       if Local_Cfg_Get( 'Req_Failed' ) = 'TRUE' then signal ScriptExit
  160.    end
  161.  
  162.    call Global_Cfg_Set( src_area, 'ReplyKludges'    , Local_Cfg_Get( 'Cfg_ReplyKludges'     ) )
  163.    call Global_Cfg_Set( src_area, 'Opening'         , Local_Cfg_Get( 'Cfg_Opening'          ) )
  164.    call Global_Cfg_Set( src_area, 'Signature'       , Local_Cfg_Get( 'Cfg_Signature'        ) )
  165.    call Global_Cfg_Set( src_area, 'COD'             , Local_Cfg_Get( 'Cfg_COD'              ) )
  166.    call Global_Cfg_Set( src_area, 'ChooseOpening'   , Local_Cfg_Get( 'Cfg_ChooseOpening'    ) )
  167.    call Global_Cfg_Set( src_area, 'ChooseSignature' , Local_Cfg_Get( 'Cfg_ChooseSignature'  ) )
  168.    call Global_Cfg_Set( src_area, 'ChooseCOD'       , Local_Cfg_Get( 'Cfg_ChooseCOD'        ) )
  169.    call Global_Cfg_Set( src_area, 'ChooseOrigin'    , Local_Cfg_Get( 'Cfg_ChooseOrigin'     ) )
  170.    call Global_Cfg_Set( src_area, 'NoDomainInOrigin', Local_Cfg_Get( 'Cfg_NoDomainInOrigin' ) )
  171.  
  172.    signal ScriptExit
  173.  
  174. end
  175.  
  176.  
  177. file = EMS_Var_Local( 'SCRIPT_MSG_FILE' )
  178. if session_number ~= 0 then file = file || session_number
  179.  
  180. call Local_Cfg_Set( 'Msg_File'  , file                          )
  181. call Local_Cfg_Set( 'Sysop_Name', EMS_Var_Local( 'SYSOP_NAME' ) )
  182.  
  183.  
  184. if Local_Cfg_GetBit( 'Cmd_Actions', 'Read_Old_Msg' ) = 'FALSE' then msg_num = 0
  185.  
  186.  
  187. /*
  188. ** Read the message to act on.
  189. */
  190. sel = ''
  191.  
  192. if cmd_num = 2 | cmd_num = 4 then
  193. do
  194.  
  195.    if EMS_Area_File_DBname( src_area ) ~= '' then sel = 'FILE'
  196.  
  197. end
  198. else
  199. do
  200.  
  201.    if EMS_Area_Msg_DBname( src_area ) ~= '' then sel = 'MSG'
  202.  
  203. end
  204.  
  205. if sel = '' then
  206. do
  207.  
  208.    call EMS_Do_Request( "Can't exec requested command (wrong database)!" )
  209.  
  210.    signal ScriptExit
  211.  
  212. end
  213.  
  214. if msg_num ~= 0 then call EMS_Item_Alloc( 'reply_msg', src_area, sel, msg_num )
  215.                 else call EMS_Item_Alloc( 'reply_msg', src_area, sel          )
  216.  
  217. call Local_Cfg_Set( 'Header_From'     , EMS_Item_Header_From(         'reply_msg' ) )
  218. call Local_Cfg_Set( 'Header_To'       , EMS_Item_Header_To(           'reply_msg' ) )
  219. call Local_Cfg_Set( 'Header_Subject'  , EMS_Item_Header_Subject(      'reply_msg' ) )
  220. call Local_Cfg_Set( 'Header_Date'     , EMS_Item_Header_Date_Created( 'reply_msg' ) )
  221. call Local_Cfg_Set( 'Header_Addr_From', EMS_Item_Header_Address_From( 'reply_msg' ) )
  222. call Local_Cfg_Set( 'Header_Addr_To'  , EMS_Item_Header_Address_To(   'reply_msg' ) )
  223.  
  224.  
  225. area_name = dst_areas.1
  226.  
  227. call DeleteMsgFile( file )
  228.  
  229.  
  230. if cmd_num = 11 then /* ARCHIVE */
  231. do
  232.  
  233.    mode.0 = 4
  234.    mode.1 = 'Default'
  235.    mode.2 = 'File (APPEND)'
  236.    mode.3 = 'File (OVERWRITE)'
  237.    mode.4 = 'Printer'
  238.  
  239.    sel = 1
  240.    res = EMS_Do_Choice_Single( 'Archive Message As', 'mode', 'sel' )
  241.  
  242.    if res ~= 'OK' then signal ScriptExit
  243.  
  244.    textDir = EMS_Var_Local( 'SCRIPT_TEXT_DIR' ); if textDir = '' then textDir = 'EMS:'
  245.  
  246.    arcfile = ''
  247.  
  248.    if sel = 4 then arcfile = 'prt:'
  249.  
  250.    if sel = 2 | sel = 3 then
  251.    do
  252.  
  253.       arcfile = textDir
  254.  
  255.       saved_CD = PRAGMA( 'D' )
  256.  
  257.       call PRAGMA( 'D', textDir )
  258.  
  259.       res = EMS_File_Select( 'Select Archive File', 'arcfile' )
  260.  
  261.       call PRAGMA( 'D', saved_CD )
  262.  
  263.       if res ~= 'OK' then signal ScriptExit
  264.  
  265.       if arcfile = '' then sel = 1
  266.  
  267.    end
  268.  
  269.    if arcfile = '' then arcfile = textDir || src_area || '.txt'
  270.  
  271.    if sel = 3 | sel = 4 then file_mode = 'WRITE'
  272.                         else file_mode = 'APPEND'
  273.  
  274.    if file_mode = 'APPEND' & exists( arcfile ) ~= 1 then file_mode = 'WRITE'
  275.  
  276.    if open( 'tempname', arcfile, file_mode ) ~= 1 then
  277.    do
  278.       say "| Can't open '" || arcfile || "' file for output."
  279.       call ScriptExit
  280.    end
  281.  
  282.    from    = overlay( EMS_Item_Header_From(         'reply_msg' ), '                                   ' )
  283.    addfrom =          EMS_Item_Header_Address_From( 'reply_msg'                                          )
  284.    to      = overlay( EMS_Item_Header_To(           'reply_msg' ), '                                   ' )
  285.    addto   =          EMS_Item_Header_Address_To(   'reply_msg'                                          )
  286.    subject =          EMS_Item_Header_Subject(      'reply_msg'                                          )
  287.    date    = overlay( EMS_Item_Header_Date_Created( 'reply_msg' ), '                                   ' )
  288.  
  289.    call writeln( 'tempname', " "                                                                       )
  290.    call writeln( 'tempname', "-------------------------- Archived Message ---------------------------" )
  291.    call writeln( 'tempname', "From   :" || from    || ' at '     || addfrom                            )
  292.    call writeln( 'tempname', "To     :" || to      || ' at '     || addto                              )
  293.    call writeln( 'tempname', "Subject:" || subject                                                     )
  294.    call writeln( 'tempname', "Date   :" || date    || ' Area : ' || src_area                           )
  295.    call writeln( 'tempname', "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -" )
  296.    call close(   'tempname'                                                                                          )
  297.  
  298.    call EMS_Item_File_Write( 'reply_msg', 'text', arc