2017-12-08 18:19:31

by Randy Dunlap

[permalink] [raw]
Subject: [PATCH 2/3] kdb: drop newline in unknown command output

From: Randy Dunlap <[email protected]>

When an unknown command is entered, kdb prints "Unknown kdb command:"
and then the unknown text, including the newline character. This
causes the ending single-quote mark to be printed on the next line
by itself, so just change the ending newline character to a null
character (end of string) so that it won't be "printed."

Signed-off-by: Randy Dunlap <[email protected]>
Cc: Daniel Thompson <[email protected]>
Cc: Jason Wessel <[email protected]>
Cc: [email protected]
---
kernel/debug/kdb/kdb_main.c | 11 +++++++++++
1 file changed, 11 insertions(+)

--- lnx-415-rc1.orig/kernel/debug/kdb/kdb_main.c
+++ lnx-415-rc1/kernel/debug/kdb/kdb_main.c
@@ -1150,6 +1150,16 @@ void kdb_set_current_task(struct task_st
kdb_current_regs = NULL;
}

+static void drop_newline(char *buf)
+{
+ size_t len = strlen(buf);
+
+ if (len == 0)
+ return;
+ if (*(buf + len - 1) == '\n')
+ *(buf + len - 1) = '\0';
+}
+
/*
* kdb_local - The main code for kdb. This routine is invoked on a
* specific processor, it is not global. The main kdb() routine
@@ -1327,6 +1337,7 @@ do_full_getstr:
cmdptr = cmd_head;
diag = kdb_parse(cmdbuf);
if (diag == KDB_NOTFOUND) {
+ drop_newline(cmdbuf);
kdb_printf("Unknown kdb command: '%s'\n", cmdbuf);
diag = 0;
}



2017-12-08 18:34:22

by Jason Wessel

[permalink] [raw]
Subject: Re: [PATCH 2/3] kdb: drop newline in unknown command output

On 12/08/2017 12:19 PM, Randy Dunlap wrote:
> From: Randy Dunlap <[email protected]>
>



Thanks for the series Randy. I'll get these applied, but I will take
a look at changing this patch slightly.


> When an unknown command is entered, kdb prints "Unknown kdb command:"
> and then the unknown text, including the newline character. This
> causes the ending single-quote mark to be printed on the next line
> by itself, so just change the ending newline character to a null
> character (end of string) so that it won't be "printed."
>
> Signed-off-by: Randy Dunlap <[email protected]>
> Cc: Daniel Thompson <[email protected]>
> Cc: Jason Wessel <[email protected]>
> Cc: [email protected]
> ---
> kernel/debug/kdb/kdb_main.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> --- lnx-415-rc1.orig/kernel/debug/kdb/kdb_main.c
> +++ lnx-415-rc1/kernel/debug/kdb/kdb_main.c
> @@ -1150,6 +1150,16 @@ void kdb_set_current_task(struct task_st
> kdb_current_regs = NULL;
> }
>
> +static void drop_newline(char *buf)
> +{
> + size_t len = strlen(buf);
> +
> + if (len == 0)
> + return;
> + if (*(buf + len - 1) == '\n')
> + *(buf + len - 1) = '\0';
> +}
> +
> /*
> * kdb_local - The main code for kdb. This routine is invoked on a
> * specific processor, it is not global. The main kdb() routine
> @@ -1327,6 +1337,7 @@ do_full_getstr:
> cmdptr = cmd_head;
> diag = kdb_parse(cmdbuf);
> if (diag == KDB_NOTFOUND) {
> + drop_newline(cmdbuf);


We might be able to get away with just adjusting the pointer in the kdb_parse instead of adding the drop_newline because we are returning error anyway and the parse needs to be called again in the future for a new command.


Thanks,
Jason.

> kdb_printf("Unknown kdb command: '%s'\n", cmdbuf);
> diag = 0;
> }
>
>