On 1/25/22 18:13, Marek Behún wrote:
From: Pali Rohár <[email protected]>

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 <[email protected]>
Signed-off-by: Marek Behún <[email protected]>

Reviewed-by: Stefan Roese <[email protected]>

Thanks,
Stefan

---
  tools/kwboot.c | 22 +++++++++++++++++-----
  1 file changed, 17 insertions(+), 5 deletions(-)

diff --git a/tools/kwboot.c b/tools/kwboot.c
index 1dcec1969a..c413a8bf51 100644
--- a/tools/kwboot.c
+++ b/tools/kwboot.c
@@ -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);

Viele Grüße,
Stefan Roese

--
DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: [email protected]

Reply via email to