From 5226491c720a51b95d1246c9abc10df1344b016b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Thu, 19 Jan 2006 18:15:01 +0000 Subject: [PATCH] basic copy git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16008 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/installer/CopyEngine.cpp | 38 ++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/src/apps/installer/CopyEngine.cpp b/src/apps/installer/CopyEngine.cpp index d6ab6c1caa..e41fca6f21 100644 --- a/src/apps/installer/CopyEngine.cpp +++ b/src/apps/installer/CopyEngine.cpp @@ -77,21 +77,32 @@ CopyEngine::LaunchFinishScript(BPath &path) void CopyEngine::Start(BMenu *srcMenu, BMenu *targetMenu) { - PartitionMenuItem *item = (PartitionMenuItem *)targetMenu->FindMarked(); - if (!item) + PartitionMenuItem *targetItem = (PartitionMenuItem *)targetMenu->FindMarked(); + PartitionMenuItem *srcItem = (PartitionMenuItem *)srcMenu->FindMarked(); + if (!srcItem || !targetItem) return; - BPath directory; + BPath targetDirectory; BDiskDevice device; BPartition *partition; - if (fDDRoster.GetPartitionWithID(item->ID(), &device, &partition) == B_OK) { - if (partition->GetMountPoint(&directory)!=B_OK) + if (fDDRoster.GetPartitionWithID(targetItem->ID(), &device, &partition) == B_OK) { + if (partition->GetMountPoint(&targetDirectory)!=B_OK) return; - } else if (fDDRoster.GetDeviceWithID(item->ID(), &device) == B_OK) { - if (device.GetMountPoint(&directory)!=B_OK) + } else if (fDDRoster.GetDeviceWithID(targetItem->ID(), &device) == B_OK) { + if (device.GetMountPoint(&targetDirectory)!=B_OK) return; } else return; // shouldn't happen + + BPath srcDirectory; + if (fDDRoster.GetPartitionWithID(srcItem->ID(), &device, &partition) == B_OK) { + if (partition->GetMountPoint(&srcDirectory)!=B_OK) + return; + } else if (fDDRoster.GetDeviceWithID(srcItem->ID(), &device) == B_OK) { + if (device.GetMountPoint(&srcDirectory)!=B_OK) + return; + } else + return; // shouldn't happen // check not installing on boot volume BVolume bootVolume; @@ -102,7 +113,7 @@ CopyEngine::Start(BMenu *srcMenu, BMenu *targetMenu) bootVolume.GetRootDirectory(&bootDir); bootDir.GetEntry(&bootEntry); bootEntry.GetPath(&bootPath); - if (strncmp(bootPath.Path(), directory.Path(), strlen(bootPath.Path())) == 0) { + if (strncmp(bootPath.Path(), targetDirectory.Path(), strlen(bootPath.Path())) == 0) { } @@ -110,18 +121,19 @@ CopyEngine::Start(BMenu *srcMenu, BMenu *targetMenu) // ask if init ou mount as is - LaunchInitScript(directory); + LaunchInitScript(targetDirectory); // copy source volume - BDirectory targetDir(directory.Path()); - bootPath.Append("/beos"); - BEntry srcEntry(bootPath.Path()); + BDirectory targetDir(targetDirectory.Path()); + srcDirectory.Append("beos"); + BEntry srcEntry(srcDirectory.Path()); Undo undo; + printf("Copying folder '%s' to '%s'.\n", srcDirectory.Path(), targetDirectory.Path()); FSCopyFolder(&srcEntry, &targetDir, fControl, NULL, false, undo); // copy selected packages - LaunchFinishScript(directory); + LaunchFinishScript(targetDirectory); }