3f08ca99620cde294de120cbaf8c9c2f52f224fe
[tpg/acess2.git] / KernelLand / Modules / Interfaces / UDI / udi_lib / strmem.c
1 /**
2  * \file strmem.c
3  * \author John Hodge (thePowersGang)
4  */
5 #include <acess.h>
6 #include <udi.h>
7
8 // === EXPORTS ===
9 EXPORTAS(strlen, udi_strlen);
10 EXPORTAS(strcat, udi_strcat);
11 EXPORTAS(strncat, udi_strncat);
12 EXPORTAS(strcmp, udi_strcmp);
13 EXPORTAS(strncmp, udi_strncmp);
14 EXPORTAS(memcmp, udi_memcmp);
15 EXPORTAS(strcpy, udi_strcpy);
16 EXPORTAS(strncpy, udi_strncpy);
17 EXPORTAS(memcpy, udi_memcpy);
18 EXPORTAS(memmove, udi_memmove);
19 EXPORT(udi_strncpy_rtrim);
20 EXPORTAS(strchr, udi_strchr);
21 EXPORTAS(strrchr, udi_strrchr);
22 EXPORT(udi_memchr);
23 EXPORTAS(memset, udi_memset);
24 EXPORT(udi_strtou32);
25 EXPORT(udi_snprintf);
26 EXPORT(udi_vsnprintf);
27
28 // === CODE ===
29 char *udi_strcpy(char *s1, const char *s2)
30 {
31         return strcpy(s1, s2);
32 }
33 char *udi_strncpy_rtrim(char *s1, const char *s2, udi_size_t n)
34 {
35         char *dst = s1;
36         while( n-- )
37         {
38                 *dst++ = *s2++;
39         }
40         while( dst > s1 && isspace(*--dst) )
41                 ;
42         dst ++;
43         *dst = '\0';
44         return s1;
45 }
46
47 void *udi_memchr(const void *s, udi_ubit8_t c, udi_size_t n)
48 {
49         const udi_ubit8_t *p = s;
50         while(n--)
51         {
52                 if( *p == c )
53                         return (void*)p;
54                 p ++;
55         }
56         return NULL;
57 }
58
59 udi_ubit32_t udi_strtou32(const char *s, char **endptr, int base)
60 {
61         return strtoul(s, endptr, base);
62 }
63
64 udi_size_t udi_snprintf(char *s, udi_size_t max_bytes, const char *format, ...)
65 {
66         udi_size_t      ret;
67         va_list args;
68         va_start(args, format);
69         
70         ret = udi_vsnprintf(s, max_bytes, format, args);
71         
72         va_end(args);
73         return ret;
74 }
75 udi_size_t udi_vsnprintf(char *s, udi_size_t max_bytes, const char *format, va_list ap)
76 {
77         // TODO: This should support some stuff Acess doesn't
78         return vsnprintf(s, max_bytes, format, ap);
79 }

UCC git Repository :: git.ucc.asn.au