XDARWIN: Add launchd support

This adds a bit of glue to configure.ac to support launchd detection;
on OS X (or other platforms which choose to implement launchd), this allows
the system to automagically start the Xserver as necessary to serve clients.
This commit is contained in:
Ben Byer 2007-09-05 20:33:43 -07:00
parent 71c21dea74
commit bf1641b94c
2 changed files with 19 additions and 0 deletions

View File

@ -1075,6 +1075,10 @@ XSERVER_SYS_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} ${LIBS}"
AC_SUBST([XSERVER_LIBS])
AC_SUBST([XSERVER_SYS_LIBS])
if test "x$HAVE_LAUNCHD" = xyes; then
XSERVER_CFLAGS="$XSERVER_CFLAGS -DHAVE_LAUNCHD"
fi
# The Xorg binary needs to export symbols so that they can be used from modules
# Some platforms require extra flags to do this. gcc should set these flags
# when -rdynamic is passed to it, other compilers/linkers may need to be added

View File

@ -74,6 +74,9 @@ SOFTWARE.
#define TRANS_SERVER
#define TRANS_REOPEN
#include <X11/Xtrans/Xtrans.h>
#ifdef HAVE_LAUNCHD
#include <X11/Xtrans/Xtransint.h>
#endif
#include <errno.h>
#include <signal.h>
#include <stdio.h>
@ -660,10 +663,21 @@ ClientAuthorized(ClientPtr client,
XID auth_id;
char *reason = NULL;
XtransConnInfo trans_conn;
#ifdef HAVE_LAUNCHD
struct sockaddr *saddr;
#endif
priv = (OsCommPtr)client->osPrivate;
trans_conn = priv->trans_conn;
#ifdef HAVE_LAUNCHD
saddr = (struct sockaddr *) (trans_conn->addr);
/* Allow any client to connect without authorization on a launchd socket,
because it is securely created -- this prevents a race condition on launch */
if (saddr->sa_len > 11 && saddr->sa_family == AF_UNIX &&
!strncmp(saddr->sa_data, "/tmp/launch", 11)) goto done;
#endif
auth_id = CheckAuthorization (proto_n, auth_proto,
string_n, auth_string, client, &reason);
@ -719,6 +733,7 @@ ClientAuthorized(ClientPtr client,
}
}
priv->auth_id = auth_id;
done:
priv->conn_time = 0;
#ifdef XDMCP