summaryrefslogtreecommitdiffstats
path: root/winsup/utils/mount.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/utils/mount.cc')
-rw-r--r--winsup/utils/mount.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/winsup/utils/mount.cc b/winsup/utils/mount.cc
index 0cce584e6..2a7014986 100644
--- a/winsup/utils/mount.cc
+++ b/winsup/utils/mount.cc
@@ -16,6 +16,7 @@ details. */
#include <sys/cygwin.h>
#include <stdlib.h>
#include <getopt.h>
+#include <dirent.h>
#ifdef errno
#undef errno
@@ -104,6 +105,25 @@ do_mount (const char *dev, const char *where, int flags)
}
}
+ if (!force && flags & MOUNT_ENC)
+ {
+ DIR *dd = opendir (dev);
+ if (dd)
+ {
+ struct dirent *d;
+ while ((d = readdir (dd)))
+ {
+ if (d->d_name[0] != '.')
+ /* fall through */;
+ else if (d->d_name[1] == '\0'
+ || (d->d_name[1] == '.' && d->d_name[2] == '\0'))
+ continue;
+ fprintf (stderr, "%s: error: don't use \"-o managed\" on non-empty directories\n", progname);
+ exit (1);
+ }
+ }
+ }
+
if (mount (dev, where, flags))
error (where);