Commit Graph

40226 Commits

Author SHA1 Message Date
Ingo Weinhold
061337ba5f Create a "BEOS:APP_SIG" index by default 2011-07-17 16:55:10 +02:00
Ingo Weinhold
55b969b13b Attribute index support for non-special attributes
* Add AttributeIndex class.
* Each attribute does now have an attribute index cookie. The new
  attribute index service methods Node::IndexAttribute() and
  IndexCookieForAttribute() create+set/retrieve the cookie. The cookie
  is actually the attribute index's tree node.
* Add OldNodeAttribute::IndexCookieForAttribute() so the cookie is
  available when the node changes.
2011-07-17 16:55:10 +02:00
Ingo Weinhold
4d67e7847b More abstraction in GenericIndexIterator
* Move tree node operations to a subpolicy TreePolicy.
* Add a GenericIndexIteratorTreePolicy templatized over the policy,
  implementing the tree policy for the standard indices.
2011-07-17 16:55:10 +02:00
Ingo Weinhold
51ee03bead QueryPolicy::NodeGetAttribute(): Get the type too 2011-07-17 16:55:10 +02:00
Ingo Weinhold
278925246f Remove unused PackageNodeAttribute::fParent 2011-07-17 16:55:09 +02:00
Ingo Weinhold
a52387c669 compareKeys(): Also handle B_MIME_STRING_TYPE 2011-07-17 16:55:09 +02:00
Ingo Weinhold
3e29244600 Move B_MIME_STRING_TYPE to <TypeConstants.h> 2011-07-17 16:55:09 +02:00
Ingo Weinhold
901749cff2 Remove TwoKeyAVLTree from kernel utils again
It's not ready for shared use yet.
2011-07-17 16:55:09 +02:00
Ingo Weinhold
01f7f92aef Move helper function out of QueryParser.h
They live in the new QueryParserUtils.{h,cpp} now.
2011-07-17 16:55:08 +02:00
Ingo Weinhold
3877a7f4a0 AVLTreeMap fixes
* AVLTreeMap::_GetKey(): Change return type from const Key& to Key, so
  the strategy can do that as well and doesn't have have a Key object in
  the node.
* Fix the Auto strategy: It was using the undefined _GetKey() instead
  of GetKey().
2011-07-17 16:55:08 +02:00
Ingo Weinhold
28559a4e24 Build fix 2011-07-17 16:55:08 +02:00
Ingo Weinhold
0c63c7738a Add last modified index support
* Add class LastModifiedIndex.
* Create and add an instance of it in Volume::Mount().
2011-07-17 16:55:08 +02:00
Ingo Weinhold
a5d15ca28b Removed left-over commented code 2011-07-17 16:55:08 +02:00
Ingo Weinhold
8c8e925a0a QueryParser: The last_modified index is time_t
* Changed value type from B_INT64_TYPE to B_INT32_TYPE.
* Changed QueryPolicy::NodeGetLastModifiedTime() return value from
  bigtime_t to time_t.
2011-07-17 16:55:07 +02:00
Ingo Weinhold
d35565bed0 Add size index support
* Add class SizeIndex.
* Create and add an instance of it in Volume mount.
2011-07-17 16:55:07 +02:00
Ingo Weinhold
d56e19fb9e GenericIndexIterator: Add node change helpers
Add NodeChangeBegin()/NodeChangeEnd() methods that can be used by the
index when the respective node attribute has changed. They make sure
that the iterator doesn't move with the node, should it be inserted into
the index at a different position.
2011-07-17 16:55:07 +02:00
Ingo Weinhold
0209c404dc Add comment 2011-07-17 16:55:07 +02:00
Ingo Weinhold
0780073984 GenericIndexIterator::SetTo(): Find fuzzily
Use TwoKeyAVLTree::FindFirstClosest() instead of FindFirst(), so, if the
value isn't in the index, we find the closest greater value. That's the
semantics Index::InternalFind() is expected to have.
2011-07-17 16:55:06 +02:00
Ingo Weinhold
144129434f GenericIndexIterator: Fix NameIndex dependency
Next() was still copying the name. Add a GetNodeValue() method to the
policy that fetches the value instead.
2011-07-17 16:55:06 +02:00
Ingo Weinhold
a058fbe8a1 TwoKeyAVLTree: Add FindFirstClosest() 2011-07-17 16:55:06 +02:00
Ingo Weinhold
46368f46f3 Small cleanup 2011-07-17 16:55:06 +02:00
Ingo Weinhold
a3463d1932 Refactor NameIndexIterator into template class
Create template class GenericIndexIterator from NameIndexIterator.
2011-07-17 16:55:05 +02:00
Ingo Weinhold
773005292a NodeListener::NodeChanged(): Provide old value
* Add interface OldNodeAttributes an instance of which is passed to
  NodeListener::NodeChanged() to provide the old attribute values
  (currently only modification time and file size).
* Also extend PackageLinksListener::PackageLinkNodeChanged() with a
  OldNodeAttributes parameter.
* Add OldNodeAttributes implementations for PackageLinkSymlink (inner
  class OldAttributes) and UnpackingNode (OldUnpackageNodeAttributes).
