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