SHA256
1
0
forked from pool/syslinux
syslinux/syslinux-4.04-cwd.patch
Steffen Winterfeldt 0620ccce49 - Use %autosetup macro: allows us to eliminate usage of deprecated
%patchN syntax.
- Normalize all patches to apply as -p1
  + Rebased remove-note-gnu-section.patch
  + Rebased sysmacros.patch
- Rename all *.diff files to *.patch, aligning one a common suffix:
  + syslinux-4.04-align.diff -> syslinux-4.04-align.patch
  + syslinux-4.04-cache_fix.diff -> syslinux-4.04-cache_fix.patch
  + syslinux-4.04-cwd.diff -> syslinux-4.04-cwd.patch
  + syslinux-4.04-gcc10.diff -> syslinux-4.04-gcc10.patch
  + syslinux-4.04-gcc47.diff -> syslinux-4.04-gcc47.patch
  + syslinux-4.04-geometry.diff -> syslinux-4.04-geometry.patch
  + syslinux-4.04-iso9660.diff -> syslinux-4.04-iso9660.patch
  + syslinux-4.04-isohybrid_efi.diff -> syslinux-4.04-isohybrid_efi.patch
  + syslinux-4.04-isohybrid_efi_optional.diff -> syslinux-4.04-isohybrid_efi_optional.patch
  + syslinux-4.04-isohybrid_mbr.diff -> syslinux-4.04-isohybrid_mbr.patch
  + syslinux-4.04-libext2fs.diff -> syslinux-4.04-libext2fs.patch
  + syslinux-4.04-localboot.diff -> syslinux-4.04-localboot.patch
  + syslinux-4.04-lzo.diff -> syslinux-4.04-lzo.patch
  + syslinux-4.04-mboot_bootif.diff -> syslinux-4.04-mboot_bootif.patch
  + syslinux-4.04-md5pass.diff -> syslinux-4.04-md5pass.patch
  + syslinux-4.04-miniacc.diff -> syslinux-4.04-miniacc.patch
  + syslinux-4.04-mtime.diff -> syslinux-4.04-mtime.patch
  + syslinux-4.04-noinitrd.diff -> syslinux-4.04-noinitrd.patch
  + syslinux-4.04-nostrip.diff -> syslinux-4.04-nostrip.patch
  + syslinux-4.04-pie.diff -> syslinux-4.04-pie.patch
  + syslinux-4.04-python3.diff -> syslinux-4.04-python3.patch
  + syslinux-4.04-timeout.diff -> syslinux-4.04-timeout.patch

OBS-URL: https://build.opensuse.org/package/show/system:install:head/syslinux?expand=0&rev=109
2024-06-21 12:26:32 +00:00

46 lines
1.4 KiB
Diff

Index: syslinux-4.04/com32/gfxboot/gfxboot.c
===================================================================
--- syslinux-4.04.orig/com32/gfxboot/gfxboot.c
+++ syslinux-4.04/com32/gfxboot/gfxboot.c
@@ -102,6 +102,8 @@ typedef struct __attribute__ ((packed))
// 0: GFX_CB_MENU_INIT accepts 32 bit addresses
// 1: knows about xmem_start, xmem_end
uint16_t reserved_1; // 62:
+ uint32_t gfxboot_cwd; // 64: if set, points to current gfxboot working directory relative
+ // to syslinux working directory
} gfx_config_t;
@@ -181,6 +183,7 @@ int main(int argc, char **argv)
{
int menu_index;
const union syslinux_derivative_info *sdi;
+ char working_dir[256];
openconsole(&dev_stdcon_r, &dev_stdcon_w);
@@ -224,6 +227,10 @@ int main(int argc, char **argv)
return 0;
}
+ if(getcwd(working_dir, sizeof working_dir)) {
+ gfx_config.gfxboot_cwd = (uint32_t) working_dir;
+ }
+
if(gfx_init(argv[1])) {
printf("Error setting up gfxboot\n");
if(argc > 2) show_message(argv[2]);
@@ -806,6 +813,12 @@ void boot(int index)
int i, label_len;
unsigned ipapp;
const struct syslinux_ipappend_strings *ipappend;
+ char *gfxboot_cwd = (char *) gfx_config.gfxboot_cwd;
+
+ if(gfxboot_cwd) {
+ chdir(gfxboot_cwd);
+ gfx_config.gfxboot_cwd = 0;
+ }
for(menu_ptr = menu; menu_ptr; menu_ptr = menu_ptr->next, index--) {
if(!index) break;