The branch main has been updated by imp:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=6fdb07d5b7e9293a6851a23b7ecb26636cf1ec1e

commit 6fdb07d5b7e9293a6851a23b7ecb26636cf1ec1e
Author:     Ahmad Khalifa <ahmadkhalifa...@gmail.com>
AuthorDate: 2024-08-12 12:11:06 +0000
Commit:     Warner Losh <i...@freebsd.org>
CommitDate: 2024-09-21 11:25:16 +0000

    loader: provide error message in command_errmsg instead of printing
    
    Also provide an error message when argc is too long instead of printing
    "no error message".
    
    Reviewed by: imp, kib
    Pull Request: https://github.com/freebsd/freebsd-src/pull/1381
---
 stand/efi/loader/copy.c | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/stand/efi/loader/copy.c b/stand/efi/loader/copy.c
index 3e466e875af8..90a55089ffc4 100644
--- a/stand/efi/loader/copy.c
+++ b/stand/efi/loader/copy.c
@@ -223,7 +223,7 @@ command_copy_staging(int argc, char *argv[])
        int prev;
 
        if (argc > 2) {
-               return (CMD_ERROR);
+               goto usage;
        } else if (argc == 2) {
                prev = copy_staging;
                if (strcmp(argv[1], "enable") == 0)
@@ -232,10 +232,8 @@ command_copy_staging(int argc, char *argv[])
                        copy_staging = COPY_STAGING_DISABLE;
                else if (strcmp(argv[1], "auto") == 0)
                        copy_staging = COPY_STAGING_AUTO;
-               else {
-                       printf("usage: copy_staging enable|disable|auto\n");
-                       return (CMD_ERROR);
-               }
+               else
+                       goto usage;
                if (prev != copy_staging) {
                        printf("changed copy_staging, unloading kernel\n");
                        unload();
@@ -246,6 +244,10 @@ command_copy_staging(int argc, char *argv[])
                printf("copy staging: %s\n", mode[copy_staging]);
        }
        return (CMD_OK);
+
+usage:
+       command_errmsg = "usage: copy_staging enable|disable|auto";
+       return (CMD_ERROR);
 }
 COMMAND_SET(copy_staging, "copy_staging", "copy staging", 
command_copy_staging);
 #endif
@@ -257,13 +259,11 @@ command_staging_slop(int argc, char *argv[])
        u_long new, prev;
 
        if (argc > 2) {
-               return (CMD_ERROR);
+               goto err;
        } else if (argc == 2) {
                new = strtoul(argv[1], &endp, 0);
-               if (*endp != '\0') {
-                       printf("invalid slop value\n");
-                       return (CMD_ERROR);
-               }
+               if (*endp != '\0')
+                       goto err;
                if (staging_slop != new) {
                        staging_slop = new;
                        printf("changed slop, unloading kernel\n");
@@ -276,6 +276,10 @@ command_staging_slop(int argc, char *argv[])
                printf("staging slop %#lx\n", staging_slop);
        }
        return (CMD_OK);
+
+err:
+       command_errmsg = "invalid slop value";
+       return (CMD_ERROR);
 }
 COMMAND_SET(staging_slop, "staging_slop", "set staging slop",
     command_staging_slop);

Reply via email to