X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Fld-acess.so_src%2Flib.c;h=150ae77cff61812d0748f77f5d38ae393ac9c308;hb=11686aa86bc0adae2555aa7796fe229770bb02f7;hp=0d01dc2ae6a836cb9815ead6176abd291279ea53;hpb=05e8ae6b8fd960b2d9d3dafb34263fe7bd1cb90b;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/ld-acess.so_src/lib.c b/Usermode/Libraries/ld-acess.so_src/lib.c index 0d01dc2a..150ae77c 100644 --- a/Usermode/Libraries/ld-acess.so_src/lib.c +++ b/Usermode/Libraries/ld-acess.so_src/lib.c @@ -1,30 +1,101 @@ -/* - AcessOS 1 - Dynamic Loader - By thePowersGang -*/ -#include "common.h" - -// === CODE === -void strcpy(char *dest, char *src) -{ - while(*src) { - *dest = *src; - src ++; dest ++; - } - *dest = '\0'; +/* + AcessOS 1 + Dynamic Loader + By thePowersGang +*/ +#include "common.h" +#include + +// === CODE === +char *strcpy(char *dest, const char *src) +{ + char *ret = dest; + while(*src) { + *dest = *src; + src ++; dest ++; + } + *dest = '\0'; + return ret; +} + +char *strcat(char *dest, const char *src) +{ + char *ret = dest; + while(*dest) dest++; + while(*src) *dest++ = *src++; + *dest = '\0'; + return ret; } -int strcmp(char *s1, char *s2) +/** + * \fn int strcmp(const char *s1, const char *s2) + * \brief Compare two strings + */ +int strcmp(const char *s1, const char *s2) { while(*s1 && *s1 == *s2) s1++,s2++; return *s1-*s2; -} - -int strlen(char *str) -{ - int len = 0; - while(*str) len++,str++; - return len; +} + +/** + * \fn int strlen(const char *str) + * \brief + */ +int strlen(const char *str) +{ + int len = 0; + while(*str) len++,str++; + return len; +} + +int memcmp(const void *p1, const void *p2, int len) +{ + const char *b1 = p1, *b2 = p2; + while(len --) + { + if(b1 != b2) return b1 - b2; + } + return 0; +} + +/** + * \fn int file_exists(char *filename) + * \brief Checks if a file exists + */ +int file_exists(const char *filename) +{ + int fd; + //fd = open(filename, OPENFLAG_READ); + fd = open(filename, 0); + if(fd == -1) return 0; + close(fd); + return 1; +} + +uint64_t __udivdi3(uint64_t Num, uint64_t Den) +{ + uint64_t ret = 0, add = 1; + + // Find what power of two times Den is > Num + while( Num >= Den ) + { + Den <<= 1; + add <<= 1; + } + + // Search backwards + while( add > 1 ) + { + add >>= 1; + Den >>= 1; + // If the numerator is > Den, subtract and add to return value + if( Num > Den ) + { + ret += add; + Num -= Den; + } + } +// if(Rem) *Rem = Num; + return ret; }