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.
This commit is contained in:
Corinna Vinschen 2000-06-08 12:54:12 +00:00
parent fe73870ce5
commit 9500a3db90
3 changed files with 38 additions and 19 deletions

View File

@ -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> 2000-06-05 DJ Delorie <dj@cygnus.com>
* mount.cc: add stdlib.h for exit * mount.cc: add stdlib.h for exit

View File

@ -30,6 +30,14 @@ static short force = FALSE;
static const char *progname; 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 /* FIXME: do_mount should also print a warning message if the dev arg
is a non-existent Win32 path. */ is a non-existent Win32 path. */
@ -59,10 +67,7 @@ do_mount (const char *dev, const char *where, int flags)
#endif #endif
if (mount (dev, where, flags)) if (mount (dev, where, flags))
{ error (where);
perror ("mount failed");
exit (1);
}
if (statres == -1) if (statres == -1)
{ {
@ -159,8 +164,7 @@ main (int argc, const char **argv)
if ((force == FALSE) && (mount_already_exists (argv[i + 1], flags))) if ((force == FALSE) && (mount_already_exists (argv[i + 1], flags)))
{ {
errno = EBUSY; errno = EBUSY;
perror ("mount failed"); error (argv[i + 1]);
exit (1);
} }
else else
do_mount (argv[i], argv[i + 1], flags); do_mount (argv[i], argv[i + 1], flags);
@ -232,10 +236,7 @@ change_cygdrive_prefix (const char *new_prefix, int flags)
flags |= MOUNT_AUTO; flags |= MOUNT_AUTO;
if (mount (NULL, new_prefix, flags)) if (mount (NULL, new_prefix, flags))
{ error (new_prefix);
perror ("mount failed");
exit (1);
}
exit (0); exit (0);
} }

View File

@ -13,6 +13,7 @@ details. */
#include <sys/mount.h> #include <sys/mount.h>
#include <mntent.h> #include <mntent.h>
#include <stdlib.h> #include <stdlib.h>
#include <errno.h>
static void remove_all_mounts (); static void remove_all_mounts ();
static void remove_all_automounts (); static void remove_all_automounts ();
@ -34,6 +35,13 @@ usage (void)
exit (1); exit (1);
} }
static void
error (char *path)
{
fprintf (stderr, "%s: %s: %s\n", progname, path, strerror (errno));
exit (1);
}
int int
main (int argc, char **argv) main (int argc, char **argv)
{ {
@ -81,10 +89,7 @@ main (int argc, char **argv)
usage (); usage ();
if (cygwin_umount (argv[i], flags) != 0) if (cygwin_umount (argv[i], flags) != 0)
{ error (argv[i]);
perror ("umount");
exit (1);
}
return 0; return 0;
} }
@ -109,14 +114,18 @@ remove_all_automounts ()
/* Remove the mount if it's an automount. */ /* Remove the mount if it's an automount. */
if (strcmp (p->mnt_type, "user,auto") == 0) 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. */ /* We've modified the table so we need to start over. */
endmntent (m); endmntent (m);
m = setmntent ("/-not-used-", "r"); m = setmntent ("/-not-used-", "r");
} }
else if (strcmp (p->mnt_type, "system,auto") == 0) 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. */ /* We've modified the table so we need to start over. */
endmntent (m); endmntent (m);
m = setmntent ("/-not-used-", "r"); m = setmntent ("/-not-used-", "r");
@ -132,14 +141,14 @@ remove_all_user_mounts ()
{ {
FILE *m = setmntent ("/-not-used-", "r"); FILE *m = setmntent ("/-not-used-", "r");
struct mntent *p; struct mntent *p;
int err;
while ((p = getmntent (m)) != NULL) while ((p = getmntent (m)) != NULL)
{ {
/* Remove the mount if it's a user mount. */ /* Remove the mount if it's a user mount. */
if (strncmp (p->mnt_type, "user", 4) == 0) 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. */ /* We've modified the table so we need to start over. */
endmntent (m); endmntent (m);
@ -162,7 +171,8 @@ remove_all_system_mounts ()
/* Remove the mount if it's a system mount. */ /* Remove the mount if it's a system mount. */
if (strncmp (p->mnt_type, "system", 6) == 0) 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. */ /* We've modified the table so we need to start over. */
endmntent (m); endmntent (m);