Am Donnerstag, den 14.08.2008, 00:39 +0200 schrieb Felix Zielcke:
>
> This time dear Marco I didn't bother to read through the changelog, it
> might be still not perfect and I'm even tired now.
I should have better gone to bed instead of making quickly a patch for
this.
Well 2nd try now.
I forgot grub-fstest and I think I know now why you said `why' to one
entry ;)
And I forgot to change the copyright year to 2008 for the new shiny
util/err.c
2008-08-14 Felix Zielcke <[EMAIL PROTECTED]>
* include/grub/err.h (grub_error_stack_assert): New variable
declaration.
* kern/err.c (grub_error_stack_assert): Remove static.
(grub_print_error): Disable it for [GRUB_UTIL] because ...
* util/err.c: New file with grub_print_error () using fprintf
(stderr, ...).
* conf/common.rmk: Add it for grub-probe.
Index: conf/common.rmk
===================================================================
--- conf/common.rmk (Revision 1804)
+++ conf/common.rmk (Arbeitskopie)
@@ -4,7 +4,7 @@
sbin_UTILITIES += grub-probe
util/grub-probe.c_DEPENDENCIES = grub_probe_init.h
grub_probe_SOURCES = util/grub-probe.c \
- util/biosdisk.c util/misc.c util/getroot.c \
+ util/biosdisk.c util/misc.c util/getroot.c util/err.c \
kern/device.c kern/disk.c kern/err.c kern/misc.c \
kern/parser.c kern/partition.c kern/file.c \
\
@@ -23,7 +23,7 @@ endif
# For grub-fstest.
util/grub-fstest.c_DEPENDENCIES = grub_fstest_init.h
-grub_fstest_SOURCES = util/grub-fstest.c util/hostfs.c util/misc.c \
+grub_fstest_SOURCES = util/grub-fstest.c util/hostfs.c util/misc.c util/err.c \
kern/file.c kern/device.c kern/disk.c kern/err.c kern/misc.c \
disk/host.c disk/loopback.c normal/arg.c normal/misc.c \
io/gzio.c lib/hexdump.c commands/blocklist.c commands/ls.c \
Index: kern/err.c
===================================================================
--- kern/err.c (Revision 1804)
+++ kern/err.c (Arbeitskopie)
@@ -34,7 +34,7 @@ static struct
} grub_error_stack_items[GRUB_ERROR_STACK_SIZE];
static int grub_error_stack_pos;
-static int grub_error_stack_assert;
+int grub_error_stack_assert;
grub_err_t
grub_error (grub_err_t n, const char *fmt, ...)
@@ -112,7 +112,7 @@ grub_error_pop (void)
return 0;
}
}
-
+#ifndef GRUB_UTIL
void
grub_print_error (void)
{
@@ -132,3 +132,4 @@ grub_print_error (void)
grub_error_stack_assert = 0;
}
}
+#endif
Index: include/grub/err.h
===================================================================
--- include/grub/err.h (Revision 1804)
+++ include/grub/err.h (Arbeitskopie)
@@ -58,6 +58,7 @@ grub_err_t;
extern grub_err_t EXPORT_VAR(grub_errno);
extern char EXPORT_VAR(grub_errmsg)[];
+extern int grub_error_stack_assert;
grub_err_t EXPORT_FUNC(grub_error) (grub_err_t n, const char *fmt, ...);
void EXPORT_FUNC(grub_fatal) (const char *fmt, ...) __attribute__ ((noreturn));
Index: util/err.c
===================================================================
--- util/err.c (Revision 0)
+++ util/err.c (Revision 0)
@@ -0,0 +1,41 @@
+/* err.c - util error printing routine */
+/*
+ * GRUB -- GRand Unified Bootloader
+ * Copyright (C) 2008 Free Software Foundation, Inc.
+ *
+ * GRUB is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GRUB is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GRUB. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <stdio.h>
+#include <grub/err.h>
+
+void
+grub_print_error (void)
+{
+ /* Print error messages in reverse order. First print active error message
+ and then empty error stack. */
+ do
+ {
+ if (grub_errno != GRUB_ERR_NONE)
+ fprintf (stderr, "error: %s\n", grub_errmsg);
+ }
+ while (grub_error_pop ());
+
+ /* If there was an assert while using error stack, report about it. */
+ if (grub_error_stack_assert)
+ {
+ fprintf (stderr, "assert: error stack overflow detected!\n");
+ grub_error_stack_assert = 0;
+ }
+}
_______________________________________________
Grub-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/grub-devel