home *** CD-ROM | disk | FTP | other *** search
/ Chip 1998 February / CHIP_2_98.iso / misc / src / installinit / minilibc.c < prev    next >
C/C++ Source or Header  |  1997-10-28  |  3KB  |  182 lines

  1. #define MINILIBC_INTERNAL
  2.  
  3. #include "minilibc.h"
  4.  
  5. int atexit (void (*__func) (void)) {
  6.     return 0;
  7. }
  8.  
  9. void exit() {
  10. }
  11.  
  12. char ** _environ = NULL;
  13. int errno = 0;
  14.  
  15. void _init (int __status) {
  16. }
  17.  
  18. void __libc_init_first (int __status) {
  19. }
  20.  
  21. void _fini (int __status) {
  22. }
  23.  
  24. inline int socket(int a, int b, int c) {
  25.     unsigned long args[] = { a, b, c };
  26.  
  27.     return socketcall(SYS_SOCKET, args);
  28. }
  29.  
  30. inline int bind(int a, void * b, int c) {
  31.     unsigned long args[] = { a, (long) b, c };
  32.  
  33.     return socketcall(SYS_BIND, args);
  34. }
  35.  
  36. inline int listen(int a, int b) {
  37.     unsigned long args[] = { a, b, 0 };
  38.  
  39.     return socketcall(SYS_LISTEN, args);
  40. }
  41.  
  42. inline int accept(int a, void * addr, void * addr2) {
  43.     unsigned long args[] = { a, (long) addr, (long) addr2 };
  44.  
  45.     return socketcall(SYS_ACCEPT, args);
  46. }
  47.  
  48. int strlen(const char * string) {
  49.     int i = 0;
  50.  
  51.     while (*string++) i++;
  52.  
  53.     return i;
  54. }
  55.  
  56. char * strcpy(char * dst, const char * src) {
  57.     char * chptr = dst;
  58.  
  59.     while (*src) *dst++ = *src++;
  60.     *dst = '\0';
  61.  
  62.     return chptr;
  63. }
  64.  
  65. void * memcpy(void * dst, const void * src, int count) {
  66.     char * a = dst;
  67.     const char * b = src;
  68.  
  69.     while (count--)
  70.     *a++ = *b++;
  71.  
  72.     return dst;
  73. }
  74.  
  75. void sleep(int secs) {
  76.     struct timeval tv;
  77.  
  78.     tv.tv_sec = secs;
  79.     tv.tv_usec = 0;
  80.  
  81.     select(0, NULL, NULL, NULL, &tv);
  82. }
  83.  
  84. int strcmp(const char * a, const char * b) {
  85.     int i, j;  
  86.  
  87.     i = strlen(a); j = strlen(b);
  88.     if (i < j)
  89.     return -1;
  90.     else if (j < i)
  91.     return 1;
  92.  
  93.     while (*a && (*a == *b)) a++, b++;
  94.  
  95.     if (!*a) return 0;
  96.  
  97.     if (*a < *b)
  98.     return -1;
  99.     else
  100.     return 1;
  101. }
  102.  
  103. int strncmp(const char * a, const char * b, int len) {
  104.     char buf1[1000], buf2[1000];
  105.  
  106.     strcpy(buf1, a);
  107.     strcpy(buf2, b);
  108.     buf1[len] = '\0';
  109.     buf2[len] = '\0';
  110.  
  111.     return strcmp(buf1, buf2);
  112. }
  113.  
  114. void printint(int i) {
  115.     char buf[10];
  116.     char * chptr = buf + 9;
  117.     int j = 0;
  118.  
  119.     if (i < 0) {
  120.     write(1, "-", 1);
  121.     i = -1 * i;
  122.     }
  123.  
  124.     while (i) {
  125.     *chptr-- = '0' + (i % 10);
  126.     j++;
  127.     i = i / 10;
  128.     }
  129.  
  130.     write(1, chptr + 1, j);
  131. }
  132.  
  133. char * strchr(char * str, int ch) {
  134.     char * chptr;
  135.  
  136.     chptr = str;
  137.     while (*chptr) {
  138.     if (*chptr == ch) return chptr;
  139.     chptr++;
  140.     }
  141.  
  142.     return NULL;
  143. }
  144.  
  145. void printf(char * fmt, ...) {
  146.     char buf[2048];
  147.     char * start = buf;
  148.     char * chptr = buf;
  149.     va_list args;
  150.     char * strarg;
  151.     int numarg;
  152.  
  153.     strcpy(buf, fmt);
  154.     va_start(args, fmt);
  155.  
  156.     while (start) {
  157.     while (*chptr != '%' && *chptr) chptr++;
  158.  
  159.     if (*chptr == '%') {
  160.         *chptr++ = '\0';
  161.         printstr(start);
  162.  
  163.         switch (*chptr++) {
  164.           case 's': 
  165.         strarg = va_arg(args, char *);
  166.         printstr(strarg);
  167.         break;
  168.  
  169.           case 'd':
  170.         numarg = va_arg(args, int);
  171.         printint(numarg);
  172.         break;
  173.         }
  174.  
  175.         start = chptr;
  176.     } else {
  177.         printstr(start);
  178.         start = NULL;
  179.     }
  180.     }
  181. }
  182.