devfs_read_link() and rootfs_read_link() could write beyond the buffer
size passed in (off by one).
The comment for _kern_read_link() didn't fit to what the function really
did.
common_read_link() no longer null terminates the link - it's the file
system's responsibility to do that.
fs_read_link() is not supposed to return the length of the link anymore,
but only B_OK for success.
Note, we deviate slightly from POSIX here, where even a buffer too small
would be filled, and no terminating null byte has to be written at all.
We always return an error in case the buffer is too small, and the link
is not partially copied into the buffer.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9652 a95241bf-73f2-0310-859d-f6bbb57e9c96
that are short enough to be placed in the short symlink region.
bfs_read_link() now makes sure that the link read is always null terminated.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9650 a95241bf-73f2-0310-859d-f6bbb57e9c96
Now we free() the run_array allocated by "RunArray()" (as we're supposed to do), thus removing a leak.
Changed some includes from <> to "" just for my personal pleasure.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9648 a95241bf-73f2-0310-859d-f6bbb57e9c96
crashed when used with our BTextView if the STELine struct was 12 byte in size, was just because
libtranslation.so was using BeOS's BTextView, where the size of that struct is 16. In fact, linking against our
libtranslation.so doesn't avoid the crash, while compiling that lib against our BTextView and then linking
against it makes the crash disappear.
Changed the comment near that struct.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9646 a95241bf-73f2-0310-859d-f6bbb57e9c96
Made the FS internal API a bit more consistent.
Removed devfs_unlink(), and devfs_rename() (which was just returning EROFS
anyway) - the devfs now appears completely read-only to the user. All
changes are triggered by kernel internal APIs (most usually through either
the devfs itself (old style drivers), the disk_device_manager, or the
standard device_manager).
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9645 a95241bf-73f2-0310-859d-f6bbb57e9c96
Also implemented the now needed devfs_read_link() function.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9644 a95241bf-73f2-0310-859d-f6bbb57e9c96
yet, though, and just return B_ERROR.
devfs_unpublish_partition() now also returns B_ERROR since it's not yet
implemented.
Refactored the device publishing code, so that implementing devfs_publish_file_device()
will become easy.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9639 a95241bf-73f2-0310-859d-f6bbb57e9c96
* Added resolve_mount_point_to_volume_root() which does what
resolve_volume_root_to_mount_point() did. IOW the latter one didn't
do what it advertised.
* Fixed dir_vnode_to_path(). Basically broken due to the broken
resolve_volume_root_to_mount_point(), but also compared potentially
unrelated vnode IDs (belonging to different volumes).
* Fixed get_dir_path_and_leaf(). It didn't deal correctly with paths
ending in '/' (including the root dir).
* fs_mount() does now accept a NULL fsName, getting the FS name from
the DDM in this case.
* fs_mount() now also supports mounting file images; it lets the DDM
create a file device for them.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9629 a95241bf-73f2-0310-859d-f6bbb57e9c96
done by (currently not existing) devfs functions.
* Overridden GetMediaStatus() and GetGeometry() to return useful data.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9627 a95241bf-73f2-0310-859d-f6bbb57e9c96
B_OK in case the device is not removable; IOW we always have the medium, dude.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9622 a95241bf-73f2-0310-859d-f6bbb57e9c96
New unmount.c that now also use the new API, and accepts the new -f flag to
force unmounts in case of open files.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9572 a95241bf-73f2-0310-859d-f6bbb57e9c96
Readding of replicant or reset of method replicant menu still to be done
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9558 a95241bf-73f2-0310-859d-f6bbb57e9c96
Moved the debug macros into the program flow, so that they don't look so
temporary :)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9557 a95241bf-73f2-0310-859d-f6bbb57e9c96
* fs_mount() and fs_unmount() are now aware of partitions. A device to
be mounted is looked up by the DDM and the mount state and mount
cookie of the corresponding KPartition are updated accordingly.
Still missing is support for mounting files. Moreover the device path
needs to be normalized.
* Added RecursiveLockAutoLocker class to ease the `goto errN' pain a bit.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9555 a95241bf-73f2-0310-859d-f6bbb57e9c96