mirror of
				https://github.com/pbatard/rufus.git
				synced 2024-08-14 23:57:05 +00:00 
			
		
		
		
	[bb] bad blocks check improvement
* Use a default block size of 128 KB (can speed up read operations) * Reorganise patterns to suit different types of NAND cells (SLC, MLC and TLC) * Only run fake drive test on first pass * Also update rufus-next to 3.2
This commit is contained in:
		
							parent
							
								
									d4a4506b16
								
							
						
					
					
						commit
						2d262df8f3
					
				
					 12 changed files with 121 additions and 94 deletions
				
			
		
							
								
								
									
										20
									
								
								configure
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								configure
									
										
									
									
										vendored
									
									
								
							|  | @ -1,6 +1,6 @@ | ||||||
| #! /bin/sh | #! /bin/sh | ||||||
| # Guess values for system-dependent variables and create Makefiles. | # Guess values for system-dependent variables and create Makefiles. | ||||||
| # Generated by GNU Autoconf 2.69 for rufus 3.1. | # Generated by GNU Autoconf 2.69 for rufus 3.2. | ||||||
| # | # | ||||||
| # Report bugs to <https://github.com/pbatard/rufus/issues>. | # Report bugs to <https://github.com/pbatard/rufus/issues>. | ||||||
| # | # | ||||||
|  | @ -580,8 +580,8 @@ MAKEFLAGS= | ||||||
| # Identity of this package. | # Identity of this package. | ||||||
| PACKAGE_NAME='rufus' | PACKAGE_NAME='rufus' | ||||||
| PACKAGE_TARNAME='rufus' | PACKAGE_TARNAME='rufus' | ||||||
| PACKAGE_VERSION='3.1' | PACKAGE_VERSION='3.2' | ||||||
| PACKAGE_STRING='rufus 3.1' | PACKAGE_STRING='rufus 3.2' | ||||||
| PACKAGE_BUGREPORT='https://github.com/pbatard/rufus/issues' | PACKAGE_BUGREPORT='https://github.com/pbatard/rufus/issues' | ||||||
| PACKAGE_URL='https://rufus.akeo.ie' | PACKAGE_URL='https://rufus.akeo.ie' | ||||||
| 
 | 
 | ||||||
