Subversion Repositories HelenOS

Rev

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
 */