Changeset fcab7ef in mainline for uspace/lib/c/generic/vfs/vfs.c


Ignore:
Timestamp:
2017-03-26T20:46:56Z (7 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
fe91f66
Parents:
f644472
Message:

Merge dup2() into vfs_clone()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/vfs/vfs.c

    rf644472 rfcab7ef  
    7676                r = ENOENT;
    7777        else
    78                 r = vfs_clone(root_fd, true);
     78                r = vfs_clone(root_fd, -1, true);
    7979        fibril_mutex_unlock(&root_mutex);
    8080        return r;
     
    8686        if (root_fd >= 0)
    8787                close(root_fd);
    88         root_fd = vfs_clone(nroot, true);
     88        root_fd = vfs_clone(nroot, -1, true);
    8989        fibril_mutex_unlock(&root_mutex);
    9090}
     
    10711071}
    10721072
    1073 /** Duplicate open file.
    1074  *
    1075  * Duplicate open file under a new file descriptor.
    1076  *
    1077  * @param oldfd Old file descriptor
    1078  * @param newfd New file descriptor
    1079  * @return 0 on success. On error -1 is returned and errno is set
    1080  */
    1081 int dup2(int oldfd, int newfd)
    1082 {
    1083         async_exch_t *exch = vfs_exchange_begin();
    1084        
    1085         sysarg_t ret;
    1086         sysarg_t rc = async_req_2_1(exch, VFS_IN_DUP, oldfd, newfd, &ret);
    1087        
    1088         vfs_exchange_end(exch);
    1089        
    1090         if (rc == EOK)
    1091                 rc = ret;
    1092        
    1093         if (rc != EOK) {
    1094                 errno = rc;
    1095                 return -1;
    1096         }
    1097        
    1098         return 0;
    1099 }
    1100 
    11011073static void process_mp(const char *path, struct stat *stat, list_t *mtab_list)
    11021074{
     
    12541226}
    12551227
    1256 int vfs_clone(int file, bool high_descriptor)
     1228int vfs_clone(int file_from, int file_to, bool high_descriptor)
    12571229{
    12581230        async_exch_t *vfs_exch = vfs_exchange_begin();
    1259         int rc = async_req_2_0(vfs_exch, VFS_IN_CLONE, (sysarg_t) file,
    1260             (sysarg_t) high_descriptor);
     1231        int rc = async_req_3_0(vfs_exch, VFS_IN_CLONE, (sysarg_t) file_from,
     1232            (sysarg_t) file_to, (sysarg_t) high_descriptor);
    12611233        vfs_exchange_end(vfs_exch);
    12621234        return rc;
Note: See TracChangeset for help on using the changeset viewer.