diff --git a/headers/private/file_systems/QueryParser.h b/headers/private/file_systems/QueryParser.h index b476efbbdf..4208eb1785 100644 --- a/headers/private/file_systems/QueryParser.h +++ b/headers/private/file_systems/QueryParser.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2001-2014, Axel Dörfler, axeld@pinc-software.de. * Copyright 2010, Clemens Zeidler * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de. * This file may be used under the terms of the MIT License. @@ -27,24 +27,30 @@ // The API is not fully available, just the Query and the Expression class // are. +#ifdef FS_SHELL +# include -#include -#include -#include +# include "fssh_api_wrapper.h" +# include "fssh_auto_deleter.h" +#else +# include +# include +# include -#include -#include +# include +# include -#include -#include -#include +# include +# include +# include -#include -#include +# include +# include -#include +# include -#include +# include +#endif // !FS_SHELL #include diff --git a/headers/private/file_systems/QueryParserUtils.h b/headers/private/file_systems/QueryParserUtils.h index a12c7d4b9f..171cbc42cd 100644 --- a/headers/private/file_systems/QueryParserUtils.h +++ b/headers/private/file_systems/QueryParserUtils.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2009, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2001-2014, Axel Dörfler, axeld@pinc-software.de. * Copyright 2010, Clemens Zeidler * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de. * This file may be used under the terms of the MIT License. @@ -8,9 +8,17 @@ #define _FILE_SYSTEMS_QUERY_PARSER_UTILS_H -#include +#ifdef FS_SHELL +# include + +# include "fssh_api_wrapper.h" +# include "fssh_auto_deleter.h" +#else +# include + +# include +#endif // !FS_SHELL -#include namespace QueryParser { diff --git a/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp b/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp index 639c7daa22..bb281d47fc 100644 --- a/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp +++ b/src/add-ons/kernel/file_systems/bfs/BPlusTree.cpp @@ -10,19 +10,22 @@ //! B+Tree implementation -#include "Debug.h" #include "BPlusTree.h" + +#include + +#include "Debug.h" #include "Utility.h" #if !_BOOT_MODE -#include "Inode.h" +# include "Inode.h" #else -#include "Stream.h" +# include "Stream.h" // BFS::Stream from the bootloader has the same API as Inode. -#define Inode BFS::Stream +# define Inode BFS::Stream -#define strerror(x) "error message unavailable" +# define strerror(x) "error message unavailable" namespace BFS { #endif @@ -1032,7 +1035,7 @@ BPlusTree::_CompareKeys(const void* key1, int keyLength1, const void* key2, type = B_DOUBLE_TYPE; break; } - return compareKeys(type, key1, keyLength1, key2, keyLength2); + return QueryParser::compareKeys(type, key1, keyLength1, key2, keyLength2); } @@ -3122,97 +3125,6 @@ duplicate_array::Remove(off_t value) } -// #pragma mark - - - -int32 -compareKeys(type_code type, const void* key1, int keyLength1, - const void* key2, int keyLength2) -{ - // if one of the keys is NULL, bail out gracefully - if (key1 == NULL || key2 == NULL) { - // even if it's most probably a bug in the calling code, we try to - // give a meaningful result - if (key1 == NULL && key2 != NULL) - return 1; - if (key2 == NULL && key1 != NULL) - return -1; - - return 0; - } - - switch (type) { - case B_STRING_TYPE: - { - int result = memcmp(key1, key2, min_c(keyLength1, keyLength2)); - if (result == 0) { - // ignore trailing null bytes - if ((keyLength1 == keyLength2 + 1 - && ((uint8*)key1)[keyLength2] == '\0') - || (keyLength2 == keyLength1 + 1 - && ((uint8*)key2)[keyLength1] == '\0')) - return 0; - - result = keyLength1 - keyLength2; - } - - return result; - } - - case B_SSIZE_T_TYPE: - case B_INT32_TYPE: - return *(int32*)key1 - *(int32*)key2; - - case B_SIZE_T_TYPE: - case B_UINT32_TYPE: - if (*(uint32*)key1 == *(uint32*)key2) - return 0; - if (*(uint32*)key1 > *(uint32*)key2) - return 1; - - return -1; - - case B_OFF_T_TYPE: - case B_INT64_TYPE: - if (*(int64*)key1 == *(int64*)key2) - return 0; - if (*(int64*)key1 > *(int64*)key2) - return 1; - - return -1; - - case B_UINT64_TYPE: - if (*(uint64*)key1 == *(uint64*)key2) - return 0; - if (*(uint64*)key1 > *(uint64*)key2) - return 1; - - return -1; - - case B_FLOAT_TYPE: - { - float result = *(float*)key1 - *(float*)key2; - if (result == 0.0f) - return 0; - - return (result < 0.0f) ? -1 : 1; - } - - case B_DOUBLE_TYPE: - { - double result = *(double*)key1 - *(double*)key2; - if (result == 0.0) - return 0; - - return (result < 0.0) ? -1 : 1; - } - } - - // if the type is unknown, the entries don't match... - return -1; -} - - #if _BOOT_MODE } // namespace BFS #endif diff --git a/src/add-ons/kernel/file_systems/bfs/BPlusTree.h b/src/add-ons/kernel/file_systems/bfs/BPlusTree.h index 95bc7bb9b6..b5ec35c446 100644 --- a/src/add-ons/kernel/file_systems/bfs/BPlusTree.h +++ b/src/add-ons/kernel/file_systems/bfs/BPlusTree.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2012, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2001-2014, Axel Dörfler, axeld@pinc-software.de. * This file may be used under the terms of the MIT License. */ #ifndef B_PLUS_TREE_H @@ -374,10 +374,6 @@ private: // #pragma mark - helper classes/functions -extern int32 compareKeys(type_code type, const void* key1, int keyLength1, - const void* key2, int keyLength2); - - class TreeIterator : public SinglyLinkedListLinkImpl { public: TreeIterator(BPlusTree* tree); diff --git a/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp b/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp index b41d0e4a4b..5361a75698 100644 --- a/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp +++ b/src/add-ons/kernel/file_systems/bfs/BlockAllocator.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2001-2014, Axel Dörfler, axeld@pinc-software.de. * This file may be used under the terms of the MIT License. */ @@ -36,7 +36,7 @@ // be improved a lot. Furthermore, the allocation policies used here should // have some real world tests. -#if BFS_TRACING && !defined(BFS_SHELL) +#if BFS_TRACING && !defined(FS_SHELL) namespace BFSBlockTracing { diff --git a/src/add-ons/kernel/file_systems/bfs/Index.cpp b/src/add-ons/kernel/file_systems/bfs/Index.cpp index abdcb86f60..74bd3a3e9e 100644 --- a/src/add-ons/kernel/file_systems/bfs/Index.cpp +++ b/src/add-ons/kernel/file_systems/bfs/Index.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2010, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2001-2014, Axel Dörfler, axeld@pinc-software.de. * This file may be used under the terms of the MIT License. */ @@ -7,8 +7,11 @@ //! Index access functions -#include "Debug.h" #include "Index.h" + +#include + +#include "Debug.h" #include "Volume.h" #include "Inode.h" #include "BPlusTree.h" @@ -230,8 +233,13 @@ Index::Update(Transaction& transaction, const char* name, int32 type, // If the two keys are identical, don't do anything - only compare if the // type has been set, until we have a real type code, we can't do much // about the comparison here - if (!compareKeys(type, oldKey, oldLength, newKey, newLength)) + if (oldLength == 0) { + if (newLength == 0) + return B_OK; + } else if (newLength != 0 && !QueryParser::compareKeys(type, + oldKey, oldLength, newKey, newLength)) { return B_OK; + } // update all live queries about the change, if they have an index or not fVolume->UpdateLiveQueries(inode, name, type, oldKey, oldLength, diff --git a/src/add-ons/kernel/file_systems/bfs/Inode.cpp b/src/add-ons/kernel/file_systems/bfs/Inode.cpp index a30e0d7902..bbdd06b118 100644 --- a/src/add-ons/kernel/file_systems/bfs/Inode.cpp +++ b/src/add-ons/kernel/file_systems/bfs/Inode.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2001-2014, Axel Dörfler, axeld@pinc-software.de. * This file may be used under the terms of the MIT License. */ @@ -13,7 +13,7 @@ #include "Index.h" -#if BFS_TRACING && !defined(BFS_SHELL) && !defined(_BOOT_MODE) +#if BFS_TRACING && !defined(FS_SHELL) && !defined(_BOOT_MODE) namespace BFSInodeTracing { class Create : public AbstractTraceEntry { diff --git a/src/add-ons/kernel/file_systems/bfs/Jamfile b/src/add-ons/kernel/file_systems/bfs/Jamfile index 5389516ee2..8d78cf7bfd 100644 --- a/src/add-ons/kernel/file_systems/bfs/Jamfile +++ b/src/add-ons/kernel/file_systems/bfs/Jamfile @@ -1,12 +1,5 @@ SubDir HAIKU_TOP src add-ons kernel file_systems bfs ; -# R5 support has been removed! -# -# Have a look in src/tests/add-ons/kernel/file_systems/bfs/r5/ -# for an R5 compatible version. -# In order to make the current BFS version R5 compatible again, -# we would need to port over the Haiku cache API to R5. - # set some additional defines { local defines = @@ -39,12 +32,14 @@ KernelAddon bfs : Inode.cpp Journal.cpp Query.cpp + QueryParserUtils.cpp Volume.cpp kernel_interface.cpp ; -SEARCH on [ FGristFiles - kernel_cpp.cpp - ] = [ FDirName $(HAIKU_TOP) src system kernel util ] ; +SEARCH on [ FGristFiles kernel_cpp.cpp ] + = [ FDirName $(HAIKU_TOP) src system kernel util ] ; +SEARCH on [ FGristFiles QueryParserUtils.cpp ] + += [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems shared ] ; diff --git a/src/add-ons/kernel/file_systems/bfs/Journal.cpp b/src/add-ons/kernel/file_systems/bfs/Journal.cpp index bac5a4342a..077f020f15 100644 --- a/src/add-ons/kernel/file_systems/bfs/Journal.cpp +++ b/src/add-ons/kernel/file_systems/bfs/Journal.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2001-2014, Axel Dörfler, axeld@pinc-software.de. * This file may be used under the terms of the MIT License. */ @@ -86,7 +86,7 @@ private: }; -#if BFS_TRACING && !defined(BFS_SHELL) && !defined(_BOOT_MODE) +#if BFS_TRACING && !defined(FS_SHELL) && !defined(_BOOT_MODE) namespace BFSJournalTracing { class LogEntry : public AbstractTraceEntry { diff --git a/src/add-ons/kernel/file_systems/bfs/Query.cpp b/src/add-ons/kernel/file_systems/bfs/Query.cpp index a5e593af34..6df6a6e1ea 100644 --- a/src/add-ons/kernel/file_systems/bfs/Query.cpp +++ b/src/add-ons/kernel/file_systems/bfs/Query.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2001-2014, Axel Dörfler, axeld@pinc-software.de. * Copyright 2010, Clemens Zeidler * This file may be used under the terms of the MIT License. */ @@ -15,6 +15,7 @@ #include "Query.h" +#include #include #include "BPlusTree.h" @@ -37,6 +38,9 @@ // are. +using namespace QueryParser; + + enum ops { OP_NONE, @@ -54,20 +58,6 @@ enum ops { OP_LESS_THAN_OR_EQUAL, }; -enum match { - NO_MATCH = 0, - MATCH_OK = 1, - - MATCH_BAD_PATTERN = -2, - MATCH_INVALID_CHARACTER -}; - -// return values from isValidPattern() -enum { - PATTERN_INVALID_ESCAPE = -3, - PATTERN_INVALID_RANGE, - PATTERN_INVALID_SET -}; union value { int64 Int64; @@ -211,267 +201,9 @@ private: // #pragma mark - -void -skipWhitespace(char** expr, int32 skip = 0) -{ - char* string = (*expr) + skip; - while (*string == ' ' || *string == '\t') string++; - *expr = string; -} - - -void -skipWhitespaceReverse(char** expr, char* stop) -{ - char* string = *expr; - while (string > stop && (*string == ' ' || *string == '\t')) - string--; - *expr = string; -} - - -// #pragma mark - - - -uint32 -utf8ToUnicode(char** string) -{ - uint8* bytes = (uint8*)*string; - int32 length; - uint8 mask = 0x1f; - - switch (bytes[0] & 0xf0) { - case 0xc0: - case 0xd0: - length = 2; - break; - case 0xe0: - length = 3; - break; - case 0xf0: - mask = 0x0f; - length = 4; - break; - default: - // valid 1-byte character - // and invalid characters - (*string)++; - return bytes[0]; - } - uint32 c = bytes[0] & mask; - int32 i = 1; - for (; i < length && (bytes[i] & 0x80) > 0; i++) - c = (c << 6) | (bytes[i] & 0x3f); - - if (i < length) { - // invalid character - (*string)++; - return (uint32)bytes[0]; - } - *string += length; - return c; -} - - -int32 -getFirstPatternSymbol(char* string) -{ - char c; - - for (int32 index = 0; (c = *string++); index++) { - if (c == '*' || c == '?' || c == '[') - return index; - } - return -1; -} - - -bool -isPattern(char* string) -{ - return getFirstPatternSymbol(string) >= 0 ? true : false; -} - - -status_t -isValidPattern(char* pattern) -{ - while (*pattern) { - switch (*pattern++) { - case '\\': - // the escape character must not be at the end of the pattern - if (!*pattern++) - return PATTERN_INVALID_ESCAPE; - break; - - case '[': - if (pattern[0] == ']' || !pattern[0]) - return PATTERN_INVALID_SET; - - while (*pattern != ']') { - if (*pattern == '\\' && !*++pattern) - return PATTERN_INVALID_ESCAPE; - - if (!*pattern) - return PATTERN_INVALID_SET; - - if (pattern[0] == '-' && pattern[1] == '-') - return PATTERN_INVALID_RANGE; - - pattern++; - } - break; - } - } - return B_OK; -} - - -/*! Matches the string against the given wildcard pattern. - Returns either MATCH_OK, or NO_MATCH when everything went fine, or - values < 0 (see enum at the top of Query.cpp) if an error occurs. -*/ -status_t -matchString(char* pattern, char* string) -{ - while (*pattern) { - // end of string == valid end of pattern? - if (!string[0]) { - while (pattern[0] == '*') - pattern++; - return !pattern[0] ? MATCH_OK : NO_MATCH; - } - - switch (*pattern++) { - case '?': - { - // match exactly one UTF-8 character; we are - // not interested in the result - utf8ToUnicode(&string); - break; - } - - case '*': - { - // compact pattern - while (true) { - if (pattern[0] == '?') { - if (!*++string) - return NO_MATCH; - } else if (pattern[0] != '*') - break; - - pattern++; - } - - // if the pattern is done, we have matched the string - if (!pattern[0]) - return MATCH_OK; - - while(true) { - // we have removed all occurences of '*' and '?' - if (pattern[0] == string[0] - || pattern[0] == '[' - || pattern[0] == '\\') { - status_t status = matchString(pattern, string); - if (status < B_OK || status == MATCH_OK) - return status; - } - - // we could be nice here and just jump to the next - // UTF-8 character - but we wouldn't gain that much - // and it'd be slower (since we're checking for - // equality before entering the recursion) - if (!*++string) - return NO_MATCH; - } - break; - } - - case '[': - { - bool invert = false; - if (pattern[0] == '^' || pattern[0] == '!') { - invert = true; - pattern++; - } - - if (!pattern[0] || pattern[0] == ']') - return MATCH_BAD_PATTERN; - - uint32 c = utf8ToUnicode(&string); - bool matched = false; - - while (pattern[0] != ']') { - if (!pattern[0]) - return MATCH_BAD_PATTERN; - - if (pattern[0] == '\\') - pattern++; - - uint32 first = utf8ToUnicode(&pattern); - - // Does this character match, or is this a range? - if (first == c) { - matched = true; - break; - } else if (pattern[0] == '-' && pattern[1] != ']' - && pattern[1]) { - pattern++; - - if (pattern[0] == '\\') { - pattern++; - if (!pattern[0]) - return MATCH_BAD_PATTERN; - } - uint32 last = utf8ToUnicode(&pattern); - - if (c >= first && c <= last) { - matched = true; - break; - } - } - } - - if (invert) - matched = !matched; - - if (matched) { - while (pattern[0] != ']') { - if (!pattern[0]) - return MATCH_BAD_PATTERN; - pattern++; - } - pattern++; - break; - } - return NO_MATCH; - } - - case '\\': - if (!pattern[0]) - return MATCH_BAD_PATTERN; - // supposed to fall through - default: - if (pattern[-1] != string[0]) - return NO_MATCH; - string++; - break; - } - } - - if (string[0]) - return NO_MATCH; - - return MATCH_OK; -} - - -// #pragma mark - - - Equation::Equation(char** expr) - : Term(OP_EQUATION), + : + Term(OP_EQUATION), fAttribute(NULL), fString(NULL), fType(0), @@ -1143,7 +875,8 @@ Equation::GetNextMatching(Volume* volume, TreeIterator* iterator, Operator::Operator(Term* left, int8 op, Term* right) - : Term(op), + : + Term(op), fLeft(left), fRight(right) { diff --git a/src/add-ons/kernel/file_systems/bfs/bfs_control.h b/src/add-ons/kernel/file_systems/bfs/bfs_control.h index aa3608a163..31388f5b8e 100644 --- a/src/add-ons/kernel/file_systems/bfs/bfs_control.h +++ b/src/add-ons/kernel/file_systems/bfs/bfs_control.h @@ -1,5 +1,5 @@ /* - * Copyright 2001-2012, Axel Dörfler, axeld@pinc-software.de + * Copyright 2001-2014, Axel Dörfler, axeld@pinc-software.de * This file may be used under the terms of the MIT License. */ #ifndef BFS_CONTROL_H @@ -9,7 +9,7 @@ //! additional functionality exported via ioctl() -#ifdef BFS_SHELL +#ifdef FS_SHELL # include "system_dependencies.h" #else # include diff --git a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp index 84a2e54264..c6c0f03b95 100644 --- a/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp +++ b/src/add-ons/kernel/file_systems/bfs/kernel_interface.cpp @@ -1,5 +1,5 @@ /* - * Copyright 2001-2013, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2001-2014, Axel Dörfler, axeld@pinc-software.de. * This file may be used under the terms of the MIT License. */ @@ -18,7 +18,7 @@ #include "bfs_disk_system.h" // TODO: temporary solution as long as there is no public I/O requests API -#ifndef BFS_SHELL +#ifndef FS_SHELL # include # include #endif @@ -487,7 +487,7 @@ bfs_io(fs_volume* _volume, fs_vnode* _node, void* _cookie, io_request* request) Volume* volume = (Volume*)_volume->private_volume; Inode* inode = (Inode*)_node->private_node; -#ifndef BFS_SHELL +#ifndef FS_SHELL if (io_request_is_write(request) && volume->IsReadOnly()) { notify_io_request(request, B_READ_ONLY_DEVICE); return B_READ_ONLY_DEVICE; @@ -495,7 +495,7 @@ bfs_io(fs_volume* _volume, fs_vnode* _node, void* _cookie, io_request* request) #endif if (inode->FileCache() == NULL) { -#ifndef BFS_SHELL +#ifndef FS_SHELL notify_io_request(request, B_BAD_VALUE); #endif RETURN_ERROR(B_BAD_VALUE); @@ -625,7 +625,7 @@ bfs_ioctl(fs_volume* _volume, fs_vnode* _node, void* _cookie, uint32 cmd, Volume* volume = (Volume*)_volume->private_volume; switch (cmd) { -#ifndef BFS_SHELL +#ifndef FS_SHELL case B_TRIM_DEVICE: { fs_trim_data* trimData; diff --git a/src/add-ons/kernel/file_systems/bfs/system_dependencies.h b/src/add-ons/kernel/file_systems/bfs/system_dependencies.h index aa0773d1aa..070b086ca7 100644 --- a/src/add-ons/kernel/file_systems/bfs/system_dependencies.h +++ b/src/add-ons/kernel/file_systems/bfs/system_dependencies.h @@ -6,14 +6,14 @@ #define _SYSTEM_DEPENDENCIES_H -#ifdef BFS_SHELL +#ifdef FS_SHELL #include #include "fssh_api_wrapper.h" #include "fssh_auto_deleter.h" -#else // !BFS_SHELL +#else // !FS_SHELL #include #include @@ -51,7 +51,7 @@ #include #include -#endif // !BFS_SHELL +#endif // !FS_SHELL #endif // _SYSTEM_DEPENDENCIES_H diff --git a/src/add-ons/kernel/file_systems/shared/QueryParserUtils.cpp b/src/add-ons/kernel/file_systems/shared/QueryParserUtils.cpp index eb1cb4ec40..7001bb2144 100644 --- a/src/add-ons/kernel/file_systems/shared/QueryParserUtils.cpp +++ b/src/add-ons/kernel/file_systems/shared/QueryParserUtils.cpp @@ -1,18 +1,21 @@ /* - * Copyright 2001-2009, Axel Dörfler, axeld@pinc-software.de. + * Copyright 2001-2014, Axel Dörfler, axeld@pinc-software.de. * Copyright 2010, Clemens Zeidler * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de. * This file may be used under the terms of the MIT License. */ -#include - -#include - +// This needs to be the first include because of the fs shell API wrapper #include -#include +#include + +#ifndef FS_SHELL +# include + +# include +#endif namespace QueryParser { @@ -24,7 +27,7 @@ compare_integral(const Key& a, const Key& b) { if (a < b) return -1; - else if (a > b) + if (a > b) return 1; return 0; } diff --git a/src/system/boot/loader/file_systems/bfs/Jamfile b/src/system/boot/loader/file_systems/bfs/Jamfile index 860fb61786..25827bdd91 100644 --- a/src/system/boot/loader/file_systems/bfs/Jamfile +++ b/src/system/boot/loader/file_systems/bfs/Jamfile @@ -1,7 +1,7 @@ SubDir HAIKU_TOP src system boot loader file_systems bfs ; UsePrivateKernelHeaders ; -UsePrivateHeaders shared storage ; +UsePrivateHeaders file_systems shared storage ; SubDirHdrs $(HAIKU_TOP) src add-ons kernel file_systems bfs ; @@ -17,8 +17,12 @@ BootStaticLibrary boot_bfs : Link.cpp Stream.cpp BPlusTree.cpp + QueryParserUtils.cpp : -fno-pic ; SEARCH on [ FGristFiles BPlusTree.cpp ] = [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems bfs ] ; + +SEARCH on [ FGristFiles QueryParserUtils.cpp ] + += [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems shared ] ; diff --git a/src/tools/bfs_shell/Jamfile b/src/tools/bfs_shell/Jamfile index 264275edb5..bd8fb28849 100644 --- a/src/tools/bfs_shell/Jamfile +++ b/src/tools/bfs_shell/Jamfile @@ -9,7 +9,7 @@ DEFINES += HAIKU_BUILD_COMPATIBILITY_H ; { local defines = #BFS_BIG_ENDIAN_ONLY - BFS_SHELL + FS_SHELL ; if $(DEBUG) = 0 { @@ -42,6 +42,7 @@ if ! $(HOST_PLATFORM_BEOS_COMPATIBLE) { UsePrivateHeaders shared storage ; UsePrivateHeaders fs_shell ; +UseHeaders [ FDirName $(HAIKU_TOP) headers private ] : true ; UseHeaders [ FDirName $(HAIKU_TOP) src tools fs_shell ] ; local bfsSource = @@ -54,6 +55,7 @@ local bfsSource = Inode.cpp Journal.cpp Query.cpp + QueryParserUtils.cpp Volume.cpp kernel_interface.cpp @@ -79,3 +81,6 @@ BuildPlatformMain bfs_fuse $(libHaikuCompat) $(HOST_LIBSUPC++) $(HOST_LIBSTDC++) $(HOST_STATIC_LIBROOT) $(fsShellCommandLibs) fuse ; + +SEARCH on [ FGristFiles QueryParserUtils.cpp ] + += [ FDirName $(HAIKU_TOP) src add-ons kernel file_systems shared ] ;