Enlightenment CVS committal
Author : tillsan
Project : misc
Module : elogin
Dir : misc/elogin/src/daemon
Modified Files:
spawner.c spawner.h
Log Message:
patch by Ibukun Olumuyiwa <[EMAIL PROTECTED]>. He asked me to commit this
and it looks good to me. atmos, please review.
Bugs fixed:
- waitpid() was set to nohang, and it only checked for the elogin and
X processes - causing all other child processes to zombie (not good!)
- Elogind does not check to make sure elogin is executable before
spawning X. This causes X to keep respawning if the elogin
executable is inaccessible
- Elogin binary location should not be hardwired into the source. Use
config.h instead.
- Exit status of 0 instead of 1 when x spawn fails
===================================================================
RCS file: /cvsroot/enlightenment/misc/elogin/src/daemon/spawner.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -3 -r1.6 -r1.7
--- spawner.c 16 Oct 2002 02:05:13 -0000 1.6
+++ spawner.c 11 Jan 2003 20:46:11 -0000 1.7
@@ -99,6 +99,13 @@
/* setup a spawner context */
d = spawner_display_new();
+ /* Check to make sure elogin binary is executable */
+ if(access(ELOGIN, X_OK))
+ {
+ fprintf(stderr, "Elogin: Fatal Error: Cannot execute elogin binary.
+Aborting.");
+ exit(1);
+ }
+
/* run X */
spawn_x();
@@ -106,7 +113,7 @@
{
free(d);
fprintf(stderr, "Elogin: Could not start X server\n");
- exit(0);
+ exit(1);
}
/* run elogin */
@@ -161,10 +168,11 @@
int status = 0;
pid_t pid;
- while ((pid = waitpid(-1, &status, WNOHANG)) > 0)
+ while ((pid = waitpid(-1, &status, 0)) > 0)
{
if (pid == d->pid.client)
{
+ printf("INFO: Elogin process died.\n");
if (d->display)
{
XSync(d->display, False);
@@ -175,6 +183,7 @@
}
else if (pid == d->pid.x)
{
+ printf("INFO: X Server died.\n");
if (d->display)
{
XSync(d->display, False);
===================================================================
RCS file: /cvsroot/enlightenment/misc/elogin/src/daemon/spawner.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- spawner.h 24 Jul 2002 02:18:08 -0000 1.4
+++ spawner.h 11 Jan 2003 20:46:11 -0000 1.5
@@ -9,11 +9,12 @@
#include <X11/Xlib.h>
#include <limits.h>
#include <getopt.h>
+#include "../config.h"
#define X_SERVER "/usr/X11R6/bin/X -terminate -ac -quiet"
/* #define X_SERVER "/usr/X11R6/bin/Xnest -terminate -geometry 640x480 -ac -full :1"
*/
#define X_DISP ":0" /* only used if DISPLAY variable is NOT set */
-#define ELOGIN "/usr/local/bin/elogin"
+#define ELOGIN PACKAGE_SOURCE_DIR "/elogin"
#define PIDFILE "/var/run/elogind.pid"
/* display->status possible values */
-------------------------------------------------------
This SF.NET email is sponsored by:
SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See!
http://www.vasoftware.com
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs