Still annotating the kernel
[akaros.git] / kern / include / string.h
1 #ifndef ROS_INC_STRING_H
2 #define ROS_INC_STRING_H
3
4 #include <arch/types.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 /* zra : These being used, and they are dangerous, so I'm rm'ing them
12 STRING  strcpy(STRING dst, const STRING src);
13 STRING  strcat(STRING dst, const STRING src);
14 */
15 STRING  strncpy(STRBUF(size) dst, const STRING src, size_t size);
16 size_t  strlcpy(STRBUF(size-1) dst, const STRING src, size_t size);
17 int     strcmp(const STRING s1, const STRING s2);
18 int     strncmp(const STRING s1, const STRING s2, size_t size);
19 STRING  strchr(const STRING s, char c);
20 STRING  strfind(const STRING s, char c);
21
22 void *COUNT(len) memset(void *COUNT(len) dst, int c, size_t len);
23 void *COUNT(len) memcpy(void *COUNT(len) dst, const void *COUNT(len) src, size_t len);
24 void *COUNT(len) memmove(void *COUNT(len) dst, const void *COUNT(len) src, size_t len);
25 int     memcmp(const void *COUNT(len) s1, const void *COUNT(len) s2, size_t len);
26 void *BND(s,s+len)      memfind(const void *COUNT(len) s, int c, size_t len);
27
28 long    strtol(const char *NTS s, char **endptr, int base);
29
30 #endif /* not ROS_INC_STRING_H */