COMPILATION LISTING OF SEGMENT kermit_remote_requests_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-05-05_1830.60_Fri_mdt Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 6* * * 7* *********************************************************** */ 8 9 10 /****^ HISTORY COMMENTS: 11* 1) change(87-11-24,Huen), approve(87-11-24,MCR7803), audit(87-12-07,RWaters), 12* install(88-09-16,MR12.2-1113): 13* Fix kermit error 12. 14* 2) change(89-01-02,Huen), approve(89-01-02,MCR8027), audit(89-01-25,Lee), 15* install(89-03-01,MR12.3-1020): 16* Fix kermit bugs: PC_File_Transfer 18, 20, and 23. 17* END HISTORY COMMENTS */ 18 19 20 kermit_remote_requests_: proc; 21 22 /********************************************************************/ 23 /* */ 24 /*n Name: kermit_remote_requests_ */ 25 /* */ 26 /*d This module contains the kermit requests that are used to */ 27 /*d request operations from a remote kermit server. */ 28 /* */ 29 /*l Written: 84-11-11 by Dean Elhard */ 30 /*l Modified: 84-01-21 by Maureen Mallmes */ 31 /*l Added a quit handler, handle_quit. See */ 32 /*l error #5 in the Kermit error list. */ 33 /*l Added a cleanup handler, cleanup_modes */ 34 /*l Modified: 86-10-14 by Don Kozlowski - Use rtrim to remove */ 35 /*l trailing blanks of remote_filename */ 36 /*l (kermit12) */ 37 /* */ 38 /**********************************************************************/ 39 40 /* constants */ 41 42 dcl true bit (1) static options (constant) init ("1"b); 43 dcl false bit (1) static options (constant) init ("0"b); 44 45 dcl Ack_reqd bit (1) static options (constant) init ("1"b); 46 dcl No_ack bit (1) static options (constant) init ("0"b); 47 48 dcl Ack_packet_type char (1) static options (constant) init ("Y"); 49 dcl Nak_packet_type char (1) static options (constant) init ("N"); 50 dcl Error_packet_type char (1) static options (constant) init ("E"); 51 dcl Generic_packet_type char (1) static options (constant) init ("G"); 52 dcl Receive_init_packet_type 53 char (1) static options (constant) init ("R"); 54 55 dcl Logout_command char (1) static options (constant) init ("L"); 56 dcl Finish_command char (1) static options (constant) init ("F"); 57 58 /* parameters */ 59 60 dcl A_sci_ptr ptr parameter; 61 dcl A_infop ptr parameter; 62 63 /* procedures */ 64 65 dcl check_star_name_$entry entry (char (*), fixed bin (35)); 66 dcl continue_to_signal_ entry (fixed bin (35)); 67 dcl cu_$cl entry (1 aligned, 2 bit (1) unal, 2 bit (35) unal); 68 dcl expand_pathname_ entry (char (*), char (*), char (*), 69 fixed bin (35)); 70 dcl ioa_ entry () options (variable); 71 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 72 dcl ssu_$abort_line entry () options (variable); 73 dcl ssu_$arg_count entry (ptr, fixed bin); 74 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 75 dcl ssu_$get_request_name entry (ptr) returns (char (32)); 76 77 /* external */ 78 79 dcl error_table_$action_not_performed 80 external fixed bin (35); 81 dcl error_table_$badopt 82 external fixed bin (35); 83 dcl error_table_$nostars 84 external fixed bin (35); 85 dcl error_table_$too_many_args 86 external fixed bin (35); 87 88 /* based */ 89 90 dcl arg char (argl) based (argp); 91 92 /* automatic */ 93 94 dcl arg_idx fixed bin; 95 dcl argl fixed bin (21); 96 dcl argp ptr; 97 dcl dname char (168); 98 dcl ec fixed bin (35); 99 dcl ename char (32); 100 dcl file_count fixed bin; 101 dcl file_sw bit (1); 102 dcl first_filename char (168); 103 dcl initial_state fixed bin; 104 dcl nargs fixed bin; 105 dcl reason char (94); 106 dcl remote_file_sw bit (1); 107 dcl remote_filename char (94); 108 dcl transfer_modes_set bit (1); 109 dcl sequence_no fixed bin; 110 111 /* conditions */ 112 113 dcl cleanup condition; 114 dcl quit condition; 115 116 /* builtin */ 117 118 dcl addr builtin; 119 dcl index builtin; 120 dcl length builtin; 121 dcl rtrim builtin; 122 123 /* include files */ 124 1 1 /* START OF: kermit_dcls.incl.pl1 * * * * * */ 1 2 1 3 /********************************************************************/ 1 4 /* */ 1 5 /*n kermit_dcls */ 1 6 /* */ 1 7 /*d This include file contains the declarations of the external */ 1 8 /*d kermit entrypoints that are called by other modules within */ 1 9 /*d kermit as well as an explanation of the parameters. */ 1 10 /* */ 1 11 /*l Written: 84-10-11 by Dean Elhard */ 1 12 /* */ 1 13 /********************************************************************/ 1 14 1 15 dcl kermit_comm_mgr_$flush_input 1 16 entry 1 17 (ptr, /* kermit info ptr */ 1 18 fixed bin(35)); /* error code */ 1 19 1 20 dcl kermit_comm_mgr_$reset_line_modes 1 21 entry 1 22 (ptr, /* kermit info ptr */ 1 23 fixed bin(35)); /* error code */ 1 24 1 25 dcl kermit_comm_mgr_$set_line_modes 1 26 entry 1 27 (ptr, /* kermit info ptr */ 1 28 fixed bin(35)); /* error code */ 1 29 1 30 dcl kermit_get_filenames_ entry 1 31 (ptr, /* kermit info ptr */ 1 32 char(*), /* argument */ 1 33 ptr, /* filename ptr */ 1 34 char(*), /* reason */ 1 35 fixed bin(35)); /* error code */ 1 36 1 37 dcl kermit_log_mgr_$close_log 1 38 entry 1 39 (ptr, /* kermit info ptr */ 1 40 fixed bin (35)); /* error code */ 1 41 1 42 dcl kermit_log_mgr_$disable entry 1 43 (ptr, /* kermit info ptr */ 1 44 fixed bin (35)); /* error code */ 1 45 1 46 dcl kermit_log_mgr_$display_stats 1 47 entry /* statistics command */ 1 48 (ptr, /* sci ptr */ 1 49 ptr); /* kermit info ptr */ 1 50 1 51 dcl kermit_log_mgr_$enable entry 1 52 (ptr, /* kermit info ptr */ 1 53 fixed bin (35)); /* error code */ 1 54 1 55 dcl kermit_log_mgr_$log_message 1 56 entry 1 57 (ptr, /* kermit info ptr */ 1 58 ptr); /* log info ptr */ 1 59 1 60 dcl kermit_log_mgr_$open_log 1 61 entry 1 62 (ptr, /* kermit info ptr */ 1 63 char (*) varying, /* log file name */ 1 64 fixed bin (35)); /* error code */ 1 65 1 66 dcl kermit_log_mgr_$start entry /* start log command */ 1 67 (ptr, /* sci ptr */ 1 68 ptr); /* kermit info ptr */ 1 69 1 70 dcl kermit_log_mgr_$stop entry /* stop log command */ 1 71 (ptr, /* sci ptr */ 1 72 ptr); /* kermit info ptr */ 1 73 1 74 dcl kermit_mode_mgr_$get entry /* get modes command */ 1 75 (ptr, /* sci ptr */ 1 76 ptr); /* kermit info ptr */ 1 77 1 78 dcl kermit_mode_mgr_$retrieve 1 79 entry 1 80 (ptr, /* kermit info ptr */ 1 81 fixed bin, /* permanent/temporary select */ 1 82 (*) fixed bin, /* mode selector array */ 1 83 ptr, /* mode value ptr */ 1 84 fixed bin (35)); /* error code */ 1 85 1 86 dcl kermit_mode_mgr_$set entry /* set modes command */ 1 87 (ptr, /* sci ptr */ 1 88 ptr); /* kermit info ptr */ 1 89 1 90 dcl kermit_mode_mgr_$store entry 1 91 (ptr, /* kermit info ptr */ 1 92 fixed bin, /* permanent/temporary select */ 1 93 (*) fixed bin, /* mode selector array */ 1 94 ptr, /* mode value ptr */ 1 95 fixed bin (35)); /* error code */ 1 96 1 97 dcl kermit_pad_$receive entry 1 98 (ptr, /* kermit info ptr */ 1 99 char (1), /* packet type */ 1 100 ptr, /* buffer pointer */ 1 101 fixed bin (21), /* buffer length */ 1 102 fixed bin, /* sequence number */ 1 103 fixed bin (21), /* chars received */ 1 104 fixed bin (21), /* packet size */ 1 105 bit (1), /* CR/NL split flag */ 1 106 fixed bin (35)); /* error code */ 1 107 1 108 dcl kermit_pad_$send entry 1 109 (ptr, /* kermit info ptr */ 1 110 char (1), /* packet type */ 1 111 ptr, /* data ptr */ 1 112 fixed bin (21), /* data length */ 1 113 fixed bin, /* sequence number */ 1 114 fixed bin (21), /* chars transmitted */ 1 115 fixed bin (21), /* packet length */ 1 116 fixed bin (35)); /* error code */ 1 117 1 118 dcl kermit_receive_$receive_from_remote 1 119 entry 1 120 (ptr, /* kermit info ptr */ 1 121 fixed bin, /* initial state */ 1 122 fixed bin, /* initial sequence number */ 1 123 char (*), /* user filename (first file) */ 1 124 bit (1), /* =1 if user gave filename */ 1 125 fixed bin, /* number of files received */ 1 126 fixed bin (35)); /* error code */ 1 127 1 128 dcl kermit_send_$send_to_remote 1 129 entry 1 130 (ptr, /* kermit info ptr */ 1 131 ptr, /* filenames area ptr */ 1 132 char (*), /* user filename (first file) */ 1 133 bit (1), /* =1 if user gave filename */ 1 134 fixed bin, /* number of files sent */ 1 135 fixed bin (35)); /* error code */ 1 136 1 137 1 138 dcl kermit_server_ 1 139 entry 1 140 (ptr, /* kermit info ptr */ 1 141 ptr); /* filenames area ptr */ 1 142 1 143 1 144 dcl kermit_xfer_modes_$check_params 1 145 entry 1 146 (ptr, /* kermit info ptr */ 1 147 ptr, /* remote parameters */ 1 148 fixed bin (21), /* remote parameters length */ 1 149 ptr, /* local parameters */ 1 150 fixed bin (35)); /* error code */ 1 151 1 152 dcl kermit_xfer_modes_$init 1 153 entry 1 154 (ptr, /* ptr to kermit info */ 1 155 fixed bin (35)); /* error code */ 1 156 1 157 dcl kermit_xfer_modes_$get_local_params 1 158 entry 1 159 (ptr, /* kermit info ptr */ 1 160 ptr, /* local parameters */ 1 161 fixed bin (21), /* local parameters length */ 1 162 ptr, /* encoded parameters */ 1 163 fixed bin (21), /* encoded parameters length */ 1 164 fixed bin (35)); /* error code */ 1 165 1 166 dcl kermit_xfer_modes_$process_params 1 167 entry 1 168 (ptr, /* kermit info ptr */ 1 169 ptr, /* remote parameters */ 1 170 fixed bin (21), /* remote parameters length */ 1 171 ptr, /* local parameters */ 1 172 fixed bin (35)); /* error code */ 1 173 1 174 /* END OF: kermit_dcls.incl.pl1 * * * * * */ 125 126 2 1 /* START OF: kermit_info.incl.pl1 * * * * * */ 2 2 2 3 2 4 2 5 2 6 /****^ HISTORY COMMENTS: 2 7* 1) change(88-05-16,Huen), approve(88-05-16,MCR7841), audit(88-05-25,RWaters), 2 8* install(88-07-05,MR12.2-1054): 2 9* Fix kermit 15, 16, 17, and 18. 2 10* END HISTORY COMMENTS */ 2 11 2 12 2 13 /********************************************************************/ 2 14 /* */ 2 15 /*n kermit_constants */ 2 16 /* */ 2 17 /*d This structure contains the constant definitions of CR, */ 2 18 /*d and NL characters which are coded as bit strings with */ 2 19 /*d overlays. */ 2 20 /* */ 2 21 /*l Written: 87-06-19 by Don Kozlowski */ 2 22 /*l Modified: 87-06-19 by Don Kozlowski - CR and NL are coded */ 2 23 /*l as bit strings with overlays (kermit 15)*/ 2 24 /* */ 2 25 /********************************************************************/ 2 26 2 27 dcl 01 kermit_bit_constants internal static options (constant), 2 28 02 CR_bit bit (9) unaligned init ("015"b3), 2 29 02 NL_bit bit (9) unaligned init ("012"b3); 2 30 2 31 dcl 01 kermit_char_constants based (addr (kermit_bit_constants)), 2 32 02 CR char (1) unaligned, 2 33 02 NL char (1) unaligned; 2 34 2 35 dcl 01 kermit_fixed_constants based (addr (kermit_bit_constants)), 2 36 02 CR_fixed fixed bin (9) unsigned unaligned, 2 37 02 NL_fixed fixed bin (9) unsigned unaligned; 2 38 2 39 2 40 /********************************************************************/ 2 41 /* */ 2 42 /*n kermit_info */ 2 43 /* */ 2 44 /*d This data structure is the subsystem info structure used */ 2 45 /*d when creating a kermit invocation. It is used to find the */ 2 46 /*d three kermit databases. */ 2 47 /* */ 2 48 /*l Written: 84-10-11 by Dean Elhard */ 2 49 /* */ 2 50 /********************************************************************/ 2 51 2 52 dcl 01 kermit_info aligned based (kermit_infop), 2 53 02 version char (8), 2 54 02 sci_ptr ptr, /* ssu_ sci_ptr */ 2 55 02 perm_modesp ptr, /* ptr to permanent modes db */ 2 56 02 temp_modesp ptr, /* ptr to temporary modes db */ 2 57 02 log_infop ptr, /* ptr to log info db */ 2 58 02 comm_infop ptr; /* ptr to comm info db */ 2 59 2 60 dcl kermit_infop ptr; 2 61 dcl kermit_info_version char (8) static options (constant) 2 62 init ("ki 1.0"); 2 63 2 64 /********************************************************************/ 2 65 /* */ 2 66 /*n kermit_perm_modes */ 2 67 /* */ 2 68 /*d This data structure contains the array of 9-bit values that */ 2 69 /*d represent the permanent kermit modes. */ 2 70 /* */ 2 71 /*l Written: 84-10-11 by Dean Elhard */ 2 72 /*l Modified: 87-06-12 by Don Kozlowski - Increase mode_counts */ 2 73 /*l (kermit 16) */ 2 74 /* */ 2 75 /********************************************************************/ 2 76 2 77 dcl 01 kermit_perm_modes aligned based (kermit_perm_modesp), 2 78 02 version char (8), 2 79 02 mode (1:kermit_perm_mode_count) 2 80 bit (9) unaligned; 2 81 2 82 dcl kermit_perm_modesp ptr; 2 83 dcl kermit_perm_mode_count fixed bin static options (constant) init (20); 2 84 dcl kermit_perm_modes_version 2 85 char (8) static options (constant) 2 86 init ("kpm 1.1"); 2 87 2 88 /********************************************************************/ 2 89 /* */ 2 90 /*n kermit_temp_modes */ 2 91 /* */ 2 92 /*d This data structure contains the array of 9-bit values that */ 2 93 /*d represent the temporary kermit modes. */ 2 94 /* */ 2 95 /*l Written: 84-10-11 by Dean Elhard */ 2 96 /* */ 2 97 /********************************************************************/ 2 98 2 99 dcl 01 kermit_temp_modes aligned based (kermit_temp_modesp), 2 100 02 version char (8), 2 101 02 mode (1:kermit_temp_mode_count) 2 102 bit (9) unaligned; 2 103 2 104 dcl kermit_temp_modesp ptr; 2 105 dcl kermit_temp_mode_count fixed bin static options (constant) init (23); 2 106 dcl kermit_temp_modes_version 2 107 char (8) static options (constant) 2 108 init ("ktm 1.1"); 2 109 2 110 /********************************************************************/ 2 111 /* */ 2 112 /*n kermit_log_info */ 2 113 /* */ 2 114 /*d This data structure contains 2 types of logging info: */ 2 115 /*d - data concerning the logging state and log_file */ 2 116 /*d - statistics on the last completed file-transfer */ 2 117 /* */ 2 118 /*l Written: 84-10-11 by Dean Elhard */ 2 119 /* */ 2 120 /********************************************************************/ 2 121 2 122 dcl 01 kermit_log_info aligned based (kermit_log_infop), 2 123 02 version char (8), 2 124 02 log_file aligned, /* log_file info */ 2 125 03 iocbp ptr, /* iocb ptr */ 2 126 03 flags aligned, 2 127 04 enabled bit (1) unaligned, /* enabled flag */ 2 128 04 stats_valid bit (1) unaligned, /* stats are set */ 2 129 04 mbz bit (34) unaligned, 2 130 02 statistics aligned like kermit_stats_info; 2 131 2 132 dcl kermit_log_infop ptr; 2 133 dcl kermit_log_info_version char (8) static options (constant) 2 134 init ("kli 1.0"); 2 135 2 136 /********************************************************************/ 2 137 /* */ 2 138 /*n kermit_stats_info */ 2 139 /* */ 2 140 /*d This structure is the statistics information passed to the */ 2 141 /*d log manager and stored as the statistics. */ 2 142 /* */ 2 143 /*l Written: 84-10-25 by Dean Elhard */ 2 144 /* */ 2 145 /********************************************************************/ 2 146 2 147 dcl 01 kermit_stats_info aligned based (kermit_stats_infop), 2 148 02 caller char (32), /* send or receive */ 2 149 02 status fixed bin (35), /* status of F-T */ 2 150 02 filename char (194) unal, /* name of file */ 2 151 02 file_len fixed bin (21), /* len in chars */ 2 152 02 char_count fixed bin (21), /* number sent */ 2 153 02 packet_chars fixed bin (21), /* after encoding */ 2 154 02 packet_count fixed bin (21), /* num of packets */ 2 155 02 packet_retries fixed bin (21), /* retries done */ 2 156 02 start_time fixed bin (71), /* time F-T started */ 2 157 02 end_time fixed bin (71), /* time F-T done */ 2 158 02 error_message char (94); /* rcvd error msg */ 2 159 2 160 dcl kermit_stats_infop ptr; 2 161 2 162 /********************************************************************/ 2 163 /* */ 2 164 /*n kermit_comm_info */ 2 165 /* */ 2 166 /*d This data structure contains information regarding the */ 2 167 /*d communications channel over which the file transfer takes */ 2 168 /*d place. */ 2 169 /* */ 2 170 /*l Written: 84-10-12 by Dean Elhard */ 2 171 /*l Modified: 86-10-09 by Don Kozlowski Add transfer_modes_set */ 2 172 /*l and server indicators. (kermit 13) */ 2 173 /* */ 2 174 /********************************************************************/ 2 175 2 176 dcl 01 kermit_comm_info aligned based (kermit_comm_infop), 2 177 02 version char (8), 2 178 02 ft_iocbp ptr, /* transfer iocbp */ 2 179 02 debug_segp ptr, /* debug segment */ 2 180 02 debug_segl fixed bin (21), 2 181 02 input_buffer aligned, /* input buffer */ 2 182 03 bufferp ptr, 2 183 03 bufferl fixed bin (21), 2 184 02 old_modes char (512) unal, /* ft switch modes */ 2 185 02 old_framing_chars aligned, /* saved frm chars */ 2 186 03 start_char char (1) unaligned, 2 187 03 end_char char (1) unaligned, 2 188 03 server bit (1) unaligned, /* In server mode */ 2 189 03 transfer_modes_set bit (1) unaligned, 2 190 03 pad bit (16) unaligned, 2 191 02 old_wake_table aligned, /* saved wake table */ 2 192 03 breaks (0:127) bit (1) unaligned, 2 193 03 mbz bit (16) unaligned, 2 194 02 old_delays aligned, /* saved delay info */ 2 195 03 version fixed bin, 2 196 03 default fixed bin, 2 197 03 delay, 2 198 04 vert_nl fixed bin, 2 199 04 horz_nl fixed bin, 2 200 04 const_tab float bin, 2 201 04 var_tab fixed bin, 2 202 04 backspace fixed bin, 2 203 04 vt_ff fixed bin; 2 204 2 205 dcl kermit_comm_infop ptr; 2 206 dcl kermit_comm_info_version 2 207 char (8) static options (constant) 2 208 init ("kci 1.0"); 2 209 2 210 /* END OF: kermit_info.incl.pl1 * * * * * */ 127 128 3 1 /* START OF: kermit_transfer_info.incl.pl1 * * * * * */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(88-05-16,Huen), approve(88-05-16,MCR7841), audit(88-05-25,RWaters), 3 7* install(88-07-05,MR12.2-1054): 3 8* Fix kermit 15, 16, 17, and 18. 3 9* END HISTORY COMMENTS */ 3 10 3 11 3 12 /********************************************************************/ 3 13 /* */ 3 14 /*n kermit_transfer_info */ 3 15 /* */ 3 16 /*d This data structure is the info structure used */ 3 17 /*d during file transfer. */ 3 18 /* */ 3 19 /*l Written: 84-10-11 by Maureen Mallmes */ 3 20 /*l Modified: 87-06-19 by Don Kozlowski - Add flags in kti */ 3 21 /*l structure. (kermit 15) */ 3 22 /*l Modified: 87-07-22 by Don Kozlowski - Add msf flag in */ 3 23 /*l kti structure. (kermit 17) */ 3 24 /* */ 3 25 /********************************************************************/ 3 26 3 27 dcl 01 kermit_transfer_info aligned based (transfer_infop), 3 28 02 retry_count fixed bin (21), /* for current packet */ 3 29 02 retry_threshold fixed bin (8) unal, /* maximum retries */ 3 30 02 sequence_n fixed bin, /* sequence number */ 3 31 02 filenamesp ptr, /* ptr to filenames */ 3 32 02 filenames_idx fixed bin, /* current filename */ 3 33 02 filep ptr, /* start of file ptr */ 3 34 02 buffp ptr, /* file data ptr */ 3 35 02 msf_count fixed bin (21), /* msf segments to send */ 3 36 02 msf_current fixed bin (21), /* current msf module */ 3 37 02 file_count fixed bin, /* per transaction */ 3 38 02 statisticsp ptr, /* statistics info ptr */ 3 39 02 flags, 3 40 03 msf bit (1), /* Is this an MSF */ 3 41 03 owe_a_cr bit (1), /* Holding back a CR */ 3 42 03 pad bit (34), 3 43 02 iocb_ptr ptr; /* for vfile_ */ 3 44 3 45 3 46 3 47 dcl transfer_infop ptr; 3 48 dcl kermit_transfer_info_version 3 49 char (9) static options (constant) 3 50 init ("kti 1.1"); 3 51 3 52 3 53 3 54 3 55 /********************************************************************/ 3 56 /* */ 3 57 /*n kermit_filenames */ 3 58 /* */ 3 59 /*d This data structure defines the overlay for the filenames. */ 3 60 /* */ 3 61 /*l Written: 84-10-11 by Maureen Mallmes */ 3 62 /*l Modified: 84-11-05 by Dean Elhard to add archive support */ 3 63 /* */ 3 64 /********************************************************************/ 3 65 3 66 dcl 01 kermit_filenames aligned based (kermit_transfer_info.filenamesp), 3 67 02 n_paths fixed bin, 3 68 02 pathname (0 refer (kermit_filenames.n_paths)) aligned, 3 69 03 directory char (168) unal, 3 70 03 entry_name char (32) unal, 3 71 03 component char (32) unal; 3 72 3 73 3 74 /********************************************************************/ 3 75 /* */ 3 76 /*n kermit_packets */ 3 77 /* */ 3 78 /*d This data defines the packet types. */ 3 79 /* */ 3 80 /*l Written: 84-10-11 by Maureen Mallmes */ 3 81 /* */ 3 82 /********************************************************************/ 3 83 3 84 3 85 dcl Data_packet char (1) internal static options (constant) init ("D"); 3 86 dcl Ack_packet char (1) internal static options (constant) init ("Y"); 3 87 dcl Nak_packet char (1) internal static options (constant) init ("N"); 3 88 dcl Send_init_packet char (1) internal static options (constant) init ("S"); 3 89 dcl Eot_packet char (1) internal static options (constant) init ("B"); 3 90 dcl File_header_packet char (1) internal static options (constant) init ("F"); 3 91 dcl Eof_packet char (1) internal static options (constant) init ("Z"); 3 92 dcl Error_packet char (1) internal static options (constant) init ("E"); 3 93 dcl Reserved_packet char (1) internal static options (constant) init ("T"); 3 94 3 95 3 96 /********************************************************************/ 3 97 /* */ 3 98 /*n kermit_states */ 3 99 /* */ 3 100 /*d This data defines the transfer states. */ 3 101 /* */ 3 102 /*l Written: 84-10-11 by Maureen Mallmes */ 3 103 /* */ 3 104 /********************************************************************/ 3 105 3 106 dcl Rec_init fixed bin internal static options (constant) init (0); 3 107 dcl Rec_file_header fixed bin internal static options (constant) init (1); 3 108 dcl Rec_data fixed bin internal static options (constant) init (2); 3 109 dcl Rec_file_abort fixed bin internal static options (constant) init (3); 3 110 dcl Rec_abort fixed bin internal static options (constant) init (4); 3 111 dcl Rec_complete fixed bin internal static options (constant) init (5); 3 112 3 113 dcl Send_init fixed bin internal static options (constant) init (0); 3 114 dcl Send_file_header fixed bin internal static options (constant) init (1); 3 115 dcl Send_data fixed bin internal static options (constant) init (2); 3 116 dcl Send_eof fixed bin internal static options (constant) init (3); 3 117 dcl Send_break fixed bin internal static options (constant) init (4); 3 118 dcl Send_abort fixed bin internal static options (constant) init (5); 3 119 dcl Send_complete fixed bin internal static options (constant) init (6); 3 120 3 121 3 122 /* END OF: kermit_transfer_info.incl.pl1 * * * * * */ 129 130 131 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 132 133 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 134 135 136 get: entry (A_sci_ptr, /* subsystem control info ptr */ 137 A_infop); /* subsystem info ptr */ 138 139 /********************************************************************/ 140 /* */ 141 /*n Name: kermit_remote_requests_$get external */ 142 /*i Input: sci_ptr, info_ptr */ 143 /*f Function: implements the kermit get remote request. The */ 144 /*f get request sends a Receive-init packet to the */ 145 /*f remote server indicating the file that the server */ 146 /*f is to send and then call kermit_receive_ to */ 147 /*f receive the file. */ 148 /*o Output: none */ 149 /* */ 150 /*l Written: 84-11-12 by Dean Elhard */ 151 /*l Modified: 85-01-18 by Maureen Mallmes to detect invalid */ 152 /*l control arguments. See problem number */ 153 /*l 3 in the kermit error list. */ 154 /*l Modified to disallow starnames and */ 155 /*l archive components for the local file. */ 156 /*l Added quit and cleanup handlers to */ 157 /*l reset tty_ modes. */ 158 /*l Modified: 89-01-02 by S. Huen - The inital state of "get" */ 159 /*l should start with "Rec_init" instead of */ 160 /*l "Rec_File". (pc_20) */ 161 /* */ 162 /********************************************************************/ 163 164 file_sw = false; 165 remote_file_sw = false; 166 transfer_modes_set = false; 167 remote_filename = ""; 168 first_filename = ""; 169 170 /* Set up quit and cleanup handlers */ 171 172 on quit call handle_quit (A_infop, transfer_modes_set); 173 on cleanup call cleanup_modes (A_infop, transfer_modes_set); 174 175 call ssu_$arg_count (A_sci_ptr, nargs); 176 177 /* print a usage line if no args were specified */ 178 179 if nargs = 0 180 then call ssu_$abort_line (A_sci_ptr, 0, "Usage: ^a remote_source_path {local_destination_path}", ssu_$get_request_name (A_sci_ptr)); 181 182 /* get the arguments */ 183 do arg_idx = 1 to nargs; 184 call ssu_$arg_ptr (A_sci_ptr, arg_idx, argp, argl); 185 186 if index (arg, "-") ^= 1 then do; 187 /* get the remote system filename/pathname/filespec/whatever */ 188 if ^remote_file_sw then do; 189 remote_filename = arg; 190 remote_file_sw = true; 191 end; 192 193 else if ^file_sw then do; 194 call expand_pathname_ (arg, dname, ename, ec); 195 if ec = 0 then do; 196 call check_star_name_$entry (ename, ec); 197 if ec ^= 0 & ec < 3 then ec = error_table_$nostars; 198 end; 199 200 if ec ^= 0 201 then call ssu_$abort_line (A_sci_ptr, ec, "^a", arg); 202 first_filename = pathname_ (dname, ename); 203 file_sw = true; 204 end; 205 206 else call ssu_$abort_line (A_sci_ptr, error_table_$too_many_args, "^/Usage: ^a remote_source_path {local_destination_path}", ssu_$get_request_name (A_sci_ptr)); 207 end; 208 209 else call ssu_$abort_line (A_sci_ptr, error_table_$badopt, "^a", arg); 210 end; 211 212 213 /* inform the user what is going on */ 214 215 call ioa_ ("^/Receiving. . ."); 216 217 /* send the receive-init packet */ 218 219 call send_packet (A_infop, Receive_init_packet_type, rtrim(remote_filename), 220 No_ack, reason, ec); 221 /* Fix bug 20 - the initial state should start with Rec_init instead of Rec_File */ 222 initial_state = Rec_init; 223 sequence_no = 0; 224 225 /* perform a receive if the packet got there and was acknowledged */ 226 227 if ec = 0 228 then do; 229 call kermit_xfer_modes_$init (A_infop, (0)); 230 call kermit_comm_mgr_$set_line_modes (A_infop, (0)); 231 transfer_modes_set = true; 232 call kermit_receive_$receive_from_remote (A_infop, initial_state, 233 sequence_no, first_filename, file_sw, file_count, ec); 234 call kermit_comm_mgr_$reset_line_modes (A_infop, (0)); 235 transfer_modes_set = false; 236 if ec = 0 237 then call ioa_ ("^/Successfully received ^d file(s).", file_count); 238 end; 239 240 /* reset the line modes */ 241 242 call kermit_comm_mgr_$reset_line_modes (A_infop, 0); 243 transfer_modes_set = false; 244 245 if ec ^= 0 246 then call ssu_$abort_line (A_sci_ptr, ec, arg); 247 248 return; 249 250 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 251 252 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 253 254 255 finish: entry (A_sci_ptr, /* subsystem control info ptr */ 256 A_infop); /* subsystem info ptr */ 257 258 /********************************************************************/ 259 /* */ 260 /*n Name: kermit_remote_requests_$finish external */ 261 /*i Input: sci_ptr, info_ptr */ 262 /*f Function: This routine implements the kermit finish remote */ 263 /*f request. The finish remote request sends the */ 264 /*f remote server a generic command packet which will */ 265 /*f cause the server to terminate server operation */ 266 /*f and return to the kermit request loop. */ 267 /*o Output: none */ 268 /* */ 269 /*l Written: 84-11-12 by Dean Elhard */ 270 /* */ 271 /********************************************************************/ 272 273 /* send the generic-finish packet to the remote server */ 274 275 call send_packet (A_infop, Generic_packet_type, Finish_command, 276 Ack_reqd, reason, ec); 277 if ec ^= 0 278 then call ssu_$abort_line (A_sci_ptr, ec, reason); 279 280 return; 281 282 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 283 284 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 285 286 287 logout: entry (A_sci_ptr, /* subsystem control info ptr */ 288 A_infop); /* subsystem info ptr */ 289 290 /********************************************************************/ 291 /* */ 292 /*n Name: kermit_remote_requests_$logout external */ 293 /*i Input: sci_ptr, info_ptr */ 294 /*f Function: This routine implements the kermit logout remote */ 295 /*f request. The logout remote request sends the */ 296 /*f remote server a generic command packet which will */ 297 /*f cause the server to terminate server operation */ 298 /*f and log the user out from the remote system. */ 299 /*o Output: none */ 300 /* */ 301 /*l Written: 84-11-12 by Dean Elhard */ 302 /* */ 303 /********************************************************************/ 304 305 /* send the generic-logout command packet */ 306 307 call send_packet (A_infop, Generic_packet_type, Logout_command, 308 Ack_reqd, reason, ec); 309 if ec ^= 0 310 then call ssu_$abort_line (A_sci_ptr, ec, reason); 311 312 return; 313 314 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 315 316 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 317 318 319 send_packet: proc (infop, /* subsystem info ptr */ 320 type, /* type of packet to send */ 321 data, /* data to send in packet */ 322 ack, /* acknowledge required switch */ 323 reason, /* error message returned from remote */ 324 ec); /* error code */ 325 326 /********************************************************************/ 327 /* */ 328 /*n Name: send_packet internal */ 329 /*i Input: info_ptr, type, data, ack_sw */ 330 /*f Function: sends a packet to the remote server and waits for */ 331 /*f a reply if necessary. If the packet is Nak'ed, */ 332 /*f the packet will be retransmitted. If an error */ 333 /*f packet is returned send-packet will return with */ 334 /*f a nonzero error code and the error message in the */ 335 /*f reason field. The returned code will only be */ 336 /*f zero if the packet was Ack'ed or no Ack was */ 337 /*f required */ 338 /*o Output: reason, error_code */ 339 /* */ 340 /*l Written: 84-11-12 by Dean Elhard */ 341 /*l Modified: 85-01-18 by Maureen Mallmes */ 342 /*l Added quit and cleanup handlers to */ 343 /*l reset tty_ modes. */ 344 /* */ 345 /********************************************************************/ 346 347 /* parameters */ 348 349 dcl infop ptr; 350 dcl type char (1); 351 dcl data char (*); 352 dcl ack bit (1); 353 dcl reason char (*); 354 dcl ec fixed bin (35); 355 356 /* based */ 357 358 dcl message char (rcvd) based (addr (buffer)); 359 360 /* automatic */ 361 362 dcl buffer char (3000); 363 dcl rcvd fixed bin (21); 364 dcl remote_type char (1); 365 dcl retry_count fixed bin; 366 dcl transfer_modes_set bit (1); 367 dcl seq_no fixed bin; 368 369 370 reason = ""; 371 transfer_modes_set = false; 372 373 /* Set up quit and cleanup handlers */ 374 375 on quit call handle_quit (infop, transfer_modes_set); 376 on cleanup call cleanup_modes (infop, transfer_modes_set); 377 378 /* set up the temporary modes database */ 379 380 call kermit_xfer_modes_$init (infop, ec); 381 if ec ^= 0 382 then return; 383 384 /* clear out any pending nacks from the server */ 385 386 call kermit_comm_mgr_$flush_input (infop, ec); 387 388 /* set up the modes on the transfer channel */ 389 390 call kermit_comm_mgr_$set_line_modes (infop, ec); 391 if ec ^= 0 392 then do; 393 reason = "^/Unable to set line modes for command."; 394 return; 395 end; 396 397 transfer_modes_set = true; 398 /* handle sending packets that require no ack */ 399 400 if ^ack 401 then do; 402 call kermit_pad_$send (infop, type, addr (data), 403 length (data), 0, (0), (0), ec); 404 if ec ^= 0 405 then do; 406 call kermit_comm_mgr_$reset_line_modes (infop, (0)); 407 transfer_modes_set = false; 408 reason = "^/Unable to send command."; 409 end; 410 return; 411 end; 412 413 remote_type = Nak_packet_type; 414 retry_count = 0; 415 416 /* send the packet until we get a non-ack/non-timeout */ 417 418 do while (((ec ^= 0) | (seq_no ^= 0) | 419 (remote_type = Nak_packet_type)) & (retry_count < 5)); 420 retry_count = retry_count + 1; 421 call kermit_pad_$send (infop, type, addr (data), 422 length (data), 0, (0), (0), ec); 423 if ec ^= 0 424 then do; 425 call kermit_comm_mgr_$reset_line_modes (infop, (0)); 426 transfer_modes_set = false; 427 reason = "^/Unable to send command."; 428 return; 429 end; 430 431 call kermit_pad_$receive (infop, remote_type, addr (buffer), 432 length (buffer), seq_no, rcvd, (0), (""b), ec); 433 end; 434 435 /* put the line_modes back */ 436 437 call kermit_comm_mgr_$reset_line_modes (infop, ec); 438 transfer_modes_set = false; 439 440 /* if we received an error packet back, set the code and reason */ 441 442 if remote_type = Error_packet_type 443 then do; 444 reason = message; 445 ec = error_table_$action_not_performed; 446 end; 447 else if remote_type ^= Ack_packet_type 448 then do; 449 reason = "Unknown response from host."; 450 ec = error_table_$action_not_performed; 451 end; 452 else ec = 0; 453 454 end send_packet; 455 456 handle_quit: 457 proc (infop, /* subsystem info ptr */ 458 transfer_modes_sw); /* = "1"b if transfer modes set */ 459 460 /********************************************************************/ 461 /* */ 462 /*n Name: handle_quit internal */ 463 /*i Input: infop, transfer_modes_sw */ 464 /*f Function: Resets the line modes for standard user i/o, if */ 465 /*f the line modes have been changed for 'remote */ 466 /*f communication'. If restarted 'remote */ 467 /*f communication' modes are reestablished before */ 468 /*f returning. */ 469 /*o Output: none */ 470 /* */ 471 /*l Written: 85-01-21 by Maureen Mallmes */ 472 /* */ 473 /********************************************************************/ 474 475 476 /* parameters */ 477 478 dcl infop ptr; 479 dcl transfer_modes_sw bit (1); 480 481 /* automatic */ 482 483 dcl 01 cl_info_struc aligned, 484 02 resetread bit (1) unal, 485 02 mbz bit (35) unal; 486 487 488 cl_info_struc.resetread = true; 489 cl_info_struc.mbz = false; 490 491 if transfer_modes_sw then do; 492 /* Reset the modes for user input and output */ 493 call kermit_comm_mgr_$reset_line_modes (infop, (0)); 494 transfer_modes_sw = false; 495 /* Pass control */ 496 call cu_$cl (cl_info_struc); 497 /* Back (restart) so set the modes for file transfer */ 498 call kermit_comm_mgr_$set_line_modes (infop, (0)); 499 transfer_modes_sw = true; 500 end; 501 else call continue_to_signal_ (0); /* do nothing */ 502 503 return; 504 end handle_quit; 505 506 507 cleanup_modes: 508 proc (infop, /* subsystem info ptr */ 509 transfer_modes_sw); /* = "1"b if transfer modes set */ 510 511 /********************************************************************/ 512 /* */ 513 /*n Name: cleanup_modes internal */ 514 /*i Input: infop, transfer_modes_sw */ 515 /*f Function: Resets the line modes for standard user i/o, if */ 516 /*f the line modes have been changed for 'remote */ 517 /*f communication'. */ 518 /*o Output: none */ 519 /* */ 520 /*l Written: 85-01-21 by Maureen Mallmes */ 521 /* */ 522 /********************************************************************/ 523 524 /* parameters */ 525 526 dcl infop ptr; 527 dcl transfer_modes_sw bit (1); 528 529 530 if transfer_modes_sw then call kermit_comm_mgr_$reset_line_modes (infop, (0)); 531 transfer_modes_sw = false; 532 return; 533 534 end cleanup_modes; 535 536 end kermit_remote_requests_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/05/00 1830.6 kermit_remote_requests_.pl1 >udd>sm>ds>w>ml>kermit_remote_requests_.pl1 125 1 11/20/84 1451.4 kermit_dcls.incl.pl1 >ldd>incl>kermit_dcls.incl.pl1 127 2 07/07/88 2141.4 kermit_info.incl.pl1 >ldd>incl>kermit_info.incl.pl1 129 3 07/07/88 2141.4 kermit_transfer_info.incl.pl1 >ldd>incl>kermit_transfer_info.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. A_infop parameter pointer dcl 61 set ref 136 172* 173* 219* 229* 230* 232* 234* 242* 255 275* 287 307* A_sci_ptr parameter pointer dcl 60 set ref 136 175* 179* 179* 179* 184* 200* 206* 206* 206* 209* 245* 255 277* 287 309* Ack_packet_type constant char(1) initial packed unaligned dcl 48 ref 447 Ack_reqd 000004 constant bit(1) initial packed unaligned dcl 45 set ref 275* 307* Error_packet_type constant char(1) initial packed unaligned dcl 50 ref 442 Finish_command 000000 constant char(1) initial packed unaligned dcl 56 set ref 275* Generic_packet_type 000003 constant char(1) initial packed unaligned dcl 51 set ref 275* 307* Logout_command 000001 constant char(1) initial packed unaligned dcl 55 set ref 307* Nak_packet_type constant char(1) initial packed unaligned dcl 49 ref 413 418 No_ack 000024 constant bit(1) initial packed unaligned dcl 46 set ref 219* Rec_init constant fixed bin(17,0) initial dcl 3-106 ref 222 Receive_init_packet_type 000002 constant char(1) initial packed unaligned dcl 52 set ref 219* ack parameter bit(1) packed unaligned dcl 352 ref 319 400 addr builtin function dcl 118 ref 402 402 421 421 431 431 444 arg based char packed unaligned dcl 90 set ref 186 189 194* 200* 209* 245* arg_idx 000100 automatic fixed bin(17,0) dcl 94 set ref 183* 184* argl 000101 automatic fixed bin(21,0) dcl 95 set ref 184* 186 189 194 194 200 200 209 209 245 245 argp 000102 automatic pointer dcl 96 set ref 184* 186 189 194 200 209 245 buffer 000100 automatic char(3000) packed unaligned dcl 362 set ref 431 431 431 431 444 check_star_name_$entry 000010 constant entry external dcl 65 ref 196 cl_info_struc 000100 automatic structure level 1 dcl 483 set ref 496* cleanup 000330 stack reference condition dcl 113 ref 173 376 continue_to_signal_ 000012 constant entry external dcl 66 ref 501 cu_$cl 000014 constant entry external dcl 67 ref 496 data parameter char packed unaligned dcl 351 set ref 319 402 402 402 402 421 421 421 421 dname 000104 automatic char(168) packed unaligned dcl 97 set ref 194* 202* ec 000156 automatic fixed bin(35,0) dcl 98 in procedure "kermit_remote_requests_" set ref 194* 195 196* 197 197 197* 200 200* 219* 227 232* 236 245 245* 275* 277 277* 307* 309 309* ec parameter fixed bin(35,0) dcl 354 in procedure "send_packet" set ref 319 380* 381 386* 390* 391 402* 404 418 421* 423 431* 437* 445* 450* 452* ename 000157 automatic char(32) packed unaligned dcl 99 set ref 194* 196* 202* error_table_$action_not_performed 000034 external static fixed bin(35,0) dcl 79 ref 445 450 error_table_$badopt 000036 external static fixed bin(35,0) dcl 81 set ref 209* error_table_$nostars 000040 external static fixed bin(35,0) dcl 83 ref 197 error_table_$too_many_args 000042 external static fixed bin(35,0) dcl 85 set ref 206* expand_pathname_ 000016 constant entry external dcl 68 ref 194 false constant bit(1) initial packed unaligned dcl 43 ref 164 165 166 235 243 371 407 426 438 489 494 531 file_count 000167 automatic fixed bin(17,0) dcl 100 set ref 232* 236* file_sw 000170 automatic bit(1) packed unaligned dcl 101 set ref 164* 193 203* 232* first_filename 000171 automatic char(168) packed unaligned dcl 102 set ref 168* 202* 232* index builtin function dcl 119 ref 186 infop parameter pointer dcl 349 in procedure "send_packet" set ref 319 375* 376* 380* 386* 390* 402* 406* 421* 425* 431* 437* infop parameter pointer dcl 478 in procedure "handle_quit" set ref 456 493* 498* infop parameter pointer dcl 526 in procedure "cleanup_modes" set ref 507 530* initial_state 000243 automatic fixed bin(17,0) dcl 103 set ref 222* 232* ioa_ 000020 constant entry external dcl 70 ref 215 236 kermit_comm_mgr_$flush_input 000044 constant entry external dcl 1-15 ref 386 kermit_comm_mgr_$reset_line_modes 000046 constant entry external dcl 1-20 ref 234 242 406 425 437 493 530 kermit_comm_mgr_$set_line_modes 000050 constant entry external dcl 1-25 ref 230 390 498 kermit_pad_$receive 000052 constant entry external dcl 1-97 ref 431 kermit_pad_$send 000054 constant entry external dcl 1-108 ref 402 421 kermit_receive_$receive_from_remote 000056 constant entry external dcl 1-118 ref 232 kermit_stats_info based structure level 1 dcl 2-147 kermit_xfer_modes_$init 000060 constant entry external dcl 1-152 ref 229 380 length builtin function dcl 120 ref 402 402 421 421 431 431 mbz 0(01) 000100 automatic bit(35) level 2 packed packed unaligned dcl 483 set ref 489* message based char packed unaligned dcl 358 ref 444 nargs 000244 automatic fixed bin(17,0) dcl 104 set ref 175* 179 183 pathname_ 000022 constant entry external dcl 71 ref 202 quit 000336 stack reference condition dcl 114 ref 172 375 rcvd 001456 automatic fixed bin(21,0) dcl 363 set ref 431* 444 reason parameter char packed unaligned dcl 353 in procedure "send_packet" set ref 319 370* 393* 408* 427* 444* 449* reason 000245 automatic char(94) packed unaligned dcl 105 in procedure "kermit_remote_requests_" set ref 219* 275* 277* 307* 309* remote_file_sw 000275 automatic bit(1) packed unaligned dcl 106 set ref 165* 188 190* remote_filename 000276 automatic char(94) packed unaligned dcl 107 set ref 167* 189* 219 219 remote_type 001457 automatic char(1) packed unaligned dcl 364 set ref 413* 418 431* 442 447 resetread 000100 automatic bit(1) level 2 packed packed unaligned dcl 483 set ref 488* retry_count 001460 automatic fixed bin(17,0) dcl 365 set ref 414* 418 420* 420 rtrim builtin function dcl 121 ref 219 219 seq_no 001462 automatic fixed bin(17,0) dcl 367 set ref 418 431* sequence_no 000327 automatic fixed bin(17,0) dcl 109 set ref 223* 232* ssu_$abort_line 000024 constant entry external dcl 72 ref 179 200 206 209 245 277 309 ssu_$arg_count 000026 constant entry external dcl 73 ref 175 ssu_$arg_ptr 000030 constant entry external dcl 74 ref 184 ssu_$get_request_name 000032 constant entry external dcl 75 ref 179 179 206 206 transfer_modes_set 000326 automatic bit(1) packed unaligned dcl 108 in procedure "kermit_remote_requests_" set ref 166* 172* 173* 231* 235* 243* transfer_modes_set 001461 automatic bit(1) packed unaligned dcl 366 in procedure "send_packet" set ref 371* 375* 376* 397* 407* 426* 438* transfer_modes_sw parameter bit(1) packed unaligned dcl 527 in procedure "cleanup_modes" set ref 507 530 531* transfer_modes_sw parameter bit(1) packed unaligned dcl 479 in procedure "handle_quit" set ref 456 491 494* 499* true 000004 constant bit(1) initial packed unaligned dcl 42 ref 190 203 231 397 488 499 type parameter char(1) packed unaligned dcl 350 set ref 319 402* 421* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Ack_packet internal static char(1) initial packed unaligned dcl 3-86 Data_packet internal static char(1) initial packed unaligned dcl 3-85 Eof_packet internal static char(1) initial packed unaligned dcl 3-91 Eot_packet internal static char(1) initial packed unaligned dcl 3-89 Error_packet internal static char(1) initial packed unaligned dcl 3-92 File_header_packet internal static char(1) initial packed unaligned dcl 3-90 Nak_packet internal static char(1) initial packed unaligned dcl 3-87 Rec_abort internal static fixed bin(17,0) initial dcl 3-110 Rec_complete internal static fixed bin(17,0) initial dcl 3-111 Rec_data internal static fixed bin(17,0) initial dcl 3-108 Rec_file_abort internal static fixed bin(17,0) initial dcl 3-109 Rec_file_header internal static fixed bin(17,0) initial dcl 3-107 Reserved_packet internal static char(1) initial packed unaligned dcl 3-93 Send_abort internal static fixed bin(17,0) initial dcl 3-118 Send_break internal static fixed bin(17,0) initial dcl 3-117 Send_complete internal static fixed bin(17,0) initial dcl 3-119 Send_data internal static fixed bin(17,0) initial dcl 3-115 Send_eof internal static fixed bin(17,0) initial dcl 3-116 Send_file_header internal static fixed bin(17,0) initial dcl 3-114 Send_init internal static fixed bin(17,0) initial dcl 3-113 Send_init_packet internal static char(1) initial packed unaligned dcl 3-88 kermit_bit_constants internal static structure level 1 packed packed unaligned dcl 2-27 kermit_char_constants based structure level 1 packed packed unaligned dcl 2-31 kermit_comm_info based structure level 1 dcl 2-176 kermit_comm_info_version internal static char(8) initial packed unaligned dcl 2-206 kermit_comm_infop automatic pointer dcl 2-205 kermit_filenames based structure level 1 dcl 3-66 kermit_fixed_constants based structure level 1 packed packed unaligned dcl 2-35 kermit_get_filenames_ 000000 constant entry external dcl 1-30 kermit_info based structure level 1 dcl 2-52 kermit_info_version internal static char(8) initial packed unaligned dcl 2-61 kermit_infop automatic pointer dcl 2-60 kermit_log_info based structure level 1 dcl 2-122 kermit_log_info_version internal static char(8) initial packed unaligned dcl 2-133 kermit_log_infop automatic pointer dcl 2-132 kermit_log_mgr_$close_log 000000 constant entry external dcl 1-37 kermit_log_mgr_$disable 000000 constant entry external dcl 1-42 kermit_log_mgr_$display_stats 000000 constant entry external dcl 1-46 kermit_log_mgr_$enable 000000 constant entry external dcl 1-51 kermit_log_mgr_$log_message 000000 constant entry external dcl 1-55 kermit_log_mgr_$open_log 000000 constant entry external dcl 1-60 kermit_log_mgr_$start 000000 constant entry external dcl 1-66 kermit_log_mgr_$stop 000000 constant entry external dcl 1-70 kermit_mode_mgr_$get 000000 constant entry external dcl 1-74 kermit_mode_mgr_$retrieve 000000 constant entry external dcl 1-78 kermit_mode_mgr_$set 000000 constant entry external dcl 1-86 kermit_mode_mgr_$store 000000 constant entry external dcl 1-90 kermit_perm_mode_count internal static fixed bin(17,0) initial dcl 2-83 kermit_perm_modes based structure level 1 dcl 2-77 kermit_perm_modes_version internal static char(8) initial packed unaligned dcl 2-84 kermit_perm_modesp automatic pointer dcl 2-82 kermit_send_$send_to_remote 000000 constant entry external dcl 1-128 kermit_server_ 000000 constant entry external dcl 1-138 kermit_stats_infop automatic pointer dcl 2-160 kermit_temp_mode_count internal static fixed bin(17,0) initial dcl 2-105 kermit_temp_modes based structure level 1 dcl 2-99 kermit_temp_modes_version internal static char(8) initial packed unaligned dcl 2-106 kermit_temp_modesp automatic pointer dcl 2-104 kermit_transfer_info based structure level 1 dcl 3-27 kermit_transfer_info_version internal static char(9) initial packed unaligned dcl 3-48 kermit_xfer_modes_$check_params 000000 constant entry external dcl 1-144 kermit_xfer_modes_$get_local_params 000000 constant entry external dcl 1-157 kermit_xfer_modes_$process_params 000000 constant entry external dcl 1-166 transfer_infop automatic pointer dcl 3-47 NAMES DECLARED BY EXPLICIT CONTEXT. cleanup_modes 002100 constant entry internal dcl 507 ref 173 376 finish 001140 constant entry external dcl 255 get 000150 constant entry external dcl 136 handle_quit 002002 constant entry internal dcl 456 ref 172 375 kermit_remote_requests_ 000136 constant entry external dcl 20 logout 001230 constant entry external dcl 287 send_packet 001317 constant entry internal dcl 319 ref 219 275 307 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2512 2574 2133 2522 Length 3100 2133 62 270 356 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME kermit_remote_requests_ 338 external procedure is an external procedure. on unit on line 172 72 on unit on unit on line 173 72 on unit send_packet 884 internal procedure is called during a stack extension, and enables or reverts conditions. on unit on line 375 72 on unit on unit on line 376 72 on unit handle_quit 72 internal procedure is called by several nonquick procedures. cleanup_modes 72 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME handle_quit 000100 cl_info_struc handle_quit kermit_remote_requests_ 000100 arg_idx kermit_remote_requests_ 000101 argl kermit_remote_requests_ 000102 argp kermit_remote_requests_ 000104 dname kermit_remote_requests_ 000156 ec kermit_remote_requests_ 000157 ename kermit_remote_requests_ 000167 file_count kermit_remote_requests_ 000170 file_sw kermit_remote_requests_ 000171 first_filename kermit_remote_requests_ 000243 initial_state kermit_remote_requests_ 000244 nargs kermit_remote_requests_ 000245 reason kermit_remote_requests_ 000275 remote_file_sw kermit_remote_requests_ 000276 remote_filename kermit_remote_requests_ 000326 transfer_modes_set kermit_remote_requests_ 000327 sequence_no kermit_remote_requests_ send_packet 000100 buffer send_packet 001456 rcvd send_packet 001457 remote_type send_packet 001460 retry_count send_packet 001461 transfer_modes_set send_packet 001462 seq_no send_packet THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out call_int_this_desc call_int_other return_mac enable_op shorten_stack ext_entry int_entry int_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_star_name_$entry continue_to_signal_ cu_$cl expand_pathname_ ioa_ kermit_comm_mgr_$flush_input kermit_comm_mgr_$reset_line_modes kermit_comm_mgr_$set_line_modes kermit_pad_$receive kermit_pad_$send kermit_receive_$receive_from_remote kermit_xfer_modes_$init pathname_ ssu_$abort_line ssu_$arg_count ssu_$arg_ptr ssu_$get_request_name THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$badopt error_table_$nostars error_table_$too_many_args LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 20 000135 136 000143 164 000155 165 000156 166 000157 167 000160 168 000163 172 000166 173 000216 175 000246 179 000260 183 000326 184 000335 186 000353 188 000367 189 000371 190 000375 191 000377 193 000400 194 000403 195 000433 196 000435 197 000452 200 000461 202 000516 203 000536 204 000540 206 000541 207 000604 209 000605 210 000640 215 000642 219 000657 222 000734 223 000737 227 000740 229 000742 230 000755 231 000770 232 000772 234 001032 235 001045 236 001047 242 001071 243 001104 245 001106 248 001135 255 001136 275 001145 277 001201 280 001225 287 001226 307 001235 309 001271 312 001315 319 001316 370 001337 371 001344 375 001345 376 001375 380 001425 381 001437 386 001442 390 001453 391 001465 393 001470 394 001475 397 001476 400 001500 402 001505 404 001541 406 001544 407 001556 408 001560 410 001566 413 001567 414 001571 418 001572 420 001606 421 001607 423 001643 425 001646 426 001660 427 001662 428 001670 431 001671 433 001727 437 001730 438 001741 442 001743 444 001747 445 001756 446 001761 447 001762 449 001764 450 001772 451 001775 452 001776 454 002000 456 002001 488 002007 489 002011 491 002013 493 002021 494 002032 496 002037 498 002046 499 002061 500 002066 501 002067 503 002076 507 002077 530 002105 531 002124 532 002131 ----------------------------------------------------------- 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