mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	
							parent
							
								
									ffc9a4e80a
								
							
						
					
					
						commit
						b6bc17b7f4
					
				
					 15 changed files with 204 additions and 23 deletions
				
			
		|  | @ -77,9 +77,10 @@ o Version 1.0.1 (2013.10.28) | ||||||
| o Version 1.0.0 (2013.10.20) | o Version 1.0.0 (2013.10.20) | ||||||
|   - Initial version |   - Initial version | ||||||
|    |    | ||||||
| [TODO] (NOTE: THIS PART IS ONLY FOR THE RUFUS DEVELOPER, NOT TRANSLATORS) | [TODO] (NOTE: THIS PART IS ONLY INTENDED FOR THE RUFUS DEVELOPER, NOT THE TRANSLATORS) | ||||||
|   - MSG_165 should be altered to say image |   - MSG_165 should be altered to say image | ||||||
|   - NEW message for wrong MSG_044 in _StrError() |   - NEW message for wrong MSG_044 in _StrError() | ||||||
|   - NEW message for Alt-I toggle |   - NEW message for Alt-I toggle | ||||||
|   - NEW message for Alt-U toggle |   - NEW message for Alt-U toggle | ||||||
|   - NEW message for ERROR_NOT_READY |   - NEW message for ERROR_NOT_READY | ||||||
|  |   - NEW message for "This ISO is not compatible with the selected filesystem" (rufus.c ~1407) | ||||||
|  | @ -514,7 +514,8 @@ const struct {int (*fn)(FILE *fp); char* str;} known_mbr[] = { | ||||||
| 	{ is_win7_mbr, "Windows 7" }, | 	{ is_win7_mbr, "Windows 7" }, | ||||||
| 	{ is_rufus_mbr, "Rufus" }, | 	{ is_rufus_mbr, "Rufus" }, | ||||||
| 	{ is_syslinux_mbr, "Syslinux" }, | 	{ is_syslinux_mbr, "Syslinux" }, | ||||||
| 	{ is_reactos_mbr, "Reactos" }, | 	{ is_reactos_mbr, "ReactOS" }, | ||||||
|  | 	{ is_kolibri_mbr, "KolibriOS" }, | ||||||
| 	{ is_zero_mbr, "Zeroed" }, | 	{ is_zero_mbr, "Zeroed" }, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  | @ -551,6 +552,7 @@ const struct {int (*fn)(FILE *fp); char* str;} known_pbr[] = { | ||||||
| 	{ entire_fat_32_nt_br_matches, "FAT32 NT" }, | 	{ entire_fat_32_nt_br_matches, "FAT32 NT" }, | ||||||
| 	{ entire_fat_32_fd_br_matches, "FAT32 FreeDOS" }, | 	{ entire_fat_32_fd_br_matches, "FAT32 FreeDOS" }, | ||||||
| 	{ entire_fat_32_ros_br_matches, "FAT32 ReactOS" }, | 	{ entire_fat_32_ros_br_matches, "FAT32 ReactOS" }, | ||||||
|  | 	{ entire_fat_32_kos_br_matches, "FAT32 KolibriOS" }, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| BOOL AnalyzePBR(HANDLE hLogicalVolume) | BOOL AnalyzePBR(HANDLE hLogicalVolume) | ||||||
|  |  | ||||||
							
								
								
									
										21
									
								
								src/format.c
									
										
									
									
									
								
							
							
						
						
									
										21
									
								
								src/format.c
									
										
									
									
									
								
							|  | @ -907,6 +907,9 @@ static BOOL WriteMBR(HANDLE hPhysicalDrive) | ||||||
| 	if (bt == BT_UEFI) { | 	if (bt == BT_UEFI) { | ||||||
| 		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
 | ||||||
|  | 	} else if ( (dt == DT_ISO) && (iso_report.has_kolibrios) && (fs == FS_FAT32)) { | ||||||
|  | 		uprintf(using_msg, "KolibriOS"); | ||||||
|  | 		r = write_kolibri_mbr(&fake_fd); | ||||||
| 	} else if ( (dt == DT_SYSLINUX_V4) || (dt == DT_SYSLINUX_V5) || ((dt == DT_ISO) && ((fs == FS_FAT16) || (fs == FS_FAT32))) ) { | 	} else if ( (dt == DT_SYSLINUX_V4) || (dt == DT_SYSLINUX_V5) || ((dt == DT_ISO) && ((fs == FS_FAT16) || (fs == FS_FAT32))) ) { | ||||||
| 		uprintf(using_msg, "Syslinux"); | 		uprintf(using_msg, "Syslinux"); | ||||||
| 		r = write_syslinux_mbr(&fake_fd); | 		r = write_syslinux_mbr(&fake_fd); | ||||||
|  | @ -939,7 +942,8 @@ static __inline const char* dt_to_name(int dt) { | ||||||
| 	switch (dt) { | 	switch (dt) { | ||||||
| 	case DT_FREEDOS: return "FreeDOS"; | 	case DT_FREEDOS: return "FreeDOS"; | ||||||
| 	case DT_REACTOS: return "ReactOS"; | 	case DT_REACTOS: return "ReactOS"; | ||||||
| 	default: return "Standard"; | 	default:  | ||||||
|  | 		return ((dt==DT_ISO)&&(iso_report.has_kolibrios))?"KolibriOS":"Standard"; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| static BOOL WritePBR(HANDLE hLogicalVolume) | static BOOL WritePBR(HANDLE hLogicalVolume) | ||||||
|  | @ -964,6 +968,8 @@ static BOOL WritePBR(HANDLE hLogicalVolume) | ||||||
| 			if (!write_fat_16_fd_br(&fake_fd, 0)) break; | 			if (!write_fat_16_fd_br(&fake_fd, 0)) break; | ||||||
| 		} else if (dt == DT_REACTOS) { | 		} else if (dt == DT_REACTOS) { | ||||||
| 			if (!write_fat_16_ros_br(&fake_fd, 0)) break; | 			if (!write_fat_16_ros_br(&fake_fd, 0)) break; | ||||||
|  | 		} else if ((dt == DT_ISO) && (iso_report.has_kolibrios)) { | ||||||
|  | 			uprintf("FAT16 is not supported for KolibriOS\n"); break; | ||||||
| 		} else { | 		} else { | ||||||
| 			if (!write_fat_16_br(&fake_fd, 0)) break; | 			if (!write_fat_16_br(&fake_fd, 0)) break; | ||||||
| 		} | 		} | ||||||
|  | @ -984,6 +990,8 @@ static BOOL WritePBR(HANDLE hLogicalVolume) | ||||||
| 				if (!write_fat_32_fd_br(&fake_fd, 0)) break; | 				if (!write_fat_32_fd_br(&fake_fd, 0)) break; | ||||||
| 			} else if (dt == DT_REACTOS) { | 			} else if (dt == DT_REACTOS) { | ||||||
| 				if (!write_fat_32_ros_br(&fake_fd, 0)) break; | 				if (!write_fat_32_ros_br(&fake_fd, 0)) break; | ||||||
|  | 			} else if ((dt == DT_ISO) && (iso_report.has_kolibrios)) { | ||||||
|  | 				if (!write_fat_32_kos_br(&fake_fd, 0)) break; | ||||||
| 			} else { | 			} else { | ||||||
| 				if (!write_fat_32_br(&fake_fd, 0)) break; | 				if (!write_fat_32_br(&fake_fd, 0)) break; | ||||||
| 			} | 			} | ||||||
|  | @ -1218,6 +1226,7 @@ DWORD WINAPI FormatThread(void* param) | ||||||
| 	char logfile[MAX_PATH], *userdir; | 	char logfile[MAX_PATH], *userdir; | ||||||
| 	char wim_image[] = "?:\\sources\\install.wim"; | 	char wim_image[] = "?:\\sources\\install.wim"; | ||||||
| 	char efi_dst[] = "?:\\efi\\boot\\bootx64.efi"; | 	char efi_dst[] = "?:\\efi\\boot\\bootx64.efi"; | ||||||
|  | 	char kolibri_dst[] = "?:\\MTLD_F32"; | ||||||
| 	 | 	 | ||||||
| 	PF_TYPE_DECL(WINAPI, LANGID, GetThreadUILanguage, (void)); | 	PF_TYPE_DECL(WINAPI, LANGID, GetThreadUILanguage, (void)); | ||||||
| 	PF_TYPE_DECL(WINAPI, LANGID, SetThreadUILanguage, (LANGID)); | 	PF_TYPE_DECL(WINAPI, LANGID, SetThreadUILanguage, (LANGID)); | ||||||
|  | @ -1494,7 +1503,7 @@ DWORD WINAPI FormatThread(void* param) | ||||||
| 				goto out; | 				goto out; | ||||||
| 			} | 			} | ||||||
| 		} else if ((((dt == DT_WINME) || (dt == DT_FREEDOS) || (dt == DT_REACTOS)) && | 		} else if ((((dt == DT_WINME) || (dt == DT_FREEDOS) || (dt == DT_REACTOS)) && | ||||||
| 			(!use_large_fat32)) || ((dt == DT_ISO) && (fs == FS_NTFS))) { | 			(!use_large_fat32)) || ((dt == DT_ISO) && ((fs == FS_NTFS)||(iso_report.has_kolibrios)))) { | ||||||
| 			// We still have a lock, which we need to modify the volume boot record 
 | 			// We still have a lock, which we need to modify the volume boot record 
 | ||||||
| 			// => no need to reacquire the lock...
 | 			// => no need to reacquire the lock...
 | ||||||
| 			hLogicalVolume = GetLogicalHandle(DriveIndex, TRUE, FALSE); | 			hLogicalVolume = GetLogicalHandle(DriveIndex, TRUE, FALSE); | ||||||
|  | @ -1550,6 +1559,14 @@ DWORD WINAPI FormatThread(void* param) | ||||||
| 						FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANNOT_COPY; | 						FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|ERROR_CANNOT_COPY; | ||||||
| 					goto out; | 					goto out; | ||||||
| 				} | 				} | ||||||
|  | 				if (iso_report.has_kolibrios) { | ||||||
|  | 					kolibri_dst[0] = drive_name[0]; | ||||||
|  | 					uprintf("Installing: %s (KolibriOS loader)\n", kolibri_dst); | ||||||
|  | 					if (ExtractISOFile(iso_path, "HD_Load/USB_Boot/MTLD_F32", kolibri_dst, | ||||||
|  | 						FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_SYSTEM) == 0) { | ||||||
|  | 						uprintf("Warning: loader installation failed - KolibriOS will not boot!\n"); | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
| 				if ((bt == BT_UEFI) && (!iso_report.has_efi) && (iso_report.has_win7_efi)) { | 				if ((bt == BT_UEFI) && (!iso_report.has_efi) && (iso_report.has_win7_efi)) { | ||||||
| 					PrintStatus(0, TRUE, MSG_232); | 					PrintStatus(0, TRUE, MSG_232); | ||||||
| 					wim_image[0] = drive_name[0]; | 					wim_image[0] = drive_name[0]; | ||||||
|  |  | ||||||
							
								
								
									
										14
									
								
								src/iso.c
									
										
									
									
									
								
							
							
						
						
									
										14
									
								
								src/iso.c
									
										
									
									
									
								
							|  | @ -67,6 +67,7 @@ static const char* isolinux_bin = &dot_isolinux_bin[2]; | ||||||
| static const char* pe_dirname[] = { "/i386", "/minint" }; | static const char* pe_dirname[] = { "/i386", "/minint" }; | ||||||
| static const char* pe_file[] = { "ntdetect.com", "setupldr.bin", "txtsetup.sif" }; | static const char* pe_file[] = { "ntdetect.com", "setupldr.bin", "txtsetup.sif" }; | ||||||
| static const char* reactos_name = "setupldr.sys"; // TODO: freeldr.sys doesn't seem to work
 | static const char* reactos_name = "setupldr.sys"; // TODO: freeldr.sys doesn't seem to work
 | ||||||
|  | static const char* kolibri_name = "kolibri.img"; | ||||||
| static const char* autorun_name = "autorun.inf"; | static const char* autorun_name = "autorun.inf"; | ||||||
| static const char* stupid_antivirus = "  NOTE: This is usually caused by a poorly designed security solution. " | static const char* stupid_antivirus = "  NOTE: This is usually caused by a poorly designed security solution. " | ||||||
| 	"See http://rufus.akeo.ie/compatibility.\r\n  This file will be skipped for now, but you should really " | 	"See http://rufus.akeo.ie/compatibility.\r\n  This file will be skipped for now, but you should really " | ||||||
|  | @ -137,7 +138,7 @@ static BOOL check_iso_props(const char* psz_dirname, BOOL* is_syslinux_cfg, BOOL | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (scan_only) { | 	if (scan_only) { | ||||||
| 		// Check for a "bootmgr(.efi)" file in root (psz_path = "")
 | 		// Check for various files in root (psz_dirname = "")
 | ||||||
| 		if (*psz_dirname == 0) { | 		if (*psz_dirname == 0) { | ||||||
| 			if (safe_strnicmp(psz_basename, bootmgr_efi_name, safe_strlen(bootmgr_efi_name)-5) == 0) { | 			if (safe_strnicmp(psz_basename, bootmgr_efi_name, safe_strlen(bootmgr_efi_name)-5) == 0) { | ||||||
| 				iso_report.has_bootmgr = TRUE; | 				iso_report.has_bootmgr = TRUE; | ||||||
|  | @ -145,6 +146,9 @@ static BOOL check_iso_props(const char* psz_dirname, BOOL* is_syslinux_cfg, BOOL | ||||||
| 			if (safe_stricmp(psz_basename, bootmgr_efi_name) == 0) { | 			if (safe_stricmp(psz_basename, bootmgr_efi_name) == 0) { | ||||||
| 				iso_report.has_win7_efi = TRUE; | 				iso_report.has_win7_efi = TRUE; | ||||||
| 			} | 			} | ||||||
|  | 			if (safe_stricmp(psz_basename, kolibri_name) == 0) { | ||||||
|  | 				iso_report.has_kolibrios = TRUE; | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		// Check for ReactOS' setupldr.sys anywhere
 | 		// Check for ReactOS' setupldr.sys anywhere
 | ||||||
|  | @ -591,7 +595,7 @@ out: | ||||||
| 			uprintf("Will use %s for Syslinux\n", iso_report.cfg_path); | 			uprintf("Will use %s for Syslinux\n", iso_report.cfg_path); | ||||||
| 			// Extract all of the isolinux.bin files we found to identify their versions
 | 			// Extract all of the isolinux.bin files we found to identify their versions
 | ||||||
| 			for (i=0; i<isolinux_path.Index; i++) { | 			for (i=0; i<isolinux_path.Index; i++) { | ||||||
| 				size = (size_t)ExtractISOFile(src_iso, isolinux_path.String[i], dot_isolinux_bin); | 				size = (size_t)ExtractISOFile(src_iso, isolinux_path.String[i], dot_isolinux_bin, FILE_ATTRIBUTE_NORMAL); | ||||||
| 				if (size == 0) { | 				if (size == 0) { | ||||||
| 					uprintf("Could not access %s\n", isolinux_path.String[i]); | 					uprintf("Could not access %s\n", isolinux_path.String[i]); | ||||||
| 				} else { | 				} else { | ||||||
|  | @ -646,7 +650,7 @@ out: | ||||||
| 			// whether we should use 0x80 or 0x81 as the disk ID in the MBR
 | 			// whether we should use 0x80 or 0x81 as the disk ID in the MBR
 | ||||||
| 			safe_sprintf(path, sizeof(path), "/%s/txtsetup.sif",  | 			safe_sprintf(path, sizeof(path), "/%s/txtsetup.sif",  | ||||||
| 				basedir[((iso_report.winpe&WINPE_I386) == WINPE_I386)?0:1]); | 				basedir[((iso_report.winpe&WINPE_I386) == WINPE_I386)?0:1]); | ||||||
| 			ExtractISOFile(src_iso, path, tmp_sif); | 			ExtractISOFile(src_iso, path, tmp_sif, FILE_ATTRIBUTE_NORMAL); | ||||||
| 			tmp = get_token_data_file("OsLoadOptions", tmp_sif); | 			tmp = get_token_data_file("OsLoadOptions", tmp_sif); | ||||||
| 			if (tmp != NULL) { | 			if (tmp != NULL) { | ||||||
| 				for (i=0; i<strlen(tmp); i++) | 				for (i=0; i<strlen(tmp); i++) | ||||||
|  | @ -692,7 +696,7 @@ out: | ||||||
| 	return (r == 0); | 	return (r == 0); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int64_t ExtractISOFile(const char* iso, const char* iso_file, const char* dest_file) | int64_t ExtractISOFile(const char* iso, const char* iso_file, const char* dest_file, DWORD attributes) | ||||||
| { | { | ||||||
| 	size_t i; | 	size_t i; | ||||||
| 	ssize_t read_size; | 	ssize_t read_size; | ||||||
|  | @ -708,7 +712,7 @@ int64_t ExtractISOFile(const char* iso, const char* iso_file, const char* dest_f | ||||||
| 	HANDLE file_handle = INVALID_HANDLE_VALUE; | 	HANDLE file_handle = INVALID_HANDLE_VALUE; | ||||||
| 
 | 
 | ||||||
| 	file_handle = CreateFileU(dest_file, GENERIC_READ | GENERIC_WRITE, | 	file_handle = CreateFileU(dest_file, GENERIC_READ | GENERIC_WRITE, | ||||||
| 		FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); | 		FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, attributes, NULL); | ||||||
| 	if (file_handle == INVALID_HANDLE_VALUE) { | 	if (file_handle == INVALID_HANDLE_VALUE) { | ||||||
| 		uprintf("  Unable to create file %s: %s\n", dest_file, WindowsErrorString()); | 		uprintf("  Unable to create file %s: %s\n", dest_file, WindowsErrorString()); | ||||||
| 		goto out; | 		goto out; | ||||||
|  |  | ||||||
|  | @ -29,6 +29,7 @@ | ||||||
|     <ClInclude Include="..\inc\br_fat16_0x3e.h" /> |     <ClInclude Include="..\inc\br_fat16_0x3e.h" /> | ||||||
|     <ClInclude Include="..\inc\br_fat32fd_0x3f0.h" /> |     <ClInclude Include="..\inc\br_fat32fd_0x3f0.h" /> | ||||||
|     <ClInclude Include="..\inc\br_fat32fd_0x52.h" /> |     <ClInclude Include="..\inc\br_fat32fd_0x52.h" /> | ||||||
|  |     <ClInclude Include="..\inc\br_fat32kos_0x52.h" /> | ||||||
|     <ClInclude Include="..\inc\br_fat32nt_0x1800.h" /> |     <ClInclude Include="..\inc\br_fat32nt_0x1800.h" /> | ||||||
|     <ClInclude Include="..\inc\br_fat32nt_0x3f0.h" /> |     <ClInclude Include="..\inc\br_fat32nt_0x3f0.h" /> | ||||||
|     <ClInclude Include="..\inc\br_fat32nt_0x52.h" /> |     <ClInclude Include="..\inc\br_fat32nt_0x52.h" /> | ||||||
|  | @ -49,6 +50,7 @@ | ||||||
|     <ClInclude Include="..\inc\mbr_95b.h" /> |     <ClInclude Include="..\inc\mbr_95b.h" /> | ||||||
|     <ClInclude Include="..\inc\mbr_dos.h" /> |     <ClInclude Include="..\inc\mbr_dos.h" /> | ||||||
|     <ClInclude Include="..\inc\mbr_dos_f2.h" /> |     <ClInclude Include="..\inc\mbr_dos_f2.h" /> | ||||||
|  |     <ClInclude Include="..\inc\mbr_kolibri.h" /> | ||||||
|     <ClInclude Include="..\inc\mbr_reactos.h" /> |     <ClInclude Include="..\inc\mbr_reactos.h" /> | ||||||
|     <ClInclude Include="..\inc\mbr_rufus.h" /> |     <ClInclude Include="..\inc\mbr_rufus.h" /> | ||||||
|     <ClInclude Include="..\inc\mbr_syslinux.h" /> |     <ClInclude Include="..\inc\mbr_syslinux.h" /> | ||||||
|  |  | ||||||
|  | @ -125,6 +125,12 @@ | ||||||
|     <ClInclude Include="..\inc\mbr_rufus.h"> |     <ClInclude Include="..\inc\mbr_rufus.h"> | ||||||
|       <Filter>Header Files</Filter> |       <Filter>Header Files</Filter> | ||||||
|     </ClInclude> |     </ClInclude> | ||||||
|  |     <ClInclude Include="..\inc\br_fat32kos_0x52.h"> | ||||||
|  |       <Filter>Header Files</Filter> | ||||||
|  |     </ClInclude> | ||||||
|  |     <ClInclude Include="..\inc\mbr_kolibri.h"> | ||||||
|  |       <Filter>Header Files</Filter> | ||||||
|  |     </ClInclude> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|   <ItemGroup> |   <ItemGroup> | ||||||
|     <ClCompile Include="..\br.c"> |     <ClCompile Include="..\br.c"> | ||||||
|  |  | ||||||
|  | @ -120,6 +120,16 @@ int is_reactos_mbr(FILE *fp) | ||||||
|       contains_data(fp, 0x1FE, aucRef, sizeof(aucRef)); |       contains_data(fp, 0x1FE, aucRef, sizeof(aucRef)); | ||||||
| } /* is_reactos_mbr */ | } /* is_reactos_mbr */ | ||||||
| 
 | 
 | ||||||
|  | int is_kolibri_mbr(FILE *fp) | ||||||
|  | { | ||||||
|  |    #include "mbr_kolibri.h" | ||||||
|  |    unsigned char aucRef[] = {0x55, 0xAA}; | ||||||
|  | 
 | ||||||
|  |    return | ||||||
|  |       contains_data(fp, 0x0, mbr_kolibri_0x0, sizeof(mbr_kolibri_0x0)) && | ||||||
|  |       contains_data(fp, 0x1FE, aucRef, sizeof(aucRef)); | ||||||
|  | } /* is_kolibri_mbr */ | ||||||
|  | 
 | ||||||
| int is_syslinux_mbr(FILE *fp) | int is_syslinux_mbr(FILE *fp) | ||||||
| { | { | ||||||
|    #include "mbr_syslinux.h" |    #include "mbr_syslinux.h" | ||||||
|  | @ -210,6 +220,16 @@ int write_reactos_mbr(FILE *fp) | ||||||
|       write_data(fp, 0x1FE, aucRef, sizeof(aucRef)); |       write_data(fp, 0x1FE, aucRef, sizeof(aucRef)); | ||||||
| } /* write_reactos_mbr */ | } /* write_reactos_mbr */ | ||||||
| 
 | 
 | ||||||
|  | int write_kolibri_mbr(FILE *fp) | ||||||
|  | { | ||||||
|  |    #include "mbr_kolibri.h" | ||||||
|  |    unsigned char aucRef[] = {0x55, 0xAA}; | ||||||
|  | 
 | ||||||
|  |    return | ||||||
|  |       write_data(fp, 0x0, mbr_kolibri_0x0, sizeof(mbr_kolibri_0x0)) && | ||||||
|  |       write_data(fp, 0x1FE, aucRef, sizeof(aucRef)); | ||||||
|  | } /* write_kolibri_mbr */ | ||||||
|  | 
 | ||||||
| int write_syslinux_mbr(FILE *fp) | int write_syslinux_mbr(FILE *fp) | ||||||
| { | { | ||||||
|    #include "mbr_syslinux.h" |    #include "mbr_syslinux.h" | ||||||
|  |  | ||||||
|  | @ -220,3 +220,30 @@ int write_fat_32_ros_br(FILE *fp, int bKeepLabel) | ||||||
| 	   write_data(fp, 0x1c00, br_fat32ros_0x1c00, sizeof(br_fat32ros_0x1c00)) | 	   write_data(fp, 0x1c00, br_fat32ros_0x1c00, sizeof(br_fat32ros_0x1c00)) | ||||||
| 	    ); | 	    ); | ||||||
| } /* write_fat_32_ros_br */ | } /* write_fat_32_ros_br */ | ||||||
|  | 
 | ||||||
|  | int entire_fat_32_kos_br_matches(FILE *fp) | ||||||
|  | { | ||||||
|  |    #include "br_fat32_0x0.h" | ||||||
|  |    #include "br_fat32kos_0x52.h" | ||||||
|  | 
 | ||||||
|  |    return | ||||||
|  |       ( contains_data(fp, 0x0, br_fat32_0x0, sizeof(br_fat32_0x0)) && | ||||||
|  |         contains_data(fp, 0x52, br_fat32kos_0x52, sizeof(br_fat32kos_0x52)) ); | ||||||
|  | } /* entire_fat_32_kos_br_matches */ | ||||||
|  | 
 | ||||||
|  | int write_fat_32_kos_br(FILE *fp, int bKeepLabel) | ||||||
|  | { | ||||||
|  |    #include "label_11_char.h" | ||||||
|  |    #include "br_fat32_0x0.h" | ||||||
|  |    #include "br_fat32kos_0x52.h" | ||||||
|  | 
 | ||||||
|  |    if(bKeepLabel) | ||||||
|  |       return | ||||||
|  | 	 ( write_data(fp, 0x0, br_fat32_0x0, sizeof(br_fat32_0x0)) && | ||||||
|  | 	   write_data(fp, 0x52, br_fat32kos_0x52, sizeof(br_fat32kos_0x52)) ); | ||||||
|  |    else | ||||||
|  |       return | ||||||
|  | 	 ( write_data(fp, 0x0, br_fat32_0x0, sizeof(br_fat32_0x0)) && | ||||||
|  | 	   write_data(fp, 0x47, label_11_char, sizeof(label_11_char)) && | ||||||
|  | 	   write_data(fp, 0x52, br_fat32kos_0x52, sizeof(br_fat32kos_0x52)) ); | ||||||
|  | } /* write_fat_32_kos_br */ | ||||||
|  |  | ||||||
|  | @ -44,6 +44,10 @@ int is_rufus_mbr(FILE *fp); | ||||||
|    FALSE.The file position will change when this function is called! */ |    FALSE.The file position will change when this function is called! */ | ||||||
| int is_reactos_mbr(FILE *fp); | int is_reactos_mbr(FILE *fp); | ||||||
| 
 | 
 | ||||||
|  | /* returns TRUE if the file has a KolibriOS master boot record, otherwise
 | ||||||
|  |    FALSE.The file position will change when this function is called! */ | ||||||
|  | int is_kolibri_mbr(FILE *fp); | ||||||
|  | 
 | ||||||
| /* returns TRUE if the file has a syslinux master boot record, otherwise
 | /* returns TRUE if the file has a syslinux master boot record, otherwise
 | ||||||
|    FALSE.The file position will change when this function is called! */ |    FALSE.The file position will change when this function is called! */ | ||||||
| int is_syslinux_mbr(FILE *fp); | int is_syslinux_mbr(FILE *fp); | ||||||
|  | @ -80,6 +84,10 @@ int write_rufus_mbr(FILE *fp); | ||||||
|    FALSE */ |    FALSE */ | ||||||
| int write_reactos_mbr(FILE *fp); | int write_reactos_mbr(FILE *fp); | ||||||
| 
 | 
 | ||||||
|  | /* Writes a KolibriOS master boot record to a file, returns TRUE on success, otherwise
 | ||||||
|  |    FALSE */ | ||||||
|  | int write_kolibri_mbr(FILE *fp); | ||||||
|  | 
 | ||||||
| /* Writes a syslinux master boot record to a file, returns TRUE on success, otherwise
 | /* Writes a syslinux master boot record to a file, returns TRUE on success, otherwise
 | ||||||
|    FALSE */ |    FALSE */ | ||||||
| int write_syslinux_mbr(FILE *fp); | int write_syslinux_mbr(FILE *fp); | ||||||
|  |  | ||||||
							
								
								
									
										38
									
								
								src/ms-sys/inc/br_fat32kos_0x52.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								src/ms-sys/inc/br_fat32kos_0x52.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,38 @@ | ||||||
|  | unsigned char br_fat32kos_0x52[] = { | ||||||
|  | 	0x46, 0x41, 0x54, 0x33, 0x32, 0x20, 0x20, 0x20, 0x80, 0x3C, 0x80, 0x75, | ||||||
|  | 	0x09, 0x66, 0x8B, 0x44, 0x08, 0x2E, 0x66, 0xA3, 0x1C, 0x7C, 0x66, 0x31, | ||||||
|  | 	0xC0, 0x8E, 0xD8, 0x8E, 0xD0, 0xBC, 0x00, 0x7C, 0x89, 0xE5, 0x88, 0x16, | ||||||
|  | 	0x08, 0x7A, 0xFC, 0xFB, 0x68, 0x00, 0x08, 0x07, 0x66, 0x0F, 0xB7, 0x5E, | ||||||
|  | 	0x0E, 0x66, 0x89, 0x1E, 0x00, 0x7A, 0x8A, 0x46, 0x10, 0x66, 0xF7, 0x66, | ||||||
|  | 	0x24, 0x66, 0x01, 0xD8, 0x66, 0x0F, 0xB6, 0x5E, 0x0D, 0x01, 0xDB, 0x66, | ||||||
|  | 	0x29, 0xD8, 0x66, 0xA3, 0x04, 0x7A, 0x66, 0x8B, 0x46, 0x2C, 0x66, 0x25, | ||||||
|  | 	0xFF, 0xFF, 0xFF, 0x0F, 0x31, 0xDB, 0x89, 0xDF, 0x66, 0x50, 0xE8, 0x62, | ||||||
|  | 	0x00, 0x0F, 0xB6, 0x4E, 0x0D, 0xC1, 0xE1, 0x04, 0x26, 0x80, 0x3D, 0x00, | ||||||
|  | 	0x74, 0x4D, 0x51, 0x57, 0xB9, 0x0B, 0x00, 0xBE, 0xCB, 0x7D, 0xF3, 0xA6, | ||||||
|  | 	0x5F, 0x59, 0x74, 0x0E, 0x83, 0xC7, 0x20, 0xE2, 0xE7, 0x66, 0x58, 0xE8, | ||||||
|  | 	0x8D, 0x00, 0x73, 0x33, 0x72, 0xCE, 0x66, 0x58, 0x26, 0x8B, 0x45, 0x14, | ||||||
|  | 	0x25, 0xFF, 0x0F, 0x66, 0xC1, 0xE0, 0x10, 0x26, 0x8B, 0x45, 0x1A, 0x31, | ||||||
|  | 	0xDB, 0x66, 0x50, 0xE8, 0x21, 0x00, 0x8C, 0xC0, 0x0F, 0xB6, 0x4E, 0x0D, | ||||||
|  | 	0xC1, 0xE1, 0x05, 0x01, 0xC8, 0x8E, 0xC0, 0x66, 0x58, 0xE8, 0x5F, 0x00, | ||||||
|  | 	0x72, 0xE5, 0xEA, 0x00, 0x80, 0x00, 0x00, 0xBE, 0xBA, 0x7D, 0xE8, 0x98, | ||||||
|  | 	0x00, 0xEB, 0xFE, 0x66, 0x0F, 0xB6, 0x4E, 0x0D, 0x66, 0xF7, 0xE1, 0x66, | ||||||
|  | 	0x03, 0x06, 0x04, 0x7A, 0x66, 0x03, 0x46, 0x1C, 0x06, 0x66, 0x60, 0x6A, | ||||||
|  | 	0x00, 0x6A, 0x00, 0x66, 0x50, 0x06, 0x53, 0x83, 0xE9, 0x7F, 0x19, 0xC0, | ||||||
|  | 	0x21, 0xC8, 0x83, 0xC0, 0x7F, 0x50, 0xC1, 0xE0, 0x05, 0x8C, 0xC1, 0x01, | ||||||
|  | 	0xC1, 0x8E, 0xC1, 0x6A, 0x10, 0xB8, 0x00, 0x42, 0x8A, 0x16, 0x08, 0x7A, | ||||||
|  | 	0x89, 0xE6, 0xCD, 0x13, 0xBE, 0xD9, 0x7D, 0x72, 0xB9, 0x61, 0x66, 0x61, | ||||||
|  | 	0x66, 0x83, 0xC0, 0x7F, 0x83, 0xE9, 0x7F, 0x77, 0xC4, 0x07, 0xC3, 0x06, | ||||||
|  | 	0x1E, 0x07, 0xBB, 0x00, 0x7E, 0x66, 0x50, 0x66, 0xC1, 0xE8, 0x07, 0x66, | ||||||
|  | 	0x3B, 0x06, 0xF9, 0x7D, 0x74, 0x0F, 0x66, 0xA3, 0xF9, 0x7D, 0x66, 0x03, | ||||||
|  | 	0x06, 0x00, 0x7A, 0xB9, 0x01, 0x00, 0xE8, 0x9B, 0xFF, 0x66, 0x58, 0x66, | ||||||
|  | 	0x83, 0xE0, 0x7F, 0x67, 0x66, 0x8B, 0x04, 0x85, 0x00, 0x7E, 0x00, 0x00, | ||||||
|  | 	0x66, 0x25, 0xFF, 0xFF, 0xFF, 0x0F, 0x66, 0x3D, 0xF7, 0xFF, 0xFF, 0x0F, | ||||||
|  | 	0xBE, 0xEB, 0x7D, 0x0F, 0x84, 0x67, 0xFF, 0x07, 0xC3, 0xAC, 0x84, 0xC0, | ||||||
|  | 	0x74, 0x09, 0xB4, 0x0E, 0xBB, 0x07, 0x00, 0xCD, 0x10, 0xEB, 0xF2, 0xC3, | ||||||
|  | 	0x43, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20, 0x66, 0x69, 0x6E, 0x64, 0x20, | ||||||
|  | 	0x66, 0x69, 0x6C, 0x65, 0x20, 0x4D, 0x54, 0x4C, 0x44, 0x5F, 0x46, 0x33, | ||||||
|  | 	0x32, 0x20, 0x20, 0x20, 0x0D, 0x0A, 0x00, 0x44, 0x69, 0x73, 0x6B, 0x20, | ||||||
|  | 	0x72, 0x65, 0x61, 0x64, 0x20, 0x65, 0x72, 0x72, 0x6F, 0x72, 0x0D, 0x0A, | ||||||
|  | 	0x00, 0x42, 0x61, 0x64, 0x20, 0x63, 0x6C, 0x75, 0x73, 0x74, 0x65, 0x72, | ||||||
|  | 	0x0D, 0x0A, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x55, 0xAA | ||||||
|  | }; | ||||||
|  | @ -47,4 +47,13 @@ int entire_fat_32_ros_br_matches(FILE *fp); | ||||||
|    FALSE */ |    FALSE */ | ||||||
| int write_fat_32_ros_br(FILE *fp, int bKeepLabel); | int write_fat_32_ros_br(FILE *fp, int bKeepLabel); | ||||||
| 
 | 
 | ||||||
|  | /* returns TRUE if the file has an exact match of the FAT32 boot record this
 | ||||||
|  |    program would create for KolibriOS, otherwise FALSE. | ||||||
|  |    The file position will change when this function is called! */ | ||||||
|  | int entire_fat_32_kos_br_matches(FILE *fp); | ||||||
|  | 
 | ||||||
|  | /* Writes a FAT32 KolibriOS boot record to a file, returns TRUE on success, otherwise
 | ||||||
|  |    FALSE */ | ||||||
|  | int write_fat_32_kos_br(FILE *fp, int bKeepLabel); | ||||||
|  | 
 | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
							
								
								
									
										40
									
								
								src/ms-sys/inc/mbr_kolibri.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								src/ms-sys/inc/mbr_kolibri.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,40 @@ | ||||||
|  | /* First 440 bytes of MBR from KolibriOS */ | ||||||
|  | unsigned char mbr_kolibri_0x0[] = { | ||||||
|  | 	0x33, 0xC0, 0x8E, 0xD0, 0xBC, 0x00, 0x7C, 0xFB, 0x50, 0x07, 0x50, 0x1F, | ||||||
|  | 	0xFC, 0xBE, 0x1B, 0x7C, 0xBF, 0x1B, 0x06, 0x50, 0x57, 0xB9, 0xE5, 0x01, | ||||||
|  | 	0xF3, 0xA4, 0xCB, 0xBD, 0xBE, 0x07, 0xB1, 0x04, 0x38, 0x6E, 0x00, 0x7C, | ||||||
|  | 	0x09, 0x75, 0x13, 0x83, 0xC5, 0x10, 0xE2, 0xF4, 0xCD, 0x18, 0x8B, 0xF5, | ||||||
|  | 	0x83, 0xC6, 0x10, 0x49, 0x74, 0x19, 0x38, 0x2C, 0x74, 0xF6, 0xA0, 0xB5, | ||||||
|  | 	0x07, 0xB4, 0x07, 0x8B, 0xF0, 0xAC, 0x3C, 0x00, 0x74, 0xFC, 0xBB, 0x07, | ||||||
|  | 	0x00, 0xB4, 0x0E, 0xCD, 0x10, 0xEB, 0xF2, 0x88, 0x4E, 0x10, 0xE8, 0x46, | ||||||
|  | 	0x00, 0x73, 0x2A, 0xFE, 0x46, 0x10, 0x80, 0x7E, 0x04, 0x0B, 0x74, 0x0B, | ||||||
|  | 	0x80, 0x7E, 0x04, 0x0C, 0x74, 0x05, 0xA0, 0xB6, 0x07, 0x75, 0xD2, 0x80, | ||||||
|  | 	0x46, 0x02, 0x06, 0x83, 0x46, 0x08, 0x06, 0x83, 0x56, 0x0A, 0x00, 0xE8, | ||||||
|  | 	0x21, 0x00, 0x73, 0x05, 0xA0, 0xB6, 0x07, 0xEB, 0xBC, 0x81, 0x3E, 0xFE, | ||||||
|  | 	0x7D, 0x55, 0xAA, 0x74, 0x0B, 0x80, 0x7E, 0x10, 0x00, 0x74, 0xC8, 0xA0, | ||||||
|  | 	0xB7, 0x07, 0xEB, 0xA9, 0x8B, 0xFC, 0x1E, 0x57, 0x8B, 0xF5, 0xCB, 0xBF, | ||||||
|  | 	0x05, 0x00, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | ||||||
|  | 	0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | ||||||
|  | 	0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | ||||||
|  | 	0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | ||||||
|  | 	0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | ||||||
|  | 	0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, | ||||||
|  | 	0x90, 0x90, 0x90, 0x90, 0x90, 0x60, 0xBB, 0xAA, 0x55, 0xB4, 0x41, 0xCD, | ||||||
|  | 	0x13, 0x72, 0x36, 0x81, 0xFB, 0x55, 0xAA, 0x75, 0x30, 0xF6, 0xC1, 0x01, | ||||||
|  | 	0x74, 0x2B, 0x61, 0x60, 0x6A, 0x00, 0x6A, 0x00, 0xFF, 0x76, 0x0A, 0xFF, | ||||||
|  | 	0x76, 0x08, 0x6A, 0x00, 0x68, 0x00, 0x7C, 0x6A, 0x01, 0x6A, 0x10, 0xB4, | ||||||
|  | 	0x42, 0x8B, 0xF4, 0xCD, 0x13, 0x61, 0x61, 0x73, 0x0E, 0x4F, 0x74, 0x0B, | ||||||
|  | 	0x32, 0xE4, 0x52, 0xCD, 0x13, 0x5A, 0x90, 0xEB, 0xD6, 0x61, 0xF9, 0xC3, | ||||||
|  | 	0x49, 0x6E, 0x76, 0x61, 0x6C, 0x69, 0x64, 0x20, 0x70, 0x61, 0x72, 0x74, | ||||||
|  | 	0x69, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x74, 0x61, 0x62, 0x6C, 0x65, 0x00, | ||||||
|  | 	0x45, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x6C, 0x6F, 0x61, 0x64, 0x69, 0x6E, | ||||||
|  | 	0x67, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, 0x20, | ||||||
|  | 	0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x00, 0x4D, 0x69, 0x73, 0x73, 0x69, | ||||||
|  | 	0x6E, 0x67, 0x20, 0x6F, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6E, 0x67, | ||||||
|  | 	0x20, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, | ||||||
|  | 	0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x44, 0x63 | ||||||
|  | }; | ||||||
							
								
								
									
										18
									
								
								src/rufus.c
									
										
									
									
									
								
							
							
						
						
									
										18
									
								
								src/rufus.c
									
										
									
									
									
								
							|  | @ -450,10 +450,10 @@ static void SetFSFromISO(void) | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	// Syslinux and EFI have precedence over bootmgr (unless the user selected BIOS as target type)
 | 	// Syslinux and EFI have precedence over bootmgr (unless the user selected BIOS as target type)
 | ||||||
| 	if ((HAS_SYSLINUX(iso_report)) || (IS_REACTOS(iso_report)) || ( (IS_EFI(iso_report)) && (bt == BT_UEFI))) { | 	if ((HAS_SYSLINUX(iso_report)) || (IS_REACTOS(iso_report)) || (iso_report.has_kolibrios) || ( (IS_EFI(iso_report)) && (bt == BT_UEFI))) { | ||||||
| 		if (fs_mask & (1<<FS_FAT32)) { | 		if (fs_mask & (1<<FS_FAT32)) { | ||||||
| 			selected_fs = FS_FAT32; | 			selected_fs = FS_FAT32; | ||||||
| 		} else if (fs_mask & (1<<FS_FAT16)) { | 		} else if ((fs_mask & (1<<FS_FAT16)) && (!iso_report.has_kolibrios)) { | ||||||
| 			selected_fs = FS_FAT16; | 			selected_fs = FS_FAT16; | ||||||
| 		} | 		} | ||||||
| 	} else if ((iso_report.has_bootmgr) || (IS_WINPE(iso_report.winpe))) { | 	} else if ((iso_report.has_bootmgr) || (IS_WINPE(iso_report.winpe))) { | ||||||
|  | @ -1221,10 +1221,11 @@ DWORD WINAPI ISOScanThread(LPVOID param) | ||||||
| 		if (HAS_SYSLINUX(iso_report)) { | 		if (HAS_SYSLINUX(iso_report)) { | ||||||
| 			safe_sprintf(isolinux_str, sizeof(isolinux_str), "Yes (%s)", iso_report.sl_version_str); | 			safe_sprintf(isolinux_str, sizeof(isolinux_str), "Yes (%s)", iso_report.sl_version_str); | ||||||
| 		} | 		} | ||||||
|  | 		// TODO: This should become a DisplayISOProps() call or something
 | ||||||
| 		uprintf("ISO label: '%s'\r\n  Size: %lld bytes\r\n  Has a >64 chars filename: %s\r\n  Has Symlinks: %s\r\n  Has a >4GB file: %s\r\n" | 		uprintf("ISO label: '%s'\r\n  Size: %lld bytes\r\n  Has a >64 chars filename: %s\r\n  Has Symlinks: %s\r\n  Has a >4GB file: %s\r\n" | ||||||
| 			"  Uses ReactOS: %s\r\n  Uses EFI: %s%s\r\n  Uses Bootmgr: %s\r\n  Uses WinPE: %s%s\r\n  Uses isolinux: %s\r\n", | 			"  Uses ReactOS: %s\r\n  Uses KolibriOS: %s\r\n  Uses EFI: %s%s\r\n  Uses Bootmgr: %s\r\n  Uses WinPE: %s%s\r\n  Uses isolinux: %s\r\n", | ||||||
| 			iso_report.label, iso_report.projected_size, iso_report.has_long_filename?"Yes":"No", iso_report.has_symlinks?"Yes":"No", | 			iso_report.label, iso_report.projected_size, iso_report.has_long_filename?"Yes":"No", iso_report.has_symlinks?"Yes":"No", | ||||||
| 			iso_report.has_4GB_file?"Yes":"No", IS_REACTOS(iso_report)?"Yes":"No", (iso_report.has_efi || iso_report.has_win7_efi)?"Yes":"No", | 			iso_report.has_4GB_file?"Yes":"No", IS_REACTOS(iso_report)?"Yes":"No", iso_report.has_kolibrios?"Yes":"No", (iso_report.has_efi || iso_report.has_win7_efi)?"Yes":"No", | ||||||
| 			(iso_report.has_win7_efi && (!iso_report.has_efi))?" (win7_x64)":"", iso_report.has_bootmgr?"Yes":"No", | 			(iso_report.has_win7_efi && (!iso_report.has_efi))?" (win7_x64)":"", iso_report.has_bootmgr?"Yes":"No", | ||||||
| 			IS_WINPE(iso_report.winpe)?"Yes":"No", (iso_report.uses_minint)?" (with /minint)":"", isolinux_str); | 			IS_WINPE(iso_report.winpe)?"Yes":"No", (iso_report.uses_minint)?" (with /minint)":"", isolinux_str); | ||||||
| 		if (HAS_SYSLINUX(iso_report) && (SL_MAJOR(iso_report.sl_version) < 5)) { | 		if (HAS_SYSLINUX(iso_report) && (SL_MAJOR(iso_report.sl_version) < 5)) { | ||||||
|  | @ -1234,7 +1235,7 @@ DWORD WINAPI ISOScanThread(LPVOID param) | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if ( (!iso_report.has_bootmgr) && (!HAS_SYSLINUX(iso_report)) && (!IS_WINPE(iso_report.winpe))  | 	if ( (!iso_report.has_bootmgr) && (!HAS_SYSLINUX(iso_report)) && (!IS_WINPE(iso_report.winpe))  | ||||||
| 		&& (!iso_report.has_efi) && (!IS_REACTOS(iso_report) && (!iso_report.is_bootable_img)) ) { | 		&& (!iso_report.has_efi) && (!IS_REACTOS(iso_report) && (!iso_report.has_kolibrios) && (!iso_report.is_bootable_img)) ) { | ||||||
| 		MessageBoxU(hMainDialog, lmprintf(MSG_082), lmprintf(MSG_081), MB_OK|MB_ICONINFORMATION|MB_IS_RTL); | 		MessageBoxU(hMainDialog, lmprintf(MSG_082), lmprintf(MSG_081), MB_OK|MB_ICONINFORMATION|MB_IS_RTL); | ||||||
| 		safe_free(iso_path); | 		safe_free(iso_path); | ||||||
| 		SetMBRProps(); | 		SetMBRProps(); | ||||||
|  | @ -1401,7 +1402,12 @@ static BOOL BootCheck(void) | ||||||
| 				MessageBoxU(hMainDialog, lmprintf(MSG_097), lmprintf(MSG_090), MB_OK|MB_ICONERROR|MB_IS_RTL); | 				MessageBoxU(hMainDialog, lmprintf(MSG_097), lmprintf(MSG_090), MB_OK|MB_ICONERROR|MB_IS_RTL); | ||||||
| 			} | 			} | ||||||
| 			return FALSE; | 			return FALSE; | ||||||
| 		} else if (((fs == FS_FAT16)||(fs == FS_FAT32)) && (!HAS_SYSLINUX(iso_report)) && (!IS_REACTOS(iso_report))) { | 		} else if ((fs == FS_FAT16) && (iso_report.has_kolibrios)) { | ||||||
|  | 			// KolibriOS doesn't support FAT16
 | ||||||
|  | 			MessageBoxU(hMainDialog, "This ISO is not compatible with the selected filesystem", lmprintf(MSG_099), MB_OK|MB_ICONERROR|MB_IS_RTL); | ||||||
|  | 			return FALSE; | ||||||
|  | 		} else if (((fs == FS_FAT16)||(fs == FS_FAT32)) && (!HAS_SYSLINUX(iso_report)) && | ||||||
|  | 			(!IS_REACTOS(iso_report)) && (!iso_report.has_kolibrios)) { | ||||||
| 			// FAT/FAT32 can only be used for isolinux based ISO images or when the Target Type is UEFI
 | 			// FAT/FAT32 can only be used for isolinux based ISO images or when the Target Type is UEFI
 | ||||||
| 			MessageBoxU(hMainDialog, lmprintf(MSG_098), lmprintf(MSG_090), MB_OK|MB_ICONERROR|MB_IS_RTL); | 			MessageBoxU(hMainDialog, lmprintf(MSG_098), lmprintf(MSG_090), MB_OK|MB_ICONERROR|MB_IS_RTL); | ||||||
| 			return FALSE; | 			return FALSE; | ||||||
|  |  | ||||||
|  | @ -245,6 +245,7 @@ typedef struct { | ||||||
| 	BOOL has_autorun; | 	BOOL has_autorun; | ||||||
| 	BOOL has_old_c32[NB_OLD_C32]; | 	BOOL has_old_c32[NB_OLD_C32]; | ||||||
| 	BOOL has_old_vesamenu; | 	BOOL has_old_vesamenu; | ||||||
|  | 	BOOL has_kolibrios; | ||||||
| 	BOOL uses_minint; | 	BOOL uses_minint; | ||||||
| 	BOOL is_bootable_img; | 	BOOL is_bootable_img; | ||||||
| 	uint16_t sl_version;	// Syslinux/Isolinux version
 | 	uint16_t sl_version;	// Syslinux/Isolinux version
 | ||||||
|  | @ -337,7 +338,7 @@ extern BOOL Notification(int type, const notification_info* more_info, char* tit | ||||||
| extern BOOL Question(char* title, char* format, ...); | extern BOOL Question(char* title, char* format, ...); | ||||||
| extern BOOL ExtractDOS(const char* path); | extern BOOL ExtractDOS(const char* path); | ||||||
| extern BOOL ExtractISO(const char* src_iso, const char* dest_dir, BOOL scan); | extern BOOL ExtractISO(const char* src_iso, const char* dest_dir, BOOL scan); | ||||||
| extern int64_t ExtractISOFile(const char* iso, const char* iso_file, const char* dest_file); | extern int64_t ExtractISOFile(const char* iso, const char* iso_file, const char* dest_file, DWORD attributes); | ||||||
| extern BOOL InstallSyslinux(DWORD drive_index, char drive_letter); | extern BOOL InstallSyslinux(DWORD drive_index, char drive_letter); | ||||||
| DWORD WINAPI FormatThread(void* param); | DWORD WINAPI FormatThread(void* param); | ||||||
| extern BOOL CreateProgress(void); | extern BOOL CreateProgress(void); | ||||||
|  |  | ||||||
							
								
								
									
										12
									
								
								src/rufus.rc
									
										
									
									
									
								
							
							
						
						
									
										12
									
								
								src/rufus.rc
									
										
									
									
									
								
							|  | @ -32,7 +32,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL | ||||||
| 
 | 
 | ||||||
| IDD_DIALOG DIALOGEX 12, 12, 206, 329 | IDD_DIALOG DIALOGEX 12, 12, 206, 329 | ||||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | ||||||
| CAPTION "Rufus 1.4.8.463" | CAPTION "Rufus 1.4.8.464" | ||||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x1 | FONT 8, "MS Shell Dlg", 400, 0, 0x1 | ||||||
| BEGIN | BEGIN | ||||||
|     DEFPUSHBUTTON   "Start",IDC_START,94,291,50,14 |     DEFPUSHBUTTON   "Start",IDC_START,94,291,50,14 | ||||||
|  | @ -165,7 +165,7 @@ END | ||||||
| RTL_IDD_DIALOG DIALOGEX 12, 12, 206, 329 | RTL_IDD_DIALOG DIALOGEX 12, 12, 206, 329 | ||||||
| STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU | STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | 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 1.4.8.463" | CAPTION "Rufus 1.4.8.464" | ||||||
| FONT 8, "MS Shell Dlg", 400, 0, 0x1 | FONT 8, "MS Shell Dlg", 400, 0, 0x1 | ||||||
| BEGIN | BEGIN | ||||||
|     DEFPUSHBUTTON   "Start",IDC_START,94,291,50,14 |     DEFPUSHBUTTON   "Start",IDC_START,94,291,50,14 | ||||||
|  | @ -427,8 +427,8 @@ END | ||||||
| // | // | ||||||
| 
 | 
 | ||||||
| VS_VERSION_INFO VERSIONINFO | VS_VERSION_INFO VERSIONINFO | ||||||
|  FILEVERSION 1,4,8,463 |  FILEVERSION 1,4,8,464 | ||||||
|  PRODUCTVERSION 1,4,8,463 |  PRODUCTVERSION 1,4,8,464 | ||||||
|  FILEFLAGSMASK 0x3fL |  FILEFLAGSMASK 0x3fL | ||||||
| #ifdef _DEBUG | #ifdef _DEBUG | ||||||
|  FILEFLAGS 0x1L |  FILEFLAGS 0x1L | ||||||
|  | @ -445,13 +445,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", "1.4.8.463" |             VALUE "FileVersion", "1.4.8.464" | ||||||
|             VALUE "InternalName", "Rufus" |             VALUE "InternalName", "Rufus" | ||||||
|             VALUE "LegalCopyright", "© 2011-2014 Pete Batard (GPL v3)" |             VALUE "LegalCopyright", "© 2011-2014 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", "1.4.8.463" |             VALUE "ProductVersion", "1.4.8.464" | ||||||
|         END |         END | ||||||
|     END |     END | ||||||
|     BLOCK "VarFileInfo" |     BLOCK "VarFileInfo" | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue