xref: /openbmc/u-boot/lib/linux_string.c (revision 612404c2)
1*e772cb30SJoe Hershberger /*
2*e772cb30SJoe Hershberger  *  linux/lib/string.c
3*e772cb30SJoe Hershberger  *
4*e772cb30SJoe Hershberger  *  Copyright (C) 1991, 1992  Linus Torvalds
5*e772cb30SJoe Hershberger  */
6*e772cb30SJoe Hershberger 
7*e772cb30SJoe Hershberger #ifdef USE_HOSTCC
8*e772cb30SJoe Hershberger #include <stdio.h>
9*e772cb30SJoe Hershberger #endif
10*e772cb30SJoe Hershberger 
11*e772cb30SJoe Hershberger #include <linux/ctype.h>
12*e772cb30SJoe Hershberger #include <linux/string.h>
13*e772cb30SJoe Hershberger 
14*e772cb30SJoe Hershberger /**
15*e772cb30SJoe Hershberger  * skip_spaces - Removes leading whitespace from @str.
16*e772cb30SJoe Hershberger  * @str: The string to be stripped.
17*e772cb30SJoe Hershberger  *
18*e772cb30SJoe Hershberger  * Returns a pointer to the first non-whitespace character in @str.
19*e772cb30SJoe Hershberger  */
skip_spaces(const char * str)20*e772cb30SJoe Hershberger char *skip_spaces(const char *str)
21*e772cb30SJoe Hershberger {
22*e772cb30SJoe Hershberger 	while (isspace(*str))
23*e772cb30SJoe Hershberger 		++str;
24*e772cb30SJoe Hershberger 	return (char *)str;
25*e772cb30SJoe Hershberger }
26*e772cb30SJoe Hershberger 
27*e772cb30SJoe Hershberger /**
28*e772cb30SJoe Hershberger  * strim - Removes leading and trailing whitespace from @s.
29*e772cb30SJoe Hershberger  * @s: The string to be stripped.
30*e772cb30SJoe Hershberger  *
31*e772cb30SJoe Hershberger  * Note that the first trailing whitespace is replaced with a %NUL-terminator
32*e772cb30SJoe Hershberger  * in the given string @s. Returns a pointer to the first non-whitespace
33*e772cb30SJoe Hershberger  * character in @s.
34*e772cb30SJoe Hershberger  */
strim(char * s)35*e772cb30SJoe Hershberger char *strim(char *s)
36*e772cb30SJoe Hershberger {
37*e772cb30SJoe Hershberger 	size_t size;
38*e772cb30SJoe Hershberger 	char *end;
39*e772cb30SJoe Hershberger 
40*e772cb30SJoe Hershberger 	s = skip_spaces(s);
41*e772cb30SJoe Hershberger 	size = strlen(s);
42*e772cb30SJoe Hershberger 	if (!size)
43*e772cb30SJoe Hershberger 		return s;
44*e772cb30SJoe Hershberger 
45*e772cb30SJoe Hershberger 	end = s + size - 1;
46*e772cb30SJoe Hershberger 	while (end >= s && isspace(*end))
47*e772cb30SJoe Hershberger 		end--;
48*e772cb30SJoe Hershberger 	*(end + 1) = '\0';
49*e772cb30SJoe Hershberger 
50*e772cb30SJoe Hershberger 	return s;
51*e772cb30SJoe Hershberger }
52