[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

X Strike Force XFree86 SVN commit: r2151 - in trunk/debian: . patches



Author: branden
Date: 2005-01-24 11:54:48 -0500 (Mon, 24 Jan 2005)
New Revision: 2151

Modified:
   trunk/debian/CHANGESETS
   trunk/debian/TODO
   trunk/debian/changelog
   trunk/debian/patches/003b_xfs_fixes.diff
   trunk/debian/xfs.init
Log:
Add more clearnups and enhancements to xfs in patch #003b:
+ Add RemovePid() function which removes the process ID file, and register
  it with atexit() so that it is automatically invoked when xfs exits.
+ Refer to "user ID" and "process ID" in diagnostic messages, not "userid"
  and "process-id".
+ Remove duplicate unconditional #include of stdlib.h.
+ Wrap long lines.
+ Add "FUTURE DIRECTIONS" section to manpage.
+ Perform massive cleanup and reformatting of manpage.

Update xfs's init script:
+ Modify the stillrunning() function in to remove a known-stale /var/run/xfs.pid
  file if it is present.
+ Stop removing the daemon-not-stopped file, as code removing it is run
  elsewhere.
+ Stop forcing the script to exit if given the "stop" argument and the daemon is
  assumed to not be running due to no process ID file being found (this would
  cause "restart" to fail to start the daemon in this case).
+ Remove the "daemon-not-stopped" flag file if asked to stop the daemon and it
  either appears to not be running, or was successfully stopped.
+ Update and clarify comments.


Modified: trunk/debian/CHANGESETS
===================================================================
--- trunk/debian/CHANGESETS	2005-01-23 22:11:50 UTC (rev 2150)
+++ trunk/debian/CHANGESETS	2005-01-24 16:54:48 UTC (rev 2151)
@@ -183,4 +183,26 @@
 'hidden' attribute was wrongly set.  Thanks, Frans Pop!  (Closes: #290935)
     2149, 2150
 
+Add more clearnups and enhancements to xfs in patch #003b:
++ Add RemovePid() function which removes the process ID file, and register
+  it with atexit() so that it is automatically invoked when xfs exits.
++ Refer to "user ID" and "process ID" in diagnostic messages, not "userid"
+  and "process-id".
++ Remove duplicate unconditional #include of stdlib.h.
++ Wrap long lines.
++ Add "FUTURE DIRECTIONS" section to manpage.
++ Perform massive cleanup and reformatting of manpage.
+Update xfs's init script:
++ Modify the stillrunning() function in to remove a known-stale /var/run/xfs.pid
+  file if it is present.
++ Stop removing the daemon-not-stopped file, as code removing it is run
+  elsewhere.
++ Stop forcing the script to exit if given the "stop" argument and the daemon is
+  assumed to not be running due to no process ID file being found (this would
+  cause "restart" to fail to start the daemon in this case).
++ Remove the "daemon-not-stopped" flag file if asked to stop the daemon and it
+  either appears to not be running, or was successfully stopped.
++ Update and clarify comments.
+    2151
+
 vim:set ai et sts=4 sw=4 tw=80:

Modified: trunk/debian/TODO
===================================================================
--- trunk/debian/TODO	2005-01-23 22:11:50 UTC (rev 2150)
+++ trunk/debian/TODO	2005-01-24 16:54:48 UTC (rev 2151)
@@ -17,8 +17,6 @@
 4.3.0.dfsg.1-11
 ---------------
 
-* Patch xfs to remove its pid file on exit (should be similar to changes in dm.c
-  in patch #002).  Also resync recent changes to xdm.init over to xfs.init.
 * Migrate the bug scripts to the more sophisticated world order now in use.
   + Move current scripts from /usr/share/bug/$PACKAGE to
     /usr/share/bug/$PACKAGE/script (renaming in SVN from $PACKAGE.bug to

Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog	2005-01-23 22:11:50 UTC (rev 2150)
+++ trunk/debian/changelog	2005-01-24 16:54:48 UTC (rev 2151)
@@ -93,16 +93,24 @@
     + Add more debugging to execute().
     + Use the term "process ID" instead of "process-id".
 
-  * Update the stillrunning() function in xdm's init script to remove a
-    known-stale /var/run/xdm.pid file if it is present.  Stop removing the
-    daemon-not-stopped file, as code removing it is run elsewhere.  Stop
-    forcing the script to exit if given the "stop" argument and the daemon is
-    assumed to not be running due to no process ID file being found (this
-    would cause "restart" to fail to start the daemon in this case).  Remove
-    the "daemon-not-stopped" flag file if asked to stop the daemon and it
-    either appears to not be running, or was successfully stopped.  Update and
-    clarify comments in xdm's init script.
+  * Add more clearnups and enhancements to xfs in patch #003b:
+    + Add RemovePid() function which removes the process ID file, and register
+      it with atexit() so that it is automatically invoked when xfs exits.
+    + Refer to "user ID" and "process ID" in diagnostic messages, not "userid"
+      and "process-id".
+    + Add "FUTURE DIRECTIONS" section to manpage.
+    + Perform massive cleanup and reformatting of manpage.
 
+  * Update the stillrunning() function in xdm's and xfs's init scripts to
+    remove a known-stale /var/run/{xdm,xfs}.pid file if it is present.  Stop
+    removing the daemon-not-stopped file, as code removing it is run
+    elsewhere.  Stop forcing the script to exit if given the "stop" argument
+    and the daemon is assumed to not be running due to no process ID file
+    being found (this would cause "restart" to fail to start the daemon in
+    this case).  Remove the "daemon-not-stopped" flag file if asked to stop
+    the daemon and it either appears to not be running, or was successfully
+    stopped.  Update and clarify comments in xdm's and xfs's init script.
+
   * Fix typo in German debconf template translations.  Thanks, Georg Neis!
     (Closes: #289508)
 
@@ -145,7 +153,7 @@
     functionality caused by overly aggressive validation of filespec strings
     in OpenReadFile() and OpenWriteFile().  (Closes: #286164)
 
- -- Branden Robinson <branden@debian.org>  Fri, 21 Jan 2005 16:23:31 -0500
+ -- Branden Robinson <branden@debian.org>  Mon, 24 Jan 2005 11:48:04 -0500
 
 xfree86 (4.3.0.dfsg.1-10) unstable; urgency=medium
 

Modified: trunk/debian/patches/003b_xfs_fixes.diff
===================================================================
--- trunk/debian/patches/003b_xfs_fixes.diff	2005-01-23 22:11:50 UTC (rev 2150)
+++ trunk/debian/patches/003b_xfs_fixes.diff	2005-01-24 16:54:48 UTC (rev 2151)
@@ -8,16 +8,26 @@
     files, and is more careful with the type of Pid_t.
   - Allow the user to specify the pid filename on the command line with a
     "-pid" option (courtesy of Nikita V. Youshchenko).
+  - Add RemovePid() function which removes the process ID file, and
+    register it with atexit() so that it is automatically invoked when xfs
+    exits.
   - Sort options in usage message alphabetically.
+  - Refer to "user ID" and "process ID" in diagnostic messages, not
+    "userid" and "process-id".
+  - Remove duplicate unconditional #include of stdlib.h.
+  - Wrap long lines.
   - Whitespace police.
 
 xfs.man:
   - Document the new "-pid" option (courtesy of Nikita V. Youshchenko).
+  - Add "FUTURE DIRECTIONS" section.
+  - Perform massive cleanup and reformatting.
 
 Not submitted upstream yet.
 
---- xc/programs/xfs/os/utils.c.orig	2004-01-13 11:17:37.000000000 -0500
-+++ xc/programs/xfs/os/utils.c	2004-01-13 11:18:06.000000000 -0500
+diff -urN xc/programs/xfs~/os/utils.c xc/programs/xfs/os/utils.c
+--- xc/programs/xfs~/os/utils.c	2005-01-22 16:41:53.000000000 -0500
++++ xc/programs/xfs/os/utils.c	2005-01-22 21:03:47.000000000 -0500
 @@ -3,7 +3,7 @@
   * misc os utilities
   */
@@ -36,25 +46,40 @@
   *
   * Permission to use, copy, modify, distribute, and sell this software and
   * its documentation for any purpose is hereby granted without fee, provided
-@@ -116,7 +116,7 @@
+@@ -90,8 +90,6 @@
+ #define SIGNALS_RESET_WHEN_CAUGHT
+ #endif
+ 
+-#include <stdlib.h>
+-
+ extern char *configfilename;
+ static Bool dropPriv = FALSE; /* whether or not to drop root privileges */
+ #ifdef DEFAULT_DAEMON
+@@ -116,7 +114,8 @@
  static char *pidFile = XFSPIDDIR "/xfs.pid";
  static int  pidFd;
  static FILE *pidFilePtr;
 -static int  StorePid (void);
 +static long StorePid (void);
++static void RemovePid (void);
  
  /* ARGSUSED */
  SIGVAL
-@@ -219,7 +219,7 @@
+@@ -217,9 +216,11 @@
+ }
+ 
  static void
- usage(void)
+-usage(void)
++usage (void)
  {
 -    fprintf(stderr, "usage: %s [-config config_file] [-port tcp_port] [-droppriv] [-daemon] [-nodaemon] [-user user_name] [-ls listen_socket]\n",
-+    fprintf(stderr, "usage: %s [-config config_file] [-daemon] [-droppriv] [-ls listen_socket] [-nodaemon] [-pid pid_file] [-port tcp_port] [-user user_name]\n",
++    fprintf(stderr, "usage: %s [-config config_file] [-daemon] [-droppriv]"
++		    " [-ls listen_socket] [-nodaemon] [-pid pid_file]"
++		    " [-port tcp_port] [-user user_name]\n",
  	    progname);
      exit(1);
  }
-@@ -242,7 +242,7 @@
+@@ -242,7 +243,7 @@
   *
   * [] denotes optional and ... denotes repitition.
   *
@@ -63,7 +88,7 @@
   */
  
  void
-@@ -260,7 +260,7 @@
+@@ -260,7 +261,7 @@
  	    count++;
  	ptr++;
      }
@@ -72,7 +97,7 @@
      OldListenCount = count + 1;
      OldListen = (OldListenRec *) malloc (
  	OldListenCount * sizeof (OldListenRec));
-@@ -349,6 +349,11 @@
+@@ -349,6 +350,11 @@
  		configfilename = argv[++i];
  	    else
  		usage();
@@ -84,7 +109,7 @@
  	}
  #ifdef MEMBUG
  	else if ( strcmp( argv[i], "-alloc") == 0)
-@@ -392,7 +397,7 @@
+@@ -392,7 +398,7 @@
  FSalloc (unsigned long amount)
  {
      register pointer  ptr;
@@ -93,7 +118,7 @@
      if ((long)amount < 0)
  	return 0;
      if (amount == 0)
-@@ -462,21 +467,21 @@
+@@ -462,21 +468,21 @@
  	FatalError("out of memory\n");
      return 0;
  }
@@ -120,7 +145,22 @@
  #endif
  }
  
-@@ -523,7 +528,7 @@
+@@ -511,11 +517,12 @@
+ 	    }
+ #endif /* QNX4 */
+ 	    if (setuid(pwent->pw_uid)) {
+-		FatalError("fatal: couldn't set userid to %s user\n", user);
++		FatalError("fatal: couldn't set user ID to %s user\n", user);
+ 	    }
+ 	}
+     } else if (dropPriv || userId) {
+-	FatalError("fatal: -droppriv or -user flag specified, but xfs not run as root\n");
++	FatalError("fatal: -droppriv or -user flag specified, but xfs not"
++		   " invoked by root user\n");
+     }
+ }
+ 
+@@ -523,49 +530,77 @@
  void
  SetDaemonState(void)
  {
@@ -129,11 +169,28 @@
  
      if (becomeDaemon) {
  	BecomeOrphan();
-@@ -540,30 +545,53 @@
+ 	BecomeDaemon();
+ 	if ((oldpid = StorePid ())) {
+ 	    if (oldpid == -1)
+-		ErrorF ("error opening process-id file %s\n", pidFile);
++		ErrorF ("error opening process ID file %s\n", pidFile);
+ 	    else
+-		ErrorF ("process-id file %s indicates another xfs is "
+-			  "running (pid %d); exiting\n", pidFile, oldpid);
++		ErrorF ("process ID file %s indicates another xfs is "
++			  "running (pid %ld); exiting\n", pidFile, oldpid);
+ 	    exit(1);
+ 	}
++	if (atexit (RemovePid))
++	    ErrorF ("could not register RemovePid() with atexit()\n");
+     }
  }
  
  
 -static int
