* release of groffer 0.9.21
commitfae59016d8bc62655bc92334fde84ac505567856
authorWerner LEMBERG <wl@gnu.org>
Wed, 3 Aug 2005 06:32:11 +0000 (3 06:32 +0000)
committerWerner LEMBERG <wl@gnu.org>
Wed, 3 Aug 2005 06:32:11 +0000 (3 06:32 +0000)
treef5df1c0928362c54af9d87440b0d5d9b92f94429
parent65942880a94fb1a3cb02adda72ae2d66008afc6d
* 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.
contrib/groffer/ChangeLog
contrib/groffer/Makefile.sub
contrib/groffer/README
contrib/groffer/README_SH
contrib/groffer/TODO
contrib/groffer/groffer.man
contrib/groffer/groffer.sh
contrib/groffer/groffer2.sh