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:
authorChristopher Faylor <me@cgf.cx>2000-07-29 02:34:24 +0400
committerChristopher Faylor <me@cgf.cx>2000-07-29 02:34:24 +0400
commit959e1bac1366264d836d298589d5ea8d24bb675f (patch)
tree9050fa860ce9e906f8a43ec90527f35e2a1554f5
parent637f5ce0fecddfb14d8f0b6a12d791fac469ad84 (diff)
* utils/mount.cc (main): Add --show-cygdrive-prefixes option.
(show_cygdrive_prefixes): New function. * utils/umount.cc (main): Add --remove-cygdrive-prefix option. (error): Change signature from 'char *' to 'const char *'. (remove_cygdrive_prefix): New function.
-rw-r--r--winsup/utils/ChangeLog8
-rw-r--r--winsup/utils/mount.cc31
-rw-r--r--winsup/utils/umount.cc20
3 files changed, 57 insertions, 2 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog
index ae646b843..1d2866b7a 100644
--- a/winsup/utils/ChangeLog
+++ b/winsup/utils/ChangeLog
@@ -1,3 +1,11 @@
+Thu Jul 27 22:54:28 2000 Jason Tishler <jt@dothill.com>
+
+ * utils/mount.cc (main): Add --show-cygdrive-prefixes option.
+ (show_cygdrive_prefixes): New function.
+ * utils/umount.cc (main): Add --remove_cygdrive_prefix option.
+ (error): Change signature from 'char *' to 'const char *'.
+ (remove_cygdrive_prefix): New function.
+
Thu Jul 13 22:24:00 2000 Corinna Vinschen <corinna@vinschen.de>
* mount.cc (mount_already_exists): Slightly rearrange.
diff --git a/winsup/utils/mount.cc b/winsup/utils/mount.cc
index d7f657c9c..2d1125f91 100644
--- a/winsup/utils/mount.cc
+++ b/winsup/utils/mount.cc
@@ -22,6 +22,7 @@ details. */
#include <errno.h>
static void show_mounts (void);
+static void show_cygdrive_prefixes (void);
static void change_cygdrive_prefix (const char *new_prefix, int flags);
static int mount_already_exists (const char *posix_path, int flags);
@@ -96,6 +97,8 @@ usage (void)
[-bs] --change-cygdrive-prefix <posixpath>
change the cygdrive path prefix to <posixpath>
+--show-cygdrive-prefixes
+ show user and/or system cygdrive path prefixes
--import-old-mounts
copy old registry mount table mounts into the current mount areas
", progname);
@@ -136,6 +139,13 @@ main (int argc, const char **argv)
cygwin_internal (CW_READ_V1_MOUNT_TABLES);
exit (0);
}
+ else if (strcmp (argv[i], "--show-cygdrive-prefixes") == 0)
+ {
+ if ((i + 1) != argc)
+ usage ();
+
+ show_cygdrive_prefixes ();
+ }
else if (strcmp (argv[i], "-b") == 0)
flags |= MOUNT_BINARY;
else if (strcmp (argv[i], "-t") == 0)
@@ -252,3 +262,24 @@ change_cygdrive_prefix (const char *new_prefix, int flags)
exit (0);
}
+
+/* show_cygdrive_prefixes: Show the user and/or cygdrive path prefixes */
+static void
+show_cygdrive_prefixes ()
+{
+ /* Get the Cygdrive user and system path prefixes */
+ char user[MAX_PATH];
+ char system[MAX_PATH];
+ cygwin_internal (CW_GET_CYGDRIVE_PREFIXES, user, system);
+
+ /* Display the user and system cygdrive path prefixes, if necessary
+ (ie, not empty) */
+ const char *format = "%-18s %-11s\n";
+ printf (format, "Prefix", "Type");
+ if (strlen (user) > 0)
+ printf (format, user, "user");
+ if (strlen (system) > 0)
+ printf (format, system, "system");
+
+ exit (0);
+}
diff --git a/winsup/utils/umount.cc b/winsup/utils/umount.cc
index 7623c5f97..d79aaca33 100644
--- a/winsup/utils/umount.cc
+++ b/winsup/utils/umount.cc
@@ -19,6 +19,7 @@ static void remove_all_mounts ();
static void remove_all_automounts ();
static void remove_all_user_mounts ();
static void remove_all_system_mounts ();
+static void remove_cygdrive_prefix (int flags);
static const char *progname;
@@ -31,12 +32,13 @@ usage (void)
fprintf (stderr, "--remove-all-mounts = remove all mounts\n");
fprintf (stderr, "--remove-auto-mounts = remove all automatically mounted mounts\n");
fprintf (stderr, "--remove-user-mounts = remove all mounts in the current user mount registry area, including auto mounts\n");
- fprintf (stderr, "--remove-system-mounts = Remove all mounts in the system-wide mount registry area\n");
+ fprintf (stderr, "--remove-system-mounts = remove all mounts in the system-wide mount registry area\n");
+ fprintf (stderr, "[-s] --remove-cygdrive-prefix = remove cygdrive path prefix\n");
exit (1);
}
static void
-error (char *path)
+error (const char *path)
{
fprintf (stderr, "%s: %s: %s\n", progname, path, strerror (errno));
exit (1);
@@ -81,6 +83,11 @@ main (int argc, char **argv)
remove_all_automounts ();
exit (0);
}
+ else if (strcmp (argv[i], "--remove-cygdrive-prefix") == 0)
+ {
+ remove_cygdrive_prefix (flags);
+ exit (0);
+ }
else
usage ();
}
@@ -182,3 +189,12 @@ remove_all_system_mounts ()
endmntent (m);
}
+
+/* remove_cygdrive_prefix: Remove cygdrive user or system path prefix. */
+static void
+remove_cygdrive_prefix (int flags)
+{
+ int res = cygwin_umount(NULL, flags | MOUNT_AUTO);
+ if (res)
+ error ("remove_cygdrive_prefix");
+}