Commit 0b443dee6b0a74ac59fdbeda7b5a667c209a5948

Authored by Simon Glass
Committed by Tom Rini
1 parent fd1000b9c1

mkimage: Move argument processing into its own function

At present main() is very long. Split out the argument processing to make
it easier to follow.

Signed-off-by: Simon Glass <sjg@chromium.org>

Showing 1 changed file with 32 additions and 24 deletions Side-by-side Diff

... ... @@ -67,19 +67,10 @@
67 67 fprintf(stderr, "\n");
68 68 }
69 69  
70   -int main(int argc, char **argv)
  70 +static void process_args(int argc, char **argv)
71 71 {
72   - int ifd = -1;
73   - struct stat sbuf;
74 72 char *ptr;
75   - int retval = 0;
76   - struct image_type_params *tparams = NULL;
77   - int pad_len = 0;
78   - int dfd;
79 73  
80   - params.cmdname = *argv;
81   - params.addr = params.ep = 0;
82   -
83 74 while (--argc > 0 && **++argv == '-') {
84 75 while (*++*argv) {
85 76 switch (**argv) {
... ... @@ -90,7 +81,7 @@
90 81 if ((--argc <= 0) ||
91 82 (params.arch =
92 83 genimg_get_arch_id (*++argv)) < 0)
93   - usage ();
  84 + usage();
94 85 goto NXTARG;
95 86 case 'c':
96 87 if (--argc <= 0)
97 88  
... ... @@ -101,11 +92,11 @@
101 92 if ((--argc <= 0) ||
102 93 (params.comp =
103 94 genimg_get_comp_id (*++argv)) < 0)
104   - usage ();
  95 + usage();
105 96 goto NXTARG;
106 97 case 'D':
107 98 if (--argc <= 0)
108   - usage ();
  99 + usage();
109 100 params.dtc = *++argv;
110 101 goto NXTARG;
111 102  
... ... @@ -113,7 +104,7 @@
113 104 if ((--argc <= 0) ||
114 105 (params.os =
115 106 genimg_get_os_id (*++argv)) < 0)
116   - usage ();
  107 + usage();
117 108 goto NXTARG;
118 109 case 'T':
119 110 params.type = -1;
... ... @@ -128,7 +119,7 @@
128 119 goto NXTARG;
129 120 case 'a':
130 121 if (--argc <= 0)
131   - usage ();
  122 + usage();
132 123 params.addr = strtoull(*++argv, &ptr, 16);
133 124 if (*ptr) {
134 125 fprintf (stderr,
135 126  
... ... @@ -139,13 +130,13 @@
139 130 goto NXTARG;
140 131 case 'd':
141 132 if (--argc <= 0)
142   - usage ();
  133 + usage();
143 134 params.datafile = *++argv;
144 135 params.dflag = 1;
145 136 goto NXTARG;
146 137 case 'e':
147 138 if (--argc <= 0)
148   - usage ();
  139 + usage();
149 140 params.ep = strtoull(*++argv, &ptr, 16);
150 141 if (*ptr) {
151 142 fprintf (stderr,
... ... @@ -157,7 +148,7 @@
157 148 goto NXTARG;
158 149 case 'f':
159 150 if (--argc <= 0)
160   - usage ();
  151 + usage();
161 152 params.datafile = *++argv;
162 153 /* no break */
163 154 case 'F':
... ... @@ -180,7 +171,7 @@
180 171 goto NXTARG;
181 172 case 'n':
182 173 if (--argc <= 0)
183   - usage ();
  174 + usage();
184 175 params.imagename = *++argv;
185 176 goto NXTARG;
186 177 case 'r':
187 178  
188 179  
... ... @@ -208,15 +199,34 @@
208 199 params.xflag++;
209 200 break;
210 201 default:
211   - usage ();
  202 + usage();
212 203 }
213 204 }
214 205 NXTARG: ;
215 206 }
216 207  
217 208 if (argc != 1)
218   - usage ();
  209 + usage();
  210 + params.imagefile = *argv;
  211 +}
219 212  
  213 +
  214 +int main(int argc, char **argv)
  215 +{
  216 + int ifd = -1;
  217 + struct stat sbuf;
  218 + char *ptr;
  219 + int retval = 0;
  220 + struct image_type_params *tparams = NULL;
  221 + int pad_len = 0;
  222 + int dfd;
  223 +
  224 + params.cmdname = *argv;
  225 + params.addr = 0;
  226 + params.ep = 0;
  227 +
  228 + process_args(argc, argv);
  229 +
220 230 /* set tparams as per input type_id */
221 231 tparams = imagetool_get_type(params.type);
222 232 if (tparams == NULL) {
... ... @@ -231,7 +241,7 @@
231 241 */
232 242 if (tparams->check_params)
233 243 if (tparams->check_params (&params))
234   - usage ();
  244 + usage();
235 245  
236 246 if (!params.eflag) {
237 247 params.ep = params.addr;
... ... @@ -239,8 +249,6 @@
239 249 if (params.xflag)
240 250 params.ep += tparams->header_size;
241 251 }
242   -
243   - params.imagefile = *argv;
244 252  
245 253 if (params.fflag){
246 254 if (tparams->fflag_handle)