diff --git a/libc/Makefile b/libc/Makefile index 72c32408..9e89d148 100644 --- a/libc/Makefile +++ b/libc/Makefile @@ -261,12 +261,13 @@ stdio/fdio.o \ stdio/fgetpos.o \ stdio/fileno.o \ stdio/fpipe.o \ +stdio/fprintf.o \ stdio/freopen.o \ stdio/fsetpos.o \ stdio/getc.o \ stdio/perror.o \ stdio/popen.o \ -stdio/print.o \ +stdio/printf.o \ stdio/putc.o \ stdio/removeat.o \ stdio/remove.o \ @@ -276,6 +277,8 @@ stdio/scanf.o \ stdio/stdio.o \ stdio/tmpfile.o \ stdio/tmpnam.o \ +stdio/vfprintf.o \ +stdio/vprintf.o \ stdio/vscanf.o \ stdlib/canonicalize_file_name_at.o \ stdlib/canonicalize_file_name.o \ diff --git a/libc/stdio/fprintf.cpp b/libc/stdio/fprintf.cpp new file mode 100644 index 00000000..c56c1645 --- /dev/null +++ b/libc/stdio/fprintf.cpp @@ -0,0 +1,35 @@ +/******************************************************************************* + + Copyright(C) Jonas 'Sortie' Termansen 2011, 2012, 2013. + + This file is part of the Sortix C Library. + + The Sortix C Library 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. + + The Sortix C Library 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 the Sortix C Library. If not, see . + + stdio/fprintf.cpp + Prints a string to a FILE. + +*******************************************************************************/ + +#include +#include + +extern "C" int fprintf(FILE* fp, const char* restrict format, ...) +{ + va_list list; + va_start(list, format); + int result = vfprintf(fp, format, list); + va_end(list); + return result; +} diff --git a/libc/stdio/printf.cpp b/libc/stdio/printf.cpp new file mode 100644 index 00000000..1e2d3cad --- /dev/null +++ b/libc/stdio/printf.cpp @@ -0,0 +1,35 @@ +/******************************************************************************* + + Copyright(C) Jonas 'Sortie' Termansen 2011, 2012, 2013. + + This file is part of the Sortix C Library. + + The Sortix C Library 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. + + The Sortix C Library 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 the Sortix C Library. If not, see . + + stdio/printf.cpp + Prints a string to stdout. + +*******************************************************************************/ + +#include +#include + +extern "C" int printf(const char* restrict format, ...) +{ + va_list list; + va_start(list, format); + int result = vprintf(format, list); + va_end(list); + return result; +} diff --git a/libc/stdio/print.cpp b/libc/stdio/vfprintf.cpp similarity index 59% rename from libc/stdio/print.cpp rename to libc/stdio/vfprintf.cpp index 3fb32e97..de293332 100644 --- a/libc/stdio/print.cpp +++ b/libc/stdio/vfprintf.cpp @@ -1,6 +1,6 @@ /******************************************************************************* - Copyright(C) Jonas 'Sortie' Termansen 2011, 2012. + Copyright(C) Jonas 'Sortie' Termansen 2011, 2012, 2013. This file is part of the Sortix C Library. @@ -17,50 +17,24 @@ You should have received a copy of the GNU Lesser General Public License along with the Sortix C Library. If not, see . - stdio/print.cpp - Provides the stubs for the printf family of functions. + stdio/vfprintf.cpp + Prints a string to a FILE. *******************************************************************************/ #include -#include #include -#include -#include +#include static size_t FileWriteCallback(void* user, const char* string, size_t stringlen) { - FILE* fp = (FILE*) user; - return fwrite(string, 1, stringlen, fp); + return fwrite(string, sizeof(char), stringlen, (FILE*) user); } -extern "C" int vfprintf(FILE* fp, const char* /*restrict*/ format, va_list list) +extern "C" int vfprintf(FILE* fp, const char* restrict format, va_list list) { size_t result = vprintf_callback(FileWriteCallback, fp, format, list); if ( result == SIZE_MAX ) return -1; return (int) result; } - -extern "C" int fprintf(FILE* fp, const char* /*restrict*/ format, ...) -{ - va_list list; - va_start(list, format); - int result = vfprintf(fp, format, list); - va_end(list); - return result; -} - -extern "C" int vprintf(const char* /*restrict*/ format, va_list list) -{ - return vfprintf(stdout, format, list); -} - -extern "C" int printf(const char* /*restrict*/ format, ...) -{ - va_list list; - va_start(list, format); - int result = vprintf(format, list); - va_end(list); - return result; -} diff --git a/libc/stdio/vprintf.cpp b/libc/stdio/vprintf.cpp new file mode 100644 index 00000000..3841863e --- /dev/null +++ b/libc/stdio/vprintf.cpp @@ -0,0 +1,31 @@ +/******************************************************************************* + + Copyright(C) Jonas 'Sortie' Termansen 2011, 2012, 2013. + + This file is part of the Sortix C Library. + + The Sortix C Library 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. + + The Sortix C Library 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 the Sortix C Library. If not, see . + + stdio/vprintf.cpp + Prints a string to stdout. + +*******************************************************************************/ + +#include +#include + +extern "C" int vprintf(const char* restrict format, va_list list) +{ + return vfprintf(stdout, format, list); +}