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