docs/ikteam: Delete most files.
[haiku.git] / docs / develop / storage / Annotations
blob6ee3f66746bf4b6c6fc28857e3d2dcf2cf717931
1 # Annotations
2 # ===========
4 # This file contains a list of miscellaneous annotations.
5 # An entry has the following tags:
6 # * OS: the concerned "operating system" (BeOS R5, OBOS POSIX)
7 # * Module: the concerned class or file
8 # * Location: a more precise location, e.g. a function
9 # * Description: a description of the item
11 OS:          BeOS R5
12 Module:      BEntry
13 Location:    BEntry(const BDirectory*, const char*),
14              SetTo(const BDirectory*, const char*)
15 Description: Crash when passing a NULL BDirectory.
18 OS:          BeOS R5
19 Module:      BEntry
20 Location:    MoveTo()
21 Description: Crashs when passing a NULL BDirectory.
24 OS:          BeOS R5
25 Module:      BPath
26 Location:    BPath(const BDirectory*, const char*, bool),
27              SetTo(const BDirectory*, const char*, bool)
28 Description: Crash when passing a NULL BDirectory.
31 OS:          BeOS R5
32 Module:      BPath
33 Location:    GetParent()
34 Description: Crashs when called on an uninitialized object or when passing
35              a NULL BPath.
38 OS:          BeOS R5
39 Module:      BPath
40 Location:    operator==(), operator!=()
41 Description: Uninitialized paths are not equal. An initialized path equals
42              a (const char*)NULL, an uninitialized path does not.
45 OS:          BeOS R5
46 Module:      BPath
47 Location:    Flatten()
48 Description: Crashs when passing a NULL buffer and doesn't check the buffer
49              size.
52 OS:          BeOS R5
53 Module:      BStatable
54 Location:    destructor
55 Description: Is not virtual.
58 OS:          BeOS R5
59 Module:      BStatable
60 Location:    GetAccessTime(), SetAccessTime()
61 Description: Access time unused.
64 OS:          BeOS R5
65 Module:      BStatable
66 Location:    GetPermissions()
67 Description: Doesn't filter the mode flags, thus not only the permissions are
68              returned.
71 OS:          BeOS R5
72 Module:      BStatable
73 Location:    Get*()
74 Description: Crash when passing a NULL pointer.
77 OS:          OBOS POSIX
78 Module:      BStatable
79 Location:    SetPermissions/ModificationTime/CreationTime()
80 Description: Don't work due to set_stat(FileDescriptor, StatMember)
81              limitations.
84 OS:          OBOS POSIX
85 Module:      kernel_interface
86 Location:    set_stat(FileDescriptor, StatMember)
87 Description: WSTAT_MODE, WSTAT_*TIME can't be implemented due to missing
88              fchmod()/FD time setters.
91 OS:          BeOS R5
92 Module:      libroot
93 Location:    fchown()
94 Description: fchown(file, 0xFFFFFFFF, gid) sets the UID to 0xFFFFFFFF, which
95              is a bug.
98 OS:          BeOS R5
99 Module:      libroot
100 Location:    readdir(), fs_read_attr_dir()
101 Description: The d_reclen field of a dirent structure does not contain the
102              length of the whole structure (unlike stated in
103              BeBook::BEntryList), but only the length of the d_name field.
104              If the terminating '\0' is counted or not seems to depend on the
105              file system.
108 OS:          OBOS POSIX
109 Module:      kernel_interface
110 Location:    read_link(FileDescriptor, char*, size_t)
111 Description: Can't be implemented due to the lack of an FD readlink() version.
114 OS:          BeOS R5
115 Module:      BSymLink
116 Location:    MakeLinkedPath(const char*, BPath*)
117 Description: The dirPath seems to be converted into a BDirectory, which
118              causes links to be resolved, i.e. a "/tmp" dirPath expands to
119              "/boot/var/tmp". That does also mean, that the dirPath must
120              exists!
123 OS:          BeOS R5
124 Module:      BSymLink
125 Location:    MakeLinkedPath()
126 Description: Crashs when passing a NULL const char* or BDirectory.
129 OS:          BeOS R5
130 Module:      BNode
131 Location:    GetNextAttrName()
132 Description: Crashs when passing a NULL buffer.
135 OS:          BeOS R5
136 Module:      BNode
137 Location:    Read/WriteAttrString()
138 Description: Crash when passing a NULL BString.
141 OS:          BeOS R5
142 Module:      BNode
143 Location:    Lock()
144 Description: Given two BNode objects initialized to the same node, it is
145              possible to Lock() one of them, although the BeBook says it isn't.
148 OS:          BeOS R5
149 Module:      BDirectory
150 Location:    BDirectory(const node_ref*), SetTo(const node_ref*)
151 Description: Crash when passing a NULL node_ref.
154 OS:          BeOS R5
155 Module:      BDirectory
156 Location:    GetEntry()
157 Description: Crashs when passing a NULL BEntry.
160 OS:          BeOS R5
161 Module:      BDirectory
162 Location:    FindEntry()
163 Description: Crashs when passing a NULL BEntry.
166 OS:          BeOS R5 (OBOS)
167 Module:      BDirectory
168 Location:    Contains(const char*, int32)
169 Description: If the supplied path is absolute and refers to an existing
170              entry, true is returned, even if the directory does not contain
171              the entry or is not even initialized.
172              (The OBOS implementation makes the behavior more consistent
173              with the BEntry* version, which returns false when the
174              directory is not initialized and true only if the directory
175              actually contains the entry.)
178 OS:          BeOS R5
179 Module:      BDirectory
180 Location:    Contains(const BEntry*, int32)
181 Description: Crashs when passing a NULL BEntry.
184 OS:          BeOS R5
185 Module:      BDirectory
186 Location:    Contains(const BEntry*, bool)
187 Description: Bug: Tests with a directory, contained file/dir/symlink and
188              the respective node kind (B_FILE_NODE/B_DIRECTORY_NODE/
189              B_SYMLINK_NODE) result false.
192 OS:          BeOS R5
193 Module:      BDirectory
194 Location:    GetNextDirents()
195 Description: Crashs when passing a NULL buffer.
198 OS:          OBOS
199 Module:      BQuery
200 Location:    Push*()
201 Description: Return status_t instead of void. Fail, if Fetch() has already
202              been called.
205 OS:          BeOS R5
206 Module:      BQuery
207 Location:    PushOp()
208 Description: Crashs when pushing B_CONTAINS/B_BEGINS/ENDS_WITH on an empty
209              stack.
212 OS:          BeOS R5
213 Module:      BQuery
214 Location:    PushUInt64()
215 Description: Doesn't work. Predicates constructed using it are invalid.
218 OS:          BeOS R5
219 Module:      BQuery
220 Location:    Get/SetPredicate()
221 Description: Crash when passing a NULL BString/char*.
224 OS:          BeOS R5
225 Module:      BQuery
226 Location:    SetVolume()
227 Description: Crashs when passing a NULL BVolume.
230 OS:          BeOS R5
231 Module:      BQuery
232 Location:    GetNextEntry/Ref()
233 Description: Crash when passing a NULL BEntry/entry_ref.
236 OS:          BeOS R5
237 Module:      BMimeType
238 Location:    {Get,Set}LongDescription()
239 Description: Crashes when passed a NULL description
242 OS:          BeOS R5
243 Module:      BMimeType
244 Location:    GetLongDescription()
245 Description: The contents of the description string are modified even if
246              the function fails.
247              
249 OS:          BeOS R5
250 Module:      BMimeType
251 Location:    SetShortDescription()
252 Description: When passed a NULL description, doesn't crash, but does
253              appear to make the result of following calls to SetShortDescription
254              unreliable (sometimes they work, sometimes they don't).
257 OS:          BeOS R5 vs. OBOS
258 Module:      BMimeType
259 Location:    
260 Description: R5: The maximal MIME string length, BMimeType accepts is
261              B_MIME_TYPE_LENGTH *not* including terminating null. Note, that
262              app_info reserves only B_MIME_TYPE_LENGTH chars for the
263              signature field.
264              OBOS: That's why we support strings that fit into a buffer of
265              size B_MIME_TYPE_LENGTH only. This is consistent with the use
266              of the other *_LENGTH constants.
269 OS:          BeOS R5
270 Module:      BMimeType
271 Location:    SetAppHint()
272 Description: The entry_ref passed to SetAppHint() must be valid but is not
273              required to refer to a file that actually exists; furthermore,
274              if it does exist, the MIME type of the file is not required to
275              match the BMimeType object's type.
278 OS:          BeOS R5
279 Module:      BMimeType
280 Location:    SetIcon()
281 Description: The BBitmap passed to BMimeType::SetIcon() must be in the B_CMAP8
282              color space, or the application will crash. We should remember
283              to be smarter about this.
285              
286 OS:          BeOS R5
287 Module:      BMimeType
288 Location:    GetIcon()
289 Description: The BBitmap passed to BMimeType::GetIcon() must be in the B_CMAP8
290              color space. If not, the call returns B_OK but doesn't actually
291              modify the bitmap. We should remember to be smarter about this.
292              
294 OS:          BeOS R5
295 Module:      BMimeType
296 Location:    IsValid(const char*), GetSupertype(), Contains()
297 Description: Crash when passing NULL.
298              
300 OS:          BeOS R5
301 Module:      BMimeType
302 Location:    {Get,Set}IconForType(char*, BBitmap*, icon_size)
303 Description: Passing NULL as the first parameter is the same as calling
304              {Get,Set}Icon() with the second two parameters (i.e. {gets,sets}
305              the icon for the type itself).
307              
308 OS:          BeOS R5
309 Module:      BMimeType
310 Location:    SetFileExtensions()
311 Description: Passing a NULL message does not clear the File Extensions field
312              for the MIME type as indicated by the Be Book; instead, it crashes
313              the application :-)
315             
316 OS:          BeOS R5
317 Module:      BMimeType
318 Location:    GetFileExtensions()
319 Description: A B_STRING_TYPE field of name "type" is *added* to the result
320              containing the MIME type of the BMimeType object. Since the
321              BMessage passed to SetFileExtensions() appears to be simply
322              flattened into the appropriate attribute, the "type" field is
323              appended to any such "type" fields that may already exist in
324              the original BMessage.
327 OS:          BeOS R5
328 Module:      BMimeType
329 Location:    Install()
330 Description: From the Be Book: "Currently, Install() may return a random value
331              if the object is already installed." 
332              
334 OS:          BeOS R5
335 Module:      BMimeType
336 Location:    
337 Description: MIME Type strings are converted to lowercase before being used
338              as filenames in the MIME database.
339              
340            
341 OS:          BeOS R5
342 Module:      BMimeType
343 Location:    Start/StopWatching()
344 Description: An invalid messenger (BMessenger::Invalid()) is fine as parameter.
347 OS:          BeOS R5
348 Module:      Mime.h/cpp
349 Location:    get_device_icon()
350 Description: KDL when passing a NULL buffer!
353 OS:          BeOS R5
354 Module:      BMimeType
355 Location:    CheckSnifferRule()
356 Description: Crashes when passing a NULL rule.
359 OS:          BeOS R5
360 Module:      BMimeType
361 Location:    GetSnifferRule()
362 Description: Crashes when passing a NULL BString.
365 OS:          BeOS R5
366 Module:      BMimeType
367 Location:    Check/Get/SetSnifferRule()
368 Description: The sniffer rules description in the BeBook deviates considerably
369              from the actual implementation:
370              - + masks
371              - + top level ORs: (patterns...) | (patterns...) | ...
372              - - range overriding: [range1] ([range2]pattern)
373              - either no or complete ranges: (pattern1 | pattern2)
374                or ([range1]pattern1 | [range2]pattern2), but not
375                ([range1]pattern1 | pattern2)
376              - CheckSnifferRule() doesn't check some of the values, e.g.
377                ranges (negative values, or begin > end) or 0 <= priority <= 1.
380 OS:          BeOS R5
381 Module:      BMimeType
382 Location:    GuessMimeType(const entry_ref *, BMimeType *)
383 Description: When passing an uninitialized entry_ref, B_OK and
384              "application/octet-stream" are returned.
387 OS:          BeOS R5
388 Module:      BMimeType
389 Location:    SetAttrInfo
390 Description: Crashes when passed a NULL BMessage.
393 OS:          BeOS R5
394 Module:      BMimeType
395 Location:    GetInstalledTypes(BMessage*)
396 Description: The set of types returned by this function is determined as follows:
397              + All *entries* (files, dirs, or symlinks) in the root MIME database
398                directory treated as MIME types, except those that begin with an
399                underscore; only dirs are treated as supertypes (unless the dir's
400                META:TYPE attribute is different than its filename, in which case
401                it's not treated as a supertype).
402              + For each supertype, all *entries* (files, dirs, or symlinks) in the
403                corresponding supertype subdirectory are treated as a MIME type, except
404                those that begin with an underscore.
405              + The MIME type for supertypes is taken from the name of the supertype
406                subdirectory.
407              + The MIME type for non-supertypes is take from the entry's META:TYPE
408                attribute. If the entry has no META:TYPE attribute, the MIME type is
409                derived by concatentating the name of the supertype directory to the
410                name of the entry, separated by a "/" character. Either way, the MIME
411                string returned is not checked to be valid.
413              
414 OS:          BeOS R5
415 Module:      BMimeType
416 Location:    GetInstalledTypes(char *super, BMessage*)
417 Description: The set of types returned by this function is determined as follows:
418              + All *entries* (files, dirs, or symlinks) in the MIME database directory
419                corresponding to the "super" argument are treated as subtypes, *except*
420                those whose filenames begin with an underscore. It does not matter if
421                the supertype directory has a META:TYPE attribute or not.
422              + The MIME type is taken from the entry's META:TYPE attribute. If the entry
423                has no such attribute, the MIME type is derived by concatentating the name
424                of the supertype directory (the directory's META:TYPE attribute is ignored
425                if present) to the name of the entry, separated by a "/" character. Either
426                way, the MIME string returned is not checked to be valid.
427                
428              
429 OS:          BeOS R5
430 Module:      BMimeType
431 Location:    GetInstalledSupertypes(BMessage*)
432 Description: The set of types returned by this function is determined as follows:
433              + All directories in the root MIME database directory are treated as
434                supertypes (even directories beginning with an underscore).
435              + The MIME type is derived from the directory name, which is not
436                checked to be a valid MIME string.
437              
439 OS:          BeOS R5
440 Module:      BMimeType
441 Location:    GetWildcardApps()
442 Description: This code:             
443                BMessage msg;  
444                status_t error = BMimeType::GetWildcardApps(&msg);
445              is the same as:
446                BMessage msg;
447                BMimeType mime("application/octet-stream");
448                status_t error = mime.InitCheck();
449                if (!error)
450                  error = mime.GetSupportingApps(&msg);
453 OS:          BeOS R5
454 Module:      BNodeInfo
455 Location:    {Set,Get}AppHint()
456 Description: The file attribute the path of the "app hint" application
457              ("BEOS:PPATH") is of type B_MIME_STRING_TYPE instead of
458              B_STRING_TYPE.
459              
461 OS:          BeOS R5
462 Module:      BNodeInfo
463 Location:    GetType()
464 Description: When the string stored in the "BEOS:TYPE" attribute is longer
465              than B_MIME_TYPE_LENGTH, the returned string is one character
466              shorter than the actual string.
467              
469 OS:          BeOS R5
470 Module:      BNodeInfo
471 Location:    GetIcon()
472 Description: Crashes when passing a NULL BBitmap.
473              
475 OS:          BeOS R5
476 Module:      BNodeInfo
477 Location:    GetIcon()
478 Description: Crashes when getting B_LARGE_ICON and passing a BBitmap with
479              B_RGB32 color space. B_MINI_ICON works just fine.
480              
482 OS:          BeOS R5
483 Module:      BAppFileInfo
484 Location:    GetSupportedTypes()
485 Description: Crashes when passing a NULL BMessage.
486              
488 OS:          BeOS R5
489 Module:      BAppFileInfo
490 Location:    Supports()
491 Description: Crashes when passing a NULL BMimeType.
492              
494 OS:          BeOS R5
495 Module:      BAppFileInfo
496 Location:    SetSupportedTypes(const BMessage *types, bool syncAll)
497 Description: Crashes when passing a NULL BMessage and syncAll = true.
498              
500 OS:          BeOS R5
501 Module:      BAppFileInfo
502 Location:    SetSupportedTypes()
503 Description: Sometimes installs a supported type, also when the file's
504              signature is not installed in the MIME database. This happens
505              e.g. when setting two supported types and then setting two
506              different types. The second of the new types is installed.
507              
509 OS:          BeOS R5
510 Module:      BAppFileInfo
511 Location:    SetSupportedTypes(const BMessage *types)
512 Description: Returns B_ENTRY_NOT_FOUND when the file's signature is not
513              installed in the MIME database, although the operation is
514              carried out successfully.
515              
517 OS:          BeOS R5
518 Module:      BAppFileInfo
519 Location:    SetSupportedTypes()
520 Description: Don't check whether the supplied types are valid MIME types. And
521              don't fail, if they are not. OBOS checks them.
522              
524 OS:          BeOS R5
525 Module:      BAppFileInfo
526 Location:    GetIcon(), GetIconForType()
527 Description: Crashes when getting B_LARGE_ICON and passing a BBitmap with
528              B_RGB32 color space. B_MINI_ICON works just fine.
529              
531 OS:          BeOS R5
532 Module:      BAppFileInfo
533 Location:    GetVersionInfo(), SetVersionInfo()
534 Description: Crash when passing a NULL version_info.
535              
537 Module:      BTest
538 Location:    SetName()
539 Description: Should also rename the mount point.
540 Priority:    medium