xref: /netbsd-src/external/gpl2/groff/dist/contrib/groffer/ChangeLog (revision eceb233b9bd0dfebb902ed73b531ae6964fa3f9b)
1	________________________________________________________________
2	* release of groffer 0.9.22
3
42005-22-04  Bernd Warken
5
6	### `--whatis'
7
8	Produce a `groff' output and allow wild cards on filespec
9	parameters for `--whatis'.
10
11	* groffer2.sh:
12	- $_FILESPEC_ARG: New variable for storing the actual filespec
13	parameter.
14	- main_do_fileargs(): Set $_FILESPEC_ARG and add
15	what_is_filespec().
16        - main_parse_args(): Add --all to --whatis.
17	- to_tmp_line(): New function to write the arguments to the
18	temorary cat file.
19	- whatis_filename(): Rename of what_is().  Construct a better
20	printout using $_FILESPEC_ARG.  Repair the sed sequneces.
21	- whatis_filespec(): New function to print the filespec once
22	during the `whatis' process.
23	- whatis_header(): New funtion for printing the header of the
24	`whatis' output.
25
26	* groffer.man: Revise the documentation of --whatis.
27
28	### `--apropos*'
29
30	Produce `groff' for `--apropos*'.  Allow `--sections' for
31	`--apropos', ignore it  with `--apropos-*'.
32
33	* groffer2.sh:
34	- --apropos*: Make these options without argument.
35	- $_APROPOS_PROG: New variable for the program that is is used for
36	`apropos'.
37	- $_APROPOS_SECTIONS: New variable to determine the sections that
38	are filtered out of `apropos' output depending on `--apropos-*'.
39	- apropos_filespec(): Handling of apropos at the filespec level.
40	- apropos_run(): Remove it.
41	- apropos_setup(): New function.
42	- main_set_mode(): Remove handling of $_OPT_APROPOS*.
43
44	* groffer.man:
45	- Revise the documentation of `--apropos*'.
46	- Split section 'options for GNU man' into two sections `options
47	for man pages' and `long options taken over from GNU man'.
48	- Move `--apropos*', `--whatis', `--man', and `--no-man' to
49	section `options for man pages'.
50
51	### special display (apropos and whatis)
52
53	* groffer2.sh:
54	- special_setup(): New function that chooses the setup between
55	apropos and whatis.
56	- special_filespec(): New function that does the output at the
57	filespec level for apropos or whatis.
58
59	### handle `--sections' for man page searching
60
61	* groffer2.sh:
62	- man_do_filespec(): Use $_OPT_SECTIONS of --sections instead of
63	$_MAN_AUTO_SEC if non-empty.  If a section was given on the
64	filespec parameter $_OPT_SECTIONS is ignored.  This differs from
65	`man' which always uses the restricted sections of --sections.
66	This function works for both normal man page search and whatis.
67	- apropos_filespec(): Use --sections for --apropos, but not for
68	--apropos-* because these provide already their own sections.
69
70	### wildcards in filespec arguments
71
72	* groffer2.sh: Wildcards are now accepted.  In `--apropos*' and
73	`--whatis' they are interpreted as wildcard search elements; but
74	in normal display they are only handled as their own character.
75
76	### development; new option
77
78	* groffer2.sh:
79	- --print: New option that prints just its argument for parameter
80	check.
81	- usage(): Add new option.
82	- $_OPT_DO_NOTHING: New variable for do_nothing().  Handle it at
83	the end of main_parse_Args().
84
85	* groffer.man: Add information on --print.
86
87	### safe exit
88
89	* groffer2.sh:
90	- error(): Always exit with $_ERROR.
91	- exit_test(): New function to exit when first exit was hidden by
92	().  Call it after each $().
93
94	### automatic shell determination
95
96	* groffer.sh:
97	- If no option --shell is given perform a test of several shells
98	to automatically start some shell for groffer2.sh.  `ksh' is used
99	first because it can be safely terminated by Ctrl-C.
100	- This can be cancelled by providing --shell=''.
101	- Add test on `sed' program.
102
103	* groffer.man: Revise information on --shell.
104
105	### trap
106
107	* groffer2.sh:
108	- trap_set(): Remove argument.  Instead of $_ALL_EXIT use only
109	signal 0.
110	- trap_unset(): Rename trap_clean().  Instead of $_ALL_EXIT use
111	only signal 0.
112	- $_ALL_EXIT: Remove this variable.
113	- Replace all direct `trap' calls by trap_set().
114
115	* README_SH: New section `Bugs' on `trap'..
116
117	### user errors, error output without function stack
118
119	* groffer2.sh:
120	- error_user(): New function for user errors.
121	- error(): Remove call of clean_up() because the trap will do it
122	with the exit.  Remove the `kill' commands.  Create a temporary
123	file `.error' that can be tested by exit_test() for a better exit
124	test (especially for shell `ksh').
125	- $_DEBUG_USER_WITH_STACK: New variable to enable function stack
126	output in error_user().
127	- list_from_cmdline(), list_single_from_abbrev(), main_set_mode():
128	Use error_user().
129
130	### test modes on X and tty
131
132	* groffer2,sh:
133	- is_X(), is_not_X(): New functions for checking on X Window.
134	- $_VIEWER_HTML_TTY, $_VIEWER_HTML_X: New variables that split
135	$_VIEWER_HTML.  Add `galeon'.
136	- main_parse_args(): Allow mode change for graphical modes only
137	when in X Window.
138	- _do_display() of main_display(): Create a special run for
139	viewers that run on the terminal; `lynx' is the only one so far.
140
141	### add $GROFFER_MODE to command line
142
143	* groffer.sh:
144	- After the handling of the configuration files integrate
145	$GROFFER_OPT to the command line.
146	- This makes a `set' in the shell determination unnecessary.
147
148	* groffer2.sh:
149	- The debug test gets simpler because quotes are vanished without
150	$GROFFER_OPT.
151	- main_parse_MANOPT(): Prepend $mpm_list to the command line.
152	- main_parse_args(): `set' is unnecessary.
153
154	### debug; new options
155
156	* groffer2.sh:
157	- --debug-all, --debug-lm, --debug-params, --debug-shell,
158	--debug-stacks, --debug-tmpdir, --debug-user: New options.
159	- --debug: Enable all debug variables except $_DEBUG_STACKS and
160	$_DEBUG_LM.  By the new options the smallest abbreviation is now
161	`--debug'.
162	- $_DEBUG_STACKS: Rename $_DEBUG.
163	- $_DEBUG_PRINT_TMPDIR: New debug variable for printing the name
164	of the temporary directory in main_init().
165	- $_OPT_DEBUG: Remove this variable because debug is handled at
166	the early part of the script.
167	- clean_up(): Enlarge $_DEBUG_KEEP_FILES to not deleting the
168	temporary directory.
169	- usage(): Move all development options on a section of its own.
170	- Move the test of rudimentary shell functionality at the
171	beginning of the script.  Add test on `sed'.
172	- Follow this by the debug section.  The determination of all
173	--debug* options can be done without a function.
174
175	* groffer.man: Revise information on --debug and add new options.
176
177	### variables
178
179	* groffer.sh:
180	- $_ERROR: Move the definition of this variable here.
181	- $_GROFF_VERSION: New variable, is set over @...@ construct.
182	- $_OUTPUT_FILE_NAME: Move this variable to groffer2.sh.
183
184	* groffer2.sh:
185	- $_MAN_AUTO_SEC_LIST: Rename $_MAN_AUTO_SEC because it represents
186	a list.
187	- $_MAN_AUTO_SEC_CHARS: New read-only variable for storing
188	$_MAN_AUTO_SEC_LIST in [] construct.  Use it in man_do_filespec()
189	and whatis_filename().
190	- $_SPACE_CASE: New read-only variable with [] on space characters
191	with \ for `case' patterns.  Use it in several functions.
192	- $_SPACE_SED: New read-only variable with [] on space characters
193	for `sed'.  Use it in several functions.
194
195	### options and display
196
197	* groffer2.sh:
198	- list_from_cmdline(): Add test whether the same abbreviation is
199	part of long options with and without arguments.  Give handling of
200	`=' a `case' pattern of its own.
201	- main_display(): Remove unnecessary calls of `clean_up' in order
202	to use `mozilla' without problems.  In _do_display(): Fix -X by
203	providing a different process when $_DISPLAY_PROG is empty.
204	- main_set_mode(): Accept options for viewers as is, without check
205	for program.  Add test whether no program is given for a mode.
206	This avoids unnecessary empty $_DISPLAY_PROG in main_display().
207
208	### viewer programs that run on the terminal (tty); new options
209
210	* groffer2.sh:
211	- $_VIEWER_TERMINAL: New variable that stores whether a viewer was
212	supposed to run on tty.
213	- --dvi-viewer-tty, --html-viewer-tty, --pdf-viewer-tty,
214	--ps-viewer-tty, --tty-viewer-tty, --X-viewer-tty, --x-viewer-tty,
215	--www-viewer-tty: New options for viewers that run on a terminal.
216	- main_parse_args(), _do_display() of main_display(): Use the new
217	options and the new variable.
218	- usage(): Add the new options.
219
220	* groffer.man: Add information on options --*-viewer-tty.
221
222	### other fixes
223
224	* groffer2.sh:
225	- _do_display() of main_display(): Bear errors of `groff' run.
226	- is_not_file: Fix to have exactly one argument.
227	- is_not_prog(): Handle no arguments.
228	- list_has_not(): Fix.
229	- main_do_fileargs(): Remove $mdfa_exitcode.
230	- register_title(): Limit title to 4 elements.
231	- version(): Print the version information to standard output just
232	like `groff' does.
233	- --no-special: New option to disable former calls of `--all',
234	`--apropos*', and `whatis.
235	- --title: Make it an option with argument.
236
2372005-08-07  Keith Marshall  <keith.d.marshall@ntlworld.com>
238
239	* contrib/groffer/Makefile.sub (install): Reference groffer2.sh
240	as $(srcdir)/groffer2.sh, so it will install when building in a
241	different directory from the source.
242
243	________________________________________________________________
244	* release of groffer 0.9.21
245
2462005-08-02  Bernd Warken
247
248	### @...@ constructs
249
250	* groffer.sh:
251	- $_AT: New variable for `@'.
252	- @...@: Replace the @...@ constructs by variables _AT_..._AT.
253	These constructs are transformed by `make' to useful information.
254	Keep all of these constructs in the first part of groffer.sh.  For
255	a run before a `make' call, the script sets these variables to
256	special values for testing purpose.
257	- $_GROFFER_LIBDIR: Variable pointing to the groffer library
258	directory @libdir@/groff/groffer.
259
260	### Configuration files
261
262	* groffer.sh:
263	- Add test for `$()' construct.
264	- Read and transform the configuration files and execute the
265	emerging commands.  The `sed' script was heavily enlarged to
266	handle line with spaces and quotes.  The emerging script is now
267	called by `eval', so no temporary file is needed.
268	- $_CONF_FILE_ETC, $_CONF_FILE_HOME: New variables for the config
269	files.
270	- $_SQ, $_SP: Move variables for characters before the handling of
271	the configuration files.  Rename $_SQUOTE to $_SQ and $_SPACE to
272	$_SP.
273	- $GROFFER_OPT: Remove cleaning of this variable before the
274	reading of the configuration files.
275
276	* groffer2.sh:
277	- main_init(): Remove the getting of the configuration files.
278
279	### Rewrite the shell determination
280
281	* groffer.sh:
282	- Get rid of all functions in `groffer.sh'.  Rewrite the shell
283	determination with `` and $().
284	- --shell: Shortest abbreviation is `--sh'.  Allow arguments for
285	the shell name.
286	- Allow an empty argument for --shell as shell name to overwrite a
287	specified shell; an empty shell name gets back to the default
288	shell.
289	- The shell determination now inludes the full handling of the
290	config files.  The `--shell' option needs no longer a line
291	starting with `-'.
292
293	### Test of unset
294
295	* groffer.sh:
296	- Remove test of `unset'.
297	- Remove all calls of `unset'.
298	- Use one character names for all variables that are meant to be
299	local in this script.
300
301	* groffer2.sh:
302	- Move the test of `unset' to the testing of rudimentary shell
303	functionality without change.
304
305        ### Allow abbreviations for long options
306
307	* groffer2.sh:
308	- list_has_abbrev(): New function for checking a list having an
309	element with a given abbreviation.
310	- list_get_single_from_abbrev(): New function to retrieve the
311	element having a given abbreviation.
312	- list_from_cmd_line(): For an option abbreviation determine the
313	corresponding long option.
314	- From the man option lists remove the elements that are also in
315	a groffer list.
316	- Allow abbreviation for the early test of --debug.
317
318	* groffer.sh: Allow abbreviation for the early test on --shell.
319	- get_opt_shell(): Rewrite _get_opt_shell() and the shell test
320	around it.
321	- test_on_shell(): Rename function _test_on_shell().
322	- $_SHELL: global variable for the shell to run groffer2.sh.
323
324	### Get rid of `sh -c'
325
326	* groffer2.sh:
327	- main_display(), _do_display(): Remove the `sh -c' calls.  Make
328	the cleanup working without it.
329	- _do_display(): Extend _do_display() such that	it can be used for
330	the pdf mode as well.
331	- _make_pdf(): New subfunction of main_display() for running the
332	additional parts of pdf mode in _do_display().
333	- rm_file(), rm_file_with_debug(), rm_tree(): New functions for
334	removing files and directories.
335
336	### Change directory
337
338	* groffer2.sh:
339	- $_START_DIR: New variable to store the directory at the starting
340	time of the script.
341	- main_display(): Go to the groffer temporary directory to be able
342	to process internal `groff' data like pictures.
343	- clean_up(): Get back to the starting directory.
344
345	### Compatibility with strange shells
346
347	* groffer2.sh:
348	- clean_up(): `zsh' and `posh' had difficulties with `eval'.
349	- is_*(): Add test on empty argument.  Some shells return true on
350	`test -d' etc. with empty argument, while most shells return
351	false.
352	- echo1(); New function to print single line `cat <<EOF'.  Replace
353	all `echo x' by `echo1'.
354	- list_has_abbrev(), list_from_cmdline(): Correction.
355	- main_parse_MANOPT(): Repair and revise.
356	- --do-nothing: New option without output (for development).
357	- Rewrite rudimentary shell functionality near the beginning of
358	the script.
359
360	* groffer.sh, groffer2.sh:
361	- Remove `;' after the commands `if', `while', and `until'.
362
363	### Debugging information
364
365	* groffer2.sh:
366	- $_DEBUG_PRINT_PARAMS: New variable for printing all parameters
367	from the config files, $GROFFER_OPT, and command line after they
368	have been transformed.
369	- $_DEBUG_PRINT_SHELL: New variable for printing the name of the
370	shell found in groff.sh.
371	- main(): Move the landmarks of main-*() into main().
372
373	### Further checks and additions
374
375	* groffer.sh, groffer2.sh:
376	- $_PROGRAM_NAME: Replace this variable by `groffer'.  The program
377	name is now stable.
378	- $_GROFFER_RUN: Remove this variable.  As `groffer.sh' or
379	`groffer' is no longer rerun, this variable is not necessary any
380	more.
381
382	* groffer2.sh:
383	- main_set_resources(): Make the default viewers capable to use
384	arguments in the list.
385	- leave(): Add an argument for given exit code.  Use it where
386	suitable in main_*().
387	- do_filearg(): Add error messages for non-existing files and man
388	pages.
389	- _do_opt_V(): New subfunction of main_display() to handle the
390	output for option `-V'.  `groff -V' is greatly enlarged by
391	`groffer' specific information.
392	- register_title(): Handle file names with spaces.  Replace spaces
393	by `_'.
394	- is_existing(): Add `test -c' for special files.
395	- usage(): Add `=arg' to the options with an argument.  Add option
396	`--tty-viewer'.
397	- kghostview: In the default viewer list, add option
398	`--scale=1.45'.
399	- $_OPTS_CMDLINE_SHORT_NA: Correct a lacking space.
400
401	* Makefile.sub: Repair the installation instructions for
402	groffer2.sh.
403
404	* groffer.man:
405	- Add paragraph on option handling.
406	- Add option `--do-nothing'.
407	- Reorder option for development and `groff'.
408	- Rewrite documentation for option `-V'.
409	- Expand `--shell'.
410	- Reformulate sections CONFIGURATION FILES, COMPATIBILITY and SEE
411	ALSO.
412	- Make `man' italic where possible.
413	- .copyleft: Adjust the fonts.
414
415	* README: Update sections `Output' and `Compatibility'.
416
417	* README_SH:
418	- Add `mksh' as compatible shell.
419	- Add information on the scripts after the split.
420
421	* TODO: Remove some fulfilled parts.
422
423	* ChangeLog: Remove final spaces.
424
425	________________________________________________________________
426	* release of groffer 0.9.20
427
4282005-07-30  Bernd Warken
429
430	### Split groffer.sh into two files groffer.sh and groffer2.sh.
431
432	* groffer.sh:
433	- Remove the second part of this script.  It is now in
434	groffer2.sh.
435	- $_GROFFER2_SH: New variable to point to the installed position
436	of `groffer2.sh'.  This position is presented using @libdir@.
437
438	* groffer2.sh: New script containing the second part of
439	groffer.sh. This script will be installed in the groffer library
440	directory @libdir@/groff/groffer, this might be
441	/usr/local/lib/groff/groffer/groffer2.sh for example.
442
443	* Makefile.sub:
444	- `groffer': Add replacement of @libdir@.
445	- `install_data': Add the installation of the groffer library
446	directory and groffer2.sh.
447	- `uninstall_sub': Delete the installed `groffer2.sh' and the
448	groffer library directory.
449
450	* README_SH:
451	- Remove the function list.
452	- Add argument options to the list of used commands.
453	- Documentation of the splitting of the script.
454	- Document the possible abbreviation of options.
455
456	________________________________________________________________
457	* release of groffer 0.9.19
458
4592005-07-07  Bernd Warken
460
461	* groffer.sh: extensions
462	- `mode x': Mode for the equivalent options `--x', `--mode x',
463	`--X' `--mode X', and the default mode.  The default assumes a
464	resolution of 75 dpi.  The default device for a resolution of 75
465	dpi is `X75-12', the default device for a resolution of 100 dpi is
466	`X100'.  The default geometry for the resolution of 100 dpi is set
467	to the width 800 dpi.
468	- `mode X': New mode for option -X only.
469	- `-V': Extent the `groff' output of -V by `groffer' specific
470	information (in main_display()).
471	- register_file(): Replace title `-' by `stdin'.
472	- $_DEBUG_KEEP_FILES: If set to `yes' the files in the temporary
473	directory are not deleted before the end trap.
474
475	* groffer.sh: get `zsh' to work as well
476	- tmp_create(): Use `: >file' for generating an empty file.
477	- rmdir: Replace `rmdir' by `rm -f -r'.
478	- eval: Add `eval' to many commands with variable arguments.
479
480	* groffer.sh: repair `debug'
481	- Print all debug output to stderr.
482	- $_FUNC_STACK: Built function call stack even when $_DEBUG is not
483	set.  Now the arguments are not added.
484	- $_DEBUG: If set to `yes' print 3 call stack events: the function
485	that is added with its arguments is printed with `+++ '
486	(func_push()); the call stack after the addition is printed with
487	`>>> ' (func_push()); the call stack after the removing is printed
488	with `<<< ' (func_pop()).
489	- error(): Always print the function call stack on errors.
490
491	* groffer.sh: Corrections
492	- $_groffer_run: Rename to $_GROFFER_RUN.
493	- $unset: Rename to $_UNSET.
494	- Repair test of `unset'.
495	- Repair test for `--shell'.  The script is now rerun under the
496	shell specified in the option argument.  This can increase the
497	speed.
498
499	* README_SH: `zsh' now works.
500
501	* groffer.man:
502	- Reformulate the information for the `groffer' specific details
503	of option `-V'.
504	- Add information on the debug process.
505	- Add information on the default devices in `x mode'.
506	- Minor corrections.
507
508	________________________________________________________________
509	* release of groffer 0.9.18
510
5112005-07-01  Bernd Warken
512
513	* groffer.sh: further shell compatibility
514	- `echo': Remove options and possible options of `echo' by
515	preceding the argument with a character `x' that is removed by
516	`sed' or replace `echo' by `cat <<EOF'.  `echo -n' seems to be not
517	portable, so it is omitted.
518	- `for': Remove `;' from within `for' (because of ksh).
519	- `ls': Old UNIX systems echoed the error message to standard
520	output.  So handle the output with `sed'.  If the output contains
521	`not found' map it to an empty string.
522	- `true': Replace `true' by command `:'.  Remove test of `true'
523	(because `ash' refuses the redefinition of builtins even in an
524	unreachable `if' branch).
525	- `false': Remove test of `false'; it isn't used any more.
526	- `test': As `test -e' does not exist in Solaris 2.5 replace it by
527	`test -f || test -d'.
528	- `unset': `unset' is said to be not portable.  As `ash' protests
529	against the definition of the function `unset()' in the test of
530	`unset' replace the test by defining `$unset' to `unset' if it
531	exists and to `:' otherwise.  Use `eval $unset' instead of the
532	direct command `unset'.
533	- _get_opt_shell(): Replace `for' loop with `shift' by `while'.
534	- man_search_section(): Replace `for f in filename*' by a test on
535	the existence of `filename*'.
536	- `zsh' interprets `$...'  as `"$..."'.  So `eval' must be called;
537	This cannot be used in `for i in $f', so it must be rewritten as
538	`for i in $(eval set x $f; shift; echo "$@")'
539
540	* groffer.sh:
541	- `--X', `--x', `--mode=X', `--mode=x': Make these options
542	equivalent to choosing an X device by setting `-TX75-12'.  `-X' is
543	still equivalent to `groff -X'.
544	- main_init(): Choose the name of the temporary file by adding a
545	number using `expr' if it exists and cannot be removed.
546	- main_parse_args():Repair some options by replacing `$mpa_mode'
547	by `$_OPT_MODE'.
548	- catz(): Rename it to cat_z() to avoid problem with existing
549	programs.
550	- where(): Rename to where_is().
551	- $_CONFFILES: Rename to $_CONF_FILES.
552	- $_HAS_BZIP: export and preset it.
553
554	* groffer.man:
555	- Document the `X mode' changes.
556	- Add `@g@' to `troff'.
557
558	* README, README_SH, TODO:
559	- Add date line `Latest update:'.
560	- Add `...' quoting to essential terms.
561	- Add Emacs mode at the end.
562
563	* README_SH:
564	- Add documentation on the above compatibility changes.
565	- Add documentation on used commands.
566	- Mention the tested shells.
567
568	* Makefile.sub:
569	Readd `@g@'.
570
571	________________________________________________________________
572	* release of groffer 0.9.17
573
5742005-06-23  Bernd Warken
575
576	* groffer.sh: get rid of `local' in functions (it is not POSIX)
577	- Replace local variables by variable names with a special prefix
578	that is an abbreviation of the corresponding function name (quasi-
579	local variables).
580	- Unset the quasi-local function variables before returning.
581	- _t_e_s_t_f_u_n_c_(): Remove tests for local and global
582	variables.
583	- Add quasi-local variables for saving the content of
584	single-character variables.
585	- Remove some unused local and global variables.
586	- Several variables were forgotten to make local.  They are now
587	made quasi-local.
588
589	* groffer.sh: other corrections
590	- $return_var: New function (after `eval') for an arbitrary
591	return value.
592	- obj*(): Add return modes.
593	- Rewrite tests for `true' and `false'.
594	- Add function names to error calls where it was forgotten.
595	- `for': Replace `for x in "$@"' by `for x'.
596	- `set': Replace `set -- ...' by `set x ...; shift'.
597	- `sed': Replace `\|.*|s|...|...|' by `s|...|...|'.
598
599	* README_SH:
600	- Add information on the removing of `local'.
601	- New section for non-POSIX shell restrictions.
602
6032005-06-20 Keith Marshall
604
605	* README-SH: Information of `Portable shells' in info autoconf.
606
607	________________________________________________________________
608	* release of groffer 0.9.16
609
6102005-06-19  Bernd Warken
611
612	* groffer.sh: Place each `then', `else', and `do' on a line of its
613	own because some shells do not support the mixture mode.
614
615	* groffer.man: Add section `BUGS'.
616
617	* README_SH:
618	- Add compatibility information.
619	- Correct documentation for function arguments.
620
6212005-06-18  Keith Marshall
622
623	* groffer.sh: $_NULL_DEV: Replace /dev/null by $_NULL_DEV which is
624	either /dev/null or NUL if /dev/null does not exist.
625
6262005-06-17  Zvezdan Petkovic
627
628	* Makefile.sub: $(RM): Define it to `rm -f' because not all `make'
629	programs have it predefined.
630
6312005-06-16  Bernd Warken
632	________________________________________________________________
633	* release of groffer 0.9.15
634
635	* Makefile.sub:
636	- Use `$(RM)'.
637	- Use `sed -f $(SH_DEPS_SED_SCRIPT)'.
638
6392005-05-20  Bernd Warken
640	________________________________________________________________
641	* release of groffer 0.9.14
642
643	* groffer.man: correction of non-hyphenation
644
6452005-05-17  Bernd Warken
646	________________________________________________________________
647	* release of groffer 0.9.13
648
649	* groffer.sh:
650	- $_VIEWER_DVI: Add `kdvi'.
651	- $_VIEWER_PDF: Add `kghostview', `ggv', and `kpdf'.
652	- $_VIEWER_PS: Add `kghostview' and `ggv'.
653	- $_modefile: For the output file name, add extension .ps for ps
654	mode and .dvi for dvi mode.  This exists already for the html and
655	pdf modes.
656	- Update some parts of the documentation.
657
658	* README, README_SH:
659	- Move some parts on usage from README_SH to README.
660	- Reformulate several parts of both files.
661
662	* groffer.man: update
663
6642005-05-14  Keith Marshall
665
666	* groffer.sh:
667	- first line: Add space to `#! /bin/sh'.
668
6692004-11-15  Bernd Warken
670	________________________________________________________________
671	* release of groffer 0.9.12
672
673	* groffer.sh:
674	- main_init(): Rewriting of the creation of the temporary
675	directory to ensure that it cannot be made writable apart from the
676	user.  If the directory already exists and cannot be removed then
677	append `X' to the directory name.
678	- is_non_empty_file(): fix it to use POSIX `test -s'.
679	- is_existing(): new function.
680	- POSIX `rm -f -r': use this in `clean_up()' and `main_init()'.
681	- `--macro-file': remove this unused long option.
682	- `-V', `--source', `--device': move these from groff options
683	to groffer options.
684	- `$_TMP_DIR_SUB': remove this unused variable.
685
6862004-06-15  Bernd Warken
687	________________________________________________________________
688	* release of groffer 0.9.11
689
690	* groffer.sh:
691	- To the search of the `--apropos-*' options, add man pages with a
692	subsection in their apropos output.
693
6942004-06-02  Bernd Warken
695	________________________________________________________________
696	* release of groffer 0.9.10
697
698	* groffer.sh:
699	- Remove automatic call of `ash' due to inconsistencies of
700	different ash versions.
701	- In the first run, add recognition of `--shell' lines in the
702	groffer configuration files.  To configure an external shell in
703	a configuration file, a line starting with `--shell' is
704	necessary.
705	- list_from_cmdline(): Simplify the arguments.
706	- As $POSIXLY_CORRECT is internally set to `y' by some GNU
707	`/bin/sh' shells the following 2 fixes are necessary:
708	-- `sed': Empty patterns are not allowed with $POSIXLY_CORRECT
709	set; so move the address information before the `s' command to the
710	pattern after the command, and write `.*' to the address field.
711	-- list_from_cmdline(): Remove the strange $POSIXLY_CORRECT style
712	to finish the option processing after the first non-option
713	argument; use the flexible GNU mixing of options and file names
714	instead.
715
716	* groffer.man:
717	- Remove any hints on `ash'.
718	- Add minus line behavior of `--shell' for configuration and add a
719	corresponding example.
720	- Update the information on $POSIXLY_CORRECT.
721
7222004-05-29  Bernd Warken
723	________________________________________________________________
724	* release of groffer 0.9.9
725
726	* groffer.sh:
727	Fix first run section to allow the starting shell to go on if
728	`ash' is not available.
729
730	* groffer.man:
731	Remove unnecessary information on groffer version.
732
7332004-05-12  Bernd Warken
734	________________________________________________________________
735	* release of groffer 0.9.8
736
737	* groffer.sh:
738	Fix problems of `test' by adding subs to arguments.
739
740	* groffer.man:
741	Write the file license as macros that are called in sections
742	AUTHOR and COPYING.
743
744	* .cvsignore:
745	Restore this file.
746
7472004-04-30  Bernd Warken
748	________________________________________________________________
749	* release of groffer 0.9.7
750
751	* groffer.sh:
752	- obj(), obj_data(), obj_from_output(), obj_set(): New object
753	oriented functions to minimize complicated `eval' commands.
754	- list_*(): Corrections.
755	- usage(): Streamlining.
756
757	* groffer.man, README_SH:
758	Corrections.
759
7602004-04-27  Bernd Warken
761	________________________________________________________________
762	* release of groffer 0.9.6
763
764	This version replaces the license of all files except ChangeLog of
765	the groffer source to the GNU General Public License (GPL) of the
766	version described in files COPYING and LICENSE in the groff top
767	source directory.
768
769	* groffer.man:
770	Changement from the GNU Free Documentation License (FDL) to
771	the GNU General Public License (GPL).
772
773	* README, README_SH, TODO:
774	Add license GNU General Public License (GPL).
775
776	* Makefile.sub, groffer.sh:
777	Keep the GNU General Public License (GPL), but refer to the
778	COPYING and LICENSE files.
779
780	* ChangeLog: Add a license in the style of Emacs ChangeLog file,
781	which is weaker than the GPL, but has its flavor.
782
7832004-04-24  Bernd Warken
784	________________________________________________________________
785	* release of groffer 0.9.5
786
787	This version is a rewrite of groffer in many parts, but it is kept
788	in the old single script style.
789
790	Overview of new options:
791	--text, --mode text, --tty-viewer,
792	--X, --mode X, --X-viewer, --html, --mode html, --html-view,
793	--apropos-data, --apropos-devel, --apropos-progs
794
795	New file:
796	<groffer-source>/README_SH
797
798
799	******* Extension of the `apropos' handling
800
801        The output of man's `apropos' has grown immensely meanwhile, so it
802	has become inefficient.  Now `groffer' provides new options to get
803	the a selected information from this output.
804
805	* groffer.sh:
806        `--apropos-progs': new option for displaying only information
807        on programs (man page sections 1, 6, and 8)
808        `--apropos-data': new option for displaying only information
809        on documented data (man page sections 4, 5 and 7)
810        `--apropos-devel': new option for displaying only information
811        on development documentation (man page sections 2, 3 and 9)
812        `--apropos': still displays just the output of man's `apropos'
813	program.
814	- Specify all of these options as a single argument option; that
815	makes groffer's `--apropos' option slightly different because
816	the corresponding `man' option does not have arguments,	but takes
817	all file arguments as apropos targets.  So just ignore the `man'
818	options `-k' and `--apropos' in the parsing of $MANOPT.
819	- Exit after processing one `apropos' call.
820
821
822	******* Quasi object oriented function arguments
823
824	An object is the name of an environment variable.  The value of
825	this variable contains the object's content.  This allows to
826	specify function arguments and the calling syntax in a simpler way
827	by letting the first argument be a variable name, usable for input
828	or output.
829
830	Such an object type is `list', the string value of a shell
831	variable arranged in space-separated single-quoted elements, such
832	as $GROFFER_OPT internally.
833
834	* groffer.sh:
835	- Remove list_from_args(), list_element_from_arg()
836	list_from_lists(), list_length(), and list_prepend().
837	They can be replaced by list_append().
838	- All list*() functions are rearranged such that the first
839	argument is a list object, the name of a variable.
840
841
842	******* Simplification of configuration files
843
844	The new syntax of the groffer configuration files is
845	- all lines starting with a `-' character are interpreted as
846	command line options for all calls of groffer; they are collected
847	and prepended to the actual value of $GROFFER_OPT; optional
848	spaces at the beginning.of the line are omitted.
849	- all other lines are interpreted as a shell command and executed
850	in the current shell of the groffer call.
851
852	Precedence:
853	- The command line and the external environment variables such as
854	$GROFFER_OPT of the groffer call have the highest precedence.
855	- This is overwritten by the configuration file in the user's home
856	directory.
857	- The system configuration file in /etc has the lowest
858	precedence.
859
860	* groffer.sh:
861	The configuration files are now called after the determination of
862	the temporary files in main_init().
863
864
865	******* Script file name
866
867	The file name of the script is needed for the several calls during
868	the search for the optimal shell.
869
870	* groffer.sh:
871	- $_GROFFER_SH: replace $_this by $_GROFFER_SH and use $0 for
872	determining the file name of the script for the following calls,
873	instead of the cumbersome @BINDIR@ construction.
874	- Force the script to be called as an executable file, so $0 must
875	contain the program name.
876
877
878	******* Improved temporary file names
879
880	Just like groff, groffer mixes all file parameters into a single
881	output file.  Its name is now constructed as a comma-separated
882	list built from the file name arguments without a leading comma.
883	So a leading comma can be used for the internal temporary file
884	names.
885
886	* groffer.sh:
887	- $_OUTPUT_FILE_NAME: new global variable as basis for the output
888	file name; it is set in main_set_resources().
889        - tmp_create(): use `,name' for temporary files different from
890	output file because the output file name does not start with a
891	comma.  `$$' is not needed anymore.
892	- main_display(): simplification of $_modefile in _do_display()
893	and single display modes.
894	- Add extension `.html' to output file name in html mode.
895	- base_name(): correction for strange positions of `/'.
896
897
898	******* Mode fixes
899
900	* groffer.sh:
901	- Set the main default mode to `x' with groff's	X Window viewer
902	`gxditview'.
903	- Allow 'x' and 'X' in `--mode' for the X Window mode; the same
904	for `--x' and `X', `--x-viewer' and `--X-viewer'.
905	- Make groff's `-X' equivalent to `mode X'.
906	- Fix `--auto', `--mode auto',  and `--default-modes'.
907	- `html' mode: new mode equivalent to `www', add `konqueror' and
908	`lynx' as viewers.
909	- `pdf' mode: fix zoom options for pdf-viewer `xpdf' in
910	main_set_resources(); in main_display() fix the display structure.
911	- Set default X Window resolution to 75dpi.  This is not optimal,
912	but with a higher value the options and resources for some viewers
913	must be optimized.
914	`--text' and `--mode text': new option for text output without a
915	pager.
916	- `--tty-viewer': new option equivalent to `--pager'.
917	- Correct the pagers for `tty' mode.
918	- Fix `groff' mode in main_set_resources() and main_display().
919	- Harmonize `--mode arg' with the equivalent options `--arg'.
920
921
922	******* Fixes for command line options
923
924	* groffer.sh:
925	- list_from_cmdline(): fix the parsing of options with arguments.
926	- Rename $_OPT_TTY_DEVICE to $_OPT_TEXT_DEVICE.
927	- $_OPTS_X_*: new variables for the inhereted X Window variables.
928	- Improve the distribution of the command line options into
929	$_OPTS_GROFFER_*, $_OPTS_GROFF_*, $_OPTS_X_*, and $_OPTS_MAN_*.
930	- $_OPTS_MANOPT_*: new variables for the parsing of $MANOPT.
931	- Correct $_OPTS_CMDLINE_*.
932	- Remove some unused $_OPTS_*.
933	- `--iconic': new option from `-iconic' of the X Window toolkit.
934	- Correct `--rv' to an option without argument.
935	- Minor fixes of other  X Window toolkit options.
936
937
938	******* Other fixes
939
940	* groffer.sh:
941	- is_prog(): allow 0 arguments.
942	- is_not_writable(): new function.
943	- is_*(): fix trailing return codes.
944        - Replace most `test' calls by is_*() functions.
945	- man_setup(): due to bugs in `manpath', prefer
946	manpath_set_from_path() for the determination of the man page path.
947	- man_search_section(): correction of some `for' loops.
948	- Remove export of external non-groffer variables.
949
950
951	******* Documentation
952
953	* groffer.man:
954	- Reorder the option details according to the option origin as
955	groffer, groff, X, and man options.
956	- Add the programming changes information mentioned above.
957	- Support man pages with a dot in their name
958
959	* README_SH: new file
960	Move large parts of the documentation in `groffer.sh' into this
961	file.
962
963	* groffer.sh: usage():
964	- Change the output for `--help' to standard output.
965	- Restructure the information for this help output.
966
967
968	******* Removement of the author's email address
969
970	Because of the extreme spam attacks, the author removed all
971	occurencies of his email address in every file of the groffer
972	source.
973
9742003-01-22  Bernd Warken
975	________________________________________________________________
976	* release of groffer 0.9.4
977
978	* groffer.sh: corrections for some restrictive shells
979	- Possible exit codes in actual `ash' are between 0 and 63.  To
980	handle even deeper restrictions, use 7 as maximal code instead
981	of 255 as replacement for error -1.
982	- Remove variables $_BAD2 and $_BAD3.
983	- Replace `trap' argument `EXIT' by 0 and write new fuctions
984	`trap_clean' and `trap_set' to handle the restrictions of `trap'
985	for some shells.
986	- Correct wrong $MANPATH to $_MAN_PATH in function
987	`man_do_filespec'.
988	- Test existence of directory before deleting it in the
989	`clean_up' definitions.
990	- Correct help output in `usage' (called by `--help').
991
992	* TODO:
993	Remove mention of `shoop' and `apropos'.
994
9952002-10-21  Bernd Warken
996	________________________________________________________________
997	* release of groffer 0.9.3
998
999	* groffer.sh: new temporary subdirectory
1000	- Generate temporary subdirectory for storing temporary files
1001	with better names in future groffer versions (name:
1002	"groffer$$" in usual temporary directory).
1003	- Use `umask 000' for temporary files to allow cleaning up
1004	for everyone after a system break.
1005	- Change both clean_up() functions (for normal shell and
1006	for main_display() subshell) to handle the new subdirectory.
1007	- clean_up_secondary() and $_TMP_PREFIX are unnecessary now, so
1008	they were removed.
1009
1010	* Makefile.sub: `sed' commands for "groffer:"
1011	- Remove "@g@" entry (not used in "groffer.sh").
1012	- Add global replace for "@BINDIR@" and "@VERSION@" for future
1013	usage.
1014
1015	* TODO: think about...
1016	- writing part of groffer in C/C++.
1017	- handling several files with different macro packages.
1018
10192002-10-17  Bernd Warken
1020	________________________________________________________________
1021	* fixes of groffer 0.9.2
1022
1023	* groffer.sh:
1024	Terminate main_parse_MANOPT() if $MANOPT is empty or consists
1025	of space characters only.
1026
1027	* groffer.man: some fixes in "GROFFER OPTIONS"
1028	- New macro ".Header_CB" for CB font in .TP headers; used for
1029	definition of variables in option --mode.
1030	- Fix some option references to refer to long options.
1031
1032	* README:
1033	New file for general information on the groffer source; it is
1034	not installed.
1035
10362002-10-14  Bernd Warken
1037
1038	* Makefile.sub:
1039	add replacement "@BINDIR@" to "$(bindir)" for "groffer:"
1040
1041	* groffer.sh:
1042	Define $_this as "@BINDIR@/${_PROGRAM_NAME}" to save the right
1043	installation position of groffer for the special shell calling.
1044
1045	* groffer.man:
1046	Remove double definition of filespec parameters.
1047
10482002-10-13  Bernd Warken
1049	________________________________________________________________
1050	* release of groffer 0.9.2
1051
1052	* groffer.sh: fixes
1053	- Fix some 'sed' functions: two in func_stack_dump(), one in
1054	  base_name(), add 'sed' command in list_from_cmdline().
1055	- Finish main_parse_MANOPT() if $MANOPT is empty.
1056	- Sort $_OPTS_GROFF_SHORT_NA like groff short options (but
1057	  unchanged).
1058	- Fix some comments.
1059
1060	* groffer.man: make it more readable (but no additions)
1061	- A shortened section "SYNOPSIS" is followed by a simplified
1062	  section "DESCRIPTION".
1063	- The options from "SYNOPSIS" go to new section "OPTION
1064	  OVERVIEW" with all groffer options in a single subsection.
1065	- The details of all groffer options are described in section
1066	  "GROFFER OPTIONS".
1067	- New macro for file names ".File_name".
1068	- "Option Parsing" is moved to section "COMPATIBILITY".
1069	- Fix some "EXAMPLES".
1070
10712002-09-30  Bernd Warken
1072	________________________________________________________________
1073	* release of groffer 0.9.1
1074
1075	* TODO: remove done entries
1076	- Remove request for different shells.
1077	- Remove the 'sed' complaints.
1078
10792002-07-15  Bernd Warken
1080
1081	* groffer.sh: replace `sed' interface by direct `sed'
1082	- This improves the performance of the shell programming parts
1083	  and shortens the groffer script by about 5%.
1084	- Remove functions: string_del_append(), string_del_leading(),
1085	  string_del_trailing(), string_flatten(), string_get_before(),
1086	  string_get_leading(), string_replace_all(), string_sed_s(),
1087	  and their auxiliary functions.
1088	- Replace all calls of these functions by direct `sed' commands.
1089	- Define variables for special characters to ease `sed' calls.
1090	- Remove `$APPEND'.
1091	- Restrict list_from_string() to single character separators.
1092	- Correct list_check() and base_name().
1093	- Add comments to all calls of `sed'.
1094
1095	* groffer.sh: add run-time support for several shells
1096	- New option `--shell': stop execution and rerun groffer under
1097	  the shell specified in the argument of `--shell'.
1098	- If no shell was specified at run-time, `ash' is tried first;
1099	  if `ash' is not available continue with the shell with which
1100	  groffer was called from the command line, or with the shell
1101	  name in the first line of the script, actually `/bin/sh'.
1102
11032002-07-12  Bernd Warken
1104	________________________________________________________________
1105	* fixes for groffer 0.9.0
1106
1107	* groffer.sh: enhance version information
1108	`groffer -v|--version' now print:
1109	- groffer's version number and date
1110	- the string `is part of '
1111	- groff's version information (version number and copyright),
1112	  but not groff's `called subprograms' information.
1113
1114	* groffer.sh: minor fixes
1115	- Fix the argument parser to process argument `-' correctly.
1116	- Some display programs have trouble with empty input; feed a
1117	  line consisting of a single space character in this case for
1118	  all display modes (not for source or groff modes).
1119
1120	* TODO:
1121	fix entry `shoop' (not 'shopt').
1122
11232002-06-28  Bernd Warken
1124	________________________________________________________________
1125	* release of groffer 0.9.0
1126
1127	* groffer.sh: new mode `pdf'
1128	- PDF (Portable Document Format):
1129	  -> Transform groff `ps' output into pdf using `gs'.
1130	  -> Pro: PDF viewers provide text searching (!).
1131	  -> Con: the transformation is quite slow.
1132	  -> Not suitable as an auto mode.
1133	- New options `--pdf', `--pdf-viewer', `--mode pdf'.
1134	- Standard pdf viewers `xpdf' and `acroread'.
1135	- For `xpdf', choose zoom `z 3' for 100 dpi, `z 2' for 75 dpi.
1136
1137	* groffer.sh: support bzip2 decompression
1138	- add test for `bzip2' with necessary options
1139	- extend functions `catz()' and `save_stdin()'.
1140
1141	* TODO
1142	remove entry on `bzip' decompression (done).
1143
1144	* groffer.man:
1145	- Document new `pdf' features.
1146	- Document new `bzip2' decompression.
1147	- Fix documentation for `--auto-modes'.
1148
1149	* groffer.sh: minor fixes
1150	- Improve device tests in `tty' and `dvi' modes.
1151	- Internally, map mode `auto' to '' to facilitate tests.
1152	- Fix auto mode sequence to: `ps,x,tty' as was intended.
1153
11542002-06-25  Bernd Warken
1155
1156	* groffer.sh:
1157	Fix `source' mode.
1158
1159	* groffer.man:
1160	Fix some indentations.
1161
11622002-06-23  Bernd Warken
1163	________________________________________________________________
1164	* release of groffer 0.8
1165
1166	* Makefile.sub: add copyright section
1167
1168	* groffer.man:
1169	- Document the new options.
1170	- Revise the documentation of the modes.
1171	- Document the configuration files in new section `FILES'.
1172	- Redesign section `EXAMPLES'.
1173	- Remove documentation for `-W'.
1174
1175	* groffer.sh: new debugging features
1176	- Disabled by default; enabled by environment variables.
1177	- Add landmark() to catch typos with quotes.
1178	- Add a function call stack for suitable functions; implemented
1179	  as within the argument checker func_check().
1180	- This implies the need to provide `return' with some clean-up
1181	  facility; implemented as `eval "$_return_..."'.
1182	- Add option `--debug' to enable debugging at run-time.
1183	- Actually, the groffer script uses only shell builtins found
1184	  in `ash' (a subset of POSIX) and POSIX `sed' as the only
1185	  external shell utility.
1186
1187	* groffer.sh: customization of viewers
1188	- In `groff' mode, the groffer viewing facilities are disabled.
1189	- The postprocessor option `-P' costumizes the viewer only in
1190	  some situations in the `groff' mode, so a new infrastructure
1191	  for viewer customization is necessary.
1192	- Allow to specify arguments to the viewer programs specified
1193	  in `--*-viewer()'.
1194	- Implement some of the essential X Toolkit resource options in
1195	  groffer, but with use a leading double minus.
1196	  -> `--bd': set border color.
1197	  -> `--bg', `--background': set background color.
1198	  -> `--bw': set border width.
1199	  -> `--display': set X display.
1200	  -> `--geometry': set size and position of viewer window.
1201	  -> `--fg', `--foreground': set foreground color.
1202	  -> `--ft', `--font': set font.
1203	  -> `--resolution': set X resolution in dpi.
1204	  -> `--title': set viewer window title.
1205	  -> `--xrm': set X resource.
1206	- Remove misnamed option `--xrdb'.
1207
1208	* groffer.sh: new mode structure
1209	- New Postcript mode `ps' (`--ps'):
1210	  -> default viewers: gv,ghostview,gs_x11,gs;
1211	  -> `--ps-viewer' sets the Postscript viewer.
1212	- New mode `www' (`--www') for displaying in a web browser:
1213	  -> default browsers: mozilla,netscape,opera,amaya,arena;
1214	  -> `--www-viewer' sets the web browser.
1215	- New dvi mode (`--dvi'); default viewer `xdvi':
1216	  -> default viewers: xdvi,dvilx;
1217	  -> `--dvi-viewer' sets the dvi viewer.
1218	- New mode `auto':
1219	  -> active if no other mode is given or by new option `--auto';
1220	  -> selects from a sequence of modes that are tested until one
1221	    of them succeeds.
1222	  -> the default mode sequence is actually `ps', `x', `tty'.
1223	  -> `--default-modes' sets this mode sequence as a comma
1224	     separated string of program names, optionally each one
1225	     with arguments).
1226	- New mode `groff':
1227	  -> process input like groff, ignore viewing options.
1228	  -> activated by new option `--groff'.
1229	  -> automatically active with one of `-V', `-X', `-Z'.
1230	- Revise `tty' mode:
1231	  -> allow several text devices.
1232	  ->
1233	- Reorganize the mode management:
1234	  -> new mode setting option `--mode'.
1235	  -> logically separate source, groff, and display modes.
1236	  -> intermediate output mode is now part of mode groff; remove
1237	     any special features around `-Z'.
1238	- Update usage() to reflect the new option structure.
1239
1240	* groffer.sh: add configuration files
1241	- `/etc/groff/groffer.conf' system-wide configuration.
1242	- `${HOME}/.groff/groffer.conf' user configuration.
1243	- The configuration file are shell scripts for now; later
1244	  implementations can identify this from the `#! /bin/sh' line.
1245
1246	* groffer.sh: new data structure `list':
1247	- Implement a `list' data structure as a string consisting of
1248	  single-quoted elements, separated by a space character;
1249	  embedded single-quotes are escaped.
1250
1251	* groffer.sh: new option parser based on `list':
1252	- Write new option parser based on `list', compatible to both
1253	  POSIX getopts() and GNU getopt().
1254	- Long options are now available on GNU and non-GNU systems.
1255	- Get rid of POSIX getopts() and GNU getopt().
1256	- the `-W--longopt' construct is now obsolete; remove it.
1257	- add test/function for `unset'.
1258	- Option strings are now implemented as `list's in order to
1259	  allow unusual characters in options.
1260	- Parse $MANOPT first; translate essential arguments into
1261	  groffer options.
1262
1263	* groffer.man:
1264	- determine prompt length for `.Shell_cmd'* dynamically.
1265	- naming scheme for static strings and registers changed to
1266	  `namespace:macro.variable'.
1267
1268
12692002-06-16  Werner Lemberg  <wl@gnu.org>
1270
1271	* groffer.sh:
1272	Implement man option `--ascii' by `-mtty-char'.
1273
1274
12752002-05-31  Werner LEMBERG  <wl@gnu.org>
1276
1277        * groffer.man (@.Shell_cmd_width):
1278	Increase to 4m (we use `sh#' as the prompt).
1279
1280
12812002-05-31  Bernd Warken
1282	________________________________________________________________
1283	* release of groffer 0.7
1284
1285	* groffer.sh: remove incompatibilities with the `ash' shell:
1286	- do not use `!command':
1287          -> use `else'
1288	  -> write `_not_' equivalents for some functions
1289	- do not use `[^]' in `case':
1290	  ->  restructure some functions.
1291	- only single-character names for loop variables:
1292	  -> spoils the paradigm of leading `_' for local variables.
1293	- spurious trouble with `for i in ${var}':
1294	  -> use `eval set -- ${var}' and `for i in "$@"'
1295	- do not change or use $IFS:
1296	  -> define new functions string_split() and `path_split()'.
1297	  -> result must be processed by `eval set --'.
1298	  -> solve conflicts with existing positional parameters.
1299	- trouble with exporting external `$GROFF_*' variables:
1300	  -> hope that they were exported in the calling shell.
1301	- not smart about additional blanks:
1302	  -> remove unnecessary white space.
1303
1304	* groffer.sh: improve run-time speed:
1305	- `ash' more than doubles the speed of `bash'.
1306	- speed-up `man_setup()'.
1307
1308
13092002-05-30  Werner Lemberg  <wl@gnu.org>
1310
1311	* groffer.man:
1312	- remove some wrong `\:'.
1313	- rename macro names that start with a `[' (clashes with refer).
1314	- fix TP_header.
1315
1316
13172002-05-28  Bernd Warken
1318	________________________________________________________________
1319	* release of groffer 0.6
1320
1321	This is almost a complete rewrite since groffer 0.5 .
1322	________________________________________________________________
1323	* Documentation
1324
1325	* groffer.man:
1326   	- Apply the changes done in www.tmac (.URL and .MTO)
1327	- Replace \fP by \f[].
1328	- Redesign and rewrite most macros.
1329	- Include the documentation for the new features.
1330	- Greatly enlarge section ENVIRONMENT
1331	- Add examples.
1332
1333	* TODO:
1334	- Start a TODO file with several sections.
1335
1336	* ChangeLog:
1337	Due to the many changes, shorten and rearrange the entries
1338	since groffer 0.5 .
1339	________________________________________________________________
1340	* Shell compatibility
1341
1342	* groffer.sh:
1343	- Due to possible conflicts in old BSD versions, `[]' was
1344	  replaced by `test'; the `test' options `-a' and `-o' were
1345	  replaced by multiple calls of `test'.
1346	- Write interface to the `sed' command `s' to become
1347	  independent of the delimiter character.  Rewrite all text
1348	  manipulating function to use this new scheme.  The new
1349	  functions are named `string_*'.
1350	- `tr' is not needed any longer, replaced by `sed'.
1351	- `grep' is not needed any longer, mostly replaced by `case'.
1352	- Revision of test for `getopt'.
1353	- Remove `set -a'; explicitly export variables.
1354	- The only external programs used are POSIX `sed' and the
1355	  fallback to `apropos'.  All other program calls were
1356	  replaced by shell builtins and functions.
1357
1358	________________________________________________________________
1359	* Cosmetics
1360
1361	* groffer.sh:
1362	- Implement a prefix based naming scheme for local variables
1363	  and functions (OOP-like).
1364	- Introduce variables for white space (better readability with
1365	  $IFS).
1366	- Store the names of the processed filespecs into a variable
1367	  instead of a temporary file.
1368	- Error-prone shell constructions were replaced by functions
1369	  with a simple interface.
1370	- To avoid too long pipes, replace supercat() by do_fileargs();
1371	  every input file is handled independently.
1372
1373	________________________________________________________________
1374	* New features:
1375	- Add support for more X devices (e.g. X75-12 and X100-12).
1376	- Add long option `--intermediate_output' to `-Z'.
1377	- Make the options for mode selection clobber each other.
1378	- Add option `--mode' with an argument having the following
1379	  values:
1380	  `X': force displaying in X, same as options `-X';
1381	  `tty': display with a pager on text terminal; same as `--tty';
1382	  `source', `default', `auto', etc.
1383	- Make the handling of the X mode like in groff (e.g. -X -Tps).
1384	- Make resolution for gxditview behave like groff (default
1385	  75 dpi).
1386	- Add environment variable $GROFFER_OPT to preset groffer
1387	  options.
1388
1389	________________________________________________________________
1390	* implement most of the functionality of GNU `man'.
1391
1392	- Add all `man' long options to groffer.
1393	- Add all `man' environment variables.
1394	- Parse and use content of `$MANOPT'.
1395	- The precedence of the options and environment variables
1396	  is regulated like in GNU `man'.
1397	- Force the option `--manpath' to have a colon-separated
1398	  argument like GNU `man'.
1399	- Support `man section name' calling convention.
1400	- Remove all dependencies on `man -w'.
1401
1402	* groffer.sh:
1403	- Add the new features above.
1404	- Rewrite the search algorithm for man pages.
1405	- Remove searching with `man -w' (problems with space
1406	  characters in file names).
1407	- Fix and complement usage().
1408	- The filespec parsers gets a function of its own do_manpage().
1409
1410
14112002-01-08  Bernd Warken
1412
1413	* groffer 0.5 (beta) released
1414
1415	* groffer.man:
1416	- Fix hyphenation problems with macros describing options.
1417	- Fix the handling of some `-' characters.
1418	- Examples of shell commands now print in font CR instead of CB.
1419	- Remove documentation for option `-X'.
1420	- Add documentation for option `--dpi'.
1421
1422	* groffer.sh:
1423	- New method for creating temporary files, based on process
1424	  IDs.  This is reliable enough and suitable for GNU and POSIX.
1425	- Run gxditview in a new shell instantiation for having a clean
1426    	  handling of the temporary files when running in the
1427	  background.
1428	- Revision of the retrieving method for the window title.
1429	- Empty input is now tolerated.
1430	- Export the variables that are set before the call of `set -a'.
1431	- Function usage() corrected and updated.
1432	- Unnecessary stuff removed.
1433	- Comments adjusted.
1434	- Pass option `-X' to groff, i.e. force X output with 75 dpi.
1435	- Implement option `--dpi' for setting the resolution for the X
1436	  viewer, which had already been documented in earlier versions.
1437
14382002-01-07  Bernd Warken
1439
1440	* groffer 0.4 (beta) released (as groff `contrib')
1441
1442	* groffer.man:
1443	- New features documented.
1444	- Macros stream-lined.
1445	- Section EXAMPLES added.
1446
1447	* groffer.sh:
1448	- System tests added/optimized.
1449	- Speed/memory optimizations by defining some shell functions
1450	  alternatively depending on the text results.
1451	- Use `gzip' for decompression instead of `zcat'.
1452	- Signal handling added for clean exiting by `trap'.
1453	- Temporary files exist only as long as necessary.
1454	- Setup of path for man-pages moved after the option parsing.
1455	- Fixed a bug in determining the path for man-pages.
1456	- Fixed a bug in the handling of non-groffer options.
1457
1458	* New features:
1459	- New option --tty for forcing paging on text terminal.
1460	- New option --no-man for disabling the man-page feature.
1461	- Implement reserved POSIX -W feature to simulate long options.
1462	- gxditview is now run as a background process.
1463
14642002-01-05  Werner LEMBERG  <wl@gnu.org>
1465
1466        * Integrate groffer into groff's `contrib' tree.
1467
1468        * Makefile: Replaced by...
1469        Makefile.sub: New file.
1470
1471        * groffer: Replaced by...
1472        groffer.sh: New file.
1473
1474        * groffer.man (OptDef): Add missing backslashes.
1475        Update copyright.
1476
14772001-12-15  Bernd Warken
1478
1479	* groffer 0.3 (alpha) released (still stand-alone package).
1480
1481	* GNU and POSIX are supported (POSIX without long options).
1482
1483	* New options : --man, --mandb, --title, --xrdb
1484
1485	* Support for command line arguments with embedded single space
1486	characters (GNU only) .
1487
1488	* Several search methods for man-pages when no `man -w' is
1489	available ($MANPATH, mandb, a default path).
1490
1491	* Language support for man-pages.
1492
1493	* Recognize the following filespecs as man-page parameters:
1494	  man:name(section), man:name, name.section, name.
1495
14962001-12-03  Bernd Warken
1497
1498	* Stand-alone package for groffer 0.2 (alpha) created
1499	Files: groffer, groffer.man, Makefile, TODO, ChangeLog
1500
15012001-12-02  Bernd Warken
1502
1503	* groffer 0.2 (alpha) program released.
1504
1505	* Name changed from `groffview' to `groffer'.
1506
1507	* Comments added.
1508
1509	* Name changed from `groffview' to `groffer'.
1510
1511	* Options harmonized with groff.
1512	New options : -Q --source, -T --device, -X .
1513	Other options known from groff are passed unchanged.
1514
1515	* 100 dpi as default, 75 dpi only in emergency situations.
1516
1517	* Bugs with temporary files fixed.
1518
1519	* Code restructured and comments added.
1520
15212001-11-28  Bernd Warken
1522
1523	***** groffview 0.1 (experimental) and groffview.man released
1524	(predecessor of groffer, shell script)
1525
1526	* Options : -h --help, -v --version
1527
1528	* Search for man-pages based on $MANPATH
1529
1530	* development of `groffview' shell script started
1531
15322001-11-28  Bernd Warken
1533
1534	________________________________________________________________
1535	License
1536
1537	Copyright (C) 2001,2002,2003,2004,2005
1538	Free Software Foundation, Inc.
1539	Written by Bernd Warken
1540
1541	Copying and distribution of this file, with or without
1542	modification, are permitted provided the copyright notice and this
1543	notice are preserved.
1544
1545	This file is part of `groffer', which is part of the `groff'
1546	project.
1547