History log of /haiku/src/kits/storage/File.cpp
Revision Date Author Comments
# a30a4a41 18-Jun-2014 John Scipione <jscipione@gmail.com>

Style fixes to Storage Kit classes.

No functional changes intended.

* Some variable renaming for clarity and consistency.
* Pointer style fixes.
* Added private method documentation back to cpp files for some methods.


# e9191cc2 22-Dec-2012 John Scipione <jscipione@gmail.com>

Add BFile documentation to the Haiku Book.

Remove the documentation from the cpp file also. Keep the brief
description as a regular comment though.


# e1b526b9 18-Apr-2011 Jonas Sundström <jonas@kirilla.com>

Code style correction by Barret, ticket #7453. Thanks!

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41263 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 160f2d10 17-Jun-2009 Axel Dörfler <axeld@pinc-software.de>

* Added private header defining __gUmask which is now used everywhere where
needed.
* Some cleanup in Directory.cpp, and File.cpp.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31086 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0af6bceb 15-Apr-2009 Oliver Tappe <zooey@hirschkaefer.de>

closing #3773:
* in BEntry::SetTo and BFile::SetTo, we now support entry-refs with
absolute names, too, just like R5 does


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30183 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a121b8c8 24-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

* Added a new flag for write stat: B_STAT_SIZE_INSECURE that allows a
file system to not fill newly created space with zeros.
BFile::SetSize() now uses this, while [f]truncate() does not. This
is only a temporary work-around until BFS supports sparse files.
* Apps that want to reserve space to fill up later should use
BFile::SetSize() for now, as this will be a lot faster than
[f]truncate().
* cache_io() and the functions below now use a special mode when you
pass in a NULL buffer: for read access, the cache is only populated
(useful for prefetching), for write access, the file is filled with
zeros.
* Implemented BFS's Inode::FillGapWithZeros() using this method now.
* Removed extraneous white space.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24555 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5905a0ae 02-Feb-2008 Axel Dörfler <axeld@pinc-software.de>

* Fixed _{kern|user}_{read|write}[v]() functions to not move the descriptor's
file position in case an offset was specified.
* Reverted r23828-r23830 in File.cpp: don't fix the symptoms but the cause
of the problem (hey, that has to be in the kernel, right? :))
* Cleanup of File.cpp, removed OpenBeOS namespace.
* Moved user_fd_kernel_ioctl() to the section where it belongs to (that
function should be renamed, though).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23832 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 40da55c3 02-Feb-2008 Stephan Aßmus <superstippi@gmx.de>

* the BeBook documents WriteAt() and Write() to differ analogous to
ReadAt() and Read() with regards to the file position. Ie, WriteAt()
is not supposed to modify the data pointer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23830 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 835b8e68 02-Feb-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

This fixes my previous fix. The position to read can be completelly random so I have to first cache the current
position before calling _kern_read() and reset it afterwards.

*NOW* this fixes bug #1200 in all cases.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23829 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3debfe51 02-Feb-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

ReadAt() should not change the file position. Tested under R5 and Zeta. This fixes bug #1200 (Received emails are
missing attributes).

I hope nothing relies on the previously broken behaviour.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23828 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 39c991c0 26-May-2006 Stephan Aßmus <superstippi@gmx.de>

Added BPositionIO::GetSize() and implemented it by means of Seek() and
Position(). This used up a virtual slot of BPositionIO. GetSize() needed to be
implemented in BFile, which uses the BStatable version as before. This should
hopefully be binary compatible. The only problem could be in source
compatibility when there are classes inheriting from BPositionIO implementing
their own GetSize().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17593 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca9e5772 07-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

