[PATCH 2/3] fastboot: retire strcmp_l1 in favor of str_has_prefix
Ahmad Fatoum
a.fatoum at pengutronix.de
Fri Aug 9 07:19:58 PDT 2024
strcmp_l1 is basically str_has_prefix with inverted arguments and a
NULL check.
We don't need the NULL check as cmdbuf and cmd->cmd should always be
non-NULL: The former is the address of an array populated by fastboot
network or USB code and the latter is a pointer to a string literal.
So let's codify the assumption that cmdbuf is not NULL into the
prototype and replace strcmp_l1 with str_has_prefix. This has the added
benefit that str_has_prefix returns the length of the prefix, which
saves us a repeated call to strlen(cmd->cmd);
Signed-off-by: Ahmad Fatoum <a.fatoum at pengutronix.de>
---
v1 -> v2:
- new patch
---
common/fastboot.c | 14 +++++---------
include/fastboot.h | 3 ++-
2 files changed, 7 insertions(+), 10 deletions(-)
diff --git a/common/fastboot.c b/common/fastboot.c
index e85cc6d8aaf8..dc66d7123b02 100644
--- a/common/fastboot.c
+++ b/common/fastboot.c
@@ -287,13 +287,6 @@ static void cb_reboot(struct fastboot *fb, const char *cmd)
restart_machine();
}
-static int strcmp_l1(const char *s1, const char *s2)
-{
- if (!s1 || !s2)
- return -1;
- return strncmp(s1, s2, strlen(s1));
-}
-
static void cb_getvar(struct fastboot *fb, const char *cmd)
{
struct fb_variable *var;
@@ -815,10 +808,13 @@ static void fb_run_command(struct fastboot *fb, const char *cmdbuf,
console_countdown_abort("fastboot");
for (i = 0; i < num_commands; i++) {
+ size_t cmdlen;
+
cmd = &cmds[i];
- if (!strcmp_l1(cmd->cmd, cmdbuf)) {
- cmd->cb(fb, cmdbuf + strlen(cmd->cmd));
+ cmdlen = str_has_prefix(cmdbuf, cmd->cmd);
+ if (cmdlen) {
+ cmd->cb(fb, cmdbuf + cmdlen);
return;
}
diff --git a/include/fastboot.h b/include/fastboot.h
index cd415847e348..4b2fdf3190b2 100644
--- a/include/fastboot.h
+++ b/include/fastboot.h
@@ -87,7 +87,8 @@ int fastboot_tx_print(struct fastboot *fb, enum fastboot_msg_type type,
const char *fmt, ...);
void fastboot_start_download_generic(struct fastboot *fb);
void fastboot_download_finished(struct fastboot *fb);
-void fastboot_exec_cmd(struct fastboot *fb, const char *cmdbuf);
+void fastboot_exec_cmd(struct fastboot *fb, const char *cmdbuf)
+ __attribute__((nonnull));
void fastboot_abort(struct fastboot *fb);
#endif
--
2.39.2
More information about the barebox
mailing list