* mount.cc (do_mount_from_fstab): Allow to change cygdrive prefix, too.

This commit is contained in:
Corinna Vinschen 2010-01-11 12:13:55 +00:00
parent 2b77087a48
commit f380ca5803
2 changed files with 38 additions and 15 deletions

View File

@ -1,3 +1,7 @@
2010-01-11 Corinna Vinschen <corinna@vinschen.de>
* mount.cc (do_mount_from_fstab): Allow to change cygdrive prefix, too.
2010-01-07 Corinna Vinschen <corinna@vinschen.de> 2010-01-07 Corinna Vinschen <corinna@vinschen.de>
* cygpath.cc: Throughout, free obsolete path buffers. * cygpath.cc: Throughout, free obsolete path buffers.

View File

@ -1,7 +1,7 @@
/* mount.cc /* mount.cc
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005, Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005,
2008, 2009 Red Hat, Inc. 2008, 2009, 2010 Red Hat, Inc.
This file is part of Cygwin. This file is part of Cygwin.
@ -150,7 +150,25 @@ do_mount_from_fstab (const char *where)
is NULL, all entries match. */ is NULL, all entries match. */
bool exists = false; bool exists = false;
for (mnt_t *m = mount_table; m - mount_table < max_mount_entry; ++m) for (mnt_t *m = mount_table; m - mount_table < max_mount_entry; ++m)
if (!(m->flags & MOUNT_CYGDRIVE) && (!where || !strcmp (where, m->posix))) if (!where || !strcmp (where, m->posix))
{
if (m->flags & MOUNT_CYGDRIVE)
{
/* Get the cygdrive info */
char user[MAX_PATH];
char system[MAX_PATH];
char user_flags[MAX_PATH];
char system_flags[MAX_PATH];
exists = true;
cygwin_internal (CW_GET_CYGDRIVE_INFO, user, system, user_flags,
system_flags);
if ((*user && strcmp (user, m->posix) != 0)
|| (*system && strcmp (system, m->posix) != 0))
if (mount (NULL, m->posix, m->flags))
error (m->posix);
}
else
{ {
exists = true; exists = true;
/* Compare with existing mount table. If the entry doesn't exist, /* Compare with existing mount table. If the entry doesn't exist,
@ -167,6 +185,7 @@ do_mount_from_fstab (const char *where)
if (where) if (where)
break; break;
} }
}
if (!exists && where) if (!exists && where)
fprintf (stderr, fprintf (stderr,
"%s: can't find %s in /etc/fstab or in /etc/fstab.d/$USER\n", "%s: can't find %s in /etc/fstab or in /etc/fstab.d/$USER\n",