* Reintroduced third LinkAgainst parameter <mapLibs>, defaulting to true.
Library names are now mapped for all targets but "host" (not only for
"haiku") -- added one more level of indirection to achieve that.
(TARGET_LIBRARY_NAME_MAP -> *_LIBRARY_NAME_MAP_*).
* Renamed build/HaikuBuildCompatibility.h to BeOSBuildCompatibility.h
(auto-included when compiling something that uses the Be API for platform
"host" on anon-BeOS platform), and introduced build/HaikuBuildCompatibility.h,
which can be included when compiling something that can be built for both,
Haiku and BeOS compatible platforms.
* Introduced libhaikucompat.a, a library that adds a few functions existing
under Haiku, but not under BeOS.
* New rule AddSubDirSupportedPlatforms.
* Renamed libopenbeos.so to libbe_haiku.so.
* Introduced new target platform "libbe_test", which is basically equivalent
to a BeOS compatible host platform target, with the exception, that instead
of the host platform's libbe.so a special build of Haiku's libbe.so
(libbe_haiku.so (formerly known as libopenbeos.so)) is used. Furthermore
Haiku's public app, interface, storage, and support kit headers are used
when compiling. This replaces the less nice way in which the test app server
and applications for this test environment were built.
When building for platform "libbe_test", the library name "be" is
autotranslated to "libbe_haiku.so". Thus most applications don't need
special fiddling when them building them for the app server test environment;
usually an "AddSubDirSupportedPlatforms libbe_test ;" will suffice.
* Reduced the dependencies of <syscalls.h> and fixed problems caused by this
(e.g. source files not including the needed headers directly).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14749 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4b9ec73e 12-Aug-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

We need to override the virtual close_fd() in BFile for binary compatibility
(bug #43).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13937 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b38c9e18 02-Feb-2005 Axel Dörfler <axeld@pinc-software.de>

Now uses the new B_STAT_* constants rather than the one from fs_interface.h
(which will be removed soon).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11232 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3af4214a 01-Feb-2005 Axel Dörfler <axeld@pinc-software.de>

_kern_open[_entry_ref]() now replaces the _kern_create[_entry_ref]() calls.
That allows BFile to actually create files (it didn't use that syscall at
all before).
Also fixed setting the permission bits of the newly created file depending on umask
(the __gUmask variable should probably be moved into a separate header).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11208 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b06942c6 13-Jan-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

All internally used FDs are now set to O_CLOEXEC.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10715 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ef4fc754 02-Oct-2004 Ingo Weinhold <ingo_weinhold@gmx.de>

Must use <fs_interface.h>, not <fsproto.h>.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9161 a95241bf-73f2-0310-859d-f6bbb57e9c96


# db10640d 28-Aug-2004 Ingo Weinhold <ingo_weinhold@gmx.de>

Got rid of the Storage Kit's kernel abstraction layer, which was
unfortunately quite slow and made some things more complicated than they
needed to be.
Implemented a few missing things (e.g. BSymLink and node locking).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8694 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 17e6de7a 03-Aug-2003 shadow303 <shadow303@nowhere.fake>

gcc 3 fixes


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4227 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7c44680a 11-Feb-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Renamed the private virtual slots back to their original (R5) names. We would break binary compatibility otherwise, or at least had to do some additional work to maintain nevertheless.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2683 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 23d36867 26-Oct-2002 beveloper <beveloper@nowhere.fake>

fixed BFile


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1682 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a04efc92 06-Oct-2002 Ingo Weinhold <ingo_weinhold@gmx.de>

Added variable initializations. Not necessary, but they please the compiler.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1414 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9a17c3cf 23-Sep-2002 Ingo Weinhold <ingo_weinhold@gmx.de>

Dealt with the *_LENGTH+1 issue: Removed all "+1"s in buffer allocations and adjusted checks etc.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1131 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 09d84e61 12-Aug-2002 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

+ Changed StorageKit namespace to BPrivate::Storage
+ Changed Sniffer namespace to BPrivate::Storage::Sniffer


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@714 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 52a38012 08-Jul-2002 ejakowatz <ejakowatz@nowhere.fake>

It is accomplished ...


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a30a4a41f948ebb03b95dab065a27a584ac0c97a 18-Jun-2014 John Scipione <jscipione@gmail.com>

Style fixes to Storage Kit classes.

No functional changes intended.

* Some variable renaming for clarity and consistency.
* Pointer style fixes.
* Added private method documentation back to cpp files for some methods.


# e9191cc2d1222d633e806bea3ee9c6fc806844a2 22-Dec-2012 John Scipione <jscipione@gmail.com>

Add BFile documentation to the Haiku Book.

Remove the documentation from the cpp file also. Keep the brief
description as a regular comment though.


# e1b526b95a2dc473c254bc332454c53ca892ac5e 18-Apr-2011 Jonas Sundström <jonas@kirilla.com>

Code style correction by Barret, ticket #7453. Thanks!

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41263 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 160f2d1081839e78eb60c26147f1a04163cbde69 17-Jun-2009 Axel Dörfler <axeld@pinc-software.de>

* Added private header defining __gUmask which is now used everywhere where
needed.
* Some cleanup in Directory.cpp, and File.cpp.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31086 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0af6bceba489860bc597088412d86215c5dca7e4 15-Apr-2009 Oliver Tappe <zooey@hirschkaefer.de>

closing #3773:
* in BEntry::SetTo and BFile::SetTo, we now support entry-refs with
absolute names, too, just like R5 does


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30183 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a121b8c83ceba34954e7c187e84c206539207b3c 24-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

* Added a new flag for write stat: B_STAT_SIZE_INSECURE that allows a
file system to not fill newly created space with zeros.
BFile::SetSize() now uses this, while [f]truncate() does not. This
is only a temporary work-around until BFS supports sparse files.
* Apps that want to reserve space to fill up later should use
BFile::SetSize() for now, as this will be a lot faster than
[f]truncate().
* cache_io() and the functions below now use a special mode when you
pass in a NULL buffer: for read access, the cache is only populated
(useful for prefetching), for write access, the file is filled with
zeros.
* Implemented BFS's Inode::FillGapWithZeros() using this method now.
* Removed extraneous white space.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24555 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5905a0ae344fb132d1db6ff509219e286c777aa6 02-Feb-2008 Axel Dörfler <axeld@pinc-software.de>

* Fixed _{kern|user}_{read|write}[v]() functions to not move the descriptor's
file position in case an offset was specified.
* Reverted r23828-r23830 in File.cpp: don't fix the symptoms but the cause
of the problem (hey, that has to be in the kernel, right? :))
* Cleanup of File.cpp, removed OpenBeOS namespace.
* Moved user_fd_kernel_ioctl() to the section where it belongs to (that
function should be renamed, though).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23832 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 40da55c3adabc6ec197573972521410cedc88226 02-Feb-2008 Stephan Aßmus <superstippi@gmx.de>

