COMPILATION LISTING OF SEGMENT kermit Compiled by: Multics PL/I Compiler, Release 33a, of May 30, 1990 Compiled at: ACTC Technologies Inc. Compiled on: 10/14/90 0921.7 mdt Sun Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Honeywell Bull Inc., 1988 * 6* * * 7* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 8* * * 9* *********************************************************** */ 10 11 12 13 /****^ HISTORY COMMENTS: 14* 1) change(88-05-16,Huen), approve(88-05-16,MCR7841), audit(88-05-25,RWaters), 15* install(88-07-05,MR12.2-1054): 16* Fix kermit 15, 16, 17, and 18. 17* 2) change(89-01-02,Huen), approve(89-01-02,MCR8027), audit(89-01-25,Lee), 18* install(89-03-01,MR12.3-1020): 19* Fix kermit bugs: PC_File_Transfer 18, 20, 23, 24. 20* 3) change(90-09-20,Huen), approve(90-09-20,MCR8203), audit(90-09-25,Gray), 21* install(90-10-14,MR12.4-1039): 22* phx21339 (pc_25): Change version to 1.4 23* END HISTORY COMMENTS */ 24 25 26 kermit: proc; 27 28 /********************************************************************/ 29 /* */ 30 /*n Name: kermit external */ 31 /*i Input: multics command line arguments */ 32 /*f Function: sets up the subsystem environment and call ssu_ */ 33 /*f to execute the kermit requests. */ 34 /*o Ouptut: none */ 35 /* */ 36 /*l Written: 84-10-12 by Dean Elhard */ 37 /*l Modified: 86-01-16 by Don Kozlowski - Change subsystem */ 38 /*l version to 1.1 . (kermit 13) */ 39 /*l Modified: 86-10-09 by Don Kozlowski - Do not set "server" */ 40 /*l and "transfer_modes_set" flags until */ 41 /*l it is in server mode. (kermit 13) */ 42 /*l Modified: 86-06-12 by Don Kozlowski - Change subsystem */ 43 /*l version to 1.2 . (kermit 16) */ 44 /*l Modified:87-07-22 by Don Kozlowski - Use vfile for debug */ 45 /*l to allow for msf traces (kermit 17) */ 46 /*l Modified: 89-01-02 by S. Huen - Change subsystem version */ 47 /*l to 1.3. (PC_18, 20, 23, 24) */ 48 /*l Modified: 90-09-24 by S. Huen - Change subsystem version */ 49 /*l to 1.4. (PC_25) */ 50 /* */ 51 /********************************************************************/ 52 53 /* constants */ 54 55 dcl true bit (1) static options (constant) init ("1"b); 56 dcl false bit (1) static options (constant) init ("0"b); 57 58 dcl Subsystem_Name char (6) static options (constant) 59 init ("kermit"); 60 dcl Subsystem_Version char (3) static options (constant) 61 init ("1.4"); 62 dcl Subsystem_Info_Dir char (168) static options (constant) 63 init (">doc>subsystem>kermit"); 64 dcl Default_prompt char (29) static options (constant) 65 init ("^/Multics-Kermit^[ (^d)^]:^2x"); 66 67 /* procedures */ 68 69 dcl com_err_ entry() options(variable); 70 dcl cu_$arg_count_rel entry (fixed bin, ptr, fixed bin(35)); 71 dcl cu_$arg_list_ptr entry (ptr); 72 dcl cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin(21), 73 fixed bin(35), ptr); 74 dcl expand_pathname_ entry (char(*), char(*), char(*), 75 fixed bin(35)); 76 dcl expand_pathname_$add_suffix 77 entry (char(*), char(*), char(*), char(*), 78 fixed bin(35)); 79 dcl get_system_free_area_ entry() returns(ptr); 80 dcl initiate_file_ entry (char(*), char(*), bit(*), ptr, 81 fixed bin(24), fixed bin(35)); 82 dcl iox_$attach_name entry (char (*), ptr, char (*), ptr, fixed bin (35)); 83 dcl iox_$close entry (ptr, fixed bin (35)); 84 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 85 dcl iox_$look_iocb entry (char(*), ptr, fixed bin(35)); 86 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 87 dcl pathname_ entry (char(*), char(*)) returns(char(168)); 88 dcl ssu_$add_request_table entry (ptr, ptr, fixed bin, fixed bin(35)); 89 dcl ssu_$create_invocation entry (char(*), char(*), ptr, ptr, char(*), 90 ptr, fixed bin(35)); 91 dcl ssu_$destroy_invocation entry (ptr); 92 dcl ssu_$execute_start_up entry () options (variable); 93 dcl ssu_$execute_string entry (ptr, char(*), fixed bin(35)); 94 dcl ssu_$get_temp_segment entry (ptr, char(*), ptr); 95 dcl ssu_$listen entry (ptr, ptr, fixed bin(35)); 96 dcl ssu_$release_temp_segment 97 entry (ptr, ptr); 98 dcl ssu_$set_abbrev_info entry (ptr, ptr, ptr, bit(1) aligned); 99 dcl ssu_$set_prompt entry (ptr, char(64) var); 100 dcl ssu_$set_prompt_mode entry (ptr, bit(*)); 101 dcl unique_chars_ entry (bit (*)) returns (char (15)); 102 103 /* external */ 104 105 dcl error_table_$badopt external fixed bin (35); 106 dcl error_table_$noarg external fixed bin (35); 107 dcl error_table_$noentry external fixed bin (35); 108 dcl iox_$user_input ptr ext static; 109 dcl iox_$user_io ptr ext static; 110 dcl kermit_requests_$requests 111 bit(36) aligned external; 112 dcl ssu_et_$subsystem_aborted 113 external fixed bin (35); 114 dcl ssu_request_tables_$standard_requests 115 bit(36) aligned external; 116 117 /* structures */ 118 119 dcl 01 info aligned like kermit_info; 120 dcl 01 kermit_args aligned, 121 02 flags aligned, 122 03 request_loop bit (1) unaligned, 123 03 abbrev bit (1) unaligned, 124 03 prompt bit (1) unaligned, 125 03 start_up bit (1) unaligned, 126 03 debug bit (1) unaligned, 127 03 prompt_given bit (1) unaligned, 128 03 profile_given bit (1) unaligned, 129 03 switchname_given bit (1) unaligned, 130 03 request_given bit (1) unaligned, 131 03 pad bit (27) unaligned, 132 02 prompt char (64) varying, 133 02 profile char (168), 134 02 switchname char (32), 135 02 request char (512) varying, 136 02 debug_path char (168) unaligned; 137 138 /* automatic */ 139 140 dcl arg_listp ptr; 141 dcl ec fixed bin (35); 142 143 /* conditions */ 144 145 dcl cleanup condition; 146 147 /* builtin */ 148 149 dcl addr builtin; 150 dcl index builtin; 151 dcl null builtin; 152 153 /* include files */ 154 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 10pk5N*, ͈@ AF(AA?ϣ^03D Fh \AA0$0DAz̾?v,  Arp -ϣ^0pk5N*, ͈@h AfiL`A^8 AV ϣ^0pk5N*, ͈@$ AJhABTĀ Dϣ^A:l@Nnϣ^03D Fh \A,A*Ea$A"p̾?v,  A ϣ^0pk5N*, ͈@ A4xA@a/ϣ^03D Fh \@@I$@悬̾?v,  @ފ~ ϣ^0pk5N*, ͈@ @Y@ʂ̾?v,  @Š{ ϣ^0pk5N*, ͈@ @y@@@ϣ^03D Fh \@@K$D@̾?v,  @9 nϣ^0pk5N*, ͈@| @z$"* @t @rϡ@ Fϣ^0pk5N*, ͈@h @f~ Ld@^82s@X@Vfnϣ^03D Fh \@H@Fa0$l@>Tϣ^ @8 @6 XNϣ^0pk5N*, ͈@, @*$@"tLH6o@@]ϣ^03D Fh \@ @ Q$@ @ @ɜ (ϣ^0pk5N*, ͈@ @J@悰[  @ @ފ ϣ^0pk5N*, ͈@ @pv@ʂ@@Š6ϣ^03D Fh \@@[H$@ ]t @ @ Vϣ^0pk5N*, ͈@ @0@ @ @ ϣ^0pk5N*, ͈@| @z<8P@r$*@l@j@Xϣ^03D Fh \@\@Zd$Xl@R@,4v @L @J̡ gNϣ^0pk5N*, ͈@@ @>b t@6`ϣ^@0 @. Xϣ^0pk5N*, ͈@\ @"@| ݺ @ϣ^03D Fh \@@o$?l@ ? ? =ϣ^0pk5N*, ͈@ ?'?ރ[ ??֊b@ϣ^03D Fh \??y$?? ? ?h Ύϣ^0pk5N*, ͈@ ?UD? ]t ? ?Ϙ@ ϣ^0pk5N*, ͈@ ?~$<???~8tfϣ^03D Fh \?p?n`$DX?f,M  ?` ?^2 U.ϣ^0pk5N*, ͈@T ?R$`t?JL,4v?D ?Bʀ "ϣ^0pk5N*, ͈@\ ?6KV|?.h҃?&ـ&ϣ^03D Fh \??[$? Zu ? ?o ϣ^0pk5N*, ͈@ ?qz????ϣ^03D Fh \??\$?҃-ݐw ? ?ʊ.@ &ϣ^0pk5N*, ͈@ ?q?? ? ?@ ϣ^ of CR, */ 3 18 /*d and NL characters which are coded as bit strings with */ 3 19 /*d overlays. */ 3 20 /* */ 3 21 /*l Written: 87-06-19 by Don Kozlowski */ 3 22 /*l Modified: 87-06-19 by Don Kozlowski - CR and NL are coded */ 3 23 /*l as bit strings with overlays (kermit 15)*/ 3 24 /* */ 3 25 /********************************************************************/ 3 26 3 27 dcl 01 kermit_bit_constants internal static options (constant), 3 28 02 CR_bit bit (9) unaligned init ("015"b3), 3 29 02 NL_bit bit (9) unaligned init ("012"b3); 3 30 3 31 dcl 01 kermit_char_constants based (addr (kermit_bit_constants)), 3 32 02 CR char (1) unaligned, 3 33 02 NL char (1) unaligned; 3 34 3 35 dcl 01 kermit_fixed_constants based (addr (kermit_bit_constants)), 3 36 02 CR_fixed fixed bin (9) unsigned unaligned, 3 37 02 NL_fixed fixed bin (9) unsigned unaligned; 3 38 3 39 3 40 /********************************************************************/ 3 41 /* */ 3 42 /*n kermit_info */ 3 43 /* */ 3 44 /*d This data structure is the subsystem info structure used */ 3 45 /*d when creating a kermit invocation. It is used to find the */ 3 46 /*d three kermit databases. */ 3 47 /* */ 3 48 /*l Written: 84-10-11 by Dean Elhard */ 3 49 /* */ 3 50 /********************************************************************/ 3 51 3 52 dcl 01 kermit_info aligned based (kermit_infop), 3 53 02 version char (8), 3 54 02 sci_ptr ptr, /* ssu_ sci_ptr */ 3 55 02 perm_modesp ptr, /* ptr to permanent modes db */ 3 56 02 temp_modesp ptr, /* ptr to temporary modes db */ 3 57 02 log_infop ptr, /* ptr to log info db */ 3 58 02 comm_infop ptr; /* ptr to comm info db */ 3 59 3 60 dcl kermit_infop ptr; 3 61 dcl kermit_info_version char (8) static options (constant) 3 62 init ("ki 1.0"); 3 63 3 64 /********************************************************************/ 3 65 /* */ 3 66 /*n kermit_perm_modes */ 3 67 /* */ 3 68 /*d This data structure contains the array of 9-bit values that */ 3 69 /*d represent the permanent kermit modes. */ 3 70 /* */ 3 71 /*l Written: 84-10-11 by Dean Elhard */ 3 72 /*l Modified: 87-06-12 by Don Kozlowski - Increase mode_counts */ 3 73 /*l (kermit 16) */ 3 74 /* */ 3 75 /********************************************************************/ 3 76 3 77 dcl 01 kermit_perm_modes aligned based (kermit_perm_modesp), 3 78 02 version char (8), 3 79 02 mode (1:kermit_perm_mode_count) 3 80 bit (9) unaligned; 3 81 3 82 dcl kermit_perm_modesp ptr; 3 83 dcl kermit_perm_mode_count fixed bin static options (constant) init (20); 3 84 dcl kermit_perm_modes_version 3 85 char (8) static options (constant) 3 86 init ("kpm 1.1"); 3 87 3 88 /********************************************************************/ 3 89 /* */ 3 90 /*n kermit_temp_modes */ 3 91 /* */ 3 92 /*d This data structure contains the array of 9-bit values that */ 3 93 /*d represent the temporary kermit modes. */ 3 94 /* */ 3 95 /*l Written: 84-10-11 by Dean Elhard */ 3 96 /* */ 3 97 /********************************************************************/ 3 98 3 99 dcl 01 kermit_temp_modes aligned based (kermit_temp_modesp), 3 100 02 version char (8), 3 101 02 mode (1:kermit_temp_mode_count) 3 102 bit (9) unaligned; 3 103 3 104 dcl kermit_temp_modesp ptr; 3 105 dcl kermit_temp_mode_count fixed bin static options (constant) init (23); 3 106 dcl kermit_temp_modes_version 3 107 char (8) static options (constant) 3 108 init ("ktm 1.1"); 3 109 3 110 /********************************************************************/ 3 111 /* */ 3 112 /*n kermit_log_info */ 3 113 /* */ 3 114 /*d This data structure contains 2 types of logging info: */ 3 115 /*d - data concerning the logging state and log_file */ 3 116 /*d - statistics on the last completed file-transfer */ 3 117 /* */ 3 118 /*l Written: 84-10-11 by Dean Elhard */ 3 119 /* */ 3 120 /********************************************************************/ 3 121 3 122 dcl 01 kermit_log_info aligned based (kermit_log_infop), 3 123 02 version char (8), 3 124 02 log_file aligned, /* log_file info */ 3 125 03 iocbp ptr, /* iocb ptr */ 3 126 03 flags aligned, 3 127 04 enabled bit (1) unaligned, /* enabled flag */ 3 128 04 stats_valid bit (1) unaligned, /* stats are set */ 3 129 04 mbz bit (34) unaligned, 3 130 02 statistics aligned like kermit_stats_info; 3 131 3 132 dcl kermit_log_infop ptr; 3 133 dcl kermit_log_info_version char (8) static options (constant) 3 134 init ("kli 1.0"); 3 135 3 136 /********************************************************************/ 3 137 /* */ 3 138 /*n kermit_stats_info */ 3 139 /* */ 3 140 /*d This structure is the statistics information passed to the */ 3 141 /*d log manager and stored as the statistics. */ 3 142 /* */ 3 143 /*l Written: 84-10-25 by Dean Elhard */ 3 144 /* */ 3 145 /********************************************************************/ 3 146 3 147 dcl 01 kermit_stats_info aligned based (kermit_stats_infop), 3 148 02 caller char (32), /* send or receive */ 3 149 02 status fixed bin (35), /* status of F-T */ 3 150 02 filename char (194) unal, /* name of file */ 3 151 02 file_len fixed bin (21), /* len in chars */ 3 152 02 char_count fixed bin (21), /* number sent */ 3 153 02 packet_chars fixed bin (21), /* after encoding */ 3 154 02 packet_count fixed bin (21), /* num of packets */ 3 155 02 packet_retries fixed bin (21), /* retries done */ 3 156 02 start_time fixed bin (71), /* time F-T started */ 3 157 02 end_time fixed bin (71), /* time F-T done */ 3 158 02 error_message char (94); /* rcvd error msg */ 3 159 3 160 dcl kermit_stats_infop ptr; 3 161 3 162 /********************************************************************/ 3 163 /* */ 3 164 /*n kermit_comm_info */ 3 165 /* */ 3 166 /*d This data structure contains information regarding the */ 3 167 /*d communications channel over which the file transfer takes */ 3 168 /*d place. */ 3 169 /* */ 3 170 /*l Written: 84-10-12 by Dean Elhard */ 3 171 /*l Modified: 86-10-09 by Don Kozlowski Add transfer_modes_set */ 3 172 /*l and server indicators. (kermit 13) */ 3 173 /* */ 3 174 /********************************************************************/ 3 175 3 176 dcl 01 kermit_comm_info aligned based (kermit_comm_infop), 3 177 02 version char (8), 3 178 02 ft_iocbp ptr, /* transfer iocbp */ 3 179 02 debug_segp ptr, /* debug segment */ 3 180 02 debug_segl fixed bin (21), 3 181 02 input_buffer aligned, /* input buffer */ 3 182 03 bufferp ptr, 3 183 03 bufferl fixed bin (21), 3 184 02 old_modes char (512) unal, /* ft switch modes */ 3 185 02 old_framing_chars aligned, /* saved frm chars */ 3 186 03 start_char char (1) unaligned, 3 187 03 end_char char (1) unaligned, 3 188 03 server bit (1) unaligned, /* In server mode */ 3 189 03 transfer_modes_set bit (1) unaligned, 3 190 03 pad bit (16) unaligned, 3 191 02 old_wake_table aligned, /* saved wake table */ 3 192 03 breaks (0:127) bit (1) unaligned, 3 193 03 mbz bit (16) unaligned, 3 194 02 old_delays aligned, /* saved delay info */ 3 195 03 version fixed bin, 3 196 03 default fixed bin, 3 197 03 delay, 3 198 04 vert_nl fixed bin, 3 199 04 horz_nl fixed bin, 3 200 04 const_tab float bin, 3 201 04 var_tab fixed bin, 3 202 04 backspace fixed bin, 3 203 04 vt_ff fixed bin; 3 204 3 205 dcl kermit_comm_infop ptr; 3 206 dcl kermit_comm_info_version 3 207 char (8) static options (constant) 3 208 init ("kci 1.0"); 3 209 3 210 /* END OF: kermit_info.incl.pl1 * * * * * */ 159 160 4 1 /* START OF: kermit_dcls.incl.pl1 * * * * * */ 4 2 4 3 /********************************************************************/ 4 4 /* */ 4 5 /*n kermit_dcls */ 4 6 /* */ 4 7 /*d This include file contains the declarations of the external */ 4 8 /*d kermit entrypoints that are called by other modules within */ 4 9 /*d kermit as well as an explanation of the parameters. */ 4 10 /* */ 4 11 /*l Written: 84-10-11 by Dean Elhard */ 4 12 /* */ 4 13 /********************************************************************/ 4 14 4 15 dcl kermit_comm_mgr_$flush_input 4 16 entry 4 17 (ptr, /* kermit info ptr */ 4 18 fixed bin(35)); /* error code */ 4 19 4 20 dcl kermit_comm_mgr_$reset_line_modes 4 21 entry 4 22 (ptr, /* kermit info ptr */ 4 23 fixed bin(35)); /* error code */ 4 24 4 25 dcl kermit_comm_mgr_$set_line_modes 4 26 entry 4 27 (ptr, /* kermit info ptr */ 4 28 fixed bin(35)); /* error code */ 4 29 4 30 dcl kermit_get_filenames_ entry 4 31 (ptr, /* kermit info ptr */ 4 32 char(*), /* argument */ 4 33 ptr, /* filename ptr */ 4 34 char(*), /* reason */ 4 35 fixed bin(35)); /* error code */ 4 36 4 37 dcl kermit_log_mgr_$close_log 4 38 entry 4 39 (ptr, /* kermit info ptr */ 4 40 fixed bin (35)); /* error code */ 4 41 4 42 dcl kermit_log_mgr_$disable entry 4 43 (ptr, /* kermit info ptr */ 4 44 fixed bin (35)); /* error code */ 4 45 4 46 dcl kermit_log_mgr_$display_stats 4 47 entry /* statistics command */ 4 48 (ptr, /* sci ptr */ 4 49 ptr); /* kermit info ptr */ 4 50 4 51 dcl kermit_log_mgr_$enable entry 4 52 (ptr, /* kermit info ptr */ 4 53 fixed bin (35)); /* error code */ 4 54 4 55 dcl kermit_log_mgr_$log_message 4 56 entry 4 57 (ptr, /* kermit info ptr */ 4 58 ptr); /* log info ptr */ 4 59 4 60 dcl kermit_log_mgr_$open_log 4 61 entry 4 62 (ptr, /* kermit info ptr */ 4 63 char (*) varying, /* log file name */ 4 64 fixed bin (35)); /* error code */ 4 65 4 66 dcl kermit_log_mgr_$start entry /* start log command */ 4 67 (ptr, /* sci ptr */ 4 68 ptr); /* kermit info ptr */ 4 69 4 70 dcl kermit_log_mgr_$stop entry /* stop log command */ 4 71 (ptr, /* sci ptr */ 4 72 ptr); /* kermit info ptr */ 4 73 4 74 dcl kermit_mode_mgr_$get entry /* get modes command */ 4 75 (ptr, /* sci ptr */ 4 76 ptr); /* kermit info ptr */ 4 77 4 78 dcl kermit_mode_mgr_$retrieve 4 79 entry 4 80 (ptr, /* kermit info ptr */ 4 81 fixed bin, /* permanent/temporary select */ 4 82 (*) fixed bin, /* mode selector array */ 4 83 ptr, /* mode value ptr */ 4 84 fixed bin (35)); /* error code */ 4 85 4 86 dcl kermit_mode_mgr_$set entry /* set modes command */ 4 87 (ptr, /* sci ptr */ 4 88 ptr); /* kermit info ptr */ 4 89 4 90 dcl kermit_mode_mgr_$store entry 4 91 (ptr, /* kermit info ptr */ 4 92 fixed bin, /* permanent/temporary select */ 4 93 (*) fixed bin, /* mode selector array */ 4 94 ptr, /* mode value ptr */ 4 95 fixed bin (35)); /* error code */ 4 96 4 97 dcl kermit_pad_$receive entry 4 98 (ptr, /* kermit info ptr */ 4 99 char (1), /* packet type */ 4 100 ptr, /* buffer pointer */ 4 101 fixed bin (21), /* buffer length */ 4 102 fixed bin, /* sequence number */ 4 103 fixed bin (21), /* chars received */ 4 104 fixed bin (21), /* packet size */ 4 105 bit (1), /* CR/NL split flag */ 4 106 fixed bin (35)); /* error code */ 4 107 4 108 dcl kermit_pad_$send entry 4 109 (ptr, /* kermit info ptr */ 4 110 char (1), /* packet type */ 4 111 ptr, /* data ptr */ 4 112 fixed bin (21), /* data length */ 4 113 fixed bin, /* sequence number */ 4 114 fixed bin (21), /* chars transmitted */ 4 115 fixed bin (21), /* packet length */ 4 116 fixed bin (35)); /* error code */ 4 117 4 118 dcl kermit_receive_$receive_from_remote 4 119 entry 4 120 (ptr, /* kermit info ptr */ 4 121 fixed bin, /* initial state */ 4 122 fixed bin, /* initial sequence number */ 4 123 char (*), /* user filename (first file) */ 4 124 bit (1), /* =1 if user gave filename */ 4 125 fixed bin, /* number of files received */ 4 126 fixed bin (35)); /* error code */ 4 127 4 128 dcl kermit_send_$send_to_remote 4 129 entry 4 130 (ptr, /* kermit info ptr */ 4 131 ptr, /* filenames area ptr */ 4 132 char (*), /* user filename (first file) */ 4 133 bit (1), /* =1 if user gave filename */ 4 134 fixed bin, /* number of files sent */ 4 135 fixed bin (35)); /* error code */ 4 136 4 137 4 138 dcl kermit_server_ 4 139 entry 4 140 (ptr, /* kermit info ptr */ 4 141 ptr); /* filenames area ptr */ 4 142 4 143 4 144 dcl kermit_xfer_modes_$check_params 4 145 entry 4 146 (ptr, /* kermit info ptr */ 4 147 ptr, /* remote parameters */ 4 148 fixed bin (21), /* remote parameters length */ 4 149 ptr, /* local parameters */ 4 150 fixed bin (35)); /* error code */ 4 151 4 152 dcl kermit_xfer_modes_$init 4 153 entry 4 154 (ptr, /* ptr to kermit info */ 4 155 fixed bin (35)); /* error code */ 4 156 4 157 dcl kermit_xfer_modes_$get_local_params 4 158 entry 4 159 (ptr, /* kermit info ptr */ 4 160 ptr, /* local parameters */ 4 161 fixed bin (21), /* local parameters length */ 4 162 ptr, /* encoded parameters */ 4 163 fixed bin (21), /* encoded parameters length */ 4 164 fixed bin (35)); /* error code */ 4 165 4 166 dcl kermit_xfer_modes_$process_params 4 167 entry 4 168 (ptr, /* kermit info ptr */ 4 169 ptr, /* remote parameters */ 4 170 fixed bin (21), /* remote parameters length */ 4 171 ptr, /* local parameters */ 4 172 fixed bin (35)); /* error code */ 4 173 4 174 /* END OF: kermit_dcls.incl.pl1 * * * * * */ 161 162 5 1 /* START OF: kermit_mode_info.incl.pl1 * * * * * */ 5 2 5 3 5 4 5 5 5 6 /****^ HISTORY COMMENTS: 5 7* 1) change(88-05-16,Huen), approve(88-05-16,MCR7841), audit(88-05-25,RWaters), 5 8* install(88-07-05,MR12.2-1054): 5 9* Fix kermit 15, 16, 17, and 18. 5 10* END HISTORY COMMENTS */ 5 11 5 12 5 13 /************************************************************************/ 5 14 /* */ 5 15 /*l Modified: 87-06-19 by S. Huen - Add fields for capabilities, */ 5 16 /*l window_size, max_len_ext_1 and max_len_ext_2 based */ 5 17 /*l on D. Kozlowski's version. (kermit 16) */ 5 18 /* */ 5 19 /************************************************************************/ 5 20 5 21 dcl Permanent fixed bin static options (constant) init (1); 5 22 dcl Temporary fixed bin static options (constant) init (2); 5 23 5 24 dcl Store_all (1:1) fixed bin static options (constant) init (0); 5 25 dcl Retrieve_all (1:1) fixed bin static options (constant) init (0); 5 26 5 27 dcl Maxl fixed bin static options (constant) init (1); 5 28 dcl Timeout fixed bin static options (constant) init (2); 5 29 dcl N_pads fixed bin static options (constant) init (3); 5 30 dcl Pad_char fixed bin static options (constant) init (4); 5 31 dcl Eol_char fixed bin static options (constant) init (5); 5 32 dcl Quote_char fixed bin static options (constant) init (6); 5 33 dcl Eight_bit_char fixed bin static options (constant) init (7); 5 34 dcl Repeat_char fixed bin static options (constant) init (8); 5 35 dcl Start_char fixed bin static options (constant) init (9); 5 36 dcl Check_type fixed bin static options (constant) init (10); 5 37 dcl Parity fixed bin static options (constant) init (11); 5 38 dcl Incomplete fixed bin static options (constant) init (12); 5 39 dcl File_warning fixed bin static options (constant) init (13); 5 40 dcl File_type fixed bin static options (constant) init (14); 5 41 dcl Retry_threshold fixed bin static options (constant) init (15); 5 42 dcl Line_byte_size fixed bin static options (constant) init (16); 5 43 dcl Window_size fixed bin static options (constant) init (17); 5 44 dcl Max_len_ext_1 fixed bin static options (constant) init (18); 5 45 dcl Max_len_ext_2 fixed bin static options (constant) init (19); 5 46 dcl Capabilities fixed bin static options (constant) init (20); 5 47 5 48 dcl 01 Perm_defaults aligned static options (constant), 5 49 02 maxl fixed bin (8) unal init (80), 5 50 02 time fixed bin (8) unal init (15), 5 51 02 npad fixed bin (8) unal init (0), 5 52 02 padc char (1) unal init (""), 5 53 02 eol char (1) unal init (" "), 5 54 02 qctl char (1) unal init ("#"), 5 55 02 qbin char (1) unal init ("&"), 5 56 02 rept char (1) unal init ("~"), 5 57 02 start char (1) unal init (""), 5 58 02 chkt fixed bin (8) unal init (1), 5 59 02 parity char (1) unal init ("N"), 5 60 02 incomplete char (1) unal init ("K"), 5 61 02 file_warning char (1) unal init ("Y"), 5 62 02 file_type char (1) unal init ("A"), 5 63 02 retry_threshold fixed bin (8) unal init (5), 5 64 02 line_type fixed bin (8) unal init (7), 5 65 02 window_size fixed bin (8) unal init (0), 5 66 02 max_len_ext_1 fixed bin (8) unal init (5), 5 67 02 max_len_ext_2 fixed bin (8) unal init (25), 5 68 02 capabilities fixed bin (8) unal init (2); 5 69 5 70 5 71 dcl I_maxl fixed bin static options (constant) init (1); 5 72 dcl I_timeout fixed bin static options (constant) init (2); 5 73 dcl I_n_pads fixed bin static options (constant) init (3); 5 74 dcl I_pad_char fixed bin static options (constant) init (4); 5 75 dcl I_eol_char fixed bin static options (constant) init (5); 5 76 dcl I_quote_char fixed bin static options (constant) init (6); 5 77 dcl O_maxl fixed bin static options (constant) init (7); 5 78 dcl O_timeout fixed bin static options (constant) init (8); 5 79 dcl O_n_pads fixed bin static options (constant) init (9); 5 80 dcl O_pad_char fixed bin static options (constant) init (10); 5 81 dcl O_eol_char fixed bin static options (constant) init (11); 5 82 dcl O_quote_char fixed bin static options (constant) init (12); 5 83 dcl G_eight_bit_char fixed bin static options (constant) init (13); 5 84 dcl G_repeat_char fixed bin static options (constant) init (14); 5 85 dcl G_start_char fixed bin static options (constant) init (15); 5 86 dcl G_check_type fixed bin static options (constant) init (16); 5 87 dcl G_parity fixed bin static options (constant) init (17); 5 88 dcl G_window fixed bin static options (constant) init (18); 5 89 dcl I_max_lenx1 fixed bin static options (constant) init (19); 5 90 dcl I_max_lenx2 fixed bin static options (constant) init (20); 5 91 dcl O_max_lenx1 fixed bin static options (constant) init (21); 5 92 dcl O_max_lenx2 fixed bin static options (constant) init (22); 5 93 dcl G_capabilities fixed bin static options (constant) init (23); 5 94 5 95 dcl 01 Temp_defaults aligned static options (constant), 5 96 02 i_maxl fixed bin (8) unal init (80), 5 97 02 i_time fixed bin (8) unal init (15), 5 98 02 i_npad fixed bin (8) unal init (0), 5 99 02 i_padc char (1) unal init (""), 5 100 02 i_eol char (1) unal init (" "), 5 101 02 i_qctl char (1) unal init ("#"), 5 102 02 o_maxl fixed bin (8) unal init (80), 5 103 02 o_time fixed bin (8) unal init (15), 5 104 02 o_npad fixed bin (8) unal init (0), 5 105 02 o_padc char (1) unal init (""), 5 106 02 o_eol char (1) unal init (" "), 5 107 02 o_qctl char (1) unal init ("#"), 5 108 02 qbin char (1) unal init ("N"), 5 109 02 rept char (1) unal init (" "), 5 110 02 start char (1) unal init (""), 5 111 02 chkt fixed bin (8) unal init (1), 5 112 02 parity char (1) unal init ("N"), 5 113 02 window fixed bin (8) unal init (0), 5 114 02 i_maxlx1 fixed bin (8) unal init (5), 5 115 02 i_maxlx2 fixed bin (8) unal init (25), 5 116 02 o_maxlx1 fixed bin (8) unal init (5), 5 117 02 o_maxlx2 fixed bin (8) unal init (25), 5 118 02 capabilities fixed bin (8) unal init (2); 5 119 5 120 dcl Ext_Headers bit (9) static options (constant) init ("002"b3); 5 121 5 122 5 123 /* END OF: kermit_mode_info.incl.pl1 * * * * * */ 163 164 6 1 /* BEGIN INCLUDE FILE ... ssu_prompt_modes.incl.pl1 */ 6 2 /* Created: 15 February 1982 by G. Palter */ 6 3 6 4 /* Values for use in calls to ssu_$set_prompt_mode to control prompting by the subsystem listener */ 6 5 6 6 dcl PROMPT bit (1) static options (constant) initial ("0"b); 6 7 dcl DONT_PROMPT bit (1) static options (constant) initial ("1"b); 6 8 6 9 dcl PROMPT_AFTER_NULL_LINES bit (2) static options (constant) initial ("01"b); 6 10 dcl DONT_PROMPT_AFTER_NULL_LINES bit (2) static options (constant) initial ("00"b); 6 11 6 12 dcl PROMPT_IF_TYPEAHEAD bit (3) static options (constant) initial ("000"b); 6 13 dcl DONT_PROMPT_IF_TYPEAHEAD bit (3) static options (constant) initial ("001"b); 6 14 6 15 /* For example: 6 16* call ssu_$set_prompt_mode (sci_ptr, PROMPT | DONT_PROMPT_AFTER_NULL_LINES | DONT_PROMPT_IF_TYPEAHEAD); */ 6 17 6 18 /* END INCLUDE FILE ... ssu_prompt_modes.incl.pl1 */ 165 166 7 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 7 2 /* format: style2,^inddcls,idind32 */ 7 3 7 4 declare 1 terminate_file_switches based, 7 5 2 truncate bit (1) unaligned, 7 6 2 set_bc bit (1) unaligned, 7 7 2 terminate bit (1) unaligned, 7 8 2 force_write bit (1) unaligned, 7 9 2 delete bit (1) unaligned; 7 10 7 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 7 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 7 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 7 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 7 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 7 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 7 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 7 18 7 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 167 168 169 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 170 171 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 172 173 174 /* initialize the subsystem info structure prior to setting up */ 175 /* the cleanup handlers to free the kermit databases */ 176 177 info.version = kermit_info_version; 178 info.sci_ptr = null; 179 info.perm_modesp = null; 180 info.temp_modesp = null; 181 info.log_infop = null; 182 info.comm_infop = null; 183 184 on cleanup call kermit_cleanup (addr (info)); 185 186 /* parse the command line arguments */ 187 188 call cu_$arg_list_ptr (arg_listp); 189 190 call parse_command_line (arg_listp, addr (kermit_args)); 191 192 /* set up the subsystem invocation */ 193 194 call kermit_initialization (addr (kermit_args), addr (info)); 195 196 /* only enter the request loop if required */ 197 198 if kermit_args.request_loop 199 then call ssu_$listen (info.sci_ptr, iox_$user_input, ec); 200 201 call kermit_cleanup (addr (info)); 202 203 return; 204 205 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 206 207 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 208 209 210 parse_command_line: proc (arg_listp, argsp); 211 212 /********************************************************************/ 213 /* */ 214 /*n Name: parse_command_line internal */ 215 /*i Input: arg_list_ptr */ 216 /*f Function: parses the control arguments detecting illegal */ 217 /*f control args. */ 218 /*f Legal control arguments are: */ 219 /*f -abbrev, -ab */ 220 /*f specifies that abbrev processing by the */ 221 /*f subsystem request processor is to be */ 222 /*f initially enabled. */ 223 /*f -debug pathname, -db pathname */ 224 /*f specifies the pathname of a segment in */ 225 /*f which to log packet traffic for use in */ 226 /*f debugging kermit. */ 227 /*f -io_switch switchname, -iosw switchname */ 228 /*f specified the name of the io switch */ 229 /*f over which to perform the file */ 230 /*f transfer. If not specified, the users */ 231 /*f login channel is used. */ 232 /*f -no_abbrev, -nab */ 233 /*f specified that abbrev processing by the */ 234 /*f subsystem request processor is to be */ 235 /*f initially disabled. (default) */ 236 /*f -no_prompt, -npmt */ 237 /*f specified that no prompting is to be */ 238 /*f done in the request loop. */ 239 /*f -no_start_up, -nsu, -ns */ 240 /*f do not execute the kermit start_up. */ 241 /*f -profile pathname, -pf pathname */ 242 /*f specifies the name of the profile */ 243 /*f segment to be used as the default */ 244 /*f profile for abbrev processing. If this */ 245 /*f is not specified, the users default */ 246 /*f profile is used. NB. -profile implies */ 247 /*f -abbrev */ 248 /*f -prompt prompt_string */ 249 /*f specifies the prompt string to be used. */ 250 /*f -quit */ 251 /*f do not enter the subsystem request */ 252 /*f loop. Quit the subsystem after */ 253 /*f executing the request_string, if any. */ 254 /*f -request request_string, -rq request_string */ 255 /*f execute request string as a subsystem */ 256 /*f request line entering the subsystem */ 257 /*f request loop */ 258 /*f -request_loop, -rql */ 259 /*f enters the subsystem request loop after */ 260 /*f executing the request_string, if any. */ 261 /*f (default) */ 262 /*f -start_up, -su */ 263 /*f The user's home directory, the project */ 264 /*f directory, and >site are searched in */ 265 /*f that order for a segment named */ 266 /*f start_up.kermit. (default) */ 267 /*o Output: request_string, quit_flag, abbrev_flag, */ 268 /*o profile_path, start_up_flag, debug_flag, */ 269 /*o debug_path, switchname */ 270 /* */ 271 /*l Written: 84-10-12 by Dean Elhard */ 272 /*l Modified: 84-11-01 by Dean Elhard to trap missing request, */ 273 /*l prompt, profile, and switchname strings */ 274 /*l embedded in the arg list. */ 275 /*l Modified: 84-11-08 to add -start_up and -no_start_up */ 276 /*l Modified: 84-11-15 to add -debug */ 277 /* */ 278 /********************************************************************/ 279 280 /* arguments */ 281 282 dcl arg_listp ptr; 283 dcl argsp ptr; 284 285 /* structures */ 286 287 dcl 01 args aligned like kermit_args based (argsp); 288 289 /* based */ 290 291 dcl arg char (argl) based (argp); 292 293 /* automatic */ 294 295 dcl argl fixed bin (21); 296 dcl argp ptr; 297 dcl debug_pending bit (1); 298 dcl ec fixed bin (35); 299 dcl i fixed bin; 300 dcl nargs fixed bin; 301 dcl profile_pending bit (1); 302 dcl prompt_pending bit (1); 303 dcl request_pending bit (1); 304 dcl switchname_pending bit (1); 305 306 /* initialize state to default before starting parse */ 307 308 args.flags.request_loop = true; 309 args.flags.abbrev = false; 310 args.flags.prompt = true; 311 args.flags.start_up = true; 312 args.flags.debug = false; 313 args.flags.prompt_given = false; 314 args.flags.profile_given = false; 315 args.flags.switchname_given = false; 316 args.flags.request_given = false; 317 args.prompt = ""; 318 args.profile = ""; 319 args.switchname = ""; 320 args.request = ""; 321 args.debug_path = ""; 322 323 profile_pending = false; 324 prompt_pending = false; 325 request_pending = false; 326 switchname_pending = false; 327 debug_pending = false; 328 329 /* get the arg count */ 330 331 call cu_$arg_count_rel (nargs, arg_listp, ec); 332 if ec ^= 0 333 then call abort (ec, ""); 334 335 do i = 1 to nargs; 336 337 call cu_$arg_ptr_rel (i, argp, argl, ec, arg_listp); 338 if ec ^= 0 339 then call abort (ec, ""); 340 341 /* get the prompt text if the previous arg was -prompt */ 342 343 if prompt_pending 344 then do; 345 if index (arg, "-") = 1 346 then call abort (error_table_$noarg, "Prompt string expected."); 347 prompt_pending = false; 348 args.flags.prompt_given = true; 349 args.prompt = arg; 350 end; 351 352 /* get the profile pathname if the previous arg was -profile */ 353 354 else if profile_pending 355 then do; 356 if index (arg, "-") = 1 357 then call abort (error_table_$noarg, "Profile pathname expected."); 358 profile_pending = false; 359 args.flags.profile_given = true; 360 args.flags.abbrev = true; 361 args.profile = arg; 362 end; 363 364 /* get the request string if the previous arg was -request */ 365 366 else if request_pending 367 then do; 368 if index (arg, "-") = 1 369 then call abort (error_table_$noarg, "Request expected."); 370 request_pending = false; 371 args.flags.request_given = true; 372 args.request = arg; 373 end; 374 375 /* get the switchname if the previous arg was -io_switch */ 376 377 else if switchname_pending 378 then do; 379 if index (arg, "-") = 1 380 then call abort (error_table_$noarg, "Switch name expected."); 381 switchname_pending = false; 382 args.flags.switchname_given = true; 383 args.switchname = arg; 384 end; 385 386 /* get the debug pathname if the previous are was -debug */ 387 388 else if debug_pending 389 then do; 390 if index (arg, "-") = 1 391 then call abort (error_table_$noarg, "Debug pathname expected."); 392 debug_pending = false; 393 args.flags.debug = true; 394 args.debug_path = arg; 395 end; 396 397 /* enable abbrev processing */ 398 399 else if arg = "-abbrev" | arg = "-ab" 400 then args.flags.abbrev = true; 401 402 /* flag that the next arg should be a debug segment path */ 403 404 else if arg = "-debug" | arg = "-db" 405 then debug_pending = true; 406 407 /* flag that the next arg should be a switchname */ 408 409 else if arg = "-io_switch" | arg = "-iosw" 410 then switchname_pending = true; 411 412 /* disable abbrev processing */ 413 414 else if arg = "-no_abbrev" | arg = "-nab" 415 then args.flags.abbrev = false; 416 417 /* disable subsystem prompting */ 418 419 else if arg = "-no_prompt" | arg = "-npmt" 420 then args.flags.prompt = false; 421 422 /* disable start_up.kermit execution */ 423 424 else if arg = "-no_start_up" | arg = "-nsu" | arg = "-ns" 425 then args.flags.start_up = false; 426 427 /* flag that the next arg should be a profile pathname */ 428 429 else if arg = "-profile" | arg = "-pfl" 430 then profile_pending = true; 431 432 /* flag that the next arg should be a prompt string */ 433 434 else if arg = "-prompt" | arg = "-pmt" 435 then prompt_pending = true; 436 437 /* disable request loop entry after processing the request str */ 438 439 else if arg = "-quit" | arg = "-no_request_loop" | arg = "-nrql" 440 then args.flags.request_loop = false; 441 442 /* flag that the next arg should be a request string */ 443 444 else if arg = "-request" | arg = "-rq" 445 then request_pending = true; 446 447 /* enable request loop entry after request processing */ 448 449 else if arg = "-request_loop" | arg = "-rql" 450 then args.flags.request_loop = true; 451 452 /* enable start_up.kermit execution */ 453 454 else if arg = "-start_up" | arg = "-su" 455 then args.flags.start_up = true; 456 457 /* otherwise complain since that is all the valid args */ 458 459 else call abort (error_table_$badopt, arg); 460 end; 461 462 /* if there were any supplementary args outstanding when we ran out */ 463 /* of command line arguments, complain and abort the subsystem */ 464 465 if request_pending 466 then call abort (error_table_$noarg, "Request expected."); 467 if profile_pending 468 then call abort (error_table_$noarg, "Profile pathname expected."); 469 if switchname_pending 470 then call abort (error_table_$noarg, "Switch name expected."); 471 if prompt_pending 472 then call abort (error_table_$noarg, "Prompt string expected."); 473 if debug_pending 474 then call abort (error_table_$noarg, "Debug path expected."); 475 476 end parse_command_line; 477 478 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 479 480 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 481 482 483 kermit_initialization: proc (argsp, infop); 484 485 /********************************************************************/ 486 /* */ 487 /*n Name: kermit_initialization internal */ 488 /*i Input: arg_info, info_ptr */ 489 /*f Function: initializes the subsystem_info structure, creates */ 490 /*f an ssu_ invocation, initializes the profile and */ 491 /*f abbrev state depending on the abbrev_flag and */ 492 /*f profile_path, and calls the ssu_ request */ 493 /*f processor to execute the request_string. */ 494 /*o Output: none */ 495 /* */ 496 /*l Written: 84-10-12 by Dean Elhard */ 497 /*l Modified: 84-11-01 by Dean Elhard to null iocbp in */ 498 /*l log_info immediately to reduce cleanup */ 499 /*l error window */ 500 /*l Modified: 84-11-08 by Dean Elhard to execute start_up */ 501 /* */ 502 /********************************************************************/ 503 504 /* arguments */ 505 506 dcl argsp ptr; 507 dcl infop ptr; 508 509 /* based */ 510 511 dcl 01 args aligned like kermit_args based (argsp); 512 dcl 01 info aligned like kermit_info based (infop); 513 dcl 01 log_info aligned like kermit_log_info 514 based (info.log_infop); 515 dcl 01 perm_modes aligned like kermit_perm_modes 516 based (info.perm_modesp); 517 dcl 01 temp_modes aligned like kermit_temp_modes 518 based (info.temp_modesp); 519 dcl 01 comm_info aligned like kermit_comm_info 520 based (info.comm_infop); 521 dcl sys_area area based (system_free_areap); 522 523 /* automatic */ 524 525 dcl dname char (168); 526 dcl ec fixed bin (35); 527 dcl ename char (32); 528 dcl system_free_areap ptr; 529 dcl profile_ptr ptr; 530 dcl prompt_mode bit (2); 531 532 /* get the area to allocate the databases in */ 533 534 system_free_areap = get_system_free_area_ (); 535 536 /* allocate the databases and set the version numbers */ 537 538 allocate log_info in (sys_area); 539 540 /* null iocb pointer to minimize error window */ 541 542 log_info.log_file.iocbp = null; 543 log_info.version = kermit_log_info_version; 544 545 allocate perm_modes in (sys_area); 546 perm_modes.version = kermit_perm_modes_version; 547 548 allocate temp_modes in (sys_area); 549 temp_modes.version = kermit_temp_modes_version; 550 551 allocate comm_info in (sys_area); 552 553 /* null input_buffer pointer to minimize error window */ 554 555 comm_info.input_buffer.bufferp = null; 556 comm_info.debug_segp = null; 557 comm_info.version = kermit_comm_info_version; 558 comm_info.server = "0"b; /* Initialize server flag */ 559 comm_info.transfer_modes_set = "0"b; /* Initialize transfer_modes_set flag */ 560 561 /* now create the ssu_ invocation */ 562 563 call ssu_$create_invocation (Subsystem_Name, Subsystem_Version, infop, 564 addr (ssu_request_tables_$standard_requests), 565 Subsystem_Info_Dir, info.sci_ptr, ec); 566 567 if ec ^= 0 568 then call abort (ec, "Unable to create subsystem invocation."); 569 570 /* add our request table to the subsystem */ 571 572 call ssu_$add_request_table (info.sci_ptr, addr (kermit_requests_$requests), 573 1, ec); 574 575 /* set the prompt string if required and set up the prompt mode */ 576 577 if ^args.flags.prompt_given 578 then args.prompt = Default_prompt; 579 580 call ssu_$set_prompt (info.sci_ptr, args.prompt); 581 582 if args.flags.prompt 583 then prompt_mode = PROMPT | PROMPT_AFTER_NULL_LINES; 584 else prompt_mode = DONT_PROMPT | PROMPT_AFTER_NULL_LINES; 585 586 call ssu_$set_prompt_mode (info.sci_ptr, prompt_mode); 587 588 /* find the profile if a non-standard profile was requested */ 589 590 if args.flags.profile_given 591 then do; 592 call expand_pathname_$add_suffix ((args.profile), "profile", dname, 593 ename, ec); 594 if ec ^= 0 595 then call abort (ec, (args.profile)); 596 call initiate_file_ (dname, ename, R_ACCESS, profile_ptr, (0), ec); 597 if profile_ptr = null 598 then if ec = error_table_$noentry 599 then call com_err_ (ec, Subsystem_Name, "^/^a does not exist.", 600 pathname_ (dname, ename)); 601 else call abort (ec, (args.profile)); 602 end; 603 else profile_ptr = null; 604 605 /* set the abbrev info regarding the profile use and initial state */ 606 607 call ssu_$set_abbrev_info (info.sci_ptr, profile_ptr, profile_ptr, 608 (args.flags.abbrev)); 609 610 /* if a switch was supplied, then make sure it exists and save */ 611 /* the iocb pointer for use by the communications stuff */ 612 613 if args.flags.switchname_given 614 then do; 615 call iox_$look_iocb ((args.switchname), comm_info.ft_iocbp, ec); 616 if ec ^= 0 617 then call abort (ec, (args.switchname)); 618 end; 619 else comm_info.ft_iocbp = iox_$user_io; 620 621 /* set the default modes in the permanent and temporary modes dbs */ 622 623 call kermit_mode_mgr_$store (infop, Permanent, Store_all, 624 addr (Perm_defaults), ec); 625 call kermit_mode_mgr_$store (infop, Temporary, Store_all, 626 addr (Temp_defaults), ec); 627 628 /* set up the initial logging state */ 629 630 log_info.flags.enabled = false; 631 log_info.flags.stats_valid = false; 632 633 /* get a temp-seg for use as an input buffer */ 634 635 call ssu_$get_temp_segment (info.sci_ptr, "buffer", comm_info.bufferp); 636 637 /* set up the rest of the communications status info */ 638 639 comm_info.bufferl = 0; 640 comm_info.old_modes = ""; 641 comm_info.old_framing_chars.start_char = ""; 642 comm_info.old_framing_chars.end_char = ""; 643 comm_info.old_wake_table.breaks (*) = false; 644 comm_info.old_wake_table.mbz = ""b; 645 646 /* set up the debug file if necessary */ 647 648 if args.flags.debug 649 then do; 650 call expand_pathname_ (args.debug_path, dname, ename, ec); 651 if ec ^= 0 652 then call abort (ec, args.debug_path); 653 call iox_$attach_name ("kermit.debug." || unique_chars_ ("0"b), 654 comm_info.debug_segp, "vfile_ " || pathname_ (dname, ename), 655 null(), ec); 656 call iox_$open (comm_info.debug_segp, Stream_output, "0"b, ec); 657 if ec ^= 0 658 then call abort (ec, pathname_ (dname, ename)); 659 end; 660 661 /* execute the start_up if requested */ 662 663 if args.flags.start_up 664 then do; 665 call ssu_$execute_start_up (info.sci_ptr, ec); 666 if ec = ssu_et_$subsystem_aborted 667 then call abort (ec, "^/Abort occurred while executing start_up."); 668 end; 669 670 /* lastly, execute the request string (if any) */ 671 672 if args.flags.request_given 673 then do; 674 call ssu_$execute_string (info.sci_ptr, (args.request), ec); 675 if ec = ssu_et_$subsystem_aborted 676 then args.request_loop = false; 677 end; 678 679 end kermit_initialization; 680 681 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 682 683 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 684 685 686 kermit_cleanup: proc (infop); 687 688 /********************************************************************/ 689 /* */ 690 /*n Name: kermit_cleanup internal */ 691 /*i Input: subsystem_info_ptr */ 692 /*f Function: frees the subsystem_info structure and destroys */ 693 /*f the ssu_ invocation */ 694 /*o Output: none */ 695 /* */ 696 /*l Written: 84-10-12 by Dean Elhard */ 697 /*l Modified: 84-11-01 by Dean Elhard to close log_file on */ 698 /*l cleanup if open. */ 699 /* */ 700 /********************************************************************/ 701 702 /* arguments */ 703 704 dcl infop ptr; 705 706 /* structures */ 707 708 dcl 01 comm_info aligned like kermit_comm_info 709 based (info.comm_infop); 710 dcl 01 info aligned like kermit_info based (infop); 711 dcl 01 log_info aligned like kermit_log_info 712 based (info.log_infop); 713 dcl 01 perm_modes aligned like kermit_perm_modes 714 based (info.perm_modesp); 715 dcl sys_area area based (system_free_areap); 716 dcl 01 temp_modes aligned like kermit_temp_modes 717 based (info.temp_modesp); 718 719 /* automatic */ 720 721 dcl system_free_areap ptr; 722 723 /* find the area to free the stuff into */ 724 725 system_free_areap = get_system_free_area_ (); 726 727 /* free each of the databases */ 728 729 if info.comm_infop ^= null 730 then do; 731 732 /* free the input buffer temp-seg */ 733 734 if comm_info.input_buffer.bufferp ^= null 735 then call ssu_$release_temp_segment (info.sci_ptr, 736 comm_info.input_buffer.bufferp); 737 738 /* terminate and set the bit_count on the debug file */ 739 740 if comm_info.debug_segp ^= null 741 then do; 742 call iox_$close (comm_info.debug_segp, ec); 743 call iox_$detach_iocb (comm_info.debug_segp, ec); 744 end; 745 746 /* and then free the communications database */ 747 748 free comm_info in (sys_area); 749 end; 750 751 if info.perm_modesp ^= null 752 then free perm_modes in (sys_area); 753 if info.temp_modesp ^= null 754 then free temp_modes in (sys_area); 755 if info.log_infop ^= null 756 then do; 757 758 /* close and detach the log_file */ 759 760 call kermit_log_mgr_$disable (infop, ec); 761 call kermit_log_mgr_$close_log (infop, ec); 762 763 /* free the log_info database */ 764 765 free log_info in (sys_area); 766 end; 767 768 /* lastly, destroy the ssu_ invocation */ 769 770 if info.sci_ptr ^= null 771 then call ssu_$destroy_invocation (info.sci_ptr); 772 773 end kermit_cleanup; 774 775 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 776 777 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 778 779 780 abort: proc (code, message); 781 782 /********************************************************************/ 783 /* */ 784 /*n Name: abort internal */ 785 /*i Input: error_code, message */ 786 /*f Function: prints a message constructed from the error code */ 787 /*f and message and then aborts the subsystem */ 788 /*o Output: none */ 789 /* */ 790 /*l Written: 84-10-14 by Dean Elhard */ 791 /* */ 792 /********************************************************************/ 793 794 /* parameters */ 795 796 dcl code fixed bin (35); 797 dcl message char (*); 798 799 /* cleanup the subsystem before we leave */ 800 801 call kermit_cleanup (addr (info)); 802 803 call com_err_ (code, Subsystem_Name, message); 804 goto ABORT; 805 806 end abort; 807 808 ABORT: 809 return; 810 811 end kermit; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/14/90 0915.0 kermit.pl1 >spec>install>1039>kermit.pl1 155 1 04/11/85 1552.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 157 2 02/02/78 1329.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 159 3 07/07/88 2141.4 kermit_info.incl.pl1 >ldd>include>kermit_info.incl.pl1 161 4 11/20/84 1451.4 kermit_dcls.incl.pl1 >ldd>include>kermit_dcls.incl.pl1 163 5 07/07/88 2141.4 kermit_mode_info.incl.pl1 >ldd>include>kermit_mode_info.incl.pl1 165 6 04/13/82 1720.2 ssu_prompt_modes.incl.pl1 >ldd>include>ssu_prompt_modes.incl.pl1 167 7 04/06/83 1339.4 terminate_file.incl.pl1 >ldd>include>terminate_file.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. DONT_PROMPT constant bit(1) initial packed unaligned dcl 6-7 ref 584 Default_prompt 000026 constant char(29) initial packed unaligned dcl 64 ref 577 PROMPT constant bit(1) initial packed unaligned dcl 6-6 ref 582 PROMPT_AFTER_NULL_LINES constant bit(2) initial packed unaligned dcl 6-9 ref 582 584 Perm_defaults 000000 constant structure level 1 dcl 5-48 set ref 623 623 Permanent 000163 constant fixed bin(17,0) initial dcl 5-21 set ref 623* R_ACCESS 000114 constant bit(3) initial packed unaligned dcl 1-11 set ref 596* Store_all 000161 constant fixed bin(17,0) initial array dcl 5-24 set ref 623* 625* Stream_output 000162 constant fixed bin(17,0) initial dcl 2-15 set ref 656* Subsystem_Info_Dir 000036 constant char(168) initial packed unaligned dcl 62 set ref 563* Subsystem_Name 000112 constant char(6) initial packed unaligned dcl 58 set ref 563* 597* 803* Subsystem_Version 000110 constant char(3) initial packed unaligned dcl 60 set ref 563* Temp_defaults 000005 constant structure level 1 dcl 5-95 set ref 625 625 Temporary 000162 constant fixed bin(17,0) initial dcl 5-22 set ref 625* abbrev 0(01) based bit(1) level 3 in structure "args" packed packed unaligned dcl 287 in procedure "parse_command_line" set ref 309* 360* 399* 414* abbrev 0(01) based bit(1) level 3 in structure "args" packed packed unaligned dcl 511 in procedure "kermit_initialization" ref 607 addr builtin function dcl 149 ref 184 184 190 190 194 194 194 194 201 201 563 563 572 572 623 623 625 625 801 801 arg based char packed unaligned dcl 291 set ref 345 349 356 361 368 372 379 383 390 394 399 399 404 404 409 409 414 414 419 419 424 424 424 429 429 434 434 439 439 439 444 444 449 449 454 454 459* arg_listp 000474 automatic pointer dcl 140 in procedure "kermit" set ref 188* 190* arg_listp parameter pointer dcl 282 in procedure "parse_command_line" set ref 210 331* 337* argl 000514 automatic fixed bin(21,0) dcl 295 set ref 337* 345 349 356 361 368 372 379 383 390 394 399 399 404 404 409 409 414 414 419 419 424 424 424 429 429 434 434 439 439 439 444 444 449 449 454 454 459 459 argp 000516 automatic pointer dcl 296 set ref 337* 345 349 356 361 368 372 379 383 390 394 399 399 404 404 409 409 414 414 419 419 424 424 424 429 429 434 434 439 439 439 444 444 449 449 454 454 459 args based structure level 1 dcl 511 in procedure "kermit_initialization" args based structure level 1 dcl 287 in procedure "parse_command_line" argsp parameter pointer dcl 506 in procedure "kermit_initialization" ref 483 577 577 580 582 590 592 594 601 607 613 615 616 648 650 651 663 672 674 675 argsp parameter pointer dcl 283 in procedure "parse_command_line" ref 210 308 309 310 311 312 313 314 315 316 317 318 319 320 321 348 349 359 360 361 371 372 382 383 393 394 399 414 419 424 439 449 454 breaks 214 based bit(1) array level 3 packed packed unaligned dcl 519 set ref 643* bufferl 12 based fixed bin(21,0) level 3 dcl 519 set ref 639* bufferp 10 based pointer level 3 in structure "comm_info" dcl 708 in procedure "kermit_cleanup" set ref 734 734* bufferp 10 based pointer level 3 in structure "comm_info" dcl 519 in procedure "kermit_initialization" set ref 555* 635* cleanup 000500 stack reference condition dcl 145 ref 184 code parameter fixed bin(35,0) dcl 796 set ref 780 803* com_err_ 000010 constant entry external dcl 69 ref 597 803 comm_info based structure level 1 dcl 519 in procedure "kermit_initialization" set ref 551 comm_info based structure level 1 dcl 708 in procedure "kermit_cleanup" set ref 748 comm_infop 12 based pointer level 2 in structure "info" dcl 512 in procedure "kermit_initialization" set ref 551* 555 556 557 558 559 615 619 635 639 640 641 642 643 644 653 656 comm_infop 12 000100 automatic pointer level 2 in structure "info" dcl 119 in procedure "kermit" set ref 182* comm_infop 12 based pointer level 2 in structure "info" dcl 710 in procedure "kermit_cleanup" ref 729 734 734 740 742 743 748 cu_$arg_count_rel 000012 constant entry external dcl 70 ref 331 cu_$arg_list_ptr 000014 constant entry external dcl 71 ref 188 cu_$arg_ptr_rel 000016 constant entry external dcl 72 ref 337 debug 0(04) based bit(1) level 3 in structure "args" packed packed unaligned dcl 287 in procedure "parse_command_line" set ref 312* 393* debug 0(04) based bit(1) level 3 in structure "args" packed packed unaligned dcl 511 in procedure "kermit_initialization" ref 648 debug_path 305 based char(168) level 2 in structure "args" packed packed unaligned dcl 287 in procedure "parse_command_line" set ref 321* 394* debug_path 305 based char(168) level 2 in structure "args" packed packed unaligned dcl 511 in procedure "kermit_initialization" set ref 650* 651* debug_pending 000520 automatic bit(1) packed unaligned dcl 297 set ref 327* 388 392* 404* 473 debug_segp 4 based pointer level 2 in structure "comm_info" dcl 708 in procedure "kermit_cleanup" set ref 740 742* 743* debug_segp 4 based pointer level 2 in structure "comm_info" dcl 519 in procedure "kermit_initialization" set ref 556* 653* 656* dname 000540 automatic char(168) packed unaligned dcl 525 set ref 592* 596* 597* 597* 650* 653* 657* 657* ec 000476 automatic fixed bin(35,0) dcl 141 in procedure "kermit" set ref 198* 742* 743* 760* 761* ec 000521 automatic fixed bin(35,0) dcl 298 in procedure "parse_command_line" set ref 331* 332 332* 337* 338 338* ec 000612 automatic fixed bin(35,0) dcl 526 in procedure "kermit_initialization" set ref 563* 567 567* 572* 592* 594 594* 596* 597 597* 601* 615* 616 616* 623* 625* 650* 651 651* 653* 656* 657 657* 665* 666 666* 674* 675 enabled 4 based bit(1) level 4 packed packed unaligned dcl 513 set ref 630* ename 000613 automatic char(32) packed unaligned dcl 527 set ref 592* 596* 597* 597* 650* 653* 657* 657* end_char 213(09) based char(1) level 3 packed packed unaligned dcl 519 set ref 642* error_table_$badopt 000074 external static fixed bin(35,0) dcl 105 set ref 459* error_table_$noarg 000076 external static fixed bin(35,0) dcl 106 set ref 345* 356* 368* 379* 390* 465* 467* 469* 471* 473* error_table_$noentry 000100 external static fixed bin(35,0) dcl 107 ref 597 expand_pathname_ 000020 constant entry external dcl 74 ref 650 expand_pathname_$add_suffix 000022 constant entry external dcl 76 ref 592 false constant bit(1) initial packed unaligned dcl 56 ref 309 312 313 314 315 316 323 324 325 326 327 347 358 370 381 392 414 419 424 439 630 631 643 675 flags 000114 automatic structure level 2 in structure "kermit_args" dcl 120 in procedure "kermit" flags based structure level 2 in structure "args" dcl 287 in procedure "parse_command_line" flags based structure level 2 in structure "args" dcl 511 in procedure "kermit_initialization" flags 4 based structure level 3 in structure "log_info" dcl 513 in procedure "kermit_initialization" ft_iocbp 2 based pointer level 2 dcl 519 set ref 615* 619* get_system_free_area_ 000024 constant entry external dcl 79 ref 534 725 i 000522 automatic fixed bin(17,0) dcl 299 set ref 335* 337* index builtin function dcl 150 ref 345 356 368 379 390 info based structure level 1 dcl 512 in procedure "kermit_initialization" info based structure level 1 dcl 710 in procedure "kermit_cleanup" info 000100 automatic structure level 1 dcl 119 in procedure "kermit" set ref 184 184 194 194 201 201 801 801 infop parameter pointer dcl 704 in procedure "kermit_cleanup" set ref 686 729 734 734 734 740 742 743 748 751 751 753 753 755 760* 761* 765 770 770 infop parameter pointer dcl 507 in procedure "kermit_initialization" set ref 483 538 542 543 545 546 548 549 551 555 556 557 558 559 563* 563 572 580 586 607 615 619 623* 625* 630 631 635 635 639 640 641 642 643 644 653 656 665 674 initiate_file_ 000026 constant entry external dcl 80 ref 596 input_buffer 10 based structure level 2 in structure "comm_info" dcl 519 in procedure "kermit_initialization" input_buffer 10 based structure level 2 in structure "comm_info" dcl 708 in procedure "kermit_cleanup" iocbp 2 based pointer level 3 dcl 513 set ref 542* iox_$attach_name 000030 constant entry external dcl 82 ref 653 iox_$close 000032 constant entry external dcl 83 ref 742 iox_$detach_iocb 000034 constant entry external dcl 84 ref 743 iox_$look_iocb 000036 constant entry external dcl 85 ref 615 iox_$open 000040 constant entry external dcl 86 ref 656 iox_$user_input 000102 external static pointer dcl 108 set ref 198* iox_$user_io 000104 external static pointer dcl 109 ref 619 kermit_args 000114 automatic structure level 1 dcl 120 set ref 190 190 194 194 kermit_comm_info based structure level 1 dcl 3-176 kermit_comm_info_version 000014 constant char(8) initial packed unaligned dcl 3-206 ref 557 kermit_info based structure level 1 dcl 3-52 kermit_info_version 000024 constant char(8) initial packed unaligned dcl 3-61 ref 177 kermit_log_info based structure level 1 dcl 3-122 kermit_log_info_version 000016 constant char(8) initial packed unaligned dcl 3-133 ref 543 kermit_log_mgr_$close_log 000114 constant entry external dcl 4-37 ref 761 kermit_log_mgr_$disable 000116 constant entry external dcl 4-42 ref 760 kermit_mode_mgr_$store 000120 constant entry external dcl 4-90 ref 623 625 kermit_perm_mode_count constant fixed bin(17,0) initial dcl 3-83 ref 545 751 kermit_perm_modes based structure level 1 dcl 3-77 kermit_perm_modes_version 000022 constant char(8) initial packed unaligned dcl 3-84 ref 546 kermit_requests_$requests 000106 external static bit(36) dcl 110 set ref 572 572 kermit_stats_info based structure level 1 dcl 3-147 kermit_temp_mode_count constant fixed bin(17,0) initial dcl 3-105 ref 548 753 kermit_temp_modes based structure level 1 dcl 3-99 kermit_temp_modes_version 000020 constant char(8) initial packed unaligned dcl 3-106 ref 549 log_file 2 based structure level 2 dcl 513 log_info based structure level 1 dcl 711 in procedure "kermit_cleanup" ref 765 log_info based structure level 1 dcl 513 in procedure "kermit_initialization" set ref 538 log_infop 10 based pointer level 2 in structure "info" dcl 710 in procedure "kermit_cleanup" ref 755 765 log_infop 10 000100 automatic pointer level 2 in structure "info" dcl 119 in procedure "kermit" set ref 181* log_infop 10 based pointer level 2 in structure "info" dcl 512 in procedure "kermit_initialization" set ref 538* 542 543 630 631 mbz 217(20) based bit(16) level 3 packed packed unaligned dcl 519 set ref 644* message parameter char packed unaligned dcl 797 set ref 780 803* nargs 000523 automatic fixed bin(17,0) dcl 300 set ref 331* 335 null builtin function dcl 151 ref 178 179 180 181 182 542 555 556 597 603 653 653 729 734 740 751 753 755 770 old_framing_chars 213 based structure level 2 dcl 519 old_modes 13 based char(512) level 2 packed packed unaligned dcl 519 set ref 640* old_wake_table 214 based structure level 2 dcl 519 pathname_ 000042 constant entry external dcl 87 ref 597 597 653 657 657 perm_modes based structure level 1 dcl 515 in procedure "kermit_initialization" set ref 545 perm_modes based structure level 1 dcl 713 in procedure "kermit_cleanup" ref 751 perm_modesp 4 based pointer level 2 in structure "info" dcl 512 in procedure "kermit_initialization" set ref 545* 546 perm_modesp 4 based pointer level 2 in structure "info" dcl 710 in procedure "kermit_cleanup" ref 751 751 perm_modesp 4 000100 automatic pointer level 2 in structure "info" dcl 119 in procedure "kermit" set ref 179* profile 22 based char(168) level 2 in structure "args" dcl 287 in procedure "parse_command_line" set ref 318* 361* profile 22 based char(168) level 2 in structure "args" dcl 511 in procedure "kermit_initialization" ref 592 594 601 profile_given 0(06) based bit(1) level 3 in structure "args" packed packed unaligned dcl 511 in procedure "kermit_initialization" ref 590 profile_given 0(06) based bit(1) level 3 in structure "args" packed packed unaligned dcl 287 in procedure "parse_command_line" set ref 314* 359* profile_pending 000524 automatic bit(1) packed unaligned dcl 301 set ref 323* 354 358* 429* 467 profile_ptr 000626 automatic pointer dcl 529 set ref 596* 597 603* 607* 607* prompt 1 based varying char(64) level 2 in structure "args" dcl 287 in procedure "parse_command_line" set ref 317* 349* prompt 0(02) based bit(1) level 3 in structure "args" packed packed unaligned dcl 287 in procedure "parse_command_line" set ref 310* 419* prompt 1 based varying char(64) level 2 in structure "args" dcl 511 in procedure "kermit_initialization" set ref 577* 580* prompt 0(02) based bit(1) level 3 in structure "args" packed packed unaligned dcl 511 in procedure "kermit_initialization" ref 582 prompt_given 0(05) based bit(1) level 3 in structure "args" packed packed unaligned dcl 511 in procedure "kermit_initialization" ref 577 prompt_given 0(05) based bit(1) level 3 in structure "args" packed packed unaligned dcl 287 in procedure "parse_command_line" set ref 313* 348* prompt_mode 000630 automatic bit(2) packed unaligned dcl 530 set ref 582* 584* 586* prompt_pending 000525 automatic bit(1) packed unaligned dcl 302 set ref 324* 343 347* 434* 471 request 104 based varying char(512) level 2 in structure "args" dcl 511 in procedure "kermit_initialization" ref 674 request 104 based varying char(512) level 2 in structure "args" dcl 287 in procedure "parse_command_line" set ref 320* 372* request_given 0(08) based bit(1) level 3 in structure "args" packed packed unaligned dcl 287 in procedure "parse_command_line" set ref 316* 371* request_given 0(08) based bit(1) level 3 in structure "args" packed packed unaligned dcl 511 in procedure "kermit_initialization" ref 672 request_loop based bit(1) level 3 in structure "args" packed packed unaligned dcl 287 in procedure "parse_command_line" set ref 308* 439* 449* request_loop based bit(1) level 3 in structure "args" packed packed unaligned dcl 511 in procedure "kermit_initialization" set ref 675* request_loop 000114 automatic bit(1) level 3 in structure "kermit_args" packed packed unaligned dcl 120 in procedure "kermit" set ref 198 request_pending 000526 automatic bit(1) packed unaligned dcl 303 set ref 325* 366 370* 444* 465 sci_ptr 2 000100 automatic pointer level 2 in structure "info" dcl 119 in procedure "kermit" set ref 178* 198* sci_ptr 2 based pointer level 2 in structure "info" dcl 710 in procedure "kermit_cleanup" set ref 734* 770 770* sci_ptr 2 based pointer level 2 in structure "info" dcl 512 in procedure "kermit_initialization" set ref 563* 572* 580* 586* 607* 635* 665* 674* server 213(18) based bit(1) level 3 packed packed unaligned dcl 519 set ref 558* ssu_$add_request_table 000044 constant entry external dcl 88 ref 572 ssu_$create_invocation 000046 constant entry external dcl 89 ref 563 ssu_$destroy_invocation 000050 constant entry external dcl 91 ref 770 ssu_$execute_start_up 000052 constant entry external dcl 92 ref 665 ssu_$execute_string 000054 constant entry external dcl 93 ref 674 ssu_$get_temp_segment 000056 constant entry external dcl 94 ref 635 ssu_$listen 000060 constant entry external dcl 95 ref 198 ssu_$release_temp_segment 000062 constant entry external dcl 96 ref 734 ssu_$set_abbrev_info 000064 constant entry external dcl 98 ref 607 ssu_$set_prompt 000066 constant entry external dcl 99 ref 580 ssu_$set_prompt_mode 000070 constant entry external dcl 100 ref 586 ssu_et_$subsystem_aborted 000110 external static fixed bin(35,0) dcl 112 ref 666 675 ssu_request_tables_$standard_requests 000112 external static bit(36) dcl 114 set ref 563 563 start_char 213 based char(1) level 3 packed packed unaligned dcl 519 set ref 641* start_up 0(03) based bit(1) level 3 in structure "args" packed packed unaligned dcl 287 in procedure "parse_command_line" set ref 311* 424* 454* start_up 0(03) based bit(1) level 3 in structure "args" packed packed unaligned dcl 511 in procedure "kermit_initialization" ref 663 stats_valid 4(01) based bit(1) level 4 packed packed unaligned dcl 513 set ref 631* switchname 74 based char(32) level 2 in structure "args" dcl 287 in procedure "parse_command_line" set ref 319* 383* switchname 74 based char(32) level 2 in structure "args" dcl 511 in procedure "kermit_initialization" ref 615 616 switchname_given 0(07) based bit(1) level 3 in structure "args" packed packed unaligned dcl 287 in procedure "parse_command_line" set ref 315* 382* switchname_given 0(07) based bit(1) level 3 in structure "args" packed packed unaligned dcl 511 in procedure "kermit_initialization" ref 613 switchname_pending 000527 automatic bit(1) packed unaligned dcl 304 set ref 326* 377 381* 409* 469 sys_area based area(1024) dcl 521 in procedure "kermit_initialization" ref 538 545 548 551 sys_area based area(1024) dcl 715 in procedure "kermit_cleanup" ref 748 751 753 765 system_free_areap 000624 automatic pointer dcl 528 in procedure "kermit_initialization" set ref 534* 538 545 548 551 system_free_areap 000100 automatic pointer dcl 721 in procedure "kermit_cleanup" set ref 725* 748 751 753 765 temp_modes based structure level 1 dcl 517 in procedure "kermit_initialization" set ref 548 temp_modes based structure level 1 dcl 716 in procedure "kermit_cleanup" ref 753 temp_modesp 6 based pointer level 2 in structure "info" dcl 710 in procedure "kermit_cleanup" ref 753 753 temp_modesp 6 000100 automatic pointer level 2 in structure "info" dcl 119 in procedure "kermit" set ref 180* temp_modesp 6 based pointer level 2 in structure "info" dcl 512 in procedure "kermit_initialization" set ref 548* 549 transfer_modes_set 213(19) based bit(1) level 3 packed packed unaligned dcl 519 set ref 559* true 000114 constant bit(1) initial packed unaligned dcl 55 ref 308 310 311 348 359 360 371 382 393 399 404 409 429 434 444 449 454 unique_chars_ 000072 constant entry external dcl 101 ref 653 version based char(8) level 2 in structure "log_info" dcl 513 in procedure "kermit_initialization" set ref 543* version 000100 automatic char(8) level 2 in structure "info" dcl 119 in procedure "kermit" set ref 177* version based char(8) level 2 in structure "temp_modes" dcl 517 in procedure "kermit_initialization" set ref 549* version based char(8) level 2 in structure "comm_info" dcl 519 in procedure "kermit_initialization" set ref 557* version based char(8) level 2 in structure "perm_modes" dcl 515 in procedure "kermit_initialization" set ref 546* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Capabilities internal static fixed bin(17,0) initial dcl 5-46 Check_type internal static fixed bin(17,0) initial dcl 5-36 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 DONT_PROMPT_AFTER_NULL_LINES internal static bit(2) initial packed unaligned dcl 6-10 DONT_PROMPT_IF_TYPEAHEAD internal static bit(3) initial packed unaligned dcl 6-13 Direct_input internal static fixed bin(17,0) initial dcl 2-15 Direct_output internal static fixed bin(17,0) initial dcl 2-15 Direct_update internal static fixed bin(17,0) initial dcl 2-15 E_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Eight_bit_char internal static fixed bin(17,0) initial dcl 5-33 Eol_char internal static fixed bin(17,0) initial dcl 5-31 Ext_Headers internal static bit(9) initial packed unaligned dcl 5-120 File_type internal static fixed bin(17,0) initial dcl 5-40 File_warning internal static fixed bin(17,0) initial dcl 5-39 G_capabilities internal static fixed bin(17,0) initial dcl 5-93 G_check_type internal static fixed bin(17,0) initial dcl 5-86 G_eight_bit_char internal static fixed bin(17,0) initial dcl 5-83 G_parity internal static fixed bin(17,0) initial dcl 5-87 G_repeat_char internal static fixed bin(17,0) initial dcl 5-84 G_start_char internal static fixed bin(17,0) initial dcl 5-85 G_window internal static fixed bin(17,0) initial dcl 5-88 I_eol_char internal static fixed bin(17,0) initial dcl 5-75 I_max_lenx1 internal static fixed bin(17,0) initial dcl 5-89 I_max_lenx2 internal static fixed bin(17,0) initial dcl 5-90 I_maxl internal static fixed bin(17,0) initial dcl 5-71 I_n_pads internal static fixed bin(17,0) initial dcl 5-73 I_pad_char internal static fixed bin(17,0) initial dcl 5-74 I_quote_char internal static fixed bin(17,0) initial dcl 5-76 I_timeout internal static fixed bin(17,0) initial dcl 5-72 Incomplete internal static fixed bin(17,0) initial dcl 5-38 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 2-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 2-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 2-15 Line_byte_size internal static fixed bin(17,0) initial dcl 5-42 M_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Max_len_ext_1 internal static fixed bin(17,0) initial dcl 5-44 Max_len_ext_2 internal static fixed bin(17,0) initial dcl 5-45 Maxl internal static fixed bin(17,0) initial dcl 5-27 N_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_pads internal static fixed bin(17,0) initial dcl 5-29 O_eol_char internal static fixed bin(17,0) initial dcl 5-81 O_max_lenx1 internal static fixed bin(17,0) initial dcl 5-91 O_max_lenx2 internal static fixed bin(17,0) initial dcl 5-92 O_maxl internal static fixed bin(17,0) initial dcl 5-77 O_n_pads internal static fixed bin(17,0) initial dcl 5-79 O_pad_char internal static fixed bin(17,0) initial dcl 5-80 O_quote_char internal static fixed bin(17,0) initial dcl 5-82 O_timeout internal static fixed bin(17,0) initial dcl 5-78 PROMPT_IF_TYPEAHEAD internal static bit(3) initial packed unaligned dcl 6-12 Pad_char internal static fixed bin(17,0) initial dcl 5-30 Parity internal static fixed bin(17,0) initial dcl 5-37 Quote_char internal static fixed bin(17,0) initial dcl 5-32 REW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Repeat_char internal static fixed bin(17,0) initial dcl 5-34 Retrieve_all internal static fixed bin(17,0) initial array dcl 5-25 Retry_threshold internal static fixed bin(17,0) initial dcl 5-41 SA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 S_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Sequential_input internal static fixed bin(17,0) initial dcl 2-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 2-15 Sequential_output internal static fixed bin(17,0) initial dcl 2-15 Sequential_update internal static fixed bin(17,0) initial dcl 2-15 Start_char internal static fixed bin(17,0) initial dcl 5-35 Stream_input internal static fixed bin(17,0) initial dcl 2-15 Stream_input_output internal static fixed bin(17,0) initial dcl 2-15 TERM_FILE_BC internal static bit(2) initial packed unaligned dcl 7-12 TERM_FILE_DELETE internal static bit(5) initial packed unaligned dcl 7-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial packed unaligned dcl 7-16 TERM_FILE_TERM internal static bit(3) initial packed unaligned dcl 7-14 TERM_FILE_TRUNC internal static bit(1) initial packed unaligned dcl 7-11 TERM_FILE_TRUNC_BC internal static bit(2) initial packed unaligned dcl 7-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial packed unaligned dcl 7-15 Timeout internal static fixed bin(17,0) initial dcl 5-28 W_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Window_size internal static fixed bin(17,0) initial dcl 5-43 iox_modes internal static char(24) initial array dcl 2-6 kermit_bit_constants internal static structure level 1 packed packed unaligned dcl 3-27 kermit_char_constants based structure level 1 packed packed unaligned dcl 3-31 kermit_comm_infop automatic pointer dcl 3-205 kermit_comm_mgr_$flush_input 000000 constant entry external dcl 4-15 kermit_comm_mgr_$reset_line_modes 000000 constant entry external dcl 4-20 kermit_comm_mgr_$set_line_modes 000000 constant entry external dcl 4-25 kermit_fixed_constants based structure level 1 packed packed unaligned dcl 3-35 kermit_get_filenames_ 000000 constant entry external dcl 4-30 kermit_infop automatic pointer dcl 3-60 kermit_log_infop automatic pointer dcl 3-132 kermit_log_mgr_$display_stats 000000 constant entry external dcl 4-46 kermit_log_mgr_$enable 000000 constant entry external dcl 4-51 kermit_log_mgr_$log_message 000000 constant entry external dcl 4-55 kermit_log_mgr_$open_log 000000 constant entry external dcl 4-60 kermit_log_mgr_$start 000000 constant entry external dcl 4-66 kermit_log_mgr_$stop 000000 constant entry external dcl 4-70 kermit_mode_mgr_$get 000000 constant entry external dcl 4-74 kermit_mode_mgr_$retrieve 000000 constant entry external dcl 4-78 kermit_mode_mgr_$set 000000 constant entry external dcl 4-86 kermit_pad_$receive 000000 constant entry external dcl 4-97 kermit_pad_$send 000000 constant entry external dcl 4-108 kermit_perm_modesp automatic pointer dcl 3-82 kermit_receive_$receive_from_remote 000000 constant entry external dcl 4-118 kermit_send_$send_to_remote 000000 constant entry external dcl 4-128 kermit_server_ 000000 constant entry external dcl 4-138 kermit_stats_infop automatic pointer dcl 3-160 kermit_temp_modesp automatic pointer dcl 3-104 kermit_xfer_modes_$check_params 000000 constant entry external dcl 4-144 kermit_xfer_modes_$get_local_params 000000 constant entry external dcl 4-157 kermit_xfer_modes_$init 000000 constant entry external dcl 4-152 kermit_xfer_modes_$process_params 000000 constant entry external dcl 4-166 short_iox_modes internal static char(4) initial array dcl 2-12 terminate_file_switches based structure level 1 packed packed unaligned dcl 7-4 NAMES DECLARED BY EXPLICIT CONTEXT. ABORT 000475 constant label dcl 808 ref 804 abort 003401 constant entry internal dcl 780 ref 332 338 345 356 368 379 390 459 465 467 469 471 473 567 594 601 616 651 657 666 kermit 000361 constant entry external dcl 26 kermit_cleanup 003164 constant entry internal dcl 686 ref 184 201 801 kermit_initialization 001610 constant entry internal dcl 483 ref 194 parse_command_line 000476 constant entry internal dcl 210 ref 190 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4254 4376 3574 4264 Length 5002 3574 122 367 460 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME kermit 634 external procedure is an external procedure. on unit on line 184 72 on unit parse_command_line internal procedure shares stack frame of external procedure kermit. kermit_initialization internal procedure shares stack frame of external procedure kermit. kermit_cleanup 76 internal procedure is called by several nonquick procedures. abort internal procedure shares stack frame of external procedure kermit. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME kermit 000100 info kermit 000114 kermit_args kermit 000474 arg_listp kermit 000476 ec kermit 000514 argl parse_command_line 000516 argp parse_command_line 000520 debug_pending parse_command_line 000521 ec parse_command_line 000522 i parse_command_line 000523 nargs parse_command_line 000524 profile_pending parse_command_line 000525 prompt_pending parse_command_line 000526 request_pending parse_command_line 000527 switchname_pending parse_command_line 000540 dname kermit_initialization 000612 ec kermit_initialization 000613 ename kermit_initialization 000624 system_free_areap kermit_initialization 000626 profile_ptr kermit_initialization 000630 prompt_mode kermit_initialization kermit_cleanup 000100 system_free_areap kermit_cleanup THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op shorten_stack ext_entry int_entry op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count_rel cu_$arg_list_ptr cu_$arg_ptr_rel expand_pathname_ expand_pathname_$add_suffix get_system_free_area_ initiate_file_ iox_$attach_name iox_$close iox_$detach_iocb iox_$look_iocb iox_$open kermit_log_mgr_$close_log kermit_log_mgr_$disable kermit_mode_mgr_$store pathname_ ssu_$add_request_table ssu_$create_invocation ssu_$destroy_invocation ssu_$execute_start_up ssu_$execute_string ssu_$get_temp_segment ssu_$listen ssu_$release_temp_segment ssu_$set_abbrev_info ssu_$set_prompt ssu_$set_prompt_mode unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$noarg error_table_$noentry iox_$user_input iox_$user_io kermit_requests_$requests ssu_et_$subsystem_aborted ssu_request_tables_$standard_requests LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 26 000360 177 000366 178 000370 179 000372 180 000373 181 000374 182 000375 184 000376 188 000425 190 000434 194 000440 198 000446 201 000464 203 000474 808 000475 210 000476 308 000500 309 000503 310 000505 311 000507 312 000511 313 000513 314 000515 315 000517 316 000521 317 000523 318 000525 319 000530 320 000533 321 000534 323 000537 324 000540 325 000541 326 000542 327 000543 331 000544 332 000560 335 000565 337 000575 338 000615 343 000622 345 000624 347 000663 348 000664 349 000670 350 000702 354 000703 356 000705 358 000741 359 000742 360 000746 361 000750 362 000756 366 000757 368 000761 370 001015 371 001016 372 001022 373 001034 377 001035 379 001037 381 001076 382 001077 383 001103 384 001111 388 001112 390 001114 392 001153 393 001154 394 001160 395 001166 399 001167 404 001206 409 001221 414 001234 419 001251 424 001266 429 001307 434 001322 439 001335 444 001356 449 001371 454 001406 459 001423 460 001442 465 001444 467 001466 469 001510 471 001535 473 001562 476 001607 483 001610 534 001612 538 001621 542 001631 543 001636 545 001644 546 001656 548 001664 549 001676 551 001704 555 001714 556 001721 557 001725 558 001733 559 001735 563 001737 567 002000 572 002010 577 002034 580 002047 582 002063 584 002074 586 002101 590 002120 592 002125 594 002164 596 002177 597 002235 601 002315 602 002326 603 002327 607 002331 613 002355 615 002362 616 002412 618 002425 619 002426 623 002435 625 002470 630 002523 631 002531 635 002533 639 002556 640 002563 641 002566 642 002570 643 002572 644 002612 648 002617 650 002623 651 002650 653 002671 656 003002 657 003025 663 003052 665 003057 666 003076 672 003110 674 003115 675 003151 679 003162 686 003163 725 003171 729 003177 734 003206 740 003224 742 003234 743 003246 748 003264 751 003271 753 003305 755 003321 760 003330 761 003342 765 003355 770 003362 773 003400 780 003401 801 003412 803 003422 804 003445 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved