diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2014-03-26 19:21:20 +0000 |
---|---|---|
committer | <> | 2014-05-08 15:03:54 +0000 |
commit | fb123f93f9f5ce42c8e5785d2f8e0edaf951740e (patch) | |
tree | c2103d76aec5f1f10892cd1d3a38e24f665ae5db /src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp | |
parent | 58ed4748338f9466599adfc8a9171280ed99e23f (diff) | |
download | VirtualBox-master.tar.gz |
Imported from /home/lorry/working-area/delta_VirtualBox/VirtualBox-4.3.10.tar.bz2.HEADVirtualBox-4.3.10master
Diffstat (limited to 'src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp')
-rw-r--r-- | src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp | 36 |
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', }; |