summaryrefslogtreecommitdiff
path: root/contrib/groffer/ChangeLog
blob: bea3e38b64e9853e2457d767f0d5715535b80cf0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
2004-04-30  Bernd Warken
	________________________________________________________________
	* 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
	________________________________________________________________
	* 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
	________________________________________________________________
	* 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 
	________________________________________________________________
	* 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 
	________________________________________________________________
	* 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 
	________________________________________________________________
	* 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 

	* 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 
	________________________________________________________________
	* 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 
	________________________________________________________________
	* release of groffer 0.9.1
	
	* TODO: remove done entries
	- Remove request for different shells.
	- Remove the 'sed' complaints.

2002-07-15  Bernd Warken 

	* groffer.sh: replace `sed' interface by direct `sed'
	- This improves the performance of the shell programming parts
	  and shortens the groffer script by about 5%.
	- Remove functions: string_del_append(), string_del_leading(),
	  string_del_trailing(), string_flatten(), string_get_before(),
	  string_get_leading(), string_replace_all(), string_sed_s(),
	  and their auxiliary functions.
	- Replace all calls of these functions by direct `sed' commands.
	- Define variables for special characters to ease `sed' calls.
	- Remove `$APPEND'.
	- Restrict list_from_string() to single character separators.
	- Correct list_check() and base_name().
	- Add comments to all calls of `sed'.

	* groffer.sh: add run-time support for several shells
	- New option `--shell': stop execution and rerun groffer under
	  the shell specified in the argument of `--shell'.
	- If no shell was specified at run-time, `ash' is tried first;
	  if `ash' is not available continue with the shell with which
	  groffer was called from the command line, or with the shell
	  name in the first line of the script, actually `/bin/sh'.

2002-07-12  Bernd Warken 
	________________________________________________________________
	* fixes for groffer 0.9.0

	* groffer.sh: enhance version information
	`groffer -v|--version' now print:
	- groffer's version number and date
	- the string `is part of '
	- groff's version information (version number and copyright),
	  but not groff's `called subprograms' information.
	
	* groffer.sh: minor fixes
	- Fix the argument parser to process argument `-' correctly.
	- Some display programs have trouble with empty input; feed a
	  line consisting of a single space character in this case for
	  all display modes (not for source or groff modes).

	* TODO:
	fix entry `shoop' (not 'shopt').

2002-06-28  Bernd Warken 
	________________________________________________________________
	* release of groffer 0.9.0

	* groffer.sh: new mode `pdf'
	- PDF (Portable Document Format):
	  -> Transform groff `ps' output into pdf using `gs'.
	  -> Pro: PDF viewers provide text searching (!).
	  -> Con: the transformation is quite slow.
	  -> Not suitable as an auto mode.
	- New options `--pdf', `--pdf-viewer', `--mode pdf'.
	- Standard pdf viewers `xpdf' and `acroread'.
	- For `xpdf', choose zoom `z 3' for 100 dpi, `z 2' for 75 dpi.
	
	* groffer.sh: support bzip2 decompression
	- add test for `bzip2' with necessary options
	- extend functions `catz()' and `save_stdin()'.

	* TODO
	remove entry on `bzip' decompression (done).
	
	* groffer.man:
	- Document new `pdf' features.
	- Document new `bzip2' decompression.
	- Fix documentation for `--auto-modes'.
	
	* groffer.sh: minor fixes
	- Improve device tests in `tty' and `dvi' modes.
	- Internally, map mode `auto' to '' to facilitate tests.
	- Fix auto mode sequence to: `ps,x,tty' as was intended.

