mirror of
https://git.savannah.gnu.org/git/grub.git
synced 2026-10-23 15:49:23 +00:00
add hide and unhide commands. add additional minix fs support. some code cleanups.
This commit is contained in:
1 parent
434d8607cc
commit
83b3d5eee0
17 files changed
+249
-79
No files matched your search
+3
-3
@@ -16,7 +16,7 @@ noinst_LIBRARIES = libgrub.a
|
||||
libgrub_a_SOURCES = boot.c common.c char_io.c cmdline.c disk_io.c \
|
||||
gunzip.c fsys_ffs.c fsys_ext2fs.c fsys_fat.c fsys_minix.c \
|
||||
stage2.c
|
||||
libgrub_a_CFLAGS = @GRUB_CFLAGS@ -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 \
|
||||
libgrub_a_CFLAGS = $(GRUB_CFLAGS) -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 \
|
||||
-DFSYS_FAT=1 -DFSYS_FFS=1 -DFSYS_MINIX=1 -fwritable-strings
|
||||
|
||||
# Stage 2 and Stage 1.5's.
|
||||
@@ -29,7 +29,7 @@ noinst_PROGRAMS = stage2.exec e2fs_stage1_5.exec fat_stage1_5.exec \
|
||||
MOSTLYCLEANFILES = $(noinst_PROGRAMS)
|
||||
|
||||
STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000
|
||||
STAGE2_COMPILE = @STAGE2_CFLAGS@ -fno-builtin -nostdinc
|
||||
STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc
|
||||
|
||||
STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000
|
||||
STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1 \
|
||||
@@ -40,7 +40,7 @@ STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1 \
|
||||
stage2_exec_SOURCES = asm.S boot.c common.c char_io.c cmdline.c \
|
||||
disk_io.c gunzip.c stage2.c bios.c smp-imps.c fsys_ext2fs.c \
|
||||
fsys_fat.c fsys_ffs.c fsys_minix.c
|
||||
stage2_exec_CFLAGS = $(STAGE2_COMPILE) @FSYS_CFLAGS@
|
||||
stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
|
||||
stage2_exec_LDFLAGS = $(STAGE2_LINK)
|
||||
|
||||
# For e2fs_stage1_5 target.
|
||||
|
||||
+3
-3
@@ -98,7 +98,7 @@ libgrub_a_SOURCES = boot.c common.c char_io.c cmdline.c disk_io.c \
|
||||
gunzip.c fsys_ffs.c fsys_ext2fs.c fsys_fat.c fsys_minix.c \
|
||||
stage2.c
|
||||
|
||||
libgrub_a_CFLAGS = @GRUB_CFLAGS@ -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 \
|
||||
libgrub_a_CFLAGS = $(GRUB_CFLAGS) -DGRUB_UTIL=1 -DFSYS_EXT2FS=1 \
|
||||
-DFSYS_FAT=1 -DFSYS_FFS=1 -DFSYS_MINIX=1 -fwritable-strings
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ noinst_PROGRAMS = stage2.exec e2fs_stage1_5.exec fat_stage1_5.exec \
|
||||
MOSTLYCLEANFILES = $(noinst_PROGRAMS)
|
||||
|
||||
STAGE2_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,8000
|
||||
STAGE2_COMPILE = @STAGE2_CFLAGS@ -fno-builtin -nostdinc
|
||||
STAGE2_COMPILE = $(STAGE2_CFLAGS) -fno-builtin -nostdinc
|
||||
|
||||
STAGE1_5_LINK = -nostdlib -Wl,-N -Wl,-Ttext -Wl,2000
|
||||
STAGE1_5_COMPILE = $(STAGE2_COMPILE) -DNO_DECOMPRESSION=1 -DSTAGE1_5=1 \
|
||||
@@ -127,7 +127,7 @@ stage2_exec_SOURCES = asm.S boot.c common.c char_io.c cmdline.c \
|
||||
disk_io.c gunzip.c stage2.c bios.c smp-imps.c fsys_ext2fs.c \
|
||||
fsys_fat.c fsys_ffs.c fsys_minix.c
|
||||
|
||||
stage2_exec_CFLAGS = $(STAGE2_COMPILE) @FSYS_CFLAGS@
|
||||
stage2_exec_CFLAGS = $(STAGE2_COMPILE) $(FSYS_CFLAGS)
|
||||
stage2_exec_LDFLAGS = $(STAGE2_LINK)
|
||||
|
||||
# For e2fs_stage1_5 target.
|
||||
|
||||
+17
-17
@@ -39,7 +39,7 @@ static struct mod_list mll[99];
|
||||
*/
|
||||
|
||||
int
|
||||
load_image (void)
|
||||
load_image (char *kernel, char *arg)
|
||||
{
|
||||
int len, i, exec_type = 0, align_4k = 1, type = 0;
|
||||
unsigned long flags = 0, text_len = 0, data_len = 0, bss_len = 0;
|
||||
@@ -59,7 +59,7 @@ load_image (void)
|
||||
buffer by default */
|
||||
pu.aout = (struct exec *) buffer;
|
||||
|
||||
if (!grub_open (cur_cmdline))
|
||||
if (!grub_open (kernel))
|
||||
return 0;
|
||||
|
||||
if (!(len = grub_read (buffer, MULTIBOOT_SEARCH)) || len < 32)
|
||||
@@ -213,7 +213,7 @@ load_image (void)
|
||||
char *vga;
|
||||
|
||||
/* Find the substring "vga=". */
|
||||
vga = grub_strstr (cur_cmdline, "vga=");
|
||||
vga = grub_strstr (arg, "vga=");
|
||||
if (vga)
|
||||
{
|
||||
char *value = vga + 4;
|
||||
@@ -250,7 +250,7 @@ load_image (void)
|
||||
|
||||
/* copy command-line plus memory hack to staging area */
|
||||
{
|
||||
char *src = cur_cmdline;
|
||||
char *src = arg;
|
||||
char *dest = (char *) (CL_MY_LOCATION + 4);
|
||||
|
||||
memmove ((char *) CL_MY_LOCATION, "mem=", 4);
|
||||
@@ -290,7 +290,7 @@ load_image (void)
|
||||
return 0;
|
||||
|
||||
/* fill the multiboot info structure */
|
||||
mbi.cmdline = (int) cur_cmdline;
|
||||
mbi.cmdline = (int) arg;
|
||||
mbi.mods_count = 0;
|
||||
mbi.mods_addr = 0;
|
||||
mbi.boot_device = (saved_drive << 24) | saved_partition;
|
||||
@@ -473,14 +473,14 @@ load_image (void)
|
||||
}
|
||||
|
||||
int
|
||||
load_module (void)
|
||||
load_module (char *module, char *arg)
|
||||
{
|
||||
int len;
|
||||
|
||||
/* if we are supposed to load on 4K boundaries */
|
||||
cur_addr = (cur_addr + 0xFFF) & 0xFFFFF000;
|
||||
|
||||
if (!grub_open (cur_cmdline) || !(len = grub_read ((char *) cur_addr, -1)))
|
||||
if (!grub_open (module) || !(len = grub_read ((char *) cur_addr, -1)))
|
||||
return 0;
|
||||
|
||||
printf (" [Multiboot-module @ 0x%x, 0x%x bytes]\n", cur_addr, len);
|
||||
@@ -489,7 +489,7 @@ load_module (void)
|
||||
mbi.flags |= MB_INFO_MODS;
|
||||
mbi.mods_addr = (int) mll;
|
||||
|
||||
mll[mbi.mods_count].cmdline = (int) cur_cmdline;
|
||||
mll[mbi.mods_count].cmdline = (int) arg;
|
||||
mll[mbi.mods_count].mod_start = cur_addr;
|
||||
cur_addr += len;
|
||||
mll[mbi.mods_count].mod_end = cur_addr;
|
||||
@@ -502,12 +502,12 @@ load_module (void)
|
||||
}
|
||||
|
||||
int
|
||||
load_initrd (void)
|
||||
load_initrd (char *initrd)
|
||||
{
|
||||
int len;
|
||||
long *ramdisk, moveto;
|
||||
|
||||
if (!grub_open (cur_cmdline) || !(len = grub_read ((char *) cur_addr, -1)))
|
||||
if (! grub_open (initrd) || ! (len = grub_read ((char *) cur_addr, -1)))
|
||||
return 0;
|
||||
|
||||
moveto = ((mbi.mem_upper + 0x400) * 0x400 - len) & 0xfffff000;
|
||||
@@ -532,7 +532,7 @@ load_initrd (void)
|
||||
|
||||
|
||||
void
|
||||
bsd_boot (int type, int bootdev)
|
||||
bsd_boot (int type, int bootdev, char *arg)
|
||||
{
|
||||
char *str;
|
||||
int clval = 0, i;
|
||||
@@ -540,8 +540,8 @@ bsd_boot (int type, int bootdev)
|
||||
|
||||
stop_floppy ();
|
||||
|
||||
while (*(++cur_cmdline) && *cur_cmdline != ' ');
|
||||
str = cur_cmdline;
|
||||
while (*(++arg) && *arg != ' ');
|
||||
str = arg;
|
||||
while (*str)
|
||||
{
|
||||
if (*str == '-')
|
||||
@@ -579,10 +579,10 @@ bsd_boot (int type, int bootdev)
|
||||
|
||||
bi.bi_version = BOOTINFO_VERSION;
|
||||
|
||||
*cur_cmdline = 0;
|
||||
while ((--cur_cmdline) > (char *) (mbi.cmdline) && *cur_cmdline != '/');
|
||||
if (*cur_cmdline == '/')
|
||||
bi.bi_kernelname = cur_cmdline + 1;
|
||||
*arg = 0;
|
||||
while ((--arg) > (char *) MB_CMDLINE_BUF && *arg != '/');
|
||||
if (*arg == '/')
|
||||
bi.bi_kernelname = arg + 1;
|
||||
else
|
||||
bi.bi_kernelname = 0;
|
||||
|
||||
|
||||
+58
-23
@@ -68,7 +68,7 @@ char commands[] =
|
||||
" Possible commands are: \"pause= ...\", \"uppermem= <kbytes>\", \"root= <device>\",
|
||||
\"rootnoverify= <device>\", \"chainloader= <file>\", \"kernel= <file> ...\",
|
||||
\"testload= <file>\", \"read= <addr>\", \"displaymem\", \"impsprobe\",
|
||||
\"geometry= <drive>\",
|
||||
\"geometry= <drive>\", \"hide= <device>\", \"unhide= <device>\",
|
||||
\"fstest\", \"debug\", \"module= <file> ...\", \"modulenounzip= <file> ...\",
|
||||
\"color= <normal> [<highlight>]\", \"makeactive\", \"boot\", \"quit\" and
|
||||
\"install= <stage1_file> [d] <dest_dev> <file> <addr> [p] [<config_file>]\"\n";
|
||||
@@ -117,7 +117,8 @@ enter_cmdline (char *script, char *heap)
|
||||
{
|
||||
int bootdev, cmd_len, type = 0, run_cmdline = 1, have_run_cmdline = 0;
|
||||
char *cur_heap = heap, *cur_entry = script, *old_entry;
|
||||
|
||||
char *mb_cmdline = (char *) MB_CMDLINE_BUF;
|
||||
|
||||
/* initialization */
|
||||
saved_drive = boot_drive;
|
||||
saved_partition = install_partition;
|
||||
@@ -185,20 +186,20 @@ returnit:
|
||||
if (run_cmdline && get_cmdline (PACKAGE "> ", commands, cur_heap, 2048, 0))
|
||||
return CMDLINE_ERROR;
|
||||
|
||||
if (substring("boot", cur_heap) == 0 || (script && !*cur_heap))
|
||||
if (substring ("boot", cur_heap) == 0 || (script && !*cur_heap))
|
||||
{
|
||||
if ((type == 'f') | (type == 'n'))
|
||||
bsd_boot(type, bootdev);
|
||||
bsd_boot (type, bootdev, (char *) MB_CMDLINE_BUF);
|
||||
if (type == 'l')
|
||||
linux_boot();
|
||||
linux_boot ();
|
||||
if (type == 'L')
|
||||
big_linux_boot();
|
||||
big_linux_boot ();
|
||||
|
||||
if (type == 'c')
|
||||
{
|
||||
gateA20(0);
|
||||
gateA20 (0);
|
||||
boot_drive = saved_drive;
|
||||
chain_stage1(0, BOOTSEC_LOCATION, BOOTSEC_LOCATION-16);
|
||||
chain_stage1 (0, BOOTSEC_LOCATION, BOOTSEC_LOCATION-16);
|
||||
}
|
||||
|
||||
if (!type)
|
||||
@@ -271,17 +272,21 @@ returnit:
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (substring("kernel", cur_heap) < 1)
|
||||
else if (substring ("kernel", cur_heap) < 1)
|
||||
{
|
||||
/* make sure it's at the beginning of the boot heap area */
|
||||
memmove (heap, cur_heap,
|
||||
cmd_len + (((int)cur_cmdline) - ((int)cur_heap)));
|
||||
cur_cmdline = heap + (((int)cur_cmdline) - ((int)cur_heap));
|
||||
cur_heap = heap;
|
||||
if ((type = load_image()) != 0)
|
||||
cur_heap = cur_cmdline + cmd_len;
|
||||
/* Reset MB_CMDLINE. */
|
||||
mb_cmdline = (char *) MB_CMDLINE_BUF;
|
||||
if (cmd_len + 1 > MB_CMDLINE_BUFLEN)
|
||||
errnum = ERR_WONT_FIT;
|
||||
else
|
||||
{
|
||||
/* Copy the command-line to MB_CMDLINE. */
|
||||
grub_memmove (mb_cmdline, cur_cmdline, cmd_len + 1);
|
||||
if ((type = load_image (cur_cmdline, mb_cmdline)) != 0)
|
||||
mb_cmdline += cmd_len + 1;
|
||||
}
|
||||
}
|
||||
else if (substring("module", cur_heap) < 1)
|
||||
else if (substring ("module", cur_heap) < 1)
|
||||
{
|
||||
if (type == 'm')
|
||||
{
|
||||
@@ -291,17 +296,25 @@ returnit:
|
||||
if (cur_heap[6] == 'n')
|
||||
no_decompression = 1;
|
||||
#endif /* NO_DECOMPRESSION */
|
||||
|
||||
if (load_module())
|
||||
cur_heap = cur_cmdline + cmd_len;
|
||||
|
||||
|
||||
if (mb_cmdline + cmd_len + 1
|
||||
> (char *) MB_CMDLINE_BUF + MB_CMDLINE_BUFLEN)
|
||||
errnum = ERR_WONT_FIT;
|
||||
else
|
||||
{
|
||||
/* Copy the command-line to MB_CMDLINE. */
|
||||
grub_memmove (mb_cmdline, cur_cmdline, cmd_len + 1);
|
||||
if (load_module (cur_cmdline, mb_cmdline))
|
||||
mb_cmdline += cmd_len + 1;
|
||||
}
|
||||
|
||||
#ifndef NO_DECOMPRESSION
|
||||
no_decompression = 0;
|
||||
#endif /* NO_DECOMPRESSION */
|
||||
}
|
||||
else if (type == 'L' || type == 'l')
|
||||
{
|
||||
load_initrd ();
|
||||
load_initrd (cur_cmdline);
|
||||
}
|
||||
else
|
||||
errnum = ERR_NEED_MB_KERNEL;
|
||||
@@ -310,7 +323,7 @@ returnit:
|
||||
{
|
||||
if (type == 'L' || type == 'l')
|
||||
{
|
||||
load_initrd ();
|
||||
load_initrd (cur_cmdline);
|
||||
}
|
||||
else
|
||||
errnum = ERR_NEED_LX_KERNEL;
|
||||
@@ -693,6 +706,28 @@ returnit:
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (substring ("hide", cur_heap) < 1)
|
||||
{
|
||||
set_device (cur_cmdline);
|
||||
|
||||
if (! errnum)
|
||||
{
|
||||
saved_partition = current_partition;
|
||||
saved_drive = current_drive;
|
||||
hide_partition ();
|
||||
}
|
||||
}
|
||||
else if (substring ("unhide", cur_heap) < 1)
|
||||
{
|
||||
set_device (cur_cmdline);
|
||||
|
||||
if (! errnum)
|
||||
{
|
||||
saved_partition = current_partition;
|
||||
saved_drive = current_drive;
|
||||
unhide_partition ();
|
||||
}
|
||||
}
|
||||
else if (*cur_heap && *cur_heap != ' ')
|
||||
errnum = ERR_UNRECOGNIZED;
|
||||
|
||||
|
||||
@@ -311,6 +311,69 @@ make_saved_active (void)
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
unhide_partition (void)
|
||||
{
|
||||
if (saved_drive)
|
||||
{
|
||||
int part = saved_partition >> 16;
|
||||
|
||||
if (part > 3)
|
||||
{
|
||||
errnum = ERR_NO_PART;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (! rawread (saved_drive, 0, 0, SECTOR_SIZE, (char *) SCRATCHADDR))
|
||||
return 0;
|
||||
|
||||
if (PC_SLICE_TYPE (SCRATCHADDR, part) & PC_SLICE_TYPE_HIDDEN_FLAG)
|
||||
{
|
||||
PC_SLICE_TYPE (SCRATCHADDR, part) ^= PC_SLICE_TYPE_HIDDEN_FLAG;
|
||||
buf_track = -1;
|
||||
if (biosdisk (BIOSDISK_WRITE, saved_drive, &buf_geom,
|
||||
0, 1, SCRATCHSEG))
|
||||
{
|
||||
errnum = ERR_WRITE;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
hide_partition (void)
|
||||
{
|
||||
if (saved_drive)
|
||||
{
|
||||
int part = saved_partition >> 16;
|
||||
|
||||
if (part > 3)
|
||||
{
|
||||
errnum = ERR_NO_PART;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (! rawread (saved_drive, 0, 0, SECTOR_SIZE, (char *) SCRATCHADDR))
|
||||
return 0;
|
||||
|
||||
if (! (PC_SLICE_TYPE (SCRATCHADDR, part) & PC_SLICE_TYPE_HIDDEN_FLAG))
|
||||
{
|
||||
PC_SLICE_TYPE (SCRATCHADDR, part) |= PC_SLICE_TYPE_HIDDEN_FLAG;
|
||||
buf_track = -1;
|
||||
if (biosdisk (BIOSDISK_WRITE, saved_drive, &buf_geom,
|
||||
0, 1, SCRATCHSEG))
|
||||
{
|
||||
errnum = ERR_WRITE;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void
|
||||
check_and_print_mount (void)
|
||||
|
||||
@@ -87,6 +87,7 @@ fat_create_blocklist (int first_fat_entry)
|
||||
BLK_BLKSTART (BLK_BLKLIST_START) = FAT_BPB_ROOT_DIR_START (BPB);
|
||||
fsmax = filemax = SECTOR_SIZE * (BLK_BLKLENGTH (BLK_BLKLIST_START)
|
||||
= FAT_BPB_ROOT_DIR_LENGTH (BPB));
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
/* any real directory/file */
|
||||
|
||||
+33
-21
@@ -20,7 +20,7 @@
|
||||
/* Restrictions:
|
||||
This is MINIX V1 only (yet)
|
||||
Disk creation is like:
|
||||
mkfs.minix -c -n14 DEVICE
|
||||
mkfs.minix -c DEVICE
|
||||
*/
|
||||
|
||||
#ifdef FSYS_MINIX
|
||||
@@ -31,7 +31,7 @@
|
||||
/* #define DEBUG_MINIX */
|
||||
|
||||
/* indirect blocks */
|
||||
static int mapblock1, mapblock2;
|
||||
static int mapblock1, mapblock2, namelen;
|
||||
|
||||
/* sizes are always in bytes, BLOCK values are always in DEV_BSIZE (sectors) */
|
||||
#define DEV_BSIZE 512
|
||||
@@ -80,8 +80,6 @@ typedef unsigned int __u32;
|
||||
here we have */
|
||||
#define INODE_VERSION(inode) (SUPERBLOCK->s_version)
|
||||
|
||||
#define MINIX_NAME_LEN 14 /* XXX depend on version */
|
||||
|
||||
/*
|
||||
* This is the original minix inode layout on disk.
|
||||
* Note the 8-bit gid and atime and ctime.
|
||||
@@ -162,19 +160,32 @@ struct minix_dir_entry {
|
||||
int
|
||||
minix_mount (void)
|
||||
{
|
||||
int retval = 1;
|
||||
if (((current_drive & 0x80 || current_slice != 0))
|
||||
&& (current_slice != PC_SLICE_TYPE_MINIX)
|
||||
&& ! IS_PC_SLICE_TYPE_BSD_WITH_FS (current_slice, FS_OTHER))
|
||||
return 0; /* The partition is not of MINIX type */
|
||||
|
||||
if (part_length < (SBLOCK +
|
||||
(sizeof (struct minix_super_block) / DEV_BSIZE)))
|
||||
return 0; /* The partition is too short */
|
||||
|
||||
if (!devread (SBLOCK, 0, sizeof (struct minix_super_block),
|
||||
(char *) SUPERBLOCK))
|
||||
return 0; /* Cannot read superblock */
|
||||
|
||||
switch (SUPERBLOCK->s_magic)
|
||||
{
|
||||
case MINIX_SUPER_MAGIC:
|
||||
namelen = 14;
|
||||
break;
|
||||
case MINIX_SUPER_MAGIC2:
|
||||
namelen = 30;
|
||||
break;
|
||||
default:
|
||||
return 0; /* Unsupported type */
|
||||
}
|
||||
|
||||
if ((((current_drive & 0x80 || current_slice != 0))
|
||||
&& (current_slice != PC_SLICE_TYPE_MINIX)
|
||||
&& ! IS_PC_SLICE_TYPE_BSD_WITH_FS (current_slice, FS_OTHER))
|
||||
|| part_length < (SBLOCK +
|
||||
(sizeof (struct minix_super_block) / DEV_BSIZE))
|
||||
|| ! devread (SBLOCK, 0, sizeof (struct minix_super_block),
|
||||
(char *) SUPERBLOCK)
|
||||
|| SUPERBLOCK->s_magic != MINIX_SUPER_MAGIC)
|
||||
retval = 0;
|
||||
|
||||
return retval;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Takes a file system block number and reads it into BUFFER. */
|
||||
@@ -482,9 +493,10 @@ minix_dir (char *dirname)
|
||||
off = loc & (BLOCK_SIZE - 1);
|
||||
dp = (struct minix_dir_entry *) (DATABLOCK2 + off);
|
||||
/* advance loc prematurely to next on-disk directory entry */
|
||||
loc += sizeof (dp->inode) + 14; /* XXX */
|
||||
loc += sizeof (dp->inode) + namelen;
|
||||
|
||||
/* NOTE: minix filenames are NULL terminated if < 14 else exact */
|
||||
/* NOTE: minix filenames are NULL terminated if < NAMELEN
|
||||
else exact */
|
||||
|
||||
#ifdef DEBUG_MINIX
|
||||
printf ("directory entry ino=%d\n", dp->inode);
|
||||
@@ -494,9 +506,9 @@ minix_dir (char *dirname)
|
||||
|
||||
if (dp->inode)
|
||||
{
|
||||
int saved_c = dp->name[MINIX_NAME_LEN+1];
|
||||
int saved_c = dp->name[namelen + 1];
|
||||
|
||||
dp->name[MINIX_NAME_LEN+1] = 0;
|
||||
dp->name[namelen+1] = 0;
|
||||
str_chk = substring (dirname, dp->name);
|
||||
|
||||
# ifndef STAGE1_5
|
||||
@@ -509,7 +521,7 @@ minix_dir (char *dirname)
|
||||
}
|
||||
# endif
|
||||
|
||||
dp->name[MINIX_NAME_LEN+1] = saved_c;
|
||||
dp->name[namelen + 1] = saved_c;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -133,6 +133,8 @@
|
||||
|
||||
#define IS_PC_SLICE_TYPE_BSD(type) IS_PC_SLICE_TYPE_BSD_WITH_FS(type,0)
|
||||
|
||||
/* This is not a flag actually, but used as if it were a flag. */
|
||||
#define PC_SLICE_TYPE_HIDDEN_FLAG 0x10
|
||||
|
||||
/*
|
||||
* *BSD-style disklabel & partition definitions.
|
||||
|
||||
+16
-4
@@ -68,6 +68,12 @@ extern char *grub_scratch_mem;
|
||||
#define FSYS_BUFLEN 0x8000
|
||||
#define FSYS_BUF RAW_ADDR (0x68000)
|
||||
|
||||
/* Command-line buffer for Multiboot kernels and modules. This area
|
||||
includes the area into which Stage 1.5 and Stage 1 are loaded, but
|
||||
that's no problem. */
|
||||
#define MB_CMDLINE_BUF RAW_ADDR (0x2000)
|
||||
#define MB_CMDLINE_BUFLEN 0x6000
|
||||
|
||||
/*
|
||||
* Linux setup parameters
|
||||
*/
|
||||
@@ -546,6 +552,12 @@ int open_partition (void);
|
||||
/* Sets device to the one represented by the SAVED_* parameters. */
|
||||
int make_saved_active (void);
|
||||
|
||||
/* Hide a partition. */
|
||||
int hide_partition (void);
|
||||
|
||||
/* Unhide a partition. */
|
||||
int unhide_partition (void);
|
||||
|
||||
/* Open a file or directory on the active device, using GRUB's
|
||||
internal filesystem support. */
|
||||
int grub_open (char *filename);
|
||||
@@ -570,10 +582,10 @@ void print_completions (char *filename);
|
||||
/* Copies the current partition data to the desired address. */
|
||||
void copy_current_part_entry (char *buf);
|
||||
|
||||
void bsd_boot (int type, int bootdev) __attribute__ ((noreturn));
|
||||
int load_image (void);
|
||||
int load_module (void);
|
||||
int load_initrd (void);
|
||||
void bsd_boot (int type, int bootdev, char *arg) __attribute__ ((noreturn));
|
||||
int load_image (char *kernel, char *arg);
|
||||
int load_module (char *module, char *arg);
|
||||
int load_initrd (char *initrd);
|
||||
|
||||
void init_bios_info (void);
|
||||
|
||||
|
||||
Reference in new issue
Block a user