diff options
author | Christopher Faylor <me@cgf.cx> | 2003-07-26 09:38:51 +0400 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2003-07-26 09:38:51 +0400 |
commit | 035df9eff5ad116d40599db4ebf9dd8e51734b9c (patch) | |
tree | 1065d84583384f4a3e43da3f84e9908f8704cc23 /winsup | |
parent | df04ae29b258b89bbd4991bd862a03ac56430e4e (diff) |
* mount.cc (do_mount): Issue warning when using managed mount option on
non-empty directory.
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); |