2002-06-25  Bernd Warken 

	* groffer.sh:
	Fix `source' mode.

	* groffer.man:
	Fix some indentations.

2002-06-23  Bernd Warken 
	________________________________________________________________
	* release of groffer 0.8

	* Makefile.sub: add copyright section

	* groffer.man:
	- Document the new options.
	- Revise the documentation of the modes.
	- Document the configuration files in new section `FILES'.
	- Redesign section `EXAMPLES'.
	- Remove documentation for `-W'.
	
	* groffer.sh: new debugging features
	- Disabled by default; enabled by environment variables.
	- Add landmark() to catch typos with quotes.
	- Add a function call stack for suitable functions; implemented
	  as within the argument checker func_check().
	- This implies the need to provide `return' with some clean-up
	  facility; implemented as `eval "$_return_..."'.
	- Add option `--debug' to enable debugging at run-time.
	- Actually, the groffer script uses only shell builtins found
	  in `ash' (a subset of POSIX) and POSIX `sed' as the only
	  external shell utility.
		
	* groffer.sh: customization of viewers
	- In `groff' mode, the groffer viewing facilities are disabled.
	- The postprocessor option `-P' costumizes the viewer only in
	  some situations in the `groff' mode, so a new infrastructure
	  for viewer customization is necessary.
	- Allow to specify arguments to the viewer programs specified
	  in `--*-viewer()'.
	- Implement some of the essential X Toolkit resource options in
	  groffer, but with use a leading double minus.
	  -> `--bd': set border color.
	  -> `--bg', `--background': set background color.
	  -> `--bw': set border width.
	  -> `--display': set X display.
	  -> `--geometry': set size and position of viewer window.
	  -> `--fg', `--foreground': set foreground color.
	  -> `--ft', `--font': set font.
	  -> `--resolution': set X resolution in dpi.
	  -> `--title': set viewer window title.
	  -> `--xrm': set X resource.
	- Remove misnamed option `--xrdb'.
	
	* groffer.sh: new mode structure
	- New Postcript mode `ps' (`--ps'):
	  -> default viewers: gv,ghostview,gs_x11,gs;
	  -> `--ps-viewer' sets the Postscript viewer.
	- New mode `www' (`--www') for displaying in a web browser:
	  -> default browsers: mozilla,netscape,opera,amaya,arena;
	  -> `--www-viewer' sets the web browser.
	- New dvi mode (`--dvi'); default viewer `xdvi':
	  -> default viewers: xdvi,dvilx;
	  -> `--dvi-viewer' sets the dvi viewer.
	- New mode `auto':
	  -> active if no other mode is given or by new option `--auto';
	  -> selects from a sequence of modes that are tested until one
	    of them succeeds.
	  -> the default mode sequence is actually `ps', `x', `tty'.
	  -> `--default-modes' sets this mode sequence as a comma
	     separated string of program names, optionally each one
	     with arguments).
	- New mode `groff':
	  -> process input like groff, ignore viewing options.
	  -> activated by new option `--groff'.
	  -> automatically active with one of `-V', `-X', `-Z'.
	- Revise `tty' mode:
	  -> allow several text devices.
	  -> 
	- Reorganize the mode management:
	  -> new mode setting option `--mode'.
	  -> logically separate source, groff, and display modes.
	  -> intermediate output mode is now part of mode groff; remove
	     any special features around `-Z'.
	- Update usage() to reflect the new option structure.

	* groffer.sh: add configuration files
	- `/etc/groff/groffer.conf' system-wide configuration.
	- `${HOME}/.groff/groffer.conf' user configuration.
	- The configuration file are shell scripts for now; later
	  implementations can identify this from the `#! /bin/sh' line.
	
	* groffer.sh: new data structure `list':
	- Implement a `list' data structure as a string consisting of
	  single-quoted elements, separated by a space character;
	  embedded single-quotes are escaped.

	* groffer.sh: new option parser based on `list':
	- Write new option parser based on `list', compatible to both
	  POSIX getopts() and GNU getopt().
	- Long options are now available on GNU and non-GNU systems.
	- Get rid of POSIX getopts() and GNU getopt().
	- the `-W--longopt' construct is now obsolete; remove it.
	- add test/function for `unset'.
	- Option strings are now implemented as `list's in order to
	  allow unusual characters in options.
	- Parse $MANOPT first; translate essential arguments into
	  groffer options.
	
	* groffer.man:
	- determine prompt length for `.Shell_cmd'* dynamically.
	- naming scheme for static strings and registers changed to
	  `namespace:macro.variable'.

	
2002-06-16  Werner Lemberg  <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 
	________________________________________________________________
	* 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 
	________________________________________________________________
	* release of groffer 0.6

	This is almost a complete rewrite since groffer 0.5 .
	________________________________________________________________
	* Documentation
	
	* groffer.man:
   	- Apply the changes done in www.tmac (.URL and .MTO)
	- Replace \fP by \f[].
	- Redesign and rewrite most macros.
	- Include the documentation for the new features.
	- Greatly enlarge section ENVIRONMENT
	- Add examples.

	* TODO:
	- Start a TODO file with several sections.

	* ChangeLog:
	Due to the many changes, shorten and rearrange the entries
	since groffer 0.5 .
	________________________________________________________________
	* Shell compatibility

	* groffer.sh:
	- Due to possible conflicts in old BSD versions, `[]' was
	  replaced by `test'; the `test' options `-a' and `-o' were
	  replaced by multiple calls of `test'.
	- Write interface to the `sed' command `s' to become
	  independent of the delimiter character.  Rewrite all text
	  manipulating function to use this new scheme.  The new
	  functions are named `string_*'.
	- `tr' is not needed any longer, replaced by `sed'.
	- `grep' is not needed any longer, mostly replaced by `case'.
	- Revision of test for `getopt'.
	- Remove `set -a'; explicitly export variables.
	- The only external programs used are POSIX `sed' and the
	  fallback to `apropos'.  All other program calls were
	  replaced by shell builtins and functions.
	
	________________________________________________________________
	* Cosmetics

	* groffer.sh:
	- Implement a prefix based naming scheme for local variables
	  and functions (OOP-like).
	- Introduce variables for white space (better readability with
	  $IFS).
	- Store the names of the processed filespecs into a variable
	  instead of a temporary file.
	- Error-prone shell constructions were replaced by functions
	  with a simple interface.
	- To avoid too long pipes, replace supercat() by do_fileargs();
	  every input file is handled independently.

	________________________________________________________________
	* New features:
	- Add support for more X devices (e.g. X75-12 and X100-12).
	- Add long option `--intermediate_output' to `-Z'.
	- Make the options for mode selection clobber each other.
	- Add option `--mode' with an argument having the following
	  values:
	  `X': force displaying in X, same as options `-X';
	  `tty': display with a pager on text terminal; same as `--tty';
	  `source', `default', `auto', etc.
	- Make the handling of the X mode like in groff (e.g. -X -Tps).
	- Make resolution for gxditview behave like groff (default
	  75 dpi).
	- Add environment variable $GROFFER_OPT to preset groffer
	  options.

	________________________________________________________________
	* implement most of the functionality of GNU `man'.

	- Add all `man' long options to groffer.
	- Add all `man' environment variables.
	- Parse and use content of `$MANOPT'.
	- The precedence of the options and environment variables
	  is regulated like in GNU `man'.
	- Force the option `--manpath' to have a colon-separated
	  argument like GNU `man'.
	- Support `man section name' calling convention.
	- Remove all dependencies on `man -w'.

	* groffer.sh:
	- Add the new features above.
	- Rewrite the search algorithm for man pages.
	- Remove searching with `man -w' (problems with space
	  characters in file names).
	- Fix and complement usage().
	- The filespec parsers gets a function of its own do_manpage().
	
	
