* mount.cc (longopts): Add mount-commands to options list.
(usage): Add mount-commands option. (mount_commands): New function. Write commands to recreate current mounts.
This commit is contained in:
parent
7170a41bc8
commit
bee722a5e7
@ -1,3 +1,10 @@
|
||||
2001-09-03 Michael A Chase <mchase@ix.netcom.com>
|
||||
|
||||
* mount.cc (longopts): Add mount-commands to options list.
|
||||
(usage): Add mount-commands option.
|
||||
(mount_commands): New function. Write commands to recreate current
|
||||
mounts.
|
||||
|
||||
Sat Sep 1 15:58:11 2001 Christopher Faylor <cgf@cygnus.com>
|
||||
|
||||
* mount.cc (main): Eliminate excess arguments in printf.
|
||||
|
@ -22,6 +22,7 @@ details. */
|
||||
#endif
|
||||
#include <errno.h>
|
||||
|
||||
static void mount_commands (void);
|
||||
static void show_mounts (void);
|
||||
static void show_cygdrive_info (void);
|
||||
static void change_cygdrive_prefix (const char *new_prefix, int flags);
|
||||
@ -98,10 +99,11 @@ struct option longopts[] =
|
||||
{"cygwin-executable", no_argument, NULL, 'X'},
|
||||
{"show-cygdrive-prefix", no_argument, NULL, 'p'},
|
||||
{"import-old-mounts", no_argument, NULL, 'i'},
|
||||
{"mount-commands", no_argument, NULL, 'm'},
|
||||
{NULL, 0, NULL, 0}
|
||||
};
|
||||
|
||||
char opts[] = "hbfstuxXpic";
|
||||
char opts[] = "hbfstuxXpicm";
|
||||
|
||||
static void
|
||||
usage (void)
|
||||
@ -121,6 +123,8 @@ usage (void)
|
||||
-x, --executable treat all files under mount point as executables\n\
|
||||
-X, --cygwin-executable treat all files under mount point as cygwin\n\
|
||||
executables\n\
|
||||
-m, --mount-commands write mount commands to replace user and\n\
|
||||
system mount points and cygdrive prefixes\n\
|
||||
", progname);
|
||||
exit (1);
|
||||
}
|
||||
@ -135,7 +139,8 @@ main (int argc, char **argv)
|
||||
nada,
|
||||
saw_change_cygdrive_prefix,
|
||||
saw_import_old_mounts,
|
||||
saw_show_cygdrive_prefix
|
||||
saw_show_cygdrive_prefix,
|
||||
saw_mount_commands
|
||||
} do_what = nada;
|
||||
|
||||
progname = argv[0];
|
||||
@ -188,6 +193,12 @@ main (int argc, char **argv)
|
||||
case 'x':
|
||||
flags |= MOUNT_EXEC;
|
||||
break;
|
||||
case 'm':
|
||||
if (do_what == nada)
|
||||
do_what = saw_mount_commands;
|
||||
else
|
||||
usage ();
|
||||
break;
|
||||
default:
|
||||
usage ();
|
||||
}
|
||||
@ -211,6 +222,11 @@ main (int argc, char **argv)
|
||||
usage ();
|
||||
show_cygdrive_info ();
|
||||
break;
|
||||
case saw_mount_commands:
|
||||
if (optind <= argc)
|
||||
usage ();
|
||||
mount_commands ();
|
||||
break;
|
||||
default:
|
||||
if (optind != (argc - 1))
|
||||
{
|
||||
@ -233,6 +249,62 @@ main (int argc, char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
mount_commands (void)
|
||||
{
|
||||
FILE *m = setmntent ("/-not-used-", "r");
|
||||
struct mntent *p;
|
||||
char *c;
|
||||
const char *format_mnt = "mount%s \"%s\" \"%s\"\n";
|
||||
const char *format_cyg = "mount%s --change-cygdrive-prefix \"%s\"\n";
|
||||
char opts[MAX_PATH];
|
||||
char user[MAX_PATH];
|
||||
char system[MAX_PATH];
|
||||
char user_flags[MAX_PATH];
|
||||
char system_flags[MAX_PATH];
|
||||
|
||||
// write mount commands for user and system mount points
|
||||
while ((p = getmntent (m)) != NULL) {
|
||||
strcpy(opts, " -f");
|
||||
if (p->mnt_type[0] == 'u')
|
||||
strcat (opts, " -u");
|
||||
else if (p->mnt_type[0] == 's')
|
||||
strcat (opts, " -s");
|
||||
if (p->mnt_opts[0] == 'b')
|
||||
strcat (opts, " -b");
|
||||
else if (p->mnt_opts[0] == 't')
|
||||
strcat (opts, " -t");
|
||||
if (strstr (p->mnt_opts, ",exec"))
|
||||
strcat (opts, " -x");
|
||||
while ((c = strchr (p->mnt_fsname, '\\')) != NULL)
|
||||
*c = '/';
|
||||
printf (format_mnt, opts, p->mnt_fsname, p->mnt_dir);
|
||||
}
|
||||
endmntent (m);
|
||||
|
||||
// write mount commands for cygdrive prefixes
|
||||
cygwin_internal (CW_GET_CYGDRIVE_INFO, user, system, user_flags,
|
||||
system_flags);
|
||||
if (strlen (user) > 0) {
|
||||
strcpy (opts, " ");
|
||||
if (user_flags[0] == 'b')
|
||||
strcat (opts, " -b");
|
||||
else if (user_flags[0] == 't')
|
||||
strcat (opts, " -t");
|
||||
printf (format_cyg, opts, user);
|
||||
}
|
||||
if (strlen (system) > 0) {
|
||||
strcpy (opts, " -s");
|
||||
if (system_flags[0] == 'b')
|
||||
strcat (opts, " -b");
|
||||
else if (system_flags[0] == 't')
|
||||
strcat (opts, " -t");
|
||||
printf (format_cyg, opts, system);
|
||||
}
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
static void
|
||||
show_mounts (void)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user