Rev 3282 | Rev 3308 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3282 | Rev 3307 | ||
---|---|---|---|
Line 704... | Line 704... | ||
704 | void fat_lookup(ipc_callid_t rid, ipc_call_t *request) |
704 | void fat_lookup(ipc_callid_t rid, ipc_call_t *request) |
705 | { |
705 | { |
706 | libfs_lookup(&fat_libfs_ops, fat_reg.fs_handle, rid, request); |
706 | libfs_lookup(&fat_libfs_ops, fat_reg.fs_handle, rid, request); |
707 | } |
707 | } |
708 | 708 | ||
- | 709 | void fat_read(ipc_callid_t rid, ipc_call_t *request) |
|
- | 710 | { |
|
- | 711 | dev_handle_t dev_handle = (dev_handle_t)IPC_GET_ARG1(*request); |
|
- | 712 | fs_index_t index = (fs_index_t)IPC_GET_ARG2(*request); |
|
- | 713 | off_t pos = (off_t)IPC_GET_ARG3(*request); |
|
- | 714 | fat_node_t *nodep = (fat_node_t *)fat_node_get(dev_handle, index); |
|
- | 715 | if (!nodep) { |
|
- | 716 | ipc_answer_0(rid, ENOENT); |
|
- | 717 | return; |
|
- | 718 | } |
|
- | 719 | ||
- | 720 | ipc_callid_t callid; |
|
- | 721 | size_t len; |
|
- | 722 | if (!ipc_data_write_receive(&callid, &len)) { |
|
- | 723 | fat_node_put(nodep); |
|
- | 724 | ipc_answer_0(callid, EINVAL); |
|
- | 725 | ipc_answer_0(rid, EINVAL); |
|
- | 726 | return; |
|
- | 727 | } |
|
- | 728 | ||
- | 729 | if (nodep->type == FAT_FILE) { |
|
- | 730 | /* TODO */ |
|
- | 731 | fat_node_put(nodep); |
|
- | 732 | ipc_answer_0(callid, ENOTSUP); |
|
- | 733 | ipc_answer_0(rid, ENOTSUP); |
|
- | 734 | return; |
|
- | 735 | } else { |
|
- | 736 | assert(nodep->type == FAT_DIRECTORY); |
|
- | 737 | /* TODO */ |
|
- | 738 | fat_node_put(nodep); |
|
- | 739 | ipc_answer_0(callid, ENOTSUP); |
|
- | 740 | ipc_answer_0(rid, ENOTSUP); |
|
- | 741 | return; |
|
- | 742 | } |
|
- | 743 | ||
- | 744 | fat_node_put(nodep); |
|
- | 745 | } |
|
- | 746 | ||
709 | /** |
747 | /** |
710 | * @} |
748 | * @} |
711 | */ |
749 | */ |