Subject: bug#44644: /tmp/emacs0/ not cleaned up upon exit

From: Jean Louis <[email-masked]>
Date: Tue, 24 Nov 2020 18:41:01 +0300

* Eli Zaretskii <[email-masked]> [2020-11-24 18:29]:
> Wait a moment: we are deleting the _directory_ of the server file?
> Sorry, I was confused and thought you were talking about the server
> file itself.
> 
> The directory thing is different.  First, its place and purpose
> depends on whether server-use-tcp is nil (Posix platforms) or not
> (MS-Windows or when the user of a Posix host connects from another
> system).  If this is non-nil, the directory of the server file is
> server-auth-dir, which is:
> 
>   (defcustom server-auth-dir (locate-user-emacs-file "server/")
> 
> Since this is a defcustom, I don't think we can delete that directory
> behind user's back, even if it is empty.

Good point, as sometimes I was in that directory and launching from it
stuff related to Emacs leaving few notes, I would not like directory
being deleted for user, but customization could be given as optional.

> If server-use-tcp is nil (the default), then the directory of
> server-file is computed thusly:
> 
>   (defvar server-socket-dir
>     (if internal--daemon-sockname
> 	(file-name-directory internal--daemon-sockname)
>       (and (featurep 'make-network-process '(:family local))
> 	   (let ((xdg_runtime_dir (getenv "XDG_RUNTIME_DIR")))
> 	     (if xdg_runtime_dir
> 		 (format "%s/emacs" xdg_runtime_dir)
> 	       (format "%s/emacs%d" (or (getenv "TMPDIR") "/tmp") (user-uid))))))
> 
> I don't think it's kosher to delete $XDG_RUNTIME_DIR, even if it's
> empty, since it is probably used by more than the server?  And if
> XDG_RUNTIME_DIR is not defined, and we use a directory under /tmp,
> then the system cleans that up from time to time, doesn't it?

My XDG_RUNTIME_DIR is used as RAM disk to place thousands and
thousands of files temporarily there that I spare my hard disk of
those temporary file generations, and files are then uploaded to
servers as web pages. Images are being placed in that directory.

That directory removes all its data upon system reboot. No need to
delete directories definitely.

One could just delete the specific file file.pid or various sockets if
such do not exist any more and if such files have been created by
program. 

This is report that I use that directory since many years and before
XDG_RUNTIME_DIR I have used the memory directory how it was called I
forgot, maybe /dev/shm something, now is /run/user/1001 for each user
special.