mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
libutil: Add util_startswith() to util_str
Add util_startswith to util_str to check if a string starts with the given prefix and returns a pointer to the rest of the string, or NULL if it does not. Signed-off-by: Wisdom Erhimwionsobo <werh29@linux.ibm.com> Reviewed-by: Jan Höppner <hoeppner@linux.ibm.com> Reviewed-by: Steffen Eiden <seiden@linux.ibm.com> Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
This commit is contained in:
committed by
Jan Höppner
parent
28815d3928
commit
aa29a5f1f9
@@ -13,5 +13,7 @@
|
||||
#define LIB_UTIL_STR_H
|
||||
|
||||
void util_str_rm_whitespace(const char *src, char *dest);
|
||||
const char *util_startswith(const char *s, const char *prefix);
|
||||
const char *util_startswith_no_case(const char *s, const char *prefix);
|
||||
|
||||
#endif /** LIB_UTIL_STR_H @} */
|
||||
|
||||
@@ -3,14 +3,16 @@
|
||||
*
|
||||
* Manipulate and work with strings
|
||||
*
|
||||
* Copyright IBM Corp. 2025
|
||||
* Copyright IBM Corp. 2026
|
||||
*
|
||||
* s390-tools is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the MIT license. See LICENSE for details.
|
||||
*/
|
||||
|
||||
#include <ctype.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "lib/util_panic.h"
|
||||
#include "lib/util_str.h"
|
||||
|
||||
/**
|
||||
@@ -31,3 +33,45 @@ void util_str_rm_whitespace(const char *src, char *dest)
|
||||
}
|
||||
*dest = '\0';
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if string \a s starts with \a prefix
|
||||
*
|
||||
* @param[in] s String to check
|
||||
* @param[in] prefix Prefix to match
|
||||
*
|
||||
* @returns Pointer to the character after the prefix if match is found,
|
||||
* NULL otherwise
|
||||
*/
|
||||
const char *util_startswith(const char *s, const char *prefix)
|
||||
{
|
||||
size_t sz;
|
||||
|
||||
util_assert(s != NULL, "Internal error: s input is NULL");
|
||||
util_assert(prefix != NULL, "Internal error: prefix input is NULL");
|
||||
sz = strlen(prefix);
|
||||
if (strncmp(s, prefix, sz) == 0)
|
||||
return s + sz;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if string \a s starts with \a prefix (case-insensitive)
|
||||
*
|
||||
* @param[in] s String to check
|
||||
* @param[in] prefix Prefix to match (case-insensitive)
|
||||
*
|
||||
* @returns Pointer to the character after the prefix if match is found,
|
||||
* NULL otherwise
|
||||
*/
|
||||
const char *util_startswith_no_case(const char *s, const char *prefix)
|
||||
{
|
||||
size_t sz;
|
||||
|
||||
util_assert(s != NULL, "Internal error: s input is NULL");
|
||||
util_assert(prefix != NULL, "Internal error: prefix input is NULL");
|
||||
sz = strlen(prefix);
|
||||
if (strncasecmp(s, prefix, sz) == 0)
|
||||
return s + sz;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user