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:
		
							parent
							
								
									71c21dea74
								
							
						
					
					
						commit
						bf1641b94c
					
				| 
						 | 
					@ -1075,6 +1075,10 @@ XSERVER_SYS_LIBS="${XSERVERLIBS_LIBS} ${SYS_LIBS} ${LIBS}"
 | 
				
			||||||
AC_SUBST([XSERVER_LIBS])
 | 
					AC_SUBST([XSERVER_LIBS])
 | 
				
			||||||
AC_SUBST([XSERVER_SYS_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
 | 
					# 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
 | 
					# 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
 | 
					# when -rdynamic is passed to it, other compilers/linkers may need to be added
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -74,6 +74,9 @@ SOFTWARE.
 | 
				
			||||||
#define TRANS_SERVER
 | 
					#define TRANS_SERVER
 | 
				
			||||||
#define TRANS_REOPEN
 | 
					#define TRANS_REOPEN
 | 
				
			||||||
#include <X11/Xtrans/Xtrans.h>
 | 
					#include <X11/Xtrans/Xtrans.h>
 | 
				
			||||||
 | 
					#ifdef HAVE_LAUNCHD
 | 
				
			||||||
 | 
					#include <X11/Xtrans/Xtransint.h>
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
#include <errno.h>
 | 
					#include <errno.h>
 | 
				
			||||||
#include <signal.h>
 | 
					#include <signal.h>
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
| 
						 | 
					@ -660,10 +663,21 @@ ClientAuthorized(ClientPtr client,
 | 
				
			||||||
    XID	 		auth_id;
 | 
					    XID	 		auth_id;
 | 
				
			||||||
    char	 	*reason = NULL;
 | 
					    char	 	*reason = NULL;
 | 
				
			||||||
    XtransConnInfo	trans_conn;
 | 
					    XtransConnInfo	trans_conn;
 | 
				
			||||||
 | 
					#ifdef HAVE_LAUNCHD
 | 
				
			||||||
 | 
					    struct sockaddr     *saddr;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    priv = (OsCommPtr)client->osPrivate;
 | 
					    priv = (OsCommPtr)client->osPrivate;
 | 
				
			||||||
    trans_conn = priv->trans_conn;
 | 
					    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,
 | 
					    auth_id = CheckAuthorization (proto_n, auth_proto,
 | 
				
			||||||
				  string_n, auth_string, client, &reason);
 | 
									  string_n, auth_string, client, &reason);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -719,6 +733,7 @@ ClientAuthorized(ClientPtr client,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    priv->auth_id = auth_id;
 | 
					    priv->auth_id = auth_id;
 | 
				
			||||||
 | 
					 done:
 | 
				
			||||||
    priv->conn_time = 0;
 | 
					    priv->conn_time = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef XDMCP
 | 
					#ifdef XDMCP
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue