Handle grub-pe2elf and grub-mkfont for cases when build != host.
* Makefile.am (build-grub-mkfont): Don't include gnulib. (build-grub-gen-asciih): Likewise. (build-grub-gen-widthspec): Likewise. * Makefile.util.def (grub-pe2elf): Remove. * config.h.in [GRUB_BUILD]: Use build rather than host constants. * configure.ac: Separate tests for build. Move ./build-grub-pe2elf to grub-core. Fix typo. * grub-core/Makefile.am (build-grub-pe2elf): New target. * grub-core/kern/emu/misc.c (xasprintf): Don't compile if GRUB_BUILD is defined. * include/grub/types.h [GRUB_BUILD]: Use build rather than host constants. * util/grub-mkfont.c [GRUB_BUILD]: Simplify not to rely on argp. * util/grub-pe2elf.c: Simplify not to rely on getopt. * util/misc.c (program_name) [GRUB_BUILD]: Define to static string.
This commit is contained in:
parent
984cfd8a79
commit
7b780018f5
11 changed files with 174 additions and 102 deletions
21
ChangeLog
21
ChangeLog
|
@ -1,3 +1,24 @@
|
|||
2013-08-22 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
Handle grub-pe2elf and grub-mkfont for cases when build != host.
|
||||
|
||||
* Makefile.am (build-grub-mkfont): Don't include gnulib.
|
||||
(build-grub-gen-asciih): Likewise.
|
||||
(build-grub-gen-widthspec): Likewise.
|
||||
* Makefile.util.def (grub-pe2elf): Remove.
|
||||
* config.h.in [GRUB_BUILD]: Use build rather than host constants.
|
||||
* configure.ac: Separate tests for build.
|
||||
Move ./build-grub-pe2elf to grub-core.
|
||||
Fix typo.
|
||||
* grub-core/Makefile.am (build-grub-pe2elf): New target.
|
||||
* grub-core/kern/emu/misc.c (xasprintf): Don't compile if GRUB_BUILD is
|
||||
defined.
|
||||
* include/grub/types.h [GRUB_BUILD]: Use build rather than host
|
||||
constants.
|
||||
* util/grub-mkfont.c [GRUB_BUILD]: Simplify not to rely on argp.
|
||||
* util/grub-pe2elf.c: Simplify not to rely on getopt.
|
||||
* util/misc.c (program_name) [GRUB_BUILD]: Define to static string.
|
||||
|
||||
2013-08-22 Vladimir Serbinenko <phcoder@gmail.com>
|
||||
|
||||
* grub-core/kern/emu/hostdisk.c (grub_util_get_fd_size): Adapt for
|
||||
|
|
|
@ -66,14 +66,14 @@ endif
|
|||
|
||||
starfield_theme_files = $(srcdir)/themes/starfield/blob_w.png $(srcdir)/themes/starfield/boot_menu_c.png $(srcdir)/themes/starfield/boot_menu_e.png $(srcdir)/themes/starfield/boot_menu_ne.png $(srcdir)/themes/starfield/boot_menu_n.png $(srcdir)/themes/starfield/boot_menu_nw.png $(srcdir)/themes/starfield/boot_menu_se.png $(srcdir)/themes/starfield/boot_menu_s.png $(srcdir)/themes/starfield/boot_menu_sw.png $(srcdir)/themes/starfield/boot_menu_w.png $(srcdir)/themes/starfield/slider_c.png $(srcdir)/themes/starfield/slider_n.png $(srcdir)/themes/starfield/slider_s.png $(srcdir)/themes/starfield/starfield.png $(srcdir)/themes/starfield/terminal_box_c.png $(srcdir)/themes/starfield/terminal_box_e.png $(srcdir)/themes/starfield/terminal_box_ne.png $(srcdir)/themes/starfield/terminal_box_n.png $(srcdir)/themes/starfield/terminal_box_nw.png $(srcdir)/themes/starfield/terminal_box_se.png $(srcdir)/themes/starfield/terminal_box_s.png $(srcdir)/themes/starfield/terminal_box_sw.png $(srcdir)/themes/starfield/terminal_box_w.png $(srcdir)/themes/starfield/theme.txt $(srcdir)/themes/starfield/README $(srcdir)/themes/starfield/COPYING.CC-BY-SA-3.0
|
||||
|
||||
build-grub-mkfont: util/grub-mkfont.c grub-core/unidata.c grub-core/kern/emu/argp_common.c grub-core/kern/emu/misc.c util/misc.c grub-core/gnulib/progname.c
|
||||
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -I$(top_srcdir)/grub-core/gnulib -DGRUB_MKFONT=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) $(LIBINTL)
|
||||
build-grub-mkfont: util/grub-mkfont.c grub-core/unidata.c grub-core/kern/emu/misc.c util/misc.c
|
||||
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-mkfont\" $^ $(build_freetype_cflags) $(build_freetype_libs)
|
||||
|
||||
build-grub-gen-asciih: util/grub-gen-asciih.c
|
||||
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -I$(top_srcdir)/grub-core/gnulib -DGRUB_MKFONT=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) $(LIBINTL) -Wall -Werror
|
||||
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror
|
||||
|
||||
build-grub-gen-widthspec: util/grub-gen-widthspec.c
|
||||
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -I$(top_srcdir)/grub-core/gnulib -DGRUB_MKFONT=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) $(LIBINTL) -Wall -Werror
|
||||
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_MKFONT=1 -DGRUB_BUILD=1 -DGRUB_UTIL=1 $^ $(build_freetype_cflags) $(build_freetype_libs) -Wall -Werror
|
||||
|
||||
if COND_STARFIELD
|
||||
starfield_DATA = dejavu_10.pf2 dejavu_12.pf2 dejavu_bold_14.pf2 dejavu_14.pf2 dejavu_16.pf2 $(starfield_theme_files)
|
||||
|
|
|
@ -231,19 +231,6 @@ program = {
|
|||
condition = COND_APPLE_CC;
|
||||
};
|
||||
|
||||
program = {
|
||||
name = grub-pe2elf;
|
||||
mansection = 1;
|
||||
common = util/grub-pe2elf.c;
|
||||
|
||||
ldadd = libgrubmods.a;
|
||||
ldadd = libgrubgcry.a;
|
||||
ldadd = libgrubkern.a;
|
||||
ldadd = grub-core/gnulib/libgnu.a;
|
||||
ldadd = '$(LIBINTL)';
|
||||
condition = COND_GRUB_PE2ELF;
|
||||
};
|
||||
|
||||
program = {
|
||||
name = grub-fstest;
|
||||
mansection = 1;
|
||||
|
|
14
config.h.in
14
config.h.in
|
@ -10,7 +10,19 @@
|
|||
#define DISK_CACHE_STATS @DISK_CACHE_STATS@
|
||||
#define BOOT_TIME_STATS @BOOT_TIME_STATS@
|
||||
|
||||
#if defined (GRUB_UTIL) || !defined (GRUB_MACHINE)
|
||||
#if defined (GRUB_BUILD)
|
||||
#define BUILD_SIZEOF_LONG @BUILD_SIZEOF_LONG@
|
||||
#define BUILD_SIZEOF_VOID_P @BUILD_SIZEOF_VOID_P@
|
||||
#if defined __APPLE__
|
||||
# if defined __BIG_ENDIAN__
|
||||
# define BUILD_WORDS_BIGENDIAN 1
|
||||
# else
|
||||
# define BUILD_WORDS_BIGENDIAN 0
|
||||
# endif
|
||||
#else
|
||||
#define BUILD_WORDS_BIGENDIAN @BUILD_WORDS_BIGENDIAN@
|
||||
#endif
|
||||
#elif defined (GRUB_UTIL) || !defined (GRUB_MACHINE)
|
||||
#include <config-util.h>
|
||||
#else
|
||||
/* Define if C symbols get an underscore after compilation. */
|
||||
|
|
31
configure.ac
31
configure.ac
|
@ -331,6 +331,8 @@ AM_GNU_GETTEXT([external])
|
|||
AC_SYS_LARGEFILE
|
||||
|
||||
# Identify characteristics of the host architecture.
|
||||
unset ac_cv_c_bigendian
|
||||
|
||||
AC_C_BIGENDIAN
|
||||
AC_CHECK_SIZEOF(void *)
|
||||
AC_CHECK_SIZEOF(long)
|
||||
|
@ -556,7 +558,7 @@ AC_SUBST(TARGET_LDFLAGS_OLDMAGIC)
|
|||
# For platforms where ELF is not the default link format.
|
||||
AC_MSG_CHECKING([for command to convert module to ELF format])
|
||||
case "${target_os}" in
|
||||
cygwin) TARGET_OBJ2ELF='$(top_builddir)/grub-pe2elf';
|
||||
cygwin) TARGET_OBJ2ELF='./build-grub-pe2elf';
|
||||
# FIXME: put proper test here
|
||||
NEED_REGISTER_FRAME_INFO=1
|
||||
;;
|
||||
|
@ -966,6 +968,8 @@ if test x"$grub_mkfont_excuse" = x ; then
|
|||
fi
|
||||
fi
|
||||
|
||||
unset ac_cv_header_ft2build_h
|
||||
|
||||
if test x"$grub_mkfont_excuse" = x ; then
|
||||
# Check for freetype libraries.
|
||||
freetype_cflags=`$FREETYPE --cflags`
|
||||
|
@ -994,11 +998,26 @@ SAVED_CFLAGS="$CFLAGS"
|
|||
SAVED_CPPFLAGS="$CPPFLAGS"
|
||||
CC="$BUILD_CC"
|
||||
CFLAGS="$BUILD_CFLAGS"
|
||||
CPPFLAGS="$SAVED_CPPFLAGS"
|
||||
CPPFLAGS="$BUILD_CPPFLAGS"
|
||||
|
||||
unset ac_cv_c_bigendian
|
||||
unset ac_cv_header_ft2build_h
|
||||
|
||||
AC_COMPUTE_INT([BUILD_SIZEOF_VOID_P], [sizeof (void *)])
|
||||
AC_COMPUTE_INT([BUILD_SIZEOF_LONG], [sizeof (long)])
|
||||
AC_C_BIGENDIAN([BUILD_WORDS_BIGENDIAN=1], [BUILD_WORDS_BIGENDIAN=0], [BUILD_WORDS_BIGENDIAN=err], [BUILD_WORDS_BIGENDIAN=err])
|
||||
|
||||
if test x$BUILD_WORDS_BIGENDIAN = xerr ; then
|
||||
AC_MSG_ERROR([couldnt determine build endianness])
|
||||
fi
|
||||
|
||||
AC_SUBST([BUILD_SIZEOF_LONG])
|
||||
AC_SUBST([BUILD_SIZEOF_VOID_P])
|
||||
AC_SUBST([BUILD_WORDS_BIGENDIAN])
|
||||
|
||||
if test x"$grub_build_mkfont_excuse" = x ; then
|
||||
# Check for freetype libraries.
|
||||
AC_CHECK_TOOLS([BUILD_FREETYPE], [freetype-config])
|
||||
AC_CHECK_PROGS([BUILD_FREETYPE], [freetype-config])
|
||||
if test "x$BUILD_FREETYPE" = x ; then
|
||||
grub_build_mkfont_excuse=["need freetype2 library"]
|
||||
fi
|
||||
|
@ -1081,7 +1100,7 @@ fi
|
|||
|
||||
AC_SUBST([FONT_SOURCE])
|
||||
|
||||
if test x"$FONT_SOURCE" = x && test x"$DJVU_FONT_SOURCE" = x; then
|
||||
if test x"$FONT_SOURCE" = x && test x"$DJVU_FONT_SOURCE" = x && test x"$grub_build_mkfont_excuse" = x; then
|
||||
grub_build_mkfont_excuse="no fonts"
|
||||
fi
|
||||
|
||||
|
@ -1376,7 +1395,7 @@ echo With libzfs support: Yes
|
|||
else
|
||||
echo With libzfs support: No "($libzfs_excuse)"
|
||||
fi
|
||||
if [ x"$build_grub_mkfont_excuse" = x ]; then
|
||||
if [ x"$grub_build_mkfont_excuse" = x ]; then
|
||||
echo Build-time grub-mkfont: Yes
|
||||
if test "x$FONT_SOURCE" = x ; then
|
||||
echo "Without unifont"
|
||||
|
@ -1384,7 +1403,7 @@ if [ x"$build_grub_mkfont_excuse" = x ]; then
|
|||
echo "With unifont from $FONT_SOURCE"
|
||||
fi
|
||||
else
|
||||
echo Build-time grub-mkfont: No "($build_grub_mkfont_excuse)"
|
||||
echo Build-time grub-mkfont: No "($grub_build_mkfont_excuse)"
|
||||
echo "Without unifont (no build-time grub-mkfont)"
|
||||
fi
|
||||
if test "x$LIBLZMA" = x ; then
|
||||
|
|
|
@ -28,6 +28,9 @@ CFLAGS_LIBRARY += $(CFLAGS_PLATFORM) -fno-builtin
|
|||
CPPFLAGS_LIBRARY += $(CPPFLAGS_PLATFORM)
|
||||
CCASFLAGS_LIBRARY += $(CCASFLAGS_PLATFORM)
|
||||
|
||||
build-grub-pe2elf: $(top_srcdir)/util/grub-pe2elf.c $(top_srcdir)/grub-core/kern/emu/misc.c $(top_srcdir)/util/misc.c
|
||||
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) -DGRUB_BUILD=1 -DGRUB_UTIL=1 -DGRUB_BUILD_PROGRAM_NAME=\"build-grub-pe2elf\" $^
|
||||
|
||||
# gentrigtables
|
||||
gentrigtables: gentrigtables.c
|
||||
$(BUILD_CC) -o $@ -I$(top_srcdir)/include $(BUILD_CFLAGS) $(BUILD_CPPFLAGS) $< -lm
|
||||
|
|
|
@ -137,7 +137,7 @@ xstrdup (const char *str)
|
|||
return newstr;
|
||||
}
|
||||
|
||||
#ifndef GRUB_MKFONT
|
||||
#if !defined (GRUB_MKFONT) && !defined (GRUB_BUILD)
|
||||
char *
|
||||
xasprintf (const char *fmt, ...)
|
||||
{
|
||||
|
|
|
@ -24,7 +24,15 @@
|
|||
#include <grub/cpu/types.h>
|
||||
#endif
|
||||
|
||||
#ifdef GRUB_UTIL
|
||||
#ifdef GRUB_BUILD
|
||||
# define GRUB_CPU_SIZEOF_VOID_P BUILD_SIZEOF_VOID_P
|
||||
# define GRUB_CPU_SIZEOF_LONG BUILD_SIZEOF_LONG
|
||||
# if BUILD_WORDS_BIGENDIAN
|
||||
# define GRUB_CPU_WORDS_BIGENDIAN 1
|
||||
# else
|
||||
# undef GRUB_CPU_WORDS_BIGENDIAN
|
||||
# endif
|
||||
#elif defined (GRUB_UTIL)
|
||||
# define GRUB_CPU_SIZEOF_VOID_P SIZEOF_VOID_P
|
||||
# define GRUB_CPU_SIZEOF_LONG SIZEOF_LONG
|
||||
# ifdef WORDS_BIGENDIAN
|
||||
|
|
|
@ -31,10 +31,14 @@
|
|||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifndef GRUB_BUILD
|
||||
#define _GNU_SOURCE 1
|
||||
#include <argp.h>
|
||||
#endif
|
||||
#include <assert.h>
|
||||
|
||||
#include <errno.h>
|
||||
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include FT_TRUETYPE_TAGS_H
|
||||
|
@ -47,7 +51,9 @@
|
|||
#define FT_ERROR_END_LIST };
|
||||
#include FT_ERRORS_H
|
||||
|
||||
#ifndef GRUB_BUILD
|
||||
#include "progname.h"
|
||||
#endif
|
||||
|
||||
#define GRUB_FONT_DEFAULT_SIZE 16
|
||||
|
||||
|
@ -919,13 +925,10 @@ write_font_pf2 (struct grub_font_info *font_info, char *output_file)
|
|||
fclose (file);
|
||||
}
|
||||
|
||||
#ifndef GRUB_BUILD
|
||||
static struct argp_option options[] = {
|
||||
{"output", 'o', N_("FILE"), 0, N_("save output in FILE [required]"), 0},
|
||||
/* TRANSLATORS: bitmaps are images like e.g. in JPEG. */
|
||||
{"width-spec", 0x103, 0, 0,
|
||||
/* TRANSLATORS: this refers to creating a file containing the width of
|
||||
every glyph but not the glyphs themselves. */
|
||||
N_("create width summary file"), 0},
|
||||
{"index", 'i', N_("NUM"), 0,
|
||||
/* TRANSLATORS: some font files may have multiple faces (fonts).
|
||||
This option is used to chose among them, the first face being '0'.
|
||||
|
@ -953,6 +956,23 @@ static struct argp_option options[] = {
|
|||
{"verbose", 'v', 0, 0, N_("print verbose messages."), 0},
|
||||
{ 0, 0, 0, 0, 0, 0 }
|
||||
};
|
||||
#define my_argp_parse argp_parse
|
||||
#define MY_ARGP_KEY_ARG ARGP_KEY_ARG
|
||||
#define my_error_t error_t
|
||||
#define MY_ARGP_ERR_UNKNOWN ARGP_ERR_UNKNOWN
|
||||
|
||||
#else
|
||||
|
||||
#define my_error_t int
|
||||
#define MY_ARGP_ERR_UNKNOWN -1
|
||||
#define MY_ARGP_KEY_ARG -1
|
||||
#define my_argp_parse(a, argc, argv, b, c, st) my_argp_parse_real(argc, argv, st)
|
||||
struct my_argp_state
|
||||
{
|
||||
void *input;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
struct arguments
|
||||
{
|
||||
|
@ -966,8 +986,15 @@ struct arguments
|
|||
enum file_formats file_format;
|
||||
};
|
||||
|
||||
static error_t
|
||||
argp_parser (int key, char *arg, struct argp_state *state)
|
||||
static int
|
||||
has_argument (int v)
|
||||
{
|
||||
return v =='o' || v == 'i' || v == 'r' || v == 'n' || v == 's'
|
||||
|| v == 'd' || v == 'c';
|
||||
}
|
||||
|
||||
static my_error_t
|
||||
argp_parser (int key, char *arg, struct my_argp_state *state)
|
||||
{
|
||||
/* Get the input argument from argp_parse, which we
|
||||
know is a pointer to our arguments structure. */
|
||||
|
@ -1055,22 +1082,66 @@ argp_parser (int key, char *arg, struct argp_state *state)
|
|||
font_verbosity++;
|
||||
break;
|
||||
|
||||
case ARGP_KEY_ARG:
|
||||
case MY_ARGP_KEY_ARG:
|
||||
assert (arguments->nfiles < arguments->files_max);
|
||||
arguments->files[arguments->nfiles++] = xstrdup(arg);
|
||||
break;
|
||||
|
||||
default:
|
||||
return ARGP_ERR_UNKNOWN;
|
||||
return MY_ARGP_ERR_UNKNOWN;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef GRUB_BUILD
|
||||
|
||||
/* We don't require host platform to have argp. In the same time configuring
|
||||
gnulib for build would result in even worse mess. So we have our
|
||||
minimalistic argp replacement just enough for build system. Most
|
||||
argp features are omitted. */
|
||||
|
||||
static int
|
||||
my_argp_parse_real (int argc, char **argv, void *st)
|
||||
{
|
||||
int curar;
|
||||
struct my_argp_state p;
|
||||
|
||||
p.input = st;
|
||||
|
||||
for (curar = 1; curar < argc; )
|
||||
{
|
||||
if (argv[curar][0] == '-')
|
||||
{
|
||||
if (has_argument (argv[curar][1])
|
||||
&& curar + 1 >= argc)
|
||||
return 1;
|
||||
if (has_argument (argv[curar][1]))
|
||||
{
|
||||
if (argp_parser (argv[curar][1], argv[curar + 1], &p))
|
||||
return 1;
|
||||
curar += 2;
|
||||
continue;
|
||||
}
|
||||
if (argp_parser (argv[curar][1], NULL, &p))
|
||||
return 1;
|
||||
curar++;
|
||||
continue;
|
||||
}
|
||||
if (argp_parser (MY_ARGP_KEY_ARG, argv[curar], &p))
|
||||
return 1;
|
||||
curar++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef GRUB_BUILD
|
||||
static struct argp argp = {
|
||||
options, argp_parser, N_("[OPTIONS] FONT_FILES"),
|
||||
N_("Convert common font file formats into PF2"),
|
||||
NULL, NULL, NULL
|
||||
};
|
||||
#endif
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
|
@ -1078,7 +1149,9 @@ main (int argc, char *argv[])
|
|||
FT_Library ft_lib;
|
||||
struct arguments arguments;
|
||||
|
||||
#ifndef GRUB_BUILD
|
||||
set_program_name (argv[0]);
|
||||
#endif
|
||||
|
||||
grub_util_init_nls ();
|
||||
|
||||
|
@ -1090,7 +1163,7 @@ main (int argc, char *argv[])
|
|||
memset (arguments.files, 0, (arguments.files_max + 1)
|
||||
* sizeof (arguments.files[0]));
|
||||
|
||||
if (argp_parse (&argp, argc, argv, 0, 0, &arguments) != 0)
|
||||
if (my_argp_parse (&argp, argc, argv, 0, 0, &arguments) != 0)
|
||||
{
|
||||
fprintf (stderr, "%s", _("Error in parsing command line arguments\n"));
|
||||
exit(1);
|
||||
|
|
|
@ -30,37 +30,9 @@
|
|||
#include <stdlib.h>
|
||||
#include <getopt.h>
|
||||
|
||||
#include "progname.h"
|
||||
|
||||
/* Please don't internationalise this file. It's pointless. */
|
||||
|
||||
static struct option options[] = {
|
||||
{"help", no_argument, 0, 'h'},
|
||||
{"version", no_argument, 0, 'V'},
|
||||
{"verbose", no_argument, 0, 'v'},
|
||||
{0, 0, 0, 0}
|
||||
};
|
||||
|
||||
static void __attribute__ ((noreturn))
|
||||
usage (int status)
|
||||
{
|
||||
if (status)
|
||||
fprintf (stderr, "Try `%s --help' for more information.\n", program_name);
|
||||
else
|
||||
printf ("\
|
||||
Usage: %s [OPTIONS] input [output]\n\
|
||||
\n\
|
||||
Tool to convert pe image to elf.\n\
|
||||
\nOptions:\n\
|
||||
-h, --help display this message and exit\n\
|
||||
-V, --version print version information and exit\n\
|
||||
-v, --verbose print verbose messages\n\
|
||||
\n\
|
||||
Report bugs to <%s>.\n", program_name, PACKAGE_BUGREPORT);
|
||||
|
||||
exit (status);
|
||||
}
|
||||
|
||||
/*
|
||||
* Section layout
|
||||
*
|
||||
|
@ -490,54 +462,27 @@ main (int argc, char *argv[])
|
|||
{
|
||||
char *image;
|
||||
FILE* fp;
|
||||
|
||||
set_program_name (argv[0]);
|
||||
|
||||
/* Check for options. */
|
||||
while (1)
|
||||
{
|
||||
int c = getopt_long (argc, argv, "hVv", options, 0);
|
||||
|
||||
if (c == -1)
|
||||
break;
|
||||
else
|
||||
switch (c)
|
||||
{
|
||||
case 'h':
|
||||
usage (0);
|
||||
break;
|
||||
|
||||
case 'V':
|
||||
printf ("%s (%s) %s\n", program_name, PACKAGE_NAME, PACKAGE_VERSION);
|
||||
return 0;
|
||||
|
||||
case 'v':
|
||||
verbosity++;
|
||||
break;
|
||||
|
||||
default:
|
||||
usage (1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
char *in, *out;
|
||||
|
||||
/* Obtain PATH. */
|
||||
if (optind >= argc)
|
||||
if (1 >= argc)
|
||||
{
|
||||
fprintf (stderr, "Filename not specified.\n");
|
||||
usage (1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
image = grub_util_read_image (argv[optind]);
|
||||
in = argv[1];
|
||||
if (argc > 2)
|
||||
out = argv[2];
|
||||
else
|
||||
out = in;
|
||||
image = grub_util_read_image (in);
|
||||
|
||||
if (optind + 1 < argc)
|
||||
optind++;
|
||||
|
||||
fp = fopen (argv[optind], "wb");
|
||||
fp = fopen (out, "wb");
|
||||
if (! fp)
|
||||
grub_util_error ("cannot open %s", argv[optind]);
|
||||
grub_util_error ("cannot open %s", out);
|
||||
|
||||
convert_pe (fp, argv[optind], image);
|
||||
convert_pe (fp, out, image);
|
||||
|
||||
fclose (fp);
|
||||
|
||||
|
|
|
@ -44,7 +44,11 @@
|
|||
#include <grub/script_sh.h>
|
||||
|
||||
#define ENABLE_RELOCATABLE 0
|
||||
#ifdef GRUB_BUILD
|
||||
const char *program_name = GRUB_BUILD_PROGRAM_NAME;
|
||||
#else
|
||||
#include "progname.h"
|
||||
#endif
|
||||
|
||||
/* Include malloc.h, only if memalign is available. It is known that
|
||||
memalign is declared in malloc.h in all systems, if present. */
|
||||
|
|
Loading…
Reference in a new issue