2004-03-14 Jeroen Dekkers <jeroen@dekkers.cx>

* Makefile.in: Update copyright.
	* genmodsrc.sh: Likewise.
	* gensymlist.sh: Likewise.
	* term/i386/pc/vga.c: Indent correctly.

	* util/i386/pc/pupa-mkimage.c (usage): Use PACKAGE_BUGREPORT as
	bugreporting address.
	* util/i386/pc/pupa-setup.c (usage): Likewise,
	(main): Call pupa_ext2_init and pupa_ext2_fini.

	* fs/fat.c (log2): Renamed to ...
	(fat_log2): ... this.
	All callers changed.
	* kern/misc.c (memcpy): Alias to pupa_memmove.
	* loader/i386/pc/multiboot.c (pupa_rescue_cmd_multiboot): Fix
	lvalue cast.
	* util/console.c (pupa_ncurses_fini): Return 0.

	* util/i386/pc/biosdisk.c (pupa_util_biosdisk_open)[__linux__]:
	Move fail label here.
	[__GNU__]: Don't warn when using stat.
	(open_device)[!__linux__]: Check if FD < 0 instead of !FD.
	(pupa_util_biosdisk_get_pupa_dev)[__GNU__]: Change type of N to
	long int. Use strtol instead of strtoul.
This commit is contained in:
jeroen 2004-03-14 17:48:25 +00:00
parent db1771cfbe
commit 8c8cc20511
12 changed files with 149 additions and 115 deletions

View file

@ -1,3 +1,30 @@
2004-03-14 Jeroen Dekkers <jeroen@dekkers.cx>
* Makefile.in: Update copyright.
* genmodsrc.sh: Likewise.
* gensymlist.sh: Likewise.
* term/i386/pc/vga.c: Indent correctly.
* util/i386/pc/pupa-mkimage.c (usage): Use PACKAGE_BUGREPORT as
bugreporting address.
* util/i386/pc/pupa-setup.c (usage): Likewise,
(main): Call pupa_ext2_init and pupa_ext2_fini.
* fs/fat.c (log2): Renamed to ...
(fat_log2): ... this.
All callers changed.
* kern/misc.c (memcpy): Alias to pupa_memmove.
* loader/i386/pc/multiboot.c (pupa_rescue_cmd_multiboot): Fix
lvalue cast.
* util/console.c (pupa_ncurses_fini): Return 0.
* util/i386/pc/biosdisk.c (pupa_util_biosdisk_open)[__linux__]:
Move fail label here.
[__GNU__]: Don't warn when using stat.
(open_device)[!__linux__]: Check if FD < 0 instead of !FD.
(pupa_util_biosdisk_get_pupa_dev)[__GNU__]: Change type of N to
long int. Use strtol instead of strtoul.
2004-03-14 Marco Gerards <metgerards@student.han.nl> 2004-03-14 Marco Gerards <metgerards@student.han.nl>
* commands/boot.c: New file. * commands/boot.c: New file.

View file

@ -1,7 +1,6 @@
# -*- makefile -*- # -*- makefile -*-
# #
# Copyright (C) 1994,1995,1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. # Copyright (C) 1994,95,96,97,98,99,2000,01,02,04 Free Software Foundation, Inc.
# Copyright (C) 2002 Yoshinori K. Okuji <okuji@enbug.org>
# #
# This Makefile.in is free software; the author # This Makefile.in is free software; the author
# gives unlimited permission to copy and/or distribute it, # gives unlimited permission to copy and/or distribute it,

View file

