summaryrefslogtreecommitdiff
path: root/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp')
-rw-r--r--src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp36
1 files changed, 23 insertions, 13 deletions
diff --git a/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp b/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp
index 06d172e4..190418b4 100644
--- a/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp
+++ b/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp
@@ -4,7 +4,7 @@
*/
/*
- * Copyright (C) 2010-2011 Oracle Corporation
+ * Copyright (C) 2010-2012 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
@@ -243,22 +243,32 @@ static int VBoxServiceAutoMountSharedFolder(const char *pszShareName, const char
int rc = VINF_SUCCESS;
char szAlreadyMountedTo[RTPATH_MAX];
- /* If a Shared Folder already is mounted but not to our desired mount point,
- * do an unmount first! */
- if ( VBoxServiceAutoMountShareIsMounted(pszShareName, szAlreadyMountedTo, sizeof(szAlreadyMountedTo))
- && RTStrICmp(pszMountPoint, szAlreadyMountedTo))
+ bool fSkip = false;
+
+ /* Already mounted? */
+ if (VBoxServiceAutoMountShareIsMounted(pszShareName, szAlreadyMountedTo, sizeof(szAlreadyMountedTo)))
{
- VBoxServiceVerbose(3, "VBoxServiceAutoMountWorker: Shared folder \"%s\" already mounted to \"%s\", unmounting ...\n",
- pszShareName, szAlreadyMountedTo);
- rc = VBoxServiceAutoMountUnmount(szAlreadyMountedTo);
- if (RT_FAILURE(rc))
- VBoxServiceError("VBoxServiceAutoMountWorker: Failed to unmount \"%s\", %s (%d)!\n",
- szAlreadyMountedTo, strerror(errno), errno);
+ fSkip = true;
+ /* Do if it not mounted to our desired mount point */
+ if (RTStrICmp(pszMountPoint, szAlreadyMountedTo))
+ {
+ VBoxServiceVerbose(3, "VBoxServiceAutoMountWorker: Shared folder \"%s\" already mounted to \"%s\", unmounting ...\n",
+ pszShareName, szAlreadyMountedTo);
+ rc = VBoxServiceAutoMountUnmount(szAlreadyMountedTo);
+ if (RT_FAILURE(rc))
+ VBoxServiceError("VBoxServiceAutoMountWorker: Failed to unmount \"%s\", %s (%d)!\n",
+ szAlreadyMountedTo, strerror(errno), errno);
+ else
+ fSkip = false;
+ }
+ if (fSkip)
+ VBoxServiceVerbose(3, "VBoxServiceAutoMountWorker: Shared folder \"%s\" already mounted to \"%s\", skipping\n",
+ pszShareName, szAlreadyMountedTo);
}
- if (RT_SUCCESS(rc))
+ if (!fSkip && RT_SUCCESS(rc))
rc = VBoxServiceAutoMountPrepareMountPoint(pszMountPoint, pszShareName, pOpts);
- if (RT_SUCCESS(rc))
+ if (!fSkip && RT_SUCCESS(rc))
{
#ifdef RT_OS_SOLARIS
char achOptBuf[MAX_MNTOPT_STR] = { '\0', };