6 int atoi(const char *str)
8 return strtol(str, 0, 10);
11 long atol(const char *str)
13 return strtol(str, 0, 10);
16 long strtol(const char *str, char **endp, int base)
21 const char *start = str;
23 while(isspace(*str)) str++;
27 if(str[1] == 'x' || str[1] == 'X') {
39 } else if(*str == '-') {
45 long val = 0x7fffffff;
46 char c = tolower(*str);
50 } else if(c >= 'a' && c <= 'f') {
60 acc = acc * base + val;
65 *endp = (char*)(valid ? str : start);
68 return sign > 0 ? acc : -acc;
72 void *memset(void *s, int c, unsigned long n)
79 void *memcpy(void *dest, const void *src, unsigned long n)
83 while(n--) *d++ = *s++;
87 void *memmove(void *dest, const void *src, unsigned long n)
102 dptr = (char*)dest + n - 1;
103 sptr = (const char*)src + n - 1;
112 unsigned long strlen(const char *s)
114 unsigned long len = 0;
119 char *strchr(const char *s, int c)
130 int strcmp(const char *s1, const char *s2)
132 while(*s1 && *s1 == *s2) {
139 char *strcpy(char *dest, const char *src)
142 while((*dptr++ = *src++));
149 return isalpha(c) || isdigit(c);
154 return isupper(c) || islower(c);
159 return c == ' ' || c == '\t';
164 return c >= '0' && c <= '9';
169 return c >= 'A' && c <= 'Z';
174 return c >= 'a' && c <= 'z';
179 return c > ' ' && c <= '~';
184 return isgraph(c) || c == ' ';
189 return isblank(c) || c == '\f' || c == '\n' || c == '\r' || c == '\v';
194 return islower(c) ? (c + ('A' - 'a')) : c;
199 return isupper(c) ? (c - ('A' - 'a')) : c;
202 #endif /* !def HAVE_LIBC */
204 static char errstr_buf[256];
206 void vi_error(struct visor *vi, const char *fmt, ...)
211 vsnprintf(errstr_buf, sizeof errstr_buf, fmt, ap);
215 vi->tty.status(errstr_buf, vi->tty_cls);