.#*! 6 2 Info_This_Filename+ + Null_String2 Info_This_Filename*! 7 1 Info_This_Filedir+ + Null_String1 Info_This_Filedir,*" 11 $ file+*" 13 $ exts # ext ! n+" 14. .Z,.z,.gz,.bz2$ exts" 15! 0! n." 18 $ exts ! n" 44 / extract_element# ext " 19 # ext $ NULLA. w/c" 21! 1 $ file # ext9 + file_statusA.v/c" 22! n/e" 24 # ext" 11y2 info_is_compressed,*" 28 $ file+*" 30 ! n # dir ' dirfile " df & df_low+*" 31 $ cext+ $ cext" 33! 0! n." 39 1 Info_This_Filedir $ file & dirc at / expand_filename' dirfile" 40! 1 ' dirfile + file_statusA.v/c" 42 . Info_Directory ! n" 44 / extract_element# dir" 43 # dir $ NULLA. # dir/c" 44 # dir $ file & dircat / expand_filename" df" 50 " df% .info9' dirfile" 53! 1 ' dirfile + file_statusA.v/c" 55 ' dirfile 2 info_is_compressed$ cext" 56 $ cext & strlen.v/c" 58 # dir $ file & strlow & dircat / expand_filename& df_low" 63 & df_low% .info9' dirfile" 66! 1 ' dirfile + file_statusA.v/c" 68 ' dirfi le 2 info_is_compressed$ cext" 69 $ cext & strlen.v/c" 79 & df_low$ .inf9' dirfile" 81! 1 ' dirfile + file_statusA.v/c" 83 ' dirfile 2 info_is_compressed$ cext" 84 $ cext & strlen.v/c" 89 " df' dirfile" 91! 1 ' dirfile + file_stat usA.v/c" 93 ' dirfile 2 info_is_compressed$ cext" 94 $ cext & strlen.v/c" 96 & df_low' dirfile" 97! 1 ' dirfile + file_statusA.v/c" 99 ' dirfile 2 info_is_compressed$ cext# 100 $ cext & strlen.v/c# 103 # dir & strlen.5 Info file n ot found: $ file9 % error/b# 104! n/e# 107 ' dirfile . parse_filenameP1 Info_This_Filedir# 109 ' dirfile $ cextw" 28y3 info_make_file_name,*# 112 # ext+*# 114 ) unzip_cmd+- uncompress -c) unzip_cmd# 115 # ext.# 117# .gzx3# 118( gzip - dc) unzip_cmd/.# 121$ .bz2x3# 122) bzip2 -dc) unzip_cmd/j# 124 ) unzip_cmdw# 112. make_unzip_cmd,*# 127 $ file+*# 129 ' dirfile % flags # buf # dir+*# 130 # ext+# 132 $ file 3 info_make_file_name# ext' dirfile# 134& *Info* & setbuf # 135! 0 , set_readonly# 136 % widen , erase_buffer# 139 # ext & strlen.# 140' %s %s%s # ext . make_unzip_cmd ' dirfile # ext ' sprintf - run_shell_cmdP/.# 143 ' dirfile + insert_fileP/d# 145 # bob# 146 ' dirfile2 Info_This_Filename# 147! 1 , set_readonly# 148! 0 8 set_buffer_modified_flag# 149$ Info! 1 ( set_mode# 150' Infomap * use_keymap# 151T Jed Info: %f (%m%n) Press '?' for help. (%p)! 0 / set_status_line# 127y. info_find_file,# 159y9 info_find_no de_split_file*# 161 6 Info_Split_File_Buffer+ + Null_String6 Info_Split_File_Buffer*# 162 3 Info_Split_Filename+ + Null_String3 Info_Split_Filename,*# 164 # dir+*# 166 $ mark # pnt * search_fun+# 167! $ mark# 168 # dir! 0?.}' fsearch* search _fun/.}' bsearch* search_fun/d# 169 ) push_mark.# 172 $ mark * search_funMN.# 174 * pop_mark_1# 175! 0w/c# 177 $ bolp.v/c# 178 * _get_point# pnt# 179 # bol$ - * skip_chars# 180 * go_right_1# 181 * _get_point # pnt:# pnt# 182 # pnt! 1A $ eolp" 12 / looking_at_charDC.v/c# 183 # dir! 0?. # eol/. # bol/d/e# 185 * pop_mark_0# 186! 1w# 164y2 info_search_marker,*# 189 ( the_node+*# 191 $ node # len # fnd+# 192! 0+ CASE_SEARCH# 193& Node: ( the_node9$ node# 194 $ node & strlen# len# 195 % widen # bob.# 201! 1 2 info_search_marker.# 204 6 Info_Split_File_Buffer & strlen.# 2052 Marker not found. $ node9 % error/b# 206 6 Info_Split_File_Buffer & setbuf# 207 ( the_node 9 info_find_node_split_filew/b# 210 ) go_down_1# 211 $ node % ffind.# 214 # len ( go_right# 215 $ eolp" 44 / looking_at_charD! 9 / looking_at_charD.v/c/c# 218 # eol/e# 221 ) push_mark# 222! 1 2 info_search_marker. ' go_up_1/. # eob/d# 223 & narrow# 224 # bob# 189y 8 info_find_node_this_file,*# 227 $ node+*# 229 # tag & tagpos # pos ' pos_len ' tag_len # buf $ file+*# 230 " re+# 231' *Info*# buf# 233 # buf ' bufferp # buf & setbuf.# 235& *Info* & insbuf/b# 238 % widen# 241 $ node$* \\^$[]*.+?" 9 2 0 str_quote_string# tag# 243& Node: # tag9# tag# 244 # eob# 250 # tag$/ [ ]\\d+[ ]*$9" re# 252 " re * re_bsearch.1 tag %s not found. # tag & verror/b# 253 # eol# 254" + bskip_chars# 255 ) push_mark# 0-9 + bskip_chars# 256 ) bufsubstr& tagpos# 257 & tagpos & strlen' tag_len# 259 # bob# 260) Indirect: + bol_fsearchP# 261 ) push_mark# 262! 1 2 info_search_marker. # eob/b# 263 & narrow# 264 # bob.# 267 & down_1.v/b# 269" : % ffind.v/b# 270! 2 ( go_ri ght# 273 - push_mark_eol ) bufsubstr# pos# 274 # pos & strlen' pos_len# 275 ' tag_len ' pos_len?.u/c# 276 ' tag_len ' pos_len=.v/c# 278 & tagpos # pos & strcmp! 0=.v/c/e# 281 + Null_String6 Info_Split_File_Buffer# 282 ' go_up_1 # bol# 283 ) push_mark# 284" : % ffindP# 285 % widen# 286 ) bufsubstr$ file# 288 $ file . info_find_file# 289 $ node 8 info_find_node_this_file# 290 # buf6 Info_Split_File_Buffer# 227y9 info_find_node_split_file,# 295 ' whatbuf& *Info*B.w/c# 29 6 ) push_spot ) push_spot# 297" -1 2 info_search_markerP# 298 ) go_down_1 ) push_mark# 299 ( pop_spot# 300! 1 2 info_search_marker. ' go_up_1/. # eob/d# 301 & narrow# 302 ( pop_spot# 293y+ info_narrow# 3072 Info_Position_Type * is_defined .# 311( filename# 312. split_filename# 313+ line_number! 3# 3152 Info_Position_Type/b*# 318 3 Info_Position_Stack+" 16 2 Info_Position_Type!3 Info_Position_Stack*# 319 0 Info_Stack_Depth+! 00 Info_Stack_Depth,*# 321 $ file % split $ lin e+*# 323 ! i+*# 324 # pos+# 326 0 Info_Stack_Depth" 16A.# 3280 Info_Stack_Depth.# 329! 1! i/. ! i" 16=/.! i/.# 330 ! i 3 Info_Position_Stack!M ! i! 1: 3 Info_Position_Stack/g/c# 333 0 Info_Stack_Depth 3 Info_Position_Stack!# pos# 335 $ file # pos( filename# 336 % split # pos. split_filename# 337 $ line # pos+ line_number# 3390 Info_Stack_Depth# 321y2 info_push_position,*# 344 ! i $ file+# 346 ' whatbuf& *Info*B.w/c# 347 % widen# 348 + Null_String$ file# 350 6 Info_Sp lit_File_Buffer & strlen. 3 Info_Split_Filename$ file/c# 351 2 Info_This_Filename $ file ) what_line 2 info_push_position# 352 + info_narrow# 342y4 info_record_position,*# 355 $ node+*# 357 ( the_node $ file ! n # len+# 358! 0! n# 361 $ nod e$$ \n + strcompress$ node# 363 4 info_record_position.# 366& *Info* ' bufferp.# 367 + info_reader/c/n# 370 $ node & strlen# len# 373 $ node! ( ) is_substr! 1A. $ node! ) ) is_substr! n/c# 375 ! n.*# 377 ) save_node+! | $ node9! |9) save_node# 378 $ node( the_node# 379 ( the_node ! n! 19 $ node & strlen & substr$ node# 380 ( the_node ! n! 0 & strsub( the_node# 381 ( the_node! 2 ! n! 2: & substr$ file# 382 6 Info_Split_File_Buffer ' bufferp. 6 Info_Split_ File_Buffer & delbuf/c# 383 + Null_String6 Info_Split_File_Buffer# 384 $ file . info_find_file/c# 387 $ node ' strtrim$ node# 388 $ node & strlen.# Top$ node/b# 389 % widen# 390 - push_spot_bob# 391! 1 2 info_search_marker.1 Marker not found. % error/b# 392 ) go_down_1# 394) Indirect: * looking_at ( pop_spot.# 396 2 Info_This_Filename3 Info_Split_Filename# 397 $ node 9 info_find_node_split_file/.# 399 $ node 8 info_find_node_this_file/d# 355y. info_find_node,*# 405 $ save+*# 407 ' menu_re+$- ^\\c\\* Menu:' menu_re# 408 ) push_spot# 410 # bob.# 414 ' menu_re * re_fsearch.# 416 ( pop_spot# 4171 Node has no menu. % error/b# 420! 7 ( go_right# 421" 58 / looking_at_char.v/b/e# 425 $ save.# 427 ( po p_spotw/b# 431 # eol * go_right_1# 432 ) push_mark ( pop_spot * pop_mark_1# 405y. info_find_menu,# 440 ) push_mark * go_right_1# 441$& \\*.*: * re_fsearch. 7 exchange_point_and_mark/c# 442 * pop_mark_1# 438y. info_next_xref,# 450 ) push_mark ) go_left_1# 451& [*].*: * re_bsearch. 7 exchange_point_and_mark/c# 452 * pop_mark_1# 448y. info_prev_xref,*# 459 $ node+# 461 ) push_spot# 463" 58 , fsearch_char.# 465 ( pop_spot- Corrupt File? % error/b# 468" :: * looking_at.# 470 ) push_mark# 471 ( pop_spot# 472 ) bufsubstr$ node/.# 476 * go_right_1# 477 * skip_white# 478 $ eolp.# 480 * go_right_1# 481 * skip_white/c# 483 ) push_mark# 484" 40 / looking_at_char." 41 * ffind_charP/c# 486$& ^,. \n * skip_chars# 48 9! + bskip_chars# 490 ) bufsubstr$ node# 491 ( pop_spot/d# 493 $ node . info_find_node# 457y8 info_follow_current_xref,*# 498 $ node & colons % colon+# 499 + Null_String$ node# 500! :% colon" ::& colons# 502 ) LAST_CHAR" 13A$. \\C *Note[ \n] - re_looking_atC.# 505! 5 ( go_right$$ \n * skip_chars# 506 8 info_follow_current_xrefw/c# 510! 0 . info_find_menu# 512 # bol# 514" * * looking_at# 515 % colon % ffindC.# 517 ) push_mark# 518 # bol! 2 ( go_right# 5 19 ) bufsubstr % colon9$ node# 520 # bol/c# 523 $ node & strlen ) LAST_CHAR" 13AC.# 525* Menu item: $ node + Null_String ) read_mini$ node# 526! 1 . info_find_menu/b# 529" * $ node9 + bol_fsearch.4 Menu Item not found. % error/b# 530 % colon % ffind.- Corrupt File? % error/b# 532 & colons * looking_at.# 534 ) push_mark# 535 # bol! 2 ( go_right/.# 539 * go_right_1# 540 * skip_white# 541 ) push_mark# 542" 40 / looking_at_char.# 544" 41 * ffind_charP/c# 547$& ^,. \n * skip_chars# 550! + bskip_chars/d# 552 ) bufsubstr . info_find_node# 496y) info_menu,# 557( (DIR)top . info_find_node# 555y- info_find_dir,# 562 # bob# 563$ Up: % ffind.# 565 - info_find_dirw/b# 569! 4 ( go_right ) push_mark# 571$& ^,. \n * skip_chars# 573! + bskip_chars# 574 ) bufsubstr . info_find_node# 560y' info_up,*# 579 ! n+" 10! n# 580 # bob# 581* Previous: % ffind.# 583& Prev: % ffind.4 Node has no PREVIOUS % error/b# 584! 6! n/b# 587 ! n ( go_right ) push_mark# 588$& ^,. \n * skip_chars# 590! + bskip_chars# 591 ) bufsubstr . info_find_node# 577y) info_prev,*# 596 * split_file $ file ! n+*# 597 # pos+# 599 0 Info_Stack_Depth! 0A.w/c# 6010 Info_Stac k_Depth# 603 0 Info_Stack_Depth 3 Info_Position_Stack!# pos# 605 # pos". split_filename* split_file# 606 # pos"( filename$ file# 607 # pos"+ line_number! n# 609 $ file 2 Info_This_FilenameA& *Info* ' bufferpC.# 611 % widen# 612 ! n ) goto _line # bol# 613 + info_narroww/c# 617 * split_file & strlen.# 619' *Info* & setbuf# 620! 0 , set_readonly# 621 % widen# 622 , erase_buffer*# 624 # ext+ * split_file 2 info_is_compressed# ext# 625 # ext & strlen.# 626' %s %s%s # ext . make_unzip_cmd * split_file # ext ' sprintf - run_shell_cmdP/.# 629 * split_file + insert_fileP/d# 631 ' whatbuf6 Info_Split_File_Buffer# 632& *Info* & setbuf/c# 635 $ file & strlen.w/b# 636 $ file . info_find_file# 637 ! n ) g oto_line # bol# 638 + info_narrow# 594y7 info_goto_last_position,# 643 # bob# 644& Next: % ffind.# 646 7 info_goto_last_position# 6471 Node has no NEXT. ' messagew/b# 650! 6 ( go_right ) push_mark# 652$& ^,. \n * skip_chars# 654! + bskip_chars# 655 ) bufsubstr . info_find_node# 641y) info_next,# 660k q:quit, h:tutorial, SPC:next screen, DEL:prev screen, m:menu, s:search ' message# 658y/ info_quick_help# 663' Infomap" $2# 664 " $2 ( keymap_p.# 666 " $2 + make_keymap# 667/ info_quick_help! ? " $2 ) definekey# 668- info_tutorial! h " $2 ) definekey# 669- info_tutorial! H " $2 ) definekey# 670) info_menu" ^M " $2 ) definekey# 671) info_menu! M " $2 ) definekey# 672) info_menu! m " $2 ) definekey# 674. info_next_xref! " $2 ) definekey# 679) info_next! N " $2 ) definekey# 680) info_next! n " $2 ) definekey# 681) info_prev! P " $2 ) definekey# 682) info_prev! p " $2 ) definekey# 683' info_up! U " $2 ) definekey# 684' info_up! u " $2 ) definekey# 685) page_down! " $2 ) definekey# 686' page_up" ^? " $2 ) definekey# 687# bob! B " $2 ) definekey# 688# bob! b " $2 ) definekey# 689. info_goto_node! G " $2 ) definekey# 690 . info_goto_node! g " $2 ) definekey# 691) info_quit! q " $2 ) definekey# 692) info_quit! Q " $2 ) definekey# 6937 info_goto_last_position! l " $2 ) definekey# 6947 info_goto_last_position! L " $2 ) definekey# 695+ info_search! S " $2 ) definekey# 696+ info_search! s " $2 ) definekey# 697+ info_search! / " $2 ) definekey# 6985 info_follow_reference! f " $2 ) definekey# 6995 info_follow_reference! F " $2 ) definekey# 700- info_find_dir! D " $2 ) defineke y# 701- info_find_dir! d " $2 ) definekey# 702! 1! 9! 1.# 704" $1# 7050 info_menu_number " $1 & string " $2 ) definekey/h/b,# 711 4 info_record_position# 712 % widen# 713& *Info* & delbuf# 709y) info_quit,# 718% Node: + Null _String + Null_String ) read_mini . info_find_node# 716y. info_goto_node,*# 723 ) this_line ) this_file # str ' err_str $ file % wline % ifile # ext+# 7241 String not found.' err_str# 726* Re-Search: + LAST_SEARCH + Null_String ) read_mini# s tr# 727 # str & strlen.w/b# 728 # str 2 save_search_string# 729 % widen * go_right_1# 730 # str * re_fsearch.# 732 + info_narroww/c# 739 6 Info_Split_File_Buffer & strlen.# 741 + info_narrow# 742 ' err_str % error/b# 745 2 Info_This_Fil ename) this_file# 746 ) what_line) this_line# 747 + window_line% wline# 749 6 Info_Split_File_Buffer & setbuf % widen # bob# 750) Indirect: + bol_fsearchP# 751 ) push_mark# 752! 1 2 info_search_marker. ' go_up_1/. # eob/d# 753 & narrow# 754 # bob# 755 ) this_file 0 extract_filename + bol_fsearchP.# 759 % widen# 760 ) this_file . info_find_file# 761 ) this_line ) goto_line # eol# 762 + info_narrow# 763 % wline ( recenter/n.# 766 & down_1/.# 769 ) push_mark# 771" 58 * ffind_char. * pop_mark_0v/b# 772 ) bufsubstr$ file# 773* Searching $ file9 % flush# 774 $ file 3 info_make_file_name# ext% ifile# 776 # ext & strlen.*# 778 " re+ # str" re# 781! 0 " re!" 45A.$" \\ " re9" re/c# 783, *Info*zcat* & setbuf , erase_buffer# 7857 %s %s%s | grep -ci '%s'# 786 # ext . make_unzip_cmd# 787 % ifile # ext# 788 " re# 785 ' sprintf - run_shell_cmdP# 789 # bob# 790" 48 / looking_at_char.# 792 ' whatbuf & delbuf# 793 6 Info_Split_File_Buf fer & setbufu/c# 796 6 Info_Split_File_Buffer & setbuf/.# 800 % ifile # str! 1 + search_file.# 802 6 Info_Split_File_Buffer & setbufu/b/d# 806 $ file . info_find_file# 807 # str ' fsearchP# 808 + info_narrow# 809 ) this_file 3 Info_S plit_Filename ) this_line 2 info_push_positionw/f# 812 ' err_str % error# 721y+ info_search,*# 815 # ref+*# 817 ! n+*# 818 $ word+# 820 ) push_spot.# 823 ( pop_spot/o# 825 # ref! + strcompress# ref# 827! 0! n.# 828 # ref ! n" 32 / extract_element$ word $ word $ NULLB/.# 830! n# 831$$ \n * skip_chars# 832 $ word * looking_at.! 0w/b# 833 $ word & strlen ( go_right/f# 835! 1# 815y/ info_looking_at,*# 840 % colon & colons $ note # err $ item $ node # ref+# 841 ! :% colon" ::& colons# 842% *Note$ note# 8434 No cross references.# err# 845 ) push_spot# 846 $ note ' fsearch.# 848 $ note ' bsearch.# 850 ( pop_spot# 851 # err % error/b/b# 854 ( pop_spot# 856, Follow *Note + Null_String + Null _String ) read_mini# ref# 857 - push_spot_bob.# 860 $ note ' fsearch.# 862 ( pop_spot# 863. Bad reference. % error/b# 865! 5 ( go_right$$ \n * skip_chars# 871 # ref / info_looking_at.v/c/e# 874 ) push_mark# 875 ( pop_spot# 877 * pop_mark_1# 879 8 info_follow_current_xref# 838y5 info_follow_reference,*# 884 $ node+ + Null_String$ node*# 885 % colon & colons+# 886" ::& colons! :% colon*# 887 ! n+# 889 ) LAST_CHAR! n# 890 ! n" 49= ! n" 57?D. $ beepw/c# 891" 48! n # 893! 1 . info_find_menu.# 895 ! n/.# 897" * + bol_fsearch. $ beepw/b# 898 % colon % ffind.! n/. # eol/d/f# 901 & colons * looking_at.# 903 ) push_mark# 904 # bol! 2 ( go_right/.# 908 * go_right_1 * skip_white ) push_mark# 909" 40 / looking_at_char.# 911" 41 * ffind_charP/c# 914$& ^,. \n * skip_chars# 916! + bskip_chars/d# 918 ) bufsubstr . info_find_node# 882y0 info_menu_number,# 923* (info)help . info_find_node# 921y- info_tutorial,*# 928 $ ibuf+& *Info*$ ibuf# 929 0 Info_Stack_Depth. 7 info_goto_last_position/c# 930 $ ibuf ' bufferp. - info_find_dir/b# 931 $ ibuf ' pop2buf# 932 ) onewindow# 933! 00 info_reader_hook * is_definedA.# 934. info_mode_hook . run_mode_hooks/.# 9360 info_reader_hook . run_mode_hooks/d# 9261 start_info_reader,*# 946 $ file $ node+# 948 1 start_info_reader# 950 & _NARGS! 0A.w/c*# 953 $ args+$ args*# 954 % nargs+ $ args & length% nargs# 956( exit_jed! q , local_setkey# 957( exit_je d! Q , local_setkey# 959 % nargs! 0?.# 961! 0 $ args!$ file# 964 $ file - path_basename $ fileB.*# 966 # dir+ $ file , path_dirname# dir# 967 $ file - path_basename$ file# 968 # dir! , . Info_Directory9 & strcat. Info_Directory/c # 972' (%s)top $ file ' sprintf . info_find_node# 973 % nargs! 1?.# 974& (%s)%s $ file! 1 $ args! ' sprintf . info_find_node/c/c# 944y+ info_reader