[iso] better fix for processing of openSUSE Leap ISOs

* From the discussion on the libcdio mailing list, and simplified
  since the only archs we support are little-endian.
This commit is contained in:
Pete Batard 2018-05-27 21:46:34 +01:00
parent 6451a090f3
commit add0e156df
4 changed files with 12 additions and 28 deletions

View File

@ -2,9 +2,10 @@ o Version 3.0 (2018.??.??)
UI redesign to follow the flow of user operations (with thanks to Fahad Al-Riyami for the concept) UI redesign to follow the flow of user operations (with thanks to Fahad Al-Riyami for the concept)
Drop XP and Vista platform support Drop XP and Vista platform support
Switch all downloads to SSL and use https://rufus.ie as the new base URL Switch all downloads to SSL and use https://rufus.ie as the new base URL
Improve support of efi.img files on Linux ISOs
Add ARM64 support for UEFI:NTFS Add ARM64 support for UEFI:NTFS
Fix delays when querying floppy drives during device enumeration Fix delays when querying floppy drives during device enumeration
Improve support of efi.img files on Linux ISOs
Improve support for non-ISO9660 compliant openSUSE Leap ISOs
Improve translation support and remove manual positioning Improve translation support and remove manual positioning
Internal fixes and improvements Internal fixes and improvements

View File

@ -171,9 +171,6 @@ to_723(uint16_t i)
static CDIO_INLINE uint16_t static CDIO_INLINE uint16_t
from_723 (uint32_t p) from_723 (uint32_t p)
{ {
if (uint32_swap_le_be (p) != p)
cdio_warn ("from_723: broken byte order");
return (0xFFFF & p); return (0xFFFF & p);
} }
@ -200,10 +197,6 @@ to_733(uint32_t i)
static CDIO_INLINE uint32_t static CDIO_INLINE uint32_t
from_733 (uint64_t p) from_733 (uint64_t p)
{ {
// Commented out for Rufus
// if (uint64_swap_le_be (p) != p)
// cdio_warn ("from_733: broken byte order");
return (UINT32_C(0xFFFFFFFF) & p); return (UINT32_C(0xFFFFFFFF) & p);
} }
@ -211,8 +204,7 @@ static CDIO_INLINE uint32_t
from_733_with_err (uint64_t p, bool *err) from_733_with_err (uint64_t p, bool *err)
{ {
if (uint64_swap_le_be (p) != p) { if (uint64_swap_le_be (p) != p) {
// Commented out for Rufus cdio_warn ("from_733: broken byte order");
// cdio_warn ("from_733: broken byte order");
*err = true; *err = true;
} else { } else {
*err = false; *err = false;

View File

@ -717,7 +717,6 @@ _iso9660_dir_to_statbuf (iso9660_dir_t *p_iso9660_dir,
iso711_t i_fname; iso711_t i_fname;
unsigned int stat_len; unsigned int stat_len;
iso9660_stat_t *p_stat = last_p_stat; iso9660_stat_t *p_stat = last_p_stat;
bool err;
char rr_fname[256] = ""; char rr_fname[256] = "";
int i_rr_fname; int i_rr_fname;
@ -738,17 +737,9 @@ _iso9660_dir_to_statbuf (iso9660_dir_t *p_iso9660_dir,
} }
p_stat->type = (p_iso9660_dir->file_flags & ISO_DIRECTORY) p_stat->type = (p_iso9660_dir->file_flags & ISO_DIRECTORY)
? _STAT_DIR : _STAT_FILE; ? _STAT_DIR : _STAT_FILE;
p_stat->lsn[p_stat->extents] = from_733_with_err (p_iso9660_dir->extent, &err); p_stat->lsn[p_stat->extents] = from_733 (p_iso9660_dir->extent);
if (err) { p_stat->size[p_stat->extents] = from_733 (p_iso9660_dir->size);
free(p_stat);
return NULL;
}
p_stat->size[p_stat->extents] = from_733_with_err (p_iso9660_dir->size, &err);
p_stat->total_size += p_stat->size[p_stat->extents]; p_stat->total_size += p_stat->size[p_stat->extents];
if (err) {
free(p_stat);
return NULL;
}
p_stat->secsize[p_stat->extents] = _cdio_len2blocks (p_stat->size[p_stat->extents], ISO_BLOCKSIZE); p_stat->secsize[p_stat->extents] = _cdio_len2blocks (p_stat->size[p_stat->extents], ISO_BLOCKSIZE);
p_stat->rr.b3_rock = dunno; /*FIXME should do based on mask */ p_stat->rr.b3_rock = dunno; /*FIXME should do based on mask */
p_stat->b_xa = false; p_stat->b_xa = false;
@ -1123,8 +1114,8 @@ _fs_iso_stat_traverse (iso9660_t *p_iso, const iso9660_stat_t *_root,
if (!p_stat) { if (!p_stat) {
cdio_warn("Bad directory information for %s", splitpath[0]); cdio_warn("Bad directory information for %s", splitpath[0]);
// Patched for Rufus - Don't bail out on this free(_dirbuf);
continue; return NULL;
} }
/* If we have multiextent file parts, loop until the last one */ /* If we have multiextent file parts, loop until the last one */

View File

@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDD_DIALOG DIALOGEX 12, 12, 232, 326 IDD_DIALOG DIALOGEX 12, 12, 232, 326
STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_ACCEPTFILES EXSTYLE WS_EX_ACCEPTFILES
CAPTION "Rufus 3.0.1299" CAPTION "Rufus 3.0.1300"
FONT 9, "Segoe UI Symbol", 400, 0, 0x0 FONT 9, "Segoe UI Symbol", 400, 0, 0x0
BEGIN BEGIN
LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP LTEXT "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP
@ -389,8 +389,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 3,0,1299,0 FILEVERSION 3,0,1300,0
PRODUCTVERSION 3,0,1299,0 PRODUCTVERSION 3,0,1300,0
FILEFLAGSMASK 0x3fL FILEFLAGSMASK 0x3fL
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -407,13 +407,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", "3.0.1299" VALUE "FileVersion", "3.0.1300"
VALUE "InternalName", "Rufus" VALUE "InternalName", "Rufus"
VALUE "LegalCopyright", "© 2011-2018 Pete Batard (GPL v3)" VALUE "LegalCopyright", "© 2011-2018 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", "3.0.1299" VALUE "ProductVersion", "3.0.1300"
END END
END END
BLOCK "VarFileInfo" BLOCK "VarFileInfo"