diff -p -up ./startx.cpp.startx ./startx.cpp --- ./startx.cpp.startx 2008-06-12 21:25:46.000000000 +0200 +++ ./startx.cpp 2008-06-16 12:20:42.000000000 +0200 @@ -74,8 +74,6 @@ sysclientrc=XINITDIR/xinitrc userserverrc=$HOME/.xserverrc sysserverrc=XINITDIR/xserverrc -defaultclient=XTERM -defaultserver=XSERVER defaultclientargs="" defaultserverargs="" defaultdisplay=":0" @@ -168,13 +166,13 @@ while [ x"$1" != x ]; do /''*|\./''*) 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 @@ -179,12 +177,17 @@ while [ x"$1" != x ]; do ;; *) 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 @@ -200,32 +203,12 @@ while [ x"$1" != x ]; do 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 - server=$defaultserver - - XCOMM if no server arguments or display either, use defaults - if [ x"$serverargs" = x -a x"$display" = x ]; then - XCOMM For compatibility reasons, only use xserverrc if there were no server command line arguments - if [ -f $userserverrc ]; then - server=$userserverrc - elif [ -f $sysserverrc ]; then - server=$sysserverrc - fi - - serverargs=$defaultserverargs - display=$defaultdisplay - fi +if [ x"$serverargs" = x ]; then + serverargs="$defaultserverargs" fi if [ x"$enable_xauth" = x1 ] ; then @@ -285,10 +273,11 @@ if [ "$REMOTE_SERVER" = "TRUE" ]; then 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"$enable_xauth" = x1 ] ; then if [ x"$removelist" != x ]; then XAUTH remove $removelist @@ -315,3 +304,15 @@ screenrestore #if defined(sun) kbd_mode -a #endif +} + + +trap cleanup 0 + +xinit $clientargs -- $serverargs -deferglyphs 16 & + +PID=$! + +wait $PID + +unset PID --- ./xinit.c.startx 2008-03-06 23:08:48.000000000 +0100 +++ ./xinit.c 2008-04-15 23:03:37.000000000 +0200 @@ -168,7 +168,7 @@ char xserverrcbuf[256]; static char *default_server = "X"; static char *default_display = ":0"; /* choose most efficient */ -static char *default_client[] = {"xterm", "-geometry", "+1+1", "-n", "login", NULL}; +static char *default_client[] = {"xvt", "-geometry", "+1+1", NULL}; static char *serverargv[100]; static char *clientargv[100]; static char **server = serverargv + 2; /* make sure room for sh .xserverrc args */