Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/vfs/vfs_ops.c

    r6ad454f rd2c8533  
    8686}
    8787
    88 int vfs_op_clone(int oldfd, int newfd, bool desc, int *out_fd)
     88int vfs_op_clone(int oldfd, int newfd, bool desc)
    8989{
    9090        int rc;
     
    102102
    103103        if (newfd != -1) {
     104                /* Make sure newfd is closed. */
     105                (void) vfs_fd_free(newfd);
    104106                /* Assign the old file to newfd. */
    105107                rc = vfs_fd_assign(oldfile, newfd);
    106                 *out_fd = newfd;
    107108        } else {
    108109                vfs_file_t *newfile;
    109                 rc = vfs_fd_alloc(&newfile, desc, out_fd);
    110                 if (rc == EOK) {
     110                int newfd = vfs_fd_alloc(&newfile, desc);
     111                if (newfd >= 0) {
    111112                        newfile->node = oldfile->node;
    112113                        newfile->permissions = oldfile->permissions;
     
    115116                        vfs_file_put(newfile);
    116117                }
     118                rc = newfd;
    117119        }
    118120        vfs_file_put(oldfile);
     
    223225
    224226int vfs_op_mount(int mpfd, unsigned service_id, unsigned flags,
    225     unsigned instance, const char *opts, const char *fs_name, int *out_fd)
     227    unsigned instance, const char *opts, const char *fs_name, int *outfd)
    226228{
    227229        int rc;
    228230        vfs_file_t *mp = NULL;
    229231        vfs_file_t *file = NULL;
    230         *out_fd = -1;
     232        int fd = -1;
    231233       
    232234        if (!(flags & VFS_MOUNT_CONNECT_ONLY)) {
     
    254256       
    255257        if (!(flags & VFS_MOUNT_NO_REF)) {
    256                 rc = vfs_fd_alloc(&file, false, out_fd);
    257                 if (rc != EOK) {
     258                fd = vfs_fd_alloc(&file, false);
     259                if (fd < 0) {
     260                        rc = fd;
    258261                        goto out;
    259262                }
     
    294297                vfs_file_put(file);
    295298
    296         if (rc != EOK && *out_fd >= 0) {
    297                 vfs_fd_free(*out_fd);
    298                 *out_fd = -1;
    299         }
    300        
     299        if (rc != EOK && fd >= 0) {
     300                vfs_fd_free(fd);
     301                fd = 0;
     302        }
     303       
     304        *outfd = fd;
    301305        return rc;
    302306}
     
    826830}
    827831
    828 int vfs_op_wait_handle(bool high_fd, int *out_fd)
    829 {
    830         return vfs_wait_handle_internal(high_fd, out_fd);
     832int vfs_op_wait_handle(bool high_fd)
     833{
     834        return vfs_wait_handle_internal(high_fd);
    831835}
    832836
     
    890894       
    891895        vfs_file_t *file;
    892         rc = vfs_fd_alloc(&file, false, out_fd);
    893         if (rc != EOK) {
     896        int fd = vfs_fd_alloc(&file, false);
     897        if (fd < 0) {
    894898                vfs_node_put(node);
    895899                vfs_file_put(parent);
    896                 return rc;
     900                return fd;
    897901        }
    898902        assert(file != NULL);
     
    908912        fibril_rwlock_read_unlock(&namespace_rwlock);
    909913
     914        *out_fd = fd;
    910915        return EOK;
    911916}
Note: See TracChangeset for help on using the changeset viewer.