fprintf(fp,
"Usage: nmrpflash [OPTIONS...]\n"
"\n"
- "Options (-a, -i and -f are mandatory):\n"
+ "Options (-a, -i and -f and/or -c are mandatory):\n"
" -a <ipaddr> IP address to assign to target device\n"
+ " -c <command> Command to run before (or instead of) TFTP upload\n"
" -f <firmware> Firmware file\n"
" -i <interface> Network interface directly connected to device\n"
" -m <mac> MAC address of target device (xx:xx:xx:xx:xx:xx)\n"
opterr = 0;
- while ((c = getopt(argc, argv, "a:f:i:m:M:p:t:T:hLVvU")) != -1) {
+ while ((c = getopt(argc, argv, "a:c:f:i:m:M:p:t:T:hLVvU")) != -1) {
max = 0x7fffffff;
switch (c) {
case 'a':
args.ipaddr = optarg;
break;
+ case 'c':
+ args.tftpcmd = optarg;
+ break;
case 'f':
args.filename = optarg;
break;
}
}
- if (!args.filename || !args.intf || !args.ipaddr) {
+ if ((!args.filename && !args.tftpcmd) || !args.intf || !args.ipaddr) {
usage(stderr);
return 1;
}
break;
}
- if (!args->tftpcmd) {
+ err = 0;
+
+ if (args->tftpcmd) {
+ printf("Executing '%s' ... ", args->tftpcmd);
+ fflush(stdout);
+ err = system(args->tftpcmd);
+ if (!err) {
+ printf("OK\n");
+ } else {
+ printf("ERR\n");
+ }
+ }
+
+ if (!err && args->filename) {
printf("Uploading %s ... ", args->filename);
fflush(stdout);
err = tftp_put(args);
- } else {
- printf("Running %s ... ", args->tftpcmd);
- fflush(stdout);
- err = system(args->tftpcmd);
}
if (!err) {