git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Kernel/x86_64 - Debugging
[tpg/acess2.git]
/
KernelLand
/
Kernel
/
libc.c
diff --git
a/KernelLand/Kernel/libc.c
b/KernelLand/Kernel/libc.c
index
7a7cc05
..
1b6f371
100644
(file)
--- a/
KernelLand/Kernel/libc.c
+++ b/
KernelLand/Kernel/libc.c
@@
-49,6
+49,7
@@
EXPORT(tolower);
EXPORT(strucmp);
EXPORT(strchr);
EXPORT(strucmp);
EXPORT(strchr);
+EXPORT(strrchr);
EXPORT(strpos);
EXPORT(strlen);
EXPORT(strcpy);
EXPORT(strpos);
EXPORT(strlen);
EXPORT(strcpy);
@@
-183,7
+184,14
@@
void itoa(char *buf, Uint64 num, int base, int minLength, char pad)
/**
* \brief Append a character the the vsnprintf output
*/
/**
* \brief Append a character the the vsnprintf output
*/
-#define PUTCH(c) _putch(c)
+#define PUTCH(ch) do { \
+ if(pos < __maxlen) { \
+ if(__s) __s[pos] = ch; \
+ } else { \
+ (void)ch;\
+ } \
+ pos ++; \
+ } while(0)
#define GETVAL() do {\
if(isLongLong) val = va_arg(args, Uint64);\
else val = va_arg(args, unsigned int);\
#define GETVAL() do {\
if(isLongLong) val = va_arg(args, Uint64);\
else val = va_arg(args, unsigned int);\
@@
-202,17
+210,6
@@
int vsnprintf(char *__s, size_t __maxlen, const char *__format, va_list args)
size_t pos = 0;
// Flags
int bPadLeft = 0;
size_t pos = 0;
// Flags
int bPadLeft = 0;
-
- auto void _putch(char ch);
-
- void _putch(char ch)
- {
- if(pos < __maxlen)
- {
- if(__s) __s[pos] = ch;
- }
- pos ++;
- }
while((c = *__format++) != 0)
{
while((c = *__format++) != 0)
{
@@
-529,6
+526,15
@@
char *strchr(const char *__s, int __c)
return NULL;
}
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
/**
* \fn int strpos(const char *Str, char Ch)
* \brief Search a string for an ascii character
@@
-688,7
+694,6
@@
int rand(void)
void *memmove(void *__dest, const void *__src, size_t len)
{
void *memmove(void *__dest, const void *__src, size_t len)
{
- size_t block_size;
char *dest = __dest;
const char *src = __src;
void *ret = __dest;
char *dest = __dest;
const char *src = __src;
void *ret = __dest;
@@
-705,6
+710,8
@@
void *memmove(void *__dest, const void *__src, size_t len)
if( (tVAddr)dest < (tVAddr)src )
return memcpy(dest, src, 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
if( (tVAddr)dest < (tVAddr)src )
block_size = (tVAddr)src - (tVAddr)dest;
else
@@
-721,6
+728,13
@@
void *memmove(void *__dest, const void *__src, size_t len)
}
memcpy(dest, src, len);
return ret;
}
memcpy(dest, src, len);
return ret;
+ #else
+ for( int i = len; i--; )
+ {
+ dest[i] = src[i];
+ }
+ return ret;
+ #endif
}
}
UCC
git Repository :: git.ucc.asn.au