@ -1,7 +1,7 @@
/* fat.c - FAT filesystem */ /* fat.c - FAT filesystem */
/* /*
* PUPA -- Preliminary Universal Programming Architecture for GRUB * PUPA -- Preliminary Universal Programming Architecture for GRUB
* Copyright (C) 2000,2001,2002,2003 Free Software Foundation, Inc. * Copyright (C) 2000,2001,2002,2003,2004 Free Software Foundation, Inc.
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -130,7 +130,7 @@ static pupa_dl_t my_mod;
#endif #endif
static int static int
log2 (unsigned x) fat_log2 (unsigned x)
{ {
int i; int i;
@ -165,12 +165,13 @@ pupa_fat_mount (pupa_disk_t disk)
goto fail; goto fail;
/* Get the sizes of logical sectors and clusters. */ /* Get the sizes of logical sectors and clusters. */
data->logical_sector_bits = log2 (pupa_le_to_cpu16 (bpb.bytes_per_sector)); data->logical_sector_bits =
fat_log2 (pupa_le_to_cpu16 (bpb.bytes_per_sector));
if (data->logical_sector_bits < PUPA_DISK_SECTOR_BITS) if (data->logical_sector_bits < PUPA_DISK_SECTOR_BITS)
goto fail; goto fail;
data->logical_sector_bits -= PUPA_DISK_SECTOR_BITS; data->logical_sector_bits -= PUPA_DISK_SECTOR_BITS;
data->cluster_bits = log2 (bpb.sectors_per_cluster); data->cluster_bits = fat_log2 (bpb.sectors_per_cluster);
if (data->cluster_bits < 0) if (data->cluster_bits < 0)
goto fail; goto fail;
data->cluster_bits += data->logical_sector_bits; data->cluster_bits += data->logical_sector_bits;

View file

@ -20,7 +20,7 @@ cat <<EOF
/* This file is automatically generated by genmodsrc.sh. DO NOT EDIT! */ /* This file is automatically generated by genmodsrc.sh. DO NOT EDIT! */
/* /*
* PUPA -- Preliminary Universal Programming Architecture for GRUB * PUPA -- Preliminary Universal Programming Architecture for GRUB
* Copyright (C) 2002 Yoshinori K. Okuji <okuji@enbug.org> * Copyright (C) 2002 Free Software Foundation, Inc.
* *
* PUPA is free software; you can redistribute it and/or modify * PUPA is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -15,7 +15,7 @@ cat <<EOF
/* This file is automatically generated by gensymlist.sh. DO NOT EDIT! */ /* This file is automatically generated by gensymlist.sh. DO NOT EDIT! */
/* /*
* PUPA -- Preliminary Universal Programming Architecture for GRUB * PUPA -- Preliminary Universal Programming Architecture for GRUB
* Copyright (C) 2002 Yoshinori K. Okuji <okuji@enbug.org> * Copyright (C) 2002 Free Software Foundation, Inc.
* *
* PUPA is free software; you can redistribute it and/or modify * PUPA is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by

View file

@ -1,7 +1,7 @@
/* misc.c - definitions of misc functions */ /* misc.c - definitions of misc functions */
/* /*
* PUPA -- Preliminary Universal Programming Architecture for GRUB * PUPA -- Preliminary Universal Programming Architecture for GRUB
* Copyright (C) 1999,2000,2001,2002,2003 Free Software Foundation, Inc. * Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc.
* *
* PUPA is free software; you can redistribute it and/or modify * PUPA is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -45,6 +45,9 @@ pupa_memmove (void *dest, const void *src, pupa_size_t n)
return dest; return dest;
} }
/* GCC emits references to memcpy() for struct copies etc. */
void *memcpy (void *dest, const void *src, pupa_size_t n)
__attribute__ ((alias ("pupa_memmove")));
char * char *
pupa_strcpy (char *dest, const char *src) pupa_strcpy (char *dest, const char *src)

View file

