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

From: SRS0+wOMF+22+gmail.com=[email-masked]
Date: Tue, 30 Sep 2008 23:13:54 +0930 (CST)

>From this transcript, you can see that after starting 'emacs
--daemon', it takes five seconds before the socket is actually
available for emacsclient to talk to it.

    $ emacs --daemon; while ! ls /tmp/emacs1187/; do sleep 1; done
    emacs: no process killed
    ls: cannot access /tmp/emacs1187/: No such file or directory
    ls: cannot access /tmp/emacs1187/: No such file or directory
    ls: cannot access /tmp/emacs1187/: No such file or directory
    ls: cannot access /tmp/emacs1187/: No such file or directory
    server

This is evil; it means that making $ALTERNATE_EDITOR a script that
just does

    emacs --daemon && emacsclient

results in a loop, because the socket isn't ready when emacsclient
starts -- so emacsclient runs the above script again.  For --daemon to
be useful to me, it really must not exit until the socket is ready.

A filthy workaround might look something like this.

    #!/bin/bash -e
    emacs --daemon
    while ! test -e /tmp/emacs$EUID/server
    do sleep 1
    done
    emacsclient

In GNU Emacs 23.0.60.1 (i486-pc-linux-gnu, GTK+ Version 2.12.11)
 of 2008-09-28 on elegiac, modified by Debian
 (emacs-snapshot package, version 1:20080928-1)
configured using `configure  '--build' 'i486-linux-gnu' '--host' 'i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/23.0.60/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.0.60/site-lisp:/usr/share/emacs/site-lisp' '--with-x=yes' '--with-x-toolkit=gtk' 'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2' 'LDFLAGS=-g -Wl,--as-needed' 'CPPFLAGS=''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: C
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_AU.utf8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default-enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  global-auto-composition-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
ESC x r e p o r t SPC e m a c s SPC b u TAB RET

Recent messages:
("emacs" "-Q")
For information about GNU Emacs and the GNU system, type C-h C-a.