[PATCH app-xfs 2/4] xfs.man: use sed and standard makefile

Alan Coopersmith alan.coopersmith at oracle.com
Thu Aug 5 13:00:31 PDT 2010


Gaetan Nadon wrote:
> Remove the complexity of using the C preprocessor legacy
> from IMakefile.
> 
> Signed-off-by: Gaetan Nadon <memsize at videotron.ca>
> ---
>  Makefile.am     |   20 +---
>  configure.ac    |    3 +-
>  man/Makefile.am |   41 ++++++
>  man/xfs.man     |  389 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  xfs.man         |  389 -------------------------------------------------------
>  5 files changed, 434 insertions(+), 408 deletions(-)
>  create mode 100644 man/Makefile.am
>  create mode 100644 man/xfs.man
>  delete mode 100644 xfs.man
> 
> diff --git a/Makefile.am b/Makefile.am
> index 980f185..c54396b 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -19,7 +19,7 @@
>  #  TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
>  #  PERFORMANCE OF THIS SOFTWARE.
>  
> -SUBDIRS=doc
> +SUBDIRS=doc man
>  
>  configdir = $(sysconfdir)/X11/fs
>  
> @@ -94,9 +94,6 @@ xfs_SOURCES = \
>  	include/swaprep.h \
>  	include/swapreq.h
>  
> -appman_PRE = \
> -        xfs.man
> -
>  FSERRORS = /var/log/xfs.log
>  
>  # Strings to replace in config.cpp
> @@ -109,15 +106,6 @@ EXTRA_DIST = xfs.def config.cpp
>  MAINTAINERCLEANFILES = ChangeLog INSTALL
>  CLEANFILES = config
>  
> -appmandir = $(APP_MAN_DIR)
> -
> -appman_DATA = $(appman_PRE:man=@APP_MAN_SUFFIX@)
> -
> -EXTRA_DIST += $(appman_PRE)
> -CLEANFILES += $(appman_DATA)
> -
> -SED = sed
> -
>  # Translate XCOMM into pound sign with sed, rather than passing -DXCOMM=XCOMM
>  # to cpp, because that trick does not work on all ANSI C preprocessors.
>  # Delete line numbers from the cpp output (-P is not portable, I guess).
> @@ -147,15 +135,11 @@ MANDEFS =  \
>  	-D__configfiledesc__="$(CONFIG_FILE_DESC)" \
>  	-D__configfilepath__="$(CONFIG_FILE_PATH)"
>  
> -SUFFIXES = .$(APP_MAN_SUFFIX) .man .cpp
> +SUFFIXES = .cpp
>  
>  .cpp:
>  	$(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(CPP_FILES_FLAGS) < $< | $(CPP_SED_MAGIC) > $@
>  
> -.man.$(APP_MAN_SUFFIX):
> -	$(AM_V_GEN)$(RAWCPP) $(RAWCPPFLAGS) $(MANDEFS) $(EXTRAMANDEFS) < $< | $(CPP_SED_MAGIC) > $@
> -
> -
>  .PHONY: ChangeLog INSTALL
>  
>  INSTALL:
> diff --git a/configure.ac b/configure.ac
> index b3586e8..1a082ba 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -133,5 +133,6 @@ AC_SUBST(XFS_LIBS)
>  XTRANS_CONNECTION_FLAGS
>  
>  AC_CONFIG_FILES([Makefile
> -                 doc/Makefile])
> +                 doc/Makefile
> +                 man/Makefile])
>  AC_OUTPUT
> diff --git a/man/Makefile.am b/man/Makefile.am
> new file mode 100644
> index 0000000..290f3f6
> --- /dev/null
> +++ b/man/Makefile.am
> @@ -0,0 +1,41 @@
> +#
> +# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
> +#
> +# Permission is hereby granted, free of charge, to any person obtaining a
> +# copy of this software and associated documentation files (the "Software"),
> +# to deal in the Software without restriction, including without limitation
> +# the rights to use, copy, modify, merge, publish, distribute, sublicense,
> +# and/or sell copies of the Software, and to permit persons to whom the
> +# Software is furnished to do so, subject to the following conditions:
> +#
> +# The above copyright notice and this permission notice (including the next
> +# paragraph) shall be included in all copies or substantial portions of the
> +# Software.
> +#
> +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
> +# DEALINGS IN THE SOFTWARE.
> +#
> +
> +appmandir = $(APP_MAN_DIR)
> +
> +appman_PRE = xfs.man
> +
> +appman_DATA = $(appman_PRE:man=$(APP_MAN_SUFFIX))
> +
> +EXTRA_DIST = $(appman_PRE)
> +
> +CLEANFILES = $(appman_DATA)
> +
> +# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
> +MAN_SUBSTS += -e 's|__configfiledesc__|$(CONFIG_FILE_DESC)|g'
> +MAN_SUBSTS += -e 's|__configfilepath__|$(CONFIG_FILE_PATH)|g'
> +
> +SUFFIXES = .$(APP_MAN_SUFFIX) .man
> +
> +.man.$(APP_MAN_SUFFIX):
> +	$(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
> diff --git a/man/xfs.man b/man/xfs.man
> new file mode 100644
> index 0000000..08c9c54
> --- /dev/null
> +++ b/man/xfs.man
> @@ -0,0 +1,389 @@
> +.\"
> +.\" Copyright 1991, 1998  The Open Group
> +.\"
> +.\" Permission to use, copy, modify, distribute, and sell this software and its
> +.\" documentation for any purpose is hereby granted without fee, provided that
> +.\" the above copyright notice appear in all copies and that both that
> +.\" copyright notice and this permission notice appear in supporting
> +.\" documentation.
> +.\"
> +.\" The above copyright notice and this permission notice shall be included in
> +.\" all copies or substantial portions of the Software.
> +.\"
> +.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> +.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> +.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> +.\" THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
> +.\" WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
> +.\" OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
> +.\" SOFTWARE.
> +.\"
> +.\" Except as contained in this notice, the name of The Open Group shall not
> +.\" be used in advertising or otherwise to promote the sale, use or other
> +.\" dealing in this Software without prior written authorization from the
> +.\" The Open Group.
> +.\" Copyright 1991 Network Computing Devices
> +.\"
> +.\" Permission to use, copy, modify, distribute, and sell this software and
> +.\" its documentation for any purpose is hereby granted without fee, provided
> +.\" that the above copyright notice appear in all copies and that both that
> +.\" copyright notice and this permission notice appear in supporting
> +.\" documentation, and that the name of Network Computing Devices
> +.\" not be used in advertising or
> +.\" publicity pertaining to distribution of the software without specific,
> +.\" written prior permission.  Network Computing Devices make
> +.\" no representations about the
> +.\" suitability of this software for any purpose.  It is provided "as is"
> +.\" without express or implied warranty.
> +.TH xfs __appmansuffix__ __xorgversion__
> +.SH NAME
> +xfs \- X font server
> +.SH SYNOPSIS
> +.B xfs
> +[
> +.BI "\-config " configuration_file
> +]
> +[
> +.B \-daemon
> +]
> +[
> +.B \-droppriv
> +]
> +[
> +.B \-inetd
> +]
> +[
> +.BI "\-ls " listen_socket
> +]
> +[
> +.B \-nodaemon
> +]
> +[
> +.BI "\-port " tcp_port
> +]
> +[
> +.BI "\-user " username
> +]
> +.SH DESCRIPTION
> +.B xfs
> +is the X Window System font server.
> +It supplies fonts to X Window System display servers.
> +The server is usually run by a system administrator, and started via
> +.BR init (__adminmansuffix__)
> +or
> +.BR inetd (__adminmansuffix__).
> +Users may also wish to start private font servers for specific sets of
> +fonts.
> +.PP
> +To connect to a font server, see the documentation for your X server; it
> +likely supports the syntax documented in the \(lqFONT SERVER NAMES\(rq
> +section of
> +.BR X (__miscmansuffix__).
> +.SH OPTIONS
> +.TP
> +.BI "\-config " configuration_file
> +specifies the configuration file
> +.B xfs
> +will use.
> +If this parameter is not specified, xfs will read its configuration from
> +__configfiledesc__
> +.IR __configfilepath__ .
> +.TP
> +.B \-daemon
> +instructs
> +.B xfs
> +to fork and go into the background automatically at startup.
> +If this option is not specified,
> +.B xfs
> +will run as a regular process (unless it was built to daemonize by
> +default).
> +When running as a daemon,
> +.B xfs
> +will attempt to create a file in which it stores its process ID, and will
> +delete that file upon exit;
> +.TP
> +.B \-droppriv
> +instructs
> +.B xfs
> +to attempt to run as user and group
> +.I xfs
> +(unless the
> +.B \-user
> +option is used).
> +This has been implemented for security reasons, as
> +.B xfs
> +may have undiscovered buffer overflows or other paths for possible exploit,
> +both local and remote.
> +When using this option, you may also wish to specify \(oqno\-listen =
> +tcp\(cq in the config file, which ensures that
> +.B xfs
> +will not to use a TCP port at all.
> +By default,
> +.B xfs
> +runs with the user and group IDs of the user who invoked it.
> +.TP
> +.B \-inetd
> +informs
> +.B xfs
> +that it is being started by inetd, and that a listening socket on the
> +appropriate port is being passed as standard input.   Assumes that inetd
> +is configured to "wait" mode, and will thus allow xfs to handle
> +listening for and accepting further connections on this port.   This allows
> +xfs to be started on demand when the first font client connects.
> +When using this option, the -daemon and -port flags are ignored.
> +.TP
> +.BI "\-ls " listen_socket
> +specifies a file descriptor which is already set up to be used as the
> +listen socket.
> +This option is only intended to be used by the font server itself when
> +automatically spawning another copy of itself to handle additional
> +connections.
> +.TP
> +.B \-nodaemon
> +instructs
> +.B xfs
> +not to daemonize (fork and detach from its controlling terminal).
> +This option only has an effect if
> +.B xfs
> +is built to daemonize by default, which is not the stock configuration.
> +.TP
> +.BI "\-port " tcp_port
> +specifies the TCP port number on which the server will listen for
> +connections.
> +The default port number is 7100.
> +This option is ignored if
> +.B xfs
> +is configured to not listen to TCP transports at all (see \(lqConfiguration
> +File Format\(rq below).
> +.TP
> +.BI "\-user " username
> +instructs
> +.B xfs
> +to run as the user
> +.IR username.
> +See
> +.B \-droppriv
> +for why this may be desired.
> +By default,
> +.B xfs
> +runs with the user and group IDs of the user who invoked it.
> +.SH "INPUT FILES"
> +.B xfs
> +reads and serves any font file format recognized by the X server itself.
> +It locates font files through the specification of a
> +.IR catalogue ,
> +which is declared in
> +.BR xfs 's
> +configuration file.
> +.SS "Configuration File Format"
> +.B xfs
> +reads its configuration from a text file (see the
> +.B \-config
> +option in the \(lqOPTIONS\(rq section above).
> +The configuration language is a list of keyword and value pairs.
> +Each keyword is followed by an equals sign (\(oq=\(cq) and then the desired
> +value.
> +.PP
> +Recognized keywords include:
> +.TP
> +.BR alternate\-servers " (list of \fIstring\fPs)"
> +lists alternate servers for this font server.
> +See the \(lqFONT SERVER NAMES\(rq section of
> +.BR X (__miscmansuffix__)
> +for the syntax of the string.
> +.\" .TP
> +.\" .BR cache\-size " (\fIcardinal\fP)"
> +.\" determines the size (in bytes) of the font server cache.
> +.TP
> +.BR catalogue " (list of \fIstring\fPs)"
> +declares as ordered list of font path element names from which fonts will
> +be served.
> +The current implementation only supports a single catalogue ("all")
> +containing all of the specified fonts. A special directory with
> +symlinks to font paths can be specified using a catalogue:<dir>
> +entry. See the CATALOGUE DIR section below for details.
> +.TP
> +.BR client\-limit " (\fIcardinal\fP)"
> +determines the number of clients this font server will support before
> +refusing service.
> +This is useful for tuning the load on each individual font server.
> +.TP
> +.BR clone\-self " (\fIboolean\fP)"
> +indicates whether this font server should attempt to clone itself when the
> +number of connected clients reaches the
> +.BR client\-limit .
> +.TP
> +.BR default\-point\-size " (\fIcardinal\fP)"
> +The default pointsize (in decipoints) for font requests that don't specify
> +a point size.
> +The default is 120.
> +.TP
> +.BR default\-resolutions " (list of \fIresolution\fPs)"
> +indicates the resolutions the server supports by default.
> +This information may be used as a hint for pre-rendering, and substituted
> +into requests for scaled fonts which do not specify a resolution.
> +A
> +.I resolution
> +is a comma-separated pair of horizontal and vertical resolutions in pixels
> +per inch.
> +Multiple resolutions are separated by commas.
> +.TP
> +.BR deferglyphs " (\fIstring\fP)"
> +sets the mode for delayed fetching and caching of glyphs.
> +.I string
> +should be one of \(oqnone\(cq, meaning glyphs deferment is disabled,
> +\(oqall\(cq, meaning it is enabled for all fonts, and \(oq16\(cq, meaning
> +it is enabled only for 16-bit fonts.
> +.TP
> +.BR error\-file " (\fIstring\fP)"
> +indicates the filename of the error file.
> +All warnings and errors will be logged here, unless
> +.B use\-syslog
> +is set to a true value (see below).
> +.TP
> +.BR no\-listen " (\fItrans-type\fP)"
> +disables the specified transport type.
> +For example, TCP/IP connections can be disabled with \(oqno\-listen =
> +tcp\(cq.
> +.TP
> +.BR port " (\fIcardinal\fP)"
> +indicates the TCP port on which the server will listen for connections.
> +.\" .TP
> +.\" .BR trusted-clients " (list of \fIstring\fPs)"
> +.\" identifies the clients the font server will talk to.
> +.\" Others will be refused for the initial connection.
> +.\" An empty list means the server will talk to any client.
> +.TP
> +.BR use\-syslog " (\fIboolean\fP)"
> +determines whether errors and diagnostics should be reported via
> +.BR syslog (__libmansuffix__)
> +(on supported systems) instead of being written to the
> +.B error\-file
> +(see above).
> +.SH "CATALOGUE DIR"
> +You can specify a special kind of font path in the form \fBcatalogue:<dir>\fR.
> +The directory specified after the catalogue: prefix will be scanned for symlinks
> +and each symlink destination will be added as a local fontfile FPE.
> +.PP
> +The symlink can be suffixed by attributes such as '\fBunscaled\fR', which
> +will be passed through to the underlying fontfile FPE. The only exception is
> +the newly introduced '\fBpri\fR' attribute, which will be used for ordering
> +the font paths specified by the symlinks.
> +
> +An example configuration:
> +
> +.nf
> +    75dpi:unscaled:pri=20 \-> /usr/share/X11/fonts/75dpi
> +    ghostscript:pri=60 \-> /usr/share/fonts/default/ghostscript
> +    misc:unscaled:pri=10 \-> /usr/share/X11/fonts/misc
> +    type1:pri=40 \-> /usr/share/X11/fonts/Type1
> +    type1:pri=50 \-> /usr/share/fonts/default/Type1
> +.fi
> +
> +This will add /usr/share/X11/fonts/misc as the first FPE with the attribute
> +'unscaled', second FPE will be /usr/share/X11/fonts/75dpi, also with
> +the attribute unscaled etc. This is functionally equivalent to setting
> +the following font path:
> +
> +.nf
> +    /usr/share/X11/fonts/misc:unscaled,
> +    /usr/share/X11/fonts/75dpi:unscaled,
> +    /usr/share/X11/fonts/Type1,
> +    /usr/share/fonts/default/Type1,
> +    /usr/share/fonts/default/ghostscript
> +.fi
> +.SS "Example Configuration File"
> +.nf
> + #
> + # sample font server configuration file
> + #
> +
> + # allow a max of 10 clients to connect to this font server.
> + client\-limit = 10
> +
> + # When a font server reaches the above limit, start up a new one.
> + clone\-self = on
> +
> + # Identify alternate font servers for clients to use.
> + alternate\-servers = hansen:7101,hansen:7102
> +
> + # Look for fonts in the following directories.  The first is a set of
> + # TrueType outlines, the second is a set of misc bitmaps (such as terminal
> + # and cursor fonts), and the last is a set of 100dpi bitmaps.
> + #
> + catalogue = /usr/share/X11/fonts/TTF,
> +             /usr/share/X11/fonts/misc,
> +             /usr/share/X11/fonts/100dpi/
> +
> + # in 12 points, decipoints
> + default\-point\-size = 120
> +
> + # 100 x 100 and 75 x 75
> + default\-resolutions = 100,100,75,75
> +
> + # Specify our log filename.
> + error\-file = /var/log/xfs.log
> +
> + # Direct diagnostics to our own log file instead of using syslog.
> + use\-syslog = off
> +.fi
> +.SH "OUTPUT FILES"
> +When operating in daemon mode,
> +.B xfs
> +sends diagnostic messages (errors and warnings) to the log file
> +specified by the
> +.B error-file
> +configuration variable by default.
> +However, these messages can be sent to an alternate location via the
> +.B error\-file
> +and
> +.B use\-syslog
> +configuration variables; see \(lqConfiguration File Format\(rq, above.
> +.SH "ASYNCHRONOUS EVENTS"
> +.B xfs
> +handles the following signals specially:
> +.TP
> +.I SIGTERM
> +causes the font server to exit cleanly.
> +.TP
> +.I SIGUSR1
> +causes
> +.B xfs
> +to re-read its configuration file.
> +.TP
> +.I SIGUSR2
> +causes
> +.B xfs
> +to flush any cached data it may have.
> +.TP
> +.I SIGHUP
> +causes
> +.B xfs
> +to reset, closing all active connections and re-reading the configuration
> +file.
> +.SH BUGS
> +Multiple catalogues should be supported.
> +.SH "FUTURE DIRECTIONS"
> +Significant further development of
> +.B xfs
> +is unlikely.
> +One of the original motivations behind it was the single-threaded nature of
> +the X server \(em a user's X session could seem to \(oqfreeze up\(cq while
> +the X server took a moment to rasterize a font.
> +This problem with the X server, which remains single-threaded in all
> +popular implementations to this day, has been mitigated on two fronts:
> +machines have gotten much faster, and client-side font rendering
> +(particularly via the Xft library) is the norm in contemporary software.
> +.SH AUTHORS
> +Dave Lemke, Network Computing Devices, Inc
> +.br
> +Keith Packard, Massachusetts Institute of Technology
> +.SH "SEE ALSO"
> +.BR X (__miscmansuffix__),
> +.BR xfsinfo (__appmansuffix__),
> +.BR fslsfonts (__appmansuffix__),
> +.BR init (__adminmansuffix__),
> +.BR inetd (__adminmansuffix__),
> +.BR syslog (__libmansuffix__),
> +.IR "The X Font Service Protocol" ,
> +.I Font Server Implementation Overview
> diff --git a/xfs.man b/xfs.man
> deleted file mode 100644
> index 0cf8076..0000000
> --- a/xfs.man
> +++ /dev/null
> @@ -1,389 +0,0 @@
> -.\"
> -.\" Copyright 1991, 1998  The Open Group
> -.\" 
> -.\" Permission to use, copy, modify, distribute, and sell this software and its
> -.\" documentation for any purpose is hereby granted without fee, provided that
> -.\" the above copyright notice appear in all copies and that both that
> -.\" copyright notice and this permission notice appear in supporting
> -.\" documentation.
> -.\" 
> -.\" The above copyright notice and this permission notice shall be included in
> -.\" all copies or substantial portions of the Software.
> -.\" 
> -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> -.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> -.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL 
> -.\" THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 
> -.\" WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF 
> -.\" OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 
> -.\" SOFTWARE.
> -.\" 
> -.\" Except as contained in this notice, the name of The Open Group shall not 
> -.\" be used in advertising or otherwise to promote the sale, use or other 
> -.\" dealing in this Software without prior written authorization from the 
> -.\" The Open Group.
> -.\" Copyright 1991 Network Computing Devices
> -.\" 
> -.\" Permission to use, copy, modify, distribute, and sell this software and
> -.\" its documentation for any purpose is hereby granted without fee, provided
> -.\" that the above copyright notice appear in all copies and that both that
> -.\" copyright notice and this permission notice appear in supporting
> -.\" documentation, and that the name of Network Computing Devices 
> -.\" not be used in advertising or
> -.\" publicity pertaining to distribution of the software without specific,
> -.\" written prior permission.  Network Computing Devices make
> -.\" no representations about the
> -.\" suitability of this software for any purpose.  It is provided "as is"
> -.\" without express or implied warranty.
> -.TH xfs __appmansuffix__ __xorgversion__
> -.SH NAME
> -xfs \- X font server
> -.SH SYNOPSIS
> -.B xfs
> -[
> -.BI "\-config " configuration_file
> -]
> -[
> -.B \-daemon
> -]
> -[
> -.B \-droppriv
> -]
> -[
> -.B \-inetd
> -]
> -[
> -.BI "\-ls " listen_socket
> -]
> -[
> -.B \-nodaemon
> -]
> -[
> -.BI "\-port " tcp_port
> -]
> -[
> -.BI "\-user " username
> -]
> -.SH DESCRIPTION
> -.B xfs
> -is the X Window System font server.
> -It supplies fonts to X Window System display servers.
> -The server is usually run by a system administrator, and started via
> -.BR init (__adminmansuffix__)
> -or
> -.BR inetd (__adminmansuffix__).
> -Users may also wish to start private font servers for specific sets of
> -fonts.
> -.PP
> -To connect to a font server, see the documentation for your X server; it
> -likely supports the syntax documented in the \(lqFONT SERVER NAMES\(rq
> -section of
> -.BR X (__miscmansuffix__).
> -.SH OPTIONS
> -.TP
> -.BI "\-config " configuration_file
> -specifies the configuration file
> -.B xfs
> -will use.
> -If this parameter is not specified, xfs will read its configuration from
> -__configfiledesc__
> -.IR __configfilepath__ .
> -.TP
> -.B \-daemon
> -instructs
> -.B xfs
> -to fork and go into the background automatically at startup.
> -If this option is not specified,
> -.B xfs
> -will run as a regular process (unless it was built to daemonize by
> -default).
> -When running as a daemon,
> -.B xfs
> -will attempt to create a file in which it stores its process ID, and will
> -delete that file upon exit; 
> -.TP
> -.B \-droppriv
> -instructs
> -.B xfs
> -to attempt to run as user and group
> -.I xfs
> -(unless the
> -.B \-user
> -option is used).
> -This has been implemented for security reasons, as
> -.B xfs
> -may have undiscovered buffer overflows or other paths for possible exploit,
> -both local and remote.
> -When using this option, you may also wish to specify \(oqno\-listen =
> -tcp\(cq in the config file, which ensures that
> -.B xfs
> -will not to use a TCP port at all.
> -By default,
> -.B xfs
> -runs with the user and group IDs of the user who invoked it.
> -.TP
> -.B \-inetd
> -informs
> -.B xfs
> -that it is being started by inetd, and that a listening socket on the
> -appropriate port is being passed as standard input.   Assumes that inetd
> -is configured to "wait" mode, and will thus allow xfs to handle
> -listening for and accepting further connections on this port.   This allows
> -xfs to be started on demand when the first font client connects.
> -When using this option, the -daemon and -port flags are ignored.
> -.TP
> -.BI "\-ls " listen_socket
> -specifies a file descriptor which is already set up to be used as the
> -listen socket.
> -This option is only intended to be used by the font server itself when
> -automatically spawning another copy of itself to handle additional
> -connections.
> -.TP
> -.B \-nodaemon
> -instructs
> -.B xfs
> -not to daemonize (fork and detach from its controlling terminal).
> -This option only has an effect if
> -.B xfs
> -is built to daemonize by default, which is not the stock configuration.
> -.TP
> -.BI "\-port " tcp_port
> -specifies the TCP port number on which the server will listen for
> -connections.
> -The default port number is 7100.
> -This option is ignored if
> -.B xfs
> -is configured to not listen to TCP transports at all (see \(lqConfiguration
> -File Format\(rq below).
> -.TP
> -.BI "\-user " username
> -instructs
> -.B xfs
> -to run as the user
> -.IR username.
> -See
> -.B \-droppriv
> -for why this may be desired.
> -By default,
> -.B xfs
> -runs with the user and group IDs of the user who invoked it.
> -.SH "INPUT FILES"
> -.B xfs
> -reads and serves any font file format recognized by the X server itself.
> -It locates font files through the specification of a
> -.IR catalogue ,
> -which is declared in
> -.BR xfs 's
> -configuration file.
> -.SS "Configuration File Format"
> -.B xfs
> -reads its configuration from a text file (see the
> -.B \-config
> -option in the \(lqOPTIONS\(rq section above).
> -The configuration language is a list of keyword and value pairs.
> -Each keyword is followed by an equals sign (\(oq=\(cq) and then the desired
> -value.
> -.PP
> -Recognized keywords include:
> -.TP
> -.BR alternate\-servers " (list of \fIstring\fPs)"
> -lists alternate servers for this font server.
> -See the \(lqFONT SERVER NAMES\(rq section of
> -.BR X (__miscmansuffix__)
> -for the syntax of the string.
> -.\" .TP
> -.\" .BR cache\-size " (\fIcardinal\fP)"
> -.\" determines the size (in bytes) of the font server cache.
> -.TP
> -.BR catalogue " (list of \fIstring\fPs)"
> -declares as ordered list of font path element names from which fonts will
> -be served.
> -The current implementation only supports a single catalogue ("all")
> -containing all of the specified fonts. A special directory with
> -symlinks to font paths can be specified using a catalogue:<dir>
> -entry. See the CATALOGUE DIR section below for details.
> -.TP
> -.BR client\-limit " (\fIcardinal\fP)"
> -determines the number of clients this font server will support before
> -refusing service.
> -This is useful for tuning the load on each individual font server.
> -.TP
> -.BR clone\-self " (\fIboolean\fP)"
> -indicates whether this font server should attempt to clone itself when the
> -number of connected clients reaches the
> -.BR client\-limit .
> -.TP
> -.BR default\-point\-size " (\fIcardinal\fP)"
> -The default pointsize (in decipoints) for font requests that don't specify
> -a point size.
> -The default is 120.
> -.TP
> -.BR default\-resolutions " (list of \fIresolution\fPs)"
> -indicates the resolutions the server supports by default.
> -This information may be used as a hint for pre-rendering, and substituted
> -into requests for scaled fonts which do not specify a resolution.
> -A
> -.I resolution
> -is a comma-separated pair of horizontal and vertical resolutions in pixels
> -per inch.
> -Multiple resolutions are separated by commas.
> -.TP
> -.BR deferglyphs " (\fIstring\fP)"
> -sets the mode for delayed fetching and caching of glyphs.
> -.I string
> -should be one of \(oqnone\(cq, meaning glyphs deferment is disabled,
> -\(oqall\(cq, meaning it is enabled for all fonts, and \(oq16\(cq, meaning
> -it is enabled only for 16-bit fonts.
> -.TP
> -.BR error\-file " (\fIstring\fP)"
> -indicates the filename of the error file.
> -All warnings and errors will be logged here, unless
> -.B use\-syslog
> -is set to a true value (see below).
> -.TP
> -.BR no\-listen " (\fItrans-type\fP)"
> -disables the specified transport type.
> -For example, TCP/IP connections can be disabled with \(oqno\-listen =
> -tcp\(cq.
> -.TP
> -.BR port " (\fIcardinal\fP)"
> -indicates the TCP port on which the server will listen for connections.
> -.\" .TP
> -.\" .BR trusted-clients " (list of \fIstring\fPs)"
> -.\" identifies the clients the font server will talk to.
> -.\" Others will be refused for the initial connection.
> -.\" An empty list means the server will talk to any client.
> -.TP
> -.BR use\-syslog " (\fIboolean\fP)"
> -determines whether errors and diagnostics should be reported via
> -.BR syslog (__libmansuffix__)
> -(on supported systems) instead of being written to the
> -.B error\-file
> -(see above).
> -.SH "CATALOGUE DIR"
> -You can specify a special kind of font path in the form \fBcatalogue:<dir>\fR.
> -The directory specified after the catalogue: prefix will be scanned for symlinks
> -and each symlink destination will be added as a local fontfile FPE.
> -.PP
> -The symlink can be suffixed by attributes such as '\fBunscaled\fR', which
> -will be passed through to the underlying fontfile FPE. The only exception is
> -the newly introduced '\fBpri\fR' attribute, which will be used for ordering
> -the font paths specified by the symlinks.
> -
> -An example configuration:
> -
> -.nf
> -    75dpi:unscaled:pri=20 \-> /usr/share/X11/fonts/75dpi
> -    ghostscript:pri=60 \-> /usr/share/fonts/default/ghostscript
> -    misc:unscaled:pri=10 \-> /usr/share/X11/fonts/misc
> -    type1:pri=40 \-> /usr/share/X11/fonts/Type1
> -    type1:pri=50 \-> /usr/share/fonts/default/Type1
> -.fi
> -
> -This will add /usr/share/X11/fonts/misc as the first FPE with the attribute
> -'unscaled', second FPE will be /usr/share/X11/fonts/75dpi, also with
> -the attribute unscaled etc. This is functionally equivalent to setting
> -the following font path:
> -
> -.nf
> -    /usr/share/X11/fonts/misc:unscaled,
> -    /usr/share/X11/fonts/75dpi:unscaled,
> -    /usr/share/X11/fonts/Type1,
> -    /usr/share/fonts/default/Type1,
> -    /usr/share/fonts/default/ghostscript
> -.fi
> -.SS "Example Configuration File"
> -.nf
> - #
> - # sample font server configuration file
> - #
> -
> - # allow a max of 10 clients to connect to this font server.
> - client\-limit = 10
> -
> - # When a font server reaches the above limit, start up a new one.
> - clone\-self = on
> -
> - # Identify alternate font servers for clients to use.
> - alternate\-servers = hansen:7101,hansen:7102
> -
> - # Look for fonts in the following directories.  The first is a set of
> - # TrueType outlines, the second is a set of misc bitmaps (such as terminal
> - # and cursor fonts), and the last is a set of 100dpi bitmaps.
> - #
> - catalogue = /usr/share/X11/fonts/TTF,
> -             /usr/share/X11/fonts/misc,
> -             /usr/share/X11/fonts/100dpi/
> -
> - # in 12 points, decipoints
> - default\-point\-size = 120
> -
> - # 100 x 100 and 75 x 75
> - default\-resolutions = 100,100,75,75
> -
> - # Specify our log filename.
> - error\-file = /var/log/xfs.log
> -
> - # Direct diagnostics to our own log file instead of using syslog.
> - use\-syslog = off
> -.fi
> -.SH "OUTPUT FILES"
> -When operating in daemon mode,
> -.B xfs
> -sends diagnostic messages (errors and warnings) to the log file
> -specified by the
> -.B error-file
> -configuration variable by default.
> -However, these messages can be sent to an alternate location via the
> -.B error\-file
> -and
> -.B use\-syslog
> -configuration variables; see \(lqConfiguration File Format\(rq, above.
> -.SH "ASYNCHRONOUS EVENTS"
> -.B xfs
> -handles the following signals specially:
> -.TP
> -.I SIGTERM
> -causes the font server to exit cleanly.
> -.TP
> -.I SIGUSR1
> -causes
> -.B xfs
> -to re-read its configuration file.
> -.TP
> -.I SIGUSR2
> -causes
> -.B xfs
> -to flush any cached data it may have.
> -.TP
> -.I SIGHUP
> -causes
> -.B xfs
> -to reset, closing all active connections and re-reading the configuration
> -file.
> -.SH BUGS
> -Multiple catalogues should be supported.
> -.SH "FUTURE DIRECTIONS"
> -Significant further development of
> -.B xfs
> -is unlikely.
> -One of the original motivations behind it was the single-threaded nature of
> -the X server \(em a user's X session could seem to \(oqfreeze up\(cq while
> -the X server took a moment to rasterize a font.
> -This problem with the X server, which remains single-threaded in all
> -popular implementations to this day, has been mitigated on two fronts:
> -machines have gotten much faster, and client-side font rendering
> -(particularly via the Xft library) is the norm in contemporary software.
> -.SH AUTHORS
> -Dave Lemke, Network Computing Devices, Inc
> -.br
> -Keith Packard, Massachusetts Institute of Technology
> -.SH "SEE ALSO"
> -.BR X (__miscmansuffix__),
> -.BR xfsinfo (__appmansuffix__),
> -.BR fslsfonts (__appmansuffix__),
> -.BR init (__adminmansuffix__),
> -.BR inetd (__adminmansuffix__),
> -.BR syslog (__libmansuffix__),
> -.IR "The X Font Service Protocol" ,
> -.I Font Server Implementation Overview

Reviewed-by: Alan Coopersmith <alan.coopersmith at oracle.com>

-- 
	-Alan Coopersmith-        alan.coopersmith at oracle.com
	 Oracle Solaris Platform Engineering: X Window System



More information about the xorg-devel mailing list