@ -1,7 +1,7 @@
/* multiboot.c - boot a multiboot OS image. */ /* multiboot.c - boot a multiboot OS image. */
/* /*
* PUPA -- Preliminary Universal Programming Architecture for GRUB * PUPA -- Preliminary Universal Programming Architecture for GRUB
* Copyright (C) 2003 Free Software Foundation, Inc. * Copyright (C) 2003, 2004 Free Software Foundation, Inc.
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -119,7 +119,7 @@ pupa_rescue_cmd_multiboot (int argc, char *argv[])
be at least 12 bytes and aligned on a 4-byte boundary. */ be at least 12 bytes and aligned on a 4-byte boundary. */
for (header = (struct pupa_multiboot_header *) buffer; for (header = (struct pupa_multiboot_header *) buffer;
((char *) header <= buffer + len - 12) || (header = 0); ((char *) header <= buffer + len - 12) || (header = 0);
(char *)header += 4) header = (struct pupa_multiboot_header *) ((char *)header + 4))
{ {
if (header->magic == PUPA_MB_MAGIC if (header->magic == PUPA_MB_MAGIC
&& !(header->magic + header->flags + header->checksum)) && !(header->magic + header->flags + header->checksum))

View file

@ -1,6 +1,6 @@
/* /*
* PUPA -- Preliminary Universal Programming Architecture for GRUB * PUPA -- Preliminary Universal Programming Architecture for GRUB
* Copyright (C) 2000,2001,2002,2003 Free Software Foundation, Inc. * Copyright (C) 2000,2001,2002,2003,2004 Free Software Foundation, Inc.
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -407,108 +407,108 @@ pupa_vga_putchar (pupa_uint32_t c)
#endif #endif
} }
static pupa_uint16_t static pupa_uint16_t
pupa_vga_getxy (void) pupa_vga_getxy (void)
{ {
return ((xpos << 8) | ypos); return ((xpos << 8) | ypos);
} }
static void static void
pupa_vga_gotoxy (pupa_uint8_t x, pupa_uint8_t y) pupa_vga_gotoxy (pupa_uint8_t x, pupa_uint8_t y)
{ {
if (x >= TEXT_WIDTH || y >= TEXT_HEIGHT) if (x >= TEXT_WIDTH || y >= TEXT_HEIGHT)
{ {
pupa_error (PUPA_ERR_OUT_OF_RANGE, "invalid point (%u,%u)", pupa_error (PUPA_ERR_OUT_OF_RANGE, "invalid point (%u,%u)",
(unsigned) x, (unsigned) y); (unsigned) x, (unsigned) y);
return; return;
} }
if (cursor_state) if (cursor_state)
write_char (); write_char ();
xpos = x; xpos = x;
ypos = y; ypos = y;
if (cursor_state) if (cursor_state)
write_cursor (); write_cursor ();
} }
static void static void
pupa_vga_cls (void) pupa_vga_cls (void)
{ {
unsigned i; unsigned i;
for (i = 0; i < TEXT_WIDTH * TEXT_HEIGHT; i++) for (i = 0; i < TEXT_WIDTH * TEXT_HEIGHT; i++)
{ {
text_buf[i].code = ' '; text_buf[i].code = ' ';
text_buf[i].fg_color = 0; text_buf[i].fg_color = 0;
text_buf[i].bg_color = 0; text_buf[i].bg_color = 0;
text_buf[i].width = 0; text_buf[i].width = 0;
text_buf[i].index = 0; text_buf[i].index = 0;
} }
pupa_memset (VGA_MEM, 0, VGA_WIDTH * VGA_HEIGHT / 8); pupa_memset (VGA_MEM, 0, VGA_WIDTH * VGA_HEIGHT / 8);
xpos = ypos = 0; xpos = ypos = 0;
} }
static void static void
pupa_vga_setcolorstate (pupa_term_color_state state) pupa_vga_setcolorstate (pupa_term_color_state state)
{ {
switch (state) switch (state)
{ {
case PUPA_TERM_COLOR_STANDARD: case PUPA_TERM_COLOR_STANDARD:
case PUPA_TERM_COLOR_NORMAL: case PUPA_TERM_COLOR_NORMAL:
fg_color = DEFAULT_FG_COLOR; fg_color = DEFAULT_FG_COLOR;
bg_color = DEFAULT_BG_COLOR; bg_color = DEFAULT_BG_COLOR;
break; break;
case PUPA_TERM_COLOR_HIGHLIGHT: case PUPA_TERM_COLOR_HIGHLIGHT:
fg_color = DEFAULT_BG_COLOR; fg_color = DEFAULT_BG_COLOR;
bg_color = DEFAULT_FG_COLOR; bg_color = DEFAULT_FG_COLOR;
break; break;
default: default:
break; break;
} }
} }
static void static void
pupa_vga_setcolor (pupa_uint8_t normal_color __attribute__ ((unused)), pupa_vga_setcolor (pupa_uint8_t normal_color __attribute__ ((unused)),
pupa_uint8_t highlight_color __attribute__ ((unused))) pupa_uint8_t highlight_color __attribute__ ((unused)))
{ {
/* FIXME */ /* FIXME */
} }
static void static void
pupa_vga_setcursor (int on) pupa_vga_setcursor (int on)
{ {
if (cursor_state != on) if (cursor_state != on)
{ {
if (cursor_state) if (cursor_state)
write_char (); write_char ();
else else
write_cursor (); write_cursor ();
cursor_state = on; cursor_state = on;
} }
} }
static struct pupa_term pupa_vga_term = static struct pupa_term pupa_vga_term =
{ {
.name = "vga", .name = "vga",
.init = pupa_vga_init, .init = pupa_vga_init,
.fini = pupa_vga_fini, .fini = pupa_vga_fini,
.putchar = pupa_vga_putchar, .putchar = pupa_vga_putchar,
.checkkey = pupa_console_checkkey, .checkkey = pupa_console_checkkey,
.getkey = pupa_console_getkey, .getkey = pupa_console_getkey,
.getxy = pupa_vga_getxy, .getxy = pupa_vga_getxy,
.gotoxy = pupa_vga_gotoxy, .gotoxy = pupa_vga_gotoxy,
.cls = pupa_vga_cls, .cls = pupa_vga_cls,
.setcolorstate = pupa_vga_setcolorstate, .setcolorstate = pupa_vga_setcolorstate,
.setcolor = pupa_vga_setcolor, .setcolor = pupa_vga_setcolor,
.setcursor = pupa_vga_setcursor, .setcursor = pupa_vga_setcursor,
.flags = 0, .flags = 0,
.next = 0 .next = 0
}; };
static pupa_err_t static pupa_err_t
debug_command (struct pupa_arg_list *state __attribute__ ((unused)), debug_command (struct pupa_arg_list *state __attribute__ ((unused)),

View file

@ -177,6 +177,7 @@ static pupa_err_t
pupa_ncurses_fini (void) pupa_ncurses_fini (void)
{ {
endwin (); endwin ();
return 0;
} }

View file

@ -1,7 +1,7 @@
/* biosdisk.c - emulate biosdisk */ /* biosdisk.c - emulate biosdisk */
/* /*
* PUPA -- Preliminary Universal Programming Architecture for GRUB * PUPA -- Preliminary Universal Programming Architecture for GRUB
* Copyright (C) 1999,2000,2001,2002,2003 Free Software Foundation, Inc. * Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc.
* *
* PUPA is free software; you can redistribute it and/or modify * PUPA is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -190,11 +190,12 @@ pupa_util_biosdisk_open (const char *name, pupa_disk_t disk)
return PUPA_ERR_NONE; return PUPA_ERR_NONE;
} }
#else
# warning "No special routine to get the size of a block device is implemented for your OS. This is not possibly fatal."
#endif
fail: fail:
/* In GNU/Hurd, stat() will return the right size. */
#elif !defined (__GNU__)
# warning "No special routine to get the size of a block device is implemented for your OS. This is not possibly fatal."
#endif
if (stat (map[drive], &st) < 0) if (stat (map[drive], &st) < 0)
return pupa_error (PUPA_ERR_BAD_DEVICE, "cannot stat `%s'", map[drive]); return pupa_error (PUPA_ERR_BAD_DEVICE, "cannot stat `%s'", map[drive]);
@ -325,7 +326,7 @@ open_device (const pupa_disk_t disk, unsigned long sector, int flags)
} }
#else /* ! __linux__ */ #else /* ! __linux__ */
fd = open (map[disk->id], flags); fd = open (map[disk->id], flags);
if (! fd) if (fd < 0)
{ {
pupa_error (PUPA_ERR_BAD_DEVICE, "cannot open `%s'", map[disk->id]); pupa_error (PUPA_ERR_BAD_DEVICE, "cannot open `%s'", map[disk->id]);
return -1; return -1;
@ -815,11 +816,11 @@ pupa_util_biosdisk_get_pupa_dev (const char *os_dev)
p = strrchr (os_dev, 's'); p = strrchr (os_dev, 's');
if (p) if (p)
{ {
unsigned long n; long int n;
char *q; char *q;
p++; p++;
n = strtoul (p, &q, 10); n = strtol (p, &q, 10);
if (p != q && n != LONG_MIN && n != LONG_MAX) if (p != q && n != LONG_MIN && n != LONG_MAX)
{ {
dos_part = (int) n; dos_part = (int) n;

View file

@ -1,7 +1,7 @@
/* pupa-mkimage.c - make a bootable image */ /* pupa-mkimage.c - make a bootable image */
/* /*
* PUPA -- Preliminary Universal Programming Architecture for GRUB * PUPA -- Preliminary Universal Programming Architecture for GRUB
* Copyright (C) 2002,2003 Free Software Foundation, Inc. * Copyright (C) 2002,2003,2004 Free Software Foundation, Inc.
* *
* PUPA is free software; you can redistribute it and/or modify * PUPA is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -192,8 +192,8 @@ Make a bootable image of PUPA.\n\
-V, --version print version information and exit\n\ -V, --version print version information and exit\n\
-v, --verbose print verbose messages\n\ -v, --verbose print verbose messages\n\
\n\ \n\
Report bugs to <okuji@enbug.org>.\n\ Report bugs to <%s>.\n\
", PUPA_DATADIR); ", PUPA_DATADIR, PACKAGE_BUGREPORT);
exit (status); exit (status);
} }

View file

@ -1,7 +1,7 @@
/* pupa-setup.c - make PUPA usable */ /* pupa-setup.c - make PUPA usable */
/* /*
* PUPA -- Preliminary Universal Programming Architecture for GRUB * PUPA -- Preliminary Universal Programming Architecture for GRUB
* Copyright (C) 1999,2000,2001,2002,2003 Free Software Foundation, Inc. * Copyright (C) 1999,2000,2001,2002,2003,2004 Free Software Foundation, Inc.
* *
* PUPA is free software; you can redistribute it and/or modify * PUPA is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -470,10 +470,10 @@ DEVICE must be a PUPA device (e.g. ``(hd0,0)'').\n\
-V, --version print version information and exit\n\ -V, --version print version information and exit\n\
-v, --verbose print verbose messages\n\ -v, --verbose print verbose messages\n\
\n\ \n\
Report bugs to <okuji@enbug.org>.\n\ Report bugs to <%s>.\n\
", ",
DEFAULT_BOOT_FILE, DEFAULT_CORE_FILE, DEFAULT_BOOT_FILE, DEFAULT_CORE_FILE, DEFAULT_DIRECTORY,
DEFAULT_DIRECTORY, DEFAULT_DEVICE_MAP); DEFAULT_DEVICE_MAP, PACKAGE_BUGREPORT);
exit (status); exit (status);
} }
@ -594,6 +594,7 @@ main (int argc, char *argv[])
/* Initialize filesystems. */ /* Initialize filesystems. */
pupa_fat_init (); pupa_fat_init ();
pupa_ext2_init ();
if (root_dev) if (root_dev)
{ {
@ -625,6 +626,7 @@ main (int argc, char *argv[])
root_dev, dest_dev); root_dev, dest_dev);
/* Free resources. */ /* Free resources. */
pupa_ext2_fini ();
pupa_fat_fini (); pupa_fat_fini ();
pupa_util_biosdisk_fini (); pupa_util_biosdisk_fini ();