]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
tools: kwboot: Allow to use option -b without image path
authorPali Rohár <pali@kernel.org>
Tue, 25 Jan 2022 17:13:07 +0000 (18:13 +0100)
committerStefan Roese <sr@denx.de>
Mon, 31 Jan 2022 09:23:38 +0000 (10:23 +0100)
Allow option -b without image path parameter, to send boot pattern and
wait for response but not send any image. This allows to use kwboot just
for processing boot pattern and user can use any other xmodem tool for
transferring the image itself (e.g. sx). Useful for debugging purposes.

Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
tools/kwboot.c

index 1dcec1969aa191240cf28bcf16256fca1812b51e..c413a8bf51eb4246a23a32c8db21b3ec4add7c85 100644 (file)
@@ -1699,6 +1699,8 @@ main(int argc, char **argv)
        size_t size;
        size_t after_img_rsv;
        int baudrate;
+       int prev_optind;
+       int c;
 
        rv = 1;
        tty = -1;
@@ -1716,22 +1718,32 @@ main(int argc, char **argv)
        kwboot_verbose = isatty(STDOUT_FILENO);
 
        do {
-               int c = getopt(argc, argv, "hb:ptaB:dD:q:s:o:");
+               prev_optind = optind;
+               c = getopt(argc, argv, "hbptaB:dD:q:s:o:");
                if (c < 0)
                        break;
 
                switch (c) {
                case 'b':
+                       if (imgpath || bootmsg || debugmsg)
+                               goto usage;
                        bootmsg = kwboot_msg_boot;
-                       imgpath = optarg;
+                       if (prev_optind == optind)
+                               goto usage;
+                       if (argv[optind] && argv[optind][0] != '-')
+                               imgpath = argv[optind++];
                        break;
 
                case 'D':
+                       if (imgpath || bootmsg || debugmsg)
+                               goto usage;
                        bootmsg = NULL;
                        imgpath = optarg;
                        break;
 
                case 'd':
+                       if (imgpath || bootmsg || debugmsg)
+                               goto usage;
                        debugmsg = kwboot_msg_debug;
                        break;
 
@@ -1774,11 +1786,11 @@ main(int argc, char **argv)
        if (!bootmsg && !term && !debugmsg)
                goto usage;
 
-       if (argc - optind < 1)
-               goto usage;
-
        ttypath = argv[optind++];
 
+       if (optind != argc)
+               goto usage;
+
        tty = kwboot_open_tty(ttypath, imgpath ? 115200 : baudrate);
        if (tty < 0) {
                perror(ttypath);