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'
13 - Correct wrong $MANPATH to $_MAN_PATH in function
15 - Test existence of directory before deleting it in the
16 `clean_up' definitions.
17 - Correct help output in `usage' (called by `--help').
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
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
42 * TODO: think about...
43 - writing part of groffer in C/C++.
44 - handling several files with different macro packages.
46 2002-10-17 Bernd Warken <bwarken@mayn.de>
47 ________________________________________________________________
48 * fixes of groffer 0.9.2
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.
60 New file for general information on the groffer source; it is
63 2002-10-14 Bernd Warken <bwarken@mayn.de>
66 add replacement "@BINDIR@" to "$(bindir)" for "groffer:"
69 Define $_this as "@BINDIR@/${_PROGRAM_NAME}" to save the right
70 installation position of groffer for the special shell calling.
73 Remove double definition of filespec parameters.
75 2002-10-13 Bernd Warken <bwarken@mayn.de>
76 ________________________________________________________________
77 * release of groffer 0.9.2
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
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
94 - New macro for file names ".File_name".
95 - "Option Parsing" is moved to section "COMPATIBILITY".
96 - Fix some "EXAMPLES".
98 2002-09-30 Bernd Warken <bwarken@mayn.de>
99 ________________________________________________________________
100 * release of groffer 0.9.1
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.
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.
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).
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.
164 * groffer.sh: support bzip2 decompression
165 - add test for `bzip2' with necessary options
166 - extend functions `catz()' and `save_stdin()'.
169 remove entry on `bzip' decompression (done).
172 - Document new `pdf' features.
173 - Document new `bzip2' decompression.
174 - Fix documentation for `--auto-modes'.
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>
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
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'.
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.
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
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'.
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.
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
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
254 -> process input like groff, ignore viewing options.
255 -> activated by new option `--groff'.
256 -> automatically active with one of `-V', `-X', `-Z'.
258 -> allow several text devices.
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.
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
291 - determine prompt length for `.Shell_cmd'* dynamically.
292 - naming scheme for static strings and registers changed to
293 `namespace:macro.variable'.
296 2002-06-16 Werner Lemberg <wl@gnu.org>
299 Implement man option `--ascii' by `-mtty-char'.
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':
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>
339 - remove some wrong `\:'.
340 - rename macro names that start with a `[' (clashes with refer).
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 ________________________________________________________________
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
361 - Start a TODO file with several sections.
364 Due to the many changes, shorten and rearrange the entries
366 ________________________________________________________________
367 * Shell compatibility
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.
385 ________________________________________________________________
389 - Implement a prefix based naming scheme for local variables
390 and functions (OOP-like).
391 - Introduce variables for white space (better readability with
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 ________________________________________________________________
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
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
413 - Add environment variable $GROFFER_OPT to preset groffer
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'.
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().
438 2002-01-08 Bernd Warken <bwarken@mayn.de>
440 * groffer 0.5 (beta) released
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'.
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
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.
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')
470 - New features documented.
471 - Macros stream-lined.
472 - Section EXAMPLES added.
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.
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.
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.
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
528 2001-12-02 Bernd Warken <bwarken@mayn.de>
530 * groffer 0.2 (alpha) program released.
532 * Name changed from `groffview' to `groffer'.
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.
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
555 * Search for man-pages based on $MANPATH
557 * development of `groffview' shell script started