diff --git a/libmaxsi/format.cpp b/libmaxsi/format.cpp index a31363af..d6eca29d 100644 --- a/libmaxsi/format.cpp +++ b/libmaxsi/format.cpp @@ -24,7 +24,7 @@ #include #include -#include +#include namespace Maxsi { @@ -168,7 +168,10 @@ namespace Maxsi if ( 0 < readylen && callback && callback(user, ready, readylen) != readylen ) { return SIZE_MAX; } \ written += readylen; readylen = 0; - size_t Virtual(Callback callback, void* user, const char* format, va_list parameters) + extern "C" size_t vprintf_callback(size_t (*callback)(void*, const char*, size_t), + void* user, + const char* restrict format, + va_list parameters) { size_t written = 0; size_t readylen = 0; diff --git a/libmaxsi/include/libmaxsi/format.h b/libmaxsi/include/libmaxsi/format.h deleted file mode 100644 index ac8c8055..00000000 --- a/libmaxsi/include/libmaxsi/format.h +++ /dev/null @@ -1,39 +0,0 @@ -/****************************************************************************** - - COPYRIGHT(C) JONAS 'SORTIE' TERMANSEN 2011. - - This file is part of LibMaxsi. - - LibMaxsi is free software: you can redistribute it and/or modify it under - the terms of the GNU Lesser General Public License as published by the Free - Software Foundation, either version 3 of the License, or (at your option) - any later version. - - LibMaxsi is distributed in the hope that it will be useful, but WITHOUT ANY - WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for - more details. - - You should have received a copy of the GNU Lesser General Public License - along with LibMaxsi. If not, see . - - format.h - Provides printf formatting functions that uses callbacks. - -******************************************************************************/ - -#ifndef LIBMAXSI_FORMAT_H -#define LIBMAXSI_FORMAT_H - -namespace Maxsi -{ - namespace Format - { - typedef size_t (*Callback)(void* user, const char* string, size_t stringlen); - - size_t Virtual(Callback callback, void* user, const char* format, va_list parameters); - } -} - -#endif - diff --git a/libmaxsi/include/stdio.h b/libmaxsi/include/stdio.h index cf787a52..5ae8179f 100644 --- a/libmaxsi/include/stdio.h +++ b/libmaxsi/include/stdio.h @@ -180,6 +180,13 @@ extern char* gets(void) asm ("sortix_gets"); /* traditional gets(3) is no longer POSIX, hence removed. */ #endif +#if defined(_SORTIX_SOURCE) || defined(_WANT_SORTIX_VPRINTF_CALLBACK) +extern size_t vprintf_callback(size_t (*callback)(void*, const char*, size_t), + void* user, + const char* restrict format, + __gnuc_va_list ap); +#endif + __END_DECLS #endif diff --git a/libmaxsi/print.cpp b/libmaxsi/print.cpp index fe5a391f..1fd177de 100644 --- a/libmaxsi/print.cpp +++ b/libmaxsi/print.cpp @@ -22,15 +22,11 @@ *******************************************************************************/ -#include -#include #include #include #include #include -namespace Maxsi { - static size_t FileWriteCallback(void* user, const char* string, size_t stringlen) { FILE* fp = (FILE*) user; @@ -39,7 +35,7 @@ static size_t FileWriteCallback(void* user, const char* string, size_t stringlen extern "C" int vfprintf(FILE* fp, const char* /*restrict*/ format, va_list list) { - size_t result = Maxsi::Format::Virtual(FileWriteCallback, fp, format, list); + size_t result = vprintf_callback(FileWriteCallback, fp, format, list); return (int) result; } @@ -96,7 +92,7 @@ extern "C" int vsnprintf(char* restrict str, size_t size, const char* restrict f info.size = (size) ? size-1 : 0; info.produced = 0; info.written = 0; - Maxsi::Format::Virtual(StringPrintCallback, &info, format, list); + vprintf_callback(StringPrintCallback, &info, format, list); if ( size ) { info.str[info.written] = '\0'; } return (int) info.produced; } @@ -123,5 +119,3 @@ extern "C" int sprintf(char* restrict str, const char* restrict format, ...) va_end(list); return result; } - -} // namespace Maxsi diff --git a/sortix/elf.cpp b/sortix/elf.cpp index ea8759a6..0a9c2e21 100644 --- a/sortix/elf.cpp +++ b/sortix/elf.cpp @@ -32,8 +32,6 @@ #include #include "process.h" -using namespace Maxsi; - namespace Sortix { namespace ELF diff --git a/sortix/include/sortix/kernel/log.h b/sortix/include/sortix/kernel/log.h index d29e030a..598c57b1 100644 --- a/sortix/include/sortix/kernel/log.h +++ b/sortix/include/sortix/kernel/log.h @@ -25,19 +25,19 @@ #ifndef SORTIX_LOG_H #define SORTIX_LOG_H -#include -#include +#include +#include namespace Sortix { namespace Log { - extern Maxsi::Format::Callback deviceCallback; + extern size_t (*deviceCallback)(void*, const char*, size_t); extern size_t (*deviceWidth)(void*); extern size_t (*deviceHeight)(void*); extern void* devicePointer; - void Init(Maxsi::Format::Callback callback, + void Init(size_t (*callback)(void*, const char*, size_t), size_t (*widthfunc)(void*), size_t (*heightfunc)(void*), void* user); @@ -59,9 +59,8 @@ namespace Sortix inline size_t Print(const char* str) { - using namespace Maxsi; if ( !deviceCallback ) { return 0; } - return deviceCallback(devicePointer, str, String::Length(str)); + return deviceCallback(devicePointer, str, strlen(str)); } inline size_t PrintData(const void* ptr, size_t size) @@ -72,18 +71,16 @@ namespace Sortix inline size_t PrintF(const char* format, ...) { - using namespace Maxsi; va_list list; va_start(list, format); - size_t result = Format::Virtual(deviceCallback, devicePointer, format, list); + size_t result = vprintf_callback(deviceCallback, devicePointer, format, list); va_end(list); return result; } inline size_t PrintFV(const char* format, va_list list) { - using namespace Maxsi; - return Format::Virtual(deviceCallback, devicePointer, format, list); + return vprintf_callback(deviceCallback, devicePointer, format, list); } } } diff --git a/sortix/io.cpp b/sortix/io.cpp index 916a300c..d4b56373 100644 --- a/sortix/io.cpp +++ b/sortix/io.cpp @@ -33,8 +33,6 @@ #include "syscall.h" #include "io.h" -using namespace Maxsi; - namespace Sortix { namespace IO diff --git a/sortix/log.cpp b/sortix/log.cpp index 4b13e9c8..2f54efe5 100644 --- a/sortix/log.cpp +++ b/sortix/log.cpp @@ -34,7 +34,7 @@ namespace Sortix { namespace Log { - Maxsi::Format::Callback deviceCallback = NULL; + size_t (*deviceCallback)(void*, const char*, size_t) = NULL; size_t (*deviceWidth)(void*) = NULL; size_t (*deviceHeight)(void*) = NULL; void* devicePointer = NULL; @@ -46,7 +46,7 @@ namespace Sortix return Print(str); } - void Init(Maxsi::Format::Callback callback, + void Init(size_t (*callback)(void*, const char*, size_t), size_t (*widthfunc)(void*), size_t (*heightfunc)(void*), void* user) diff --git a/sortix/logterminal.cpp b/sortix/logterminal.cpp index 841f68ee..454bde0c 100644 --- a/sortix/logterminal.cpp +++ b/sortix/logterminal.cpp @@ -34,8 +34,6 @@ #include "terminal.h" #include "logterminal.h" -using namespace Maxsi; - namespace Sortix { const unsigned SUPPORTED_MODES = TERMMODE_KBKEY diff --git a/sortix/syscall.cpp b/sortix/syscall.cpp index 02e07edd..926d6703 100644 --- a/sortix/syscall.cpp +++ b/sortix/syscall.cpp @@ -30,8 +30,6 @@ #include "thread.h" #include "scheduler.h" -using namespace Maxsi; - namespace Sortix { namespace Syscall diff --git a/sortix/terminal.cpp b/sortix/terminal.cpp index ec04d7c0..a06eeb18 100644 --- a/sortix/terminal.cpp +++ b/sortix/terminal.cpp @@ -29,8 +29,6 @@ #include "process.h" #include "terminal.h" -using namespace Maxsi; - namespace Sortix { int SysSetTermMode(int fd, unsigned mode) diff --git a/sortix/utf8.cpp b/sortix/utf8.cpp index 2423e021..f7f07791 100644 --- a/sortix/utf8.cpp +++ b/sortix/utf8.cpp @@ -26,8 +26,6 @@ #include #include "utf8.h" -using namespace Maxsi; - namespace Sortix { namespace UTF8 diff --git a/sortix/x86-family/gdt.cpp b/sortix/x86-family/gdt.cpp index ccad9a8b..12dc797c 100644 --- a/sortix/x86-family/gdt.cpp +++ b/sortix/x86-family/gdt.cpp @@ -26,8 +26,6 @@ #include #include "gdt.h" -using namespace Maxsi; - namespace Sortix { namespace GDT diff --git a/sortix/x86-family/idt.cpp b/sortix/x86-family/idt.cpp index 582d68ab..f8846706 100644 --- a/sortix/x86-family/idt.cpp +++ b/sortix/x86-family/idt.cpp @@ -26,8 +26,6 @@ #include #include "idt.h" -using namespace Maxsi; - namespace Sortix { namespace IDT diff --git a/sortix/x86-family/memorymanagement.cpp b/sortix/x86-family/memorymanagement.cpp index 2632b036..a8352a10 100644 --- a/sortix/x86-family/memorymanagement.cpp +++ b/sortix/x86-family/memorymanagement.cpp @@ -35,8 +35,6 @@ #include "syscall.h" #include "msr.h" -using namespace Maxsi; - namespace Sortix { extern size_t end;