mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 14:41:39 +00:00
tools/nolibc/string: add strcmp() and strncmp()
We need these functions all the time, including when checking environment variables and parsing command-line arguments. These implementations were optimized to show optimal code size on a wide range of compilers (22 bytes return included for strcmp(), 33 for strncmp()). Signed-off-by: Willy Tarreau <w@1wt.eu> Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
This commit is contained in:
parent
bd845a193a
commit
0e7b492943
@ -102,6 +102,17 @@ char *strchr(const char *s, int c)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static __attribute__((unused))
|
||||
int strcmp(const char *a, const char *b)
|
||||
{
|
||||
unsigned int c;
|
||||
int diff;
|
||||
|
||||
while (!(diff = (unsigned char)*a++ - (c = (unsigned char)*b++)) && c)
|
||||
;
|
||||
return diff;
|
||||
}
|
||||
|
||||
static __attribute__((unused))
|
||||
char *strcpy(char *dst, const char *src)
|
||||
{
|
||||
@ -184,6 +195,18 @@ char *strncat(char *dst, const char *src, size_t size)
|
||||
return orig;
|
||||
}
|
||||
|
||||
static __attribute__((unused))
|
||||
int strncmp(const char *a, const char *b, size_t size)
|
||||
{
|
||||
unsigned int c;
|
||||
int diff = 0;
|
||||
|
||||
while (size-- &&
|
||||
!(diff = (unsigned char)*a++ - (c = (unsigned char)*b++)) && c)
|
||||
;
|
||||
|
||||
return diff;
|
||||
}
|
||||
|
||||
static __attribute__((unused))
|
||||
char *strncpy(char *dst, const char *src, size_t size)
|
||||
|
Loading…
Reference in New Issue
Block a user