Merge branch 'master' of git://localhost/acess2
[tpg/acess2.git] / KernelLand / Kernel / libc.c
index bd34973..ef94426 100644 (file)
@@ -49,6 +49,7 @@ EXPORT(tolower);
 
 EXPORT(strucmp);
 EXPORT(strchr);
+EXPORT(strrchr);
 EXPORT(strpos);
 EXPORT(strlen);
 EXPORT(strcpy);
@@ -210,8 +211,8 @@ int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
                if(pos < __maxlen)
                {
                        if(__s) __s[pos] = ch;
-                       pos ++;
                }
+               pos ++;
        }
 
        while((c = *__format++) != 0)
@@ -529,6 +530,15 @@ char *strchr(const char *__s, int __c)
        return NULL;
 }
 
+char *strrchr(const char *__s, int __c)
+{
+       size_t ofs = strlen(__s);
+       while(--ofs && __s[ofs] != __c);
+       if( __s[ofs] == __c )
+               return (char*)__s + ofs;
+       return NULL;
+}
+
 /**
  * \fn int strpos(const char *Str, char Ch)
  * \brief Search a string for an ascii character
@@ -688,7 +698,6 @@ int rand(void)
 
 void *memmove(void *__dest, const void *__src, size_t len)
 {
-       size_t  block_size;
        char    *dest = __dest;
        const char      *src = __src;
        void    *ret = __dest;
@@ -705,6 +714,8 @@ void *memmove(void *__dest, const void *__src, size_t len)
        if( (tVAddr)dest < (tVAddr)src )
                return memcpy(dest, src, len);
 
+       #if 0
+       size_t  block_size;
        if( (tVAddr)dest < (tVAddr)src )
                block_size = (tVAddr)src - (tVAddr)dest;
        else
@@ -721,6 +732,13 @@ void *memmove(void *__dest, const void *__src, size_t len)
        }
        memcpy(dest, src, len);
        return ret;
+       #else
+       for( int i = len; i--; )
+       {
+               dest[i] = src[i];
+       }
+       return ret;
+       #endif
        
 }
 
@@ -739,7 +757,7 @@ int CheckString(const char *String)
 
        addr = (tVAddr)String;
 
-       if( !MM_GetPhysAddr( addr ) )
+       if( !MM_GetPhysAddr( (void*)addr ) )
                return 0;
        
        // Check 1st page
@@ -751,7 +769,7 @@ int CheckString(const char *String)
                {
                        if(bUser && !MM_IsUser(addr) )
                                return 0;
-                       if(!bUser && !MM_GetPhysAddr(addr) )
+                       if(!bUser && !MM_GetPhysAddr((void*)addr) )
                                return 0;
                }
                addr ++;

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