Skip to content
Snippets Groups Projects
ifdtool.c 26.5 KiB
Newer Older
  • Learn to ignore specific revisions
  • 	if (mode_dump) {
    		ret = dump_fd(image, size);
    		write_it = false;
    	}
    
    	if (mode_extract) {
    		ret = write_regions(image, size);
    		write_it = false;
    	}
    
    	if (mode_write_descriptor)
    
    		ret = write_data(image, size, -size, desc_fname);
    
    		ret = inject_region(image, size, region_type, inject_fname);
    
    	if (mode_write) {
    		for (wr_idx = 0; wr_idx < wr_num; wr_idx++) {
    			ret = write_data(image, size,
    					 addr[wr_idx], wr_fname[wr_idx]);
    			if (ret)
    				break;
    		}
    	}
    
    
    	if (mode_spifreq)
    		set_spi_frequency(image, size, spifreq);
    
    	if (mode_em100)
    		set_em100_mode(image, size);
    
    	if (mode_locked)
    		lock_descriptor(image, size);
    
    	if (mode_unlocked)
    		unlock_descriptor(image, size);
    
    	if (write_it) {
    		if (outfile) {
    			ret = write_image(outfile, image, size);
    		} else {
    			if (lseek(bios_fd, 0, SEEK_SET)) {
    				perror("Error while seeking");
    				ret = -1;
    			}
    			if (write(bios_fd, image, size) != size) {
    				perror("Error while writing");
    				ret = -1;
    			}
    		}
    	}
    
    	free(image);
    	close(bios_fd);
    
    	return ret ? 1 : 0;
    }