home *** CD-ROM | disk | FTP | other *** search
/ The Unsorted BBS Collection / thegreatunsorted.tar / thegreatunsorted / programming / misc_programming / batnmore.z!p / MAN.BTM < prev    next >
Text File  |  1992-11-15  |  3KB  |  78 lines

  1. *REM This batch file is Freeware, free to use and redistribute unmodified *
  2. *REM Jouni Miettunen * jon@stekt.oulu.fi * Oulu * Finland * Europe * 1992 *
  3.  
  4. REM unixlike man command - manual page reader
  5. REM Timestamp 15-Nov-1992
  6.  
  7. REM This is highly system dependent, you have to customize.
  8.  
  9. REM Note: I use FastGREP 1.72 by Christopher J. Dunford
  10. REM Note: Only one that passed testing w/c:\man\man.man more or less correct..
  11.  
  12. break on^setlocal^unalias *^if %#==0 .or. "%1"=="-?" goto info
  13.  
  14. REM setup defaults and study what's available.
  15. REM Note: can't use MicroEmacs or TinyView as EDITOR, has to read "file.*"
  16.  
  17. iff "%@search[fgrep]"=="" then^echo Error: need fgrep (or clone)^goto end^endiff
  18. if "%manpath"=="" set manpath=%_cwd^set manpath=%manpath;
  19. if "%editor"=="" set editor=list
  20.  
  21. REM Did the user give any arguments?
  22. if "%@ascii[%1]" != "45" .or. exist %1 goto work^if %#==1 goto info
  23.  
  24. :optiot
  25. set index=%@eval[%index+1]^set %@ascii[%@substr[%1,%index,1]]=1
  26. if %index lt %@eval[%@len[%1]-1] goto optiot^shift
  27.  
  28. iff "%[%@ascii[k]]"=="1" then^set plaza=scan^endiff
  29. iff "%[%@ascii[f]]"=="1" then^set plaza=names^endiff
  30.  
  31. goto %plaza
  32.  
  33. REM try to locate requested manual page
  34. :work
  35. path %manpath%;.^set hit=%@search[%@name[%1].*]
  36. iff "%hit"=="" then^echo ----- Can't find manual page [%@upper[%1]]
  37. else^%editor %hit^endiff
  38. goto end
  39.  
  40. REM man -f ... this is how I understand -f option..
  41. :scan
  42. gosub polku
  43. fgrep -fx0 "%1" %try%\*.*>&>nul
  44. iff "%manpath"=="" .or. %manpath==; then^goto end^else^unset index^goto scan^endiff
  45.  
  46. REM man -k ... find manual pages with requested string in its name..
  47. :names
  48. gosub polku
  49. iff exist %try\*%1*.* then
  50. %try\^echo [%@upper[%_cwds]]^for %a in (*.*) echo %a|fgrep -sx "%1"|fgrep -sxv ".%1"^cd ->&nul^endiff
  51. REM for %a in (%try\*.*) echo %a|find "%1"|find/v ".%1"
  52. if "%manpath"=="" .or. %manpath==; goto end
  53. unset index^goto names
  54.  
  55. REM Check all directories in %MANPATH and finally the current directory
  56. :polku
  57. set index=%@eval[%index+1]
  58. iff %@substr[%manpath,%index,1] != ; .and. %index lt %@len[%manpath] then
  59. goto polku
  60. else^set try=%@substr[%manpath,0,%index]^set manpath=%@substr[%manpath,%@eval[%index+1]]
  61. endiff^return
  62.  
  63. :info
  64. echo %@lower[%@name[%0]] [-option] command
  65. text
  66.  
  67.     -f    manpages with "command" in filename
  68.     -k    manpages with "command" in text
  69.     -?    help
  70.  
  71. Environment Variable EDITOR:        your preferable text editor
  72. Environment Variable MANPATH:        where to look for manual pages
  73. Defaults:                EDITOR=LIST  MANPATH=current directory
  74. endtext
  75.  
  76. :end
  77. break off^quit
  78.