home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-08-30 | 43.7 KB | 1,591 lines |
- /***************/
- /* DMreply.ems */
- /**********************/
- /* Commands: */
- /* */
- /* EDIT 1 */
- /* EDIT_FILE 2 */
- /* WRITE 3 */
- /* WRITE_FILE 4 */
- /* REPLY 5 */
- /* REPLY_FORWARD 6 */
- /* REPLY_MULTISEND 7 */
- /* FORWARD 8 */
- /* MULTISEND 9 */
- /* RESEND 10 */
- /* ARCHIVE 11 */
- /* CONFIG 12 */
- /* */
- /* ASK */
- /**********************/
- /* Arguments */
- /* */
- /* NO_REQS */
- /* CARBON_COPY */
- /* REPLY_KLUDGES */
- /* CHOOSE_OPENING */
- /* CHOOSE_COD */
- /* CHOOSE_SIGNATURE */
- /* CHOOSE_ORIGIN */
- /**************************************/
- /* $VER: DMreply.ems 1.0 (29.08.93) */
- /**************************************/
-
- script_name = 'DMreply'
- script_version = 'v1.0'
-
-
- options results
- signal on error
- signal on syntax
-
- parse arg session_number src_area msg_num cmd_name cmd_args
-
-
- cmd_args = strip( cmd_args, 'B' )
-
- if( ~show( 'l', "rexxsupport.library" ) ) then
- do
- if( ~addlib( "rexxsupport.library", 0, -30, 0 ) )then
- do
- say "Could not open rexxsupport.library"
- exit 10
- end
- end
-
- if( ~show( 'l', "ems_rexx.library" ) ) then
- do
- if( ~addlib( "ems_rexx.library", 0, -30, 0 ) )then
- do
- say "Could not open ems_rexx.library"
- exit 10
- end
- end
-
- if datatype( session_number, 'N' ) ~= 1 then signal Usage
- if datatype( msg_num , 'N' ) ~= 1 then signal Usage
- if src_area = '' then signal Usage
-
-
- reply_cfg. = ''
- dst_areas.0 = 0
- carbon_copy_name.0 = 0
- carbon_copy_addr.0 = 0
-
- /*
- ** Search for areas of type MAIL
- */
- call EMS_Areas_Mail( 'areas_mail' )
-
-
-
- cmd_num = ParseCommand( src_area, cmd_name, cmd_args )
-
- if cmd_num = 0 then signal ScriptExit
-
-
- mask = Local_Cfg_Get( 'Cmd_AskAreas' )
-
- if mask = 0 then
- do
-
- call EMS_Add_To_Stem( 'dst_areas', src_area )
-
- end
-
- if mask = 1 then
- do
-
- if EMS_Area_Select( 'area' ) = 'OK' then call EMS_Add_To_Stem( 'dst_areas', area )
-
- end
-
- if mask = 2 then
- do
-
- area = ''
-
- do while EMS_Area_Select( 'area' ) = 'OK'
-
- call EMS_Add_To_Stem( 'dst_areas', area ); area = ''
-
- end
-
- end
-
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Carbon_Copy' ) = 'TRUE' then
- do
-
- addr = ''
-
- do while EMS_User_Select( 'name', 'addr' ) = 'OK'
-
- call EMS_Add_To_Stem( 'carbon_copy_name', name )
- call EMS_Add_To_Stem( 'carbon_copy_addr', addr )
-
- addr = ''
-
- end
-
- end
-
-
- /* No areas where to write. */
- if dst_areas.0 = 0 then signal ScriptExit
-
-
- if cmd_num = 12 then /* CONFIG */
- do
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Insert_Opening' ) = 'TRUE' then
- do
- call ChooseOpening( src_area, 'TRUE' )
-
- if Local_Cfg_Get( 'Req_Failed' ) = 'TRUE' then signal ScriptExit
- end
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Insert_Signature' ) = 'TRUE' then
- do
- call ChooseSignature( src_area, 'TRUE' )
-
- if Local_Cfg_Get( 'Req_Failed' ) = 'TRUE' then signal ScriptExit
- end
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Insert_COD' ) = 'TRUE' then
- do
- call ChooseCOD( src_area, 'TRUE' )
-
- if Local_Cfg_Get( 'Req_Failed' ) = 'TRUE' then signal ScriptExit
- end
-
- call Global_Cfg_Set( src_area, 'ReplyKludges' , Local_Cfg_Get( 'Cfg_ReplyKludges' ) )
- call Global_Cfg_Set( src_area, 'Opening' , Local_Cfg_Get( 'Cfg_Opening' ) )
- call Global_Cfg_Set( src_area, 'Signature' , Local_Cfg_Get( 'Cfg_Signature' ) )
- call Global_Cfg_Set( src_area, 'COD' , Local_Cfg_Get( 'Cfg_COD' ) )
- call Global_Cfg_Set( src_area, 'ChooseOpening' , Local_Cfg_Get( 'Cfg_ChooseOpening' ) )
- call Global_Cfg_Set( src_area, 'ChooseSignature' , Local_Cfg_Get( 'Cfg_ChooseSignature' ) )
- call Global_Cfg_Set( src_area, 'ChooseCOD' , Local_Cfg_Get( 'Cfg_ChooseCOD' ) )
- call Global_Cfg_Set( src_area, 'ChooseOrigin' , Local_Cfg_Get( 'Cfg_ChooseOrigin' ) )
- call Global_Cfg_Set( src_area, 'NoDomainInOrigin', Local_Cfg_Get( 'Cfg_NoDomainInOrigin' ) )
-
- signal ScriptExit
-
- end
-
-
- file = EMS_Var_Local( 'SCRIPT_MSG_FILE' )
- if session_number ~= 0 then file = file || session_number
-
- call Local_Cfg_Set( 'Msg_File' , file )
- call Local_Cfg_Set( 'Sysop_Name', EMS_Var_Local( 'SYSOP_NAME' ) )
-
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Read_Old_Msg' ) = 'FALSE' then msg_num = 0
-
-
- /*
- ** Read the message to act on.
- */
- sel = ''
-
- if cmd_num = 2 | cmd_num = 4 then
- do
-
- if EMS_Area_File_DBname( src_area ) ~= '' then sel = 'FILE'
-
- end
- else
- do
-
- if EMS_Area_Msg_DBname( src_area ) ~= '' then sel = 'MSG'
-
- end
-
- if sel = '' then
- do
-
- call EMS_Do_Request( "Can't exec requested command (wrong database)!" )
-
- signal ScriptExit
-
- end
-
- if msg_num ~= 0 then call EMS_Item_Alloc( 'reply_msg', src_area, sel, msg_num )
- else call EMS_Item_Alloc( 'reply_msg', src_area, sel )
-
- call Local_Cfg_Set( 'Header_From' , EMS_Item_Header_From( 'reply_msg' ) )
- call Local_Cfg_Set( 'Header_To' , EMS_Item_Header_To( 'reply_msg' ) )
- call Local_Cfg_Set( 'Header_Subject' , EMS_Item_Header_Subject( 'reply_msg' ) )
- call Local_Cfg_Set( 'Header_Date' , EMS_Item_Header_Date_Created( 'reply_msg' ) )
- call Local_Cfg_Set( 'Header_Addr_From', EMS_Item_Header_Address_From( 'reply_msg' ) )
- call Local_Cfg_Set( 'Header_Addr_To' , EMS_Item_Header_Address_To( 'reply_msg' ) )
-
-
- area_name = dst_areas.1
-
- call DeleteMsgFile( file )
-
-
- if cmd_num = 11 then /* ARCHIVE */
- do
-
- mode.0 = 4
- mode.1 = 'Default'
- mode.2 = 'File (APPEND)'
- mode.3 = 'File (OVERWRITE)'
- mode.4 = 'Printer'
-
- sel = 1
- res = EMS_Do_Choice_Single( 'Archive Message As', 'mode', 'sel' )
-
- if res ~= 'OK' then signal ScriptExit
-
- textDir = EMS_Var_Local( 'SCRIPT_TEXT_DIR' ); if textDir = '' then textDir = 'EMS:'
-
- arcfile = ''
-
- if sel = 4 then arcfile = 'prt:'
-
- if sel = 2 | sel = 3 then
- do
-
- arcfile = textDir
-
- saved_CD = PRAGMA( 'D' )
-
- call PRAGMA( 'D', textDir )
-
- res = EMS_File_Select( 'Select Archive File', 'arcfile' )
-
- call PRAGMA( 'D', saved_CD )
-
- if res ~= 'OK' then signal ScriptExit
-
- if arcfile = '' then sel = 1
-
- end
-
- if arcfile = '' then arcfile = textDir || src_area || '.txt'
-
- if sel = 3 | sel = 4 then file_mode = 'WRITE'
- else file_mode = 'APPEND'
-
- if file_mode = 'APPEND' & exists( arcfile ) ~= 1 then file_mode = 'WRITE'
-
- if open( 'tempname', arcfile, file_mode ) ~= 1 then
- do
- say "| Can't open '" || arcfile || "' file for output."
- call ScriptExit
- end
-
- from = overlay( EMS_Item_Header_From( 'reply_msg' ), ' ' )
- addfrom = EMS_Item_Header_Address_From( 'reply_msg' )
- to = overlay( EMS_Item_Header_To( 'reply_msg' ), ' ' )
- addto = EMS_Item_Header_Address_To( 'reply_msg' )
- subject = EMS_Item_Header_Subject( 'reply_msg' )
- date = overlay( EMS_Item_Header_Date_Created( 'reply_msg' ), ' ' )
-
- call writeln( 'tempname', " " )
- call writeln( 'tempname', "-------------------------- Archived Message ---------------------------" )
- call writeln( 'tempname', "From :" || from || ' at ' || addfrom )
- call writeln( 'tempname', "To :" || to || ' at ' || addto )
- call writeln( 'tempname', "Subject:" || subject )
- call writeln( 'tempname', "Date :" || date || ' Area : ' || src_area )
- call writeln( 'tempname', "- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -" )
- call close( 'tempname' )
-
- call EMS_Item_File_Write( 'reply_msg', 'text', arcfile, 'APPEND' )
-
- signal ScriptExit
-
- end
-
-
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Insert_Opening' ) = 'TRUE' then call InsertOpening( file, area_name )
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Quote_Text' ) = 'TRUE' then
- do
-
- /*
- ** Get first letter of name and firstname.
- */
- from = Local_Cfg_Get( 'Header_From' )
- Quoting = substr( from, 1, 1 )
-
- if word( from, 2 ) = '' then Quoting = Quoting || substr( from, 2 , 1 )
- else Quoting = Quoting || substr( word( from, 2 ), 1, 1 )
-
- if Local_Cfg_Get( 'Cfg_ReplyKludges' ) = 'TRUE' then format_mode = 'TEARORIGIN SEENBYPATH OTHERKLUDGES'
- else format_mode = ''
-
- call EMS_Item_Lines_Format( 'reply_msg', Quoting || '>', 75, format_mode )
-
- end
-
-
- call EMS_Item_File_Write( 'reply_msg', 'text', file, 'APPEND' )
-
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Insert_Signature' ) = 'TRUE' then call InsertSignature( file, area_name )
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Insert_COD' ) = 'TRUE' then call InsertCOD( file, area_name )
-
-
- mode = Local_Cfg_Get( 'Cmd_Header' )
- if mode = 2 then
- do
-
- call BuildREPLY( 'reply_msg' )
-
- end
- else
- do
-
- res = Local_Cfg_GetBit( 'Cmd_Actions', 'Reduce_Kludges' )
-
- if res = 'TRUE' then call ReduceKludges( 'reply_msg' )
- else call EMS_Item_Lines_Delete( 'reply_msg', 'header' )
-
- end
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Reset_FATT' ) = 'TRUE' then
- do
-
- call EMS_Item_Header_Flag( 'reply_msg', 'FATT', 'OFF' )
-
- end
-
- do i=1 to dst_areas.0
-
- area_name = dst_areas.i
-
- call EMS_Item_Area( 'reply_msg', area_name )
-
- /*
- ** Get infos about the message area.
- */
- call Local_Cfg_Set( 'Area_Name', area_name )
- call Local_Cfg_Set( 'Area_Type', upper( EMS_Area_Type( area_name ) ) )
- call Local_Cfg_Set( 'Area_Addr', EMS_Area_Address( area_name ) )
-
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Reset_Msg_Number' ) = 'TRUE' then call EMS_Item_Number( 'reply_msg', 0 )
-
-
- header = Local_Cfg_Get( 'Cmd_Header' )
-
- if header = 1 then
- do
- call EMS_Item_Header_From( 'reply_msg', Local_Cfg_Get( 'Sysop_Name' ) )
- call EMS_Item_Header_Address_From( 'reply_msg', Local_Cfg_Get( 'Area_Addr' ) )
- call EMS_Item_Header_Address_To( 'reply_msg', '' )
-
- end
-
- if header = 2 then
- do
-
- subject = Local_Cfg_Get( 'Header_Subject' )
-
- if upper( left( subject, 3 ) ) ~= 'RE:' then subject = 'Re:' subject
-
- addr_to = Local_Cfg_Get( 'Header_Addr_From' )
- addr_area = Local_Cfg_Get( 'Area_Addr' )
-
- if Local_Cfg_Get( 'Area_Type' ) ~= 'MAIL' & EMS_Address_IsFIDO( addr_area ) = 'TRUE' then addr_from = addr_area
- else addr_from = EMS_Aka_Nearer( addr_to )
-
- call EMS_Item_Header_From( 'reply_msg', Local_Cfg_Get( 'Sysop_Name' ) )
- call EMS_Item_Header_To( 'reply_msg', Local_Cfg_Get( 'Header_From' ) )
- call EMS_Item_Header_Subject( 'reply_msg', subject )
- call EMS_Item_Header_Address_From( 'reply_msg', addr_from )
- call EMS_Item_Header_Address_To( 'reply_msg', addr_to )
-
- end
-
- dump.0 = 0
-
- call EMS_Item_SeenBy_Set( 'reply_msg', 'dump' )
- call EMS_Item_Path_Set( 'reply_msg', 'dump' )
- call EMS_Item_Header_Flag( 'reply_msg', 'SENT', 'OFF' )
-
- if Local_Cfg_Get( 'Area_Type' ) = 'MAIL' then
- do
-
- call EMS_Item_Header_Flag( 'reply_msg', 'PVT', 'ON' )
-
- end
- else
- do
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Insert_Origin' ) = 'TRUE' then call InsertOrigin( 'reply_msg', area_name )
-
- end
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Call_Editor' ) = 'TRUE' then
- do
-
- cmd_pre = EMS_Var_Local( 'SCRIPT_EDITOR_NAME' )
- cmd_post = EMS_Var_Local( 'SCRIPT_EDITOR_ARGS' )
-
- select
- when cmd_num = 1 then do; title = "Edit a Message" ; mode = "" ; end
- when cmd_num = 2 then do; title = "Edit a File" ; mode = "" ; end
- when cmd_num = 3 then do; title = "Write a Message" ; mode = "" ; end
- when cmd_num = 4 then do; title = "Upload a File" ; mode = "" ; end
- when cmd_num = 5 then do; title = "Reply to a Message" ; mode = "NOACTIVE" ; end
- when cmd_num = 6 then do; title = "Reply&Forward a Message" ; mode = "NOACTIVE" ; end
- when cmd_num = 7 then do; title = "Reply&MultiSend a Message"; mode = "NOACTIVE" ; end
- when cmd_num = 8 then do; title = "Forward a Message" ; mode = "NOACTIVE NOEDIT"; end
- when cmd_num = 9 then do; title = "Multisend a Message" ; mode = "" ; end
- otherwise do; title = "" ; mode = "" ; end
- end
-
- if title ~= '' then
- do
-
- req_res = EMS_Item_Header_Edit( 'reply_msg', title, mode, cmd_pre file cmd_post )
-
- if req_res ~= 'OK' then call ScriptExit
-
- end
-
- call Local_Cfg_SetBit( 'Cmd_Actions', 'Call_Editor', 'FALSE' )
-
- end
-
- if Local_Cfg_Get( 'Cfg_NoDomainInOrigin' ) = 'TRUE' then call AdjustOrigin( 'reply_msg' )
-
- if exists( file ) then call EMS_Item_File_Read( 'reply_msg', 'text', file )
- else call EMS_Item_Lines_Delete( 'reply_msg', 'text' )
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Forward_Banner' ) = 'TRUE' then
- do
-
- line.1 = ' * Forwarded by' Local_Cfg_Get( 'Sysop_Name' ) 'on' Local_Cfg_Get( 'Area_Addr' )
- line.2 = ' * Subj :' Local_Cfg_Set( 'Header_Subject' )
- line.3 = ' * To :' Local_Cfg_Set( 'Header_To' ) || ',' Local_Cfg_Get( 'Header_Addr_To' )
- line.4 = ' * From :' Local_Cfg_Set( 'Header_From' ) || ',' Local_Cfg_Get( 'Header_Addr_From' )
- line.5 = ' * Area :' src_area
- line.6 = ''
- line.0 = 6
-
- do j=line.0 to 1 by -1
-
- call EMS_Item_Line_Add_Head( 'reply_msg', 'text', line.j )
-
- end
-
- end
-
- /*
- ** Make sure there's an origin for an ECHO message.
- */
- if upper( EMS_Area_Type( area_name ) ) ~= 'MAIL' then
- do
-
- call EMS_Item_Lines_Get( 'reply_msg', 'header', 'lines' )
-
- if EMS_Search_In_Stem( 'lines', ' * Origin: #?' ) = 0 then call InsertOrigin( 'reply_msg', area_name )
-
- end
- /*
- ** and no origin nor tearline for a MAIL message.
- */
- else
- do
-
- call EMS_Item_Lines_Get( 'reply_msg', 'header', 'lines' )
-
- orig_pos = EMS_Search_In_Stem( 'lines', ' * Origin: #?' )
- tear_pos = EMS_Search_In_Stem( 'lines', '--- #?' )
-
- if orig_pos ~= 0 | tear_pos ~= 0 then
- do
-
- new_lines.0 = 0
-
- do j=1 to lines.0
-
- if j = orig_pos then iterate
- if j = tear_pos then iterate
-
- call EMS_Add_To_Stem( 'new_lines', lines.j )
-
- end
-
- call EMS_Item_Lines_Set( 'reply_msg', 'header', 'new_lines' )
-
- drop new_lines.
-
- end
-
- drop lines.
-
- end
-
- call EMS_Item_Write( 'reply_msg' )
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Move_Down_HWM' ) = 'TRUE' then
- do
-
- old_hwm = EMS_Area_HiMark( area_name )
- new_hwm = EMS_Item_Number( 'reply_msg' ) - 1
-
- if old_hwm > new_hwm then call EMS_Area_HiMark( area_name, new_hwm )
-
- end
-
- end
-
- call Local_Cfg_Set( 'Header_From' , EMS_Item_Header_From( 'reply_msg' ) )
- call Local_Cfg_Set( 'Header_To' , EMS_Item_Header_To( 'reply_msg' ) )
- call Local_Cfg_Set( 'Header_Subject' , EMS_Item_Header_Subject( 'reply_msg' ) )
- call Local_Cfg_Set( 'Header_Date' , EMS_Item_Header_Date_Created( 'reply_msg' ) )
- call Local_Cfg_Set( 'Header_Addr_From', EMS_Item_Header_Address_From( 'reply_msg' ) )
- call Local_Cfg_Set( 'Header_Addr_To' , EMS_Item_Header_Address_To( 'reply_msg' ) )
-
- /***************************************************/
- /* Build CC: lines (originally from Bernd Ernesti) */
- /***************************************************/
- line_pre = ''
- line_cc.0 = 0
-
- do i=1 to carbon_copy_name.0
-
- if i == carbon_copy_name.0 then line_end = ''
- else line_end = ','
-
- line_post = line_pre || carbon_copy_name.i || line_end
-
- if LENGTH( line_post ) > 70 then
- do
-
- call EMS_Add_To_Stem( 'line_cc', ' CC:' line_pre )
-
- line_post = carbon_copy_name.i || line_end
-
- end
-
- line_pre = line_post
-
- end
-
- if line_pre ~= '' then call EMS_Add_To_Stem( 'line_cc', ' CC:' line_pre )
-
-
- /*
- ** Do CARBON COPY only if there's at least one MAIL area.
- */
- if areas_mail.0 > 0 then
- do
-
- do i=1 to carbon_copy_name.0
-
- cc_name = carbon_copy_name.i
- cc_addr = carbon_copy_addr.i
-
- /*
- ** Search nearer MAIL area.
- */
- cc_aka_nearer = EMS_Aka_Nearer( cc_addr )
- cc_area = areas_mail.1
- do j=1 to areas_mail.0
-
- if EMS_Address_Compare( cc_aka_nearer, EMS_Area_Address( areas_mail.j ) ) = 'TRUE' then
- do
- cc_area = areas_mail.j
- leave
- end
-
- end
-
- /*
- ** Get infos about the message area.
- */
- call Local_Cfg_Set( 'Area_Name', cc_area )
- call Local_Cfg_Set( 'Area_Type', 'MAIL' )
- call Local_Cfg_Set( 'Area_Addr', EMS_Area_Address( cc_area ) )
-
-
- dump.0 = 0
-
- call EMS_Item_Area( 'reply_msg', cc_area )
- call EMS_Item_Header_From( 'reply_msg', Local_Cfg_Get( 'Sysop_Name' ) )
- call EMS_Item_Header_To( 'reply_msg', cc_name )
- call EMS_Item_Header_Address_From( 'reply_msg', EMS_Aka_Nearer( cc_addr ) )
- call EMS_Item_Header_Address_To( 'reply_msg', cc_addr )
-
- call EMS_Item_SeenBy_Set( 'reply_msg', 'dump' )
- call EMS_Item_Path_Set( 'reply_msg', 'dump' )
- call EMS_Item_Header_Flag( 'reply_msg', 'SENT', 'OFF' )
- call EMS_Item_Header_Flag( 'reply_msg', 'PVT' , 'ON' )
-
-
- if exists( file ) then call EMS_Item_File_Read( 'reply_msg', 'text', file )
- else call EMS_Item_Lines_Delete( 'reply_msg', 'text' )
-
- if upper( EMS_Area_Type( area_name ) ) ~= 'MAIL' then
- do
-
- line.1 = ' * Carbon Copy by' Local_Cfg_Get( 'Sysop_Name' ) 'on' Local_Cfg_Get( 'Area_Addr' )
- line.2 = ' * Subj :' Local_Cfg_Get( 'Header_Subject' )
- line.3 = ' * To :' Local_Cfg_Get( 'Header_To' ) || ',' Local_Cfg_Get( 'Header_Addr_To' )
- line.4 = ' * From :' Local_Cfg_Get( 'Header_From' ) || ',' Local_Cfg_Get( 'Header_Addr_From' )
- line.5 = ' * Area :' dst_areas.1
- line.6 = ''
- line.0 = 6
-
- do j=line.0 to 1 by -1
-
- call EMS_Item_Line_Add_Head( 'reply_msg', 'text', line.j )
-
- end
-
- end
-
- if line_cc.0 > 0 then
- do
-
- call EMS_Item_Line_Add_Head( 'reply_msg', 'text', '' )
-
- /* CC: lines */
- do j=line_cc.0 to 1 by -1
-
- call EMS_Item_Line_Add_Head( 'reply_msg', 'text', line_cc.j )
-
- end
-
- end
-
- call EMS_Item_Number( 'reply_msg', 0 )
- call EMS_Item_Write( 'reply_msg' )
-
- end
-
- end
-
- call DeleteMsgFile( file )
-
- call EMS_Item_Free( 'reply_msg' )
-
-
- /*************************************************************/
- ScriptExit:
-
- call EMS_FreeScriptData()
- exit 0
-
-
- /*************************************************************/
- Usage:
-
- say 'Usage:' script_name'.ems <session number> <source area name> <message num> [HELP|<command name>] [option ...]'
- signal ScriptExit
-
-
- /*************************************************************/
- error:
- syntax:
-
- error_text = EMS_LastError()
-
- if error_text = '' then error_text = rc ErrorText( rc )
-
- say '| ***BREAK: error at' sigl error_text
-
- call EMS_FreeScriptData()
- exit rc
-
-
-
- InsertOpening: procedure EXPOSE reply_cfg.
-
- parse arg file_name , area_name
-
- language = ChooseOpening( area_name, Local_Cfg_Get( 'Cfg_ChooseOpening' ) )
-
- if language = '' then return 0
-
- call EMS_CustomCfg_Get( 'DMreply_Openings', language, 'Lines', 'a' )
-
- from = Local_Cfg_Get( 'Header_From' )
- from_first = strip( word( from, 1 ), 'B' )
-
- modifiers.1 = 'from_first'; data.1 = from_first
- modifiers.2 = 'from' ; data.2 = from
- modifiers.3 = 'to' ; data.3 = Local_Cfg_Get( 'Header_To' )
- modifiers.4 = 'subject' ; data.4 = Local_Cfg_Get( 'Header_Subject' )
- modifiers.5 = 'date' ; data.5 = Local_Cfg_Get( 'Header_Date' )
- modifiers.6 = 'addr_from' ; data.6 = Local_Cfg_Get( 'Header_Addr_From' )
- modifiers.7 = 'addr_to' ; data.7 = Local_Cfg_Get( 'Header_Addr_To' )
- modifiers.0 = 7 ; data.0 = 7
-
- if open( 'tempfile', file_name, 'W' ) ~= 1 then
- do
-
- say "| Can't open '" || file_name || "' file for output."
-
- call ScriptExit
-
- end
-
- do i=1 to a.0
-
- line = EMS_Translate_Stem( a.i, 'modifiers', 'data' )
-
- call writeln( 'tempfile', line )
-
- end
-
- call writeln( 'tempfile', '' )
- call close( 'tempfile' )
-
-
- return 0
-
-
- ChooseOpening: procedure EXPOSE reply_cfg.
-
- parse arg area_name , choose
-
- language = Local_Cfg_Get( 'Cfg_Opening' )
-
- if language = '' & area_name ~= 'GENERAL' then language = EMS_Area_Language( area_name )
-
- call EMS_CustomCfg_Get( 'DMreply_Openings', '', '', 'a' )
-
- sel = EMS_Search_In_Stem( 'a', language )
-
- if sel ~= 0 then language = a.sel
-
- if choose = 'TRUE' then
- do
-
- call Local_Cfg_Set( 'Req_Failed', 'FALSE' )
-
- res = EMS_Do_Choice_Single( 'Choose Opening For Area' area_name, 'a', 'sel' )
-
- if res = 'OK' then language = a.sel
- else call Local_Cfg_Set( 'Req_Failed', 'TRUE' )
-
- end
-
- call Local_Cfg_Set( 'Cfg_Opening', language )
-
- return language
-
-
- InsertSignature: procedure EXPOSE reply_cfg.
-
- parse arg file_name , area_name
-
- which = ChooseSignature( area_name, Local_Cfg_Get( 'Cfg_ChooseSignature' ) )
-
- call EMS_CustomCfg_Get( 'DMreply_Signs', which, 'Lines', 'a' )
-
-
- if open( 'tempfile', file_name, 'A' ) ~= 1 then
- do
-
- if open( 'tempfile', file_name, 'W' ) ~= 1 then
- do
-
- say "| Can't open '" || file_name || "' file for output."; call ScriptExit
-
- end
-
- end
-
- do i=1 to a.0
-
- call writeln( 'tempfile', a.i )
-
- end
-
- call close( 'tempfile' )
-
- return 0
-
-
- ChooseSignature: procedure EXPOSE reply_cfg.
-
- parse arg area_name , choose
-
- which = Local_Cfg_Get( 'Cfg_Signature' )
-
- if which = '' then which = 'Normal'
-
- if choose = 'TRUE' then
- do
-
- call EMS_CustomCfg_Get( 'DMreply_Signs', '', '', 'a' )
-
- sel = EMS_Search_In_Stem( 'a', which )
-
- call Local_Cfg_Set( 'Req_Failed', 'FALSE' )
-
- res = EMS_Do_Choice_Single( 'Choose Signature For Area' area_name, 'a', 'sel' )
-
- if res = 'OK' then which = a.sel
- else call Local_Cfg_Set( 'Req_Failed', 'TRUE' )
-
- drop a.
-
- end
-
- call Local_Cfg_Set( 'Cfg_Signature', which )
-
- return which
-
-
- InsertCOD: procedure EXPOSE reply_cfg.
-
- parse arg file_name , area_name
-
- which = ChooseCOD( area_name, Local_Cfg_Get( 'Cfg_ChooseCOD' ) )
-
- if which = '' then return 0
-
- call EMS_CustomCfg_Search( 'DMreply_COD', which'_#?', 'cods' )
-
- if cods.0 = 0 then return 0
-
- res = CalcRandom( cods.0 )
-
- which = cods.res
-
- if which = '' then return 0
-
- call EMS_CustomCfg_Get( 'DMreply_COD', which, 'Lines', 'a' )
-
- if a.0 = 0 then return 0
-
- if open( 'tempfile', file_name, 'A' ) ~= 1 then
- do
-
- if open( 'tempfile', file_name, 'W' ) ~= 1 then
- do
-
- say "| Can't open '" || file_name || "' file for output."; call ScriptExit
-
- end
- end
-
-
- call writeln( 'tempfile', '' )
-
- do i=1 to a.0
-
- call writeln( 'tempfile', a.i )
-
- end
-
- call writeln( 'tempfile', '' )
-
- call close( 'tempfile' )
-
- return 0
-
-
- ChooseCOD: procedure EXPOSE reply_cfg.
-
- parse arg area_name , choose
-
- which = Local_Cfg_Get( 'Cfg_COD' )
-
- call EMS_CustomCfg_Get( 'DMreply_COD', '', '', 'a' )
-
- cods.0 = 0
-
- do i=1 to a.0
-
- parse var a.i name '_'
-
- call EMS_Add_To_Stem( 'cods', name, 'UNIQUE' )
-
- end
-
- sel = EMS_Search_In_Stem( 'cods', which )
-
- call Local_Cfg_Set( 'Req_Failed', 'FALSE' )
-
- if choose = 'TRUE' then
- do
-
- res = EMS_Do_Choice_Single( 'Choose COD For Area' area_name, 'cods', 'sel' )
-
- if res ~= 'OK' then call Local_Cfg_Set( 'Req_Failed', 'TRUE' )
-
- end
-
- if sel ~= 0 then which = cods.sel
- else which = ''
-
- call Local_Cfg_Set( 'Cfg_COD', which )
- return which
-
-
- InsertOrigin: procedure EXPOSE reply_cfg. script_name script_version
-
- parse arg msg_name , area_name
-
- a.0 = 0
- sel = -1
-
- call EMS_CustomCfg_Get( 'Origins', area_name, 'Origin', 'a' )
-
- if a.0 = 0 then
- do
-
- call EMS_CustomCfg_Get( 'Origins', 'GENERAL', 'Origin', 'a' )
-
- if a.0 = 0 then call EMS_Add_To_Stem( 'a', EMS_Var_Local( 'ORIGIN_NAME' ) )
-
- end
-
- call Local_Cfg_Set( 'Req_Failed', 'FALSE' )
-
- if Local_Cfg_Get( 'Cfg_ChooseOrigin' ) = 'TRUE' then
- do
-
- res = EMS_Do_Choice_Single( 'Choose Origin For Area' area_name, 'a', 'sel' )
-
- if res ~= 'OK' then
- do
-
- sel = -1
- call Local_Cfg_Set( 'Req_Failed', 'TRUE' )
-
- end
-
- end
-
- if sel = -1 then sel = CalcRandom( a.0 )
-
- call EMS_Item_Line_Unique( msg_name, 'header', '--- ' , '---' script_name script_version )
- call EMS_Item_Line_Unique( msg_name, 'header', ' * Origin: ', ' * Origin: ' || a.sel || ' (' || Local_Cfg_Get( 'Area_Addr' ) || ')' )
-
- call Local_Cfg_Set( 'Cfg_Origin', a.sel )
-
- return 0
-
-
- AdjustOrigin: procedure EXPOSE reply_cfg.
-
- parse arg msg_name
-
- call EMS_Item_Lines_Get( msg_name, 'header', 'lines' )
-
- orig_pos = EMS_Search_In_Stem( 'lines', ' * Origin: #?' )
-
- if orig_pos = 0 then return 0
-
- orig = lines.orig_pos; drop lines.
-
- last_pos = lastpos( '(', orig ); if last_pos = 0 then return 0
-
- orig_addr = substr( orig, last_pos ); parse var orig_addr '(' orig_addr ')'
- orig = left( orig, last_pos - 1 )
-
- if EMS_Address_IsFIDO( orig_addr ) ~= 'TRUE' then return 0
-
- parse var orig_addr orig_addr '@'
-
- call EMS_Item_Line_Unique( msg_name, 'header', ' * Origin: ', orig || '(' || orig_addr || ')' )
-
- return 0
-
-
- BuildREPLY: procedure EXPOSE reply_cfg.
-
- parse arg msg_name
-
- call EMS_Item_Lines_Get( msg_name, 'header', 'header_lines' )
-
- msgid_line = EMS_Search_In_Stem( 'header_lines', '1'X || 'MSGID:#?' )
-
- call EMS_Item_Lines_Delete( msg_name, 'header' )
-
- if msgid_line ~= 0 then
- do
-
- id = substr( header_lines.msgid_line, 8 )
-
- call EMS_Item_Line_Unique( msg_name, 'header', '1'X || 'REPLY:', '1'X || 'REPLY:' || id )
-
- end
-
- drop msgid_line
- drop header_lines.
-
- return 0
-
-
- ReduceKludges: procedure EXPOSE reply_cfg.
-
- parse arg msg_name
-
- call EMS_Item_Lines_Get( msg_name, 'header', 'old_lines' )
-
- new_lines.0 = 0
-
- do i=1 to old_lines.0
-
- line = upper( old_lines.i )
-
- if left( line, 7 ) = '1'X || 'MSGID:' then iterate
- if left( line, 5 ) = '1'X || 'EID:' then iterate
- if left( line, 5 ) = '1'X || 'VIA:' then iterate
- if left( line, 9 ) = '1'X || 'VIA NODE' then iterate
- if left( line, 5 ) = '1'X || 'PID:' then iterate
-
- call EMS_Add_To_Stem( 'new_lines', old_lines.i )
-
- end
-
- call EMS_Item_Lines_Set( msg_name, 'header', 'new_lines' )
-
- return 0
-
-
- DeleteMsgFile: procedure
-
- parse arg file
-
- if exists( file ) then
- do
-
- cmd_delete = EMS_Var_Local( 'SCRIPT_DELETE_NAME' )
- address command cmd_delete file
-
- end
-
- return 0
-
-
- ParseCommand: procedure EXPOSE reply_cfg. script_name script_version
-
- parse arg area_name , cmd_name , cmd_args
-
- cmd_name = upper( cmd_name )
-
- /**************************************************************/
- /* Command definitions: */
- /* */
- /* cmds.x Cmd_Name */
- /* */
- /* cmds_opt.x.0 Cmd_Header 0=OLD 1=NEW 2=REPLY */
- /* */
- /* cmds_opt.x.1 Cmd_AskAreas 0=NO 1=ONE 2=MANY */
- /* */
- /* cmds_opt.x.2 Cmd_Actions bit 0=Read Old Msg */
- /* bit 1=Call Editor */
- /* bit 2=Insert Opening */
- /* bit 3=Insert Origin */
- /* bit 4=Insert Signature */
- /* bit 5=Insert COD */
- /* bit 6=Quote Text */
- /* bit 7=Forward Banner */
- /* bit 8=Move Down HWM */
- /* bit 9=Carbon Copy */
- /* bit 10=Reply Kludges */
- /* bit 11=Reduce Kludges */
- /* bit 12=Reset FATT */
- /* bit 13=Reset Msg Number */
- /* */
- /* cmds_opt.x.3 Cmd_AskFor bit 0=Do Carbon Copy */
- /* bit 1=Reply Kludges */
- /* bit 2=Insert Opening */
- /* bit 3=Choose Opening */
- /* bit 4=Insert Signature */
- /* bit 5=Choose Signature */
- /* bit 6=Insert COD */
- /* bit 7=Choose COD */
- /* bit 8=Choose Origin */
- /* bit 9=No Domain In Origin */
- /* */
- /**************************************************************/
-
- cmds.1 = 'EDIT'
- cmds_help.1 = 'Edit an existing message.'
- cmds_opt.1.0 = 0
- cmds_opt.1.1 = 0
- cmds_opt.1.2 = '00000000100100000011'b
- cmds_opt.1.3 = '00000000001100000000'b
-
- cmds.2 = 'EDIT_FILE'
- cmds_help.2 = 'Edit an existing file.'
- cmds_opt.2.0 = 0
- cmds_opt.2.1 = 0
- cmds_opt.2.2 = '00000000000000000011'b
- cmds_opt.2.3 = '00000000000000000000'b
-
- cmds.3 = 'WRITE'
- cmds_help.3 = 'Write a new message.'
- cmds_opt.3.0 = 1
- cmds_opt.3.1 = 0
- cmds_opt.3.2 = '00000010000000111010'b
- cmds_opt.3.3 = '00000000001111110001'b
-
- cmds.4 = 'WRITE_FILE'
- cmds_help.4 = 'Upload a file.'
- cmds_opt.4.0 = 1
- cmds_opt.4.1 = 0
- cmds_opt.4.2 = '00000010000000000010'b
- cmds_opt.4.3 = '00000000000000000000'b
-
- cmds.5 = 'REPLY'
- cmds_help.5 = 'Reply to a message.'
- cmds_opt.5.0 = 2
- cmds_opt.5.1 = 0
- cmds_opt.5.2 = '00000011000001111111'b
- cmds_opt.5.3 = '00000000001111111111'b
-
- cmds.6 = 'REPLY_FORWARD'
- cmds_help.6 = 'Reply to a message, but in another area.'
- cmds_opt.6.0 = 2
- cmds_opt.6.1 = 1
- cmds_opt.6.2 = '00000011000011111111'b
- cmds_opt.6.3 = '00000000001111111111'b
-
- cmds.7 = 'REPLY_MULTISEND'
- cmds_help.7 = 'Reply to a message and send it in many areas.'
- cmds_opt.7.0 = 2
- cmds_opt.7.1 = 2
- cmds_opt.7.2 = '00000011000001111111'b
- cmds_opt.7.3 = '00000000001111111111'b
-
- cmds.8 = 'FORWARD'
- cmds_help.8 = 'Forward a message without editing.'
- cmds_opt.8.0 = 0
- cmds_opt.8.1 = 1
- cmds_opt.8.2 = '00000010100010000011'b
- cmds_opt.8.3 = '00000000001000000001'b
-
- cmds.9 = 'MULTISEND'
- cmds_help.9 = 'Write a new message and send it in many areas.'
- cmds_opt.9.0 = 1
- cmds_opt.9.1 = 2
- cmds_opt.9.2 = '00000010000000111010'b
- cmds_opt.9.3 = '00000000001111110001'b
-
- cmds.10 = 'RESEND'
- cmds_help.10 = 'Resend an old message.'
- cmds_opt.10.0 = 0
- cmds_opt.10.1 = 0
- cmds_opt.10.2 = '00000000100100000001'b
- cmds_opt.10.3 = '00000000000000000000'b
-
- cmds.11 = 'ARCHIVE'
- cmds_help.11 = 'Archive a message'
- cmds_opt.11.0 = 0
- cmds_opt.11.1 = 0
- cmds_opt.11.2 = '00000000000000000001'b
- cmds_opt.11.3 = '00000000000000000000'b
-
- cmds.12 = 'CONFIG'
- cmds_help.12 = 'Change the configuration of source area.'
- cmds_opt.12.0 = 0
- cmds_opt.12.1 = 0
- cmds_opt.12.2 = '00000000000000111100'b
- cmds_opt.12.3 = '00000000001111111110'b
-
- cmds.0 = 12
-
-
-
- opts.1 = 'NO_REQS'
- opts_help.1 = "Don't ask anything."
-
- opts.2 = 'CARBON_COPY'
- opts_help.2 = 'Do carbon copy.'
-
- opts.3 = 'REPLY_KLUDGES'
- opts_help.3 = 'Reply kludges.'
-
- opts.4 = 'INSERT_OPENING'
- opts_help.4 = 'Insert an automatic opening on reply.'
-
- opts.5 = 'CHOOSE_OPENING'
- opts_help.5 = 'Choose the automatic opening.'
-
- opts.6 = 'INSERT_SIGNATURE'
- opts_help.6 = 'Insert a signature.'
-
- opts.7 = 'CHOOSE_SIGNATURE'
- opts_help.7 = 'Choose the signature.'
-
- opts.8 = 'INSERT_COD'
- opts_help.8 = 'Insert a random Quote Of The Day.'
-
- opts.9 = 'CHOOSE_COD'
- opts_help.9 = 'Choose the Quote Of The Day family.'
-
- opts.10 = 'CHOOSE_ORIGIN'
- opts_help.10 = 'Choose origin.'
-
- opts.11 = 'NO_DOMAIN_IN_ORIGIN'
- opts_help.11 = "Don't put domain in fidonet origins."
-
- opts.0 = 11
-
-
-
- if cmd_name = 'HELP' then
- do
-
- say 'List of commands supported by' script_name script_version || ':'
- say
-
- work_cmds.0 = cmds.0
- do i=1 to cmds.0
-
- work_cmds.i = cmds.i
-
- end
-
- call EMS_Calc_Stem_Width( 'work_cmds', 'ADAPT' )
-
- do i=1 to work_cmds.0
- say ' ' work_cmds.i '-' cmds_help.i
- end
-
- say
-
- drop work_cmds.
-
-
- say
- say 'List of options:'
- say
-
- work_opts.0 = opts.0
- do i=1 to opts.0
-
- work_opts.i = opts.i
-
- end
-
- call EMS_Calc_Stem_Width( 'work_opts', 'ADAPT' )
-
- do i=1 to work_opts.0
- say ' ' work_opts.i '-' opts_help.i
- end
-
- drop work_opts.
-
- return 0
-
- end
-
-
- if cmd_name = 'ASK' | cmd_name = '' then
- do
-
- sel = -1
- res = EMS_Do_Choice_Single( 'Choose Operation', 'cmds', 'sel' )
-
- if res = 'OK' then cmd_name = cmds.sel
- else cmd_name = ''
-
- end
-
- if cmd_name ~= '' then sel = EMS_Search_In_Stem( 'cmds', cmd_name )
- else sel = 0
-
- if sel ~= 0 then
- do
-
- call Local_Cfg_Set( 'Cmd_Name' , cmds.sel )
- call Local_Cfg_Set( 'Cmd_Header' , cmds_opt.sel.0 )
- call Local_Cfg_Set( 'Cmd_AskAreas', cmds_opt.sel.1 )
- call Local_Cfg_Set( 'Cmd_Actions' , cmds_opt.sel.2 )
-
- work_area_name = area_name
- call EMS_CustomCfg_Get( 'DMreply_Cfg', work_area_name, 'AreaName', 'a' )
-
- if a.0 = 0 & cmd_name ~= 'CONFIG' then
- do
-
- call EMS_CustomCfg_Get( 'DMreply_Cfg', 'GENERAL', 'AreaName', 'a' )
-
- if a.0 = 0 then work_area_name = ''
- else work_area_name = 'GENERAL'
-
- end
-
- status.0 = 'FALSE'
- choice.1 = 'Do Carbon Copy' ; status.1 = 'FALSE'
- choice.2 = 'Reply Kludges' ; status.2 = 'FALSE'
- choice.3 = 'Insert Opening' ; status.3 = 'FALSE'
- choice.4 = 'Choose Opening' ; status.4 = 'FALSE'
- choice.5 = 'Insert Signature' ; status.5 = 'FALSE'
- choice.6 = 'Choose Signature' ; status.6 = 'FALSE'
- choice.7 = 'Insert COD' ; status.7 = 'FALSE'
- choice.8 = 'Choose COD' ; status.8 = 'FALSE'
- choice.9 = 'Choose Origin' ; status.9 = 'FALSE'
- choice.10 = 'No Domain In Origin'; status.10 = 'FALSE'
- choice.0 = 10
-
- cfg_ReplyKludges = Global_Cfg_Get( work_area_name, 'ReplyKludges' ); if cfg_ReplyKludges = '' then cfg_ReplyKludges = 'FALSE'
- cfg_Opening = Global_Cfg_Get( work_area_name, 'Opening' )
- cfg_Signature = Global_Cfg_Get( work_area_name, 'Signature' )
- cfg_COD = Global_Cfg_Get( work_area_name, 'COD' )
- cfg_ChooseOpening = Global_Cfg_Get( work_area_name, 'ChooseOpening' ); if cfg_ChooseOpening = '' then cfg_ChooseOpening = 'FALSE'
- cfg_ChooseSignature = Global_Cfg_Get( work_area_name, 'ChooseSignature' ); if cfg_ChooseSignature = '' then cfg_ChooseSignature = 'FALSE'
- cfg_ChooseCOD = Global_Cfg_Get( work_area_name, 'ChooseCOD' ); if cfg_ChooseCOD = '' then cfg_ChooseCOD = 'FALSE'
- cfg_ChooseOrigin = Global_Cfg_Get( work_area_name, 'ChooseOrigin' ); if cfg_ChooseOrigin = '' then cfg_ChooseOrigin = 'FALSE'
- cfg_NoDomainInOrigin = Global_Cfg_Get( work_area_name, 'NoDomainInOrigin' ); if cfg_NoDomainInOrigin = '' then cfg_NoDomainInOrigin = 'FALSE'
-
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Insert_Opening' ) = 'FALSE' then
- do
- cfg_Opening = ''
- cfg_ChooseOpening = 'FALSE'
- end
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Insert_Signature' ) = 'FALSE' then
- do
- cfg_Signature = ''
- cfg_ChooseSignature = 'FALSE'
- end
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Insert_COD' ) = 'FALSE' then
- do
- cfg_COD = ''
- cfg_ChooseCOD = 'FALSE'
- end
-
- if Local_Cfg_GetBit( 'Cmd_Actions', 'Insert_Origin' ) = 'FALSE' then
- do
- cfg_ChooseOrigin = 'FALSE'
- end
-
-
- if cfg_ReplyKludges ~= 'FALSE' then status.2 = 'TRUE'
- if cfg_Opening ~= '' then status.3 = 'TRUE'
- if cfg_ChooseOpening ~= 'FALSE' then status.4 = 'TRUE'
- if cfg_Signature ~= '' then status.5 = 'TRUE'
- if cfg_ChooseSignature ~= 'FALSE' then status.6 = 'TRUE'
- if cfg_COD ~= '' then status.7 = 'TRUE'
- if cfg_ChooseCOD ~= 'FALSE' then status.8 = 'TRUE'
- if cfg_ChooseOrigin ~= 'FALSE' then status.9 = 'TRUE'
- if cfg_NoDomainInOrigin ~= 'FALSE' then status.10 = 'TRUE'
-
-
- do while length( cmd_args ) ~= 0
-
- parse var cmd_args cmd_arg cmd_args
-
- cmd_arg = upper( cmd_arg )
-
- if left( cmd_arg, 1 ) = '~' then do; val = 'FALSE'; cmd_arg = delstr( cmd_arg, 1, 1 ); end
- else do; val = 'TRUE' ; end
-
- do i=1 to opts.0
-
- if cmd_arg = opts.i then do; j = i - 1; status.j = val; end
-
- end
-
- end
-
- if status.0 = 'FALSE' then
- do
-
- j = 0
- do i=1 to choice.0
-
- if bittst( cmds_opt.sel.3, i - 1 ) then
- do
-
- j = j + 1
- req_choice.j = choice.i; req_status.j = status.i
-
- end
-
- end
-
- if j ~= 0 then
- do
-
- req_choice.0 = j
- req_status.0 = j
-
- res = EMS_Do_Choice_Multi( 'Options for area' area_name, 'req_choice', 'req_status' )
-
- if res ~= 'OK' then return 0
-
- j = 0
- do i=1 to choice.0
-
- if bittst( cmds_opt.sel.3, i - 1 ) then
- do
-
- j = j + 1;
- status.i = req_status.j
-
- end
-
- end
-
- end
-
- end
-
- cfg_ReplyKludges = status.2
- cfg_ChooseOpening = status.4
- cfg_ChooseSignature = status.6
- cfg_ChooseCOD = status.8
- cfg_ChooseOrigin = status.9
- cfg_NoDomainInOrigin = status.10
-
- call Local_Cfg_SetBit( 'Cmd_Actions', 'Carbon_Copy' , status.1 )
- call Local_Cfg_SetBit( 'Cmd_Actions', 'Insert_Opening' , status.3 )
- call Local_Cfg_SetBit( 'Cmd_Actions', 'Insert_Signature', status.5 )
- call Local_Cfg_SetBit( 'Cmd_Actions', 'Insert_COD' , status.7 )
-
- if status.3 = 'FALSE' then cfg_Opening = ''
- if status.5 = 'FALSE' then cfg_Signature = ''
- if status.7 = 'FALSE' then cfg_COD = ''
-
- call Local_Cfg_Set( 'Cfg_ReplyKludges' , cfg_ReplyKludges )
- call Local_Cfg_Set( 'Cfg_Opening' , cfg_Opening )
- call Local_Cfg_Set( 'Cfg_Signature' , cfg_Signature )
- call Local_Cfg_Set( 'Cfg_COD' , cfg_COD )
- call Local_Cfg_Set( 'Cfg_ChooseOpening' , cfg_ChooseOpening )
- call Local_Cfg_Set( 'Cfg_ChooseSignature' , cfg_ChooseSignature )
- call Local_Cfg_Set( 'Cfg_ChooseCOD' , cfg_ChooseCOD )
- call Local_Cfg_Set( 'Cfg_ChooseOrigin' , cfg_ChooseOrigin )
- call Local_Cfg_Set( 'Cfg_NoDomainInOrigin', cfg_NoDomainInOrigin )
-
- end
-
-
- return sel
-
-
- Local_Cfg_Set: procedure EXPOSE reply_cfg.
-
- parse arg name , value
-
- old_value = reply_cfg.name
-
- reply_cfg.name = value
-
- return old_value
-
-
- Local_Cfg_Get: procedure EXPOSE reply_cfg.
-
- parse arg name
-
- return reply_cfg.name
-
-
- Local_Cfg_SetBit: procedure EXPOSE reply_cfg.
-
- parse arg name , mask , status
-
- if status = 'TRUE' then status = 1
- if status = 'FALSE' then status = 0
-
- select
- when mask = 'Read_Old_Msg' then bit = 0
- when mask = 'Call_Editor' then bit = 1
- when mask = 'Insert_Opening' then bit = 2
- when mask = 'Insert_Origin' then bit = 3
- when mask = 'Insert_Signature' then bit = 4
- when mask = 'Insert_COD' then bit = 5
- when mask = 'Quote_Text' then bit = 6
- when mask = 'Forward_Banner' then bit = 7
- when mask = 'Move_Down_HWM' then bit = 8
- when mask = 'Carbon_Copy' then bit = 9
- when mask = 'Reply_Kludges' then bit = 10
- when mask = 'Reduce_Kludges' then bit = 11
- when mask = 'Reset_FATT' then bit = 12
- when mask = 'Reset_Msg_Number' then bit = 13
- otherwise return 0
- end
-
- if status = 0 then reply_cfg.name = bitclr( reply_cfg.name, bit )
- else reply_cfg.name = bitset( reply_cfg.name, bit )
-
- return 0
-
- Local_Cfg_GetBit: procedure EXPOSE reply_cfg.
-
- parse arg name , mask
-
- select
- when mask = 'Read_Old_Msg' then bit = 0
- when mask = 'Call_Editor' then bit = 1
- when mask = 'Insert_Opening' then bit = 2
- when mask = 'Insert_Origin' then bit = 3
- when mask = 'Insert_Signature' then bit = 4
- when mask = 'Insert_COD' then bit = 5
- when mask = 'Quote_Text' then bit = 6
- when mask = 'Forward_Banner' then bit = 7
- when mask = 'Move_Down_HWM' then bit = 8
- when mask = 'Carbon_Copy' then bit = 9
- when mask = 'Reply_Kludges' then bit = 10
- when mask = 'Reduce_Kludges' then bit = 11
- when mask = 'Reset_FATT' then bit = 12
- when mask = 'Reset_Msg_Number' then bit = 13
- otherwise return 0
- end
-
- status = bittst( reply_cfg.name, bit )
-
- if status = 1 then return 'TRUE'
-
- return 'FALSE'
-
- Global_Cfg_Set: procedure
-
- parse arg area_name , field , value
-
- if area_name = '' then return 0
-
- a.0 = 1
- a.1 = value
-
- call EMS_CustomCfg_Set( 'DMreply_Cfg', area_name, field, 'a' )
-
- return 0
-
- Global_Cfg_Get: procedure
-
- parse arg area_name , field
-
- if area_name = '' then return ''
-
- call EMS_CustomCfg_Get( 'DMreply_Cfg', area_name, field, 'a' )
-
- if a.0 >= 1 then return a.1
-
- return ''
-
- CalcRandom: procedure
-
- parse arg limit
-
- seed = getclip( 'LAST_RANDOM_SEED' )
- last = getclip( 'LAST_RANDOM_VALUE' )
-
- if seed = '' | seed = 0 then seed = Time( 'S' )
- if last = '' then last = 0
-
- parse var seed seed '.'
-
- seed = randu( seed )
- num = ((seed * limit * 2) // (limit * 2)) % 2
- num = ((num + last ) // limit ) + 1
-
- call setclip( 'LAST_RANDOM_SEED' , seed * num / limit * 86400 )
- call setclip( 'LAST_RANDOM_VALUE', num )
-
- return num
-