Changeset fcab7ef in mainline for uspace/lib/c/generic
- Timestamp:
- 2017-03-26T20:46:56Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- fe91f66
- Parents:
- f644472
- Location:
- uspace/lib/c/generic
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/elf/elf_mod.c
rf644472 rfcab7ef 96 96 elf_ld_t elf; 97 97 98 int ofile = vfs_clone(file, true);98 int ofile = vfs_clone(file, -1, true); 99 99 int rc = _vfs_open(ofile, MODE_READ); 100 100 if (rc != EOK) { -
uspace/lib/c/generic/io/io.c
rf644472 rfcab7ef 114 114 int infd = inbox_get("stdin"); 115 115 if (infd >= 0) { 116 int stdinfd = vfs_clone(infd, false);116 int stdinfd = vfs_clone(infd, -1, false); 117 117 assert(stdinfd == 0); 118 118 _vfs_open(stdinfd, MODE_READ); … … 125 125 int outfd = inbox_get("stdout"); 126 126 if (outfd >= 0) { 127 int stdoutfd = vfs_clone(outfd, false);127 int stdoutfd = vfs_clone(outfd, -1, false); 128 128 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); 132 131 _vfs_open(stdoutfd, MODE_APPEND); 133 132 stdout = fdopen(stdoutfd, "a"); … … 139 138 int errfd = inbox_get("stderr"); 140 139 if (errfd >= 0) { 141 int stderrfd = vfs_clone(errfd, false);140 int stderrfd = vfs_clone(errfd, -1, false); 142 141 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); 146 144 _vfs_open(stderrfd, MODE_APPEND); 147 145 stderr = fdopen(stderrfd, "a"); -
uspace/lib/c/generic/vfs/vfs.c
rf644472 rfcab7ef 76 76 r = ENOENT; 77 77 else 78 r = vfs_clone(root_fd, true);78 r = vfs_clone(root_fd, -1, true); 79 79 fibril_mutex_unlock(&root_mutex); 80 80 return r; … … 86 86 if (root_fd >= 0) 87 87 close(root_fd); 88 root_fd = vfs_clone(nroot, true);88 root_fd = vfs_clone(nroot, -1, true); 89 89 fibril_mutex_unlock(&root_mutex); 90 90 } … … 1071 1071 } 1072 1072 1073 /** Duplicate open file.1074 *1075 * Duplicate open file under a new file descriptor.1076 *1077 * @param oldfd Old file descriptor1078 * @param newfd New file descriptor1079 * @return 0 on success. On error -1 is returned and errno is set1080 */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 1101 1073 static void process_mp(const char *path, struct stat *stat, list_t *mtab_list) 1102 1074 { … … 1254 1226 } 1255 1227 1256 int vfs_clone(int file , bool high_descriptor)1228 int vfs_clone(int file_from, int file_to, bool high_descriptor) 1257 1229 { 1258 1230 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); 1261 1233 vfs_exchange_end(vfs_exch); 1262 1234 return rc;
Note:
See TracChangeset
for help on using the changeset viewer.