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
|
#define LIB_UTIL_STR_H
|
||||||
|
|
||||||
void util_str_rm_whitespace(const char *src, char *dest);
|
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 @} */
|
#endif /** LIB_UTIL_STR_H @} */
|
||||||
|
|||||||
@@ -3,14 +3,16 @@
|
|||||||
*
|
*
|
||||||
* Manipulate and work with strings
|
* 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
|
* s390-tools is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the MIT license. See LICENSE for details.
|
* it under the terms of the MIT license. See LICENSE for details.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "lib/util_panic.h"
|
||||||
#include "lib/util_str.h"
|
#include "lib/util_str.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -31,3 +33,45 @@ void util_str_rm_whitespace(const char *src, char *dest)
|
|||||||
}
|
}
|
||||||
*dest = '\0';
|
*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