* 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>
* cygpath.cc: Throughout, free obsolete path buffers.

View File

@ -1,7 +1,7 @@
/* mount.cc
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.
@ -150,7 +150,25 @@ do_mount_from_fstab (const char *where)
is NULL, all entries match. */
bool exists = false;
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;
/* Compare with existing mount table. If the entry doesn't exist,
@ -167,6 +185,7 @@ do_mount_from_fstab (const char *where)
if (where)
break;
}
}
if (!exists && where)
fprintf (stderr,
"%s: can't find %s in /etc/fstab or in /etc/fstab.d/$USER\n",