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