]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - contrib/groff/contrib/groffer/ChangeLog
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / contrib / groff / contrib / groffer / ChangeLog
1         ________________________________________________________________
2         * release of groffer 0.9.22
3
4 2005-22-04  Bernd Warken
5
6         ### `--whatis'
7
8         Produce a `groff' output and allow wild cards on filespec
9         parameters for `--whatis'.
10
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.
25
26         * groffer.man: Revise the documentation of --whatis.
27
28         ### `--apropos*'
29
30         Produce `groff' for `--apropos*'.  Allow `--sections' for
31         `--apropos', ignore it  with `--apropos-*'.
32
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*.
43
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'.
50
51         ### special display (apropos and whatis)
52
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.
58
59         ### handle `--sections' for man page searching
60
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.
69
70         ### wildcards in filespec arguments
71
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.
75
76         ### development; new option
77
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().
84
85         * groffer.man: Add information on --print.
86
87         ### safe exit
88
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 $().
93
94         ### automatic shell determination
95
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.
102
103         * groffer.man: Revise information on --shell.
104
105         ### trap
106
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'..
116
117         ### user errors, error output without function stack
118
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().
129
130         ### test modes on X and tty
131
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.
140
141         ### add $GROFFER_MODE to command line
142
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.
147
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.
153
154         ### debug; new options
155
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.
174
175         * groffer.man: Revise information on --debug and add new options.
176
177         ### variables
178
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.
183
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.
194
195         ### options and display
196
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().
207
208         ### viewer programs that run on the terminal (tty); new options
209
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.
219
220         * groffer.man: Add information on options --*-viewer-tty.
221
222         ### other fixes
223
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.
236
237 2005-08-07  Keith Marshall  <keith.d.marshall@ntlworld.com>
238
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.
242
243         ________________________________________________________________
244         * release of groffer 0.9.21
245
246 2005-08-02  Bernd Warken
247
248         ### @...@ constructs
249
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.
259
260         ### Configuration files
261
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.
275
276         * groffer2.sh:
277         - main_init(): Remove the getting of the configuration files.
278
279         ### Rewrite the shell determination
280
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 `-'.
292
293         ### Test of unset
294
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.
300
301         * groffer2.sh:
302         - Move the test of `unset' to the testing of rudimentary shell
303         functionality without change.
304
305         ### Allow abbreviations for long options
306
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.
317
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.
323
324         ### Get rid of `sh -c'
325
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.
335
336         ### Change directory
337
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.
344
345         ### Compatibility with strange shells
346
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.
359
360         * groffer.sh, groffer2.sh:
361         - Remove `;' after the commands `if', `while', and `until'.
362
363         ### Debugging information
364
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().
372
373         ### Further checks and additions
374
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.
381
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.
400
401         * Makefile.sub: Repair the installation instructions for
402         groffer2.sh.
403
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.
414
415         * README: Update sections `Output' and `Compatibility'.
416
417         * README_SH:
418         - Add `mksh' as compatible shell.
419         - Add information on the scripts after the split.
420
421         * TODO: Remove some fulfilled parts.
422
423         * ChangeLog: Remove final spaces.
424
425         ________________________________________________________________
426         * release of groffer 0.9.20
427
428 2005-07-30  Bernd Warken
429
430         ### Split groffer.sh into two files groffer.sh and groffer2.sh.
431
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@.
437
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.
442
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.
449
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.
455
456         ________________________________________________________________
457         * release of groffer 0.9.19
458
459 2005-07-07  Bernd Warken
460
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.
474
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.
479
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.
490
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.
498
499         * README_SH: `zsh' now works.
500
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.
507
508         ________________________________________________________________
509         * release of groffer 0.9.18
510
511 2005-07-01  Bernd Warken
512
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 "$@")'
539
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.
553
554         * groffer.man:
555         - Document the `X mode' changes.
556         - Add `@g@' to `troff'.
557
558         * README, README_SH, TODO:
559         - Add date line `Latest update:'.
560         - Add `...' quoting to essential terms.
561         - Add Emacs mode at the end.
562
563         * README_SH:
564         - Add documentation on the above compatibility changes.
565         - Add documentation on used commands.
566         - Mention the tested shells.
567
568         * Makefile.sub:
569         Readd `@g@'.
570
571         ________________________________________________________________
572         * release of groffer 0.9.17
573
574 2005-06-23  Bernd Warken
575
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.
588
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|...|...|'.
598
599         * README_SH:
600         - Add information on the removing of `local'.
601         - New section for non-POSIX shell restrictions.
602
603 2005-06-20 Keith Marshall
604
605         * README-SH: Information of `Portable shells' in info autoconf.
606
607         ________________________________________________________________
608         * release of groffer 0.9.16
609
610 2005-06-19  Bernd Warken
611
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.
614
615         * groffer.man: Add section `BUGS'.
616
617         * README_SH:
618         - Add compatibility information.
619         - Correct documentation for function arguments.
620
621 2005-06-18  Keith Marshall
622
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.
625
626 2005-06-17  Zvezdan Petkovic
627
628         * Makefile.sub: $(RM): Define it to `rm -f' because not all `make'
629         programs have it predefined.
630
631 2005-06-16  Bernd Warken
632         ________________________________________________________________
633         * release of groffer 0.9.15
634
635         * Makefile.sub:
636         - Use `$(RM)'.
637         - Use `sed -f $(SH_DEPS_SED_SCRIPT)'.
638
639 2005-05-20  Bernd Warken
640         ________________________________________________________________
641         * release of groffer 0.9.14
642
643         * groffer.man: correction of non-hyphenation
644
645 2005-05-17  Bernd Warken
646         ________________________________________________________________
647         * release of groffer 0.9.13
648
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.
657
658         * README, README_SH:
659         - Move some parts on usage from README_SH to README.
660         - Reformulate several parts of both files.
661
662         * groffer.man: update
663
664 2005-05-14  Keith Marshall
665
666         * groffer.sh:
667         - first line: Add space to `#! /bin/sh'.
668
669 2004-11-15  Bernd Warken
670         ________________________________________________________________
671         * release of groffer 0.9.12
672
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.
685
686 2004-06-15  Bernd Warken
687         ________________________________________________________________
688         * release of groffer 0.9.11
689
690         * groffer.sh:
691         - To the search of the `--apropos-*' options, add man pages with a
692         subsection in their apropos output.
693
694 2004-06-02  Bernd Warken
695         ________________________________________________________________
696         * release of groffer 0.9.10
697
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.
715
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.
721
722 2004-05-29  Bernd Warken
723         ________________________________________________________________
724         * release of groffer 0.9.9
725
726         * groffer.sh:
727         Fix first run section to allow the starting shell to go on if
728         `ash' is not available.
729
730         * groffer.man:
731         Remove unnecessary information on groffer version.
732
733 2004-05-12  Bernd Warken
734         ________________________________________________________________
735         * release of groffer 0.9.8
736
737         * groffer.sh:
738         Fix problems of `test' by adding subs to arguments.
739
740         * groffer.man:
741         Write the file license as macros that are called in sections
742         AUTHOR and COPYING.
743
744         * .cvsignore:
745         Restore this file.
746
747 2004-04-30  Bernd Warken
748         ________________________________________________________________
749         * release of groffer 0.9.7
750
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.
756
757         * groffer.man, README_SH:
758         Corrections.
759
760 2004-04-27  Bernd Warken
761         ________________________________________________________________
762         * release of groffer 0.9.6
763
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.
768
769         * groffer.man:
770         Changement from the GNU Free Documentation License (FDL) to
771         the GNU General Public License (GPL).
772
773         * README, README_SH, TODO:
774         Add license GNU General Public License (GPL).
775
776         * Makefile.sub, groffer.sh:
777         Keep the GNU General Public License (GPL), but refer to the
778         COPYING and LICENSE files.
779
780         * ChangeLog: Add a license in the style of Emacs ChangeLog file,
781         which is weaker than the GPL, but has its flavor.
782
783 2004-04-24  Bernd Warken
784         ________________________________________________________________
785         * release of groffer 0.9.5
786
787         This version is a rewrite of groffer in many parts, but it is kept
788         in the old single script style.
789
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
794
795         New file:
796         <groffer-source>/README_SH
797
798
799         ******* Extension of the `apropos' handling
800
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.
804
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.
820
821
822         ******* Quasi object oriented function arguments
823
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.
829
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.
833
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.
840
841
842         ******* Simplification of configuration files
843
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.
851
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.
859
860         * groffer.sh:
861         The configuration files are now called after the determination of
862         the temporary files in main_init().
863
864
865         ******* Script file name
866
867         The file name of the script is needed for the several calls during
868         the search for the optimal shell.
869
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.
876
877
878         ******* Improved temporary file names
879
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.
885
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 `/'.
896
897
898         ******* Mode fixes
899
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'.
920
921
922         ******* Fixes for command line options
923
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.
936
937
938         ******* Other fixes
939
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.
949
950
951         ******* Documentation
952
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
958
959         * README_SH: new file
960         Move large parts of the documentation in `groffer.sh' into this
961         file.
962
963         * groffer.sh: usage():
964         - Change the output for `--help' to standard output.
965         - Restructure the information for this help output.
966
967
968         ******* Removement of the author's email address
969
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.
973
974 2003-01-22  Bernd Warken
975         ________________________________________________________________
976         * release of groffer 0.9.4
977
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').
991
992         * TODO:
993         Remove mention of `shoop' and `apropos'.
994
995 2002-10-21  Bernd Warken
996         ________________________________________________________________
997         * release of groffer 0.9.3
998
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.
1009
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.
1014
1015         * TODO: think about...
1016         - writing part of groffer in C/C++.
1017         - handling several files with different macro packages.
1018
1019 2002-10-17  Bernd Warken
1020         ________________________________________________________________
1021         * fixes of groffer 0.9.2
1022
1023         * groffer.sh:
1024         Terminate main_parse_MANOPT() if $MANOPT is empty or consists
1025         of space characters only.
1026
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.
1031
1032         * README:
1033         New file for general information on the groffer source; it is
1034         not installed.
1035
1036 2002-10-14  Bernd Warken
1037
1038         * Makefile.sub:
1039         add replacement "@BINDIR@" to "$(bindir)" for "groffer:"
1040
1041         * groffer.sh:
1042         Define $_this as "@BINDIR@/${_PROGRAM_NAME}" to save the right
1043         installation position of groffer for the special shell calling.
1044
1045         * groffer.man:
1046         Remove double definition of filespec parameters.
1047
1048 2002-10-13  Bernd Warken
1049         ________________________________________________________________
1050         * release of groffer 0.9.2
1051
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.
1059
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".
1070
1071 2002-09-30  Bernd Warken
1072         ________________________________________________________________
1073         * release of groffer 0.9.1
1074
1075         * TODO: remove done entries
1076         - Remove request for different shells.
1077         - Remove the 'sed' complaints.
1078
1079 2002-07-15  Bernd Warken
1080
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'.
1094
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'.
1102
1103 2002-07-12  Bernd Warken
1104         ________________________________________________________________
1105         * fixes for groffer 0.9.0
1106
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.
1113
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).
1119
1120         * TODO:
1121         fix entry `shoop' (not 'shopt').
1122
1123 2002-06-28  Bernd Warken
1124         ________________________________________________________________
1125         * release of groffer 0.9.0
1126
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.
1136
1137         * groffer.sh: support bzip2 decompression
1138         - add test for `bzip2' with necessary options
1139         - extend functions `catz()' and `save_stdin()'.
1140
1141         * TODO
1142         remove entry on `bzip' decompression (done).
1143
1144         * groffer.man:
1145         - Document new `pdf' features.
1146         - Document new `bzip2' decompression.
1147         - Fix documentation for `--auto-modes'.
1148
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.
1153
1154 2002-06-25  Bernd Warken
1155
1156         * groffer.sh:
1157         Fix `source' mode.
1158
1159         * groffer.man:
1160         Fix some indentations.
1161
1162 2002-06-23  Bernd Warken
1163         ________________________________________________________________
1164         * release of groffer 0.8
1165
1166         * Makefile.sub: add copyright section
1167
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'.
1174
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.
1186
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'.
1207
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.
1239
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.
1245
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.
1250
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.
1262
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'.
1267
1268
1269 2002-06-16  Werner Lemberg  <wl@gnu.org>
1270
1271         * groffer.sh:
1272         Implement man option `--ascii' by `-mtty-char'.
1273
1274
1275 2002-05-31  Werner LEMBERG  <wl@gnu.org>
1276
1277         * groffer.man (@.Shell_cmd_width):
1278         Increase to 4m (we use `sh#' as the prompt).
1279
1280
1281 2002-05-31  Bernd Warken
1282         ________________________________________________________________
1283         * release of groffer 0.7
1284
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.
1303
1304         * groffer.sh: improve run-time speed:
1305         - `ash' more than doubles the speed of `bash'.
1306         - speed-up `man_setup()'.
1307
1308
1309 2002-05-30  Werner Lemberg  <wl@gnu.org>
1310
1311         * groffer.man:
1312         - remove some wrong `\:'.
1313         - rename macro names that start with a `[' (clashes with refer).
1314         - fix TP_header.
1315
1316
1317 2002-05-28  Bernd Warken
1318         ________________________________________________________________
1319         * release of groffer 0.6
1320
1321         This is almost a complete rewrite since groffer 0.5 .
1322         ________________________________________________________________
1323         * Documentation
1324
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.
1332
1333         * TODO:
1334         - Start a TODO file with several sections.
1335
1336         * ChangeLog:
1337         Due to the many changes, shorten and rearrange the entries
1338         since groffer 0.5 .
1339         ________________________________________________________________
1340         * Shell compatibility
1341
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.
1357
1358         ________________________________________________________________
1359         * Cosmetics
1360
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.
1372
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.
1388
1389         ________________________________________________________________
1390         * implement most of the functionality of GNU `man'.
1391
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'.
1401
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().
1409
1410
1411 2002-01-08  Bernd Warken
1412
1413         * groffer 0.5 (beta) released
1414
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'.
1421
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.
1437
1438 2002-01-07  Bernd Warken
1439
1440         * groffer 0.4 (beta) released (as groff `contrib')
1441
1442         * groffer.man:
1443         - New features documented.
1444         - Macros stream-lined.
1445         - Section EXAMPLES added.
1446
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.
1457
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.
1463
1464 2002-01-05  Werner LEMBERG  <wl@gnu.org>
1465
1466         * Integrate groffer into groff's `contrib' tree.
1467
1468         * Makefile: Replaced by...
1469         Makefile.sub: New file.
1470
1471         * groffer: Replaced by...
1472         groffer.sh: New file.
1473
1474         * groffer.man (OptDef): Add missing backslashes.
1475         Update copyright.
1476
1477 2001-12-15  Bernd Warken
1478
1479         * groffer 0.3 (alpha) released (still stand-alone package).
1480
1481         * GNU and POSIX are supported (POSIX without long options).
1482
1483         * New options : --man, --mandb, --title, --xrdb
1484
1485         * Support for command line arguments with embedded single space
1486         characters (GNU only) .
1487
1488         * Several search methods for man-pages when no `man -w' is
1489         available ($MANPATH, mandb, a default path).
1490
1491         * Language support for man-pages.
1492
1493         * Recognize the following filespecs as man-page parameters:
1494           man:name(section), man:name, name.section, name.
1495
1496 2001-12-03  Bernd Warken
1497
1498         * Stand-alone package for groffer 0.2 (alpha) created
1499         Files: groffer, groffer.man, Makefile, TODO, ChangeLog
1500
1501 2001-12-02  Bernd Warken
1502
1503         * groffer 0.2 (alpha) program released.
1504
1505         * Name changed from `groffview' to `groffer'.
1506
1507         * Comments added.
1508
1509         * Name changed from `groffview' to `groffer'.
1510
1511         * Options harmonized with groff.
1512         New options : -Q --source, -T --device, -X .
1513         Other options known from groff are passed unchanged.
1514
1515         * 100 dpi as default, 75 dpi only in emergency situations.
1516
1517         * Bugs with temporary files fixed.
1518
1519         * Code restructured and comments added.
1520
1521 2001-11-28  Bernd Warken
1522
1523         ***** groffview 0.1 (experimental) and groffview.man released
1524         (predecessor of groffer, shell script)
1525
1526         * Options : -h --help, -v --version
1527
1528         * Search for man-pages based on $MANPATH
1529
1530         * development of `groffview' shell script started
1531
1532 2001-11-28  Bernd Warken
1533
1534         ________________________________________________________________
1535         License
1536
1537         Copyright (C) 2001,2002,2003,2004,2005
1538         Free Software Foundation, Inc.
1539         Written by Bernd Warken
1540
1541         Copying and distribution of this file, with or without
1542         modification, are permitted provided the copyright notice and this
1543         notice are preserved.
1544
1545         This file is part of `groffer', which is part of the `groff'
1546         project.