extra functions
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1405 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
fd27f5ee34
commit
1624782bbe
|
@ -2,6 +2,14 @@
|
||||||
#define STRING_H
|
#define STRING_H
|
||||||
|
|
||||||
#include <stddef.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
|
// 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.
|
// 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;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern void *memcpy(void *dest, const void *src, size_t n);
|
static inline char *strchr(const char *s, int c)
|
||||||
extern void *memmove(void *dest, const void *src, size_t n);
|
{
|
||||||
extern void *memset(void *s, int c, size_t n);
|
for (; *s; s++) {
|
||||||
extern int memcmp(const void *s1, const void *s2, size_t n);
|
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 */
|
#endif /* STRING_H */
|
||||||
|
|
Loading…
Reference in New Issue