1
1
Fork 0
mirror of https://github.com/pbatard/rufus.git synced 2024-08-14 23:57:05 +00:00

[iso] update libcdio to latest

* Also remove MSG_176 from English version
* Also perform additional cleanup and remove a Clang warning
* Closes #224
This commit is contained in:
Pete Batard 2013-11-23 22:05:34 +00:00
parent f97f60d55a
commit fcf16fed25
8 changed files with 338 additions and 223 deletions

View file

@ -11,7 +11,10 @@ s/[ \t]*$//
# remove the UI controls for "en-US" as they are just here for translators
# 1,300 means we only do this for the the first 300 lines
1,300 {/g IDD_DIALOG/,/g IDD_MESSAGES/{/g IDD_MESSAGES/!d}}
1,300 {/^g IDD_DIALOG/,/^g IDD_MESSAGES/{/^g IDD_MESSAGES/!d}}
# also remove the "translated by" line for English
1,500{/^t MSG_176/d}
# output file *MUST* be CR/LF
s/$/\r/

View file

@ -367,7 +367,6 @@ static BOOL FormatFAT32(DWORD DriveIndex)
// Debug temp vars
ULONGLONG FatNeeded, ClusterCount;
// TODO: use another lmsg for Large FAT32
PrintStatus(0, TRUE, lmprintf(MSG_222, "Large FAT32"));
VolumeId = GetVolumeID();
@ -1439,7 +1438,7 @@ DWORD WINAPI FormatThread(LPVOID param)
goto out;
}
if ((bt == BT_UEFI) && (!iso_report.has_efi) && (iso_report.has_win7_efi)) {
// TODO: (v1.4.0) check ISO with EFI only
// TODO: Check ISO with EFI only
PrintStatus(0, TRUE, lmprintf(MSG_232));
wim_image[0] = drive_name[0];
efi_dst[0] = drive_name[0];

View file

@ -1048,6 +1048,22 @@ lsn_t iso9660_get_dir_extent(const iso9660_dir_t *p_idr);
*/
char *iso9660_get_system_id(const iso9660_pvd_t *p_pvd);
/*!
Return "yup" if any file has Rock-Ridge extensions. Warning: this can
be time consuming. On an ISO 9600 image with lots of files but no Rock-Ridge
extensions, the entire directory structure will be scanned up to u_file_limit.
@param p_iso the ISO-9660 file image to get data from
@param u_file_limit the maximimum number of (non-rock-ridge) files
to consider before giving up and returning "dunno".
"dunno" can also be returned if there was some error encountered
such as not being able to allocate memory in processing.
*/
bool_3way_t iso9660_have_rr(iso9660_t *p_iso, uint64_t u_file_limit);
/*!
Get the system ID. psz_system_id is set to NULL if there
is some problem in getting this and false is returned.

View file

@ -1519,3 +1519,102 @@ iso9660_ifs_is_xa (const iso9660_t * p_iso)
if (!p_iso) return false;
return yep == p_iso->b_xa;
}
static bool_3way_t
iso_have_rr_traverse (iso9660_t *p_iso, const iso9660_stat_t *_root,
char **splitpath, uint64_t *pu_file_limit)
{
unsigned offset = 0;
uint8_t *_dirbuf = NULL;
int ret;
bool_3way_t have_rr = nope;
if (!splitpath[0]) return false;
if (_root->type == _STAT_FILE) return nope;
if (*pu_file_limit == 0) return dunno;
cdio_assert (_root->type == _STAT_DIR);
_dirbuf = calloc(1, _root->secsize * ISO_BLOCKSIZE);
if (!_dirbuf)
{
cdio_warn("Couldn't calloc(1, %d)", _root->secsize * ISO_BLOCKSIZE);
return dunno;
}
ret = iso9660_iso_seek_read (p_iso, _dirbuf, _root->lsn, _root->secsize);
if (ret!=ISO_BLOCKSIZE*_root->secsize) return false;
while (offset < (_root->secsize * ISO_BLOCKSIZE))
{
iso9660_dir_t *p_iso9660_dir = (void *) &_dirbuf[offset];
iso9660_stat_t *p_stat;
if (!iso9660_get_dir_len(p_iso9660_dir))
{
offset++;
continue;
}
p_stat = _iso9660_dir_to_statbuf (p_iso9660_dir, p_iso->b_xa,
p_iso->u_joliet_level);
have_rr = p_stat->rr.b3_rock;
if ( have_rr != yep) {
have_rr = iso_have_rr_traverse (p_iso, p_stat, &splitpath[1], pu_file_limit);
}
if (have_rr != nope) {
free (_dirbuf);
return have_rr;
}
free(p_stat);
offset += iso9660_get_dir_len(p_iso9660_dir);
*pu_file_limit = (*pu_file_limit)-1;
if ((*pu_file_limit) == 0) {
free (_dirbuf);
return dunno;
}
}
cdio_assert (offset == (_root->secsize * ISO_BLOCKSIZE));
/* not found */
free (_dirbuf);
return nope;
}
/*!
Return "yup" if any file has Rock-Ridge extensions. Warning: this can
be time consuming. On an ISO 9600 image with lots of files but no Rock-Ridge
extensions, the entire directory structure will be scanned up to u_file_limit.
@param p_iso the ISO-9660 file image to get data from
@param u_file_limit the maximimum number of (non-rock-ridge) files
to consider before giving up and returning "dunno".
"dunno" can also be returned if there was some error encountered
such as not being able to allocate memory in processing.
*/
extern bool_3way_t
iso9660_have_rr(iso9660_t *p_iso, uint64_t u_file_limit)
{
iso9660_stat_t *p_root;
char *p_psz_splitpath[2] = {strdup("/"), strdup("")};
bool_3way_t is_rr = nope;
if (!p_iso) return false;
p_root = _ifs_stat_root (p_iso);
if (!p_root) return dunno;
if (u_file_limit == 0) u_file_limit = UINT64_MAX;
is_rr = iso_have_rr_traverse (p_iso, p_root, p_psz_splitpath, &u_file_limit);
free(p_root);
// _cdio_strfreev (p_psz_splitpath);
return is_rr;
}

