* Consolidated '*' style.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29341 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
+145
-99
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2005-2008, Ingo Weinhold, [email protected].
|
* Copyright 2005-2008, Ingo Weinhold, [email protected].
|
||||||
* Copyright 2002-2008, Axel Dörfler, [email protected].
|
* Copyright 2002-2009, Axel Dörfler, [email protected].
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*
|
*
|
||||||
* Copyright 2001-2002, Travis Geiselbrecht. All rights reserved.
|
* Copyright 2001-2002, Travis Geiselbrecht. All rights reserved.
|
||||||
@@ -443,49 +443,63 @@ mode_t __gUmask = 022;
|
|||||||
/* function declarations */
|
/* function declarations */
|
||||||
|
|
||||||
// file descriptor operation prototypes
|
// file descriptor operation prototypes
|
||||||
static status_t file_read(struct file_descriptor *, off_t pos, void *buffer, size_t *);
|
static status_t file_read(struct file_descriptor* descriptor, off_t pos,
|
||||||
static status_t file_write(struct file_descriptor *, off_t pos, const void *buffer, size_t *);
|
void* buffer, size_t* _bytes);
|
||||||
static off_t file_seek(struct file_descriptor *, off_t pos, int seek_type);
|
static status_t file_write(struct file_descriptor* descriptor, off_t pos,
|
||||||
static void file_free_fd(struct file_descriptor *);
|
const void* buffer, size_t* _bytes);
|
||||||
static status_t file_close(struct file_descriptor *);
|
static off_t file_seek(struct file_descriptor* descriptor, off_t pos,
|
||||||
static status_t file_select(struct file_descriptor *, uint8 event,
|
int seekType);
|
||||||
|
static void file_free_fd(struct file_descriptor* descriptor);
|
||||||
|
static status_t file_close(struct file_descriptor* descriptor);
|
||||||
|
static status_t file_select(struct file_descriptor* descriptor, uint8 event,
|
||||||
struct selectsync* sync);
|
struct selectsync* sync);
|
||||||
static status_t file_deselect(struct file_descriptor *, uint8 event,
|
static status_t file_deselect(struct file_descriptor* descriptor, uint8 event,
|
||||||
struct selectsync* sync);
|
struct selectsync* sync);
|
||||||
static status_t dir_read(struct io_context *, struct file_descriptor *,
|
static status_t dir_read(struct io_context* context,
|
||||||
struct dirent *buffer, size_t bufferSize, uint32 *_count);
|
struct file_descriptor* descriptor, struct dirent* buffer, size_t bufferSize,
|
||||||
|
uint32* _count);
|
||||||
static status_t dir_read(struct io_context* ioContext, struct vnode* vnode,
|
static status_t dir_read(struct io_context* ioContext, struct vnode* vnode,
|
||||||
void* cookie, struct dirent* buffer, size_t bufferSize, uint32* _count);
|
void* cookie, struct dirent* buffer, size_t bufferSize, uint32* _count);
|
||||||
static status_t dir_rewind(struct file_descriptor *);
|
static status_t dir_rewind(struct file_descriptor* descriptor);
|
||||||
static void dir_free_fd(struct file_descriptor *);
|
static void dir_free_fd(struct file_descriptor* descriptor);
|
||||||
static status_t dir_close(struct file_descriptor *);
|
static status_t dir_close(struct file_descriptor* descriptor);
|
||||||
static status_t attr_dir_read(struct io_context *, struct file_descriptor *,
|
static status_t attr_dir_read(struct io_context* context,
|
||||||
struct dirent *buffer, size_t bufferSize, uint32 *_count);
|
struct file_descriptor* descriptor, struct dirent* buffer, size_t bufferSize,
|
||||||
static status_t attr_dir_rewind(struct file_descriptor *);
|
uint32* _count);
|
||||||
static void attr_dir_free_fd(struct file_descriptor *);
|
static status_t attr_dir_rewind(struct file_descriptor* descriptor);
|
||||||
static status_t attr_dir_close(struct file_descriptor *);
|
static void attr_dir_free_fd(struct file_descriptor* descriptor);
|
||||||
static status_t attr_read(struct file_descriptor *, off_t pos, void *buffer, size_t *);
|
static status_t attr_dir_close(struct file_descriptor* descriptor);
|
||||||
static status_t attr_write(struct file_descriptor *, off_t pos, const void *buffer, size_t *);
|
static status_t attr_read(struct file_descriptor* descriptor, off_t pos,
|
||||||
static off_t attr_seek(struct file_descriptor *, off_t pos, int seek_type);
|
void* buffer, size_t* _bytes);
|
||||||
static void attr_free_fd(struct file_descriptor *);
|
static status_t attr_write(struct file_descriptor* descriptor, off_t pos,
|
||||||
static status_t attr_close(struct file_descriptor *);
|
const void* buffer, size_t* _bytes);
|
||||||
static status_t attr_read_stat(struct file_descriptor *, struct stat *);
|
static off_t attr_seek(struct file_descriptor* descriptor, off_t pos,
|
||||||
static status_t attr_write_stat(struct file_descriptor *, const struct stat *, int statMask);
|
int seekType);
|
||||||
static status_t index_dir_read(struct io_context *, struct file_descriptor *,
|
static void attr_free_fd(struct file_descriptor* descriptor);
|
||||||
struct dirent *buffer, size_t bufferSize, uint32 *_count);
|
static status_t attr_close(struct file_descriptor* descriptor);
|
||||||
static status_t index_dir_rewind(struct file_descriptor *);
|
static status_t attr_read_stat(struct file_descriptor* descriptor,
|
||||||
static void index_dir_free_fd(struct file_descriptor *);
|
struct stat* statData);
|
||||||
static status_t index_dir_close(struct file_descriptor *);
|
static status_t attr_write_stat(struct file_descriptor* descriptor,
|
||||||
static status_t query_read(struct io_context *, struct file_descriptor *,
|
const struct stat* descriptor, int statMask);
|
||||||
struct dirent *buffer, size_t bufferSize, uint32 *_count);
|
static status_t index_dir_read(struct io_context* context,
|
||||||
static status_t query_rewind(struct file_descriptor *);
|
struct file_descriptor* descriptor, struct dirent* buffer, size_t bufferSize,
|
||||||
static void query_free_fd(struct file_descriptor *);
|
uint32* _count);
|
||||||
static status_t query_close(struct file_descriptor *);
|
static status_t index_dir_rewind(struct file_descriptor* descriptor);
|
||||||
|
static void index_dir_free_fd(struct file_descriptor* descriptor);
|
||||||
static status_t common_ioctl(struct file_descriptor *, ulong, void *buf, size_t len);
|
static status_t index_dir_close(struct file_descriptor* descriptor);
|
||||||
static status_t common_read_stat(struct file_descriptor *, struct stat *);
|
static status_t query_read(struct io_context* context,
|
||||||
static status_t common_write_stat(struct file_descriptor *, const struct stat *, int statMask);
|
struct file_descriptor* descriptor, struct dirent* buffer, size_t bufferSize,
|
||||||
|
uint32* _count);
|
||||||
|
static status_t query_rewind(struct file_descriptor* descriptor);
|
||||||
|
static void query_free_fd(struct file_descriptor* descriptor);
|
||||||
|
static status_t query_close(struct file_descriptor* descriptor);
|
||||||
|
|
||||||
|
static status_t common_ioctl(struct file_descriptor* descriptor, ulong op,
|
||||||
|
void* buffer, size_t length);
|
||||||
|
static status_t common_read_stat(struct file_descriptor* descriptor,
|
||||||
|
struct stat* statData);
|
||||||
|
static status_t common_write_stat(struct file_descriptor* descriptor,
|
||||||
|
const struct stat* statData, int statMask);
|
||||||
static status_t common_path_read_stat(int fd, char* path, bool traverseLeafLink,
|
static status_t common_path_read_stat(int fd, char* path, bool traverseLeafLink,
|
||||||
struct stat* stat, bool kernel);
|
struct stat* stat, bool kernel);
|
||||||
|
|
||||||
@@ -4101,7 +4115,8 @@ status_t
|
|||||||
vfs_get_module_path(const char* basePath, const char* moduleName,
|
vfs_get_module_path(const char* basePath, const char* moduleName,
|
||||||
char* pathBuffer, size_t bufferSize)
|
char* pathBuffer, size_t bufferSize)
|
||||||
{
|
{
|
||||||
struct vnode *dir, *file;
|
struct vnode* dir;
|
||||||
|
struct vnode* file;
|
||||||
status_t status;
|
status_t status;
|
||||||
size_t length;
|
size_t length;
|
||||||
char* path;
|
char* path;
|
||||||
@@ -4824,34 +4839,26 @@ vfs_getrlimit(int resource, struct rlimit * rlp)
|
|||||||
switch (resource) {
|
switch (resource) {
|
||||||
case RLIMIT_NOFILE:
|
case RLIMIT_NOFILE:
|
||||||
{
|
{
|
||||||
struct io_context *ioctx = get_current_io_context(false);
|
struct io_context* context = get_current_io_context(false);
|
||||||
|
MutexLocker _(context->io_mutex);
|
||||||
|
|
||||||
mutex_lock(&ioctx->io_mutex);
|
rlp->rlim_cur = context->table_size;
|
||||||
|
|
||||||
rlp->rlim_cur = ioctx->table_size;
|
|
||||||
rlp->rlim_max = MAX_FD_TABLE_SIZE;
|
rlp->rlim_max = MAX_FD_TABLE_SIZE;
|
||||||
|
|
||||||
mutex_unlock(&ioctx->io_mutex);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
case RLIMIT_NOVMON:
|
case RLIMIT_NOVMON:
|
||||||
{
|
{
|
||||||
struct io_context *ioctx = get_current_io_context(false);
|
struct io_context* context = get_current_io_context(false);
|
||||||
|
MutexLocker _(context->io_mutex);
|
||||||
|
|
||||||
mutex_lock(&ioctx->io_mutex);
|
rlp->rlim_cur = context->max_monitors;
|
||||||
|
|
||||||
rlp->rlim_cur = ioctx->max_monitors;
|
|
||||||
rlp->rlim_max = MAX_NODE_MONITORS;
|
rlp->rlim_max = MAX_NODE_MONITORS;
|
||||||
|
|
||||||
mutex_unlock(&ioctx->io_mutex);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return EINVAL;
|
return B_BAD_VALUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4867,18 +4874,22 @@ vfs_setrlimit(int resource, const struct rlimit * rlp)
|
|||||||
/* TODO: check getuid() */
|
/* TODO: check getuid() */
|
||||||
if (rlp->rlim_max != RLIM_SAVED_MAX
|
if (rlp->rlim_max != RLIM_SAVED_MAX
|
||||||
&& rlp->rlim_max != MAX_FD_TABLE_SIZE)
|
&& rlp->rlim_max != MAX_FD_TABLE_SIZE)
|
||||||
return EPERM;
|
return B_NOT_ALLOWED;
|
||||||
return vfs_resize_fd_table(get_current_io_context(false), rlp->rlim_cur);
|
|
||||||
|
return vfs_resize_fd_table(get_current_io_context(false),
|
||||||
|
rlp->rlim_cur);
|
||||||
|
|
||||||
case RLIMIT_NOVMON:
|
case RLIMIT_NOVMON:
|
||||||
/* TODO: check getuid() */
|
/* TODO: check getuid() */
|
||||||
if (rlp->rlim_max != RLIM_SAVED_MAX
|
if (rlp->rlim_max != RLIM_SAVED_MAX
|
||||||
&& rlp->rlim_max != MAX_NODE_MONITORS)
|
&& rlp->rlim_max != MAX_NODE_MONITORS)
|
||||||
return EPERM;
|
return B_NOT_ALLOWED;
|
||||||
return vfs_resize_monitor_table(get_current_io_context(false), rlp->rlim_cur);
|
|
||||||
|
return vfs_resize_monitor_table(get_current_io_context(false),
|
||||||
|
rlp->rlim_cur);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return EINVAL;
|
return B_BAD_VALUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5365,7 +5376,8 @@ file_deselect(struct file_descriptor *descriptor, uint8 event,
|
|||||||
|
|
||||||
|
|
||||||
static status_t
|
static status_t
|
||||||
dir_create_entry_ref(dev_t mountID, ino_t parentID, const char *name, int perms, bool kernel)
|
dir_create_entry_ref(dev_t mountID, ino_t parentID, const char* name, int perms,
|
||||||
|
bool kernel)
|
||||||
{
|
{
|
||||||
struct vnode* vnode;
|
struct vnode* vnode;
|
||||||
ino_t newID;
|
ino_t newID;
|
||||||
@@ -5374,7 +5386,8 @@ dir_create_entry_ref(dev_t mountID, ino_t parentID, const char *name, int perms,
|
|||||||
if (name == NULL || *name == '\0')
|
if (name == NULL || *name == '\0')
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
FUNCTION(("dir_create_entry_ref(dev = %ld, ino = %Ld, name = '%s', perms = %d)\n", mountID, parentID, name, perms));
|
FUNCTION(("dir_create_entry_ref(dev = %ld, ino = %Ld, name = '%s', "
|
||||||
|
"perms = %d)\n", mountID, parentID, name, perms));
|
||||||
|
|
||||||
status = get_vnode(mountID, parentID, &vnode, true, false);
|
status = get_vnode(mountID, parentID, &vnode, true, false);
|
||||||
if (status < B_OK)
|
if (status < B_OK)
|
||||||
@@ -5944,10 +5957,12 @@ common_create_link(char *path, char *toPath, bool kernel)
|
|||||||
{
|
{
|
||||||
// path validity checks have to be in the calling function!
|
// path validity checks have to be in the calling function!
|
||||||
char name[B_FILE_NAME_LENGTH];
|
char name[B_FILE_NAME_LENGTH];
|
||||||
struct vnode *directory, *vnode;
|
struct vnode* directory;
|
||||||
|
struct vnode* vnode;
|
||||||
status_t status;
|
status_t status;
|
||||||
|
|
||||||
FUNCTION(("common_create_link(path = %s, toPath = %s, kernel = %d)\n", path, toPath, kernel));
|
FUNCTION(("common_create_link(path = %s, toPath = %s, kernel = %d)\n", path,
|
||||||
|
toPath, kernel));
|
||||||
|
|
||||||
status = path_to_dir_vnode(path, &directory, name, kernel);
|
status = path_to_dir_vnode(path, &directory, name, kernel);
|
||||||
if (status < B_OK)
|
if (status < B_OK)
|
||||||
@@ -6024,12 +6039,14 @@ common_access(char *path, int mode, bool kernel)
|
|||||||
static status_t
|
static status_t
|
||||||
common_rename(int fd, char* path, int newFD, char* newPath, bool kernel)
|
common_rename(int fd, char* path, int newFD, char* newPath, bool kernel)
|
||||||
{
|
{
|
||||||
struct vnode *fromVnode, *toVnode;
|
struct vnode* fromVnode;
|
||||||
|
struct vnode* toVnode;
|
||||||
char fromName[B_FILE_NAME_LENGTH];
|
char fromName[B_FILE_NAME_LENGTH];
|
||||||
char toName[B_FILE_NAME_LENGTH];
|
char toName[B_FILE_NAME_LENGTH];
|
||||||
status_t status;
|
status_t status;
|
||||||
|
|
||||||
FUNCTION(("common_rename(fd = %d, path = %s, newFD = %d, newPath = %s, kernel = %d)\n", fd, path, newFD, newPath, kernel));
|
FUNCTION(("common_rename(fd = %d, path = %s, newFD = %d, newPath = %s, "
|
||||||
|
"kernel = %d)\n", fd, path, newFD, newPath, kernel));
|
||||||
|
|
||||||
status = fd_and_path_to_dir_vnode(fd, path, &fromVnode, fromName, kernel);
|
status = fd_and_path_to_dir_vnode(fd, path, &fromVnode, fromName, kernel);
|
||||||
if (status < B_OK)
|
if (status < B_OK)
|
||||||
@@ -6079,11 +6096,14 @@ common_read_stat(struct file_descriptor *descriptor, struct stat *stat)
|
|||||||
|
|
||||||
|
|
||||||
static status_t
|
static status_t
|
||||||
common_write_stat(struct file_descriptor *descriptor, const struct stat *stat, int statMask)
|
common_write_stat(struct file_descriptor* descriptor, const struct stat* stat,
|
||||||
|
int statMask)
|
||||||
{
|
{
|
||||||
struct vnode* vnode = descriptor->u.vnode;
|
struct vnode* vnode = descriptor->u.vnode;
|
||||||
|
|
||||||
FUNCTION(("common_write_stat(vnode = %p, stat = %p, statMask = %d)\n", vnode, stat, statMask));
|
FUNCTION(("common_write_stat(vnode = %p, stat = %p, statMask = %d)\n", vnode,
|
||||||
|
stat, statMask));
|
||||||
|
|
||||||
if (!HAS_FS_CALL(vnode, write_stat))
|
if (!HAS_FS_CALL(vnode, write_stat))
|
||||||
return EROFS;
|
return EROFS;
|
||||||
|
|
||||||
@@ -6098,9 +6118,11 @@ common_path_read_stat(int fd, char *path, bool traverseLeafLink,
|
|||||||
struct vnode* vnode;
|
struct vnode* vnode;
|
||||||
status_t status;
|
status_t status;
|
||||||
|
|
||||||
FUNCTION(("common_path_read_stat: fd: %d, path '%s', stat %p,\n", fd, path, stat));
|
FUNCTION(("common_path_read_stat: fd: %d, path '%s', stat %p,\n", fd, path,
|
||||||
|
stat));
|
||||||
|
|
||||||
status = fd_and_path_to_vnode(fd, path, traverseLeafLink, &vnode, NULL, kernel);
|
status = fd_and_path_to_vnode(fd, path, traverseLeafLink, &vnode, NULL,
|
||||||
|
kernel);
|
||||||
if (status < 0)
|
if (status < 0)
|
||||||
return status;
|
return status;
|
||||||
|
|
||||||
@@ -6320,11 +6342,14 @@ attr_free_fd(struct file_descriptor *descriptor)
|
|||||||
|
|
||||||
|
|
||||||
static status_t
|
static status_t
|
||||||
attr_read(struct file_descriptor *descriptor, off_t pos, void *buffer, size_t *length)
|
attr_read(struct file_descriptor* descriptor, off_t pos, void* buffer,
|
||||||
|
size_t* length)
|
||||||
{
|
{
|
||||||
struct vnode* vnode = descriptor->u.vnode;
|
struct vnode* vnode = descriptor->u.vnode;
|
||||||
|
|
||||||
FUNCTION(("attr_read: buf %p, pos %Ld, len %p = %ld\n", buffer, pos, length, *length));
|
FUNCTION(("attr_read: buf %p, pos %Ld, len %p = %ld\n", buffer, pos, length,
|
||||||
|
*length));
|
||||||
|
|
||||||
if (!HAS_FS_CALL(vnode, read_attr))
|
if (!HAS_FS_CALL(vnode, read_attr))
|
||||||
return EOPNOTSUPP;
|
return EOPNOTSUPP;
|
||||||
|
|
||||||
@@ -6333,7 +6358,8 @@ attr_read(struct file_descriptor *descriptor, off_t pos, void *buffer, size_t *l
|
|||||||
|
|
||||||
|
|
||||||
static status_t
|
static status_t
|
||||||
attr_write(struct file_descriptor *descriptor, off_t pos, const void *buffer, size_t *length)
|
attr_write(struct file_descriptor* descriptor, off_t pos, const void* buffer,
|
||||||
|
size_t* length)
|
||||||
{
|
{
|
||||||
struct vnode* vnode = descriptor->u.vnode;
|
struct vnode* vnode = descriptor->u.vnode;
|
||||||
|
|
||||||
@@ -6403,7 +6429,8 @@ attr_read_stat(struct file_descriptor *descriptor, struct stat *stat)
|
|||||||
|
|
||||||
|
|
||||||
static status_t
|
static status_t
|
||||||
attr_write_stat(struct file_descriptor *descriptor, const struct stat *stat, int statMask)
|
attr_write_stat(struct file_descriptor* descriptor, const struct stat* stat,
|
||||||
|
int statMask)
|
||||||
{
|
{
|
||||||
struct vnode* vnode = descriptor->u.vnode;
|
struct vnode* vnode = descriptor->u.vnode;
|
||||||
|
|
||||||
@@ -6426,7 +6453,8 @@ attr_remove(int fd, const char *name, bool kernel)
|
|||||||
if (name == NULL || *name == '\0')
|
if (name == NULL || *name == '\0')
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
FUNCTION(("attr_remove: fd = %d, name = \"%s\", kernel %d\n", fd, name, kernel));
|
FUNCTION(("attr_remove: fd = %d, name = \"%s\", kernel %d\n", fd, name,
|
||||||
|
kernel));
|
||||||
|
|
||||||
descriptor = get_fd_and_vnode(fd, &vnode, kernel);
|
descriptor = get_fd_and_vnode(fd, &vnode, kernel);
|
||||||
if (descriptor == NULL)
|
if (descriptor == NULL)
|
||||||
@@ -6444,22 +6472,27 @@ attr_remove(int fd, const char *name, bool kernel)
|
|||||||
|
|
||||||
|
|
||||||
static status_t
|
static status_t
|
||||||
attr_rename(int fromfd, const char *fromName, int tofd, const char *toName, bool kernel)
|
attr_rename(int fromFD, const char* fromName, int toFD, const char* toName,
|
||||||
|
bool kernel)
|
||||||
{
|
{
|
||||||
struct file_descriptor *fromDescriptor, *toDescriptor;
|
struct file_descriptor* fromDescriptor;
|
||||||
struct vnode *fromVnode, *toVnode;
|
struct file_descriptor* toDescriptor;
|
||||||
|
struct vnode* fromVnode;
|
||||||
|
struct vnode* toVnode;
|
||||||
status_t status;
|
status_t status;
|
||||||
|
|
||||||
if (fromName == NULL || *fromName == '\0' || toName == NULL || *toName == '\0')
|
if (fromName == NULL || *fromName == '\0' || toName == NULL
|
||||||
|
|| *toName == '\0')
|
||||||
return B_BAD_VALUE;
|
return B_BAD_VALUE;
|
||||||
|
|
||||||
FUNCTION(("attr_rename: from fd = %d, from name = \"%s\", to fd = %d, to name = \"%s\", kernel %d\n", fromfd, fromName, tofd, toName, kernel));
|
FUNCTION(("attr_rename: from fd = %d, from name = \"%s\", to fd = %d, to "
|
||||||
|
"name = \"%s\", kernel %d\n", fromFD, fromName, toFD, toName, kernel));
|
||||||
|
|
||||||
fromDescriptor = get_fd_and_vnode(fromfd, &fromVnode, kernel);
|
fromDescriptor = get_fd_and_vnode(fromFD, &fromVnode, kernel);
|
||||||
if (fromDescriptor == NULL)
|
if (fromDescriptor == NULL)
|
||||||
return B_FILE_ERROR;
|
return B_FILE_ERROR;
|
||||||
|
|
||||||
toDescriptor = get_fd_and_vnode(tofd, &toVnode, kernel);
|
toDescriptor = get_fd_and_vnode(toFD, &toVnode, kernel);
|
||||||
if (toDescriptor == NULL) {
|
if (toDescriptor == NULL) {
|
||||||
status = B_FILE_ERROR;
|
status = B_FILE_ERROR;
|
||||||
goto err;
|
goto err;
|
||||||
@@ -6574,9 +6607,11 @@ index_dir_rewind(struct file_descriptor *descriptor)
|
|||||||
|
|
||||||
|
|
||||||
static status_t
|
static status_t
|
||||||
index_create(dev_t mountID, const char *name, uint32 type, uint32 flags, bool kernel)
|
index_create(dev_t mountID, const char* name, uint32 type, uint32 flags,
|
||||||
|
bool kernel)
|
||||||
{
|
{
|
||||||
FUNCTION(("index_create(mountID = %ld, name = %s, kernel = %d)\n", mountID, name, kernel));
|
FUNCTION(("index_create(mountID = %ld, name = %s, kernel = %d)\n", mountID,
|
||||||
|
name, kernel));
|
||||||
|
|
||||||
struct fs_mount* mount;
|
struct fs_mount* mount;
|
||||||
status_t status = get_mount(mountID, &mount);
|
status_t status = get_mount(mountID, &mount);
|
||||||
@@ -6626,9 +6661,11 @@ index_free_fd(struct file_descriptor *descriptor)
|
|||||||
|
|
||||||
|
|
||||||
static status_t
|
static status_t
|
||||||
index_name_read_stat(dev_t mountID, const char *name, struct stat *stat, bool kernel)
|
index_name_read_stat(dev_t mountID, const char* name, struct stat* stat,
|
||||||
|
bool kernel)
|
||||||
{
|
{
|
||||||
FUNCTION(("index_remove(mountID = %ld, name = %s, kernel = %d)\n", mountID, name, kernel));
|
FUNCTION(("index_remove(mountID = %ld, name = %s, kernel = %d)\n", mountID,
|
||||||
|
name, kernel));
|
||||||
|
|
||||||
struct fs_mount* mount;
|
struct fs_mount* mount;
|
||||||
status_t status = get_mount(mountID, &mount);
|
status_t status = get_mount(mountID, &mount);
|
||||||
@@ -6651,7 +6688,8 @@ out:
|
|||||||
static status_t
|
static status_t
|
||||||
index_remove(dev_t mountID, const char* name, bool kernel)
|
index_remove(dev_t mountID, const char* name, bool kernel)
|
||||||
{
|
{
|
||||||
FUNCTION(("index_remove(mountID = %ld, name = %s, kernel = %d)\n", mountID, name, kernel));
|
FUNCTION(("index_remove(mountID = %ld, name = %s, kernel = %d)\n", mountID,
|
||||||
|
name, kernel));
|
||||||
|
|
||||||
struct fs_mount* mount;
|
struct fs_mount* mount;
|
||||||
status_t status = get_mount(mountID, &mount);
|
status_t status = get_mount(mountID, &mount);
|
||||||
@@ -6671,19 +6709,20 @@ out:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*! ToDo: the query FS API is still the pretty much the same as in R5.
|
/*! TODO: the query FS API is still the pretty much the same as in R5.
|
||||||
It would be nice if the FS would find some more kernel support
|
It would be nice if the FS would find some more kernel support
|
||||||
for them.
|
for them.
|
||||||
For example, query parsing should be moved into the kernel.
|
For example, query parsing should be moved into the kernel.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
query_open(dev_t device, const char *query, uint32 flags,
|
query_open(dev_t device, const char* query, uint32 flags, port_id port,
|
||||||
port_id port, int32 token, bool kernel)
|
int32 token, bool kernel)
|
||||||
{
|
{
|
||||||
struct fs_mount* mount;
|
struct fs_mount* mount;
|
||||||
void* cookie;
|
void* cookie;
|
||||||
|
|
||||||
FUNCTION(("query_open(device = %ld, query = \"%s\", kernel = %d)\n", device, query, kernel));
|
FUNCTION(("query_open(device = %ld, query = \"%s\", kernel = %d)\n", device,
|
||||||
|
query, kernel));
|
||||||
|
|
||||||
status_t status = get_mount(device, &mount);
|
status_t status = get_mount(device, &mount);
|
||||||
if (status < B_OK)
|
if (status < B_OK)
|
||||||
@@ -7638,7 +7677,8 @@ _kern_get_next_fd_info(team_id teamID, uint32 *_cookie, fd_info *info,
|
|||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
_kern_open_entry_ref(dev_t device, ino_t inode, const char *name, int openMode, int perms)
|
_kern_open_entry_ref(dev_t device, ino_t inode, const char* name, int openMode,
|
||||||
|
int perms)
|
||||||
{
|
{
|
||||||
if (openMode & O_CREAT)
|
if (openMode & O_CREAT)
|
||||||
return file_create_entry_ref(device, inode, name, openMode, perms, true);
|
return file_create_entry_ref(device, inode, name, openMode, perms, true);
|
||||||
@@ -7753,7 +7793,8 @@ _kern_unlock_node(int fd)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
_kern_create_dir_entry_ref(dev_t device, ino_t inode, const char *name, int perms)
|
_kern_create_dir_entry_ref(dev_t device, ino_t inode, const char* name,
|
||||||
|
int perms)
|
||||||
{
|
{
|
||||||
return dir_create_entry_ref(device, inode, name, perms, true);
|
return dir_create_entry_ref(device, inode, name, perms, true);
|
||||||
}
|
}
|
||||||
@@ -8085,7 +8126,8 @@ _kern_remove_attr(int fd, const char *name)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
_kern_rename_attr(int fromFile, const char *fromName, int toFile, const char *toName)
|
_kern_rename_attr(int fromFile, const char* fromName, int toFile,
|
||||||
|
const char* toName)
|
||||||
{
|
{
|
||||||
return attr_rename(fromFile, fromName, toFile, toName, true);
|
return attr_rename(fromFile, fromName, toFile, toName, true);
|
||||||
}
|
}
|
||||||
@@ -8147,8 +8189,9 @@ _kern_setcwd(int fd, const char *path)
|
|||||||
|
|
||||||
|
|
||||||
dev_t
|
dev_t
|
||||||
_user_mount(const char *userPath, const char *userDevice, const char *userFileSystem,
|
_user_mount(const char* userPath, const char* userDevice,
|
||||||
uint32 flags, const char *userArgs, size_t argsLength)
|
const char* userFileSystem, uint32 flags, const char* userArgs,
|
||||||
|
size_t argsLength)
|
||||||
{
|
{
|
||||||
char fileSystem[B_FILE_NAME_LENGTH];
|
char fileSystem[B_FILE_NAME_LENGTH];
|
||||||
KPath path, device;
|
KPath path, device;
|
||||||
@@ -8603,7 +8646,8 @@ _user_unlock_node(int fd)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
_user_create_dir_entry_ref(dev_t device, ino_t inode, const char *userName, int perms)
|
_user_create_dir_entry_ref(dev_t device, ino_t inode, const char* userName,
|
||||||
|
int perms)
|
||||||
{
|
{
|
||||||
char name[B_FILE_NAME_LENGTH];
|
char name[B_FILE_NAME_LENGTH];
|
||||||
status_t status;
|
status_t status;
|
||||||
@@ -8656,7 +8700,8 @@ _user_remove_dir(int fd, const char *userPath)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
_user_read_link(int fd, const char *userPath, char *userBuffer, size_t *userBufferSize)
|
_user_read_link(int fd, const char* userPath, char* userBuffer,
|
||||||
|
size_t* userBufferSize)
|
||||||
{
|
{
|
||||||
KPath pathBuffer(B_PATH_NAME_LENGTH + 1), linkBuffer;
|
KPath pathBuffer(B_PATH_NAME_LENGTH + 1), linkBuffer;
|
||||||
if (pathBuffer.InitCheck() != B_OK || linkBuffer.InitCheck() != B_OK)
|
if (pathBuffer.InitCheck() != B_OK || linkBuffer.InitCheck() != B_OK)
|
||||||
@@ -9064,7 +9109,8 @@ _user_remove_attr(int fd, const char *userName)
|
|||||||
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
_user_rename_attr(int fromFile, const char *userFromName, int toFile, const char *userToName)
|
_user_rename_attr(int fromFile, const char* userFromName, int toFile,
|
||||||
|
const char* userToName)
|
||||||
{
|
{
|
||||||
if (!IS_USER_ADDRESS(userFromName)
|
if (!IS_USER_ADDRESS(userFromName)
|
||||||
|| !IS_USER_ADDRESS(userToName))
|
|| !IS_USER_ADDRESS(userToName))
|
||||||
|
|||||||
Reference in New Issue
Block a user