mirror of
https://github.com/pbatard/rufus.git
synced 2024-08-14 23:57:05 +00:00
[syslinux] add support for 4K sector size
* Also add 4K sector size support in ms-sys
This commit is contained in:
parent
bf967dc39b
commit
9e7b0bad89
8 changed files with 75 additions and 42 deletions
|
@ -169,123 +169,126 @@ int is_zero_mbr(FILE *fp)
|
||||||
/* Don't bother to check 55AA signature */
|
/* Don't bother to check 55AA signature */
|
||||||
} /* is_zero_mbr */
|
} /* is_zero_mbr */
|
||||||
|
|
||||||
|
/* Handle nonstandard sector sizes (such as 4K) by writing
|
||||||
|
the boot marker at every 512-2 bytes location */
|
||||||
|
static int write_bootmark(FILE *fp)
|
||||||
|
{
|
||||||
|
unsigned char aucRef[] = {0x55, 0xAA};
|
||||||
|
int pos = 0x1FE;
|
||||||
|
|
||||||
|
/* We use fp->_bufsiz as our sector size indicator */
|
||||||
|
for (pos = 0x1FE; pos < fp->_bufsiz; pos += 0x200) {
|
||||||
|
if (!write_data(fp, pos, aucRef, sizeof(aucRef)))
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int write_dos_mbr(FILE *fp)
|
int write_dos_mbr(FILE *fp)
|
||||||
{
|
{
|
||||||
#include "mbr_dos.h"
|
#include "mbr_dos.h"
|
||||||
unsigned char aucRef[] = {0x55, 0xAA};
|
|
||||||
|
|
||||||
return
|
return
|
||||||
write_data(fp, 0x0, mbr_dos_0x0, sizeof(mbr_dos_0x0)) &&
|
write_data(fp, 0x0, mbr_dos_0x0, sizeof(mbr_dos_0x0)) &&
|
||||||
write_data(fp, 0x1FE, aucRef, sizeof(aucRef));
|
write_bootmark(fp);
|
||||||
} /* write_dos_mbr */
|
} /* write_dos_mbr */
|
||||||
|
|
||||||
int write_95b_mbr(FILE *fp)
|
int write_95b_mbr(FILE *fp)
|
||||||
{
|
{
|
||||||
#include "mbr_95b.h"
|
#include "mbr_95b.h"
|
||||||
unsigned char aucRef[] = {0x55, 0xAA};
|
|
||||||
|
|
||||||
return
|
return
|
||||||
write_data(fp, 0x0, mbr_95b_0x0, sizeof(mbr_95b_0x0)) &&
|
write_data(fp, 0x0, mbr_95b_0x0, sizeof(mbr_95b_0x0)) &&
|
||||||
write_data(fp, 0x0e0, mbr_95b_0x0e0, sizeof(mbr_95b_0x0e0)) &&
|
write_data(fp, 0x0e0, mbr_95b_0x0e0, sizeof(mbr_95b_0x0e0)) &&
|
||||||
write_data(fp, 0x1FE, aucRef, sizeof(aucRef));
|
write_bootmark(fp);
|
||||||
} /* write_95b_mbr */
|
} /* write_95b_mbr */
|
||||||
|
|
||||||
int write_2000_mbr(FILE *fp)
|
int write_2000_mbr(FILE *fp)
|
||||||
{
|
{
|
||||||
#include "mbr_2000.h"
|
#include "mbr_2000.h"
|
||||||
unsigned char aucRef[] = {0x55, 0xAA};
|
|
||||||
|
|
||||||
return
|
return
|
||||||
write_data(fp, 0x0, mbr_2000_0x0, sizeof(mbr_2000_0x0)) &&
|
write_data(fp, 0x0, mbr_2000_0x0, sizeof(mbr_2000_0x0)) &&
|
||||||
write_data(fp, 0x1FE, aucRef, sizeof(aucRef));
|
write_bootmark(fp);
|
||||||
} /* write_2000_mbr */
|
} /* write_2000_mbr */
|
||||||
|
|
||||||
int write_vista_mbr(FILE *fp)
|
int write_vista_mbr(FILE *fp)
|
||||||
{
|
{
|
||||||
#include "mbr_vista.h"
|
#include "mbr_vista.h"
|
||||||
unsigned char aucRef[] = {0x55, 0xAA};
|
|
||||||
|
|
||||||
return
|
return
|
||||||
write_data(fp, 0x0, mbr_vista_0x0, sizeof(mbr_vista_0x0)) &&
|
write_data(fp, 0x0, mbr_vista_0x0, sizeof(mbr_vista_0x0)) &&
|
||||||
write_data(fp, 0x1FE, aucRef, sizeof(aucRef));
|
write_bootmark(fp);
|
||||||
} /* write_vista_mbr */
|
} /* write_vista_mbr */
|
||||||
|
|
||||||
int write_win7_mbr(FILE *fp)
|
int write_win7_mbr(FILE *fp)
|
||||||
{
|
{
|
||||||
#include "mbr_win7.h"
|
#include "mbr_win7.h"
|
||||||
unsigned char aucRef[] = {0x55, 0xAA};
|
|
||||||
|
|
||||||
return
|
return
|
||||||
write_data(fp, 0x0, mbr_win7_0x0, sizeof(mbr_win7_0x0)) &&
|
write_data(fp, 0x0, mbr_win7_0x0, sizeof(mbr_win7_0x0)) &&
|
||||||
write_data(fp, 0x1FE, aucRef, sizeof(aucRef));
|
write_bootmark(fp);
|
||||||
} /* write_win7_mbr */
|
} /* write_win7_mbr */
|
||||||
|
|
||||||
int write_rufus_mbr(FILE *fp)
|
int write_rufus_mbr(FILE *fp)
|
||||||
{
|
{
|
||||||
#include "mbr_rufus.h"
|
#include "mbr_rufus.h"
|
||||||
unsigned char aucRef[] = {0x55, 0xAA};
|
|
||||||
|
|
||||||
return
|
return
|
||||||
write_data(fp, 0x0, mbr_rufus_0x0, sizeof(mbr_rufus_0x0)) &&
|
write_data(fp, 0x0, mbr_rufus_0x0, sizeof(mbr_rufus_0x0)) &&
|
||||||
write_data(fp, 0x1FE, aucRef, sizeof(aucRef));
|
write_bootmark(fp);
|
||||||
} /* write_rufus_mbr */
|
} /* write_rufus_mbr */
|
||||||
|
|
||||||
int write_reactos_mbr(FILE *fp)
|
int write_reactos_mbr(FILE *fp)
|
||||||
{
|
{
|
||||||
#include "mbr_reactos.h"
|
#include "mbr_reactos.h"
|
||||||
unsigned char aucRef[] = {0x55, 0xAA};
|
|
||||||
|
|
||||||
return
|
return
|
||||||
write_data(fp, 0x0, mbr_reactos_0x0, sizeof(mbr_reactos_0x0)) &&
|
write_data(fp, 0x0, mbr_reactos_0x0, sizeof(mbr_reactos_0x0)) &&
|
||||||
write_data(fp, 0x1FE, aucRef, sizeof(aucRef));
|
write_bootmark(fp);
|
||||||
} /* write_reactos_mbr */
|
} /* write_reactos_mbr */
|
||||||
|
|
||||||
int write_kolibri_mbr(FILE *fp)
|
int write_kolibri_mbr(FILE *fp)
|
||||||
{
|
{
|
||||||
#include "mbr_kolibri.h"
|
#include "mbr_kolibri.h"
|
||||||
unsigned char aucRef[] = {0x55, 0xAA};
|
|
||||||
|
|
||||||
return
|
return
|
||||||
write_data(fp, 0x0, mbr_kolibri_0x0, sizeof(mbr_kolibri_0x0)) &&
|
write_data(fp, 0x0, mbr_kolibri_0x0, sizeof(mbr_kolibri_0x0)) &&
|
||||||
write_data(fp, 0x1FE, aucRef, sizeof(aucRef));
|
write_bootmark(fp);
|
||||||
} /* write_kolibri_mbr */
|
} /* write_kolibri_mbr */
|
||||||
|
|
||||||
int write_syslinux_mbr(FILE *fp)
|
int write_syslinux_mbr(FILE *fp)
|
||||||
{
|
{
|
||||||
#include "mbr_syslinux.h"
|
#include "mbr_syslinux.h"
|
||||||
unsigned char aucRef[] = {0x55, 0xAA};
|
|
||||||
|
|
||||||
return
|
return
|
||||||
write_data(fp, 0x0, mbr_syslinux_0x0, sizeof(mbr_syslinux_0x0)) &&
|
write_data(fp, 0x0, mbr_syslinux_0x0, sizeof(mbr_syslinux_0x0)) &&
|
||||||
write_data(fp, 0x1FE, aucRef, sizeof(aucRef));
|
write_bootmark(fp);
|
||||||
} /* write_syslinux_mbr */
|
} /* write_syslinux_mbr */
|
||||||
|
|
||||||
int write_grub_mbr(FILE *fp)
|
int write_grub_mbr(FILE *fp)
|
||||||
{
|
{
|
||||||
#include "mbr_grub.h"
|
#include "mbr_grub.h"
|
||||||
unsigned char aucRef[] = {0x55, 0xAA};
|
|
||||||
|
|
||||||
return
|
return
|
||||||
write_data(fp, 0x0, mbr_grub_0x0, sizeof(mbr_grub_0x0)) &&
|
write_data(fp, 0x0, mbr_grub_0x0, sizeof(mbr_grub_0x0)) &&
|
||||||
write_data(fp, 0x1FE, aucRef, sizeof(aucRef));
|
write_bootmark(fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
int write_grub2_mbr(FILE *fp)
|
int write_grub2_mbr(FILE *fp)
|
||||||
{
|
{
|
||||||
#include "mbr_grub2.h"
|
#include "mbr_grub2.h"
|
||||||
unsigned char aucRef[] = {0x55, 0xAA};
|
|
||||||
|
|
||||||
return
|
return
|
||||||
write_data(fp, 0x0, mbr_grub2_0x0, sizeof(mbr_grub2_0x0)) &&
|
write_data(fp, 0x0, mbr_grub2_0x0, sizeof(mbr_grub2_0x0)) &&
|
||||||
write_data(fp, 0x1FE, aucRef, sizeof(aucRef));
|
write_bootmark(fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
int write_zero_mbr(FILE *fp)
|
int write_zero_mbr(FILE *fp)
|
||||||
{
|
{
|
||||||
#include "mbr_zero.h"
|
#include "mbr_zero.h"
|
||||||
unsigned char aucRef[] = {0x55, 0xAA};
|
|
||||||
|
|
||||||
return
|
return
|
||||||
write_data(fp, 0x0, mbr_zero_0x0, sizeof(mbr_zero_0x0)) &&
|
write_data(fp, 0x0, mbr_zero_0x0, sizeof(mbr_zero_0x0)) &&
|
||||||
write_data(fp, 0x1FE, aucRef, sizeof(aucRef));
|
write_bootmark(fp);
|
||||||
} /* write_zero_mbr */
|
} /* write_zero_mbr */
|
||||||
|
|
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.2.668"
|
CAPTION "Rufus 2.2.669"
|
||||||
FONT 8, "Segoe UI", 400, 0, 0x1
|
FONT 8, "Segoe UI", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8
|
LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8
|
||||||
|
@ -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.2.668"
|
CAPTION "Rufus 2.2.669"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8
|
LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8
|
||||||
|
@ -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.2.668"
|
CAPTION "Rufus 2.2.669"
|
||||||
FONT 8, "Segoe UI", 400, 0, 0x1
|
FONT 8, "Segoe UI", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8
|
LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8
|
||||||
|
@ -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.2.668"
|
CAPTION "Rufus 2.2.669"
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
BEGIN
|
BEGIN
|
||||||
LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8
|
LTEXT "Device",IDS_DEVICE_TXT,9,6,200,8
|
||||||
|
@ -671,8 +671,8 @@ END
|
||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 2,2,668,0
|
FILEVERSION 2,2,669,0
|
||||||
PRODUCTVERSION 2,2,668,0
|
PRODUCTVERSION 2,2,669,0
|
||||||
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.2.668"
|
VALUE "FileVersion", "2.2.669"
|
||||||
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.2.668"
|
VALUE "ProductVersion", "2.2.669"
|
||||||
END
|
END
|
||||||
END
|
END
|
||||||
BLOCK "VarFileInfo"
|
BLOCK "VarFileInfo"
|
||||||
|
|
|
@ -43,6 +43,13 @@ DWORD syslinux_ldlinux_len[2];
|
||||||
unsigned char* syslinux_mboot = NULL;
|
unsigned char* syslinux_mboot = NULL;
|
||||||
DWORD syslinux_mboot_len;
|
DWORD syslinux_mboot_len;
|
||||||
|
|
||||||
|
// Workaround for 4K support
|
||||||
|
uint32_t SECTOR_SHIFT = 9;
|
||||||
|
uint32_t SECTOR_SIZE = 512;
|
||||||
|
uint32_t LIBFAT_SECTOR_SHIFT = 9;
|
||||||
|
uint32_t LIBFAT_SECTOR_SIZE = 512;
|
||||||
|
uint32_t LIBFAT_SECTOR_MASK = 511;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Wrapper for ReadFile suitable for libfat
|
* Wrapper for ReadFile suitable for libfat
|
||||||
*/
|
*/
|
||||||
|
@ -82,7 +89,7 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter, int fs_type)
|
||||||
FILE* fd;
|
FILE* fd;
|
||||||
size_t length;
|
size_t length;
|
||||||
|
|
||||||
static unsigned char sectbuf[SECTOR_SIZE];
|
static unsigned char* sectbuf = NULL;
|
||||||
static char* resource[2][2] = {
|
static char* resource[2][2] = {
|
||||||
{ MAKEINTRESOURCEA(IDR_SL_LDLINUX_V4_SYS), MAKEINTRESOURCEA(IDR_SL_LDLINUX_V4_BSS) },
|
{ MAKEINTRESOURCEA(IDR_SL_LDLINUX_V4_SYS), MAKEINTRESOURCEA(IDR_SL_LDLINUX_V4_BSS) },
|
||||||
{ MAKEINTRESOURCEA(IDR_SL_LDLINUX_V6_SYS), MAKEINTRESOURCEA(IDR_SL_LDLINUX_V6_BSS) } };
|
{ MAKEINTRESOURCEA(IDR_SL_LDLINUX_V6_SYS), MAKEINTRESOURCEA(IDR_SL_LDLINUX_V6_BSS) } };
|
||||||
|
@ -102,6 +109,20 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter, int fs_type)
|
||||||
|
|
||||||
PrintInfoDebug(0, MSG_234, (dt == DT_ISO)?iso_report.sl_version_str:embedded_sl_version_str[use_v5?1:0]);
|
PrintInfoDebug(0, MSG_234, (dt == DT_ISO)?iso_report.sl_version_str:embedded_sl_version_str[use_v5?1:0]);
|
||||||
|
|
||||||
|
// 4K sector size workaround
|
||||||
|
SECTOR_SHIFT = 0;
|
||||||
|
SECTOR_SIZE = SelectedDrive.Geometry.BytesPerSector;
|
||||||
|
while (SECTOR_SIZE>>=1)
|
||||||
|
SECTOR_SHIFT++;
|
||||||
|
SECTOR_SIZE = SelectedDrive.Geometry.BytesPerSector;
|
||||||
|
LIBFAT_SECTOR_SHIFT = SECTOR_SHIFT;
|
||||||
|
LIBFAT_SECTOR_SIZE = SECTOR_SIZE;
|
||||||
|
LIBFAT_SECTOR_MASK = SECTOR_SIZE - 1;
|
||||||
|
|
||||||
|
sectbuf = malloc(SECTOR_SIZE);
|
||||||
|
if (sectbuf == NULL)
|
||||||
|
goto out;
|
||||||
|
|
||||||
/* Initialize the ADV -- this should be smarter */
|
/* Initialize the ADV -- this should be smarter */
|
||||||
syslinux_reset_adv(syslinux_adv);
|
syslinux_reset_adv(syslinux_adv);
|
||||||
|
|
||||||
|
@ -335,6 +356,7 @@ BOOL InstallSyslinux(DWORD drive_index, char drive_letter, int fs_type)
|
||||||
r = TRUE;
|
r = TRUE;
|
||||||
|
|
||||||
out:
|
out:
|
||||||
|
safe_free(sectbuf);
|
||||||
safe_free(syslinux_ldlinux[0]);
|
safe_free(syslinux_ldlinux[0]);
|
||||||
safe_free(syslinux_ldlinux[1]);
|
safe_free(syslinux_ldlinux[1]);
|
||||||
safe_free(sectors);
|
safe_free(sectors);
|
||||||
|
|
|
@ -29,10 +29,10 @@ void *libfat_get_sector(struct libfat_filesystem *fs, libfat_sector_t n)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Not found in cache */
|
/* Not found in cache */
|
||||||
ls = malloc(sizeof(struct libfat_sector));
|
ls = malloc(sizeof(struct libfat_sector) + LIBFAT_SECTOR_SIZE);
|
||||||
if (!ls) {
|
if (!ls) {
|
||||||
libfat_flush(fs);
|
libfat_flush(fs);
|
||||||
ls = malloc(sizeof(struct libfat_sector));
|
ls = malloc(sizeof(struct libfat_sector) + LIBFAT_SECTOR_SIZE);
|
||||||
|
|
||||||
if (!ls)
|
if (!ls)
|
||||||
return NULL; /* Can't allocate memory */
|
return NULL; /* Can't allocate memory */
|
||||||
|
|
|
@ -22,9 +22,14 @@
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <inttypes.h>
|
#include <inttypes.h>
|
||||||
|
|
||||||
#define LIBFAT_SECTOR_SHIFT 9
|
// Workaround for 4K support
|
||||||
#define LIBFAT_SECTOR_SIZE 512
|
extern uint32_t LIBFAT_SECTOR_SHIFT;
|
||||||
#define LIBFAT_SECTOR_MASK 511
|
extern uint32_t LIBFAT_SECTOR_SIZE;
|
||||||
|
extern uint32_t LIBFAT_SECTOR_MASK;
|
||||||
|
#define MAX_LIBFAT_SECTOR_SIZE 4096
|
||||||
|
//#define LIBFAT_SECTOR_SHIFT 9
|
||||||
|
//#define LIBFAT_SECTOR_SIZE 512
|
||||||
|
//#define LIBFAT_SECTOR_MASK 511
|
||||||
|
|
||||||
typedef uint64_t libfat_sector_t;
|
typedef uint64_t libfat_sector_t;
|
||||||
struct libfat_filesystem;
|
struct libfat_filesystem;
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
struct libfat_sector {
|
struct libfat_sector {
|
||||||
libfat_sector_t n; /* Sector number */
|
libfat_sector_t n; /* Sector number */
|
||||||
struct libfat_sector *next; /* Next in list */
|
struct libfat_sector *next; /* Next in list */
|
||||||
char data[LIBFAT_SECTOR_SIZE];
|
char data[0];
|
||||||
};
|
};
|
||||||
|
|
||||||
enum fat_type {
|
enum fat_type {
|
||||||
|
|
|
@ -25,7 +25,7 @@ int32_t libfat_searchdir(struct libfat_filesystem *fs, int32_t dirclust,
|
||||||
const void *name, struct libfat_direntry *direntry)
|
const void *name, struct libfat_direntry *direntry)
|
||||||
{
|
{
|
||||||
struct fat_dirent *dep;
|
struct fat_dirent *dep;
|
||||||
int nent;
|
unsigned int nent;
|
||||||
libfat_sector_t s = libfat_clustertosector(fs, dirclust);
|
libfat_sector_t s = libfat_clustertosector(fs, dirclust);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|
|
@ -41,8 +41,11 @@ extern const unsigned int syslinux_mbr_len;
|
||||||
extern const int syslinux_mbr_mtime;
|
extern const int syslinux_mbr_mtime;
|
||||||
|
|
||||||
/* Sector size assumptions... */
|
/* Sector size assumptions... */
|
||||||
#define SECTOR_SHIFT 9
|
// Workaround for 4K support
|
||||||
#define SECTOR_SIZE (1 << SECTOR_SHIFT)
|
extern uint32_t SECTOR_SHIFT;
|
||||||
|
extern uint32_t SECTOR_SIZE;
|
||||||
|
//#define SECTOR_SHIFT 9
|
||||||
|
//#define SECTOR_SIZE (1 << SECTOR_SHIFT)
|
||||||
|
|
||||||
/* This takes a boot sector and merges in the syslinux fields */
|
/* This takes a boot sector and merges in the syslinux fields */
|
||||||
void syslinux_make_bootsect(void *bs, int fs_type);
|
void syslinux_make_bootsect(void *bs, int fs_type);
|
||||||
|
|
Loading…
Reference in a new issue