diff options
Diffstat (limited to 'winsup')
-rw-r--r-- | winsup/utils/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/utils/mount.cc | 20 |
2 files changed, 25 insertions, 0 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index 0e3368085..1131bec27 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,3 +1,8 @@ +2003-07-26 Christopher Faylor <cgf@redhat.com> + + * mount.cc (do_mount): Issue warning when using managed mount option on + non-empty directory. + 2003-07-25 Christopher Faylor <cgf@redhat.com> * configure.in: Use 'install-sh -c'. 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); |