mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[syslinux] add detection for Syslinux/Isolinux v5.0
* This is not full Syslinux v5.0 support, but only to prevent the (vesa)menu.c32 message from displaying * Uses the mandatory inclusion of ldlinux.c32 in Isolinux v5.x for the detection * Part of a fix for #142
This commit is contained in:
parent
0b64ef1210
commit
0e1c474ca0
4 changed files with 23 additions and 15 deletions
|
@ -57,6 +57,7 @@ int64_t iso_blocking_status = -1;
|
||||||
static const char* psz_extract_dir;
|
static const char* psz_extract_dir;
|
||||||
static const char* bootmgr_efi_name = "bootmgr.efi";
|
static const char* bootmgr_efi_name = "bootmgr.efi";
|
||||||
static const char* ldlinux_name = "ldlinux.sys";
|
static const char* ldlinux_name = "ldlinux.sys";
|
||||||
|
static const char* syslinux_v5_file = "ldlinux.c32";
|
||||||
static const char* efi_dirname = "/efi/boot";
|
static const char* efi_dirname = "/efi/boot";
|
||||||
static const char* isolinux_name[] = { "isolinux.cfg", "syslinux.cfg", "extlinux.conf"};
|
static const char* isolinux_name[] = { "isolinux.cfg", "syslinux.cfg", "extlinux.conf"};
|
||||||
static const char* pe_dirname[] = { "/i386", "/minint" };
|
static const char* pe_dirname[] = { "/i386", "/minint" };
|
||||||
|
@ -115,6 +116,11 @@ static __inline BOOL check_iso_props(const char* psz_dirname, BOOL* is_syslinux_
|
||||||
*is_syslinux_cfg = TRUE;
|
*is_syslinux_cfg = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Check for a syslinux v5.0 file anywhere
|
||||||
|
if (safe_stricmp(psz_basename, syslinux_v5_file) == 0) {
|
||||||
|
iso_report.has_syslinux_v5 = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
// Check for an old incompatible c32 file anywhere
|
// Check for an old incompatible c32 file anywhere
|
||||||
for (i=0; i<NB_OLD_C32; i++) {
|
for (i=0; i<NB_OLD_C32; i++) {
|
||||||
is_old_c32[i] = FALSE;
|
is_old_c32[i] = FALSE;
|
||||||
|
|
19
src/rufus.c
19
src/rufus.c
|
@ -1021,11 +1021,12 @@ DWORD WINAPI ISOScanThread(LPVOID param)
|
||||||
safe_free(iso_path);
|
safe_free(iso_path);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
uprintf("ISO label: '%s'\r\n Size: %lld bytes\r\n Has a >4GB file: %s\r\n Uses EFI: %s%s\r\n Uses Bootmgr: %s\r\n Uses WinPE: %s%s\r\n Uses isolinux: %s\n",
|
uprintf("ISO label: '%s'\r\n Size: %lld bytes\r\n Has a >4GB file: %s\r\n Uses EFI: %s%s\r\n Uses Bootmgr: %s\r\n Uses WinPE: %s%s\r\n Uses isolinux: %s (v%s)\n",
|
||||||
iso_report.label, iso_report.projected_size, iso_report.has_4GB_file?"Yes":"No", (iso_report.has_efi || iso_report.has_win7_efi)?"Yes":"No",
|
iso_report.label, iso_report.projected_size, iso_report.has_4GB_file?"Yes":"No", (iso_report.has_efi || iso_report.has_win7_efi)?"Yes":"No",
|
||||||
(iso_report.has_win7_efi && (!iso_report.has_efi))?" (win7_x64)":"", iso_report.has_bootmgr?"Yes":"No",
|
(iso_report.has_win7_efi && (!iso_report.has_efi))?" (win7_x64)":"", iso_report.has_bootmgr?"Yes":"No",
|
||||||
IS_WINPE(iso_report.winpe)?"Yes":"No", (iso_report.uses_minint)?" (with /minint)":"", iso_report.has_isolinux?"Yes":"No");
|
IS_WINPE(iso_report.winpe)?"Yes":"No", (iso_report.uses_minint)?" (with /minint)":"", iso_report.has_isolinux?"Yes":"No",
|
||||||
if (iso_report.has_isolinux) {
|
iso_report.has_syslinux_v5?"5.0 or later":"4.x or earlier");
|
||||||
|
if (iso_report.has_isolinux && !iso_report.has_syslinux_v5) {
|
||||||
for (i=0; i<NB_OLD_C32; i++) {
|
for (i=0; i<NB_OLD_C32; i++) {
|
||||||
uprintf(" With an old %s: %s\n", old_c32_name[i], iso_report.has_old_c32[i]?"Yes":"No");
|
uprintf(" With an old %s: %s\n", old_c32_name[i], iso_report.has_old_c32[i]?"Yes":"No");
|
||||||
}
|
}
|
||||||
|
@ -1041,7 +1042,7 @@ DWORD WINAPI ISOScanThread(LPVOID param)
|
||||||
MessageBoxU(hMainDialog, "This ISO image contains a file larger than 4 GB and cannot be used to boot in EFI mode from USB.\r\n"
|
MessageBoxU(hMainDialog, "This ISO image contains a file larger than 4 GB and cannot be used to boot in EFI mode from USB.\r\n"
|
||||||
"This is a technical limitation from the UEFI/FAT32 process, not from " APPLICATION_NAME ".", "Non USB-UEFI compatible ISO", MB_OK|MB_ICONINFORMATION);
|
"This is a technical limitation from the UEFI/FAT32 process, not from " APPLICATION_NAME ".", "Non USB-UEFI compatible ISO", MB_OK|MB_ICONINFORMATION);
|
||||||
safe_free(iso_path);
|
safe_free(iso_path);
|
||||||
} else {
|
} else if (!iso_report.has_syslinux_v5) { // This check is for Syslinux v4.x or earlier
|
||||||
for (i=0; i<NB_OLD_C32; i++) {
|
for (i=0; i<NB_OLD_C32; i++) {
|
||||||
if (iso_report.has_old_c32[i]) {
|
if (iso_report.has_old_c32[i]) {
|
||||||
fd = fopen(old_c32_name[i], "rb");
|
fd = fopen(old_c32_name[i], "rb");
|
||||||
|
@ -1052,13 +1053,13 @@ DWORD WINAPI ISOScanThread(LPVOID param)
|
||||||
use_own_c32[i] = TRUE;
|
use_own_c32[i] = TRUE;
|
||||||
} else {
|
} else {
|
||||||
PrintStatus(0, FALSE, "Obsolete %s detected", old_c32_name[i]);
|
PrintStatus(0, FALSE, "Obsolete %s detected", old_c32_name[i]);
|
||||||
safe_sprintf(msg, sizeof(msg), "This ISO image seems to use an obsolete version of %s\n"
|
safe_sprintf(msg, sizeof(msg), "This ISO image seems to use an obsolete version of '%s'.\n"
|
||||||
"that may prevent boot menus from displaying properly...\n\n"
|
"Because of this, boot menus may not display properly.\n\n"
|
||||||
"Rufus can fix this issue by downloading a newer version for you:\n"
|
"Rufus can fix this issue by downloading a newer version for you:\n"
|
||||||
"- Select 'Yes' to connect to the internet and replace the file.\n"
|
"- Choose 'Yes' to connect to the internet and replace the file.\n"
|
||||||
"- Select 'No' to leave the existing ISO file unmodified.\n"
|
"- Choose 'No' to leave the existing ISO file unmodified.\n"
|
||||||
"If you don't know what to do, you should select 'Yes'.\n\n"
|
"If you don't know what to do, you should select 'Yes'.\n\n"
|
||||||
"Note that the file will be downloaded in the current directory and once a\n"
|
"Note: the new file will be downloaded in the current directory and once a "
|
||||||
"'%s' exists there, it will always be used as replacement.\n", old_c32_name[i], old_c32_name[i]);
|
"'%s' exists there, it will always be used as replacement.\n", old_c32_name[i], old_c32_name[i]);
|
||||||
safe_sprintf(msg_title, sizeof(msg_title), "Replace %s?", old_c32_name[i]);
|
safe_sprintf(msg_title, sizeof(msg_title), "Replace %s?", old_c32_name[i]);
|
||||||
if (MessageBoxA(hMainDialog, msg, msg_title, MB_YESNO|MB_ICONWARNING) == IDYES) {
|
if (MessageBoxA(hMainDialog, msg, msg_title, MB_YESNO|MB_ICONWARNING) == IDYES) {
|
||||||
|
|
|
@ -216,6 +216,7 @@ typedef struct {
|
||||||
BOOL has_autorun;
|
BOOL has_autorun;
|
||||||
BOOL has_old_c32[NB_OLD_C32];
|
BOOL has_old_c32[NB_OLD_C32];
|
||||||
BOOL has_old_vesamenu;
|
BOOL has_old_vesamenu;
|
||||||
|
BOOL has_syslinux_v5;
|
||||||
BOOL uses_minint;
|
BOOL uses_minint;
|
||||||
} RUFUS_ISO_REPORT;
|
} RUFUS_ISO_REPORT;
|
||||||
|
|
||||||
|
|
10
src/rufus.rc
10
src/rufus.rc
|
@ -30,7 +30,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
IDD_DIALOG DIALOGEX 12, 12, 206, 329
|
IDD_DIALOG DIALOGEX 12, 12, 206, 329
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
EXSTYLE WS_EX_APPWINDOW
|
EXSTYLE WS_EX_APPWINDOW
|
||||||
CAPTION "Rufus v1.3.4.251"
|
CAPTION "Rufus v1.3.4.252"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,94,291,50,14
|
DEFPUSHBUTTON "Start",IDC_START,94,291,50,14
|
||||||
|
@ -276,8 +276,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 1,3,4,251
|
FILEVERSION 1,3,4,252
|
||||||
PRODUCTVERSION 1,3,4,251
|
PRODUCTVERSION 1,3,4,252
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -294,13 +294,13 @@ BEGIN
|
||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)"
|
VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)"
|
||||||
VALUE "FileDescription", "Rufus"
|
VALUE "FileDescription", "Rufus"
|
||||||
VALUE "FileVersion", "1.3.4.251"
|
VALUE "FileVersion", "1.3.4.252"
|
||||||
VALUE "InternalName", "Rufus"
|
VALUE "InternalName", "Rufus"
|
||||||
VALUE "LegalCopyright", "© 2011-2013 Pete Batard (GPL v3)"
|
VALUE "LegalCopyright", "© 2011-2013 Pete Batard (GPL v3)"
|
||||||
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
|
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
|
||||||
VALUE "OriginalFilename", "rufus.exe"
|
VALUE "OriginalFilename", "rufus.exe"
|
||||||
VALUE "ProductName", "Rufus"
|
VALUE "ProductName", "Rufus"
|
||||||
VALUE "ProductVersion", "1.3.4.251"
|
VALUE "ProductVersion", "1.3.4.252"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
Loading…
Reference in a new issue