|  | @ -1228,7 +1228,7 @@ if test "$ac_init_help" = "long"; then | ||||||
|   # Omit some internal or obsolete options to make the list less imposing. |   # Omit some internal or obsolete options to make the list less imposing. | ||||||
|   # This message is too long to be a string in the A/UX 3.1 sh. |   # This message is too long to be a string in the A/UX 3.1 sh. | ||||||
|   cat <<_ACEOF |   cat <<_ACEOF | ||||||
| \`configure' configures rufus 3.1 to adapt to many kinds of systems. | \`configure' configures rufus 3.2 to adapt to many kinds of systems. | ||||||
| 
 | 
 | ||||||
| Usage: $0 [OPTION]... [VAR=VALUE]... | Usage: $0 [OPTION]... [VAR=VALUE]... | ||||||
| 
 | 
 | ||||||
|  | @ -1294,7 +1294,7 @@ fi | ||||||
| 
 | 
 | ||||||
| if test -n "$ac_init_help"; then | if test -n "$ac_init_help"; then | ||||||
|   case $ac_init_help in |   case $ac_init_help in | ||||||
|      short | recursive ) echo "Configuration of rufus 3.1:";; |      short | recursive ) echo "Configuration of rufus 3.2:";; | ||||||
|    esac |    esac | ||||||
|   cat <<\_ACEOF |   cat <<\_ACEOF | ||||||
| 
 | 
 | ||||||
|  | @ -1385,7 +1385,7 @@ fi | ||||||
| test -n "$ac_init_help" && exit $ac_status | test -n "$ac_init_help" && exit $ac_status | ||||||
| if $ac_init_version; then | if $ac_init_version; then | ||||||
|   cat <<\_ACEOF |   cat <<\_ACEOF | ||||||
| rufus configure 3.1 | rufus configure 3.2 | ||||||
| generated by GNU Autoconf 2.69 | generated by GNU Autoconf 2.69 | ||||||
| 
 | 
 | ||||||
| Copyright (C) 2012 Free Software Foundation, Inc. | Copyright (C) 2012 Free Software Foundation, Inc. | ||||||
|  | @ -1440,7 +1440,7 @@ cat >config.log <<_ACEOF | ||||||
| This file contains any messages produced by compilers while | This file contains any messages produced by compilers while | ||||||
| running configure, to aid debugging if configure makes a mistake. | running configure, to aid debugging if configure makes a mistake. | ||||||
| 
 | 
 | ||||||
| It was created by rufus $as_me 3.1, which was | It was created by rufus $as_me 3.2, which was | ||||||
| generated by GNU Autoconf 2.69.  Invocation command line was | generated by GNU Autoconf 2.69.  Invocation command line was | ||||||
| 
 | 
 | ||||||
|   $ $0 $@ |   $ $0 $@ | ||||||
|  | @ -2303,7 +2303,7 @@ fi | ||||||
| 
 | 
 | ||||||
| # Define the identity of the package. | # Define the identity of the package. | ||||||
|  PACKAGE='rufus' |  PACKAGE='rufus' | ||||||
|  VERSION='3.1' |  VERSION='3.2' | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| cat >>confdefs.h <<_ACEOF | cat >>confdefs.h <<_ACEOF | ||||||
|  | @ -4481,7 +4481,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 | ||||||
| # report actual input values of CONFIG_FILES etc. instead of their | # report actual input values of CONFIG_FILES etc. instead of their | ||||||
| # values after options handling. | # values after options handling. | ||||||
| ac_log=" | ac_log=" | ||||||
| This file was extended by rufus $as_me 3.1, which was | This file was extended by rufus $as_me 3.2, which was | ||||||
| generated by GNU Autoconf 2.69.  Invocation command line was | generated by GNU Autoconf 2.69.  Invocation command line was | ||||||
| 
 | 
 | ||||||
|   CONFIG_FILES    = $CONFIG_FILES |   CONFIG_FILES    = $CONFIG_FILES | ||||||
|  | @ -4535,7 +4535,7 @@ _ACEOF | ||||||
| cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 | cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 | ||||||
| ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" | ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" | ||||||
| ac_cs_version="\\ | ac_cs_version="\\ | ||||||
| rufus config.status 3.1 | rufus config.status 3.2 | ||||||
| configured by $0, generated by GNU Autoconf 2.69, | configured by $0, generated by GNU Autoconf 2.69, | ||||||
|   with options \\"\$ac_cs_config\\" |   with options \\"\$ac_cs_config\\" | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,4 +1,4 @@ | ||||||
| AC_INIT([rufus], [3.1], [https://github.com/pbatard/rufus/issues], [rufus], [https://rufus.akeo.ie]) | AC_INIT([rufus], [3.2], [https://github.com/pbatard/rufus/issues], [rufus], [https://rufus.akeo.ie]) | ||||||
| AM_INIT_AUTOMAKE([-Wno-portability foreign no-dist no-dependencies]) | AM_INIT_AUTOMAKE([-Wno-portability foreign no-dist no-dependencies]) | ||||||
| AC_CONFIG_SRCDIR([src/rufus.c]) | AC_CONFIG_SRCDIR([src/rufus.c]) | ||||||
| AC_CONFIG_MACRO_DIR([m4]) | AC_CONFIG_MACRO_DIR([m4]) | ||||||
|  |  | ||||||
|  | @ -8,7 +8,7 @@ | ||||||
|        for an interesting struggle, when you also happen to have a comma in one of the fields... --> |        for an interesting struggle, when you also happen to have a comma in one of the fields... --> | ||||||
|   <Identity |   <Identity | ||||||
|    Name="Rufus" |    Name="Rufus" | ||||||
|    Version="3.1.1320.0" |    Version="3.2.1320.0" | ||||||
|    ProcessorArchitecture="x86" |    ProcessorArchitecture="x86" | ||||||
|    Publisher='CN=Akeo Consulting, O=Akeo Consulting, STREET=24 Grey Rock, L=Milford, S=Co. Donegal, PostalCode=F92 D667, C=IE' /> |    Publisher='CN=Akeo Consulting, O=Akeo Consulting, STREET=24 Grey Rock, L=Milford, S=Co. Donegal, PostalCode=F92 D667, C=IE' /> | ||||||
|     <Properties> |     <Properties> | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| @echo off | @echo off | ||||||
| set VERSION=3.1 | set VERSION=3.2 | ||||||
| 
 | 
 | ||||||
| rem Make sure you don't have anything you don't want included in the package, as anything residing in the | rem Make sure you don't have anything you don't want included in the package, as anything residing in the | ||||||
| rem current directory will be included, including any previous .appx, which makes for nice recursion... | rem current directory will be included, including any previous .appx, which makes for nice recursion... | ||||||
|  |  | ||||||
|  | @ -15,7 +15,10 @@ content. PLEASE, do not just look at this Changelog when updating your | ||||||
| translation, but always use the English section of rufus.loc as your base. | translation, but always use the English section of rufus.loc as your base. | ||||||
| For instance, MSG_114, that was introduced in v1.0.8 is MORE than one line! | For instance, MSG_114, that was introduced in v1.0.8 is MORE than one line! | ||||||
| 
 | 
 | ||||||
| o Version 1.0.23 (2018.??.??) | o Version 1.0.24 (2018.??.??) | ||||||
|  |   - *NEW*      MSG_087 | ||||||
|  | 
 | ||||||
|  | o Version 1.0.23 (2018.03.27) | ||||||
|   - All positioning ('m', 's') has now been removed as well as some controls, for the 3.0 UI redesign |   - All positioning ('m', 's') has now been removed as well as some controls, for the 3.0 UI redesign | ||||||
|   - *NEW*      IDS_DRIVE_PROPERTIES_TXT "Drive Properties" |   - *NEW*      IDS_DRIVE_PROPERTIES_TXT "Drive Properties" | ||||||
|   - *NEW*      IDS_BOOT_SELECTION_TXT "Boot selection" |   - *NEW*      IDS_BOOT_SELECTION_TXT "Boot selection" | ||||||
|  |  | ||||||
|  | @ -208,7 +208,7 @@ t MSG_032 "UEFI (non CSM)" | ||||||
| t MSG_033 "BIOS or UEFI" | t MSG_033 "BIOS or UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d pass" | t MSG_034 "%d pass" | ||||||
| t MSG_035 "%d passes" | t MSG_035 "%d passes %s" | ||||||
| t MSG_036 "ISO Image" | t MSG_036 "ISO Image" | ||||||
| t MSG_037 "Application" | t MSG_037 "Application" | ||||||
| t MSG_038 "Abort" | t MSG_038 "Abort" | ||||||
|  | @ -277,6 +277,7 @@ t MSG_084 "This ISO image seems to use an obsolete version of '%s'.\n" | ||||||
| 	"'%s' exists there, it will be reused automatically." | 	"'%s' exists there, it will be reused automatically." | ||||||
| t MSG_085 "Downloading '%s'" | t MSG_085 "Downloading '%s'" | ||||||
| t MSG_086 "No image selected" | t MSG_086 "No image selected" | ||||||
|  | t MSG_087 "for %s devices" | ||||||
| t MSG_088 "Image is too big" | t MSG_088 "Image is too big" | ||||||
| t MSG_089 "The image is too big for the selected target." | t MSG_089 "The image is too big for the selected target." | ||||||
| t MSG_090 "Unsupported ISO" | t MSG_090 "Unsupported ISO" | ||||||
|  | @ -683,7 +684,7 @@ t MSG_032 "UEFI (بدون CSM)" | ||||||
| t MSG_033 "BIOS أو UEFI" | t MSG_033 "BIOS أو UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d تجاوز" | t MSG_034 "%d تجاوز" | ||||||
| t MSG_035 "%d تجاوزات" | t MSG_035 "%d تجاوزات %s" | ||||||
| t MSG_036 "ISO صورة" | t MSG_036 "ISO صورة" | ||||||
| t MSG_037 "تطبيق" | t MSG_037 "تطبيق" | ||||||
| t MSG_038 "توقف" | t MSG_038 "توقف" | ||||||
|  | @ -1135,7 +1136,7 @@ t MSG_032 "UEFI (yox CSM)" | ||||||
| t MSG_033 "BIOS və ya UEFI" | t MSG_033 "BIOS və ya UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d Keçid" | t MSG_034 "%d Keçid" | ||||||
| t MSG_035 "%d Keçid" | t MSG_035 "%d Keçid %s" | ||||||
| t MSG_036 "ISO Əksi" | t MSG_036 "ISO Əksi" | ||||||
| t MSG_037 "Proqram" | t MSG_037 "Proqram" | ||||||
| t MSG_038 "İmtina et" | t MSG_038 "İmtina et" | ||||||
|  | @ -1582,7 +1583,7 @@ t MSG_030 "%s (Стандартно)" | ||||||
| #t MSG_033 "%s дялова схема за UEFI" | #t MSG_033 "%s дялова схема за UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d Пробег" | t MSG_034 "%d Пробег" | ||||||
| t MSG_035 "%d Пробега" | t MSG_035 "%d Пробега %s" | ||||||
| t MSG_036 "ISO образ" | t MSG_036 "ISO образ" | ||||||
| t MSG_037 "Приложение" | t MSG_037 "Приложение" | ||||||
| t MSG_038 "Прекрати" | t MSG_038 "Прекрати" | ||||||
|  | @ -2027,7 +2028,7 @@ t MSG_032 "UEFI (非 CSM)" | ||||||
| t MSG_033 "BIOS 或 UEFI" | t MSG_033 "BIOS 或 UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d 遍" | t MSG_034 "%d 遍" | ||||||
| t MSG_035 "%d 遍" | t MSG_035 "%d 遍 %s" | ||||||
| t MSG_036 "ISO 镜像" | t MSG_036 "ISO 镜像" | ||||||
| t MSG_037 "程序" | t MSG_037 "程序" | ||||||
| t MSG_038 "中止" | t MSG_038 "中止" | ||||||
|  | @ -2470,7 +2471,7 @@ t MSG_032 "UEFI (無 CSM)" | ||||||
| t MSG_033 "BIOS 或 UEFI" | t MSG_033 "BIOS 或 UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d 回" | t MSG_034 "%d 回" | ||||||
| t MSG_035 "%d 回" | t MSG_035 "%d 回 %s" | ||||||
| t MSG_036 "ISO 映像" | t MSG_036 "ISO 映像" | ||||||
| t MSG_037 "程式" | t MSG_037 "程式" | ||||||
| t MSG_038 "終止" | t MSG_038 "終止" | ||||||
|  | @ -2884,7 +2885,7 @@ t MSG_032 "UEFI (bez CSM)" | ||||||
| t MSG_033 "BIOS ili UEFI" | t MSG_033 "BIOS ili UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d prolaz" | t MSG_034 "%d prolaz" | ||||||
| t MSG_035 "%d prolaza" | t MSG_035 "%d prolaza %s" | ||||||
| t MSG_036 "ISO slika" | t MSG_036 "ISO slika" | ||||||
| t MSG_037 "Aplikacija" | t MSG_037 "Aplikacija" | ||||||
| t MSG_038 "Prekini" | t MSG_038 "Prekini" | ||||||
|  | @ -3339,7 +3340,7 @@ t MSG_032 "UEFI (ne CSM)" | ||||||
| t MSG_033 "BIOS nebo UEFI" | t MSG_033 "BIOS nebo UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d pokus" | t MSG_034 "%d pokus" | ||||||
| t MSG_035 "%d pokusy" | t MSG_035 "%d pokusy %s" | ||||||
| t MSG_036 "Obraz ISO" | t MSG_036 "Obraz ISO" | ||||||
| t MSG_037 "Aplikace" | t MSG_037 "Aplikace" | ||||||
| t MSG_038 "Přerušit" | t MSG_038 "Přerušit" | ||||||
|  | @ -3791,7 +3792,7 @@ t MSG_032 "UEFI (ikke CSM)" | ||||||
| t MSG_033 "BIOS eller UEFI" | t MSG_033 "BIOS eller UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d gennemløb" | t MSG_034 "%d gennemløb" | ||||||
| t MSG_035 "%d gennemløb" | t MSG_035 "%d gennemløb %s" | ||||||
| t MSG_036 "ISO-image" | t MSG_036 "ISO-image" | ||||||
| t MSG_037 "Applikation" | t MSG_037 "Applikation" | ||||||
| t MSG_038 "Annuller" | t MSG_038 "Annuller" | ||||||
|  | @ -4227,7 +4228,7 @@ t MSG_032 "UEFI (geen CSM)" | ||||||
| t MSG_033 "BIOS of UEFI" | t MSG_033 "BIOS of UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d Ronde" | t MSG_034 "%d Ronde" | ||||||
| t MSG_035 "%d Rondes" | t MSG_035 "%d Rondes %s" | ||||||
| t MSG_036 "ISO image" | t MSG_036 "ISO image" | ||||||
| t MSG_037 "Applicatie" | t MSG_037 "Applicatie" | ||||||
| t MSG_038 "Afbreken" | t MSG_038 "Afbreken" | ||||||
|  | @ -4665,7 +4666,7 @@ t MSG_032 "UEFI (ei-CSM)" | ||||||
| t MSG_033 "BIOS tai UEFI" | t MSG_033 "BIOS tai UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d testi" | t MSG_034 "%d testi" | ||||||
| t MSG_035 "%d testiä" | t MSG_035 "%d testiä %s" | ||||||
| t MSG_036 "ISO-kuva" | t MSG_036 "ISO-kuva" | ||||||
| t MSG_037 "Sovellus" | t MSG_037 "Sovellus" | ||||||
| t MSG_038 "Keskeytä" | t MSG_038 "Keskeytä" | ||||||
|  | @ -5103,7 +5104,7 @@ t MSG_031 "BIOS (ou UEFI-CSM)" | ||||||
| t MSG_032 "UEFI (non CSM)" | t MSG_032 "UEFI (non CSM)" | ||||||
| t MSG_033 "BIOS ou UEFI" | t MSG_033 "BIOS ou UEFI" | ||||||
| t MSG_034 "%d passe" | t MSG_034 "%d passe" | ||||||
| t MSG_035 "%d passes" | t MSG_035 "%d passes %s" | ||||||
| t MSG_036 "Image ISO" | t MSG_036 "Image ISO" | ||||||
| t MSG_037 "Application" | t MSG_037 "Application" | ||||||
| t MSG_038 "Annuler" | t MSG_038 "Annuler" | ||||||
|  | @ -5526,7 +5527,7 @@ t MSG_032 "UEFI (ohne CSM)" | ||||||
| t MSG_033 "BIOS oder UEFI" | t MSG_033 "BIOS oder UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d Durchgang" | t MSG_034 "%d Durchgang" | ||||||
| t MSG_035 "%d Durchgänge" | t MSG_035 "%d Durchgänge %s" | ||||||
| t MSG_036 "ISO-Abbild" | t MSG_036 "ISO-Abbild" | ||||||
| t MSG_037 "Programm" | t MSG_037 "Programm" | ||||||
| t MSG_038 "Abbruch" | t MSG_038 "Abbruch" | ||||||
|  | @ -5954,7 +5955,7 @@ t MSG_032 "UEFI (εκτός από CSM)" | ||||||
| t MSG_033 "BIOS ή UEFI" | t MSG_033 "BIOS ή UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d Πέρασμα" | t MSG_034 "%d Πέρασμα" | ||||||
| t MSG_035 "%d Περάσματα" | t MSG_035 "%d Περάσματα %s" | ||||||
| t MSG_036 "Είδωλο ISO" | t MSG_036 "Είδωλο ISO" | ||||||
| t MSG_037 "Εφαρμογή" | t MSG_037 "Εφαρμογή" | ||||||
| t MSG_038 "Τερματισμός" | t MSG_038 "Τερματισμός" | ||||||
|  | @ -6410,7 +6411,7 @@ t MSG_032 "UEFI (שאינו CSM)" | ||||||
| t MSG_033 "BIOS או UEFI" | t MSG_033 "BIOS או UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "מעבר אחד" | t MSG_034 "מעבר אחד" | ||||||
| t MSG_035 "%d מעברים" | t MSG_035 "%d מעברים %s" | ||||||
| t MSG_036 "קובץ ISO" | t MSG_036 "קובץ ISO" | ||||||
| t MSG_037 "יישום" | t MSG_037 "יישום" | ||||||
| t MSG_038 "ביטול" | t MSG_038 "ביטול" | ||||||
|  | @ -6887,7 +6888,7 @@ t MSG_032 "UEFI (nem CSM)" | ||||||
| t MSG_033 "BIOS vagy UEFI" | t MSG_033 "BIOS vagy UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d vizsgálva" | t MSG_034 "%d vizsgálva" | ||||||
| t MSG_035 "%d vizsgálva" | t MSG_035 "%d vizsgálva %s" | ||||||
| t MSG_036 "ISO kép" | t MSG_036 "ISO kép" | ||||||
| t MSG_037 "Alkalmazás" | t MSG_037 "Alkalmazás" | ||||||
| t MSG_038 "Megszakít" | t MSG_038 "Megszakít" | ||||||
|  | @ -7339,7 +7340,7 @@ t MSG_032 "UEFI (non CSM)" | ||||||
| t MSG_033 "BIOS atau UEFI" | t MSG_033 "BIOS atau UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d kali uji" | t MSG_034 "%d kali uji" | ||||||
| t MSG_035 "%d kali uji" | t MSG_035 "%d kali uji %s" | ||||||
| t MSG_036 "ISO Image" | t MSG_036 "ISO Image" | ||||||
| t MSG_037 "Aplikasi" | t MSG_037 "Aplikasi" | ||||||
| t MSG_038 "Batal" | t MSG_038 "Batal" | ||||||
|  | @ -7787,7 +7788,7 @@ t MSG_031 "BIOS (o UEFI CSM)" | ||||||
| t MSG_032 "UEFI (non CSM)" | t MSG_032 "UEFI (non CSM)" | ||||||
| t MSG_033 "BIOS o UEFI" | t MSG_033 "BIOS o UEFI" | ||||||
| t MSG_034 "%d test" | t MSG_034 "%d test" | ||||||
| t MSG_035 "%d test" | t MSG_035 "%d test %s" | ||||||
| t MSG_036 "Immagine ISO" | t MSG_036 "Immagine ISO" | ||||||
| t MSG_037 "Applicazione" | t MSG_037 "Applicazione" | ||||||
| t MSG_038 "Annulla" | t MSG_038 "Annulla" | ||||||
|  | @ -8227,7 +8228,7 @@ t MSG_032 "UEFI (CSM無効)" | ||||||
| t MSG_033 "BIOSまたはUEFI" | t MSG_033 "BIOSまたはUEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d パス" | t MSG_034 "%d パス" | ||||||
| t MSG_035 "%d パス" | t MSG_035 "%d パス %s" | ||||||
| t MSG_036 "ISOイメージ" | t MSG_036 "ISOイメージ" | ||||||
| t MSG_037 "アプリケーション" | t MSG_037 "アプリケーション" | ||||||
| t MSG_038 "中止" | t MSG_038 "中止" | ||||||
|  | @ -8696,7 +8697,7 @@ t MSG_032 "UEFI (CSM 지원 안 됨)" | ||||||
| t MSG_033 "BIOS 또는 UEFI" | t MSG_033 "BIOS 또는 UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "한번만 검사" | t MSG_034 "한번만 검사" | ||||||
| t MSG_035 "%d회 검사" | t MSG_035 "%d회 검사 %s" | ||||||
| t MSG_036 "ISO 이미지" | t MSG_036 "ISO 이미지" | ||||||
| t MSG_037 "프로그램" | t MSG_037 "프로그램" | ||||||
| t MSG_038 "취소" | t MSG_038 "취소" | ||||||
|  | @ -9144,7 +9145,7 @@ t MSG_032 "BIOS (bez CSM)" | ||||||
| t MSG_033 "BIOS vai UEFI" | t MSG_033 "BIOS vai UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d mēģ." | t MSG_034 "%d mēģ." | ||||||
| t MSG_035 "%d mēģ." | t MSG_035 "%d mēģ. %s" | ||||||
| t MSG_036 "ISO virtuālais attēls" | t MSG_036 "ISO virtuālais attēls" | ||||||
| t MSG_037 "Programma" | t MSG_037 "Programma" | ||||||
| t MSG_038 "Pārtraukt" | t MSG_038 "Pārtraukt" | ||||||
|  | @ -9594,7 +9595,7 @@ t MSG_032 "UEFI (ne CSM)" | ||||||
| t MSG_033 "BIOS arba UEFI" | t MSG_033 "BIOS arba UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d bandymas" | t MSG_034 "%d bandymas" | ||||||
| t MSG_035 "%d bandymai" | t MSG_035 "%d bandymai %s" | ||||||
| t MSG_036 "ISO atvaizdas" | t MSG_036 "ISO atvaizdas" | ||||||
| t MSG_037 "Programa" | t MSG_037 "Programa" | ||||||
| t MSG_038 "Nutraukti" | t MSG_038 "Nutraukti" | ||||||
|  | @ -10049,7 +10050,7 @@ t MSG_030 "%s (Lalai)" | ||||||
| 
 | 
 | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d kali lulus" | t MSG_034 "%d kali lulus" | ||||||
| t MSG_035 "%d kali lulus" | t MSG_035 "%d kali lulus %s" | ||||||
| t MSG_036 "Imej ISO" | t MSG_036 "Imej ISO" | ||||||
| t MSG_037 "Aplikasi" | t MSG_037 "Aplikasi" | ||||||
| t MSG_038 "Batal" | t MSG_038 "Batal" | ||||||
|  | @ -10478,7 +10479,7 @@ t MSG_032 "UEFI (ikke CSM)" | ||||||
| t MSG_033 "BIOS eller UEFI" | t MSG_033 "BIOS eller UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d Passering" | t MSG_034 "%d Passering" | ||||||
| t MSG_035 "%d Passeringer" | t MSG_035 "%d Passeringer %s" | ||||||
| t MSG_036 "ISO-bilde" | t MSG_036 "ISO-bilde" | ||||||
| t MSG_037 "Applikasjon" | t MSG_037 "Applikasjon" | ||||||
| t MSG_038 "Avbryt" | t MSG_038 "Avbryt" | ||||||
|  | @ -10957,7 +10958,7 @@ t MSG_032 "UEFI (non CSM)" | ||||||
| t MSG_033 "BIOS یا UEFI" | t MSG_033 "BIOS یا UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d گذره" | t MSG_034 "%d گذره" | ||||||
| t MSG_035 "%d گذره" | t MSG_035 "%d گذره %s" | ||||||
| t MSG_036 "ایمیج ISO" | t MSG_036 "ایمیج ISO" | ||||||
| t MSG_037 "برنامه" | t MSG_037 "برنامه" | ||||||
| t MSG_038 "لغو" | t MSG_038 "لغو" | ||||||
|  | @ -11425,7 +11426,7 @@ t MSG_032 "UEFI (bez CSM)" | ||||||
| t MSG_033 "BIOS lub UEFI" | t MSG_033 "BIOS lub UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d Przebieg" | t MSG_034 "%d Przebieg" | ||||||
| t MSG_035 "%d Przebiegi" | t MSG_035 "%d Przebiegi %s" | ||||||
| t MSG_036 "Obraz ISO" | t MSG_036 "Obraz ISO" | ||||||
| t MSG_037 "Aplikacja" | t MSG_037 "Aplikacja" | ||||||
| t MSG_038 "Przerwij" | t MSG_038 "Przerwij" | ||||||
|  | @ -11889,7 +11890,7 @@ t MSG_032 "UEFI (não CSM)" | ||||||
| t MSG_033 "BIOS ou UEFI" | t MSG_033 "BIOS ou UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d passo" | t MSG_034 "%d passo" | ||||||
| t MSG_035 "%d passos" | t MSG_035 "%d passos %s" | ||||||
| t MSG_036 "Imagem ISO" | t MSG_036 "Imagem ISO" | ||||||
| t MSG_037 "Aplicativo" | t MSG_037 "Aplicativo" | ||||||
| t MSG_038 "Abortar" | t MSG_038 "Abortar" | ||||||
|  | @ -12362,7 +12363,7 @@ t MSG_032 "UEFI (não CSM)" | ||||||
| t MSG_033 "BIOS ou UEFI" | t MSG_033 "BIOS ou UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d passo" | t MSG_034 "%d passo" | ||||||
| t MSG_035 "%d passos" | t MSG_035 "%d passos %s" | ||||||
| t MSG_036 "Imagem ISO" | t MSG_036 "Imagem ISO" | ||||||
| t MSG_037 "Aplicação" | t MSG_037 "Aplicação" | ||||||
| t MSG_038 "Abortar" | t MSG_038 "Abortar" | ||||||
|  | @ -12806,7 +12807,7 @@ t MSG_031 "BIOS (sau UEFI-CSM)" | ||||||
| t MSG_032 "UEFI (non CSM)" | t MSG_032 "UEFI (non CSM)" | ||||||
| t MSG_033 "BIOS sau UEFI" | t MSG_033 "BIOS sau UEFI" | ||||||
| t MSG_034 "%d pas" | t MSG_034 "%d pas" | ||||||
| t MSG_035 "%d pași" | t MSG_035 "%d pași %s" | ||||||
| t MSG_036 "Imagine ISO" | t MSG_036 "Imagine ISO" | ||||||
| t MSG_037 "Cerere" | t MSG_037 "Cerere" | ||||||
| t MSG_038 "Anulează" | t MSG_038 "Anulează" | ||||||
|  | @ -13231,7 +13232,7 @@ t MSG_032 "UEFI (non-CSM)" | ||||||
| t MSG_033 "BIOS или UEFI" | t MSG_033 "BIOS или UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d проход" | t MSG_034 "%d проход" | ||||||
| t MSG_035 "%d прохода" | t MSG_035 "%d прохода %s" | ||||||
| t MSG_036 "ISO-образ" | t MSG_036 "ISO-образ" | ||||||
| t MSG_037 "Приложение" | t MSG_037 "Приложение" | ||||||
| t MSG_038 "Отменить" | t MSG_038 "Отменить" | ||||||
|  | @ -13673,7 +13674,7 @@ t MSG_030 "%s (Uobičajeno)" | ||||||
| #t MSG_033 "%s particijska šema za UEFI" | #t MSG_033 "%s particijska šema za UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d sekvenca" | t MSG_034 "%d sekvenca" | ||||||
| t MSG_035 "%d sekvence" | t MSG_035 "%d sekvence %s" | ||||||
| t MSG_036 "ISO datoteke" | t MSG_036 "ISO datoteke" | ||||||
| t MSG_037 "Aplikacija" | t MSG_037 "Aplikacija" | ||||||
| t MSG_038 "Prekini" | t MSG_038 "Prekini" | ||||||
|  | @ -14120,7 +14121,7 @@ t MSG_032 "UEFI (bez CSM)" | ||||||
| t MSG_033 "BIOS alebo UEFI" | t MSG_033 "BIOS alebo UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d pokus" | t MSG_034 "%d pokus" | ||||||
| t MSG_035 "%d pokusy" | t MSG_035 "%d pokusy %s" | ||||||
| t MSG_036 "Obraz ISO" | t MSG_036 "Obraz ISO" | ||||||
| t MSG_037 "Aplikácia" | t MSG_037 "Aplikácia" | ||||||
| t MSG_038 "Ukončiť" | t MSG_038 "Ukončiť" | ||||||
|  | @ -14574,7 +14575,7 @@ t MSG_032 "UEFI (brez CSM)" | ||||||
| t MSG_033 "BIOS ali UEFI" | t MSG_033 "BIOS ali UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d prehod" | t MSG_034 "%d prehod" | ||||||
| t MSG_035 "%d prehoda/-i" | t MSG_035 "%d prehoda/-i %s" | ||||||
| t MSG_036 "sliko ISO" | t MSG_036 "sliko ISO" | ||||||
| t MSG_037 "Aplikacija" | t MSG_037 "Aplikacija" | ||||||
| t MSG_038 "Prekini" | t MSG_038 "Prekini" | ||||||
|  | @ -15008,7 +15009,7 @@ t MSG_032 "UEFI (no CSM)" | ||||||
| t MSG_033 "BIOS o UEFI" | t MSG_033 "BIOS o UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d paso" | t MSG_034 "%d paso" | ||||||
| t MSG_035 "%d pasos" | t MSG_035 "%d pasos %s" | ||||||
| t MSG_036 "Imagen ISO" | t MSG_036 "Imagen ISO" | ||||||
| t MSG_037 "Aplicación" | t MSG_037 "Aplicación" | ||||||
| t MSG_038 "Abortar" | t MSG_038 "Abortar" | ||||||
|  | @ -15465,7 +15466,7 @@ t MSG_032 "UEFI (icke CSM)" | ||||||
| t MSG_033 "BIOS eller UEFI" | t MSG_033 "BIOS eller UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d gång" | t MSG_034 "%d gång" | ||||||
| t MSG_035 "%d gånger" | t MSG_035 "%d gånger %s" | ||||||
| t MSG_036 "ISO-avbild" | t MSG_036 "ISO-avbild" | ||||||
| t MSG_037 "Program" | t MSG_037 "Program" | ||||||
| t MSG_038 "Avbryt" | t MSG_038 "Avbryt" | ||||||
|  | @ -15924,7 +15925,7 @@ t MSG_032 "UEFI (ที่ไม่ใช่ CSM)" | ||||||
| t MSG_033 "BIOS หรือ UEFI" | t MSG_033 "BIOS หรือ UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d รอบ" | t MSG_034 "%d รอบ" | ||||||
| t MSG_035 "%d รอบ" | t MSG_035 "%d รอบ %s" | ||||||
| t MSG_036 "อิมเมจ ISO" | t MSG_036 "อิมเมจ ISO" | ||||||
| t MSG_037 "แอพพลิเคชั่น" | t MSG_037 "แอพพลิเคชั่น" | ||||||
| t MSG_038 "ยกเลิก" | t MSG_038 "ยกเลิก" | ||||||
|  | @ -16391,7 +16392,7 @@ t MSG_032 "UEFI (CSM yok)" | ||||||
| t MSG_033 "BIOS ya da UEFI" | t MSG_033 "BIOS ya da UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d Geçiş" | t MSG_034 "%d Geçiş" | ||||||
| t MSG_035 "%d Geçiş" | t MSG_035 "%d Geçiş %s" | ||||||
| t MSG_036 "ISO Yansıması" | t MSG_036 "ISO Yansıması" | ||||||
| t MSG_037 "Uygulama" | t MSG_037 "Uygulama" | ||||||
| t MSG_038 "Vazgeç" | t MSG_038 "Vazgeç" | ||||||
|  | @ -16845,7 +16846,7 @@ t MSG_032 "UEFI (без CSM)" | ||||||
| t MSG_033 "BIOS чи UEFI" | t MSG_033 "BIOS чи UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "%d прохід" | t MSG_034 "%d прохід" | ||||||
| t MSG_035 "%d проходи" | t MSG_035 "%d проходи %s" | ||||||
| t MSG_036 "ISO-образ" | t MSG_036 "ISO-образ" | ||||||
| t MSG_037 "Додаток" | t MSG_037 "Додаток" | ||||||
| t MSG_038 "Відмінити" | t MSG_038 "Відмінити" | ||||||
|  | @ -17281,7 +17282,7 @@ t MSG_030 "%s (Mặc định)" | ||||||
| #t MSG_033 "Sắp xếp phân vùng %s cho UEFI" | #t MSG_033 "Sắp xếp phân vùng %s cho UEFI" | ||||||
| # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | # Number of bad block check passes (singular for 1 pass, plural for 2 or more passes) | ||||||
| t MSG_034 "Qua %d lần" | t MSG_034 "Qua %d lần" | ||||||
| t MSG_035 "Qua %d lần" | t MSG_035 "Qua %d lần %s" | ||||||
| t MSG_036 "Ảnh ISO" | t MSG_036 "Ảnh ISO" | ||||||
| t MSG_037 "Ứng dụng" | t MSG_037 "Ứng dụng" | ||||||
| t MSG_038 "Huỷ bỏ" | t MSG_038 "Huỷ bỏ" | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ | ||||||
|  * |  * | ||||||
|  * Copyright 1995, 1996, 1997, 1998, 1999 by Theodore Ts'o |  * Copyright 1995, 1996, 1997, 1998, 1999 by Theodore Ts'o | ||||||
|  * Copyright 1999 by David Beattie |  * Copyright 1999 by David Beattie | ||||||
|  * Copyright 2011-2016 by Pete Batard |  * Copyright 2011-2018 by Pete Batard | ||||||
|  * |  * | ||||||
|  * This file is based on the minix file system programs fsck and mkfs |  * This file is based on the minix file system programs fsck and mkfs | ||||||
|  * written and copyrighted by Linus Torvalds <Linus.Torvalds@cs.helsinki.fi> |  * written and copyrighted by Linus Torvalds <Linus.Torvalds@cs.helsinki.fi> | ||||||
|  | @ -350,13 +350,14 @@ static void pattern_fill(unsigned char *buffer, unsigned int pattern, | ||||||
| 	unsigned char	bpattern[sizeof(pattern)], *ptr; | 	unsigned char	bpattern[sizeof(pattern)], *ptr; | ||||||
| 
 | 
 | ||||||
| 	if (pattern == (unsigned int) ~0) { | 	if (pattern == (unsigned int) ~0) { | ||||||
|  | 		PrintInfo(3500, MSG_236); | ||||||
| 		srand((unsigned int)GetTickCount64()); | 		srand((unsigned int)GetTickCount64()); | ||||||
| 		for (ptr = buffer; ptr < buffer + n; ptr++) { | 		for (ptr = buffer; ptr < buffer + n; ptr++) { | ||||||
| 			// coverity[dont_call]
 | 			// coverity[dont_call]
 | ||||||
| 			(*ptr) = rand() % (1 << (8 * sizeof(char))); | 			(*ptr) = rand() % (1 << (8 * sizeof(char))); | ||||||
| 		} | 		} | ||||||
| 		PrintInfo(3500, MSG_236); |  | ||||||
| 	} else { | 	} else { | ||||||
|  | 		PrintInfo(3500, MSG_237, pattern); | ||||||
| 		bpattern[0] = 0; | 		bpattern[0] = 0; | ||||||
| 		for (i = 0; i < sizeof(bpattern); i++) { | 		for (i = 0; i < sizeof(bpattern); i++) { | ||||||
| 			if (pattern == 0) | 			if (pattern == 0) | ||||||
|  | @ -372,7 +373,6 @@ static void pattern_fill(unsigned char *buffer, unsigned int pattern, | ||||||
| 			else | 			else | ||||||
| 				i--; | 				i--; | ||||||
| 		} | 		} | ||||||
| 		PrintInfo(3500, MSG_237, bpattern[i]); |  | ||||||
| 		cur_pattern++; | 		cur_pattern++; | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  | @ -422,16 +422,22 @@ static int64_t do_write(HANDLE hDrive, unsigned char * buffer, uint64_t tryout, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static unsigned int test_rw(HANDLE hDrive, blk_t last_block, size_t block_size, blk_t first_block, | static unsigned int test_rw(HANDLE hDrive, blk_t last_block, size_t block_size, blk_t first_block, | ||||||
| 	size_t blocks_at_once, int nb_passes) | 	size_t blocks_at_once, int pattern_type, int nb_passes) | ||||||
| { | { | ||||||
|  | 	const unsigned int pattern[BADLOCKS_PATTERN_TYPES][BADBLOCK_PATTERN_COUNT] = | ||||||
|  | 		{ BADBLOCK_PATTERN_SLC, BADCLOCK_PATTERN_MLC, BADBLOCK_PATTERN_TLC }; | ||||||
| 	unsigned char *buffer = NULL, *read_buffer; | 	unsigned char *buffer = NULL, *read_buffer; | ||||||
| 	const unsigned int pattern[] = BADBLOCK_PATTERNS; |  | ||||||
| 	int i, pat_idx; | 	int i, pat_idx; | ||||||
| 	unsigned int bb_count = 0; | 	unsigned int bb_count = 0; | ||||||
| 	blk_t got, tryout, recover_block = ~0, *blk_id; | 	blk_t got, tryout, recover_block = ~0, *blk_id; | ||||||
| 	size_t id_offset; | 	size_t id_offset; | ||||||
| 
 | 
 | ||||||
| 	if ((nb_passes < 1) || (nb_passes > 4)) { | 	if ((pattern_type < 0) || (pattern_type >= BADLOCKS_PATTERN_TYPES)) { | ||||||
|  | 		uprintf("%sInvalid pattern type\n", bb_prefix); | ||||||
|  | 		cancel_ops = -1; | ||||||
|  | 		return 0; | ||||||
|  | 	} | ||||||
|  | 	if ((nb_passes < 1) || (nb_passes > BADBLOCK_PATTERN_COUNT)) { | ||||||
| 		uprintf("%sInvalid number of passes\n", bb_prefix); | 		uprintf("%sInvalid number of passes\n", bb_prefix); | ||||||
| 		cancel_ops = -1; | 		cancel_ops = -1; | ||||||
| 		return 0; | 		return 0; | ||||||
|  | @ -446,26 +452,31 @@ static unsigned int test_rw(HANDLE hDrive, blk_t last_block, size_t block_size, | ||||||
| 		return 0; | 		return 0; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	uprintf("%sChecking from block %lu to %lu\n", bb_prefix, | 	uprintf("%sChecking from block %lu to %lu (1 block = %s)\n", bb_prefix, | ||||||
| 		(unsigned long) first_block, (unsigned long) last_block - 1); | 		(unsigned long) first_block, (unsigned long) last_block - 1, | ||||||
|  | 		SizeToHumanReadable(BADBLOCK_BLOCK_SIZE, FALSE, FALSE)); | ||||||
| 	nr_pattern = nb_passes; | 	nr_pattern = nb_passes; | ||||||
| 	cur_pattern = 0; | 	cur_pattern = 0; | ||||||
| 
 | 
 | ||||||
| 	for (pat_idx = 0; pat_idx < nb_passes; pat_idx++) { | 	for (pat_idx = 0; pat_idx < nb_passes; pat_idx++) { | ||||||
|  | 		if (cancel_ops) | ||||||
|  | 			goto out; | ||||||
|  | 		if (detect_fakes && (pat_idx == 0)) { | ||||||
| 			srand((unsigned int)GetTickCount64()); | 			srand((unsigned int)GetTickCount64()); | ||||||
| 		if (cancel_ops) goto out; | 			id_offset = rand() * (block_size - sizeof(blk_t)) / RAND_MAX; | ||||||
| 		// coverity[dont_call]
 |  | ||||||
| 		id_offset = rand() * (block_size-sizeof(blk_t)) / RAND_MAX; |  | ||||||
| 		pattern_fill(buffer, pattern[pat_idx], blocks_at_once * block_size); |  | ||||||
| 			uprintf("%sUsing offset %d for fake device check\n", bb_prefix, id_offset); | 			uprintf("%sUsing offset %d for fake device check\n", bb_prefix, id_offset); | ||||||
|  | 		} | ||||||
|  | 		// coverity[dont_call]
 | ||||||
|  | 		pattern_fill(buffer, pattern[pattern_type][pat_idx], blocks_at_once * block_size); | ||||||
| 		num_blocks = last_block - 1; | 		num_blocks = last_block - 1; | ||||||
| 		currently_testing = first_block; | 		currently_testing = first_block; | ||||||
| 		if (s_flag | v_flag) | 		if (s_flag | v_flag) | ||||||
| 			uprintf("%sWriting test pattern 0x%02X\n", bb_prefix, pattern[pat_idx]); | 			uprintf("%sWriting test pattern 0x%02X\n", bb_prefix, pattern[pattern_type][pat_idx]); | ||||||
| 		cur_op = OP_WRITE; | 		cur_op = OP_WRITE; | ||||||
| 		tryout = blocks_at_once; | 		tryout = blocks_at_once; | ||||||
| 		while (currently_testing < last_block) { | 		while (currently_testing < last_block) { | ||||||
| 			if (cancel_ops) goto out; | 			if (cancel_ops) | ||||||
|  | 				goto out; | ||||||
| 			if (max_bb && bb_count >= max_bb) { | 			if (max_bb && bb_count >= max_bb) { | ||||||
| 				if (s_flag || v_flag) { | 				if (s_flag || v_flag) { | ||||||
| 					uprintf(abort_msg); | 					uprintf(abort_msg); | ||||||
|  | @ -477,7 +488,7 @@ static unsigned int test_rw(HANDLE hDrive, blk_t last_block, size_t block_size, | ||||||
| 			} | 			} | ||||||
| 			if (currently_testing + tryout > last_block) | 			if (currently_testing + tryout > last_block) | ||||||
| 				tryout = last_block - currently_testing; | 				tryout = last_block - currently_testing; | ||||||
| 			if (detect_fakes) { | 			if (detect_fakes && (pat_idx == 0)) { | ||||||
| 				/* Add the block number at a fixed (random) offset during each pass to
 | 				/* Add the block number at a fixed (random) offset during each pass to
 | ||||||
| 				   allow for the detection of 'fake' media (eg. 2GB USB masquerading as 16GB) */ | 				   allow for the detection of 'fake' media (eg. 2GB USB masquerading as 16GB) */ | ||||||
| 				for (i=0; i<(int)blocks_at_once; i++) { | 				for (i=0; i<(int)blocks_at_once; i++) { | ||||||
|  | @ -525,7 +536,7 @@ static unsigned int test_rw(HANDLE hDrive, blk_t last_block, size_t block_size, | ||||||
| 			} | 			} | ||||||
| 			if (currently_testing + tryout > last_block) | 			if (currently_testing + tryout > last_block) | ||||||
| 				tryout = last_block - currently_testing; | 				tryout = last_block - currently_testing; | ||||||
| 			if (detect_fakes) { | 			if (detect_fakes && (pat_idx == 0)) { | ||||||
| 				for (i=0; i<(int)blocks_at_once; i++) { | 				for (i=0; i<(int)blocks_at_once; i++) { | ||||||
| 					blk_id = (blk_t*)(intptr_t)(buffer + id_offset+ i*block_size); | 					blk_id = (blk_t*)(intptr_t)(buffer + id_offset+ i*block_size); | ||||||
| 					*blk_id = (blk_t)(currently_testing + i); | 					*blk_id = (blk_t)(currently_testing + i); | ||||||
|  | @ -563,11 +574,11 @@ out: | ||||||
| 	return bb_count; | 	return bb_count; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| BOOL BadBlocks(HANDLE hPhysicalDrive, ULONGLONG disk_size, size_t block_size, | BOOL BadBlocks(HANDLE hPhysicalDrive, ULONGLONG disk_size, int nb_passes, | ||||||
| 	int nb_passes, badblocks_report *report, FILE* fd) | 	int flash_type, badblocks_report *report, FILE* fd) | ||||||
| { | { | ||||||
| 	errcode_t error_code; | 	errcode_t error_code; | ||||||
| 	blk_t first_block = 0, last_block = disk_size/block_size; | 	blk_t last_block = disk_size / BADBLOCK_BLOCK_SIZE; | ||||||
| 
 | 
 | ||||||
| 	if (report == NULL) return FALSE; | 	if (report == NULL) return FALSE; | ||||||
| 	num_read_errors = 0; | 	num_read_errors = 0; | ||||||
|  | @ -589,7 +600,7 @@ BOOL BadBlocks(HANDLE hPhysicalDrive, ULONGLONG disk_size, size_t block_size, | ||||||
| 	cancel_ops = 0; | 	cancel_ops = 0; | ||||||
| 	/* use a timer to update status every second */ | 	/* use a timer to update status every second */ | ||||||
| 	SetTimer(hMainDialog, TID_BADBLOCKS_UPDATE, 1000, alarm_intr); | 	SetTimer(hMainDialog, TID_BADBLOCKS_UPDATE, 1000, alarm_intr); | ||||||
| 	report->bb_count = test_rw(hPhysicalDrive, last_block, block_size, first_block, BB_BLOCKS_AT_ONCE, nb_passes); | 	report->bb_count = test_rw(hPhysicalDrive, last_block, BADBLOCK_BLOCK_SIZE, 0, BB_BLOCKS_AT_ONCE, flash_type, nb_passes); | ||||||
| 	KillTimer(hMainDialog, TID_BADBLOCKS_UPDATE); | 	KillTimer(hMainDialog, TID_BADBLOCKS_UPDATE); | ||||||
| 	free(bb_list->list); | 	free(bb_list->list); | ||||||
| 	free(bb_list); | 	free(bb_list); | ||||||
|  |  | ||||||
|  | @ -7,7 +7,7 @@ | ||||||
|  * |  * | ||||||
|  * Copyright 1995, 1996, 1997, 1998, 1999 by Theodore Ts'o |  * Copyright 1995, 1996, 1997, 1998, 1999 by Theodore Ts'o | ||||||
|  * Copyright 1999 by David Beattie |  * Copyright 1999 by David Beattie | ||||||
|  * Copyright 2011-2013 by Pete Batard |  * Copyright 2011-2018 by Pete Batard | ||||||
|  * |  * | ||||||
|  * This file is based on the minix file system programs fsck and mkfs |  * This file is based on the minix file system programs fsck and mkfs | ||||||
|  * written and copyrighted by Linus Torvalds <Linus.Torvalds@cs.helsinki.fi> |  * written and copyrighted by Linus Torvalds <Linus.Torvalds@cs.helsinki.fi> | ||||||
|  | @ -55,5 +55,5 @@ typedef struct { | ||||||
| /*
 | /*
 | ||||||
|  * Shared prototypes |  * Shared prototypes | ||||||
|  */ |  */ | ||||||
| BOOL BadBlocks(HANDLE hPhysicalDrive, ULONGLONG disk_size, size_t block_size, | BOOL BadBlocks(HANDLE hPhysicalDrive, ULONGLONG disk_size, int nb_passes, | ||||||
| 	int test_type, badblocks_report *report, FILE* fd); | 	int flash_type, badblocks_report *report, FILE* fd); | ||||||
|  |  | ||||||
|  | @ -1783,6 +1783,7 @@ DWORD WINAPI FormatThread(void* param) | ||||||
| 
 | 
 | ||||||
| 	if (IsChecked(IDC_BAD_BLOCKS)) { | 	if (IsChecked(IDC_BAD_BLOCKS)) { | ||||||
| 		do { | 		do { | ||||||
|  | 			int sel = ComboBox_GetCurSel(hNBPasses); | ||||||
| 			// create a log file for bad blocks report. Since %USERPROFILE% may
 | 			// create a log file for bad blocks report. Since %USERPROFILE% may
 | ||||||
| 			// have localized characters, we use the UTF-8 API.
 | 			// have localized characters, we use the UTF-8 API.
 | ||||||
| 			userdir = getenvU("USERPROFILE"); | 			userdir = getenvU("USERPROFILE"); | ||||||
|  | @ -1801,8 +1802,8 @@ DWORD WINAPI FormatThread(void* param) | ||||||
| 				fflush(log_fd); | 				fflush(log_fd); | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			if (!BadBlocks(hPhysicalDrive, SelectedDrive.DiskSize, SelectedDrive.SectorSize, | 			if (!BadBlocks(hPhysicalDrive, SelectedDrive.DiskSize, (sel >= 2) ? 4 : sel +1, | ||||||
| 				ComboBox_GetCurSel(hNBPasses)+1, &report, log_fd)) { | 				(sel < 2) ? 0 : sel - 2, &report, log_fd)) { | ||||||
| 				uprintf("Bad blocks: Check failed.\n"); | 				uprintf("Bad blocks: Check failed.\n"); | ||||||
| 				if (!IS_ERROR(FormatStatus)) | 				if (!IS_ERROR(FormatStatus)) | ||||||
| 					FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|APPERR(ERROR_BADBLOCKS_FAILURE); | 					FormatStatus = ERROR_SEVERITY_ERROR|FAC(FACILITY_STORAGE)|APPERR(ERROR_BADBLOCKS_FAILURE); | ||||||
|  |  | ||||||
							
								
								
									
										24
									
								
								src/rufus.c
									
										
									
									
									
								
							
							
						
						
									
										24
									
								
								src/rufus.c
									
										
									
									
									
								
							|  | @ -51,6 +51,7 @@ | ||||||
| 
 | 
 | ||||||
| static const char* cmdline_hogger = "rufus.com"; | static const char* cmdline_hogger = "rufus.com"; | ||||||
| static const char* FileSystemLabel[FS_MAX] = { "FAT", "FAT32", "NTFS", "UDF", "exFAT", "ReFS" }; | static const char* FileSystemLabel[FS_MAX] = { "FAT", "FAT32", "NTFS", "UDF", "exFAT", "ReFS" }; | ||||||
|  | static const char* flash_type[BADLOCKS_PATTERN_TYPES] = { "SLC", "MLC", "TLC" }; | ||||||
| static const char* ep_reg = "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer"; | static const char* ep_reg = "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer"; | ||||||
| static const char* vs_reg = "Software\\Microsoft\\VisualStudio"; | static const char* vs_reg = "Software\\Microsoft\\VisualStudio"; | ||||||
| // Number of steps for each FS for FCC_STRUCTURE_PROGRESS
 | // Number of steps for each FS for FCC_STRUCTURE_PROGRESS
 | ||||||
|  | @ -1164,9 +1165,12 @@ static __inline void MoveCtrlY(HWND hDlg, int nID, int vertical_shift) { | ||||||
| 
 | 
 | ||||||
| static void SetPassesTooltip(void) | static void SetPassesTooltip(void) | ||||||
| { | { | ||||||
| 	const unsigned char pattern[] = BADBLOCK_PATTERNS; | 	const unsigned int pattern[BADLOCKS_PATTERN_TYPES][BADBLOCK_PATTERN_COUNT] = | ||||||
| 	CreateTooltip(hNBPasses, lmprintf(MSG_153 + ComboBox_GetCurSel(hNBPasses), | 		{ BADBLOCK_PATTERN_SLC, BADCLOCK_PATTERN_MLC, BADBLOCK_PATTERN_TLC }; | ||||||
| 		pattern[0], pattern[1], pattern[2], pattern[3]), -1); | 	int sel = ComboBox_GetCurSel(hNBPasses); | ||||||
|  | 	int type = (sel < 2) ? 0 : sel - 2; | ||||||
|  | 	CreateTooltip(hNBPasses, lmprintf(MSG_153 + ((sel >= 2) ? 3 : sel), | ||||||
|  | 		pattern[type][0], pattern[type][1], pattern[type][2], pattern[type][3]), -1); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static void ResizeDialogs(int shift) | static void ResizeDialogs(int shift) | ||||||
|  | @ -2196,9 +2200,10 @@ static void GetHalfDropwdownWidth(HWND hDlg) | ||||||
| 		hw = max(hw, GetTextSize(GetDlgItem(hDlg, IDC_TARGET_SYSTEM), lmprintf(msg_id)).cx); | 		hw = max(hw, GetTextSize(GetDlgItem(hDlg, IDC_TARGET_SYSTEM), lmprintf(msg_id)).cx); | ||||||
| 
 | 
 | ||||||
| 	// Just in case, we also do the number of passes
 | 	// Just in case, we also do the number of passes
 | ||||||
| 	for (i = 1; i <= 4; i++) | 	for (i = 1; i <= 5; i++) { | ||||||
| 		hw = max(hw, GetTextSize(GetDlgItem(hDlg, IDC_TARGET_SYSTEM), | 		char* msg = (i == 1) ? lmprintf(MSG_034, 1) : lmprintf(MSG_035, (i == 2) ? 2 : 4, (i == 2) ? "" : lmprintf(MSG_087, flash_type[i - 3])); | ||||||
| 			lmprintf((i == 1) ? MSG_034 : MSG_035, i)).cx); | 		hw = max(hw, GetTextSize(GetDlgItem(hDlg, IDC_TARGET_SYSTEM), msg).cx); | ||||||
|  | 	} | ||||||
| 
 | 
 | ||||||
| 	// Finally, we must ensure that we'll have enough space for the 2 checkbox controls
 | 	// Finally, we must ensure that we'll have enough space for the 2 checkbox controls
 | ||||||
| 	// that end up with a half dropdown
 | 	// that end up with a half dropdown
 | ||||||
|  | @ -2528,7 +2533,7 @@ static void InitDialog(HWND hDlg) | ||||||
| 	DWORD len; | 	DWORD len; | ||||||
| 	HDC hDC; | 	HDC hDC; | ||||||
| 	int i, lfHeight; | 	int i, lfHeight; | ||||||
| 	char tmp[128], *token, *buf, *ext; | 	char tmp[128], *token, *buf, *ext, *msg; | ||||||
| 	static char* resource[2] = { MAKEINTRESOURCEA(IDR_SL_LDLINUX_V4_SYS), MAKEINTRESOURCEA(IDR_SL_LDLINUX_V6_SYS) }; | 	static char* resource[2] = { MAKEINTRESOURCEA(IDR_SL_LDLINUX_V4_SYS), MAKEINTRESOURCEA(IDR_SL_LDLINUX_V6_SYS) }; | ||||||
| 
 | 
 | ||||||
| #ifdef RUFUS_TEST | #ifdef RUFUS_TEST | ||||||
|  | @ -2634,8 +2639,9 @@ static void InitDialog(HWND hDlg) | ||||||
| 	SendMessage(hProgress, PBM_SETRANGE, 0, (MAX_PROGRESS<<16) & 0xFFFF0000); | 	SendMessage(hProgress, PBM_SETRANGE, 0, (MAX_PROGRESS<<16) & 0xFFFF0000); | ||||||
| 
 | 
 | ||||||
| 	// Fill up the passes
 | 	// Fill up the passes
 | ||||||
| 	for (i=0; i<4; i++) { | 	for (i = 1; i <= 5; i++) { | ||||||
| 		IGNORE_RETVAL(ComboBox_AddStringU(hNBPasses, lmprintf((i==0)?MSG_034:MSG_035, i+1))); | 		msg = (i == 1) ? lmprintf(MSG_034, 1) : lmprintf(MSG_035, (i == 2) ? 2 : 4, (i == 2) ? "" : lmprintf(MSG_087, flash_type[i - 3])); | ||||||
|  | 		IGNORE_RETVAL(ComboBox_AddStringU(hNBPasses, msg)); | ||||||
| 	} | 	} | ||||||
| 	IGNORE_RETVAL(ComboBox_SetCurSel(hNBPasses, 0)); | 	IGNORE_RETVAL(ComboBox_SetCurSel(hNBPasses, 0)); | ||||||
| 	SetPassesTooltip(); | 	SetPassesTooltip(); | ||||||
|  |  | ||||||
|  | @ -67,7 +67,12 @@ | ||||||
| #define MARQUEE_TIMER_REFRESH       10			// Time between progress bar marquee refreshes, in ms
 | #define MARQUEE_TIMER_REFRESH       10			// Time between progress bar marquee refreshes, in ms
 | ||||||
| #define FS_DEFAULT                  FS_FAT32 | #define FS_DEFAULT                  FS_FAT32 | ||||||
| #define SINGLE_CLUSTERSIZE_DEFAULT  0x00000100 | #define SINGLE_CLUSTERSIZE_DEFAULT  0x00000100 | ||||||
| #define BADBLOCK_PATTERNS           {0xaa, 0x55, 0xff, 0x00} | #define BADLOCKS_PATTERN_TYPES      3 | ||||||
|  | #define BADBLOCK_PATTERN_COUNT      4 | ||||||
|  | #define BADBLOCK_PATTERN_SLC        {0x00, 0xff, 0x55, 0xaa} | ||||||
|  | #define BADCLOCK_PATTERN_MLC        {0x00, 0xff, 0x33, 0xcc} | ||||||
|  | #define BADBLOCK_PATTERN_TLC        {0x00, 0xff, 0x1c71c7, 0xe38e38} | ||||||
|  | #define BADBLOCK_BLOCK_SIZE         (128 * 1024) | ||||||
| #define LARGE_FAT32_SIZE            (32*1073741824LL)	// Size at which we need to use fat32format
 | #define LARGE_FAT32_SIZE            (32*1073741824LL)	// Size at which we need to use fat32format
 | ||||||
| #define UDF_FORMAT_SPEED            3.1f		// Speed estimate at which we expect UDF drives to be formatted (GB/s)
 | #define UDF_FORMAT_SPEED            3.1f		// Speed estimate at which we expect UDF drives to be formatted (GB/s)
 | ||||||
| #define UDF_FORMAT_WARN             20			// Duration (in seconds) above which we warn about long UDF formatting times
 | #define UDF_FORMAT_WARN             20			// Duration (in seconds) above which we warn about long UDF formatting times
 | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								src/rufus.rc
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								src/rufus.rc
									
										
									
									
									
								
							|  | @ -33,7 +33,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL | ||||||
| IDD_DIALOG DIALOGEX 12, 12, 232, 326 | IDD_DIALOG DIALOGEX 12, 12, 232, 326 | ||||||
| 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_ACCEPTFILES | EXSTYLE WS_EX_ACCEPTFILES | ||||||
| CAPTION "Rufus 3.1.1323" | CAPTION "Rufus 3.2.1324" | ||||||
| FONT 9, "Segoe UI Symbol", 400, 0, 0x0 | FONT 9, "Segoe UI Symbol", 400, 0, 0x0 | ||||||
| BEGIN | BEGIN | ||||||
|     LTEXT           "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP |     LTEXT           "Drive Properties",IDS_DRIVE_PROPERTIES_TXT,8,6,53,12,NOT WS_GROUP | ||||||
|  | @ -389,8 +389,8 @@ END | ||||||
| // | // | ||||||
| 
 | 
 | ||||||
| VS_VERSION_INFO VERSIONINFO | VS_VERSION_INFO VERSIONINFO | ||||||
|  FILEVERSION 3,1,1323,0 |  FILEVERSION 3,2,1324,0 | ||||||
|  PRODUCTVERSION 3,1,1323,0 |  PRODUCTVERSION 3,2,1324,0 | ||||||
|  FILEFLAGSMASK 0x3fL |  FILEFLAGSMASK 0x3fL | ||||||
| #ifdef _DEBUG | #ifdef _DEBUG | ||||||
|  FILEFLAGS 0x1L |  FILEFLAGS 0x1L | ||||||
|  | @ -407,13 +407,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", "3.1.1323" |             VALUE "FileVersion", "3.2.1324" | ||||||
|             VALUE "InternalName", "Rufus" |             VALUE "InternalName", "Rufus" | ||||||
|             VALUE "LegalCopyright", "© 2011-2018 Pete Batard (GPL v3)" |             VALUE "LegalCopyright", "© 2011-2018 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", "3.1.1323" |             VALUE "ProductVersion", "3.2.1324" | ||||||
|         END |         END | ||||||
|     END |     END | ||||||
|     BLOCK "VarFileInfo" |     BLOCK "VarFileInfo" | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue