* src/vm/os.hpp: Added vfprintf wrapper
removed fprintf wrapper, but kept the availability check
* configure.ac: Added vfprintf linker check
* src/toolbox/logging.cpp: using os::vfprintf
* src/vm/vm.cpp: version
Due to a compatibility check of clang 2.7, the decision was made to define that fprintf is mandatory for cacao
AC_CHECK_FUNCS([fflush])
AC_CHECK_FUNCS([fopen])
AC_CHECK_FUNCS([fprintf])
AC_CHECK_FUNCS([fflush])
AC_CHECK_FUNCS([fopen])
AC_CHECK_FUNCS([fprintf])
+AC_CHECK_FUNCS([vfprintf])
AC_CHECK_FUNCS([fread])
AC_CHECK_FUNCS([free])
AC_CHECK_FUNCS([fstat])
AC_CHECK_FUNCS([fread])
AC_CHECK_FUNCS([free])
AC_CHECK_FUNCS([fstat])
void log_vprint(const char *text, va_list ap)
{
if (logfile)
void log_vprint(const char *text, va_list ap)
{
if (logfile)
- vfprintf(logfile, text, ap);
+ os::vfprintf(logfile, text, ap);
- vfprintf(stdout, text, ap);
+ os::vfprintf(stdout, text, ap);
/* src/vm/os.hpp - system (OS) functions
/* src/vm/os.hpp - system (OS) functions
- Copyright (C) 2007, 2008, 2009, 2010
+ Copyright (C) 2007, 2008, 2009, 2010, 2011
CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
Copyright (C) 2008 Theobroma Systems Ltd.
CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
Copyright (C) 2008 Theobroma Systems Ltd.
static inline void* dlsym(void* handle, const char* symbol);
static inline int fclose(FILE* fp);
static inline FILE* fopen(const char* path, const char* mode);
static inline void* dlsym(void* handle, const char* symbol);
static inline int fclose(FILE* fp);
static inline FILE* fopen(const char* path, const char* mode);
- static inline int fprintf(FILE* stream, const char* format, ...);
+ static inline int vfprintf ( FILE * stream, const char * format, va_list arg );
static inline size_t fread(void* ptr, size_t size, size_t nmemb, FILE* stream);
static inline void free(void* ptr);
static inline char* getcwd(char* buf, size_t size);
static inline size_t fread(void* ptr, size_t size, size_t nmemb, FILE* stream);
static inline void free(void* ptr);
static inline char* getcwd(char* buf, size_t size);
-inline int os::fprintf(FILE* stream, const char* format, ...)
+//fprintf is mandatory and can't be replaced with an equivalent fast wrapper
+#if !defined (HAVE_FPRINTF)
+#error fprintf not available
+#endif
+
+inline int os::vfprintf ( FILE * stream, const char * format, va_list arg )
-#if defined(HAVE_FPRINTF)
- va_list ap;
- va_start(ap, format);
- int result = ::vfprintf(stream, format, ap);
- va_end(ap);
+#if defined(HAVE_VFPRINTF)
+ int result = ::vfprintf(stream, format, arg);
-# error fprintf not available
+# error vfrpintf not available
puts("java version \""JAVA_VERSION"\"");
puts("CACAO version "VERSION_FULL"\n");
puts("java version \""JAVA_VERSION"\"");
puts("CACAO version "VERSION_FULL"\n");
- puts("Copyright (C) 1996-2005, 2006, 2007, 2008, 2009, 2010");
+ puts("Copyright (C) 1996-2005, 2006, 2007, 2008, 2009, 2010, 2011");
puts("CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO");
puts("This is free software; see the source for copying conditions. There is NO");
puts("warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.");
puts("CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO");
puts("This is free software; see the source for copying conditions. There is NO");
puts("warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.");