203
/** Perform a node open operation.
205
* @return EOK on success or an error code from errno.h.
208
int vfs_open_node_internal(vfs_lookup_res_t *result)
210
async_exch_t *exch = vfs_exchange_grab(result->triplet.fs_handle);
213
aid_t req = async_send_2(exch, VFS_OUT_OPEN_NODE,
214
(sysarg_t) result->triplet.service_id,
215
(sysarg_t) result->triplet.index, &answer);
218
async_wait_for(req, &rc);
219
vfs_exchange_release(exch);
223
MERGE_LOUP32(IPC_GET_ARG1(answer), IPC_GET_ARG2(answer));
224
result->lnkcnt = (unsigned int) IPC_GET_ARG3(answer);
225
if (IPC_GET_ARG4(answer) & L_FILE)
226
result->type = VFS_NODE_FILE;
227
else if (IPC_GET_ARG4(answer) & L_DIRECTORY)
228
result->type = VFS_NODE_DIRECTORY;
230
result->type = VFS_NODE_UNKNOWN;