diff options
author | Amaury Pouly <amaury.pouly@gmail.com> | 2013-01-26 18:24:06 +0000 |
---|---|---|
committer | Amaury Pouly <amaury.pouly@gmail.com> | 2013-01-26 18:24:50 +0000 |
commit | f6e4456cc4337e30483bc52c9dac6e2d38c78897 (patch) | |
tree | 7ed153f7b09ae131ae530885656cb724e8400503 /rbutil/mkimxboot/main.c | |
parent | b6cad07f335db0f52e949b9ead0ea7f82202c854 (diff) | |
download | rockbox-f6e4456cc4337e30483bc52c9dac6e2d38c78897.tar.gz rockbox-f6e4456cc4337e30483bc52c9dac6e2d38c78897.zip |
mkimxboot: add an option to extract the of without processing
Change-Id: Ie370f152f4efff4428ee023a9211b82a77fd1df4
Diffstat (limited to 'rbutil/mkimxboot/main.c')
-rw-r--r-- | rbutil/mkimxboot/main.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/rbutil/mkimxboot/main.c b/rbutil/mkimxboot/main.c index 68387c25c0..ed88d3e1ff 100644 --- a/rbutil/mkimxboot/main.c +++ b/rbutil/mkimxboot/main.c | |||
@@ -53,6 +53,7 @@ static void usage(void) | |||
53 | printf(" -t <type>\tSet type (dualboot, singleboot, recovery)\n"); | 53 | printf(" -t <type>\tSet type (dualboot, singleboot, recovery)\n"); |
54 | printf(" -v <v>\tSet variant\n"); | 54 | printf(" -v <v>\tSet variant\n"); |
55 | printf(" -x\t\tDump device informations\n"); | 55 | printf(" -x\t\tDump device informations\n"); |
56 | printf(" -w\tExtract the original firmware\n"); | ||
56 | printf("Supported variants: (default is standard)\n"); | 57 | printf("Supported variants: (default is standard)\n"); |
57 | printf(" "); | 58 | printf(" "); |
58 | for(size_t i = 0; i < NR_VARIANTS; i++) | 59 | for(size_t i = 0; i < NR_VARIANTS; i++) |
@@ -74,6 +75,7 @@ int main(int argc, char *argv[]) | |||
74 | enum imx_firmware_variant_t variant = VARIANT_DEFAULT; | 75 | enum imx_firmware_variant_t variant = VARIANT_DEFAULT; |
75 | enum imx_output_type_t type = IMX_DUALBOOT; | 76 | enum imx_output_type_t type = IMX_DUALBOOT; |
76 | bool debug = false; | 77 | bool debug = false; |
78 | bool extract_of = false; | ||
77 | 79 | ||
78 | if(argc == 1) | 80 | if(argc == 1) |
79 | usage(); | 81 | usage(); |
@@ -93,7 +95,7 @@ int main(int argc, char *argv[]) | |||
93 | {0, 0, 0, 0} | 95 | {0, 0, 0, 0} |
94 | }; | 96 | }; |
95 | 97 | ||
96 | int c = getopt_long(argc, argv, "?di:o:b:t:v:x", long_options, NULL); | 98 | int c = getopt_long(argc, argv, "?di:o:b:t:v:xw", long_options, NULL); |
97 | if(c == -1) | 99 | if(c == -1) |
98 | break; | 100 | break; |
99 | switch(c) | 101 | switch(c) |
@@ -150,6 +152,9 @@ int main(int argc, char *argv[]) | |||
150 | for(int i = 0; i < sizeof(imx_variants) / sizeof(imx_variants[0]); i++) | 152 | for(int i = 0; i < sizeof(imx_variants) / sizeof(imx_variants[0]); i++) |
151 | printf(" %s -> variant=%d\n", imx_variants[i].name, imx_variants[i].variant); | 153 | printf(" %s -> variant=%d\n", imx_variants[i].name, imx_variants[i].variant); |
152 | break; | 154 | break; |
155 | case 'w': | ||
156 | extract_of = true; | ||
157 | break; | ||
153 | default: | 158 | default: |
154 | abort(); | 159 | abort(); |
155 | } | 160 | } |
@@ -165,7 +170,7 @@ int main(int argc, char *argv[]) | |||
165 | printf("You must specify an output file\n"); | 170 | printf("You must specify an output file\n"); |
166 | return 1; | 171 | return 1; |
167 | } | 172 | } |
168 | if(!bootfile) | 173 | if(!bootfile && !extract_of) |
169 | { | 174 | { |
170 | printf("You must specify an boot file\n"); | 175 | printf("You must specify an boot file\n"); |
171 | return 1; | 176 | return 1; |
@@ -176,6 +181,13 @@ int main(int argc, char *argv[]) | |||
176 | return 1; | 181 | return 1; |
177 | } | 182 | } |
178 | 183 | ||
184 | if(extract_of) | ||
185 | { | ||
186 | enum imx_error_t err = extract_firmware(infile, variant, outfile); | ||
187 | printf("Result: %d\n", err); | ||
188 | return 0; | ||
189 | } | ||
190 | |||
179 | struct imx_option_t opt; | 191 | struct imx_option_t opt; |
180 | memset(&opt, 0, sizeof(opt)); | 192 | memset(&opt, 0, sizeof(opt)); |
181 | opt.debug = debug; | 193 | opt.debug = debug; |