* release of groffer 0.9.21
### @...@ constructs
* groffer.sh:
- $_AT: New variable for `@'.
- @...@: Replace the @...@ constructs by variables _AT_..._AT.
These constructs are transformed by `make' to useful information.
Keep all of these constructs in the first part of groffer.sh. For
a run before a `make' call, the script sets these variables to
special values for testing purpose.
- $_GROFFER_LIBDIR: Variable pointing to the groffer library
directory @libdir@/groff/groffer.
### Configuration files
* groffer.sh:
- Add test for `$()' construct.
- Read and transform the configuration files and execute the
emerging commands. The `sed' script was heavily enlarged to
handle line with spaces and quotes. The emerging script is now
called by `eval', so no temporary file is needed.
- $_CONF_FILE_ETC, $_CONF_FILE_HOME: New variables for the config
files.
- $_SQ, $_SP: Move variables for characters before the handling of
the configuration files. Rename $_SQUOTE to $_SQ and $_SPACE to
$_SP.
- $GROFFER_OPT: Remove cleaning of this variable before the
reading of the configuration files.
* groffer2.sh:
- main_init(): Remove the getting of the configuration files.
### Rewrite the shell determination
* groffer.sh:
- Get rid of all functions in `groffer.sh'. Rewrite the shell
determination with `` and $().
- --shell: Shortest abbreviation is `--sh'. Allow arguments for
the shell name.
- Allow an empty argument for --shell as shell name to overwrite a
specified shell; an empty shell name gets back to the default
shell.
- The shell determination now inludes the full handling of the
config files. The `--shell' option needs no longer a line
starting with `-'.
### Test of unset
* groffer.sh:
- Remove test of `unset'.
- Remove all calls of `unset'.
- Use one character names for all variables that are meant to be
local in this script.
* groffer2.sh:
- Move the test of `unset' to the testing of rudimentary shell
functionality without change.
### Allow abbreviations for long options
* groffer2.sh:
- list_has_abbrev(): New function for checking a list having an
element with a given abbreviation.
- list_get_single_from_abbrev(): New function to retrieve the
element having a given abbreviation.
- list_from_cmd_line(): For an option abbreviation determine the
corresponding long option.
- From the man option lists remove the elements that are also in
a groffer list.
- Allow abbreviation for the early test of --debug.
* groffer.sh: Allow abbreviation for the early test on --shell.
- get_opt_shell(): Rewrite _get_opt_shell() and the shell test
around it.
- test_on_shell(): Rename function _test_on_shell().
- $_SHELL: global variable for the shell to run groffer2.sh.
### Get rid of `sh -c'
* groffer2.sh:
- main_display(), _do_display(): Remove the `sh -c' calls. Make
the cleanup working without it.
- _do_display(): Extend _do_display() such thatit can be used for
the pdf mode as well.
- _make_pdf(): New subfunction of main_display() for running the
additional parts of pdf mode in _do_display().
- rm_file(), rm_file_with_debug(), rm_tree(): New functions for
removing files and directories.
### Change directory
* groffer2.sh:
- $_START_DIR: New variable to store the directory at the starting
time of the script.
- main_display(): Go to the groffer temporary directory to be able
to process internal `groff' data like pictures.
- clean_up(): Get back to the starting directory.
### Compatibility with strange shells
* groffer2.sh:
- clean_up(): `zsh' and `posh' had difficulties with `eval'.
- is_*(): Add test on empty argument. Some shells return true on
`test -d' etc. with empty argument, while most shells return
false.
- echo1(); New function to print single line `cat <<EOF'. Replace
all `echo x' by `echo1'.
- list_has_abbrev(), list_from_cmdline(): Correction.
- main_parse_MANOPT(): Repair and revise.
- --do-nothing: New option without output (for development).
- Rewrite rudimentary shell functionality near the beginning of
the script.
* groffer.sh, groffer2.sh:
- Remove `;' after the commands `if', `while', and `until'.
### Debugging information
* groffer2.sh:
- $_DEBUG_PRINT_PARAMS: New variable for printing all parameters
from the config files, $GROFFER_OPT, and command line after they
have been transformed.
- $_DEBUG_PRINT_SHELL: New variable for printing the name of the
shell found in groff.sh.
- main(): Move the landmarks of main-*() into main().
### Further checks and additions
* groffer.sh, groffer2.sh:
- $_PROGRAM_NAME: Replace this variable by `groffer'. The program
name is now stable.
- $_GROFFER_RUN: Remove this variable. As `groffer.sh' or
`groffer' is no longer rerun, this variable is not necessary any
more.
* groffer2.sh:
- main_set_resources(): Make the default viewers capable to use
arguments in the list.
- leave(): Add an argument for given exit code. Use it where
suitable in main_*().
- do_filearg(): Add error messages for non-existing files and man
pages.
- _do_opt_V(): New subfunction of main_display() to handle the
output for option `-V'. `groff -V' is greatly enlarged by
`groffer' specific information.
- register_title(): Handle file names with spaces. Replace spaces
by `_'.
- is_existing(): Add `test -c' for special files.
- usage(): Add `=arg' to the options with an argument. Add option
`--tty-viewer'.
- kghostview: In the default viewer list, add option
`--scale=1.45'.
- $_OPTS_CMDLINE_SHORT_NA: Correct a lacking space.
* Makefile.sub: Repair the installation instructions for
groffer2.sh.
* groffer.man:
- Add paragraph on option handling.
- Add option `--do-nothing'.
- Reorder option for development and `groff'.
- Rewrite documentation for option `-V'.
- Expand `--shell'.
- Reformulate sections CONFIGURATION FILES, COMPATIBILITY and SEE
ALSO.
- Make `man' italic where possible.
- .copyleft: Adjust the fonts.
* README: Update sections `Output' and `Compatibility'.
* README_SH:
- Add `mksh' as compatible shell.
- Add information on the scripts after the split.
* TODO: Remove some fulfilled parts.
* ChangeLog: Remove final spaces.