summaryrefslogtreecommitdiff
path: root/contrib/groffer/shell/ChangeLog.0
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/groffer/shell/ChangeLog.0')
-rw-r--r--contrib/groffer/shell/ChangeLog.02122
1 files changed, 2122 insertions, 0 deletions
diff --git a/contrib/groffer/shell/ChangeLog.0 b/contrib/groffer/shell/ChangeLog.0
new file mode 100644
index 00000000..7502c64f
--- /dev/null
+++ b/contrib/groffer/shell/ChangeLog.0
@@ -0,0 +1,2122 @@
+2006-10-10 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * ChangeLog.0: This file is the former ChangeLog file of the
+ `groffer' versions 0.* consisting of a shell version only. Since
+ then the files have been moved to the subdirectory `shell' of the
+ `groffer' main directory.
+
+2006-10-05 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.31
+
+ * groffer2.sh:
+ - _make_pdf(): Fix argument of `obj'.
+ - to_tmp(): Add option -r to soelim to omit the .lf request. The
+ new global variable $_SOELIM_R stores the option if it is
+ available. Use numbers for the names of the `file' and `so'
+ temporary files, such that the information for each filespec
+ argument is kept for debug. New global variable $_FILE_NR.
+ - main_set_resources(): Remove `man' temporary files except for
+ debug
+ - man_get(): Change name in $_TMP_MANSPEC.
+ - man_is_man(): Change name in $_TMP_MANSPEC. Remove file in
+ $_TMP_MANPEC if empty.
+ - _do_display() of main_display(): Add check on empty mode file.
+
+ * groffer.man: Filespec: Add information on the argument
+ handling of apropos.
+
+ Remove the space characters at the end of line in all files.
+
+2006-10-03 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.30
+
+ * groffer2.sh:
+ - Correct spacing.
+ - main_do_fileargs(): Distribute special_filespec() in order to
+ get a better heading for `whatis'.
+
+2006-10-03 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.29
+
+ * groffer2.sh:
+ - --to-stdtout: New option to display the generated mode file
+ without graphical display.
+ - _get_prog_args() of main_set_mode(): Make argument upper case.
+ - usage(): Add --to-stdout, remove -Q, reorder --source.
+
+ * groffer.man:
+ - Reorder the default viewers.
+ - Move `--source' to `groffer' options.
+ - Remove `-Q'.
+ - Add `--to-stdout'.
+ - Reconfigure the sections on filespec arguments.
+ - Remove information on wildcards.
+
+2006-10-01 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.28
+
+ * groffer.sh:
+ - Change all directories to end with `/'.
+ - In the state before the run of `make', make the script runnable
+ from each directory using $0 and `pwd'.
+
+ * groffer2.sh:
+ - main_init(): Change the umask to 0077 to allow only access for
+ the file owner for the temporary files. This is done for security
+ reasons.
+ - version(): Put the whole output under `<<EOF'.
+ - usage(): Add information on filespec arguments.
+ - main_do_fileargs(): Rewrite the handling of filespec
+ parameters. Fix filespec man:name.section.
+
+2006-09-26 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.27
+
+ * Makefile.sub: Add Emacs setting at the end of the file.
+
+ * TODO: Remove this file because it does not contain any actual
+ entries.
+
+ * groffer2.sh:
+ - main_set_mode(): Remove too early test of modes on X. Fix pdf
+ mode.
+ - where_is_prog(): Fix this function to detect files in the
+ current directory.
+ - _get_prog_args() of main_set_mode(): Fix return;
+ - _get_first_prog() of main_set_mode(): Fix call of exit_test().
+ - cat_z(): Make it a single function and add file test.
+ - whatis_setup(): Rename whatis_header(). Fix display title to
+ `whatis'.
+ - apropos_setup(): Fix display title to `apropos'.
+ - Globals: Fix this section in the description of several
+ functions.
+ - apropos_filespec(): Fix variable $s and the corresponding sed
+ call.
+ - man_setup(): Add $EXTENSION.
+ - _do_man_so() of to_tmp(): Fix variables.
+ - $_ALL_EXIT: Remove unused variable.
+ - $_TITLE_ELT: Remove unused variable.
+ - man_set_resources(): Fix setting of $_DISPLAY_ARGS.
+ - main_display(): Fix description. Remove $md_options. Let
+ $MANOPT override system variables.
+
+2006-09-16 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.26
+
+ ### Simplification of main_set_mode()
+
+ * groffer2.sh:
+ - _get_first_prog() of main_set_mode(): Rewrite this function
+ such that it does not have an output, but set the variables
+ $_DISPLAY_PROG and $_DISPLAY_ARGS.
+ - _check_prog_on_list() of main_set_mode(): Rename and rewrite
+ _check_X_prog(). Suitable for being called for $_VIEWER_<mode>_X
+ and $_VIEWER_<mode>_TTY. No output, but set the variables
+ $_DISPLAY_PROG and $_DISPLAY_ARGS.
+ - _obj_set_vars() of main_set_mode(): Remove this function. It is
+ no longer necessary because its variables are set by the other
+ functions.
+ - _get_prog_args() of main_set_mode(): New function that
+ simplifies the loop in main_set_mode() and handles both
+ $_VIEWER_<mode>_X and $_VIEWER_<mode>_TTY.
+ - _process_mode() of main_set_mode(): Remove this function.
+ - main_set_mode(): Remove case for calling _process_mode(). In
+ the loop, use _get_prog_args() for simplification.
+ - main_parse_args(): Make --<mode>-viewer equivalent to
+ --<mode>-viewer-tty to make _process_mode() unnecessary.
+ - $_VIEWER_BACKGROUND: Start with `no'.
+
+ ### Extend the documentation
+
+ * groffer2.sh:
+ - Environment Variables: Add information on the naming of
+ variables in functions.
+ - $_ADDOPTS_POST, $_ADDOPTS_X: Remove these unused variables.
+ - apropos_setup(), apropos_setup (), base_name(), dir_name(),
+ echo1(), echo2(), func_check(), func_pop(), func_push(),
+ is_greater_than(), list_append(), list_from_split(),
+ _manpath_add_sys() of manpath_add_lang_sys(), rm_tree(),
+ special_filespec(), special_setup(), tmp_create(), to_tmp_line(),
+ usage(), version(), where_is_prog(), main_set_mode():
+ Fix and extend the description. Many other function descriptions
+ were just fixed without being mentioned.
+ - landmark 7: man_*(): Add information on the search of `man'
+ pages.
+
+ * groffer.man:
+ - GNU `man' option overview: Add --location, --no-location, and
+ --where.
+ - GNU `man' options: Add the GNU `man' long options that are
+ accepted by `groffer', but just ignored.
+ - MAN PAGE SEARCHING: Correct and extend this section.
+
+ * TODO:
+ - Remove entry on function headers.
+ - Remove entry on GNU `man' options.
+ - Remove entry on search algorithm for `man' pages.
+
+ ### Other fixes
+
+ * groffer2.sh:
+ - man_get(): On `man' page search with given name and section
+ handle also files with extension when no files without extension
+ are found.
+
+2006-09-11 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.25
+
+ ### Version information
+
+ * groffer2.sh:
+ - version(): Add groffer to the version information; replace the
+ call of `groff --version'.
+
+ ### Configuration Files
+
+ * groffer.sh: Fix the configuration handling by removing all
+ quotes. Arguments are ended by the end of the line.
+
+ * groffer.man: Fix the section on the configuration files.
+
+ ### Options
+
+ * groffer2.sh:
+ - $_OPTS_GROFF_SHORT_NA: Add `-k' as new groff option.
+ - main_pars_args(): Add X options `--ft', `--bordercolor',
+ `--borderwidth'.
+ - usage(): Add `--debug-filenames'. Remove `*-viewer-tty'.
+ Correct first line after call of version().
+ - main_parse_MANOPT(): Fix `-h', `-t', and `-u' as options without
+ argument.
+
+ * groffer.man:
+ - Add documentation to `--fn', `--ft', `--bordercolor',
+ `--borderwidth'.
+ - Remove the `--*-viewer-tty' options. These options are still
+ supported by the groffer program, but they aren't needed any
+ more.
+
+ ### soelim: Allow manpath and compressed files in .so requests, as
+ ### man does.
+
+ * groffer2.sh:
+ - $_FILESPEC_IS_MAN: New variable for storing if a filespec is for
+ searching a man page.
+ - to_tmp(): Rewrite. For existing file as filespec argument, add
+ call of `soelim' with the corresponding `-I dir' before the call
+ of `grog'. For man paged, uncompress and store the files from .so
+ requests; replace the requests with the stored file names.
+ - _do_man_so() of to_tmp(): New function to handle the file of a
+ .so request.
+ - man_get(): For man pages without extension, add special search
+ strategy.
+
+ * README: Add the .so handling to the Compatiblity section.
+
+ ### Print file names debug
+
+ * groffer2.sh:
+ - $_OPT_LOCATION: Replace this variable by
+ $_DEBUG_PRINT_FILENAMES.
+ - register_file(): Move file name printing and call to basename to
+ register_title().
+ - _do_man_so() of to_tmp(): Add file name printing for man pages.
+
+ ### modes
+
+ * groffer2.sh:
+ - $_DEFAULT_MODES: New set of default modes in the sequence 'pdf',
+ 'html', 'ps', 'x', 'dvi', and 'tty'. That is done because the `x'
+ mode viewers `gxditview' and `xditview' are very bad programs.
+ - _make_pdf() of main_display(): If pdf format can not be
+ generated use Postscript mode (ps) instead for display.
+ - $_PDF_DID_NOT_WORK, $_PDF_HAS_PS2PDF, $_PDF_HAS_GS: New
+ variables for pdf mode to avoid several runs.
+ - $_VIEWER_TTY_TTY, $_VIEWER_TTY_X: Add these variables for the
+ viewers in tty mode.
+ - main_display(): Rewrite tty mode by using where_is_prog() to add
+ options to `less' from the command line.
+
+ * groffer.man:
+ - Add this information.
+ - Adjust the viewers in `SEE ALSO'.
+
+ ### Check viewer option for programs running in X Window
+
+ * groffer2.sh:
+ - _check_X_prog() of main_set_mode(): New function for checking if
+ a program of a command line argument is in the list for X for this
+ mode.
+ - _get_first_prog() of main_set_mode(): Use where_is_prog();
+ change the output to the same 3-element list as _check_X_prog().
+ - _obj_set_vars() of main_set_mode(): New function for setting
+ some variables in several modes. Argument is the 3-element list
+ from _check_X_prog() or _get_first_prog().
+ - _process_mode() of main_set_mode(): Remove part with
+ list_has_not_prog(). This is better done by _check_X_prog().
+ - main_set_mode(): Use _check_X_prog() in different modes.
+ Correct several modes. Add reset of $_VIEWER_BACKGROUND at the
+ beginning of the loop of default modes.
+
+ ### Allow man pages with space characters
+
+ * groffer2.sh:
+ - man_is_man(): Fix grep calls.
+ - list_from_file(): New function that reads the lines of a file as
+ list elements.
+ - man_get(): Fix `case' applications by double-quoting all
+ variables. Use list_from_file() instead of setting with `cat'.
+ Add further tests.
+ - _do_man_so() of to_tmp(): Use list_from_file() instead of
+ setting with `cat'.
+
+ ### Allow program names with space
+
+ * groffer2.sh:
+ - is_prog(), is_not_program(): Change to exactly one argument with
+ possible spaces and arguments. Fix all calls.
+ - where_is_prog(): Change to exactly one argument. Change
+ variable prefix to `wip'. Rewrite it to support programs with
+ spaces and arguments. Return a list with 3 elements: the
+ program's directory, the program name, and the given arguments.
+ - main_display(): Correct tty mode.
+
+ ### Further fixes
+
+ * groffer2.sh:
+ - main_setup(): Fix func_check.
+ - clean_up(): Add variable to avoid several prints.
+ - where_is_prog(): Remove possible arguments from program
+ argument.
+ - obj_from_output(): As return value take the return value of the
+ called function.
+ - is_not_empty(): Rename of is_non_emtpy().
+ - $_VIEWER_BACKGROUND: Rename $_VIEWER_TERMINAL and reverse its
+ values.
+ - list_has_prog(), list_has_not_prog(): Remove these functions,
+ they are no longer needed.
+
+ * groffer.man:
+ - Add `--print' in OPTION OVERVIEW.
+ - Correct many entries with the non-breaking `\%' construct.
+
+2006-07-28 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.24
+
+ ### Extent long option abbreviation to abbreviations before each `-'.
+
+ * groffer2.sh:
+ - list_from_cmdline_with_minus(): New function, the same as
+ list_from_cmdline() with multiple abbreviations around `-'.
+ - _search_abbrev(): Subfunction of list_from_cmdline_with_minus().
+ - main_parse_args(): Use list_from_cmdline_with_minus() for
+ getting the double abbreviation, but keep main_parse_MANOPT()
+ to list_from_cmdline() for simple abbreviation of long options.
+ - For the debug test at the beginning, add the double abbreviation
+ functionality.
+
+ * README_SH, groffer.man: Document the multiple set of
+ abbreviations by `-'.
+
+ ### Fix handling of `--apropos*' and `--whatis'
+
+ * groffer2.sh:
+ - apropos_filespec(): Fix handling of `/' and `.' in sed; add `\&'
+ at the beginning of each non-macro groff line in sed.
+ - main_parse_args(): Set $_MAN_OPT to `yes' if --whatis is called.
+ - main_do_fileargs(): Fix dealing with `apropos' for several
+ cases.
+ - apropos_*(), special_*(), whatis_*(): Add two different return
+ values.
+ - $_SPECIAL_SETUP: New variable to test whether apropos_setup() or
+ whatis_header() had been run.
+ - Add language locale to --whatis, the `whatis' program does not
+ support this.
+
+ ### Handle several macro packages
+
+ * groffer2.sh:
+ - $_MACROS: New variable to store the actual macro package.
+ - $_MACRO_PACKAGES: New variable for the full macro packages of
+ groff (man, mdoc, me, mm, mom, ms).
+ - to_tmp(): Add test for different macro packages. Ignore files
+ with a different one.
+ - main_do_fileargs(): Add different macro check before doing man
+ pages.
+
+ ### Rewrite the man page search
+
+ * groffer2.sh:
+ - $_MAN_SEC_CHARS, $_MAN_SEC_LIST: New variables from $_MAN_SEC.
+ Add these to man_setup().
+ - man_get(): New function that finally gets the man page or man
+ pages for a filespec. Avoid double files.
+ - man_is_man(): New function that checks whether a name goes as
+ man page.
+ - manpath_add_lang_sys(): Fix handling of language addition for
+ short language names.
+ - main_parse_args(): Move handling of `-' to main_do_fileargs().
+ - do_filearg(), man_do_filespec(), man_register_file(),
+ man_search_section(): Remove these functions.
+ - main_do_fileargs(): Rewrite this function together with
+ the removed functions.
+ - list_uniq(): New function to remove the multiple elements from a
+ list.
+
+ ### Version handling.
+
+ * version.sh: New file for $_PROGRAM_VERSION, $_LAST_UPDATE, and
+ $_GROFF_VERSION_PRESET.
+
+ * groffer.sh:
+ - Add running of version.sh with `.'.
+ - Remove $_PROGRAM_VERSION and $_LAST_UPDATE.
+ - Run groffer2.sh with `.' instead of `exec'. This allows to have
+ groffer2.sh without executive access permission.
+ - Determine $_BEFORE_MAKE by @VERSION@, use this variable on more
+ places.
+
+ * groffer2.sh:
+ - Remove executive access permission.
+ - version(): Write a version information without calling groff.
+
+ * Makefile.sub:
+ - Add version.sh. Use $(INSTALL_DATA) instead of
+ $(INSTALL_SCRIPT) for version.sh and groffer2.sh.
+ - Add $(DESTDIR) to some elements of `sed' call in `groffer:'.
+
+ ### viewers for different modes
+
+ * groffer2.sh:
+ - $_VIEWER_HTML_X: Add `epiphany' as browser.
+ - $_VIEWER_PDF_X: Add `kpdf' and `evince' as pdf viewer for X.
+ Make `kpdf', `acroread', `evince', and `xpdf' the first automatic
+ pdf viewers for X because they support searching. Add `gpdf'.
+ - $_VIEWER_PS_X: Add `kpdf' and `evince' as ps viewer for X; make
+ `kpdf' the first automatic ps viewer for X because it supports
+ searching even for Postscript.
+
+ ### pdf mode
+
+ * groffer2.sh:
+ - _make_pdf() of main_display(): add `ps2pdf' as secondary
+ transformer.
+ - main_set_resources(): Allow setting of resolution for `xpdf'
+ only if option -z is not set for `xpdf'.
+
+ ### Revise $_VIEWER_*
+
+ * groffer2.sh:
+ - $_VIEWER_<mode>_TTY: Add this variable to each mode even if it
+ is only empty.
+ - $_VIEWER_<mode>_X: Rename $_VIEWER_<mode> to this for each
+ mode.
+
+ ### Other fixes
+
+ * groffer2.sh:
+ - is_empty_file(): New function.
+ - obj_from_output(): Quote arguments by building a list.
+ - path_list(): Output path list with unique elements.
+ - where_is_prog(): Rename where_is(). Handle all file names
+ having a slash somewhere instead of only those that start with a
+ slash.
+ - $_REG_TITLE_LIST: Replace $_REGISTERED_TITLE and make it a
+ list.
+ - $_OPT_TITLE: Make it a list with at most 1 element.
+ - Remove double quotes in case patterns.
+ - _func_test(): For the function test at the beginning, add this
+ function for output check with $() construct.
+ - usage(): Add --shell.
+ - $_VIEWER_HTML_X: Add `firefox' and `mosaic'.
+ - list_get(): Remove this unused function.
+ - Fix func_check() calls in all functions.
+
+ * groffer.sh: Adjust groff version to 19.3.
+
+ * README: Add information list of the source files.
+
+2006-02-26 Claudio Fontana <claudio@gnu.org>
+
+ * Makefile.sub: Add DESTDIR to install and uninstall targets
+ to support staged installations.
+
+2005-09-14 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.23
+
+ ### Increase the speed for the search of man pages
+
+ Run `find' on all man directories and ask this with `grep' instead
+ of scanning through many `ls'.
+
+ * groffer2.sh:
+ - $_TMP_MAN: New variable with the name of the file that stores
+ the `find' of the man path.
+ - $_TMP_MANSPEC: New variable with the name of the file that
+ stores the man page file names for each filespec.
+ - man_setup(): Do the `find' of the man path with $_TMP_MAN.
+ - man_do_filespec(): Add creation of $_TMP_MANSPEC.
+ - man_search_section(): Rewrite it to use $_TMP_MANSPEC.
+
+ * TODO: The demand on the increase of speed for man pages is now
+ removed.
+
+ ### Increase speed by enhancement of debug
+
+ * groffer.sh: $_BEFORE_MAKE: New variable that stores whether the
+ @...@ constructs are still available or already transformed by
+ `make'.
+
+ * groffer2.sh:
+ - $_DEBUG_FUNC_CHECK: New debug variable that regulates the check
+ calls at the beginning and end of most functions done by the
+ functions func_<name>(). By default, this is enabled before the
+ run of `make', and disabled after. $_DEBUG_STACKS and
+ $_DEBUG_USER_WITH_STACK enable this variable automatically.
+ - --debug-func: New option for setting $_DEBUG_FUNC_CHECK.
+ - usage(), main_parse_args(): Add information for --debug-func.
+ - func_<name>(): Disable these functions if $_DEBUG_FUNC_CHECK is
+ not `yes'.
+
+ * groffer.man:
+ - Add information on --debug-func.
+ - Move the sections on options for development to the end of
+ option processing.
+
+ ### Fixes of man page search
+
+ - man_search_section(): Repair it such that extensions do not
+ occur in the directory name.
+ - manpath_set_from_path(): Rewrite it. Add `.../MAN/...'
+ subdirectories additionally to `.../man/...'.
+ - manpath_add_lang_sys(): Rewrite it to overwrite _MAN_PATH by
+ systems parameter if any. Then _MAN_PATH is prepended by the
+ language part.
+ - _manpath_add_sys(): New subfunction of manpath_add_lang_sys() to
+ handle the systems part.
+ - man_search_section: Fix it to handle section names that have
+ more than one character (an extension).
+ - $_MAN_PATH: Now stores man path as a list. This is done in
+ man_setup() and manpath_set_from_path(), and used in
+ manpath_add_lang_sys().
+ - $_MAN_SYS: Now stores man systems parameter as a list. This is
+ done in man_setup() and used in manpath_add_lang_sys().
+ - $_MAN_SEC_DONE, $_MAN_SYS_DONE, $_MAN_LANG_DONE: Remove these
+ variables.
+
+ ### Reorder the beginning of groffer2.sh
+
+ * groffer2.sh:
+ - func_<name>(): Move these functions to the functions in
+ alphabetical order.
+ - main_init(): Move "Test for compression" to this function.
+ - Move the "System Test" and function landmark() to the beginning
+ "Test of rudimentary shell functionality". Change landmarks 1 and
+ 2 to new positions.
+
+ ### Fix the mode when not in X
+
+ * groffer2.sh:
+ - main_parse_args(): Accept modes even when not in X, hoping for a
+ program given by option. Add $_OPT_VIEWER_<MODE>_TTY. Remove
+ $_VIEWER_TERMINAL.
+ - main_set_mode(): Add a section to set $_VIEWER_TERMINAL and move
+ the value of $_OPT_VIEWER_<MODE>_TTY to $_OPT_VIEWER_<MODE>. When
+ not in X and no terminal programs are set remove $_OPT_MODE. All
+ unknown programs are treated as terminal programs.
+ - usage(): Comment out options --<mode>-viewer-tty. They exist
+ and are handled by `groffer', but they are no longer documented.
+ - $_OPT_VIEWER_<MODE>_TTY: New variables for option
+ --<mode>-viewer-tty.
+ - $_DEFAULT_MODE, $_VIEWER_<MODE>: Change it from , separation to
+ a list. Rewrite _get_first_prog() of main_set_mode() to get
+ around with this.
+
+ * groffer.man: Remove information on --<mode>-viewer-tty.
+
+ ### Debug
+
+ * groffer2.sh:
+ - $_DEBUG_PRINT_FILENAMES: New variable for printing the file
+ names that are displayed by `groffer'.
+ - --debug-filenames: The corresponding option. It is used in
+ man_register_file(), register_file(), and main_parse_args().
+
+ * groffer.man: Add information on --debug-filenames.
+
+ ### Other changements
+
+ * groffer2.sh:
+ - is_greater_than(): New function. Use it where suitable.
+ - lists_combine(): New function to combine several lists to a
+ single list.
+ - list_from_split(): Rewrite it to output a list with quoted
+ elements.
+ - list_has_prog(), list_has_not_prog(): New functions to check the
+ list on an element that starts with a given word.
+ - obj_from_output(): Use this function at many places instead of
+ `var="$(...)"'; this makes the usage of exit_test() unnecessary.
+ - path_clean(): Fix assignment.
+ - path_list(): Rename path_split().
+ - tmp_create(): Add check of temporary file.
+ - usage(): Fix.
+
+ * README_SH:
+ - Fix section `Error handling'.
+ - Add section `Speed'.
+
+2005-08-22 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.22
+
+ ### `--whatis'
+
+ Produce a `groff' output and allow wild cards on filespec
+ parameters for `--whatis'.
+
+ * groffer2.sh:
+ - $_FILESPEC_ARG: New variable for storing the actual filespec
+ parameter.
+ - main_do_fileargs(): Set $_FILESPEC_ARG and add
+ what_is_filespec().
+ - main_parse_args(): Add --all to --whatis.
+ - to_tmp_line(): New function to write the arguments to the
+ temorary cat file.
+ - whatis_filename(): Rename of what_is(). Construct a better
+ printout using $_FILESPEC_ARG. Repair the sed sequneces.
+ - whatis_filespec(): New function to print the filespec once
+ during the `whatis' process.
+ - whatis_header(): New funtion for printing the header of the
+ `whatis' output.
+
+ * groffer.man: Revise the documentation of --whatis.
+
+ ### `--apropos*'
+
+ Produce `groff' for `--apropos*'. Allow `--sections' for
+ `--apropos', ignore it with `--apropos-*'.
+
+ * groffer2.sh:
+ - --apropos*: Make these options without argument.
+ - $_APROPOS_PROG: New variable for the program that is is used for
+ `apropos'.
+ - $_APROPOS_SECTIONS: New variable to determine the sections that
+ are filtered out of `apropos' output depending on `--apropos-*'.
+ - apropos_filespec(): Handling of apropos at the filespec level.
+ - apropos_run(): Remove it.
+ - apropos_setup(): New function.
+ - main_set_mode(): Remove handling of $_OPT_APROPOS*.
+
+ * groffer.man:
+ - Revise the documentation of `--apropos*'.
+ - Split section 'options for GNU man' into two sections `options
+ for man pages' and `long options taken over from GNU man'.
+ - Move `--apropos*', `--whatis', `--man', and `--no-man' to
+ section `options for man pages'.
+
+ ### special display (apropos and whatis)
+
+ * groffer2.sh:
+ - special_setup(): New function that chooses the setup between
+ apropos and whatis.
+ - special_filespec(): New function that does the output at the
+ filespec level for apropos or whatis.
+
+ ### handle `--sections' for man page searching
+
+ * groffer2.sh:
+ - man_do_filespec(): Use $_OPT_SECTIONS of --sections instead of
+ $_MAN_AUTO_SEC if non-empty. If a section was given on the
+ filespec parameter $_OPT_SECTIONS is ignored. This differs from
+ `man' which always uses the restricted sections of --sections.
+ This function works for both normal man page search and whatis.
+ - apropos_filespec(): Use --sections for --apropos, but not for
+ --apropos-* because these provide already their own sections.
+
+ ### wildcards in filespec arguments
+
+ * groffer2.sh: Wildcards are now accepted. In `--apropos*' and
+ `--whatis' they are interpreted as wildcard search elements; but
+ in normal display they are only handled as their own character.
+
+ ### development; new option
+
+ * groffer2.sh:
+ - --print: New option that prints just its argument for parameter
+ check.
+ - usage(): Add new option.
+ - $_OPT_DO_NOTHING: New variable for do_nothing(). Handle it at
+ the end of main_parse_Args().
+
+ * groffer.man: Add information on --print.
+
+ ### safe exit
+
+ * groffer2.sh:
+ - error(): Always exit with $_ERROR.
+ - exit_test(): New function to exit when first exit was hidden by
+ (). Call it after each $().
+
+ ### automatic shell determination
+
+ * groffer.sh:
+ - If no option --shell is given perform a test of several shells
+ to automatically start some shell for groffer2.sh. `ksh' is used
+ first because it can be safely terminated by Ctrl-C.
+ - This can be cancelled by providing --shell=''.
+ - Add test on `sed' program.
+
+ * groffer.man: Revise information on --shell.
+
+ ### trap
+
+ * groffer2.sh:
+ - trap_set(): Remove argument. Instead of $_ALL_EXIT use only
+ signal 0.
+ - trap_unset(): Rename trap_clean(). Instead of $_ALL_EXIT use
+ only signal 0.
+ - $_ALL_EXIT: Remove this variable.
+ - Replace all direct `trap' calls by trap_set().
+
+ * README_SH: New section `Bugs' on `trap'..
+
+ ### user errors, error output without function stack
+
+ * groffer2.sh:
+ - error_user(): New function for user errors.
+ - error(): Remove call of clean_up() because the trap will do it
+ with the exit. Remove the `kill' commands. Create a temporary
+ file `.error' that can be tested by exit_test() for a better exit
+ test (especially for shell `ksh').
+ - $_DEBUG_USER_WITH_STACK: New variable to enable function stack
+ output in error_user().
+ - list_from_cmdline(), list_single_from_abbrev(), main_set_mode():
+ Use error_user().
+
+ ### test modes on X and tty
+
+ * groffer2,sh:
+ - is_X(), is_not_X(): New functions for checking on X Window.
+ - $_VIEWER_HTML_TTY, $_VIEWER_HTML_X: New variables that split
+ $_VIEWER_HTML. Add `galeon'.
+ - main_parse_args(): Allow mode change for graphical modes only
+ when in X Window.
+ - _do_display() of main_display(): Create a special run for
+ viewers that run on the terminal; `lynx' is the only one so far.
+
+ ### add $GROFFER_MODE to command line
+
+ * groffer.sh:
+ - After the handling of the configuration files integrate
+ $GROFFER_OPT to the command line.
+ - This makes a `set' in the shell determination unnecessary.
+
+ * groffer2.sh:
+ - The debug test gets simpler because quotes are vanished without
+ $GROFFER_OPT.
+ - main_parse_MANOPT(): Prepend $mpm_list to the command line.
+ - main_parse_args(): `set' is unnecessary.
+
+ ### debug; new options
+
+ * groffer2.sh:
+ - --debug-all, --debug-lm, --debug-params, --debug-shell,
+ --debug-stacks, --debug-tmpdir, --debug-user: New options.
+ - --debug: Enable all debug variables except $_DEBUG_STACKS and
+ $_DEBUG_LM. By the new options the smallest abbreviation is now
+ `--debug'.
+ - $_DEBUG_STACKS: Rename $_DEBUG.
+ - $_DEBUG_PRINT_TMPDIR: New debug variable for printing the name
+ of the temporary directory in main_init().
+ - $_OPT_DEBUG: Remove this variable because debug is handled at
+ the early part of the script.
+ - clean_up(): Enlarge $_DEBUG_KEEP_FILES to not deleting the
+ temporary directory.
+ - usage(): Move all development options on a section of its own.
+ - Move the test of rudimentary shell functionality at the
+ beginning of the script. Add test on `sed'.
+ - Follow this by the debug section. The determination of all
+ --debug* options can be done without a function.
+
+ * groffer.man: Revise information on --debug and add new options.
+
+ ### variables
+
+ * groffer.sh:
+ - $_ERROR: Move the definition of this variable here.
+ - $_GROFF_VERSION: New variable, is set over @...@ construct.
+ - $_OUTPUT_FILE_NAME: Move this variable to groffer2.sh.
+
+ * groffer2.sh:
+ - $_MAN_AUTO_SEC_LIST: Rename $_MAN_AUTO_SEC because it represents
+ a list.
+ - $_MAN_AUTO_SEC_CHARS: New read-only variable for storing
+ $_MAN_AUTO_SEC_LIST in [] construct. Use it in man_do_filespec()
+ and whatis_filename().
+ - $_SPACE_CASE: New read-only variable with [] on space characters
+ with \ for `case' patterns. Use it in several functions.
+ - $_SPACE_SED: New read-only variable with [] on space characters
+ for `sed'. Use it in several functions.
+
+ ### options and display
+
+ * groffer2.sh:
+ - list_from_cmdline(): Add test whether the same abbreviation is
+ part of long options with and without arguments. Give handling of
+ `=' a `case' pattern of its own.
+ - main_display(): Remove unnecessary calls of `clean_up' in order
+ to use `mozilla' without problems. In _do_display(): Fix -X by
+ providing a different process when $_DISPLAY_PROG is empty.
+ - main_set_mode(): Accept options for viewers as is, without check
+ for program. Add test whether no program is given for a mode.
+ This avoids unnecessary empty $_DISPLAY_PROG in main_display().
+
+ ### viewer programs that run on the terminal (tty); new options
+
+ * groffer2.sh:
+ - $_VIEWER_TERMINAL: New variable that stores whether a viewer was
+ supposed to run on tty.
+ - --dvi-viewer-tty, --html-viewer-tty, --pdf-viewer-tty,
+ --ps-viewer-tty, --tty-viewer-tty, --X-viewer-tty, --x-viewer-tty,
+ --www-viewer-tty: New options for viewers that run on a terminal.
+ - main_parse_args(), _do_display() of main_display(): Use the new
+ options and the new variable.
+ - usage(): Add the new options.
+
+ * groffer.man: Add information on options --*-viewer-tty.
+
+ ### other fixes
+
+ * groffer2.sh:
+ - _do_display() of main_display(): Bear errors of `groff' run.
+ - is_not_file: Fix to have exactly one argument.
+ - is_not_prog(): Handle no arguments.
+ - list_has_not(): Fix.
+ - main_do_fileargs(): Remove $mdfa_exitcode.
+ - register_title(): Limit title to 4 elements.
+ - version(): Print the version information to standard output just
+ like `groff' does.
+ - --no-special: New option to disable former calls of `--all',
+ `--apropos*', and `whatis.
+ - --title: Make it an option with argument.
+
+2005-08-07 Keith Marshall <keith.d.marshall@ntlworld.com>
+
+ * contrib/groffer/Makefile.sub (install): Reference groffer2.sh
+ as $(srcdir)/groffer2.sh, so it will install when building in a
+ different directory from the source.
+
+2005-08-02 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * 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 that it 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.
+
+2005-07-30 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.20
+
+ ### Split groffer.sh into two files groffer.sh and groffer2.sh.
+
+ * groffer.sh:
+ - Remove the second part of this script. It is now in
+ groffer2.sh.
+ - $_GROFFER2_SH: New variable to point to the installed position
+ of `groffer2.sh'. This position is presented using @libdir@.
+
+ * groffer2.sh: New script containing the second part of
+ groffer.sh. This script will be installed in the groffer library
+ directory @libdir@/groff/groffer, this might be
+ /usr/local/lib/groff/groffer/groffer2.sh for example.
+
+ * Makefile.sub:
+ - `groffer': Add replacement of @libdir@.
+ - `install_data': Add the installation of the groffer library
+ directory and groffer2.sh.
+ - `uninstall_sub': Delete the installed `groffer2.sh' and the
+ groffer library directory.
+
+ * README_SH:
+ - Remove the function list.
+ - Add argument options to the list of used commands.
+ - Documentation of the splitting of the script.
+ - Document the possible abbreviation of options.
+
+2005-07-07 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.19
+
+ * groffer.sh: extensions
+ - `mode x': Mode for the equivalent options `--x', `--mode x',
+ `--X' `--mode X', and the default mode. The default assumes a
+ resolution of 75 dpi. The default device for a resolution of 75
+ dpi is `X75-12', the default device for a resolution of 100 dpi is
+ `X100'. The default geometry for the resolution of 100 dpi is set
+ to the width 800 dpi.
+ - `mode X': New mode for option -X only.
+ - `-V': Extent the `groff' output of -V by `groffer' specific
+ information (in main_display()).
+ - register_file(): Replace title `-' by `stdin'.
+ - $_DEBUG_KEEP_FILES: If set to `yes' the files in the temporary
+ directory are not deleted before the end trap.
+
+ * groffer.sh: get `zsh' to work as well
+ - tmp_create(): Use `: >file' for generating an empty file.
+ - rmdir: Replace `rmdir' by `rm -f -r'.
+ - eval: Add `eval' to many commands with variable arguments.
+
+ * groffer.sh: repair `debug'
+ - Print all debug output to stderr.
+ - $_FUNC_STACK: Built function call stack even when $_DEBUG is not
+ set. Now the arguments are not added.
+ - $_DEBUG: If set to `yes' print 3 call stack events: the function
+ that is added with its arguments is printed with `+++ '
+ (func_push()); the call stack after the addition is printed with
+ `>>> ' (func_push()); the call stack after the removing is printed
+ with `<<< ' (func_pop()).
+ - error(): Always print the function call stack on errors.
+
+ * groffer.sh: Corrections
+ - $_groffer_run: Rename to $_GROFFER_RUN.
+ - $unset: Rename to $_UNSET.
+ - Repair test of `unset'.
+ - Repair test for `--shell'. The script is now rerun under the
+ shell specified in the option argument. This can increase the
+ speed.
+
+ * README_SH: `zsh' now works.
+
+ * groffer.man:
+ - Reformulate the information for the `groffer' specific details
+ of option `-V'.
+ - Add information on the debug process.
+ - Add information on the default devices in `x mode'.
+ - Minor corrections.
+
+2005-07-01 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.18
+
+ * groffer.sh: further shell compatibility
+ - `echo': Remove options and possible options of `echo' by
+ preceding the argument with a character `x' that is removed by
+ `sed' or replace `echo' by `cat <<EOF'. `echo -n' seems to be not
+ portable, so it is omitted.
+ - `for': Remove `;' from within `for' (because of ksh).
+ - `ls': Old UNIX systems echoed the error message to standard
+ output. So handle the output with `sed'. If the output contains
+ `not found' map it to an empty string.
+ - `true': Replace `true' by command `:'. Remove test of `true'
+ (because `ash' refuses the redefinition of builtins even in an
+ unreachable `if' branch).
+ - `false': Remove test of `false'; it isn't used any more.
+ - `test': As `test -e' does not exist in Solaris 2.5 replace it by
+ `test -f || test -d'.
+ - `unset': `unset' is said to be not portable. As `ash' protests
+ against the definition of the function `unset()' in the test of
+ `unset' replace the test by defining `$unset' to `unset' if it
+ exists and to `:' otherwise. Use `eval $unset' instead of the
+ direct command `unset'.
+ - _get_opt_shell(): Replace `for' loop with `shift' by `while'.
+ - man_search_section(): Replace `for f in filename*' by a test on
+ the existence of `filename*'.
+ - `zsh' interprets `$...' as `"$..."'. So `eval' must be called;
+ This cannot be used in `for i in $f', so it must be rewritten as
+ `for i in $(eval set x $f; shift; echo "$@")'
+
+ * groffer.sh:
+ - `--X', `--x', `--mode=X', `--mode=x': Make these options
+ equivalent to choosing an X device by setting `-TX75-12'. `-X' is
+ still equivalent to `groff -X'.
+ - main_init(): Choose the name of the temporary file by adding a
+ number using `expr' if it exists and cannot be removed.
+ - main_parse_args():Repair some options by replacing `$mpa_mode'
+ by `$_OPT_MODE'.
+ - catz(): Rename it to cat_z() to avoid problem with existing
+ programs.
+ - where(): Rename to where_is().
+ - $_CONFFILES: Rename to $_CONF_FILES.
+ - $_HAS_BZIP: export and preset it.
+
+ * groffer.man:
+ - Document the `X mode' changes.
+ - Add `@g@' to `troff'.
+
+ * README, README_SH, TODO:
+ - Add date line `Latest update:'.
+ - Add `...' quoting to essential terms.
+ - Add Emacs mode at the end.
+
+ * README_SH:
+ - Add documentation on the above compatibility changes.
+ - Add documentation on used commands.
+ - Mention the tested shells.
+
+ * Makefile.sub:
+ Readd `@g@'.
+
+2005-06-23 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.17
+
+ * groffer.sh: get rid of `local' in functions (it is not POSIX)
+ - Replace local variables by variable names with a special prefix
+ that is an abbreviation of the corresponding function name (quasi-
+ local variables).
+ - Unset the quasi-local function variables before returning.
+ - _t_e_s_t_f_u_n_c_(): Remove tests for local and global
+ variables.
+ - Add quasi-local variables for saving the content of
+ single-character variables.
+ - Remove some unused local and global variables.
+ - Several variables were forgotten to make local. They are now
+ made quasi-local.
+
+ * groffer.sh: other corrections
+ - $return_var: New function (after `eval') for an arbitrary
+ return value.
+ - obj*(): Add return modes.
+ - Rewrite tests for `true' and `false'.
+ - Add function names to error calls where it was forgotten.
+ - `for': Replace `for x in "$@"' by `for x'.
+ - `set': Replace `set -- ...' by `set x ...; shift'.
+ - `sed': Replace `\|.*|s|...|...|' by `s|...|...|'.
+
+ * README_SH:
+ - Add information on the removing of `local'.
+ - New section for non-POSIX shell restrictions.
+
+2005-06-20 Keith Marshall
+
+ * README-SH: Information of `Portable shells' in info autoconf.
+
+2005-06-19 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.16
+
+ * groffer.sh: Place each `then', `else', and `do' on a line of its
+ own because some shells do not support the mixture mode.
+
+ * groffer.man: Add section `BUGS'.
+
+ * README_SH:
+ - Add compatibility information.
+ - Correct documentation for function arguments.
+
+2005-06-18 Keith Marshall
+
+ * groffer.sh: $_NULL_DEV: Replace /dev/null by $_NULL_DEV which is
+ either /dev/null or NUL if /dev/null does not exist.
+
+2005-06-17 Zvezdan Petkovic
+
+ * Makefile.sub: $(RM): Define it to `rm -f' because not all `make'
+ programs have it predefined.
+
+2005-06-16 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.15
+
+ * Makefile.sub:
+ - Use `$(RM)'.
+ - Use `sed -f $(SH_DEPS_SED_SCRIPT)'.
+
+2005-05-20 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.14
+
+ * groffer.man: correction of non-hyphenation
+
+2005-05-17 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.13
+
+ * groffer.sh:
+ - $_VIEWER_DVI: Add `kdvi'.
+ - $_VIEWER_PDF: Add `kghostview', `ggv', and `kpdf'.
+ - $_VIEWER_PS: Add `kghostview' and `ggv'.
+ - $_modefile: For the output file name, add extension .ps for ps
+ mode and .dvi for dvi mode. This exists already for the html and
+ pdf modes.
+ - Update some parts of the documentation.
+
+ * README, README_SH:
+ - Move some parts on usage from README_SH to README.
+ - Reformulate several parts of both files.
+
+ * groffer.man: update
+
+2005-05-14 Keith Marshall
+
+ * groffer.sh:
+ - first line: Add space to `#! /bin/sh'.
+
+2004-11-15 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.12
+
+ * groffer.sh:
+ - main_init(): Rewriting of the creation of the temporary
+ directory to ensure that it cannot be made writable apart from the
+ user. If the directory already exists and cannot be removed then
+ append `X' to the directory name.
+ - is_non_empty_file(): fix it to use POSIX `test -s'.
+ - is_existing(): new function.
+ - POSIX `rm -f -r': use this in `clean_up()' and `main_init()'.
+ - `--macro-file': remove this unused long option.
+ - `-V', `--source', `--device': move these from groff options
+ to groffer options.
+ - `$_TMP_DIR_SUB': remove this unused variable.
+
+2004-06-15 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.11
+
+ * groffer.sh:
+ - To the search of the `--apropos-*' options, add man pages with a
+ subsection in their apropos output.
+
+2004-06-02 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.10
+
+ * groffer.sh:
+ - Remove automatic call of `ash' due to inconsistencies of
+ different ash versions.
+ - In the first run, add recognition of `--shell' lines in the
+ groffer configuration files. To configure an external shell in
+ a configuration file, a line starting with `--shell' is
+ necessary.
+ - list_from_cmdline(): Simplify the arguments.
+ - As $POSIXLY_CORRECT is internally set to `y' by some GNU
+ `/bin/sh' shells the following 2 fixes are necessary:
+ -- `sed': Empty patterns are not allowed with $POSIXLY_CORRECT
+ set; so move the address information before the `s' command to the
+ pattern after the command, and write `.*' to the address field.
+ -- list_from_cmdline(): Remove the strange $POSIXLY_CORRECT style
+ to finish the option processing after the first non-option
+ argument; use the flexible GNU mixing of options and file names
+ instead.
+
+ * groffer.man:
+ - Remove any hints on `ash'.
+ - Add minus line behavior of `--shell' for configuration and add a
+ corresponding example.
+ - Update the information on $POSIXLY_CORRECT.
+
+2004-05-29 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.9
+
+ * groffer.sh:
+ Fix first run section to allow the starting shell to go on if
+ `ash' is not available.
+
+ * groffer.man:
+ Remove unnecessary information on groffer version.
+
+2004-05-12 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.8
+
+ * groffer.sh:
+ Fix problems of `test' by adding subs to arguments.
+
+ * groffer.man:
+ Write the file license as macros that are called in sections
+ AUTHOR and COPYING.
+
+ * .cvsignore:
+ Restore this file.
+
+2004-04-30 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.7
+
+ * groffer.sh:
+ - obj(), obj_data(), obj_from_output(), obj_set(): New object
+ oriented functions to minimize complicated `eval' commands.
+ - list_*(): Corrections.
+ - usage(): Streamlining.
+
+ * groffer.man, README_SH:
+ Corrections.
+
+2004-04-27 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.6
+
+ This version replaces the license of all files except ChangeLog of
+ the groffer source to the GNU General Public License (GPL) of the
+ version described in files COPYING and LICENSE in the groff top
+ source directory.
+
+ * groffer.man:
+ Changement from the GNU Free Documentation License (FDL) to
+ the GNU General Public License (GPL).
+
+ * README, README_SH, TODO:
+ Add license GNU General Public License (GPL).
+
+ * Makefile.sub, groffer.sh:
+ Keep the GNU General Public License (GPL), but refer to the
+ COPYING and LICENSE files.
+
+ * ChangeLog: Add a license in the style of Emacs ChangeLog file,
+ which is weaker than the GPL, but has its flavor.
+
+2004-04-24 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.5
+
+ This version is a rewrite of groffer in many parts, but it is kept
+ in the old single script style.
+
+ Overview of new options:
+ --text, --mode text, --tty-viewer,
+ --X, --mode X, --X-viewer, --html, --mode html, --html-view,
+ --apropos-data, --apropos-devel, --apropos-progs
+
+ New file:
+ <groffer-source>/README_SH
+
+
+ ******* Extension of the `apropos' handling
+
+ The output of man's `apropos' has grown immensely meanwhile, so it
+ has become inefficient. Now `groffer' provides new options to get
+ the a selected information from this output.
+
+ * groffer.sh:
+ `--apropos-progs': new option for displaying only information
+ on programs (man page sections 1, 6, and 8)
+ `--apropos-data': new option for displaying only information
+ on documented data (man page sections 4, 5 and 7)
+ `--apropos-devel': new option for displaying only information
+ on development documentation (man page sections 2, 3 and 9)
+ `--apropos': still displays just the output of man's `apropos'
+ program.
+ - Specify all of these options as a single argument option; that
+ makes groffer's `--apropos' option slightly different because
+ the corresponding `man' option does not have arguments, but takes
+ all file arguments as apropos targets. So just ignore the `man'
+ options `-k' and `--apropos' in the parsing of $MANOPT.
+ - Exit after processing one `apropos' call.
+
+
+ ******* Quasi object oriented function arguments
+
+ An object is the name of an environment variable. The value of
+ this variable contains the object's content. This allows to
+ specify function arguments and the calling syntax in a simpler way
+ by letting the first argument be a variable name, usable for input
+ or output.
+
+ Such an object type is `list', the string value of a shell
+ variable arranged in space-separated single-quoted elements, such
+ as $GROFFER_OPT internally.
+
+ * groffer.sh:
+ - Remove list_from_args(), list_element_from_arg()
+ list_from_lists(), list_length(), and list_prepend().
+ They can be replaced by list_append().
+ - All list*() functions are rearranged such that the first
+ argument is a list object, the name of a variable.
+
+
+ ******* Simplification of configuration files
+
+ The new syntax of the groffer configuration files is
+ - all lines starting with a `-' character are interpreted as
+ command line options for all calls of groffer; they are collected
+ and prepended to the actual value of $GROFFER_OPT; optional
+ spaces at the beginning.of the line are omitted.
+ - all other lines are interpreted as a shell command and executed
+ in the current shell of the groffer call.
+
+ Precedence:
+ - The command line and the external environment variables such as
+ $GROFFER_OPT of the groffer call have the highest precedence.
+ - This is overwritten by the configuration file in the user's home
+ directory.
+ - The system configuration file in /etc has the lowest
+ precedence.
+
+ * groffer.sh:
+ The configuration files are now called after the determination of
+ the temporary files in main_init().
+
+
+ ******* Script file name
+
+ The file name of the script is needed for the several calls during
+ the search for the optimal shell.
+
+ * groffer.sh:
+ - $_GROFFER_SH: replace $_this by $_GROFFER_SH and use $0 for
+ determining the file name of the script for the following calls,
+ instead of the cumbersome @BINDIR@ construction.
+ - Force the script to be called as an executable file, so $0 must
+ contain the program name.
+
+
+ ******* Improved temporary file names
+
+ Just like groff, groffer mixes all file parameters into a single
+ output file. Its name is now constructed as a comma-separated
+ list built from the file name arguments without a leading comma.
+ So a leading comma can be used for the internal temporary file
+ names.
+
+ * groffer.sh:
+ - $_OUTPUT_FILE_NAME: new global variable as basis for the output
+ file name; it is set in main_set_resources().
+ - tmp_create(): use `,name' for temporary files different from
+ output file because the output file name does not start with a
+ comma. `$$' is not needed anymore.
+ - main_display(): simplification of $_modefile in _do_display()
+ and single display modes.
+ - Add extension `.html' to output file name in html mode.
+ - base_name(): correction for strange positions of `/'.
+
+
+ ******* Mode fixes
+
+ * groffer.sh:
+ - Set the main default mode to `x' with groff's X Window viewer
+ `gxditview'.
+ - Allow 'x' and 'X' in `--mode' for the X Window mode; the same
+ for `--x' and `X', `--x-viewer' and `--X-viewer'.
+ - Make groff's `-X' equivalent to `mode X'.
+ - Fix `--auto', `--mode auto', and `--default-modes'.
+ - `html' mode: new mode equivalent to `www', add `konqueror' and
+ `lynx' as viewers.
+ - `pdf' mode: fix zoom options for pdf-viewer `xpdf' in
+ main_set_resources(); in main_display() fix the display structure.
+ - Set default X Window resolution to 75dpi. This is not optimal,
+ but with a higher value the options and resources for some viewers
+ must be optimized.
+ `--text' and `--mode text': new option for text output without a
+ pager.
+ - `--tty-viewer': new option equivalent to `--pager'.
+ - Correct the pagers for `tty' mode.
+ - Fix `groff' mode in main_set_resources() and main_display().
+ - Harmonize `--mode arg' with the equivalent options `--arg'.
+
+
+ ******* Fixes for command line options
+
+ * groffer.sh:
+ - list_from_cmdline(): fix the parsing of options with arguments.
+ - Rename $_OPT_TTY_DEVICE to $_OPT_TEXT_DEVICE.
+ - $_OPTS_X_*: new variables for the inhereted X Window variables.
+ - Improve the distribution of the command line options into
+ $_OPTS_GROFFER_*, $_OPTS_GROFF_*, $_OPTS_X_*, and $_OPTS_MAN_*.
+ - $_OPTS_MANOPT_*: new variables for the parsing of $MANOPT.
+ - Correct $_OPTS_CMDLINE_*.
+ - Remove some unused $_OPTS_*.
+ - `--iconic': new option from `-iconic' of the X Window toolkit.
+ - Correct `--rv' to an option without argument.
+ - Minor fixes of other X Window toolkit options.
+
+
+ ******* Other fixes
+
+ * groffer.sh:
+ - is_prog(): allow 0 arguments.
+ - is_not_writable(): new function.
+ - is_*(): fix trailing return codes.
+ - Replace most `test' calls by is_*() functions.
+ - man_setup(): due to bugs in `manpath', prefer
+ manpath_set_from_path() for the determination of the man page path.
+ - man_search_section(): correction of some `for' loops.
+ - Remove export of external non-groffer variables.
+
+
+ ******* Documentation
+
+ * groffer.man:
+ - Reorder the option details according to the option origin as
+ groffer, groff, X, and man options.
+ - Add the programming changes information mentioned above.
+ - Support man pages with a dot in their name
+
+ * README_SH: new file
+ Move large parts of the documentation in `groffer.sh' into this
+ file.
+
+ * groffer.sh: usage():
+ - Change the output for `--help' to standard output.
+ - Restructure the information for this help output.
+
+
+ ******* Removement of the author's email address
+
+ Because of the extreme spam attacks, the author removed all
+ occurencies of his email address in every file of the groffer
+ source.
+
+2003-01-22 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.4
+
+ * groffer.sh: corrections for some restrictive shells
+ - Possible exit codes in actual `ash' are between 0 and 63. To
+ handle even deeper restrictions, use 7 as maximal code instead
+ of 255 as replacement for error -1.
+ - Remove variables $_BAD2 and $_BAD3.
+ - Replace `trap' argument `EXIT' by 0 and write new fuctions
+ `trap_clean' and `trap_set' to handle the restrictions of `trap'
+ for some shells.
+ - Correct wrong $MANPATH to $_MAN_PATH in function
+ `man_do_filespec'.
+ - Test existence of directory before deleting it in the
+ `clean_up' definitions.
+ - Correct help output in `usage' (called by `--help').
+
+ * TODO:
+ Remove mention of `shoop' and `apropos'.
+
+2002-10-21 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.3
+
+ * groffer.sh: new temporary subdirectory
+ - Generate temporary subdirectory for storing temporary files
+ with better names in future groffer versions (name:
+ "groffer$$" in usual temporary directory).
+ - Use `umask 000' for temporary files to allow cleaning up
+ for everyone after a system break.
+ - Change both clean_up() functions (for normal shell and
+ for main_display() subshell) to handle the new subdirectory.
+ - clean_up_secondary() and $_TMP_PREFIX are unnecessary now, so
+ they were removed.
+
+ * Makefile.sub: `sed' commands for "groffer:"
+ - Remove "@g@" entry (not used in "groffer.sh").
+ - Add global replace for "@BINDIR@" and "@VERSION@" for future
+ usage.
+
+ * TODO: think about...
+ - writing part of groffer in C/C++.
+ - handling several files with different macro packages.
+
+2002-10-17 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * fixes of groffer 0.9.2
+
+ * groffer.sh:
+ Terminate main_parse_MANOPT() if $MANOPT is empty or consists
+ of space characters only.
+
+ * groffer.man: some fixes in "GROFFER OPTIONS"
+ - New macro ".Header_CB" for CB font in .TP headers; used for
+ definition of variables in option --mode.
+ - Fix some option references to refer to long options.
+
+ * README:
+ New file for general information on the groffer source; it is
+ not installed.
+
+2002-10-14 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * Makefile.sub:
+ add replacement "@BINDIR@" to "$(bindir)" for "groffer:"
+
+ * groffer.sh:
+ Define $_this as "@BINDIR@/${_PROGRAM_NAME}" to save the right
+ installation position of groffer for the special shell calling.
+
+ * groffer.man:
+ Remove double definition of filespec parameters.
+
+2002-10-13 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.2
+
+ * groffer.sh: fixes
+ - Fix some 'sed' functions: two in func_stack_dump(), one in
+ base_name(), add 'sed' command in list_from_cmdline().
+ - Finish main_parse_MANOPT() if $MANOPT is empty.
+ - Sort $_OPTS_GROFF_SHORT_NA like groff short options (but
+ unchanged).
+ - Fix some comments.
+
+ * groffer.man: make it more readable (but no additions)
+ - A shortened section "SYNOPSIS" is followed by a simplified
+ section "DESCRIPTION".
+ - The options from "SYNOPSIS" go to new section "OPTION
+ OVERVIEW" with all groffer options in a single subsection.
+ - The details of all groffer options are described in section
+ "GROFFER OPTIONS".
+ - New macro for file names ".File_name".
+ - "Option Parsing" is moved to section "COMPATIBILITY".
+ - Fix some "EXAMPLES".
+
+2002-09-30 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * release of groffer 0.9.1
+
+ * TODO: remove done entries
+ - Remove request for different shells.
+ - Remove the 'sed' complaints.
+
+2002-07-15 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * 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 <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * 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 <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * 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 <groff-bernd.warken-72@web.de>
+
+ * groffer.sh:
+ Fix `source' mode.
+
+ * groffer.man:
+ Fix some indentations.
+
+2002-06-23 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * 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 <wl@gnu.org>
+
+ * groffer.sh:
+ Implement man option `--ascii' by `-mtty-char'.
+
+
+2002-05-31 Werner LEMBERG <wl@gnu.org>
+
+ * groffer.man (@.Shell_cmd_width):
+ Increase to 4m (we use `sh#' as the prompt).
+
+
+2002-05-31 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * 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 <wl@gnu.org>
+
+ * groffer.man:
+ - remove some wrong `\:'.
+ - rename macro names that start with a `[' (clashes with refer).
+ - fix TP_header.
+
+
+2002-05-28 Bernd Warken <groff-bernd.warken-72@web.de>
+ ________________________________________________________________
+ * 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 <groff-bernd.warken-72@web.de>
+
+ * 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 <groff-bernd.warken-72@web.de>
+
+ * 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 <wl@gnu.org>
+
+ * 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 <groff-bernd.warken-72@web.de>
+
+ * 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 <groff-bernd.warken-72@web.de>
+
+ * Stand-alone package for groffer 0.2 (alpha) created
+ Files: groffer, groffer.man, Makefile, TODO, ChangeLog
+
+2001-12-02 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ * 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 <groff-bernd.warken-72@web.de>
+
+ ***** 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
+
+2001-11-28 Bernd Warken <groff-bernd.warken-72@web.de>
+
+ ________________________________________________________________
+ License
+
+ Copyright (C) 2001,2002,2003,2004,2005,2006
+ Free Software Foundation, Inc.
+ Written by Bernd Warken <groff-bernd.warken-72@web.de>.
+
+ Copying and distribution of this file, with or without
+ modification, are permitted provided the copyright notice and this
+ notice are preserved.
+
+ This file is part of `groffer', which is part of the `groff'
+ project.
+
+
+ Emacs settings
+
+ Local Variables:
+ mode: change-log
+ End: