======================================================================== * README ======================================================================== Copyright (C) 1989-2006, 2008, 2009, 2012-2013 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This is the GNU `groff' document formatting system. The version number is given in the file VERSION. Included in this release are implementations of `troff', `pic', `eqn', `tbl', `grn', `refer', `-man', `-mdoc', `-mom', and `-ms' macros, and drivers for `PostScript', `PDF', `TeX DVI' format, `HP LaserJet 4' printers, `Canon CAPSL' printers, `HTML' and `XHTML' formats (beta status), and typewriter-like devices. Also included is a modified version of the Berkeley `-me' macros, the enhanced version `gxditview' of the X11 `xditview' previewer, and an implementation of the `-mm' macros contributed by Joergen Haegg (jh@axis.se). See the file `INSTALL' for installation instructions. You require a C++ compiler. The file `NEWS' describes recent user-visible changes to `groff'. `groff' is free software. See the file `COPYING' for copying permission. The file `PROBLEMS' describes various problems that have been encountered in compiling, installing, and running `groff'. The file `MORE.STUFF' contains information about add-on packages useful for groff. The most recent released version of `groff' is always available by anonymous ftp from `ftp.gnu.org' in the directory `gnu/groff'. The current development version of `groff' is available from a `CVS' repository. You can access it by first selecting a parent directory in which to create a working copy (call it, say, `~/cvswork'), and then executing the commands cd ~/cvswork cvs -d:pserver:anonymous@cvs.savannah.gnu.org/sources/groff -z5 co groff This creates a subdirectory, `~/cvswork/groff', with a `checked out' copy of the `CVS' repository. An update of this working copy may be achieved, at any later time by invoking the commands cd ~/cvswork/groff cvs -z5 update -dP Please read the `CVS' info pages for further details. Finally, it is possible to access the `CVS' with a web browser by pointing it to http://savannah.gnu.org/cvs/?group=groff Alternatively, you can download snapshots (which are updated twice a day). The complete `groff' source as a single file is available at http://groff.ffii.org/groff/devel/groff-current.tar.gz A diff file relative to `groff-', the latest official `groff' release, is available at http://groff.ffii.org/groff/devel/groff--current.diff.gz Assuming that `groff-.tar.gz' and `groff--current.diff.gz' are in the same directory, do the following to apply the diff file: tar xzvf groff-.tar.gz cd groff- gunzip -c ../groff--current.diff.gz | patch -p1 Depending on your requirements, you may need at least some of the following tools to build `groff' directly from its source: ghostscript the psutils package the netpbm package texinfo 4.8 bison >= 1.875b or byacc Note that `texinfo' and `bison' or `byacc' are required only for building from `CVS' sources (either a checked out working copy, or a daily snapshot). They are not required for building from a stable release tarball. Also note that the version numbers stated are the minimum supported. No version of `texinfo' < 4.8 works, and the original release of `bison' 1.875 is known not to work; you *may* find that `bison' releases < 1.875 work, but in case of difficulty, please update to a later version *before* posting a bug report. For *all* sources, you need ghostscript for creation of either `PDF' or `HTML' output; the `netpbm' and `psutils' packages are required only for `HTML' output (and for compilation from the CVS). If you don't intend to produce output in either of these formats, then these packages are unnecessary. Additionally, producing `PDF' output directly with the `gropdf' device needs a working installation of Perl. The same is true for the `chem' preprocessor. In Linux Debian, the installation of `texinfo' is dangerous. For it creates a file `install-info' that blocks the system installation. So the created `/usr/local/bin/install-info' must be renamed. The `groff' configure script searches for the X11 headers and libraries `Xaw' and `Xmu'. So the corresponding developer packages of your system must be installed, otherwise `groff' does not install `gxditview' and the `-TX*' devices. In Debian, the developer packages are `libxaw7-dev' and `libxmu-dev'. Please report bugs using the form in the file `BUG-REPORT'; the idea of this is to make sure that FSF has all the information it needs to fix the bug. At the very least, read the `BUG-REPORT' form and make sure that you supply all the information that it asks for. Even if you are not sure that something is a bug, report it using `BUG-REPORT': this enables us to determine whether it really is a bug or not. Three mailing lists are available: bug-groff@gnu.org for reporting bugs groff@gnu.org for general discussion of groff groff-commit@gnu.org a read-only list showing commitments to the CVS repository To subscribe, send a mail to -request@ (example: groff-request@gnu.org for the `groff' list) with the word `subscribe' in either the subject or body of the email (don't include the quotes). Alternatively, you may subscribe by visiting the web pages at http://lists.gnu.org/mailman/listinfo/bug-groff http://lists.gnu.org/mailman/listinfo/groff http://lists.gnu.org/mailman/listinfo/groff-commit Each of these web pages also provides a link to a browseable archive of postings to the corresponding mailing list. GNU `groff' was written by James Clark . It is now maintained by Ted Harding and Werner Lemberg . ======================================================================== * README.MinGW ======================================================================== Copyright (C) 2003, 2004, 2007, 2008, 2009 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. README.MinGW ============ Contributed by Keith Marshall (keith.d.marshall@ntlworld.com) INTRODUCTION ------------ This file provides recommendations for building a Win32 implementation of GNU Groff, using the MinGW port of GCC for Microsoft (TM) Windows-32 platforms. It is intended to supplement the standard installation instructions (see file INSTALL); it does not replace them. You require both the MinGW implementation of GCC and its supporting MSYS toolkit, which provides a Win-32 implementation of the GNU bash shell, and a few other essential utilities; these may be obtained from http://sourceforge.net/projects/mingw by following the appropriate download links, where they are available as self-extracting executable installation packages. If installing both from scratch, it is recommended that MinGW is installed first, as the MSYS installer can then automatically set up the proper environment for running MinGW. Additionally, if you wish to compile groff with support for its HTML (and XHTML) output capability, some additional tools are required as decribed in the section PREREQUISITES FOR HTML OUTPUT later in this file. BUILDING GROFF WITH MINGW ------------------------- *** WARNING *** Before commencing this procedure, you should ensure that you are running the MSYS shell in a *native* Win32 console window, and not in any window managed by the rxvt emulator provided with MSYS; (this emulator suffers from various known defects, which will prevent successful completion of a groff build). ****** Assuming that you have obtained the appropriate groff distribution, and that you are already running an MSYS shell, then the configuration, compilation, and installation of groff, using MinGW, is performed in much the same way as it is described in the INSTALL file, which is provided with the groff distribution. The installation steps are summarised below: 1. Change working directory to any suitable location where you may unpack the groff distribution; you must be authorized for write access. Approximately 30MB of free disk space are needed. 2. Unpack the groff distribution: tar xzf /groff-.tar.gz This creates a new sub-directory, groff-, containing an image of the groff source tree. You should now change directory, to make this ./groff- your working directory. 3. If you are intending to build groff with support for HTML (and XHTML) output, then you must now ensure that the prerequisites described in the later section PREREQUISITES FOR HTML OUTPUT are satisfied, before proceeding to build groff; in particular, please ensure that all required support programs are installed in the current PATH. 4. You are now ready to configure, build, and install groff. This is accomplished using the conventional procedure, as described in the file INSTALL, i.e. ./configure --prefix= ... make make install Please observe the syntax for the configure command, indicated above; the default value for --prefix is not suitable for use with MinGW, so the --prefix= option must be specified, where is the chosen MS-Windows directory in which the groff application files are to be installed (see the later section entitled CHOOSING AN INSTALLATION PATH). Any other desired configuration options may also be specified, as described in the standard groff installation instructions. 5. After completing the above, groff should be successfully installed; the build directory is no longer required; it may be simply deleted in its entirety. Alternatively, you may choose to keep it, but to remove all files which can be reproduced later, by repeating the configure, make and make install steps; this is readily accomplished by the command make distclean This completes the installation of groff; please read the final sections of this file, GROFF RUNTIME ENVIRONMENT and CAVEATS AND BUGS, for advice on setting up the runtime environment, and avoiding known runtime problems, before running groff. CHOOSING AN INSTALLATION PATH ----------------------------- It may be noted that the above instructions indicate that the ./configure command must be invoked with an argument specifying a preference for --prefix=, whereas the standard groff installation instructions indicate that this may be omitted, in which case it defaults to --prefix=/usr/local. In the case of building with MinGW, the default behaviour of configure is not appropriate for the following reasons. o The MSYS environment creates a virtual UNIX-like file system, with its root mapped to the actual MS-Windows directory where MSYS itself is installed; /usr is also mapped to this MSYS installation directory. o All of the MSYS tools, and the MinGW implementation of GCC, refer to files via this virtual file system representation; thus, if the --prefix= is not specified when groff is configured, `make install' causes groff to be installed in /local. o groff needs to know its own installation path, so that it can locate its own installed components. This information is compiled in, using the exact form specified with the --prefix= option to configure. o Knowledge of the MSYS virtual file system is not imparted to groff; it expects the compiled-in path to its components to be a fully qualified MS-Windows path name (although UNIX-style slashes are permitted, and preferred to the MS-Windows style backslashes, to demarcate the directory hierarchy). Thus, when configuring groff, if --prefix= is not correctly specified, then the installed groff application looks for its components in /usr/local, and most likely doesn't find them, because they are actually installed in /local. It is actually convenient, but by no means a requirement, to have groff installed in the /usr/local directory of the MSYS virtual file system; this makes it easy to invoke groff from the MSYS shell, since the virtual /usr/local/bin is normally added automatically to the PATH (the default PATH, as set in MSYS's /etc/profile), when MSYS is started. In order to install groff into MSYS's /usr/local directory, it is necessary to specify the fully qualified absolute MS-Windows path to this directory, when configuring groff, i.e. ./configure --prefix=/local ... For example, on a system where MSYS is installed in the MS-Windows directory D:\MSYS\1.0, the MSYS virtual path /usr/local resolves to the absolute MS-Windows native path D:\MSYS\1.0\local (the /usr component of the MSYS virtual path does not appear in the resolved absolute native path name since MSYS maps this directly to the root of the MSYS virtual file system). Thus, the --prefix option should be specified to configure as ./configure --prefix=D:/MSYS/1.0/local ... Note that the backslash characters, which appear in the native MS-Windows form of the path name, are replaced by UNIX-style slashes in the argument to configure; this is the preferred syntax. Also note that the MS-Windows device designator (D: in this instance) is prepended to the specified path, in the normal MS-Windows format, and that, since upper and lower case distinctions are ignored in MS-Windows path names, any combination of upper and lower case is acceptable. PREREQUISITES FOR HTML OUTPUT ----------------------------- If you intend to use groff for production of HTML or XHTML output, then there are a few dependencies which must be satisfied. Ideally, these should be resolved before attempting to configure and build groff, since the configuration script does check them. In order to produce HTML or XHTML output, you first require a working implementation of Ghostscript; either the AFPL Ghostscript or the GNU Ghostscript implementation for MS-Windows should be suitable, depending on your licensing preference. It is highly recommended to use version 8.11 or higher due to bugs in older versions. These may be obtained, in the form of self-installing binary packages, by following the download links for the chosen licensing option, from http://sourceforge.net/projects/ghostscript. Please note that these packages install the Ghostscript interpreter required by groff in the ./bin subdirectory of the Ghostscript installation directory, with the name gswin32c.exe. However, groff expects this interpreter to be located in the system PATH, with the name gs.exe. Thus, to ensure that groff can correctly locate the Ghostscript interpreter, it is recommended that the file gswin32c.exe should be copied from the Ghostscript installation directory to the MSYS /usr/local/bin directory, where it should be renamed to gs.exe. In addition to a working Ghostscript interpreter, you also require several image manipulation utilities, all of which may be scavenged from various packages available from http://sourceforge.net/projects/gnuwin32, and which should be installed in the MSYS /usr/local/bin directory, or any other suitable directory which is specified in the PATH. These additional prerequisites are 1. from the netpbm--bin.zip package: netpbm.dll pnmcrop.exe pnmcut.exe pnmtopng.exe pnmtops.exe 2. from the libpng--bin.zip package: libpng.dll 3. from the zlib--bin.zip package: zlib-1.dll, which must be renamed to zlib.dll 4. from the psutils--bin.zip package: psselect.exe Note that it is not necessary to install the above four packages in their entirety; of course, you may do so if you wish. Further note that you are advised to avoid the netpbm-10.27 release from the GnuWin32 download repository, as its pnmtopng.exe has been reported to fail on even simple conversions, resulting in failure of the groff build process; the earlier netpbm-10.18.4 has been found to work successfully. Also, you may find it necessary to use libpng-1.2.7, rather than libpng-1.2.8, in conjunction with this earlier release of netpbm. GROFF RUNTIME ENVIRONMENT ------------------------- The runtime environment, provided to groff by MSYS, is essentially the same as would be provided under a UNIX or GNU/Linux operating system; thus, any environment variables which may be used to customize the groff runtime environment have similar effects under MSYS, as they would in UNIX or GNU/Linux, with the exception that any variable specifying a path should adopt the same syntax as a native MS-Windows PATH specification. There is, however, one known problem which is associated with the implementation of the MS-Windows file system, and the manner in which the Microsoft runtime library (which is used by the MinGW implementation of GCC) generates names for temporary files. This known problem arises when groff is invoked with a current working directory which refers to a network share, for which the user does not have write access in the root directory, and there is no environment variable set to define a writeable location for creating temporary files. When these conditions arise, groff fails with a `permission denied' error, as soon as it tries to create any temporary file. To specify the location for creating temporary files, the standard UNIX or GNU/Linux implementation of groff provides the GROFF_TMPDIR or TMPDIR environment variables, whereas MS-Windows applications generally use TMP or TEMP; furthermore, the MS-Windows implementations of Ghostscript apparently support the use of only TEMP or TMPDIR. To avoid problems with creation of temporary files, it is recommended that you ensure that both TMP and TEMP are defined, with identical values, to point to a suitable location for creating temporary files; many MS-Windows boxes have them set already, and groff has been adapted to honour them, when built in accordance with the preceding instructions, using MinGW. CAVEATS AND BUGS ---------------- There are two known issues, observed when running groff in the MinGW/MSYS environment, which would not affect groff in its native UNIX environment: o Running groff with the working directory set to a subdirectory of a network share, where the user does not have write permission in the root directory of the share, causes groff to fail with a `permission denied' exception, if the TMP environment variable is not appropriately defined; it may also be necessary to define the TEMP environment variable, to avoid a similar failure mode, when using the -Thtml or -Txhtml output mode of groff. This problem is more fully discussed in the preceding section, GROFF RUNTIME ENVIRONMENT. o When running groff (or nroff) to process standard input, where the standard input stream is obtained directly from the RXVT console provided with MSYS, groff cannot detect the end-of-file condition for the standard input stream, and hangs. This appears to be caused by a fault in the MSYS implementation of RXVT; it may be worked around by either starting MSYS without RXVT (see the comments in the MSYS.BAT startup script); in this case standard input is terminated by typing followed by , on a new input line. Alternatively, if you prefer to use MSYS with RXVT, you can enter the interactive groff command in the form cat | groff ... in which case terminates the standard input stream, in just the same way it does on a UNIX system; the cat executable provided with MSYS does seem to trap the end-of-file condition, and properly signals groff that the input stream has terminated. ======================================================================== * arch/djgpp/README ======================================================================== Copyright (C) 2000, 2009 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This is a port of GNU Groff to DJGPP v2.03 or later. Groff is the GNU version of document formatting tools related to `troff'. This README file describes how to build and install Groff on MS-DOS or MS-Windows systems using the DJGPP port of GNU C/C++ compiler and development tools. I. Installing the pre-compiled binary package ------------------------------------------ 1. Unzip the file groNNNb.zip (where NNN is the version number) preserving the directory structure (-d switch to PKUNZIP) from the main DJGPP installation directory. If you will use Groff on Windows 9X or Windows2000, use an unzip program which supports long filenames. 2. Groff binaries were configured so that they will look for their standard directories under the directory pointed to by the DJDIR environment variable, so it should work automatically if you have DJGPP installed. If you don't have a standard DJGPP installation, set the variable DJDIR to point to the directory where you unzip Groff. In this latter case, you will need to set additional environment variables: GROFF_TMAC_PATH=%DJDIR%/share/groff//tmac:%DJDIR%/share/groff/site-tmac GROFF_TYPESETTER=ascii GROFF_FONT_PATH=%DJDIR%/share/groff//font is something like `1.16.1' or `1.17'. In addition, you can set the variable GROFF_TMPDIR to point to a directory where you want Groff to create temporary files it needs for running its jobs (these files are automatically deleted when Groff exits). All of those variables are automatically set in the file DJGPP.ENV that is part of the standard DJGPP distribution djdevNNN.zip (where NNN is the DJGPP version number), so you only need to set them manually if you don't have DJGPP installed. Note that the GROFF_TYPESETTER variable sets the default Groff device to be `ascii', which is suitable for formatting man pages to be viewed on the terminal. Use the -T switch to generate output for other devices (e.g., -Tps for PostScript). 3. If your TMPDIR environment variable points to a RAM drive, you might consider changing GROFF_TMPDIR to point to a directory on a real disk drive, especially if you intend to generate PostScript output, because RAM disks are typically small (2-3 MBytes) which might be not enough for formatting large documents. 4. Read the docs. It comes as formatted manual pages called *.1, *.5 and *.7 which unzip into your man/ subdirectory. You can read them with a pager such as GNU Less (recommended, as Less will use colors for bold and underlined text) or with Info (which will remove the bold/underline attributes). Another alternative is to use Emacs built-in man page reader; the DJGPP FAQ lists other possibilities. Beginning with version 1.15, Groff comes with an Info manual; type "info -f groff" to read it. The Info manual is still under construction, so some sections are empty. If you want to add a Groff entry to the main Info menu in the file DIR, chdir to the `info' subdirectory of the main Groff installation directory and run this command: install-info --dir-file=dir groff.info After you do that, "info groff" will also work. 5. For those who only need Groff to format man pages and don't like reading the docs, here's a minimal cookbook: groff -man -s foo.1 > foo.man where `foo.1' is the troff source of the man page and `foo.man' is the formatted page. If you need to view the man page, say this: groff -man -s foo.1 | less You can also use the DJGPP clone of the Unix `man' command, in which case `man' runs the above command for you automatically. Here's how you print man pages on a PostScript printer: groff -man -s -Tps foo.1 > prn And this is for a LaserJet4 printer: groff -man -s -Tlj4 foo.1 > prn Printing the documents produced by Groff is possible either by redirecting Groff's standard output to the local printer device, like shown above, or by using the `-l' switch to Groff. The latter possibility causes Groff to pipe its output to a program whose name and arguments appear in the files named `DESC' in each of the `devFOO' subdirectories of the %DJDIR%/share/groff//font directory; for example, the file devps/DESC is used by "groff -Tps". The relevant line in these files begins with the word "print". As configured, when invoked with the `-l' switch, Groff will call `cat' (from GNU Textutils) to pipe its output to the default printer device for -Tps, -Tlbp and -Tlj4 options, and it will call `dvilj4' (from the dvljNNNb.zip package) for -Tdvi option. If you don't have these programs installed, you can edit the respective `DESC' files to replace these commands with something else. The replacement program must be able to read its standard input and send its output to whatever printer you want. The "print" entry is assumed to be a shell command, so it can use redirection, pipes, and other shell features. Beginning with version 1.15, Groff can create HTML output, like this: groff -man -s -Thtml foo.1 > foo.html Producing HTML files sometimes requires Ghostscript to be installed, and, for gif images, ppmquant and ppmtogif as well. If you do not have these programs installed, Groff will print an error message, and the produced file will have links which will fail to resolve when you view it with a Web browser. 6. Some programs in the package are supplied as Unix shell scripts. While it is relatively easy to write a DOS batch file which will do the same, DOS doesn't allow to redirect input and output of a batch file. Since Groff tools are meant to be invoked in a pipe, the batch files are not very useful. The batch files are included in the binary distribution nonetheless. These scripts need the following utilities to run (in addition to the Groff programs they invoke): - bash - gawk - egrep - sed The `afmtodit' and `mmroff' utilities are Perl scripts, so you will need a Perl port to run them. All of these ports should be available from the DJGPP sites. If you need to run these scripts and batch files, you have to install the port of bash (or another Unix-like shell) and the above-mentioned utilities called by the script. Alternatively, just look inside the shell script and invoke the programs it calls manually. To run the scripts with redirection, invoke them via the shell, like this: "sh mmroff > foo". 7. Note that Groff programs use floating point, so you will need an FP emulator if your machine doesn't have an FPU. The binary distribution includes the emulator, in case you don't have the DJGPP development environment installed. Please refer to the DJGPP FAQ list in case you have any problems with the emulator. 8. The package does not include the directories under share/groff//font whose names begin with "devX": these are needed on X-Windows for running the gxditview program, which is not supported by this port. 9. Due to 8+3 limitations of DOS filesystems, several files were renamed: - groff_mdoc.samples.7 was renamed to groff-mdoc_samples.7 and groff_mmse.7 to groff-mmse.7. The latter was also converted from Latin-1 encoding to codepage 437. II. Building Groff from sources --------------------------- 1. To build Groff, you will need the following tools (the file name in parentheses is what you need to download from one of the DJGPP sites): - Standard DJGPP development environment (djdev203.zip) - GNU C compiler (gcc2721b.zip) - GNU C++ compiler (gpp2721b.zip) - GNU Make 3.79 (mak379b.zip) - Bash v2.03 (bsh203b.zip) - Fileutils 3.16 (fil316b.zip) - Textutils 2.0 (txt20b.zip) - Sh-utils 1.12 (shl112b.zip) - Sed 3.02 (sed302b.zip) - Gawk 3.04 (gwk304b.zip) - Grep 2.4 (grep24b.zip) - Bison (only if you change one of the *.y files) Note that you don't need to install libg++ (lgpNNNb.zip) since Groff doesn't use any C++ classes except its own. Any versions of the utilities later than what's mentioned above should also do; in particular, GCC 2.95.2 was tested and Groff built okay with it. Versions older than in the above list might also work, but I don't guarantee that; you are on your own. Special considerations apply if you have GCC 2.8.1 installed, and cannot upgrade to a later version. See paragraph 4 below. After you install these tools, make sure you have a ``symlink'' to bash.exe called sh.exe and a ``symlink'' to gawk.exe called awk.exe. If not, go to the DJGPP bin/ subdirectory and type the following words of wisdom from the DOS prompt: ln -s bash.exe sh.exe ln -s gawk.exe awk.exe (`ln' is part of GNU Fileutils, see above.) 2. Unzip the source distribution groXYZs.zip (where XYZ is the version number) preserving the directory structure (-d switch to PKUNZIP) from the main DJGPP installation directory. (If you are building Groff on Windows 9X or Windows 2000, use an unzip program which supports long filenames.) This creates directory gnu/groff-X.YZ and unzips the sources there. If you are building from the official GNU distribution, unpack the .tar.gz archive like this: djtar -x groff-X.YZ.tar.gz (DJTAR is part of the standard DJGPP development distribution.) 3. Groff sources on DJGPP sites are already configured for the current version of DJGPP. If that is the version you have, then you can just chdir to gnu/groff-X.YZ and say "make" to build the entire package (if you have GCC 2.8.1, see the next paragraph). If you have version of DJGPP other than the current one, or if you build the official GNU distribution, or if you prefer to configure the package so that it defaults to the directory structure on your machine, or need to change some options (e.g., compile with different optimization options), you will have to reconfigure Groff. To this end, use the CONFIG.BAT batch file in the DJGPP subdirectory: arch\djgpp\config You can configure and build Groff from outside its source directory. In that case, you need to pass the full path to the source directory as an argument to CONFIG.BAT, like this: d:\gnu\groff-1.16\arch\djgpp\config d:/gnu/groff-1.16 Note that you MUST use forward slashes in the path you pass to CONFIG.BAT, or else it may fail. (For versions of Groff other than 1.16, change the above command accordingly.) 4. If your version of GCC is 2.8.1, you cannot build the preconfigured package without some tinkering. The DJGPP port of GCC 2.8.1 had a bug in its C++ configuration, whereby the file _G_config.h erroneously indicated that the header is available, and also undefined the symbol NULL. This causes several files in the Groff distribution to fail to compile. The easiest way to solve this is to upgrade to a later version of GCC; then you can simply say "make" to build the preconfigured package. If this is not an option, you will have to edit the file lang/cxx/_G_config.h and change this line: #define _G_HAVE_SYS_SOCKET 1 to say this instead: #define _G_HAVE_SYS_SOCKET 0 The problem with redefining NULL should not happen with DJGPP v2.03 or later. But if you still see compilation errors which say "`NULL' undeclared", comment out the line in _G_config.h that says this: #undef NULL Alternatively, you can reconfigure the package as described in the previous paragraph, before building it. 5. After the configure script exits, say "make" to build Groff. Groff is a large package, and it might take a few minutes to build, depending on your CPU, so you might as well go for a coffee while it grinds away. 6. Test the package that you have built. A batch file T-GROFF.BAT in the DJGPP subdirectory is supplied for that purpose. Most of the commands there are commented out, since I cannot possibly know what kind of printer do you have and which additional programs, such as Less, do you have installed. The only command that runs by default will format a large document and print it to the screen. Read the comments in the batch file, uncomment additional lines as you see fit and run the batch file to see that you get the document printed as you'd expect. (Btw, the document that the batch file prints is an introduction to the entire Groff package, so you might as well read it to make yourself familiar with the programs.) Note that the batch file sets a lot of environment variables; if you get ``Out of environment space'' messages, launch a subsidiary COMMAND.COM with plenty of environment space, like so: command.com /e:3000 then invoke T-GROFF.BAT from that COMMAND.COM. 7. Install the package by typing "make install". This will copy all the binaries, the auxiliary files (fonts, macros, etc.) and the docs into their places. If you configured the package for your system, these are precisely the directories where the files should remain (with the exception of the man pages, see below). If you use the default configuration, the files will be installed under the top DJGPP installation directory. Alternatively, you could instruct Make explicitly where to install the package by setting the `prefix' variable. For example: make install prefix=c:/groff "make install" doesn't format the man pages, it just copies them into subdirectories of the %DJDIR%\MAN directory. If you need to keep formatted pages in your man/ subdirectory, you will need to format them. Use the commands shown in chapter I, section 5 above to do that, and redirect its output to the appropriate catN subdirectory. Alternatively, you could format the pages when you need to view them (the DJGPP clone of `man' will automatically format them). Consult the installation instructions for pre-compiled binaries above, for more info about installing and using Groff. 8. You can safely delete the directories under share/groff//font whose names begin with "devX": these are needed on X-Windows which is not supported by this port. ======================================================================== * contrib/chem/README.txt ======================================================================== `chem' is a `roff' language to generate chemical structure diagrams. `@g@chem' is a `groff' preprocessor that produces output suitable for the `@g@pic' preprocessor. The original version of `chem' is an `awk' script written by Brian Kernighan . The source files of the `awk' version of `chem' are available at . This project is a rewrite of `chem' in Perl for the GNU `roff' project `groff'. It was written under Perl v5.8.8, but at least Perl v5.6 is needed to run the Perl version of `chem'. In comparison to the original `awk' version of `chem', the Perl version does the following changements: - the options -h, --help, -v, --version to output usage and version information are added. - remove some functions `inline', `shiftfields', and `set' and some variables that are used only once. The subdirectory `examples/' contains example files for chem. They are written in the `chem' language. The file names end with .chem. ####### License Last update: 5 Jan 2009 Copyright (C) 2006, 2009 Free Software Foundation, Inc. Written by Bernd Warken . This file is part of `chem', which is part of `groff'. `groff' is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. `groff' is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ####### Emacs settings Local Variables: mode: text End: ======================================================================== * contrib/gdiffmk/README ======================================================================== gdiffmk is approximately a recreation of the original Bell Labs/AT&T diffmk command for troff/nroff documents, with enhancements. It should not be confused with `diffmk' commands that operate on XML. The inspiration for this code was a Perl 2 version written in 1989 by Randal L. Schwartz. See landfield.com/software/comp.sources.misc/archive-name/volume06/diffmk.p.gz The command also attempts to reproduce some of the functionality of the old `nrchbar' command. See open-systems.ufl.edu/mirrors/ftp.isc.org/usenet/comp.sources.unix/volume10/nrchbar.Z Thanks to Werner Lemberg for help in making the package more portable and fit into the GNU groff source structure. Gnu diff(1) with the -Dname option does all of the work and sed(1) translates the output into something groff/troff/nroff can handle. Note the BUGS on the man page. The `tests' directory contains simple tests. `runtests run' runs them and compares the output against baseline files. Calling `runtests' without argument gives the usage. ---------------------------------------------------------------------------- Copyright (C) 2004, 2005, 2009 Free Software Foundation, Inc. Written by Mike Bianchi > This file is part of the gdiffmk utility, which is part of groff. groff is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. groff is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with groff; see the files COPYING and LICENSE in the top directory of the groff source. If not, write to the Free Software Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. ======================================================================== * contrib/groffer/README ======================================================================== README The `groffer' program is the easiest way to read documents written in some `roff' language, such as the `man pages', the manual pages in many operating systems. All `roff' preprocessors, such as `chem', are detected and executed automatically. Source files in this directory ChangeLog information on all changements for groffer versions 1.* Makefile.sub make file used by groff README this file, general description of the program version.sh information on version number and last update perl_test.pl test whether perl has a suitable version perl/ subdirectory for the Perl version, see perl/README_PERL shell/ subdirectory for the shell version, see shell/README_SH Input Input comes from either standard input or command line parameters that represent names of exisiting roff files or standardized specifications for searching man pages. All of these can be compressed in a format that is decompressible by `gzip' or `bzip2', including `.gz', `bz2', and `.Z'. `groffer' has many built-in `man' functionalities to find and read the manual pages on UNIX and similar operating systems. It accepts the information from an installed `man' program, but tries to find a man path by itself. `groffer' bundles all filespec parameters into a single output file in the same way as `groff'. The disadvantage of this is that all file name arguments must use the same groff language. To change this, the option parsing must be revised for large parts. It seems that this would create incompatibilities, so the actual option strategy is kept. Output All input is first sent to `grog' to determine the necessary `groff' command and then to `groff' together with all necessary preprocessors. So no special `groff' arguments must be given. But all `groff' options can be specified when this seems to be appropriate. The following displaying modes for the output are available: - Display formatted input with -- a PDF viewer, -- a Postcript viewer, -- a web browser, -- the X `roff' viewer `gxditview', -- a DVI viewer, -- a pager in a text terminal (tty). - Generate `groff' output on stdout without a viewer. - Generate the `groff intermediate output' on standard output without postprocessing. - Output the source code without any `groff' processing. - There are some information outputs without `groff' processing, such as by option `-V' and the `man' like `whatis' and `apropos' outputs. By default, the program tries to display a graphical device in X; on non-X text terminals, the `tty' text mode with a pager is tried by default. File access The shell and the Perl version of groffer now use umask of 077. This is a very strict security issue. It allows only access of the temporary files by the file owner. Compatibility `groffer' is compatible with the `man' program. It supports .so requests based on the man path and compressed files. That's more than `groff' does. Mailing lists For reporting bugs of `groffer', groff's free mailing list can be used. For a general discussion, the mailing list is more useful, but one has to subscribe to this list at http://lists.gnu.org/mailman/listinfo/groff. See the `README' file in the top directory of the `groff' source package for more details on these mailing lists. ####### License Last update: 5 Jan 2009 Copyright (C) 2003, 2004, 2005, 2006, 2009 Free Software Foundation, Inc. Written by Bernd Warken . This file is part of `groffer', which is part of `groff'. `groff' is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. `groff' is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ####### Emacs settings Local Variables: mode: text End: ======================================================================== * contrib/groffer/perl/README_PERL ======================================================================== README_PERL Special description for the Perl version of `groffer' The files related to the Perl version are perl/groffer.pl perl main source file for groffer perl/func.pl selection of functions needed for groffer.pl perl/man.pl selection of man functions needed for groffer.pl perl/split_env.sh shell script called from groffer.pl to split a variable perl/groffer.man manual file rewritten for the perl version of groffer perl/README_PERL this file perl_test.pl test whether perl has a suitable version version.sh information on version number and last update Compatibility This is the Perl version of groffer. It was written under Perl v5.8.8 and needs an installed Perl version of at least version 5.6.1. It was written in Linux, but it seems to be independent of the operating system. At least no directory slashes are used. For testing, `groffer.pl' may be used directly without a Makefile. By `make' this file will be transformed into the file `groffer' that will be installed. The following options were removed compared to the shell version of groffer: --shell --debug-func --debug-not_func --debug-lm --debug-shell --debug-stacks --debug-user They can be used, but they are just ignored. Otherwise, the Perl version has the same functionality as the shell version. Temporary files The Perl version keeps more files for debug mode than the shell version. The `file' and `so' temporaries are numbered and the files with .so request are copied. All .so requests are handled; this is an extension to `man' that deals only with the first .so request. Comparison of variable names in both groffer versions shell perl ======================================================================= $GROFFER_OPT $Env{GROFFER} $PATH @Path $_ADDOPTS_GROFF @Addopts_Groff $_ALL_PARAMS @ARGV $_APROPOS_PROG $Apropos_Prog $_APROPOS_SECTIONS $Opt{APROPOS_SECTIONS} $_AT $at $_AT_BINDIR_AT $at_at{BINDIR} $_AT_G_AT $at_at{G} $_AT_LIBDIR_AT $at_at{LIBDIR} $_BAD - $_BEFORE_MAKE $before_make $_CONF_FILES @Conf_Files $_CONF_FILE_ETC @Conf_Files $_CONF_FILE_HOME @Conf_Files $_DEBUG_FUNC_CHECK - $_DEBUG_KEEP_FILES @Debug{KEEP} $_DEBUG_LM - $_DEBUG_PRINT_FILENAMES @Debug{FILENAMES} $_DEBUG_PRINT_PARAMS @Debug{PARAMS} $_DEBUG_PRINT_SHELL - $_DEBUG_PRINT_TMPDIR @Debug{TMPDIR} $_DEBUG_STACKS - $_DEBUG_USER_WITH_STACK - $_DEFAULT_MODES $Default_Modes $_DEFAULT_RESOLUTION $Default_Resolution $_DEFAULT_TTY_DEVICE $Default_tty_Device $_DISPLAY_ARGS $Display{ARGS} $_DISPLAY_MODE $Display{MODE} $_DISPLAY_PROG $Display{PROG} $_ERROR - $_FILEARGS @Filespecs $_FILESPEC_ARG $Filespec_Arg $_FILESPEC_IS_MAN $Filespec_Is_Man $_FUNC_STACK - $_GOOD - $_GROFFER2_SH - $_GROFFER_LIBDIR $groffer_libdir $_GROFFER_SH _ $_GROFF_VERSION $Groff_Version $_GROFF_VERSION_PRESET $groff_version_preset $_HAS_BZIP $Has_bzip $_HAS_COMPRESSION $Has_Compression $_LAST_UPDATE $last_update $_MACRO_PACKAGES $Macro_Packages $_MACRO_PKG $Macro_Pkg $_MANOPT_ALL - $_MANOPT_EXTENSION - $_MANOPT_LANG - $_MANOPT_PAGER - $_MANOPT_PATH - $_MANOPT_SEC - $_MANOPT_SYS - $_MAN_ALL $Man{ALL} $_MAN_AUTO_SEC_CHARS $Man{AUTO_SEC_CHARS} $_MAN_AUTO_SEC_LIST @{$Man{AUTO_SEC}} $_MAN_ENABLE $Man{ENABLE} $_MAN_EXT $Man{EXT} $_MAN_FORCE $Man{FORCE} $_MAN_IS_SETUP $Man{IS_SETUP} $_MAN_LANG $Man{LANG} $_MAN_LANG2 $Man{LANG2} $_MAN_PATH @{$Man{PATH}} $_MAN_SEC @{$Man{SEC}} $_MAN_SEC_CHARS $Man{SEC_CHARS} $_MAN_SEC_LIST - $_MAN_SYS @{$Man{SYS}} $_NO - $_NO_FILESPECS $No_Filespecs $_NULL_DEV $Dev_Null $_OK - $_OPTS_CMDLINE_LONG_ARG %Opts_Cmdline_Long with value 1 $_OPTS_CMDLINE_LONG_NA %Opts_Cmdline_Long with value 0 $_OPTS_CMDLINE_SHORT_ARG %Opts_Cmdline_Short with value 1 $_OPTS_CMDLINE_SHORT_NA %Opts_Cmdline_Short with value 0 $_OPTS_GROFFER_LONG_ARG - $_OPTS_GROFFER_LONG_NA - $_OPTS_GROFFER_SHORT_ARG - $_OPTS_GROFFER_SHORT_NA - $_OPTS_GROFF_LONG_ARG - $_OPTS_GROFF_LONG_NA - $_OPTS_GROFF_SHORT_ARG - $_OPTS_GROFF_SHORT_NA - $_OPTS_MANOPT_LONG_ARG - $_OPTS_MANOPT_LONG_NA - $_OPTS_MANOPT_SHORT_ARG - $_OPTS_MANOPT_SHORT_NA - $_OPTS_MAN_LONG_ARG - $_OPTS_MAN_LONG_NA - $_OPTS_MAN_SHORT_ARG - $_OPTS_MAN_SHORT_NA - $_OPTS_X_LONG_ARG - $_OPTS_X_LONG_NA - $_OPTS_X_SHORT_ARG - $_OPTS_X_SHORT_NA - $_OPT_ALL $Opt{ALL} $_OPT_APROPOS $Opt{APROPOS} $_OPT_BD $Opt{BD} $_OPT_BG $Opt{BG} $_OPT_BW $Opt{BW} $_OPT_DEFAULT_MODES $Opt{DEFAULT_MODES} $_OPT_DEVICE $Opt{DEVICE} $_OPT_DISPLAY $Opt{DISPLAY} $_OPT_DO_NOTHING $Opt{DO_NOTHING} $_OPT_EXTENSION $Opt{EXTENSION} $_OPT_FG $Opt{FG} $_OPT_FN $Opt{FN} $_OPT_GEOMETRY $Opt{GEOMETRY} $_OPT_ICONIC $Opt{ICONIC} $_OPT_LANG $Opt{LANG} $_OPT_MANPATH $Opt{MANPATH} $_OPT_MODE $Opt{MODE} $_OPT_PAGER $Opt{PAGER} $_OPT_RESOLUTION $Opt{RESOLUTION} $_OPT_RV $Opt{RV} $_OPT_SECTIONS $Opt{SECTIONS} $_OPT_SYSTEMS $Opt{SYSTEMS} $_OPT_TEXT_DEVICE $Opt{TEXT_DEVICE} $_OPT_TITLE $Opt{TITLE} $_OPT_V $Opt{V} $_OPT_VIEWER_DVI $Opt{VIEWER_DVI} $_OPT_VIEWER_HTML $Opt{VIEWER_HTML} $_OPT_VIEWER_PDF $Opt{VIEWER_PDF} $_OPT_VIEWER_PS $Opt{VIEWER_PS} $_OPT_VIEWER_X $Opt{VIEWER_X} $_OPT_WHATIS $Opt{WHATIS} $_OPT_XRM @{$Opt{XRM}} $_OPT_Z $Opt{Z} $_OUTPUT_FILE_NAME $Output_File_Name $_PDF_DID_NOT_WORK $PDF_Did_Not_Work $_PDF_HAS_GS $PDF_Has_gs $_PDF_HAS_PS2PDF $PDF_Has_ps2pdf $_PROCESS_ID - $_PROGRAM_VERSION $program_version $_REG_TITLE_LIST @Reg_Title $_SHELL - $_SP - $_SPACE_CASE - $_SPACE_SED - $_SPECIAL_FILESPEC $Special_Filespec $_SPECIAL_SETUP $Special_Setup $_SQ - $_START_DIR $Start_Dir $_TAB - $_TMP_CAT $fh_cat, $tmp_cat $_TMP_DIR $tmpdir $_TMP_MAN - $_TMP_MANSPEC $Manspec for @{Man{MANSPEC}{$Manspec}} $_TMP_STDIN $fh_stdin, $tmp_stdin $_UNSET - $_VIEWER_BACKGROUND $Viewer_Background $_VIEWER_DVI_TTY $Viewer_tty{'DVI'} $_VIEWER_DVI_X $Viewer_X{'DVI'} $_VIEWER_HTML_TTY $Viewer_tty{'HTML'} $_VIEWER_HTML_X $Viewer_X{'HTML'} $_VIEWER_PDF_TTY $Viewer_tty{'PDF'} $_VIEWER_PDF_X $Viewer_X{'PDF'} $_VIEWER_PS_TTY $Viewer_tty{'PS'} $_VIEWER_PS_X $Viewer_X{'PS'} $_VIEWER_TTY_TTY - $_VIEWER_TTY_X - $_VIEWER_X_TTY $Viewer_tty{'X'} $_VIEWER_X_X $Viewer_X{'X'} $_YES - $return_bad - $return_error - $return_good - $return_no - $return_ok - $return_var - $return_yes - - @ARGV - @Manopt - $Opt{LOCATION} - $Opt{X} - $File_Split_Env - @Options - @StartingARGV - @StartingConf - $Umask ####### License Copyright (C) 2003, 2004, 2005, 2006, 2009 Free Software Foundation, Inc. Written by Bernd Warken . This file is part of `groffer', which is part of `groff'. `groff' is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. `groff' is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Last update: 5 Jan 2009 ####### Emacs settings Local Variables: mode: text End: ======================================================================== * contrib/groffer/shell/README_SH ======================================================================== README_SH Special description for the shell version of `groffer' The files related to the shell version are shell/groffer.sh starting script of groffer shell/groffer2.sh main script of groffer shell/groffer.man manual page of groffer shell/README_SH description of the shell version of the program shell/ChangeLog.0 information on all changements of groffer versions 0.* version.sh script that handles the version information Scripts The shell version of `groffer' contains two files, `groffer.sh' and `groffer2.sh'. `groffer.sh' is a short introductory script without any functions. I can be run with a very poor Bourne shell. It just contains some basic variables, the reading of the configuration files, and the determination of the shell for `groffer2.sh'. This script is transformed by `make' into `groffer' which will be installed into @bindir@, which is usually /usr/local/bin. `groffer2.sh' is a long main script with all functions; it is called by `groffer.sh' (`groffer' after installation). It is installed unchanged into @libdir@/groff/groffer, which is usually /usr/local/lib/groff/groffer. This script can be called with a different shell, using the `groffer' option `--shell'. Options The `groffer' script provides its own option parser. It is compatible to the usual GNU style command line This includes long option names with two signs such as `--option', clusters of short options, the mixing of options and non-option file names, the option `--' to close the option handling, and it is possible to abbreviate the long option names. The abbreviation of long options is enhanced by letting each internal `-' sign generate a new center of abbreviation. So each command line argument starting with `--' can represent a multiple set of abbreviations. The flexible mixing of options and file names in GNU style is always possible, even if the environment variable `$POSIXLY_CORRECT' is set to a non-empty value. This disables the rather wicked POSIX behavior to terminate option parsing when the first non-option command line argument is found. Error Handling Error handling and exit behavior is complicated by the fact that `exit' can only escape from the current shell; trouble occurs in subshells. This was solved by adding a temporary error file that is tested by function exit_test() and by replacing `var=$(...)' by function obj_from_output(). Function Definitions in `groffer2.sh' Each function in groffer2.sh has a description that starts with the function name and symbols for its arguments in parentheses `()'. Each `<>' construction gives an argument name that just gives a hint on what the argument is meant to be; these argument names are otherwise irrelevant. The `>' sign can be followed by another character that shows how many of these arguments are possible. exactly 1 of this argument ? 0 or 1 of these arguments * arbitrarily many such arguments, incl. none + one or more such arguments ... one or more such arguments [...] optional arguments A function that starts with an underscore `_' is an internal function for some other function. The internal functions are defined just after their corresponding function. External Environment Variables The groffer.sh script uses the following external system variables. It is supposed that these variables are already exported outside of groffer.sh; otherwise they do not have a value within the script. external system environment variables that are explicitly used $DISPLAY: Presets the X display. $LANG: For language specific man pages. $LC_ALL: For language specific man pages. $LC_MESSAGES: For language specific man pages. $PAGER: Paging program for tty mode. $PATH: Path for the programs called (`:' separated list). groffer native environment variables $GROFFER_OPT preset options for groffer. all groff environment variables are used, see groff(1) $GROFF_BIN_PATH: Path for all groff programs. $GROFF_COMMAND_PREFIX: '' (normally) or 'g' (several troffs). $GROFF_FONT_PATH: Path to non-default groff fonts. $GROFF_TMAC_PATH: Path to non-default groff macro files. $GROFF_TMPDIR: Directory for groff temporary files. $GROFF_TYPESETTER: Preset default device. all GNU man environment variables are used, see man(1). $MANOPT: Preset options for man pages. $MANPATH: Search path for man pages (: list). $MANROFFSEQ: Ignored because of grog guessing. $MANSECT: Search man pages only in sections (:). $SYSTEM: Man pages for different OS's (, list). Object-oriented Functions The groffer script provides an object-oriented construction (OOP). In object-oriented terminology, a type of object is called a `class'; a function that handles objects from a class is named `method'. In the groffer script, the object is a variable name whose content is the object's data. Methods are functions that have an object as first argument. The basic functions for object handling are obj_*(). The class `list' represents an array structure, see list_*(). Speed The major speed gain is the disabling of all debug features. This is the default for the installed version of `groffer'. Before the run of `make', the debug feature of $_DEBUG_FUNC_CHECK, corresponding to option --debug-func, is enabled by default. The resulting heavy slowing down should be regarded as a temporary feature. Another increase of speed was the replacement of the many `ls' calls by analysing a `find' of manpath with `grep'. Shell Compatibility The `groffer' shell scripts are compatible to both the GNU and the POSIX shell and utilities. Care was taken to restrict the programming technics used here in order to achieve POSIX compatibility as far back as POSIX P1003.2 Draft 11.2 of September 1991. This draft is available at http://www.funet.fi/pub/doc/posix/p1003.2/d11.2 on the Internet. The POSIX draft does not include `local' variables for functions. So this concept was replaced by global variables with a prefix that differs for each function. The prefix is chosen from the function name. These quasi-local variables are unset before each return of the function. For shell compatibility, see also Autobook, chapter 22. The `groffer' scripts were tested under the shells `ash', `bash', `bash-minimal', `dash', 'ksh', `mksh', `pdksh', 'posh', and `zsh' without problems in Linux Debian. A shell can be tested by the `groffer' option `--shell', but that will run only with groffer2.sh. To start it directly from the beginning under this shell the following command can be used. groffer.sh --shell= ... Some shells are not fully POSIX compatible. For them the following restrictions were done. For more information look at the documentation `Portable shells' in the `info' page of `autoconf' (look-up in Emacs-Help-Manuals_Info). - The command parts `then', `else', and `do' must be written each on a line of their own. - Replace `for i in "$@"' by `for i' and remove internal `;' (kah). - Replace `set -- ...' by `set x ...; shift'. After the first non-option argument, all arguments including those starting with `-' are accepted as non-option. For variables or `$()' constructs with line-breaks, use `eval set' without quotes. That transforms a line-break within a variable to a space. - The name of the variable in `for' is chosen as a single character (old ash). The content of such variables is not safe because it can also occur in other functions. So it is often stored in an additional quasi-local variable. - `echo' is not portable on options; some `echo' commands have many options, others have none. So `echo -n' cannot be used, such that the output of each function has complete lines. There are two methods to avoid having `-' as the first character of any argument. Either a character such as `x' can be prepended to the argument; this must later on be removed by `sed'. Otherwise, `echo' can be replaced by `cat < This file is part of `groffer', which is part of `groff'. `groff' is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. `groff' is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ####### Emacs settings Local Variables: mode: text End: ======================================================================== * contrib/mm/README ======================================================================== Copyright (C) 1989-2000, 2001, 2002, 2009, 2010 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This is mgm, a macro package for groff. It is supposed to be compatible with the DWB mm macros, and has several extensions. Send bug reports to bug-groff@gnu.org with a description of the problem and a sample of text which reproduces the error. Don't forget to mention the version of mgm (look in the beginning of m.tmac) and the version of groff. Any new ideas or improvements are welcome. Newest version is available here or at the groff CVS repository. ftp://ftp.axis.se/pub/groff/mm.gz You can install mgm as a separate package without the configure in groff with the following command: make -f Makefile.sim install This README should be bigger :-) /Jörgen Hägg Thanks to everyone who have sent me bug-reports and fixes. ======================================================================== * contrib/pdfmark/README ======================================================================== Copyright 2004 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. README for pdfmark.tmac ======================= Copyright (C) 2004, 2009 Free Software Foundation Inc. Contributed by Keith Marshall (keith.d.marshall@ntlworld.com) This is free software. See file COPYING, for copying permissions, and warranty disclaimer. This is a preview release of a proposed pdfmark.tmac macro package, for use with GNU troff (groff). It is not yet complete, and should be considered as an alpha release; there are a few problems to be resolved (see file PROBLEMS). Partial documentation is provided, in groff-ms format. To convert this to PDF format, you will require a working groff installation, a working ghostscript installation, with the gs command in your PATH, and a GNU-compatible make. The tarball should be unpacked in the top directory of your groff source tree, then: cd /contrib/pdfmark make pdfmark where is the top directory of your current groff source tree. Included in this package, are: pdfmark.tmac -- the core pdfmark macro set spdf.tmac -- a rudimentary set of bindings for ms macros pdfmark.ms -- preliminary documentation cover.ms -- a template for the documentation cover sheet gnu.eps -- the groff logo, copied from the groff distribution Makefile -- makefile, for formatting the documentation README -- this file PROBLEMS -- a list of known problems TODO -- a list of planned features, not yet implemented To make the pdfmark macros generally usable, copy pdfmark.tmac to the 'site-tmac' directory appropriate to your groff installation; (ms users may also wish to copy spdf.tmac). The macros may then be accessed, by including the '-mpdfmark' option on the groff command line; (for ms users, '-mspdf' is equivalent to '-ms -mpdfmark', with some extra macros 'thrown in'). Comments, and bug reports are welcomed. Please post to the groff mailing list, groff@gnu.org; (you must be subscribed to this list to post mails). To subscribe, visit http://lists.gnu.org/mailman/listinfo/groff ======================================================================== * COPYING ======================================================================== GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . ======================================================================== * LICENSES ======================================================================== Copyright 2003, 2006, 2007, 2009 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. LICENSES -------- The groff program is a free software project. It is licensed under the GNU General Public License (GNU GPL), version 3 or later. The file COPYING in the top directory of the groff source package contains a copy of the GPL that was downloaded from the GNU web site http://www.gnu.org/copyleft/gpl.txt at 3 jan 2009. All files part of groff are licensed under this version of the GPL (or licenses which are compatible with the GPL). You are free to choose version 3 or any subsequent version of the GPL. The GPL names an address where you can get the actual version by normal post. Further information is found in the internet at http://www.gnu.org/copyleft. The groff program is a GNU package, and the copyright of all files of the groff source package which are under the GPL has been assigned to the Free Sofware Foundation (FSF). Information on GNU and FSF is found at http://www.fsf.org/. Here a list of files which are distributed with groff but which aren't part of it (this is, they either have a non-GPL license, or the copyright hasn't been assigned to the FSF). Source Files ------------ . The file `src/libs/snprintf/snprintf.c', written by Mark Martinec . Please look into snprintf.c for the copyright message. The complete snprintf package together with documentation is available from http://www.ijs.si/software/snprintf/ . . The `grn' preprocessor, written by Barry Roitblat and David Slattengren . These files have been part of the original Berkeley ditroff distribution, without AT&T code, and are in the public domain. The original package can be found at http://ftp.cs.wisc.edu/pub/misc/grn.tar.Z . src/preproc/grn/gprint.h src/preproc/grn/hdb.cpp src/preproc/grn/hgraph.cpp src/preproc/grn/hpoint.cpp src/preproc/grn/main.cpp . The `gxditview' output device. It is based on X11's `xditview' program and thus has the X license. src/devices/xditview/DESC.in src/devices/xditview/Dvi.c src/devices/xditview/Dvi.h src/devices/xditview/DviP.h src/devices/xditview/FontMap src/devices/xditview/GXditview.ad src/devices/xditview/Menu.h src/devices/xditview/ad2c src/devices/xditview/device.c src/devices/xditview/device.h src/devices/xditview/draw.c src/devices/xditview/font.c src/devices/xditview/gray1.bm src/devices/xditview/gray2.bm src/devices/xditview/gray3.bm src/devices/xditview/gray4.bm src/devices/xditview/gray5.bm src/devices/xditview/gray6.bm src/devices/xditview/gray7.bm src/devices/xditview/gray8.bm src/devices/xditview/gxditview.man src/devices/xditview/lex.c src/devices/xditview/page.c src/devices/xditview/parse.c src/devices/xditview/xdit.bm src/devices/xditview/xdit_mask.bm src/devices/xditview/xditview.c src/include/DviChar.h src/include/XFontName.h src/libs/libxutil/DviChar.c src/libs/libxutil/XFontName.c Macro Packages -------------- . The -mdoc macro set, using the BSD license. tmac/doc.tmac tmac/doc-old.tmac tmac/doc-common tmac/doc-ditroff tmac/doc-nroff tmac/doc-syms tmac/groff_mdoc.man . The -me macro set, using the BSD license. tmac/e.tmac tmac/groff_me.man doc/meintro.me doc/meref.me Hyphenation Patterns -------------------- . The file `tmac/hyphen.us' is identical to the file `hyphen.tex', part of the TeX system written by Donald E. Knuth; the master file can be found at ftp://labrea.stanford.edu/pub/tex/dist/lib/hyphen.tex . It has been renamed for consistency, i.e., to make patterns available under the filenames `hyphen.', e.g. `hyphen.de' or `hyphen.uk'. See the file itself for a copyright notice. . The file `tmac/hyphen.fr' contains the same patterns as the file `frhyph.tex' (for TeX), which can be found at http://dante.ctan.org/CTAN/language/hyphenation/frhyph.tex . The patterns have been converted to a format groff can understand. See the file itself for a copyright notice. . The file `tmac/hyphen.sv' is identical to the file `svhyph.tex', which can be found at http://dante.ctan.org/CTAN/language/hyphenation/svhyph.tex . See the file itself for a copyright notice. . The files `tmac/hyphen.det' and `tmac/hyphen.den' contain the same patterns as the files `dehyphn.tex' and `dehypht.tex' (for TeX), which can be found at http://dante.ctan.org/CTAN/language/hyphenation/dehyphn.tex http://dante.ctan.org/CTAN/language/hyphenation/dehypht.tex . The patterns have been converted to a format groff can understand. See the files themselves for a copyright notice. . The file `tmac/hyphenex.det' is identical to the file `dehyphtex.tex', which can be found at http://dante.ctan.org/CTAN/language/hyphenation/dehyphtex.tex . See the file itself for a copyright notice. . The file `tmac/hyphen.cs' contains the same patterns as the file `czhyphen.tex' (for TeX), which can be found in the archive http://dante.ctan.org/CTAN/macros/cstex/base/csplain.tar.gz . The patterns have been converted to a format groff can understand. See the file itself for a copyright notice. EOF ======================================================================== * contrib/mom/copyright ======================================================================== AUTHOR ------ Peter Schaffter (peter@schaffter.ca) 1-355 Lafontaine Ave Ottawa (ON) K1L 6X6 ======================================================================== The groff macro file om.tmac and the html documentation pertaining to it are copyright (c) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Peter Schaffter. om.tmac is issued under the GNU General Public License, a full copy of which can be had at http://www.gnu.org/licenses/gpl.html The html documentation pertaining to om.tmac is issued under the GNU Free Documentation License, a full copy of which can be had at http://www.gnu.org/copyleft/fdl.html ========================================================================