Initial import from FreeBSD RELENG_4:
[games.git] / contrib / groff / contrib / groffer / ChangeLog
1 2002-09-30  Bernd Warken  <bwarken@mayn.de>
2         ________________________________________________________________
3         * release of groffer 0.9.1
4         
5         * TODO: remove done entries
6         - Remove request for different shells.
7         - Remove the 'sed' complaints.
8
9 2002-07-15  Bernd Warken  <bwarken@mayn.de>
10
11         * groffer.sh: replace `sed' interface by direct `sed'
12         - This improves the performance of the shell programming parts
13           and shortens the groffer script by about 5%.
14         - Remove functions: string_del_append(), string_del_leading(),
15           string_del_trailing(), string_flatten(), string_get_before(),
16           string_get_leading(), string_replace_all(), string_sed_s(),
17           and their auxiliary functions.
18         - Replace all calls of these functions by direct `sed' commands.
19         - Define variables for special characters to ease `sed' calls.
20         - Remove `$APPEND'.
21         - Restrict list_from_string() to single character separators.
22         - Correct list_check() and base_name().
23         - Add comments to all calls of `sed'.
24
25         * groffer.sh: add run-time support for several shells
26         - New option `--shell': stop execution and rerun groffer under
27           the shell specified in the argument of `--shell'.
28         - If no shell was specified at run-time, `ash' is tried first;
29           if `ash' is not available continue with the shell with which
30           groffer was called from the command line, or with the shell
31           name in the first line of the script, actually `/bin/sh'.
32
33 2002-07-12  Bernd Warken  <bwarken@mayn.de>
34         ________________________________________________________________
35         * fixes for groffer 0.9.0
36
37         * groffer.sh: enhance version information
38         `groffer -v|--version' now print:
39         - groffer's version number and date
40         - the string `is part of '
41         - groff's version information (version number and copyright),
42           but not groff's `called subprograms' information.
43         
44         * groffer.sh: minor fixes
45         - Fix the argument parser to process argument `-' correctly.
46         - Some display programs have trouble with empty input; feed a
47           line consisting of a single space character in this case for
48           all display modes (not for source or groff modes).
49
50         * TODO:
51         fix entry `shoop' (not 'shopt').
52
53 2002-06-28  Bernd Warken  <bwarken@mayn.de>
54         ________________________________________________________________
55         * release of groffer 0.9.0
56
57         * groffer.sh: new mode `pdf'
58         - PDF (Portable Document Format):
59           -> Transform groff `ps' output into pdf using `gs'.
60           -> Pro: PDF viewers provide text searching (!).
61           -> Con: the transformation is quite slow.
62           -> Not suitable as an auto mode.
63         - New options `--pdf', `--pdf-viewer', `--mode pdf'.
64         - Standard pdf viewers `xpdf' and `acroread'.
65         - For `xpdf', choose zoom `z 3' for 100 dpi, `z 2' for 75 dpi.
66         
67         * groffer.sh: support bzip2 decompression
68         - add test for `bzip2' with necessary options
69         - extend functions `catz()' and `save_stdin()'.
70
71         * TODO
72         remove entry on `bzip' decompression (done).
73         
74         * groffer.man:
75         - Document new `pdf' features.
76         - Document new `bzip2' decompression.
77         - Fix documentation for `--auto-modes'.
78         
79         * groffer.sh: minor fixes
80         - Improve device tests in `tty' and `dvi' modes.
81         - Internally, map mode `auto' to '' to facilitate tests.
82         - Fix auto mode sequence to: `ps,x,tty' as was intended.
83
84 2002-06-25  Bernd Warken  <bwarken@mayn.de>
85
86         * groffer.sh:
87         Fix `source' mode.
88
89         * groffer.man:
90         Fix some indentations.
91
92 2002-06-23  Bernd Warken  <bwarken@mayn.de>
93         ________________________________________________________________
94         * release of groffer 0.8
95
96         * Makefile.sub: add copyright section
97
98         * groffer.man:
99         - Document the new options.
100         - Revise the documentation of the modes.
101         - Document the configuration files in new section `FILES'.
102         - Redesign section `EXAMPLES'.
103         - Remove documentation for `-W'.
104         
105         * groffer.sh: new debugging features
106         - Disabled by default; enabled by environment variables.
107         - Add landmark() to catch typos with quotes.
108         - Add a function call stack for suitable functions; implemented
109           as within the argument checker func_check().
110         - This implies the need to provide `return' with some clean-up
111           facility; implemented as `eval "$_return_..."'.
112         - Add option `--debug' to enable debugging at run-time.
113         - Actually, the groffer script uses only shell builtins found
114           in `ash' (a subset of POSIX) and POSIX `sed' as the only
115           external shell utility.
116                 
117         * groffer.sh: customization of viewers
118         - In `groff' mode, the groffer viewing facilities are disabled.
119         - The postprocessor option `-P' costumizes the viewer only in
120           some situations in the `groff' mode, so a new infrastructure
121           for viewer customization is necessary.
122         - Allow to specify arguments to the viewer programs specified
123           in `--*-viewer()'.
124         - Implement some of the essential X Toolkit resource options in
125           groffer, but with use a leading double minus.
126           -> `--bd': set border color.
127           -> `--bg', `--background': set background color.
128           -> `--bw': set border width.
129           -> `--display': set X display.
130           -> `--geometry': set size and position of viewer window.
131           -> `--fg', `--foreground': set foreground color.
132           -> `--ft', `--font': set font.
133           -> `--resolution': set X resolution in dpi.
134           -> `--title': set viewer window title.
135           -> `--xrm': set X resource.
136         - Remove misnamed option `--xrdb'.
137         
138         * groffer.sh: new mode structure
139         - New Postcript mode `ps' (`--ps'):
140           -> default viewers: gv,ghostview,gs_x11,gs;
141           -> `--ps-viewer' sets the Postscript viewer.
142         - New mode `www' (`--www') for displaying in a web browser:
143           -> default browsers: mozilla,netscape,opera,amaya,arena;
144           -> `--www-viewer' sets the web browser.
145         - New dvi mode (`--dvi'); default viewer `xdvi':
146           -> default viewers: xdvi,dvilx;
147           -> `--dvi-viewer' sets the dvi viewer.
148         - New mode `auto':
149           -> active if no other mode is given or by new option `--auto';
150           -> selects from a sequence of modes that are tested until one
151             of them succeeds.
152           -> the default mode sequence is actually `ps', `x', `tty'.
153           -> `--default-modes' sets this mode sequence as a comma
154              separated string of program names, optionally each one
155              with arguments).
156         - New mode `groff':
157           -> process input like groff, ignore viewing options.
158           -> activated by new option `--groff'.
159           -> automatically active with one of `-V', `-X', `-Z'.
160         - Revise `tty' mode:
161           -> allow several text devices.
162           -> 
163         - Reorganize the mode management:
164           -> new mode setting option `--mode'.
165           -> logically separate source, groff, and display modes.
166           -> intermediate output mode is now part of mode groff; remove
167              any special features around `-Z'.
168         - Update usage() to reflect the new option structure.
169
170         * groffer.sh: add configuration files
171         - `/etc/groff/groffer.conf' system-wide configuration.
172         - `${HOME}/.groff/groffer.conf' user configuration.
173         - The configuration file are shell scripts for now; later
174           implementations can identify this from the `#! /bin/sh' line.
175         
176         * groffer.sh: new data structure `list':
177         - Implement a `list' data structure as a string consisting of
178           single-quoted elements, separated by a space character;
179           embedded single-quotes are escaped.
180
181         * groffer.sh: new option parser based on `list':
182         - Write new option parser based on `list', compatible to both
183           POSIX getopts() and GNU getopt().
184         - Long options are now available on GNU and non-GNU systems.
185         - Get rid of POSIX getopts() and GNU getopt().
186         - the `-W--longopt' construct is now obsolete; remove it.
187         - add test/function for `unset'.
188         - Option strings are now implemented as `list's in order to
189           allow unusual characters in options.
190         - Parse $MANOPT first; translate essential arguments into
191           groffer options.
192         
193         * groffer.man:
194         - determine prompt length for `.Shell_cmd'* dynamically.
195         - naming scheme for static strings and registers changed to
196           `namespace:macro.variable'.
197
198         
199 2002-06-16  Werner Lemberg  <wl@gnu.org>
200
201         * groffer.sh:
202         Implement man option `--ascii' by `-mtty-char'.
203            
204
205 2002-05-31  Werner LEMBERG  <wl@gnu.org>
206
207         * groffer.man (@.Shell_cmd_width):
208         Increase to 4m (we use `sh#' as the prompt).
209
210
211 2002-05-31  Bernd Warken  <bwarken@mayn.de>
212         ________________________________________________________________
213         * release of groffer 0.7
214
215         * groffer.sh: remove incompatibilities with the `ash' shell:
216         - do not use `!command':
217           -> use `else'
218           -> write `_not_' equivalents for some functions
219         - do not use `[^]' in `case':
220           ->  restructure some functions.
221         - only single-character names for loop variables:
222           -> spoils the paradigm of leading `_' for local variables.
223         - spurious trouble with `for i in ${var}':
224           -> use `eval set -- ${var}' and `for i in "$@"'
225         - do not change or use $IFS:
226           -> define new functions string_split() and `path_split()'.
227           -> result must be processed by `eval set --'.
228           -> solve conflicts with existing positional parameters.
229         - trouble with exporting external `$GROFF_*' variables:
230           -> hope that they were exported in the calling shell.
231         - not smart about additional blanks:
232           -> remove unnecessary white space.
233
234         * groffer.sh: improve run-time speed:
235         - `ash' more than doubles the speed of `bash'.
236         - speed-up `man_setup()'.
237
238
239 2002-05-30  Werner Lemberg  <wl@gnu.org>
240
241         * groffer.man:
242         - remove some wrong `\:'.
243         - rename macro names that start with a `[' (clashes with refer).
244         - fix TP_header.
245
246
247 2002-05-28  Bernd Warken  <bwarken@mayn.de>
248         ________________________________________________________________
249         * release of groffer 0.6
250
251         This is almost a complete rewrite since groffer 0.5 .
252         ________________________________________________________________
253         * Documentation
254         
255         * groffer.man:
256         - Apply the changes done in www.tmac (.URL and .MTO)
257         - Replace \fP by \f[].
258         - Redesign and rewrite most macros.
259         - Include the documentation for the new features.
260         - Greatly enlarge section ENVIRONMENT
261         - Add examples.
262
263         * TODO:
264         - Start a TODO file with several sections.
265
266         * ChangeLog:
267         Due to the many changes, shorten and rearrange the entries
268         since groffer 0.5 .
269         ________________________________________________________________
270         * Shell compatibility
271
272         * groffer.sh:
273         - Due to possible conflicts in old BSD versions, `[]' was
274           replaced by `test'; the `test' options `-a' and `-o' were
275           replaced by multiple calls of `test'.
276         - Write interface to the `sed' command `s' to become
277           independent of the delimiter character.  Rewrite all text
278           manipulating function to use this new scheme.  The new
279           functions are named `string_*'.
280         - `tr' is not needed any longer, replaced by `sed'.
281         - `grep' is not needed any longer, mostly replaced by `case'.
282         - Revision of test for `getopt'.
283         - Remove `set -a'; explicitly export variables.
284         - The only external programs used are POSIX `sed' and the
285           fallback to `apropos'.  All other program calls were
286           replaced by shell builtins and functions.
287         
288         ________________________________________________________________
289         * Cosmetics
290
291         * groffer.sh:
292         - Implement a prefix based naming scheme for local variables
293           and functions (OOP-like).
294         - Introduce variables for white space (better readability with
295           $IFS).
296         - Store the names of the processed filespecs into a variable
297           instead of a temporary file.
298         - Error-prone shell constructions were replaced by functions
299           with a simple interface.
300         - To avoid too long pipes, replace supercat() by do_fileargs();
301           every input file is handled independently.
302
303         ________________________________________________________________
304         * New features:
305         - Add support for more X devices (e.g. X75-12 and X100-12).
306         - Add long option `--intermediate_output' to `-Z'.
307         - Make the options for mode selection clobber each other.
308         - Add option `--mode' with an argument having the following
309           values:
310           `X': force displaying in X, same as options `-X';
311           `tty': display with a pager on text terminal; same as `--tty';
312           `source', `default', `auto', etc.
313         - Make the handling of the X mode like in groff (e.g. -X -Tps).
314         - Make resolution for gxditview behave like groff (default
315           75 dpi).
316         - Add environment variable $GROFFER_OPT to preset groffer
317           options.
318
319         ________________________________________________________________
320         * implement most of the functionality of GNU `man'.
321
322         - Add all `man' long options to groffer.
323         - Add all `man' environment variables.
324         - Parse and use content of `$MANOPT'.
325         - The precedence of the options and environment variables
326           is regulated like in GNU `man'.
327         - Force the option `--manpath' to have a colon-separated
328           argument like GNU `man'.
329         - Support `man section name' calling convention.
330         - Remove all dependencies on `man -w'.
331
332         * groffer.sh:
333         - Add the new features above.
334         - Rewrite the search algorithm for man pages.
335         - Remove searching with `man -w' (problems with space
336           characters in file names).
337         - Fix and complement usage().
338         - The filespec parsers gets a function of its own do_manpage().
339         
340         
341 2002-01-08  Bernd Warken  <bwarken@mayn.de>
342         
343         * groffer 0.5 (beta) released
344
345         * groffer.man:
346         - Fix hyphenation problems with macros describing options.
347         - Fix the handling of some `-' characters.
348         - Examples of shell commands now print in font CR instead of CB.
349         - Remove documentation for option `-X'.
350         - Add documentation for option `--dpi'.
351         
352         * groffer.sh:
353         - New method for creating temporary files, based on process
354           IDs.  This is reliable enough and suitable for GNU and POSIX.
355         - Run gxditview in a new shell instantiation for having a clean
356           handling of the temporary files when running in the
357           background.
358         - Revision of the retrieving method for the window title.
359         - Empty input is now tolerated.
360         - Export the variables that are set before the call of `set -a'.
361         - Function usage() corrected and updated.
362         - Unnecessary stuff removed.
363         - Comments adjusted.
364         - Pass option `-X' to groff, i.e. force X output with 75 dpi.
365         - Implement option `--dpi' for setting the resolution for the X
366           viewer, which had already been documented in earlier versions.
367
368 2002-01-07  Bernd Warken  <bwarken@mayn.de>
369
370         * groffer 0.4 (beta) released (as groff `contrib')
371         
372         * groffer.man:
373         - New features documented.
374         - Macros stream-lined.
375         - Section EXAMPLES added.
376         
377         * groffer.sh:
378         - System tests added/optimized.
379         - Speed/memory optimizations by defining some shell functions
380           alternatively depending on the text results.
381         - Use `gzip' for decompression instead of `zcat'.
382         - Signal handling added for clean exiting by `trap'.
383         - Temporary files exist only as long as necessary.
384         - Setup of path for man-pages moved after the option parsing.
385         - Fixed a bug in determining the path for man-pages.
386         - Fixed a bug in the handling of non-groffer options.
387
388         * New features:
389         - New option --tty for forcing paging on text terminal.
390         - New option --no-man for disabling the man-page feature.
391         - Implement reserved POSIX -W feature to simulate long options.
392         - gxditview is now run as a background process.
393
394 2002-01-05  Werner LEMBERG  <wl@gnu.org>
395
396         * Integrate groffer into groff's `contrib' tree.
397
398         * Makefile: Replaced by...
399         Makefile.sub: New file.
400
401         * groffer: Replaced by...
402         groffer.sh: New file.
403
404         * groffer.man (OptDef): Add missing backslashes.
405         Update copyright.
406
407 2001-12-15  Bernd Warken  <bwarken@mayn.de>
408
409         * groffer 0.3 (alpha) released (still stand-alone package).
410
411         * GNU and POSIX are supported (POSIX without long options).
412
413         * New options : --man, --mandb, --title, --xrdb
414
415         * Support for command line arguments with embedded single space
416         characters (GNU only) .
417
418         * Several search methods for man-pages when no `man -w' is
419         available ($MANPATH, mandb, a default path).
420
421         * Language support for man-pages.
422
423         * Recognize the following filespecs as man-page parameters:
424           man:name(section), man:name, name.section, name.
425         
426 2001-12-03  Bernd Warken  <bwarken@mayn.de>
427
428         * Stand-alone package for groffer 0.2 (alpha) created
429         Files: groffer, groffer.man, Makefile, TODO, ChangeLog
430         
431 2001-12-02  Bernd Warken  <bwarken@mayn.de>
432
433         * groffer 0.2 (alpha) program released.
434
435         * Name changed from `groffview' to `groffer'.
436
437         * Comments added.
438         
439         * Name changed from `groffview' to `groffer'.
440
441         * Options harmonized with groff.
442         New options : -Q --source, -T --device, -X .
443         Other options known from groff are passed unchanged.
444
445         * 100 dpi as default, 75 dpi only in emergency situations.
446
447         * Bugs with temporary files fixed.
448
449         * Code restructured and comments added.
450         
451 2001-11-28  Bernd Warken  <bwarken@mayn.de>
452
453         ***** groffview 0.1 (experimental) and groffview.man released
454         (predecessor of groffer, shell script)
455
456         * Options : -h --help, -v --version
457         
458         * Search for man-pages based on $MANPATH
459
460         * development of `groffview' shell script started