diff mbox series

[BlueZ] shared/shell: Introduce bt_shell_exec

Message ID 20220301233045.109794-1-luiz.dentz@gmail.com
State Superseded
Headers show
Series [BlueZ] shared/shell: Introduce bt_shell_exec | expand

Commit Message

Luiz Augusto von Dentz March 1, 2022, 11:30 p.m. UTC
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

This introduces bt_shell_exec which can be used to inject commands into
a bt_shell without using stdin/user input.
---
 src/shared/shell.c | 34 ++++++++++++++++++++++++----------
 src/shared/shell.h |  1 +
 2 files changed, 25 insertions(+), 10 deletions(-)

Comments

Luiz Augusto von Dentz March 2, 2022, 11:22 p.m. UTC | #1
Hi,

On Tue, Mar 1, 2022 at 4:44 PM <bluez.test.bot@gmail.com> wrote:
>
> This is automated email and please do not reply to this email!
>
> Dear submitter,
>
> Thank you for submitting the patches to the linux bluetooth mailing list.
> This is a CI test results with your patch series:
> PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=619349
>
> ---Test result---
>
> Test Summary:
> CheckPatch                    PASS      1.51 seconds
> GitLint                       PASS      1.07 seconds
> Prep - Setup ELL              PASS      51.80 seconds
> Build - Prep                  PASS      0.83 seconds
> Build - Configure             PASS      10.43 seconds
> Build - Make                  PASS      1500.30 seconds
> Make Check                    PASS      12.38 seconds
> Make Check w/Valgrind         PASS      533.05 seconds
> Make Distcheck                PASS      278.20 seconds
> Build w/ext ELL - Configure   PASS      10.45 seconds
> Build w/ext ELL - Make        PASS      1473.77 seconds
> Incremental Build with patchesPASS      0.00 seconds
>
>
>
> ---
> Regards,
> Linux Bluetooth
>

Pushed
diff mbox series

Patch

diff --git a/src/shared/shell.c b/src/shared/shell.c
index cbb9b8b88..0d82bc282 100644
--- a/src/shared/shell.c
+++ b/src/shared/shell.c
@@ -678,7 +678,6 @@  int bt_shell_release_prompt(const char *input)
 
 static void rl_handler(char *input)
 {
-	wordexp_t w;
 	HIST_ENTRY *last;
 
 	if (!input) {
@@ -703,16 +702,8 @@  static void rl_handler(char *input)
 	if (data.monitor)
 		bt_log_printf(0xffff, data.name, LOG_INFO, "%s", input);
 
-	if (wordexp(input, &w, WRDE_NOCMD))
-		goto done;
-
-	if (w.we_wordc == 0) {
-		wordfree(&w);
-		goto done;
-	}
+	bt_shell_exec(input);
 
-	shell_exec(w.we_wordc, w.we_wordv);
-	wordfree(&w);
 done:
 	free(input);
 }
@@ -1178,6 +1169,29 @@  int bt_shell_run(void)
 	return status;
 }
 
+int bt_shell_exec(const char *input)
+{
+	wordexp_t w;
+	int err;
+
+	if (!input)
+		return 0;
+
+	if (wordexp(input, &w, WRDE_NOCMD))
+		return -ENOEXEC;
+
+	if (w.we_wordc == 0) {
+		wordfree(&w);
+		return -ENOEXEC;
+	}
+
+	err = shell_exec(w.we_wordc, w.we_wordv);
+
+	wordfree(&w);
+
+	return err;
+}
+
 void bt_shell_cleanup(void)
 {
 	bt_shell_release_prompt("");
diff --git a/src/shared/shell.h b/src/shared/shell.h
index cc4f822fb..8baa2854a 100644
--- a/src/shared/shell.h
+++ b/src/shared/shell.h
@@ -55,6 +55,7 @@  struct bt_shell_opt {
 void bt_shell_init(int argc, char **argv, const struct bt_shell_opt *opt);
 
 int bt_shell_run(void);
+int bt_shell_exec(const char *input);
 
 void bt_shell_quit(int status);
 void bt_shell_noninteractive_quit(int status);