flash_eraseall: implement -N
Signed-off-by: Alexander Shiyan <shc_work@mail.ru> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
		
				
					committed by
					
						
						Denys Vlasenko
					
				
			
			
				
	
			
			
			
						parent
						
							0d61dcd641
						
					
				
				
					commit
					45dc96c8a6
				
			@@ -11,10 +11,11 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
//usage:#define flash_eraseall_trivial_usage
 | 
			
		||||
//usage:       "[-jq] MTD_DEVICE"
 | 
			
		||||
//usage:       "[-jNq] MTD_DEVICE"
 | 
			
		||||
//usage:#define flash_eraseall_full_usage "\n\n"
 | 
			
		||||
//usage:       "Erase an MTD device\n"
 | 
			
		||||
//usage:     "\n	-j	Format the device for jffs2"
 | 
			
		||||
//usage:     "\n	-N	Don't skip bad blocks"
 | 
			
		||||
//usage:     "\n	-q	Don't display progress messages"
 | 
			
		||||
 | 
			
		||||
#include "libbb.h"
 | 
			
		||||
@@ -22,9 +23,9 @@
 | 
			
		||||
#include <linux/jffs2.h>
 | 
			
		||||
 | 
			
		||||
#define OPTION_J  (1 << 0)
 | 
			
		||||
#define OPTION_Q  (1 << 1)
 | 
			
		||||
#define IS_NAND   (1 << 2)
 | 
			
		||||
#define BBTEST    (1 << 3)
 | 
			
		||||
#define OPTION_N  (1 << 1)
 | 
			
		||||
#define OPTION_Q  (1 << 2)
 | 
			
		||||
#define IS_NAND   (1 << 3)
 | 
			
		||||
 | 
			
		||||
/* mtd/jffs2-user.h used to have this atrocity:
 | 
			
		||||
extern int target_endian;
 | 
			
		||||
@@ -71,7 +72,7 @@ int flash_eraseall_main(int argc UNUSED_PARAM, char **argv)
 | 
			
		||||
	char *mtd_name;
 | 
			
		||||
 | 
			
		||||
	opt_complementary = "=1";
 | 
			
		||||
	flags = BBTEST | getopt32(argv, "jq");
 | 
			
		||||
	flags = getopt32(argv, "jNq");
 | 
			
		||||
 | 
			
		||||
	mtd_name = argv[optind];
 | 
			
		||||
	fd = xopen(mtd_name, O_RDWR);
 | 
			
		||||
@@ -139,7 +140,7 @@ int flash_eraseall_main(int argc UNUSED_PARAM, char **argv)
 | 
			
		||||
 | 
			
		||||
	for (erase.start = 0; erase.start < meminfo.size;
 | 
			
		||||
	     erase.start += meminfo.erasesize) {
 | 
			
		||||
		if (flags & BBTEST) {
 | 
			
		||||
		if (!(flags & OPTION_N)) {
 | 
			
		||||
			int ret;
 | 
			
		||||
			loff_t offset = erase.start;
 | 
			
		||||
 | 
			
		||||
@@ -154,7 +155,7 @@ int flash_eraseall_main(int argc UNUSED_PARAM, char **argv)
 | 
			
		||||
				 * types e.g. NOR
 | 
			
		||||
				 */
 | 
			
		||||
				if (errno == EOPNOTSUPP) {
 | 
			
		||||
					flags &= ~BBTEST;
 | 
			
		||||
					flags |= OPTION_N;
 | 
			
		||||
					if (flags & IS_NAND)
 | 
			
		||||
						bb_error_msg_and_die("bad block check not available");
 | 
			
		||||
				} else {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user