Remove nested functions from disk and file read hooks.
* include/grub/disk.h (grub_disk_read_hook_t): New type. (struct grub_disk): Add read_hook_data member. * include/grub/file.h (struct grub_file): Likewise. * include/grub/fshelp.h (grub_fshelp_read_file): Add read_hook_data argument. Update all callers.
This commit is contained in:
parent
df6da5a52d
commit
4eb8b75659
29 changed files with 409 additions and 345 deletions
|
@ -525,11 +525,11 @@ grub_ext2_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock)
|
|||
POS. Return the amount of read bytes in READ. */
|
||||
static grub_ssize_t
|
||||
grub_ext2_read_file (grub_fshelp_node_t node,
|
||||
void NESTED_FUNC_ATTR (*read_hook) (grub_disk_addr_t sector,
|
||||
unsigned offset, unsigned length),
|
||||
grub_disk_read_hook_t read_hook, void *read_hook_data,
|
||||
grub_off_t pos, grub_size_t len, char *buf)
|
||||
{
|
||||
return grub_fshelp_read_file (node->data->disk, node, read_hook,
|
||||
return grub_fshelp_read_file (node->data->disk, node,
|
||||
read_hook, read_hook_data,
|
||||
pos, len, buf, grub_ext2_read_block,
|
||||
grub_cpu_to_le32 (node->inode.size)
|
||||
| (((grub_off_t) grub_cpu_to_le32 (node->inode.size_high)) << 32),
|
||||
|
@ -676,7 +676,7 @@ grub_ext2_read_symlink (grub_fshelp_node_t node)
|
|||
grub_le_to_cpu32 (diro->inode.size));
|
||||
else
|
||||
{
|
||||
grub_ext2_read_file (diro, 0, 0,
|
||||
grub_ext2_read_file (diro, 0, 0, 0,
|
||||
grub_le_to_cpu32 (diro->inode.size),
|
||||
symlink);
|
||||
if (grub_errno)
|
||||
|
@ -709,7 +709,7 @@ grub_ext2_iterate_dir (grub_fshelp_node_t dir,
|
|||
{
|
||||
struct ext2_dirent dirent;
|
||||
|
||||
grub_ext2_read_file (diro, 0, fpos, sizeof (struct ext2_dirent),
|
||||
grub_ext2_read_file (diro, 0, 0, fpos, sizeof (struct ext2_dirent),
|
||||
(char *) &dirent);
|
||||
if (grub_errno)
|
||||
return 0;
|
||||
|
@ -723,7 +723,7 @@ grub_ext2_iterate_dir (grub_fshelp_node_t dir,
|
|||
struct grub_fshelp_node *fdiro;
|
||||
enum grub_fshelp_filetype type = GRUB_FSHELP_UNKNOWN;
|
||||
|
||||
grub_ext2_read_file (diro, 0, fpos + sizeof (struct ext2_dirent),
|
||||
grub_ext2_read_file (diro, 0, 0, fpos + sizeof (struct ext2_dirent),
|
||||
dirent.namelen, filename);
|
||||
if (grub_errno)
|
||||
return 0;
|
||||
|
@ -850,7 +850,8 @@ grub_ext2_read (grub_file_t file, char *buf, grub_size_t len)
|
|||
{
|
||||
struct grub_ext2_data *data = (struct grub_ext2_data *) file->data;
|
||||
|
||||
return grub_ext2_read_file (&data->diropen, file->read_hook,
|
||||
return grub_ext2_read_file (&data->diropen,
|
||||
file->read_hook, file->read_hook_data,
|
||||
file->offset, len, buf);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue