On Wed, Jul 22, 2009 at 5:16 AM, Pavel Roskin<pro...@gnu.org> wrote: > No callers need the previous offset. Returning -1 with implicit cast to > grub_off_t required a cast just to check for errors. This also makes > grub_file_seek() more similar to fseek(). > > ChangeLog: > > * kern/file.c (grub_file_seek): Return grub_err_t. Adjust all > callers that check the return value. Good idea but you forgot to update the following entry: ./script/lua/grub_lib.c:270: offset = grub_file_seek (file, offset);
> --- > commands/minicmd.c | 4 ++-- > font/font.c | 2 +- > include/grub/file.h | 2 +- > kern/elf.c | 10 +++++----- > kern/file.c | 12 ++++-------- > loader/aout.c | 2 +- > loader/i386/bsd.c | 2 +- > loader/i386/bsdXX.c | 10 +++++----- > loader/i386/multiboot.c | 2 +- > loader/i386/multiboot_elfxx.c | 4 ++-- > loader/macho.c | 14 +++++++------- > loader/xnu_resume.c | 2 +- > 12 files changed, 31 insertions(+), 35 deletions(-) > > diff --git a/commands/minicmd.c b/commands/minicmd.c > index 1f5abae..bc6458d 100644 > --- a/commands/minicmd.c > +++ b/commands/minicmd.c > @@ -188,7 +188,7 @@ grub_rescue_cmd_testload (int argc, char *argv[]) > > /* Read sequentially again. */ > grub_printf ("Reading %s sequentially again", argv[0]); > - if (grub_file_seek (file, 0) < 0) > + if (grub_file_seek (file, 0) != GRUB_ERR_NONE) > goto fail; > > for (pos = 0; pos < size; pos += GRUB_DISK_SECTOR_SIZE) > @@ -216,7 +216,7 @@ grub_rescue_cmd_testload (int argc, char *argv[]) > > pos -= GRUB_DISK_SECTOR_SIZE; > > - if (grub_file_seek (file, pos) < 0) > + if (grub_file_seek (file, pos) != GRUB_ERR_NONE) > goto fail; > > if (grub_file_read (file, sector, GRUB_DISK_SECTOR_SIZE) > diff --git a/font/font.c b/font/font.c > index a812919..67b97d2 100644 > --- a/font/font.c > +++ b/font/font.c > @@ -530,7 +530,7 @@ grub_font_load (const char *filename) > grub_printf("Unhandled section type, skipping.\n"); > #endif > grub_off_t section_end = grub_file_tell (file) + section.length; > - if ((int) grub_file_seek (file, section_end) == -1) > + if (grub_file_seek (file, section_end) != GRUB_ERR_NONE) > goto fail; > } > } > diff --git a/include/grub/file.h b/include/grub/file.h > index 2aacf93..88fa088 100644 > --- a/include/grub/file.h > +++ b/include/grub/file.h > @@ -54,7 +54,7 @@ char *EXPORT_FUNC(grub_file_get_device_name) (const char > *name); > grub_file_t EXPORT_FUNC(grub_file_open) (const char *name); > grub_ssize_t EXPORT_FUNC(grub_file_read) (grub_file_t file, void *buf, > grub_size_t len); > -grub_off_t EXPORT_FUNC(grub_file_seek) (grub_file_t file, grub_off_t offset); > +grub_err_t EXPORT_FUNC(grub_file_seek) (grub_file_t file, grub_off_t offset); > grub_err_t EXPORT_FUNC(grub_file_close) (grub_file_t file); > > static inline grub_off_t > diff --git a/kern/elf.c b/kern/elf.c > index f141610..fdb7d94 100644 > --- a/kern/elf.c > +++ b/kern/elf.c > @@ -67,7 +67,7 @@ grub_elf_file (grub_file_t file) > > elf->file = file; > > - if (grub_file_seek (elf->file, 0) == (grub_off_t) -1) > + if (grub_file_seek (elf->file, 0) != GRUB_ERR_NONE) > goto fail; > > if (grub_file_read (elf->file, &elf->ehdr, sizeof (elf->ehdr)) > @@ -130,7 +130,7 @@ grub_elf32_load_phdrs (grub_elf_t elf) > if (! elf->phdrs) > return grub_errno; > > - if ((grub_file_seek (elf->file, elf->ehdr.ehdr32.e_phoff) == (grub_off_t) > -1) > + if ((grub_file_seek (elf->file, elf->ehdr.ehdr32.e_phoff) != GRUB_ERR_NONE) > || (grub_file_read (elf->file, elf->phdrs, phdrs_size) != phdrs_size)) > { > grub_error_push (); > @@ -243,7 +243,7 @@ grub_elf32_load (grub_elf_t _elf, grub_elf32_load_hook_t > _load_hook, > (unsigned long long) load_addr, > (unsigned long long) phdr->p_memsz); > > - if (grub_file_seek (elf->file, phdr->p_offset) == (grub_off_t) -1) > + if (grub_file_seek (elf->file, phdr->p_offset) != GRUB_ERR_NONE) > { > grub_error_push (); > return grub_error (GRUB_ERR_BAD_OS, > @@ -309,7 +309,7 @@ grub_elf64_load_phdrs (grub_elf_t elf) > if (! elf->phdrs) > return grub_errno; > > - if ((grub_file_seek (elf->file, elf->ehdr.ehdr64.e_phoff) == (grub_off_t) > -1) > + if ((grub_file_seek (elf->file, elf->ehdr.ehdr64.e_phoff) != GRUB_ERR_NONE) > || (grub_file_read (elf->file, elf->phdrs, phdrs_size) != phdrs_size)) > { > grub_error_push (); > @@ -423,7 +423,7 @@ grub_elf64_load (grub_elf_t _elf, grub_elf64_load_hook_t > _load_hook, > (unsigned long long) load_addr, > (unsigned long long) phdr->p_memsz); > > - if (grub_file_seek (elf->file, phdr->p_offset) == (grub_off_t) -1) > + if (grub_file_seek (elf->file, phdr->p_offset) != GRUB_ERR_NONE) > { > grub_error_push (); > return grub_error (GRUB_ERR_BAD_OS, > diff --git a/kern/file.c b/kern/file.c > index 9b56b88..647fb8c 100644 > --- a/kern/file.c > +++ b/kern/file.c > @@ -141,19 +141,15 @@ grub_file_close (grub_file_t file) > return grub_errno; > } > > -grub_off_t > +grub_err_t > grub_file_seek (grub_file_t file, grub_off_t offset) > { > - grub_off_t old; > - > if (offset > file->size) > { > - grub_error (GRUB_ERR_OUT_OF_RANGE, > - "attempt to seek outside of the file"); > - return -1; > + return grub_error (GRUB_ERR_OUT_OF_RANGE, > + "attempt to seek outside of the file"); > } > > - old = file->offset; > file->offset = offset; > - return old; > + return GRUB_ERR_NONE; > } > diff --git a/loader/aout.c b/loader/aout.c > index 0254b6a..a700771 100644 > --- a/loader/aout.c > +++ b/loader/aout.c > @@ -43,7 +43,7 @@ grub_aout_load (grub_file_t file, int offset, > int load_size, > grub_addr_t bss_end_addr) > { > - if ((grub_file_seek (file, offset)) == (grub_off_t) - 1) > + if (grub_file_seek (file, offset) != GRUB_ERR_NONE) > return grub_errno; > > if (!load_size) > diff --git a/loader/i386/bsd.c b/loader/i386/bsd.c > index 468e6d0..f592f81 100644 > --- a/loader/i386/bsd.c > +++ b/loader/i386/bsd.c > @@ -610,7 +610,7 @@ grub_bsd_load_aout (grub_file_t file) > int ofs, align_page; > union grub_aout_header ah; > > - if ((grub_file_seek (file, 0)) == (grub_off_t) - 1) > + if ((grub_file_seek (file, 0)) != GRUB_ERR_NONE) > return grub_errno; > > if (grub_file_read (file, &ah, sizeof (ah)) != sizeof (ah)) > diff --git a/loader/i386/bsdXX.c b/loader/i386/bsdXX.c > index 3f15579..2ae542e 100644 > --- a/loader/i386/bsdXX.c > +++ b/loader/i386/bsdXX.c > @@ -13,7 +13,7 @@ load (grub_file_t file, void *where, grub_off_t off, > grub_size_t size) > if (PTR_TO_UINT32 (where) + size > grub_os_area_addr + grub_os_area_size) > return grub_error (GRUB_ERR_OUT_OF_RANGE, > "Not enough memory for the module"); > - if (grub_file_seek (file, off) == (grub_off_t) -1) > + if (grub_file_seek (file, off) != GRUB_ERR_NONE) > return grub_errno; > if (grub_file_read (file, where, size) > != (grub_ssize_t) size) > @@ -29,7 +29,7 @@ load (grub_file_t file, void *where, grub_off_t off, > grub_size_t size) > static inline grub_err_t > read_headers (grub_file_t file, Elf_Ehdr *e, char **shdr) > { > - if (grub_file_seek (file, 0) == (grub_off_t) -1) > + if (grub_file_seek (file, 0) != GRUB_ERR_NONE) > return grub_errno; > > if (grub_file_read (file, (char *) e, sizeof (*e)) != sizeof (*e)) > @@ -55,7 +55,7 @@ read_headers (grub_file_t file, Elf_Ehdr *e, char **shdr) > if (! *shdr) > return grub_errno; > > - if (grub_file_seek (file, e->e_shoff) == (grub_off_t) -1) > + if (grub_file_seek (file, e->e_shoff) != GRUB_ERR_NONE) > return grub_errno; > > if (grub_file_read (file, *shdr, e->e_shnum * e->e_shentsize) > @@ -264,7 +264,7 @@ SUFFIX (grub_freebsd_load_elf_meta) (grub_file_t file, > grub_addr_t *kern_end) > symstart = curload = ALIGN_UP (*kern_end, sizeof (grub_freebsd_addr_t)); > *((grub_freebsd_addr_t *) UINT_TO_PTR (curload)) = symsize; > curload += sizeof (grub_freebsd_addr_t); > - if (grub_file_seek (file, symoff) == (grub_off_t) -1) > + if (grub_file_seek (file, symoff) != GRUB_ERR_NONE) > return grub_errno; > sym = (Elf_Sym *) UINT_TO_PTR (curload); > if (grub_file_read (file, UINT_TO_PTR (curload), symsize) != > @@ -278,7 +278,7 @@ SUFFIX (grub_freebsd_load_elf_meta) (grub_file_t file, > grub_addr_t *kern_end) > > *((grub_freebsd_addr_t *) UINT_TO_PTR (curload)) = strsize; > curload += sizeof (grub_freebsd_addr_t); > - if (grub_file_seek (file, stroff) == (grub_off_t) -1) > + if (grub_file_seek (file, stroff) != GRUB_ERR_NONE) > return grub_errno; > str = (char *) UINT_TO_PTR (curload); > if (grub_file_read (file, UINT_TO_PTR (curload), strsize) > diff --git a/loader/i386/multiboot.c b/loader/i386/multiboot.c > index 87ffcae..fc42cb1 100644 > --- a/loader/i386/multiboot.c > +++ b/loader/i386/multiboot.c > @@ -293,7 +293,7 @@ grub_multiboot (int argc, char *argv[]) > > grub_multiboot_payload_orig = (long) playground + > RELOCATOR_SIZEOF(forward); > > - if ((grub_file_seek (file, offset)) == (grub_off_t) - 1) > + if ((grub_file_seek (file, offset)) != GRUB_ERR_NONE) > goto fail; > > grub_file_read (file, (void *) grub_multiboot_payload_orig, load_size); > diff --git a/loader/i386/multiboot_elfxx.c b/loader/i386/multiboot_elfxx.c > index 77c4711..f1b7233 100644 > --- a/loader/i386/multiboot_elfxx.c > +++ b/loader/i386/multiboot_elfxx.c > @@ -115,8 +115,8 @@ CONCAT(grub_multiboot_load_elf, XX) (grub_file_t file, > void *buffer) > grub_dprintf ("multiboot_loader", "segment %d: paddr=0x%lx, > memsz=0x%lx, vaddr=0x%lx\n", > i, (long) phdr(i)->p_paddr, (long) phdr(i)->p_memsz, > (long) phdr(i)->p_vaddr); > > - if (grub_file_seek (file, (grub_off_t) phdr(i)->p_offset) > - == (grub_off_t) -1) > + if (grub_file_seek (file, (grub_off_t) phdr(i)->p_offset) != > + GRUB_ERR_NONE) > return grub_error (GRUB_ERR_BAD_OS, > "invalid offset in program header"); > > diff --git a/loader/macho.c b/loader/macho.c > index bd460b8..7fddaf0 100644 > --- a/loader/macho.c > +++ b/loader/macho.c > @@ -50,7 +50,7 @@ grub_macho_parse32 (grub_macho_t macho) > return; > > /* Read header and check magic*/ > - if (grub_file_seek (macho->file, macho->offset32) == (grub_off_t) -1 > + if (grub_file_seek (macho->file, macho->offset32) != GRUB_ERR_NONE > || grub_file_read (macho->file, &head, sizeof (head)) > != sizeof(head)) > { > @@ -123,7 +123,7 @@ grub_macho32_readfile (grub_macho_t macho, void *dest) > return grub_error (GRUB_ERR_BAD_OS, > "Couldn't read architecture-specific part"); > > - if (grub_file_seek (macho->file, macho->offset32) == (grub_off_t) -1) > + if (grub_file_seek (macho->file, macho->offset32) != GRUB_ERR_NONE) > { > grub_error_push (); > return grub_error (GRUB_ERR_BAD_OS, > @@ -206,8 +206,8 @@ grub_macho32_load (grub_macho_t macho, char *offset, int > flags) > if (! hdr->vmsize) > return 0; > > - if (grub_file_seek (_macho->file, hdr->fileoff > - + _macho->offset32) == (grub_off_t) -1) > + if (grub_file_seek (_macho->file, hdr->fileoff + _macho->offset32) != > + GRUB_ERR_NONE) > { > grub_error_push (); > grub_error (GRUB_ERR_BAD_OS, > @@ -297,7 +297,7 @@ grub_macho_file (grub_file_t file) > macho->cmds32 = 0; > macho->cmds64 = 0; > > - if (grub_file_seek (macho->file, 0) == (grub_off_t) -1) > + if (grub_file_seek (macho->file, 0) != GRUB_ERR_NONE) > goto fail; > > if (grub_file_read (macho->file, &filestart, sizeof (filestart)) > @@ -316,8 +316,8 @@ grub_macho_file (grub_file_t file) > > /* Load architecture description. */ > narchs = grub_be_to_cpu32 (filestart.fat.nfat_arch); > - if (grub_file_seek (macho->file, sizeof (struct grub_macho_fat_header)) > - == (grub_off_t) -1) > + if (grub_file_seek (macho->file, sizeof (struct > grub_macho_fat_header)) != > + GRUB_ERR_NONE) > goto fail; > archs = grub_malloc (sizeof (struct grub_macho_fat_arch) * narchs); > if (!archs) > diff --git a/loader/xnu_resume.c b/loader/xnu_resume.c > index 77f6887..998e61e 100644 > --- a/loader/xnu_resume.c > +++ b/loader/xnu_resume.c > @@ -103,7 +103,7 @@ grub_xnu_resume (char *imagename) > } > > /* Read image. */ > - if (grub_file_seek (file, 0) == (grub_off_t)-1 > + if (grub_file_seek (file, 0) != GRUB_ERR_NONE > || grub_file_read (file, buf, hibhead.image_size) > != (grub_ssize_t) hibhead.image_size) > { > > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > http://lists.gnu.org/mailman/listinfo/grub-devel > -- Regards Vladimir 'phcoder' Serbinenko Personal git repository: http://repo.or.cz/w/grub2/phcoder.git _______________________________________________ Grub-devel mailing list Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel