started the implementation
[visor] / libvisor / src / vilibc.c
1 #include "vilibc.h"
2 #include "vimpl.h"
3
4 #ifndef HAVE_LIBC
5
6 void *memset(void *s, int c, unsigned long n)
7 {
8         char *p = s;
9         while(n--) *p++ = c;
10         return s;
11 }
12
13 void *memcpy(void *dest, const void *src, unsigned long n)
14 {
15         char *d = dest;
16         const char *s = src;
17         while(n--) *d++ = *s++;
18         return dest;
19 }
20
21 void *memmove(void *dest, const void *src, unsigned long n)
22 {
23         unsigned long i;
24         char *dptr;
25         const char *sptr;
26
27         if(dest <= src) {
28                 /* forward copy */
29                 dptr = dest;
30                 sptr = src;
31                 for(i=0; i<n; i++) {
32                         *dptr++ = *sptr++;
33                 }
34         } else {
35                 /* backwards copy */
36                 dptr = (char*)dest + n - 1;
37                 sptr = (const char*)src + n - 1;
38                 for(i=0; i<n; i++) {
39                         *dptr-- = *sptr--;
40                 }
41         }
42
43         return dest;
44 }
45
46 unsigned long strlen(const char *s)
47 {
48         unsigned long len = 0;
49         while(*s++) len++;
50         return len;
51 }
52
53 int strcmp(const char *s1, const char *s2)
54 {
55         while(*s1 && *s1 == *s2) {
56                 s1++;
57                 s2++;
58         }
59         return *s1 - *s2;
60 }
61
62 #endif  /* !def HAVE_LIBC */
63
64 static char errstr_buf[256];
65
66 void vi_error(struct visor *vi, const char *fmt, ...)
67 {
68         va_list ap;
69
70         va_start(ap, fmt);
71         vsnprintf(errstr_buf, sizeof errstr_buf, fmt, ap);
72         va_end(ap);
73
74         if(vi->tty.status) {
75                 vi->tty.status(errstr_buf, vi->tty_cls);
76         }
77 }