67de9b0295
Consistent style for curlies.
80 lines
1.8 KiB
C
80 lines
1.8 KiB
C
#include "debugprint.h"
|
|
#include "common.h"
|
|
#include "fs.h"
|
|
|
|
static File* gFile = NULL;
|
|
|
|
void Debug_initialize(const char* fileName) {
|
|
FileSystemNode* node = getFileSystemNode(fileName);
|
|
|
|
gFile = open_fs(node, 0);
|
|
}
|
|
|
|
void Debug_PrintF(const char *format, ...) {
|
|
char **arg = (char **) &format;
|
|
char c;
|
|
char buf[20];
|
|
char buffer[512];
|
|
|
|
int bufferIndex = 0;
|
|
|
|
//arg++;
|
|
__builtin_va_list vl;
|
|
__builtin_va_start(vl, format);
|
|
|
|
while ((c = *format++) != 0) {
|
|
if (bufferIndex > 510) {
|
|
break;
|
|
}
|
|
|
|
if (c != '%')
|
|
buffer[bufferIndex++] = c;
|
|
else {
|
|
char *p;
|
|
|
|
c = *format++;
|
|
switch (c) {
|
|
case 'x':
|
|
buf[0] = '0';
|
|
buf[1] = 'x';
|
|
//itoa (buf + 2, c, *((int *) arg++));
|
|
itoa (buf + 2, c, __builtin_va_arg(vl, int));
|
|
p = buf;
|
|
goto string;
|
|
break;
|
|
case 'd':
|
|
case 'u':
|
|
//itoa (buf, c, *((int *) arg++));
|
|
itoa (buf, c, __builtin_va_arg(vl, int));
|
|
p = buf;
|
|
goto string;
|
|
break;
|
|
|
|
case 's':
|
|
//p = *arg++;
|
|
p = __builtin_va_arg(vl, char*);
|
|
if (! p)
|
|
p = "(null)";
|
|
|
|
string:
|
|
while (*p)
|
|
buffer[bufferIndex++] = (*p++);
|
|
break;
|
|
|
|
default:
|
|
//buffer[bufferIndex++] = (*((int *) arg++));
|
|
buffer[bufferIndex++] = __builtin_va_arg(vl, int);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
buffer[bufferIndex] = '\0';
|
|
|
|
if (gFile) {
|
|
write_fs(gFile, strlen(buffer), (uint8*)buffer);
|
|
}
|
|
|
|
__builtin_va_end(vl);
|
|
}
|