On Thu, 28 Sep 2006 10:47:05 +0100 Essien Ita Essien <[EMAIL PROTECTED]>
babbled:
> Enlightenment CVS wrote:
> > Enlightenment CVS committal
> >
> > Author : raster
> > Project : e17
> > Module : apps/entrance
> >
> > Dir : e17/apps/entrance/src/client
> >
> >
> > Modified Files:
> > entrance_login.c entrance_session.c
> >
> >
> > Log Message:
> >
> >
> > moe loging - and ACTUALLY work. executing entrance_login via bin/sh loses
> > child process info etc thus waitpit() will never wait for the x session. exe
> > directly ith no shell in between - and now its all happy.
> >
> ahh... i c.
>
> Makes sense, I didn't even think of that, and that has been there for
> quite a while... funky bug.
>
> I'm going to device an elaborate plan to steal that UNIX programming
> book that devilhorns has been reading lately... I need it seriously, so
> i can be as bad-ass as our own raster :)
actually - i didn't know that the shell stripped out child process info so that
waitpid() failed as it could find no child processes - not until this bug
hit :) well ok - it does that here on ubuntu (and ubuntu uses dash as /bin/sh
not bash so it's different and dash is a lot more stripped down)
> > <snip>
>
> > }
> > +/* no need to free - we are goign to exec ourselves and be replaced
> > struct_passwd_free(pwent);
> > entrance_session_free(e);
> > if (shell) free(shell);
> > if (user) free(user);
> > + */
> >
> oops... you're right there.
> > /* replace this process with a clean small one that just waits for its
> > */ /* child to exit.. passed on the cmd-line */
> >
> > - execl("/bin/sh", "/bin/sh", "-l", "-c", buf, NULL);
> > + /* this causes entreance to reset - bad bad bad */
> > + snprintf(pids, sizeof(pids), "%i", (int)pid);
> > + snprintf(buf, sizeof(buf), "%s/%s/entrance_login", PACKAGE_LIB_DIR,
> > PACKAGE); +#ifdef HAVE_PAM
> > + if (e->config->auth == ENTRANCE_USE_PAM)
> > + {
> > + syslog(LOG_NOTICE, "Exec entrance login replacement: %s %s %s %s",
> > buf, pids, pwent->pw_name, e->display);
> > + execl(buf, buf, pids, pwent->pw_name, e->display, NULL);
> > + }
> > + else
> > +#endif
> > + {
> > + syslog(LOG_NOTICE, "Exec entrance login replacement: %s %s", buf,
> > pids);
> > + execl(buf, buf, pids, NULL);
> > + }
> > + pause();
> > if (buf) free(buf);
> > }
> >
> >
> >
>
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys -- and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> enlightenment-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
--
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler) [EMAIL PROTECTED]
裸好多
Tokyo, Japan (東京 日本)
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel