2002-09-30 Bernd Warken ________________________________________________________________ * release of groffer 0.9.1 * TODO: remove done entries - Remove request for different shells. - Remove the 'sed' complaints. 2002-07-15 Bernd Warken * groffer.sh: replace `sed' interface by direct `sed' - This improves the performance of the shell programming parts and shortens the groffer script by about 5%. - Remove functions: string_del_append(), string_del_leading(), string_del_trailing(), string_flatten(), string_get_before(), string_get_leading(), string_replace_all(), string_sed_s(), and their auxiliary functions. - Replace all calls of these functions by direct `sed' commands. - Define variables for special characters to ease `sed' calls. - Remove `$APPEND'. - Restrict list_from_string() to single character separators. - Correct list_check() and base_name(). - Add comments to all calls of `sed'. * groffer.sh: add run-time support for several shells - New option `--shell': stop execution and rerun groffer under the shell specified in the argument of `--shell'. - If no shell was specified at run-time, `ash' is tried first; if `ash' is not available continue with the shell with which groffer was called from the command line, or with the shell name in the first line of the script, actually `/bin/sh'. 2002-07-12 Bernd Warken ________________________________________________________________ * fixes for groffer 0.9.0 * groffer.sh: enhance version information `groffer -v|--version' now print: - groffer's version number and date - the string `is part of ' - groff's version information (version number and copyright), but not groff's `called subprograms' information. * groffer.sh: minor fixes - Fix the argument parser to process argument `-' correctly. - Some display programs have trouble with empty input; feed a line consisting of a single space character in this case for all display modes (not for source or groff modes). * TODO: fix entry `shoop' (not 'shopt'). 2002-06-28 Bernd Warken ________________________________________________________________ * release of groffer 0.9.0 * groffer.sh: new mode `pdf' - PDF (Portable Document Format): -> Transform groff `ps' output into pdf using `gs'. -> Pro: PDF viewers provide text searching (!). -> Con: the transformation is quite slow. -> Not suitable as an auto mode. - New options `--pdf', `--pdf-viewer', `--mode pdf'. - Standard pdf viewers `xpdf' and `acroread'. - For `xpdf', choose zoom `z 3' for 100 dpi, `z 2' for 75 dpi. * groffer.sh: support bzip2 decompression - add test for `bzip2' with necessary options - extend functions `catz()' and `save_stdin()'. * TODO remove entry on `bzip' decompression (done). * groffer.man: - Document new `pdf' features. - Document new `bzip2' decompression. - Fix documentation for `--auto-modes'. * groffer.sh: minor fixes - Improve device tests in `tty' and `dvi' modes. - Internally, map mode `auto' to '' to facilitate tests. - Fix auto mode sequence to: `ps,x,tty' as was intended. 2002-06-25 Bernd Warken * groffer.sh: Fix `source' mode. * groffer.man: Fix some indentations. 2002-06-23 Bernd Warken ________________________________________________________________ * release of groffer 0.8 * Makefile.sub: add copyright section * groffer.man: - Document the new options. - Revise the documentation of the modes. - Document the configuration files in new section `FILES'. - Redesign section `EXAMPLES'. - Remove documentation for `-W'. * groffer.sh: new debugging features - Disabled by default; enabled by environment variables. - Add landmark() to catch typos with quotes. - Add a function call stack for suitable functions; implemented as within the argument checker func_check(). - This implies the need to provide `return' with some clean-up facility; implemented as `eval "$_return_..."'. - Add option `--debug' to enable debugging at run-time. - Actually, the groffer script uses only shell builtins found in `ash' (a subset of POSIX) and POSIX `sed' as the only external shell utility. * groffer.sh: customization of viewers - In `groff' mode, the groffer viewing facilities are disabled. - The postprocessor option `-P' costumizes the viewer only in some situations in the `groff' mode, so a new infrastructure for viewer customization is necessary. - Allow to specify arguments to the viewer programs specified in `--*-viewer()'. - Implement some of the essential X Toolkit resource options in groffer, but with use a leading double minus. -> `--bd': set border color. -> `--bg', `--background': set background color. -> `--bw': set border width. -> `--display': set X display. -> `--geometry': set size and position of viewer window. -> `--fg', `--foreground': set foreground color. -> `--ft', `--font': set font. -> `--resolution': set X resolution in dpi. -> `--title': set viewer window title. -> `--xrm': set X resource. - Remove misnamed option `--xrdb'. * groffer.sh: new mode structure - New Postcript mode `ps' (`--ps'): -> default viewers: gv,ghostview,gs_x11,gs; -> `--ps-viewer' sets the Postscript viewer. - New mode `www' (`--www') for displaying in a web browser: -> default browsers: mozilla,netscape,opera,amaya,arena; -> `--www-viewer' sets the web browser. - New dvi mode (`--dvi'); default viewer `xdvi': -> default viewers: xdvi,dvilx; -> `--dvi-viewer' sets the dvi viewer. - New mode `auto': -> active if no other mode is given or by new option `--auto'; -> selects from a sequence of modes that are tested until one of them succeeds. -> the default mode sequence is actually `ps', `x', `tty'. -> `--default-modes' sets this mode sequence as a comma separated string of program names, optionally each one with arguments). - New mode `groff': -> process input like groff, ignore viewing options. -> activated by new option `--groff'. -> automatically active with one of `-V', `-X', `-Z'. - Revise `tty' mode: -> allow several text devices. -> - Reorganize the mode management: -> new mode setting option `--mode'. -> logically separate source, groff, and display modes. -> intermediate output mode is now part of mode groff; remove any special features around `-Z'. - Update usage() to reflect the new option structure. * groffer.sh: add configuration files - `/etc/groff/groffer.conf' system-wide configuration. - `${HOME}/.groff/groffer.conf' user configuration. - The configuration file are shell scripts for now; later implementations can identify this from the `#! /bin/sh' line. * groffer.sh: new data structure `list': - Implement a `list' data structure as a string consisting of single-quoted elements, separated by a space character; embedded single-quotes are escaped. * groffer.sh: new option parser based on `list': - Write new option parser based on `list', compatible to both POSIX getopts() and GNU getopt(). - Long options are now available on GNU and non-GNU systems. - Get rid of POSIX getopts() and GNU getopt(). - the `-W--longopt' construct is now obsolete; remove it. - add test/function for `unset'. - Option strings are now implemented as `list's in order to allow unusual characters in options. - Parse $MANOPT first; translate essential arguments into groffer options. * groffer.man: - determine prompt length for `.Shell_cmd'* dynamically. - naming scheme for static strings and registers changed to `namespace:macro.variable'. 2002-06-16 Werner Lemberg * groffer.sh: Implement man option `--ascii' by `-mtty-char'. 2002-05-31 Werner LEMBERG * groffer.man (@.Shell_cmd_width): Increase to 4m (we use `sh#' as the prompt). 2002-05-31 Bernd Warken ________________________________________________________________ * release of groffer 0.7 * groffer.sh: remove incompatibilities with the `ash' shell: - do not use `!command': -> use `else' -> write `_not_' equivalents for some functions - do not use `[^]' in `case': -> restructure some functions. - only single-character names for loop variables: -> spoils the paradigm of leading `_' for local variables. - spurious trouble with `for i in ${var}': -> use `eval set -- ${var}' and `for i in "$@"' - do not change or use $IFS: -> define new functions string_split() and `path_split()'. -> result must be processed by `eval set --'. -> solve conflicts with existing positional parameters. - trouble with exporting external `$GROFF_*' variables: -> hope that they were exported in the calling shell. - not smart about additional blanks: -> remove unnecessary white space. * groffer.sh: improve run-time speed: - `ash' more than doubles the speed of `bash'. - speed-up `man_setup()'. 2002-05-30 Werner Lemberg * groffer.man: - remove some wrong `\:'. - rename macro names that start with a `[' (clashes with refer). - fix TP_header. 2002-05-28 Bernd Warken ________________________________________________________________ * release of groffer 0.6 This is almost a complete rewrite since groffer 0.5 . ________________________________________________________________ * Documentation * groffer.man: - Apply the changes done in www.tmac (.URL and .MTO) - Replace \fP by \f[]. - Redesign and rewrite most macros. - Include the documentation for the new features. - Greatly enlarge section ENVIRONMENT - Add examples. * TODO: - Start a TODO file with several sections. * ChangeLog: Due to the many changes, shorten and rearrange the entries since groffer 0.5 . ________________________________________________________________ * Shell compatibility * groffer.sh: - Due to possible conflicts in old BSD versions, `[]' was replaced by `test'; the `test' options `-a' and `-o' were replaced by multiple calls of `test'. - Write interface to the `sed' command `s' to become independent of the delimiter character. Rewrite all text manipulating function to use this new scheme. The new functions are named `string_*'. - `tr' is not needed any longer, replaced by `sed'. - `grep' is not needed any longer, mostly replaced by `case'. - Revision of test for `getopt'. - Remove `set -a'; explicitly export variables. - The only external programs used are POSIX `sed' and the fallback to `apropos'. All other program calls were replaced by shell builtins and functions. ________________________________________________________________ * Cosmetics * groffer.sh: - Implement a prefix based naming scheme for local variables and functions (OOP-like). - Introduce variables for white space (better readability with $IFS). - Store the names of the processed filespecs into a variable instead of a temporary file. - Error-prone shell constructions were replaced by functions with a simple interface. - To avoid too long pipes, replace supercat() by do_fileargs(); every input file is handled independently. ________________________________________________________________ * New features: - Add support for more X devices (e.g. X75-12 and X100-12). - Add long option `--intermediate_output' to `-Z'. - Make the options for mode selection clobber each other. - Add option `--mode' with an argument having the following values: `X': force displaying in X, same as options `-X'; `tty': display with a pager on text terminal; same as `--tty'; `source', `default', `auto', etc. - Make the handling of the X mode like in groff (e.g. -X -Tps). - Make resolution for gxditview behave like groff (default 75 dpi). - Add environment variable $GROFFER_OPT to preset groffer options. ________________________________________________________________ * implement most of the functionality of GNU `man'. - Add all `man' long options to groffer. - Add all `man' environment variables. - Parse and use content of `$MANOPT'. - The precedence of the options and environment variables is regulated like in GNU `man'. - Force the option `--manpath' to have a colon-separated argument like GNU `man'. - Support `man section name' calling convention. - Remove all dependencies on `man -w'. * groffer.sh: - Add the new features above. - Rewrite the search algorithm for man pages. - Remove searching with `man -w' (problems with space characters in file names). - Fix and complement usage(). - The filespec parsers gets a function of its own do_manpage(). 2002-01-08 Bernd Warken * groffer 0.5 (beta) released * groffer.man: - Fix hyphenation problems with macros describing options. - Fix the handling of some `-' characters. - Examples of shell commands now print in font CR instead of CB. - Remove documentation for option `-X'. - Add documentation for option `--dpi'. * groffer.sh: - New method for creating temporary files, based on process IDs. This is reliable enough and suitable for GNU and POSIX. - Run gxditview in a new shell instantiation for having a clean handling of the temporary files when running in the background. - Revision of the retrieving method for the window title. - Empty input is now tolerated. - Export the variables that are set before the call of `set -a'. - Function usage() corrected and updated. - Unnecessary stuff removed. - Comments adjusted. - Pass option `-X' to groff, i.e. force X output with 75 dpi. - Implement option `--dpi' for setting the resolution for the X viewer, which had already been documented in earlier versions. 2002-01-07 Bernd Warken * groffer 0.4 (beta) released (as groff `contrib') * groffer.man: - New features documented. - Macros stream-lined. - Section EXAMPLES added. * groffer.sh: - System tests added/optimized. - Speed/memory optimizations by defining some shell functions alternatively depending on the text results. - Use `gzip' for decompression instead of `zcat'. - Signal handling added for clean exiting by `trap'. - Temporary files exist only as long as necessary. - Setup of path for man-pages moved after the option parsing. - Fixed a bug in determining the path for man-pages. - Fixed a bug in the handling of non-groffer options. * New features: - New option --tty for forcing paging on text terminal. - New option --no-man for disabling the man-page feature. - Implement reserved POSIX -W feature to simulate long options. - gxditview is now run as a background process. 2002-01-05 Werner LEMBERG * Integrate groffer into groff's `contrib' tree. * Makefile: Replaced by... Makefile.sub: New file. * groffer: Replaced by... groffer.sh: New file. * groffer.man (OptDef): Add missing backslashes. Update copyright. 2001-12-15 Bernd Warken * groffer 0.3 (alpha) released (still stand-alone package). * GNU and POSIX are supported (POSIX without long options). * New options : --man, --mandb, --title, --xrdb * Support for command line arguments with embedded single space characters (GNU only) . * Several search methods for man-pages when no `man -w' is available ($MANPATH, mandb, a default path). * Language support for man-pages. * Recognize the following filespecs as man-page parameters: man:name(section), man:name, name.section, name. 2001-12-03 Bernd Warken * Stand-alone package for groffer 0.2 (alpha) created Files: groffer, groffer.man, Makefile, TODO, ChangeLog 2001-12-02 Bernd Warken * groffer 0.2 (alpha) program released. * Name changed from `groffview' to `groffer'. * Comments added. * Name changed from `groffview' to `groffer'. * Options harmonized with groff. New options : -Q --source, -T --device, -X . Other options known from groff are passed unchanged. * 100 dpi as default, 75 dpi only in emergency situations. * Bugs with temporary files fixed. * Code restructured and comments added. 2001-11-28 Bernd Warken ***** groffview 0.1 (experimental) and groffview.man released (predecessor of groffer, shell script) * Options : -h --help, -v --version * Search for man-pages based on $MANPATH * development of `groffview' shell script started