2002-01-08  Bernd Warken 
	
	* groffer 0.5 (beta) released

	* groffer.man:
	- Fix hyphenation problems with macros describing options.
	- Fix the handling of some `-' characters.
	- Examples of shell commands now print in font CR instead of CB.
	- Remove documentation for option `-X'.
	- Add documentation for option `--dpi'.
	
	* groffer.sh:
	- New method for creating temporary files, based on process
	  IDs.  This is reliable enough and suitable for GNU and POSIX.
	- Run gxditview in a new shell instantiation for having a clean
    	  handling of the temporary files when running in the
	  background.
	- Revision of the retrieving method for the window title.
	- Empty input is now tolerated.
	- Export the variables that are set before the call of `set -a'.
	- Function usage() corrected and updated.
	- Unnecessary stuff removed.
	- Comments adjusted.
	- Pass option `-X' to groff, i.e. force X output with 75 dpi.
	- Implement option `--dpi' for setting the resolution for the X
	  viewer, which had already been documented in earlier versions.

2002-01-07  Bernd Warken 

	* groffer 0.4 (beta) released (as groff `contrib')
	
	* groffer.man:
	- New features documented.
	- Macros stream-lined.
	- Section EXAMPLES added.
	
	* groffer.sh:
	- System tests added/optimized.
	- Speed/memory optimizations by defining some shell functions
	  alternatively depending on the text results.
	- Use `gzip' for decompression instead of `zcat'.
	- Signal handling added for clean exiting by `trap'.
	- Temporary files exist only as long as necessary.
	- Setup of path for man-pages moved after the option parsing.
	- Fixed a bug in determining the path for man-pages.
	- Fixed a bug in the handling of non-groffer options.

	* New features:
	- New option --tty for forcing paging on text terminal.
	- New option --no-man for disabling the man-page feature.
	- Implement reserved POSIX -W feature to simulate long options.
	- gxditview is now run as a background process.

2002-01-05  Werner LEMBERG  <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 

	* groffer 0.3 (alpha) released (still stand-alone package).

	* GNU and POSIX are supported (POSIX without long options).

	* New options : --man, --mandb, --title, --xrdb

	* Support for command line arguments with embedded single space
	characters (GNU only) .

	* Several search methods for man-pages when no `man -w' is
	available ($MANPATH, mandb, a default path).

	* Language support for man-pages.

	* Recognize the following filespecs as man-page parameters:
	  man:name(section), man:name, name.section, name.
	
2001-12-03  Bernd Warken 

	* Stand-alone package for groffer 0.2 (alpha) created
	Files: groffer, groffer.man, Makefile, TODO, ChangeLog
	
2001-12-02  Bernd Warken 

	* groffer 0.2 (alpha) program released.

	* Name changed from `groffview' to `groffer'.

	* Comments added.
	
	* Name changed from `groffview' to `groffer'.

	* Options harmonized with groff.
	New options : -Q --source, -T --device, -X .
	Other options known from groff are passed unchanged.

	* 100 dpi as default, 75 dpi only in emergency situations.

	* Bugs with temporary files fixed.

	* Code restructured and comments added.
	
2001-11-28  Bernd Warken 

	***** groffview 0.1 (experimental) and groffview.man released
	(predecessor of groffer, shell script)

	* Options : -h --help, -v --version
	
	* Search for man-pages based on $MANPATH

	* development of `groffview' shell script started

2001-11-28  Bernd Warken
	________________________________________________________________
	License

	Copyright (C) 2001,2002,2003,2004 Free Software Foundation, Inc.
	Written by Bernd Warken
	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.