--- /dev/null
+--- xc.orig/config/cf/xfree86.cf 2004-08-08 14:23:13.000000000 +0200
++++ xc/config/cf/xfree86.cf 2004-08-08 14:36:35.145813664 +0200
+@@ -1916,7 +1916,7 @@
+ #endif
+
+ #ifndef DefaultGcc2DebugOpt
+-# define DefaultGcc2DebugOpt -g
++# define DefaultGcc2DebugOpt
+ #endif
+
+ #ifndef DebuggableLibraries
--- /dev/null
+--- xc.orig/config/cf/linux.cf 2004-08-08 14:36:20.000000000 +0200
++++ xc/config/cf/linux.cf 2004-08-08 15:15:52.515439008 +0200
+@@ -1023,3 +1023,7 @@
+ #ifndef HasZlib
+ #define HasZlib YES
+ #endif
++
++#ifndef HasFreetype2
++#define HasFreetype2 YES
++#endif
--- /dev/null
+--- xc.orig/config/cf/xf86site.def 2004-08-08 14:23:13.000000000 +0200
++++ xc/config/cf/xf86site.def 2004-08-08 15:02:46.563921800 +0200
+@@ -578,8 +578,8 @@
+ /*
+ * If you want XDMAUTH support (if you have Wraphelp.c), uncomment this.
+ *
+-#define HasXdmAuth YES
+ */
++#define HasXdmAuth YES
+
+ /*
+ * If you have Linux DECnet support, and want to build XFree86 with support
+--- xc.orig/lib/Xdmcp/Wraphelp.c 1970-01-01 01:00:00.000000000 +0100
++++ xc/lib/Xdmcp/Wraphelp.c 2004-08-08 15:02:46.565921496 +0200
+@@ -0,0 +1,401 @@
++/*
++ * This program implements the
++ * Proposed Federal Information Processing
++ * Data Encryption Standard.
++ * See Federal Register, March 17, 1975 (40FR12134)
++ */
++
++/*
++ * Initial permutation,
++ */
++static char IP[] = {
++ 58,50,42,34,26,18,10, 2,
++ 60,52,44,36,28,20,12, 4,
++ 62,54,46,38,30,22,14, 6,
++ 64,56,48,40,32,24,16, 8,
++ 57,49,41,33,25,17, 9, 1,
++ 59,51,43,35,27,19,11, 3,
++ 61,53,45,37,29,21,13, 5,
++ 63,55,47,39,31,23,15, 7,
++};
++
++/*
++ * Final permutation, FP = IP^(-1)
++ */
++static char FP[] = {
++ 40, 8,48,16,56,24,64,32,
++ 39, 7,47,15,55,23,63,31,
++ 38, 6,46,14,54,22,62,30,
++ 37, 5,45,13,53,21,61,29,
++ 36, 4,44,12,52,20,60,28,
++ 35, 3,43,11,51,19,59,27,
++ 34, 2,42,10,50,18,58,26,
++ 33, 1,41, 9,49,17,57,25,
++};
++
++/*
++ * Permuted-choice 1 from the key bits
++ * to yield C and D.
++ * Note that bits 8,16... are left out:
++ * They are intended for a parity check.
++ */
++static char PC1_C[] = {
++ 57,49,41,33,25,17, 9,
++ 1,58,50,42,34,26,18,
++ 10, 2,59,51,43,35,27,
++ 19,11, 3,60,52,44,36,
++};
++
++static char PC1_D[] = {
++ 63,55,47,39,31,23,15,
++ 7,62,54,46,38,30,22,
++ 14, 6,61,53,45,37,29,
++ 21,13, 5,28,20,12, 4,
++};
++
++/*
++ * Sequence of shifts used for the key schedule.
++*/
++static char shifts[] = {
++ 1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1,
++};
++
++/*
++ * Permuted-choice 2, to pick out the bits from
++ * the CD array that generate the key schedule.
++ */
++static char PC2_C[] = {
++ 14,17,11,24, 1, 5,
++ 3,28,15, 6,21,10,
++ 23,19,12, 4,26, 8,
++ 16, 7,27,20,13, 2,
++};
++
++static char PC2_D[] = {
++ 41,52,31,37,47,55,
++ 30,40,51,45,33,48,
++ 44,49,39,56,34,53,
++ 46,42,50,36,29,32,
++};
++
++/*
++ * The C and D arrays used to calculate the key schedule.
++ */
++
++static char C[28];
++static char D[28];
++
++/*
++ * The key schedule.
++ * Generated from the key.
++ */
++static char KS[16][48];
++
++/*
++ * The E bit-selection table.
++ */
++static char E[48];
++static char e[] = {
++ 32, 1, 2, 3, 4, 5,
++ 4, 5, 6, 7, 8, 9,
++ 8, 9,10,11,12,13,
++ 12,13,14,15,16,17,
++ 16,17,18,19,20,21,
++ 20,21,22,23,24,25,
++ 24,25,26,27,28,29,
++ 28,29,30,31,32, 1,
++};
++
++/*
++ * Set up the key schedule from the key.
++ */
++
++static
++setkey(key)
++char *key;
++{
++ int i, j, k;
++ int t;
++ char *ptr;
++
++ /*
++ * First, generate C and D by permuting
++ * the key. The low order bit of each
++ * 8-bit char is not used, so C and D are only 28
++ * bits apiece.
++ */
++ for (i=0; i<28; i++) {
++ C[i] = key[PC1_C[i]-1];
++ D[i] = key[PC1_D[i]-1];
++ }
++ /*
++ * To generate Ki, rotate C and D according
++ * to schedule and pick up a permutation
++ * using PC2.
++ */
++ for (i=0; i<16; i++) {
++ /*
++ * rotate.
++ */
++ for (k=0; k<shifts[i]; k++) {
++ t = C[0];
++ ptr = C;
++ for (j=0; j<28-1; j++)
++ {
++ *ptr = ptr[1];
++ ptr++;
++ }
++ C[27] = t;
++ t = D[0];
++ ptr = D;
++ for (j=0; j<28-1; j++)
++ {
++ *ptr = ptr[1];
++ ptr++;
++ }
++ D[27] = t;
++ }
++ /*
++ * get Ki. Note C and D are concatenated.
++ */
++ ptr = &KS[i][0];
++ for (j=0; j<24; j++) {
++ ptr[j] = C[PC2_C[j]-1];
++ ptr[j+24] = D[PC2_D[j]-28-1];
++ }
++ }
++
++ for(i=0;i<48;i++)
++ E[i] = e[i];
++}
++
++/*
++ * The 8 selection functions.
++ * For some reason, they give a 0-origin
++ * index, unlike everything else.
++ */
++static char S[8][64] = {
++ 14, 4,13, 1, 2,15,11, 8, 3,10, 6,12, 5, 9, 0, 7,
++ 0,15, 7, 4,14, 2,13, 1,10, 6,12,11, 9, 5, 3, 8,
++ 4, 1,14, 8,13, 6, 2,11,15,12, 9, 7, 3,10, 5, 0,
++ 15,12, 8, 2, 4, 9, 1, 7, 5,11, 3,14,10, 0, 6,13,
++
++ 15, 1, 8,14, 6,11, 3, 4, 9, 7, 2,13,12, 0, 5,10,
++ 3,13, 4, 7,15, 2, 8,14,12, 0, 1,10, 6, 9,11, 5,
++ 0,14, 7,11,10, 4,13, 1, 5, 8,12, 6, 9, 3, 2,15,
++ 13, 8,10, 1, 3,15, 4, 2,11, 6, 7,12, 0, 5,14, 9,
++
++ 10, 0, 9,14, 6, 3,15, 5, 1,13,12, 7,11, 4, 2, 8,
++ 13, 7, 0, 9, 3, 4, 6,10, 2, 8, 5,14,12,11,15, 1,
++ 13, 6, 4, 9, 8,15, 3, 0,11, 1, 2,12, 5,10,14, 7,
++ 1,10,13, 0, 6, 9, 8, 7, 4,15,14, 3,11, 5, 2,12,
++
++ 7,13,14, 3, 0, 6, 9,10, 1, 2, 8, 5,11,12, 4,15,
++ 13, 8,11, 5, 6,15, 0, 3, 4, 7, 2,12, 1,10,14, 9,
++ 10, 6, 9, 0,12,11, 7,13,15, 1, 3,14, 5, 2, 8, 4,
++ 3,15, 0, 6,10, 1,13, 8, 9, 4, 5,11,12, 7, 2,14,
++
++ 2,12, 4, 1, 7,10,11, 6, 8, 5, 3,15,13, 0,14, 9,
++ 14,11, 2,12, 4, 7,13, 1, 5, 0,15,10, 3, 9, 8, 6,
++ 4, 2, 1,11,10,13, 7, 8,15, 9,12, 5, 6, 3, 0,14,
++ 11, 8,12, 7, 1,14, 2,13, 6,15, 0, 9,10, 4, 5, 3,
++
++ 12, 1,10,15, 9, 2, 6, 8, 0,13, 3, 4,14, 7, 5,11,
++ 10,15, 4, 2, 7,12, 9, 5, 6, 1,13,14, 0,11, 3, 8,
++ 9,14,15, 5, 2, 8,12, 3, 7, 0, 4,10, 1,13,11, 6,
++ 4, 3, 2,12, 9, 5,15,10,11,14, 1, 7, 6, 0, 8,13,
++
++ 4,11, 2,14,15, 0, 8,13, 3,12, 9, 7, 5,10, 6, 1,
++ 13, 0,11, 7, 4, 9, 1,10,14, 3, 5,12, 2,15, 8, 6,
++ 1, 4,11,13,12, 3, 7,14,10,15, 6, 8, 0, 5, 9, 2,
++ 6,11,13, 8, 1, 4,10, 7, 9, 5, 0,15,14, 2, 3,12,
++
++ 13, 2, 8, 4, 6,15,11, 1,10, 9, 3,14, 5, 0,12, 7,
++ 1,15,13, 8,10, 3, 7, 4,12, 5, 6,11, 0,14, 9, 2,
++ 7,11, 4, 1, 9,12,14, 2, 0, 6,10,13,15, 3, 5, 8,
++ 2, 1,14, 7, 4,10, 8,13,15,12, 9, 0, 3, 5, 6,11,
++};
++
++/*
++ * P is a permutation on the selected combination
++ * of the current L and key.
++ */
++static char P[] = {
++ 16, 7,20,21,
++ 29,12,28,17,
++ 1,15,23,26,
++ 5,18,31,10,
++ 2, 8,24,14,
++ 32,27, 3, 9,
++ 19,13,30, 6,
++ 22,11, 4,25,
++};
++
++/*
++ * The current block, divided into 2 halves.
++ */
++
++static char L[64];
++#define R (L + 32)
++static char tempL[32];
++static char f[32];
++
++/*
++ * The combination of the key and the input, before selection.
++ */
++static char preS[48];
++
++/*
++ * The payoff: encrypt a block.
++ */
++
++static
++encrypt (block, edflag)
++char *block;
++{
++ int i, ii;
++ register t, j, k;
++
++ /*
++ * First, permute the bits in the input
++ */
++ for (j=0; j<64; j++)
++ L[j] = block[IP[j]-1];
++ /*
++ * Perform an encryption operation 16 times.
++ */
++ for (ii=0; ii<16; ii++) {
++/* print_bits ("L R", L); */
++ /*
++ * Set direction
++ */
++ if (edflag)
++ i = 15-ii;
++ else
++ i = ii;
++ /*
++ * Save the R array,
++ * which will be the new L.
++ */
++ for (j=0; j<32; j++)
++ tempL[j] = R[j];
++ /*
++ * Expand R to 48 bits using the E selector;
++ * exclusive-or with the current key bits.
++ */
++ for (j=0; j<48; j++)
++ preS[j] = R[E[j]-1] ^ KS[i][j];
++ /*
++ * The pre-select bits are now considered
++ * in 8 groups of 6 bits each.
++ * The 8 selection functions map these
++ * 6-bit quantities into 4-bit quantities
++ * and the results permuted
++ * to make an f(R, K).
++ * The indexing into the selection functions
++ * is peculiar; it could be simplified by
++ * rewriting the tables.
++ */
++ for (j=0; j<8; j++) {
++ t = 6*j;
++ k = S[j][(preS[t+0]<<5)+
++ (preS[t+1]<<3)+
++ (preS[t+2]<<2)+
++ (preS[t+3]<<1)+
++ (preS[t+4]<<0)+
++ (preS[t+5]<<4)];
++ t = 4*j;
++ f[t+0] = (k>>3)&01;
++ f[t+1] = (k>>2)&01;
++ f[t+2] = (k>>1)&01;
++ f[t+3] = (k>>0)&01;
++ }
++ /*
++ * The new R is L ^ f(R, K).
++ * The f here has to be permuted first, though.
++ */
++ for (j=0; j<32; j++)
++ R[j] = L[j] ^ f[P[j]-1];
++ /*
++ * Finally, the new L (the original R)
++ * is copied back.
++ */
++ for (j=0; j<32; j++)
++ L[j] = tempL[j];
++ }
++ /*
++ * The output L and R are reversed.
++ */
++ for (j=0; j<32; j++) {
++ t = L[j];
++ L[j] = R[j];
++ R[j] = t;
++ }
++ /*
++ * The final output
++ * gets the inverse permutation of the very original.
++ */
++ for (j=0; j<64; j++)
++ block[j] = L[FP[j]-1];
++}
++
++static
++bytes_to_bits (bytes, bits)
++ unsigned char *bytes;
++ char *bits;
++{
++ int bit, byte, value;
++
++ for (byte = 0; byte < 8; byte++)
++ {
++ value = *bytes++;
++ for (bit = 0; bit < 8; bit++)
++ *bits++ = (value >> (7-bit)) & 1;
++ }
++}
++
++static
++bits_to_bytes (bits, bytes)
++ char *bits;
++ unsigned char *bytes;
++{
++ int bit, byte, value;
++
++ for (byte = 0; byte < 8; byte++)
++ {
++ value = 0;
++ for (bit = 0; bit < 8; bit++)
++ value |= *bits++ << (7-bit);
++ *bytes++ = value;
++ }
++}
++
++/*
++ * Interface compatible with Kerberos DES implementation
++ */
++
++# include "Wrap.h"
++
++/*ARGSUSED*/
++_XdmcpAuthSetup (key, schedule)
++ auth_cblock key;
++ auth_wrapper_schedule schedule;
++{
++ char expand_key[64];
++
++ bytes_to_bits ((unsigned char *) key, expand_key);
++ setkey (expand_key);
++}
++
++/*ARGSUSED*/
++_XdmcpAuthDoIt (input, output, schedule, edflag)
++ auth_cblock input, output;
++ auth_wrapper_schedule schedule;
++ int edflag;
++{
++ char expand_input[64];
++
++ bytes_to_bits ((unsigned char *) input, expand_input);
++ encrypt (expand_input, !edflag);
++ bits_to_bytes (expand_input, (unsigned char *) output);
++}
--- /dev/null
+diff -urN xc.orig/config/cf/linux.cf xc/config/cf/linux.cf
+--- xc.orig/config/cf/linux.cf 2004-08-08 14:31:29.134334480 +0200
++++ xc/config/cf/linux.cf 2004-08-08 14:31:49.247276848 +0200
+@@ -1019,3 +1019,7 @@
+ #ifndef XFree86ServerOSDefines
+ # define XFree86ServerOSDefines
+ #endif
++
++#ifndef HasZlib
++#define HasZlib YES
++#endif
--- /dev/null
+--- xc/programs/xterm/XTerm-col.ad.orig 2003-09-25 13:06:59.000000000 +0200
++++ xc/programs/xterm/XTerm-col.ad 2003-10-01 20:48:30.453913496 +0200
+@@ -11,8 +11,8 @@
+ !*VT100*background: black
+
+ ! Uncomment this to use color for underline attribute
+-!*VT100*colorULMode: on
+-!*VT100*underLine: off
++*VT100*colorULMode: on
++*VT100*underLine: on
+
+ ! Uncomment this to use color for the bold attribute
+ !*VT100*colorBDMode: on
+--- xc/programs/xterm/XTerm.ad.orig 2003-09-25 13:06:59.000000000 +0200
++++ xc/programs/xterm/XTerm.ad 2003-10-01 20:49:35.565015104 +0200
+@@ -110,3 +110,178 @@
+ *tek4014*font2: 8x13
+ *tek4014*font3: 6x13
+ *tek4014*fontSmall: 6x10
++
++! This file causes when loaded using xrdb correct behaviour of xterm
++! if you are using enclosed xterm.tcap and xterm.ti.
++! Some keys would never normally work if they weren't here (like Alt
++! something), some key definitions differ from one termcap/terminfo
++! to the other. You may delete any line if you find out that mc
++! sends exactly that string which is mentioned here.
++! See xterm(1).
++! Either put this into your ~/.Xdefaults, or to app-defaults/XTerm
++! or wherever it will be loaded into xrm from.
++! To know, why this works, see Xt documentation (appendix B).
++! On some systems you may want to replace the a (alt) modifiers with
++! m (meta) modifier in front of some <Key> events.
++*vt100.translations: #override \
++ Alt Ctrl<Btn4Down>: string(0x1b) string("OA")\n\
++ Alt Ctrl<Btn5Down>: string(0x1b) string("OB")\n\
++ Alt<Btn4Down>: string(0x1b) string("OA") string(0x1b) string("OA") string(0x1b) string("OA") string(0x1b) string("OA") string(0x1b) string("OA")\n\
++ Alt<Btn5Down>: string(0x1b) string("OB") string(0x1b) string("OB") string(0x1b) string("OB") string(0x1b) string("OB") string(0x1b) string("OB")\n\
++ Shift<Btn4Down>: scroll-back(1,page)\n\
++ Shift<Btn5Down>: scroll-forw(1,page)\n\
++ Ctrl<Btn4Down>: scroll-back(1,line)\n\
++ Ctrl<Btn5Down>: scroll-forw(1,line)\n\
++ <Btn4Down>: scroll-back(5,line)\n\
++ <Btn5Down>: scroll-forw(5,line)\n\
++ @Num_Lock<Key>KP_0: string(0)\n\
++ @Num_Lock<Key>KP_1: string(1)\n\
++ @Num_Lock<Key>KP_2: string(2)\n\
++ @Num_Lock<Key>KP_3: string(3)\n\
++ @Num_Lock<Key>KP_4: string(4)\n\
++ @Num_Lock<Key>KP_5: string(5)\n\
++ @Num_Lock<Key>KP_6: string(6)\n\
++ @Num_Lock<Key>KP_7: string(7)\n\
++ @Num_Lock<Key>KP_8: string(8)\n\
++ @Num_Lock<Key>KP_9: string(9)\n\
++ @Num_Lock<Key>KP_Add: string(+)\n\
++ @Num_Lock<Key>KP_Decimal: string(.)\n\
++ @Num_Lock<Key>KP_Divide: string(/)\n\
++ @Num_Lock<Key>KP_Enter: string(\015)\n\
++ @Num_Lock<Key>KP_Equal: string(=)\n\
++ @Num_Lock<Key>KP_Multiply: string(*)\n\
++ @Num_Lock<Key>KP_Subtract: string(-)\n\
++ <Key>KP_Add: string(+)\n\
++ <Key>KP_Divide: string(/)\n\
++ <Key>KP_Enter: string(\015)\n\
++ <Key>KP_Equal: string(=)\n\
++ <Key>KP_Multiply: string(*)\n\
++ <Key>KP_Subtract: string(-)\n\
++ Shift<Key>KP_Home: scroll-back(100,page)\n\
++ Shift<Key>KP_End: scroll-forw(100,page)\n\
++ Shift<Key>Prior:scroll-back(1,page)\n\
++ Shift<Key>Next:scroll-forw(1,page)\n\
++ <Key>F16: start-extend() select-end(PRIMARY, CUT_BUFFER0, CLIPBOARD)\n\
++ <Key>F18: insert-selection(PRIMARY, CLIPBOARD)\n\
++ <Key>F27: scroll-back(100,page)\n\
++ <Key>R13: scroll-forw(100,page)\n\
++ Ctrl<Key>Home: string(0x1b) string("[1;5H")\n\
++ Shift<Key>Home: string(0x1b) string("[1;2H")\n\
++ Ctrl<Key>End: string(0x1b) string("[1;5F")\n\
++ Shift<Key>End: string(0x1b) string("[1;2F")\n\
++ Ctrl<Key>Insert: string(0x1b) string("[2;5~")\n\
++ Shift<Key>Insert: string(0x1b) string("[2;2~")\n\
++ ~Meta<Key>Insert: string(0x1b) string("[2~")\n\
++ Meta<Key>Insert: string(0x1b) string(0x1b) string("[2~")\n\
++ Ctrl<Key>Delete: string(0x1b) string("[3;5~")\n\
++ Shift<Key>Delete: string(0x1b) string("[3;2~")\n\
++ ~Meta<Key>Delete: string(0x1b) string("[3~")\n\
++ Meta<Key>Delete: string(0x1b) string(0x1b) string("[3~")\n\
++ Ctrl<Key>Page_Up: string(0x1b) string("[5;5~")\n\
++ ~Meta<Key>Page_Up: string(0x1b) string("[5~")\n\
++ Meta<Key>Page_Up: string(0x1b) string(0x1b) string("[5~")\n\
++ Ctrl<Key>Page_Down: string(0x1b) string("[6;5~")\n\
++ ~Meta<Key>Page_Down: string(0x1b) string("[6~")\n\
++ Meta<Key>Page_Down: string(0x1b) string(0x1b) string("[6~")\n\
++ ~Meta<Key>BackSpace: string(0x08)\n\
++ Meta<Key>BackSpace: string(0x1b) string(0x08)\n\
++ Ctrl Shift<Key>Up: string(0x1b) string("[1;6A")\n\
++ Ctrl<Key>Up: string(0x1b) string("[1;5A")\n\
++ Shift<Key>Up: string(0x1b) string("O2A")\n\
++ ~Meta<Key>Up: string(0x1b) string("OA")\n\
++ Meta<Key>Up: string(0x1b) string(0x1b) string("OA")\n\
++ Ctrl Shift<Key>Down: string(0x1b) string("[1;6B")\n\
++ Ctrl<Key>Down: string(0x1b) string("[1;5B")\n\
++ Shift<Key>Down: string(0x1b) string("O2B")\n\
++ ~Meta<Key>Down: string(0x1b) string("OB")\n\
++ Meta<Key>Down: string(0x1b) string(0x1b) string("OB")\n\
++ Ctrl Shift<Key>Left: string(0x1b) string("[1;6D")\n\
++ Ctrl<Key>Left: string(0x1b) string("[1;5D")\n\
++ Shift<Key>Left: string(0x1b) string("O2D")\n\
++ Mod5<Key>Left: string(0x1b) string("b")\n\
++ ~Meta<Key>Left: string(0x1b) string("OD")\n\
++ Meta<Key>Left: string(0x1b) string(0x1b) string("OD")\n\
++ Ctrl Shift<Key>Right: string(0x1b) string("[1;6C")\n\
++ Ctrl<Key>Right: string(0x1b) string("[1;5C")\n\
++ Shift<Key>Right: string(0x1b) string("O2C")\n\
++ Mod5<Key>Right: string(0x1b) string("f")\n\
++ ~Meta<Key>Right: string(0x1b) string("OC")\n\
++ Meta<Key>Right: string(0x1b) string(0x1b) string("OC")\n\
++ ~Meta<Key>Return: string(0x0d)\n\
++ Meta<Key>Return: string(0x1b) string(0x0d)\n\
++ Ctrl<Key>Tab: string(0x1b) string(0x09)\n\
++ Mod5<Key>Tab: string(0x1b) string(0x09)\n\
++ ~Meta<Key>Tab: string(0x09)\n\
++ Meta<Key>Tab: string(0x1b) string(0x09)\n\
++ ~s<Key>F1: string(0x1b) string("[11~")\n\
++ ~s<Key>F2: string(0x1b) string("[12~")\n\
++ ~s<Key>F3: string(0x1b) string("[13~")\n\
++ ~s<Key>F4: string(0x1b) string("[14~")\n\
++ ~s<Key>F5: string(0x1b) string("[15~")\n\
++ ~s<Key>F6: string(0x1b) string("[17~")\n\
++ ~s<Key>F7: string(0x1b) string("[18~")\n\
++ ~s<Key>F8: string(0x1b) string("[19~")\n\
++ ~s<Key>F9: string(0x1b) string("[20~")\n\
++ ~s<Key>F10: string(0x1b) string("[21~")\n\
++ <Key>F11: string(0x1b) string("[23~")\n\
++ <Key>F12: string(0x1b) string("[24~")\n\
++ <Key>F13: string(0x1b) string("[25~")\n\
++ <Key>F14: string(0x1b) string("[26~")\n\
++ <Key>F15: string(0x1b) string("[28~")\n\
++ <Key>F16: string(0x1b) string("[29~")\n\
++ <Key>F17: string(0x1b) string("[31~")\n\
++ <Key>F18: string(0x1b) string("[32~")\n\
++ <Key>F19: string(0x1b) string("[33~")\n\
++ <Key>F20: string(0x1b) string("[34~")\n\
++ s<Key>F1: string(0x1b) string("[23~")\n\
++ s<Key>F2: string(0x1b) string("[24~")\n\
++ s<Key>F3: string(0x1b) string("[25~")\n\
++ s<Key>F4: string(0x1b) string("[26~")\n\
++ s<Key>F5: string(0x1b) string("[28~")\n\
++ s<Key>F6: string(0x1b) string("[29~")\n\
++ s<Key>F7: string(0x1b) string("[31~")\n\
++ s<Key>F8: string(0x1b) string("[32~")\n\
++ s<Key>F9: string(0x1b) string("[33~")\n\
++ s<Key>F10: string(0x1b) string("[34~")\n\
++ a<Key>Return: string(0x1b) string(0x0d)\n\
++ a<Key>Tab: string(0x1b) string(0x09)\n\
++ a<Key>space: string(0x1b) string(" ")\n\
++ a s<Key>question: string(0x1b) string("?")\n\
++ a s<Key>exclam: string(0x1b) string("!")\n\
++ a<Key>1: string(0x1b) string("1")\n\
++ a<Key>2: string(0x1b) string("2")\n\
++ a<Key>3: string(0x1b) string("3")\n\
++ a<Key>4: string(0x1b) string("4")\n\
++ a<Key>5: string(0x1b) string("5")\n\
++ a<Key>6: string(0x1b) string("6")\n\
++ a<Key>7: string(0x1b) string("7")\n\
++ a<Key>8: string(0x1b) string("8")\n\
++ a<Key>9: string(0x1b) string("9")\n\
++ a<Key>0: string(0x1b) string("0")\n\
++ a<Key>a: string(0x1b) string("a")\n\
++ a<Key>b: string(0x1b) string("b")\n\
++ a<Key>c: string(0x1b) string("c")\n\
++ a<Key>d: string(0x1b) string("d")\n\
++ a<Key>e: string(0x1b) string("e")\n\
++ a<Key>f: string(0x1b) string("f")\n\
++ a<Key>g: string(0x1b) string("g")\n\
++ a s<Key>h: string(0x1b) string("H")\n\
++ a<Key>h: string(0x1b) string("h")\n\
++ a<Key>i: string(0x1b) string("i")\n\
++ a<Key>j: string(0x1b) string("j")\n\
++ a<Key>k: string(0x1b) string("k")\n\
++ a<Key>l: string(0x1b) string("l")\n\
++ a<Key>m: string(0x1b) string("m")\n\
++ a<Key>n: string(0x1b) string("n")\n\
++ a<Key>o: string(0x1b) string("o")\n\
++ a<Key>p: string(0x1b) string("p")\n\
++ a<Key>q: string(0x1b) string("q")\n\
++ a<Key>r: string(0x1b) string("r")\n\
++ a<Key>s: string(0x1b) string("s")\n\
++ a<Key>t: string(0x1b) string("t")\n\
++ a<Key>u: string(0x1b) string("u")\n\
++ a<Key>v: string(0x1b) string("v")\n\
++ a<Key>w: string(0x1b) string("w")\n\
++ a<Key>x: string(0x1b) string("x")\n\
++ a<Key>y: string(0x1b) string("y")\n\
++ a<Key>z: string(0x1b) string("z")
--- /dev/null
+--- xc.orig/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c 2004-08-08 14:22:46.000000000 +0200
++++ xc/programs/Xserver/hw/xfree86/os-support/linux/drm/xf86drm.c 2004-08-08 15:14:36.693965624 +0200
+@@ -466,6 +466,9 @@
+ #if !defined(XFree86Server)
+ return -1;
+ #else
++ if (!xf86LoadKernelModule("agpgart")) {
++ ErrorF("[drm] failed to load kernel module \"agpgart\"\n");
++ }
+ /* try to load the kernel module now */
+ if (!xf86LoadKernelModule(name)) {
+ ErrorF("[drm] failed to load kernel module \"%s\"\n",
--- /dev/null
+--- xc.orig/config/cf/X11.tmpl 2004-08-08 14:31:29.000000000 +0200
++++ xc/config/cf/X11.tmpl 2004-08-08 14:48:48.483329416 +0200
+@@ -1546,7 +1546,7 @@
+ #endif
+ #ifndef XFileSearchPathBase
+ /* avoid SCCS keyword */
+-#define XFileSearchPathBase Concat4($(LIBDIR)/%L/%T/%N%C,%S:$(LIBDIR)/%l/%T/%N%C,%S:$(LIBDIR)/%T/%N%C,%S:$(LIBDIR)/%L/%T/%N%S:$(LIBDIR)/%l/%T/%N%S:$(LIBDIR)/%T/%N%S)
++#define XFileSearchPathBase $(LIBDIR)/%T/%L/%N%C%S:$(LIBDIR)/%T/%l/%N%C%S:$(LIBDIR)/%T/C/%N%C%S:$(LIBDIR)/%T/POSIX/%N%C%S:$(LIBDIR)/%T/%N%C%S:$(LIBDIR)/%T/%L/%N%S:$(LIBDIR)/%T/%l/%N%S:$(LIBDIR)/%T/C/%N%S:$(LIBDIR)/%T/POSIX/%N%S:$(LIBDIR)/%T/%N%S:$(LIBDIR)/%L/%T/%N%C%S:$(LIBDIR)/%l/%T/%N%C%S:$(LIBDIR)/%L/%T/%N%S:$(LIBDIR)/%l/%T/%N%S
+ #endif
+ #ifndef XFileSearchPathDefault
+ #ifdef XAppLoadDir
+@@ -3888,11 +3888,9 @@
+ #if UseConfDirForAppDefaults
+ #if InstallAppDefFiles
+ #define InstallAppDefaultsLong(file,class) @@\
+-LinkConfDirectory(app-defaults,.,app-defaults,.) @@\
+ InstallNamedTarget(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class)
+ #else
+ #define InstallAppDefaultsLong(file,class) @@\
+-LinkConfDirectory(app-defaults,.,app-defaults,.) @@\
+ InstallNamedTargetNoClobber(install,file.ad,$(INSTAPPFLAGS),$(XAPPLOADDIR),class)
+ #endif /* InstallAppDefFiles */
+ #else /* UseConfDirForAppDefaults */
--- /dev/null
+--- xc/include/Xarch.h.orig Tue Jun 10 13:03:11 2003
++++ xc/include/Xarch.h Thu Jun 12 20:20:05 2003
+@@ -40,7 +40,7 @@
+
+ #else
+
+-#ifdef SVR4
++#if defined(SVR4) && !defined(linux)
+ #if defined(NCR) || defined(Mips) || defined(__sgi)
+ #include <sys/endian.h>
+ #else
--- /dev/null
+--- xc.orig/config/cf/xf86site.def 2004-08-08 15:03:20.105822656 +0200
++++ xc/config/cf/xf86site.def 2004-08-08 15:17:52.907136688 +0200
+@@ -95,7 +95,7 @@
+ * will be included in it. When building the loadable server each of these
+ * modules will be built.
+ *
+-#define XF86CardDrivers mga glint nv tga s3virge sis rendition \
++#define XF86CardDrivers mga glint nv tga s3 s3virge sis rendition \
+ neomagic i740 tdfx savage \
+ cirrus vmware tseng trident chips apm \
+ GlideDriver fbdev i128 \
--- /dev/null
+diff -urN xc.orig/lib/dps/csconndi.c xc/lib/dps/csconndi.c
+--- xc.orig/lib/dps/csconndi.c 2004-08-08 14:23:31.000000000 +0200
++++ xc/lib/dps/csconndi.c 2004-08-08 14:52:18.313430392 +0200
+@@ -480,8 +480,8 @@
+
+ #ifndef CSDPS_UNIX_PATH
+ #ifdef hpux
+-#define CSDPS_UNIX_DIR "/usr/spool/sockets/DPSNX"
+-#define CSDPS_UNIX_PATH "/usr/spool/sockets/DPSNX/"
++#define CSDPS_UNIX_DIR "/var/spool/sockets/DPSNX"
++#define CSDPS_UNIX_PATH "/var/spool/sockets/DPSNX/"
+ #else
+ #define CSDPS_UNIX_DIR "/tmp/.DPSNX-unix"
+ #define CSDPS_UNIX_PATH "/tmp/.DPSNX-unix/AGENT"
+diff -urN xc.orig/lib/dps/Xlibnet.h xc/lib/dps/Xlibnet.h
+--- xc.orig/lib/dps/Xlibnet.h 2004-08-08 14:23:32.000000000 +0200
++++ xc/lib/dps/Xlibnet.h 2004-08-08 14:52:18.295433128 +0200
+@@ -20,7 +20,7 @@
+
+ #ifndef X_UNIX_PATH
+ #ifdef hpux
+-#define X_UNIX_PATH "/usr/spool/sockets/X11/"
++#define X_UNIX_PATH "/var/spool/sockets/X11/"
+ #define OLD_UNIX_PATH "/tmp/.X11-unix/X"
+ #else
+ #define X_UNIX_PATH "/tmp/.X11-unix/X"
+diff -urN xc.orig/lib/xtrans/Xtranssock.c xc/lib/xtrans/Xtranssock.c
+--- xc.orig/lib/xtrans/Xtranssock.c 2004-08-08 14:23:28.000000000 +0200
++++ xc/lib/xtrans/Xtranssock.c 2004-08-08 14:52:18.316429936 +0200
+@@ -216,30 +216,30 @@
+ #ifdef hpux
+
+ #if defined(X11_t)
+-#define UNIX_PATH "/usr/spool/sockets/X11/"
+-#define UNIX_DIR "/usr/spool/sockets/X11"
++#define UNIX_PATH "/var/spool/sockets/X11/"
++#define UNIX_DIR "/var/spool/sockets/X11"
+ #define OLD_UNIX_PATH "/tmp/.X11-unix/X"
+ #endif /* X11_t */
+ #if defined(XIM_t)
+-#define UNIX_PATH "/usr/spool/sockets/XIM/"
+-#define UNIX_DIR "/usr/spool/sockets/XIM"
++#define UNIX_PATH "/var/spool/sockets/XIM/"
++#define UNIX_DIR "/var/spool/sockets/XIM"
+ #define OLD_UNIX_PATH "/tmp/.XIM-unix/XIM"
+ #endif /* XIM_t */
+ #if defined(FS_t) || defined(FONT_t)
+-#define UNIX_PATH "/usr/spool/sockets/fontserv/"
+-#define UNIX_DIR "/usr/spool/sockets/fontserv"
++#define UNIX_PATH "/var/spool/sockets/fontserv/"
++#define UNIX_DIR "/var/spool/sockets/fontserv"
+ #endif /* FS_t || FONT_t */
+ #if defined(ICE_t)
+-#define UNIX_PATH "/usr/spool/sockets/ICE/"
+-#define UNIX_DIR "/usr/spool/sockets/ICE"
++#define UNIX_PATH "/var/spool/sockets/ICE/"
++#define UNIX_DIR "/var/spool/sockets/ICE"
+ #endif /* ICE_t */
+ #if defined(TEST_t)
+-#define UNIX_PATH "/usr/spool/sockets/xtrans_test/"
+-#define UNIX_DIR "/usr/spool/sockets/xtrans_test"
++#define UNIX_PATH "/var/spool/sockets/xtrans_test/"
++#define UNIX_DIR "/var/spool/sockets/xtrans_test"
+ #endif
+ #if defined(LBXPROXY_t)
+-#define UNIX_PATH "/usr/spool/sockets/X11/"
+-#define UNIX_DIR "/usr/spool/sockets/X11"
++#define UNIX_PATH "/var/spool/sockets/X11/"
++#define UNIX_DIR "/var/spool/sockets/X11"
+ #endif
+
+ #else /* !hpux */
+diff -urN xc.orig/programs/rstart/Imakefile xc/programs/rstart/Imakefile
+--- xc.orig/programs/rstart/Imakefile 2004-08-08 14:22:59.000000000 +0200
++++ xc/programs/rstart/Imakefile 2004-08-08 14:52:18.317429784 +0200
+@@ -37,7 +37,7 @@
+ OS=
+ CLIENTNAME=rstart
+
+-MYLIBDIR=$(LIBDIR)/rstart
++MYLIBDIR=/etc/X11/rstart
+ ENVPREFIX=RSTART
+ PACKAGEname=rstart
+
+diff -urN xc.orig/programs/xbiff/MailboxP.h xc/programs/xbiff/MailboxP.h
+--- xc.orig/programs/xbiff/MailboxP.h 2004-08-08 14:23:00.000000000 +0200
++++ xc/programs/xbiff/MailboxP.h 2004-08-08 14:52:18.317429784 +0200
+@@ -50,7 +50,7 @@
+ #endif
+
+ #ifndef MAILBOX_DIRECTORY
+-#define MAILBOX_DIRECTORY "/usr/spool/mail"
++#define MAILBOX_DIRECTORY "/var/mail"
+ #endif
+
+ typedef struct { /* new fields for mailbox widget */
+diff -urN xc.orig/programs/xmh/xmh.man xc/programs/xmh/xmh.man
+--- xc.orig/programs/xmh/xmh.man 2004-08-08 14:22:57.000000000 +0200
++++ xc/programs/xmh/xmh.man 2004-08-08 14:52:18.353424312 +0200
+@@ -1316,7 +1316,7 @@
+ An example of \fI.xmhcheck\fP file format, for the folders ``inbox'' and
+ ``xpert'':
+ .nf
+-inbox /usr/spool/mail/converse
++inbox /var/mail/converse
+ xpert /users/converse/maildrops/xpert
+ .fi
+ .sp
--- /dev/null
+--- xc.orig/programs/Xserver/hw/xfree86/drivers/mga/mga_dri.c 2004-08-08 14:22:29.000000000 +0200
++++ xc/programs/Xserver/hw/xfree86/drivers/mga/mga_dri.c 2004-08-08 15:13:17.170055096 +0200
+@@ -982,6 +982,7 @@
+ DRIInfoPtr pDRIInfo;
+ MGADRIPtr pMGADRI;
+ MGADRIServerPrivatePtr pMGADRIServer;
++ CARD32 pciCommand;
+
+ switch(pMga->Chipset) {
+ case PCI_CHIP_MGAG550:
+@@ -1257,6 +1258,11 @@
+ }
+ xf86DrvMsg( pScrn->scrnIndex, X_INFO, "[dri] visual configs initialized\n" );
+
++ /* Enable bus mastering in PCI config space */
++ pciCommand = pciReadLong(pMga->PciTag, PCI_CMD_STAT_REG);
++ pciWriteLong(pMga->PciTag, PCI_CMD_STAT_REG,
++ pciCommand | PCI_CMD_MASTER_ENABLE);
++
+ return TRUE;
+ }
+
--- /dev/null
+--- xc.orig/programs/Xserver/hw/xfree86/drivers/neomagic/neo_driver.c 2004-08-08 14:22:25.000000000 +0200
++++ xc/programs/Xserver/hw/xfree86/drivers/neomagic/neo_driver.c 2004-08-08 15:12:28.362474976 +0200
+@@ -1031,6 +1031,13 @@
+ memcpy(nPtr->Options, NEOOptions, sizeof(NEOOptions));
+ }
+
++ /* Neomagic 256XL+ needs hardware-cursor disabled by default <hdeller@redhat.com> */
++ if (nPtr->NeoChipset == NM2380) { /* Neomagic 256XL+ */
++ nPtr->swCursor = TRUE;
++ xf86DrvMsg(pScrn->scrnIndex, X_CONFIG,
++ "Neomagic 256XL+ (NM2380) - default to software cursor\n");
++ }
++
+ xf86ProcessOptions(pScrn->scrnIndex, pScrn->options, nPtr->Options);
+
+ xf86GetOptValBool(nPtr->Options, OPTION_NOLINEAR_MODE,&nPtr->noLinear);
--- /dev/null
+--- xc.orig/config/cf/Library.tmpl 2004-08-08 14:23:13.000000000 +0200
++++ xc/config/cf/Library.tmpl 2004-08-08 15:10:06.794996504 +0200
+@@ -214,9 +214,9 @@
+ # if !DoSharedLib && defined(IncludeSharedObjectInNormalLib)
+ # define _NormalObjCompile(options) NormalRelocLibObjCompile(options)
+ # else
+-# define _NormalObjCompile(options) NormalLibObjCompile(options)
++# define _NormalObjCompile(options) NormalLibObjCompile(options $(PICFLAGS))
+ # endif
+-# define _NormalObjCplusplusCompile(options) NormalLibObjCplusplusCompile(options)
++# define _NormalObjCplusplusCompile(options) NormalLibObjCplusplusCompile(options $(PICFLAGS))
+ # define _NormalCleanDir() $(_NULLCMD_)
+ # endif
+ #endif
+@@ -229,8 +229,8 @@
+ # define _SharedObjCompile(options) NormalSharedLibObjCompile(options)
+ # define _SharedObjCplusplusCompile(options) NormalSharedLibObjCplusplusCompile(options)
+ #else
+-# define _SharedObjCompile(options) NormalLibObjCompile(options)
+-# define _SharedObjCplusplusCompile(options) NormalLibObjCplusplusCompile(options)
++# define _SharedObjCompile(options) NormalLibObjCompile(options $(PICFLAGS))
++# define _SharedObjCplusplusCompile(options) NormalLibObjCplusplusCompile(options $(PICFLAGS))
+ #endif
+ #endif
+
--- /dev/null
+--- xc.orig/programs/Xserver/hw/xfree86/drivers/ati/r128.h 2004-08-08 14:22:29.000000000 +0200
++++ xc/programs/Xserver/hw/xfree86/drivers/ati/r128.h 2004-08-08 15:11:32.996891824 +0200
+@@ -314,6 +314,8 @@
+ unsigned char *AGP; /* Map */
+ int agpMode;
+
++ CARD32 pciCommand;
++
+ Bool CCEInUse; /* CCE is currently active */
+ int CCEMode; /* CCE mode that server/clients use */
+ int CCEFifoSize; /* Size of the CCE command FIFO */
+--- xc.orig/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c 2004-08-08 14:22:29.000000000 +0200
++++ xc/programs/Xserver/hw/xfree86/drivers/ati/r128_dri.c 2004-08-08 15:11:32.999891368 +0200
+@@ -440,6 +440,9 @@
+ int flags;
+ unsigned long agpBase;
+
++ /* Save the old PCI command reg */
++ info->pciCommand = pciReadLong(info->PciTag, PCI_CMD_STAT_REG);
++
+ if (drmAgpAcquire(info->drmFD) < 0) {
+ xf86DrvMsg(pScreen->myNum, X_WARNING, "[agp] AGP not available\n");
+ return FALSE;
+@@ -623,6 +626,11 @@
+
+ OUTREG(R128_PCI_GART_PAGE, 1); /* Ensure AGP GART is used (for now) */
+
++ /* Enable bus mastering in PCI config
++ space */
++ pciWriteLong(info->PciTag, PCI_CMD_STAT_REG,
++ info->pciCommand | PCI_CMD_MASTER_ENABLE);
++
+ return TRUE;
+ }
+
+@@ -1333,6 +1341,9 @@
+ drmAgpFree(info->drmFD, info->agpMemHandle);
+ info->agpMemHandle = DRM_AGP_NO_HANDLE;
+ drmAgpRelease(info->drmFD);
++
++ /* Restore PCI command register */
++ pciWriteLong(info->PciTag, PCI_CMD_STAT_REG, info->pciCommand);
+ }
+ if (info->pciMemHandle) {
+ drmScatterGatherFree(info->drmFD, info->pciMemHandle);
--- /dev/null
+--- xc.orig/programs/Xserver/hw/xfree86/drivers/v4l/v4l.c 2004-08-08 14:22:29.000000000 +0200
++++ xc/programs/Xserver/hw/xfree86/drivers/v4l/v4l.c 2004-08-08 14:49:23.797960776 +0200
+@@ -1017,6 +1017,8 @@
+ if (flags & PROBE_DETECT)
+ return TRUE;
+
++ drv->refCount++; /* we don't want X to unload us, we're special */
++
+ xf86XVRegisterGenericAdaptorDriver(V4LInit);
+ drv->refCount++;
+ return TRUE;
--- /dev/null
+--- xc.orig/programs/xdm/config/Imakefile 2004-08-08 14:22:57.000000000 +0200
++++ xc/programs/xdm/config/Imakefile 2004-08-08 15:04:29.403287840 +0200
+@@ -10,13 +10,7 @@
+
+ all:: Xservers.ws xdm-config Xservers Xresources
+
+-#if (defined(i386Architecture) || defined(AMD64Architecture)) && (defined(KNetBSDArchitecture) || defined(KOpenBSDArchitecture))
+-DEFAULTVT=vt05
+-#endif
+-
+-#if defined(LinuxDistribution) && (LinuxDistribution == LinuxDebian)
+-DEFAULTVT=vt7
+-#endif
++DEFAULTVT=vt9
+
+ #ifndef XdmPixmap
+ # define XdmPixmap XVendorStdFilePrefix.xpm
+@@ -42,7 +36,11 @@
+ #endif
+
+ CppFileTarget(Xservers.ws,Xserv.ws.cpp,-DBINDIR=$(BINDIR) -DDEFAULTVT=$(DEFAULTVT),NullParameter)
+-CppFileTarget(xdm-config,xdm-conf.cpp,-DXDMDIR=$(XDMDIR) -DXDMLOGDIR=$(XDMLOGDIR) -DXDMPIDDIR=$(XDMPIDDIR) -DSU=$(SU) -DCHOOSERPATH=$(CHOOSERPATH),NullParameter)
++#ifdef LinuxArchitecture
++CppFileTarget(xdm-config,xdm-conf.cpp,$(XPM_DEFINES) -DLINUX=1 -DXDMDIR=$(XDMDIR) -DXDMLOGDIR=$(XDMLOGDIR) -DXDMPIDDIR=$(XDMPIDDIR) -DXDMVARDIR=$(XDMVARDIR) -DCHOOSERPATH="$(BINDIR)/chooser",NullParameter)
++#else
++CppFileTarget(xdm-config,xdm-conf.cpp,$(XPM_DEFINES) -DXDMDIR=$(XDMDIR) -DXDMLOGDIR=$(XDMLOGDIR) -DXDMPIDDIR=$(XDMPIDDIR) -DCHOOSERPATH="$(BINDIR)/chooser",NullParameter)
++#endif /* LinuxArchitecture */
+ CppFileTarget(Xresources,Xres.cpp,$(XPM_DEFINES),NullParameter)
+
+ LinkFile(Xservers,Xservers.$(SERVERSTYPE))
+--- xc.orig/programs/xdm/config/Xres.cpp 2004-08-08 14:31:29.000000000 +0200
++++ xc/programs/xdm/config/Xres.cpp 2004-08-08 15:03:33.539780384 +0200
+@@ -41,9 +41,7 @@
+ XHASHendif
+ #endif /* XPM */
+ XHASHifdef COLOR
+-#ifndef XPM
+-xlogin*greetColor: CadetBlue
+-#else
++#ifdef XPM
+ xlogin*borderWidth: 1
+ xlogin*frameWidth: 5
+ xlogin*innerFramesWidth: 2
+@@ -52,6 +50,8 @@
+ xlogin*background: grey
+ !xlogin*foreground: darkgreen
+ xlogin*greetColor: Blue3
++#else
++login*greetColor: CadetBlue
+ #endif /* XPM */
+ xlogin*failColor: red
+ *Foreground: black
+--- xc.orig/programs/xdm/Imakefile 2004-08-08 14:22:57.000000000 +0200
++++ xc/programs/xdm/Imakefile 2004-08-08 15:03:33.517783728 +0200
+@@ -289,9 +289,9 @@
+ '-DDEF_SYSTEM_SHELL="$(BOURNE_SHELL)"' \
+ '-DDEF_FAILSAFE_CLIENT="$(BINDIR)/xterm"' \
+ '-DDEF_XDM_CONFIG="$(XDMDIR)/xdm-config"' \
+- '-DDEF_CHOOSER="$(CHOOSERPATH)"' \
+- '-DDEF_AUTH_DIR="$(XDMDIR)"' \
+- '-DDEF_GREETER_LIB="$(XDMDIR)/libXdmGreet.so"'
++ '-DDEF_CHOOSER="$(BINDIR)/chooser"' \
++ '-DDEF_AUTH_DIR="$(XDMVARDIR)"' \
++ '-DDEF_GREETER_LIB="$(USRLIBDIR)/libXdmGreet.so"'
+
+ ComplexProgramTarget_1(xdm,$(LOCAL_LIBRARIES),NullParameter)
+ #ifdef LinkConfDirectory
+@@ -316,7 +316,7 @@
+ #if BuildChooser
+ SpecialCObjectRule(chooser, $(ICONFIGFILES), $(SOCK_DEFINES) $(LIFREQ_FLAGS))
+ NormalProgramTarget(chooser,$(OBJS3),$(DEPLIBS3),$(LIBS3),NullParameter)
+-InstallProgram(chooser,$(XDMDIR))
++InstallProgram(chooser,$(BINDIR))
+ InstallAppDefaults(Chooser)
+ #endif
+ #if BuildBoth
--- /dev/null
+--- xc.orig/programs/xdm/xdmcp.c 2004-08-08 14:22:57.000000000 +0200
++++ xc/programs/xdm/xdmcp.c 2004-08-08 15:00:03.061777904 +0200
+@@ -1316,7 +1316,7 @@
+ XdmcpHeader header;
+ ARRAY8 status;
+
+- sprintf (buf, "Session %ld failed for display %.100s: %.100s",
++ snprintf (buf, sizeof(buf), "Session %ld failed for display %.100s: %.100s",
+ (long) sessionID, name, reason);
+ Debug ("Send failed %ld %s\n", (long) sessionID, buf);
+ status.length = strlen (buf);
--- /dev/null
+--- xc/programs/Xserver/hw/xfree86/common/xf86str.h~ 2004-08-08 16:26:56.657190928 +0200
++++ xc/programs/Xserver/hw/xfree86/common/xf86str.h 2004-08-08 16:26:56.670188952 +0200
+@@ -42,7 +42,7 @@
+ #include "colormapst.h"
+ #include "xf86Module.h"
+ #include "xf86Opt.h"
+-#include "xf86Pci.h"
++#include "../os-support/bus/xf86Pci.h"
+
+ /*
+ * memType is of the size of the addressable memory (machine size)
--- /dev/null
+diff -urN xc.orig/programs/xfs/difs/charinfo.c xc/programs/xfs/difs/charinfo.c
+--- xc.orig/programs/xfs/difs/charinfo.c 2004-08-08 14:23:00.000000000 +0200
++++ xc/programs/xfs/difs/charinfo.c 2004-08-08 14:42:16.342943816 +0200
+@@ -499,6 +499,8 @@
+ #define LSBBitLeft(b,c) ((b) >> (c))
+ #define LSBBitRight(b,c) ((b) << (c))
+
++ if (srcp) {
++
+ if (dst_off == src_off)
+ {
+ if (srcbpr == dstbpr && src_left_bytes == dst_left_bytes)
+@@ -580,6 +582,7 @@
+ srcp += src_extra;
+ }
+ }
++ }
+ /* skip the amount we just filled in */
+ gd += l->length;
+ }
+diff -urN xc.orig/programs/xfs/difs/fonts.c xc/programs/xfs/difs/fonts.c
+--- xc.orig/programs/xfs/difs/fonts.c 2004-08-08 14:23:00.000000000 +0200
++++ xc/programs/xfs/difs/fonts.c 2004-08-08 14:41:58.277690152 +0200
+@@ -114,6 +114,113 @@
+ }
+
+ /*
++ * xf86GetPathElem --
++ * Extract a single element from the font path string starting at
++ * pnt. The font path element will be returned, and pnt will be
++ * updated to point to the start of the next element, or set to
++ * NULL if there are no more.
++ */
++char *
++xf86GetPathElem(pnt)
++ char **pnt;
++{
++ char *p1;
++
++ p1 = *pnt;
++ *pnt = index(*pnt, ',');
++ if (*pnt != NULL) {
++ **pnt = '\0';
++ *pnt += 1;
++ }
++ return(p1);
++}
++
++/*
++ * xf86ValidateFontPath --
++ * Validates the user-specified font path. Each element that
++ * begins with a '/' is checked to make sure the directory exists.
++ * If the directory exists, the existence of a file named 'fonts.dir'
++ * is checked. If either check fails, an error is printed and the
++ * element is removed from the font path.
++ */
++#define DIR_FILE "/fonts.dir"
++#define CHECK_TYPE(mode, type) ((S_IFMT & (mode)) == (type))
++static char *
++xf86ValidateFontPath(path)
++ char *path;
++{
++ char *tmp_path, *out_pnt, *path_elem, *next, *p1, *dir_elem;
++ struct stat stat_buf;
++ int flag;
++ int dirlen;
++
++ tmp_path = (char *)calloc(1,strlen(path)+1);
++ out_pnt = tmp_path;
++ path_elem = NULL;
++ next = path;
++ while (next != NULL) {
++ path_elem = xf86GetPathElem(&next);
++#ifndef __EMX__
++ if (*path_elem == '/') {
++ dir_elem = (char *)calloc(1, strlen(path_elem) + 1);
++ if ((p1 = strchr(path_elem, ':')) != 0)
++#else
++ /* OS/2 must prepend X11ROOT */
++ if (*path_elem == '/') {
++ path_elem = (char*)__XOS2RedirRoot(path_elem);
++ dir_elem = (char*)calloc(1, strlen(path_elem) + 1);
++ if (p1 = strchr(path_elem+2, ':'))
++#endif
++ dirlen = p1 - path_elem;
++ else
++ dirlen = strlen(path_elem);
++ strncpy(dir_elem, path_elem, dirlen);
++ dir_elem[dirlen] = '\0';
++ flag = stat(dir_elem, &stat_buf);
++ if (flag == 0)
++ if (!CHECK_TYPE(stat_buf.st_mode, S_IFDIR))
++ flag = -1;
++ if (flag != 0) {
++ printf("warning!\n");
++ ErrorF("Warning: The directory \"%s\" does not exist.\n", dir_elem);
++ ErrorF(" Entry deleted from font path.\n");
++ continue;
++ }
++ else {
++ p1 = (char *)malloc(strlen(dir_elem)+strlen(DIR_FILE)+1);
++ strcpy(p1, dir_elem);
++ strcat(p1, DIR_FILE);
++ flag = stat(p1, &stat_buf);
++ if (flag == 0)
++ if (!CHECK_TYPE(stat_buf.st_mode, S_IFREG))
++ flag = -1;
++#ifndef __EMX__
++ free(p1);
++#endif
++ if (flag != 0) {
++ ErrorF("Warning: 'fonts.dir' not found (or not valid) in \"%s\".\n",
++ dir_elem);
++ ErrorF(" Entry deleted from font path.\n");
++ ErrorF(" (Run 'mkfontdir' on \"%s\").\n", dir_elem);
++ continue;
++ }
++ }
++ free(dir_elem);
++ }
++
++ /*
++ * Either an OK directory, or a font server name. So add it to
++ * the path.
++ */
++ if (out_pnt != tmp_path)
++ *out_pnt++ = ',';
++ strcat(out_pnt, path_elem);
++ out_pnt += strlen(path_elem);
++ }
++ return(tmp_path);
++}
++
++/*
+ * note that the font wakeup queue is not refcounted. this is because
+ * an fpe needs to be added when it's inited, and removed when it's finally
+ * freed, in order to handle any data that isn't requested, like FS events.
+@@ -754,8 +861,12 @@
+ *end,
+ *p;
+ int err;
++ char *fixedpath;
++
++ fixedpath = xf86ValidateFontPath(str);
+
+- len = strlen(str) + 1;
++ len = strlen(fixedpath) + 1;
++ str = fixedpath;
+ paths = p = (char *) ALLOCATE_LOCAL(len);
+ npaths = 0;
+
+@@ -775,6 +886,7 @@
+
+ err = set_font_path_elements(npaths, paths, badpath);
+
++ free(fixedpath);
+ DEALLOCATE_LOCAL(paths);
+
+ return err;
+diff -urN xc.orig/programs/xfs/difs/main.c xc/programs/xfs/difs/main.c
+--- xc.orig/programs/xfs/difs/main.c 2004-08-08 14:23:00.000000000 +0200
++++ xc/programs/xfs/difs/main.c 2004-08-08 14:42:22.082071336 +0200
+@@ -63,6 +63,7 @@
+ #include "dispatch.h"
+ #include "extentst.h"
+ #include "difs.h"
++#include "debug.h"
+
+ char *ConnectionInfo;
+ int ConnInfoLen;
+@@ -78,6 +79,7 @@
+ static Bool create_connection_block(void);
+
+ char *configfilename;
++int debug_level;
+ extern Bool drone_server;
+
+ extern OldListenRec *OldListen;
+@@ -89,6 +91,7 @@
+ int i, oldumask;
+
+ argcGlobal = argc;
++ debug_level = 0;
+ argvGlobal = argv;
+
+ configfilename = DEFAULT_CONFIG_FILE;
+diff -urN xc.orig/programs/xfs/include/debug.h xc/programs/xfs/include/debug.h
+--- xc.orig/programs/xfs/include/debug.h 1970-01-01 01:00:00.000000000 +0100
++++ xc/programs/xfs/include/debug.h 2004-08-08 14:42:22.082071336 +0200
+@@ -0,0 +1 @@
++/* debug.h */
+\ Brak znaku nowej linii na koƱcu pliku
+diff -urN xc.orig/programs/xfs/os/utils.c xc/programs/xfs/os/utils.c
+--- xc.orig/programs/xfs/os/utils.c 2004-08-08 14:23:00.000000000 +0200
++++ xc/programs/xfs/os/utils.c 2004-08-08 14:42:22.084071032 +0200
+@@ -93,6 +93,7 @@
+ #include <stdlib.h>
+
+ extern char *configfilename;
++extern int debug_level;
+ static Bool dropPriv = FALSE; /* whether or not to drop root privileges */
+ #ifdef DEFAULT_DAEMON
+ static Bool becomeDaemon = TRUE; /* whether to become a daemon or not */
+@@ -219,7 +220,7 @@
+ 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] [-port tcp_port] [-droppriv] [-daemon] [-nodaemon] [-user user_name] [-ls listen_socket] [-d debug_level]\n",
+ progname);
+ exit(1);
+ }
+@@ -333,6 +334,8 @@
+ ProcessLSoption (argv[++i]);
+ else
+ usage();
++ } else if (!strcmp(argv[i], "-d") || !strcmp(argv[i], "--debug")) {
++ debug_level = atoi(argv[++i]);
+ } else if (!strcmp(argv[i], "-droppriv")) {
+ dropPriv = TRUE;
+ } else if (!strcmp(argv[i], "-daemon")) {
--- /dev/null
+--- xc.orig/programs/xman/Imakefile 2004-08-08 14:22:59.000000000 +0200
++++ xc/programs/xman/Imakefile 2004-08-08 15:01:51.815244864 +0200
+@@ -26,7 +26,7 @@
+ # if defined(LinuxDistribution) && (LinuxDistribution == LinuxRedHat)
+ MANCONF = -DMANCONF=\"/etc/man.config\"
+ # else
+- MANCONF = -DMANCONF=\"/etc/man.conf\"
++ MANCONF = -DMANCONF=\"/etc/man.config\"
+ # endif
+ #elif defined(OpenBSDArchitecture) || defined(NetBSDArchitecture) || \
+ defined(DarwinArchitecture)
+--- xc.orig/programs/xman/xman.man 2004-08-08 14:22:59.000000000 +0200
++++ xc/programs/xman/xman.man 2004-08-08 15:01:51.820244104 +0200
+@@ -93,8 +93,8 @@
+ .SH "BSD AND LINUX SYSTEMS"
+ .PP
+ In newer BSD and Linux systems, \fIXman\fP will search for a file named
+-\fI/etc/man.conf\fP which will contain the list of directories containing
+-manual pages. See \fIman.conf\fP(5) for a complete description of the file
++\fI/etc/man.config\fP which will contain the list of directories containing
++manual pages. See \fIman.config\fP(5) for a complete description of the file
+ format.
+ .SH "THE MANDESC FILE"
+ .PP
--- /dev/null
+--- xc.orig/programs/xterm/Imakefile 2004-08-08 14:31:29.000000000 +0200
++++ xc/programs/xterm/Imakefile 2004-08-08 14:47:26.823743560 +0200
+@@ -17,6 +17,8 @@
+ /* Define UTF8support to compile-in support for UTF-8 */
+ #define UTF8support
+
++#define UseUtempter
++
+ /*
+ * Fixes to allow compile with X11R5
+ */