Hello!
config_file was defined as a pointer in shared.h and as an array in asm.S
This caused a failure while loading the menu, except in /sbin/grub, which
allocated config_file separately.
Patch attached. It also corrects version_string for /sbin/grub
Now GRUB works for me!
Pavel Roskin
diff -ur grub.orig/grub/asmstub.c grub/grub/asmstub.c
--- grub.orig/grub/asmstub.c Sun May 2 23:53:37 1999
+++ grub/grub/asmstub.c Mon May 3 13:07:35 1999
@@ -60,8 +60,8 @@
unsigned long install_partition = 0x20000;
unsigned long boot_drive = 0;
-char version_string[] = "0.5";
-char *config_file = "/boot/grub/menu.lst";
+char version_string[] = VERSION;
+char config_file[128] = "/boot/grub/menu.lst";
/* Emulation requirements. */
char *grub_scratch_mem = 0;
diff -ur grub.orig/grub/main.c grub/grub/main.c
--- grub.orig/grub/main.c Sun Mar 28 01:24:26 1999
+++ grub/grub/main.c Mon May 3 13:09:41 1999
@@ -119,7 +119,7 @@
break;
case OPT_CONFIG_FILE:
- config_file = strdup (optarg);
+ strcpy(config_file, optarg);
break;
case OPT_INSTALL_PARTITION:
diff -ur grub.orig/shared_src/shared.h grub/shared_src/shared.h
--- grub.orig/shared_src/shared.h Sat Apr 24 11:23:16 1999
+++ grub/shared_src/shared.h Mon May 3 13:04:23 1999
@@ -280,7 +280,7 @@
extern unsigned long install_partition;
extern unsigned long boot_drive;
extern char version_string[];
-extern char *config_file;
+extern char config_file[];
#ifndef STAGE1_5
/* GUI interface variables. */