View file

@ -246,7 +246,7 @@ void add_dialog_command(int index, loc_cmd* lcmd)
{
char str[128];
uint32_t i;
if ((lcmd == NULL) || (index < 0) || (index >= ARRAYSIZE(loc_dlg))) {
if ((lcmd == NULL) || (lcmd->txt[0] == NULL) || (index < 0) || (index >= ARRAYSIZE(loc_dlg))) {
uprintf("localization: invalid parameter for add_dialog_command\n");
return;
}

View file

@ -2099,10 +2099,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
if ( (!get_supported_locales(loc_file))
|| ((selected_locale = ((locale_name == NULL)?get_locale_from_lcid(lcid, TRUE):get_locale_from_name(locale_name, TRUE))) == NULL) ) {
uprintf("FATAL: Could not access locale!\n");
MessageBoxU(NULL, "The locale data is missing or invalid. This application will now exit."
// TODO: remove this line for release!
"\n\nTRANSLATORS: You need to add a 'v 1.0.0' line to your loc file. See the latest 'new_translation.loc'",
"Fatal error", MB_ICONSTOP);
MessageBoxU(NULL, "The locale data is missing or invalid. This application will now exit.", "Fatal error", MB_ICONSTOP);
goto out;
}

View file

@ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
IDD_DIALOG DIALOGEX 12, 12, 206, 329
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_APPWINDOW
CAPTION "Rufus v1.4.0.327"
CAPTION "Rufus v1.4.0.328"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
DEFPUSHBUTTON "Start",IDC_START,94,291,50,14
@ -288,8 +288,8 @@ END
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,4,0,327
PRODUCTVERSION 1,4,0,327
FILEVERSION 1,4,0,328
PRODUCTVERSION 1,4,0,328
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
@ -306,13 +306,13 @@ BEGIN
BEGIN
VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)"
VALUE "FileDescription", "Rufus"
VALUE "FileVersion", "1.4.0.327"
VALUE "FileVersion", "1.4.0.328"
VALUE "InternalName", "Rufus"
VALUE "LegalCopyright", "© 2011-2013 Pete Batard (GPL v3)"
VALUE "LegalTrademarks", "http://www.gnu.org/copyleft/gpl.html"
VALUE "OriginalFilename", "rufus.exe"
VALUE "ProductName", "Rufus"
VALUE "ProductVersion", "1.4.0.327"
VALUE "ProductVersion", "1.4.0.328"
END
END
BLOCK "VarFileInfo"

View file

@ -36,7 +36,7 @@
#include "smart.h"
#include "hdd_vs_ufd.h"
#if defined(RUFUS_TEST)
/* Helper functions */
static uint8_t GetAtaDirection(uint8_t AtaCmd, uint8_t Features) {
// Far from complete -- only the commands we *may* use.
@ -352,6 +352,7 @@ BOOL Identify(HANDLE hPhysical)
_aligned_free(idd);
return TRUE;
}
#endif
/* Generic SMART access. Kept for reference, as it doesn't work for USB to ATA/SATA bridges */
#if 0