extra functions
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1405 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
		| @@ -2,6 +2,14 @@ | ||||
| #define STRING_H | ||||
|  | ||||
| #include <stddef.h> | ||||
| #include <stdlib.h> | ||||
|  | ||||
| extern void *memcpy(void *dest, const void *src, size_t n); | ||||
| extern void *memmove(void *dest, const void *src, size_t n); | ||||
| extern void *memset(void *s, int c, size_t n); | ||||
| extern int memcmp(const void *s1, const void *s2, size_t n); | ||||
|  | ||||
| extern int sprintf(char * buf, const char *fmt, ...); | ||||
|  | ||||
| // yes, linux has fancy ones. We don't care. This stuff gets used  | ||||
| // hardly at all. And the pain of including those files is just too high. | ||||
| @@ -28,10 +36,83 @@ static inline size_t strlen(const char *src) | ||||
| 	return i; | ||||
| } | ||||
|  | ||||
| extern void *memcpy(void *dest, const void *src, size_t n); | ||||
| extern void *memmove(void *dest, const void *src, size_t n); | ||||
| extern void *memset(void *s, int c, size_t n); | ||||
| extern int memcmp(const void *s1, const void *s2, size_t n); | ||||
| static inline char *strchr(const char *s, int c) | ||||
| { | ||||
| 	for (; *s; s++) { | ||||
| 		if (*s == c) | ||||
| 			return (char *) s; | ||||
| 	}        | ||||
| 	return 0; | ||||
| } | ||||
|  | ||||
| extern int sprintf(char * buf, const char *fmt, ...); | ||||
| static inline char *strdup(const char *s) | ||||
| {    | ||||
| 	size_t sz = strlen(s) + 1; | ||||
| 	char *d = malloc(sz); | ||||
| 	memcpy(d, s, sz); | ||||
| 	return d; | ||||
| } | ||||
|  | ||||
| static inline char *strncpy(char *to, const char *from, int count) | ||||
| { | ||||
| 	register char *ret = to; | ||||
|  | ||||
| 	while (count > 0) { | ||||
| 		count--; | ||||
| 		if ((*to++ = *from++) == '\0') | ||||
| 			break; | ||||
| 	} | ||||
|  | ||||
| 	while (count > 0) { | ||||
| 		count--; | ||||
| 		*to++ = '\0'; | ||||
| 	} | ||||
| 	return ret; | ||||
| } | ||||
|  | ||||
| static inline int strcmp(const char *s1, const char *s2) | ||||
| {    | ||||
| 	int r; | ||||
|  | ||||
| 	while ((r = (*s1 - *s2)) == 0 && *s1) { | ||||
| 		s1++; | ||||
| 		s2++; | ||||
| 	} | ||||
| 	return r; | ||||
| }   | ||||
|  | ||||
| static inline int isspace(int c) | ||||
| { | ||||
| 	switch (c) { | ||||
| 	case ' ': case '\f': case '\n': | ||||
| 	case '\r': case '\t': case '\v': | ||||
| 		return 1; | ||||
| 	default: | ||||
| 		return 0; | ||||
| 	} | ||||
| } | ||||
|  | ||||
| static inline int isdigit(int c) | ||||
| { | ||||
| 	return (c >= '0' && c <= '9'); | ||||
| } | ||||
|  | ||||
| static inline int isxdigit(int c) | ||||
| { | ||||
| 	return ((c >= '0' && c <= '9') || | ||||
| 		(c >= 'a' && c <= 'f') || | ||||
| 		(c >= 'A' && c <= 'F')); | ||||
| } | ||||
|  | ||||
| static inline int islower(int c) | ||||
| { | ||||
| 	return (c >= 'a' && c <= 'z'); | ||||
| } | ||||
|  | ||||
| static inline int toupper(int c) | ||||
| { | ||||
|         if (islower(c)) | ||||
|                 c -= 'a'-'A'; | ||||
|         return c; | ||||
| } | ||||
| #endif /* STRING_H */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user