diff --git a/ChangeLog.txt b/ChangeLog.txt index 024e5b5c..e0e88e2c 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -2,7 +2,7 @@ o Version 1.3.4 (2013.07.15) Syslinux v5 support (NEW) UDF formatting support (NEW - Vista and later only) More drive handling improvements, to avoid "Could not open media" errors - Fixed support for ISOs with files larger than 4GB files + Fixed support for ISOs containing files larger than 4GB Fixed elevation request for unprivileged users Fixed download of c32 files into the application directory Better compression algorithm for the executable diff --git a/src/.msvc/rufus.vcxproj b/src/.msvc/rufus.vcxproj index 2217ab92..b7fef02e 100644 --- a/src/.msvc/rufus.vcxproj +++ b/src/.msvc/rufus.vcxproj @@ -29,23 +29,23 @@ Application Unicode true - v110 + v110_xp Application Unicode - v110 + v110_xp Application Unicode true - v110 + v110_xp Application Unicode - v110 + v110_xp @@ -85,6 +85,8 @@ MultiThreadedDebug Level3 ..\msvc-missing;..\ms-sys\inc;..\syslinux\libinstaller;..\syslinux\libfat;..\libcdio;..\getopt;%(AdditionalIncludeDirectories) + CompileAsC + true setupapi.lib;comctl32.lib;wininet.lib;%(AdditionalDependencies) @@ -95,6 +97,7 @@ _UNICODE;UNICODE;%(PreprocessorDefinitions) + @@ -108,6 +111,8 @@ MultiThreadedDebug Level3 ProgramDatabase + CompileAsC + true setupapi.lib;comctl32.lib;wininet.lib;%(AdditionalDependencies) @@ -118,6 +123,7 @@ _UNICODE;UNICODE;%(PreprocessorDefinitions) + @@ -127,6 +133,8 @@ MultiThreaded Level3 ..\msvc-missing;..\ms-sys\inc;..\syslinux\libinstaller;..\syslinux\libfat;..\libcdio;..\getopt;%(AdditionalIncludeDirectories) + CompileAsC + true setupapi.lib;comctl32.lib;wininet.lib;%(AdditionalDependencies) @@ -137,6 +145,7 @@ _UNICODE;UNICODE;%(PreprocessorDefinitions) + @@ -149,6 +158,8 @@ MultiThreaded Level3 ..\msvc-missing;..\ms-sys\inc;..\syslinux\libinstaller;..\syslinux\libfat;..\libcdio;..\getopt;%(AdditionalIncludeDirectories) + CompileAsC + true setupapi.lib;comctl32.lib;wininet.lib;%(AdditionalDependencies) @@ -159,6 +170,7 @@ _UNICODE;UNICODE;%(PreprocessorDefinitions) + diff --git a/src/dos_locale.c b/src/dos_locale.c index c131ffd2..a8f09bdf 100644 --- a/src/dos_locale.c +++ b/src/dos_locale.c @@ -159,46 +159,59 @@ static const char* fd_kb4[] = { typedef struct { const char* name; + ULONG default_cp; +} kb_default; + +static kb_default kbdrv_data[] = { + { "keyboard.sys", 437 }, + { "keybrd2.sys", 850 }, + { "keybrd3.sys", 850 }, + { "keybrd4.sys", 853 } +}; + +typedef struct { size_t size; const char** list; } kb_list; static kb_list ms_kb_list[] = { - {"keyboard.sys", ARRAYSIZE(ms_kb1), ms_kb1}, - {"kbrd2.sys", ARRAYSIZE(ms_kb2), ms_kb2}, - {"kbrd3.sys", ARRAYSIZE(ms_kb3), ms_kb3}, - {"kbrd3.sys", ARRAYSIZE(ms_kb4), ms_kb4} }; + { ARRAYSIZE(ms_kb1), ms_kb1 }, + { ARRAYSIZE(ms_kb2), ms_kb2 }, + { ARRAYSIZE(ms_kb3), ms_kb3 }, + { ARRAYSIZE(ms_kb4), ms_kb4 } +}; static kb_list fd_kb_list[] = { - {"keyboard.sys", ARRAYSIZE(fd_kb1), fd_kb1}, - {"kbrd2.sys", ARRAYSIZE(fd_kb2), fd_kb2}, - {"kbrd3.sys", ARRAYSIZE(fd_kb3), fd_kb3}, - {"kbrd3.sys", ARRAYSIZE(fd_kb4), fd_kb4} }; + { ARRAYSIZE(fd_kb1), fd_kb1 }, + { ARRAYSIZE(fd_kb2), fd_kb2 }, + { ARRAYSIZE(fd_kb3), fd_kb3 }, + { ARRAYSIZE(fd_kb4), fd_kb4 } +}; -static const char* ms_get_kbdrv(const char* kb) +static int ms_get_kbdrv(const char* kb) { unsigned int i, j; for (i=0; i NUL\n", (int)cp, egadrv); fprintf(fd, "mode con codepage select=%d > NUL\n", (int)cp); - fprintf(fd, "keyb %s,,\\locale\\%s\n", kb, kbdrv); + fprintf(fd, "keyb %s,,\\locale\\%s\n", kb, kbdrv_data[kbdrv].name); fprintf(fd, ":2\n"); fclose(fd); uprintf("Successfully wrote 'AUTOEXEC.BAT'\n"); diff --git a/src/libcdio/config.h b/src/libcdio/config.h index 6bad847e..fbbd7259 100644 --- a/src/libcdio/config.h +++ b/src/libcdio/config.h @@ -29,15 +29,30 @@ /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 +/* Define to 1 if you have the `lseek64' function. */ +#define HAVE_LSEEK64 1 +/* The equivalent of lseek64 on MSVC is _lseeki64 */ +#define lseek64 _lseeki64 + /* Define to 1 if you have the `fseeko' function. */ /* #undef HAVE_FSEEKO */ /* Define to 1 if you have the `fseeko64' function. */ #define HAVE_FSEEKO64 1 -/* The equivalent of fseeko64 for MSVC is _fseeki64 */ #if defined(_MSC_VER) +/* The equivalent of fseeko64 for MSVC is _fseeki64, however this */ +/* is not available on XP when build with WDK (but _lseeki64 is) */ +#if defined(DDKBUILD) +#include +#include +#include +static __inline int fseeko64(FILE *stream, __int64 offset, int origin) { + return (lseek64(_fileno(stream), offset, origin) == -1L)?-1:0; +} +#else #define fseeko64 _fseeki64 #endif +#endif /* Define to 1 if you have the `ftruncate' function. */ /* #undef HAVE_FTRUNCATE */ @@ -58,11 +73,6 @@ /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 -/* Define to 1 if you have the `lseek64' function. */ -#define HAVE_LSEEK64 1 -/* The equivalent of lseek64 on MSVC is _lseeki64 */ -#define lseek64 _lseeki64 - /* Define to 1 if you have the `lstat' function. */ /* #undef HAVE_LSTAT */ diff --git a/src/rufus.rc b/src/rufus.rc index 3369f950..296e7d35 100644 --- a/src/rufus.rc +++ b/src/rufus.rc @@ -30,7 +30,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.3.4.270" +CAPTION "Rufus v1.3.4.275" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN DEFPUSHBUTTON "Start",IDC_START,94,291,50,14 @@ -278,8 +278,8 @@ END // VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,3,4,270 - PRODUCTVERSION 1,3,4,270 + FILEVERSION 1,3,4,275 + PRODUCTVERSION 1,3,4,275 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L @@ -296,13 +296,13 @@ BEGIN BEGIN VALUE "CompanyName", "Akeo Consulting (http://akeo.ie)" VALUE "FileDescription", "Rufus" - VALUE "FileVersion", "1.3.4.270" + VALUE "FileVersion", "1.3.4.275" 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.3.4.270" + VALUE "ProductVersion", "1.3.4.275" END END BLOCK "VarFileInfo" diff --git a/src/syslinux/libfat/open.c b/src/syslinux/libfat/open.c index ebc94f17..c3520ddc 100644 --- a/src/syslinux/libfat/open.c +++ b/src/syslinux/libfat/open.c @@ -98,6 +98,8 @@ libfat_open(int (*readfunc) (intptr_t, void *, size_t, libfat_sector_t), if (minfatsize > fatsize) goto barf; /* The FATs don't fit */ +#else + (void)(minfatsize); /* silence an unused warning in MinGW */ #endif if (fs->fat_type == FAT28)