870191d775cbf139965b33971437df7ec30e8776
[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_strncpy_rtrim(char *s1, const char *s2, udi_size_t n)
30 {
31         char *dst = s1;
32         while( n-- )
33         {
34                 *dst++ = *s2++;
35         }
36         while( dst > s1 && isspace(*--dst) )
37                 ;
38         dst ++;
39         *dst = '\0';
40         return s1;
41 }
42
43 void *udi_memchr(const void *s, udi_ubit8_t c, udi_size_t n)
44 {
45         const udi_ubit8_t *p = s;
46         while(n--)
47         {
48                 if( *p == c )
49                         return (void*)p;
50                 p ++;
51         }
52         return NULL;
53 }
54
55 udi_ubit32_t udi_strtou32(const char *s, char **endptr, int base)
56 {
57         return strtoul(s, endptr, base);
58 }
59
60 udi_size_t udi_snprintf(char *s, udi_size_t max_bytes, const char *format, ...)
61 {
62         udi_size_t      ret;
63         va_list args;
64         va_start(args, format);
65         
66         ret = udi_vsnprintf(s, max_bytes, format, args);
67         
68         va_end(args);
69         return ret;
70 }
71 udi_size_t udi_vsnprintf(char *s, udi_size_t max_bytes, const char *format, va_list ap)
72 {
73         // TODO: This should support some stuff Acess doesn't
74         return vsnprintf(s, max_bytes, format, ap);
75 }

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