* the BeBook documents WriteAt() and Write() to differ analogous to
ReadAt() and Read() with regards to the file position. Ie, WriteAt()
is not supposed to modify the data pointer.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23830 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 835b8e688acbb817c2cb71c7c840c3402440a17e 02-Feb-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

This fixes my previous fix. The position to read can be completelly random so I have to first cache the current
position before calling _kern_read() and reset it afterwards.

*NOW* this fixes bug #1200 in all cases.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23829 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3debfe518679779c824e5f3740f0da2abbcca776 02-Feb-2008 Bruno G. Albuquerque <bga@bug-br.org.br>

ReadAt() should not change the file position. Tested under R5 and Zeta. This fixes bug #1200 (Received emails are
missing attributes).

I hope nothing relies on the previously broken behaviour.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23828 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 39c991c0f3ca33cffd9cf445b7bad619f8c6f23b 26-May-2006 Stephan Aßmus <superstippi@gmx.de>

Added BPositionIO::GetSize() and implemented it by means of Seek() and
Position(). This used up a virtual slot of BPositionIO. GetSize() needed to be
implemented in BFile, which uses the BStatable version as before. This should
hopefully be binary compatible. The only problem could be in source
compatibility when there are classes inheriting from BPositionIO implementing
their own GetSize().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17593 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca9e5772c3fa971474035b57ee9226ccc429ebc9 07-Nov-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

* Reintroduced third LinkAgainst parameter <mapLibs>, defaulting to true.
Library names are now mapped for all targets but "host" (not only for
"haiku") -- added one more level of indirection to achieve that.
(TARGET_LIBRARY_NAME_MAP -> *_LIBRARY_NAME_MAP_*).
* Renamed build/HaikuBuildCompatibility.h to BeOSBuildCompatibility.h
(auto-included when compiling something that uses the Be API for platform
"host" on anon-BeOS platform), and introduced build/HaikuBuildCompatibility.h,
which can be included when compiling something that can be built for both,
Haiku and BeOS compatible platforms.
* Introduced libhaikucompat.a, a library that adds a few functions existing
under Haiku, but not under BeOS.
* New rule AddSubDirSupportedPlatforms.
* Renamed libopenbeos.so to libbe_haiku.so.
* Introduced new target platform "libbe_test", which is basically equivalent
to a BeOS compatible host platform target, with the exception, that instead
of the host platform's libbe.so a special build of Haiku's libbe.so
(libbe_haiku.so (formerly known as libopenbeos.so)) is used. Furthermore
Haiku's public app, interface, storage, and support kit headers are used
when compiling. This replaces the less nice way in which the test app server
and applications for this test environment were built.
When building for platform "libbe_test", the library name "be" is
autotranslated to "libbe_haiku.so". Thus most applications don't need
special fiddling when them building them for the app server test environment;
usually an "AddSubDirSupportedPlatforms libbe_test ;" will suffice.
* Reduced the dependencies of <syscalls.h> and fixed problems caused by this
(e.g. source files not including the needed headers directly).



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14749 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4b9ec73e9966428bdb8a17f4f7737f7b1634d672 12-Aug-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

