PageRenderTime 37ms CodeModel.GetById 1ms RepoModel.GetById 1ms app.codeStats 0ms

/contrib/groff/contrib/groffer/ChangeLog

https://bitbucket.org/freebsd/freebsd-head/
#! | 1546 lines | 1234 code | 312 blank | 0 comment | 0 complexity | 025501c464867933ef55229d9c9af375 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception, BSD-3-Clause, LGPL-2.0, LGPL-2.1, BSD-2-Clause, 0BSD, JSON, AGPL-1.0, GPL-2.0
  1. ________________________________________________________________
  2. * release of groffer 0.9.22
  3. 2005-22-04 Bernd Warken
  4. ### `--whatis'
  5. Produce a `groff' output and allow wild cards on filespec
  6. parameters for `--whatis'.
  7. * groffer2.sh:
  8. - $_FILESPEC_ARG: New variable for storing the actual filespec
  9. parameter.
  10. - main_do_fileargs(): Set $_FILESPEC_ARG and add
  11. what_is_filespec().
  12. - main_parse_args(): Add --all to --whatis.
  13. - to_tmp_line(): New function to write the arguments to the
  14. temorary cat file.
  15. - whatis_filename(): Rename of what_is(). Construct a better
  16. printout using $_FILESPEC_ARG. Repair the sed sequneces.
  17. - whatis_filespec(): New function to print the filespec once
  18. during the `whatis' process.
  19. - whatis_header(): New funtion for printing the header of the
  20. `whatis' output.
  21. * groffer.man: Revise the documentation of --whatis.
  22. ### `--apropos*'
  23. Produce `groff' for `--apropos*'. Allow `--sections' for
  24. `--apropos', ignore it with `--apropos-*'.
  25. * groffer2.sh:
  26. - --apropos*: Make these options without argument.
  27. - $_APROPOS_PROG: New variable for the program that is is used for
  28. `apropos'.
  29. - $_APROPOS_SECTIONS: New variable to determine the sections that
  30. are filtered out of `apropos' output depending on `--apropos-*'.
  31. - apropos_filespec(): Handling of apropos at the filespec level.
  32. - apropos_run(): Remove it.
  33. - apropos_setup(): New function.
  34. - main_set_mode(): Remove handling of $_OPT_APROPOS*.
  35. * groffer.man:
  36. - Revise the documentation of `--apropos*'.
  37. - Split section 'options for GNU man' into two sections `options
  38. for man pages' and `long options taken over from GNU man'.
  39. - Move `--apropos*', `--whatis', `--man', and `--no-man' to
  40. section `options for man pages'.
  41. ### special display (apropos and whatis)
  42. * groffer2.sh:
  43. - special_setup(): New function that chooses the setup between
  44. apropos and whatis.
  45. - special_filespec(): New function that does the output at the
  46. filespec level for apropos or whatis.
  47. ### handle `--sections' for man page searching
  48. * groffer2.sh:
  49. - man_do_filespec(): Use $_OPT_SECTIONS of --sections instead of
  50. $_MAN_AUTO_SEC if non-empty. If a section was given on the
  51. filespec parameter $_OPT_SECTIONS is ignored. This differs from
  52. `man' which always uses the restricted sections of --sections.
  53. This function works for both normal man page search and whatis.
  54. - apropos_filespec(): Use --sections for --apropos, but not for
  55. --apropos-* because these provide already their own sections.
  56. ### wildcards in filespec arguments
  57. * groffer2.sh: Wildcards are now accepted. In `--apropos*' and
  58. `--whatis' they are interpreted as wildcard search elements; but
  59. in normal display they are only handled as their own character.
  60. ### development; new option
  61. * groffer2.sh:
  62. - --print: New option that prints just its argument for parameter
  63. check.
  64. - usage(): Add new option.
  65. - $_OPT_DO_NOTHING: New variable for do_nothing(). Handle it at
  66. the end of main_parse_Args().
  67. * groffer.man: Add information on --print.
  68. ### safe exit
  69. * groffer2.sh:
  70. - error(): Always exit with $_ERROR.
  71. - exit_test(): New function to exit when first exit was hidden by
  72. (). Call it after each $().
  73. ### automatic shell determination
  74. * groffer.sh:
  75. - If no option --shell is given perform a test of several shells
  76. to automatically start some shell for groffer2.sh. `ksh' is used
  77. first because it can be safely terminated by Ctrl-C.
  78. - This can be cancelled by providing --shell=''.
  79. - Add test on `sed' program.
  80. * groffer.man: Revise information on --shell.
  81. ### trap
  82. * groffer2.sh:
  83. - trap_set(): Remove argument. Instead of $_ALL_EXIT use only
  84. signal 0.
  85. - trap_unset(): Rename trap_clean(). Instead of $_ALL_EXIT use
  86. only signal 0.
  87. - $_ALL_EXIT: Remove this variable.
  88. - Replace all direct `trap' calls by trap_set().
  89. * README_SH: New section `Bugs' on `trap'..
  90. ### user errors, error output without function stack
  91. * groffer2.sh:
  92. - error_user(): New function for user errors.
  93. - error(): Remove call of clean_up() because the trap will do it
  94. with the exit. Remove the `kill' commands. Create a temporary
  95. file `.error' that can be tested by exit_test() for a better exit
  96. test (especially for shell `ksh').
  97. - $_DEBUG_USER_WITH_STACK: New variable to enable function stack
  98. output in error_user().
  99. - list_from_cmdline(), list_single_from_abbrev(), main_set_mode():
  100. Use error_user().
  101. ### test modes on X and tty
  102. * groffer2,sh:
  103. - is_X(), is_not_X(): New functions for checking on X Window.
  104. - $_VIEWER_HTML_TTY, $_VIEWER_HTML_X: New variables that split
  105. $_VIEWER_HTML. Add `galeon'.
  106. - main_parse_args(): Allow mode change for graphical modes only
  107. when in X Window.
  108. - _do_display() of main_display(): Create a special run for
  109. viewers that run on the terminal; `lynx' is the only one so far.
  110. ### add $GROFFER_MODE to command line
  111. * groffer.sh:
  112. - After the handling of the configuration files integrate
  113. $GROFFER_OPT to the command line.
  114. - This makes a `set' in the shell determination unnecessary.
  115. * groffer2.sh:
  116. - The debug test gets simpler because quotes are vanished without
  117. $GROFFER_OPT.
  118. - main_parse_MANOPT(): Prepend $mpm_list to the command line.
  119. - main_parse_args(): `set' is unnecessary.
  120. ### debug; new options
  121. * groffer2.sh:
  122. - --debug-all, --debug-lm, --debug-params, --debug-shell,
  123. --debug-stacks, --debug-tmpdir, --debug-user: New options.
  124. - --debug: Enable all debug variables except $_DEBUG_STACKS and
  125. $_DEBUG_LM. By the new options the smallest abbreviation is now
  126. `--debug'.
  127. - $_DEBUG_STACKS: Rename $_DEBUG.
  128. - $_DEBUG_PRINT_TMPDIR: New debug variable for printing the name
  129. of the temporary directory in main_init().
  130. - $_OPT_DEBUG: Remove this variable because debug is handled at
  131. the early part of the script.
  132. - clean_up(): Enlarge $_DEBUG_KEEP_FILES to not deleting the
  133. temporary directory.
  134. - usage(): Move all development options on a section of its own.
  135. - Move the test of rudimentary shell functionality at the
  136. beginning of the script. Add test on `sed'.
  137. - Follow this by the debug section. The determination of all
  138. --debug* options can be done without a function.
  139. * groffer.man: Revise information on --debug and add new options.
  140. ### variables
  141. * groffer.sh:
  142. - $_ERROR: Move the definition of this variable here.
  143. - $_GROFF_VERSION: New variable, is set over @...@ construct.
  144. - $_OUTPUT_FILE_NAME: Move this variable to groffer2.sh.
  145. * groffer2.sh:
  146. - $_MAN_AUTO_SEC_LIST: Rename $_MAN_AUTO_SEC because it represents
  147. a list.
  148. - $_MAN_AUTO_SEC_CHARS: New read-only variable for storing
  149. $_MAN_AUTO_SEC_LIST in [] construct. Use it in man_do_filespec()
  150. and whatis_filename().
  151. - $_SPACE_CASE: New read-only variable with [] on space characters
  152. with \ for `case' patterns. Use it in several functions.
  153. - $_SPACE_SED: New read-only variable with [] on space characters
  154. for `sed'. Use it in several functions.
  155. ### options and display
  156. * groffer2.sh:
  157. - list_from_cmdline(): Add test whether the same abbreviation is
  158. part of long options with and without arguments. Give handling of
  159. `=' a `case' pattern of its own.
  160. - main_display(): Remove unnecessary calls of `clean_up' in order
  161. to use `mozilla' without problems. In _do_display(): Fix -X by
  162. providing a different process when $_DISPLAY_PROG is empty.
  163. - main_set_mode(): Accept options for viewers as is, without check
  164. for program. Add test whether no program is given for a mode.
  165. This avoids unnecessary empty $_DISPLAY_PROG in main_display().
  166. ### viewer programs that run on the terminal (tty); new options
  167. * groffer2.sh:
  168. - $_VIEWER_TERMINAL: New variable that stores whether a viewer was
  169. supposed to run on tty.
  170. - --dvi-viewer-tty, --html-viewer-tty, --pdf-viewer-tty,
  171. --ps-viewer-tty, --tty-viewer-tty, --X-viewer-tty, --x-viewer-tty,
  172. --www-viewer-tty: New options for viewers that run on a terminal.
  173. - main_parse_args(), _do_display() of main_display(): Use the new
  174. options and the new variable.
  175. - usage(): Add the new options.
  176. * groffer.man: Add information on options --*-viewer-tty.
  177. ### other fixes
  178. * groffer2.sh:
  179. - _do_display() of main_display(): Bear errors of `groff' run.
  180. - is_not_file: Fix to have exactly one argument.
  181. - is_not_prog(): Handle no arguments.
  182. - list_has_not(): Fix.
  183. - main_do_fileargs(): Remove $mdfa_exitcode.
  184. - register_title(): Limit title to 4 elements.
  185. - version(): Print the version information to standard output just
  186. like `groff' does.
  187. - --no-special: New option to disable former calls of `--all',
  188. `--apropos*', and `whatis.
  189. - --title: Make it an option with argument.
  190. 2005-08-07 Keith Marshall <keith.d.marshall@ntlworld.com>
  191. * contrib/groffer/Makefile.sub (install): Reference groffer2.sh
  192. as $(srcdir)/groffer2.sh, so it will install when building in a
  193. different directory from the source.
  194. ________________________________________________________________
  195. * release of groffer 0.9.21
  196. 2005-08-02 Bernd Warken
  197. ### @...@ constructs
  198. * groffer.sh:
  199. - $_AT: New variable for `@'.
  200. - @...@: Replace the @...@ constructs by variables _AT_..._AT.
  201. These constructs are transformed by `make' to useful information.
  202. Keep all of these constructs in the first part of groffer.sh. For
  203. a run before a `make' call, the script sets these variables to
  204. special values for testing purpose.
  205. - $_GROFFER_LIBDIR: Variable pointing to the groffer library
  206. directory @libdir@/groff/groffer.
  207. ### Configuration files
  208. * groffer.sh:
  209. - Add test for `$()' construct.
  210. - Read and transform the configuration files and execute the
  211. emerging commands. The `sed' script was heavily enlarged to
  212. handle line with spaces and quotes. The emerging script is now
  213. called by `eval', so no temporary file is needed.
  214. - $_CONF_FILE_ETC, $_CONF_FILE_HOME: New variables for the config
  215. files.
  216. - $_SQ, $_SP: Move variables for characters before the handling of
  217. the configuration files. Rename $_SQUOTE to $_SQ and $_SPACE to
  218. $_SP.
  219. - $GROFFER_OPT: Remove cleaning of this variable before the
  220. reading of the configuration files.
  221. * groffer2.sh:
  222. - main_init(): Remove the getting of the configuration files.
  223. ### Rewrite the shell determination
  224. * groffer.sh:
  225. - Get rid of all functions in `groffer.sh'. Rewrite the shell
  226. determination with `` and $().
  227. - --shell: Shortest abbreviation is `--sh'. Allow arguments for
  228. the shell name.
  229. - Allow an empty argument for --shell as shell name to overwrite a
  230. specified shell; an empty shell name gets back to the default
  231. shell.
  232. - The shell determination now inludes the full handling of the
  233. config files. The `--shell' option needs no longer a line
  234. starting with `-'.
  235. ### Test of unset
  236. * groffer.sh:
  237. - Remove test of `unset'.
  238. - Remove all calls of `unset'.
  239. - Use one character names for all variables that are meant to be
  240. local in this script.
  241. * groffer2.sh:
  242. - Move the test of `unset' to the testing of rudimentary shell
  243. functionality without change.
  244. ### Allow abbreviations for long options
  245. * groffer2.sh:
  246. - list_has_abbrev(): New function for checking a list having an
  247. element with a given abbreviation.
  248. - list_get_single_from_abbrev(): New function to retrieve the
  249. element having a given abbreviation.
  250. - list_from_cmd_line(): For an option abbreviation determine the
  251. corresponding long option.
  252. - From the man option lists remove the elements that are also in
  253. a groffer list.
  254. - Allow abbreviation for the early test of --debug.
  255. * groffer.sh: Allow abbreviation for the early test on --shell.
  256. - get_opt_shell(): Rewrite _get_opt_shell() and the shell test
  257. around it.
  258. - test_on_shell(): Rename function _test_on_shell().
  259. - $_SHELL: global variable for the shell to run groffer2.sh.
  260. ### Get rid of `sh -c'
  261. * groffer2.sh:
  262. - main_display(), _do_display(): Remove the `sh -c' calls. Make
  263. the cleanup working without it.
  264. - _do_display(): Extend _do_display() such that it can be used for
  265. the pdf mode as well.
  266. - _make_pdf(): New subfunction of main_display() for running the
  267. additional parts of pdf mode in _do_display().
  268. - rm_file(), rm_file_with_debug(), rm_tree(): New functions for
  269. removing files and directories.
  270. ### Change directory
  271. * groffer2.sh:
  272. - $_START_DIR: New variable to store the directory at the starting
  273. time of the script.
  274. - main_display(): Go to the groffer temporary directory to be able
  275. to process internal `groff' data like pictures.
  276. - clean_up(): Get back to the starting directory.
  277. ### Compatibility with strange shells
  278. * groffer2.sh:
  279. - clean_up(): `zsh' and `posh' had difficulties with `eval'.
  280. - is_*(): Add test on empty argument. Some shells return true on
  281. `test -d' etc. with empty argument, while most shells return
  282. false.
  283. - echo1(); New function to print single line `cat <<EOF'. Replace
  284. all `echo x' by `echo1'.
  285. - list_has_abbrev(), list_from_cmdline(): Correction.
  286. - main_parse_MANOPT(): Repair and revise.
  287. - --do-nothing: New option without output (for development).
  288. - Rewrite rudimentary shell functionality near the beginning of
  289. the script.
  290. * groffer.sh, groffer2.sh:
  291. - Remove `;' after the commands `if', `while', and `until'.
  292. ### Debugging information
  293. * groffer2.sh:
  294. - $_DEBUG_PRINT_PARAMS: New variable for printing all parameters
  295. from the config files, $GROFFER_OPT, and command line after they
  296. have been transformed.
  297. - $_DEBUG_PRINT_SHELL: New variable for printing the name of the
  298. shell found in groff.sh.
  299. - main(): Move the landmarks of main-*() into main().
  300. ### Further checks and additions
  301. * groffer.sh, groffer2.sh:
  302. - $_PROGRAM_NAME: Replace this variable by `groffer'. The program
  303. name is now stable.
  304. - $_GROFFER_RUN: Remove this variable. As `groffer.sh' or
  305. `groffer' is no longer rerun, this variable is not necessary any
  306. more.
  307. * groffer2.sh:
  308. - main_set_resources(): Make the default viewers capable to use
  309. arguments in the list.
  310. - leave(): Add an argument for given exit code. Use it where
  311. suitable in main_*().
  312. - do_filearg(): Add error messages for non-existing files and man
  313. pages.
  314. - _do_opt_V(): New subfunction of main_display() to handle the
  315. output for option `-V'. `groff -V' is greatly enlarged by
  316. `groffer' specific information.
  317. - register_title(): Handle file names with spaces. Replace spaces
  318. by `_'.
  319. - is_existing(): Add `test -c' for special files.
  320. - usage(): Add `=arg' to the options with an argument. Add option
  321. `--tty-viewer'.
  322. - kghostview: In the default viewer list, add option
  323. `--scale=1.45'.
  324. - $_OPTS_CMDLINE_SHORT_NA: Correct a lacking space.
  325. * Makefile.sub: Repair the installation instructions for
  326. groffer2.sh.
  327. * groffer.man:
  328. - Add paragraph on option handling.
  329. - Add option `--do-nothing'.
  330. - Reorder option for development and `groff'.
  331. - Rewrite documentation for option `-V'.
  332. - Expand `--shell'.
  333. - Reformulate sections CONFIGURATION FILES, COMPATIBILITY and SEE
  334. ALSO.
  335. - Make `man' italic where possible.
  336. - .copyleft: Adjust the fonts.
  337. * README: Update sections `Output' and `Compatibility'.
  338. * README_SH:
  339. - Add `mksh' as compatible shell.
  340. - Add information on the scripts after the split.
  341. * TODO: Remove some fulfilled parts.
  342. * ChangeLog: Remove final spaces.
  343. ________________________________________________________________
  344. * release of groffer 0.9.20
  345. 2005-07-30 Bernd Warken
  346. ### Split groffer.sh into two files groffer.sh and groffer2.sh.
  347. * groffer.sh:
  348. - Remove the second part of this script. It is now in
  349. groffer2.sh.
  350. - $_GROFFER2_SH: New variable to point to the installed position
  351. of `groffer2.sh'. This position is presented using @libdir@.
  352. * groffer2.sh: New script containing the second part of
  353. groffer.sh. This script will be installed in the groffer library
  354. directory @libdir@/groff/groffer, this might be
  355. /usr/local/lib/groff/groffer/groffer2.sh for example.
  356. * Makefile.sub:
  357. - `groffer': Add replacement of @libdir@.
  358. - `install_data': Add the installation of the groffer library
  359. directory and groffer2.sh.
  360. - `uninstall_sub': Delete the installed `groffer2.sh' and the
  361. groffer library directory.
  362. * README_SH:
  363. - Remove the function list.
  364. - Add argument options to the list of used commands.
  365. - Documentation of the splitting of the script.
  366. - Document the possible abbreviation of options.
  367. ________________________________________________________________
  368. * release of groffer 0.9.19
  369. 2005-07-07 Bernd Warken
  370. * groffer.sh: extensions
  371. - `mode x': Mode for the equivalent options `--x', `--mode x',
  372. `--X' `--mode X', and the default mode. The default assumes a
  373. resolution of 75 dpi. The default device for a resolution of 75
  374. dpi is `X75-12', the default device for a resolution of 100 dpi is
  375. `X100'. The default geometry for the resolution of 100 dpi is set
  376. to the width 800 dpi.
  377. - `mode X': New mode for option -X only.
  378. - `-V': Extent the `groff' output of -V by `groffer' specific
  379. information (in main_display()).
  380. - register_file(): Replace title `-' by `stdin'.
  381. - $_DEBUG_KEEP_FILES: If set to `yes' the files in the temporary
  382. directory are not deleted before the end trap.
  383. * groffer.sh: get `zsh' to work as well
  384. - tmp_create(): Use `: >file' for generating an empty file.
  385. - rmdir: Replace `rmdir' by `rm -f -r'.
  386. - eval: Add `eval' to many commands with variable arguments.
  387. * groffer.sh: repair `debug'
  388. - Print all debug output to stderr.
  389. - $_FUNC_STACK: Built function call stack even when $_DEBUG is not
  390. set. Now the arguments are not added.
  391. - $_DEBUG: If set to `yes' print 3 call stack events: the function
  392. that is added with its arguments is printed with `+++ '
  393. (func_push()); the call stack after the addition is printed with
  394. `>>> ' (func_push()); the call stack after the removing is printed
  395. with `<<< ' (func_pop()).
  396. - error(): Always print the function call stack on errors.
  397. * groffer.sh: Corrections
  398. - $_groffer_run: Rename to $_GROFFER_RUN.
  399. - $unset: Rename to $_UNSET.
  400. - Repair test of `unset'.
  401. - Repair test for `--shell'. The script is now rerun under the
  402. shell specified in the option argument. This can increase the
  403. speed.
  404. * README_SH: `zsh' now works.
  405. * groffer.man:
  406. - Reformulate the information for the `groffer' specific details
  407. of option `-V'.
  408. - Add information on the debug process.
  409. - Add information on the default devices in `x mode'.
  410. - Minor corrections.
  411. ________________________________________________________________
  412. * release of groffer 0.9.18
  413. 2005-07-01 Bernd Warken
  414. * groffer.sh: further shell compatibility
  415. - `echo': Remove options and possible options of `echo' by
  416. preceding the argument with a character `x' that is removed by
  417. `sed' or replace `echo' by `cat <<EOF'. `echo -n' seems to be not
  418. portable, so it is omitted.
  419. - `for': Remove `;' from within `for' (because of ksh).
  420. - `ls': Old UNIX systems echoed the error message to standard
  421. output. So handle the output with `sed'. If the output contains
  422. `not found' map it to an empty string.
  423. - `true': Replace `true' by command `:'. Remove test of `true'
  424. (because `ash' refuses the redefinition of builtins even in an
  425. unreachable `if' branch).
  426. - `false': Remove test of `false'; it isn't used any more.
  427. - `test': As `test -e' does not exist in Solaris 2.5 replace it by
  428. `test -f || test -d'.
  429. - `unset': `unset' is said to be not portable. As `ash' protests
  430. against the definition of the function `unset()' in the test of
  431. `unset' replace the test by defining `$unset' to `unset' if it
  432. exists and to `:' otherwise. Use `eval $unset' instead of the
  433. direct command `unset'.
  434. - _get_opt_shell(): Replace `for' loop with `shift' by `while'.
  435. - man_search_section(): Replace `for f in filename*' by a test on
  436. the existence of `filename*'.
  437. - `zsh' interprets `$...' as `"$..."'. So `eval' must be called;
  438. This cannot be used in `for i in $f', so it must be rewritten as
  439. `for i in $(eval set x $f; shift; echo "$@")'
  440. * groffer.sh:
  441. - `--X', `--x', `--mode=X', `--mode=x': Make these options
  442. equivalent to choosing an X device by setting `-TX75-12'. `-X' is
  443. still equivalent to `groff -X'.
  444. - main_init(): Choose the name of the temporary file by adding a
  445. number using `expr' if it exists and cannot be removed.
  446. - main_parse_args():Repair some options by replacing `$mpa_mode'
  447. by `$_OPT_MODE'.
  448. - catz(): Rename it to cat_z() to avoid problem with existing
  449. programs.
  450. - where(): Rename to where_is().
  451. - $_CONFFILES: Rename to $_CONF_FILES.
  452. - $_HAS_BZIP: export and preset it.
  453. * groffer.man:
  454. - Document the `X mode' changes.
  455. - Add `@g@' to `troff'.
  456. * README, README_SH, TODO:
  457. - Add date line `Latest update:'.
  458. - Add `...' quoting to essential terms.
  459. - Add Emacs mode at the end.
  460. * README_SH:
  461. - Add documentation on the above compatibility changes.
  462. - Add documentation on used commands.
  463. - Mention the tested shells.
  464. * Makefile.sub:
  465. Readd `@g@'.
  466. ________________________________________________________________
  467. * release of groffer 0.9.17
  468. 2005-06-23 Bernd Warken
  469. * groffer.sh: get rid of `local' in functions (it is not POSIX)
  470. - Replace local variables by variable names with a special prefix
  471. that is an abbreviation of the corresponding function name (quasi-
  472. local variables).
  473. - Unset the quasi-local function variables before returning.
  474. - _t_e_s_t_f_u_n_c_(): Remove tests for local and global
  475. variables.
  476. - Add quasi-local variables for saving the content of
  477. single-character variables.
  478. - Remove some unused local and global variables.
  479. - Several variables were forgotten to make local. They are now
  480. made quasi-local.
  481. * groffer.sh: other corrections
  482. - $return_var: New function (after `eval') for an arbitrary
  483. return value.
  484. - obj*(): Add return modes.
  485. - Rewrite tests for `true' and `false'.
  486. - Add function names to error calls where it was forgotten.
  487. - `for': Replace `for x in "$@"' by `for x'.
  488. - `set': Replace `set -- ...' by `set x ...; shift'.
  489. - `sed': Replace `\|.*|s|...|...|' by `s|...|...|'.
  490. * README_SH:
  491. - Add information on the removing of `local'.
  492. - New section for non-POSIX shell restrictions.
  493. 2005-06-20 Keith Marshall
  494. * README-SH: Information of `Portable shells' in info autoconf.
  495. ________________________________________________________________
  496. * release of groffer 0.9.16
  497. 2005-06-19 Bernd Warken
  498. * groffer.sh: Place each `then', `else', and `do' on a line of its
  499. own because some shells do not support the mixture mode.
  500. * groffer.man: Add section `BUGS'.
  501. * README_SH:
  502. - Add compatibility information.
  503. - Correct documentation for function arguments.
  504. 2005-06-18 Keith Marshall
  505. * groffer.sh: $_NULL_DEV: Replace /dev/null by $_NULL_DEV which is
  506. either /dev/null or NUL if /dev/null does not exist.
  507. 2005-06-17 Zvezdan Petkovic
  508. * Makefile.sub: $(RM): Define it to `rm -f' because not all `make'
  509. programs have it predefined.
  510. 2005-06-16 Bernd Warken
  511. ________________________________________________________________
  512. * release of groffer 0.9.15
  513. * Makefile.sub:
  514. - Use `$(RM)'.
  515. - Use `sed -f $(SH_DEPS_SED_SCRIPT)'.
  516. 2005-05-20 Bernd Warken
  517. ________________________________________________________________
  518. * release of groffer 0.9.14
  519. * groffer.man: correction of non-hyphenation
  520. 2005-05-17 Bernd Warken
  521. ________________________________________________________________
  522. * release of groffer 0.9.13
  523. * groffer.sh:
  524. - $_VIEWER_DVI: Add `kdvi'.
  525. - $_VIEWER_PDF: Add `kghostview', `ggv', and `kpdf'.
  526. - $_VIEWER_PS: Add `kghostview' and `ggv'.
  527. - $_modefile: For the output file name, add extension .ps for ps
  528. mode and .dvi for dvi mode. This exists already for the html and
  529. pdf modes.
  530. - Update some parts of the documentation.
  531. * README, README_SH:
  532. - Move some parts on usage from README_SH to README.
  533. - Reformulate several parts of both files.
  534. * groffer.man: update
  535. 2005-05-14 Keith Marshall
  536. * groffer.sh:
  537. - first line: Add space to `#! /bin/sh'.
  538. 2004-11-15 Bernd Warken
  539. ________________________________________________________________
  540. * release of groffer 0.9.12
  541. * groffer.sh:
  542. - main_init(): Rewriting of the creation of the temporary
  543. directory to ensure that it cannot be made writable apart from the
  544. user. If the directory already exists and cannot be removed then
  545. append `X' to the directory name.
  546. - is_non_empty_file(): fix it to use POSIX `test -s'.
  547. - is_existing(): new function.
  548. - POSIX `rm -f -r': use this in `clean_up()' and `main_init()'.
  549. - `--macro-file': remove this unused long option.
  550. - `-V', `--source', `--device': move these from groff options
  551. to groffer options.
  552. - `$_TMP_DIR_SUB': remove this unused variable.
  553. 2004-06-15 Bernd Warken
  554. ________________________________________________________________
  555. * release of groffer 0.9.11
  556. * groffer.sh:
  557. - To the search of the `--apropos-*' options, add man pages with a
  558. subsection in their apropos output.
  559. 2004-06-02 Bernd Warken
  560. ________________________________________________________________
  561. * release of groffer 0.9.10
  562. * groffer.sh:
  563. - Remove automatic call of `ash' due to inconsistencies of
  564. different ash versions.
  565. - In the first run, add recognition of `--shell' lines in the
  566. groffer configuration files. To configure an external shell in
  567. a configuration file, a line starting with `--shell' is
  568. necessary.
  569. - list_from_cmdline(): Simplify the arguments.
  570. - As $POSIXLY_CORRECT is internally set to `y' by some GNU
  571. `/bin/sh' shells the following 2 fixes are necessary:
  572. -- `sed': Empty patterns are not allowed with $POSIXLY_CORRECT
  573. set; so move the address information before the `s' command to the
  574. pattern after the command, and write `.*' to the address field.
  575. -- list_from_cmdline(): Remove the strange $POSIXLY_CORRECT style
  576. to finish the option processing after the first non-option
  577. argument; use the flexible GNU mixing of options and file names
  578. instead.
  579. * groffer.man:
  580. - Remove any hints on `ash'.
  581. - Add minus line behavior of `--shell' for configuration and add a
  582. corresponding example.
  583. - Update the information on $POSIXLY_CORRECT.
  584. 2004-05-29 Bernd Warken
  585. ________________________________________________________________
  586. * release of groffer 0.9.9
  587. * groffer.sh:
  588. Fix first run section to allow the starting shell to go on if
  589. `ash' is not available.
  590. * groffer.man:
  591. Remove unnecessary information on groffer version.
  592. 2004-05-12 Bernd Warken
  593. ________________________________________________________________
  594. * release of groffer 0.9.8
  595. * groffer.sh:
  596. Fix problems of `test' by adding subs to arguments.
  597. * groffer.man:
  598. Write the file license as macros that are called in sections
  599. AUTHOR and COPYING.
  600. * .cvsignore:
  601. Restore this file.
  602. 2004-04-30 Bernd Warken
  603. ________________________________________________________________
  604. * release of groffer 0.9.7
  605. * groffer.sh:
  606. - obj(), obj_data(), obj_from_output(), obj_set(): New object
  607. oriented functions to minimize complicated `eval' commands.
  608. - list_*(): Corrections.
  609. - usage(): Streamlining.
  610. * groffer.man, README_SH:
  611. Corrections.
  612. 2004-04-27 Bernd Warken
  613. ________________________________________________________________
  614. * release of groffer 0.9.6
  615. This version replaces the license of all files except ChangeLog of
  616. the groffer source to the GNU General Public License (GPL) of the
  617. version described in files COPYING and LICENSE in the groff top
  618. source directory.
  619. * groffer.man:
  620. Changement from the GNU Free Documentation License (FDL) to
  621. the GNU General Public License (GPL).
  622. * README, README_SH, TODO:
  623. Add license GNU General Public License (GPL).
  624. * Makefile.sub, groffer.sh:
  625. Keep the GNU General Public License (GPL), but refer to the
  626. COPYING and LICENSE files.
  627. * ChangeLog: Add a license in the style of Emacs ChangeLog file,
  628. which is weaker than the GPL, but has its flavor.
  629. 2004-04-24 Bernd Warken
  630. ________________________________________________________________
  631. * release of groffer 0.9.5
  632. This version is a rewrite of groffer in many parts, but it is kept
  633. in the old single script style.
  634. Overview of new options:
  635. --text, --mode text, --tty-viewer,
  636. --X, --mode X, --X-viewer, --html, --mode html, --html-view,
  637. --apropos-data, --apropos-devel, --apropos-progs
  638. New file:
  639. <groffer-source>/README_SH
  640. ******* Extension of the `apropos' handling
  641. The output of man's `apropos' has grown immensely meanwhile, so it
  642. has become inefficient. Now `groffer' provides new options to get
  643. the a selected information from this output.
  644. * groffer.sh:
  645. `--apropos-progs': new option for displaying only information
  646. on programs (man page sections 1, 6, and 8)
  647. `--apropos-data': new option for displaying only information
  648. on documented data (man page sections 4, 5 and 7)
  649. `--apropos-devel': new option for displaying only information
  650. on development documentation (man page sections 2, 3 and 9)
  651. `--apropos': still displays just the output of man's `apropos'
  652. program.
  653. - Specify all of these options as a single argument option; that
  654. makes groffer's `--apropos' option slightly different because
  655. the corresponding `man' option does not have arguments, but takes
  656. all file arguments as apropos targets. So just ignore the `man'
  657. options `-k' and `--apropos' in the parsing of $MANOPT.
  658. - Exit after processing one `apropos' call.
  659. ******* Quasi object oriented function arguments
  660. An object is the name of an environment variable. The value of
  661. this variable contains the object's content. This allows to
  662. specify function arguments and the calling syntax in a simpler way
  663. by letting the first argument be a variable name, usable for input
  664. or output.
  665. Such an object type is `list', the string value of a shell
  666. variable arranged in space-separated single-quoted elements, such
  667. as $GROFFER_OPT internally.
  668. * groffer.sh:
  669. - Remove list_from_args(), list_element_from_arg()
  670. list_from_lists(), list_length(), and list_prepend().
  671. They can be replaced by list_append().
  672. - All list*() functions are rearranged such that the first
  673. argument is a list object, the name of a variable.
  674. ******* Simplification of configuration files
  675. The new syntax of the groffer configuration files is
  676. - all lines starting with a `-' character are interpreted as
  677. command line options for all calls of groffer; they are collected
  678. and prepended to the actual value of $GROFFER_OPT; optional
  679. spaces at the beginning.of the line are omitted.
  680. - all other lines are interpreted as a shell command and executed
  681. in the current shell of the groffer call.
  682. Precedence:
  683. - The command line and the external environment variables such as
  684. $GROFFER_OPT of the groffer call have the highest precedence.
  685. - This is overwritten by the configuration file in the user's home
  686. directory.
  687. - The system configuration file in /etc has the lowest
  688. precedence.
  689. * groffer.sh:
  690. The configuration files are now called after the determination of
  691. the temporary files in main_init().
  692. ******* Script file name
  693. The file name of the script is needed for the several calls during
  694. the search for the optimal shell.
  695. * groffer.sh:
  696. - $_GROFFER_SH: replace $_this by $_GROFFER_SH and use $0 for
  697. determining the file name of the script for the following calls,
  698. instead of the cumbersome @BINDIR@ construction.
  699. - Force the script to be called as an executable file, so $0 must
  700. contain the program name.
  701. ******* Improved temporary file names
  702. Just like groff, groffer mixes all file parameters into a single
  703. output file. Its name is now constructed as a comma-separated
  704. list built from the file name arguments without a leading comma.
  705. So a leading comma can be used for the internal temporary file
  706. names.
  707. * groffer.sh:
  708. - $_OUTPUT_FILE_NAME: new global variable as basis for the output
  709. file name; it is set in main_set_resources().
  710. - tmp_create(): use `,name' for temporary files different from
  711. output file because the output file name does not start with a
  712. comma. `$$' is not needed anymore.
  713. - main_display(): simplification of $_modefile in _do_display()
  714. and single display modes.
  715. - Add extension `.html' to output file name in html mode.
  716. - base_name(): correction for strange positions of `/'.
  717. ******* Mode fixes
  718. * groffer.sh:
  719. - Set the main default mode to `x' with groff's X Window viewer
  720. `gxditview'.
  721. - Allow 'x' and 'X' in `--mode' for the X Window mode; the same
  722. for `--x' and `X', `--x-viewer' and `--X-viewer'.
  723. - Make groff's `-X' equivalent to `mode X'.
  724. - Fix `--auto', `--mode auto', and `--default-modes'.
  725. - `html' mode: new mode equivalent to `www', add `konqueror' and
  726. `lynx' as viewers.
  727. - `pdf' mode: fix zoom options for pdf-viewer `xpdf' in
  728. main_set_resources(); in main_display() fix the display structure.
  729. - Set default X Window resolution to 75dpi. This is not optimal,
  730. but with a higher value the options and resources for some viewers
  731. must be optimized.
  732. `--text' and `--mode text': new option for text output without a
  733. pager.
  734. - `--tty-viewer': new option equivalent to `--pager'.
  735. - Correct the pagers for `tty' mode.
  736. - Fix `groff' mode in main_set_resources() and main_display().
  737. - Harmonize `--mode arg' with the equivalent options `--arg'.
  738. ******* Fixes for command line options
  739. * groffer.sh:
  740. - list_from_cmdline(): fix the parsing of options with arguments.
  741. - Rename $_OPT_TTY_DEVICE to $_OPT_TEXT_DEVICE.
  742. - $_OPTS_X_*: new variables for the inhereted X Window variables.
  743. - Improve the distribution of the command line options into
  744. $_OPTS_GROFFER_*, $_OPTS_GROFF_*, $_OPTS_X_*, and $_OPTS_MAN_*.
  745. - $_OPTS_MANOPT_*: new variables for the parsing of $MANOPT.
  746. - Correct $_OPTS_CMDLINE_*.
  747. - Remove some unused $_OPTS_*.
  748. - `--iconic': new option from `-iconic' of the X Window toolkit.
  749. - Correct `--rv' to an option without argument.
  750. - Minor fixes of other X Window toolkit options.
  751. ******* Other fixes
  752. * groffer.sh:
  753. - is_prog(): allow 0 arguments.
  754. - is_not_writable(): new function.
  755. - is_*(): fix trailing return codes.
  756. - Replace most `test' calls by is_*() functions.
  757. - man_setup(): due to bugs in `manpath', prefer
  758. manpath_set_from_path() for the determination of the man page path.
  759. - man_search_section(): correction of some `for' loops.
  760. - Remove export of external non-groffer variables.
  761. ******* Documentation
  762. * groffer.man:
  763. - Reorder the option details according to the option origin as
  764. groffer, groff, X, and man options.
  765. - Add the programming changes information mentioned above.
  766. - Support man pages with a dot in their name
  767. * README_SH: new file
  768. Move large parts of the documentation in `groffer.sh' into this
  769. file.
  770. * groffer.sh: usage():
  771. - Change the output for `--help' to standard output.
  772. - Restructure the information for this help output.
  773. ******* Removement of the author's email address
  774. Because of the extreme spam attacks, the author removed all
  775. occurencies of his email address in every file of the groffer
  776. source.
  777. 2003-01-22 Bernd Warken
  778. ________________________________________________________________
  779. * release of groffer 0.9.4
  780. * groffer.sh: corrections for some restrictive shells
  781. - Possible exit codes in actual `ash' are between 0 and 63. To
  782. handle even deeper restrictions, use 7 as maximal code instead
  783. of 255 as replacement for error -1.
  784. - Remove variables $_BAD2 and $_BAD3.
  785. - Replace `trap' argument `EXIT' by 0 and write new fuctions
  786. `trap_clean' and `trap_set' to handle the restrictions of `trap'
  787. for some shells.
  788. - Correct wrong $MANPATH to $_MAN_PATH in function
  789. `man_do_filespec'.
  790. - Test existence of directory before deleting it in the
  791. `clean_up' definitions.
  792. - Correct help output in `usage' (called by `--help').
  793. * TODO:
  794. Remove mention of `shoop' and `apropos'.
  795. 2002-10-21 Bernd Warken
  796. ________________________________________________________________
  797. * release of groffer 0.9.3
  798. * groffer.sh: new temporary subdirectory
  799. - Generate temporary subdirectory for storing temporary files
  800. with better names in future groffer versions (name:
  801. "groffer$$" in usual temporary directory).
  802. - Use `umask 000' for temporary files to allow cleaning up
  803. for everyone after a system break.
  804. - Change both clean_up() functions (for normal shell and
  805. for main_display() subshell) to handle the new subdirectory.
  806. - clean_up_secondary() and $_TMP_PREFIX are unnecessary now, so
  807. they were removed.
  808. * Makefile.sub: `sed' commands for "groffer:"
  809. - Remove "@g@" entry (not used in "groffer.sh").
  810. - Add global replace for "@BINDIR@" and "@VERSION@" for future
  811. usage.
  812. * TODO: think about...
  813. - writing part of groffer in C/C++.
  814. - handling several files with different macro packages.
  815. 2002-10-17 Bernd Warken
  816. ________________________________________________________________
  817. * fixes of groffer 0.9.2
  818. * groffer.sh:
  819. Terminate main_parse_MANOPT() if $MANOPT is empty or consists
  820. of space characters only.
  821. * groffer.man: some fixes in "GROFFER OPTIONS"
  822. - New macro ".Header_CB" for CB font in .TP headers; used for
  823. definition of variables in option --mode.
  824. - Fix some option references to refer to long options.
  825. * README:
  826. New file for general information on the groffer source; it is
  827. not installed.
  828. 2002-10-14 Bernd Warken
  829. * Makefile.sub:
  830. add replacement "@BINDIR@" to "$(bindir)" for "groffer:"
  831. * groffer.sh:
  832. Define $_this as "@BINDIR@/${_PROGRAM_NAME}" to save the right
  833. installation position of groffer for the special shell calling.
  834. * groffer.man:
  835. Remove double definition of filespec parameters.
  836. 2002-10-13 Bernd Warken
  837. ________________________________________________________________
  838. * release of groffer 0.9.2
  839. * groffer.sh: fixes
  840. - Fix some 'sed' functions: two in func_stack_dump(), one in
  841. base_name(), add 'sed' command in list_from_cmdline().
  842. - Finish main_parse_MANOPT() if $MANOPT is empty.
  843. - Sort $_OPTS_GROFF_SHORT_NA like groff short options (but
  844. unchanged).
  845. - Fix some comments.
  846. * groffer.man: make it more readable (but no additions)
  847. - A shortened section "SYNOPSIS" is followed by a simplified
  848. section "DESCRIPTION".
  849. - The options from "SYNOPSIS" go to new section "OPTION
  850. OVERVIEW" with all groffer options in a single subsection.
  851. - The details of all groffer options are described in section
  852. "GROFFER OPTIONS".
  853. - New macro for file names ".File_name".
  854. - "Option Parsing" is moved to section "COMPATIBILITY".
  855. - Fix some "EXAMPLES".
  856. 2002-09-30 Bernd Warken
  857. ________________________________________________________________
  858. * release of groffer 0.9.1
  859. * TODO: remove done entries
  860. - Remove request for different shells.
  861. - Remove the 'sed' complaints.
  862. 2002-07-15 Bernd Warken
  863. * groffer.sh: replace `sed' interface by direct `sed'
  864. - This improves the performance of the shell programming parts
  865. and shortens the groffer script by about 5%.
  866. - Remove functions: string_del_append(), string_del_leading(),
  867. string_del_trailing(), string_flatten(), string_get_before(),
  868. string_get_leading(), string_replace_all(), string_sed_s(),
  869. and their auxiliary functions.
  870. - Replace all calls of these functions by direct `sed' commands.
  871. - Define variables for special characters to ease `sed' calls.
  872. - Remove `$APPEND'.
  873. - Restrict list_from_string() to single character separators.
  874. - Correct list_check() and base_name().
  875. - Add comments to all calls of `sed'.
  876. * groffer.sh: add run-time support for several shells
  877. - New option `--shell': stop execution and rerun groffer under
  878. the shell specified in the argument of `--shell'.
  879. - If no shell was specified at run-time, `ash' is tried first;
  880. if `ash' is not available continue with the shell with which
  881. groffer was called from the command line, or with the shell
  882. name in the first line of the script, actually `/bin/sh'.
  883. 2002-07-12 Bernd Warken
  884. ________________________________________________________________
  885. * fixes for groffer 0.9.0
  886. * groffer.sh: enhance version information
  887. `groffer -v|--version' now print:
  888. - groffer's version number and date
  889. - the string `is part of '
  890. - groff's version information (version number and copyright),
  891. but not groff's `called subprograms' information.
  892. * groffer.sh: minor fixes
  893. - Fix the argument parser to process argument `-' correctly.
  894. - Some display programs have trouble with empty input; feed a
  895. line consisting of a single space character in this case for
  896. all display modes (not for source or groff modes).
  897. * TODO:
  898. fix entry `shoop' (not 'shopt').
  899. 2002-06-28 Bernd Warken
  900. ________________________________________________________________
  901. * release of groffer 0.9.0
  902. * groffer.sh: new mode `pdf'
  903. - PDF (Portable Document Format):
  904. -> Transform groff `ps' output into pdf using `gs'.
  905. -> Pro: PDF viewers provide text searching (!).
  906. -> Con: the transformation is quite slow.
  907. -> Not suitable as an auto mode.
  908. - New options `--pdf', `--pdf-viewer', `--mode pdf'.
  909. - Standard pdf viewers `xpdf' and `acroread'.
  910. - For `xpdf', choose zoom `z 3' for 100 dpi, `z 2' for 75 dpi.
  911. * groffer.sh: support bzip2 decompression
  912. - add test for `bzip2' with necessary options
  913. - extend functions `catz()' and `save_stdin()'.
  914. * TODO
  915. remove entry on `bzip' decompression (done).
  916. * groffer.man:
  917. - Document new `pdf' features.
  918. - Document new `bzip2' decompression.
  919. - Fix documentation for `--auto-modes'.
  920. * groffer.sh: minor fixes
  921. - Improve device tests in `tty' and `dvi' modes.
  922. - Internally, map mode `auto' to '' to facilitate tests.
  923. - Fix auto mode sequence to: `ps,x,tty' as was intended.
  924. 2002-06-25 Bernd Warken
  925. * groffer.sh:
  926. Fix `source' mode.
  927. * groffer.man:
  928. Fix some indentations.
  929. 2002-06-23 Bernd Warken
  930. ________________________________________________________________
  931. * release of groffer 0.8
  932. * Makefile.sub: add copyright section
  933. * groffer.man:
  934. - Document the new options.
  935. - Revise the documentation of the modes.
  936. - Document the configuration files in new section `FILES'.
  937. - Redesign section `EXAMPLES'.
  938. - Remove documentation for `-W'.
  939. * groffer.sh: new debugging features
  940. - Disabled by default; enabled by environment variables.
  941. - Add landmark() to catch typos with quotes.
  942. - Add a function call stack for suitable functions; implemented
  943. as within the argument checker func_check().
  944. - This implies the need to provide `return' with some clean-up
  945. facility; implemented as `eval "$_return_..."'.
  946. - Add option `--debug' to enable debugging at run-time.
  947. - Actually, the groffer script uses only shell builtins found
  948. in `ash' (a subset of POSIX) and POSIX `sed' as the only
  949. external shell utility.
  950. * groffer.sh: customization of viewers
  951. - In `groff' mode, the groffer viewing facilities are disabled.
  952. - The postprocessor option `-P' costumizes the viewer only in
  953. some situations in the `groff' mode, so a new infrastructure
  954. for viewer customization is necessary.
  955. - Allow to specify arguments to the viewer programs specified
  956. in `--*-viewer()'.
  957. - Implement some of the essential X Toolkit resource options in
  958. groffer, but with use a leading double minus.
  959. -> `--bd': set border color.
  960. -> `--bg', `--background': set background color.
  961. -> `--bw': set border width.
  962. -> `--display': set X display.
  963. -> `--geometry': set size and position of viewer window.
  964. -> `--fg', `--foreground': set foreground color.
  965. -> `--ft', `--font': set font.
  966. -> `--resolution': set X resolution in dpi.
  967. -> `--title': set viewer window title.
  968. -> `--xrm': set X resource.
  969. - Remove misnamed option `--xrdb'.
  970. * groffer.sh: new mode structure
  971. - New Postcript mode `ps' (`--ps'):
  972. -> default viewers: gv,ghostview,gs_x11,gs;
  973. -> `--ps-viewer' sets the Postscript viewer.
  974. - New mode `www' (`--www') for displaying in a web browser:
  975. -> default browsers: mozilla,netscape,opera,amaya,arena;
  976. -> `--www-viewer' sets the web browser.
  977. - New dvi mode (`--dvi'); default viewer `xdvi':
  978. -> default viewers: xdvi,dvilx;
  979. -> `--dvi-viewer' sets the dvi viewer.
  980. - New mode `auto':
  981. -> active if no other mode is given or by new option `--auto';
  982. -> selects from a sequence of modes that are tested until one
  983. of them succeeds.
  984. -> the default mode sequence is actually `ps', `x', `tty'.
  985. -> `--default-modes' sets this mode sequence as a comma
  986. separated string of program names, optionally each one
  987. with arguments).
  988. - New mode `groff':
  989. -> process input like groff, ignore viewing options.
  990. -> activated by new option `--groff'.
  991. -> automatically active with one of `-V', `-X', `-Z'.
  992. - Revise `tty' mode:
  993. -> allow several text devices.
  994. ->
  995. - Reorganize the mode management:
  996. -> new mode setting option `--mode'.
  997. -> logically separate source, groff, and display modes.
  998. -> intermediate output mode is now part of mode groff; remove
  999. any special features around `-Z'.
  1000. - Update usage() to reflect the new option structure.
  1001. * groffer.sh: add configuration files
  1002. - `/etc/groff/groffer.conf' system-wide configuration.
  1003. - `${HOME}/.groff/groffer.conf' user configuration.
  1004. - The configuration file are shell scripts for now; later
  1005. implementations can identify this from the `#! /bin/sh' line.
  1006. * groffer.sh: new data structure `list':
  1007. - Implement a `list' data structure as a string consisting of
  1008. single-quoted elements, separated by a space character;
  1009. embedded single-quotes are escaped.
  1010. * groffer.sh: new option parser based on `list':
  1011. - Write new option parser based on `list', compatible to both
  1012. POSIX getopts() and GNU getopt().
  1013. - Long options are now available on GNU and non-GNU systems.
  1014. - Get rid of POSIX getopts() and GNU getopt().
  1015. - the `-W--longopt' construct is now obsolete; remove it.
  1016. - add test/function for `unset'.
  1017. - Option strings are now implemented as `list's in order to
  1018. allow unusual characters in options.
  1019. - Parse $MANOPT first; translate essential arguments into
  1020. groffer options.
  1021. * groffer.man:
  1022. - determine prompt length for `.Shell_cmd'* dynamically.
  1023. - naming scheme for static strings and registers changed to
  1024. `namespace:macro.variable'.
  1025. 2002-06-16 Werner Lemberg <wl@gnu.org>
  1026. * groffer.sh:
  1027. Implement man option `--ascii' by `-mtty-char'.
  1028. 2002-05-31 Werner LEMBERG <wl@gnu.org>
  1029. * groffer.man (@.Shell_cmd_width):
  1030. Increase to 4m (we use `sh#' as the prompt).
  1031. 2002-05-31 Bernd Warken
  1032. ________________________________________________________________
  1033. * release of groffer 0.7
  1034. * groffer.sh: remove incompatibilities with the `ash' shell:
  1035. - do not use `!command':
  1036. -> use `else'
  1037. -> write `_not_' equivalents for some functions
  1038. - do not use `[^]' in `case':
  1039. -> restructure some functions.
  1040. - only single-character names for loop variables:
  1041. -> spoils the paradigm of leading `_' for local variables.
  1042. - spurious trouble with `for i in ${var}':
  1043. -> use `eval set -- ${var}' and `for i in "$@"'
  1044. - do not change or use $IFS:
  1045. -> define new functions string_split() and `path_split()'.
  1046. -> result must be processed by `eval set --'.
  1047. -> solve conflicts with existing positional parameters.
  1048. - trouble with exporting external `$GROFF_*' variables:
  1049. -> hope that they were exported in the calling shell.
  1050. - not smart about additional blanks:
  1051. -> remove unnecessary white space.
  1052. * groffer.sh: improve run-time speed:
  1053. - `ash' more than doubles the speed of `bash'.
  1054. - speed-up `man_setup()'.
  1055. 2002-05-30 Werner Lemberg <wl@gnu.org>
  1056. * groffer.man:
  1057. - remove some wrong `\:'.
  1058. - rename macro names that start with a `[' (clashes with refer).
  1059. - fix TP_header.
  1060. 2002-05-28 Bernd Warken
  1061. ________________________________________________________________
  1062. * release of groffer 0.6
  1063. This is almost a complete rewrite since groffer 0.5 .
  1064. ________________________________________________________________
  1065. * Documentation
  1066. * groffer.man:
  1067. - Apply the changes done in www.tmac (.URL and .MTO)
  1068. - Replace \fP by \f[].
  1069. - Redesign and rewrite most macros.
  1070. - Include the documentation for the new features.
  1071. - Greatly enlarge section ENVIRONMENT
  1072. - Add examples.
  1073. * TODO:
  1074. - Start a TODO file with several sections.
  1075. * ChangeLog:
  1076. Due to the many changes, shorten and rearrange the entries
  1077. since groffer 0.5 .
  1078. ________________________________________________________________
  1079. * Shell compatibility
  1080. * groffer.sh:
  1081. - Due to possible conflicts in old BSD versions, `[]' was
  1082. replaced by `test'; the `test' options `-a' and `-o' were
  1083. replaced by multiple calls of `test'.
  1084. - Write interface to the `sed' command `s' to become
  1085. independent of the delimiter character. Rewrite all text
  1086. manipulating function to use this new scheme. The new
  1087. functions are named `string_*'.
  1088. - `tr' is not needed any longer, replaced by `sed'.
  1089. - `grep' is not needed any longer, mostly replaced by `case'.
  1090. - Revision of test for `getopt'.
  1091. - Remove `set -a'; explicitly export variables.
  1092. - The only external programs used are POSIX `sed' and the
  1093. fallback to `apropos'. All other program calls were
  1094. replaced by shell builtins and functions.
  1095. ________________________________________________________________
  1096. * Cosmetics
  1097. * groffer.sh:
  1098. - Implement a prefix based naming scheme for local variables
  1099. and functions (OOP-like).
  1100. - Introduce variables for white space (better readability with
  1101. $IFS).
  1102. - Store the names of the processed filespecs into a variable
  1103. instead of a temporary file.
  1104. - Error-prone shell constructions were replaced by functions
  1105. with a simple interface.
  1106. - To avoid too long pipes, replace supercat() by do_fileargs();
  1107. every input file is handled independently.
  1108. ________________________________________________________________
  1109. * New features:
  1110. - Add support for more X devices (e.g. X75-12 and X100-12).
  1111. - Add long option `--intermediate_output' to `-Z'.
  1112. - Make the options for mode selection clobber each other.
  1113. - Add option `--mode' with an argument having the following
  1114. values:
  1115. `X': force displaying in X, same as options `-X';
  1116. `tty': display with a pager on text terminal; same as `--tty';
  1117. `source', `default', `auto', etc.
  1118. - Make the handling of the X mode like in groff (e.g. -X -Tps).
  1119. - Make resolution for gxditview behave like groff (default
  1120. 75 dpi).
  1121. - Add environment variable $GROFFER_OPT to preset groffer
  1122. options.
  1123. ________________________________________________________________
  1124. * implement most of the functionality of GNU `man'.
  1125. - Add all `man' long options to groffer.
  1126. - Add all `man' environment variables.
  1127. - Parse and use content of `$MANOPT'.
  1128. - The precedence of the options and environment variables
  1129. is regulated like in GNU `man'.
  1130. - Force the option `--manpath' to have a colon-separated
  1131. argument like GNU `man'.
  1132. - Support `man section name' calling convention.
  1133. - Remove all dependencies on `man -w'.
  1134. * groffer.sh:
  1135. - Add the new features above.
  1136. - Rewrite the search algorithm for man pages.
  1137. - Remove searching with `man -w' (problems with space
  1138. characters in file names).
  1139. - Fix and complement usage().
  1140. - The filespec parsers gets a function of its own do_manpage().
  1141. 2002-01-08 Bernd Warken
  1142. * groffer 0.5 (beta) released
  1143. * groffer.man:
  1144. - Fix hyphenation problems with macros describing options.
  1145. - Fix the handling of some `-' characters.
  1146. - Examples of shell commands now print in font CR instead of CB.
  1147. - Remove documentation for option `-X'.
  1148. - Add documentation for option `--dpi'.
  1149. * groffer.sh:
  1150. - New method for creating temporary files, based on process
  1151. IDs. This is reliable enough and suitable for GNU and POSIX.
  1152. - Run gxditview in a new shell instantiation for having a clean
  1153. handling of the temporary files when running in the
  1154. background.
  1155. - Revision of the retrieving method for the window title.
  1156. - Empty input is now tolerated.
  1157. - Export the variables that are set before the call of `set -a'.
  1158. - Function usage() corrected and updated.
  1159. - Unnecessary stuff removed.
  1160. - Comments adjusted.
  1161. - Pass option `-X' to groff, i.e. force X output with 75 dpi.
  1162. - Implement option `--dpi' for setting the resolution for the X
  1163. viewer, which had already been documented in earlier versions.
  1164. 2002-01-07 Bernd Warken
  1165. * groffer 0.4 (beta) released (as groff `contrib')
  1166. * groffer.man:
  1167. - New features documented.
  1168. - Macros stream-lined.
  1169. - Section EXAMPLES added.
  1170. * groffer.sh:
  1171. - System tests added/optimized.
  1172. - Speed/memory optimizations by defining some shell functions
  1173. alternatively depending on the text results.
  1174. - Use `gzip' for decompression instead of `zcat'.
  1175. - Signal handling added for clean exiting by `trap'.
  1176. - Temporary files exist only as long as necessary.
  1177. - Setup of path for man-pages moved after the option parsing.
  1178. - Fixed a bug in determining the path for man-pages.
  1179. - Fixed a bug in the handling of non-groffer options.
  1180. * New features:
  1181. - New option --tty for forcing paging on text terminal.
  1182. - New option --no-man for disabling the man-page feature.
  1183. - Implement reserved POSIX -W feature to simulate long options.
  1184. - gxditview is now run as a background process.
  1185. 2002-01-05 Werner LEMBERG <wl@gnu.org>
  1186. * Integrate groffer into groff's `contrib' tree.
  1187. * Makefile: Replaced by...
  1188. Makefile.sub: New file.
  1189. * groffer: Replaced by...
  1190. groffer.sh: New file.
  1191. * groffer.man (OptDef): Add missing backslashes.
  1192. Update copyright.
  1193. 2001-12-15 Bernd Warken
  1194. * groffer 0.3 (alpha) released (still stand-alone package).
  1195. * GNU and POSIX are supported (POSIX without long options).
  1196. * New options : --man, --mandb, --title, --xrdb
  1197. * Support for command line arguments with embedded single space
  1198. characters (GNU only) .
  1199. * Several search methods for man-pages when no `man -w' is
  1200. available ($MANPATH, mandb, a default path).
  1201. * Language support for man-pages.
  1202. * Recognize the following filespecs as man-page parameters:
  1203. man:name(section), man:name, name.section, name.
  1204. 2001-12-03 Bernd Warken
  1205. * Stand-alone package for groffer 0.2 (alpha) created
  1206. Files: groffer, groffer.man, Makefile, TODO, ChangeLog
  1207. 2001-12-02 Bernd Warken
  1208. * groffer 0.2 (alpha) program released.
  1209. * Name changed from `groffview' to `groffer'.
  1210. * Comments added.
  1211. * Name changed from `groffview' to `groffer'.
  1212. * Options harmonized with groff.
  1213. New options : -Q --source, -T --device, -X .
  1214. Other options known from groff are passed unchanged.
  1215. * 100 dpi as default, 75 dpi only in emergency situations.
  1216. * Bugs with temporary files fixed.
  1217. * Code restructured and comments added.
  1218. 2001-11-28 Bernd Warken
  1219. ***** groffview 0.1 (experimental) and groffview.man released
  1220. (predecessor of groffer, shell script)
  1221. * Options : -h --help, -v --version
  1222. * Search for man-pages based on $MANPATH
  1223. * development of `groffview' shell script started
  1224. 2001-11-28 Bernd Warken
  1225. ________________________________________________________________
  1226. License
  1227. Copyright (C) 2001,2002,2003,2004,2005
  1228. Free Software Foundation, Inc.
  1229. Written by Bernd Warken
  1230. Copying and distribution of this file, with or without
  1231. modification, are permitted provided the copyright notice and this
  1232. notice are preserved.
  1233. This file is part of `groffer', which is part of the `groff'
  1234. project.