Author: dnusinow Date: 2005-07-05 20:08:06 -0500 (Tue, 05 Jul 2005) New Revision: 311
Added: trunk/debian/patches/099u_mkdirhier_rewrite.diff Modified: trunk/debian/TODO trunk/debian/patches/003b_xfs_fixes.diff trunk/debian/patches/304_arm_Xlib.h_kludge_around_ARM_ABI_brain_damage.diff Log: - Patch audit. This one is a tag-team effot by Eugene Konvev and Nathanael Nerode. - 003b_xfs_fixes.diff ported. Restored rephrasings of messages, RemovePID in utils.c, manpage changes. - 099u_mkdirhier_rewrite.diff ported - 304_arm_Xlib.h_kludge_around_ARM_ABI_brain_damage.diff fixed Modified: trunk/debian/TODO =================================================================== --- trunk/debian/TODO 2005-07-06 00:55:35 UTC (rev 310) +++ trunk/debian/TODO 2005-07-06 01:08:06 UTC (rev 311) @@ -9,16 +9,10 @@ ----------------------------- * Review all xfree86 4.3.0.dfsg.1-13 and -14 patches. [neroden] -003b_xfs_fixes.diff -- NEEDS INFO, probably NEEDS PORTING - -- similar patch present under same name - -- The xfree86 version looks more up-to-date than the xorg version. - But it's possible that the xorg version is the xfree86 version with parts - deliberately removed. I need to know. :-) 031_glxinfo_makefile.diff -- Upstream says that it's incorrect and due to a toolchain bug. Have to see whether it's still needed for GNU/kFreeBSD, and if so, fix the bug. See Freedesktop Bugzilla #1902. -099u_mkdirhier_rewrite.diff -- needs porting 099z_xkb_level3_ralt_switch.diff -- present under same name, but without changes to: (Why?) xc/programs/xkbcomp/symbols/pc/dvorak Modified: trunk/debian/patches/003b_xfs_fixes.diff =================================================================== --- trunk/debian/patches/003b_xfs_fixes.diff 2005-07-06 00:55:35 UTC (rev 310) +++ trunk/debian/patches/003b_xfs_fixes.diff 2005-07-06 01:08:06 UTC (rev 311) @@ -8,17 +8,27 @@ 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. -diff -ruN xc-old/programs/xfs/os/utils.c xc/programs/xfs/os/utils.c ---- xc-old/programs/xfs/os/utils.c 2004-04-23 19:54:48.000000000 +0000 -+++ xc/programs/xfs/os/utils.c 2004-10-26 05:39:06.300227040 +0000 +Index: xc/programs/xfs/os/utils.c +=================================================================== +--- xc/programs/xfs/os/utils.c (revision 309) ++++ xc/programs/xfs/os/utils.c (working copy) @@ -3,7 +3,7 @@ * misc os utilities */ @@ -37,25 +47,37 @@ * * 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 @@ +@@ -219,7 +218,9 @@ static 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. * @@ -64,7 +86,7 @@ */ void -@@ -260,7 +260,7 @@ +@@ -260,7 +261,7 @@ count++; ptr++; } @@ -73,19 +95,19 @@ OldListenCount = count + 1; OldListen = (OldListenRec *) malloc ( OldListenCount * sizeof (OldListenRec)); -@@ -349,6 +349,11 @@ +@@ -349,6 +350,11 @@ configfilename = argv[++i]; else usage(); -+ } else if (!strcmp(argv[i], "-pid")) { -+ if (argv[i + 1]) -+ pidFile = argv[++i]; -+ else -+ usage(); ++ } else if (!strcmp(argv[i], "-pid")) { ++ if (argv[i + 1]) ++ pidFile = argv[++i]; ++ else ++ usage(); } #ifdef MEMBUG else if ( strcmp( argv[i], "-alloc") == 0) -@@ -392,7 +397,7 @@ +@@ -392,7 +398,7 @@ FSalloc (unsigned long amount) { register pointer ptr; @@ -94,7 +116,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; } @@ -113,35 +135,65 @@ #ifdef MEMBUG if (ptr) - ffree((char *)ptr); -+ ffree((char *)ptr); ++ ffree((char *)ptr); #else if (ptr) - free((char *)ptr); -+ free((char *)ptr); ++ free((char *)ptr); #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,48 +530,76 @@ void SetDaemonState(void) { - int oldpid; -+ long oldpid; ++ long oldpid; if (becomeDaemon) { BecomeDaemon(); -@@ -539,30 +544,53 @@ + 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); ++ "running (pid %ld); exiting\n", pidFile, oldpid); + exit(1); + } ++ if (atexit (RemovePid)) ++ ErrorF ("could not register RemovePid() with atexit()\n"); + } } -static int +static long ++/* ++ * Create and populate file storing process ID. ++ */ StorePid (void) { - int oldpid; -+ long oldpid; -+ char pidstr[11]; /* enough space for a 32-bit pid plus \0 */ -+ size_t pidstrlen; ++ long oldpid; ++ char pidstr[11]; /* enough space for a 32-bit pid plus \0 */ ++ size_t pidstrlen; - if (pidFile[0] != '\0') { - pidFd = open (pidFile, O_RDWR); @@ -150,76 +202,568 @@ - if (pidFd == -1 || !(pidFilePtr = fdopen (pidFd, "r+"))) + if (pidFile[0] != '\0') + { -+ pidFd = open (pidFile, O_WRONLY|O_CREAT|O_EXCL, 0666); -+ if (pidFd == -1) ++ pidFd = open (pidFile, O_WRONLY|O_CREAT|O_EXCL, 0666); ++ if (pidFd == -1) { - ErrorF ("cannot open process-id file %s: %s\n", pidFile, - strerror (errno)); - return -1; -+ if (errno == EEXIST) -+ { -+ /* pidFile already exists; see if we can open it */ -+ pidFilePtr = fopen (pidFile, "r"); -+ if (pidFilePtr == NULL) -+ { -+ 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 " -+ "garbage\n", pidFile); -+ oldpid = -1; -+ } -+ fclose (pidFilePtr); -+ return oldpid; -+ } -+ else -+ { -+ ErrorF ("cannot fdopen process-id file %s for writing: " -+ "%s\n", pidFile, strerror (errno)); -+ return -1; -+ } ++ if (errno == EEXIST) ++ { ++ /* pidFile already exists; see if we can open it */ ++ pidFilePtr = fopen (pidFile, "r"); ++ if (pidFilePtr == NULL) ++ { ++ 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 " ++ "garbage\n", pidFile); ++ oldpid = -1; ++ } ++ fclose (pidFilePtr); ++ return oldpid; ++ } ++ else ++ { ++ ErrorF ("cannot fdopen process ID file %s for writing: " ++ "%s\n", pidFile, strerror (errno)); ++ return -1; ++ } } - if (fscanf (pidFilePtr, "%d\n", &oldpid) != 1) - oldpid = -1; - if (fseek (pidFilePtr, 0L, SEEK_SET) == -1) -+ if ((pidFilePtr = fdopen (pidFd, "w")) == NULL) ++ if ((pidFilePtr = fdopen (pidFd, "w")) == NULL) { - 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", -+ pidFile, strerror (errno)); -+ return -1; ++ ErrorF ("cannot open 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)) ++ (void) snprintf (pidstr, 11, "%ld", (long) getpid()); ++ pidstrlen = strlen (pidstr); ++ 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)); -diff -ruN xc-old/programs/xfs/xfs.man xc/programs/xfs/xfs.man ---- xc-old/programs/xfs/xfs.man 2004-04-23 19:54:47.000000000 +0000 -+++ xc/programs/xfs/xfs.man 2004-10-26 05:39:06.301226888 +0000 -@@ -47,6 +47,7 @@ - [\-droppriv] - [\-ls \fIlisten_socket\fP] - [\-nodaemon] -+[\-pid \fIpid_file\fP] - [\-port \fItcp_port\fP] - [\-user \fIusername\fP] + return -1; + } +@@ -573,3 +608,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)); ++} +Index: xc/programs/xfs/xfs.man +=================================================================== +--- xc/programs/xfs/xfs.man (revision 309) ++++ xc/programs/xfs/xfs.man (working copy) +@@ -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 ++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 +-.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 +-.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 + .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 Added: trunk/debian/patches/099u_mkdirhier_rewrite.diff =================================================================== --- trunk/debian/patches/099u_mkdirhier_rewrite.diff 2005-07-06 00:55:35 UTC (rev 310) +++ trunk/debian/patches/099u_mkdirhier_rewrite.diff 2005-07-06 01:08:06 UTC (rev 311) @@ -0,0 +1,314 @@ +$Id: 099u_mkdirhier_rewrite.diff 2171 2005-02-08 07:13:50Z branden $ + +Reimplement mkdirhier; see Debian #141347 and #232357 for some reasons why. + +This shell script and manpage by Branden Robinson. + +Not submitted upstream to XFree86 or X.Org. + +Index: xc/config/util/mkdirhier.sh +=================================================================== +--- xc/config/util/mkdirhier.sh (revision 309) ++++ xc/config/util/mkdirhier.sh (working copy) +@@ -1,67 +1,94 @@ + #!/bin/sh +-# $Xorg: mkdirhier.sh,v 1.3 2000/08/17 19:41:53 cpqbld Exp $ +-# Courtesy of Paul Eggert + +-newline=' +-' +-IFS=$newline ++# Copyright 2005 Branden Robinson. + +-case ${1--} in +--*) echo >&2 "mkdirhier: usage: mkdirhier directory ..."; exit 1 +-esac ++# 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 condition: ++# ++# 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 ++# SOFTWARE IN THE PUBLIC INTEREST, INC. 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. + +-status= ++# I rewrote Paul Eggert's script in POSIX shell because it was a little ++# odd, and did not confine itself to puritantical pre-POSIX conventions. ++# For example, in one place it used: ++# case ${1--} in ++# -*) ++# to test for $1 being null, presumably due to fears that test -n and -z ++# will not be available. Yet later in the script, test -n was used. ++# ++# This seemed quite silly. I decided to rewrite it since I am arrgoant ++# enough to think I know what I'm doing in POSIX shell. ++# ++# If someone needs a pre-POSIX version of mkdirhier, they'll probably need to ++# turn to someone else, as I have no idea where such a thing is specified. + +-for directory +-do +- case $directory in +- '') +- echo >&2 "mkdirhier: empty directory name" +- status=1 +- continue;; +- *"$newline"*) +- echo >&2 "mkdirhier: directory name contains a newline: \`\`$directory''" +- status=1 +- continue;; +- ///*) prefix=/;; # See Posix 2.3 "path". +- //*) prefix=//;; +- /*) prefix=/;; +- -*) prefix=./;; +- *) prefix= +- esac ++set -e + +- IFS=/ +- set x $directory +- case $2 in +- */*) # IFS parsing is broken +- IFS=' ' +- set x `echo $directory | tr / ' '` +- ;; +- esac +- IFS=$newline +- shift ++PROGNAME=${0##*/} ++STATUS=0 + +- for filename +- do +- path=$prefix$filename +- prefix=$path/ +- shift ++usage() { ++ cat <<EOF ++usage: $PROGNAME DIRECTORY ... ++Create each directory DIRECTORY, also creating intermediate directories in the ++specified hierarchy as necessary. + +- test -d "$path" || { +- paths=$path +- for filename +- do +- if [ -n "$filename" -a "$filename" != "." ]; then +- path=$path/$filename +- paths=$paths$newline$path +- fi +- done ++Note: Use "mkdir -p" instead of "$PROGNAME" if the system supports it. ++EOF ++} + +- mkdir $paths || status=$? ++makedir () { ++ FUNC_STATUS=0 ++ # Does the desired directory already exist? ++ if ! [ -d "$1" ]; then ++ # Is a directory hierarchy specified (i.e., are any slashes in the ++ # argument)? ++ PARENT=${1%/*} ++ if [ -n "$PARENT" ] && [ "$PARENT" != "$1" ]; then ++ # Yes; does the desired directory's immediate parent exist? ++ if ! [ -d "$PARENT" ]; then ++ # No; push it onto the stack. If that fails, return ++ # immediately, as we know later calls will also fail. E.g., if ++ # we are asked to create /usr/bin/foo/bar/baz/quux and ++ # /usr/bin/foo fails, we don't have to even try anything deeper ++ # in the hierarchy. ++ if ! makedir "$PARENT"; then ++ return $FUNC_STATUS ++ fi ++ fi ++ fi ++ mkdir "$1" || FUNC_STATUS=$? ++ fi ++ return $FUNC_STATUS ++} + +- break +- } +- done +- done ++if [ -z "$1" ]; then ++ usage >&2 ++ exit 64 ++fi + +-exit $status ++while [ -n "$1" ]; do ++ ARG="$1" ++ makedir "$ARG" || \ ++ { ++ STATUS=$? ++ echo "$PROGNAME: could not create directory \"$ARG\"" >&2 ++ } ++ shift ++done ++ ++exit $STATUS ++ ++# vim:set ai et sts=4 sw=4 tw=80: +Index: xc/config/util/mkdirhier.man +=================================================================== +--- xc/config/util/mkdirhier.man (revision 309) ++++ xc/config/util/mkdirhier.man (working copy) +@@ -1,42 +1,111 @@ +-.\" $Xorg: mkdirhier.man,v 1.4 2001/02/09 02:03:17 xorgcvs Exp $ +-.\" Copyright (c) 1993, 1994, 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. +-.\" ++.\" Copyright 2005 Branden Robinson. ++.\" ++.\" 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 condition: ++.\" ++.\" 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 +-.\" Open Group. +-.\" +-.\" $XFree86: xc/config/util/mkdirhier.man,v 1.2 2001/01/27 18:19:55 dawes Exp $ +-.\" +-.TH MKDIRHIER 1 __xorgversion__ ++.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL ++.\" SOFTWARE IN THE PUBLIC INTEREST, INC. 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. ++.TH mkdirhier __mansuffix__ __xorgversion__ + .SH NAME +-mkdirhier \- makes a directory hierarchy ++mkdirhier \- create a directory hierarchy + .SH SYNOPSIS + .B mkdirhier +-directory ... ++.I directory ++\&... + .SH DESCRIPTION +-The +-.I mkdirhier +-command creates the specified directories. Unlike +-.I mkdir +-if any of the parent directories of the specified directory +-do not exist, it creates them as well. ++.B mkdirhier ++creates the specified directories. ++Unlike some versions of ++.BR mkdir , ++if any of the parent directories of the specified directory do not exist, ++.B mkdirhier ++creates them as well. ++.PP ++.B mkdirhier ++is a wrapper for ++.BR mkdir ; ++systems with ++.BR mkdir (__osmansuffix__) ++implementations conformant with the Single Unix Specification may simply ++use ++.B mkdir \-p ++instead \(em this includes all systems using the GNU Core Utilities' ++version of ++.BR mkdir . ++.SH DIAGNOSTICS ++If ++.B mkdirhier ++is not supplied with any arguments, a usage message is printed. ++.PP ++.B mkdirhier ++prefixes its diagnostic messages with the name under which it was invoked, ++followed by a colon (\(oq:\(cq) so that its messages can be distingushed ++from others. ++.TP ++.B could not create directory \(dq\fIdirectory\fP\(dq ++indicates that there was a failure while creating ++.IR directory . ++This message will likely be preceded by a diagnostic message from ++.BR mkdir . ++.SH "EXIT STATUS" ++.TP ++.B 64 ++.B mkdirhier ++was not given any directory names to create. ++.PP ++.B mkdirhier ++otherwise exits with the exit status of the last ++.B mkdir ++command that failed. ++.SH BUGS ++.B mkdirhier ++does not create all the requested directories as an atomic operation; ++therefore, it is is susceptible to race conditions. ++For example, if ++.B mkdirhier ++is directed to create a hierarchy ++.I a/b/c/d ++and any of ++.IR a/ , ++.IR b/ , ++or ++.I c/ ++do not yet exist, any of the newly-created directories can be removed ++and/or replaced by a symbolic link to another location in the window of ++time after ++.B mkdirhier ++creates a directory and the directory immediately below it. ++This means that failures can be provoked (since ++.B mkdir ++will fail to create a directory in a directory that does not already ++exist), ++or directories may be created in unexpected locations. ++The same limitation holds for multiple directory arguments to ++.BR mkdirhier ; ++given two arguments ++.I a/b/c/d ++and ++.IR a/b/c/f , ++it is possible for the directory hierarchy ++.I a/b/c ++to be disrupted in the time between the processing of the two arguments. ++To avoid these problems, use ++.B mkdir \-p ++instead, or do not use ++.B mkdirhier ++to create directories in parts of the filesystem where untrusted users can ++manipulate them. + .SH "SEE ALSO" +-mkdir(1) ++.BR mkdir (__osmansuffix__) Modified: trunk/debian/patches/304_arm_Xlib.h_kludge_around_ARM_ABI_brain_damage.diff =================================================================== --- trunk/debian/patches/304_arm_Xlib.h_kludge_around_ARM_ABI_brain_damage.diff 2005-07-06 00:55:35 UTC (rev 310) +++ trunk/debian/patches/304_arm_Xlib.h_kludge_around_ARM_ABI_brain_damage.diff 2005-07-06 01:08:06 UTC (rev 311) @@ -11,13 +11,14 @@ diff -ruN xc-old/lib/X11/Xlib.h xc/lib/X11/Xlib.h --- xc-old/lib/X11/Xlib.h 2005-05-08 23:35:32.000000000 -0400 +++ xc/lib/X11/Xlib.h 2005-07-01 18:23:07.000000000 -0400 -@@ -1068,7 +1068,11 @@ +@@ -1068,7 +1068,12 @@ typedef struct { /* normal 16 bit characters are two bytes */ unsigned char byte1; unsigned char byte2; -} XChar2b; +} -+#if defined(__GNUC__) && defined(__arm__) && !defined(__ARM_EABI__) __attribute__ ((packed)) ++#if defined(__GNUC__) && defined(__arm__) && !defined(__ARM_EABI__) ++__attribute__ ((packed)) +#endif +XChar2b; + -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]