Fixed a bug that would have considered /boot/trashy_file be in /boot/trash.

Spotted by Rene, thanks!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39805 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Philippe Houdoin 2010-12-10 15:26:27 +00:00
parent 1e4538de6f
commit 784263e28a
2 changed files with 16 additions and 10 deletions

View File

@ -131,13 +131,16 @@ bool DeskbarView::_EntryInTrash(const entry_ref* entry)
BPath trashPath; BPath trashPath;
BPath entryPath(entry); BPath entryPath(entry);
BVolume volume(entry->device); BVolume volume(entry->device);
if (volume.InitCheck() == B_OK) { if (volume.InitCheck() == B_OK
find_directory(B_TRASH_DIRECTORY, &trashPath, false, &volume); && find_directory(B_TRASH_DIRECTORY, &trashPath, false,
if (strncmp(entryPath.Path(), trashPath.Path(), &volume) == B_OK) {
strlen(trashPath.Path())) == 0) char path[PATH_MAX];
strncpy(path, trashPath.Path(), sizeof(path));
strncat(path, "/", sizeof(path));
if (strncmp(entryPath.Path(), path, strlen(path)) == 0)
return true; return true;
} }
return false; return false;
} }
@ -252,7 +255,7 @@ DeskbarView::MessageReceived(BMessage* message)
int32 what; int32 what;
dev_t device; dev_t device;
ino_t directory; ino_t directory;
const char *name; const char *name;
entry_ref ref; entry_ref ref;
message->FindInt32("opcode", &what); message->FindInt32("opcode", &what);
message->FindInt32("device", &device); message->FindInt32("device", &device);

View File

@ -638,10 +638,13 @@ MailDaemonApp::_IsEntryInTrash(BEntry& entry)
BPath trashPath; BPath trashPath;
BPath entryPath(&entry); BPath entryPath(&entry);
BVolume volume(ref.device); BVolume volume(ref.device);
if (volume.InitCheck() == B_OK) { if (volume.InitCheck() == B_OK
find_directory(B_TRASH_DIRECTORY, &trashPath, false, &volume); && find_directory(B_TRASH_DIRECTORY, &trashPath,
if (strncmp(entryPath.Path(), trashPath.Path(), false, &volume) == B_OK) {
strlen(trashPath.Path())) == 0) char path[PATH_MAX];
strncpy(path, trashPath.Path(), sizeof(path));
strncat(path, "/", sizeof(path));
if (strncmp(entryPath.Path(), path, strlen(path)) == 0)
return true; return true;
} }