| 2001-01-11  Eugene Doudine  <dudin@np.nk.nornik.ru> | 
 | 	 | 
 | 	* stage2/builtins.c [SUPPORT_NETBOOT] (ifconfig_func): New | 
 | 	function to configure network interface from command line. | 
 | 	[SUPPORT_NETBOOT] (builtin_ifconfig): New variable. | 
 | 	[SUPPORT_NETBOOT] (builtin_table): Added a pointer to | 
 | 	BUILTIN_IFCONFIG. | 
 | 	* netboot/main.c (ifconfig): New function. | 
 | 	* netboot/etherboot.h (ifconfig): Added the prototype. | 
 | 	 | 
 | 2001-01-11  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/Makefile.am [BUILD_EXAMPLE_KERNEL] (noinst_DATA): New | 
 | 	variable. | 
 | 	[BUILD_EXAMPLE_KERNEL] (noinst_PROGRAMS): Likewise. | 
 | 	[BUILD_EXAMPLE_KERNEL] (kernel_exec_SOURCES): Likewise. | 
 | 	[BUILD_EXAMPLE_KERNEL] (kernel_exec_CFLAGS): Likewise. | 
 | 	[BUILD_EXAMPLE_KERNEL] (kernel_exec_LDFLAGS): Likewise. | 
 | 	[BUILD_EXAMPLE_KERNEL] (kernel): New target. | 
 | 	* configure.in (--enable-example-kernel): New option. | 
 |  | 
 | 	* docs/kernel.c (cmain): Cast unsigned long variables to | 
 | 	unsigned explicitly, to suppress GCC warnings. | 
 | 	 | 
 | 2001-01-08  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/shared.h (BOOTSEC_BPB_HIDDEN_SECTORS): New macro. | 
 | 	 | 
 | 	* stage2/builtins.c (chainloader_func): If CURRENT_PARTITION is | 
 | 	FAT, set the hidden sectors field of the BPB to PART_START, to | 
 | 	avoid a Windows bug which affects only when Windows is booted | 
 | 	from a logical partition. And, clear ERRNUM after testing if a | 
 | 	partition is FAT, because open_partition or fat_mount may set | 
 | 	ERRNUM. Reported by Ingo Korb <ingo@akana.de>. | 
 | 	 | 
 | 2001-01-07  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (boot_func): In the chain-loading mode, | 
 | 	clear the active flag of each of the loaded partition entries, | 
 | 	and then set the active flag of the booted partition image. | 
 | 	 | 
 | 2001-01-04  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (embed_func): Call open_partition() even for | 
 |  	MBR, so that part_start is correct.  This fixes a bug reported by | 
 |  	Matthias Granberry <matthias@slurpee.org>. | 
 | 	 | 
 | 2000-12-22  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/disk_io.c (make_saved_active): Change the variable name | 
 | 	``MBR'' to lower case. | 
 | 	(set_partition_hidden_flag): Likewise. | 
 | 	 | 
 | 2000-12-20  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	From Cedric Ware <ware@com.enst.fr>: | 
 | 	* stage2/fsys_ext2.c (ext2fs_mount): Detect ext2 partitions in | 
 | 	a OpenBSD/NetBSD FS_EXT2FS slice. | 
 | 	* stage2/pc_slice.h (FS_ADOS): New Macro from OpenBSD/NetBSD. | 
 | 	(FS_HFS): Likewise. | 
 | 	(FS_FILECORE): Likewise. | 
 | 	(FS_EXT2FS): Likewise. | 
 | 	 | 
 | 2000-12-17  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* stage2/disk_io.c (rawread): Check if there is a EZD partition | 
 | 	and remap sector 0 to sector 1 like EZ-BIOS does. | 
 | 	(rawwrite): New function to write to disk.  Also does EZD | 
 | 	remapping. | 
 | 	(devwrite): New function.  Does the special remapping to | 
 | 	partitions needed for linux.  This contains the code that was | 
 | 	previously duplicated in embed_func and install_func at several | 
 | 	places. | 
 | 	(make_saved_active): Use rawwrite. Don't use SCRATCHSEG, as it is | 
 | 	needed by devwrite. | 
 | 	(set_partition_hidden_flag): Likewise.	 | 
 | 	* stage2/disk_io.h (rawwrite): New function. | 
 | 	(devwrite): Likewise. | 
 | 	* stage2/pc_slice.h (PC_SLICE_TYPE_EZD): New macro. | 
 | 	* stage2/builtins.c (embed_info): New variable to store the | 
 | 	position of the embedded stage1_5 for setup_func. | 
 | 	(embed_func): Don't embed after the MBR if an EZ-BIOS is detected | 
 | 	there.  Use the new devwrite method.  If embedding is successful | 
 | 	store position in embed_info. | 
 | 	(install_func): Use devwrite.  Don't use SCRATCHSEG. | 
 | 	(partnew_func): Use rawwrite.  Don't use SCRATCHSEG. | 
 | 	(parttype_func): Likewise. | 
 | 	(savedefault_func): Likewise. | 
 | 	(setup_func): New nested function embed_stage1_5.  Stage1_5 is now | 
 | 	also be embedded into filesystems which supports that. | 
 | 	 | 
 | 2000-12-17  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (chainloader_func): Set ERRNUM to | 
 | 	ERR_EXEC_FORMAT, when ERRNUM is ERR_NONE, even if grub_read | 
 | 	fails in reading one sector. | 
 | 	 | 
 | 2000-12-14  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/prog-ref.texi (Partition types): Rewrite the footnotes. | 
 | 	Suggested by Ralf.Medow@t-online.de (Ralf Medow). | 
 | 	 | 
 | 2000-12-14  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Erik Schoenfelder <schoenfr@gaertner.de>: | 
 | 	* util/grub-install.in (convert): Revised the fix for floppy | 
 | 	device handling. | 
 | 	 | 
 | 2000-12-14  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From HORIKAWA Kazunori <kaz-hori@tkd.att.ne.jp>: | 
 | 	* stage2/bios.c (get_diskinfo): Append 16 bytes dummy data to | 
 | 	DRP, because the BIOS of Thinkpad X20 write a garbage beyond the | 
 | 	size of the structure. | 
 | 	 | 
 | 2000-12-09  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* stage2/disk_io.c (next_partition): Mask out bsd partition sub | 
 | 	type when checking if last partition was a bsd partition. | 
 | 	Reported by Heikki Vatiainen <hessu@cs.tut.fi>. | 
 | 	 | 
 | 2000-12-09  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Leendert Meyer <leen.meyer@home.nl>: | 
 | 	* util/grub-install.in (convert): If a floppy device is | 
 | 	specified, remove everything from $tmp_part. | 
 | 	 | 
 | 2000-12-09  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* lib/device.c [__linux__] (write_to_partition): Use strcpy | 
 | 	instead of strcat, to overwrite "/disc". Reported by Thiago | 
 | 	Macieira <thiagom@mail.com>. | 
 | 	 | 
 | 2000-12-05  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* stage2/fsys_minix.c (minix_mount): Corrected the check for | 
 | 	IS_PC_SLICE_TYPE_MINIX; minix was only working if slice type was | 
 | 	wrong! Reported by Ralf Medow <ralf.medow@t-online.de>. | 
 | 	 | 
 | 2000-11-27  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* stage2/fsys_reiserfs.c: Handle items with old version key on | 
 | 	new version reiserfs partition. | 
 | 	(K_OFFSET): Removed. | 
 | 	(IH_KEY_OFFSET): New Macro, which checks item head version. | 
 | 	(IH_KEY_ISOFFSET): Likewise. | 
 | 	(reiserfs_read): Use new macros. | 
 | 	(reiserfs_dir): Fixed version check for >4GB stat entries. | 
 | 	 | 
 | 2000-11-27  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/common.c (init_bios_info) [!STAGE1_5]: Don't call | 
 | 	track_int13, because the current implementation hangs up in some | 
 | 	environments. | 
 | 	 | 
 | 2000-11-27  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* grub/asmstub.c (serial_init) [!O_SYNC]: Don't specify O_SYNC | 
 | 	to open SERIAL_DEVICE. | 
 | 	(serial_init) [O_FSYNC]: Specify O_FSYNC to open SERIAL_DEVICE. | 
 | 	Reported by Farid Hajji <farid.hajji@ob.kamp.net>. | 
 | 	 | 
 | 2000-11-22  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Vesa Jaaskelainen <jaaskela@tietomyrsky.fi>: | 
 | 	* stage2/builtins.c (testvbe_func): Don't set the bit 14 of a | 
 | 	VBE mode number explicitly when calling get_vbe_mode_info. | 
 | 	(vbeprobe_func): Likewise. | 
 | 	 | 
 | 2000-11-22  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	The code for the "INT 13H tracking technique" is somewhat | 
 | 	simplified. | 
 |  | 
 | 	* stage2/asm.S [!STAGE1_5] (track_int13): Don't replace an int13 | 
 | 	handler with set_tf_int13_handler. Instead, track_int13 itself | 
 | 	emulates an int13 interrupt. | 
 | 	[!STAGE1_5] (set_tf_int13_handler): Removed. | 
 | 	[!STAGE1_5] (int1_handler): Use movzbw instead of xorb and movb. | 
 | 	 | 
 | 2000-11-15  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* acconfig.h (PRESET_MENU_STRING): New entry. | 
 | 	* acinclude.m4 (grub_DEFINE_FILE): New M4 macro. | 
 | 	* configure.in (--enable-preset-menu): New option. | 
 | 	* stage2/stage2.c [PRESET_MENU_STRING] (preset_menu): New | 
 | 	variable. | 
 | 	[PRESET_MENU_STRING] (preset_menu_offset): Likewise. | 
 | 	[PRESET_MENU_STRING] (open_preset_menu): New function. | 
 | 	[PRESET_MENU_STRING] (read_from_preset_menu): Likewise. | 
 | 	[PRESET_MENU_STRING] (close_preset_menu): Likewise. | 
 | 	[!PRESET_MENU_STRING] (open_preset_menu): New macro. | 
 | 	[!PRESET_MENU_STRING] (read_from_preset_menu): Likewise. | 
 | 	[!PRESET_MENU_STRING] (close_preset_menu): Likewise. | 
 | 	(get_line_from_config): Accept a new argument READ_FROM_FILE. | 
 | 	If it is false, read data from the preset menu instead. | 
 | 	(cmain): If grub_open fails in opening the configuration file, | 
 | 	then try to open the preset menu. | 
 | 	 | 
 | 2000-11-11  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Jan Fricke <fricke@uni-greifswald.de>: | 
 | 	* stage2/asm.S [!STAGE1_5] (set_vbe_mode): Add a missing `$' | 
 | 	prefix. | 
 | 	 | 
 | 2000-11-11  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/bios.c (get_diskinfo): If BIOS supports LBA but doesn't | 
 | 	return the correct total number of sectors, compute this by | 
 | 	C/H/S returned by get_diskinfo_int13_extensions instead of | 
 | 	get_diskinfo_standard. | 
 | 	 | 
 | 2000-11-09  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/disk_io.c (make_saved_active): Set ERRNUM to | 
 | 	ERR_DEV_VALUES instead of ERR_NO_PART, when the save partition | 
 | 	is not a primary partition. | 
 | 	 | 
 | 2000-11-05  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/user-ref.texi (Features): Update the URL of grub/98. | 
 | 	 | 
 | 2000-11-03  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	VBE support is _partially_ implemented. | 
 | 	 | 
 | 	* stage2/mb_header.h (multiboot_header): Added new fields, | 
 | 	mode_type, width, height, and depth. | 
 | 	(MULTIBOOT_FOUND): Check if MULTIBOOT_VIDEO_MODE is set, and | 
 | 	check if LEN is greater than or equal to 48, if set. | 
 | 	(MULTIBOOT_UNSUPPORTED): Set to 0x0000FFF8. | 
 | 	(MULTIBOOT_VIDEO_MODE): New macro. | 
 | 	* stage2/mb_info.h (multiboot_info): Added new fields, | 
 | 	vbe_control_info, vbe_mode_info, vbe_mode, vbe_interface_seg, | 
 | 	vbe_interface_off, and vbe_interface_len. | 
 | 	(MB_INFO_VIDEO_INFO): New macro. | 
 | 	 | 
 | 	* stage2/shared.h (vbe_controller): New structure. | 
 | 	(vbe_mode): Likewise. | 
 | 	(get_vbe_controller_info): Declared. | 
 | 	(get_vbe_mode_info): Likewise. | 
 | 	(set_vbe_mode): Likewise. | 
 | 	* stage2/asm.S [!STAGE1_5] (get_vbe_controller_info): New | 
 | 	function. | 
 | 	[!STAGE1_5] (get_vbe_mode_info): Likewise. | 
 | 	[!STAGE1_5] (set_vbe_mode): Likewise. | 
 | 	* grub/asmstub.c (get_vbe_controller_info): Likewise. | 
 | 	(get_vbe_mode_info): Likewise. | 
 | 	(set_vbe_mode): Likewise. | 
 |  | 
 | 	* stage2/builtins.c (testvbe_func): New function. | 
 | 	(builtin_testvbe): New variable. | 
 | 	(vbeprobe_func): New function. | 
 | 	(builtin_vbeprobe): New variable. | 
 | 	(builtin_table): Added pointers to BUILTIN_TESTVBE and | 
 | 	BUILTIN_VBEPROBE. | 
 | 	 | 
 | 2000-11-01  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/help2man: Copied from help2man-1.23. | 
 | 	 | 
 | 2000-10-29  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/asm.S [STAGE1_5]: Don't include setjmp.S or apm.S. | 
 | 	 | 
 | 2000-10-27  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* lib/device.c (read_device_map): Don't parse a line, if it is | 
 | 	empty. Reported by Holger Bauer <bauer@itsm.uni-stuttgart.de>. | 
 | 	 | 
 | 2000-10-25  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (md5crypt_func): Use all bits of currticks () | 
 | 	to generate the salt.  The old code would often produce the same | 
 | 	one character salt. | 
 |  | 
 | 2000-10-25  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/apm.S (get_apm_info): Fix a serious typo: prot_to_real | 
 | 	-> real_to_prot. Umm, I can't understand why it worked for me! | 
 | 	 | 
 | 2000-10-24  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (setup_func): When invoking install with an | 
 |  	embedded stage1_5 give the path to menu.lst as real_config_file. | 
 |  | 
 | 2000-10-23  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/multiboot.texi: Upgraded to 0.6.92. | 
 | 	(Boot information format): Re-designed the graphics table. | 
 | 	 | 
 | 2000-10-22  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/tutorial.texi: Miscellaneous updates. | 
 | 	* docs/user-ref.texi: Likewise. | 
 | 	* docs/appendices.texi: Likewise. | 
 | 	 | 
 | 2000-10-22  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* util/grub-install.in (usage): Removed unnecessary commas. | 
 | 	 | 
 | 	* util/grub-md5-crypt.in: New file. | 
 | 	* util/Makefile.am (sbin_SCRIPTS): Added grub-md5-crypt. | 
 | 	* configure.in (AC_OUTPUT): Added util/grub-md5-crypt. | 
 | 	* docs/Makefile.am (man_MANS): Added grub-md5-crypt.8. | 
 | 	[MAINTAINER_MODE] ($(srcdir)/grub-md5-crypt.8): New target. | 
 | 	* docs/grub-md5-crypt.8: New file. Generated by help2man. | 
 |  | 
 | 	* docs/grub.texi (grub-md5-crypt): New direntry. | 
 | 	(Invoking grub-md5-crypt): New entry. | 
 | 	* docs/user-ref.texi (Invoking grub-md5-crypt): New chapter. | 
 | 	 | 
 | 2000-10-22  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Matthias Granberry <matthias@slurpee.org>: | 
 | 	* util/grub-install.in (convert): Added backslashes into | 
 | 	continuous lines. | 
 | 	 | 
 | 2000-10-21  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/md5.c (check_md5_password): Removed. | 
 | 	(md5_password): New function. Mostly copied from | 
 | 	check_md5_password. | 
 | 	(md5_init): Made static. | 
 | 	(md5_update): Likewise. | 
 | 	(md5_final): Likewise. | 
 | 	* stage2/md5.h (check_md5_password): Changed to just a macro. | 
 | 	(md5_password): Declared. | 
 | 	(make_md5_password): New macro. | 
 | 	* stage2/char_io.c [!STAGE1_5] (grub_strstr): Rewriten, because | 
 | 	it was too buggy. | 
 | 	* stage2/builtins.c [USE_MD5_PASSWORDS] (md5crypt_func): New | 
 | 	function. | 
 | 	[USE_MD5_PASSWORDS] (builtin_md5crypt): New variable. | 
 | 	(builtin_table) [USE_MD5_PASSWORDS]: Added a pointer to | 
 | 	BUILTIN_MD5CRYPT. | 
 | 	* docs/tutorial.texi (Security): Added a paragraph about | 
 | 	md5crypt. | 
 | 	 | 
 | 2000-10-21  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/user-ref.texi: Fixed several typos and some inappropriate | 
 | 	texinfo commands, and update the descriptions about some | 
 | 	commands. | 
 | 	 | 
 | 2000-10-20  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (displayapm_func): New function. | 
 | 	(builtin_displayapm): New variable. | 
 | 	(builtin_table): Added a pointer to BUILTIN_DISPLAYAPM. | 
 | 	 | 
 | 2000-10-20  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	APM BIOS table support is added, based on a patch by Matt Yourst | 
 | 	<yourst@mit.edu>. | 
 | 	 | 
 | 	* docs/multiboot.texi (Boot information format): Added the | 
 | 	definition of APM table format. | 
 | 	 | 
 | 	* stage2/mb_info.h (apm_info): New structure. | 
 | 	(multiboot_info): Added a new element, apm_table. | 
 | 	(MB_INFO_APM_TABLE): New macro. | 
 | 	* stage2/asm.S (apm_bios_info): New variable. | 
 | 	Include "apm.S". | 
 | 	* stage2/apm.S: New file. | 
 | 	* stage2/common.c (init_bios_info) [!STAGE1_5]: Added APM BIOS | 
 | 	table support. | 
 | 	* stage2/shared.h (apm_bios_info): Declared. | 
 | 	(get_apm_info): Likewise. | 
 | 	* stage2/Makefile.am (EXTRA_DIST): Added apm.S. | 
 | 	* grub/asmstub.c (apm_bios_info): New variable. | 
 | 	(get_apm_info): New function. | 
 | 	 | 
 | 2000-10-19  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Segregate functions which are copyrighted differently. | 
 | 	 | 
 | 	* stage2/setjmp.S: New file. | 
 | 	* stage2/Makefile.am (EXTRA_DIST): Added setjmp.S. | 
 | 	* stage2/asm.S: Include "setjmp.S". | 
 | 	(grub_setjmp): Moved to ... | 
 | 	* stage2/setjmp.S (grub_setjmp): ... here. | 
 | 	* stage2/asm.S (grub_longjmp): Moved to ... | 
 | 	* stage2/setjmp.S (grub_longjmp): ... here. | 
 | 	 | 
 | 2000-10-18  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/Makefile.am (noinst_HEADERS): Added md5.h. Reported by | 
 | 	Volker Augustin <Volker.Augustin@stud.uni-regensburg.de>. | 
 | 	 | 
 | 2000-10-17  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* configure.in (--disable-md5password): Renamed to ... | 
 | 	(--disable-md5-password): ... this. Just for my preference. | 
 | 	 | 
 | 2000-10-17  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	Added MD5 passwords and extended password command: | 
 | 	 | 
 | 	* configure.in (--disable-md5password): New option. | 
 | 	* stage2/Makefile.am (libgrub_a_SOURCES): Added md5.c. | 
 | 	(pre_stage2_exec_SOURCES): Likewise. | 
 | 	* stage2/md5.c: New file. | 
 | 	* stage2/shared.h (password_t): New type. | 
 | 	(password_type): New variable. | 
 | 	(BUILTIN_HIDDEN): New flag, describing that a command should not | 
 | 	be printed when booting the entry. | 
 | 	(check_password): New function. | 
 | 	* stage2/cmdline.c (run_script): Don't show commands that have | 
 | 	the hidden attribute. | 
 | 	* stage2/buildins.c (password_type): New variable. | 
 | 	(check_password): New function. | 
 | 	(password_func): Handle the --md5 option and set password_type. | 
 | 	Check if in CMDLINE or SCRIPT mode and ask password immediately. | 
 | 	(builtin_password): Also allow passwords in CMDLINE mode, make | 
 | 	it hidden, so the user wont see the password he should enter. | 
 | 	Changed command description. | 
 | 	(builtin_pause): Make the command hidden. | 
 | 	(pause_func): Print argument, since the command is now hidden. | 
 | 	* stage2/stage2.c (run_menu): Call check_password to check password. | 
 | 	* docs/tutorial.texi (Security): Describe the new features of the | 
 | 	password commands. | 
 | 	* docs/user-ref.texi (Menu-specific commands): password command | 
 |  	moved ... | 
 | 	(Command-line and menu commands): ... to here.  New features  | 
 | 	doumented. | 
 | 	 | 
 | 2000-10-17  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (setkey_func): Clear the all elements of | 
 | 	BIOS_KEY_MAP and ASCII_KEY_MAP instead of only the first | 
 | 	elements, when TO_KEY is NULL. | 
 | 	 | 
 | 2000-10-16  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/boot.c (load_image): When handling Linux cmdline, don't | 
 | 	copy a null character from SRC to DEST, because this inserted an | 
 | 	extra null character into the cmdline. Reported by Robert | 
 | 	Bihlmeyer <robbe@orcus.priv.at>. | 
 | 	 | 
 | 2000-10-16  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Some of the new Multiboot features are supported. APM support | 
 | 	and VESA support are not strictly defined or implemented yet. | 
 | 	 | 
 | 	* docs/multiboot.texi (Top): Increase the version number. | 
 | 	(Boot information format): Changed the drive information format, | 
 | 	because it was not straightforward. | 
 | 	 | 
 | 	* grub/asmstub.c (io_map): New variable. | 
 | 	(track_int13): New function. | 
 | 	(get_rom_config_table): Likewise. | 
 | 	* stage2/stage2.c (cmain): Set CONFIG_ENTRIES to MBI.DRIVES_ADDR | 
 | 	+ MBI.DRIVES.LENGTH instead of MBI.MMAP_ADDR + MBI.MMAP_LENGTH. | 
 | 	* stage2/common.c (init_bios_info) [!STAGE1_5]: Added support | 
 | 	for drive info, ROM config table, and boot loader name features | 
 | 	of the Multiboot Specification. | 
 | 	* stage2/mb_info.h (drive_info): New structure. | 
 | 	(MB_DI_CHS_MODE): New macro. | 
 | 	(MB_DI_LBA_MODE): Likewise. | 
 | 	(multiboot_info): Added drives_length, drives_addr, | 
 | 	config_table, and boot_loader_name. | 
 | 	(MB_INFO_DRIVE_INFO): New macro. | 
 | 	(MB_INFO_CONFIG_TABLE): Likewise. | 
 | 	(MB_INFO_BOOT_LOADER_NAME): Likewise. | 
 | 	* stage2/asm.S (get_rom_config_table): New function. | 
 | 	* stage2/shared.h (get_rom_config_table): Declared. | 
 | 	 | 
 | 2000-10-16  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* util/grub-install.in (convert): Check only if the file exists, | 
 | 	instead of checking if the file is a block device as well. | 
 | 	Because, in a sane operating system, it should be a char device | 
 | 	but not a block device (unlike Linux), and it may be a symbolic | 
 | 	link (this can happen if you use Linux's devfs without devfsd). | 
 | 	(recheck): New variable. Set to "no" by default, and set to | 
 | 	"yes", if you specify the new option ``--recheck''. If $recheck | 
 | 	is "yes", remove the device map file, if present. | 
 | 	 | 
 | 2000-10-16  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Roderich Schupp: | 
 | 	* lib/device.c: Include <limits.h>. | 
 | 	[__linux__] (have_devfs): New function. | 
 | 	(get_floppy_disk_name) [__linux__]: If devfs is supported, use | 
 | 	the name "/dev/floppy/N" instead. | 
 | 	(init_device_map) [__linux__]: If devfs is supported, use | 
 | 	"/dev/discs/discN" instead. | 
 | 	[__linux__] (write_to_partition): Change the size of DEV to | 
 | 	PATH_MAX instead of 64. | 
 | 	If devfs is supported, replace "/disc" in the device name with | 
 | 	"/part". | 
 | 	 | 
 | 2000-10-15  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Roderich Schupp <rsch@ExperTeam.de>: | 
 | 	* util/grub-install.in (convert): Added support for "native" | 
 | 	devfs device names. | 
 | 	 | 
 | 2000-10-14  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/tutorial.texi (Serial terminal): Fixed a typo. | 
 | 	* docs/user-ref.texi (GRUB images): New chapter. | 
 | 	* docs/grub.texi: Added an entry for the chapter "GRUB images". | 
 | 	 | 
 | 2000-10-14  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (setkey_func): If TO_KEY is NULL (i.e. the | 
 | 	user specifies no argument), clear BIOS_KEY_MAP and | 
 | 	ASCII_KEY_MAP. | 
 | 	If TO_KEY is non-NULL but FROM_KEY is NULL, set ERRNUM to | 
 | 	ERR_BAD_ARGUMENT and return one. | 
 | 	 | 
 | 2000-10-13  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/grub.texi: Added an entry for the new chapter "Security", | 
 | 	and the order of the chapters in the Tutorial Manual was | 
 | 	changed. | 
 | 	* docs/tutorial.texi (Configuration): Moved to right after the | 
 | 	chapter "Booting". | 
 | 	(Security): New chapter. | 
 | 	 | 
 | 2000-10-10  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Alessandro Rubini: | 
 | 	* util/grub-install.in (root_device): Use the regular expression | 
 | 	's%.*\(/dev/[^ 	]*\).*%\1%' instead of | 
 | 	's%.*\(/dev/[a-z0-9]*\).*%\1%'. | 
 | 	(bootdir_device): Likewise. | 
 | 	(grubdir_device): Likewise. | 
 | 	 | 
 | 2000-10-10  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/start.S (copy_buffer): Use pusha and popa instead of | 
 | 	pushing and poping %di and %si individually, to reduce the code | 
 | 	size and save %cx as well. Reported by Herbert Nachtnebel | 
 | 	<nachtneb@iaee.tuwien.ac.at>. | 
 | 	 | 
 | 2000-10-10  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Daniel Pittman <daniel@rimspace.net>: | 
 | 	* stage2/builtins.c (setkey_func): Check if | 
 | 	KEYSYM_TABLE[I].UNSHIFTED_NAME and KEYSYM_TABLE[I].SHIFTED_NAME | 
 | 	are not NULLs, before calling grub_strcmp. | 
 | 	 | 
 | 2000-10-08  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* util/grub-install.in (grub_prefix): New variable. The default | 
 | 	is "/boot/grub". | 
 | 	If the user has a separate boot partition, set grub_prefix | 
 | 	instead of grubdir to "/grub". | 
 | 	When running the command "setup", specify $grub_prefix instead | 
 | 	of $grubdir to the option "--prefix". | 
 | 	Report by Thierry Laronde. | 
 | 	 | 
 | 2000-10-08  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (find_func): Clear ERRNUM after the last | 
 | 	call of next_partition, because it always sets ERRNUM. Reported | 
 | 	by Thierry Laronde <thierry.laronde@polynum.com>. | 
 | 	 | 
 | 2000-10-07  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* lib/device.c [__linux__] (write_to_partition): Open DEV with | 
 | 	O_RDWR instead of O_ORONLY. | 
 | 	 | 
 | 2000-10-06  Alessandro Rubini  <rubini@gnu.org> | 
 |  | 
 | 	* docs/user-ref.texi (Commands): Added missing commands and | 
 | 	reworded part of the text. | 
 |  | 
 | 	* stage2/builtins.c (serial_func): Unswap the setting of "speed" | 
 | 	and "port". | 
 |  | 
 | 2000-10-06  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (setup_func): Append "... " to the | 
 | 	messages when calling embed_func and install_func, and print | 
 | 	the result. | 
 | 	Don't jump to the label "fail", even when embed_func failed. | 
 | 	 | 
 | 2000-10-05  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* stage2/disk_io.c (real_open_partition): Make sure that buf_geom | 
 | 	corresponds to the current drive before using it. | 
 |  | 
 | 	* lib/device.c (get_drive_geometry): Use fstat if the native | 
 | 	geometry methods fail, such as when the drive is mapped to a | 
 | 	regular file. | 
 |  | 
 | 	* docs/tutorial.texi: Add `@kbd{...}' to examples in order to | 
 | 	differentiate between command output and characters the user | 
 | 	should type. | 
 | 	* docs/user-ref.texi: Likewise. | 
 |  | 
 | 2000-10-05  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/grub.texi: Added an entry for the chapter "Serial | 
 | 	terminal". | 
 | 	* docs/tutorial.texi (Serial terminal): New chapter. | 
 | 	 | 
 | 2000-10-04  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* util/grub-image (VERSION): Fix version calculation to tolerate | 
 | 	`(GNU GRUB 0.5.96)'-style versions. | 
 |  | 
 | 	* docs/grub.texi: Remove braces from `@unnumbered' sections so | 
 | 	that texi2html doesn't complain. | 
 |  | 
 | 	* debian/rules: Build HTML documentation to appease the Debian | 
 | 	masses. | 
 |  | 
 | 2000-10-04  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/fsys_reiserfs.c (reiserfs_mount): Compare PART_LENGTH | 
 | 	with SUPERBLOCK + (sizeof(super) >> SECTOR_BITS) instead of | 
 | 	sizeof(struct reiserfs_super_block). Reported by Jochen | 
 | 	Hoenicke. | 
 | 	 | 
 | 2000-10-05  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* configure.in (AM_INIT_AUTOMAKE): The version number is set to | 
 | 	0.5.97. This version number is a dummy, as we will never release | 
 | 	0.5.97 actually. | 
 | 	 | 
 | 2000-10-01  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* lib/device.c [__linux__]: Don't include <linux/cdrom.h>. | 
 | 	[__linux__ && !CDROM_GET_CAPABILITY] (CDROM_GET_CAPABILITY): | 
 | 	Defined as 0x5331. | 
 | 	 | 
 | 2000-10-01  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* lib/device.c (get_drive_geometry) [__GNU__]: Get the number of | 
 | 	total sectors by fstat. The rest are filled with arbitrary | 
 | 	values. | 
 | 	 | 
 | 2000-09-30  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* util/grub-install.in (convert): The code for gnu* (i.e. | 
 | 	GNU/Hurd) was rewritten, since it didn't work for BSD | 
 | 	partitions. | 
 | 	Use "$tmp_disk *$" instead of "$tmp_disk" to get the drive name. | 
 | 	 | 
 | 2000-09-30  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/fsys_reiserfs.c (reiserfs_mount): Check if the length | 
 | 	of the partition is less than the size of a super block, before | 
 | 	attempting to read the super block. | 
 |  | 
 | 	* grub/asmstub.c (console_putchar) | 
 | 	[HAVE_LIBCURSES_H && REFRESH_IMMEDIATELY]: Call refresh, to ease | 
 | 	debugging. | 
 | 	 | 
 | 2000-09-30  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Added two new commands, "partnew" and "parttype", based on the | 
 | 	patch by Stefan Ondrejicka <ondrej@idata.sk>: | 
 | 	* stage2/builtins.c (partnew_func): New function. | 
 | 	(builtin_partnew): New variable. | 
 | 	(parttype_func): New function. | 
 | 	(builtin_parttype): New variable. | 
 | 	(builtin_table): Added pointers to BUILTIN_PARTNEW and to | 
 | 	BUILTIN_PARTTYPE. | 
 | 	 | 
 | 2000-09-29  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (find_func): New variable GOT_FILE is set to | 
 | 	one if FILENAME is found. Otherwise, it is set to zero. | 
 | 	Clear ERRNUM at the end in the loop for floppies, to ensure that | 
 | 	ERRNUM is cleared before examining hard disks. | 
 | 	Rewrite the loop for hard disks using next_partitions, so this | 
 | 	function now checks all partitions you have certainly. | 
 | 	If GOT_FILE is non-zero, set ERRNUM to ERR_FILE_NOT_FOUND and | 
 | 	return one. | 
 | 	 | 
 | 2000-09-29  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/disk_io.c (check_BSD_parts): Removed. | 
 | 	(next_partition): New function. | 
 | 	(real_open_partition): Rewritten using next_partition. | 
 | 	(set_device) [!STAGE1_5]: Skip a comma in DEVICE, even when the | 
 | 	BSD partition is not specified. | 
 | 	[!STAGE1_5] (print_completions): Don't append ')' if the | 
 | 	partition is a PC slice which may have BSD partitions. Instead, | 
 | 	try to complete the command-line with possible partitions. | 
 | 	* stage2/shared.h (next_partition): Declared. | 
 | 	 | 
 | 2000-09-27  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* configure.in (--enable-serial): Changed to ... | 
 | 	(--disable-serial): ... this. Now the serial support is enabled | 
 | 	by default. | 
 | 	 | 
 | 2000-09-27  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/char_io.c [!STAGE1_5] (get_cmdline) [!SUPPORT_SERIAL]:  | 
 | 	Don't check if the terminal is dumb. If the terminal is console, | 
 | 	always use console functions. | 
 | 	* stage2/builtins.c [!SUPPORT_NETBOOT] (bootp_func): Undefined. | 
 | 	[!SUPPORT_NETBOOT] (builtin_bootp): Likewise. | 
 | 	[!GRUB_UTIL] (device_func): Likewise. | 
 | 	[!GRUB_UTIL] (builtin_device): Likewise. | 
 | 	[!SUPPORT_NETBOOT] (dhcp_func): Likewise. | 
 | 	[!SUPPORT_NETBOOT] (builtin_dhcp): Likewise. | 
 | 	[!GRUB_UTIL] (quit_func): Likewise. | 
 | 	[!GRUB_UTIL] (builtin_quit): Likewise. | 
 | 	[!SUPPORT_NETBOOT] (rarp_func): Likewise. | 
 | 	[!SUPPORT_NETBOOT] (builtin_rarp): Likewise. | 
 | 	[!SUPPORT_SERIAL] (serial_func): Likewise. | 
 | 	[!SUPPORT_SERIAL] (builtin_serial): Likewise. | 
 | 	[!SUPPORT_SERIAL] (terminal_func): Likewise. | 
 | 	[!SUPPORT_SERIAL] (builtin_terminal): Likewise. | 
 | 	[!SUPPORT_NETBOOT] (tftpserver_func): Likewise. | 
 | 	[!SUPPORT_NETBOOT] (builtin_tftpserver): Likewise. | 
 | 	(builtin_table) [!SUPPORT_NETBOOT]: Removed the pointers to | 
 | 	BUILTIN_BOOTP, BUILTIN_DHCP, BUILTIN_RARP, and | 
 | 	BUILTIN_TFTPSERVER. | 
 | 	(builtin_table) [!SUPPORT_SERIAL]: Removed the pointers to | 
 | 	BUILTIN_SERIAL and BUILTIN_TERMINAL. | 
 | 	(builtin_table) [!GRUB_UTIL]: Removed the pointers to | 
 | 	BUILTIN_DEVICE and BUILTIN_QUIT. | 
 | 	 | 
 | 2000-09-26  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* util/grub-install.in (bootdir_device): New variable. If | 
 | 	$bootdir_device is not the same as $root_device, set root_device | 
 | 	and grubdir to $bootdir_device and "/grub", respectively. | 
 | 	Add --prefix=$grubdir into the command "setup". | 
 | 	 | 
 | 2000-09-26  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Add --prefix=DIR to the command "setup". | 
 | 	 | 
 | 	* stage2/builtins.c (setup_func): New nested function, | 
 | 	check_file checks if the file FILE exists. | 
 | 	Remove the prefix "/boot/grub" in STAGE1_5_MAP. | 
 | 	Don't hardcode "/boot/grub/stage1", "/boot/grub/stage2", or | 
 | 	"/boot/grub/menu.lst". Instead, check if ARG contains | 
 | 	"--prefix=", and if specified, set PREFIX to the value. | 
 | 	If not specified, check "/boot/grub/stage1" and, if not found, | 
 | 	check "/grub/stage1". If a stage1 was found, set PREFIX to the | 
 | 	directory which contains the stage1. | 
 | 	 | 
 | 2000-09-12  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Add additional magic to avoid a bug in Linux. *sigh* | 
 | 	 | 
 | 	* stage2/boot.c (load_image): Copy SRC to DEST first, and append | 
 | 	a "mem=" option to DEST instead of prepending. | 
 | 	 | 
 | 2000-09-11  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Reported by Alessandro Rubini: | 
 | 	* stage2/fsys_minix.c (minix_mount): Check if CURRENT_SLICE is a | 
 | 	partition type for minix fs, using the macro | 
 | 	IS_PC_SLICE_TYPE_MINIX. | 
 | 	* stage2/pc_slice.h (PC_SLICE_TYPE_LINUX_MINIX): New macro. | 
 | 	(IS_PC_SLICE_TYPE_MINIX): Likewise. | 
 | 	 | 
 | 2000-09-09  Alessandro Rubini  <rubini@morgana.systemy.it> | 
 |  | 
 | 	* stage1/stage1.S (notification_string): Print "GRUB " instead | 
 | 	of "stage1 ". | 
 | 	* stage2/start.S [STAGE1_5] (notification_string): Print | 
 | 	"Loading stage1.5" instead of "stage1.5 ". | 
 | 	[!STAGE1_5] (notification_string): Print "Loading stage2" | 
 | 	instead of "stage2 ". | 
 | 	(notification_step): New label, followed by a string ".". | 
 | 	(notification_done): New label, followed by a string "\r\n". | 
 | 	(copy_buffer): Print NOTIFICATION_STEP after copying the buffer. | 
 | 	(bootit): Print NOTIFICATION_DONE before restoring %dx. | 
 | 	 | 
 | 2000-09-09  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Alessandro Rubini: | 
 | 	* configure.in (CPPFLAGS): Added -malign-jumps=1, | 
 | 	-malign-loops=1 and -malign-functions=1. | 
 | 	 | 
 | 2000-09-07  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Hal Snyder <hal@vailsys.com>: | 
 | 	* lib/device.c (get_drive_geometry) [__FreeBSD__ || __NetBSD__ | 
 | 	|| __OpenBSD__]: Call ioctl for FD instead of | 
 | 	DISKS[DRIVE].FLAGS. This was a mistake when I segregated this | 
 | 	function from asmstub.c. | 
 | 	 | 
 | 2000-09-07  Alessandro Rubini  <rubini@gnu.org> | 
 |  | 
 | 	* docs/tutorial.texi: Fixed a few typos and minor imprecisions. | 
 | 	* docs/prog-ref.texi: Likewise. | 
 | 	* docs/user-ref.texi: Likewise. | 
 |  | 
 | 2000-09-07  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Alessandro Rubini: | 
 | 	* stage2/builtins.c (terminal_func): Rename TIMEOUT to TO, to | 
 | 	suppress GCC warnings. | 
 | 	* grub/asmstub.c (serial_checkkey): Likewise. | 
 | 	 | 
 | 2000-09-06  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/char_io.c [!STAGE1_5] (auto_fill): New variable. | 
 | 	[!STAGE1_5] (get_cmdline): Save AUTO_FILL in SAVED_AUTO_FILL in | 
 | 	the beginning and restore AUTO_FILL before return. | 
 | 	Set AUTO_FILL to one and zero before and after calling | 
 | 	print_completions, respectively. | 
 | 	(grub_putchar) [!STAGE1_5]: Use a static variable COL to track | 
 | 	the position of the cursor. If C is a carriage return, clear | 
 | 	COL. If C is a backspace and COL is positive, decrease COL. If C | 
 | 	is a printable character, increase COL. In this case, if | 
 | 	AUTO_FILL is non-zero and COL is greater than or equal to 79, | 
 | 	put a newline automatically. | 
 | 	* stage2/shared.h (auto_fill): Declared. | 
 | 	* stage2/stage2.c (run_menu): In the menu interface, disable the | 
 | 	auto fill mode (i.e. set AUTO_FILL to zero), and enable it again | 
 | 	when booting an entry. | 
 | 	(cmain): Initialize AUTO_FILL (i.e. set it to one) in the | 
 | 	beginning of the loop. | 
 | 	 | 
 | 2000-09-06  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Add support for "boot previously booted entry by default", based | 
 | 	on the patch by Mike Meyer <mwm@mired.org>, but I've modified | 
 | 	his patch thoroughly. | 
 | 	 | 
 | 	* grub/asmstub.c (saved_entryno): New variable. This is a dummy. | 
 | 	* stage1/stage1.h (COMPAT_VERSION_MINOR): Incremented. | 
 | 	* stage2/asm.S (saved_entryno): New variable. | 
 | 	(codestart) [!SUPPORT_DISKLESS]: Set INSTALL_SECOND_SECTOR to | 
 | 	%ebp. %ebp is set in start.S. | 
 | 	(install_second_sector): New variable. | 
 | 	* stage2/builtins.c (current_entryno): New variable. | 
 | 	(default_func) [!SUPPORT_DISKLESS]: If ARG is "saved", set | 
 | 	DEFAULT_ENTRY to SAVED_ENTRYNO. | 
 | 	(savedefault_func): New function. | 
 | 	(builtin_savedefault): New variable. | 
 | 	(builtin_table): Added a pointer to BUILTIN_SAVEDEFAULT. | 
 | 	* stage2/shared.h (STAGE2_SAVED_ENTRYNO): New macro. | 
 | 	(STAGE2_STAGE2_ID): Changed to 0x10. | 
 | 	(STAGE2_FORCE_LBA): Chaged to 0x11. | 
 | 	(STAGE2_VER_STR_OFFS): Changed to 0x12. | 
 | 	(install_second_sector): Declared. | 
 | 	(saved_entryno): Likewise. | 
 | 	(current_entryno): Likewise. | 
 | 	* stage2/stage2.c (run_menu): Set CURRENT_ENTRYNO to FIRST_ENTRY | 
 | 	+ ENTRYNO, right before calling run_script. | 
 | 	* stage2/start.S (start): Save the sector number of the second | 
 | 	sector in %ebp. | 
 | 	 | 
 | 2000-09-05  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage1/stage1.S (lba_mode) [!NO_BUGGY_BIOS_IN_THE_WORLD]: | 
 | 	Don't check for the geometry, since some BIOSes don't return the | 
 | 	number of total sectors correctly, even if they have working LBA | 
 | 	support. | 
 | 	* stage2/start.S (lba_mode) [!NO_BUGGY_BIOS_IN_THE_WORLD]: | 
 | 	Likewise. | 
 | 	* stage2/bios.c (biosdisk) [!NO_BUGGY_BIOS_IN_THE_WORLD]: | 
 | 	Likewise. | 
 | 	Reported by Jan Fricke <fricke@uni-greifswald.de> and Pixel | 
 | 	<pixel@mandrakesoft.com>. | 
 | 	 | 
 | 2000-09-05  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Alessandro Rubini <rubini@gnu.org>: | 
 | 	* stage2/char_io.c (print_error) [!STAGE1_5]: Print ERRNUM like | 
 | 	"Error 9: Unknown boot failure". | 
 | 	(print_error) [STAGE1_5]: Don't print a colon. | 
 | 	* util/grub-install.in: When checking if an error occurred, use | 
 | 	the expression "Error [0-9]*: " instead of "Error: ". | 
 | 	* docs/user-ref.texi (Stage1.5 errors): Updated, since the error | 
 | 	form changed. | 
 | 	 | 
 | 2000-09-04  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/stage2.c (run_menu) [GRUB_UTIL]: Set DISP_UP and | 
 | 	DISP_DOWN to ACS_UARROW and ACS_DARROW, respectively. Don't call | 
 | 	grub_printf here. | 
 | 	(run_menu) [!GRUB_UTIL]: Don't call grub_printf here. Instead, | 
 | 	call it... | 
 | 	(run_menu): ... here. | 
 | 	* stage2/shared.h (ACS_ULCORNER): Always define this ourselves, | 
 | 	whether your curses library has the definition. | 
 | 	(ACS_URCORNER): Likewise. | 
 | 	(ACS_LLCORNER): Likewise. | 
 | 	(ACS_LRCORNER): Likewise. | 
 | 	(ACS_HLINE): Likewise. | 
 | 	(ACS_VLINE): Likewise. | 
 | 	(ACS_LARROW): Likewise. | 
 | 	(ACS_RARROW): Likewise. | 
 | 	(ACS_UARROW): Likewise. | 
 | 	(ACS_DARROW): Likewise. | 
 |  | 
 | 	* stage2/char_io.c [SUPPORT_SERIAL] (serial_cls): If the | 
 | 	terminal is dumb, just put a newline. | 
 | 	* stage2/builtins.c (terminal_func) [SUPPORT_SERIAL]: When | 
 | 	choosing a terminal, don't set TERMINAL to the type of the | 
 | 	terminal. Instead, apply a logical AND operation with | 
 | 	TERMINAL_DUMB, since previous code brushed off the dumb | 
 | 	attribute. | 
 | 	 | 
 | 2000-09-04  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/stage2.c (run_menu): If SHOW_MENU is zero, print a | 
 | 	message with the timeout per second. | 
 | 	If GRUB_TIMEOUT is negative, set SHOW_MENU to one, since the | 
 | 	condition "no timeout and no interface" is nonsense. | 
 | 	If GRUB_TIMEOUT is equal to or greater than zero and the | 
 | 	terminal is dumb, set SHOW_MENU to zero. | 
 | 	If SHOW_MENU is non-zero and the terminal is dumb, enter the | 
 | 	command-line interface instead. If AUTH is false and PASSWORD is | 
 | 	non-NULL, prompt the user to enter a password until the entered | 
 | 	password is identical to PASSWORD. | 
 | 	 | 
 | 2000-09-03  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* util/grub-install.in: Fix a typo: grub_dir -> grubdir. | 
 | 	* stage2/builtins.c (install_func) [GRUB_UTIL]: Open a Stage 2 | 
 | 	with "r+" instead of "r", as GRUB needs to overwrite it. | 
 | 	 | 
 | 2000-09-02  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/stage2.c (run_menu): Don't use either `p' or `n' to | 
 | 	move the cursor, because `p' is already used for another | 
 | 	purpose (password). | 
 | 	(run_menu) [SUPPORT_SERIAL]: Don't set the variables DISP_UP and | 
 | 	DISP_DOWN at the start time. Instead, set them just before using | 
 | 	them actually, because TERMINAL may change when running a menu. | 
 | 	 | 
 | 2000-09-01  Klaus Reichl  <Klaus.Reichl@alcatel.at> | 
 |  | 
 | 	* stage2/stage2.c (run_menu): Setup and use disp_up, disp_down | 
 | 	depending on the terminal mode. | 
 | 	(run_menu): Allow '^' (resp. 'p') and 'v' (resp 'n') keys we | 
 | 	described in our help above (resp. authors preferences). | 
 |  | 
 | 2000-08-31  Klaus Reichl  <Klaus.Reichl@alcatel.at> | 
 |  | 
 | 	* stage2/stage2.c (set_line): Go back one char, which is | 
 | 	consistent with the original situation, when a timeout was | 
 | 	running.   | 
 | 	(run_menu): If GRUB_TIMEOUT is stopped don't loop busy over | 
 | 	CHECKKEY, just relax in GETKEY.  | 
 |  | 
 | 	* stage2/builtins.c (serial_func): --speed handling: corrected | 
 | 	typo: set SPEED instead of PORT.  | 
 | 	 | 
 | 2000-08-31  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (terminal_func): Added two new options, | 
 | 	--dumb and --timeout=SECS. | 
 | 	* stage2/char_io.c [!STAGE1_5] (getkey): Use logical AND | 
 | 	operations, when checking if the terminal is a console or a | 
 | 	serial terminal. | 
 | 	[!STAGE1_5] (getkey) [SUPPORT_SERIAL]: Don't check if both | 
 | 	TERMINAL_CONSOLE and TERMINAL_SERIAL are set in TERMINAL. | 
 | 	 | 
 | 2000-08-31  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage1/stage1.S (MOV_MEM_TO_AL): New macro. | 
 | 	(real_start): Use the macro MOV_MEM_TO_AL instead of using movb | 
 | 	directly, because binutils-2.9.1.0.x doesn't produce a short | 
 | 	opcode for it automatically. Reported by Alessandro Rubini | 
 | 	<rubini@gnu.org>. | 
 |  | 
 | 2000-08-30  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* configure.in (CPPFLAGS): Remove -Wundef by default. Add the | 
 | 	option only if the C compiler supports it, because GCC 2.7.x | 
 | 	doesn't support it. | 
 | 	* grub/main.c (longopts): The type of the argument for "hold" is | 
 | 	changed to OPTIONAL_ARGUMENT. | 
 | 	(main): If --hold is specified, check if OPTARG is zero. If so, | 
 | 	set HOLD to -1, otherwise, set it to the digit OPTARG. | 
 | 	If HOLD is greater than zero, decrease it once per loop. | 
 | 	 | 
 | 2000-08-30  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	The command-line interface is switched to single-line editing | 
 | 	mode. | 
 | 	 | 
 | 	* stage2/char_io.c [!STAGE1_5] (get_cmdline): Extensively | 
 | 	rewritten. The nested functions cl_print and cl_kill_to_end are | 
 | 	removed, cl_refresh, cl_backward, cl_forward and cl_delete are | 
 | 	added, and, cl_init and cl_insert are rewritten from scratch. | 
 | 	See the source code, for more information. I don't think this | 
 | 	kind of changes can be represented in ChangeLog. | 
 | 	[!STAGE1_5] (CMDLINE_WIDTH): New macro. | 
 | 	[!STAGE1_5] (CMDLINE_MARGIN): Likewise. | 
 | 	* stage2/shared.h (TERMINAL_DUMB): Likewise. | 
 | 	 | 
 | 2000-08-28  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* grub/asmstub.c (console_putchar) [HAVE_LIBCURSES]: If | 
 | 	USE_CURSES is true, emulate a new line like a ordinary terminal, | 
 | 	because ncurses treats it badly. If current position on y-axis | 
 | 	is the bottom of the screen, call scroll. Otherwise, call move | 
 | 	with the arguments, Y + 1 and X, where X and Y are current | 
 | 	position of the cursor. | 
 | 	 | 
 | 2000-08-28  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/asm.S (console_putchar): Don't print a carriage return | 
 | 	when C is a newline. | 
 | 	* stage2/char_io.c (grub_putchar): Call grub_putchar with the | 
 | 	arugment set to a carriage return, if C is a newline. | 
 | 	[!STAGE1_5 && SUPPORT_SERIAL]: Don't print a carriage return | 
 | 	when C is a newline. | 
 | 	 | 
 | 2000-08-27  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* lib/device.c [__linux__]: Don't include linux/fs.h. | 
 | 	[!BLKGETSIZE] (BLKGETSIZE): Defined as _IO(0x12,96). | 
 | 	* grub/asmstub.c [__linux__]: Don't include linux/fs.h. | 
 | 	 | 
 | 2000-08-27  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Preserve a magic number used by Windows NT in a MBR. Shit! | 
 | 	Reported by Khimenko Victor. | 
 | 	 | 
 | 	* stage1/stage1.h (STAGE1_WINDOWS_NT_MAGIC): New macro. | 
 | 	* stage1/stage1.S (copy_buffer): Use pusha and popa, instead of | 
 | 	pushing/poping %cx and %si separately, to reduce the code size. | 
 | 	(nt_magic): New label. Set the offset to _start plus | 
 | 	STAGE1_WINDOWS_NT_MAGIC | 
 | 	(part_start): New label. | 
 | 	* stage2/builtins.c (install_func): If DEST_DRIVE is a hard | 
 | 	disk, copy the possible partition table and Windows NT magic to | 
 | 	STAGE1_BUFFER from OLD_SECT. | 
 | 	 | 
 | 2000-08-26  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/char_io.c (translate_keycode) [SUPPORT_SERIAL]: Don't | 
 | 	drain the input buffer, since that was irritating. | 
 | 	 | 
 | 2000-08-26  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Don't save/restore fragile registers unnecessarily. | 
 | 	 | 
 | 	* stage2/asm.S [!STAGE1_5] (track_int13): Don't save/restore | 
 | 	%ecx, %edx, or %eax. | 
 | 	[!STAGE1_5] (set_int13_handler): Likewise. | 
 | 	(biosdisk_int13_extensions): Likewise. | 
 | 	(biosdisk_standard): Likewise. | 
 | 	(check_int13_extensions): Likewise. | 
 | 	(get_diskinfo_int13_extensions): Likewise. | 
 | 	(get_diskinfo_standard): Likewise. | 
 | 	(get_diskinfo_floppy): Likewise. | 
 | 	[!STAGE1_5] (get_eisamemsize): Likewise. | 
 | 	[!STAGE1_5] (get_mmap_entry): Likewise. | 
 | 	[!STAGE1_5] (console_cls): Likewise. | 
 | 	[!STAGE1_5] (nocursor): Likewise. | 
 | 	[!STAGE1_5] (console_getxy): Likewise. | 
 | 	[!STAGE1_5] (console_gotoxy): Likewise. | 
 | 	[!STAGE1_5] (set_attrib): Likewise. | 
 | 	[!STAGE1_5] (getrtsecs): Likewise. | 
 | 	[!STAGE1_5] (currticks): Likewise, and don't zero %eax | 
 | 	explicitly, since prot_to_real does that. | 
 | 	 | 
 | 2000-08-25  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/char_io.c [!STAGE1_5] (translate_keycode): New | 
 | 	function. The serial part is stolen from the patch by Christoph | 
 | 	Plattner. | 
 | 	[!STAGE1_5] (get_cmdline): Call translate_keycode instead of | 
 | 	translating special key codes into ASCII characters by itself. | 
 | 	* stage2/stage2.c (run_menu): Wrap getkey with the macro | 
 | 	ASCII_CHAR, when checking if ESC is pressed. | 
 | 	Call translate_keycode as well as getkey, unless checkkey | 
 | 	returns -1. So don't check if C is KEY_DOWN or KEY_UP. And don't | 
 | 	use the macro ASCII_CHAR for C explicitly. | 
 | 	* stage2/shared.h (translate_keycode): Declared. | 
 | 	 | 
 | 2000-08-24  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c [GRUB_UTIL]: Include stdio.h before | 
 | 	shared.h. Reported by Mathieu Chouquet-Stringer | 
 | 	<mchouque@cs.stevens-tech.edu>. | 
 | 	 | 
 | 2000-08-21  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* configure.in (--enable-serial-speed-emulation): New option. | 
 | 	(SERIAL_SPEED_SIMULATION): New conditional. | 
 | 	* grub/Makefile.am (SERIAL_FLAGS): New variable. Set | 
 | 	-DSUPPORT_SERIAL=1 and -DSIMULATE_SLOWNESS_OF_SERIAL=1, if | 
 | 	SERIAL_SPEED_SIMULATION is defined, otherwise, set it to | 
 | 	only -DSUPPORT_SERIAL=1. | 
 | 	(AM_CFLAGS): Removed -DSUPPORT_SERIAL=1 and added | 
 | 	$(SERIAL_FLAGS). | 
 | 	* grub/asmstub.c [SIMULATE_SLOWNESS_OF_SERIAL] (serial_speed): | 
 | 	New variable. | 
 | 	(grub_setjmp): Removed. | 
 | 	(grub_longjmp): Likewise. | 
 | 	(serial_getkey) [SIMULATE_SLOWNESS_OF_SERIAL]: Wait for | 
 | 	1000000 / (SERIAL_SPEED >> 3) microseconds using gettimeofday. | 
 | 	(serial_putchar) [SIMULATE_SLOWNESS_OF_SERIAL]: Likewise. | 
 | 	(serial_init) [SIMULATE_SLOWNESS_OF_SERIAL]: Set SERIAL_SPEED to | 
 | 	SPEED. | 
 | 	* stage2/builtins.c (serial_func) [SUPPORT_SERIAL]: Added | 
 | 	a new option, `--speed'. | 
 | 	(builtin_serial): Added a description about --speed. | 
 | 	(terminal_func): When get a key from a serial device, if GRUB is | 
 | 	in the command-line interface, call grub_longjmp with | 
 | 	RESTART_CMDLINE_ENV, instead of init_page. | 
 | 	* stage2/cmdline.c (restart_cmdline_env): New variable. | 
 | 	(enter_cmdline): Call grub_setjmp with RESTART_CMDLINE_ENV after | 
 | 	calling init_cmdline. | 
 | 	(run_script): Run BUILTIN->FUNC with BUILTIN_SCRIPT instead of | 
 | 	BUILTIN_CMDLINE. | 
 | 	* stage2/shared.h (BUILTIN_SCRIPT): New macro. | 
 | 	[GRUB_UTIL] (grub_setjmp): Defined as setjmp. | 
 | 	[GRUB_UTIL] (grub_longjmp): Defined as longjmp. | 
 | 	(restart_cmdline_env): Declared. | 
 | 	 | 
 | 2000-08-20  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* configure.in (--enable-serial): New option. Serial terminal | 
 | 	support will be enabled by default, once it is stabilized. | 
 | 	(SERIAL_SUPPORT): New conditional. | 
 | 	* grub/Makefile.am (AM_CFLAGS): Added -DSUPPORT_SERIAL=1. | 
 | 	* grub/asmstub.c (cls): Renamed to ... | 
 | 	(console_cls): ... this. | 
 | 	(getxy): Renamed to ... | 
 | 	(console_getxy): ... this. | 
 | 	(gotoxy): Renamed to ... | 
 | 	(console_gotoxy): ... this. | 
 | 	* stage2/Makefile.am (libgrub_a_CFLAGS): Added | 
 | 	-DSUPPORT_SERIAL=1. | 
 | 	(NETBOOT_FLAGS): New variable. | 
 | 	(SERIAL_FLAGS): Likewise. | 
 | 	(STAGE2_COMPILE): Added $(NETBOOT_FLAGS) and $(SERIAL_FLAGS). | 
 | 	* stage2/asm.S [!STAGE1_5] (cls): Renamed to ... | 
 | 	[!STAGE1_5] (console_cls): ... this. | 
 | 	[!STAGE1_5] (getxy): Renamed to ... | 
 | 	[!STAGE1_5] (console_getxy): ... this. | 
 | 	[!STAGE1_5] (gotoxy): Renamed to ... | 
 | 	[!STAGE1_5] (console_gotoxy): ... this. | 
 | 	* stage2/builtins.c (terminal_func): If the bit flag | 
 | 	BUILTIN_CMDLINE in FLAGS is set, call init_page. But this should | 
 | 	be fixed so that it restarts enter_cmdline instead. | 
 | 	* stage2/char_io.c [!STAGE1_5] (gotoxy): New function. | 
 | 	[!STAGE1_5] (serial_gotoxy): Likewise. | 
 | 	[!STAGE1_5] (getxy): Likewise. | 
 | 	[!STAGE1_5] (serial_getxy): Likewise. | 
 | 	[!STAGE1_5] (cls): Likewise. | 
 | 	[!STAGE1_5] (serial_cls): Likewise. | 
 | 	* stage2/serial.h (serial_cls): Declared. | 
 | 	(serial_getxy): Likewise. | 
 | 	(serial_gotoxy): Likewise. | 
 | 	* stage2/shared.h (console_cls): Likewise. | 
 | 	(console_getxy): Likewise. | 
 | 	(console_gotoxy): Likewise. | 
 | 	* stage2/stage2.c (print_entries): If serial terminal is | 
 | 	enabled, print ACS_UARROW and ACS_DARROW instead of DISP_UP and | 
 | 	DISP_DOWN, respectively. | 
 | 	(print_border): If serial terminal is enabled, print | 
 | 	ACS_ULCORNER, ACS_URCORNER, ACS_LLCORNER, ACS_LRCORNER, | 
 | 	ACS_HLINE and ACS_VLINE instead of DISP_UL, DISP_UR, DISP_LL, | 
 | 	DISP_LR, DISP_HORIZ and DISP_VERT, respectively. | 
 | 	(print_border) [SUPPORT_SERIAL]: Color the menu only if console | 
 | 	is used. | 
 | 	(set_line): Take two more arguments, ENTRYNO and MENU_ENTRIES. | 
 | 	(set_line_normal): Likewise. | 
 | 	(set_line_highlight): Likewise. | 
 | 	(set_line) [SUPPORT_SERIAL]: If serial terminal is enabled, get | 
 | 	the menu entry whose attributes are being changed and redraw the | 
 | 	line. | 
 | 	(set_line_highlight) [SUPPORT_SERIAL]: If serial terminal is | 
 | 	enabled, print `ESC [ 7 m' and `ESC [ 0 m' before and after | 
 | 	calling set_line, respectively. | 
 | 	(run_menu) [SUPPORT_SERIAL]: Call nocursor only if console is | 
 | 	used. | 
 | 	 | 
 | 2000-08-20  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Now the serial console support is partially working. | 
 | 	 | 
 | 	* grub/asmstub.c (serial_checkkey): Specify a pointer to TIMEOUT | 
 | 	as the fifth argument to select. | 
 | 	(serial_get_port): New function. Just a dummy. | 
 | 	(serial_init): If a serial device is opened, close SERIAL_FD | 
 | 	before opeing a new serial device. | 
 | 	Don't specify O_NDELAY to open. | 
 | 	* stage2/builtins.c [SUPPORT_SERIAL]: Include serial.h. | 
 | 	(serial_func): New function. | 
 | 	(builtin_serial): New variable. | 
 | 	(terminal_func): New function. | 
 | 	(builtin_terminal): New variable. | 
 | 	(builtin_table): Add pointers to BUILTIN_SERIAL and | 
 | 	BUILTIN_TERMINAL. | 
 | 	* stage2/char_io.c [SUPPORT_SERIAL]: Include serial.h. | 
 | 	(getkey) [SUPPORT_SERIAL]: If both TERMINAL_CONSOLE and | 
 | 	TERMINAL_SERIAL are set in TERMINAL simultaneously, print a | 
 | 	warning and force the console terminal. | 
 | 	(checkkey) [SUPPORT_SERIAL]: If TERMINAL_SERIAL is set in | 
 | 	TERMINAL, call serial_checkkey. | 
 | 	(grub_putchar) [SUPPORT_SERIAL]: If TERMINAL_SERIAL is set in | 
 | 	TERMINAL, call serial_putchar. If C is a newline, print a | 
 | 	carriage return, before printing a newline. | 
 | 	 | 
 | 2000-08-15  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	The image `nbgrub' now relocates itself from 0x10000 to 0x8000, | 
 | 	since the Network Boot Image Proposal doesn't permit a second | 
 | 	loader to be loaded below 0x10000. Reported by Matthias | 
 | 	Kretschmer <McCratch@gmx.net>. | 
 | 	 | 
 | 	* Makefile.am (NBLOADER_LINK): New variable. | 
 | 	(nbloader_exec_LDFLAGS): Set to $(NBLOADER_LINK) instead of | 
 | 	$(START_LINK). | 
 | 	* stage2/nbi.h (NBI_DEST_ADDR): Changed to 0x10000. | 
 | 	(NBI_DEST_SEG): New macro. | 
 | 	(NBI_DEST_OFF): Likewise. | 
 | 	(RELOCATED_ADDR): Likewise. | 
 | 	(RELOCATED_SEG): Likewise. | 
 | 	(RELOCATED_OFF): Likewise. | 
 | 	(STAGE2_START_ADDR): Likewise. | 
 | 	* stage2/nbloader.S: Added .code16 directive at the start of the | 
 | 	code. | 
 | 	Set the segment and the offset of the load address to | 
 | 	NBI_DEST_SEG and NBI_DEST_OFF, respectively. | 
 | 	Set the segment and the offset of the start address to | 
 | 	NBI_DEST_SEG and NBI_DEST_OFF + relocate - _start, respectively. | 
 | 	Added a routine for relocating itself. | 
 | 	(relocate): New label. | 
 | 	(copy_rest): Likewise. | 
 | 	(copy_loop): Likewise. | 
 | 	(copy): Likewise. | 
 | 	(boot_stage2): Likewise. | 
 | 	 | 
 | 2000-08-13  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* grub/main.c (main): Move the version number inside the | 
 | 	parentheses, since the grub shell is merely one of the programs | 
 | 	included in GNU GRUB. | 
 | 	 | 
 | 2000-08-13  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Add a serial device emulation into the grub shell. | 
 | 	 | 
 | 	* grub/asmstub.c: Include sys/time.h and termios.h. | 
 | 	(serial_fd): New variable. | 
 | 	(serial_device): Likewise. | 
 | 	(serial_getkey): New function. | 
 | 	(serial_checkkey): Likewise. | 
 | 	(serial_putchar): Likewise. | 
 | 	(get_termios_speed): Likewise. | 
 | 	(serial_init): Likewise. | 
 | 	(set_serial_device): Likewise. | 
 | 	(grub_stage2): Restore SERIAL_DEVICE and SERIAL_FD, if they were | 
 | 	allocated. | 
 | 	* stage2/serial.h [GRUB_UTIL] (set_serial_device): Declared. | 
 | 	 | 
 | 2000-08-13  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/asm.S (codestart) [SUPPORT_DISKLESS]: Don't reset a | 
 | 	disk system. That is not only uncessary but also harmful. | 
 | 	 | 
 | 2000-08-12  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Add a serial device driver (but only the driver). | 
 | 	 | 
 | 	* stage2/serial.c: New file. | 
 | 	* stage2/serial.h: Likewise. | 
 | 	* stage2/shared.h (serial_getkey): Moved to stage2/serial.h. | 
 | 	(serial_checkkey): Likewise. | 
 | 	(serial_putchar): Likewise. | 
 | 	* stage2/Makefile.am (noinst_HEADERS): Added serial.h. | 
 | 	(pre_stage2_exec_SOURCES): Added serial.c. | 
 |  | 
 | 2000-08-10  Pavel Roskin  <proski@gnu.org> | 
 |  | 
 | 	* docs/tutorial.texi: Minor fixes. | 
 |  | 
 | 2000-08-10  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/tutorial.texi (Installation): Divided into three sections | 
 | 	instead of two sections. Don't describe the usage of the the | 
 | 	grub shell any longer. Instead, how to use grub-install is | 
 | 	documented. | 
 | 	 | 
 | 2000-08-09  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c [GRUB_UTIL]: Include stdio.h. | 
 | 	(embed_func) [GRUB_UTIL && __linux__]: When embedding a Stage | 
 | 	1.5 into a partition, call write_to_partition instead of | 
 | 	biosdisk. | 
 | 	(install_func): Set DEST_PARTITION to the partition where Stage | 
 | 	1 resides. | 
 | 	Set SRC_PART_START to the starting address of the partition | 
 | 	where Stage 2 resides. | 
 | 	(install_func) [GRUB_UTIL]: Set STAGE2_OS_FILE to the file name | 
 | 	of Stage 2 under an OS, if the new option "--stage2" is | 
 | 	specified. Otherwise, set it to null. | 
 | 	If STAGE2_OS_FILE is not null, modify the Stage 2 via the | 
 | 	filesystem serviced by the OS. | 
 | 	(install_func) [GRUB_UTIL && __linux__]: If STAGE2_OS_FILE is | 
 | 	null but the Stage2 resides in a partition, use | 
 | 	write_to_partition. | 
 | 	If DEST_PARTITION is not 0xFFFFFF, use write_to_partition, to | 
 | 	embed Stage 1. | 
 | 	(setup_func) [GRUB_UTIL]: If --stage2 is specified, set | 
 | 	STAGE2_ARG to the string pointing to the option. Otherwise, set | 
 | 	it to null. | 
 | 	(setup_func) [!GRUB_UTIL]: Set STAGE2_ARG to null. | 
 | 	(setup_func): If STAGE2_ARG is not null, add STAGE2_ARG and a | 
 | 	space character into CMD_ARG. | 
 | 	* lib/device.c (_LARGEFILE_SOURCE): Defined. | 
 | 	(_FILE_OFFSET_BITS): Likewise. | 
 | 	[__linux__] (write_to_partition): New function. | 
 | 	* lib/device.h [__linux__] (write_to_partition): Declared. | 
 | 	* util/grub-install.in: Specify the option "--stage2" for the | 
 | 	command "setup". | 
 | 	 | 
 | 2000-08-04  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* stage2/fsys_fat.c (fat_superblock): clust_eof_marker added. | 
 | 	(fat_mount): Initialize clust_eof_marker to 0xff8, 0xfff8, or | 
 | 	0xffffff8, depending on fat size.  Support for single active FAT | 
 | 	added (FAT32 extension). Changed the boundary between FAT12 and | 
 | 	FAT16, again.  The Microsoft KB article Q65541 seems to be wrong | 
 | 	here, I go with mtools and the previous behaviour of grub: FAT12 | 
 | 	iff number of clusters (without counting the two nonexisting | 
 | 	clusters) is less or equal 4095. | 
 | 	(fat_read): Report error if cluster number is too big, but not | 
 | 	greater or equal clust_eof_marker. | 
 | 	* stage2/fsys_reiserfs.c (journal_init): Fixed calculation of | 
 | 	journal_transaction. | 
 | 	 | 
 | 2000-08-01  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* stage2/fsys_reiserfs.c: Symlink support added. | 
 | 	(S_ISLNK): New macro. | 
 | 	(PATH_MAX): Likewise. | 
 | 	(MAX_LINK_COUNT): Likewise. | 
 | 	(reiserfs_dir): Check for symlink and handle them. | 
 | 	(read_tree_node): Take a block number and check if tree node was | 
 |  	already read in.  If not update the INFO->blocks field. | 
 | 	(next_key): Changed call of read_tree_node. | 
 | 	(search_stat): Likewise. | 
 | 	(journal_init): Fixed a small bug.  Some debugging messages added. | 
 | 	 | 
 | 2000-07-31  Pavel Roskin  <proski@gnu.org> | 
 |  | 
 | 	* grub/asmstub.c (biosdisk) [__linux__]: The first argument for | 
 | 	_llseek renamed from "seeked_fd" to "filedes". | 
 |  | 
 | 2000-07-30  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/appendices.texi (FAQ): Added the answer for the separate | 
 | 	boot partition problem. | 
 | 	 | 
 | 2000-07-30  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Update the network support to Etherboot-4.6.4. | 
 | 	 | 
 | 	From Daniel Wagner <wagi@gmx.ch>: | 
 | 	* netboot/3c509.c: Copied from Etherboot-4.6.4. | 
 | 	* netboot/3c509.h: Likewise. | 
 | 	* netboot/cards.h: Likewise. | 
 | 	* netboot/ns8390.c: Likewise. | 
 | 	* netboot/sk_g16.c: Likewise. | 
 | 	* netboot/sk_g16.h: Likewise. | 
 | 	* netboot/tulip.c: Likewise. | 
 | 	* netboot/pci.h: Likewise. | 
 | 	* netboot/main.c (dhcpdiscover): Updated. | 
 | 	(dhcprequest): Likewise. | 
 | 	(bootp): Likewise. | 
 | 	* netboot/README.netboot: Added the information about the new | 
 | 	option --enable-ns8390-force-16bit. | 
 | 	* configure.in (--enable-ns8390-force-16bit): New option. | 
 |  | 
 | 	* netboot/config.c: Updated. | 
 |  | 
 | 2000-07-29  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	The Linux zImage support is working now. | 
 | 	 | 
 | 	* stage2/asm.S (linux_boot): Add 3 into %ecx and shift %ecx to | 
 | 	the right by 2 bits, instead of shift %ecx to the left by 2 | 
 | 	bits. | 
 | 	 | 
 | 2000-07-29  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* stage2/fsys_reiserfs.c (block_read): Changed the variable "len" | 
 | 	to "j_len" (it shadowed a parameter). | 
 | 	 | 
 | 2000-07-29  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* configure.in (CPPFLAGS): Added -Wshadow, -Wpointer-arith and | 
 | 	-Wundef, as GCC sometimes more clever than me. :) | 
 | 	* stage2/shared.h [!ASM_FILE] (multi_boot): Change the name of | 
 | 	the second argument from "mbi" to "mb_info". | 
 | 	[!ASM_FILE] (biosdisk): Rename the first argument "read" to | 
 | 	"subfunc". | 
 | 	* lib/device.h (init_device_map): Change the name of the third | 
 | 	argument from "floppy_disks" to "no_floppies". | 
 | 	* lib/device.c (read_device_map): Rename the internal function | 
 | 	"print_error" to "show_error". | 
 | 	* stage2/builtins.c (install_func): Rename CONFIG_FILE to | 
 | 	REAL_CONFIG. | 
 | 	(setup_func): Rename INSTALL_DRIVE, INSTALL_PARTITION and | 
 | 	CONFIG_FILE to INSTALLED_DRIVE, INSTALLED_PARTITION and | 
 | 	CONFIG_FILENAME, respectively. | 
 | 	* stage2/char_io.c (convert_to_ascii): Rename the internal | 
 | 	variable C to TMP. | 
 | 	(get_cmdline): Rename KILL to KILL_BUF. | 
 | 	Rename the second argument for cl_print to REAL_ECHO_CHAR from | 
 | 	ECHO_CHAR. | 
 | 	* stage2/stage2.c (run_menu): Rename the internal variable | 
 | 	NUM_ENTRIES to NEW_NUM_ENTRIES. | 
 | 	(cmain): Rename KILL to KILL_BUF. | 
 | 	* stage2/disk_inode_ffs.h: Check if BYTE_MSF is defined before | 
 | 	checking the value. | 
 | 	* stage2/fsys_ext2fs.c (ext2fs_dir): Check if E2DEBUG is | 
 | 	defined, instead of if the value is non-zero. | 
 | 	* grub/asmstub.c: Check if __GLIBC__ is defined before checking | 
 | 	the value. | 
 | 	(biosdisk) [__linux__]: Likewise. | 
 | 	Rename the first argument for _llseek to "seeked_fd" from "fd". | 
 | 	(multi_boot): Rename the second argument to "mb_info" from | 
 | 	"mbi". | 
 | 	 | 
 | 2000-07-27  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* util/grub-image.in: Initial cut at a script for creating GRUB | 
 | 	boot images. | 
 | 	* util/Makefile.am (noinst_SCRIPTS): Added grub-image. | 
 | 	* configure.in (AC_OUTPUT): Added util/grub-image. | 
 |  | 
 | 2000-07-27  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* stage2/asm.S (check_int13_extensions): Fixed the effect of | 
 | 	the --force-lba switch in stage2/stage1_5. | 
 | 	 | 
 | 2000-07-25  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* stage2/fsys_fat.c (fat_mount): Fixed calculation of num_clust. | 
 | 	It was off by two, since the two non existing clusters 0 and 1 | 
 | 	were not taken into account.  Also fixed the boundary between | 
 | 	FAT12 and FAT16. | 
 | 	 | 
 | 2000-07-25  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/asm.S [!STAGE1_5] (linux_text_len): New variable. | 
 | 	[!STAGE1_5] (linux_boot): Don't set %eax to LINUX_SETUP | 
 | 	meaninglessly. | 
 | 	Set %ecx to LINUX_TEXT_LEN instead of LINUX_KERNEL_MAXLEN. | 
 | 	[!STAGE1_5] (big_linux_boot): Disable interrupts before changing | 
 | 	the stack pointer. | 
 | 	Change %ss right before %sp. | 
 | 	Reverse the arguments for ljmp. A segment must be after an | 
 | 	offset. *sigh* | 
 | 	* stage2/boot.c (load_image): Set LINUX_TEXT_LEN to TEXT_LEN, | 
 | 	if a Linux kernel is loaded successfully. | 
 | 	* stage2/shared.h (LINUX_VID_MODE_OFFSET): Removed. | 
 | 	[!ASM_FILE] (linux_kernel_header): Change the type of the member | 
 | 	`heap_end_ptr' to unsigned short. | 
 | 	[!ASM_FILE] (linux_text_len): Declared. | 
 | 	 | 
 | 2000-07-24  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Comply with the Linux/i386 boot protocol version 2.02. | 
 | 	 | 
 | 	* stage2/asm.S [!STAGE1_5] (linux_boot): Set the length of moved | 
 | 	bytes to LINUX_KERNEL_MAXLEN instead of | 
 | 	LINUX_KERNEL_LEN_OFFSET(%eax), since the field is obsolete. | 
 | 	[!STAGE1_5] (big_linux_boot): Don't use SEGMENT or OFFSET. | 
 | 	Instead, embed the segment and the offset in the code itself. | 
 | 	Set %ds, %es, %fs and %gs to %ax (LINUX_INIT_SEG). | 
 | 	* stage2/boot.c (load_image): Rewrite the Linux support code | 
 | 	heavily. Use a structure instead of a batch of macros, to access | 
 | 	a Linux kernel header. | 
 | 	(load_initrd): If MOVETO plus LEN is greater than or equal to | 
 | 	LINUX_INITRD_MAX_ADDRESS, set MOVETO to LINUX_INITRD_MAX_ADDRESS | 
 | 	minus LEN with page aligned. | 
 | 	* stage2/shared.h (LINUX_MAGIC_SIGNATURE): New macro. | 
 | 	(LINUX_DEFAULT_SETUP_SECTS): Likewise. | 
 | 	(LINUX_FLAG_CAN_USE_HEAP): Likewise. | 
 | 	(LINUX_INITRD_MAX_ADDRESS): Likewise. | 
 | 	(LINUX_MAX_SETUP_SECTS): Likewise. | 
 | 	(LINUX_BOOT_LOADER_TYPE): Likewise. | 
 | 	(LINUX_HEAP_END_OFFSET): Likewise. | 
 | 	(LINUX_SETUP_MAXLEN): Removed. | 
 | 	(LINUX_KERNEL_LEN_OFFSET): Likewise. | 
 | 	(LINUX_SETUP_LEN_OFFSET): Likewise. | 
 | 	(LINUX_SETUP_STACK): Set to 0x7F00 instead of 0x3FF4 (why was it | 
 | 	this value?). | 
 | 	(LINUX_SETUP_LOADER): Removed. | 
 | 	(LINUX_SETUP_LOAD_FLAGS): Likewise. | 
 | 	(LINUX_SETUP_CODE_START): Likewise. | 
 | 	(LINUX_SETUP_INITRD): Likewise. | 
 | 	(CL_MY_LOCATION): Set to RAW_ADDR(0x97F00) instead of | 
 | 	RAW_ADDR(0x92000). | 
 | 	(CL_MY_END_ADDR): Set to RAW_addr(0x97FFF) instead of | 
 | 	RAW_ADDR(0x920FF). | 
 | 	(CL_MAGIC_ADDR): Removed. | 
 | 	(CL_OFFSET): Likewise. | 
 | 	[!ASM_FILE] (struct linux_kernel_header): New structure tag. | 
 | 	 | 
 | 2000-07-23  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/tutorial.texi: Fix some syntax errors and ambiguous | 
 | 	sentences. Suggested by M. Meiarashi <mes@st.rim.or.jp>. | 
 | 	 | 
 | 2000-07-14  Khimenko Victor  <grub@khim.sch57.msk.ru> | 
 |  | 
 | 	* stage2/boot.c (load_image): When getting the text length of a  | 
 | 	Linux kernel, use unsigned long instead of unsigned short. | 
 | 	 | 
 | 2000-07-13  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* lib/device.c: Include errno.h. Reported by Thierry DELHAISE | 
 | 	<thierry.delhaise@delhaise.com>. | 
 | 	 | 
 | 2000-07-12  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Just to start implementing serial console support... | 
 | 	 | 
 | 	* stage2/asm.S (grub_putchar): Renamed to ... | 
 | 	(console_putchar): ... this. | 
 | 	[!STAGE1_5] (getkey): Renamed to ... | 
 | 	[!STAGE1_5] (console_getkey): ... this. | 
 | 	[!STAGE1_5] (checkkey): Renamed to ... | 
 | 	[!STAGE1_5] (console_checkkey): ... this. | 
 | 	* stage2/char_io.c [!STAGE1_5] (getkey): New function. | 
 | 	[!STAGE1_5] (checkkey): Likewise. | 
 | 	(grub_putchar): Likewise. | 
 | 	* stage2/shared.h [!STAGE1_5] (terminal): Declared. | 
 | 	[!STAGE1_5] (TERMINAL_CONSOLE): New macro. | 
 | 	[!STAGE1_5] (TERMINAL_SERIAL): Likewise. | 
 | 	(console_putchar): Declared. | 
 | 	(serial_putchar): Likewise. | 
 | 	(console_getkey): Likewise. | 
 | 	(serial_getkey): Likewise. | 
 | 	(console_checkkey): Likewise. | 
 | 	(serial_checkkey): Likewise. | 
 | 	* stage2/builtins.c (terminal): New global variable. The default | 
 | 	is TERMINAL_CONSOLE. | 
 | 	* grub/asmstub.c (grub_putchar): Renamed to ... | 
 | 	(console_putchar): ... this. | 
 | 	(getkey): Renamed to ... | 
 | 	(console_getkey): ... this. | 
 | 	(checkkey): Renamed to ... | 
 | 	(console_checkkey): ... this. | 
 | 	 | 
 | 2000-07-12  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/Makefile.am (libgrub_a_CFLAGS): Added | 
 | 	-I$(top_srcdir)/lib. | 
 | 	* stage2/builtins.c [GRUB_UTIL]: Include device.h. | 
 | 	 | 
 | 2000-07-12  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Segreate OS-specific helper functions from asmstub.c. | 
 | 	 | 
 | 	* grub/asmstub.c [__linux__]: Don't include linux/hdreg.h, | 
 | 	linux/major.h, linux/kdev_t.h, or linux/cdrom.h. | 
 | 	[__FreeBSD__ || __NetBSD__ || __OpenBSD__]: Don't include | 
 | 	sys/ioctl.h, sys/disklabel.h, or sys/ioctl.h. | 
 | 	[HAVE_OPENDISK]: Don't include util.h. | 
 | 	Include device.h. | 
 | 	(DEFAULT_FD_CYLINDERS): Removed. | 
 | 	(DEFAULT_FD_HEADS): Likewise. | 
 | 	(DEFAULT_FD_SECTORS): Likewise. | 
 | 	(DEFAULT_HD_CYLINDERS): Likewise. | 
 | 	(DEFAULT_HD_HEADS): Likewise. | 
 | 	(DEFAULT_HD_SECTORS): Likewise. | 
 | 	(NUM_DISKS): Likewise. | 
 | 	(init_device_map): Likewise. | 
 | 	(get_floppy_disk_name): Likewise. | 
 | 	(get_ide_disk_name): Likewise. | 
 | 	(get_scsi_disk_name): Likewise. | 
 | 	(check_device): Likewise. | 
 | 	(get_drive_geometry): Likewise. | 
 | 	* grub/main.c (no_floppy): Removed. | 
 | 	(probe_second_floppy): Likewise. | 
 | 	(floppy_disks): New global variable. | 
 | 	(main): Set FLOPPY_DISKS to zero, if OPT_NO_FLOPPY. Set | 
 | 	FLOPPY_DISKS to two, if OPT_PROBE_SECOND_FLOPPY. | 
 | 	* lib/Makefile.am (AM_CFLAGS): New variable. | 
 | 	* lib/device.h: New file. | 
 | 	* lib/device.c: Likewise. | 
 | 	* stage2/shared.h (no_floppy): Removed. | 
 | 	(probe_second_floppy): Likewise. | 
 | 	(check_device): Likewise. | 
 | 	(floppy_disks): Declared. | 
 | 	 | 
 | 2000-07-02  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* grub/main.c (usage): Enclose the mail address with parentheses | 
 | 	and add a period into the end of the line. That's just a | 
 | 	cosmetic change. | 
 | 	 | 
 | 2000-07-02  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/appendices.texi (Obtaining and Building GRUB): Indicate | 
 | 	the Cygnus's binutils webpage instead of the hjl's site, since | 
 | 	you can now use a public release (i.e. 2.10). | 
 | 	 | 
 | 2000-06-23  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/boot.c (load_image): Take an additional argument | 
 | 	LOAD_FLAGS. | 
 | 	If the kernel type is Linux and the bit | 
 | 	KERNEL_LOAD_NO_MEM_OPTION in LOAD_FLAGS is set, don't pass a | 
 | 	Linux's mem option automatically. | 
 | 	* stage2/shared.h (load_image): Added the new argument. | 
 | 	* stage2/builtins.c (kernel_func): If `--no-mem-option' is | 
 | 	specified, set the bit KERNEL_LOAD_NO_MEM_OPTION in LOAD_FLAGS, | 
 | 	otherwise, LOAD_FLAGS is zero. | 
 | 	 | 
 | 2000-06-22  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/tutorial.texi: Fixed some typos and syntax errors. | 
 | 	* docs/user-ref.texi: Likewise. | 
 | 	 | 
 | 2000-06-21  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/stage2.c (run_menu): Initialize CUR_ENTRY at the | 
 | 	definition. | 
 | 	If SHOW_MENU is zero, don't display the menu interface. Instead, | 
 | 	wait until the timeout is expired and then boot the default | 
 | 	entry. If the user presses `ESC' during the timeout, set | 
 | 	SHOW_MENU to one and break the loop. | 
 | 	Display the menu if SHOW_MENU is true, instead of if | 
 | 	GRUB_TIMEOUT is non-zero. | 
 | 	Set SHOW_MENU to one before go to the label `restart'. | 
 | 	* stage2/builtins.c (show_menu): New global variable. | 
 | 	(hiddenmenu_func): New function. | 
 | 	(builtin_hiddenmenu): New variable. | 
 | 	(builtin_table): Added a pointer to BUILTIN_HIDDENMENU. | 
 | 	* stage2/shared.h (show_menu): Declared. | 
 | 	 | 
 | 2000-06-19  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/mdate-sh: Moved to ... | 
 | 	* mdate-sh: ... here. | 
 | 	* docs/texinfo.tex: Moved to ... | 
 | 	* texinfo.tex: ... here. | 
 | 	 | 
 | 2000-06-09  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/mb_info.h (AddrRangeDesc): Use one 64bits field instead | 
 | 	of two 32bits fields for BaseAddr and Length, respectively. | 
 | 	BaseAddrLow + BaseAddrHigh -> BaseAddr, LengthLow + LengthHigh | 
 | 	-> Length. | 
 | 	* stage2/builtins.c (displaymem_func): Print BaseAddr >> 32, | 
 | 	BaseAddr & 0xFFFFFFFF, Length >> 32 and Length & 0xFFFFFFFF, | 
 | 	instead of BaseAddrLow, BaseAddrHigh, LengthLow and LengthHigh, | 
 | 	for MAP. | 
 | 	* stage2/common.c (fakemap): Adjusted to the new definition of | 
 | 	AddrRangeDesc. | 
 | 	(mmap_avail_at): Change the type of TOP to unsigned long long. | 
 | 	If TOP is greater than 0xFFFFFFFF, set it to 0xFFFFFFFF, since | 
 | 	GRUB itself cannot deal with 64bits addresses at the moment. | 
 | 	(init_bios_info): When getting a maximum available address from | 
 | 	the memory map, use a new unsigned long long variable MAX_ADDR | 
 | 	as the temporary variable instead of MEMTMP. This should allow | 
 | 	GRUB to detect at most 4TB. | 
 | 	 | 
 | 2000-06-18  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/appendices.texi (FAQ): Added an question about Linux's | 
 | 	`mem=' option and the answer. | 
 | 	 | 
 | 2000-06-17  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/boot.c (load_image): Pass a mem option to Linux, only | 
 | 	if SRC has no substring "mem=". | 
 | 	 | 
 | 2000-06-17  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/compile: Removed. | 
 | 	* netboot/compile: Likewise. | 
 | 	* compile: New file. Copied from Automake. | 
 | 	 | 
 | 2000-06-16  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/boot.c (load_image): Don't remove the vga option after | 
 | 	parsing it. Suggested by Tim Riker. | 
 |  | 
 | 2000-06-15  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/asm.S (grub_halt): Use jmp instead of jc, if INT 15 | 
 | 	AX=5307h fails. | 
 | 	 | 
 | 2000-06-15  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* configure.in (AM_INIT_AUTOMAKE): Increase the version number. | 
 | 	I wish that 0.5.96 will not be released actually... | 
 | 	 | 
 | 	* stage2/builtins.c (halt_func): New function. | 
 | 	(builtin_halt): New variable. | 
 | 	(reboot_func): New function. | 
 | 	(builtin_reboot): New variable. | 
 | 	(builtin_table): Added pointers to BUILTIN_HALT and | 
 | 	BUILTIN_REBOOT. | 
 | 	* stage2/asm.S (grub_halt): New function. | 
 | 	(grub_reboot): Likewise. | 
 | 	* stage2/shared.h (grub_halt): Declared. | 
 | 	(grub_reboot): Likewise. | 
 | 	* grub/asmstub.c (grub_reboot): New function. | 
 | 	(grub_halt): Likewise. | 
 | 	 | 
 | 2000-06-12  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* stage2/stage2.c (run_menu): Don't display the menu if the | 
 | 	timeout is zero.  This makes for cleaner use as a noninteractive | 
 | 	bootloader. | 
 |  | 
 | 2000-06-11  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/tutorial.texi (GNU/Linux): Added a caution about the | 
 | 	"mem=" option. | 
 | 	 | 
 | 2000-06-11  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* util/grub-install.in (convert): When $host_os is linux*, use | 
 | 	the expression 's%\([sh]d[a-z]\)[0-9]*$%\1%' instead of | 
 | 	's%[0-9]*$%%', to get rid of the partition part. This fixes the | 
 | 	bug "/dev/fd0" -> "/dev/fd". (But don't you think the naming is | 
 | 	quite inconsistent with hard disks? Why not /dev/fd[a-z]?) | 
 | 	Report by Pavel Roskin. | 
 | 	 | 
 | 2000-06-08  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/tutorial.texi (Network): The body is moved to ... | 
 | 	(General usage of network support): ... this new section. | 
 | 	(Diskless): New section. | 
 | 	* docs/user-ref.texi (General commands): Added a description | 
 | 	about the command "tftpserver". | 
 | 	 | 
 | 2000-06-08  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* netboot/main.c (decode_rfc1533) [GRUB]: Eliminate trailing | 
 | 	NULs in the NVT string for a configuration file name, if any. | 
 | 	(decode_rfc1533): Likewise, if Extensions Path is present, | 
 | 	eliminate the trailing NULs, if any. | 
 | 	Also, check the length carefully to ensure that EXTPATH can fit | 
 | 	in FNAME. | 
 | 	 | 
 | 2000-06-06  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* stage2/fsys_reiserfs.c: Added journaling to reiser. | 
 | 	(reiserfs_journal_desc): new structure. | 
 | 	(reiserfs_journal_commit): likewise. | 
 |  	(reiserfs_journal_header): likewise. | 
 | 	(fsys_reiser_info): Added fields for journaling. | 
 | 	(journal_read): new function. | 
 | 	(journal_init) likewise. | 
 | 	(block_read): New function to read reiserfs blocks, which reads | 
 | 	from the journal if it contains newer versions. All relevant | 
 | 	devread calls are replaced with calls to this method. | 
 | 	(reiserfs_mount): Check for journaling super block and call | 
 | 	journal_init. | 
 |  | 
 | 2000-06-06  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* netboot/main.c (dhcprequest) [GRUB]: Set the length of the | 
 | 	Parameter Request List to (4 + 2). | 
 | 	Set the list to RFC1533_VENDOR_MAGIC and | 
 | 	RFC1533_VENDOR_CONFIGFILE in addition to the standard | 
 | 	parameters. | 
 | 	(decode_rfc1533) [GRUB]: If C is equal to | 
 | 	RFC1533_VENDOR_CONFIGFILE, copy the contents of the tag to | 
 | 	CONFIG_FILE. | 
 | 	If C is equal to RFC1533_VENDOR_MAGIC, increment | 
 | 	VENDOREXT_ISVALID. | 
 | 	* netboot/etherboot.h [GRUB] (RFC1533_VENDOR_CONFIGFILE): New | 
 | 	macro. Defined as 150. | 
 | 	 | 
 | 2000-06-03  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/asm.S (check_int13_extensions): Check the bitmap only | 
 | 	if FORCE_LBA is zero. | 
 | 	* stage2/bios.c (get_diskinfo): Get rid of the wrong check for | 
 | 	the bit 0 of DRP.FLAGS. Now the bitmap check is correctly | 
 | 	performed in the function check_int13_extensions. | 
 | 	 | 
 | 2000-06-02  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/user-ref.texi (Invoking the grub shell): Added a caution. | 
 | 	Why don't so many people still understand that BIOS drive | 
 | 	numbering are different from OS device naming? How many cautions | 
 | 	and warnings should we write in the documentation? Sigh. | 
 | 	 | 
 | 2000-06-01  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Chip Salzenberg: | 
 | 	* stage2/cmdline.c (enter_cmdline) [SUPPORT_DISKLESS]: Redisplay | 
 | 	network configuration after clearing screen, before first prompt. | 
 |  | 
 | 	* stage2/cmdline.c: Include <shared.h> instead of "shared.h". | 
 | 	[SUPPORT_DISKLESS]: Include <etherboot.h>. | 
 |  | 
 | 2000-06-01  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (setup_func): Check if INSTALL_DRIVE is a | 
 | 	hard disk as well as IMAGE_DRIVE, before trying to install a | 
 | 	Stage 1.5. Reported by Pavel Roskin. | 
 | 	 | 
 | 2000-05-31  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* acinclude.m4 (grub_ASM_ABSOLUTE_WITHOUT_ASTERISK): New | 
 | 	function. Check if GAS requires absolute indirect calls/jumps | 
 | 	with NO asterisk. | 
 | 	* configure.in: Call grub_ASM_ABSOLUTE_WITHOUT_ASTERISK. | 
 | 	* acconfig.h (ABSOLUTE_WITHOUT_ASTERISK): New macro entry. | 
 | 	* netboot/pci.c (bios32_service) [!ABSOLUTE_WITHOUT_ASTERISK]: | 
 | 	Prefix the operand to "lcall" with `*'. | 
 | 	(pcibios_read_config_byte) [!ABSOLUTE_WITHOUT_ASTERISK]: | 
 | 	Likewise. | 
 | 	(pcibios_read_config_word) [!ABSOLUTE_WITHOUT_ASTERISK]: | 
 | 	Likewise. | 
 | 	(pcibios_read_config_dword) [!ABSOLUTE_WITHOUT_ASTERISK]: | 
 | 	Likewise. | 
 | 	(pcibios_write_config_byte) [!ABSOLUTE_WITHOUT_ASTERISK]: | 
 | 	Likewise. | 
 | 	(pcibios_write_config_word) [!ABSOLUTE_WITHOUT_ASTERISK]: | 
 | 	Likewise. | 
 | 	(pcibios_write_config_dword) [!ABSOLUTE_WITHOUT_ASTERISK]: | 
 | 	Likewise. | 
 | 	(check_pcibios) [!ABSOLUTE_WITHOUT_ASTERISK]: Likewise. | 
 | 	* stage2/asm.S (chain_stage1) [!ABSOLUTE_WITHOUT_ASTERISK]: | 
 | 	Prefix the operand to "ljmp" with `*'. | 
 | 	(chain_stage2) [!ABSOLUTE_WITHOUT_ASTERISK]: Likewise. | 
 | 	(big_linux_boot) [!ABSOLUTE_WITHOUT_ASTERISK]: Likewise. | 
 | 	 | 
 | 2000-05-29  Chip Salzenberg  <chip@valinux.com> | 
 |  | 
 | 	* stage2/shared.h (grub_memmove): Prototype to use void *. | 
 | 	* stage2/char_io.c (grub_memmove): Define likewise. | 
 |  | 
 | 2000-05-30  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* docs/user-ref.texi (Stage2 errors): Update error messages. | 
 |  | 
 | 2000-05-29  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* util/grub-install.in: Fix a typo that prevented error messages | 
 | 	from appearing. | 
 | 	Copy and remove files individually and exit with an error as | 
 | 	soon as it fails. | 
 | 	Show $log_file if --debug was given on the command line. | 
 |  | 
 | 2000-04-19  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* stage2/cmdline.c (enter_cmdline): Don't give errors on empty | 
 | 	command lines. | 
 |  | 
 | 	* stage2/common.c (err_list): Clean up wordings slightly. | 
 |  | 
 | 2000-05-29  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Based on a patch by Neal H Walfield <neal@walfield.org>: | 
 | 	* netboot/misc.c [GRUB] (inet_aton): Defined. | 
 | 	* netboot/main.c (arp_server_override): New function. | 
 | 	* netboot/etherboot.h [GRUB] (arp_server_override): Declared. | 
 | 	(inet_aton): Likewise. | 
 | 	* stage2/builtins.c (tftpserver_func): New function. | 
 | 	(builtin_tftpserver): New variable. | 
 | 	(builtin_table): Added a pointer to BUILTIN_TFTPSERVER. | 
 | 	 | 
 | 2000-05-28  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/asm.S (codestart): Fix a typo: DISKLESS_SUPPORT -> | 
 | 	SUPPORT_DISKLESS. | 
 | 	* stage2/nbloader.S: Fix the image length and the memory length | 
 | 	fields. They shouldn't contain the first sector for a tag. | 
 | 	Mmh..., that is unclear as far as I see the Net Boot Image | 
 | 	Proposal... | 
 | 	* stage2/shared.h (STACKOFF): Enclosed with parentheses. | 
 | 	(PROTSTACKINIT): Likewise. | 
 | 	 | 
 | 2000-05-27  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Add diskless support, mostly based on patches by Christoph | 
 | 	Plattner <Christoph.Plattner@dot.at>, but also based on a patch | 
 | 	by Chip Salzenberg <chip@valinux.com> for PXE. Of course, I've | 
 | 	modified both the patches thoroughly to adapt them to my | 
 | 	preference. | 
 |  | 
 | 	* configure.in (--enable-diskless): New option. Set a | 
 | 	conditional DISKLESS_SUPPORT. | 
 | 	* stage2/Makefile.am (noinst_HEADERS): Added nbi.h. | 
 | 	(EXTRA_PROGRAMS): New variable. | 
 | 	(pkgdata_DATA) [DISKLESS_SUPPORT]: Added | 
 | 	nbgrub and pxegrub. | 
 | 	(noinst_DATA) [DISKLESS_SUPPORT]: Added nbloader, pxeloader and | 
 | 	diskless. | 
 | 	(noinst_PROGRAMS) [DISKLESS_SUPPORT]: Added nbloader.exec, | 
 | 	pxeloader.exec and diskless.exec. | 
 | 	(PXELOADER_LINK): New variable. | 
 | 	(BUILT_SOURCES) [DISKLESS_SUPPORT]: Added diskless_size.h. | 
 | 	(diskless_exec_SOURCES): New variable. | 
 | 	(diskless_exec_CFLAGS): Likewise. | 
 | 	(diskless_exec_LDFLAGS): Likewise. | 
 | 	(diskless_exec_LDADD): Likewise. | 
 | 	(diskless_size.h): New target. | 
 | 	(nbloader_exec_SOURCES): New variable. | 
 | 	(nbloader_exec_CFLAGS): Likewise. | 
 | 	(nbloader_exec_LDFLAGS): Likewise. | 
 | 	(nbloader_exec-nbloader.o): New dependency. | 
 | 	(nbgrub): New target. | 
 | 	(pxeloader_exec_SOURCES): new variable. | 
 | 	(pxeloader_exec_CFLAGS): Likewise. | 
 | 	(pxeloader_exec_LDFLAGS): Likewise. | 
 | 	(pxegrub): New target. | 
 | 	* stage2/asm.S (install_partition): Set to 0xFFFFFF instead of | 
 | 	0x020000. What was the benefit from the previous setting? | 
 | 	(codestart) [SUPPORT_DISKLESS]: Don't move %dl to BOOT_DRIVE. | 
 | 	(boot_drive) [SUPPORT_DISKLESS]: Set to NETWORK_DRIVE instead of | 
 | 	zero. | 
 | 	* stage2/common.c: Include <shared.h> instead of "shared.h", | 
 | 	just for a cosmetic reason. | 
 | 	[SUPPORT_DISKLESS]: Include etherboot.h. | 
 | 	[SUPPORT_DISKLESS] (setup_diskless_environment): New internal | 
 | 	function. | 
 | 	(init_bios_info) [SUPPORT_DISKLESS]: Call | 
 | 	setup_diskless_environment after the memory initialization is | 
 | 	finished. Return if fails. | 
 | 	* stage2/nbloader.S: New file. | 
 | 	* stage2/pxeloader.S: Likewise. | 
 | 	* stage2/nbi.h: Likewise. | 
 | 	 | 
 | 2000-05-25  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* netboot/fsys_tftp.c (buf_fill): Warn when amazing things | 
 | 	happen. | 
 | 	(tftp_dir): Revert previous change. Don't use TFTP_MIN_PACKET | 
 | 	but calculate the appropriate length. | 
 | 	 | 
 | 2000-05-23  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* netboot/fsys_tftp.c (tftp_dir): Append "0\0" to the request | 
 | 	string, because the "tsize" option must be followed by zero, | 
 | 	according to RFC 2349. | 
 | 	 | 
 | 2000-05-22  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Synchronize the documentation with the code. | 
 | 	 | 
 | 	* docs/user-ref.texi: Added ReiserFS as a supported filesystem. | 
 | 	Updated the descriptions about `password', `install', `kernel', | 
 | 	and `setup'. | 
 | 	Added a description about `lock'. | 
 | 	Added descriptions about ERR_UNALIGNED and ERR_PRIVILEGED. | 
 | 	Added a description about the option `--force-lba' of | 
 | 	the program `grub-install'. | 
 | 	* docs/tutorial.texi: Updated the subsection for NetBSD. | 
 | 	 | 
 | 2000-05-21  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/asm.S (set_int13_handler): Don't use MBI to get the | 
 | 	lower memory size. Instead, decrease it in the BIOS memory | 
 | 	directly and set %eax to it, since MBI.MEM_LOWER may not be the | 
 | 	same as [0x413] any longer due to the previous change. | 
 |  | 
 | 	* grub/asmstub.c (CONVENTIONAL_MEMSIZE): Changed to 640 * 1024 | 
 | 	from 640. You didn't like the inconsistency between | 
 | 	EXTENDED_MEMSIZE and CONVENTIONAL_MEMSIZE, did you? | 
 | 	(get_memsize): Return CONVENTIONAL_MEMSIZE >> 10 instead of | 
 | 	CONVENTIONAL_MEMSIZE, if TYPE is zero. | 
 | 	(get_eisamemsize): Return EXTENDED_MEMSIZE >> 10 instead of | 
 | 	EXTENDED_MEMSIZE / 1024. Just a cosmetic change. | 
 | 	(MMAR_DESC_LENGTH): New macro. Defined as 20. | 
 | 	(get_mmap_entry): Define a new variable DESC_TABLE statically,  | 
 | 	and copy the CONTth entry to *DESC if CONT is a correct index. | 
 | 	 | 
 | 2000-05-21  Chip Salzenberg  <chip@valinux.com> | 
 |  | 
 | 	* stage2/common.c (mmap_avail_at): New function, abstracted out | 
 | 	of init_bios_info, to scan E820 memory map. | 
 | 	(init_bios_info): Use mmap_avail_at for _both_ MBI.MEM_UPPER and | 
 | 	MBI.MEM_LOWER. | 
 |  | 
 | 2000-05-17  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Update the network support to Etherboot-4.6.1. | 
 |  | 
 | 	* netboot/config.c (pci_nic_list) [INCLUDE_TULIP]: Added an | 
 | 	entry for Davicom 9102. | 
 | 	* netboot/epic100.c: Just copied. | 
 | 	* netboot/pci.h: Likewise. | 
 | 	* netboot/tulip.c: Likewise. | 
 | 	* netboot/etherboot.h (tftp): Change the type of the first | 
 | 	argument to const char * from char *. | 
 | 	* netboot/main.c (tftp): Likewise. | 
 | 	 | 
 | 2000-05-13  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* util/grub-install.in: If the program `cp' fails, exit with the | 
 | 	status code 1. Suggested by Pavel Roskin. | 
 | 	 | 
 | 2000-05-13  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Pixel <pixel@mandrakesoft.com>: | 
 | 	* stage2/pc_slice.h (PC_SLICE_TYPE_LINUX_EXTENDED): New macro. | 
 | 	(IS_PC_SLICE_TYPE_EXTENDED): Added a check for | 
 | 	PC_SLICE_TYPE_LINUX_EXTENDED. | 
 | 	 | 
 | 2000-05-05  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/common.c (init_bios_info) [!STAGE1_5]: When the memory | 
 | 	map is present, search the maximum for MEMTMP in bytes instead | 
 | 	of kilobytes and set EXTENDED_MEMORY to MEMTMP minus 1MB in | 
 | 	kilobytes. | 
 | 	 | 
 | 2000-05-05  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Ignore any memory holes when passing the maximum memory address | 
 | 	to non-Multiboot kernels (i.e. Linux and *BSD). | 
 | 	 | 
 | 	* stage2/common.c [!STAGE1_5] (extended_memory): New global | 
 | 	variable. | 
 | 	(init_bios_info) [!STAGE1_5]: Change the type of CONT, MEMTMP | 
 | 	and ADDR to unsigned long from int. | 
 | 	Set EXTENDED_MEMORY to MBI.MEM_UPPER by default. | 
 | 	If MBI.MMAP_LENGTH is not zero, set EXTENDED_MEMORY to the | 
 | 	maximum available address, ignoring any memory holes. | 
 | 	If MBI.MMAP_LENGTH is zero but get_eisamemsize returns other | 
 | 	than -1, set EXTENDED_MEMORY to (CONT >> 10) + 0x3c00 if CONT is | 
 | 	non-zero, otherwise, set it to MEMTMP. | 
 | 	* stage2/shared.h [!STAGE1_5] (extended_memory): Declared. | 
 | 	* stage2/boot.c (load_image): Always pass the "mem=" option to a | 
 | 	Linux kernel, using EXTENDED_MEMORY instead of MBI.MEM_UPPER. | 
 | 	(bsd_boot): Use EXTENDED_MEMORY instead of MBI.MEM_UPPER. | 
 | 	 | 
 | 2000-04-30  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage1/stage1.S (message): Use lodsb instead of incw and movb. | 
 | 	From Andrew Clausen <clausen@gnu.org>. | 
 |  | 
 | 	* stage1/stage1.S (copy_buffer): Set %cx to 0x100 and use movsw | 
 | 	instead of movsb, since it is guaranteed that the region is | 
 | 	properly aligned. | 
 | 	 | 
 | 2000-04-29  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (setup_func): Use SECTOR_BITS instead of | 
 | 	SECTOR_SIZE to compute BLOCKSIZE. | 
 |  | 
 | 2000-04-26  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* netboot/depca.c: Copied from Etherboot-4.6.0. | 
 | 	 | 
 | 2000-04-23  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	More security-related features. | 
 | 	 | 
 | 	* stage2/builtins.c (auth): New global variable. | 
 | 	(configfile_func): Clear AUTH before jumping to cmain. | 
 | 	(lock_func): New function. | 
 | 	(builtin_lock): New variable. | 
 | 	(password_func): Make sure that LEN + 2 is less than or equal to | 
 | 	PASSWORD_BUFLEN, because now the password must be terminated | 
 | 	with double NULs, in order to permit an empty configuration file | 
 | 	name. | 
 | 	Copy LEN bytes from ARG to PASSWORD, instead of LEN + 1 bytes. | 
 | 	Clear the rest of the buffer PASSWORD. | 
 | 	(builtin_table): Added a pointer to BUILTIN_LOCK. | 
 | 	* stage2/common.c (err_list): Added an entry for ERR_PRIVILEGED. | 
 | 	* stage2/stage2.c (run_menu): If AUTH is true, show the messages | 
 | 	for a non-password configuration, even if PASSWORD is not NULL. | 
 | 	Likewise, if AUTH is true, allow the user to use privileged | 
 | 	instructions (such as `c'). | 
 | 	If a correct password is entered, check if *PPTR is NUL or not. | 
 | 	If it is NUL, set AUTH to 1 and go to the label restart, | 
 | 	otherwise, copy PPTR to NEW_FILE, clear AUTH, and return. | 
 | 	* stage2/shared.h (grub_error_t): Added a new constant | 
 | 	ERR_PRIVILEGED. | 
 | 	(auth): Declared. | 
 | 	 | 
 | 2000-04-23  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/user-ref.texi (Command-line-specific commands): Don't use | 
 | 	the command @var for the argument "file" to the command | 
 | 	"configfile" on the definition. | 
 | 	 | 
 | 2000-04-22  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Update the network support to Etherboot 4.5.8. | 
 |  | 
 | 	* configure.in (--enable-3c590): New option. | 
 | 	(--enable-3c595): Likewise. | 
 | 	(--enable-depca): Likewise. | 
 | 	(--enable-lance): Likewise. | 
 | 	(--enable-ns8390): Likewise. | 
 | 	(--enable-ntulip): Likewise. | 
 | 	(--enable-lancepci): Removed. | 
 | 	(--enable-nepci): Likewise. | 
 | 	(--enable-otulip): Likewise. | 
 | 	(--enable-smc9000): The duplicated one is named to ... | 
 | 	(--enable-smc9000-scan): ... this. This was a typo, perhaps. | 
 | 	 | 
 | 	* netboot/Makefile.am (libdrivers_a_SOURCES): Removed | 
 | 	byteorder.h, if.h, netboot_config.h and netdevice.h, and added | 
 | 	cards.h. | 
 | 	(EXTRA_libdrivers_a_SOURCES): Removed ntulip.c and tulip.h, and | 
 | 	added 3c595.c, 3c595.h, depca.c, otulip.c and otulip.h. | 
 | 	(libdrivers_a_CFLAGS): Define FSYS_TFTP as 1 instead of empty. | 
 | 	(EXTRA_DIST): Removed ntulip.txt, and added cs89x0.txt and | 
 | 	tulip.txt. | 
 | 	(3c595_drivers): New variable. | 
 | 	(depca_drivers): Likewise. | 
 | 	(lance_drivers): Removed lancepci.o and added lance.o. | 
 | 	(ns8390_drivers): Removed nepci.o and added ns8390.o. | 
 | 	(ntulip_drivers): Deleted. | 
 | 	(otulip_drivers): New variable. | 
 | 	($(3c595_drivers)): New target. | 
 | 	($(depca_drivers)): Likewise. | 
 | 	($(ntulip_drivers)): Deleted. | 
 | 	($(otulip_drivers)): New target. | 
 | 	(3c590_o_CFLAGS): New variable. | 
 | 	(3c595_o_CFLAGS): Likewise. | 
 | 	(depca_o_CFLAGS): Likewise. | 
 | 	(lancepci_o_CFLAGS): Deleted. | 
 | 	(lance_o_CFLAGS): New variable. | 
 | 	(nepci_o_CFLAGS): Deleted. | 
 | 	(ns8390_o_CFLAGS): New variable. | 
 | 	(ntulip_o_CFLAGS): Deleted. | 
 | 	(otulip_o_CFLAGS): New variable. | 
 | 	 | 
 | 	* netboot/3c90x.c: Updated to Etherboot-4.5.8. | 
 | 	* netboot/3c90x.txt: Likewise. | 
 | 	* netboot/cs89x0.c: Likewise. | 
 | 	* netboot/cs89x0.h: Likewise. | 
 | 	* netboot/eepro100.c: Likewise. | 
 | 	* netboot/epic100.c: Likewise. | 
 | 	* netboot/epic100.h: Likewise. | 
 | 	* netboot/i82586.c: Likewise. | 
 | 	* netboot/lance.c: Likewise. | 
 | 	* netboot/linux-asm-io.h: Likewise. | 
 | 	* netboot/linux-asm-string.h: Likewise. | 
 | 	* netboot/nic.h: Likewise. | 
 | 	* netboot/ns8390.c: Likewise. | 
 | 	* netboot/ns8390.h: Likewise. | 
 | 	* netboot/pci.c: Likewise. | 
 | 	* netboot/pci.h: Likewise. | 
 | 	* netboot/rtl8139.c: Likewise. | 
 | 	* netboot/sk_g16.c: Likewise. | 
 | 	* netboot/sk_g16.h: Likewise. | 
 | 	* netboot/smc9000.c: Likewise. | 
 | 	* netboot/smc9000.h: Likewise. | 
 | 	* netboot/tiara.c: Likewise. | 
 | 	* netboot/tulip.c: Likewise. | 
 | 	* netboot/via-rhine.c: Likewise. | 
 |  | 
 | 	* netboot/config.c: Updated to Etherboot-4.5.8 and modified (see | 
 | 	below). | 
 | 	[GRUB] (print_config): Undefined. | 
 | 	(eth_probe) [GRUB]: If PROBED is true, do nothing. Otherwise, | 
 | 	clear NETWORK_READY and ARPTABLE, set ROM to ROM_INFO_LOCATION, | 
 | 	and set PROBED to 1 if succeeds. | 
 | 	* netboot/etherboot.h: Likewise, | 
 | 	(GRUB): New macro. | 
 | 	[GRUB]: Include <shared.h>. | 
 | 	[GRUB] (NO_DHCP_SUPPORT): Undefined. | 
 | 	[GRUB] (RELOC): Defined as zero. | 
 | 	[GRUB] (INTERNAL_BOOTP_DATA): Defined as one. | 
 | 	[GRUB] (USE_INTERNAL_BUFFER): Likewise. | 
 | 	[GRUB] (BACKOFF_LIMIT): Defined as 7. | 
 | 	[GRUB] (CTRL_C): New macro. | 
 | 	[GRUB] (print_network_configuration): Declared. | 
 | 	[GRUB] (ip_abort): Likewise. | 
 | 	[GRUB] (network_ready): Likewise. | 
 | 	* netboot/fsys_tftp.c: Don't include <netboot_config.h>. | 
 | 	(isocket): Renamed to ... | 
 | 	(iport): ... this. | 
 | 	(osocket): Renamed to ... | 
 | 	(oport): ... this. | 
 | 	(bcounter): New variable. | 
 | 	(buf_fill): When checking the block order, see BCOUNTER as well | 
 | 	as BLOCK. | 
 | 	Don't process a packet, if BLOCK minus PREVBLOCK is not 1, | 
 | 	instead of if BLOCK is less than or equal to PREVBLOCK. | 
 | 	Increment BCOUNTER after reseting RETRY. | 
 | 	(send_rrq): Clear BCOUNTER. | 
 | 	Call await_reply with AWAIT_QDRAIN. | 
 | 	* netboot/main.c: Don't include <netboot_config.h>. | 
 | 	(dhcpdiscover): Made const. | 
 | 	(dhcprequest): Likewise. Updated the contents. | 
 | 	(broadcast): Made const. | 
 | 	(udp_transmit): Copied. | 
 | 	(tftp): Likewise. | 
 | 	(bootp): Likewise. | 
 | 	(rarp): Likewise. | 
 | 	(await_reply): Likewise. | 
 | 	(decode_rfc1533): Likewise. | 
 | 	(rfc951_sleep): Likewise. | 
 | 	(cleanup_net): Likewise. | 
 | 	* netboot/misc.c (sleep): Copied. | 
 | 	(twiddle): Likewise. | 
 | 	(getdec): Likewise. | 
 | 	* netboot/osdep.h: Copied and modified (see below). | 
 | 	[GRUB] (ETHERBOOT32): Used the same definition as Linux and | 
 | 	FreeBSD. | 
 | 	[GRUB] (ntohl): Likewise. | 
 | 	[GRUB] (htonl): Likewise. | 
 | 	[GRUB] (ntohs): Likewise. | 
 | 	[GRUB] (htons): Likewise. | 
 | 	[GRUB] (swap32): Likewise. | 
 | 	[GRUB] (swap16): Likewise. | 
 | 	[GRUB]: Include "linux-asm-io.h". | 
 |  | 
 | 	* netboot/byteorder.h: Removed. | 
 | 	* netboot/if.h: Likewise. | 
 | 	* netboot/netboot_config.h: Likewise. | 
 | 	* netboot/netdevice.h: Likewise. | 
 | 	* netboot/ntulip.c: Likewise. | 
 | 	* netboot/ntulip.txt: Likewise. | 
 | 	* netboot/tulip.h: Likewise. | 
 | 	 | 
 | 	* netboot/3c595.c: New file. Copied from Etherboot-4.5.8. | 
 | 	* netboot/3c595.h: Likewise. | 
 | 	* netboot/cards.h: Likewise. | 
 | 	* netboot/cs89x0.txt: Likewise. | 
 | 	* netboot/depca.c: Likewise. | 
 | 	* netboot/otulip.c: Likewise. | 
 | 	* netboot/otulip.h: Likewise. | 
 | 	* netboot/tulip.txt: Likewise. | 
 | 	 | 
 | 2000-02-29  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* stage2/common.c (err_list): Added message for ERR_UNALIGNED. | 
 | 	* stage2/shared.h [!STAGE1_5] (disk_read_hook,disk_read_func): New | 
 |  	parameters offset and length. | 
 | 	(ERR_UNALIGNED): New error code. | 
 | 	* stage2/disk_io.c (rawread) [!STAGE1_5]: Call disk_read_func with | 
 | 	offset and length. | 
 | 	* stage2/builtin.c (disk_read_print_func): Print offset and length. | 
 | 	(blocklist_func): Print detailed byte ranges for partial sectors. | 
 | 	(install_func): Detect partial sectors and print error message. | 
 |  | 
 | 2000-04-18  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* util/grub-install.in: Don't use `!' in `test' for more | 
 | 	portability. | 
 | 	Don't use `for' without `in' for compatability with ash. | 
 | 	Check install_device before running grub if possible. Added | 
 | 	error messages if install_device is not set or not unique. | 
 | 	Exit if mkdir fails. | 
 | 	Add a message about successful installation. | 
 | 	Remove unneeded backslash in the final message. | 
 | 	(convert): use `test -b' instead of `test -e' because ash | 
 | 	doesn't	understand the later. Correct error message accordingly. | 
 | 	 | 
 | 2000-04-17  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	The user doesn't have to recompile GRUB for his/her buggy BIOS | 
 | 	any longer. It is configurable to ignore the LBA support bitmap | 
 | 	at the installation time. | 
 | 	 | 
 | 	* stage1/stage1.S (force_lba): New variable. | 
 | 	(stage2_address): Moved forwards, to align some variables in | 
 | 	natural boundaries. | 
 | 	(real_start): Check if FORCE_LBA is non-zero, if so, jump to | 
 | 	skip_lba_bitmap_check, otherwise, check if bit 0 of the support | 
 | 	bitmap is non-zero. | 
 | 	Don't use #ifdef for CHECK_LBA_SUPPORT_BITMAP. | 
 | 	(skip_lba_bitmap_check): New label. | 
 | 	* stage1/stage1.h (COMPAT_VERSION_MINOR): Set to 1. | 
 | 	(STAGE1_FORCE_LBA): New macro. | 
 | 	(STAGE1_STAGE2_ADDRESS): Set to 0x42. | 
 | 	(STAGE1_STAGE2_SECTOR): Set to 0x44. | 
 | 	(STAGE1_STAGE2_SEGMENT): Set to 0x48. | 
 | 	* stage2/asm.S (force_lba): New variable. | 
 | 	* stage2/bios.c (get_diskinfo): Don't use #ifdef for | 
 | 	CHECK_LBA_SUPPORT_BITMAP. Instead, check if FORCE_LBA is | 
 | 	non-zero. If so, don't check the bit 0 of DRP.FLAG. | 
 | 	* stage2/builtins.c (install_func): Check if a new option | 
 | 	`--force-lba' is specified. If specified, set IS_FORCE_LBA to 1 | 
 | 	and set ARG to a value returned by skip_to. Otherwise, | 
 | 	IS_FORCE_LBA is zero. | 
 | 	Set the "force LBA" flag in STAGE1_BUFFER (the offset is | 
 | 	STAGE1_FORCE_LBA) to IS_FORCE_LBA. | 
 | 	Likewise, set the "force LBA" flag in STAGE2_SECOND_BUFFER | 
 | 	(the offset is STAGE2_FORCE_LBA) to IS_FORCE_LBA. | 
 | 	If IS_STAGE1_5 is true, then modify the Stage2, regardless of | 
 | 	the presence of the option REAL_CONFIG_FILE. Set the "force LBA" | 
 | 	flag in SCRATCHADDR (the offset is STAGE2_FORCE_LBA) to | 
 | 	IS_FORCE_LBA. | 
 | 	(builtin_install): Added description about `--force-lba' into | 
 | 	the docs. | 
 | 	(setup_func): Check if `--force-lba' is specified in ARG. If | 
 | 	specified, set IS_FORCE_LBA to 1 and set ARG to a value returned | 
 | 	by skip_to. Otherwise, IS_FORCE_LBA is zero. | 
 | 	If IS_FORCE_LBA is true, prepend "--force-lba " to CMD_ARG. | 
 | 	(builtin_setup): Added descriptions about `--force-lba' into the | 
 | 	docs. | 
 | 	* stage2/shared.h (STAGE2_FORCE_LBA): New macro. | 
 | 	(STAGE2_VER_STR_OFFS): Set to 0xe. | 
 | 	(force_lba): Declared. | 
 | 	* util/grub-install.in (force_lba): New variable. Set to an | 
 | 	empty sting by default. | 
 | 	(usage): Added a description about `--force-lba'. | 
 | 	(--force-lba): Checked in the option handling code. If | 
 | 	specified, set FORCE_LBA to "--force-lba". | 
 | 	Run the command "setup" with $force_lba added before | 
 | 	$install_drive. | 
 | 	* configure.in (--disable-lba-support-bitmap): Removed. | 
 | 	 | 
 | 2000-04-15  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* util/grub-install.in (root_device): Append `/' to ${rootdir}, | 
 | 	since ROOTDIR may be empty. Reported by Satoshi Nagayasu | 
 | 	<snaga@oak.forus.or.jp>. | 
 | 	 | 
 | 2000-04-15  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* configure.in: Added --disable-reiserfs option. | 
 | 	* stage2/Makefile.am (libgrub_a_SOURCES): Added fsys_reiserfs.c. | 
 | 	(libgrub_a_CFLAGS): Added -DFSYS_REISERFS=1. | 
 | 	(pkgdata_DATA): Added reiserfs_stage1_5. | 
 | 	(noinst_PROGRAMS): Added reiserfs_stage1_5.exec. | 
 | 	(pre_stage2_exec_SOURCES): Added fsys_reiserfs.c. | 
 | 	(reiserfs_stage1_5_exec_SOURCES): New variable. | 
 | 	(reiserfs_stage1_5_exec_CFLAGS): Likewise. | 
 | 	(reiserfs_stage1_5_exec_LDFLAGS): Likewise. | 
 | 	* stage2/disk_io.c (fsys_table): Added reiserfs entry. | 
 | 	* stage2/filesys.h (FSYS_REISERFS_NUM): New macro. | 
 | 	[FSYS_REISERFS] (reiserfs_mount, reiserfs_read, reiserfs_dir, | 
 |  	reiserfs_embed): Declare external function from fsys_reiserfs.c. | 
 | 	[!NUM_FSYS] (NUM_FSYS): Added FSYS_REISERFS_NUM. | 
 | 	* stage2/builtins.c (setup_func): Added reiserfs to | 
 | 	STAGE1_5_MAP. | 
 | 	* stage2/shared.h (STAGE2_ID_REISERFS_STAGE1_5): New macro. | 
 | 	[STAGE1_5] [FSYS_REISERFS] (STAGE2_ID): Defined to | 
 |  	STAGE2_ID_REISERFS_STAGE1_5. | 
 | 	* stage2/fsys_reiserfs.c: New file. | 
 |  | 
 | 	* stage2/builtins.c (embed_func): Call open_device instead of | 
 | 	open_partition. | 
 | 	Don't check if the filesystem is FFS. Instead, check if | 
 | 	FSYS_TABLE[FSYS_TYPE].EMBED_FUNC is NULL and, if not, call it. | 
 | 	(find_func): When CURRENT_SLICE is not a BSD slice, check if the | 
 | 	file can be opened, only if open_device succeeds. | 
 | 	* stage2/filesys.h (fsys_table): New entry embed_func. | 
 | 	(ffs_embed): Declared. | 
 | 	* stage2/disk_io.c (fsys_table): Fill embed_func entries. The | 
 | 	entry for FFS is ffs_embed and the others are NULLs. | 
 | 	* stage2/fsys_ffs.c (ffs_embed): New function. | 
 |  | 
 | 	* stage2/shared.h (SECTOR_SHIFT): New constant with | 
 | 	(1 << SECTOR_SHIFT) == SECTOR_SIZE. | 
 | 	* stage2/shared.h [!NO_BLOCK_FILES] (block_files): No longer | 
 | 	extern. | 
 | 	* stage2/disk_io.c [!NO_BLOCK_FILES] (block_files): Likewise. | 
 | 	(rawread, devread): Use SECTOR_BITS. | 
 | 	(rawread): Fixed calculation of BUFADDR if an error occured. Set | 
 | 	it to BUFFERADDR + BYTE_OFFSET instead of BUFFERSEG + | 
 | 	BYTE_OFFSET. | 
 | 	(grub_close) [!NO_BLOCK_FILES]: If BLOCK_FILE is non-zero, | 
 | 	return immediately. | 
 | 	(grub_close): Don't check if FSYS_TYPE is NUM_FSYS. | 
 | 	* stage2/fsys_fat.c (log2): New inline function. | 
 | 	(fat_mount): Use log2 instead of calculating the size/bit by a | 
 | 	loop. | 
 |  | 
 | 2000-04-12  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* configure.in: Use AC_PATH_PROG instead of AC_PATH_TOOL, | 
 | 	because I don't want to use the CVS version. Now you can use | 
 | 	autoconf 2.13. | 
 | 	 | 
 | 2000-04-10  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/stage2.c (run_menu): In the case where C is `o', check | 
 | 	if ENTRYNO is less than 11. If not, increase FIRST_ENTRY instead | 
 | 	of ENTRYNO. Reported by Pixel <pixel@mandrakesoft.com>. | 
 | 	 | 
 | 2000-04-09  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage1/depcomp: Removed, because it makes `make dist' | 
 | 	unworkable. | 
 |  | 
 | 	For developers: Don't run automake with --add-missing. Instead, | 
 | 	you should specify --force-missing. If you really want to add a | 
 | 	script from automake, copy it at hand. *sigh* | 
 | 	 | 
 | 2000-04-05  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (kernel_func): Added missing ``size'' | 
 | 	arguments into `grub_memcmp's. Reported by Christoph Plattner | 
 | 	<christoph.plattner@dot.at>. | 
 |  | 
 | 	From Torsten Duwe <duwe@caldera.de>: | 
 | 	* stage2/boot.c (load_initrd): Mask the address with 0x3FFFFFFF | 
 | 	instead of 0xFFFFFFFF to place the initrd below 1GB. | 
 | 	(load_image): In Linux boot, add the option "mem=" only if more | 
 | 	than 64MB are present. | 
 | 	* grub/asmstub.c [__linux__]: Include <linux/cdrom.h> for | 
 | 	CDROM_GET_CAPABILITY. | 
 | 	[__FreeBSD__ || __NetBSD__ || __OpenBSD__]: Include <sys/cdio.h> | 
 | 	for CDIOCCLRDEBUG. | 
 | 	(check_device) [__linux__] [CDROM_GET_CAPABILITY]: If ioctl for | 
 | 	CDROM_GET_CAPAIBILITY succeeds, return zero. | 
 | 	[__FreeBSD__ || __NetBSD__ || __OpenBSD__] [CDIOCCLRDEBUG]: If | 
 | 	ioctl for CDIOCCLRDEBUG succeeds, return zero. | 
 |  | 
 | 	* stage2/boot.c (load_initrd): Subtract 0x1000 (one page size) | 
 | 	from MOVETO, to avoid a Linux 2.3.xx's bug. | 
 | 	 | 
 | 2000-04-03  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Add a dirty hack into the kernel loader so that the user can | 
 | 	force GRUB to load NetBSD ELF kernels. The support code is | 
 | 	mostly stolen from a patch by Pavel Roskin. | 
 | 	 | 
 | 	* stage2/boot.c (load_image): Added an optional argument | 
 | 	SUGGESTED_TYPE. | 
 | 	If BUFFER is a bootable ELF image and SUGGESTED_TYPE is | 
 | 	KERNEL_TYPE_NETBSD, then load it as an ELF image and set STR2 to | 
 | 	"NetBSD" and TYPE to SUGGESTED_TYPE. | 
 | 	If the image is a Linux kernel and SUGGESTED_TYPE is not | 
 | 	KERNEL_TYPE_NONE, make sure that SUGGESTED_TYPE matches up to | 
 | 	the Linux kernel type. | 
 | 	If TYPE is KERNEL_TYPE_NETBSD, set MEMADDR to | 
 | 	RAW_ADDR (phdr->paddr & 0xFFFFFF) like FreeBSD. | 
 | 	If SUGGESTED_TYPE is not KERNEL_TYPE_NONE, make sure that | 
 | 	SUGGESTED_TYPE is equal to TYPE. | 
 | 	(bsd_boot): If TYPE is not KERNEL_TYPE_FREEBSD (i.e. NetBSD or | 
 | 	OpenBSD) and the bit MB_INFO_AOUT_SYMS is set, set END_MARK to | 
 | 	MBI.SYMS.A.ADDR + 4 + MBI.SYMS.A.TABSIZE + MBI.SYMS.A.STRSIZE. | 
 | 	If the bit is clear, set END_MARK to 0. | 
 | 	Pass END_MARK to *ENTRY_ADDR instead of directly calculating the | 
 | 	end of symbols. | 
 | 	* stage2/shared.h (load_image): Added the argument | 
 | 	SUGGESTED_TYPE to the prototype. | 
 | 	* stage2/builtins.c (kernel_func): Added a new option, | 
 | 	`--type=TYPE'. Check if ARG is started with "--type=". | 
 | 	If so, set SUGGESTED_TYPE to KERNEL_TYPE_NETBSD, | 
 | 	KERNEL_TYPE_FREEBSD, KERNEL_TYPE_NETBSD, KERNEL_TYPE_LINUX, | 
 | 	KERNEL_TYPE_BIG_LINUX, KERNEL_TYPE_MULTIBOOT if ARG is "netbsd", | 
 | 	"freebsd", "openbsd", "linux", "biglinux", "multiboot", | 
 | 	respectively. Otherwise, set ERRNUM to ERR_BAD_ARGUMENT and | 
 | 	return 1. Set KERNEL_ARG to a string after the option. | 
 | 	(builtin_kernel): Added a description about the new option. | 
 | 	 | 
 | 2000-04-03  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/stage2.c (run_menu) [GRUB_UTIL]: Removed a nested | 
 | 	"#ifdef GRUB_UTIL" ... "#endif". | 
 | 	* stage2/builtins.c (unhide_func): Don't modify SAVED_DRIVE or | 
 | 	SAVED_PARTITION. | 
 | 	(hide_func): Likewise. | 
 | 	* stage2/disk_io.c (set_partition_hidden_flag): Use | 
 | 	CURRENT_DRIVE and CURRENT_PARTITION instead of SAVED_DRIVE and | 
 | 	SAVED_PARTITION. Check if bit 7 in CURRENT_DRIVE is non-zero | 
 | 	instead of if CURRENT_DRIVE is non-zero. | 
 |  | 
 | 	* grub/asmstub.c (init_device_map): Change the message | 
 | 	"Probe devices..." to "Probing devices...". Suggested by Neal H | 
 | 	Walfield. | 
 |  | 
 | 	* stage2/pc_slice.h (PC_SLICE_TYPE_HIDDEN_FLAG): Move the | 
 | 	definition before the PC partition type definitions. | 
 | 	(IS_PC_SLICE_TYPE_FAT): Clear the hidden flag in TYPE before | 
 | 	checking if TYPE is either of the FAT partition types. Reported | 
 | 	by Thomas Schweikle <tschweikle@fiducia.de>. | 
 | 	 | 
 | 2000-04-02  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (setup_func): Don't read a stage 1.5 to get | 
 | 	the size. Use FILEMAX instead. | 
 | 	If embed_func fails (i.e. ERRNUM is non-zero), goto fail. | 
 | 	 | 
 | 2000-04-02  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Suggested by Neal H Walfield <neal@walfield.org>: | 
 | 	* stage2/common.c (init_bios_info): Removed a nested | 
 | 	"#ifndef STAGE1_5" ... "#endif". | 
 | 	* util/grub-install.in: Quote most of the references to | 
 | 	shell variables by double quotation marks. | 
 | 	(usage): Added a description about the argument. | 
 | 	* stage2/builtins.c (setup_func): Change each of the messages | 
 | 	when running embed_func and install_func. "Run" -> "Running". | 
 | 	If install_func succeeds, print a message ("Done."). | 
 |  | 
 | 	From Frank Mehnert <fm3@os.inf.tu-dresden.de>: | 
 | 	* stage2/char_io.c (convert_to_ascii) [!STAGE1_5]: Accept 'X' | 
 | 	and 'b' as well. If C is 'X' or 'b', then set MULT to 16. | 
 | 	(grub_printf): Set a new variable MASK to 0xFFFFFFFF by default. | 
 | 	Mask *DATAPTR with MASK when calling convert_to_ascii. | 
 | 	(grub_printf) [!STAGE1_5]: Added 'b' and 'X'. If C is 'b', set | 
 | 	MASK to 0xFF and fall through to the case 'u'. 'X' is the same | 
 | 	as 'x'. | 
 |  | 
 | 	From Josip Rodin <joy@cibalia.gkvk.hr>: | 
 | 	* grub.texi: Several awkward English sentences are fixed. | 
 | 	* tutorial.texi: Likewise. | 
 | 	* user-ref.texi: Likewise. | 
 | 	* appendices.texi: Likewise. | 
 | 	 | 
 | 2000-03-27  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage1/depcomp: New file. Automake forces to install it. This | 
 | 	is a known bug, so I will remove this when Tom fixes it. | 
 | 	* configure.in (AM_INIT_AUTOMAKE): Don't get the package name | 
 | 	and the version from debian/changelog. This is a workaround. | 
 | 	 | 
 | 2000-03-20  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/Makefile.am (nodist_pkgdata_DATA): Renamed to ... | 
 | 	(pkgdata_DATA): ... this. DATA is not distributed by default. | 
 | 	(CLEANFILES): Delete the first one. I don't know why this | 
 | 	variable was duplicated. | 
 | 	Set to $(pkgdata_DATA) instead of $(nodist_pkgdata_DATA). | 
 | 	(start_exec_DEPENDENCIES): Removed. This doesn't make sense. | 
 | 	(start_exec-start.o): New rule. | 
 | 	* depcomp: New file. Copied from automake. | 
 | 	* missing: Updated from automake. | 
 | 	 | 
 | 2000-03-15  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* netboot/Makefile.am (EXTRA_libdrivers_a_SOURCES): 3c89x0.h -> | 
 | 	cs89x0.h. Just a typo. | 
 | 	 | 
 | 2000-03-10  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* debian/rules: Strip mbchk. | 
 |  | 
 | 	* debian/postinst: Fix up /usr/doc symlink creation. | 
 |  | 
 | 2000-03-01  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* netboot/fsys_tftp.c (tftp_dir): Add BUF_READ into FILEMAX | 
 | 	after BUF_EOF becomes non-zero. Reported by Per Lundberg. | 
 | 	 | 
 | 2000-03-01  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (color_func): Return 1 if safe_parse_maxint | 
 | 	returns zero instead of non-zero. Reported by Magnus Holmberg | 
 | 	<pucko@lysator.liu.se>. | 
 | 	 | 
 | 2000-02-29  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* grub/asmstub.c [__linux__]: Include <linux/kdev_t.h> for the | 
 | 	macro MAJOR. From Kalle Olavi Niemitalo <tosi@ees2.oulu.fi>. | 
 | 	 | 
 | 2000-02-27  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/tutorial.texi (Network): New chapter. | 
 | 	 | 
 | 2000-02-26  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/help2man: Upgraded to 1.020. | 
 | 	* docs/grub.8: Regenerated. | 
 | 	* docs/grub-install.8: Likewise. | 
 | 	* docs/mbchk.1: Likewise. | 
 |  | 
 | 	* docs/tutorial.texi (Boot): Rewritten heavily. Added the notes | 
 | 	on FreeBSD, NetBSD, OpenBSD, DOS/Windows and SCO UnixWare. | 
 | 	* docs/menu.lst: Load "/boot/loader" instead of "/kernel" in the | 
 | 	FreeBSD entry. This is consistent with the documentation. | 
 | 	 | 
 | 2000-02-25  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* netboot/fsys_tftp.c (tftp_read): Set BUF_READ to zero if | 
 | 	FILEPOS is less than SAVED_FILEPOS, before calling buf_fill. | 
 | 	Don't discard all of the copied data so that we can move FILEPOS | 
 | 	backwards cheaply. Now SAVED_FILEPOS indicates the file position | 
 | 	corresponding to the first byte of BUF. If (FILEPOS - | 
 | 	SAVED_FILEPOS) is greater than (FSYS_BUFLEN / 2), move the data | 
 | 	forwards and add (FSYS_BUFLEN / 2) into SAVED_FILEPOS and | 
 | 	subtract the same value from BUF_READ. | 
 | 	 | 
 | 2000-02-24  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/disk_io.c [!STAGE1_5] (print_fsys_type): Mask | 
 | 	CURRENT_SLICE with 0xFF when printing the partition type. | 
 |  | 
 | 	* grub/asmstub.c [__linux__]: Include <linux/major.h> for the | 
 | 	definition FLOPPY_MAJOR. | 
 | 	(check_device) [__linux__]: Skip the HDIO_GETGEO ioctl if the | 
 | 	major number of ST.ST_RDEV is FLOPPY_MAJOR. | 
 | 	 | 
 | 2000-02-21  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/disk_io.c (check_BSD_parts) [!STAGE1_5]: Use the term | 
 | 	"BSD sub-partition" instead of "BSD slice" for consistency. | 
 |  | 
 | 	* stage2/builtins.c (boot_func): Copy the partition table to | 
 | 	BOOT_PART_TABLE instead of (BOOTSEC_LOCATION + | 
 | 	BOOTSEC_PART_OFFSET). Don't use grub_memmove, but copy it | 
 | 	directly, since memcheck is too strict. | 
 | 	* stage2/disk_io.c (real_open_partition) [!STAGE1_5]: Set | 
 | 	CUR_PART_ADDR to (BOOT_PART_TABLE + (i << 4)). | 
 | 	* stage2/shared.h (BOOT_PART_TABLE): New macro. | 
 | 	(chain_stage1): Change the types of all the arguments to | 
 | 	unsigned long. | 
 | 	(chain_stage2): Likewise. | 
 | 	* grub/asmstub.c (chain_stage1): Adjusted to the prototype. | 
 | 	(chain_stage2): Likewise. | 
 | 	 | 
 | 2000-02-21  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/disk_io.c (check_BSD_parts) [!STAGE1_5]: If the BSD | 
 | 	label is invalid, print a message with the partition type in the | 
 | 	case where FLAGS is non-zero and DO_COMPLETION is zero. | 
 | 	 | 
 | 2000-02-20  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/user-ref.texi (Command-line-specific commands): Added a | 
 | 	description about "cmp". | 
 | 	* docs/appendices.texi (Reporting bugs): Rewritten. | 
 | 	 | 
 | 2000-02-20  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Update the netboot code to Etherboot 4.4.3. | 
 | 	 | 
 | 	* netboot/netboot_config.h: Copied from etherboot-4.4.3. | 
 | 	* netboot/cs89x0.h: Likewise. | 
 | 	* netboot/cs89x0.c: Likewise. | 
 | 	* netboot/i82586.c: Likewise. | 
 | 	* netboot/lance.c: Likewise. | 
 | 	* netboot/linux-asm-string.h: Likewise. | 
 | 	* netboot/nic.h: Likewise. | 
 | 	* netboot/ntulip.c: Likewise. | 
 | 	* netboot/osdep.h: Likewise. | 
 | 	* netboot/pci.h: Likewise. | 
 | 	* netboot/pci.c: Likewise. | 
 | 	* netboot/rtl8139.c: Likewise. | 
 | 	* netboot/tiara.c: Likewise. | 
 | 	 | 
 | 2000-02-19  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (cmp_func): New function. | 
 | 	(builtin_cmp): New variable. | 
 | 	(builtin_table): Added a pointer to BUILTIN_CMP. | 
 |  | 
 | 	* stage2/fsys_fat.c (fat_mount): Check if BPB.SECTS_PER_CLUST is | 
 | 	zero after reading the BPB to avoid zero division. | 
 | 	 | 
 | 2000-02-18  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/disk_io.c [!STAGE1_5] (make_saved_active): Make sure | 
 | 	that SAVED_PARTITION is not an extended partition. | 
 | 	If SAVED_DRIVE is not a hard disk drive, set ERRNUM to | 
 | 	ERR_DEV_VALUES and return zero. | 
 |  | 
 | 	* netboot/3c59x.c: Removed. | 
 | 	* netboot/Makefile.am (EXTRA_libdrivers_a_SOURCES): Deleted | 
 | 	3c59x.c. | 
 | 	(3c59x_drivers): Deleted. | 
 | 	(3c59x_o_CFLAGS): Likewise. | 
 | 	* configure.in (--enable-3c59x): Likewise. | 
 | 	 | 
 | 2000-02-17  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* configure.in (--enable-3c90x): Add -DINCLUDE_3C90X=1 instead | 
 | 	of -DINCLUDE_3C90x=1. This was just a typo. Reported by Per | 
 | 	Lundberg. | 
 | 	 | 
 | 2000-02-17  Jochen Hoenicke  <jochen@gnu.org> | 
 | 	 | 
 | 	* stage2/fsys_fat.c (fat_read): Forgot to increase BUF. | 
 | 	(fat_dir): Use fat_read instead of grub_read; this makes | 
 | 	setting the FSMAX unnecessary. | 
 | 	(fat_mount): FSMAX is no longer set. | 
 | 	 | 
 | 2000-02-16  Jochen Hoenicke  <jochen@gnu.org> | 
 |  | 
 | 	* stage2/char_io.c (grub_isspace): Make carriage return a white | 
 | 	space. | 
 | 	 | 
 | 	* stage2/fsys_fat.c (fat_dir): Long filename support. | 
 | 	(NAME_BUF): New macro. | 
 | 	* stage2/fat.h (FAT_LONGDIR_ID, FAT_LONGDIR_ALIASCHECKSUM, | 
 | 	FAT_ATTRIB_LONGNAME): New Macros. | 
 |  | 
 | 	* stage2/fsys_fat.c (fat_create_blocklist): Deleted, instead | 
 | 	fat_read is implemented. | 
 | 	(fat_read): new function. | 
 | 	* stage2/disk_io.c (fsys_table): Use fat_read. | 
 | 	* stage2/filesys.h: Declare fat_read, remove NO_BLOCK_FILES | 
 | 	hack. | 
 | 	* stage2/Makefile.am: Compile fat_stage1_5 with | 
 | 	-DNO_BLOCK_FILES=1. | 
 | 	 | 
 | 	* stage2/fat.h (fat_bpb): New structure describing bpb. | 
 | 	(FAT_CVT_U16): New macro. | 
 | 	(FAT_BPB_CHECK_SIG, FAT_BPB_NUM_SECTORS, | 
 | 	FAT_BPB_BYTES_PER_SECTOR, FAT_BPB_SECT_PER_CLUS, FAT_BPB_NUMFAT, | 
 | 	FAT_BPB_RESERVED_SECTORS, FAT_BPB_FAT_SECTORS_16, | 
 | 	FAT_BPB_FAT_SECTORS_32, FAT_BPB_IS_FAT32, FAT_BPB_FAT_SECTORS, | 
 | 	FAT_BPB_FAT_START, FAT_BPB_ROOT_DIR_CLUSTER, | 
 | 	FAT_BPB_HIDDEN_SECTORS, FAT_BPB_ROOT_DIR_START, | 
 | 	FAT_BPB_ROOT_DIR_LENGTH, FAT_BPB_DATA_OFFSET, | 
 | 	FAT_BPB_NUM_CLUST): Macros removed. | 
 | 	* stage2/fsys_fat.c (fat_superblock): New structure containing | 
 | 	all info about currently mounted filesystem. | 
 | 	(FAT_SUPER): New Macro. | 
 | 	(BPB): Macro removod. | 
 | 	(fat_mount): Use fat_bpb structure, fill FAT_SUPER. | 
 | 	(fat_read, fat_dir): Use FAT_SUPER info. | 
 |  | 
 | 2000-02-16  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	Pass the boot partition information to a chain-loader, in the | 
 | 	partition table area of the loader, instead of right before the | 
 | 	loaded address. Reported by takehiro@coral.ocn.ne.jp (Takehiro | 
 | 	Suzuki). | 
 | 	 | 
 | 	* stage2/builtins.c (chainloader_func): Embed the partition | 
 | 	table of the boot drive in the partition table area of the | 
 | 	chain-loader, if the boot drive is a hard disk drive. | 
 | 	Pass BOOT_PART_ADDR instead of (BOOTSEC_LOCATION - 16) as the | 
 | 	third argument for the function chain_stage1. | 
 | 	* stage2/disk_io.c [!STAGE1_5] (boot_part_addr): New variable. | 
 | 	[!STAGE1_5] (boot_part_offset): Likewise. | 
 | 	[!STAGE1_5] (cur_part_offset): Likewise. | 
 | 	[!STAGE1_5] (cur_part_addr): Likewise. | 
 | 	[!STAGE1_5] (cur_part_desc): Removed. | 
 | 	(real_open_partition) [!STAGE1_5]: Set CUR_PART_OFFSET and | 
 | 	CUR_PART_ADDR to PART_OFFSET and (BOOTSEC_LOCATION + | 
 | 	PC_SLICE_OFFSET + (i << 4)), respectively. | 
 | 	[!STAGE1_5] (set_bootdev): Set BOOT_PART_OFFSET and | 
 | 	BOOT_PART_ADDR to CUR_PART_OFFSET and CUR_PART_ADDR, | 
 | 	respectively. | 
 | 	* stage2/shared.h (boot_part_addr): Declared. | 
 | 	(boot_part_offset): Likewise. | 
 | 	 | 
 | 2000-02-12  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (geometry_func): Attempt to read the first | 
 | 	sector to examine if LBA mode is really supported. | 
 |  | 
 | 	* netboot/fsys_tftp.c (buf_fill) [TFTP_DEBUG]: Added some debug | 
 | 	messages. | 
 | 	(send_rrq) [TFTP_DEBUG]: Likewise. | 
 | 	(tftp_read) [TFTP_DEBUG]: Likewise. | 
 | 	(tftp_dir) [TFTP_DEBUG]: Likewise. | 
 | 	(tftp_close) [TFTP_DEBUG]: Likewise. | 
 | 	(tftp_read): Call buf_fill with the argument 1 first, if FILEPOS | 
 | 	has been moved backwards, and use grub_memmove for copying | 
 | 	SAVED_TP to TP instead of a direct assignment. | 
 | 	If send_rrq fails, set ERRNUM to ERR_WRITE instead of ERR_READ. | 
 | 	Check if BUF_READ is zero instead of if BUF_EOF is non-zero at | 
 | 	the end of the loop. | 
 | 	(tftp_dir): Set ERRNUM to ERR_WRITE instead of ERR_READ, if | 
 | 	send_rrq fails. | 
 | 	Save TP and LEN in SAVED_TP and SAVED_LEN respectively before | 
 | 	buf_fill instead of after it, because it destroys the contents | 
 | 	of TP. | 
 | 	* netboot/main.c (print_network_configuration): The order of the | 
 | 	arguments for grub_sprintf in the local function sprint_ip_addr | 
 | 	is reversed. | 
 |  | 
 | 	* configure.in (--enable-packet_retransmission): Renamed to ... | 
 | 	(--disable-packet-retransmission): ... this. Assume that a | 
 | 	network	is congested by default. | 
 | 	 | 
 | 2000-02-11  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Pavel Roskin: | 
 | 	* stage2/shared.h [!GRUB_SHARED_HEADER] (GRUB_SHARED_HEADER): | 
 | 	Defined. | 
 | 	[GRUB_SHARED_HEADER]: Don't declare or define anything. | 
 |  | 
 | 	* netboot/main.c (print_network_configuration): New function. | 
 | 	(await_reply): Check for Control-C instead of ESC, because GRUB | 
 | 	already uses ESC for another purpose. | 
 | 	(rfc951_sleep): Check for the key input in the loop. If | 
 | 	Control-C is pushed, return immediately. | 
 | 	* netboot/etherboot (print_network_configuration): Declared. | 
 | 	(CTRL_C): New macro. | 
 | 	(ESC): Undefined. | 
 | 	* netboot/config.c (eth_probe): Clear ARPTABLE after clearing | 
 | 	NETWORK_READY. | 
 | 	* stage2/builtins.c (bootp_func): Call | 
 | 	print_network_configuration if bootp succeeds. | 
 | 	(rarp_func): Call print_network_configuration if rarp succeeds. | 
 | 	 | 
 | 2000-02-11  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Per Lundberg <plundis@byggdok.se>: | 
 | 	* docs/multiboot.texi: Added graphics support. | 
 | 	 | 
 | 2000-02-10  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/multiboot.texi (Top): Downgrade the version to 0.6.90, | 
 | 	since we need more work to release it as 0.7. | 
 | 	 | 
 | 2000-02-10  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/Makefile.am [NETBOOT_SUPPORT] (STAGE2_COMPILE): Added | 
 | 	-I$(top_srcdir)/netboot and -DSUPPORT_NETBOOT=1. | 
 | 	* stage2/builtins.c (bootp_func): New function. | 
 | 	(dhcp_func): Likewise. | 
 | 	(rarp_func): Likewise. | 
 | 	(builtin_bootp): New variable. | 
 | 	(builtin_dhcp): Likewise. | 
 | 	(builtin_rarp): Likewise. | 
 | 	(builtin_table): Added pointers to BUILTIN_BOOTP, BUILTIN_DHCP | 
 | 	and BUILTIN_RARP. | 
 | 	* docs/user-ref.texi (General Commands): Added descriptions | 
 | 	about "bootp", "dhcp" and "rarp". | 
 | 	 | 
 | 	* netboot/main.c (bootp) [!NO_DHCP_SUPPORT]: Added casts to | 
 | 	suppress gcc warnings. | 
 | 	(decode_rfc1533) [!NO_DHCP_SUPPORT]: Likewise. | 
 | 	* netboot/3c90x.c: Include the local "pci.h" instead of | 
 | 	<linux/pci.h> even if __FreeBSD__ is undefined. | 
 | 	 | 
 | 2000-02-09  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	From Jochen Hoenicke: | 
 | 	* stage2/fsys_fat.c (fat_create_blocklist): The previous change | 
 | 	is reversed. Set FIRST_FAT_ENTRY to a unsigned long value in | 
 | 	FAT_BUF + (NEW_MAPBLOCK - MAPBLOCK) instead of a unsigned short | 
 | 	value. Mask FIRST_FAT_ENTRY with 0xFFF if FAT_SIZE is equal to | 
 | 	3, whether the bit 0 of LAST_FAT_ENTRY is set or not. | 
 |  | 
 | 	* netboot/config.c (eth_probe): If PROBED is set to non-zero, | 
 | 	return 1 without probing ethernet cards. Clear NETWORK_READY. If | 
 | 	*T->ETH_PROBE return sucessfully, set PROBED to 1. | 
 | 	* netboot/main.c (rarp): Call eth_probe and return zero if | 
 | 	fails. Clear NETWORK_READY at first, and set NETWORK_READY to 1 | 
 | 	if RETRY is less than MAX_ARP_RETRIES. If IP_ABORT is non-zero, | 
 | 	return zero instead of one. | 
 | 	(bootp): Call eth_probe and return zero if fails. Clear | 
 | 	NETWORK_READY at first, and set NETWORK_READY to 1 if | 
 | 	await_reply returns successfully. | 
 | 	(bootp) [T509HACK]: If FLAG is non-zero, skip calling | 
 | 	await_reply. Don't call await_reply here any more. | 
 | 	(bootp) [!NO_DHCP_SUPPORT]: If any ack packet is not reached | 
 | 	within MAX_BOOTP_RETRIES times, return zero. If DHCP_REPLY isn't | 
 | 	DHCPOFFER, set NETWORK_READY to one and return one. | 
 | 	* netboot/etherboot.h (NO_DHCP_SUPPORT): Undefined. | 
 |  | 
 | 	* stage2/builtins.c (print_root_device): Use the macro | 
 | 	NETWORK_DRIVE instead of 0x20. | 
 | 	* stage2/disk_io.c [!STAGE1_5] (sane_partition): Likewise. | 
 | 	(real_open_partition) [!STAGE1_5]: Likewise. | 
 | 	(set_device) [!STAGE1_5]: Likewise. | 
 | 	 | 
 | 2000-02-08  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* grub/asmstub.c (biosdisk) [__linux__]: Use _llseek when | 
 | 	__GLIBC_MINOR__ is less than 1 even if __GLIBC__ is 2. Reported | 
 | 	by Goran Koruga <goran.koruga@hermes.si>. | 
 |  | 
 | 	* configure.in (--disable-lba-support-bitmap-check): New option. | 
 | 	Don't define CHECK_LBA_SUPPORT_BITMAP if specified. | 
 | 	* stage1/stage1.S (real_start): Check if AH=0x42 is supported if | 
 | 	CHECK_LBA_SUPPORT_BITMAP instead of NO_BUGGY_BIOS_IN_THE_WORLD | 
 | 	is defined. | 
 | 	* stage2/bios.c (get_diskinfo): Check if LBA read/write | 
 | 	functions are supported iff CHECK_LBA_SUPPORT_BITMAP is defined, | 
 | 	instead of NO_BUGGY_BIOS_IN_THE_WORLD. | 
 | 	 | 
 | 2000-02-07  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	The netboot support is heavily rewritten, based on | 
 | 	Etherboot-4.4.2. The current one doesn't work yet, so check out | 
 | 	GRUB with the tag "dresden_netboot_code" if you need working | 
 | 	one. | 
 | 	 | 
 | 	* configure.in (--enable-tftp): Deleted. | 
 | 	(FSYS_CFLAGS): `AC_SUBST'ed right before AC_OUTPUT. | 
 | 	(NETBOOT_DRIVERS): New variable. AC_SUBST this after examining | 
 | 	the driver options. | 
 | 	(--enable-packet-retransmission): New option. | 
 | 	(--enable-pci-direct): Likewise. | 
 | 	(--enable-3c509): Likewise. | 
 | 	(--enable-3c529): Likewise. | 
 | 	(--enable-3c90x): Likewise. | 
 | 	(--enable-cs89x0): Likewise. | 
 | 	(--enable-epic100): Likewise. | 
 | 	(--enable-3c507): Likewise. | 
 | 	(--enable-exos205): Likewise. | 
 | 	(--enable-ni5210): Likewise. | 
 | 	(--enable-lancepci): Likewise. | 
 | 	(--enable-ne2100): Likewise. | 
 | 	(--enable-ni6510): Likewise. | 
 | 	(--enable-3c503): Likewise. | 
 | 	(--enable-ntulip): Likewise. | 
 | 	(--enable-rtl8139): Likewise. | 
 | 	(--enable-sk-g16): Likewise. | 
 | 	(--enable-smc9000): Likewise. | 
 | 	(--enable-tiara): Likewise. | 
 | 	(--enable-tulip): Likewise. | 
 | 	(--enable-via-rhine): Likewise. | 
 | 	(--enable-3c503-shmem): Likewise. | 
 | 	(--enable-3c503-aui): Likewise. | 
 | 	(--enable-3c509-hack): Likewise. | 
 | 	(--enable-compex-rl2000-fix): Likewise. | 
 | 	(--enable-smc9000-scan): Likewise. | 
 | 	(--enable-t503): Deleted. | 
 | 	(--enable-lance): Likewise. | 
 | 	(--enable-cs): Likewise. | 
 |  | 
 | 	* netboot/main.c: New file. Copied and modified. | 
 | 	* netboot/linux-asm-io.h: Likewise. | 
 | 	* netboot/etherboot.h: Likewise. | 
 | 	* netboot/misc.c: Likewise. | 
 | 	* netboot/via-rhine.c: Likewise. | 
 | 	* netboot/3c90x.c: Likewise. | 
 | 	* netboot/3c90x.txt: Likewise. | 
 | 	* netboot/epic100.c: Likewise. | 
 | 	* netboot/epic100.h: Likewise. | 
 | 	* netboot/i82586.c: Likewise. | 
 | 	* netboot/linux-asm-string.h: Likewise. | 
 | 	* netboot/ntulip.c: Likewise. | 
 | 	* netboot/ntulip.txt: Likewise. | 
 | 	* netboot/osdep.h: Likewise. | 
 | 	* netboot/rtl8139.c: Likewise. | 
 | 	* netboot/sk_g16.c: Likewise. | 
 | 	* netboot/sk_g16.h: Likewise. | 
 | 	* netboot/smc9000.c: Likewise. | 
 | 	* netboot/smc9000.h: Likewise. | 
 | 	* netboot/tiara.c: Likewise. | 
 | 	* netboot/tulip.c: Likewise. | 
 | 	* netboot/tulip.h: Likewise. | 
 | 	* netboot/README.netboot: New file. Most information is stolen | 
 | 	from Makefile and Config.32 in Etherboot. | 
 | 	* netboot/3c509.c: Copied from Etherboot. The original is | 
 | 	removed. | 
 | 	* netboot/3c509.h: Likewise. | 
 | 	* netboot/cs89x0.c: Likewise. | 
 | 	* netboot/eepro100.c: Likewise. | 
 | 	* netboot/lance.c: Likewise. | 
 | 	* netboot/ns8390.c: Likewise. | 
 | 	* netboot/ns8390.h: Likewise. | 
 | 	* netboot/pci.c: Likewise. | 
 | 	 | 
 | 	* netboot/3c59x.c: Include etherboot.h instead netboot.h. | 
 | 	* netboot/config.c: Copied from Etherboot and added the 3c59x | 
 | 	entries. | 
 | 	* netboot/pci.h: Likewise. | 
 | 	* netboot/fsys_tftp.c: Entirely rewritten based on main.c in | 
 | 	Etherboot. | 
 |  | 
 | 	* netboot/io.h: Removed. | 
 | 	* netboot/ip.h: Likewise. | 
 | 	* netboot/ip.c: Likewise. | 
 | 	* netboot/netboot.h: Likewise. | 
 | 	 | 
 | 	* netboot/Makefile.am (INCLUDES): Added -I$(top_srcdir)/stage2. | 
 | 	(DRIVERS): Removed. | 
 | 	(libdrivers_a_SOURCES): Added etherboot.h, linux-asm-io.h, | 
 | 	linux-asm-string.h, main.c, misc.c and osdep.h. Deleted io.h, | 
 | 	ip.h, ip.c, netboot.h and $(DRIVERS). | 
 | 	(EXTRA_libdrivers_a_SOURCES): New variable. | 
 | 	(libdrivers_a_LIBADD): Set to @NETBOOT_DRIVERS@. | 
 | 	(libdrivers_a_DEPENDENCIES): New variable. | 
 | 	(EXTRA_DIST): Likewise. | 
 | 	(3c509_drivers): New variable. Define a new rule for the value. | 
 | 	(3c59x_drivers): Likewise. | 
 | 	(3c90x_drivers): Likewise. | 
 | 	(cs89x0_drivers): Likewise. | 
 | 	(eepro100_drivers): Likewise. | 
 | 	(epic100_drivers): Likewise. | 
 | 	(i82586_drivers): Likewise. | 
 | 	(lance_drivers): Likewise. | 
 | 	(ns8390_drivers): Likewise. | 
 | 	(ntulip_drivers): Likewise. | 
 | 	(rtl8139_drivers): Likewise. | 
 | 	(sk_g16_drivers): Likewise. | 
 | 	(smc9000_drivers): Likewise. | 
 | 	(tiara_drivers): Likewise. | 
 | 	(tulip_drivers): Likewise. | 
 | 	(via_rhine_drivers): Likewise. | 
 | 	(t503_o_CFLAGS): Removed. | 
 | 	(nepci_o_CFLAGS): Set to -DINCLUDE_NEPCI=1. | 
 | 	(ne_o_CFLAGS): Set to -DINCLUDE_NE=1. | 
 | 	(wd_o_CFLAGS): Set to -DINCLUDE_WD=1. | 
 | 	(3c509_o_CFLAGS): Likewise. | 
 | 	(3c529_o_CFLAGS): Likewise. | 
 | 	(3c59x_o_CFLAGS): Likewise. | 
 | 	(3c90x_o_CFLAGS): Likewise. | 
 | 	(cs89x0_o_CFLAGS): Likewise. | 
 | 	(eepro100_o_CFLAGS): Likewise. | 
 | 	(epic100_o_CFLAGS): Likewise. | 
 | 	(3c507_o_CFLAGS): Likewise. | 
 | 	(exos205_o_CFLAGS): Likewise. | 
 | 	(ni5210_o_CFLAGS): Likewise. | 
 | 	(lancepci_o_CFLAGS): Likewise. | 
 | 	(ne2100_o_CFLAGS): Likewise. | 
 | 	(ni6510_o_CFLAGS): Likewise. | 
 | 	(3c503_o_CFLAGS): Likewise. | 
 | 	(ntulip_o_CFLAGS): Likewise. | 
 | 	(rtl8139_o_CFLAGS): Likewise. | 
 | 	(sk_g16_o_CFLAGS): Likewise. | 
 | 	(smc9000_o_CFLAGS): Likewise. | 
 | 	(tiara_o_CFLAGS): Likewise. | 
 | 	(tulip_o_CFLAGS): Likewise. | 
 | 	(via_rhine_o_CFLAGS): Likewise. | 
 |  | 
 | 	* stage2/char_io.c (nul_terminate): Changed the type of the | 
 | 	return value to int. Return the original character changed to | 
 | 	NUL. | 
 | 	* stage2/shared.h (NETWORK_DRIVE): New macro. | 
 | 	(nul_terminate): Adjusted to the definition. | 
 | 	* stage2/gunzip.c (gunzip_test_header): Removed the TFTP check | 
 | 	entirely. It is no longer necessary because we now can obtain | 
 | 	the correct size of a file even for TFTP. | 
 | 	 | 
 | 2000-02-07  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/asm.S: Undo the previous changes. Is | 
 | 	binutils-2.9.5.0.25 too strict to retain the compatibility? | 
 | 	Reported by Kalle Olavi Niemitalo <tosi@ees2.oulu.fi>. | 
 | 	 | 
 | 2000-02-03  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/cmdline.c (enter_cmdline): Set BUF_DRIVE to -1 before | 
 | 	running a command to invalidate the cache. | 
 | 	(run_script): Likewise. | 
 | 	* stage2/char_io.c (get_cmdline): Set BUF_DRIVE to -1 before the | 
 | 	completion to invalidate the cache. | 
 | 	Reported by Jeff Sheinberg <jeffsh@erols.com>. | 
 |  | 
 | 	* configure.in: Use AC_PATH_TOOL instead of AC_PATH_PROG. | 
 | 	* stage2/asm.S (chain_stage1): Prepend `*' to the argument for | 
 | 	ljmp. | 
 | 	(chain_stage2): Likewise. | 
 | 	(big_linux_boot): Likewise. | 
 | 	 | 
 | 2000-01-19  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* util/grub-install.in (--root): Renamed to ... | 
 | 	(--root-directory): ... this, since "root" is vague. | 
 | 	* docs/user-ref.texi (Invoking grub-install): Adjusted to the | 
 | 	change above, and added an example how to use --root-directory. | 
 | 	* docs/grub-install.8: Regenerated. | 
 |  | 
 | 	* docs/appendices.texi (FAQ): Added an item about the sucked | 
 | 	SCSI problem. | 
 | 	 | 
 | 2000-01-15  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (chainloader_func): If --force is specified | 
 | 	in ARG, don't check for the signature. | 
 | 	* docs/tutorial.texi (Chain-loading): Added a caution about some | 
 | 	defective boot loaders and --force. | 
 | 	* docs/user-ref.texi (Command-line-specific commands): Added a | 
 | 	description about --force. | 
 | 	 | 
 | 2000-01-11  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/prog-ref.texi (LBA mode disk I/O): Added a footnote about | 
 | 	a buggy BIOS. | 
 | 	 | 
 | 2000-01-11  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage1/stage1.S [!NO_BUGGY_BIOS_IN_THE_WORLD]: Don't check if | 
 | 	LBA read is supported. Anyway, fallback to the CHS mode if | 
 | 	fails. | 
 | 	 | 
 | 2000-01-10  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/bios.c (NO_INT13_FALLBACK): Undefined. | 
 | 	(get_diskinfo) [!NO_BUGGY_BIOS_IN_THE_WORLD]: Do not check if | 
 | 	bit 0 in DRP.FLAGS is set, because at least one BIOS does not | 
 | 	set it correctly. Reported by "Forever shall I be." | 
 | 	<zinx@linuxfreak.com>. | 
 |  | 
 | 	* util/grub-install.in: Handle the new options `--root' and | 
 | 	`--grub-shell'. | 
 | 	(rootdir): New variable. | 
 | 	(usage): Print the help messages about the options --root and | 
 | 	--grub-shell. | 
 | 	(bootdir): Initialized after the option analysis. | 
 | 	(grubdir): Likewise. | 
 | 	(device_map): Likewise. | 
 | 	(root_device): Set to the result for the directory ROOTDIR | 
 | 	instead of "/". | 
 | 	* docs/user-ref.texi (Invoking grub-install): Added the | 
 | 	descriptions about --root and --grub-shell. | 
 | 	* docs/grub-install.8: Regenerated. | 
 | 	 | 
 | 2000-01-08  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* util/grub-install.in (grubdir_device): New variable. | 
 | 	If GRUBDIR_DEVICE is not equal to ROOT_DEVICE, print an error | 
 | 	message and exit. | 
 | 	* README: Added a caution about Automake. | 
 | 	* TODO: Updated. Only the things that should be done until 0.6 | 
 | 	have one or more exclamations. Things with zero exclamation | 
 | 	will be done after 0.6 unless someone sends a patch for it. | 
 | 	 | 
 | 2000-01-05  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* grub/asmstub.c: Include the header shared.h after including | 
 | 	all the system headers, but not before. | 
 | 	(EXTENDED_MEMSIZE): Reduced to 3MB. | 
 | 	(grub_setjmp): New function. | 
 | 	(grub_longjmp): Likewise. | 
 | 	* grub/main.c: Include setjmp.h. | 
 | 	* stage2/asm.S (grub_setjmp): New function. Stolen from the | 
 | 	OSKit (which stole it from Mach). | 
 | 	(grub_longjmp): Likewise. | 
 | 	* stage2/shared.h [GRUB_UTIL] (grub_jmp_buf): New type. | 
 | 	[!GRUB_UTIL] (grub_jmp_buf): New macro. Defined as jmp_buf. | 
 | 	(grub_setjmp): Declared. | 
 | 	(grub_longjmp): Likewise. | 
 | 	(restart_env): Likewise. | 
 | 	* stage2/builtins.c (configfile_func): Use grub_longjmp instead | 
 | 	of invoking cmain again. | 
 | 	* stage2/stage2.c (restart_env): New variable. | 
 | 	(cmain): Call grub_setjmp first to initialize RESTART_ENV. | 
 | 	 | 
 | 2000-01-03  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* docs/multiboot.texi (Boot information format): Added the | 
 | 	descriptions about the fields "config_table" and | 
 | 	"boot_loader_name". | 
 | 	 | 
 | 1999-12-31  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (setup_func) [!NO_BUGGY_BIOS_IN_THE_WORLD]: | 
 | 	Specify the option `d', whether INSTALL_DRIVE is identical with | 
 | 	IMAGE_DRIVE or not. | 
 | 	* docs/user-ref.texi (Command-line-specific commands): Added a | 
 | 	caution about buggy BIOSes which don't pass a booting drive | 
 | 	properly. | 
 |  | 
 | 	* docs/src2texi: Added an extra space into the first line, for | 
 | 	the portability issue. | 
 |  | 
 | 	* docs/appendices.texi (Obtaining and Building GRUB): Update the | 
 | 	information on the ftp site and the CVS repository. | 
 | 	 | 
 | 1999-12-30  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/builtins.c (blocklist_func): New function. | 
 | 	(builtin_blocklist): New variable. | 
 | 	(builtin_table): Added a pointer to BUILTIN_BLOCKLIST. | 
 | 	* docs/user-ref.texi (Command-line-specific commands): Added a | 
 | 	description about the command "blocklist". | 
 | 	 | 
 | 1999-12-30  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* stage2/disk_io.c (grub_seek): New function. | 
 | 	* stage2/shared.h (grub_seek): Declared. | 
 | 	* stage2/boot.c (load_image): Use grub_seek instead of setting | 
 | 	FILEPOS to a new value directly. | 
 | 	* stage2/builtins.c (install_func): Likewise. | 
 | 	(testload_func): Likewise. | 
 |  | 
 | 	* docs/grub.texi: Use a single direntry command for all the | 
 | 	entries instead of one per entry. | 
 | 	 | 
 | 1999-12-29  OKUJI Yoshinori  <okuji@gnu.org> | 
 |  | 
 | 	* grub/asmstub.c (check_device) [__linux__]: Check if DEVICE is | 
 | 	a CD-ROM drive by the HDIO_GETGEO ioctl. If so, then return | 
 | 	zero. Reported by Pavel Roskin. | 
 |  | 
 | 	* stage2/Makefile.am (nodist_noinst_DATA): Renamed to ... | 
 | 	(noinst_DATA): ... this. The primary DATA is `nodist' by | 
 | 	default, at least theoretically. Reported by Klaus Reichl. | 
 |  | 
 | 	* stage2/bios.c (get_diskinfo): Set the LBA flag in GEOMETRY | 
 | 	only if bit 0 in DRP.FLAGS is set. Reported by Zack Weinberg | 
 | 	<zack@rabi.columbia.edu>. | 
 |  | 
 | 	From Pavel Roskin: | 
 | 	* grub/asmstub.c (init_device_map): Increase the number of | 
 | 	devices to be probed to 8 for IDE disks and 16 for SCSI | 
 | 	disks. Reported by Anton Anisimov <aa@bestlinux.net>. | 
 | 	 | 
 | 1999-12-06  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* README (DEVELOPERS): Change CVS location to subversions. | 
 |  | 
 | 1999-11-30  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/disk_io.c (real_open_partition): If SLICE_NO is greater | 
 | 	than or equal to PC_SLICE_MAX, skip any extended partition, when | 
 | 	searching for the right partition. Reported by Weil, Stefan 3732 | 
 | 	EPE-24 <Stefan.Weil@de.heidelberg.com>. | 
 |  | 
 | 1999-11-19  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* grub/asmstub.c (getkey): Stop immediately if we get an EOF. | 
 |  | 
 | 	* stage2/stage2.c (cmain): Tell enter_cmdline to run forever. | 
 | 	(run_menu): Tell print_cmdline_message and enter_cmdline that we | 
 | 	won't run forever. | 
 | 	* stage2/cmdline.c (enter_cmdline): New argument, FOREVER, for | 
 | 	when ESC shouldn't allow an exit.  Pass it to | 
 | 	print_cmdline_message. | 
 | 	(print_cmdline_message): Use new argument, FOREVER, to decide | 
 | 	whether to tell the user that ESC exits. | 
 |  | 
 | 1999-11-18  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* debian/rules (binary-arch): Don't strip or generate shared | 
 | 	library dependencies for /usr/sbin/grub-install, since it's a | 
 | 	script. | 
 |  | 
 | 	* util/grub-install.in: Create safe temporary log files using | 
 | 	/bin/tempfile if it is executable. | 
 |  | 
 | 1999-11-17  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* stage1/Makefile.am (LDFLAGS): Consolidate multiple -Wl flags. | 
 | 	* stage2/Makefile.am (PRE_STAGE2_LINK): Likewise. | 
 | 	(START_LINK): Likewise. | 
 | 	(STAGE1_5_LINK): Likewise. | 
 |  | 
 | 1999-11-19  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* util/grub-install.in (debug): New variable. | 
 | 	(convert): If the device file does not exist, then emit an | 
 | 	error. Get the GRUB drive instead of the OS device. | 
 | 	If --debug is specified, then set $debug to yes. | 
 | 	If $debug is yes, run "set -x". | 
 | 	Make sure that stage1 and stage2 exist. | 
 | 	When checking for INSTALL_DEVICE, use "case" instead of "elif"s. | 
 | 	Make sure that $install_drive is not empty. | 
 | 	Likewise, make sure that $root_drive is not empty. | 
 | 	Any error message is redirected to the standard error. | 
 |  | 
 | 1999-11-19  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* stage2/Makefile.am (noinst_DATA): Renamed to ... | 
 | 	(nodist_noinst_DATA): ... this. | 
 | 	* util/Makefile.am: sbin_SCRIPS -> sbin_SCRIPTS. | 
 | 	* util/grub-install.in: grub_dir -> grubdir. | 
 | 	Check if $grub_shell exists before running it. | 
 | 	(convert): Added a missing "test" after "if". | 
 |  | 
 | 1999-11-18  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* configure.in: Output grub-install. | 
 | 	* util/Makefile.am (sbin_SCRIPTS): New variable. | 
 | 	* util/grub-install.in: New file. | 
 | 	* docs/Makefile.am (man_MANS): Added grub-install.8. | 
 | 	[MAINTAINER_MODE] ($(srcdir)/grub-install.8): New target. | 
 | 	* docs/grub-install.8: New file. Generated by help2man. | 
 | 	* docs/user-ref.texi (Invoking grub-install): New chapter. | 
 |  | 
 | 1999-11-16  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Pavel Roskin: | 
 | 	* stage1/stage1.S: Check for the API subset support bitmap | 
 | 	returned by INT 13 AH=48h, and jump to chs_mode if AH=42h is not | 
 | 	supported. | 
 |  | 
 | 1999-11-13  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (install_func): When using a Stage 1.5, set | 
 | 	CURRENT_DRIVE to SAVED_DRIVE and CURRENT_PARTITION to | 
 | 	SAVED_PARTITION if set_device fails. If CURRENT_DRIVE is equal | 
 | 	to SRC_DRIVE, then set CURRENT_DRIVE to 0xFF. We don't want to | 
 | 	embed any drive number whenever possible. | 
 | 	* stage2/disk_io.c (set_device) [STAGE1_5]: Always set | 
 | 	CURRENT_PARTITION to PARTITION. | 
 |  | 
 | 1999-11-13  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Pavel Roskin: | 
 | 	* stage1/stage1.S (lba_mode): Jump to chs_mode if INT 13 AH=42h | 
 | 	fails. | 
 |  | 
 | 1999-11-12  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Do not use the device map file unless --device-map is specified. | 
 |  | 
 | 	* grub/main.c (device_map_file): Set to 0. | 
 | 	(default_device_map_file): Removed. | 
 | 	(usage): Do not print DEFAULT_DEVICE_MAP_FILE. | 
 | 	* grub/asmstub.c (init_device_map): If DEVICE_MAP_FILE is NULL, | 
 | 	do not try to open the device map file. | 
 | 	Set FP to NULL by default. | 
 | 	* docs/grub.8: Regenerated. | 
 |  | 
 | 1999-11-11  Michael Hohmuth  <hohmuth@innocent.com> | 
 |  | 
 | 	* stage2/boot.c (load_image): grub_close was called after | 
 | 	return, so exchange the order. | 
 | 	* stage2/stage1_5.c (cmain): Call grub_close after grub_read. | 
 | 	Set RET to the value returned by grub_read, and if RET is | 
 | 	non-zero, call chain_stage2. | 
 | 	* stage1/Makefile.am (BUILT_SOURCES): Removed. | 
 | 	(CLEANFILES): Set to $(nodist_pkgdata_DATA). | 
 |  | 
 | 1999-11-11  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Suggested by Klaus Reichl: | 
 | 	* stage2/builtins.c (print_root_device): New function. | 
 | 	(root_func): If no argument is specified, call the function | 
 | 	print_root_device and return. | 
 | 	(rootnoverify_func): Likewise. | 
 | 	* stage2/disk_io.c [!STAGE1_5] (print_completions): Call | 
 | 	print_error even if IS_FILENAME is zero. | 
 | 	If ERRNUM is non-zero, then return -1. | 
 | 	* stage2/char_io.c [!STAGE1_5] (get_cmdline): Clear ERRNUM after | 
 | 	calling print_completions to print the list as well. | 
 |  | 
 | 	* stage2/asm.S [!STAGE1_5] (currticks): Set %eax to %cx:%dx | 
 | 	correctly. Reported by Michael Hohmuth. | 
 |  | 
 | 1999-11-06  Klaus Reichl  <Klaus.Reichl@alcatel.at> | 
 |  | 
 | 	* grub/asmstub.c (get_diskinfo) [__linux__]: After opening the | 
 | 	drive, flush the cache, other progs may have left over something | 
 | 	in the cache. | 
 |  | 
 | 1999-11-03  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* debian/rules: Add variables for cross-compilation. | 
 |  | 
 | 	* debian/control (Standards-Version): Update to version 3.1.0. | 
 | 	* debian/rules (build): Install manpages into /usr/share/man, and | 
 | 	info into /usr/share/info in accordance with FHS. | 
 | 	(binary-arch): Likewise, and put docs into /usr/share/doc. | 
 | 	* debian/postinst: Use /usr/share/info, and manage compatibility | 
 | 	/usr/doc/grub -> /usr/share/doc/grub symlink. | 
 | 	* debian/prerm: Likewise. | 
 |  | 
 | 	* stage2/Makefile.am (CLEANFILES): Change to | 
 | 	$(nodist_pkgdata_DATA) so that the raw binary files are deleted. | 
 | 	* stage1/Makefile.am (CLEANFILES): Likewise. | 
 |  | 
 | 1999-11-06  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/asmstub.c (grub_putchar) [HAVE_LIBCURSES]: Do not call | 
 | 	wrefresh. This was just an accident. Sorry. | 
 |  | 
 | 	Reported by Alan McLean <amcl@flash.net>: | 
 | 	* stage2/builtins.c (embed_func): The sector argument for the | 
 | 	function biosdisk is changed from SECTOR + I * SECTOR_SIZE to | 
 | 	SECTOR + I. | 
 | 	(find_func): Clear ERRNUM before each of the attempts. | 
 |  | 
 | 1999-11-05  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/multiboot.texi (Boot information format): Add the members | 
 | 	`drives_addr' and `drives_count' into the Multiboot information | 
 | 	structure, and added the descriptions. | 
 |  | 
 | 1999-11-03  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* util/mbchk.c (main): Move the version number inside the | 
 | 	parentheses since it is the GRUB package version, not just an | 
 | 	mbchk-specific version. | 
 |  | 
 | 1999-10-30  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* debian/rules (binary-arch): Compress man pages. | 
 | 	Strip the grub shell. | 
 | 	Install examples. | 
 |  | 
 | 1999-11-03  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/tutorial.texi: Fix typos by ispell. | 
 | 	* docs/user-ref.texi: Likewise. | 
 | 	* docs/prog-ref.texi: Likewise. | 
 | 	* docs/appendices.texi: Likewise. | 
 |  | 
 | 1999-11-03  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/fsys_ext2fs.c (struct ext2_dir_entry): Changed the type | 
 | 	of `name_len' to __u8 and added the new member `file_type' after | 
 | 	it. This is stolen from linux/ext2_fs.h in Linux 2.2.13. | 
 | 	Reported by Ben Harris <bjh21@cam.ac.uk>. | 
 |  | 
 | 	* stage2/builtins.c (device_func) [GRUB_UTIL]: Call | 
 | 	nul_terminate before calling check_device. | 
 |  | 
 | 1999-11-02  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/disk_io.c (real_open_partition): Check for the right | 
 | 	partition for any extended partition as well. Set EXT to I after | 
 | 	the check is done. Reported by Jeff Scheinberg | 
 | 	<jeffsh@erols.com>. | 
 |  | 
 | 	* stage2/builtins.c (color_func): Use the function | 
 | 	nul_terminate. | 
 | 	(device_func) [GRUB_UTIL]: Likewise. | 
 | 	(help_func): Likewise. | 
 | 	(install_func): Save CURRENT_DRIVE, CURRENT_PARTITION and | 
 | 	BUG_GEOM in SRC_DRIVE, SRC_PARTITION and SRC_GEOM respectively, | 
 | 	and use them when patching the Stage 2. | 
 | 	NUL-terminate the configuration filename CONFIG_FILENAME. | 
 | 	If IS_STAGE1_5 is true, then check if the "real config file" | 
 | 	option is present, and, if so, patch the Stage 2 CONFIG_FILENAME | 
 | 	with the configuration filename REAL_CONFIG_FILENAME. | 
 | 	(setkey_func): Use nul_terminate instead of the local function | 
 | 	null_terminate. | 
 | 	* stage2/char_io.c [!STAGE1_5] (nul_terminate): New function. | 
 | 	* stage2/shared.h (nul_terminate): Declared. | 
 |  | 
 | 1999-11-01  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/grub.texi: Add "I/O ports detection" into the menu. | 
 | 	* docs/user-ref.texi: Added a description about the command | 
 | 	"ioprobe". | 
 | 	* docs/prog-ref.texi (I/O ports detection): New chapter. | 
 |  | 
 | 1999-11-01  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Pavel Roskin: | 
 | 	* stage2/asm.S (int1_handler): Use EXT_C(io_map) instead of | 
 | 	io_map. | 
 | 	(int1_handler): Use EXT_C(bios_key_map) instead of bios_key_map. | 
 | 	* grub/asmstub.c [__OpenBSD__]: Include <sys/ioctl.h> and | 
 | 	<sys/disklabel.h>. | 
 | 	[__OpenBSD__] (get_floppy_disk_name): Added support for OpenBSD. | 
 | 	[__OpenBSD__] (get_ide_disk_name): Likewise. | 
 | 	[__OpenBSD__] (get_scsi_disk_name): Likewise. | 
 | 	(get_drive_geometry) [__OpenBSD__]: Use for OpenBSD the same | 
 | 	ioctl as for NetBSD and FreeBSD. | 
 |  | 
 | 1999-10-31  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/asmstub.c (init_device_map): Add a floppy device name | 
 | 	into the device map file even if check_device fails. | 
 | 	* stage2/char_io.c [!STAGE1_5] (get_cmdline): Clear ERRNUM after | 
 | 	calling print_completions. | 
 |  | 
 | 1999-10-29  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/asm.S (track_int13): Defined unconditionally. Do not | 
 | 	use int3 any more, but replace the int13 handler with | 
 | 	set_tf_int13_handler. | 
 | 	(int1_handler): Defined unconditionally. Do not check for 0x0F. | 
 | 	Add missing `$'s. If the code is 0xEC-0xEF, use %dx instead of | 
 | 	immediate. If the code is 0xE4-0xE7, use immediate instead of | 
 | 	%dx. Set %ds to zero before scanning IO_MAP. Check for the | 
 | 	buffer overrun of IO_MAP before adding a port. | 
 | 	[!DEFINE_TRACK_INT13] (int13_first_instruction): Removed. | 
 | 	[!DEFINE_TRACK_INT13] (int3_handler): Likewise. | 
 | 	(set_tf_int13_handler): New interrupt handler. | 
 | 	(set_tf_int13_offset): New variable. | 
 | 	(set_tf_int13_segment): Likewise. | 
 | 	* stage2/builtins.c (ioprobe_func): New function. | 
 | 	(builtin_ioprobe): New variable. | 
 | 	(builtin_table): Added a pointer to BUILTIN_IOPROBE. | 
 | 	* stage2/shared.h (IO_MAP_SIZE): New macro. | 
 | 	(track_int13): Declared. | 
 | 	(io_map): Likewise. | 
 |  | 
 | 1999-10-29  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/char_io.c (print_error) [!STAGE1_5]: Print "Error:" | 
 | 	before print the error message. | 
 | 	(print_error): Do not clear ERRNUM. | 
 | 	* stage2/cmdline.c (run_script): If ERRNUM is non-zero, set | 
 | 	ERRNUM to ERR_NONE. | 
 | 	(enter_cmdline): Clear ERRNUM after print_error. | 
 |  | 
 | 1999-10-28  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Pavel Roskin: | 
 | 	* stage2/stage2.c (run_menu) [GRUB_UTIL]: Do not use IBM special | 
 | 	characters in the message, but use ascii names instead. | 
 | 	(run_menu) [!GRUB_UTIL]: Use DISP_UP and DISP_DOWN instead of | 
 | 	the ascii codes. | 
 | 	* stage2/shared.h [!ACS_ULCORNER] (ACS_ULCORNER): New macro. | 
 | 	[!ACS_ULCORNER] (ACS_URCORNER): Likewise. | 
 | 	[!ACS_ULCORNER] (ACS_LLCORNER): Likewise. | 
 | 	[!ACS_ULCORNER] (ACS_LRCORNER): Likewise. | 
 | 	[!ACS_ULCORNER] (ACS_HLINE): Likewise. | 
 | 	[!ACS_ULCORNER] (ACS_VLINE): Likewise. | 
 | 	[!ACS_ULCORNER] (ACS_LARROW): Likewise. | 
 | 	[!ACS_ULCORNER] (ACS_RARROW): Likewise. | 
 | 	[!ACS_ULCORNER] (ACS_UARROW): Likewise. | 
 | 	[!ACS_ULCORNER] (ACS_DARROW): Likewise. | 
 | 	[GRUB_UTIL] (DISP_UL): Set to ACS_ULCORNER. | 
 | 	[GRUB_UTIL] (DISP_UR): Set to ACS_URCORNER. | 
 | 	[GRUB_UTIL] (DISP_LL): Set to ACS_LLCORNER. | 
 | 	[GRUB_UTIL] (DISP_LR): Set to ACS_LRCORNER. | 
 | 	[GRUB_UTIL] (DISP_HORIZ): Set to ACS_HLINE. | 
 | 	[GRUB_UTIL] (DISP_VERT): Set to ACS_VLINE. | 
 | 	[GRUB_UTIL] (DISP_LEFT): Set to ACS_LARROW. | 
 | 	[GRUB_UTIL] (DISP_RIGHT): Set to ACS_RARROW. | 
 | 	[GRUB_UTIL] (DISP_UP): Set to ACS_UARROW. | 
 | 	[GRUB_UTIL] (DISP_DOWN): Set to ACS_DARROW. | 
 |  | 
 | 1999-10-28  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (keycode_func): Removed. | 
 | 	(builtin_keycode): Likewise. | 
 | 	(struct keysym): New structure. | 
 | 	(keysym_table): New variable. | 
 | 	(setkey_func): New function. | 
 | 	(builtin_setkey): New variable. | 
 | 	(builtin_table): Removed the pointer to BUILTIN_KEYCODE, and | 
 | 	added a pointer to BUILTIN_SETKEY. | 
 | 	* stage2/common.c [!STAGE1_5] (err_list): Added | 
 | 	ERR_BAD_ARGUMENT. | 
 | 	* stage2/shared.h (grub_error_t): Added ERR_BAD_ARGUMENT. | 
 | 	(KEY_MAP_SIZE): Set to 128. | 
 | 	(ascii_key_map): Declared. | 
 | 	* stage2/asm.S [!STAGE1_5] (remap_ascii_char): New function. | 
 | 	[!STAGE1_5] (ascii_key_map): New variable. | 
 | 	[!STAGE1_5] (getkey): Call remap_ascii_char after int16. | 
 | 	[!STAGE1_5] (checkkey): Likewise. | 
 | 	* grub/asmstub.c (ascii_key_map): New variable. | 
 | 	* docs/user-ref.texi (General commands): Added a description | 
 | 	about the command "setkey". | 
 | 	(Stage2 errors): Added a description about ERR_BAD_ARGUMENT. | 
 |  | 
 | 1999-10-27  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/disk_io.c (set_device) [!STAGE1_5]: Remove the | 
 | 	preliminary Mach-style device name support. I've decided that | 
 | 	the support is not necessary. | 
 | 	(setup_part) [!STAGE1_5]: Do not strip the leading "/dev/". | 
 | 	* docs/help2man: Upgraded to 1.016. | 
 | 	* docs/mbchk.1: Regenerated. | 
 | 	* docs/grub.8: Likewise. | 
 | 	* grub/asmstub.c: Rename KEY_MAP to BIOS_KEY_MAP. | 
 |  | 
 | 	* stage2/asm.S [!STAGE1_5] (set_int15_handler): Use 0 instead of | 
 | 	the maximum number for the segment. | 
 | 	[!STAGE1_5] (unset_int15_handler): Likewise. | 
 | 	[!STAGE1_5] (int15_handler): Almost rewritten. If non-carrier, | 
 | 	ignore the scancode. If the scancode is E1 or E0, then set | 
 | 	INT15_SKIP_FLAG to 0x74, and if the previous scancode is E1 or | 
 | 	E0, set INT15_SKIP_FLAG to 0xea. Clear bit 7 in %dl. Save bit 7 | 
 | 	of %al in %bl. Do not lcall. Use ljmp instead. | 
 | 	[!STAGE1_5] (key_map): Renamed to ... | 
 | 	[!STAGE1_5] (bios_key_map): ... this. | 
 | 	* stage2/builtins.c (keycode_func): Check if FROM is greater | 
 | 	than 0xff instead of double-checking for TO. Use BIOS_KEY_MAP | 
 | 	instead of KEY_MAP. | 
 | 	* stage2/shared.h (KEY_MAP_SIZE): Set to 32. | 
 | 	(key_map): Removed. | 
 | 	(bios_key_map): Declared. | 
 |  | 
 | 1999-10-26  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Now the BIOS drive remapping is functional. | 
 |  | 
 | 	* stage2/asm.S [DEFINE_TRACK_INT13] (track_int13): Use %edi | 
 | 	instead of direct addresses. | 
 | 	Prefix DATA32 to the calls for real_to_prot and prot_to_real. | 
 | 	Fix the address of DRIVE: 4(%ebp) -> 8(%ebp). | 
 | 	(set_int15_handler): Use %edi instead of direct addresses. | 
 | 	(unset_int15_handler): Likewise. | 
 | 	(set_int13_handler): Copy DRIVE_MAP_SIZE * 2 bytes instead of | 
 | 	DRIVE_MAP_SIZE bytes of MAP. | 
 | 	Fix the address of MAP: 4(%ebp) -> 8(%ebp). | 
 | 	Use %edi instead of direct addresses. | 
 | 	(int13_handler): Do not set %ds to %cs. Use the segment override | 
 | 	prefix of %cs instead. | 
 | 	Push the flags pushed by the callee instead of the current. | 
 | 	Set the flags in the stack to the flags returned by the original | 
 | 	int13 call. | 
 | 	(drive_map): 4bytes-aligned. | 
 | 	* stage2/disk_io.c (grub_close): Do not set ERRNUM even if | 
 | 	FSYS_TYPE is NUM_FSYS. | 
 |  | 
 | 1999-10-25  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage1/stage1.S: Long jump to real_start, because some bogus | 
 | 	BIOSes jump to 07C0:0000 instead of 0000:7C00. | 
 | 	(real_start): New label. | 
 | 	* docs/Makefile.am (grub.info): Removed. Use the default rule | 
 | 	instead. | 
 |  | 
 | 1999-10-25  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/asm.S [DEFINE_TRACK_INT13] (int3_handler): Save the | 
 | 	modified FLAGS in 6(%bp) instead of 4(%bp). | 
 | 	Decrease %bx before restoring the first instruction. | 
 | 	[DEFINE_TRACK_INT13] (track_int13): Go to the real mode before | 
 | 	setting up the registers for the int13 call. | 
 |  | 
 | 1999-10-24  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Add the prototype of a function to probe I/O ports used for a | 
 | 	BIOS drive. | 
 |  | 
 | 	* stage2/asm.S [DEFINE_TRACK_INT13] (track_int13): New function. | 
 | 	[DEFINE_TRACK_INT13] (int1_handler): New interrupt handler for | 
 | 	the real mode. | 
 | 	[DEFINE_TRACK_INT13] (int3_handler): Likewise. | 
 | 	[DEFINE_TRACK_INT13] (io_map): New variable. | 
 |  | 
 | 	* stage2/builtins.c (quit_func) [!GRUB_UTIL]: Fix a typo. | 
 |  | 
 | 1999-10-24  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	The new GRUB manual becomes official. | 
 |  | 
 | 	* docs/grub.texi: Replaced with new-grub.texi. | 
 | 	* docs/new-grub.texi: Removed. | 
 | 	* docs/Makefile.am (grub_TEXINFOS): New variable. | 
 | 	(UNFINISHED_MANUALS): Removed. | 
 | 	(EXTRA_DIST): Deleted $(UNFINISHED_MANUALS). | 
 |  | 
 | 1999-10-24  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (device_func) [!GRUB_UTIL]: Set ERRNUM to | 
 | 	ERR_UNRECOGINIZED and return 1. | 
 | 	(impsprobe_func) [GRUB_UTIL]: Likewise. | 
 | 	(quit_func) [!GRUB_UTIL]: Likewise. | 
 | 	* docs/tutorial.texi: Rename "Device Syntax" to "Filename". | 
 | 	Added many cross-references. | 
 | 	* docs/new-grub.texi: "Device Syntax" -> "Filename". | 
 | 	* docs/user-ref.texi: Fix typos and added some cross-references. | 
 | 	* docs/prog-ref.texi: Likewise. | 
 | 	* docs/appendices.texi: Likewise. | 
 |  | 
 | 1999-10-23  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (map_func): If BIOS_DRIVE_MAP already | 
 | 	contains FROM, override the existsing entry. | 
 | 	If TO is equal to FROM, delete the existing entry if any. | 
 | 	(keycode_func): Likewise. | 
 | 	* docs/user-ref.texi (Command): Use the list of `@deffn's | 
 | 	instead of @table. | 
 | 	(Basic usage): Use @option instead of @code. | 
 | 	(Invoking mbchk): Likewise. | 
 |  | 
 | 1999-10-23  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/asm.S [!STAGE1_5] (set_int15_handler): New function. | 
 | 	[!STAGE1_5] (unset_int15_handler): Likewise. | 
 | 	[!STAGE1_5] (int15_handler): New interrupt handler for the real | 
 | 	mode. | 
 | 	[!STAGE1_5] (int15_offset): New variable. | 
 | 	[!STAGE1_5] (int15_segment): Likewise. | 
 | 	[!STAGE1_5] (key_map): Likewise. | 
 | 	[!STAGE1_5] (set_int13_handler): Use the macro ABS for | 
 | 	INT13_OFFSET and INT13_SEGMENT. | 
 | 	* stage2/shared.h (KEY_MAP_SIZE): New macro. | 
 | 	(set_int15_handler): Declared. | 
 | 	(unset_int15_handler): Likewise. | 
 | 	* stage2/builtins.c (boot_func): Do not allow I to be equal to | 
 | 	DRIVE_MAP_SIZE. | 
 | 	Call unset_int15_handler unless KERNEL_TYPE is KERNEL_TYPE_NONE. | 
 | 	(map_func): Search for an empty slot till I is less than | 
 | 	DRIVE_MAP_SIZE. | 
 | 	Check if I is equal to DRIVE_MAP_SIZE instead of if I is greater | 
 | 	than DRIVE_MAP_SIZE. | 
 | 	(keycode_func): New function. | 
 | 	(builtin_keycode): New variable. | 
 | 	(builtin_table): Added a pointer to BUILTIN_KEYCODE. | 
 | 	* grub/asmstub.c (set_int15_handler): New function. | 
 | 	(unset_int15_handler): Likewise. | 
 | 	(key_map): New variable. | 
 |  | 
 | 1999-10-23  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Michael Hohmuth <hohmuth@innocent.com>: | 
 | 	* acconfig.h (HAVE_USCORE_USCORE_BSS_START_SYMBOL): Added the | 
 | 	`undef' entry. | 
 | 	(HAVE_EDATA_SYMBOL): Likewise. | 
 | 	(HAVE_USCORE_EDATA_SYMBOL): Likewise. | 
 | 	* acinclude.m4 (grub_CHECK_USCORE_USCORE_BSS_START_SYMBOL): New | 
 | 	function. | 
 | 	(grub_CHECK_EDATA_SYMBOL): Likewise. | 
 | 	(grub_CHECK_USCORE_EDATA_SYMBOL): Likewise. | 
 | 	* configure.in: Check for __bss, edata and _edata. | 
 | 	* netboot/Makefile.am (DRIVERS): Deleted ns8390.c and ns8390.h. | 
 | 	(libdrivers_a_LIBADD): New variable. | 
 | 	($(libdrivers_a_LIBADD)): New target. | 
 | 	(nepci_o_CFLAGS): New variable. | 
 | 	(ne_o_CFLAGS): Likewise. | 
 | 	(wd_o_CFLAGS): Likewise. | 
 | 	(t503_o_CFLAGS): Likewise. | 
 | 	* netboot/fsys_tftp.c (tftp_close): New function. | 
 | 	* stage2/boot.c (load_image): Call grub_close before return. | 
 | 	(load_initrd): Likewise. | 
 | 	(load_module): Likewise. | 
 | 	* stage2/builtins.c (cat_func): Likewise. | 
 | 	(chainloader_func): Likewise. | 
 | 	(configfile_func): Likewise. | 
 | 	(embed_func): Likewise. | 
 | 	(find_func): Likewise. | 
 | 	(install_func): Set IS_OPEN to the value returned by grub_open. | 
 | 	If IS_OPEN is non-zero, call grub_close before return. | 
 | 	(setup_func): Call grub_close after grub_open. | 
 | 	(testload): Call grub_close before return. | 
 | 	* stage2/disk_io.c (fsys_table): Add the `close' member into | 
 | 	each of the entries. For TFTP, tftp_close is added, and for the | 
 | 	rest, NULL is added. | 
 | 	(grub_read): "|" -> "||". | 
 | 	(grub_close): New function. | 
 | 	* stage2/filesys.h [FSYS_TFTP] (tftp_close): Declared. | 
 | 	(struct fsys_entry): Added close_func. | 
 | 	* stage2/shared.h (grub_close): Declared. | 
 | 	* stage2/stage1_5.c (cmain): Call grub_close after grub_open. | 
 | 	* stage2/stage2.c (cmain): Clear ERRNUM after calling | 
 | 	find_command to just ignore the error code. | 
 | 	Call grub_close after loading the configuration file. | 
 |  | 
 | 	* stage2/asm.S (main): Clean out the bss. | 
 |  | 
 | 1999-10-23  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/new-grub.texi: Updated. | 
 | 	* docs/user-ref.texi: Likewise. | 
 | 	* docs/tutorial.texi: Likewise. | 
 | 	* docs/prog-ref.texi: Likewise. | 
 | 	* docs/appendices.texi: Likewise. | 
 |  | 
 | 1999-10-22  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/prog-ref.texi: New file. | 
 | 	* docs/appendices.texi: Likewise. | 
 | 	* docs/Makefile.am (UNFINISHED_MANUALS): Added prog-ref.texi and | 
 | 	appendices.texi. | 
 |  | 
 | 1999-10-22  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/user-ref.texi: New file. | 
 | 	* docs/Makefile.am (UNFINISHED_MANUALS): Added user-red.texi. | 
 |  | 
 | 1999-10-21  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Add BIOS drive remapping support for chain-loading some foolish | 
 | 	operating systems. | 
 |  | 
 | 	* stage2/builtins.c (bios_drive_map): New variable. | 
 | 	(boot_func): If KERNEL_TYPE is KERNEL_TYPE_CHAINLOADER, check | 
 | 	if BIOS_DRIVE_MAP contains meaningful values. If so, search for | 
 | 	SAVED_DRIVE in BIOS_DRIVE_MAP and exchange SAVED_DRIVE with the | 
 | 	mapped drive if found. And then call set_int13_handler. | 
 | 	(map_func): New function. | 
 | 	(builtin_map): New variable. | 
 | 	(builtin_table): Added a pointer to BUILTIN_MAP. | 
 | 	* stage2/asm.S (ABS): New macro. | 
 | 	[!STAGE1_5] (set_int13_handler): New function. | 
 | 	[!STAGE1_5] (int13_handler): New interrupt handler for the real | 
 | 	mode. | 
 | 	[!STAGE1_5] (drive_map): New variable. | 
 | 	[!STAGE1_5] (int13_handler_end): New label used for just | 
 | 	computing the end address of int13_handler. | 
 | 	* stage2/shared.h (DRIVE_MAP_SIZE): New macro. | 
 | 	(set_int13_handler): Declared. | 
 | 	* grub/asmstub.c (set_int13_handler): New function. Do nothing. | 
 |  | 
 | 1999-10-20  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (find_func): Print only the device names. | 
 | 	* docs/tutorial.texi: New file. | 
 | 	* docs/Makefile.am (UNFINISHED_MANUALS): Added tutorial.texi. | 
 | 	(%.c.texi): Use $(SHELL) instead of /bin/sh. | 
 | 	(%.h.texi): Likewise. | 
 | 	(%.S.texi): Likewise. | 
 |  | 
 | 1999-10-20  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/char_io.c (memcheck): Fix the checks: "<=" -> "<". | 
 | 	Reported by Mike Hicks <hick0088@umn.edu>. | 
 |  | 
 | 1999-10-19  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (find_func): New function. | 
 | 	(builtin_find): New variable. | 
 | 	(hide_func): Save SAVED_DRIVE and SAVED_PARTITION to TMP_DRIVE | 
 | 	and TMP_PARTITION, respectively, and resotre them before return. | 
 | 	(unhide_func): Likewise. | 
 | 	(setup_func): Likewise. And set SAVED_DRIVE and SAVED_PARTITION | 
 | 	instead of CURRENT_DRIVE and CURRENT_PARTITION to IMAGE_DRIVE | 
 | 	and IMAGE_PARTITION before running install_func. | 
 | 	(builtin_table): Added a pointer to BUILTIN_FIND. | 
 |  | 
 | 1999-10-19  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/Makefile.am (UNFINISHED_MANUALS): New variable. | 
 | 	(EXTRA_DIST): Added $(UNFINISHED_MANUALS). | 
 | 	* docs/new-grub.texi: New file. | 
 |  | 
 | 1999-10-19  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/Makefile.am (man_MANS): Added mbchk.1. | 
 | 	[MAINTAINER_MODE] (mbchk.1): New target. | 
 | 	* docs/mbchk.1: New file. Generated by help2man. | 
 |  | 
 | 1999-10-18  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* Makefile.am (SUBDIRS): Added util. | 
 | 	* configure.in: Output util/Makefile. | 
 | 	* util/Makefile.am: New file. | 
 | 	* util/mbchk.c: Likewise. | 
 | 	* util/Makefile.in: Likewise. Generated by automake. | 
 |  | 
 | 1999-10-17  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/Makefile.am (.texi): Canceled because the dependecies can | 
 | 	be circulated. | 
 | 	* stage2/builtins.c (embed_func): Set BUF_TRACK to -1 before | 
 | 	writing	the Stage 1.5 to the disk to clear the cache. | 
 |  | 
 | 1999-10-17  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/boot.c (load_initrd): Change types of *RAMDISK and | 
 | 	MOVETO to unsigned long. | 
 | 	Apply the macro RAW_ADDR to MOVETO. | 
 |  | 
 | 1999-10-16  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/multiboot.texi: Include the example source files of a | 
 | 	Multiboot kernel. | 
 | 	* docs/src2texi: New file. | 
 | 	* docs/boot.S: Likewise. | 
 | 	* docs/multiboot.h: Likewise. | 
 | 	* docs/kernel.c: Likewise. | 
 | 	* docs/boot.S.texi: Likewise. | 
 | 	* docs/multiboot.h.texi: Likewise. | 
 | 	* docs/kernel.c.texi: Likewise. | 
 | 	* docs/Makefile.am (EXAMPLES): New varilable. | 
 | 	(multiboot_TEXINFOS): Likewise. | 
 | 	(SRC2TEXI): Likewise. | 
 | 	(noinst_SCRIPTS): Added $(SRC2TEXI). | 
 | 	(EXTRA_DIST): Added $(EXAMPLES) and $(multiboot_TEXINFOS). | 
 | 	(%.c.texi): New target. | 
 | 	(%.h.texi): Likewise. | 
 | 	(%.S.texi): Likewise. | 
 |  | 
 | 1999-09-22  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 |         * multiboot.texi (BIOS device mapping techniques): New section. | 
 |         Stolen from bios_mapping.txt in grub-0.5. | 
 |         (Data comparison technique): New subsection. | 
 |         (I/O restriction technique): Likewise. | 
 |         (Example OS code): Rewrited from scratch. | 
 |  | 
 | 1999-09-21  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 |         * multiboot.texi: Rename Multiboot Standard to Multiboot | 
 |         Specification and upgrade the version to 0.7. Many cleanups | 
 |         are done. | 
 |  | 
 | 1999-10-15  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (setup_func): Save CURRENT_DRIVE and | 
 | 	CURRENT_PARTITION into IMAGE_DRIVE and IMAGE_PARTITION | 
 | 	respectively, and restore them before running install_func. | 
 | 	Use DEVICE instead of BUFFER to store the device name. | 
 | 	Change each type of STAGE1, STAGE2 and CONFIG_FILE to an array | 
 | 	of char. | 
 | 	If installing the Stage 1 into a MBR, embed the Stage 1.5 in the | 
 | 	sectors right after it. | 
 | 	Return the result of install_func instead of zero. | 
 |  | 
 | 1999-10-14  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* configure.in: Check for opendisk in libutil. | 
 | 	* grub/asmstub.c [__FreeBSD__ || __NetBSD__]: Include | 
 | 	<sys/ioctl.h>. | 
 | 	[HAVE_OPENDISK]: Include <util.h>. | 
 | 	[__NetBSD__] (get_floppy_disk_name): Added support for NetBSD. | 
 | 	[__NetBSD__ && HAVE_OPENDISK] (get_ide_disk_name): Likewise. | 
 | 	[__NetBSD__ && HAVE_OPENDISK] (get_scsi_disk_name): Likewise. | 
 | 	(get_drive_geometry) [__NetBSD__]: Use for NetBSD the same ioctl | 
 | 	as for FreeBSD. | 
 |  | 
 | 1999-10-13  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/asmstub.c (assign_device_name): If DEVICE is NULL, set | 
 | 	DEVICE_MAP[DRIVE] to NULL. | 
 | 	(get_diskinfo): If open or read fails, call assign_device_name | 
 | 	to disable accessing the drive DRIVE. | 
 | 	(grub_stage2): The device mapping routine is moved to ... | 
 | 	(init_device_map): ... here. This new function also reads/writes | 
 | 	a device map file. If DEVICE_MAP_FILE already exists, then use | 
 | 	the data in it instead of probing devices. Otherwise, guess the | 
 | 	map between BIOS drives and OS devices, and write it to the file | 
 | 	DEVICE_MAP_FILE if it can be opened. | 
 | 	* grub/main.c (device_map_file): New variable. | 
 | 	(default_device_map_file): Likewise. | 
 | 	(OPT_DEVICE_MAP): New macro. | 
 | 	(longopts): Added an entry for "device-map". | 
 | 	(usage): Print the usage about --device-map as well. | 
 | 	(main): Set DEFAULT_DEVICE_MAP_FILE to DEVICE_MAP_FILE. If | 
 | 	OPT_DEVICE_MAP is found, set DEVICE_MAP_FILE to a duplicated | 
 | 	string of OPTARG. | 
 | 	* stage2/shared.h [GRUB_UTIL] (device_map_file): Declared. | 
 | 	* docs/grub.8: Regenerated. | 
 |  | 
 | 1999-10-13  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (color_func): Do not set NORMAL_COLOR or | 
 | 	HIGHLIGHT_COLOR directly, but use NEW_NORMAL_COLOR and | 
 | 	NEW_HIGHLIGHT_COLOR as temporary storages instead. | 
 | 	New internal function `color_number' is used to convert a | 
 | 	symbolic color representation into a color number. | 
 | 	Try color_number at first, and if fails, then try | 
 | 	safe_parse_maxint for each of NORMAL and HIGHLIGHT. | 
 | 	(builtin_color): The long doc does not describe the raw number | 
 | 	syntax but the symbolic color name syntax. | 
 | 	* docs/grub.texi (Commands): Adjusted to the long doc of | 
 | 	BUILTIN_COLOR. | 
 | 	* docs/menu.lst: Add examples of "fallback" and "color". | 
 |  | 
 | 1999-10-13  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/char_io.c [!STAGE1_5] (get_cmdline): If C is a newline | 
 | 	or a return, then set LPOS to LLEN and call the function | 
 | 	cl_setcpos. | 
 | 	[!STAGE1_5] (grub_strncat): New function. | 
 | 	* stage2/builtins.c (embed_func): New function. | 
 | 	(builtin_embed): New varilable. | 
 | 	(setup_func): New function. | 
 | 	(builtin_setup): New varilable. | 
 | 	(builtin_table): Added a pointer to BUILTIN_EMBED and a pointer | 
 | 	to BUILTIN_SETUP. | 
 | 	* stage2/shared.h (grub_strncat): Declared. | 
 |  | 
 | 	* stage2/Makefile.am (stage2_size.h): ../stage2/stage2 -> | 
 | 	pre_stage2. Reported by Pavel Roskin. | 
 |  | 
 | 1999-10-12  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Pavel Roskin: | 
 | 	* acinclude.m4 (grub_PROG_OBJCOPY_ABSOLUTE): main -> cmain. | 
 | 	* stage2/boot.c (load_image): Only CUR_ADDR, not ENTRY_ADDR | 
 | 	should be 1M-aligned for NetBSD. Don't align symbol table on 4k | 
 | 	boundaries if the kernel doesn't require it. | 
 |  | 
 | 1999-10-10  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/asm.S [!STAGE1_5] (start): New label to force ld quiet. | 
 | 	[!STAGE1_5] (_start): Likewise. | 
 | 	* stage2/builtins.c (install_func): Rewritten heavily almost | 
 | 	from scratch. As the blocklist was moved to the first sector of | 
 | 	Stage 2, always write sectors of Stage 2 to the disk. | 
 | 	* stage1/stage1.h (STAGE1_STAGE2_SECTOR): 0x40 -> 0x41. | 
 | 	(STAGE1_STAGE2_ADDRESS): 0x44 -> 0x45. | 
 | 	(STAGE1_STAGE2_SEGMENT): 0x46 -> 0x47. | 
 | 	(STAGE1_BOOT_DRIVE): 0x3f -> 0x40. | 
 |  | 
 | 1999-10-09  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Stage1 supports both the CHS mode and the LBA mode. | 
 |  | 
 | 	* stage1/Makefile.am (nodist_pkgdata_DATA): Removed stage1_lba. | 
 | 	(BUILT_SOURCES): Deleted. | 
 | 	(CLEANFILES): Likewise. | 
 | 	(noinst_PROGRAMS): Removed stage1_lba.exec. | 
 | 	(stage1_exec_SOURCES): Removed stage2_size.h. | 
 | 	(stage2_size.h): Deleted. | 
 | 	(stage1_lba_exec_SOURCES): Likewise. | 
 | 	* stage1/stage1.S: Rewritten from scratch. | 
 | 	* stage1/stage1_lba.S: Deleted. | 
 | 	* stage1/stage1.h (COMPAT_VERSION_MAJOR): Set to 3. | 
 | 	(COMPAT_VERSION_MINOR): Set to 0. | 
 | 	(STAGE1_VER_MAJ_OFFS): Set to 0x3e. | 
 | 	(STAGE1_FIRSTLIST): Deleted. | 
 | 	(STAGE1_INSTALLSEG): Likewise. | 
 | 	(STAGE1_INSTALLADDR): Likewise. | 
 | 	(STAGE1_MINPARAMSIZE): Likewise. | 
 | 	(STAGE1_LISTSIZE): Likewise. | 
 | 	(STAGE1_ID_OFFSET): Likewise. | 
 | 	(STAGE1_ID_CHS): Likewise. | 
 | 	(STAGE1_ID_LBA): Likewise. | 
 | 	(STAGE1_STAGE2_SECTOR): New macro. | 
 | 	(STAGE1_STAGE2_ADDRESS): Likewise. | 
 | 	(STAGE1_STAGE2_SEGMENT): Likewise. | 
 | 	(STAGE1_BOOT_DRIVE): Likewise. | 
 | 	* stage2/start.S: New file. | 
 | 	* stage2/Makefile.am (noinst_DATA): New variable. | 
 | 	(CLEANFILES): Set to "$(nodist_pkgdata_DATA) $(noinst_DATA) | 
 | 	$(BUILT_SOURCES)". | 
 | 	(noinst_PROGRAMS): Removed stage2.exec, and added start.exec and | 
 | 	pre_stage2.exec. | 
 | 	(STAGE2_LINK): Deleted. | 
 | 	(PRE_STAGE2_LINK): New variable. | 
 | 	(START_LINK): Likewise. | 
 | 	(stage2_exec_SOURCES): Deleted. | 
 | 	(stage2_exec_CFLAGS): Likewise. | 
 | 	(stage2_exec_LDFLAGS): Likewise. | 
 | 	[NETBOOT_SUPPORT] (stage2_exec_LDADD): Likewise. | 
 | 	(pre_stage2_exec_SOURCES): New variable. | 
 | 	(pre_stage2_exec_CFLAGS): Likewise. | 
 | 	(pre_stage2_exec_LDFLAGS): Likewise. | 
 | 	[NETBOOT_SUPPORT] (pre_stage2_exec_LDADD): Likewise. | 
 | 	(BUILT_SOURCES): Likewise. | 
 | 	(start_exec_SOURCES): Likewise. | 
 | 	(start_exec_CFLAGS): Likewise. | 
 | 	(start_exec_LDFLAGS): Likewise. | 
 | 	(start_exec_DEPENDENCIES): Likewise. | 
 | 	(stage2_size.h): New rule. | 
 | 	(stage2): Likewise. | 
 | 	(e2fs_stage1_5_exec_SOURCES): Added start.S. | 
 | 	(fat_stage1_5_exec_SOURCES): Likewise. | 
 | 	(ffs_stage1_5_exec_SOURCES): Likewise. | 
 | 	(minix_stage1_5_exec_SOURCES): Likewise. | 
 | 	* stage2/asm.S (start): Renamed to ... | 
 | 	(main): ... this. | 
 | 	[STAGE1_5] (main): Jump to (codestart - EXT_C(main) + 0x2200) | 
 | 	instead of (codestart - EXT_C(start) + 0x2000). | 
 | 	[!STAGE1_5] (main): Jump to (codestart - EXT_C(main) + 0x8200) | 
 | 	instead of (codestart - EXT_C(start) + 0x8000). | 
 | 	[STAGE1_5] (chain_stage2): Use main instead of start. | 
 | 	* stage2/shared.h (BOOTSEC_LISTSIZE): New macro. | 
 | 	* stage2/stage1_5.c: Change the second argument for chain_stage2 | 
 | 	to 0x8200. | 
 |  | 
 | 1999-10-08  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* configure.in (--with-binutils): New option to specify a | 
 | 	directory to find binutils. | 
 | 	(CFLAGS): If WITH_BINUTILS is not empty, added the option `-B'. | 
 | 	(LD): Do not check for this. We don't use ld directly anyway. | 
 | 	(RANLIB): If WITH_BINUTILS is not empty, search the directory | 
 | 	WITH_BINUTILS first. | 
 | 	(OBJCOPY): Likewise. | 
 | 	* acinclude.m4 (grub_ASM_USCORE): Add CFLAGS into | 
 | 	AC_TRY_COMMAND. | 
 | 	(grub_ASM_ADDR32): Likewise. | 
 | 	(grub_ASM_PREFIX_REQUIREMENT): Likewise. | 
 | 	(grub_PROG_OBJCOPY_ABSOLUTE): Use CC instead of LD. | 
 |  | 
 | 1999-10-04  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* stage2/freebsd.h (struct bootinfo): New member, bi_bios_dev. | 
 | 	* stage2/boot.c (bsd_boot): Set BI.BI_BIOS_DEV to SAVED_DRIVE. | 
 |  | 
 | 1999-10-04  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Pavel Roskin: | 
 | 	* docs/grub.texi: Fix typos. | 
 | 	* stage2/builtins.c (install_func): Reformat the warning message | 
 | 	about the option `d'. | 
 |  | 
 | 1999-10-03  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* stage2/builtins.c (install_func): Fix check for the Stage 2 id. | 
 | 	From Pavel Roskin. | 
 |  | 
 | 	* debian/Makefile.am (EXTRA_DIST): Add postinst and prerm. | 
 |  | 
 | 1999-10-03  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (boot_func): Pass MBI.CMDLINE instead of ARG | 
 | 	to bsd_boot. | 
 |  | 
 | 1999-10-03  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/gunzip.c (gunzip_test_header): Check if CURRENT_DRIVE | 
 | 	is 0x20 instead of if the fs type is TFTP, because GRUB does not | 
 | 	mount CURRENT_DRIVE when using a block file. Reported by Pavel | 
 | 	Roskin. | 
 |  | 
 | 1999-10-02  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (cat_func): Do not read the whole of a file | 
 | 	at one time. Instead, repeat reading one byte and print it on | 
 | 	the screen. | 
 | 	* docs/grub.texi (Command line): List the available key | 
 | 	bindings. | 
 | 	(Commands): Added descriptions about "geometry", "device" and | 
 | 	"cat". | 
 |  | 
 | 1999-10-02  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Now it is possible to build the grub shell with old BSD curses. | 
 |  | 
 | 	* stage2/shared.h [!A_NORMAL] (A_NORMAL): Set to zero. | 
 | 	[!A_REVERSE && A_STANDOUT] (A_REVERSE): Set to A_STANDOUT. | 
 | 	[!A_REVERSE && !A_STANDOUT] (A_REVERSE): Set to zero. | 
 |  | 
 | 1999-09-30  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* stage2/disk_io.c (set_bootdev): Mask 0x7F instead of 0x79 of | 
 | 	the device number. | 
 |  | 
 | 1999-10-01  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* configure.in (--without-curses): New option. If WITH_CURSES is | 
 | 	no, do not check for curses. | 
 |  | 
 | 	* stage2/disk_io.c (set_device) [STAGE1_5]: Change the type of | 
 | 	DEV to unsigned long. | 
 | 	* stage2/builtins.c (install_func): Always check for the Stage 2 | 
 | 	id in FILE. | 
 | 	Reported by Pavel Roskin. | 
 |  | 
 | 1999-09-30  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* debian/postinst: New file to call install-info. | 
 | 	* debian/prerm: Likewise. | 
 | 	* debian/rules (binary-arch): Add postinst and prerm, compress the | 
 | 	info files, and call dpkg-shlibdeps. | 
 |  | 
 | 	* stage2/cmdline.c (skip_to): Restructure, and count tabs as | 
 | 	whitespace. | 
 | 	(find_command): Likewise. | 
 |  | 
 | 1999-09-30  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/getopt.c: Moved to ... | 
 | 	* lib/getopt.c: ... here. | 
 | 	* grub/getopt1.c: Moved to ... | 
 | 	* lib/getopt1.c: ... here. | 
 | 	* grub/getopt.h: Moved to ... | 
 | 	* lib/getopt.h: ... here. | 
 | 	* grub/Makefile.am (AM_CFLAGS): Added -I$(top_srcdir)/lib. | 
 | 	(grub_LDADD): Added ../lib/libcommon.a. | 
 | 	* lib/Makefile.am: New file. | 
 | 	* Makefile.am (SUBDIRS): Added lib. | 
 | 	* configure.in: lib/Makefile is added into the arguments for | 
 | 	AC_OUTPUT. | 
 |  | 
 | 1999-09-30  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Pavel Roskin: | 
 | 	* stage2/defs.h (time_t): Renamed to ... | 
 | 	(mach_time_t): ... this. | 
 | 	(daddr_t): Renamed to ... | 
 | 	(mach_daddr_t): ... this. | 
 | 	(uid_t): Renamed to ... | 
 | 	(mach_uid_t): ... this. | 
 | 	(gid_t): Renamed to ... | 
 | 	(mach_gid_t): ... this. | 
 | 	(ino_t): Renamed to ... | 
 | 	(mach_ino_t): ... this. | 
 | 	* stage2/disk_inode.h (FFS_MAX_FASTLINK_SIZE): Use mach_daddr_t | 
 | 	instead of daddr_t. | 
 | 	(struct icommon): Use mach_uid_t, mach_gid_t, mach_time_t and | 
 | 	mach_daddr_t, instead of uid_t, gid_t, time_t and daddr_t. | 
 | 	* stage2/fs.h (BBLOCK): Use mach_daddr_t instead of addr_t. | 
 | 	(SBLOCK): Likewise. | 
 | 	(ROOTINO): Use mach_ino_t instead of ino_t. | 
 | 	(struct fs): Use mach_daddr_t and mach_time_t instead of daddr_t | 
 | 	and time_t. | 
 | 	(struct cg): Use mach_time_t instead of time_t. | 
 | 	(struct ocg): Likewise. | 
 | 	(cgbase): Use mach_daddr_t instead of daddr_t. | 
 | 	(itod): Likewise. | 
 |  | 
 | 1999-09-30  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* acinclude.m4 (grub_CHECK_START_SYMBOL): Use AC_TRY_LINK | 
 | 	instead of AC_TRY_COMMAND. | 
 | 	(grub_CHECK_USCORE_START_SYMBOL): Likewise. | 
 | 	(grub_CHECK_END_SYMBOL): Likewise. | 
 | 	(grub_CHECK_USCORE_END_SYMBOL): Likewise. | 
 |  | 
 | 	* stage2/disk_io.c (set_device) [!STAGE1_5]: Use RESULT instead | 
 | 	of RETVAL to check if the analysis succeeds. | 
 |  | 
 | 1999-09-29  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (install_func): If the Stage 2 id in FILE is | 
 | 	not STAGE2_ID_STAGE2, set IS_STAGE1_5 to 1, otherwise to 0. | 
 | 	Use CONFIG_FILE_LOCATION to point to the location of the name of | 
 | 	a configuration file in Stage 2. | 
 | 	If the option `p' is present and IS_STAGE1_5 is non-zero, reset | 
 | 	the device information in CONFIG_FILE_LOCATION. | 
 | 	(cat_func): New function. | 
 | 	(builtin_cat): New variable. | 
 | 	(builtin_table): Added a pointer to BUILTIN_CAT. | 
 | 	(geometry_func): Call real_open_partition with the argument 1 | 
 | 	after printing out the drive information. | 
 | 	* stage2/disk_io.c (real_open_partition): Made global. | 
 | 	[!STAGE1_5] (print_completions): In the command completion and | 
 | 	the filename completion, print a newline at the last if | 
 | 	IS_COMPLETION is zero. | 
 | 	* stage2/shared.h (real_open_partition): Declared. | 
 | 	* stage2/fsys_ext2fs.c (ext2fs_dir): Do not print a newline even | 
 | 	if PRINT_POSSIBILITIES is less than zero. | 
 | 	* stage2/fsys_ffs.c (ffs_dir): Likewise. | 
 | 	* stage2/fsys_fat.c (fat_dir): Likewise. | 
 | 	* stage2/fsys_minix.c (minix_dir): Likewise. | 
 |  | 
 | 1999-09-29  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage1/stage1.S [!FFS_STAGE1_5] (blocklist_default_len): Do | 
 | 	not divide the size by 512, but shift the size to the right by | 
 | 	9 instead, because of a binutils-2.9.1.0.x bug. | 
 | 	* stage1/stage1_lba.S [!FFS_STAGE1_5] (blocklist_default_len): | 
 | 	Likewise. | 
 | 	* stage2/builtins.c (install_func): When installing Stage 1.5, | 
 | 	if set_device returns NULL, then set CURRENT_DRIVE to 0xFF and | 
 | 	CONFIG_FILE to PTR. | 
 |  | 
 | 1999-09-26  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/char_io.c [!STAGE1_5] (get_cmdline): In cl_insert, call | 
 | 	cl_setcpos before printing BUF, even if LPOS is equal to LLEN. | 
 | 	In the completion, if RET is zero, do not call cl_init. | 
 | 	* stage2/disk_io.c [!STAGE1_5] (print_completions): In the | 
 | 	filename completion, if UNIQUE is 1, check if UNIQUE_STRING is a | 
 | 	directory or not. If so, append '/' to BUF. | 
 | 	In the partition completion, if IS_COMPLETION is non-zero and | 
 | 	*UNIQUE_STRING is not NUL, copy UNIQUE_STRING to PTR. Do not | 
 | 	append '/'. | 
 | 	(real_open_partition) [!STAGE1_5]: If DO_COMPRESSION is non-zero, | 
 | 	call print_a_completion. | 
 | 	(check_BSD_parts) [!STAGE1_5]: Likewise. | 
 | 	[!STAGE1_5] (print_a_completion): Ignore NAME if it is "." or | 
 | 	"..". | 
 |  | 
 | 1999-09-25  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* acinclude.m4 (grub_CHECK_USCORE_END_SYMBOL): Do not call | 
 | 	AC_DEFINE within AC_CACHE_VAL. Call it after AC_CACHE_VAL. | 
 | 	* stage2/Makefile.am (STAGE1_5_COMPILE): Do not define | 
 | 	CONFIG_FILE_ASM. | 
 | 	* stage2/asm.S (config_file) [STAGE1_5]: Set the first 4 bytes | 
 | 	to 0xffffffff and the following to "/boot/grub/stage2". | 
 | 	(config_file) [!STAGE1_5]: Set to "/boot/grub/menu.lst". | 
 | 	* stage2/builtins.c (install_func): Read a Stage 2 before | 
 | 	handling the `p' option. | 
 | 	If the `configfile' option is present and FILE is a Stage 2, | 
 | 	translate the device name to the internal device representation | 
 | 	and copy the result to STR. | 
 | 	* stage2/disk_io.c [STAGE1_5] (sane_partition): Eliminated. | 
 | 	[STAGE1_5] (incomplete): Likewise. | 
 | 	[STAGE1_5] (disk_choice): Likewise. | 
 | 	[STAGE1_5] (part_choice): Likewise. | 
 | 	(set_device) [STAGE1_5]: Assume that the first 4 bytes of DEVICE | 
 | 	is a device number. Set DRIVE to the forth byte of DEV and | 
 | 	PARTITION to the first 3 bytes of DEV. If DRIVE is 0xFF, set | 
 | 	CURRENT_DRIVE and CURRENT_PARTITION to SAVED_DRIVE and | 
 | 	SAVED_PARTITION, respectively. Otherwise set to DRIVE and | 
 | 	PARTITION, respectively. | 
 | 	(setup_part) [STAGE1_5]: Always call set_device. | 
 |  | 
 | 1999-09-24  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* acinclude.m4 (grub_CHECK_END_SYMBOL): Add a missing | 
 | 	double-quote. Reported by Johannes Kroeger | 
 | 	<hanne@squirrel.owl.de>. | 
 |  | 
 | 1999-09-14  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* stage1/stage1.S (blocklist_default_start): New label for default | 
 | 	blocklist start sector. | 
 | 	(blocklist_default_len): New label for default blocklist length. | 
 | 	(blocklist_default_seg): New label for default blocklist segment. | 
 | 	* stage1/stage1_lba.S (blocklist_default_start): Likewise. | 
 | 	(blocklist_default_len): Likewise. | 
 | 	(blocklist_default_seg): Likewise. | 
 |  | 
 | 1999-09-23  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* acinclude.m4 (grub_ASM_ADDR32): First, create a template | 
 | 	source file "conftest.s.in", and then, replace @ADDR32@ with | 
 | 	"addr32" if GRUB_CV_ASM_PREFIX_REQUIREMENT is yes, otherwise, | 
 | 	replace it with "addr32;". Reported by John Tobey | 
 | 	<spam@john-edwin-tobey.org>. | 
 |  | 
 | 1999-09-23  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (debug_fs_print_func): Renamed to ... | 
 | 	(disk_read_print_func): ... this. | 
 | 	(fstest_func): Use DISK_READ_HOOK instead of DEBUG_FS. | 
 | 	(install_func): Rename debug_fs_savesect_func to | 
 | 	disk_read_savesect_func. | 
 | 	Rename debug_fs_blocklist_func to disk_read_blocklist_func. | 
 | 	Use DISK_READ_HOOK instead of DEBUG_FS. | 
 | 	(testload_func): Use DISK_READ_HOOK instead of DEBUG_FS. | 
 | 	* stage2/disk_io.c [!STAGE1_5] (debug_fs): Renamed to ... | 
 | 	[!STAGE1_5] (disk_read_hook): ... this. | 
 | 	[!STAGE1_5] (debug_fs_func): Renamed to ... | 
 | 	[!STAGE1_5] (disk_read_func): ... this. | 
 | 	(rawread) [!STAGE1_5]: Use DISK_READ_HOOK and DISK_READ_FUNC | 
 | 	instead	of DEBUG_FS and DEBUG_FS_FUNC. | 
 | 	(grub_read) [!STAGE1_5]: Likewise. | 
 | 	(devread) [!STAGE1_5]: Use DISK_READ_HOOK instead of DEBUG_FS. | 
 | 	* stage2/fsys_ext2fs.c (ext2fs_read) [!STAGE1_5]: Use | 
 | 	DISK_READ_HOOK and DISK_READ_FUNC instead of DEBUG_FS and | 
 | 	DEBUG_FS_FUNC. | 
 | 	* stage2/fsys_ffs.c (ffs_read) [!STAGE1_5]: Likewise. | 
 | 	* stage2/fsys_minix.c (minix_read) [!STAGE1_5]: Likewise. | 
 | 	* stage2/shared.h [!STAGE1_5] (debug_fs): Renamed to ... | 
 | 	[!STAGE1_5] (disk_read_hook): ... this. | 
 | 	[!STAGE1_5] (debug_fs_func): Renamed to ... | 
 | 	[!STAGE1_5] (disk_read_func): ... this. | 
 | 	* docs/grub.texi: Likewise, replace debug_fs and debug_fs_func | 
 | 	with disk_read_hook and disk_read_func, respectively. | 
 |  | 
 | 1999-09-23  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* stage2/builtins.c (install_func): New local function, | 
 | 	debug_fs_savesect_func. Use debug_fs_savesect_func to determine | 
 | 	the first sector of Stage2. Write Stage 1 after patching Stage | 
 | 	2. | 
 |  | 
 | 1999-09-22  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* acinclude.m4 (grub_ASM_USCORE): Do not define HAVE_ASM_USCORE | 
 | 	within AC_CACHE_VAL. Define it after AC_CACHE_VAL if | 
 | 	GRUB_CV_ASM_USCORE is yes. | 
 |  | 
 | 1999-09-20  Edmund GRIMLEY EVANS  <edmundo@rano.demon.co.uk> | 
 |  | 
 | 	* netboot/3c59x.c: INCLUDE_3c59x is replaced by INCLUDE_3C59X | 
 |  	throughout. | 
 | 	* netboot/config.c: Likewise. | 
 | 	* netboot/io.h (__INS): New macro. | 
 | 	(__OUTS): Likewise. | 
 | 	(outl): Likewise. | 
 | 	(inl): Likewise. | 
 | 	(outl_p): Likewise. | 
 | 	(inl_p): Likewise. | 
 | 	Call __INS with the argument `b', with `w' and with `l' to | 
 | 	define insb, insw and insl, respectively. Likewise, Call __OUTS | 
 | 	with `b', with `w' and with `l' to define outsb, outw and outl, | 
 | 	respectively. | 
 | 	* netboot/pci.h (PCI_VENDOR_ID_VORTEX): New macro. | 
 |  	(PCI_DEVICE_ID_VORTEX_3c595): Likewise. Defined as a random | 
 | 	value. | 
 |  | 
 | 1999-09-20  Edward Killips  <ekillips@triton.net> | 
 |  | 
 | 	* stage2/disk_io.c (set_partition_hidden_flag): Set/clear the | 
 | 	hidden flag, whether the hidden flag is set or not. | 
 |  | 
 | 1999-09-21  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (install_func): Do not set DEBUG_FS at the | 
 | 	first read. Set it to DEBUG_FS_BLOCKLIST_FUNC when reading the | 
 | 	whole of Stage 2. Set FILEPOS to zero at the same time to read | 
 | 	from the beginning of Stage 2. Reported by Pavel Roskin. | 
 |  | 
 | 1999-09-20  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	The argument ADDR for the command install is now optional. | 
 |  | 
 | 	* stage2/builtins.c (install_func): If parsing ADDR fails, set | 
 | 	INSTALLADDR to zero and set PTR to ADDR. | 
 | 	If INSTALLADDR is zero after parsing the command-line, check if | 
 | 	the Stage 2 id is STAGE2_ID_STAGE2. If so, set INSTALLADDR to | 
 | 	0x8000, otherwise set it to 0x2000. | 
 | 	Set the install address in the Stage 1 after the automatic | 
 | 	determination is completed. | 
 | 	(builtin_install): Say that ADDR is optional in the help | 
 | 	message. | 
 | 	* docs/grub.texi: Synchronize the description about install to | 
 | 	builtins.c. Remove explicit address arguments from all the | 
 | 	examples. Add a description about help. | 
 | 	* docs/menu.lst: Do not specify the address argument for | 
 | 	install. | 
 |  | 
 | 1999-09-19  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	The completion code is heavily modified. | 
 |  | 
 | 	* stage2/char_io.c [!STAGE1_5] (get_cmdline): In the completion | 
 | 	code, use COMPLETION_BUFFER to get the completion instead of | 
 | 	writing to BUF directly. | 
 | 	Save the position of a possible equal character after a command | 
 | 	in EQUAL_POS and replace the equal character with a space | 
 | 	temporarily for the code simplicity. | 
 | 	At first, just get completions, and, if there is more than one | 
 | 	completions, then print the list of the completions. | 
 | 	* stage2/disk_io.c [!STAGE1_5] (do_completion): New variable. | 
 | 	[!STAGE1_5] (unique): Moved the definition near the beginning. | 
 | 	[!STAGE1_5] (unique_string): Likewise. And changed the type to | 
 | 	char *. | 
 | 	(check_BSD_parts) [!STAGE1_5]: If DO_COMPLETION is non-zero, do | 
 | 	not print anything. | 
 | 	(real_open_partition) [!STAGE1_5]: Likewise. | 
 | 	[!STAGE1_5] (print_fsys_type): Likewise. | 
 | 	[!STAGE1_5] (print_a_completion): The argument FILENAME is | 
 | 	renamed	to NAME. | 
 | 	If DO_COMPLETION is non-zero, get the unique part from NAME and | 
 | 	set UNIQUE_STRING to it. | 
 | 	If DO_COMPLETION is zero, just print NAME. | 
 | 	Do not call printf unconditionally. | 
 | 	[!STAGE1_5] (print_completions): Accept two arguements | 
 | 	IS_FILENAME and IS_COMPLETION instead of FILENAME. | 
 | 	Set UNIQUE_STRING to UNIQUE_BUF. | 
 | 	Set DO_COMPLETION to IS_COMPLETION and set it to zero before | 
 | 	returning. | 
 | 	If IS_FILENAME is zero, then complete builtin commands and | 
 | 	return UNIQUE - 1. | 
 | 	Use BUF instead of FILENAME. | 
 | 	If IS_COMPLETION is non-zero, do not print anything. | 
 | 	Copy UNIQUE_STRING to PTR only if IS_COMPLETION and | 
 | 	*UNIQUE_STRING are non-zero. | 
 | 	* stage2/shared.h (COMPLETION_BUF): New macro. | 
 | 	(COMPLETION_BUFLEN): Likewise. | 
 | 	(UNIQUE_BUF): Likewise. | 
 | 	(UNIQUE_BUFLEN): Likewise. | 
 | 	(MENU_BUF): Set to UNIQUE_BUF + UNIQUE_BUFLEN. | 
 | 	(MENU_BUFLEN): Set to 0x8000 + PASSWORD_BUF - UNIQUE_BUF. | 
 | 	(print_completions): Adjusted to the definition. | 
 |  | 
 | 1999-09-19  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* acinclude.m4 (grub_ASM_PREFIX_REQUIREMENT): Do not call | 
 | 	AC_DEFINE_UNQUOTEs within AC_CACHE_VAL. Define ADDR32 and DATA32 | 
 | 	after it. | 
 | 	(grub_CHECK_START_SYMBOL): Do not call AC_DEFINE within | 
 | 	AC_CACHE_VAL. Define HAVE_START_SYMBOL after it. | 
 | 	(grub_CHECK_USCORE_START_SYMBOL): Do not call AC_DEFINE within | 
 | 	AC_CACHE_VAL. Define HAVE_USCORE_START_SYMBOL after it. | 
 | 	(grub_CHECK_END_SYMBOL): Do not call AC_DEFINE within | 
 | 	AC_CACHE_VAL. Define HAVE_END_SYMBOL after it. | 
 | 	(grub_CHECK_USCORE_END_SYMBOL): Do not call AC_DEFINE within | 
 | 	AC_CACHE_VAL. Define HAVE_USCORE_END_SYMBOL after it. | 
 |  | 
 | 1999-09-17  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* acconfig.h (ADDR32): Removed. This entry is automatically | 
 | 	created by autoheader. | 
 | 	(DATA32): Likewise. | 
 | 	* acinclude.m4 (grub_ASM_ADD32): Use ADDR32 instead of addr32. | 
 | 	Require grub_ASM_PREFIX_REQUIREMENT. | 
 | 	(grub_ASM_PREFIX_REQUIREMENT): Define ADDR32 and DATA32. | 
 | 	* configure.in: Call grub_ASM_PREFIX_REQUIREMENT before | 
 | 	grub_ASM_ADDR32. Do not define ADDR32 and DATA32. | 
 | 	* stage1/stage1.S (after_BPB): Use ABS(firstlist) instead of | 
 | 	firstlist. | 
 | 	(MSG): Use ABS(x) instead of x. | 
 | 	(probe_loop): Use the macro MSG for fd_probe_error_string. | 
 | 	* stage1/stage1_lba.S (after_BPB): Use ABS(firstlist) instead of | 
 | 	firstlist. | 
 | 	(MSG): Use ABS(x) instead of x. | 
 | 	* stage2/asm.S (putchar): Renamed to ... | 
 | 	(grub_putchar): ... this. | 
 |  | 
 | 1999-09-18  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/gunzip.c (reset_linalloc): Use the macro RAW_ADDR | 
 | 	before setting LINALLOC_TOPADDR. | 
 | 	* stage2/shared.h [!GRUB_UTIL] (RAW_ADDR): Added parenthesises | 
 | 	to avoid a gcc warning. | 
 | 	[!GRUB_UTIL] (RAW_SEG): Likewise. | 
 |  | 
 | 1999-09-18  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* acinclude.m4 (grub_CHECK_START_SYMBOL): New function. | 
 | 	(grub_CHECK_USCORE_START_SYMBOL): Likewise. | 
 | 	(grub_CHECK_END_SYMBOL): Likewise. | 
 | 	(grub_CHECK_USCORE_SYMBOL): Likewise. | 
 | 	* configure.in: Call grub_CHECK_START_SYMBOL and | 
 | 	grub_CHECK_USCORE_START_SYMBOL, and if neither start nor _start | 
 | 	is defined, print an error message and exit. | 
 | 	Likewise, call grub_CHECK_END_SYMBOL and | 
 | 	grub_CHECK_USCORE_END_SYMBOL, and if neither end nor _end is | 
 | 	defined, print an error message and exit. | 
 | 	* acconfig.h (HAVE_START_SYMBOL): Added the "undef" entry. | 
 | 	(HAVE_USCORE_START_SYMBOL): Likewise. | 
 | 	(HAVE_END_SYMBOL): Likewise. | 
 | 	(HAVE_USCORE_END_SYMBOL): Likewise. | 
 | 	* stage2/char_io.c (memcheck): Rename the argument START to | 
 | 	ADDR. Added two missing equal characters. | 
 | 	[GRUB_UTIL]: Define new local functions start_addr and end_addr. | 
 | 	[GRUB_UTIL && HAVE_START_SYMBOL]: The function start_addr | 
 | 	returns START. | 
 | 	[GRUB_UTIL && HAVE_USCORE_START_SYMBOL]: The function start_addr | 
 | 	returns _START. | 
 | 	[GRUB_UTIL && HAVE_END_SYMBOL]: The function end_addr returns | 
 | 	END. | 
 | 	[GRUB_UTIL && HAVE_USCORE_END_SYMBOL]: The function end_addr | 
 | 	returns _END. | 
 | 	[GRUB_UTIL]: If ADDR is equal to or greater than the address | 
 | 	returned by start_addr, and ADDR plus LEN is less than the | 
 | 	address returned by end_addr, return ! ERRNUM. | 
 | 	* stage2/asm.S (get_code_end) [HAVE_END_SYMBOL]: Use $end as the | 
 | 	end of the bss. | 
 | 	[HAVE_USCORE_END_SYMBOL]: Use $_end as the end of the bss. | 
 | 	* stage2/disk_io.c [!STAGE1_5] (cur_part_desc): Made static. | 
 | 	Need not to be global any longer. | 
 |  | 
 | 1999-09-17  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/char_io.c [!STAGE1_5] (get_cmdline): The argument | 
 | 	COMPLETION is renamed to READLINE. | 
 | 	Do not initialize KILL here. | 
 | 	TAB, C-a, C-e, C-f, C-b, C-u, C-k, C-y, C-p and C-n are handled | 
 | 	only if READLINE is non-zero. | 
 | 	If ECHO_CHAR is not NUL, do not remove the leading spaces in BUF. | 
 | 	Add CMDLINE into the history list only if READLINE is non-zero. | 
 | 	* stage2/stage2.c (cmain): Initialize the kill buffer. | 
 |  | 
 | 1999-09-17  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Killing, yanking and manipulating the history are supported. | 
 |  | 
 | 	* stage2/shared.h (cur_cmdline): Removed. | 
 | 	(MAX_CMDLINE): Moved near the beginning of the file. | 
 | 	(NEW_HEAPSIZE): Likewise. | 
 | 	(CMDLINE_BUFLEN): Set to MAX_CMDLINE. | 
 | 	(KILL_BUF): New macro. | 
 | 	(KILL_BUFLEN): Likewise. | 
 | 	(HISTORY_BUF): Likewise. | 
 | 	(HISTORY_SIZE): Likewise. | 
 | 	(HISTORY_BUFLEN): Likewise. | 
 | 	(MENU_BUF): Set to HISTORY_BUF + HISTORY_BUFLEN. | 
 | 	(MENU_BUFLEN): Set to 0x8000 + PASSWORD_BUF - HISTORY_BUF. | 
 | 	(strcpy): New macro. | 
 | 	(grub_strcpy): Delared. | 
 | 	* stage2/boot.c (cur_cmdline): Removed. | 
 | 	* stage2/char_io.c [!STAGE1_5] (grub_strcpy): New function. | 
 | 	[!STAGE1_5] (get_history): Likewise. | 
 | 	[!STAGE1_5] (add_history): Likewise. | 
 | 	[!STAGE1_5] (get_cmdline): Use BUF instead of CMDLINE for the | 
 | 	working buffer for the command-line. | 
 | 	A new function cl_insert is used to insert a string to the | 
 | 	command-line. | 
 | 	In the case where C-u or C-k is pressed, copy the string being | 
 | 	deleted to KILL. | 
 | 	If C-y is pressed, insert KILL to the command-line. | 
 | 	If C-p is pressed, fetch the previous command from the history | 
 | 	list HISTORY, and if C-n is pressed, fetch the next command from | 
 | 	it. | 
 | 	If LPOS is less than LLEN, add CMDLINE into the history list. | 
 | 	If C is equal to KEY_UP, set C to 16, and if C is equal to | 
 | 	KEY_DOWN, set C to 14. | 
 | 	[!STAGE1_5] (num_history): New variable. | 
 |  | 
 | 1999-09-15  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/size_test: Do not check for the size of Stage 2. | 
 | 	* stage1/Makefile.am (stage2_size.h): Use `set' and `echo' | 
 | 	instead of awk, since we cannot expect awk is present. Remove | 
 | 	stage2_size.h before creating it. | 
 |  | 
 | 1999-09-15  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* Makefile.am (SUBDIRS): Put stage1 after stage2 so that stage2 | 
 | 	is built before stage1. | 
 | 	* stage1/Makefile.am (BUILT_SOURCES): New varilable. | 
 | 	(CLEANFILES): Added BUILT_SOURCES. | 
 | 	(stage1_exec_SOURCES): Added stage2_size.h. | 
 | 	(stage1_lba_exec_SOURCES): Likewise. | 
 | 	(stage2_size.h): New rule. | 
 | 	* stage1/stage1.S: Include <stage2_size.h> and use STAGE2_SIZE | 
 | 	to determine how much number of sectors to be read when loading | 
 | 	Stage 2. | 
 | 	* stage1/stage1_lba.S: Likewise. | 
 |  | 
 | 1999-09-15  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* netboot/config.h: Moved to ... | 
 | 	* netboot/netboot_config.h: ... here. | 
 | 	* netboot/config.c: Include netboot_config.h instead of config.h. | 
 | 	* netboot/fsys_tftp.c: Likewise. | 
 | 	* netboot/ip.c: Likewise. | 
 | 	* netboot/Makefile.am (libdrivers_a_SOURCES): Removed config.h | 
 | 	and added netboot_config.h. | 
 |  | 
 | 1999-09-14  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* grub/asmstub.c [__linux__]: On GLibc 2.0 and newer use lseek, | 
 | 	don't include <linux/fs.h> and define BLKFLSBUF if needed. | 
 |  | 
 | 1999-09-14  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Now the grub shell works fine on FreeBSD. A patch by Pavel | 
 | 	Roskin is modified and applied. | 
 |  | 
 | 	* grub/asmstub.c (get_drive_geometry): New function. | 
 | 	(get_diskinfo): Use get_drive_geometry to set the geometry of | 
 | 	DRIVE. | 
 |  | 
 | 1999-09-14  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* configure.in (--enable-ne): Made the description more clear. | 
 | 	(--enable-nepci): Likewise. | 
 | 	(--enable-wd): Likewise. | 
 | 	(--enable-t503): Likewise. | 
 | 	(--enable-t509): Likewise. | 
 | 	(--enable-3c59x): Likewise. | 
 | 	(--enable-lance): Likewise. | 
 | 	(--enable-cs): Likewise. | 
 | 	(--enable-eepro100): Likewise. | 
 | 	(--enable-wd-default_mem): Renamed to ... | 
 | 	(--enable-wd-default-mem): ... this. | 
 | 	(--enable-cs-scan): Corrected the description. | 
 | 	(NETBOOT_SUPPORT): Defined if NET_CFLAGS is not empty. | 
 | 	* stage2/Makefile.am (stage2_exec_LDADD): Defined only if | 
 | 	NETBOOT_SUPPORT is true. | 
 | 	* netboot/Makefile.am (LIBDRIVERS): New variable. If | 
 | 	NETBOOT_SUPPORT is true, set to libdriver.a, otherwise set to an | 
 | 	empty string. | 
 | 	(noinst_LIBRARIES): Set to LIBDRIVERS. | 
 | 	(DRIVERS): Added 3c509.h, cs89x0.h and ns8390.h. | 
 | 	(libdrivers_a_SOURCES): Added byteorder.h, config.h, if.h, io.h, | 
 | 	ip.h, netboot.h, netdevice.h, nic.h and pic.h. | 
 | 	(libdrivers_a_CFLAGS): Added -fno-builtin and -nostdinc and | 
 | 	removed -O2. | 
 | 	* stage2/char_io.c (grub_sprintf): Added parenthesises to avoid | 
 | 	gcc warnings. | 
 | 	* stage2/gunzip.c (gunzip_test_header): Check if FSYS_TYPE is | 
 | 	TFTP. If so, set IS_TFTP to non-zero, otherwise to zero. And, | 
 | 	use IS_TFTP to check if we have GZIP_CRC instead of the equation | 
 | 	"FILEMAX == 16 * 1024 * 1024". | 
 |  | 
 | 1999-09-13  Edmund GRIMLEY EVANS  <edmundo@rano.demon.co.uk> | 
 |  | 
 | 	The netboot support in the Dresden version of GRUB is integrated. | 
 |  | 
 | 	* Makefile.am (SUBDIRS): Added netboot. | 
 | 	* configure.in (--enable-tftp): New option. | 
 | 	(--enable-ne): Likewise. | 
 | 	(--enable-nepci): Likewise. | 
 | 	(--enable-wd): Likewise. | 
 | 	(--enable-t503): Likewise. | 
 | 	(--enable-t509): Likewise. | 
 | 	(--enable-3c59x): Likewise. | 
 | 	(--enable-lance): Likewise. | 
 | 	(--enable-cs): Likewise. | 
 | 	(--enable-eepro100): Likewise. | 
 | 	(--enable-ne-scan): Likewise. | 
 | 	(--enable-wd-default_mem): Likewise. | 
 | 	(--enable-cs-scan): Likewise. | 
 | 	(NET_CFLAGS): New variable. | 
 | 	(NET_EXTRAFLAGS): Likewise. | 
 | 	Do AC_OUTPUT for netboot/Makefile as well. | 
 | 	* stage1/stage1.S: Set the number of sectors for Stage 2 to 130. | 
 | 	* stage1/stage1_lba.S: Likewise. | 
 | 	* stage2/Makefile.am (stage2_exec_LDADD): Added | 
 | 	../netboot/libdrivers.a. | 
 | 	* stage2/asm.S [!STAGE1_5] (currticks): New function. | 
 | 	* stage2/char_io.c [!STAGE1_5] (grub_sprintf): Likewise. | 
 | 	[!STAGE1_5] (grub_memcmp): Likewise. | 
 | 	* stage2/disk_io.c (fsys_table) [FSYS_TFTP]: Added an entry for | 
 | 	tftp. | 
 | 	(sane_partition) [!STAGE1_5]: If CURRENT_DRIVE is a network | 
 | 	drive, return 1. | 
 | 	(real_open_partition) [!STAGE1_5]: Likewise. | 
 | 	(set_device): If DEVICE contains a network drive, set | 
 | 	CURRENT_DRIVE to 0x20. | 
 | 	* stage2/filesys.h [FSYS_TFTP] (FSYS_TFTP_NUM): Defined as 1. | 
 | 	[!FSYS_TFTP] (FSYS_TFTP_NUM): Defined as 0. | 
 | 	(NUM_FSYS): Added FSYS_TFTP_NUM. | 
 | 	* stage2/gunzip.c (gunzip_test_header): If FILEMAX >= 16MB, do | 
 | 	not try to examine the last 8 bytes of the file. This is | 
 | 	required for compressed files by TFTP. | 
 | 	* stage2/shared.h (sprintf): New macro. | 
 | 	(memcmp): Likewise. | 
 | 	(currticks): Declared. | 
 | 	(grub_sprintf): Likewise. | 
 | 	(grub_memcmp): Likewise. | 
 | 	* stage2/size_test: Set the maximum size of Stage 2 to 66560. | 
 | 	* netboot/3c509.c: New file. | 
 | 	* netboot/3c509.h: Likewise. | 
 | 	* netboot/3c59x.c: Likewise. | 
 | 	* netboot/Makefile.am: Likewise. | 
 | 	* netboot/Makefile.in: Likewise. | 
 | 	* netboot/byteorder.h: Likewise. | 
 | 	* netboot/compile: Likewise. | 
 | 	* netboot/config.c: Likewise. | 
 | 	* netboot/config.h: Likewise. | 
 | 	* netboot/cs89x0.c: Likewise. | 
 | 	* netboot/cs89x0.h: Likewise. | 
 | 	* netboot/eepro100.c: Likewise. | 
 | 	* netboot/fsys_tftp.c: Likewise. | 
 | 	* netboot/if.h: Likewise. | 
 | 	* netboot/io.h: Likewise. | 
 | 	* netboot/ip.c: Likewise. | 
 | 	* netboot/ip.h: Likewise. | 
 | 	* netboot/lance.c: Likewise. | 
 | 	* netboot/netboot.h: Likewise. | 
 | 	* netboot/netdevice.h: Likewise. | 
 | 	* netboot/nic.h: Likewise. | 
 | 	* netboot/ns8390.c: Likewise. | 
 | 	* netboot/ns8390.h: Likewise. | 
 | 	* netboot/pci.c: Likewise. | 
 | 	* netboot/pci.h: Likewise. | 
 |  | 
 | 1999-09-13  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* configure.in (--enable-maintainer-mode): Do not use our own | 
 | 	rule, but use AM_MAINTAINER_MODE instead. If the maintainer mode | 
 | 	is enabled, then check for perl, and if it is not found, print | 
 | 	an error message and abort. | 
 | 	* docs/Makefile.am (grub.8): Regenerated if MAINTAINER_MODE is | 
 | 	defined, instead of GRUB_MAINT. Use the variable PERL rather | 
 | 	than running help2man directly. | 
 |  | 
 | 1999-09-13  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* stage2/pc_slice.h (IS_PC_SLICE_TYPE_EXTENDED): New macro. | 
 | 	* stage2/disk_io.c (real_open_partition): Use | 
 | 	IS_PC_SLICE_TYPE_EXTENDED instead of comparing CURRENT_SLICE | 
 | 	with the extended partition types. | 
 |  | 
 | 1999-09-11  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* acconfig.h: New file for autoheader support. | 
 | 	* acinclude.m4 (grub_ASM_EXT_C) Renamed to ... | 
 | 	(grub_ASM_USCORE): ... this. Define HAVE_ASM_USCORE if a C | 
 | 	symbol gets an underscore after compiling to assembler. | 
 | 	* configure.in: Added AM_CONFIG_HEADER. Autoconf 2.13 is now | 
 | 	required. Test for wgetch(), not getch() in -l[n]curses. | 
 | 	* stage2/shared.h (EXT_C): Defined. | 
 | 	Include the best existing header for [n]curses. | 
 |  | 
 | 1999-09-12  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/boot.c (load_image): Use CURRENT_DRIVE and | 
 | 	CURRENT_PARTITION instead of SAVED_DRIVE and SAVED_PARTITION for | 
 | 	the boot device in the Multiboot information. Reported by | 
 | 	Stephen Early <steve@greenend.org.uk>. | 
 |  | 
 | 1999-09-12  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/disk_io.c (sane_partition) [STAGE1_5]: Defined. | 
 | 	(set_device): Use sane_partition to make sure that CURRENT_DRIVE | 
 | 	has a valid value. Reported by Pavel Roskin. | 
 |  | 
 | 1999-09-11  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Pavel Roskin: | 
 | 	* stage2/builtins.c (device_func) [GRUB_UTIL]: Use check_device | 
 | 	in order to make sure that DEVICE exists. | 
 | 	* grub/asmstub.c (check_device): New function. | 
 | 	(grub_stage2): Use check_device to probe a device. | 
 |  | 
 | 	* stage2/builtins.c (geometry_func) [GRUB_UTIL]: Copy the | 
 | 	modified geometry to GEOM and reset BUF_DRIVE. Reported by Pavel | 
 | 	Roskin. | 
 |  | 
 | 	* grub/main.c (no_floppy): New variable. | 
 | 	(probe_second_floppy): Likewise. | 
 | 	(OPT_NO_FLOPPY): New macro. | 
 | 	(OPT_PROBE_SECOND_FLOPPY): Likewise. | 
 | 	(longopts): Added no-floppy and probe-second-floppy. | 
 | 	(usage): Added the descriptions about --no-floppy and | 
 | 	--probe-second-floppy. | 
 | 	(main): Handle OPT_PROBE_SECOND_FLOPPY and OPT_NO_FLOPPY. | 
 | 	* grub/asmstub.c (grub_stage2): Print a message before the probe | 
 | 	routine. If NO_FLOPPY is non-zero, do not probe any floppy drive. | 
 | 	If PROBE_SECOND_FLOPPY is zero, skip the probe of the second | 
 | 	floppy drive. | 
 | 	(get_floppy_disk_name): New function. | 
 | 	(get_ide_disk_name): Likewise. | 
 | 	(get_scsi_disk_name): Likewise. | 
 |  | 
 | 1999-09-10  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (device_func): New function. | 
 | 	(builtin_device): New variable. | 
 | 	(builtin_table): Added the pointer to BUILTIN_DEVICE. | 
 | 	(builtin_geometry) [GRUB_UTIL]: Accept extra arguments, | 
 | 	CYLINDER, HEAD, SECTOR and TOTAL_SECTOR, and, if they are found, | 
 | 	set the geometry of a drive specified to them. | 
 | 	* grub/asmstub.c (disks): Made global. | 
 | 	(assign_device_name): New function. | 
 |  | 
 | 1999-09-09  Gordon Matzigkeit  <gord@fig.org> | 
 |  | 
 | 	* docs/grub.texi (Commands): Synchronize descriptions with | 
 | 	builtins.c. | 
 |  | 
 | 	* stage2/builtins.c (hide_func): Use set_partition_hidden_flag. | 
 | 	(unhide_func): Likewise. | 
 | 	Many help message cleanups.  From Pavel Roskin. | 
 |  | 
 | 	* stage2/shared.h (set_partition_hidden_flag): Declare. | 
 |  | 
 | 	* stage2/disk_io.c (set_partition_hidden_flag): New function | 
 | 	merged from hide_partition and unhide_partition.  Make sure we OR | 
 | 	with the inverse of the flag bit rather than XORing to unhide the | 
 | 	partition. | 
 |  | 
 | 1999-09-10  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/asmstub.c (_FILE_OFFSET_BITS): Defined. | 
 | 	(biosdisk) [!__linux__]: Pass the offset argument as off_t | 
 | 	instead of int to lseek, and compare the return value with | 
 | 	OFFSET. Reported by Pavel Roskin. | 
 | 	(grub_stage2) [!__linux__ && !__GNU__]: Print a warning message. | 
 |  | 
 | 1999-09-08  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/stage2.c (run_menu): If run_script is successfully | 
 | 	finished, break the loop. Reported by Pavel Roskin. | 
 | 	Do not wait an input character when FALLBACK_ENTRY is less than | 
 | 	zero. | 
 | 	* stage2/cmdline.c (run_script): If ERRNUM is non-zero, wait an | 
 | 	input character, whether FALLBACK is less than zero or not. | 
 |  | 
 | 1999-09-06  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (configfile_func): New function. | 
 | 	(builtin_configfile): New variable. | 
 | 	(builtin_table): Added the pointer to BUILTIN_CONFIGFILE. | 
 |  | 
 | 1999-09-06  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Pavel Roskin: | 
 | 	* stage2/asm.S [!STAGE1_5] (chain_stage2): Deleted. | 
 | 	[STAGE1_5] (get_code_end): Likewise. | 
 | 	* stage2/char_io.c (grub_strncat): Likewise. | 
 | 	* stage2/common.c [STAGE1_5] (saved_mem_upper): Likewise. | 
 | 	* stage2/smp-imps.c (imps_release_cpus): Likewise. | 
 | 	(imps_any_new_apics): Made static. | 
 | 	(imps_enabled): Likewise. | 
 | 	(imps_num_cpus): Likewise. | 
 | 	(imps_lapic_addr): Likewise. | 
 | 	(imps_cpu_apic_map): Likewise. | 
 | 	(imps_apic_cpu_map): Likewise. | 
 |  | 
 | 1999-09-06  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/builtins.c (testload_func): Fix the typos: 0x2000000 -> | 
 | 	0x200000 and 0x3000000 -> 0x300000. | 
 |  | 
 | 1999-09-06  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Hisazumi Kenji <nel@soraneko.com>: | 
 | 	* stage2/fsys_ffs.c (mapblock_offset): New variable. | 
 | 	(mapblock_bsize): Likewise. | 
 | 	(MAPBUF): New macro. | 
 | 	(MAPBUF_LEN): Likewise. | 
 | 	(ffs_mount): Set MAPBLOCK_OFFSET to -1. | 
 | 	(block_map): Added partial read support. | 
 |  | 
 | 1999-09-06  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/cmdline.c (find_command): If COMMAND is less than | 
 | 	(*BUILTIN)->NAME in dictionary order, break the loop. | 
 | 	* stage2/builtins.c (builtin_chainloader): Capitalize the | 
 | 	variable name in the short doc. | 
 | 	(builtin_color): Likewise. | 
 | 	(builtin_geometry): Likewise. | 
 | 	(builtin_help): Likewise. | 
 | 	(builtin_hide): Likewise. | 
 | 	(builtin_initrd): Likewise. | 
 | 	(builtin_install): Likewise. | 
 | 	(builtin_kernel): Likewise. | 
 | 	(builtin_module): Likewise. | 
 | 	(builtin_modulenounzip): Likewise. | 
 | 	(builtin_pause): Likewise. | 
 | 	(builtin_read): Likewise. | 
 | 	(builtin_root): Likewise. | 
 | 	(builtin_testload): Likewise. | 
 | 	(builtin_unhide): Likewise. | 
 | 	(builtin_uppermem): Likewise. | 
 |  | 
 | 1999-09-05  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	The internal of the command handling is heavily modified, and | 
 | 	a new command "help" is added. | 
 |  | 
 | 	* stage1/stage1.S: Set the number of sectors for Stage 2 to 110. | 
 | 	* stage1/stage1_lba.S: Likewise. | 
 | 	* stage2/builtins.c: New file. | 
 | 	* stage2/Makefile.am (libgrub_a_SOURCES): Added builtins.c. | 
 | 	(stage2_exec_SOURCES): Likewise. | 
 | 	* stage2/boot.c (load_image): Return kernel_t instead int. | 
 | 	(bsd_boot): Change the type of the first argument to kernel_t. | 
 | 	* stage2/char_io.c (get_cmdline): Do not accept the argument | 
 | 	COMMANDS and accept the argument COMPLETION. | 
 | 	Print completions only if COMPLETION is non-zero. | 
 | 	Print the list of short docs when the command is completed. | 
 | 	* stage2/cmdline.c [GRUB_UTIL]: Do not include apic.h and | 
 | 	smp-imps.h. | 
 | 	(fallback): Deleted. | 
 | 	(password): Likewise. | 
 | 	(debug): Likewise. | 
 | 	(normal_color): Likewise. | 
 | 	(highlight_color): Likewise. | 
 | 	(print_cmdline_message): New function. | 
 | 	(commands): Deleted. | 
 | 	(debug_fs_print_func): Likewise. | 
 | 	(installaddr): Likewise. | 
 | 	(installlist): Likewise. | 
 | 	(installsect): Likewise. | 
 | 	(debug_fs_blocklist_func): Likewise. | 
 | 	(find_command): New function. | 
 | 	(init_cmdline): Initialize the data for the command-line | 
 | 	interface. The function to print the message is moved to | 
 | 	print_cmdline_message. | 
 | 	(enter_cmdline): Rewritten from scratch. Now deal with only the | 
 | 	pure command-line and the function to deal with a menu entry is | 
 | 	moved to run_script. | 
 | 	(run_script): New function. | 
 | 	* stage2/shared.h (PASSWORD_BUF): New macro. | 
 | 	(PASSWORD_BUFLEN): Likewise. | 
 | 	(CMDLINE_BUF): Likewise. | 
 | 	(CMDLINE_BUFLEN): Likewise. | 
 | 	(MENU_BUF): Likewise. | 
 | 	(MENU_BUFLEN): Likewise. | 
 | 	(fallback): Deleted. | 
 | 	(fallback_entry): Declared. | 
 | 	(default_entry): Likewise. | 
 | 	(BUILTIN_CMDLINE): New macro. | 
 | 	(BUILTIN_MENU): Likewise. | 
 | 	(BUILTIN_TITLE): Likewise. | 
 | 	(struct builtin): New tag. | 
 | 	(builtin_table): Declared. | 
 | 	(cmdline_t): Deleted. | 
 | 	(kernel_t): New type. | 
 | 	(kernel_type): Declared. | 
 | 	(grub_timeout): Likewise. | 
 | 	(init_builtins): Likewise. | 
 | 	(init_config): Likewise. | 
 | 	(find_command): Likewise. | 
 | 	(print_cmdline_message): Likewise. | 
 | 	(run_script): Likewise. | 
 | 	[!STAGE1_5] (bsd_boot): Deleted. | 
 | 	[!STAGE1_5] (load_image): Likewise. | 
 | 	[!STAGE1_5] (load_module): Likewise. | 
 | 	[!STAGE1_5] (load_initrd): Likewise. | 
 | 	* stage2/size_test: Set the maximum size of Stage 2 to 56320. | 
 | 	* stage2/stage2.c (grub_timeout): Deleted. | 
 | 	(menu_t): Likewise. | 
 | 	(run_menu): Changed the return type to void. | 
 | 	Use FALLBACK_ENTRY instead of FALLBACK. | 
 | 	Do not check the return value of enter_cmdline. | 
 | 	(run_menu) [GRUB_UTIL]: Call stop instead of returning | 
 | 	MENU_ABORT. | 
 | 	(cmain): Set MENU_ENTRIES to MENU_BUF. | 
 | 	Call init_config instead of clearing the variables directly. | 
 | 	Use CMDLINE_BUF for the command-line buffer instead of the | 
 | 	stack. | 
 | 	Adapted the analysis routine for the configuration file to the | 
 | 	new builtin commands interface. | 
 | 	Run enter_cmdline forever. | 
 | 	If run_menu returns, restart the loop. | 
 |  | 
 | 1999-09-04  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* docs/menu.lst: More meaningful examples. Not using (0x80,0) | 
 | 	notation anymore. | 
 | 	* stage2/stage2.c (run_menu): Erase the entered password before | 
 | 	get_cmdline(). Help on TAB disabled when entering the password. | 
 | 	* stage2/char_io.c (get_cmdline): Restore command-line even if | 
 | 	there is no help string. | 
 | 	* configure.in: --disable-gunzip disables decompression in | 
 | 	stage2. | 
 | 	* stage2/gunzip.c [NO_DECOMPRESSION]: Disable all code if | 
 | 	decompression is disabled. | 
 |  | 
 | 1999-09-03  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/boot.c (load_image): Use PHDR->P_PADDR instead of | 
 | 	PHDR->P_VADDR. Reported by Ramon van Handel <vhandel@chem.vu.nl>. | 
 |  | 
 | 1999-09-03  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/help2man: Upgraded to 1.013. | 
 | 	* docs/grub.8: Regenerated. | 
 |  | 
 | 1999-09-02  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* stage2/cmdline.c (enter_cmdline) [GRUB_UTIL]: Add a space in | 
 | 	the LBA warning	message. | 
 |  | 
 | 1999-09-02  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	The character `=' after a command is now optional. | 
 |  | 
 | 	* stage2/char_io.c (get_cmdline): Search for a space or a equal | 
 | 	character after the first word in CMDLINE when TAB lists | 
 | 	completions, instead of just searching for a eqaul character. | 
 | 	* stage2/cmdline.c (skip_to): Treat the character `=' as a space | 
 | 	if AFTER_EQUAL is non-zero. | 
 | 	(commands): Delete all the equal characters. | 
 | 	* docs/menu.lst: Likewise. | 
 | 	* docs/grub.texi: Likewise. | 
 |  | 
 | 1999-09-01  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/asmstub.c (env_for_exit): New variable. | 
 | 	(grub_stage2): Do a setjmp in doit, and when it returns | 
 | 	non-zero, set STATUS to 1 if ERRNUM is non-zero. | 
 | 	(stop): Call longjmp instead of exit. | 
 |  | 
 | 1999-08-31  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* stage2/boot.c [GRUB_UTIL] (bsd_boot_entry): New function. | 
 | 	(bsd_boot) [GRUB_UTIL]: Set ENTRY_ADDR to BSD_BOOT_ENTRY to fake | 
 | 	the *BSD boot. | 
 |  | 
 | 1999-08-31  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/fsys_fat.c (fat_create_blocklist): Cast FAT_BUF to | 
 | 	unsigned short * instead of unsigned long *. Suggested by Pavel | 
 | 	Roskin. | 
 |  | 
 | 1999-08-30  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Edward Killips <ekillips@triton.net>: | 
 | 	* stage2/cmdline.c (commands): Added hide and unhide. | 
 | 	(enter_cmdline): Likewise. | 
 | 	* stage2/disk_io.c (unhide_partition): New function. | 
 | 	(hide_partition): Likewise. | 
 | 	* stage2/pc_slice.h (PC_SLICE_TYPE_HIDDEN_FLAG): New macro. | 
 |  | 
 | 1999-08-29  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Pavel Roskin <pavel_roskin@geocities.com>: | 
 | 	* stage2/fsys_minix.c (namelen): New variable. | 
 | 	(MINIX_NAME_LEN): Deleted. | 
 | 	(minix_mount): Set NAMELEN to 14 if SUPRTBLOCK->S_MAGIC is | 
 | 	MINIX_SUPER_MAGIC, and set NAMELEN to 30 if it is | 
 | 	MINIX_SUPER_MAGIC2. | 
 | 	(minix_dir): Use NAMELEN instead of MINIX_NAME_LEN. | 
 |  | 
 | 1999-08-29  Pavel Roskin  <pavel_roslin@geocities.com> | 
 |  | 
 | 	* grub/Makefile.am, stage1/Makefile.am, stage2/Makefile.am: | 
 | 	Avoid using variables inclosed in '@' because they cannot be | 
 | 	overridden at the make time. | 
 |  | 
 | 1999-08-29  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* stage2/fsys_fat.c (fat_create_blocklist): Return 1 for the | 
 | 	root directory on FAT12 and FAT16. | 
 |  | 
 | 1999-08-27  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/boot.c (load_image): Accept two arguments, KERNEL and | 
 | 	ARG. And use them instead of CUR_CMDLINE. | 
 | 	(load_module): Accept two arguments, MODULE and ARG. And use | 
 | 	them instead of CUR_CMDLINE. | 
 | 	(load_initrd): Accept one argument, INITRD. And use it instead | 
 | 	of CUR_CMDLINE. | 
 | 	(bsd_boot): Accept one additional argument, ARG. And use it | 
 | 	instead of CUR_CMDLINE. | 
 | 	* stage2/cmdline.c (enter_cmdline): Use MB_CMDLINE instead of | 
 | 	HEAP for the Multiboot command-line buffer. | 
 | 	* stage2/shared.h (MB_CMDLINE_BUF): New macro. | 
 | 	(MB_CMDLINE_BUFLEN): Likewise. | 
 |  | 
 | 1999-08-26  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/Makefile.am [GRUB_MAINT] (grub.8): The argument for the | 
 | 	option --name is changed to "the grub shell". | 
 | 	* docs/grub.8: Regenerated. | 
 | 	* docs/grub.texi: Do not use the name "the Stage 2 emulator" any | 
 | 	more. Use the name "the grub shell" instead. | 
 |  | 
 | 1999-08-26  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Klaus Reichl <klaus.reichl@alcatel.at>: | 
 | 	* stage2/fsys_minix.c: New file. | 
 | 	* stage2/size_test: Added a check for the size of minix_stage1_5. | 
 | 	* stage2/Makefile.am (libgrub_a_SOURCES): Added fsys_minix.c. | 
 | 	(libgrub_a_CFLAGS): Added -DFSYS_MINIX=1. | 
 | 	(nodist_pkgdata_DATA): Added minix_stage1_5. | 
 | 	(noinst_PROGRAMS): Added minix_stage1_5.exec. | 
 | 	(stage2_exec_SOURCES): Added fsys_minix.c. | 
 | 	(minix_stage1_5_exec_SOURCES): New variable. | 
 | 	(minix_stage1_5_exec_CFLAGS): Likewise. | 
 | 	(minix_stage1_5_exec_LDFLAGS): Likewise. | 
 | 	* stage2/pc_slice.h (PC_SLICE_TYPE_MINIX): New macro. | 
 | 	* stage2/disk_io.c (fsys_table) [FSYS_MINIX]: Added minix entry. | 
 | 	* stage2/filesys.h [FSYS_MINIX] (FSYS_MINIX_NUM): Set to 1. | 
 | 	[!FSYS_MINIX] (FSYS_MINIX_NUM): Set to 0. | 
 | 	[!NUM_FSYS] (NUM_FSYS): Added FSYS_MINIX_NUM. | 
 | 	* stage2/shared.h (STAGE2_ID_MINIX_STAGE1_5): New macro. | 
 | 	[STAGE1_5 && FSYS_MINIX] (STAGE2_ID): Set to | 
 | 	STAGE2_ID_MINIX_STAGE1_5. | 
 | 	* grub/Makefile.am (AM_CFLAGS): Added -DFSYS_MINIX=1. | 
 | 	* configure.in (--disable-minix): New option. | 
 |  | 
 | 1999-08-25  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Jochen Hoenicke <jochen@gnu.org>: | 
 | 	* stage2/fat.h (FAT_BPB_FAT_SECTORS_16): New macro. | 
 | 	(FAT_BPB_FAT_SECTORS_32): Likewise. | 
 | 	(FAT_BPB_IS_FAT32): Likewise. | 
 | 	(FAT_BPB_ROOT_DIR_CLUSTER): Likewise. | 
 | 	(FAT_BPB_FAT_SECTORS): If FAT_BPB_FAT_SECTORS_16 returns | 
 | 	a non-zero value, return it. Otherwise return | 
 | 	FAT_BPB_FAT_SECTORS_32. | 
 | 	(FAT_DIRENTRY_FIRST_CLUSTER): Corrected. | 
 | 	* stage2/fsys_fat.c (root_dir): New variable. | 
 | 	(fat_mount): Use the macro IS_PC_SLICE_TYPE_FAT instead of | 
 | 	checking for each fs types directly. | 
 | 	Omit the >64 sectors check. | 
 | 	If the current fs type is FAT32, then set FAT_SIZE to 8 and | 
 | 	get the root from BPB. | 
 | 	(fat_create_blocklist): Use the macro SECTOR_SIZE instead of a | 
 | 	magic number. | 
 | 	(fat_dir): Set MAP to ROOT_DIR instead of -1. | 
 | 	* stage2/pc_slice.h (PC_SLICE_TYPE_FAT32): New macro. | 
 | 	(PC_SLICE_TYPE_FAT32_LBA): Likewise. | 
 | 	(PC_SLICE_TYPE_FAT16_LBA): Likewise. | 
 | 	(IS_PC_SLICE_TYPE_FAT): Likewise. | 
 |  | 
 | 1999-08-25  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/fsys_ffs.c (ffs_mount): Do not shift the fs type | 
 | 	FS_BSDFFS. Reported by Takehiro Suzuki | 
 | 	<takehiro@coral.ocn.ne.jp>. | 
 | 	* stage2/fsys_fat.c (fat_mount): Do not shift the fs type | 
 | 	FS_MSDOS. | 
 |  | 
 | 1999-08-13  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Pavel Roskin's patch that adds new options to disable arbitrary | 
 | 	filesystems is heavily modified and applied. | 
 |  | 
 | 	* configure.in (--disable-ext2fs): New option. | 
 | 	(--disable-fat): Likewise. | 
 | 	(--disable-ffs): Likewise. | 
 | 	(FSYS_CFLAGS): New variable. Set to filesystems the user choose. | 
 | 	* grub/Makefile.am (AM_CFLAGS): Added -DFSYS_EXT2FS=1, | 
 | 	-DFSYS_FAT=1 and -DFSYS_FFS=1. | 
 | 	* stage2/Makefile.am (libgrub_a_CFLAGS): Likewise. | 
 | 	(stage2_exec_CFLAGS): Added @FSYS_CFLAGS@. | 
 | 	* stage2/filesys.h | 
 | 	[!(FSYS_FFS || FSYS_FAT || FSYS_EXT2FS)] (FSYS_FFS): Deleted. | 
 | 	[!(FSYS_FFS || FSYS_FAT || FSYS_EXT2FS)] (FSYS_FAT): Likewise. | 
 | 	[!(FSYS_FFS || FSYS_FAT || FSYS_EXT2FS)] (FSYS_EXT2FS): Likewise. | 
 | 	* stage2/fsys_ext2fs.c [!FSYS_EXT2FS]: Do not define anything. | 
 | 	* stage2/fsys_fat.c [!FSYS_FAT]: Likewise. | 
 | 	* stage2/fsys_ffs.c [!FSYS_FFS]: Likewise. | 
 |  | 
 | 1999-08-12  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage1/stage1_lba.S: Use STAGE1_DRP_ADDR for the address of | 
 | 	drive parameters instead of DRIVE_PARAMETER. | 
 | 	(drive_parameter): Deleted. | 
 | 	* stage1/stage1.h (STAGE1_DRP_ADDR): New macro. | 
 | 	(STAGE1_DRP_SIZE): Likewise. | 
 |  | 
 | 1999-08-11  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/bios.c (get_diskinfo): In LBA mode, set TOTAL_SECTORS | 
 | 	to the low 32bits of DRP.TOTAL_SECTORS instead of the multiple | 
 | 	of CHS. | 
 | 	* stage2/cmdline.c (enter_cmdline) [GRUB_UTIL]: In the command | 
 | 	"geometry", print the device file name instead of CHS/LBA | 
 | 	information. | 
 | 	* stage2/shared.h (device_map): Declared. | 
 | 	* grub/asmstub.c (device_map): Defined as a global variable | 
 | 	instead of a local variable. | 
 |  | 
 | 1999-08-10  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Support the NetBSD and OpenBSD partition slices. | 
 |  | 
 | 	* stage2/pc_slice.h (PC_SLICE_TYPE_BSD): Deleted. | 
 | 	(PC_SLICE_TYPE_FREEBSD): New macro. | 
 | 	(PC_SLICE_TYPE_OPENBSD): Likewise. | 
 | 	(PC_SLICE_TYPE_NETBSD): Likewise. | 
 | 	(IS_PC_SLICE_TYPE_BSD_WITH_FS): Likewise. | 
 | 	(IS_PC_SLICE_TYPE_BSD): Likewise. | 
 | 	* stage2/fsys_ffs.c (ffs_mount): Use the macro | 
 | 	IS_PC_SLICE_TYPE_BSD_WITH_FS instead of checking if | 
 | 	CURRECT_SLICE is equal to the BSD partition type directly. | 
 | 	* stage2/fsys_ext2fs.c (ext2fs_mount): Likewise. | 
 | 	* stage2/fsys_fat.c (fat_mount): Likewise. | 
 | 	* stage2/disk_io.c (check_BSD_parts): Set the low bits of | 
 | 	CURRENT_SLICE to PC_SLICE_TYPE_FREEBSD instead of | 
 | 	PC_SLICE_TYPE_BSD. | 
 | 	(real_open_partition): Use the macro IS_PC_SLICE_TYPE_BSD instead | 
 | 	of checking if CURRENT_SLICE is	equal to the BSD partition type | 
 | 	directly. | 
 |  | 
 | 1999-08-09  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/cmdline.c (commands): Added geometry. | 
 | 	(enter_cmdline): If CUR_HEAP has the string "geometry", print | 
 | 	out the information about a drive that the argument represents. | 
 |  | 
 | 1999-08-09  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/stage2.c (run_menu): Terminate the string PASSWORD | 
 | 	before checking if ENTERED is identical to PASSWORD. Reported | 
 | 	by Mark Lundeberg <aa026@pgfn.bc.ca>. | 
 |  | 
 | 1999-08-08  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/stage2.c (set_line_normal): New function. | 
 | 	(set_line_highlight): Likewise. | 
 | 	(run_menu): Do not call the function set_line directly any | 
 | 	longer, call set_line_normal and set_line_highlight instead. | 
 |  | 
 | 	From Pavel Roskin: | 
 | 	* stage2/stage2.c (run_menu) [GRUB_UTIL]: Quit when pushing the | 
 | 	key `q'. | 
 |  | 
 | 1999-08-05  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* acinclude.m4 (grub_ASM_PREFIX_REQUIREMENT): New function. | 
 | 	* configure.in: Call grub_ASM_PREFIX_REQUIREMENT, and define | 
 | 	ADDR32 and DATA32 based on the result. | 
 | 	* stage2/asm.S: Replace addr32 and data32 prefixes with	ADDR32 | 
 | 	and DATA32 respectively. | 
 |  | 
 | 1999-08-05  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* stage2/boot.c (load_image): Use RAW_ADDR macro when loading | 
 | 	an a.out kernel. | 
 |  | 
 | 1999-08-04  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/asm.S: Make each of the addr32 and data32 prefixes | 
 | 	appear in the same line as it modifies, as the gas manual in | 
 | 	binutils-2.9.5.0.4 says "it must be in the same line". | 
 |  | 
 | 1999-08-04  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* boot.c (load_image): Fix a strcmp test. Reported by Pavel | 
 | 	Roskin <pavel_roskin@geocities.com>. | 
 |  | 
 | 1999-08-03  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From "Dan J. Walters" <djw@cs.utexas.edu>: | 
 | 	* stage2/i386-elf.h (EI_BRAND): New macro. | 
 | 	* stage2/boot.c (load_image): If the kernel is ELF, check if it | 
 | 	is a FreeBSD kernel as well as a Multiboot kernel, and if it is | 
 | 	a FreeBSD kernel, then mask ENTRY_ADDR since FreeBSD requires | 
 | 	that. Likewise, mask MEMADDR. | 
 | 	(bsd_boot): Set the bi_symtab and the bi_esymtab members of BI | 
 | 	only if MBI.FLAGS has the flag MB_INFO_AOUT_SYMS. Otherwise, | 
 | 	clear them. | 
 |  | 
 | 1999-07-30  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Pavel Roskin <pavel_roskin@geocities.com>: | 
 | 	* grub/getopt.c: New file. Copied from texinfo-3.12n. | 
 | 	* grub/getopt1.c: Likewise. | 
 | 	* grub/getopt.h: Likewise. | 
 | 	* grub/Makefile.am (grub_SOURCES): Added getopt.c, getopt1.c and | 
 | 	getopt.h. | 
 | 	* configure.in: Check for string.h and strings.h. | 
 | 	* grub/asmstub.c (grub_stage2): Fix a misordering in the output | 
 | 	format of the inline assembly. | 
 |  | 
 | 1999-07-30  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Pavel Roskin <pavel_roskin@geocities.com>: | 
 | 	* stage2/asm.S (get_diskinfo_standard): If the number of sectors | 
 | 	returned is zero, then return an error code, even if non-carrier. | 
 |  | 
 | 1999-07-15  Gordon Matzigkeit  <gord@zen.fig.org> | 
 |  | 
 | 	* docs/Makefile.am (grub.info): Use an ugly hack to downgrade | 
 |  	grub.texi so that it works with Debian's version of texinfo. | 
 |  | 
 | 1999-07-26  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/bios.c (get_diskinfo): When DRIVE is a floppy drive, | 
 | 	try standard probe routine at first. Reported by Peter Astrand | 
 | 	<altic@lysator.liu.se>. | 
 |  | 
 | 	* grub/main.c (main): Call printf instead of grub_printf. | 
 | 	Reported by Klaus Reichl <a8709182@unet.univie.ac.at>. | 
 |  | 
 | 1999-07-15  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/cmdline.c (skip_to): Don't increase CMDLINE if the | 
 | 	character to which CMDLINE points is NUL. | 
 |  | 
 | 	* stage2/Makefile.am (EXTRA_DIST): Removed smp-imps.c. | 
 | 	(stage2_exec_SOURCES): Added smp-imps.c. | 
 | 	* stage2/cmdline.c [!GRUB_UTIL] (IMPS_DEBUG) (KERNEL_PRINT) | 
 | 	(CMOS_WRITE_BYTE) (CMOS_READ_BYTE) (PHYS_TO_VIRTUAL) | 
 | 	(VIRTUAL_TO_PHYS) (inb) (outb) (cmos_write_byte) | 
 | 	(cmos_read_byte): These are now defined in ... | 
 | 	* stage2/smp-imps.c (IMPS_DEBUG) (KERNEL_PRINT) | 
 | 	(CMOS_WRITE_BYTE) (CMOS_READ_BYTE) (PHYS_TO_VIRTUAL) | 
 | 	(VIRTUAL_TO_PHYS) (inb) (outb) (cmos_write_byte) | 
 | 	(cmos_read_byte): ... here. | 
 | 	* stage2/cmdline.c [!GRUB_UTIL]: Include apic.h and smp-imps.h. | 
 |  | 
 | 1999-07-14  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	The function ungetch is simulated so that the user can use a | 
 | 	buggy curses. | 
 |  | 
 | 	* grub/asmstub.c [HAVE_LIBCURSES] (save_char): New variable. | 
 | 	(getkey) [HAVE_LIBCURSES]: If SAVE_CHAR is not ERR, return | 
 | 	SAVE_CHAR and clear it. | 
 | 	(checkkey) [HAVE_LIBCURSES]: If SAVE_CHAR is not ERR, return | 
 | 	SAVE_CHAR. If C is not ERR, set SAVE_CHAR to C. | 
 |  | 
 | 1999-07-14  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* stage2/char_io.c (get_cmdline) [GRUB_UTIL]: Recognize | 
 | 	backspace when ncurses fails to do this. | 
 |  | 
 | 	* grub/asmstub.c (grub_stage2) [HAVE_LIBCURSES]: Call wtimeout | 
 | 	instead of nodelay. | 
 | 	(getkey) [HAVE_LIBCURSES]: Likewise. | 
 |  | 
 | 1999-07-14  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage1/stage1_lba.S (probe_values): New variable. This is not | 
 | 	used actually, but prevents `install' command from failing | 
 | 	bogusly. | 
 |  | 
 | 1999-07-14  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	All constants in stage1s are moved to stage1.h and renamed | 
 | 	appropriately, and include stage1.h instead. | 
 |  | 
 | 	* grub/Makefile.am (AM_CFLAGS): Added the include path to stage1. | 
 | 	* stage2/Makefile.am (INCLUDES): New variable. | 
 | 	* stage1/Makefile.am (stage1_exec_SOURCES): Added stage1.h | 
 | 	(stage1_lba_exec_SOURCES): Likewise. | 
 | 	* stage1/stage1.h: New file. | 
 | 	* stage1/stage1.S (SIGNATURE): Renamed to ... | 
 | 	* stage1/stage1.h (STAGE1_SIGNATURE): ... this. | 
 | 	* stage1/stage1.S (BPBEND): Renamed to ... | 
 | 	* stage1/stage1.h (STAGE1_BPBEND): ... this. | 
 | 	* stage1/stage1.S (PARTSTART): Renamed to ... | 
 | 	* stage1/stage1.h (STAGE1_PARTSTART): ... this. | 
 | 	* stage1/stage1.S (MINPARMSIZ): Renamed to ... | 
 | 	* stage1/stage1.h (STAGE1_MINPARMSIZE): ... this. | 
 | 	* stage1/stage1.S (LISTSIZ): Renamed to ... | 
 | 	* stage1/stage1.h (STAGE1_LISTSIZE): ... this. | 
 | 	* stage1/stage1.S (REALSTACK): Renamed to ... | 
 | 	* stage1/stage1.h (STAGE1_STACKSEG): ... this. | 
 | 	* stage1/stage1.S (BUFFERSEG): Renamed to ... | 
 | 	* stage1/stage1.h (STAGE1_BUFFERSEG): ... this. | 
 | 	* stage1/stage1.S (BIOS_HD_FLAG): Renamed to ... | 
 | 	* stage1/stage1.h (STAGE1_BIOS_HD_FLAG): ... this. | 
 | 	* stage1/stage1_lba.S (SIGNATURE): Removed. | 
 | 	* stage1/stage1_lba.S (BPBEND): Likewise. | 
 | 	* stage1/stage1_lba.S (PARTSTART): Likewise. | 
 | 	* stage1/stage1_lba.S (MINPARMSIZ): Likewise. | 
 | 	* stage1/stage1_lba.S (LISTSIZ): Likewise. | 
 | 	* stage1/stage1_lba.S (REALSTACK): Likewise. | 
 | 	* stage1/stage1_lba.S (BUFFERSEG): Likewise. | 
 | 	* stage1/stage1_lba.S (BIOS_HD_FLAG): Likewise. | 
 |  | 
 | 	* stage1/stage1.S (stage1_id): New variable. | 
 | 	* stage1/stage1_lba.S (stage1_id): Likewise. | 
 | 	* stage1/stage1.h (COMPAT_VERSION_MINOR): Set to 2. | 
 | 	(STAGE1_ID_OFFSET): New macro. | 
 | 	(STAGE1_ID_CHS): Likewise. | 
 | 	(STAGE1_ID_LBA): Likewise. | 
 | 	* stage2/cmdline.c (enter_cmdline) [!GRUB_UTIL]: When running | 
 | 	the command `install' and STAGE1_FILE is stage1_lba, check if | 
 | 	LBA is supported. | 
 | 	(enter_cmdline) [GRUB_UTIL]: In the same case above, check only | 
 | 	if CURRENT_DRIVE is a hard disk and, if so, print a warning | 
 | 	message, because /sbin/grub cannot detect if LBA is supported or | 
 | 	not. | 
 |  | 
 | 	* stage1/stage1_lba.S: Fix a bug that incorrectly assigns the | 
 | 	segment of buffer address. | 
 |  | 
 | 1999-07-13  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/boot.c (load_image): When removing "vga=...", memmove | 
 | 	the length of VGA_END plus one. | 
 |  | 
 | 1999-07-12  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/bios.c (get_diskinfo): In LBA mode, compute | 
 | 	TOTAL_SECTORS from DRP instead of GEOMETRY. | 
 | 	Clear GEOMETRY->FLAGS first. | 
 |  | 
 | 	* stage2/boot.c (load_image): Fix inverted lines. | 
 |  | 
 | 1999-07-12  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Support Linux video mode selection. | 
 |  | 
 | 	* stage2/shared.h (LINUX_VID_MODE_OFFSET): New macro. | 
 | 	(LINUX_VID_MODE_NORMAL): Likewise. | 
 | 	(LINUX_VID_MODE_EXTENDED): Likewise. | 
 | 	(LINUX_VID_MODE_ASK): Likewise. | 
 | 	[!WITHOUT_LIBC_STUBS] (strlen): Likewise. | 
 | 	(grub_strlen): Declared. | 
 | 	* stage2/boot.c (load_image): Added Linux video mode selection. | 
 | 	* stage2/char_io.c [!STAGE1_5] (grub_strlen): New function. | 
 |  | 
 | 1999-07-12  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/char_io.c (print_error): Print ERRNUM in the format of | 
 | 	%u instead of %d. | 
 | 	(convert_to_ascii) [STAGE1_5]: Eliminate the `x' and `d' | 
 | 	handling code. | 
 | 	(grub_printf): Declare FORMAT as `const char *'. | 
 | 	(grub_printf) [STAGE1_5]: Eliminate the `x' and `d' handling | 
 | 	code. | 
 | 	(get_based_digit): Removed. | 
 | 	(safe_parse_maxint): Remove unnecessary `register' prefixes, | 
 | 	because GCC does better optimization. | 
 | 	Declare DIGIT as `unsigned int' and calculate the value by more | 
 | 	compact instructions. | 
 | 	[!STAGE1_5] (grub_strncat): Declare S2 as `const char *'. | 
 | 	[!STAGE1_5] (grub_strcmp): Declare S1 and S2 as `const char *'. | 
 | 	[!STAGE1_5] (grub_strstr): Likewise. | 
 | 	(grub_memmove): Declare FROM as `const char *'. | 
 | 	The copy code is replaced with inline assembly code stolen from | 
 | 	Linux-2.2.2. | 
 |  | 
 | 	* stage2/shared.h (grub_printf) : Corrected. | 
 | 	(grub_strncat): Likewise. | 
 | 	(grub_memmove): Likewise. | 
 | 	(grub_strstr): Likewise. | 
 | 	(grub_strcmp): Likewise. | 
 |  | 
 | 1999-07-11  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage1/stage1.S (sectors): Change the size to long. | 
 | 	(heads): Likewise. | 
 | 	(sector_start): New variable. | 
 | 	(head_start): Likewise. | 
 | 	(cylinder_start): Likewise. | 
 | 	(final_init): Set %si to SECTORS first, and use %si for memory | 
 | 	references. | 
 | 	Zero %eax so that the high 16 bits are always zero. | 
 | 	Set %di to FIRSTLIST - LISTSIZ instead of FIRSTLIST. | 
 | 	(bootloop): Omit the complex CHS recomputation, and always | 
 | 	compute them from LBA address instead. | 
 | 	Call 32bits div instructions instead of 16bits div instructions. | 
 | 	Update the position where to load data from at the end of this | 
 | 	loop, instead of the beginning. | 
 |  | 
 | 	* stage1/stage1_lba.S: New file. | 
 | 	* stage1/Makefile.am (nodist_pkgdata_DATA): Added stage1_lba. | 
 | 	(LDFLAGS): New variable. | 
 | 	(noinst_PROGRAMS): Added stage1_lba.exec. | 
 | 	(stage1_lba_exec_SOURCES): New variable. | 
 | 	(%: %.exec): New rule. | 
 |  | 
 | 1999-06-28  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/main.c (main): The third argument for strtoul is changed | 
 | 	to 0 in the case where an option is OPT_INSTALL_PARTIION. | 
 | 	Reported by Pavel Roskin <pavel_roskin@geocities.com>. | 
 |  | 
 | 1999-06-27  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/shared.h (STAGE2_STAGE2_ID): New macro. | 
 | 	(STAGE2_VER_STR_OFFS): Set to 0xd. | 
 | 	(STAGE2_ID_STAGE2): New macro. | 
 | 	(STAGE2_ID_FFS_STAGE1_5): Likewise. | 
 | 	(STAGE2_ID_E2FS_STAGE1_5): Likewise. | 
 | 	(STAGE2_ID_FAT_STAGE1_5): Likewise. | 
 | 	(STAGE2_ID) [!STAGE1_5]: Defined as STAGE2_ID_STAGE2. | 
 | 	(STAGE2_ID) [STAGE1_5] [FSYS_FFS]: Defined as | 
 | 	STAGE2_ID_FFS_STAGE1_5. | 
 | 	(STAGE2_ID) [STAGE1_5] [FSYS_EXT2FS]: Defined as | 
 | 	STAGE2_ID_STAGE1_5. | 
 | 	(STAGE2_ID) [STAGE1_5] [FSYS_FAT]: Defined as | 
 | 	STAGE2_ID_FAT_STAGE1_5. | 
 | 	(COMPAT_VERSION_MINOR): Set to 1. | 
 | 	* stage2/asm.S (stage2_id): New variable. | 
 | 	* stage1/stage1.S: Change the minor version to 1. | 
 |  | 
 | 1999-06-27  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* configure.in (CFLAGS): Set to "-g", since only this flag is | 
 | 	always sharable. | 
 | 	(STAGE1_CFLAGS): Set to "-O2", and AC_SUBST this. | 
 | 	(GRUB_CFLAGS): Likewise. | 
 | 	(saved_CFLAGS): New variable for temporarily saving CFLAGS. | 
 | 	(STAGE2_CFLAGS): Set to "-Os" if this option is available, | 
 | 	otherwise set to "-fno-strength-reduce -fno-unroll-loops", | 
 | 	and then AC_SUBST this. | 
 | 	* grub/Makefile.am (AM_CFLAGS): Prepended @GRUB_CFLAGS@. | 
 | 	* stage1/Makefile.am (AM_CFLAGS): Prepended @STAGE1_CFLAGS@. | 
 | 	* stage2/Makefile.am (libgrub_a_CFLAGS): Prepened @GRUB_CFLAGS@. | 
 | 	(STAGE2_COMPILE): Prepended @STAGE2_CFLAGS@. | 
 |  | 
 | 	* stage2/asm.S (chain_stage2): Pass CURRENT_PARTITION and | 
 | 	CURRENT_DRIVE, instead of INSTALL_PARTITION and BOOT_DRIVE. | 
 |  | 
 | 1999-06-27  Pavel Roskin  <pavel_roskin@geocities.com> | 
 |  | 
 | 	* configure.in: set CFLAGS to "-Os -g" for compilers which | 
 | 	understand "-Os" if CFLAGS is not already set. Use | 
 | 	"-O2 -fno-strength-reduce -fno-unroll-loops -g" for older gcc | 
 | 	versions. | 
 |  | 
 | 1999-06-25  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage2/disk_io.c (attempt_mount) [STAGE1_5]: Set FSYS_TYPE to | 
 | 	0, and set it to NUM_FSYS if mount fails. | 
 | 	(real_open_partition): Call rawread in Stage 1.5 as well. | 
 |  | 
 | 1999-06-24  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* Makefile.am (SUBDIRS): Change the order of the directories so | 
 | 	that a directory will be made after the dependent directories | 
 | 	are made. `grub' depends on `stage2', and `docs' depends on | 
 | 	`grub'. Do not make in parallel. | 
 | 	* docs/help2man: Copied from help2man-1.012, which contains my | 
 | 	previous change. | 
 | 	* docs/grub.8: Regenerated. | 
 |  | 
 | 1999-06-24  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Build process is cleaned up. Stage 2 and Stage 1.5's are all | 
 | 	built in the directory stage2. | 
 |  | 
 | 	From Pavel Roskin <pavel_roskin@geocities.com>: | 
 | 	* Makefile.am (SUBDIRS): e2fs_stage1_5, ffs_stage1_5, | 
 | 	fat_stage1_5 and shared_src are removed. | 
 | 	(DISTCLEANFILES): Deleted. | 
 | 	* configure.in: Call AC_PROG_RANLIB. | 
 | 	(AC_INIT): Change the argument to stage2/stage2.c. | 
 | 	(LIBS): Renamed to ... | 
 | 	(GRUB_LIBS): ... this, and call AC_SUBST for this. | 
 | 	Our own rules are removed. | 
 | 	(AC_OUTPUT): e2fs_stage1_5/Makefile, ffs_stage1_5/Makefile, | 
 | 	fat_stage1_5/Makefile and shared_src/Makefile are removed. | 
 | 	* docs/Makefile.am (HELP2MAN): The prefix $(srcdir) is removed. | 
 | 	[GRUB_MAINT]: Prepend $(srcdir) to $(HELP2MAN). | 
 | 	* e2fs_stage1_5/Makefile.am: Deleted. | 
 | 	* e2fs_stage1_5/Makefile.in: Likewise. | 
 | 	* fat_stage1_5/Makefile.am: Likewise. | 
 | 	* fat_stage1_5/Makefile.in: Likewise. | 
 | 	* ffs_stage1_5/Makefile.am: Likewise. | 
 | 	* ffs_stage1_5/Makefile.in: Likewise. | 
 | 	* grub/Makefile.am (CLEANFILES): Likewise. | 
 | 	(COMPILE): Likewise. | 
 | 	(INCLUDES): Likewise. | 
 | 	(DEP_FILES): Likewise. | 
 | 	(@SHARED_SRC_RULES@): Likewise. | 
 | 	(AM_CFLAGS): New variable. | 
 | 	(grub_LDADD): Set to the library libgrub.a and @GRUB_LIBS@. | 
 | 	* shared_src/Makefile.am: Deleted. | 
 | 	* shared_src/Makefile.in: Likewise. | 
 | 	* shared_src/apic.h: Moved to ... | 
 | 	* stage2/apic.h: ... here. | 
 | 	* shared_src/asm.S: Moved to ... | 
 | 	* stage2/asm.S: ... here. | 
 | 	* shared_src/bios.c: Moved to ... | 
 | 	* stage2/bios.c: ... here. | 
 | 	* shared_src/boot.c: Moved to ... | 
 | 	* stage2/boot.c: ... here. | 
 | 	* shared_src/char_io.c: Moved to ... | 
 | 	* stage2/char_io.c: ... here. | 
 | 	* shared_src/cmdline.c: Moved to ... | 
 | 	* stage2/cmdline.c: ... here. | 
 | 	* shared_src/common.c: Moved to ... | 
 | 	* stage2/common.c: ... here. | 
 | 	* shared_src/defs.h: Moved to ... | 
 | 	* stage2/defs.h: ... here. | 
 | 	* shared_src/dir.h: Moved to ... | 
 | 	* stage2/dir.h: ... here. | 
 | 	* shared_src/disk_inode.h: Moved to ... | 
 | 	* stage2/disk_inode.h: ... here. | 
 | 	* shared_src/disk_inode_ffs.h: Moved to ... | 
 | 	* stage2/disk_inode_ffs.h: ... here. | 
 | 	* shared_src/disk_io.c: Moved to ... | 
 | 	* stage2/disk_io.c: ... here. | 
 | 	* shared_src/fat.h: Moved to ... | 
 | 	* stage2/fat.h: ... here. | 
 | 	* shared_src/filesys.h: Moved to ... | 
 | 	* stage2/filesys.h: ... here. | 
 | 	* shared_src/freebsd.h: Moved to ... | 
 | 	* stage2/freebsd.h: ... here. | 
 | 	* shared_src/fs.h: Moved to ... | 
 | 	* stage2/fs.h: ... here. | 
 | 	* shared_src/fsys_ext2fs.c: Moved to ... | 
 | 	* stage2/fsys_ext2fs.c: ... here. | 
 | 	* shared_src/fsys_fat.c: Moved to ... | 
 | 	* stage2/fsys_fat.c: ... here. | 
 | 	* shared_src/fsys_ffs.c: Moved to ... | 
 | 	* stage2/fsys_ffs.c: ... here. | 
 | 	* shared_src/gunzip.c: Moved to ... | 
 | 	* stage2/gunzip.c: ... here. | 
 | 	* shared_src/i386-elf.h: Moved to ... | 
 | 	* stage2/i386-elf.h: ... here. | 
 | 	* shared_src/imgact_aout.h: Moved to ... | 
 | 	* stage2/imgact_aout.h: ... here. | 
 | 	* shared_src/mb_header.h: Moved to ... | 
 | 	* stage2/mb_header.h: ... here. | 
 | 	* shared_src/mb_info.h: Moved to ... | 
 | 	* stage2/mb_info.h: ... here. | 
 | 	* shared_src/pc_slice.h: Moved to ... | 
 | 	* stage2/pc_slice.h: ... here. | 
 | 	* shared_src/shared.h: Moved to ... | 
 | 	* stage2/shared.h: ... here. | 
 | 	* shared_src/smp-imps.c: Moved to ... | 
 | 	* stage2/smp-imps.c: ... here. | 
 | 	* shared_src/smp-imps.h: Moved to ... | 
 | 	* stage2/smp-imps.h: ... here. | 
 | 	* shared_src/stage1_5.c: Moved to ... | 
 | 	* stage2/stage1_5.c: ... here. | 
 | 	* shared_src/stage2.c: Moved to ... | 
 | 	* stage2/stage2.c: ... here. | 
 | 	* stage1/Makefile.am (pkgdata_DATA): Renamed to ... | 
 | 	(nodist_pkgdata_DATA): ... this. | 
 | 	(COMPILE): Deleted. | 
 | 	(AM_CFLAGS): New variable. | 
 | 	* stage2/Makefile.am: Completely rewritten from scratch. | 
 | 	(TESTS): New variable. | 
 | 	(noinst_SCRIPTS): Likewise. | 
 | 	(noinst_HEADERS): Likewise. | 
 | 	(EXTRA_DIST): Set to smp-imps.c and $(noinst_SCRIPTS). | 
 | 	(noinst_LIBRARIES): New variable. | 
 | 	(libgrub_a_SOURCES): Likewise. | 
 | 	(libgrub_a_CFLAGS): Likewise. | 
 | 	(pkgdata_DATA): Deleted. | 
 | 	(nodist_pkgdata_DATA): New variable. | 
 | 	(MOSTLYCLEANFILES): Set to $(noinst_PROGRAMS). | 
 | 	(COMPILE): Deleted. | 
 | 	(INCLUDES): Likewise. | 
 | 	(stage2_exec_LDADD): Likewise. | 
 | 	(DEP_FILES): Likewise. | 
 | 	(stage2_exec_SOURCES): Set to the actual source files instead of | 
 | 	dummy. | 
 | 	(DISTFILES): Deleted. | 
 | 	(stage2.exec): Likewise. | 
 | 	(stage2): Likewise. | 
 | 	(@SHARED_SRC_RULES@): Likewise. | 
 | 	(noinst_PROGRAMS): Set to executable formats of Stage 2 and | 
 | 	Stage 1.5's. | 
 | 	(STAGE2_LINK): New variable. | 
 | 	(STAGE2_COMPILE): Likewise. | 
 | 	(STAGE1_5_LINK): Likewise. | 
 | 	(STAGE1_5_COMPILE): Likewise. | 
 | 	(stage2_exec_CFLAGS): Likewise. | 
 | 	(stage2_exec_LDFLAGS): Likewise. | 
 | 	(e2fs_stage1_5_exec_SOURCES): Likewise. | 
 | 	(e2fs_stage1_5_exec_CFLAGS): Likewise. | 
 | 	(e2fs_stage1_5_exec_LDFLAGS): Likewise. | 
 | 	(fat_stage1_5_exec_SOURCES): Likewise. | 
 | 	(fat_stage1_5_exec_CFLAGS): Likewise. | 
 | 	(fat_stage1_5_exec_LDFLAGS): Likewise. | 
 | 	(ffs_stage1_5_exec_SOURCES): Likewise. | 
 | 	(ffs_stage1_5_exec_CFLAGS): Likewise. | 
 | 	(ffs_stage1_5_exec_LDFLAGS): Likewise. | 
 | 	(% : %.exec): New rule. | 
 |  | 
 | 	* stage2/size_test: New file, for checking for the sizes of | 
 | 	Stage 2 and Stage 1.5's. | 
 |  | 
 | 1999-06-24  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* stage1/stage1.S: Call testb instead of andb when checking if | 
 | 	the drive is a floppy. | 
 |  | 
 | 1999-06-23  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/asmstub.c [__linux__]: Include linux/fs.h for BLKFLSBUF. | 
 | 	(grub_stage2): Call sync before and after calling doit. | 
 | 	(gurb_stage2) [__linux__]: Invalidate buffer caches by BLKFLSBUF | 
 | 	ioctl. | 
 | 	* grub/main.c (main): Call sync first. Suggested by Pavel Roskin | 
 | 	<pavel_roskin@geocities.com>. | 
 |  | 
 | 	* configure.in: Curses libraries are always checked. | 
 | 	(--enable-sbin-grub): Deleted. Now /sbin/grub is always built. | 
 | 	(--enable-maintainer-mode): New option. | 
 | 	* grub/Makefile.am (EXTRA_PROGRAMS): Deleted. | 
 | 	(sbin_PROGRAMS): Just set to grub. | 
 | 	* docs/Makefile.am (man_MANS): New variable. | 
 | 	(HELP2MAN): Likewise. | 
 | 	(noinst_SCRIPTS): Likewise. | 
 | 	(EXTRA_DIST): Add $(man_MANS) and $(noinst_SCRIPTS). | 
 | 	[GRUB_MAINT]: Define the rule for the /sbin/grub manual. | 
 | 	* docs/help2man: Copied from texinfo-3.12i. | 
 | 	(--section): New option to specify which section a manual | 
 | 	belongs	to. | 
 | 	(opt_section): New variable. | 
 | 	(section): Likewise. | 
 | 	* docs/grub.8: Produced by help2man automatically. | 
 |  | 
 | 1999-06-22  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* shared_src/char_io.c (get_cmdline): Add two missing `break's. | 
 |  | 
 | 	* shared_src/cmdline.c (commands): Add quit. | 
 | 	(enter_cmdline): Change the return type	to cmdline_t, and return | 
 | 	CMDLINE_OK if successful, otherwise CMDLINE_ERROR if fail. | 
 | 	(enter_cmdline) [GRUB_UTIL]: Return CMDLINE_ABORT if CUR_HEAP | 
 | 	contains "quit". | 
 | 	[!GRUB_UTIL]: Just print an annotation message. | 
 | 	* shared_src/shared.h (cmdline_t): New enum type. | 
 | 	(enter_cmdline): Change the return type to cmdline_t. | 
 | 	(cmain): Remove ``noreturn'' attribute. | 
 | 	* shared_src/stage2.c (menu_t): New enum type. | 
 | 	(run_menu): Change the return type to menu_t. | 
 | 	If enter_cmdline returns CMDLINE_ABORT, then return MENU_ABORT, | 
 | 	otherwise return MENU_OK. | 
 | 	(cmain): If enter_cmdline aborts, then break the command-line | 
 | 	loop and return. If run_menu aborts, then return. | 
 |  | 
 | 1999-06-22  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* shared_src/Makefile.am (EXTRA_DIST): Add bios.c. Reported by | 
 | 	Pavel Roskin <pavel_roskin@geocities.com>. | 
 |  | 
 | 1999-06-21  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/Makefile.am (html): Deleted. | 
 | 	(txt): Likewise. | 
 | 	(EXTRA_DIST): $(txt) and $(html) are removed. | 
 | 	* docs/boot-proposal.html: Removed. | 
 | 	* docs/errors.html: Likewise. | 
 | 	* docs/faq.html: Likewise. | 
 | 	* docs/grub.html: Likewise. | 
 | 	* docs/install.html: Likewise. | 
 | 	* docs/mem64mb.html: Likewise. | 
 | 	* docs/technical.html: Likewise. | 
 | 	* docs/using.html: Likewise. | 
 | 	* docs/PC_partitioning.txt: Likewise. | 
 | 	* docs/bios_mapping.txt: Likewise. | 
 | 	* docs/commands.txt: Likewise. | 
 | 	* docs/embedded_data.txt: Likewise. | 
 | 	* docs/filesystem.txt: Likewise. | 
 |  | 
 | 1999-06-21  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	From Alexander K. Hudek <alexhudek@home.com>: | 
 | 	* shared_src/disk_io.c (real_open_partition): Check if | 
 | 	CURRENT_SLICE is equal to PC_SLICE_TYPE_WIN95_EXTENDED as well. | 
 | 	* shared_src/pc_slice.c (PC_SLICE_TYPE_WIN95_EXTENDED): New | 
 | 	macro. | 
 | 	* shared_src/bios.c (biosdisk): Clear the reserved member of DAP. | 
 |  | 
 | 1999-06-08  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Color-menu support based on Peter Astrand | 
 | 	<altic@lysator.liu.se>'s patch. | 
 |  | 
 | 	* shared_src/asm.S (nocursor): New function. | 
 | 	* shared_src/cmdline.c (normal_color): New variable. | 
 | 	(highlight_color): Likewise. | 
 | 	(commands): Added "color" command. | 
 | 	(enter_cmdline): Handle the color command. | 
 | 	* shared_src/shared.h (normal_color): Declared. | 
 | 	(highlight_color): Likewise. | 
 | 	[!GRUB_UTIL] (nocursor): Likewise. | 
 | 	* shared_src/stage2.c (print_border) [!GRUB_UTIL]: Color the | 
 | 	menu. | 
 | 	(run_menu) [!GRUB_UTIL]: Call nocursor, and call set_line with | 
 | 	the second argument HIGHLIGHT_COLOR when highlighting a line, | 
 | 	and NORMAL_COLOR when drawing a normal line. | 
 | 	(cmain): Initialize normal_color and highlight_color. Handle | 
 | 	the color command in the same way as the command-line | 
 | 	interface. | 
 |  | 
 | 1999-06-07  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* e2fs_stage1_5/Makefile.am (IMPORTANT_SIZE_LIMIT): Set to 31744. | 
 | 	* fat_stage1_5/Makefile.am (IMPORTANT_SIZE_LIMIT): Likewise. | 
 |  | 
 | 1999-06-06  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	The debug version of Stage 2 is removed. | 
 |  | 
 | 	* shared_src/cmdline.c: The imps code is now defined if GRUB_UTIL | 
 | 	is not defined, but not if DEBUG. | 
 | 	(debug): New global variable. | 
 | 	(commands): All commands are always enabled, and added "debug". | 
 | 	(debug_fs_print_func): Defined unconditionally. | 
 | 	(debug_fs_blocklist_func): If DEBUG is true, then call printf. | 
 | 	(enter_cmdline): Handle "testload", "read", "fstest", | 
 | 	"impsprobe" and "displaymem" unconditionally, and added "debug" | 
 | 	handling. | 
 | 	[GRUB_UTIL]: If a command is impsprobe, just fails. | 
 | 	* shared_src/disk_io.c (devread) [!STAGE1_5]: If DEBUG_FS and | 
 | 	DEBUG are true, then call printf. | 
 | 	* shared_src/asm.S (patch_code): Defined unconditionally. | 
 | 	(patch_code_end): Likewise. | 
 | 	* stage1/stage1.S (firstlist) [!FFS_STAGE1_5]: Increase the | 
 | 	number of sectors to 90, because Stage 2 is larger than 80 | 
 | 	sectors. | 
 | 	* configure.in: The option --enable-debug is removed, and do | 
 | 	not output "stage2_debug/Makefile". | 
 | 	* Makefile.am (SUBDIRS): stage2_debug is removed. | 
 | 	* stage2_debug/Makefile.am: Deleted. | 
 | 	* stage2_debug/Makefile.in: Likewise. | 
 |  | 
 | 1999-06-02  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/main.c (verbose): New variable. | 
 | 	(read_only): Likewise. | 
 | 	(OPT_VERBOSE): New macro. | 
 | 	(OPT_READ_ONLY): Likewise. | 
 | 	(longopts): Add --read-only and --verbose options. | 
 | 	(usage): Add the descriptions about --read-only and --verbose. | 
 | 	(main): Handle OPT_VERBOSE and OPT_READ_ONLY. | 
 | 	If HOLD and VERBOSE are non-zero, then display the message | 
 | 	about how to restart /sbin/grub. | 
 |  | 
 | 	* shared_src/shared.h (verbose) [GRUB_UTIL]: Declared. | 
 | 	(read_only) [GRUB_UTIL]: Likewise. | 
 |  | 
 | 	* grub/asmstub.c (hex_dump): New function. | 
 | 	(biosdisk): In the case where SUBFUNC is | 
 | 	BIOSDISK_WRITE, check for READ_ONLY and call nwrite if | 
 | 	READ_ONLY is zero. If VERBOSE is non-zero, display what GRUB | 
 | 	will try to do. | 
 | 	(get_diskinfo): Open DEVNAME with the mode O_RDWR if READ_ONLY | 
 | 	is zero, and attempt to open DEVNAME with the mode O_RDONLY | 
 | 	regardless of ERRNO if READ_ONLY is non-zero. If VERBOSE is | 
 | 	non-zero, then display the drive DRIVE and the file DEVNAME. | 
 |  | 
 | 	* shared_src/disk_io.c (set_device) [STAGE1_5]: Eliminate | 
 | 	completion code. | 
 |  | 
 | 1999-06-01  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/asmstub.c: Do not use I_AM_VERY_BRAVE any more. | 
 | 	(grub_stage2): Delete first_scsi_disk and add a variable | 
 | 	num_hd, which is used for counting how many drives are | 
 | 	detected. | 
 | 	Initialize the flags member of each element of disks to -1 | 
 | 	instead of 0, and check if it is equal to -1 instead of 0 when | 
 | 	close it. | 
 | 	(get_diskinfo): Treat -1 as non-caching state instead of 0. | 
 |  | 
 | 1999-06-01  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Reported from Klaus Reichl <a8709182@unet.univie.ac.at>: | 
 | 	* docs/.cvsignore: New file. | 
 | 	* shared_src/disk_io.c (print_a_completion): New function | 
 | 	which saves what has been printed to UNIQUE_STRING and printf | 
 | 	it. | 
 | 	(unique) [!STAGE1_5]: New variable. | 
 | 	(unique_string): Likewise. | 
 | 	(print_completions): Use print_a_completion, and improve the | 
 | 	completion facility. | 
 | 	* shared_src/fsys_ext2fs.c (ext2fs_dir) [!STAGE1_5]: Use | 
 | 	print_a_completion instead of just printf. | 
 | 	* shared_src/fsys_ffs.c (ffs_dir) [!STAGE1_5]: Likewise. | 
 | 	* shared_src/fsys_fat.c (fat_dir) [!STAGE1_5]: Likewise. | 
 | 	* shared_src/shared.h (print_a_completion): Declared. | 
 | 	* shared_src/cmdline.c (enter_cmdline): Explicitly cast | 
 | 	int to pointer to char for grub_read. | 
 | 	* grub/asmstub.c (grub_stage2) [__linux__]: Don't use /dev/fd1. | 
 | 	Probe 4 IDE drives instead of 2. | 
 | 	(biosdisk) [__linux__]: Add a prototype for _llseek. | 
 | 	* shared_src/char_io.c (get_cmdline): Update LPOS and LLEN_OLD | 
 | 	when the functon print_completion modifies CMDLINE. | 
 | 	* shared_src/stage2.c (get_line_from_config): Fix LITERAL | 
 | 	handling. | 
 |  | 
 | 1999-05-25  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/asmstub.c (grub_stage2): Fix a memory leak that FP is | 
 | 	not closed. | 
 |  | 
 | 1999-05-25  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/main.c: Replace OPT_DISABLE_CONFIG_FILE and | 
 | 	OPT_DISABLE_CURSES with OPT_NO_CONFIG_FILE and OPT_NO_CURSES | 
 | 	respectively. | 
 | 	(longopts): Rename from "disable-config-file" to | 
 | 	"no-config-file", and from "disable-curses" to "no-curses". | 
 | 	(usage): Use "grub" instead of ARGV[0], read the standards. | 
 | 	Change the help message according to the changes above. | 
 | 	(main): Handle OPT_NO_CONFIG_FILE and OPT_NO_CURSES, instead | 
 | 	of OPT_DISABLE_CONFIG_FILE and OPT_DISABLE_CURSES. | 
 |  | 
 | 1999-05-21  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/TODO: Moved to ... | 
 | 	* TODO: ... here. | 
 | 	* docs/BUGS: Moved to ... | 
 | 	* BUGS: ... here. | 
 | 	* docs/COPYING: Removed. | 
 | 	* docs/Makefile.am (EXTRA_DIST): Get rid of BUGS. | 
 | 	* Makefile.am (EXTRA_DIST): Set to BUGS. | 
 |  | 
 | 1999-05-17  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* acinclude.m4 (grub_ASM_EXT_C): Do not overrun the command | 
 | 	shift. Reported by Pavel Roskin <pabel_roskin@geocities.com>. | 
 |  | 
 | 1999-05-14  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/Makefile.am (info_TEXINFOS): Added multiboot.texi. | 
 | 	* docs/multiboot.texi: New file. From Kunihiro Ishiguro. | 
 |  | 
 | 1999-05-12  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/asmstub.c: Include <errno.h>. Reported by Kunihiro | 
 | 	Ishiguro <kunihiro@zebra.org>. | 
 |  | 
 | 1999-05-11  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Reported by Brian Brunswick <brian@skarpsey.demon.co.uk>: | 
 | 	* shared_src/asm.S (start) [STAGE1_5]: Jump to 0x0:0x2000. | 
 | 	* shared_src/cmdline.c (enter_cmdline): Doesn't check for the jump | 
 | 	address in stage2. We are not paranoid. | 
 | 	Add a missing RAW_ADDR macro. | 
 | 	* shared_src/diskio.c (grub_open): Call setup_part even in stage1.5. | 
 | 	And, include necessary functions that were eliminated incorrectly. | 
 | 	* shared_src/char_io.c [STAGE1_5]: Eliminate unnecessary functions | 
 | 	for stage1.5. | 
 |  | 
 | 	* grub/asmstub.c (nread): New function. Handle EINTR. | 
 | 	(nwrite): Likewise. | 
 | 	(biosdisk) [I_AM_VERY_BRAVE]: When SUBFUNC is BIOSDISK_WRITE, call | 
 | 	nwrite. | 
 |  | 
 | 	Reported by Pavel Roskin <pavel_roskin@geocities.com>: | 
 | 	* shared_src/fsys_ext2fs.c (off_t): Renamed to ... | 
 | 	(linux_off_t): ... this. | 
 | 	* shared_src/defs.h (off_t): Renamed to ... | 
 | 	(mach_off_t): ... this. | 
 | 	* shared_src/fs.h (BBOFF): Use mach_off_t instead of off_t. | 
 | 	(SBOFF): Likewise. | 
 |  | 
 | 	* e2fs_stage1_5/Makefile.am (IMPORTANT_SIZE_LIMIT): Set to 81920. | 
 | 	* fat_stage1_5/Makefile.am (IMPORTANT_SIZE_LIMIT): Likewise. | 
 | 	* ffs_stage1_5/Makefile.am (IMPORTANT_SIZE_LIMIT): Set to 7168. | 
 |  | 
 | 1999-05-03  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	From Pavel Roskin: | 
 | 	* shared_src/shared.h: Redeclare. | 
 |  | 
 | 	* grub/main.c (main): Use strncpy rather than pointer assignment | 
 | 	to set the config file name. | 
 |  | 
 | 	* grub/asmstub.c: Make config_file a static array, not a pointer. | 
 | 	Correct the value of VERSION_STRING. | 
 |  | 
 | 1999-04-10  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* debian/rules (build): Install into /lib instead of /share. | 
 |  | 
 | 1999-05-03  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	Preliminary non-interactive use support. | 
 |  | 
 | 	* grub/main.c (use_config_file): New variable. | 
 | 	(use_curses): Likewise. | 
 | 	(OPT_DISABLE_CONFIG_FILE): New constant. | 
 | 	(OPT_DISABLE_CURSES): Likewise. | 
 | 	(OPT_BATCH): Likewise. | 
 | 	(longopts): Add new options, --disable-config-file, --disable-curses, | 
 | 	and --batch. | 
 | 	(usage): Print the help messages about these new options. | 
 | 	(main): Handle them. | 
 |  | 
 | 	* grub/asmstub.c (grub_stage2) [HAVE_LIBCURSES]: If ! USE_CURSES, | 
 | 	fallback non-curses code. | 
 | 	(stop) [HAVE_LIBCURSES]: Likewise. | 
 | 	(cls) [HAVE_LIBCURSES]: Likewise. | 
 | 	(getxy) [HAVE_LIBCURSES]: Likewise. | 
 | 	(gotoxy) [HAVE_LIBCURSES]: Likewise. | 
 | 	(grub_putchar) [HAVE_LIBCURSES]: Likewise. | 
 | 	(getkey) [HAVE_LIBCURSES]: Likewise. | 
 | 	(checkkey) [HAVE_LIBCURSES]: Likewise. | 
 | 	(set_attrib) [HAVE_LIBCURSES]: Likewise. | 
 |  | 
 | 	* shared_src/cmdline.c (enter_cmdline): Do not use getc, but use | 
 | 	getkey. | 
 |  | 
 | 	* shared_src/stage2.c (cmain) [GRUB_UTIL]: Check if USE_CONFIG_FILE | 
 | 	is non-zero or not. | 
 |  | 
 | 	* shared_src/shared.h (getc): Removed. | 
 | 	(use_config_file) [GRUB_UTIL]: Add the declaration. | 
 | 	(use_curses) [GRUB_UTIL]: Likewise. | 
 |  | 
 | 1999-05-02  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* shared_src/asm.S (biosdisk_standard): Pop %ebp correctly, reported | 
 | 	by Pavel Roskin <pavel_roskin@geocities.com>. | 
 |  | 
 | 1999-04-25  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/menu.lst: Rewritten, so that it contains up-to-date | 
 | 	information and FAQish configuration examples. | 
 |  | 
 | 1999-04-09  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* shared_src/asm.S (get_diskinfo_floppy): Correct the number of heads | 
 | 	and the one of cylinders. | 
 |  | 
 | 1999-04-06  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/asmstub.c (get_diskinfo): Compute the total number of sectors | 
 | 	for DRIVE. | 
 |  | 
 | 	* shared_src/asm.S (get_diskinfo_standard): Clear the data segment | 
 | 	after calling int 0x13. Restore the base pointer after returning | 
 | 	to protected mode. | 
 | 	(get_diskinfo_floppy): Likewise. | 
 |  | 
 | 	* shared_src/bios.c (get_diskinfo): Always set the size of DRP to | 
 | 	the max size of DRP, regardless of the major version of extensions. | 
 |  | 
 | 1999-04-03  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* shared_src/shared.h (struct geometry): Declare total_sectors as | 
 | 	unsigned long instead of unsigned long long, because GRUB represents | 
 | 	a sector number by 4bytes integer, so it doesn't make sense. | 
 |  | 
 | 	* shared_src/bios.c (biosdisk) [!NO_INT13_FALLBACK]: Recompute | 
 | 	TOTAL_SECTORS according to CHS information. | 
 | 	(get_diskinfo) [DEBUG]: Print the geometry of DRIVE. | 
 |  | 
 | 	* shared_src/disk_io.c (real_open_partition): Set PART_LENGTH to | 
 | 	BUF_GEOM.TOTAL_SECTORS. | 
 |  | 
 | 1999-04-01  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* docs/texinfo.tex: Copied from automake-1.4a. | 
 |  | 
 | 	* configure.in (SHARED_SRC_RULES): Add bios into shared sources. | 
 |  | 
 | 	* e2fs_stage1_5/Makefile.am (e2fs_stage1_5_exec_LDADD): Added bios.o. | 
 | 	* fat_stage1_5/Makefile.am (fat_stage1_5_exec_LDADD): Likewise. | 
 | 	* ffs_stage1_5/Makefile.am (ffs_stage1_5_exec_LDADD): Likewise. | 
 | 	* stage2/Makefile.am (stage2_exec_LDADD): Likewise. | 
 | 	* stage2_debug/Makefile.am (stage2_debug_exec_LDADD): Likewise. | 
 |  | 
 | 	* shared_src/Makefile.am (EXTRA_DIST): Added bios.c. | 
 |  | 
 | 	* shared_src/asm.S (biosdisk): Deleted. Now defined in bios.c. | 
 | 	(get_diskinfo): Likewise. | 
 | 	(biosdisk_int13_extensions): New function. | 
 | 	(biosdisk_standard): Likewise. | 
 | 	(check_int13_extensions): Likewise. | 
 | 	(get_diskinfo_int13_extensions): Likewise. | 
 | 	(get_diskinfo_standard): Likewise. | 
 | 	(get_diskinfo_floppy): Likewise. | 
 |  | 
 | 	* shared_src/bios.c: New file. | 
 |  | 
 | 	* shared_src/shared.h (struct geometry): Added new member, | 
 | 	total_sectors. | 
 |  | 
 | 1999-03-28  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* shared_src/stage2.c (print_entries): Correctly assign MENU_ENTRIES | 
 | 	the entries starting from FIRST. | 
 |  | 
 | 1999-03-27  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* Change everything to use memset and memmove instead of bzero and | 
 | 	bcopy.  GNB's Not BSD. | 
 |  | 
 | 	* shared_src/shared.h (grub_memset): Adapted from grub_bzero. | 
 | 	(grub_memmove): Adapted from grub_bcopy. | 
 |  | 
 | 	* grub/asmstub.c (checkkey): Fix unterminated comment. | 
 |  | 
 | 	* shared_src/char_io.c (grub_printf): Renamed from printf. | 
 | 	(grub_tolower): Renamed from tolower. | 
 | 	(grub_isspace): Renamed from isspace. | 
 | 	(grub_strncat): Renamed from strncat. | 
 | 	(grub_strstr): Renamed from strstr. | 
 | 	(grub_bcopy): Renamed from bcopy. | 
 | 	(grub_bzero): Renamed from bzero. | 
 |  | 
 | 	From Bradford Hovinen: | 
 | 	* shared_src/char_io.c (get_cmdline): Add new argument to hide | 
 | 	password entry. | 
 | 	(grub_strcmp): New function. | 
 | 	* shared_src/shared.h (get_cmdline): Fix declaration. | 
 | 	(grub_strcmp): Declare. | 
 | 	* shared_src/stage2.c (run_menu): Use get_cmdline with an | 
 | 	ECHO_CHAR of `*'.  This protects against both brute-force and | 
 | 	sidelong-glance password cracking attempts. | 
 |  | 
 | 	* grub/main.c (usage): Display defaults for stage2 options. | 
 |  | 
 | 	* grub/asmstub.c [WITHOUT_LIBC_STUBS]: Renamed from | 
 | 	NO_REMAPPING_LIBC_FUNCTIONS. | 
 | 	* grub/main.c: Likewise. | 
 | 	* shared_src/shared.h: Likewise. | 
 |  | 
 | 1999-03-27  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/asmstub.c (set_attrib): Use inch and addch, instead of | 
 | 	chgat, because chgat doesn't work as expected. | 
 |  | 
 | 1999-03-26  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* grub/asmstub.c (grub_stage2) [HAVE_LIBCURSES]: Call nodelay. | 
 | 	(checkkey) [HAVE_LIBCURSES]: If getting an input character, then | 
 | 	ungetch it, because checkkey shouldn't modify the input queue. | 
 |  | 
 | 	Use file descriptors instead of file pointers to support | 
 | 	>4GB disks in Linux. | 
 |  | 
 | 	* grub/asmstub.c (grub_stage2): Call close instead of fclose. | 
 | 	(get_diskinfo): Call open instead of fopen. | 
 | 	(biosdisk) [__linux__]: Use _llseek instead of lseek. | 
 | 	(biosdisk): Call read instead of fread. | 
 |  | 
 | 	Add options so that the user can specify the config file. | 
 |  | 
 | 	* grub/Makefile.am (CPPFLAGS): Use -fwritable-strings, because | 
 | 	grub assumes that all strings resides at the data section. | 
 |  | 
 | 	* grub/main.c: Define NO_REMAPPING_LIBC_FUNCTIONS before including | 
 | 	shared.h. | 
 | 	(OPT_CONFIG_FILE): New macro. | 
 | 	(OPT_INSTALL_PARTITION): Likewise. | 
 | 	(OPT_BOOT_DRIVE): Likewise. | 
 | 	(longopts): Add new options, config-file, install-partition and | 
 | 	boot-drive. | 
 | 	(usage): Add the documentation for them. | 
 | 	(main): Add handling code for OPT_CONFIG_FILE, OPT_INSTALL_PARTITION | 
 | 	and OPT_BOOT_DRIVE. | 
 |  | 
 | 	* grub/asmstub.c: Define NO_REMAPPING_LIBC_FUNCTIONS before including | 
 | 	shared.h. | 
 | 	(config_file): Make it char * instead of char []. | 
 | 	(getrtsecs): Return current time instead of 0xff. | 
 |  | 
 | 	* shared_src/shared.h [NO_REMAPPING_LIBC_FUNCTIONS]: Don't define | 
 | 	libc-API-compatible function names. | 
 | 	(config_file): Change the prototype from char [] to char *. | 
 | 	(grub_putchar): Renamed from putchar. | 
 |  | 
 | 1999-03-25  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* char_io.c (get_cmdline): Call cl_setcpos even if lpos == llen, | 
 | 	because ncurses won't update the cursor position. | 
 |  | 
 | 	* grub/main.c (OPT_HOLD): New macro. | 
 | 	(longopts): New option --hold. | 
 | 	(usage): Add the documentation about --hold. | 
 | 	(main): Set hold if --hold is specified. Wait until cleared. | 
 |  | 
 | 1999-03-22  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* shared_src/cmdline.c (enter_cmdline): Check the return value of | 
 | 	set_device in the `root' command. | 
 |  | 
 | 	* shared_src/char_io.c (memcheck): Special-case cur_part_desc and | 
 | 	reenable memory checking. | 
 |  | 
 | 1999-03-21  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* shared_src/boot.c (load_image): Make sure we use the mapped | 
 | 	address before actually writing data to memaddr. | 
 |  | 
 | 	* shared_src/char_io.c (get_cmdline): Only zero-terminate if there | 
 | 	were leading blanks.  This prevents accidental truncation of | 
 | 	commands. | 
 |  | 
 | 	* grub/asmstub.c (get_diskinfo): Cache device geometries as well | 
 | 	as file handles. | 
 | 	Use the Linux HDIO_GETGEO ioctl to make a better guess at hard | 
 | 	disk geometries. | 
 |  | 
 | 1999-03-16  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* shared_src/shared.h (geometry_t): Delete typedef, until we | 
 | 	actually use it. | 
 |  | 
 | 1999-03-16  OKUJI Yoshinori  <okuji@kuicr.kyoto-u.ac.jp> | 
 |  | 
 | 	* shared_src/asm.S (biosdisk): Use a structure for geometry | 
 | 	instead of a integer. | 
 | 	(get_diskinfo): Take a pointer to a geometry structure as the | 
 | 	second argument, and fill a geometry in it. Return 1 if an error | 
 | 	occurs, otherwise return 0. | 
 | 	* shared_src/boot.c (bsd_boot): Compute BIOS geometries for BSD. | 
 | 	* shared_src/cmdline.c (enter_cmdline): Declare dest_geom as | 
 | 	struct geometry. | 
 | 	* shared_src/disk_io.c (buf_geom): Declare as struct geometry. | 
 | 	* shared_src/filesys.h (SECTORS): Deleted. | 
 | 	(HEADS): Likewise. | 
 | 	(CYLINDERS): Likewise. | 
 | 	* shared_src/shared.h (BIOSDISK_FLAG_LBA_EXTENSION): New macro. | 
 | 	(struct geometry): New structure. | 
 | 	(buf_geom): Correct the prototype. | 
 | 	(get_diskinfo): Likewise. | 
 | 	(biosdisk): Likewise. | 
 |  | 
 | 1999-03-15  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* grub/asmstub.c (doit): Nested function to get a clean stack | 
 | 	frame while in grub_stage2. | 
 | 	Use different assembler magic.  From OKUJI Yoshinori. | 
 |  | 
 | 1999-03-14  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* shared_src/stage2.c (run_menu): Use A_REVERSE and A_NORMAL | 
 | 	constants instead of magic numbers. | 
 |  | 
 | 	* shared_src/shared.h (A_REVERSE): Renamed from ATTR_INVERSE for | 
 | 	compatibility with curses. | 
 | 	(A_NORMAL): Renamed from ATTR_NORMAL. | 
 |  | 
 | 	* shared_src/cmdline.c (enter_cmdline): Change prompt to "grub> ". | 
 | 	(enter_cmdline): Only abort the boot if we are in a script. | 
 |  | 
 | 	* shared_src/stage2.c (run_menu): Change prompts to "grub edit> ". | 
 |  | 
 | 	* shared_src/char_io.c (memcheck): Use RAW_ADDR to compute memory | 
 | 	locations. | 
 | 	(get_cmdline): Change the `goto next line' code to account for | 
 | 	newlines deleting to end of line under curses. | 
 |  | 
 | 	* Innumerable cleanups to fix warnings.  There are still too many | 
 | 	typecasts in the wrong places (int variables used to hold | 
 | 	pointers, then casted to a pointer type), but things look better. | 
 |  | 
 | 	* configure.in (CPPFLAGS): Bump up GCC warnings to -Wall | 
 | 	-Wmissing-prototypes -Wunused. | 
 |  | 
 | 	* shared_src/shared.h: Delete stupid declarations, and totally | 
 | 	rearrange for clarity. | 
 | 	(inb, outb): Move to cmdline.c, since it's only used there. | 
 | 	(print_possibilities, fsmax, fsys_table): Move definitions to | 
 | 	disk_io.c. | 
 |  | 
 | 	* grub/asmstub.c: Fill in more stubs. | 
 |  | 
 | 1999-03-13  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* shared_src/gunzip.c (border): Rename to bitorder, to resolve | 
 | 	clash with curses. | 
 | 	* shared_src/stage2.c (timeout): Rename to grub_timeout. | 
 |  | 
 | 	* configure.in: Check for curses libraries for use with | 
 | 	/sbin/grub. | 
 |  | 
 | 	* shared_src/shared.h (KEY_DELETE): Rename to KEY_DC, for | 
 | 	compatibility with curses. | 
 | 	(KEY_INSERT): Rename to KEY_IC. | 
 | 	(KEY_PGDN): Rename to KEY_NPAGE. | 
 | 	(KEY_PGUP): Rename to KEY_PPAGE. | 
 |  | 
 | 	* shared_src/asm.S (asm_getkey): Renamed to getkey. | 
 |  | 
 | 	* shared_src/char_io.c (getkey): Delete, because it's useless. | 
 |  | 
 | 	* shared_src/shared.h: Resolve name clashes with libc by renaming | 
 | 	overlapping functions to have grub_ prefixes, then defining | 
 | 	macros. | 
 |  | 
 | 	* grub/asmstub.c (start_stage2): Make some assertions about our | 
 | 	scratch memory area. | 
 |  | 
 | 	* shared_src/shared.h (end): Delete declaration. | 
 | 	(RAW_ADDR, RAW_SEG): Macros to redirect /sbin/grub memory requests | 
 | 	through grub_scratch_mem. | 
 |  | 
 | 	* grub/asmstub.c (get_mem_map): Implement, simulating 4MB | 
 | 	contiguous memory. | 
 | 	(get_code_end): Implement, simulating with a malloced area. | 
 | 	grub/asmstub.c (start_stage2): Initialize grub_scratch_mem. | 
 |  | 
 | 	* shared_src/asm.S (get_mem_map): Some BIOSes expect the high word | 
 | 	of %eax to be zero. | 
 | 	(get_code_end): Move this from common.c so that we can stub it out | 
 | 	in the simulator. | 
 |  | 
 | 	* debian/rules: Make sure info files end up in /usr/info, not | 
 | 	/info. | 
 |  | 
 | 1999-03-10  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* shared_src/asm.S (biosdisk): Make LBA mode work correctly.  From | 
 | 	OKUJI Yoshinori. | 
 | 	Unconditionally define NO_INT13_FALLBACK until we release GRUB | 
 | 	0.6.  This will help debug any problems with the LBA support until | 
 | 	then. | 
 |  | 
 | 1999-03-09  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* shared_src/asm.S (biosdisk): Compute location of | 
 | 	disk_address_packet correctly.  From OKUJI Yoshinori. | 
 |  | 
 | 1999-03-08  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* docs/grub.texi: New Texinfo documentation. | 
 |  | 
 | 	* shared_src/disk_io.c (set_device): First stab at interpreting | 
 | 	Mach-style partition naming. | 
 |  | 
 | 	* shared_src/stage2.c (run_menu): Don't say it was a failure if | 
 | 	enter_cmdline returns nonzero... just wait for a key. | 
 |  | 
 | 	* shared_src/cmdline.c (enter_cmdline): Return nonzero, and avoid | 
 | 	the fallback command if we did an install. | 
 |  | 
 | 	* shared_src/asm.S (_start): New explicit symbol to supress | 
 | 	warnings. | 
 |  | 
 | 	* e2fs_stage1_5/Makefile.am (NO_FANCY_STUFF): Renamed to STAGE1_5, | 
 | 	since that describes this conditional more accurately. | 
 | 	* fat_stage1_5/Makefile.am: Likewise. | 
 | 	* ffs_stage1_5/Makefile.am: Likewise. | 
 | 	* shared_src/asm.S: Likewise. | 
 | 	* shared_src/char_io.c: Likewise. | 
 | 	* shared_src/common.c: Likewise. | 
 | 	* shared_src/disk_io.c: Likewise. | 
 | 	* shared_src/fsys_ext2fs.c: Likewise. | 
 | 	* shared_src/fsys_ffs.c: Likewise. | 
 | 	* shared_src/shared.h: Likewise. | 
 |  | 
 | 1999-03-07  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* configure.in (SHARED_SRC_RULES): Automatically generate | 
 | 	Makefile dependencies for files in shared_src. | 
 | 	e2fs_stage1_5/Makefile.am: Use them. | 
 | 	fat_stage1_5/Makefile.am: Likewise. | 
 | 	ffs_stage1_5/Makefile.am: Likewise. | 
 | 	grub/Makefile.am: Likewise. | 
 | 	stage2/Makefile.am: Likewise. | 
 | 	stage2_debug/Makefile.am: Likewise. | 
 |  | 
 | 	* shared_src/disk_inode.h: Fix typo: i_ic shouldn't be defined. | 
 |  | 
 | 	* shared_src/fsys_ffs.c (block_map): Make static, since this | 
 | 	function isn't used outside of its defining file. | 
 |  | 
 | 	* shared_src/disk_io.c [NO_FANCY_STUFF]: Eliminate a whole bunch | 
 | 	more functions from the stage1.5.  From OKUJI Yoshinori. | 
 | 	* shared_src/fsys_ffs.c: Likewise. | 
 | 	* shared_src/char_io.c: Likewise. | 
 |  | 
 | 1999-03-05  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* shared_src/char_io.c (getkey): Don't set BUF_DRIVE to -1. | 
 | 	BUF_DRIVE has nothing at all to do with getkey. | 
 |  | 
 | 	* shared_src/common.c (err_list): Change description of ERR_GEOM | 
 | 	to be more informative. | 
 |  | 
 | 	* Makefile.am (configure): Depend on debian/changelog. | 
 |  | 
 | 	* configure.in (host_cpu): Make all fully i386-compatible CPUs be | 
 | 	identified as i386. | 
 | 	(AM_INIT_AUTOMAKE): Fetch values for PACKAGE and VERSION from | 
 | 	debian/changelog, so that we only have one file to update. | 
 |  | 
 | 	* shared_src/asm.S (get_diskinfo): Fix a few bit-twiddling bugs in | 
 | 	the BIOS extension detection code. | 
 | 	(biosdisk) [AWARD_INT13_EXTENSIONS]: Preliminary implementation | 
 | 	of Award's encoding of cylinder bits 10 and 11. | 
 | 	(biosdisk) [NO_INT13_FALLBACK]: If defined, don't use the standard | 
 | 	disk interface if the extended interface fails. | 
 |  | 
 | 	* configure.in: Make sure $(host_cpu) and $(host_vendor) are | 
 | 	substituted into the Makefile. | 
 |  | 
 | 	* e2fs_stage1_5/Makefile.am (pkgdatadir): Install files in | 
 | 	$(datadir)/grub/$(host_cpu)-$(host_vendor). | 
 | 	* fat_stage1_5/Makefile.am: Likewise. | 
 | 	* ffs_stage1_5/Makefile.am: Likewise. | 
 | 	* stage1/Makefile.am: Likewise. | 
 | 	* stage2/Makefile.am: Likewise. | 
 | 	* stage2_debug/Makefile.am: Likewise. | 
 |  | 
 | 1999-03-03  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* shared_src/asm.S (biosdisk): Use LBA mode if high nibble of | 
 | 	GEOMETRY is nonzero. | 
 | 	(get_diskinfo): Set high nibble of GEOMETRY (0xf0000000) to 1 if | 
 | 	LBA mode is detected. | 
 |  | 
 | 1999-03-02  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* shared_src/disk_io.c (make_saved_active): Use BIOSDISK_READ and | 
 | 	BIOSDISK_WRITE. | 
 |  | 
 | 	* shared_src/cmdline.c (enter_cmdline): Use BIOSDISK_WRITE. | 
 |  | 
 | 	* shared_src/shared.h (BIOSDISK_SUBFUNC_READ, | 
 | 	BIOSDISK_SUBFUNC_WRITE): Delete constants. | 
 |  | 
 | 	* shared_src/asm.S (biosdisk): Change subfunc argument to be | 
 | 	read=0, write=1. | 
 |  | 
 | 	* configure.in: Drop redundant AC_PROG_INSTALL.  From OKUJI | 
 | 	Yoshinori. | 
 |  | 
 | 1999-03-01  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* debian/rules (binary-arch): Properly install README.debian. | 
 |  | 
 | 	* acinclude.m4 (grub_OBJCOPY_ABSOLUTE): Don't forget to move the | 
 | 	old binary out of the way before reentering the loop. | 
 | 	(grub_ASM_ADDR32): Delete conftest files after running the test. | 
 |  | 
 | 	* debian/rules (binary-arch): Remove empty /sbin directory until | 
 | 	/sbin/grub is installed.  Use $(DESTDIR) instead of $(prefix) to | 
 | 	install files. | 
 |  | 
 | 	* shared_src/asm.S (version_string): Set the version string from | 
 | 	the VERSION specified in configure.in. | 
 |  | 
 | 	* Change all Makefiles into Makefile.ams.  Many major build | 
 | 	environment changes to get Automake/Autoconf working nicely. | 
 |  | 
 | 1999-02-28  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* NEWS: Moved from docs/NEWS. | 
 |  | 
 | 	* configure.in, acinclude.m4: New files for Autoconf.  From OKUJI | 
 | 	Yoshinori. | 
 |  | 
 | 	* AUTHORS, INSTALL: New files. | 
 |  | 
 | 1999-02-24  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* stage1/stage1.S (after_BPB): Do a hard disk probe first, so that | 
 | 	we can work with IDE floppies (like the LS-120). | 
 |  | 
 | 	* Run GNU Indent on */*.[ch]. | 
 |  | 
 | 1999-02-21  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* debian: Add to the distribution, since we maintain the GRUB | 
 | 	Debian package ourselves. | 
 |  | 
 | 	* grub/asmstub.c: New file to implement stubbed assembly functions | 
 | 	under Unix. | 
 |  | 
 | 	* stage1/Makefile: Delete spurious dependencies on Makefile. | 
 | 	* stage2/Makefile: Likewise. | 
 | 	* stage2_debug/Makefile: Likewise. | 
 | 	* grub/Makefile: Likewise. | 
 |  | 
 | 	* shared_src/fsys_ext2fs.c (ext2fs_dir): Follow symbolic links | 
 | 	rather than giving an error. | 
 |  | 
 | 	* shared_src/common.c (err_list): Use labeled elements to | 
 | 	associate messages with error codes. | 
 | 	* shared_src/shared.h: Make error codes into an enumerated type. | 
 |  | 
 | 	* shared_src/common.c (err_list): Add ERR_SYMLINK_LOOP. | 
 | 	* shared_src/shared.h: Likewise. | 
 |  | 
 | 	* shared_src/char_io.c (bcopy): Don't make any assumptions about | 
 | 	the length of an unsigned long. | 
 |  | 
 | 	* grub/Makefile: Treat CFLAGS, CPPFLAGS, LDFLAGS according to | 
 | 	GNU standards. | 
 | 	* stage2/Makefile: Likewise. | 
 | 	* e2fs_stage1_5/Makefile: Likewise. | 
 | 	* fat_stage1_5/Makefile: Likewise. | 
 | 	* ffs_stage1_5/Makefile: Likewise. | 
 |  | 
 | 1999-02-20  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* docs/index.html: Rename to grub.html, so that we don't hide | 
 | 	files in this directory from a web browser. | 
 |  | 
 | 1999-02-15  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* Makefile.end (PROGS): Add grub. | 
 |  | 
 | 	* grub/main.c: New file. | 
 |  | 
 | 	* grub/Makefile: New directory to contain the stage2 Unix program. | 
 |  | 
 | 	* shared_src/cmdline.c: Use substring. | 
 | 	* shared_src/fsys_ext2fs.c: Likewise. | 
 | 	* shared_src/fsys_fat.c: Likewise. | 
 | 	* shared_src/fsys_ffs.c: Likewise. | 
 | 	* shared_src/stage2.c: Likewise. | 
 |  | 
 | 	* shared_src/shared.h: Delete strcmp, declare substring. | 
 |  | 
 | 	* shared_src/char_io.c (strcmp): Rename to `substring', because | 
 | 	this function doesn't behave the same as libc's strcmp. | 
 |  | 
 | 1999-02-14  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* shared_src/shared.h: (addr32, data32): Delete definitions. | 
 |  | 
 | 	* stage1/stage1.S: Modify to use GAS's new .code16 semantics. | 
 | 	shared_src/asm.S: Likewise. | 
 |  | 
 | 	* configure: Test to see if the `addr32' instruction is supported. | 
 | 	Ian Lance Taylor says that GAS's interpretation of `.code16' has | 
 | 	changed.  Older versions always generated 32-bit code, but | 
 | 	implicitly inserted addr32 and data32 when .code16 was given. | 
 | 	Newer versions generate 16-bit code, and require manual addr32 and | 
 | 	data32 overrides. | 
 |  | 
 | 	* shared_src/shared.h: Add some assertions to check that buffer | 
 | 	addresses are properly defined. | 
 |  | 
 | 1999-02-12  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* shared_src/stage2.c (run_menu): Pause if we failed to boot both | 
 | 	the default and fallback entries. | 
 |  | 
 | 	* configure: Check to make sure that GAS actually honors .code16 | 
 | 	directives. | 
 |  | 
 | 1999-02-02  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* shared_src/asm.S: Fix typo that called interrupt 0xd (decimal | 
 | 	13) instead of 0x13. | 
 |  | 
 | 1999-01-31  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* e2fs_stage1_5/Makefile: Avoid gratuitous dependencies on | 
 | 	Makefile. | 
 | 	* fat_stage1_5/Makefile: Likewise. | 
 | 	* ffs_stage1_5/Makefile: Likewise. | 
 |  | 
 | 	* Makefile.end (PROGS): Add e2fs_stage1_5, fat_stage1_5, and | 
 | 	grubinst. | 
 | 	(distclean): New GNU standard rule. | 
 |  | 
 | 1998-10-23  Gordon Matzigkeit  <gord@trick.fig.org> | 
 |  | 
 | 	* configure: Accept `--host' as a synonym for `--target', and | 
 | 	accept a non-optional argument as the target name.  Join the | 
 | 	prefix to the tool name with a hyphen. | 
 |  | 
 | 	* shared_src/disk_io.c (print_fsys_type): Always print the | 
 | 	partition type. | 
 |  | 
 | 	* shared_src/stage2.c (run_menu): Check to make sure that the | 
 | 	fallback entry is nonnegative. | 
 | 	(run_menu): For consistency, use `e' rather than enter to edit the | 
 | 	command entry. |