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


Ignore:
Timestamp:
2017-03-26T20:46:56Z (8 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()

Location:
uspace/lib/c/generic
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/elf/elf_mod.c

    rf644472 rfcab7ef  
    9696        elf_ld_t elf;
    9797
    98         int ofile = vfs_clone(file, true);
     98        int ofile = vfs_clone(file, -1, true);
    9999        int rc = _vfs_open(ofile, MODE_READ);
    100100        if (rc != EOK) {
  • uspace/lib/c/generic/io/io.c

    rf644472 rfcab7ef  
    114114        int infd = inbox_get("stdin");
    115115        if (infd >= 0) {
    116                 int stdinfd = vfs_clone(infd, false);
     116                int stdinfd = vfs_clone(infd, -1, false);
    117117                assert(stdinfd == 0);
    118118                _vfs_open(stdinfd, MODE_READ);
     
    125125        int outfd = inbox_get("stdout");
    126126        if (outfd >= 0) {
    127                 int stdoutfd = vfs_clone(outfd, false);
     127                int stdoutfd = vfs_clone(outfd, -1, false);
    128128                assert(stdoutfd <= 1);
    129                 while (stdoutfd < 1) {
    130                         stdoutfd = vfs_clone(outfd, false);
    131                 }
     129                while (stdoutfd < 1)
     130                        stdoutfd = vfs_clone(outfd, -1, false);
    132131                _vfs_open(stdoutfd, MODE_APPEND);
    133132                stdout = fdopen(stdoutfd, "a");
     
    139138        int errfd = inbox_get("stderr");
    140139        if (errfd >= 0) {
    141                 int stderrfd = vfs_clone(errfd, false);
     140                int stderrfd = vfs_clone(errfd, -1, false);
    142141                assert(stderrfd <= 2);
    143                 while (stderrfd < 2) {
    144                         stderrfd = vfs_clone(errfd, false);
    145                 }
     142                while (stderrfd < 2)
     143                        stderrfd = vfs_clone(errfd, -1, false);
    146144                _vfs_open(stderrfd, MODE_APPEND);
    147145                stderr = fdopen(stderrfd, "a");
  • 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.