From 36ca5d166cbca87db4051909849f390be7a81f4d Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Fri, 23 Feb 2007 02:10:51 +0000 Subject: [PATCH] Squashed a few minor TODOs. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20205 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../r5/src/test/ramfs/NameIndex.cpp | 1 - .../userlandfs/r5/src/test/ramfs/Query.cpp | 22 +++++++++++++------ .../r5/src/test/ramfs/kernel_interface.cpp | 18 +++++++-------- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/NameIndex.cpp b/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/NameIndex.cpp index 372db75f86..72b12969be 100644 --- a/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/NameIndex.cpp +++ b/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/NameIndex.cpp @@ -244,7 +244,6 @@ NameIndexEntryIterator::GetCurrent(uint8 *buffer, size_t *keyLength) Entry *entry = GetCurrent(); if (entry) { strncpy((char*)buffer, entry->GetName(), kMaxIndexKeyLength); -// TODO: + 1 ? *keyLength = strlen(entry->GetName()); } return entry; diff --git a/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Query.cpp b/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Query.cpp index a1cea15070..72c6881acc 100644 --- a/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Query.cpp +++ b/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/Query.cpp @@ -67,8 +67,9 @@ IndexWrapper::Type() const off_t IndexWrapper::GetSize() const { -// TODO: That's not exactly what should be returned. - return (fIndex ? fIndex->CountEntries() + 1 : 0); + // Compute a fake "index size" based on the number of entries + // (1024 + 16 * entry count), so we don't need to adjust the code using it. + return 1024LL + (fIndex ? fIndex->CountEntries() : 0) * 16LL; } // KeySize @@ -1126,7 +1127,7 @@ Equation::PrepareQuery(Volume */*volume*/, IndexWrapper &index, IndexIterator ** status_t Equation::GetNextMatching(Volume *volume, IndexIterator *iterator, - struct dirent *dirent, size_t /*bufferSize*/) + struct dirent *dirent, size_t bufferSize) { while (true) { union value indexValue; @@ -1195,15 +1196,22 @@ Equation::GetNextMatching(Volume *volume, IndexIterator *iterator, } if (status == MATCH_OK) { + size_t nameLen = strlen(entry->GetName()); + + // check, whether the entry fits into the buffer, + // and fill it in + size_t length = (dirent->d_name + nameLen + 1) - (char*)dirent; + if (length > bufferSize) + RETURN_ERROR(B_BUFFER_OVERFLOW); + dirent->d_dev = volume->GetID(); dirent->d_ino = entry->GetNode()->GetID(); dirent->d_pdev = volume->GetID(); dirent->d_pino = entry->GetParent()->GetID(); -// TODO: Check the buffer size. - strncpy(dirent->d_name, entry->GetName(), B_FILE_NAME_LENGTH); - dirent->d_name[B_FILE_NAME_LENGTH - 1] = '\0'; - dirent->d_reclen = sizeof(struct dirent) + strlen(dirent->d_name); + memcpy(dirent->d_name, entry->GetName(), nameLen); + dirent->d_name[nameLen] = '\0'; + dirent->d_reclen = length; } if (status == MATCH_OK) diff --git a/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/kernel_interface.cpp b/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/kernel_interface.cpp index 031be352e6..52cf867ab7 100644 --- a/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/kernel_interface.cpp +++ b/src/tests/add-ons/kernel/file_systems/userlandfs/r5/src/test/ramfs/kernel_interface.cpp @@ -1324,8 +1324,7 @@ PRINT((" entry: `%s'\n", name)); #endif *count = 1; } else { - // TODO: Check, if that's the correct behavior. - SET_ERROR(error, B_BAD_VALUE); + SET_ERROR(error, B_BUFFER_OVERFLOW); } } else *count = 0; @@ -1616,8 +1615,7 @@ ramfs_read_attrdir(void *ns, void */*_node*/, void *cookie, long *count, #endif *count = 1; } else { - // TODO: Check, if that's the correct behavior. - SET_ERROR(error, B_BAD_VALUE); + SET_ERROR(error, B_BUFFER_OVERFLOW); } } else *count = 0; @@ -1858,8 +1856,7 @@ ramfs_read_indexdir(void *ns, void *_cookie, long *count, #endif *count = 1; } else { - // TODO: Check, if that's the correct behavior. - SET_ERROR(error, B_BAD_VALUE); + SET_ERROR(error, B_BUFFER_OVERFLOW); } } else *count = 0; @@ -1951,9 +1948,12 @@ ramfs_stat_index(void *ns, const char *name, struct index_info *indexInfo) // find the index if (Index *index = indexDir->FindIndex(name)) { indexInfo->type = index->GetType(); - indexInfo->size = 0; // TODO - indexInfo->modification_time = 0; // TODO - indexInfo->creation_time = 0; // TODO + if (index->HasFixedKeyLength()) + indexInfo->size = index->GetKeyLength(); + else + indexInfo->size = kMaxIndexKeyLength; + indexInfo->modification_time = 0; // TODO: index times + indexInfo->creation_time = 0; // ... indexInfo->uid = 0; // root owns the indices indexInfo->gid = 0; // } else