++/*
++ * Create and populate file storing process ID.
++ */
 +static long
  StorePid (void)
  {
@@ -161,23 +218,23 @@
 +		pidFilePtr = fopen (pidFile, "r");
 +		if (pidFilePtr == NULL)
 +		{
-+		    ErrorF ("cannot open process-id file %s for reading: "
++		    ErrorF ("cannot open process ID file %s for reading: "
 +			    "%s\n", pidFile, strerror (errno));
 +		    return -1;
 +		}
 +		if (fscanf (pidFilePtr, "%ld\n", &oldpid) != 1)
 +		{
-+		    ErrorF ("existing process-id file %s empty or contains "
++		    ErrorF ("existing process ID file %s empty or contains "
 +			    "garbage\n", pidFile);
 +		    oldpid = -1;
 +		}
-+		fclose (pidFilePtr);
++		(void) fclose (pidFilePtr);
 +		return oldpid;
 +	    }
 +		else
 +	    {
-+		ErrorF ("cannot fdopen process-id file %s for writing: "
-+			"%s\n", pidFile, strerror (errno));
++		ErrorF ("cannot open process ID file %s for writing: %s\n",
++			pidFile, strerror (errno));
 +		return -1;
 +	    }
  	}
@@ -189,35 +246,528 @@
 -	    ErrorF ("cannot seek process-id file %s: %s\n", pidFile,
 -		     strerror (errno));
 -	    return -1;
-+		ErrorF ("cannot open process-id file %s for writing: %s\n",
++		ErrorF ("cannot fdopen process ID file %s for writing: %s\n",
 +			pidFile, strerror (errno));
 +		return -1;
  	}
 -	if (fprintf (pidFilePtr, "%5ld\n", (long) getpid ()) != 6)
 +	(void) snprintf (pidstr, 11, "%ld", (long) getpid());
 +	pidstrlen = strlen (pidstr);
-+	if (fprintf (pidFilePtr, "%s\n", pidstr) != ( pidstrlen + 1))
++	if (fprintf (pidFilePtr, "%s\n", pidstr) != (pidstrlen + 1))
  	{
- 	    ErrorF ("cannot write to process-id file %s: %s\n", pidFile,
+-	    ErrorF ("cannot write to process-id file %s: %s\n", pidFile,
++	    ErrorF ("cannot write to process ID file %s: %s\n", pidFile,
  		    strerror (errno));
---- xc/programs/xfs/xfs.man.orig	2004-01-13 11:08:32.000000000 -0500
-+++ xc/programs/xfs/xfs.man	2004-01-13 11:09:37.000000000 -0500
-@@ -47,6 +47,7 @@
- [\-droppriv]
- [\-ls \fIlisten_socket\fP]
- [\-nodaemon]
-+[\-pid \fIpid_file\fP]
- [\-port \fItcp_port\fP]
- [\-user \fIusername\fP]
+ 	    return -1;
+ 	}
+@@ -574,3 +609,19 @@
+     }
+     return 0;
+ }
++
++
++/*
++ * Remove process ID file.  This function should be registered with atexit().
++ */
++static void
++RemovePid (void)
++{
++#ifdef DEBUG
++    fprintf (stderr, "unlinking process ID file %s\n", pidFile);
++#endif
++    if (unlink (pidFile))
++	if (errno != ENOENT)
++	    ErrorF ("cannot remove process ID file %s: %s\n", pidFile,
++		    strerror (errno));
++}
+diff -urN xc/programs/xfs~/xfs.man xc/programs/xfs/xfs.man
+--- xc/programs/xfs/xfs.man~	2005-01-24 00:48:31.000000000 -0500
++++ xc/programs/xfs/xfs.man	2005-01-24 00:57:52.000000000 -0500
+@@ -37,206 +37,320 @@
+ .\" suitability of this software for any purpose.  It is provided "as is"
+ .\" without express or implied warranty.
+ .\" $Xorg: xfs.man,v 1.4 2001/02/09 02:05:42 xorgcvs Exp $
+-.TH XFS 1 __xorgversion__
++.TH xfs __mansuffix__ __xorgversion__
+ .SH NAME
+ xfs \- X font server
+ .SH SYNOPSIS
+-.B "xfs"
+-[\-config \fIconfiguration_file\fP]
+-[\-daemon]
+-[\-droppriv]
+-[\-ls \fIlisten_socket\fP]
+-[\-nodaemon]
+-[\-port \fItcp_port\fP]
+-[\-user \fIusername\fP]
++.B xfs
++[
++.BI "\-config " configuration_file
++]
++[
++.B \-daemon
++]
++[
++.B \-droppriv
++]
++[
++.BI "\-ls " listen_socket
++]
++[
++.B \-nodaemon
++]
++[
++.BI "\-pid " pid_file
++]
++[
++.BI "\-port " tcp_port
++]
++[
++.BI "\-user " username
++]
  .SH DESCRIPTION
-@@ -91,6 +92,10 @@
- "no-listen = tcp"
- in the config file, which ensures that xfs will not to use a TCP port at all.
- .TP 8
-+.B \-pid pid_file
-+Save daemon process id into \fIpid_file\fR, instead of default
-+\fI/var/run/xfs.pid\fR.
-+.TP 8
++.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 (__osadmmansuffix__).
++Users may also wish to start private font servers for specific sets of
++fonts.
+ .PP
+-.I Xfs
+-is the X Window System font server.  It supplies fonts to X Window
+-System display servers.
+-.SH "STARTING THE SERVER"
+-The server is usually run by a system administrator, and started via 
+-boot files like \fI/etc/rc.local\fR.  Users may also wish to start
+-private font servers for specific sets of fonts.
+-.SH "OPTIONS"
+-.TP 8
+-.B \-config configuration_file
+-Specifies the configuration file the font server will use.  If this
+-parameter is not specified, the default file, \fI/usr/X11R6/lib/X11/fs/config\fR
++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, the default file,
++.IR __projectroot__/lib/X11/fs/config ,
+ will be used.
+-.TP 8
+-.B \-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 8
+-.B \-port tcp_port
+-Specifies the TCP port number on which the server will listen for connections.
+-The default port number is 7100.
+-.TP 8
++.TP
+ .B \-daemon
+-Instructs xfs to fork and go into the background automatically at
+-startup  If this option is not specified, xfs will run as a regular
+-process (unless xfs was built to daemonize by default).
+-.TP 8
++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; see
++.BR \-pid .
++.TP
+ .B \-droppriv
+-If specified, xfs will attempt to run as user and group \fIxfs\fR (unless
+-the
++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 xfs may have undiscovered
+-buffer overflows or other paths for possible exploit, both local and
+-remote.  With this option, you may also wish to specify
+-"no-listen = tcp"
+-in the config file, which ensures that xfs will not to use a TCP port at all.
+-.TP 8
++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
++.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
- When xfs is built to daemonize (run in the background) by default,
- this prevents that and starts xfs up as a regular process.
+-When xfs is built to daemonize (run in the background) by default,
+-this prevents that and starts xfs up as a regular process.
+-.TP 8
+-.B \-user username
+-This is equivalent to
++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 "\-pid " pid_file
++instructs
++.B xfs
++to save its process ID into
++.IR pid_file ,
++instead of the default,
++.IR /var/run/xfs.pid .
++If
++.B xfs
++is not running as a daemon, this option has no effect.
++.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
+-except that xfs will run as user \fIusername\fR.
+-.SH "SIGNALS"
+-.TP 8
+-.I SIGTERM
+-This causes the font server to exit cleanly.
+-.TP 8
+-.I SIGUSR1
+-This signal is used to cause the server to re-read its configuration file.
+-.TP 8
+-.I SIGUSR2
+-This signal is used to cause the server to flush any cached data it
+-may have.
+-.TP 8
+-.I SIGHUP
+-This signal is used to cause the server to reset, closing all active
+-connections and re-reading the configuration file.
+-.SH "CONFIGURATION"
++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 delcared in
++.BR xfs 's
++configuration file.
++.SS "Configuration File Format"
++.B xfs
++reads its configuration from
++.I __projectroot__/lib/X11/fs/config
++by default (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 '=' and then the desired value.
++Each keyword is followed by an equals sign (\(oq=\(cq) and then the desired
++value.
+ .PP
+ Recognized keywords include:
+-.sp
+-.\" .IP "cache-size (cardinal)"
+-.\" Size in bytes of the font server cache.
+-.IP "catalogue (list of string)"
+-Ordered list of font path element names.
+-Use of the keyword "catalogue" is very misleading at present,
+-the current implementation only supports a single catalogue ("all"),
++.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.
++Use of the keyword \(oqcatalogue\(cq is very misleading at present: the
++current implementation only supports a single catalogue (\(oqall\(cq),
+ containing all of the specified fonts.
+-.IP "alternate-servers (list of string)"
+-List of alternate servers for this font server.
+-.IP "client-limit (cardinal)"
+-Number of clients this font server will support 
+-before refusing service.  This is useful for tuning 
+-the load on each individual font server.
+-.IP "clone-self (boolean)"
+-Whether this font server should attempt to clone itself
+-when it reachs the client-limit.
+-.IP "default-point-size (cardinal)"
+-The default pointsize (in decipoints) for fonts that 
+-don't specify.  The default is 120.
+-.IP "default-resolutions (list of resolutions)"
+-Resolutions the server supports by default.
+-This information may be used as a hint for 
+-pre-rendering, and substituted for scaled fonts 
+-which do not specify a resolution.
+-A resolution is a comma-separated pair of x and y resolutions in
+-pixels per inch.
++.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.
+-.IP "error-file (string)"
+-Filename of the error file.  All warnings and errors
+-will be logged here.
+-.IP "no-listen (trans-type)"
+-Disable a transport  type. For example, TCP/IP connections can
+-be disabled with no-listen tcp
+-.IP "port (cardinal)"
+-TCP port on which the server will listen for connections.
+-.IP "use-syslog (boolean)"
+-Whether syslog(3) (on supported systems) is to be used 
+-for errors.
+-.IP "deferglyphs (string)"
+-Set the mode for delayed fetching and caching of glyphs.  Value is
+-"none", meaning deferred glyphs is disabled, "all", meaning it is
+-enabled for all fonts, and "16", meaning it is enabled only for
+-16-bits fonts.
+-.\" .IP "trusted-clients (list of string)"
+-.\" Those clients the fontserver will talk to.  Others
+-.\" will be refused for the initial connection.  An empty
+-.\" list means the server will talk to any client.
+-.SH "EXAMPLE"
++.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)"
++.\" idefntifies 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 (__oslibmansuffix__)
++(on supported systems) instead of being written to the
++.B error\-file
++(see above).
++.SS "Example Configuration File"
+ .nf
+ XCOMM
+ XCOMM sample font server configuration file
+ XCOMM
+ 
+-XCOMM allow a max of 10 clients to connect to this font server
+-client-limit = 10
++XCOMM Allow a max of 10 clients to connect to this font server.
++client\-limit = 10
+ 
+-XCOMM when a font server reaches its limit, start up a new one
+-clone-self = on
++XCOMM When a font server reaches the above limit, start up a new one.
++clone\-self = on
+ 
+-XCOMM alternate font servers for clients to use
+-alternate-servers = hansen:7101,hansen:7102
++XCOMM Identify alternate font servers for clients to use.
++alternate\-servers = hansen:7101,hansen:7102
+ 
+-XCOMM where to look for fonts
+-XCOMM the first is a set of Speedo outlines, the second is a set of 
+-XCOMM misc bitmaps and the last is a set of 100dpi bitmaps
++XCOMM Look for fonts in the following directories.  The first is a set of
++XCOMM Speedo outlines, the second is a set of misc bitmaps (such as terminal
++XCOMM and cursor fonts), and the last is a set of 100dpi bitmaps.
+ XCOMM
+ catalogue = /usr/X11R6/lib/X11/fonts/speedo,
+-	/usr/X11R6/lib/X11/fonts/misc,
+-	/usr/X11R6/lib/X11/fonts/100dpi/
++            /usr/X11R6/lib/X11/fonts/misc,
++            /usr/X11R6/lib/X11/fonts/100dpi/
+ 
+ XCOMM in 12 points, decipoints
+-default-point-size = 120
++default\-point\-size = 120
+ 
+ XCOMM 100 x 100 and 75 x 75
+-default-resolutions = 100,100,75,75
+-use-syslog = off
+-.fi
+-.sp
+-.SH "FONT SERVER NAMES"
+-One of the following forms can be used to name a font server that
+-accepts TCP connections:
+-.sp
+-.nf
+-    tcp/\fIhostname\fP:\fIport\fP
+-    tcp/\fIhostname\fP:\fIport\fP/\fIcataloguelist\fP
+-.fi
+-.PP
+-The \fIhostname\fP specifies the name (or decimal numeric address)
+-of the machine on which the font server is running.  The \fIport\fP
+-is the decimal TCP port on which the font server is listening for connections.
+-The \fIcataloguelist\fP specifies a list of catalogue names,
+-with '+' as a separator.
+-.PP
+-Examples: \fItcp/fs.x.org:7100\fP, \fItcp/18.30.0.212:7101/all\fP.
+-.PP
+-One of the following forms can be used to name a font server that
+-accepts DECnet connections:
+-.sp
+-.nf
+-    decnet/\fInodename\fP::font$\fIobjname\fP
+-    decnet/\fInodename\fP::font$\fIobjname\fP/\fIcataloguelist\fP
++default\-resolutions = 100,100,75,75
++
++XCOMM Specify our log filename.
++error\-file = /var/log/xfs.log
++
++XCOMM Direct diagnostics to our own log file instead of using syslog.
++use\-syslog = off
+ .fi
+-.PP
+-The \fInodename\fP specifies the name (or decimal numeric address)
+-of the machine on which the font server is running.
+-The \fIobjname\fP is a normal, case-insensitive DECnet object name.
+-The \fIcataloguelist\fP specifies a list of catalogue names,
+-with '+' as a separator.
+-.PP
+-Examples: \fIDECnet/SRVNOD::FONT$DEFAULT\fP, \fIdecnet/44.70::font$special/symbols\fP.
+-.SH "SEE ALSO"
+-X(__miscmansuffix__), \fIThe X Font Service Protocol\fP,
+-.br
+-\fIFont server implementation overview\fP
++.SH "OUTPUT FILES"
++When operating in daemon mode,
++.B xfs
++sends diagnostic messages (errors and warnings) to the system log via the
++.B syslog
++C library function 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
++Dave Lemke, Network Computing Devices, Inc.
+ .br
+ Keith Packard, Massachusetts Institute of Technology
++.SH "SEE ALSO"
++.BR X (__miscmansuffix__),
++.BR init (__osadmmansuffix__),
++.BR syslog (__oslibmansuffix__),
++.IR "The X Font Service Protocol" ,
++.I Font Server Implementation Overview

Modified: trunk/debian/xfs.init
===================================================================
--- trunk/debian/xfs.init	2005-01-23 22:11:50 UTC (rev 2150)
+++ trunk/debian/xfs.init	2005-01-24 16:54:48 UTC (rev 2151)
@@ -53,18 +53,20 @@
     2>&1; then
     true
   else
-    # if the daemon does not remove its own pidfile, we will
-    rm -f $PIDFILE $UPGRADEFILE
+    if [ -e $PIDFILE ]; then
+      echo -n " (removing stale $PIDFILE)"
+      rm $PIDFILE
+    fi
     false
   fi
 }
 
-# If we upgraded the daemon, we can't use the --exec argument to
-# start-stop-daemon since the inode will have changed.  The risk here is that
-# in a situation where the daemon died, its pidfile was not cleaned up, and
-# some other process is now running under that pid, start-stop-daemon will send
-# signals to an innocent process.  However, this seems like a corner case.
-# C'est la vie!
+# If we have upgraded the daemon since we last started it, we can't use the
+# --exec argument to start-stop-daemon, because the daemon's inode will have
+# changed.  The risk here is that in a situation where the daemon died, its
+# pidfile was not cleaned up, we've upgraded it, *and* some other process is now
+# running under that pid, start-stop-daemon will send signals to an innocent
+# process.  However, this seems like a corner case.  C'est la vie!
 if [ -e $UPGRADEFILE ]; then
   SSD_START_ARGS="--pidfile $PIDFILE --startas $DAEMON"
   SSD_STOP_ARGS="--pidfile $PIDFILE --name ${DAEMON#**/}"
@@ -108,8 +110,10 @@
   stop)
     echo -n "Stopping X font server: xfs"
     if ! [ -f $PIDFILE ]; then
-      echo " not running ($PIDFILE not found)."
-      exit 0
+      echo " not running ($PIDFILE not found)"
+      # The daemon is not running; do not tell the maintainer scripts that it
+      # has not stopped.
+      rm -f $UPGRADEFILE
     else
       DAEMONPID=$(cat $PIDFILE | tr -d '[:blank:]')
       KILLCOUNT=1
@@ -133,6 +137,8 @@
       if stillrunning; then
         echo -n " not responding to TERM signal (pid $DAEMONPID)"
       else
+        # The daemon is not running; do not tell the maintainer scripts that it
+        # has not stopped.
         rm -f $UPGRADEFILE
       fi
     fi



Reply to: