merge mainline into emu-mod
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 7 Feb 2010 02:06:33 +0000 (03:06 +0100)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sun, 7 Feb 2010 02:06:33 +0000 (03:06 +0100)
20 files changed:
1  2 
Makefile.in
commands/search.c
commands/sleep.c
conf/any-emu.rmk
configure.ac
disk/loopback.c
font/font_cmd.c
partmap/acorn.c
partmap/amiga.c
partmap/apple.c
partmap/gpt.c
partmap/msdos.c
partmap/sun.c
term/gfxterm.c
util/grub-emu.c
video/bitmap.c
video/readers/jpeg.c
video/readers/png.c
video/readers/tga.c
video/video.c

diff --cc Makefile.in
Simple merge
@@@ -179,22 -146,29 +146,29 @@@ grub_cmd_do_search (grub_command_t cmd 
    return grub_errno;
  }
  
- static grub_extcmd_t cmd;
+ static grub_command_t cmd;
  
- GRUB_MOD_INIT(search)
+ #ifdef DO_SEARCH_FILE
 -GRUB_MOD_INIT(search_file)
++GRUB_MOD_INIT(search_fs_file)
+ #elif defined (DO_SEARCH_FS_UUID)
+ GRUB_MOD_INIT(search_fs_uuid)
+ #else
 -GRUB_MOD_INIT(search_fs_label)
++GRUB_MOD_INIT(search_label)
+ #endif
  {
    cmd =
-     grub_register_extcmd ("search", grub_cmd_search,
-                         GRUB_COMMAND_FLAG_BOTH,
-                         "search [-f|-l|-u|-s|-n] NAME",
-                         "Search devices by file, filesystem label or filesystem UUID."
-                         " If --set is specified, the first device found is"
-                         " set to a variable. If no variable name is"
-                         " specified, \"root\" is used.",
-                         options);
+     grub_register_command (COMMAND_NAME, grub_cmd_do_search,
+                          N_("NAME [VARIABLE]"),
+                          HELP_MESSAGE);
  }
  
- GRUB_MOD_FINI(search)
+ #ifdef DO_SEARCH_FILE
 -GRUB_MOD_FINI(search_file)
++GRUB_MOD_FINI(search_fs_file)
+ #elif defined (DO_SEARCH_FS_UUID)
+ GRUB_MOD_FINI(search_fs_uuid)
+ #else
 -GRUB_MOD_FINI(search_fs_label)
++GRUB_MOD_FINI(search_label)
+ #endif
  {
-   grub_unregister_extcmd (cmd);
+   grub_unregister_command (cmd);
  }
@@@ -22,7 -22,9 +22,8 @@@
  #include <grub/time.h>
  #include <grub/types.h>
  #include <grub/misc.h>
 -#include <grub/machine/time.h>
  #include <grub/extcmd.h>
+ #include <grub/i18n.h>
  
  static const struct grub_arg_option options[] =
    {
@@@ -6,80 -3,127 +6,90 @@@ COMMON_CFLAGS += -DGRUB_UTIL=
  # Used by various components.  These rules need to precede them.
  script/lexer.c_DEPENDENCIES = grub_script.tab.h
  
 -sbin_UTILITIES += grub-emu
 +#sbin_UTILITIES += grub-emu
  util/grub-emu.c_DEPENDENCIES = grub_emu_init.h
 -grub_emu_SOURCES = commands/minicmd.c commands/cat.c commands/cmp.c   \
 -      commands/configfile.c commands/echo.c commands/help.c           \
 -      commands/handler.c commands/ls.c commands/test.c                \
 -      commands/search_wrap.c commands/search_file.c                   \
 -      commands/search_label.c commands/search_uuid.c                  \
 -      commands/blocklist.c commands/hexdump.c                         \
 -      lib/hexdump.c commands/halt.c commands/reboot.c                 \
 -      lib/envblk.c commands/loadenv.c                                 \
 -      commands/gptsync.c commands/probe.c commands/xnu_uuid.c         \
 -      commands/password.c commands/keystatus.c                        \
 -      disk/host.c disk/loopback.c disk/scsi.c                         \
 -      fs/fshelp.c                                                     \
 -      \
 -      io/gzio.c                                                       \
 -      kern/device.c kern/disk.c kern/dl.c kern/elf.c kern/env.c       \
 +pkglib_MODULES += main.mod
 +main_mod_SOURCES = kern/device.c kern/disk.c kern/dl.c  kern/env.c    \
        kern/err.c kern/list.c kern/handler.c                           \
 -      kern/command.c kern/corecmd.c commands/extcmd.c kern/file.c     \
 +      kern/command.c kern/corecmd.c kern/file.c                       \
        kern/fs.c commands/boot.c kern/main.c kern/misc.c kern/parser.c \
-       kern/partition.c kern/reader.c kern/term.c                      \
+       kern/partition.c kern/term.c                                    \
        kern/rescue_reader.c kern/rescue_parser.c                       \
 -      lib/arg.c normal/cmdline.c normal/datetime.c normal/misc.c      \
 -      normal/handler.c normal/auth.c lib/crypto.c normal/autofs.c     \
 -      normal/completion.c normal/main.c normal/color.c                \
 -      normal/menu.c normal/menu_entry.c               \
 -      normal/menu_text.c normal/crypto.c normal/term.c                \
 -      commands/terminal.c normal/context.c lib/charset.c \
 -      script/main.c script/execute.c script/function.c                \
 -      script/lexer.c script/script.c grub_script.tab.c                \
 -      partmap/amiga.c partmap/apple.c partmap/msdos.c partmap/sun.c   \
 -      partmap/acorn.c partmap/gpt.c                                   \
 -      \
 -      fs/affs.c fs/cpio.c  fs/fat.c fs/ext2.c fs/hfs.c                \
 -      fs/hfsplus.c fs/iso9660.c fs/udf.c fs/jfs.c fs/minix.c          \
 -      fs/ntfs.c fs/ntfscomp.c fs/reiserfs.c fs/sfs.c                  \
 -      fs/ufs.c fs/ufs2.c fs/xfs.c fs/afs.c fs/afs_be.c                \
 -      fs/befs.c fs/befs_be.c fs/tar.c                                 \
        \
 -      video/video.c video/fb/video_fb.c video/fb/fbblit.c             \
 -        video/fb/fbfill.c video/fb/fbutil.c commands/videotest.c        \
 -      video/bitmap.c video/bitmap_scale.c video/readers/tga.c         \
 -      video/readers/jpeg.c video/readers/png.c font/font_cmd.c        \
 -      font/font.c term/gfxterm.c io/bufio.c                           \
 -      \
 -      gfxmenu/gfxmenu.c gfxmenu/model.c gfxmenu/view.c                \
 -      gfxmenu/icon_manager.c gfxmenu/theme_loader.c                   \
 -      gfxmenu/widget-box.c gfxmenu/gui_canvas.c                       \
 -      gfxmenu/gui_circular_progress.c gfxmenu/gui_box.c               \
 -      gfxmenu/gui_label.c gfxmenu/gui_list.c gfxmenu/gui_image.c      \
 -      gfxmenu/gui_progress_bar.c gfxmenu/gui_util.c                   \
 -      gfxmenu/gui_string_util.c gfxmenu/named_colors.c trigtables.c   \
 -      \
 -      util/console.c util/hostfs.c util/grub-emu.c util/misc.c        \
 +      util/console.c  util/grub-emu.c util/misc.c                     \
        util/hostdisk.c util/getroot.c                                  \
        \
 -      disk/raid.c disk/raid5_recover.c disk/raid6_recover.c           \
 -      disk/mdraid_linux.c disk/dmraid_nvidia.c disk/lvm.c             \
 -      commands/parttool.c parttool/msdospart.c                        \
 -      lib/libgcrypt-grub/cipher/md5.c \
        grub_emu_init.c gnulib/progname.c
 -grub_emu_CFLAGS += -Wno-missing-field-initializers -Wno-error -I$(srcdir)/lib/libgcrypt_wrap
 -
 +main_mod_CFLAGS = $(CPPFLAGS) $(CFLAGS) -DGRUB_UTIL=1
 +main_mod_LDFLAGS = $(COMMON_LDFLAGS)
 +
 +# For hostfs.mod.
 +pkglib_MODULES += hostfs.mod
 +hostfs_mod_SOURCES = util/hostfs.c
 +hostfs_mod_CFLAGS = $(COMMON_CFLAGS)
 +hostfs_mod_LDFLAGS = $(COMMON_LDFLAGS)
 +
 +# For host.mod.
 +pkglib_MODULES += host.mod
 +host_mod_SOURCES = disk/host.c
 +host_mod_CFLAGS = $(COMMON_CFLAGS)
 +host_mod_LDFLAGS = $(COMMON_LDFLAGS)
 +
 +# For reboot.mod.
 +pkglib_MODULES += reboot.mod
 +reboot_mod_SOURCES = commands/reboot.c
 +reboot_mod_CFLAGS = $(COMMON_CFLAGS)
 +reboot_mod_LDFLAGS = $(COMMON_LDFLAGS)
 +
 +# For halt.mod.
 +pkglib_MODULES += halt.mod
 +halt_mod_SOURCES = commands/halt.c
 +halt_mod_CFLAGS = $(COMMON_CFLAGS)
 +halt_mod_LDFLAGS = $(COMMON_LDFLAGS)
  
  ifeq ($(target_cpu), i386)
 -grub_emu_SOURCES += commands/i386/cpuid.c
 +pkglib_MODULES += cpuid.mod
 +cpuid_mod_SOURCES = commands/i386/cpuid.c
 +cpuid_mod_CFLAGS = $(COMMON_CFLAGS)
 +cpuid_mod_LDFLAGS = $(COMMON_LDFLAGS)
  endif
  
  grub_emu_LDFLAGS = $(LIBCURSES)
  
  ifeq ($(enable_grub_emu_usb), yes)
 -grub_emu_SOURCES += disk/usbms.c util/usb.c bus/usb/usb.c     \
 +pkglib_MODULES += usb.mod
 +usb_mod_SOURCES = disk/usbms.c util/usb.c bus/usb/usb.c       \
                commands/usbtest.c
- cpuid_mod_CFLAGS = $(COMMON_CFLAGS)
- usb_mod_LDFLAGS = $(COMMON_LDFLAGS) $(LIBUSB)
 -grub_emu_LDFLAGS += $(LIBCURSES) $(LIBUSB)
++usb_mod_CFLAGS = $(COMMON_CFLAGS)
++usb_mod_LDFLAGS = $(COMMON_LDFLAGS)
++grub_emu_LDFLAGS += $(LIBUSB)
+ endif
+ ifeq ($(enable_grub_emu_sdl), yes)
 -grub_emu_SOURCES += util/sdl.c
++pkglib_MODULES += sdl.mod
++sdl_mod_SOURCES = util/sdl.c
++sdl_mod_LDFLAGS = $(COMMON_LDFLAGS)
+ grub_emu_LDFLAGS += $(LIBSDL)
  endif
  
  ifeq ($(enable_grub_emu_pci), yes)
 -grub_emu_SOURCES += util/pci.c commands/lspci.c
 +pkglib_MODULES += pci.mod
 +pci_mod_SOURCES = util/pci.c commands/lspci.c
- pci_mod_LDFLAGS = $(LIBPCIACCESS)
++pci_mod_LDFLAGS = $(COMMON_LDFLAGS)
+ grub_emu_LDFLAGS += $(LIBPCIACCESS)
  endif
  
 -grub_emu_init.lst: geninit.sh $(filter-out grub_emu_init.c,$(grub_emu_SOURCES))
 -      rm -f $@; grep GRUB_MOD_INIT $(filter %.c,$^) /dev/null > $@
 -DISTCLEANFILES += grub_emu_init.lst
  
 -grub_emu_init.h: grub_emu_init.lst $(filter-out grub_emu_init.c,$(grub_emu_SOURCES)) geninitheader.sh
 -      rm -f $@; sh $(srcdir)/geninitheader.sh $< > $@
 +grub_emu_init.h: genemuinitheader.sh
 +      rm -f $@; echo $(pkglib_MODULES) |sh $(srcdir)/genemuinitheader.sh  > $@
  DISTCLEANFILES += grub_emu_init.h
  
 -grub_emu_init.c: grub_emu_init.lst $(filter-out grub_emu_init.c,$(grub_emu_SOURCES)) geninit.sh grub_emu_init.h
 -      rm -f $@; sh $(srcdir)/geninit.sh $< $(filter %.c,$^) > $@
 +grub_emu_init.c: genemuinit.sh
-       rm -f $@; echo $(pkglib_MODULES) |sed 's,elf.mod,,;s,extcmd.mod,,;s,main.mod,,;s,gzio.mod,,;s,fshelp.mod,,;s,bufio.mod,,;s,setjmp.mod,,;'|sh $(srcdir)/genemuinit.sh > $@
++      rm -f $@; echo $(pkglib_MODULES) |sed 's,elf.mod,,;s,extcmd.mod,,;s,main.mod,,;s,gzio.mod,,;s,fshelp.mod,,;s,bufio.mod,,;s,setjmp.mod,,;s,crypto.mod,,;s,pbkdf2.mod,,;s,trig.mod,,;s,bitmap_scale.mod,,;s,charset.mod,,;'|sh $(srcdir)/genemuinit.sh > $@
  DISTCLEANFILES += grub_emu_init.c
  
 +include $(srcdir)/conf/common.mk
  
-       $(CC) -o $@ $(pkglib_MODULES) $(grub_emu_LDFLAGS) $(LDFLAGS) $(grub_emu_SOURCES)
 +grub-emu: $(pkglib_MODULES)
 -
 -# FIXME: this could be shared with common.rmk
 -
 -trigtables.c: gentrigtables
 -      ./gentrigtables > $@
 -DISTCLEANFILES += trigtables.c
 -gentrigtables: gentrigtables.c
 -      $(CC) -o $@ $^ $(CPPFLAGS) -lm
 -DISTCLEANFILES += gentrigtables
 -
 -# For grub-mkfont.
 -ifeq ($(enable_grub_mkfont), yes)
 -bin_UTILITIES += grub-mkfont
 -grub_mkfont_SOURCES = gnulib/progname.c util/grub-mkfont.c util/misc.c
 -grub_mkfont_CFLAGS = $(freetype_cflags)
 -grub_mkfont_LDFLAGS = $(freetype_libs)
 -endif
 -
 -grub_script.tab.c grub_script.tab.h: script/parser.y
 -      $(YACC) -d -p grub_script_yy -b grub_script $(srcdir)/script/parser.y
 -DISTCLEANFILES += grub_script.tab.c grub_script.tab.h
 -
 -bin_UTILITIES += grub-bin2h
 -grub_bin2h_SOURCES = gnulib/progname.c util/bin2h.c
++      $(CC) -o $@ $(pkglib_MODULES) $(grub_emu_LDFLAGS) $(LDFLAGS)
diff --cc configure.ac
Simple merge
diff --cc disk/loopback.c
Simple merge
diff --cc font/font_cmd.c
Simple merge
diff --cc partmap/acorn.c
Simple merge
diff --cc partmap/amiga.c
Simple merge
diff --cc partmap/apple.c
Simple merge
diff --cc partmap/gpt.c
Simple merge
diff --cc partmap/msdos.c
Simple merge
diff --cc partmap/sun.c
Simple merge
diff --cc term/gfxterm.c
@@@ -290,29 -333,59 +333,59 @@@ grub_gfxterm_fullscreen (void
    /* Make sure screen is black.  */
    color = grub_video_map_rgb (0, 0, 0);
    grub_video_fill_rect (color, 0, 0, mode_info.width, mode_info.height);
+   if (double_redraw)
+     {
+       grub_video_swap_buffers ();
+       grub_video_fill_rect (color, 0, 0, mode_info.width, mode_info.height);
+     }
    bitmap = 0;
  
-   /* Leave borders for virtual screen.  */
-   width = mode_info.width - (2 * DEFAULT_BORDER_WIDTH);
-   height = mode_info.height - (2 * DEFAULT_BORDER_WIDTH);
+   /* Select the font to use.  */
+   font_name = grub_env_get ("gfxterm_font");
+   if (! font_name)
+     font_name = "";   /* Allow fallback to any font.  */
  
-   /* Create virtual screen.  */
-   if (grub_virtual_screen_setup (DEFAULT_BORDER_WIDTH, DEFAULT_BORDER_WIDTH,
-                                  width, height, font_name) != GRUB_ERR_NONE)
+   grub_gfxterm_decorator_hook = NULL;
+   return grub_gfxterm_set_window (GRUB_VIDEO_RENDER_TARGET_DISPLAY,
+                                 0, 0, mode_info.width, mode_info.height,
+                                 double_redraw,
+                                 font_name, DEFAULT_BORDER_WIDTH);
+ }
+ static grub_err_t
 -grub_gfxterm_init (void)
++grub_gfxterm_term_init (void)
+ {
+   char *tmp;
+   grub_err_t err;
+   const char *modevar;
+   /* Parse gfxmode environment variable if set.  */
+   modevar = grub_env_get ("gfxmode");
+   if (! modevar || *modevar == 0)
+     err = grub_video_set_mode (DEFAULT_VIDEO_MODE,
+                              GRUB_VIDEO_MODE_TYPE_PURE_TEXT, 0);
+   else
      {
-       grub_video_restore ();
-       return grub_errno;
+       tmp = grub_xasprintf ("%s;" DEFAULT_VIDEO_MODE, modevar);
+       if (!tmp)
+       return grub_errno;
+       err = grub_video_set_mode (tmp, GRUB_VIDEO_MODE_TYPE_PURE_TEXT, 0);
+       grub_free (tmp);
      }
  
-   /* Mark whole screen as dirty.  */
-   dirty_region_reset ();
-   dirty_region_add (0, 0, mode_info.width, mode_info.height);
+   if (err)
+     return err;
+   err = grub_gfxterm_fullscreen ();
+   if (err)
+     grub_video_restore ();
  
-   return (grub_errno = GRUB_ERR_NONE);
+   return err;
  }
  
- static grub_err_t
grub_gfxterm_term_fini (void)
+ static void
destroy_window (void)
  {
    if (bitmap)
      {
        bitmap = 0;
      }
  
+   repaint_callback = 0;
    grub_virtual_screen_free ();
+ }
  
 -grub_gfxterm_fini (void)
+ static grub_err_t
++grub_gfxterm_term_fini (void)
+ {
+   destroy_window ();
    grub_video_restore ();
  
+   /* Clear error state.  */
+   grub_errno = GRUB_ERR_NONE;
    return GRUB_ERR_NONE;
  }
  
@@@ -949,18 -1178,22 +1178,22 @@@ static struct grub_term_output grub_vid
      .next = 0
    };
  
- static grub_command_t cmd;
+ static grub_extcmd_t background_image_cmd_handle;
  
 -GRUB_MOD_INIT(term_gfxterm)
 +GRUB_MOD_INIT(gfxterm)
  {
    grub_term_register_output ("gfxterm", &grub_video_term);
-   cmd = grub_register_command ("background_image",
-                              grub_gfxterm_background_image_cmd,
-                              0, "Load background image for active terminal");
+   background_image_cmd_handle =
+     grub_register_extcmd ("background_image",
+                           grub_gfxterm_background_image_cmd,
+                           GRUB_COMMAND_FLAG_BOTH,
+                           "[-m (stretch|normal)] FILE",
+                           "Load background image for active terminal.",
+                           background_image_cmd_options);
  }
  
 -GRUB_MOD_FINI(term_gfxterm)
 +GRUB_MOD_FINI(gfxterm)
  {
-   grub_unregister_command (cmd);
+   grub_unregister_extcmd (background_image_cmd_handle);
    grub_term_unregister_output (&grub_video_term);
  }
diff --cc util/grub-emu.c
Simple merge
diff --cc video/bitmap.c
Simple merge
@@@ -736,10 -740,10 +740,10 @@@ GRUB_MOD_INIT (jpeg
  #endif
  }
  
 -GRUB_MOD_FINI (video_reader_jpeg)
 +GRUB_MOD_FINI (jpeg)
  {
  #if defined(JPEG_DEBUG)
-   grub_unregister_command ("jpegtest");
+   grub_unregister_command (cmd);
  #endif
    grub_video_bitmap_reader_unregister (&jpeg_reader);
    grub_video_bitmap_reader_unregister (&jpg_reader);
@@@ -900,10 -904,10 +904,10 @@@ GRUB_MOD_INIT (png
  #endif
  }
  
 -GRUB_MOD_FINI (video_reader_png)
 +GRUB_MOD_FINI (png)
  {
  #if defined(PNG_DEBUG)
-   grub_unregister_command ("pngtest");
+   grub_unregister_command (cmd);
  #endif
    grub_video_bitmap_reader_unregister (&png_reader);
  }
@@@ -485,10 -486,10 +486,10 @@@ GRUB_MOD_INIT(tga
  #endif
  }
  
 -GRUB_MOD_FINI(video_reader_tga)
 +GRUB_MOD_FINI(tga)
  {
  #if defined(TGA_DEBUG)
-   grub_unregister_command ("tgatest");
+   grub_unregister_command (cmd);
  #endif
    grub_video_bitmap_reader_unregister (&tga_reader);
  }
diff --cc video/video.c
Simple merge