haiku/docs/develop/storage/Annotations
Ingo Weinhold eb98f8c339 Squashed several TODO items by changing the Storage Kit <-> Kernel interface.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8691 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-08-28 20:04:41 +00:00

543 lines
17 KiB
Plaintext

# Annotations
# ===========
#
# This file contains a list of miscellaneous annotations.
# An entry has the following tags:
# * OS: the concerned "operating system" (BeOS R5, OBOS POSIX)
# * Module: the concerned class or file
# * Location: a more precise location, e.g. a function
# * Description: a description of the item
OS: BeOS R5
Module: BEntry
Location: BEntry(const BDirectory*, const char*),
SetTo(const BDirectory*, const char*)
Description: Crash when passing a NULL BDirectory.
OS: BeOS R5
Module: BEntry
Location: MoveTo()
Description: Crashs when passing a NULL BDirectory.
OS: BeOS R5
Module: BPath
Location: BPath(const BDirectory*, const char*, bool),
SetTo(const BDirectory*, const char*, bool)
Description: Crash when passing a NULL BDirectory.
OS: BeOS R5
Module: BPath
Location: GetParent()
Description: Crashs when called on an uninitialized object or when passing
a NULL BPath.
OS: BeOS R5
Module: BPath
Location: operator==(), operator!=()
Description: Uninitialized paths are not equal. An initialized path equals
a (const char*)NULL, an uninitialized path does not.
OS: BeOS R5
Module: BPath
Location: Flatten()
Description: Crashs when passing a NULL buffer and doesn't check the buffer
size.
OS: BeOS R5
Module: BStatable
Location: destructor
Description: Is not virtual.
OS: BeOS R5
Module: BStatable
Location: GetAccessTime(), SetAccessTime()
Description: Access time unused.
OS: BeOS R5
Module: BStatable
Location: GetPermissions()
Description: Doesn't filter the mode flags, thus not only the permissions are
returned.
OS: BeOS R5
Module: BStatable
Location: Get*()
Description: Crash when passing a NULL pointer.
OS: OBOS POSIX
Module: BStatable
Location: SetPermissions/ModificationTime/CreationTime()
Description: Don't work due to set_stat(FileDescriptor, StatMember)
limitations.
OS: OBOS POSIX
Module: kernel_interface
Location: set_stat(FileDescriptor, StatMember)
Description: WSTAT_MODE, WSTAT_*TIME can't be implemented due to missing
fchmod()/FD time setters.
OS: BeOS R5
Module: libroot
Location: fchown()
Description: fchown(file, 0xFFFFFFFF, gid) sets the UID to 0xFFFFFFFF, which
is a bug.
OS: BeOS R5
Module: libroot
Location: readdir(), fs_read_attr_dir()
Description: The d_reclen field of a dirent structure does not contain the
length of the whole structure (unlike stated in
BeBook::BEntryList), but only the length of the d_name field.
If the terminating '\0' is counted or not seems to depend on the
file system.
OS: OBOS POSIX
Module: kernel_interface
Location: read_link(FileDescriptor, char*, size_t)
Description: Can't be implemented due to the lack of an FD readlink() version.
OS: BeOS R5
Module: BSymLink
Location: MakeLinkedPath(const char*, BPath*)
Description: The dirPath seems to be converted into a BDirectory, which
causes links to be resolved, i.e. a "/tmp" dirPath expands to
"/boot/var/tmp". That does also mean, that the dirPath must
exists!
OS: BeOS R5
Module: BSymLink
Location: MakeLinkedPath()
Description: Crashs when passing a NULL const char* or BDirectory.
OS: BeOS R5
Module: BNode
Location: GetNextAttrName()
Description: Crashs when passing a NULL buffer.
OS: BeOS R5
Module: BNode
Location: Read/WriteAttrString()
Description: Crash when passing a NULL BString.
OS: BeOS R5
Module: BNode
Location: Lock()
Description: Given two BNode objects initialized to the same node, it is
possible to Lock() one of them, although the BeBook says it isn't.
OS: BeOS R5
Module: BDirectory
Location: BDirectory(const node_ref*), SetTo(const node_ref*)
Description: Crash when passing a NULL node_ref.
OS: BeOS R5
Module: BDirectory
Location: GetEntry()
Description: Crashs when passing a NULL BEntry.
OS: BeOS R5
Module: BDirectory
Location: FindEntry()
Description: Crashs when passing a NULL BEntry.
OS: BeOS R5 (OBOS)
Module: BDirectory
Location: Contains(const char*, int32)
Description: If the supplied path is absolute and refers to an existing
entry, true is returned, even if the directory does not contain
the entry or is not even initialized.
(The OBOS implementation makes the behavior more consistent
with the BEntry* version, which returns false when the
directory is not initialized and true only if the directory
actually contains the entry.)
OS: BeOS R5
Module: BDirectory
Location: Contains(const BEntry*, int32)
Description: Crashs when passing a NULL BEntry.
OS: BeOS R5
Module: BDirectory
Location: Contains(const BEntry*, bool)
Description: Bug: Tests with a directory, contained file/dir/symlink and
the respective node kind (B_FILE_NODE/B_DIRECTORY_NODE/
B_SYMLINK_NODE) result false.
OS: BeOS R5
Module: BDirectory
Location: GetNextDirents()
Description: Crashs when passing a NULL buffer.
OS: OBOS
Module: BQuery
Location: Push*()
Description: Return status_t instead of void. Fail, if Fetch() has already
been called.
OS: BeOS R5
Module: BQuery
Location: PushOp()
Description: Crashs when pushing B_CONTAINS/B_BEGINS/ENDS_WITH on an empty
stack.
OS: BeOS R5
Module: BQuery
Location: PushUInt64()
Description: Doesn't work. Predicates constructed using it are invalid.
OS: BeOS R5
Module: BQuery
Location: Get/SetPredicate()
Description: Crash when passing a NULL BString/char*.
OS: BeOS R5
Module: BQuery
Location: SetVolume()
Description: Crashs when passing a NULL BVolume.
OS: BeOS R5
Module: BQuery
Location: GetNextEntry/Ref()
Description: Crash when passing a NULL BEntry/entry_ref.
OS: BeOS R5
Module: BMimeType
Location: {Get,Set}LongDescription()
Description: Crashes when passed a NULL description
OS: BeOS R5
Module: BMimeType
Location: GetLongDescription()
Description: The contents of the description string are modified even if
the function fails.
OS: BeOS R5
Module: BMimeType
Location: SetShortDescription()
Description: When passed a NULL description, doesn't crash, but does
appear to make the result of following calls to SetShortDescription
unreliable (sometimes they work, sometimes they don't).
OS: BeOS R5 vs. OBOS
Module: BMimeType
Location:
Description: R5: The maximal MIME string length, BMimeType accepts is
B_MIME_TYPE_LENGTH *not* including terminating null. Note, that
app_info reserves only B_MIME_TYPE_LENGTH chars for the
signature field.
OBOS: That's why we support strings that fit into a buffer of
size B_MIME_TYPE_LENGTH only. This is consistent with the use
of the other *_LENGTH constants.
OS: BeOS R5
Module: BMimeType
Location: SetAppHint()
Description: The entry_ref passed to SetAppHint() must be valid but is not
required to refer to a file that actually exists; furthermore,
if it does exist, the MIME type of the file is not required to
match the BMimeType object's type.
OS: BeOS R5
Module: BMimeType
Location: SetIcon()
Description: The BBitmap passed to BMimeType::SetIcon() must be in the B_CMAP8
color space, or the application will crash. We should remember
to be smarter about this.
OS: BeOS R5
Module: BMimeType
Location: GetIcon()
Description: The BBitmap passed to BMimeType::GetIcon() must be in the B_CMAP8
color space. If not, the call returns B_OK but doesn't actually
modify the bitmap. We should remember to be smarter about this.
OS: BeOS R5
Module: BMimeType
Location: IsValid(const char*), GetSupertype(), Contains()
Description: Crash when passing NULL.
OS: BeOS R5
Module: BMimeType
Location: {Get,Set}IconForType(char*, BBitmap*, icon_size)
Description: Passing NULL as the first parameter is the same as calling
{Get,Set}Icon() with the second two parameters (i.e. {gets,sets}
the icon for the type itself).
OS: BeOS R5
Module: BMimeType
Location: SetFileExtensions()
Description: Passing a NULL message does not clear the File Extensions field
for the MIME type as indicated by the Be Book; instead, it crashes
the application :-)
OS: BeOS R5
Module: BMimeType
Location: GetFileExtensions()
Description: A B_STRING_TYPE field of name "type" is *added* to the result
containing the MIME type of the BMimeType object. Since the
BMessage passed to SetFileExtensions() appears to be simply
flattened into the appropriate attribute, the "type" field is
appended to any such "type" fields that may already exist in
the original BMessage.
OS: BeOS R5
Module: BMimeType
Location: Install()
Description: From the Be Book: "Currently, Install() may return a random value
if the object is already installed."
OS: BeOS R5
Module: BMimeType
Location:
Description: MIME Type strings are converted to lowercase before being used
as filenames in the MIME database.
OS: BeOS R5
Module: BMimeType
Location: Start/StopWatching()
Description: An invalid messenger (BMessenger::Invalid()) is fine as parameter.
OS: BeOS R5
Module: Mime.h/cpp
Location: get_device_icon()
Description: KDL when passing a NULL buffer!
OS: BeOS R5
Module: BMimeType
Location: CheckSnifferRule()
Description: Crashes when passing a NULL rule.
OS: BeOS R5
Module: BMimeType
Location: GetSnifferRule()
Description: Crashes when passing a NULL BString.
OS: BeOS R5
Module: BMimeType
Location: Check/Get/SetSnifferRule()
Description: The sniffer rules description in the BeBook deviates considerably
from the actual implementation:
- + masks
- + top level ORs: (patterns...) | (patterns...) | ...
- - range overriding: [range1] ([range2]pattern)
- either no or complete ranges: (pattern1 | pattern2)
or ([range1]pattern1 | [range2]pattern2), but not
([range1]pattern1 | pattern2)
- CheckSnifferRule() doesn't check some of the values, e.g.
ranges (negative values, or begin > end) or 0 <= priority <= 1.
OS: BeOS R5
Module: BMimeType
Location: GuessMimeType(const entry_ref *, BMimeType *)
Description: When passing an uninitialized entry_ref, B_OK and
"application/octet-stream" are returned.
OS: BeOS R5
Module: BMimeType
Location: SetAttrInfo
Description: Crashes when passed a NULL BMessage.
OS: BeOS R5
Module: BMimeType
Location: GetInstalledTypes(BMessage*)
Description: The set of types returned by this function is determined as follows:
+ All *entries* (files, dirs, or symlinks) in the root MIME database
directory treated as MIME types, except those that begin with an
underscore; only dirs are treated as supertypes (unless the dir's
META:TYPE attribute is different than its filename, in which case
it's not treated as a supertype).
+ For each supertype, all *entries* (files, dirs, or symlinks) in the
corresponding supertype subdirectory are treated as a MIME type, except
those that begin with an underscore.
+ The MIME type for supertypes is taken from the name of the supertype
subdirectory.
+ The MIME type for non-supertypes is take from the entry's META:TYPE
attribute. If the entry has no META:TYPE attribute, the MIME type is
derived by concatentating the name of the supertype directory to the
name of the entry, separated by a "/" character. Either way, the MIME
string returned is not checked to be valid.
OS: BeOS R5
Module: BMimeType
Location: GetInstalledTypes(char *super, BMessage*)
Description: The set of types returned by this function is determined as follows:
+ All *entries* (files, dirs, or symlinks) in the MIME database directory
corresponding to the "super" argument are treated as subtypes, *except*
those whose filenames begin with an underscore. It does not matter if
the supertype directory has a META:TYPE attribute or not.
+ The MIME type is taken from the entry's META:TYPE attribute. If the entry
has no such attribute, the MIME type is derived by concatentating the name
of the supertype directory (the directory's META:TYPE attribute is ignored
if present) to the name of the entry, separated by a "/" character. Either
way, the MIME string returned is not checked to be valid.
OS: BeOS R5
Module: BMimeType
Location: GetInstalledSupertypes(BMessage*)
Description: The set of types returned by this function is determined as follows:
+ All directories in the root MIME database directory are treated as
supertypes (even directories beginning with an underscore).
+ The MIME type is derived from the directory name, which is not
checked to be a valid MIME string.
OS: BeOS R5
Module: BMimeType
Location: GetWildcardApps()
Description: This code:
BMessage msg;
status_t error = BMimeType::GetWildcardApps(&msg);
is the same as:
BMessage msg;
BMimeType mime("application/octet-stream");
status_t error = mime.InitCheck();
if (!error)
error = mime.GetSupportingApps(&msg);
OS: BeOS R5
Module: BNodeInfo
Location: {Set,Get}AppHint()
Description: The file attribute the path of the "app hint" application
("BEOS:PPATH") is of type B_MIME_STRING_TYPE instead of
B_STRING_TYPE.
OS: BeOS R5
Module: BNodeInfo
Location: GetType()
Description: When the string stored in the "BEOS:TYPE" attribute is longer
than B_MIME_TYPE_LENGTH, the returned string is one character
shorter than the actual string.
OS: BeOS R5
Module: BNodeInfo
Location: GetIcon()
Description: Crashes when passing a NULL BBitmap.
OS: BeOS R5
Module: BNodeInfo
Location: GetIcon()
Description: Crashes when getting B_LARGE_ICON and passing a BBitmap with
B_RGB32 color space. B_MINI_ICON works just fine.
OS: BeOS R5
Module: BAppFileInfo
Location: GetSupportedTypes()
Description: Crashes when passing a NULL BMessage.
OS: BeOS R5
Module: BAppFileInfo
Location: Supports()
Description: Crashes when passing a NULL BMimeType.
OS: BeOS R5
Module: BAppFileInfo
Location: SetSupportedTypes(const BMessage *types, bool syncAll)
Description: Crashes when passing a NULL BMessage and syncAll = true.
OS: BeOS R5
Module: BAppFileInfo
Location: SetSupportedTypes()
Description: Sometimes installs a supported type, also when the file's
signature is not installed in the MIME database. This happens
e.g. when setting two supported types and then setting two
different types. The second of the new types is installed.
OS: BeOS R5
Module: BAppFileInfo
Location: SetSupportedTypes(const BMessage *types)
Description: Returns B_ENTRY_NOT_FOUND when the file's signature is not
installed in the MIME database, although the operation is
carried out successfully.
OS: BeOS R5
Module: BAppFileInfo
Location: SetSupportedTypes()
Description: Don't check whether the supplied types are valid MIME types. And
don't fail, if they are not. OBOS checks them.
OS: BeOS R5
Module: BAppFileInfo
Location: GetIcon(), GetIconForType()
Description: Crashes when getting B_LARGE_ICON and passing a BBitmap with
B_RGB32 color space. B_MINI_ICON works just fine.
OS: BeOS R5
Module: BAppFileInfo
Location: GetVersionInfo(), SetVersionInfo()
Description: Crash when passing a NULL version_info.
Module: BTest
Location: SetName()
Description: Should also rename the mount point.
Priority: medium