coreboot-v2/src/include/string.h
<<
>>
Prefs
   1#ifndef STRING_H
   2#define STRING_H
   3
   4#include <stddef.h>
   5#include <stdlib.h>
   6
   7void *memcpy(void *dest, const void *src, size_t n);
   8void *memmove(void *dest, const void *src, size_t n);
   9void *memset(void *s, int c, size_t n);
  10int memcmp(const void *s1, const void *s2, size_t n);
  11#ifndef __ROMCC__
  12int sprintf(char * buf, const char *fmt, ...);
  13#endif
  14
  15// simple string functions 
  16
  17static inline size_t strnlen(const char *src, size_t max) 
  18{ 
  19        size_t i = 0;
  20        while((*src++) && (i < max)) {
  21                i++;
  22        }
  23        return i;
  24}
  25
  26static inline size_t strlen(const char *src)
  27{
  28        size_t i = 0;
  29        while(*src++) {
  30                i++;
  31        }
  32        return i;
  33}
  34
  35static inline char *strchr(const char *s, int c)
  36{
  37        for (; *s; s++) {
  38                if (*s == c)
  39                        return (char *) s;
  40        }       
  41        return 0;
  42}
  43
  44#ifndef __ROMCC__
  45static inline char *strdup(const char *s)
  46{   
  47        size_t sz = strlen(s) + 1;
  48        char *d = malloc(sz);
  49        memcpy(d, s, sz);
  50        return d;
  51}
  52#endif
  53
  54static inline char *strncpy(char *to, const char *from, int count)
  55{
  56        register char *ret = to;
  57
  58        while (count > 0) {
  59                count--;
  60                if ((*to++ = *from++) == '\0')
  61                        break;
  62        }
  63
  64        while (count > 0) {
  65                count--;
  66                *to++ = '\0';
  67        }
  68        return ret;
  69}
  70
  71static inline int strcmp(const char *s1, const char *s2)
  72{   
  73        int r;
  74
  75        while ((r = (*s1 - *s2)) == 0 && *s1) {
  76                s1++;
  77                s2++;
  78        }
  79        return r;
  80}  
  81
  82static inline int strncmp(const char *s1, const char *s2, int maxlen)
  83{
  84        int i;
  85
  86        for (i = 0; i < maxlen; i++) {
  87                if (s1[i] != s2[i])
  88                        return s1[i] - s2[i];
  89        }
  90
  91        return 0;
  92}
  93
  94static inline int isspace(int c)
  95{
  96        switch (c) {
  97        case ' ': case '\f': case '\n':
  98        case '\r': case '\t': case '\v':
  99                return 1;
 100        default:
 101                return 0;
 102        }
 103}
 104
 105static inline int isdigit(int c)
 106{
 107        return (c >= '0' && c <= '9');
 108}
 109
 110static inline int isxdigit(int c)
 111{
 112        return ((c >= '0' && c <= '9') ||
 113                (c >= 'a' && c <= 'f') ||
 114                (c >= 'A' && c <= 'F'));
 115}
 116
 117static inline int isupper(int c)
 118{
 119        return (c >= 'A' && c <= 'Z');
 120}
 121
 122static inline int islower(int c)
 123{
 124        return (c >= 'a' && c <= 'z');
 125}
 126
 127static inline int toupper(int c)
 128{
 129        if (islower(c))
 130                c -= 'a'-'A';
 131        return c;
 132}
 133
 134static inline int tolower(int c)
 135{
 136        if (isupper(c))
 137                c -= 'A'-'a';
 138        return c;
 139}
 140#endif /* STRING_H */
 141
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.