We need to override the virtual close_fd() in BFile for binary compatibility
(bug #43).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13937 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b38c9e18bfdd8d0a7f9360005598c0facade2709 02-Feb-2005 Axel Dörfler <axeld@pinc-software.de>

Now uses the new B_STAT_* constants rather than the one from fs_interface.h
(which will be removed soon).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11232 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3af4214aeb7eae0e7ebb5938fa1619800b15a958 01-Feb-2005 Axel Dörfler <axeld@pinc-software.de>

_kern_open[_entry_ref]() now replaces the _kern_create[_entry_ref]() calls.
That allows BFile to actually create files (it didn't use that syscall at
all before).
Also fixed setting the permission bits of the newly created file depending on umask
(the __gUmask variable should probably be moved into a separate header).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11208 a95241bf-73f2-0310-859d-f6bbb57e9c96


# b06942c6049d167350529b36a6f7f559383a764f 13-Jan-2005 Ingo Weinhold <ingo_weinhold@gmx.de>

All internally used FDs are now set to O_CLOEXEC.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10715 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ef4fc75459e2c589e8790d5de96f8b950ddaf0f0 02-Oct-2004 Ingo Weinhold <ingo_weinhold@gmx.de>

Must use <fs_interface.h>, not <fsproto.h>.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9161 a95241bf-73f2-0310-859d-f6bbb57e9c96


# db10640de90f7f9519ba2da9577b7c1af3c64f6b 28-Aug-2004 Ingo Weinhold <ingo_weinhold@gmx.de>

Got rid of the Storage Kit's kernel abstraction layer, which was
unfortunately quite slow and made some things more complicated than they
needed to be.
Implemented a few missing things (e.g. BSymLink and node locking).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@8694 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 17e6de7a37c5c61f45eb724de108daa70905cb8f 03-Aug-2003 shadow303 <shadow303@nowhere.fake>

gcc 3 fixes


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@4227 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7c44680a3623191910d7fb6617ff897583f2ef60 11-Feb-2003 Ingo Weinhold <ingo_weinhold@gmx.de>

Renamed the private virtual slots back to their original (R5) names. We would break binary compatibility otherwise, or at least had to do some additional work to maintain nevertheless.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2683 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 23d36867f63af34f65b35f1eb42a269bf36a0555 26-Oct-2002 beveloper <beveloper@nowhere.fake>

fixed BFile


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1682 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a04efc92d03c28be336ca2eec9cef2196d8db092 06-Oct-2002 Ingo Weinhold <ingo_weinhold@gmx.de>

Added variable initializations. Not necessary, but they please the compiler.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1414 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9a17c3cfac5f2463b41b3f233975a2904ef10135 23-Sep-2002 Ingo Weinhold <ingo_weinhold@gmx.de>

Dealt with the *_LENGTH+1 issue: Removed all "+1"s in buffer allocations and adjusted checks etc.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1131 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 09d84e61b6c2629d253dce1e7d7e944943d3e40e 12-Aug-2002 Tyler Dauwalder <tylerdauwalder@nowhere.fake>

+ Changed StorageKit namespace to BPrivate::Storage
+ Changed Sniffer namespace to BPrivate::Storage::Sniffer


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@714 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 52a380120846174213ccce9c4aab0dda17c72083 08-Jul-2002 ejakowatz <ejakowatz@nowhere.fake>

It is accomplished ...


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10 a95241bf-73f2-0310-859d-f6bbb57e9c96