2011-07-17 16:55:05 +02:00
Ingo Weinhold
9b2a170842 PackageLinkSymlink: Init fLinkPath in constructor 2011-07-17 16:55:05 +02:00
Ingo Weinhold
fb88975a7b ~NameIndex(): Make more robust
Remove the listener only, if it was registered.
2011-07-17 16:55:05 +02:00
Ingo Weinhold
49d2f608d4 Name::Index(): Fix initialization order
Add the node listener directly after calling the base class Init().
Otherwise, on error, the we could try to remove the listener although it
wasn't added in the first place.
2011-07-17 16:55:04 +02:00
Ingo Weinhold
32ad4ceefb Simplify [Abstract]IndexIterator interface
* Remove Current() and Previous() and add a HasNext() instead.
* Reimplement NameIndexIterator. It directly works with tree nodes
  instead of using an iterator, now.
2011-07-17 16:55:04 +02:00
Ingo Weinhold
747578cd93 Fix NameIndexPrimaryKeyCompare
It was actually returning whether the names where not equal.
2011-07-17 16:55:04 +02:00
Ingo Weinhold
9811f22cab QueryParser: Explicitly suspend/resume iterators
Extended policy by IndexIteratorSuspend() and IndexIteratorResume()
methods that are invoked for the index iterator by Query::GetNextEntry()
after entering respectively before exiting.
2011-07-17 16:55:04 +02:00
Ingo Weinhold
0c19263c85 AVLTreeMap/TwoKeyAVLTree: More access to nodes
both:
* Add Previous()/Next().
* Add Insert() version that returns a Node* instead of an Iterator.
* Add Remove() version that takes a Node* instead of a key.

TwoKeyAVLTree:
* Add GetIterator() version that takes an additional Node*, i.e.
  initializing an iterator to point to the node.
* Add Iterator::CurrentNode().
2011-07-17 16:55:03 +02:00
Ingo Weinhold
20b22dfc3d AVLTree: Add Previous()/Next() 2011-07-17 16:55:03 +02:00
Ingo Weinhold
d612248dcf Cleanup 2011-07-17 16:55:03 +02:00
Ingo Weinhold
216ba45933 Automatic whitespace cleanup 2011-07-17 16:55:03 +02:00
Ingo Weinhold
b8dae0fe7b Implement query FS hooks, add empty index FS hooks 2011-07-17 16:55:02 +02:00
Ingo Weinhold
a3f976768e Add Query class and query management in Volume 2011-07-17 16:55:02 +02:00
Ingo Weinhold
3897e7298e Add NameIndex class and create instance in Volume 2011-07-17 16:55:02 +02:00
Ingo Weinhold
804a92da7a Add Index base class and index table in Volume 2011-07-17 16:55:02 +02:00
Ingo Weinhold
67f11c47a7 Add a global node listener mechanism 2011-07-17 16:55:01 +02:00
Ingo Weinhold
44de97031e Add TwoKeyAVLTree to kernel utils
This is a tree implementation with elements with primary and secondary
key. The code is a cleaned up version of ramfs's implementation. ramfs
doesn't use this version yet.
2011-07-17 16:55:01 +02:00
Ingo Weinhold
7210d7aa58 Create a generalized version of BFS's query code
The new version is templatized over a QueryPolicy which provides the
interface to the file system specifics.
2011-07-17 16:55:01 +02:00
Ingo Weinhold
b489481920 Create /boot/apps and /boot/preferences symlinks 2011-07-17 16:55:01 +02:00
Ingo Weinhold
b5831cdf17 Disable WonderBrush until repackaged 2011-07-17 16:55:00 +02:00
Ingo Weinhold
a77ad30938 Fix loading the resolvable compatible version 2011-07-17 16:55:00 +02:00
Ingo Weinhold
b750c6bf71 Fix Dependency version comparisons 2011-07-17 16:55:00 +02:00
Ingo Weinhold
76ca98339d Postpone setting gBootDevice until after packagefs
The modules code uses gBootDevice as an indicator that modules can be
loaded from the boot volume. This is not the case until packagefs has
been mounted, though, so we postpone setting gBootDevice.
2011-07-17 16:55:00 +02:00
Ingo Weinhold
718fba99c8 PackageWriterImpl::_AddEntry(): Fix update logic
* Don't only look up the entry attribute when the entry is implicit.
  Look it up, when it is a directory instead. This aligns it the logic
  with _UpdateCheckEntryCollisions().
* When the entry attribute exits and the entry is not implicit, add file
  attributes, but not stat data. This also aligns the logic with
  _UpdateCheckEntryCollisions(), which removes colliding attributes, but
  keeps stat data.
2011-07-17 16:54:59 +02:00
Ingo Weinhold
3095cb1bc9 Remove copy'n'paste left-over 2011-07-17 16:54:59 +02:00
Ingo Weinhold
c9c6e36537 Use PropagateContainerUpdateTargetFlags rule
Propagate all update variables in CopySetHaikuRevision and for the
kernel pseudo target.
2011-07-17 16:54:59 +02:00
Ingo Weinhold
b059c5e4fc Add PropagateContainerUpdateTargetFlags rule
It propagates the HAIKU_INCLUDE_IN_IMAGE and HAIKU_INCLUDE_IN_PACKAGES
variables from one target to another.
2011-07-17 16:54:59 +02:00
Ingo Weinhold
5e2b650281 Update support for update-* targets
Set HAIKU_PACKAGES_UPDATE_ONLY and HAIKU_INCLUDE_IN_PACKAGES when one of
the pre-build-profile update-* targets are used.
2011-07-17 16:54:59 +02:00