Skip to content

Commit

Permalink
Make linux kernel string funcs available to tools
Browse files Browse the repository at this point in the history
isspace() and strim() are not in the typical user-mode string.h, so
put them in a separate compilation unit so that they can be built into
tools that need them independent of the other common string functions.

This allows code shared by u-boot and the linux user-mode tools to link.

Signed-off-by: Joe Hershberger <[email protected]>
  • Loading branch information
jhershbe authored and trini committed Dec 13, 2012
1 parent 9960d9a commit e772cb3
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 43 deletions.
8 changes: 8 additions & 0 deletions include/linux/linux_string.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#ifndef _LINUX_LINUX_STRING_H_
#define _LINUX_LINUX_STRING_H_

extern char * skip_spaces(const char *);

extern char *strim(char *);

#endif
5 changes: 1 addition & 4 deletions include/linux/string.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,7 @@ extern char * strchr(const char *,int);
#ifndef __HAVE_ARCH_STRRCHR
extern char * strrchr(const char *,int);
#endif
extern char * skip_spaces(const char *);

extern char *strim(char *);

#include <linux/linux_string.h>
#ifndef __HAVE_ARCH_STRSTR
extern char * strstr(const char *,const char *);
#endif
Expand Down
1 change: 1 addition & 0 deletions lib/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ endif
COBJS-y += crc32.o
COBJS-y += ctype.o
COBJS-y += div64.o
COBJS-y += linux_string.o
COBJS-y += string.o
COBJS-y += time.o
COBJS-$(CONFIG_BOOTP_PXE) += uuid.o
Expand Down
51 changes: 51 additions & 0 deletions lib/linux_string.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
* linux/lib/string.c
*
* Copyright (C) 1991, 1992 Linus Torvalds
*/

#ifdef USE_HOSTCC
#include <stdio.h>
#endif

#include <linux/ctype.h>
#include <linux/string.h>

/**
* skip_spaces - Removes leading whitespace from @str.
* @str: The string to be stripped.
*
* Returns a pointer to the first non-whitespace character in @str.
*/
char *skip_spaces(const char *str)
{
while (isspace(*str))
++str;
return (char *)str;
}

/**
* strim - Removes leading and trailing whitespace from @s.
* @s: The string to be stripped.
*
* Note that the first trailing whitespace is replaced with a %NUL-terminator
* in the given string @s. Returns a pointer to the first non-whitespace
* character in @s.
*/
char *strim(char *s)
{
size_t size;
char *end;

s = skip_spaces(s);
size = strlen(s);
if (!size)
return s;

end = s + size - 1;
while (end >= s && isspace(*end))
end--;
*(end + 1) = '\0';

return s;
}
39 changes: 0 additions & 39 deletions lib/string.c
Original file line number Diff line number Diff line change
Expand Up @@ -222,45 +222,6 @@ char * strrchr(const char * s, int c)
}
#endif


/**
* skip_spaces - Removes leading whitespace from @str.
* @str: The string to be stripped.
*
* Returns a pointer to the first non-whitespace character in @str.
*/
char *skip_spaces(const char *str)
{
while (isspace(*str))
++str;
return (char *)str;
}

/**
* strim - Removes leading and trailing whitespace from @s.
* @s: The string to be stripped.
*
* Note that the first trailing whitespace is replaced with a %NUL-terminator
* in the given string @s. Returns a pointer to the first non-whitespace
* character in @s.
*/
char *strim(char *s)
{
size_t size;
char *end;

s = skip_spaces(s);
size = strlen(s);
if (!size)
return s;

end = s + size - 1;
while (end >= s && isspace(*end))
end--;
*(end + 1) = '\0';

return s;
}
#ifndef __HAVE_ARCH_STRLEN
/**
* strlen - Find the length of a string
Expand Down

0 comments on commit e772cb3

Please sign in to comment.