diff --git a/ChangeLog b/ChangeLog index a5ad08af4..b31b96c8a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2006-08-19 Robert Millan + + * util/i386/pc/grub-install.in: Skip menu.lst when removing + /boot/grub/*.lst. + * util/i386/pc/getroot.c: Don't recurse into dotdirs (e.g. ".static"). + * util/i386/pc/grub-mkdevicemap.c: Make sure the floppy device exists + before adding it to device.map. + 2006-08-15 Johan Rydberg * genmk.rb: Let GCC generate dependenceies the first time it diff --git a/util/i386/pc/getroot.c b/util/i386/pc/getroot.c index a4a1426fe..e72c156e9 100644 --- a/util/i386/pc/getroot.c +++ b/util/i386/pc/getroot.c @@ -160,9 +160,11 @@ find_root_device (const char *dir, dev_t dev) /* Don't follow symbolic links. */ continue; - if (S_ISDIR (st.st_mode)) + if (S_ISDIR (st.st_mode) && ent->d_name[0] != '.') { - /* Find it recursively. */ + /* Find it recursively, but avoid dotdirs (like ".static") since they + could contain duplicates, which would later break the + pathname-based check */ char *res; res = find_root_device (ent->d_name, dev); diff --git a/util/i386/pc/grub-install.in b/util/i386/pc/grub-install.in index 418ec7fed..072bf585b 100644 --- a/util/i386/pc/grub-install.in +++ b/util/i386/pc/grub-install.in @@ -198,7 +198,7 @@ fi # Copy the GRUB images to the GRUB directory. for file in ${grubdir}/*.mod ${grubdir}/*.lst ${grubdir}/*.img; do - if test -f $file; then + if test -f $file && [ "`basename $file`" != menu.lst ]; then rm -f $file || exit 1 fi done @@ -206,7 +206,7 @@ for file in ${pkglibdir}/*.mod ${pkglibdir}/*.lst ${pkglibdir}/*.img; do cp -f $file ${grubdir} || exit 1 done -# Create the core image. First, auto-detect the filesystme module. +# Create the core image. First, auto-detect the filesystem module. fs_module=`$grub_probefs --device-map=${device_map} ${grubdir}` if test "x$fs_module" = x -a "x$modules" = x; then echo "Auto-detection of a filesystem module failed." 1>&2 diff --git a/util/i386/pc/grub-mkdevicemap.c b/util/i386/pc/grub-mkdevicemap.c index 527fbf18d..1c4ca86bd 100644 --- a/util/i386/pc/grub-mkdevicemap.c +++ b/util/i386/pc/grub-mkdevicemap.c @@ -378,8 +378,11 @@ make_device_map (const char *device_map, int floppy_disks) for (i = 0; i < floppy_disks; i++) { char name[16]; + struct stat st; get_floppy_disk_name (name, i); + if (stat (name, &st) < 0) + break; /* In floppies, write the map, whether check_device succeeds or not, because the user just may not insert floppies. */ if (fp)