Sophie

Sophie

distrib > Mandriva > 2007.0 > x86_64 > media > main-release-src > by-pkgid > 2a38540969a50a26886bb77d643afd92 > files > 2

xinit-1.0.2-5mdv2007.0.src.rpm

--- xinit/startx.cpp.startx	2005-11-15 09:35:19.000000000 +0100
+++ xinit/startx.cpp	2005-11-15 15:52:18.000000000 +0100
@@ -64,8 +64,6 @@
 
 userserverrc=$HOME/.xserverrc
 sysserverrc=XINITDIR/xserverrc
-defaultclient=XTERM
-defaultserver=XSERVER
 defaultclientargs=""
 defaultserverargs=""
 clientargs=""
@@ -111,13 +109,13 @@
     /''*|\./''*)
 	if [ "$whoseargs" = "client" ]; then
 	    if [ x"$clientargs" = x ]; then
-		client="$1"
+		clientargs="$1"
 	    else
 		clientargs="$clientargs $1"
 	    fi
 	else
 	    if [ x"$serverargs" = x ]; then
-		server="$1"
+		serverargs="$1"
 	    else
 		serverargs="$serverargs $1"
 	    fi
@@ -128,12 +126,17 @@
 	;;
     *)
 	if [ "$whoseargs" = "client" ]; then
-	    clientargs="$clientargs $1"
+	   if [ "x$clientargs" = x ]; then
+	       clientargs="$defaultclientargs $1"
+	   else
+	       clientargs="$clientargs $1"
+	   fi
 	else
 	    XCOMM display must be the FIRST server argument
 	    if [ x"$serverargs" = x ] && @@
 		 expr "$1" : ':[0-9][0-9]*$' > /dev/null 2>&1; then
 		display="$1"
+		serverargs="$1"
 	    else
 		serverargs="$serverargs $1"
 	    fi
@@ -143,24 +146,12 @@
     shift
 done
 
-XCOMM process client arguments
-if [ x"$client" = x ]; then
-    XCOMM if no client arguments either, use rc file instead
-    if [ x"$clientargs" = x ]; then
-	client="$defaultclientargs"
-    else
-	client=$defaultclient
-    fi
+if [ x"$clientargs" = x ]; then
+    clientargs="$defaultclientargs"
 fi
 
-XCOMM process server arguments
-if [ x"$server" = x ]; then
-    XCOMM if no server arguments or display either, use rc file instead
-    if [ x"$serverargs" = x -a x"$display" = x ]; then
-	server="$defaultserverargs"
-    else
-	server=$defaultserver
-    fi
+if [ x"$serverargs" = x ]; then
+    serverargs="$defaultserverargs"
 fi
 
 if [ x"$XAUTHORITY" = x ]; then
@@ -223,10 +214,11 @@
 else
         XINIT $client $clientargs -- $server $display $serverargs
 fi
-#else
-XINIT $client $clientargs -- $server $display $serverargs
 #endif
 
+cleanup() {
+    [ -n "$PID" ] && kill $PID > /dev/null 2>&1
+
 if [ x"$removelist" != x ]; then
     XAUTH remove $removelist
 fi
@@ -251,3 +243,15 @@
 #if defined(sun)
 kbd_mode -a
 #endif
+}
+
+
+trap cleanup 0
+
+xinit $clientargs -- $serverargs -deferglyphs 16 &
+
+PID=$!
+
+wait $PID
+
+unset PID
--- xinit/xinit.c.startx	2005-10-04 13:26:37.000000000 +0200
+++ xinit/xinit.c	2005-11-15 15:48:12.000000000 +0100
@@ -158,7 +158,7 @@
 
 char *default_server = "X";
 char *default_display = ":0";		/* choose most efficient */
-char *default_client[] = {"xterm", "-geometry", "+1+1", "-n", "login", NULL};
+char *default_client[] = {"xvt", "-geometry", "+1+1", NULL};
 char *serverargv[100];
 char *clientargv[100];
 char **server = serverargv + 2;		/* make sure room for sh .xserverrc args */
@@ -446,6 +446,7 @@
 	signal(SIGINT, sigCatch);
 	signal(SIGHUP, sigCatch);
 	signal(SIGPIPE, sigCatch);
+	signal(SIGTERM, sigCatch);
 #else
 	/* Let those signal interrupt the wait() call in the main loop */
 	memset(&sa, 0, sizeof sa);
@@ -458,6 +459,7 @@
 	sigaction(SIGINT, &sa, NULL);
 	sigaction(SIGHUP, &sa, NULL);
 	sigaction(SIGPIPE, &sa, NULL);
+	sigaction(SIGTERM, &sa, NULL);
 #endif
 	signal(SIGALRM, sigAlarm);
 	signal(SIGUSR1, sigUsr1);