aboutsummaryrefslogtreecommitdiff
path: root/winsup/cygwin/path.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2001-11-13 21:49:06 +0000
committerCorinna Vinschen <corinna@vinschen.de>2001-11-13 21:49:06 +0000
commit03adcc0fda221ca636b5fe71547cde0a0737161b (patch)
treec850a2256759b6a1a2c38922c1f6e3871ac4176e /winsup/cygwin/path.cc
parent7a43fd8be112c2a94b3b7f06a28ce54ba931dbb2 (diff)
downloadnewlib-03adcc0fda221ca636b5fe71547cde0a0737161b.zip
newlib-03adcc0fda221ca636b5fe71547cde0a0737161b.tar.gz
newlib-03adcc0fda221ca636b5fe71547cde0a0737161b.tar.bz2
* dir.cc (mkdir): Add HIDDEN file attribute if file has leading dot
and HIDDEN_DOT_FILES is defined. * fhandler.cc (fhandler_base::open): Ditto. * path.cc (symlink): Ditto. * syscalls.cc (_rename): Ditto and remove HIDDEN file attribute if new filename does not begin with a dot.
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r--winsup/cygwin/path.cc17
1 files changed, 12 insertions, 5 deletions
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc
index 130f45d..41ea4d4 100644
--- a/winsup/cygwin/path.cc
+++ b/winsup/cygwin/path.cc
@@ -2605,9 +2605,9 @@ symlink (const char *topath, const char *frompath)
&sa, alloca (4096), 4096);
h = CreateFileA(win32_path, GENERIC_WRITE, 0, &sa,
- CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
+ CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
if (h == INVALID_HANDLE_VALUE)
- __seterrno ();
+ __seterrno ();
else
{
BOOL success;
@@ -2651,9 +2651,16 @@ symlink (const char *topath, const char *frompath)
set_file_attribute (win32_path.has_acls (),
win32_path.get_win32 (),
S_IFLNK | S_IRWXU | S_IRWXG | S_IRWXO);
- SetFileAttributesA (win32_path.get_win32 (),
- allow_winsymlinks ? FILE_ATTRIBUTE_READONLY
- : FILE_ATTRIBUTE_SYSTEM);
+
+ DWORD attr = allow_winsymlinks ? FILE_ATTRIBUTE_READONLY
+ : FILE_ATTRIBUTE_SYSTEM;
+#ifdef HIDDEN_DOT_FILES
+ cp = strrchr (win32_path, '\\');
+ if ((cp && cp[1] == '.') || *win32_path == '.')
+ attr |= FILE_ATTRIBUTE_HIDDEN;
+#endif
+ SetFileAttributesA (win32_path.get_win32 (), attr);
+
if (win32_path.fs_fast_ea ())
set_symlink_ea (win32_path, topath);
res = 0;