7int strcmp(
const char* a,
const char* b) {
8 while(*a && *b && *a == *b) { a++; b++; }
14 if(c >=
'A' && c <=
'Z') {
15 return c - (
'A' -
'a');
42char*
strncpy(
char* dest,
const char* src,
size_t n) {
44 for(i = 0; i < n && src[i]; ++i) {
67 for(
size_t i = 0; i <
size; ++i) {
73 for(
size_t i = 0; i <
size; ++i) {
80void*
memcpy(
void* dest,
void const* source,
size_t size) {
84 for(
size_t i = 0; i <
size; ++i) {
91int memcmp(
const void* a,
const void* b,
size_t n) {
96 for(i = 0; i < n && _a[i] == _b[i]; ++i) {
103 return _a[i] - _b[i];
106void*
memmove(
void* dest,
const void* src,
size_t n) {
108 for(
size_t i = 0; i < n; ++i) {
113 for(
size_t i = n - 1; i >= 0; --i) {
121int sputs(
char* buffer,
int buffer_size,
char*
string,
int length) {
124 for(i = 0; i <
length; ++i) {
125 if(i < buffer_size) {
126 buffer[i] =
string[i];
133int sputls(
char* buffer,
int buffer_size,
wchar_t*
string,
int length) {
136 for(i = 0; i <
length && i < buffer_size; ++i) {
137 buffer[i] = (char)
string[i];
144 const char chars[] =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
150 char num_buffer[
size];
153 char c = chars[number %
base];
157 }
while(number && i >= 0 && count < buffer_size);
159 sputs(buffer, buffer_size, num_buffer + (
size - count), count);
164 const char chars[] =
"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
177 char num_buffer[
size];
180 char c = chars[number %
base];
184 }
while(number && i >= 0 && count < buffer_size);
186 sputs(buffer, buffer_size, num_buffer + (
size - count), count);
191 const char *prefixes =
" KMGT";
192 static const int div = 1024;
197 while(number / div >= 1 && prefix <
strlen(prefixes)) {
198 if((number / div) * div != number) {
212 len +=
sputi(buffer + len, buffer_size, number, 10);
214 if(prefix && len < buffer_size) {
215 buffer[len++] = prefixes[prefix];
227 bool placeholder =
false;
228 char placeholderChar =
' ';
230 char lengthModifier = 0;
235 placeholderChar =
' ';
242 if((minLength == 0 && c ==
'0') || c ==
' ') {
246 else if(c >=
'0' && c <=
'9') {
248 minLength += c -
'0';
257 size_t argSize = buffer_size - i;
258 char* argDestination = buffer + i;
260 if(minLength || !buffer) {
261 argSize =
sizeof(argBuffer);
262 argDestination = argBuffer;
263 memset((
void*)argBuffer, 0, argSize);
268 *argDestination =
va_arg(args,
int);
284 switch(lengthModifier) {
287 char* sarg =
va_arg(args,
char*);
293 wchar_t* lsarg =
va_arg(args,
wchar_t*);
301 argDestination[0] = c;
305 if(argDestination == argBuffer) {
306 while(
length < minLength) {
307 if(i < buffer_size) {
308 buffer[i] = placeholderChar;
314 sputs(buffer + i, buffer_size - i, argBuffer,
length);
323 if(i < buffer_size) {
330 if(i < buffer_size) {
332 }
else if(buffer_size) {
333 buffer[buffer_size-1] = 0;
size_t strlen(const char *str)
int strcmp(const char *a, const char *b)
int sputui(char *buffer, int buffer_size, uint64_t number, int base)
void * memcpy(void *dest, void const *source, size_t size)
void * memmove(void *dest, const void *src, size_t n)
int sputls(char *buffer, int buffer_size, wchar_t *string, int length)
int strcasecmp(const char *a, const char *b)
int sputbytes(char *buffer, int buffer_size, int64_t number)
char tolower(const char c)
void * memset(void *dest, int c, size_t size)
size_t ksnprintf(char *buffer, size_t buffer_size, const char *format,...)
int memcmp(const void *a, const void *b, size_t n)
int sputi(char *buffer, int buffer_size, int64_t number, int base)
void memset32(uint32_t *dest, uint32_t c, size_t size)
char * strncpy(char *dest, const char *src, size_t n)
int sputs(char *buffer, int buffer_size, char *string, int length)
size_t wcslen(const wchar_t *str)
size_t kvsnprintf(char *buffer, size_t buffer_size, const char *format, va_list args)
uint16_t size
Size of the loaded file.
__builtin_va_list va_list