.#! 33 Shell_Default_Shell * is_defined.*" 10 3 Shell_Default_Shell+% SHELL & getenv3 Shell_Default_Shell" 11 3 Shell_Default_Shell $ NULLA." 12" sh3 Shell_Default_Shell/c/b" 16? Shell_Default_Interactive_Shell * is_defined.*" 21 ? Shell _Default_Interactive_Shell+" -i? Shell_Default_Interactive_Shell/b*" 25 ) AShell_Id+" -1) AShell_Id(" 27 9 Current_Working_Directory+! .9 Current_Working_Directory,*" 29 $ path+" 31 $ path $ NULLA $ path! ~AD." 32" ~/$ path/c" 35! 0 $ pa th!# 126A.*" 37 $ user+ $ path! 0" 47 / extract_element$ user" 38 $ user & strlen! 1?.*" 40 # dir+" 41! 1 $ user! / get_passwd_infoPPPP# dir" 42 # dir & strlen." 43 $ path $ user # dir! 1 * strreplaceP$ path/c/c/c*" 48 # cwd+ & getcwd# cwd" 49 9 Current_Working_Directory % chdirP" 50 $ path / expand_filename$ path" 51 # cwd % chdirP" 52 $ pathw" 292 ashell_expand_path," 57 9 Current_Working_Directoryw" 55- ashell_getcwd,*" 60 # dir+" 62 # dir 2 ashell_e xpand_path# dir" 63" -1 # dir % chdirA." 643 chdir %s failed: %s # dir % errno , errno_string & verror/c" 66 # dir9 Current_Working_Directory" 60, ashell_chdir,*" 69 # cmd $ argc $ argv+*" 71 # arg+! 1 $ argv! 2 ashell_expand_path# arg" 73! 0 # arg % chdirA." 74 # arg9 Current_Working_Directory/c" 76 # cmdw" 69* builtin_cd,*" 79 # cmd $ argc $ argv+*" 81 # dir+ 9 Current_Working_Directory# dir" 83! 1 $ argc! 1: $ argv!.*" 85 $ file+$ file" 87 # dir $ file & dircat / expand_filename ) find_fileP/" 90 w" 79, builtin_edit,*" 93 # cmd $ argc $ argv+." 97 , _clear_error" 98$8 \nUnable to read file.\n & insert" 99 w/n# 102 $ argc! 2=.# 103 # cmdw/c# 105! 1 $ argv! ) read_fileP# 106 ' whatbuf ' pop2buf# 107 ) most_mode# 109 w" 93, builtin_most(# 112 , Builtin_Cmds+ ( Ref_Type * Assoc_Type!, Builtin_Cmds,*# 114 # cmd # fun+# 116 # fun # cmd , Builtin_Cmds# 1142 ashell_add_builtin# 119" cd}* builtin_cd 2 ashell_add_b uiltin# 120$ edit}, builtin_edit 2 ashell_add_builtin# 121# jed}, builtin_edit 2 ashell_add_builtin# 122$ most}, builtin_most 2 ashell_add_builtin# 123$ more}, builtin_most 2 ashell_add_builtin# 124$ less}, builtin_most 2 ashell_add_bu iltin,*# 126 # cmd+*# 128 $ argv $ argc+# 130 # cmd & strtok# cmd# 131 # cmd & length$ argc# 134 $ argc! 19 + String_Type!$ argv# 139 $ argc.# 140 # cmd! 0 $ argc! 1: $ argv/c# 142 $ argc $ argvw# 126/ parse_shell_cmd,*# 145 # c md+*# 147 $ argc $ argv+# 149 # cmd / parse_shell_cmd$ argv$ argc# 150 $ argc. # cmdw/b*# 152 # fun ' command+# 154! 0 $ argv!' command# 155 , Builtin_Cmds ' command 0 assoc_key_exists.# 156 # cmdw/b# 158 ' command , Builtin_Cmds!# fun # 159 # cmd $ argc $ argv # funMw# 145+ try_builtin,*# 164 # buf+*# 165 ) this_line ) mark_line+*# 166 ! m " ch & prompt+# 168 ) AShell_Id , process_mark! m# 170 ) what_line) this_line# 171 ) push_mark# 172 ! m . goto_user_mark# 173 ) what_line) mark_line# 175 ) this_line ) mark_line@.# 177 * pop_mark_0# 178 - push_mark_eob# 179 ) bufsubstr# buf/.# 183" + bskip_chars# 184 ) push_mark# 185 $ bolp.# 187 ) go_left_1# 188 ) what_char" ch/b# 190 # bol# 191 ) bufsubstr& prompt# 192 * pop_mark_1# 193 # bol# 194 & prompt * looking_at.# 196 & prompt & strlen ( go_right/.# 198 " ch * ffind_char.# 200 * go_right_1/c/d# 202 - push_mark_eol# 203 ) bufsubstr# buf# 204 # eob# 205 # buf & insert/d# 207 ' newl ine# 208 ! m . move_user_mark# 210 # buf + try_builtin# buf# 215 ) AShell_Id # buf$" \n9 , send_process# 162y1 ashell_send_input,# 221 ) AShell_Id! 2 1 signal_fg_process# 219y0 ashell_send_intr,*# 226 2 partial_completion+*# 227 # dir $ file+# 229 ) push_spot# 230 ) push_mark# 231$+ ^ \n '`"><$ + bskip_chars# 233 ) bufsubstr2 partial_completion# 234 ( pop_spot# 236 2 partial_completion . parse_filename$ file# dir# 237 # dir 2 ashell_expand_path# dir*# 239 # len+ $ fi le & strlen# len*# 240 % files+ # dir ' listdir% files# 241! 0 ( Int_Type}' strncmp % files $ file # len ) array_mapA % where % files!% files*# 243 + num_matches+ % files & length+ num_matches# 244 + num_matches! 0A.# 246. No comple tions ' messagew/c*# 250 % match+*# 252 ! i+# 253! 0 + num_matches! 1:! 1.# 255! i# 256 ! i % files!% match# 257! 2 # dir % match + path_concat + file_statusA.# 258 % match + path_concat ! i % files/c/h# 261! 0 % files!% mat ch# 262 + num_matches! 1A.# 264 # len % match! & insertw/c# 270 # len % match & strlen! 1:! 1.# 272! i*# 273 ) try_match+! 0 ! i % match!) try_match# 274 + num_matches! 0 ( Int_Type}' strncmp# 275 ) try_match % files ! i! 19 # 274 ) array_mapA % where & lengthB.# 277 ! i # lenB.# 278 # len ! i! 1: % match! & insert/cv/c/h*# 283 $ cbuf+ ' whatbuf$ cbuf# 284- *completions* ' pop2buf# 285 , erase_buffer# 286 % files.# 288 & insert# 289 ' newline/# 292 8 buffer_format_in_columns# 293 # bob# 294 $ cbuf ' pop2buf# 2955 Ambiguous Completions ' message# 224y1 ashell_completion# 298) AShellMap" $1# 299 " $1 ( keymap_p. " $1 + make_keymap/b# 3001 ashell_send_input" ^M " $1 ) definekey# 301" ^C " $1 + undefinekey# 3020 ashell_send_intr" ^C " $1 ) definekey# 3031 ashell_completion! " $1 ) definekey,*# 305 # pid % flags & status+*# 307 # msg+# 309 # eob# 310 # pid % flags & status 9 aprocess_stringify_status# msg# 311$7 \n\n----- %s ------\n\n # msg ' vinsert# 312" -1) AShell_Id# 305y5 ashell_signal_handler,*# 315 # pid # str+# 317 # pid , process_mark . goto_user_mark*# 318 - use_overwrite+ $ eolpN- use_overwrite# 319 # str% bytes.*# 321 " ch+" ch# 322 " ch" 13A.# 324 # bol# 325! 1- use_overwriteu/c# 328 " ch! 8A.# 330 $ bolp.# 331! 1 ' go_left/b# 332! 1- use_overwriteu/c# 335 " ch" 10A.# 337 # eol# 338 ' newline# 339! 0- use_overwriteu/c# 343 - use_overwrite. # del/c# 344 " ch + insert_byte/*# 346 # col+ + what_column# col# 347 ( eol_trim# 348 # col + goto_column# 349 # pid , process_mark . move_user_mark# 315y4 ashell_insert_output,*# 354 # buf+( *ashell*# buf*# 355 # arg % nargs+! 0% nargs# 357 ) AShell_Id" -1B # buf ' bufferpC.# 359 # buf ' pop2buf# 360O Currently, only one shell process is supported. % error/c# 363 # buf ' pop2buf# 364 + getbuf_infoPP9 Current_Working_DirectoryP# 365 9 Current_Working_Directory % chdirP# 3 67) AShellMap * use_keymap# 3680 ashell_mode_hook . run_mode_hooks# 369 , erase_buffer.# 377 3 Shell_Default_Shell % nargs" 32 / extract_element# arg# 378 # arg $ NULLA.v/c# 381% nargs# 382 # arg/e# 385 ? Shell_Default_Interactive_Shell % nargs# 386 , open_process) AShell_Id# 388 ) AShell_Id& signal5 ashell_signal_handler + set_process# 389 ) AShell_Id& output4 ashell_insert_output + set_process# 352y& ashell# 392& ashell ' provide