Changeset 75160a6 in mainline for uspace/lib/libfs/libfs.c
- Timestamp:
- 2009-06-28T19:18:15Z (16 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 415c7e0d
- Parents:
- 852b801
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/libfs/libfs.c
r852b801 r75160a6 44 44 #include <dirent.h> 45 45 #include <mem.h> 46 #include <sys/stat.h> 46 47 47 48 /** Register file system server. … … 429 430 } 430 431 432 void libfs_stat(libfs_ops_t *ops, fs_handle_t fs_handle, ipc_callid_t rid, 433 ipc_call_t *request) 434 { 435 dev_handle_t dev_handle = (dev_handle_t) IPC_GET_ARG1(*request); 436 fs_index_t index = (fs_index_t) IPC_GET_ARG2(*request); 437 fs_node_t *fn = ops->node_get(dev_handle, index); 438 439 ipc_callid_t callid; 440 size_t size; 441 if (!ipc_data_read_receive(&callid, &size) || 442 size < sizeof(struct stat)) { 443 ipc_answer_0(callid, EINVAL); 444 ipc_answer_0(rid, EINVAL); 445 return; 446 } 447 448 struct stat *stat = malloc(sizeof(struct stat)); 449 if (!stat) { 450 ipc_answer_0(callid, ENOMEM); 451 ipc_answer_0(rid, ENOMEM); 452 return; 453 } 454 memset(stat, 0, sizeof(struct stat)); 455 456 stat->fs_handle = fs_handle; 457 stat->dev_handle = dev_handle; 458 stat->index = index; 459 stat->lnkcnt = ops->lnkcnt_get(fn); 460 stat->is_file = ops->is_file(fn); 461 stat->size = ops->size_get(fn); 462 463 ipc_data_read_finalize(callid, stat, sizeof(struct stat)); 464 ipc_answer_0(rid, EOK); 465 466 free(stat); 467 } 468 431 469 /** Open VFS triplet. 432 470 *
Note:
See TracChangeset
for help on using the changeset viewer.