* fs/cpio.c (grub_cpio_find_file): Return GRUB_ERR_NONE
(and set *ofs = 0) instead of GRUB_ERR_FILE_NOT_FOUND on
last block of a cpio or tar stream.
Check for "TRAILER!!!" instead of any empty data
block to detect last block of a cpio stream.
(grub_cpio_dir): Fix constness of variable np.
(grub_cpio_open): Return GRUB_ERR_FILE_NOT_FOUND if
cpio or tar trailer is detected. This fixes a crash
on open of a non existing file.
* loader/i386/pc/multiboot.c (grub_multiboot_load_elf32): Get physical
address of entry.
(grub_multiboot_load_elf64): Likewise.
(grub_multiboot): Initialize mbi structure.
* util/grub-fstest.c: Don't include unused header file script.h.
* conf/common.rmk (grub-fstest.c_DEPENDENCIES): Move to the begginning
of file.
(grub_fstest_SOURCES): Likewise.
* conf/i386-pc.rmk (pkglib_IMAGES): Add cdboot.img.
(cdboot_img_SOURCES): New variable.
(cdboot_img_ASFLAGS): New variable.
(cdboot_img_LDFLAGS): New variable.
* boot/i386/pc/cdboot.S: New file.
* disk/i386/pc/biosdisk.c (cd_start): New variable.
(cd_count): Likewise.
(grub_biosdisk_get_drive): Add support for cd device.
(grub_biosdisk_call_hook): Likewise.
(grub_biosdisk_iterate): Likewise.
(grub_biosdisk_open): Likewise.
(GRUB_BIOSDISK_CDROM_RETRY_COUNT): New macro.
(grub_biosdisk_rw): Support reading from cd device.
(GRUB_MOD_INIT): Iterate cd devices.
* include/grub/i386/pc/biosdisk.h (GRUB_BIOSDISK_FLAG_CDROM): New macro.
(GRUB_BIOSDISK_MACHINE_CDROM_START): Likewise.
(GRUB_BIOSDISK_MACHINE_CDROM_END): Likewise.
* kern/i386/pc/init.c (make_install_device): Check for cd device.
* fs/ufs.c (INODE_BLKSZ): Fix incorrect value.
(grub_ufs_get_file_block): Fix indirect block calculation problem.
* fs/xfs.c (grub_xfs_sblock): New member log2_dirblk.
(grub_xfs_btree_node): New structure.
(grub_xfs_btree_root): New structure.
(grub_xfs_inode): New members nblocks, extsize, nextents and btree.
(GRUB_XFS_EXTENT_OFFSET): Use exts instead of inode->data.extents.
(GRUB_XFS_EXTENT_BLOCK): Likewise.
(GRUB_XFS_EXTENT_SIZE): Likewise.
(grub_xfs_read_block): Support btree format type.
(grub_xfs_iterate_dir): Use NESTED_FUNC_ATTR in call_hook.
Use directory block as basic unit.
* fs/fshelp.c (grub_fshelp_read_file): Bug fix for sparse block.
* aclocal.m4 (grub_i386_CHECK_REGPARM_BUG): Define NESTED_FUNC_ATTR as
__attribute__ ((__regparm__ (1))).
* fs/reiserfs.c (grub_fshelp_node): New member next_offset.
(grub_reiserfs_get_item): Save offset of the next item.
(grub_reiserfs_iterate_dir): Use next_offset to find next item.
* fs/ufs.c (GRUB_UFS_VOLNAME_LEN): New macro.
(grub_ufs_sblock): New member volume name.
(grub_ufs_find_file): Fix string copy bug.
(grub_ufs_label): Implement this function properly.
* fs/hfs.c (grub_hfs_cnid_type): New enum.
(grub_hfs_iterate_records): Use the correct file number for extents
and catalog file. Fix problem in next index calculation.
(grub_hfs_find_node): Replace recursive function call with loop.
(grub_hfs_iterate_dir): Replace recursive function call with loop.
* normal/execute.c (grub_script_exec_argument_to_string): Check for undefined variable.
(grub_script_execute_cmdline): Reset grub_errno.
* normal/main.c (read_config_file): Reset grub_errno.
* normal/parse.y (script_init): New.
(script): Move function and menuentry here.
(delimiter): New.
(command): Add delimiter at the end of command.
(commands): Adjust to match the new command.
(commandblock): Remove grub_script_lexer_record_start.
(menuentry): Add grub_script_lexer_record_start, use the new commands.
(if): Use the new commands.
* conf/common.rmk (pkgdata_MODULES): Add echo.mod.