Subject: bug#1058: 23.0.60; emacs --daemon should not return until socket is ready

From: Dan Nicolaescu <[email-masked]>
Date: Thu, 2 Oct 2008 10:26:38 -0700 (PDT)

Stefan Monnier <[email-masked]> writes:

  > >> > It would be much better if this could be done without a state
  > >> > changing function callable from elisp.
  > >> I agree, but given that control passes to Lisp pretty early, I don't
  > >> see how it can be done.
  > > That's exactly the reason for my initial reply...
  > > Anyway, your patch probably needs an approval from a maintainer.
  > 
  > I could accept a similar patch, maybe, but first I need to understand
  > why/where we currently "detach" so early.

Where? in emacs.c:main, look for:
  if (argmatch (argv, argc, "-daemon", "--daemon", 5, NULL, &skip_args))
    {
#ifndef DOS_NT
      pid_t f = fork ();

Why?
- mainly because I never thought about the emacs --daemon && emacsclient use-case.
- in order to not make detaching an elisp function, and have to deal
with  users trying to call it from different contexts
- the `fork' call for detaching needs to happen before some of the
initialization is run (although after my 2008-09-28 change it might be
possible to push it later), and also before .emacs is run and before
the server is started.