mirror of
https://github.com/pbatard/rufus.git
synced 2025-05-19 17:35:10 -04:00
[misc] fix XP compatibility
* MinGW's gcc 4.9.2 seems to implement a broken "%lld" format 64 bit integer is followed by more variables and the app executes on XP => use PRI macros * Also fix partition ID being ignored when using Rufus MBR * Also fix some global vars shadowing and add other improvements
This commit is contained in:
parent
5638519ca0
commit
b830c040d2
10 changed files with 48 additions and 45 deletions
|
@ -342,7 +342,7 @@ static void CALLBACK alarm_intr(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dw
|
||||||
if (!num_blocks)
|
if (!num_blocks)
|
||||||
return;
|
return;
|
||||||
if (FormatStatus) {
|
if (FormatStatus) {
|
||||||
uprintf("%sInterrupting at block %llu\n", bb_prefix,
|
uprintf("%sInterrupting at block %" PRIu64 "\n", bb_prefix,
|
||||||
(unsigned long long) currently_testing);
|
(unsigned long long) currently_testing);
|
||||||
cancel_ops = -1;
|
cancel_ops = -1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -220,7 +220,7 @@ static __inline uint64_t bswap_64(uint64_t x)
|
||||||
#elif defined(BYTE_ORDER) && BYTE_ORDER == LITTLE_ENDIAN
|
#elif defined(BYTE_ORDER) && BYTE_ORDER == LITTLE_ENDIAN
|
||||||
# define BB_BIG_ENDIAN 0
|
# define BB_BIG_ENDIAN 0
|
||||||
# define BB_LITTLE_ENDIAN 1
|
# define BB_LITTLE_ENDIAN 1
|
||||||
#elif defined(__386__) || defined(_M_IX86) || defined(_M_AMD64)
|
#elif defined(__386__) || defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64)
|
||||||
# define BB_BIG_ENDIAN 0
|
# define BB_BIG_ENDIAN 0
|
||||||
# define BB_LITTLE_ENDIAN 1
|
# define BB_LITTLE_ENDIAN 1
|
||||||
#else
|
#else
|
||||||
|
@ -292,7 +292,7 @@ typedef uint64_t bb__aliased_uint64_t FIX_ALIASING;
|
||||||
|
|
||||||
/* ---- Size-saving "small" ints (arch-dependent) ----------- */
|
/* ---- Size-saving "small" ints (arch-dependent) ----------- */
|
||||||
|
|
||||||
#if defined(i386) || defined(__x86_64__) || defined(__mips__) || defined(__cris__)
|
#if defined(__386__) || defined(__i386__) || defined(__x86_64__) || defined(_M_IX86) || defined(_M_X64) || defined(__mips__) || defined(__cris__)
|
||||||
/* add other arches which benefit from this... */
|
/* add other arches which benefit from this... */
|
||||||
typedef signed char smallint;
|
typedef signed char smallint;
|
||||||
typedef unsigned char smalluint;
|
typedef unsigned char smalluint;
|
||||||
|
|
20
src/drive.c
20
src/drive.c
|
@ -656,16 +656,19 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys
|
||||||
{
|
{
|
||||||
// MBR partition types that can be mounted in Windows
|
// MBR partition types that can be mounted in Windows
|
||||||
const uint8_t mbr_mountable[] = { 0x01, 0x04, 0x06, 0x07, 0x0b, 0x0c, 0x0e, 0xef };
|
const uint8_t mbr_mountable[] = { 0x01, 0x04, 0x06, 0x07, 0x0b, 0x0c, 0x0e, 0xef };
|
||||||
BOOL r, ret = FALSE, isUefiTogo;
|
BOOL r, ret = FALSE, isUefiTogo = FALSE;
|
||||||
HANDLE hPhysical;
|
HANDLE hPhysical;
|
||||||
DWORD size;
|
DWORD size;
|
||||||
BYTE geometry[256], layout[4096], part_type;
|
BYTE geometry[256] = {0}, layout[4096] = {0}, part_type;
|
||||||
PDISK_GEOMETRY_EX DiskGeometry = (PDISK_GEOMETRY_EX)(void*)geometry;
|
PDISK_GEOMETRY_EX DiskGeometry = (PDISK_GEOMETRY_EX)(void*)geometry;
|
||||||
PDRIVE_LAYOUT_INFORMATION_EX DriveLayout = (PDRIVE_LAYOUT_INFORMATION_EX)(void*)layout;
|
PDRIVE_LAYOUT_INFORMATION_EX DriveLayout = (PDRIVE_LAYOUT_INFORMATION_EX)(void*)layout;
|
||||||
char* volume_name;
|
char* volume_name;
|
||||||
char tmp[256];
|
char tmp[256];
|
||||||
DWORD i, j;
|
DWORD i, j;
|
||||||
|
|
||||||
|
if (FileSystemName == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
SelectedDrive.nPartitions = 0;
|
SelectedDrive.nPartitions = 0;
|
||||||
// Populate the filesystem data
|
// Populate the filesystem data
|
||||||
FileSystemName[0] = 0;
|
FileSystemName[0] = 0;
|
||||||
|
@ -698,7 +701,7 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys
|
||||||
memcpy(&SelectedDrive.Geometry, &DiskGeometry->Geometry, sizeof(DISK_GEOMETRY));
|
memcpy(&SelectedDrive.Geometry, &DiskGeometry->Geometry, sizeof(DISK_GEOMETRY));
|
||||||
suprintf("Disk type: %s, Sector Size: %d bytes\n", (DiskGeometry->Geometry.MediaType == FixedMedia)?"Fixed":"Removable",
|
suprintf("Disk type: %s, Sector Size: %d bytes\n", (DiskGeometry->Geometry.MediaType == FixedMedia)?"Fixed":"Removable",
|
||||||
DiskGeometry->Geometry.BytesPerSector);
|
DiskGeometry->Geometry.BytesPerSector);
|
||||||
suprintf("Cylinders: %lld, TracksPerCylinder: %d, SectorsPerTrack: %d\n",
|
suprintf("Cylinders: %" PRIi64 ", TracksPerCylinder: %d, SectorsPerTrack: %d\n",
|
||||||
DiskGeometry->Geometry.Cylinders, DiskGeometry->Geometry.TracksPerCylinder, DiskGeometry->Geometry.SectorsPerTrack);
|
DiskGeometry->Geometry.Cylinders, DiskGeometry->Geometry.TracksPerCylinder, DiskGeometry->Geometry.SectorsPerTrack);
|
||||||
|
|
||||||
r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_LAYOUT_EX,
|
r = DeviceIoControl(hPhysical, IOCTL_DISK_GET_DRIVE_LAYOUT_EX,
|
||||||
|
@ -737,10 +740,11 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
suprintf(" Type: %s (0x%02x)\r\n Size: %s (%lld bytes)\r\n Start Sector: %d, Boot: %s, Recognized: %s\n",
|
// NB: MinGW's gcc 4.9.2 broke "%lld" printout on XP so we use the inttypes.h "PRI##" qualifiers
|
||||||
|
suprintf(" Type: %s (0x%02x)\r\n Size: %s (%" PRIi64 " bytes)\r\n Start Sector: %d, Boot: %s, Recognized: %s\n",
|
||||||
((part_type==0x07)&&(FileSystemName[0]!=0))?FileSystemName:GetPartitionType(part_type), part_type,
|
((part_type==0x07)&&(FileSystemName[0]!=0))?FileSystemName:GetPartitionType(part_type), part_type,
|
||||||
SizeToHumanReadable(DriveLayout->PartitionEntry[i].PartitionLength.QuadPart, TRUE, FALSE),
|
SizeToHumanReadable(DriveLayout->PartitionEntry[i].PartitionLength.QuadPart, TRUE, FALSE),
|
||||||
DriveLayout->PartitionEntry[i].PartitionLength, DriveLayout->PartitionEntry[i].Mbr.HiddenSectors,
|
DriveLayout->PartitionEntry[i].PartitionLength.QuadPart, DriveLayout->PartitionEntry[i].Mbr.HiddenSectors,
|
||||||
DriveLayout->PartitionEntry[i].Mbr.BootIndicator?"Yes":"No",
|
DriveLayout->PartitionEntry[i].Mbr.BootIndicator?"Yes":"No",
|
||||||
DriveLayout->PartitionEntry[i].Mbr.RecognizedPartition?"Yes":"No");
|
DriveLayout->PartitionEntry[i].Mbr.RecognizedPartition?"Yes":"No");
|
||||||
if ((part_type == RUFUS_EXTRA_PARTITION_TYPE) || (isUefiTogo))
|
if ((part_type == RUFUS_EXTRA_PARTITION_TYPE) || (isUefiTogo))
|
||||||
|
@ -755,7 +759,7 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys
|
||||||
SelectedDrive.PartitionType = PARTITION_STYLE_GPT;
|
SelectedDrive.PartitionType = PARTITION_STYLE_GPT;
|
||||||
suprintf("Partition type: GPT, NB Partitions: %d\n", DriveLayout->PartitionCount);
|
suprintf("Partition type: GPT, NB Partitions: %d\n", DriveLayout->PartitionCount);
|
||||||
suprintf("Disk GUID: %s\n", GuidToString(&DriveLayout->Gpt.DiskId));
|
suprintf("Disk GUID: %s\n", GuidToString(&DriveLayout->Gpt.DiskId));
|
||||||
suprintf("Max parts: %d, Start Offset: %lld, Usable = %lld bytes\n",
|
suprintf("Max parts: %d, Start Offset: %" PRIi64 ", Usable = %" PRIi64 " bytes\n",
|
||||||
DriveLayout->Gpt.MaxPartitionCount, DriveLayout->Gpt.StartingUsableOffset.QuadPart, DriveLayout->Gpt.UsableLength.QuadPart);
|
DriveLayout->Gpt.MaxPartitionCount, DriveLayout->Gpt.StartingUsableOffset.QuadPart, DriveLayout->Gpt.UsableLength.QuadPart);
|
||||||
for (i=0; i<DriveLayout->PartitionCount; i++) {
|
for (i=0; i<DriveLayout->PartitionCount; i++) {
|
||||||
SelectedDrive.nPartitions++;
|
SelectedDrive.nPartitions++;
|
||||||
|
@ -763,7 +767,7 @@ BOOL GetDrivePartitionData(DWORD DriveIndex, char* FileSystemName, DWORD FileSys
|
||||||
wchar_to_utf8_no_alloc(DriveLayout->PartitionEntry[i].Gpt.Name, tmp, sizeof(tmp));
|
wchar_to_utf8_no_alloc(DriveLayout->PartitionEntry[i].Gpt.Name, tmp, sizeof(tmp));
|
||||||
suprintf("Partition %d:\r\n Type: %s\r\n Name: '%s'\n", i+1,
|
suprintf("Partition %d:\r\n Type: %s\r\n Name: '%s'\n", i+1,
|
||||||
GuidToString(&DriveLayout->PartitionEntry[i].Gpt.PartitionType), tmp);
|
GuidToString(&DriveLayout->PartitionEntry[i].Gpt.PartitionType), tmp);
|
||||||
suprintf(" ID: %s\r\n Size: %s (%lld bytes)\r\n Start Sector: %lld, Attributes: 0x%016llX\n",
|
suprintf(" ID: %s\r\n Size: %s (%" PRIi64 " bytes)\r\n Start Sector: %" PRIi64 ", Attributes: 0x%016" PRIX64 "\n",
|
||||||
GuidToString(&DriveLayout->PartitionEntry[i].Gpt.PartitionId), SizeToHumanReadable(DriveLayout->PartitionEntry[i].PartitionLength.QuadPart, TRUE, FALSE),
|
GuidToString(&DriveLayout->PartitionEntry[i].Gpt.PartitionId), SizeToHumanReadable(DriveLayout->PartitionEntry[i].PartitionLength.QuadPart, TRUE, FALSE),
|
||||||
DriveLayout->PartitionEntry[i].PartitionLength, DriveLayout->PartitionEntry[i].StartingOffset.QuadPart / DiskGeometry->Geometry.BytesPerSector,
|
DriveLayout->PartitionEntry[i].PartitionLength, DriveLayout->PartitionEntry[i].StartingOffset.QuadPart / DiskGeometry->Geometry.BytesPerSector,
|
||||||
DriveLayout->PartitionEntry[i].Gpt.Attributes);
|
DriveLayout->PartitionEntry[i].Gpt.Attributes);
|
||||||
|
@ -1090,7 +1094,7 @@ BOOL CreatePartition(HANDLE hDrive, int partition_style, int file_system, BOOL m
|
||||||
extra_part_size_in_tracks = (MIN_EXTRA_PART_SIZE + bytes_per_track - 1) / bytes_per_track;
|
extra_part_size_in_tracks = (MIN_EXTRA_PART_SIZE + bytes_per_track - 1) / bytes_per_track;
|
||||||
else if (extra_partitions & XP_COMPAT)
|
else if (extra_partitions & XP_COMPAT)
|
||||||
extra_part_size_in_tracks = 1; // One track for the extra partition
|
extra_part_size_in_tracks = 1; // One track for the extra partition
|
||||||
uprintf("Reserved %lld tracks (%s) for extra partition", extra_part_size_in_tracks,
|
uprintf("Reserved %" PRIi64" tracks (%s) for extra partition", extra_part_size_in_tracks,
|
||||||
SizeToHumanReadable(extra_part_size_in_tracks * bytes_per_track, TRUE, FALSE));
|
SizeToHumanReadable(extra_part_size_in_tracks * bytes_per_track, TRUE, FALSE));
|
||||||
main_part_size_in_sectors = ((main_part_size_in_sectors / SelectedDrive.Geometry.SectorsPerTrack) -
|
main_part_size_in_sectors = ((main_part_size_in_sectors / SelectedDrive.Geometry.SectorsPerTrack) -
|
||||||
extra_part_size_in_tracks) * SelectedDrive.Geometry.SectorsPerTrack;
|
extra_part_size_in_tracks) * SelectedDrive.Geometry.SectorsPerTrack;
|
||||||
|
|
15
src/format.c
15
src/format.c
|
@ -853,10 +853,12 @@ static BOOL WriteMBR(HANDLE hPhysicalDrive)
|
||||||
{
|
{
|
||||||
BOOL r = FALSE;
|
BOOL r = FALSE;
|
||||||
DWORD size;
|
DWORD size;
|
||||||
int dt, fs, bt;
|
|
||||||
unsigned char* buf = NULL;
|
unsigned char* buf = NULL;
|
||||||
FILE fake_fd = { 0 };
|
FILE fake_fd = { 0 };
|
||||||
const char* using_msg = "Using %s MBR\n";
|
const char* using_msg = "Using %s MBR\n";
|
||||||
|
int fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem));
|
||||||
|
int dt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType));
|
||||||
|
int bt = GETBIOSTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
||||||
|
|
||||||
AnalyzeMBR(hPhysicalDrive, "Drive");
|
AnalyzeMBR(hPhysicalDrive, "Drive");
|
||||||
|
|
||||||
|
@ -893,9 +895,9 @@ static BOOL WriteMBR(HANDLE hPhysicalDrive)
|
||||||
buf[0x1c2] = 0x0c;
|
buf[0x1c2] = 0x0c;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (IsChecked(IDC_BOOT)) {
|
if ((IsChecked(IDC_BOOT)) && (bt == BT_BIOS)) {
|
||||||
// Set first partition bootable - masquerade as per the DiskID selected
|
// Set first partition bootable - masquerade as per the DiskID selected
|
||||||
buf[0x1be] = (IsWindowEnabled(GetDlgItem(hMainDialog, IDC_RUFUS_MBR)) && IsChecked(IDC_RUFUS_MBR)) ?
|
buf[0x1be] = IsChecked(IDC_RUFUS_MBR) ?
|
||||||
(BYTE)ComboBox_GetItemData(hDiskID, ComboBox_GetCurSel(hDiskID)):0x80;
|
(BYTE)ComboBox_GetItemData(hDiskID, ComboBox_GetCurSel(hDiskID)):0x80;
|
||||||
uprintf("Set bootable USB partition as 0x%02X\n", buf[0x1be]);
|
uprintf("Set bootable USB partition as 0x%02X\n", buf[0x1be]);
|
||||||
}
|
}
|
||||||
|
@ -908,9 +910,6 @@ static BOOL WriteMBR(HANDLE hPhysicalDrive)
|
||||||
|
|
||||||
fake_fd._ptr = (char*)hPhysicalDrive;
|
fake_fd._ptr = (char*)hPhysicalDrive;
|
||||||
fake_fd._bufsiz = SelectedDrive.Geometry.BytesPerSector;
|
fake_fd._bufsiz = SelectedDrive.Geometry.BytesPerSector;
|
||||||
fs = (int)ComboBox_GetItemData(hFileSystem, ComboBox_GetCurSel(hFileSystem));
|
|
||||||
dt = (int)ComboBox_GetItemData(hBootType, ComboBox_GetCurSel(hBootType));
|
|
||||||
bt = GETBIOSTYPE((int)ComboBox_GetItemData(hPartitionScheme, ComboBox_GetCurSel(hPartitionScheme)));
|
|
||||||
if ((bt == BT_UEFI) && (!allow_dual_uefi_bios)) {
|
if ((bt == BT_UEFI) && (!allow_dual_uefi_bios)) {
|
||||||
uprintf(using_msg, "zeroed");
|
uprintf(using_msg, "zeroed");
|
||||||
r = write_zero_mbr(&fake_fd); // Force UEFI boot only by zeroing the MBR
|
r = write_zero_mbr(&fake_fd); // Force UEFI boot only by zeroing the MBR
|
||||||
|
@ -1998,11 +1997,11 @@ DWORD WINAPI SaveImageThread(void* param)
|
||||||
if (i >= WRITE_RETRIES) goto out;
|
if (i >= WRITE_RETRIES) goto out;
|
||||||
}
|
}
|
||||||
if (wb != SelectedDrive.DiskSize) {
|
if (wb != SelectedDrive.DiskSize) {
|
||||||
uprintf("Error: wrote %llu bytes, expected %llu", wb, SelectedDrive.DiskSize);
|
uprintf("Error: wrote %" PRIu64 " bytes, expected %" PRIu64, wb, SelectedDrive.DiskSize);
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
uprintf("%llu bytes written", wb);
|
uprintf("%" PRIu64 " bytes written", wb);
|
||||||
uprintf("Appending VHD footer...");
|
uprintf("Appending VHD footer...");
|
||||||
if (!AppendVHDFooter(image_path)) {
|
if (!AppendVHDFooter(image_path)) {
|
||||||
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_WRITE_FAULT;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/******************************************************************
|
/******************************************************************
|
||||||
Copyright (C) 2009 Henrik Carlqvist
|
Copyright (C) 2009 Henrik Carlqvist
|
||||||
Modified for Rufus/Windows (C) 2011-2012 Pete Batard
|
Modified for Rufus/Windows (C) 2011-2015 Pete Batard
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
|
@ -41,15 +41,15 @@ int64_t write_sectors(HANDLE hDrive, uint64_t SectorSize,
|
||||||
ptr.QuadPart = StartSector*SectorSize;
|
ptr.QuadPart = StartSector*SectorSize;
|
||||||
if(!SetFilePointerEx(hDrive, ptr, NULL, FILE_BEGIN))
|
if(!SetFilePointerEx(hDrive, ptr, NULL, FILE_BEGIN))
|
||||||
{
|
{
|
||||||
uprintf("write_sectors: Could not access sector 0x%08llx - %s\n", StartSector, WindowsErrorString());
|
uprintf("write_sectors: Could not access sector 0x%08" PRIx64 " - %s\n", StartSector, WindowsErrorString());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((!WriteFile(hDrive, pBuf, Size, &Size, NULL)) || (Size != nSectors*SectorSize))
|
if((!WriteFile(hDrive, pBuf, Size, &Size, NULL)) || (Size != nSectors*SectorSize))
|
||||||
{
|
{
|
||||||
uprintf("write_sectors: Write error %s\n", (GetLastError()!=ERROR_SUCCESS)?WindowsErrorString():"");
|
uprintf("write_sectors: Write error %s\n", (GetLastError()!=ERROR_SUCCESS)?WindowsErrorString():"");
|
||||||
uprintf(" Wrote: %d, Expected: %lld\n", Size, nSectors*SectorSize);
|
uprintf(" Wrote: %d, Expected: %" PRIu64 "\n", Size, nSectors*SectorSize);
|
||||||
uprintf(" StartSector: 0x%08llx, nSectors: 0x%llx, SectorSize: 0x%llx\n", StartSector, nSectors, SectorSize);
|
uprintf(" StartSector: 0x%08" PRIx64 ", nSectors: 0x%" PRIx64 ", SectorSize: 0x%" PRIx64 "\n", StartSector, nSectors, SectorSize);
|
||||||
return Size;
|
return Size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -74,15 +74,15 @@ int64_t read_sectors(HANDLE hDrive, uint64_t SectorSize,
|
||||||
ptr.QuadPart = StartSector*SectorSize;
|
ptr.QuadPart = StartSector*SectorSize;
|
||||||
if(!SetFilePointerEx(hDrive, ptr, NULL, FILE_BEGIN))
|
if(!SetFilePointerEx(hDrive, ptr, NULL, FILE_BEGIN))
|
||||||
{
|
{
|
||||||
uprintf("read_sectors: Could not access sector 0x%08llx - %s\n", StartSector, WindowsErrorString());
|
uprintf("read_sectors: Could not access sector 0x%08" PRIx64 " - %s\n", StartSector, WindowsErrorString());
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((!ReadFile(hDrive, pBuf, Size, &Size, NULL)) || (Size != nSectors*SectorSize))
|
if((!ReadFile(hDrive, pBuf, Size, &Size, NULL)) || (Size != nSectors*SectorSize))
|
||||||
{
|
{
|
||||||
uprintf("read_sectors: Read error %s\n", (GetLastError()!=ERROR_SUCCESS)?WindowsErrorString():"");
|
uprintf("read_sectors: Read error %s\n", (GetLastError()!=ERROR_SUCCESS)?WindowsErrorString():"");
|
||||||
uprintf(" Read: %d, Expected: %lld\n", Size, nSectors*SectorSize);
|
uprintf(" Read: %d, Expected: %" PRIu64 "\n", Size, nSectors*SectorSize);
|
||||||
uprintf(" StartSector: 0x%08llx, nSectors: 0x%llx, SectorSize: 0x%llx\n", StartSector, nSectors, SectorSize);
|
uprintf(" StartSector: 0x%08" PRIx64 ", nSectors: 0x%" PRIx64 ", SectorSize: 0x%" PRIx64 "\n", StartSector, nSectors, SectorSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (int64_t)Size;
|
return (int64_t)Size;
|
||||||
|
|
10
src/rufus.c
10
src/rufus.c
|
@ -915,7 +915,7 @@ static void DisplayISOProps(void)
|
||||||
|
|
||||||
// TODO: Only report features that are present
|
// TODO: Only report features that are present
|
||||||
uprintf("ISO label: %s", iso_report.label);
|
uprintf("ISO label: %s", iso_report.label);
|
||||||
uprintf(" Size: %lld bytes", iso_report.projected_size);
|
uprintf(" Size: %" PRIu64 " bytes", iso_report.projected_size);
|
||||||
uprintf(" Has a >64 chars filename: %s", YesNo(iso_report.has_long_filename));
|
uprintf(" Has a >64 chars filename: %s", YesNo(iso_report.has_long_filename));
|
||||||
uprintf(" Has Symlinks: %s", YesNo(iso_report.has_symlinks));
|
uprintf(" Has Symlinks: %s", YesNo(iso_report.has_symlinks));
|
||||||
uprintf(" Has a >4GB file: %s", YesNo(iso_report.has_4GB_file));
|
uprintf(" Has a >4GB file: %s", YesNo(iso_report.has_4GB_file));
|
||||||
|
@ -1686,18 +1686,18 @@ void ShowLanguageMenu(HWND hDlg)
|
||||||
loc_cmd* lcmd = NULL;
|
loc_cmd* lcmd = NULL;
|
||||||
char lang[256];
|
char lang[256];
|
||||||
char *search = "()";
|
char *search = "()";
|
||||||
char *l, *r, *dup;
|
char *l, *r, *str;
|
||||||
|
|
||||||
UM_LANGUAGE_MENU_MAX = UM_LANGUAGE_MENU;
|
UM_LANGUAGE_MENU_MAX = UM_LANGUAGE_MENU;
|
||||||
menu = CreatePopupMenu();
|
menu = CreatePopupMenu();
|
||||||
list_for_each_entry(lcmd, &locale_list, loc_cmd, list) {
|
list_for_each_entry(lcmd, &locale_list, loc_cmd, list) {
|
||||||
// The appearance of LTR languages must be fixed for RTL menus
|
// The appearance of LTR languages must be fixed for RTL menus
|
||||||
if ((right_to_left_mode) && (!(lcmd->ctrl_id & LOC_RIGHT_TO_LEFT))) {
|
if ((right_to_left_mode) && (!(lcmd->ctrl_id & LOC_RIGHT_TO_LEFT))) {
|
||||||
dup = safe_strdup(lcmd->txt[1]);
|
str = safe_strdup(lcmd->txt[1]);
|
||||||
l = strtok(dup, search);
|
l = strtok(str, search);
|
||||||
r = strtok(NULL, search);
|
r = strtok(NULL, search);
|
||||||
static_sprintf(lang, LEFT_TO_RIGHT_MARK "(%s) " LEFT_TO_RIGHT_MARK "%s", r, l);
|
static_sprintf(lang, LEFT_TO_RIGHT_MARK "(%s) " LEFT_TO_RIGHT_MARK "%s", r, l);
|
||||||
safe_free(dup);
|
safe_free(str);
|
||||||
} else {
|
} else {
|
||||||
safe_strcpy(lang, sizeof(lang), lcmd->txt[1]);
|
safe_strcpy(lang, sizeof(lang), lcmd->txt[1]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <winioctl.h> // for DISK_GEOMETRY
|
#include <winioctl.h> // for DISK_GEOMETRY
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <stdint.h>
|
#include <inttypes.h>
|
||||||
|
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
// Disable some VS2012 Code Analysis warnings
|
// Disable some VS2012 Code Analysis warnings
|
||||||
|
@ -368,7 +368,7 @@ extern void PrintStatusInfo(BOOL info, BOOL debug, unsigned int duration, int ms
|
||||||
extern void UpdateProgress(int op, float percent);
|
extern void UpdateProgress(int op, float percent);
|
||||||
extern const char* StrError(DWORD error_code, BOOL use_default_locale);
|
extern const char* StrError(DWORD error_code, BOOL use_default_locale);
|
||||||
extern char* GuidToString(const GUID* guid);
|
extern char* GuidToString(const GUID* guid);
|
||||||
extern char* SizeToHumanReadable(uint64_t size, BOOL log, BOOL fake_units);
|
extern char* SizeToHumanReadable(uint64_t size, BOOL copy_to_log, BOOL fake_units);
|
||||||
extern void CenterDialog(HWND hDlg);
|
extern void CenterDialog(HWND hDlg);
|
||||||
extern void ResizeMoveCtrl(HWND hDlg, HWND hCtrl, int dx, int dy, int dw, int dh);
|
extern void ResizeMoveCtrl(HWND hDlg, HWND hCtrl, int dx, int dy, int dw, int dh);
|
||||||
extern void CreateStatusBar(void);
|
extern void CreateStatusBar(void);
|
||||||
|
|
16
src/rufus.rc
16
src/rufus.rc
|
@ -32,7 +32,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
|
|
||||||
IDD_DIALOG DIALOGEX 12, 12, 242, 376
|
IDD_DIALOG DIALOGEX 12, 12, 242, 376
|
||||||
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
|
||||||
CAPTION "Rufus 2.0.0.588"
|
CAPTION "Rufus 2.0.0.589"
|
||||||
FONT 8, "Segoe UI", 400, 0, 0x1
|
FONT 8, "Segoe UI", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
||||||
|
@ -157,7 +157,7 @@ END
|
||||||
|
|
||||||
IDD_DIALOG_XP DIALOGEX 12, 12, 242, 376
|
IDD_DIALOG_XP DIALOGEX 12, 12, 242, 376
|
||||||
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
|
||||||
CAPTION "Rufus 2.0.0.588"
|
CAPTION "Rufus 2.0.0.589"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
||||||
|
@ -283,7 +283,7 @@ END
|
||||||
IDD_DIALOG_RTL DIALOGEX 12, 12, 242, 376
|
IDD_DIALOG_RTL DIALOGEX 12, 12, 242, 376
|
||||||
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_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
|
EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
|
||||||
CAPTION "Rufus 2.0.0.588"
|
CAPTION "Rufus 2.0.0.589"
|
||||||
FONT 8, "Segoe UI", 400, 0, 0x1
|
FONT 8, "Segoe UI", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
||||||
|
@ -415,7 +415,7 @@ END
|
||||||
IDD_DIALOG_RTL_XP DIALOGEX 12, 12, 242, 376
|
IDD_DIALOG_RTL_XP DIALOGEX 12, 12, 242, 376
|
||||||
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_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
|
EXSTYLE WS_EX_RTLREADING | WS_EX_APPWINDOW | WS_EX_LAYOUTRTL
|
||||||
CAPTION "Rufus 2.0.0.588"
|
CAPTION "Rufus 2.0.0.589"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
DEFPUSHBUTTON "Start",IDC_START,127,339,50,14
|
||||||
|
@ -671,8 +671,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 2,0,0,588
|
FILEVERSION 2,0,0,589
|
||||||
PRODUCTVERSION 2,0,0,588
|
PRODUCTVERSION 2,0,0,589
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
FILEFLAGS 0x1L
|
FILEFLAGS 0x1L
|
||||||
|
@ -689,13 +689,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", "2.0.0.588"
|
VALUE "FileVersion", "2.0.0.589"
|
||||||
VALUE "InternalName", "Rufus"
|
VALUE "InternalName", "Rufus"
|
||||||
VALUE "LegalCopyright", "© 2011-2015 Pete Batard (GPL v3)"
|
VALUE "LegalCopyright", "© 2011-2015 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", "2.0.0.588"
|
VALUE "ProductVersion", "2.0.0.589"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
@ -57,7 +57,7 @@ static __inline int64_t ReadIniKey64(const char* key) {
|
||||||
}
|
}
|
||||||
static __inline BOOL WriteIniKey64(const char* key, int64_t val) {
|
static __inline BOOL WriteIniKey64(const char* key, int64_t val) {
|
||||||
char str[24];
|
char str[24];
|
||||||
static_sprintf(str, "%lld", val);
|
static_sprintf(str, "%" PRIi64, val);
|
||||||
return (set_token_data_file(key, str, ini_file) != NULL);
|
return (set_token_data_file(key, str, ini_file) != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -160,15 +160,15 @@ static __inline uint16_t upo2(uint16_t v)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert a size to human readable
|
// Convert a size to human readable
|
||||||
char* SizeToHumanReadable(uint64_t size, BOOL log, BOOL fake_units)
|
char* SizeToHumanReadable(uint64_t size, BOOL copy_to_log, BOOL fake_units)
|
||||||
{
|
{
|
||||||
int suffix;
|
int suffix;
|
||||||
static char str_size[32];
|
static char str_size[32];
|
||||||
const char* dir = ((right_to_left_mode)&&(!log))?RIGHT_TO_LEFT_MARK:"";
|
const char* dir = ((right_to_left_mode)&&(!copy_to_log))?RIGHT_TO_LEFT_MARK:"";
|
||||||
double hr_size = (double)size;
|
double hr_size = (double)size;
|
||||||
double t;
|
double t;
|
||||||
uint16_t i_size;
|
uint16_t i_size;
|
||||||
char **_msg_table = log?default_msg_table:msg_table;
|
char **_msg_table = copy_to_log?default_msg_table:msg_table;
|
||||||
const double divider = fake_units?1000.0:1024.0;
|
const double divider = fake_units?1000.0:1024.0;
|
||||||
|
|
||||||
for (suffix=0; suffix<MAX_SIZE_SUFFIXES-1; suffix++) {
|
for (suffix=0; suffix<MAX_SIZE_SUFFIXES-1; suffix++) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue