Subject: bug#35448: 26.2; save-buffer silently fails in winNT if buffer name has forbidden chars

From: Eli Zaretskii <[email-masked]>
Date: Sat, 27 Apr 2019 13:05:05 +0300

> From: Tino Calancha <[email-masked]>
> Date: Sat, 27 Apr 2019 18:36:14 +0900
> 
> 
> emacs -Q
> ;; Do the following recipe in an empty directory
> 
> C-x b  schrodinger:cat RET
> Miauuuu!!!
> C-x C-s RET
> ;; A message in the minibuffer confirms the name of the file writen to disk.
> ;; Apparentely, the base name of such a file matches the buffer name.
> M-: (file-exists-p buffer-file-name)
> => t
> M-: (string= (file-name-nondirectory buffer-file-name) (buffer-name))
> => t
> 
> 
> ;; In fact, no file matches the buffer name in the directory
> M-: (directory-files default-directory nil (buffer-name))
> => nil
> 
> ;; There is an _empty_ file with name, the buffer name upto the colon
> M-: (directory-files default-directory nil "schrod")
> => ("schrodinger")

It's a feature.  See

  https://en.wikipedia.org/wiki/NTFS#Alternate_data_streams_(ADS)
  http://www.flexhex.com/docs/articles/alternate-streams.phtml

Whether we should allow this in Emacs is a different matter, but this
was supported since day one, FWIW.