From 017a03afc92ba084898fc897c7e3dbf90197e0b6 Mon Sep 17 00:00:00 2001
From: Eli Zaretskii <eliz@gnu.org>
Date: Sat, 31 Jan 2015 18:32:11 +0200
Subject: [PATCH] Document MS-Windows file-name idiosyncrasies  (Bug#19463)

 doc/emacs/msdog.texi (Windows Files): Document characters invalid in
 Windows file names.
---
 doc/emacs/ChangeLog  |  3 +++
 doc/emacs/msdog.texi | 37 ++++++++++++++++++++++++++++++++++++-
 2 files changed, 39 insertions(+), 1 deletion(-)

diff --git a/doc/emacs/ChangeLog b/doc/emacs/ChangeLog
index 4e3c60efa03..7d8fcf4cb6d 100644
--- a/doc/emacs/ChangeLog
+++ b/doc/emacs/ChangeLog
@@ -1,5 +1,8 @@
 2015-01-31  Eli Zaretskii  <eliz@gnu.org>
 
+	* msdog.texi (Windows Files): Document characters invalid in
+	Windows file names.  (Bug#19463)
+
 	* custom.texi (Customization Groups): Update the looks of the
 	Customize Group buffer.
 
diff --git a/doc/emacs/msdog.texi b/doc/emacs/msdog.texi
index bf130eba7c2..0245fed208c 100644
--- a/doc/emacs/msdog.texi
+++ b/doc/emacs/msdog.texi
@@ -249,7 +249,42 @@ removable and remote volumes, where this could potentially slow down
 Dired and other related features.  The value of @code{nil} means never
 issue those system calls.  Non-@code{nil} values are more useful on
 NTFS volumes, which support hard links and file security, than on FAT,
-FAT32, and XFAT volumes.
+FAT32, and exFAT volumes.
+
+@cindex file names, invalid characters on MS-Windows
+  Unlike Unix, MS-Windows file systems restrict the set of characters
+that can be used in a file name.  The following characters are not
+allowed:
+
+@itemize @bullet
+@item
+Shell redirection symbols @samp{<}, @samp{>}, and @samp{|}.
+
+@item
+Colon @samp{:} (except after the drive letter).
+
+@item
+Forward slash @samp{/} and backslash @samp{\} (except as directory
+separators).
+
+@item
+Wildcard characters @samp{*} and @samp{?}.
+
+@item
+Control characters whose codepoints are 1 through 31 decimal.  In
+particular, newlines in file names are not allowed.
+
+@item
+The null character, whose codepoint is zero (this limitation exists on
+Unix filesystems as well).
+@end itemize
+
+@noindent
+In addition, referencing any file whose name matches a DOS character
+device, such as @file{NUL} or @file{LPT1} or @file{PRN} or @file{CON},
+with or without any file-name extension, will always resolve to those
+character devices, in any directory.  Therefore, only use such file
+names when you want to use the corresponding character device.
 
 @node ls in Lisp
 @section Emulation of @code{ls} on MS-Windows
-- 
2.39.5