Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2000-06-08 16:54:12 +0400
committerCorinna Vinschen <corinna@vinschen.de>2000-06-08 16:54:12 +0400
commit9500a3db906ebfde288593b16132beecea93ee50 (patch)
treeea9e106c02b962b8755515f74ce12f5fe4c6081a /winsup/utils
parentfe73870ce5c25aec19ad16e64718ed1051f12f0d (diff)
mount.cc (error): New function to report an error and exit.
umount.cc (error): Ditto. (remove_all_automounts): Check return status of cygwin_umount. (remove_all_user_mounts): Ditto. (remove_all_system_mounts): Ditto.
Diffstat (limited to 'winsup/utils')
-rw-r--r--winsup/utils/ChangeLog8
-rw-r--r--winsup/utils/mount.cc21
-rw-r--r--winsup/utils/umount.cc28
3 files changed, 38 insertions, 19 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog
index 104ebecea..2576fbe2e 100644
--- a/winsup/utils/ChangeLog
+++ b/winsup/utils/ChangeLog
@@ -1,3 +1,11 @@
+2000-06-07 Kazuhiro Fujieda <fujieda@jaist.ac.jp>
+
+ mount.cc (error): New function to report an error and exit.
+ umount.cc (error): Ditto.
+ (remove_all_automounts): Check return status of cygwin_umount.
+ (remove_all_user_mounts): Ditto.
+ (remove_all_system_mounts): Ditto.
+
2000-06-05 DJ Delorie <dj@cygnus.com>
* mount.cc: add stdlib.h for exit
diff --git a/winsup/utils/mount.cc b/winsup/utils/mount.cc
index 6227eb38e..e41038f4a 100644
--- a/winsup/utils/mount.cc
+++ b/winsup/utils/mount.cc
@@ -30,6 +30,14 @@ static short force = FALSE;
static const char *progname;
+static void
+error (const char *path)
+{
+ fprintf (stderr, "%s: %s: %s\n", progname, path,
+ (errno == EMFILE) ? "Too many mount entries" : strerror (errno));
+ exit (1);
+}
+
/* FIXME: do_mount should also print a warning message if the dev arg
is a non-existent Win32 path. */
@@ -59,10 +67,7 @@ do_mount (const char *dev, const char *where, int flags)
#endif
if (mount (dev, where, flags))
- {
- perror ("mount failed");
- exit (1);
- }
+ error (where);
if (statres == -1)
{
@@ -159,8 +164,7 @@ main (int argc, const char **argv)
if ((force == FALSE) && (mount_already_exists (argv[i + 1], flags)))
{
errno = EBUSY;
- perror ("mount failed");
- exit (1);
+ error (argv[i + 1]);
}
else
do_mount (argv[i], argv[i + 1], flags);
@@ -232,10 +236,7 @@ change_cygdrive_prefix (const char *new_prefix, int flags)
flags |= MOUNT_AUTO;
if (mount (NULL, new_prefix, flags))
- {
- perror ("mount failed");
- exit (1);
- }
+ error (new_prefix);
exit (0);
}
diff --git a/winsup/utils/umount.cc b/winsup/utils/umount.cc
index 6405ed90b..7623c5f97 100644
--- a/winsup/utils/umount.cc
+++ b/winsup/utils/umount.cc
@@ -13,6 +13,7 @@ details. */
#include <sys/mount.h>
#include <mntent.h>
#include <stdlib.h>
+#include <errno.h>
static void remove_all_mounts ();
static void remove_all_automounts ();
@@ -34,6 +35,13 @@ usage (void)
exit (1);
}
+static void
+error (char *path)
+{
+ fprintf (stderr, "%s: %s: %s\n", progname, path, strerror (errno));
+ exit (1);
+}
+
int
main (int argc, char **argv)
{
@@ -81,10 +89,7 @@ main (int argc, char **argv)
usage ();
if (cygwin_umount (argv[i], flags) != 0)
- {
- perror ("umount");
- exit (1);
- }
+ error (argv[i]);
return 0;
}
@@ -109,14 +114,18 @@ remove_all_automounts ()
/* Remove the mount if it's an automount. */
if (strcmp (p->mnt_type, "user,auto") == 0)
{
- cygwin_umount (p->mnt_dir, 0);
+ if (cygwin_umount (p->mnt_dir, 0))
+ error (p->mnt_dir);
+
/* We've modified the table so we need to start over. */
endmntent (m);
m = setmntent ("/-not-used-", "r");
}
else if (strcmp (p->mnt_type, "system,auto") == 0)
{
- cygwin_umount (p->mnt_dir, MOUNT_SYSTEM);
+ if (cygwin_umount (p->mnt_dir, MOUNT_SYSTEM))
+ error (p->mnt_dir);
+
/* We've modified the table so we need to start over. */
endmntent (m);
m = setmntent ("/-not-used-", "r");
@@ -132,14 +141,14 @@ remove_all_user_mounts ()
{
FILE *m = setmntent ("/-not-used-", "r");
struct mntent *p;
- int err;
while ((p = getmntent (m)) != NULL)
{
/* Remove the mount if it's a user mount. */
if (strncmp (p->mnt_type, "user", 4) == 0)
{
- err = cygwin_umount (p->mnt_dir, 0);
+ if (cygwin_umount (p->mnt_dir, 0))
+ error (p->mnt_dir);
/* We've modified the table so we need to start over. */
endmntent (m);
@@ -162,7 +171,8 @@ remove_all_system_mounts ()
/* Remove the mount if it's a system mount. */
if (strncmp (p->mnt_type, "system", 6) == 0)
{
- cygwin_umount (p->mnt_dir, MOUNT_SYSTEM);
+ if (cygwin_umount (p->mnt_dir, MOUNT_SYSTEM))
+ error (p->mnt_dir);
/* We've modified the table so we need to start over. */
endmntent (m);