From 5c4fff2ef1406c5533f5c388ccb3670881c08d40 Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Wed, 23 Jul 2008 22:55:00 +0000 Subject: [PATCH] Tracker and DriveSetup now attempt to clean up the mount point after successfully unmounting the volume. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26593 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/drivesetup/MainWindow.cpp | 3 +++ src/kits/tracker/AutoMounter.cpp | 22 +++++++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/apps/drivesetup/MainWindow.cpp b/src/apps/drivesetup/MainWindow.cpp index a6478f08a2..0761f6e76f 100644 --- a/src/apps/drivesetup/MainWindow.cpp +++ b/src/apps/drivesetup/MainWindow.cpp @@ -626,11 +626,14 @@ MainWindow::_Unmount(BDiskDevice* disk, partition_id selectedPartition) } if (partition->IsMounted()) { + BPath path; + partition->GetMountPoint(&path); status_t ret = partition->Unmount(); if (ret < B_OK) { _DisplayPartitionError("Could not unmount partition %s.", partition, ret); } else { + rmdir(path.Path()); // successful unmount, adapt to the changes _ScanDrives(); } diff --git a/src/kits/tracker/AutoMounter.cpp b/src/kits/tracker/AutoMounter.cpp index 460996b6c3..9b705f0003 100644 --- a/src/kits/tracker/AutoMounter.cpp +++ b/src/kits/tracker/AutoMounter.cpp @@ -232,18 +232,22 @@ AutoMounter::_UnmountAndEjectVolume(BMessage *message) BDiskDevice device; if (roster.GetPartitionWithID(id, &device, &partition) != B_OK) return; + BPath path; + if (partition->GetMountPoint(&path) == B_OK) + { + status_t status = partition->Unmount(); + if (status < B_OK) { + if (!_ForceUnmount(partition->ContentName(), status)) + return; - status_t status = partition->Unmount(); - if (status < B_OK) { - if (!_ForceUnmount(partition->ContentName(), status)) - return; + status = partition->Unmount(B_FORCE_UNMOUNT); + } - status = partition->Unmount(B_FORCE_UNMOUNT); + if (status < B_OK) + _ReportUnmountError(partition->ContentName(), status); + + rmdir(path.Path()); } - - if (status < B_OK) - _ReportUnmountError(partition->ContentName(), status); - return; }