// reiserfs_read static status_t reiserfs_read(fs_volume *fs, fs_vnode *_node, void *cookie, off_t pos, void *buffer, size_t *bufferSize) { TOUCH(fs); // FUNCTION_START(); // Volume *volume = (Volume*)fs->private_volume; VNode *node = (VNode*)_node->private_node; FUNCTION(("((%Ld: %lu, %lu), %Ld, %p, %lu)\n", node->GetID(), node->GetDirID(), node->GetObjectID(), pos, buffer, *bufferSize)); status_t error = B_OK; // don't read anything but files if (!node->IsFile()) { if (node->IsDir()) error = B_IS_A_DIRECTORY; else error = B_BAD_VALUE; } // read StreamReader *reader = (StreamReader*)cookie; if (error == B_OK) { error = reader->Resume(); if (error == B_OK) { error = reader->ReadAt(pos, buffer, *bufferSize, bufferSize); reader->Suspend(); } } RETURN_ERROR(error); }