Adds cistrcmp from inferno
[akaros.git] / kern / include / string.h
1 #ifndef ROS_INC_STRING_H
2 #define ROS_INC_STRING_H
3
4 #include <ros/common.h>
5
6 #define STRING char *NTS
7 #define STRBUF(n) char *NT COUNT(n)
8
9 int     strlen(const STRING s);
10 int     strnlen(const STRBUF(size) s, size_t size);
11 STRING  strstr(char *s1, char *s2);
12
13 /* zra : These aren't being used, and they are dangerous, so I'm rm'ing them
14 STRING  strcpy(STRING dst, const STRING src);
15 STRING  strcat(STRING dst, const STRING src);
16 */
17 STRING  strncpy(STRBUF(size) dst, const STRING src, size_t size);
18 size_t  strlcpy(STRBUF(size-1) dst, const STRING src, size_t size);
19 int     strcmp(const STRING s1, const STRING s2);
20 int     strncmp(const STRING s1, const STRING s2, size_t size);
21 int cistrcmp(char *s1, char *s2);
22 STRING  strchr(const STRING s, char c);
23 STRING  strrchr(const STRING s, char c);
24 STRING  strfind(const STRING s, char c);
25
26 void * (DMEMSET(1, 2, 3) memset)(void* p, int what, size_t sz);
27 int    (DMEMCMP(1, 2, 3) memcmp)(const void* s1, const void* s2, size_t sz);
28 void * (DMEMCPY(1, 2, 3) memcpy)(void* dst, const void* src, size_t sz);
29 void * (DMEMCPY(1, 2, 3) memmove)(void *dst, const void* src, size_t sz);
30 void * memchr(void* mem, int chr, int len);
31
32 void *BND(s,s+len)      memfind(const void *COUNT(len) s, int c, size_t len);
33
34 long    strtol(const char *NTS s, char **endptr, int base);
35 unsigned long strtoul(const char *s, char **endptr, int base);
36 int     atoi(const char*NTS s);
37
38 #endif /* not ROS_INC_STRING_H */