* release of groffer 0.9.18
[s-roff.git] / contrib / groffer / ChangeLog
blob752b032b1699d2eb2a6d2ade1bf106c1047cf61e
1         ________________________________________________________________
2         * release of groffer 0.9.18
4 2005-07-01  Bernd Warken
6         * groffer.sh: further shell compatibility
7         - `echo': Remove options and possible options of `echo' by
8         preceding the argument with a character `x' that is removed by
9         `sed' or replace `echo' by `cat <<EOF'.  `echo -n' seems to be not
10         portable, so it is omitted.
11         - `for': Remove `;' from within `for' (because of ksh).
12         - `ls': Old UNIX systems echoed the error message to standard
13         output.  So handle the output with `sed'.  If the output contains
14         `not found' map it to an empty string.
15         - `true': Replace `true' by command `:'.  Remove test of `true'
16         (because `ash' refuses the redefinition of builtins even in an
17         unreachable `if' branch).
18         - `false': Remove test of `false'; it isn't used any more.
19         - `test': As `test -e' does not exist in Solaris 2.5 replace it by
20         `test -f || test -d'.
21         - `unset': `unset' is said to be not portable.  As `ash' protests
22         against the definition of the function `unset()' in the test of
23         `unset' replace the test by defining `$unset' to `unset' if it
24         exists and to `:' otherwise.  Use `eval $unset' instead of the
25         direct command `unset'.
26         - _get_opt_shell(): Replace `for' loop with `shift' by `while'.
27         - man_search_section(): Replace `for f in filename*' by a test on
28         the existence of `filename*'.
29         - `zsh' interprets `$...' as `"$..."'.  So `eval' must be called;
30         This cannot be used in `for i in $f', so it must be rewritten as
31         `for i in $(eval set x $f; shift; echo "$@")'
33         * groffer.sh:
34         - `--X', `--x', `--mode=X', `--mode=x': Make these options
35         equivalent to chosing an X device by setting `-TX75-12'.  `-X' is
36         still equivalent to `groff -X'.
37         - main_init(): Choose the name of the temporary file by adding a
38         number using `expr' if it exists and cannot be removed.
39         - main_parse_args():Repair some options by replacing `$mpa_mode'
40         by `$_OPT_MODE'.
41         - catz(): Rename it to cat_z() to avoid problem with existing
42         programs.
43         - where(): Rename to where_is().
44         - $_CONFFILES: Rename to $_CONF_FILES.
45         - $_HAS_BZIP: export and preset it.
47         * groffer.man:
48         - Document the `X mode' changes.
49         - Add `@g@' to `troff'.
51         * README, README_SH, TODO:
52         - Add date line `Latest update:'.
53         - Add `...' quoting to essential terms.
54         - Add Emacs mode at the end.
55         
56         * README_SH:
57         - Add documentation on the above compatibility changes.
58         - Add documentation on used commands.
59         - Mention the tested shells.
61         * Makefile.sub:
62         Readd `@g@'.
64         ________________________________________________________________
65         * release of groffer 0.9.17
67 2005-06-23  Bernd Warken
69         * groffer.sh: get rid of `local' in functions (it is not POSIX)
70         - Replace local variables by variable names with a special prefix
71         that is an abbreviation of the corresponding function name (quasi-
72         local variables).
73         - Unset the quasi-local function variables before returning.
74         - _t_e_s_t_f_u_n_c_(): Remove tests for local and global
75         variables.
76         - Add quasi-local variables for saving the content of
77         single-character variables.
78         - Remove some unused local and global variables.
79         - Several variables were forgotten to make local.  They are now
80         made quasi-local.
82         * groffer.sh: other corrections
83         - $return_var: New function (after `eval') for an arbitrary
84         return value.
85         - obj*(): Add return modes.
86         - Rewrite tests for `true' and `false'.
87         - Add function names to error calls where it was forgotten.
88         - `for': Replace `for x in "$@"' by `for x'.
89         - `set': Replace `set -- ...' by `set x ...; shift'.
90         - `sed': Replace `\|.*|s|...|...|' by `s|...|...|'.
92         * README_SH:
93         - Add information on the removing of `local'.
94         - New section for non-POSIX shell restrictions.
96 2005-06-20 Keith Marshall
98         * README-SH: Information of `Portable shells' in info autoconf.
99         
100         ________________________________________________________________
101         * release of groffer 0.9.16
103 2005-06-19  Bernd Warken
105         * groffer.sh: Place each `then', `else', and `do' on a line of its
106         own because some shells do not support the mixture mode.
108         * groffer.man: Add section `BUGS'.
110         * README_SH:
111         - Add compatibility information.
112         - Correct documentation for function arguments.
113         
114 2005-06-18  Keith Marshall
116         * groffer.sh: $_NULL_DEV: Replace /dev/null by $_NULL_DEV which is
117         either /dev/null or NUL if /dev/null does not exist.
119 2005-06-17  Zvezdan Petkovic
121         * Makefile.sub: $(RM): Define it to `rm -f' because not all `make'
122         programs have it predefined.
123         
124 2005-06-16  Bernd Warken
125         ________________________________________________________________
126         * release of groffer 0.9.15
128         * Makefile.sub:
129         - Use `$(RM)'.
130         - Use `sed -f $(SH_DEPS_SED_SCRIPT)'.
132 2005-05-20  Bernd Warken
133         ________________________________________________________________
134         * release of groffer 0.9.14
136         * groffer.man: correction of non-hyphenation
138 2005-05-17  Bernd Warken
139         ________________________________________________________________
140         * release of groffer 0.9.13
142         * groffer.sh:
143         - $_VIEWER_DVI: Add `kdvi'.
144         - $_VIEWER_PDF: Add `kghostview', `ggv', and `kpdf'.
145         - $_VIEWER_PS: Add `kghostview' and `ggv'.
146         - $_modefile: For the output file name, add extension .ps for ps
147         mode and .dvi for dvi mode.  This exists already for the html and
148         pdf modes.
149         - Update some parts of the documentation.
151         * README, README_SH:
152         - Move some parts on usage from README_SH to README.
153         - Reformulate several parts of both files.
155         * groffer.man: update
157 2005-05-14  Keith Marshall
159         * groffer.sh:
160         - first line: Add space to `#! /bin/sh'.
162 2004-11-15  Bernd Warken
163         ________________________________________________________________
164         * release of groffer 0.9.12
166         * groffer.sh:
167         - main_init(): Rewriting of the creation of the temporary
168         directory to ensure that it cannot be made writable apart from the
169         user.  If the directory already exists and cannot be removed then
170         append `X' to the directory name.
171         - is_non_empty_file(): fix it to use POSIX `test -s'.
172         - is_existing(): new function.
173         - POSIX `rm -f -r': use this in `clean_up()' and `main_init()'.
174         - `--macro-file': remove this unused long option.
175         - `-V', `--source', `--device': move these from groff options
176         to groffer options.
177         - `$_TMP_DIR_SUB': remove this unused variable.
179 2004-06-15  Bernd Warken
180         ________________________________________________________________
181         * release of groffer 0.9.11
183         * groffer.sh:
184         - To the search of the `--apropos-*' options, add man pages with a
185         subsection in their apropos output.
186         
187 2004-06-02  Bernd Warken
188         ________________________________________________________________
189         * release of groffer 0.9.10
191         * groffer.sh:
192         - Remove automatic call of `ash' due to inconsistencies of
193         different ash versions.
194         - In the first run, add recognition of `--shell' lines in the
195         groffer configuration files.  To configure an external shell in
196         a configuration file, a line starting with `--shell' is
197         necessary.
198         - list_from_cmdline(): Simplify the arguments.
199         - As $POSIXLY_CORRECT is internally set to `y' by some GNU
200         `/bin/sh' shells the following 2 fixes are necessary:
201         -- `sed': Empty patterns are not allowed with $POSIXLY_CORRECT
202         set; so move the address information before the `s' command to the
203         pattern after the command, and write `.*' to the address field.
204         -- list_from_cmdline(): Remove the strange $POSIXLY_CORRECT style
205         to finish the option processing after the first non-option
206         argument; use the flexible GNU mixing of options and file names
207         instead.
209         * groffer.man:
210         - Remove any hints on `ash'.
211         - Add minus line behavior of `--shell' for configuration and add a
212         corresponding example.
213         - Update the information on $POSIXLY_CORRECT.
214                 
215 2004-05-29  Bernd Warken
216         ________________________________________________________________
217         * release of groffer 0.9.9
219         * groffer.sh:
220         Fix first run section to allow the starting shell to go on if
221         `ash' is not available.
223         * groffer.man:
224         Remove unnecessary information on groffer version.
225         
226 2004-05-12  Bernd Warken
227         ________________________________________________________________
228         * release of groffer 0.9.8
230         * groffer.sh:
231         Fix problems of `test' by adding subs to arguments.
233         * groffer.man:
234         Write the file license as macros that are called in sections
235         AUTHOR and COPYING.
237         * .cvsignore:
238         Restore this file.
239         
240 2004-04-30  Bernd Warken
241         ________________________________________________________________
242         * release of groffer 0.9.7
244         * groffer.sh:
245         - obj(), obj_data(), obj_from_output(), obj_set(): New object
246         oriented functions to minimize complicated `eval' commands.
247         - list_*(): Corrections.
248         - usage(): Streamlining.
249         
250         * groffer.man, README_SH:
251         Corrections.
253 2004-04-27  Bernd Warken
254         ________________________________________________________________
255         * release of groffer 0.9.6
257         This version replaces the license of all files except ChangeLog of
258         the groffer source to the GNU General Public License (GPL) of the
259         version described in files COPYING and LICENSE in the groff top
260         source directory.
262         * groffer.man:
263         Changement from the GNU Free Documentation License (FDL) to
264         the GNU General Public License (GPL).
266         * README, README_SH, TODO:
267         Add license GNU General Public License (GPL).
268         
269         * Makefile.sub, groffer.sh:
270         Keep the GNU General Public License (GPL), but refer to the
271         COPYING and LICENSE files.
273         * ChangeLog: Add a license in the style of Emacs ChangeLog file,
274         which is weaker than the GPL, but has its flavor.
276 2004-04-24  Bernd Warken
277         ________________________________________________________________
278         * release of groffer 0.9.5
280         This version is a rewrite of groffer in many parts, but it is kept
281         in the old single script style.
283         Overview of new options:
284         --text, --mode text, --tty-viewer,
285         --X, --mode X, --X-viewer, --html, --mode html, --html-view,
286         --apropos-data, --apropos-devel, --apropos-progs
288         New file:
289         <groffer-source>/README_SH
291         
292         ******* Extension of the `apropos' handling
294         The output of man's `apropos' has grown immensely meanwhile, so it
295         has become inefficient.  Now `groffer' provides new options to get
296         the a selected information from this output.
298         * groffer.sh:
299         `--apropos-progs': new option for displaying only information
300         on programs (man page sections 1, 6, and 8)
301         `--apropos-data': new option for displaying only information
302         on documented data (man page sections 4, 5 and 7)
303         `--apropos-devel': new option for displaying only information
304         on development documentation (man page sections 2, 3 and 9)
305         `--apropos': still displays just the output of man's `apropos'
306         program.
307         - Specify all of these options as a single argument option; that
308         makes groffer's `--apropos' option slightly different because
309         the corresponding `man' option does not have arguments, but takes
310         all file arguments as apropos targets.  So just ignore the `man'
311         options `-k' and `--apropos' in the parsing of $MANOPT.
312         - Exit after processing one `apropos' call.
315         ******* Quasi object oriented function arguments
317         An object is the name of an environment variable.  The value of
318         this variable contains the object's content.  This allows to
319         specify function arguments and the calling syntax in a simpler way
320         by letting the first argument be a variable name, usable for input
321         or output.
322         
323         Such an object type is `list', the string value of a shell
324         variable arranged in space-separated single-quoted elements, such
325         as $GROFFER_OPT internally.
327         * groffer.sh:
328         - Remove list_from_args(), list_element_from_arg()
329         list_from_lists(), list_length(), and list_prepend().
330         They can be replaced by list_append().
331         - All list*() functions are rearranged such that the first
332         argument is a list object, the name of a variable.
335         ******* Simplification of configuration files
337         The new syntax of the groffer configuration files is
338         - all lines starting with a `-' character are interpreted as
339         command line options for all calls of groffer; they are collected
340         and prepended to the actual value of $GROFFER_OPT; optional
341         spaces at the beginning.of the line are omitted.
342         - all other lines are interpreted as a shell command and executed
343         in the current shell of the groffer call.
344         
345         Precedence:
346         - The command line and the external environment variables such as
347         $GROFFER_OPT of the groffer call have the highest precedence.
348         - This is overwritten by the configuration file in the user's home
349         directory.
350         - The system configuration file in /etc has the lowest
351         precedence.
352         
353         * groffer.sh:   
354         The configuration files are now called after the determination of
355         the temporary files in main_init().
358         ******* Script file name
360         The file name of the script is needed for the several calls during
361         the search for the optimal shell.
363         * groffer.sh:
364         - $_GROFFER_SH: replace $_this by $_GROFFER_SH and use $0 for
365         determining the file name of the script for the following calls,
366         instead of the cumbersome @BINDIR@ construction.
367         - Force the script to be called as an executable file, so $0 must
368         contain the program name.
370         
371         ******* Improved temporary file names
373         Just like groff, groffer mixes all file parameters into a single
374         output file.  Its name is now constructed as a comma-separated
375         list built from the file name arguments without a leading comma.
376         So a leading comma can be used for the internal temporary file
377         names.
378         
379         * groffer.sh:
380         - $_OUTPUT_FILE_NAME: new global variable as basis for the output
381         file name; it is set in main_set_resources().
382         - tmp_create(): use `,name' for temporary files different from
383         output file because the output file name does not start with a
384         comma.  `$$' is not needed anymore.
385         - main_display(): simplification of $_modefile in _do_display()
386         and single display modes.
387         - Add extension `.html' to output file name in html mode.
388         - base_name(): correction for strange positions of `/'.
391         ******* Mode fixes
393         * groffer.sh:
394         - Set the main default mode to `x' with groff's X Window viewer
395         `gxditview'.
396         - Allow 'x' and 'X' in `--mode' for the X Window mode; the same
397         for `--x' and `X', `--x-viewer' and `--X-viewer'.
398         - Make groff's `-X' equivalent to `mode X'.
399         - Fix `--auto', `--mode auto',  and `--default-modes'.
400         - `html' mode: new mode equivalent to `www', add `konqueror' and
401         `lynx' as viewers.
402         - `pdf' mode: fix zoom options for pdf-viewer `xpdf' in
403         main_set_resources(); in main_display() fix the display structure.
404         - Set default X Window resolution to 75dpi.  This is not optimal,
405         but with a higher value the options and resources for some viewers
406         must be optimized.
407         `--text' and `--mode text': new option for text output without a
408         pager.
409         - `--tty-viewer': new option equivalent to `--pager'.
410         - Correct the pagers for `tty' mode.
411         - Fix `groff' mode in main_set_resources() and main_display().
412         - Harmonize `--mode arg' with the equivalent options `--arg'.
415         ******* Fixes for command line options
417         * groffer.sh:
418         - list_from_cmdline(): fix the parsing of options with arguments.
419         - Rename $_OPT_TTY_DEVICE to $_OPT_TEXT_DEVICE.
420         - $_OPTS_X_*: new variables for the inhereted X Window variables.
421         - Improve the distribution of the command line options into
422         $_OPTS_GROFFER_*, $_OPTS_GROFF_*, $_OPTS_X_*, and $_OPTS_MAN_*.
423         - $_OPTS_MANOPT_*: new variables for the parsing of $MANOPT.
424         - Correct $_OPTS_CMDLINE_*.
425         - Remove some unused $_OPTS_*.
426         - `--iconic': new option from `-iconic' of the X Window toolkit.
427         - Correct `--rv' to an option without argument.
428         - Minor fixes of other  X Window toolkit options.
431         ******* Other fixes
433         * groffer.sh:
434         - is_prog(): allow 0 arguments.
435         - is_not_writable(): new function.
436         - is_*(): fix trailing return codes.
437         - Replace most `test' calls by is_*() functions.
438         - man_setup(): due to bugs in `manpath', prefer
439         manpath_set_from_path() for the determination of the man page path.
440         - man_search_section(): correction of some `for' loops.
441         - Remove export of external non-groffer variables.
443         
444         ******* Documentation
445         
446         * groffer.man:
447         - Reorder the option details according to the option origin as
448         groffer, groff, X, and man options.
449         - Add the programming changes information mentioned above.
450         - Support man pages with a dot in their name
452         * README_SH: new file
453         Move large parts of the documentation in `groffer.sh' into this
454         file.
455         
456         * groffer.sh: usage():
457         - Change the output for `--help' to standard output.
458         - Restructure the information for this help output.
459         
461         ******* Removement of the author's email address
462         
463         Because of the extreme spam attacks, the author removed all
464         occurencies of his email address in every file of the groffer
465         source.
467 2003-01-22  Bernd Warken 
468         ________________________________________________________________
469         * release of groffer 0.9.4
471         * groffer.sh: corrections for some restrictive shells
472         - Possible exit codes in actual `ash' are between 0 and 63.  To
473         handle even deeper restrictions, use 7 as maximal code instead
474         of 255 as replacement for error -1.
475         - Remove variables $_BAD2 and $_BAD3.
476         - Replace `trap' argument `EXIT' by 0 and write new fuctions
477         `trap_clean' and `trap_set' to handle the restrictions of `trap'
478         for some shells.
479         - Correct wrong $MANPATH to $_MAN_PATH in function
480         `man_do_filespec'.
481         - Test existence of directory before deleting it in the
482         `clean_up' definitions.
483         - Correct help output in `usage' (called by `--help').
484         
485         * TODO:
486         Remove mention of `shoop' and `apropos'.
488 2002-10-21  Bernd Warken 
489         ________________________________________________________________
490         * release of groffer 0.9.3
492         * groffer.sh: new temporary subdirectory
493         - Generate temporary subdirectory for storing temporary files
494         with better names in future groffer versions (name:
495         "groffer$$" in usual temporary directory).
496         - Use `umask 000' for temporary files to allow cleaning up
497         for everyone after a system break.
498         - Change both clean_up() functions (for normal shell and
499         for main_display() subshell) to handle the new subdirectory.
500         - clean_up_secondary() and $_TMP_PREFIX are unnecessary now, so
501         they were removed.
503         * Makefile.sub: `sed' commands for "groffer:"
504         - Remove "@g@" entry (not used in "groffer.sh").
505         - Add global replace for "@BINDIR@" and "@VERSION@" for future
506         usage.
508         * TODO: think about...
509         - writing part of groffer in C/C++.
510         - handling several files with different macro packages.
511         
512 2002-10-17  Bernd Warken 
513         ________________________________________________________________
514         * fixes of groffer 0.9.2
516         * groffer.sh:
517         Terminate main_parse_MANOPT() if $MANOPT is empty or consists
518         of space characters only.
520         * groffer.man: some fixes in "GROFFER OPTIONS"
521         - New macro ".Header_CB" for CB font in .TP headers; used for
522         definition of variables in option --mode.
523         - Fix some option references to refer to long options.
524         
525         * README:
526         New file for general information on the groffer source; it is
527         not installed.
528         
529 2002-10-14  Bernd Warken 
531         * Makefile.sub:
532         add replacement "@BINDIR@" to "$(bindir)" for "groffer:"
534         * groffer.sh:
535         Define $_this as "@BINDIR@/${_PROGRAM_NAME}" to save the right
536         installation position of groffer for the special shell calling.
538         * groffer.man:
539         Remove double definition of filespec parameters.
541 2002-10-13  Bernd Warken 
542         ________________________________________________________________
543         * release of groffer 0.9.2
545         * groffer.sh: fixes
546         - Fix some 'sed' functions: two in func_stack_dump(), one in
547           base_name(), add 'sed' command in list_from_cmdline().
548         - Finish main_parse_MANOPT() if $MANOPT is empty.
549         - Sort $_OPTS_GROFF_SHORT_NA like groff short options (but
550           unchanged).
551         - Fix some comments.
553         * groffer.man: make it more readable (but no additions)
554         - A shortened section "SYNOPSIS" is followed by a simplified
555           section "DESCRIPTION".
556         - The options from "SYNOPSIS" go to new section "OPTION
557           OVERVIEW" with all groffer options in a single subsection.
558         - The details of all groffer options are described in section
559           "GROFFER OPTIONS".
560         - New macro for file names ".File_name".
561         - "Option Parsing" is moved to section "COMPATIBILITY".
562         - Fix some "EXAMPLES".
563         
564 2002-09-30  Bernd Warken 
565         ________________________________________________________________
566         * release of groffer 0.9.1
567         
568         * TODO: remove done entries
569         - Remove request for different shells.
570         - Remove the 'sed' complaints.
572 2002-07-15  Bernd Warken 
574         * groffer.sh: replace `sed' interface by direct `sed'
575         - This improves the performance of the shell programming parts
576           and shortens the groffer script by about 5%.
577         - Remove functions: string_del_append(), string_del_leading(),
578           string_del_trailing(), string_flatten(), string_get_before(),
579           string_get_leading(), string_replace_all(), string_sed_s(),
580           and their auxiliary functions.
581         - Replace all calls of these functions by direct `sed' commands.
582         - Define variables for special characters to ease `sed' calls.
583         - Remove `$APPEND'.
584         - Restrict list_from_string() to single character separators.
585         - Correct list_check() and base_name().
586         - Add comments to all calls of `sed'.
588         * groffer.sh: add run-time support for several shells
589         - New option `--shell': stop execution and rerun groffer under
590           the shell specified in the argument of `--shell'.
591         - If no shell was specified at run-time, `ash' is tried first;
592           if `ash' is not available continue with the shell with which
593           groffer was called from the command line, or with the shell
594           name in the first line of the script, actually `/bin/sh'.
596 2002-07-12  Bernd Warken 
597         ________________________________________________________________
598         * fixes for groffer 0.9.0
600         * groffer.sh: enhance version information
601         `groffer -v|--version' now print:
602         - groffer's version number and date
603         - the string `is part of '
604         - groff's version information (version number and copyright),
605           but not groff's `called subprograms' information.
606         
607         * groffer.sh: minor fixes
608         - Fix the argument parser to process argument `-' correctly.
609         - Some display programs have trouble with empty input; feed a
610           line consisting of a single space character in this case for
611           all display modes (not for source or groff modes).
613         * TODO:
614         fix entry `shoop' (not 'shopt').
616 2002-06-28  Bernd Warken 
617         ________________________________________________________________
618         * release of groffer 0.9.0
620         * groffer.sh: new mode `pdf'
621         - PDF (Portable Document Format):
622           -> Transform groff `ps' output into pdf using `gs'.
623           -> Pro: PDF viewers provide text searching (!).
624           -> Con: the transformation is quite slow.
625           -> Not suitable as an auto mode.
626         - New options `--pdf', `--pdf-viewer', `--mode pdf'.
627         - Standard pdf viewers `xpdf' and `acroread'.
628         - For `xpdf', choose zoom `z 3' for 100 dpi, `z 2' for 75 dpi.
629         
630         * groffer.sh: support bzip2 decompression
631         - add test for `bzip2' with necessary options
632         - extend functions `catz()' and `save_stdin()'.
634         * TODO
635         remove entry on `bzip' decompression (done).
636         
637         * groffer.man:
638         - Document new `pdf' features.
639         - Document new `bzip2' decompression.
640         - Fix documentation for `--auto-modes'.
641         
642         * groffer.sh: minor fixes
643         - Improve device tests in `tty' and `dvi' modes.
644         - Internally, map mode `auto' to '' to facilitate tests.
645         - Fix auto mode sequence to: `ps,x,tty' as was intended.
647 2002-06-25  Bernd Warken 
649         * groffer.sh:
650         Fix `source' mode.
652         * groffer.man:
653         Fix some indentations.
655 2002-06-23  Bernd Warken 
656         ________________________________________________________________
657         * release of groffer 0.8
659         * Makefile.sub: add copyright section
661         * groffer.man:
662         - Document the new options.
663         - Revise the documentation of the modes.
664         - Document the configuration files in new section `FILES'.
665         - Redesign section `EXAMPLES'.
666         - Remove documentation for `-W'.
667         
668         * groffer.sh: new debugging features
669         - Disabled by default; enabled by environment variables.
670         - Add landmark() to catch typos with quotes.
671         - Add a function call stack for suitable functions; implemented
672           as within the argument checker func_check().
673         - This implies the need to provide `return' with some clean-up
674           facility; implemented as `eval "$_return_..."'.
675         - Add option `--debug' to enable debugging at run-time.
676         - Actually, the groffer script uses only shell builtins found
677           in `ash' (a subset of POSIX) and POSIX `sed' as the only
678           external shell utility.
679                 
680         * groffer.sh: customization of viewers
681         - In `groff' mode, the groffer viewing facilities are disabled.
682         - The postprocessor option `-P' costumizes the viewer only in
683           some situations in the `groff' mode, so a new infrastructure
684           for viewer customization is necessary.
685         - Allow to specify arguments to the viewer programs specified
686           in `--*-viewer()'.
687         - Implement some of the essential X Toolkit resource options in
688           groffer, but with use a leading double minus.
689           -> `--bd': set border color.
690           -> `--bg', `--background': set background color.
691           -> `--bw': set border width.
692           -> `--display': set X display.
693           -> `--geometry': set size and position of viewer window.
694           -> `--fg', `--foreground': set foreground color.
695           -> `--ft', `--font': set font.
696           -> `--resolution': set X resolution in dpi.
697           -> `--title': set viewer window title.
698           -> `--xrm': set X resource.
699         - Remove misnamed option `--xrdb'.
700         
701         * groffer.sh: new mode structure
702         - New Postcript mode `ps' (`--ps'):
703           -> default viewers: gv,ghostview,gs_x11,gs;
704           -> `--ps-viewer' sets the Postscript viewer.
705         - New mode `www' (`--www') for displaying in a web browser:
706           -> default browsers: mozilla,netscape,opera,amaya,arena;
707           -> `--www-viewer' sets the web browser.
708         - New dvi mode (`--dvi'); default viewer `xdvi':
709           -> default viewers: xdvi,dvilx;
710           -> `--dvi-viewer' sets the dvi viewer.
711         - New mode `auto':
712           -> active if no other mode is given or by new option `--auto';
713           -> selects from a sequence of modes that are tested until one
714             of them succeeds.
715           -> the default mode sequence is actually `ps', `x', `tty'.
716           -> `--default-modes' sets this mode sequence as a comma
717              separated string of program names, optionally each one
718              with arguments).
719         - New mode `groff':
720           -> process input like groff, ignore viewing options.
721           -> activated by new option `--groff'.
722           -> automatically active with one of `-V', `-X', `-Z'.
723         - Revise `tty' mode:
724           -> allow several text devices.
725           -> 
726         - Reorganize the mode management:
727           -> new mode setting option `--mode'.
728           -> logically separate source, groff, and display modes.
729           -> intermediate output mode is now part of mode groff; remove
730              any special features around `-Z'.
731         - Update usage() to reflect the new option structure.
733         * groffer.sh: add configuration files
734         - `/etc/groff/groffer.conf' system-wide configuration.
735         - `${HOME}/.groff/groffer.conf' user configuration.
736         - The configuration file are shell scripts for now; later
737           implementations can identify this from the `#! /bin/sh' line.
738         
739         * groffer.sh: new data structure `list':
740         - Implement a `list' data structure as a string consisting of
741           single-quoted elements, separated by a space character;
742           embedded single-quotes are escaped.
744         * groffer.sh: new option parser based on `list':
745         - Write new option parser based on `list', compatible to both
746           POSIX getopts() and GNU getopt().
747         - Long options are now available on GNU and non-GNU systems.
748         - Get rid of POSIX getopts() and GNU getopt().
749         - the `-W--longopt' construct is now obsolete; remove it.
750         - add test/function for `unset'.
751         - Option strings are now implemented as `list's in order to
752           allow unusual characters in options.
753         - Parse $MANOPT first; translate essential arguments into
754           groffer options.
755         
756         * groffer.man:
757         - determine prompt length for `.Shell_cmd'* dynamically.
758         - naming scheme for static strings and registers changed to
759           `namespace:macro.variable'.
761         
762 2002-06-16  Werner Lemberg  <wl@gnu.org>
764         * groffer.sh:
765         Implement man option `--ascii' by `-mtty-char'.
766            
768 2002-05-31  Werner LEMBERG  <wl@gnu.org>
770         * groffer.man (@.Shell_cmd_width):
771         Increase to 4m (we use `sh#' as the prompt).
774 2002-05-31  Bernd Warken 
775         ________________________________________________________________
776         * release of groffer 0.7
778         * groffer.sh: remove incompatibilities with the `ash' shell:
779         - do not use `!command':
780           -> use `else'
781           -> write `_not_' equivalents for some functions
782         - do not use `[^]' in `case':
783           ->  restructure some functions.
784         - only single-character names for loop variables:
785           -> spoils the paradigm of leading `_' for local variables.
786         - spurious trouble with `for i in ${var}':
787           -> use `eval set -- ${var}' and `for i in "$@"'
788         - do not change or use $IFS:
789           -> define new functions string_split() and `path_split()'.
790           -> result must be processed by `eval set --'.
791           -> solve conflicts with existing positional parameters.
792         - trouble with exporting external `$GROFF_*' variables:
793           -> hope that they were exported in the calling shell.
794         - not smart about additional blanks:
795           -> remove unnecessary white space.
797         * groffer.sh: improve run-time speed:
798         - `ash' more than doubles the speed of `bash'.
799         - speed-up `man_setup()'.
802 2002-05-30  Werner Lemberg  <wl@gnu.org>
804         * groffer.man:
805         - remove some wrong `\:'.
806         - rename macro names that start with a `[' (clashes with refer).
807         - fix TP_header.
810 2002-05-28  Bernd Warken 
811         ________________________________________________________________
812         * release of groffer 0.6
814         This is almost a complete rewrite since groffer 0.5 .
815         ________________________________________________________________
816         * Documentation
817         
818         * groffer.man:
819         - Apply the changes done in www.tmac (.URL and .MTO)
820         - Replace \fP by \f[].
821         - Redesign and rewrite most macros.
822         - Include the documentation for the new features.
823         - Greatly enlarge section ENVIRONMENT
824         - Add examples.
826         * TODO:
827         - Start a TODO file with several sections.
829         * ChangeLog:
830         Due to the many changes, shorten and rearrange the entries
831         since groffer 0.5 .
832         ________________________________________________________________
833         * Shell compatibility
835         * groffer.sh:
836         - Due to possible conflicts in old BSD versions, `[]' was
837           replaced by `test'; the `test' options `-a' and `-o' were
838           replaced by multiple calls of `test'.
839         - Write interface to the `sed' command `s' to become
840           independent of the delimiter character.  Rewrite all text
841           manipulating function to use this new scheme.  The new
842           functions are named `string_*'.
843         - `tr' is not needed any longer, replaced by `sed'.
844         - `grep' is not needed any longer, mostly replaced by `case'.
845         - Revision of test for `getopt'.
846         - Remove `set -a'; explicitly export variables.
847         - The only external programs used are POSIX `sed' and the
848           fallback to `apropos'.  All other program calls were
849           replaced by shell builtins and functions.
850         
851         ________________________________________________________________
852         * Cosmetics
854         * groffer.sh:
855         - Implement a prefix based naming scheme for local variables
856           and functions (OOP-like).
857         - Introduce variables for white space (better readability with
858           $IFS).
859         - Store the names of the processed filespecs into a variable
860           instead of a temporary file.
861         - Error-prone shell constructions were replaced by functions
862           with a simple interface.
863         - To avoid too long pipes, replace supercat() by do_fileargs();
864           every input file is handled independently.
866         ________________________________________________________________
867         * New features:
868         - Add support for more X devices (e.g. X75-12 and X100-12).
869         - Add long option `--intermediate_output' to `-Z'.
870         - Make the options for mode selection clobber each other.
871         - Add option `--mode' with an argument having the following
872           values:
873           `X': force displaying in X, same as options `-X';
874           `tty': display with a pager on text terminal; same as `--tty';
875           `source', `default', `auto', etc.
876         - Make the handling of the X mode like in groff (e.g. -X -Tps).
877         - Make resolution for gxditview behave like groff (default
878           75 dpi).
879         - Add environment variable $GROFFER_OPT to preset groffer
880           options.
882         ________________________________________________________________
883         * implement most of the functionality of GNU `man'.
885         - Add all `man' long options to groffer.
886         - Add all `man' environment variables.
887         - Parse and use content of `$MANOPT'.
888         - The precedence of the options and environment variables
889           is regulated like in GNU `man'.
890         - Force the option `--manpath' to have a colon-separated
891           argument like GNU `man'.
892         - Support `man section name' calling convention.
893         - Remove all dependencies on `man -w'.
895         * groffer.sh:
896         - Add the new features above.
897         - Rewrite the search algorithm for man pages.
898         - Remove searching with `man -w' (problems with space
899           characters in file names).
900         - Fix and complement usage().
901         - The filespec parsers gets a function of its own do_manpage().
902         
903         
904 2002-01-08  Bernd Warken 
905         
906         * groffer 0.5 (beta) released
908         * groffer.man:
909         - Fix hyphenation problems with macros describing options.
910         - Fix the handling of some `-' characters.
911         - Examples of shell commands now print in font CR instead of CB.
912         - Remove documentation for option `-X'.
913         - Add documentation for option `--dpi'.
914         
915         * groffer.sh:
916         - New method for creating temporary files, based on process
917           IDs.  This is reliable enough and suitable for GNU and POSIX.
918         - Run gxditview in a new shell instantiation for having a clean
919           handling of the temporary files when running in the
920           background.
921         - Revision of the retrieving method for the window title.
922         - Empty input is now tolerated.
923         - Export the variables that are set before the call of `set -a'.
924         - Function usage() corrected and updated.
925         - Unnecessary stuff removed.
926         - Comments adjusted.
927         - Pass option `-X' to groff, i.e. force X output with 75 dpi.
928         - Implement option `--dpi' for setting the resolution for the X
929           viewer, which had already been documented in earlier versions.
931 2002-01-07  Bernd Warken 
933         * groffer 0.4 (beta) released (as groff `contrib')
934         
935         * groffer.man:
936         - New features documented.
937         - Macros stream-lined.
938         - Section EXAMPLES added.
939         
940         * groffer.sh:
941         - System tests added/optimized.
942         - Speed/memory optimizations by defining some shell functions
943           alternatively depending on the text results.
944         - Use `gzip' for decompression instead of `zcat'.
945         - Signal handling added for clean exiting by `trap'.
946         - Temporary files exist only as long as necessary.
947         - Setup of path for man-pages moved after the option parsing.
948         - Fixed a bug in determining the path for man-pages.
949         - Fixed a bug in the handling of non-groffer options.
951         * New features:
952         - New option --tty for forcing paging on text terminal.
953         - New option --no-man for disabling the man-page feature.
954         - Implement reserved POSIX -W feature to simulate long options.
955         - gxditview is now run as a background process.
957 2002-01-05  Werner LEMBERG  <wl@gnu.org>
959         * Integrate groffer into groff's `contrib' tree.
961         * Makefile: Replaced by...
962         Makefile.sub: New file.
964         * groffer: Replaced by...
965         groffer.sh: New file.
967         * groffer.man (OptDef): Add missing backslashes.
968         Update copyright.
970 2001-12-15  Bernd Warken 
972         * groffer 0.3 (alpha) released (still stand-alone package).
974         * GNU and POSIX are supported (POSIX without long options).
976         * New options : --man, --mandb, --title, --xrdb
978         * Support for command line arguments with embedded single space
979         characters (GNU only) .
981         * Several search methods for man-pages when no `man -w' is
982         available ($MANPATH, mandb, a default path).
984         * Language support for man-pages.
986         * Recognize the following filespecs as man-page parameters:
987           man:name(section), man:name, name.section, name.
988         
989 2001-12-03  Bernd Warken 
991         * Stand-alone package for groffer 0.2 (alpha) created
992         Files: groffer, groffer.man, Makefile, TODO, ChangeLog
993         
994 2001-12-02  Bernd Warken 
996         * groffer 0.2 (alpha) program released.
998         * Name changed from `groffview' to `groffer'.
1000         * Comments added.
1001         
1002         * Name changed from `groffview' to `groffer'.
1004         * Options harmonized with groff.
1005         New options : -Q --source, -T --device, -X .
1006         Other options known from groff are passed unchanged.
1008         * 100 dpi as default, 75 dpi only in emergency situations.
1010         * Bugs with temporary files fixed.
1012         * Code restructured and comments added.
1013         
1014 2001-11-28  Bernd Warken 
1016         ***** groffview 0.1 (experimental) and groffview.man released
1017         (predecessor of groffer, shell script)
1019         * Options : -h --help, -v --version
1020         
1021         * Search for man-pages based on $MANPATH
1023         * development of `groffview' shell script started
1025 2001-11-28  Bernd Warken
1027         ________________________________________________________________
1028         License
1030         Copyright (C) 2001,2002,2003,2004,2005 Free Software Foundation,
1031         Inc.
1032         Written by Bernd Warken
1033         Copying and distribution of this file, with or without
1034         modification, are permitted provided the copyright notice and this
1035         notice are preserved.
1037         This file is part of groffer, which is part of the groff project.