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 Hershbergerchar *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 Hershbergerchar *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