00001 #define _GNU_SOURCE
00002 #include <stdio.h>
00003 #include <string.h>
00004 #include <stdarg.h>
00005 #ifndef VAPI_WITHOUT_INTERFACE
00006 #include "vapiGtkAux.h"
00007 #include "vapiGtkMessages.h"
00008 #include "vapiGtkAuxWindow.h"
00009
00010 #endif
00011 #ifndef VAPI_OS_LINUX
00012 #define vasprintf vsprintf
00013 #endif
00014
00015 #ifndef VAPI_OS_LINUX
00016
00017
00018
00019 void
00020 v_vasprintf (char **buffer, const char *format,
00021 va_list args)
00022 {
00023 int len;
00024
00025
00026 len = _vscprintf (format, args)
00027 + 1;
00028 *buffer = malloc (len * sizeof (char));
00029
00030 vsprintf (*buffer, format, args);
00031 }
00032 #else
00033 #define v_vasprintf vasprintf
00034 #endif
00035
00036
00037 char *
00038 v_printf (const char *fmt, ...)
00039 {
00040 char *result;
00041
00042 va_list args;
00043
00044 va_start (args, fmt);
00045 v_vasprintf (&result, fmt, args);
00046 va_end (args);
00047
00048 return result;
00049
00050 }
00051
00052 static void
00053 v_message (const char *Message, int type, va_list args)
00054 {
00055 char *finalString, *tempMessage;
00056
00057 v_vasprintf (&tempMessage, Message, args);
00058 switch (type)
00059 {
00060 case v_INFO:
00061 {
00062 finalString = v_printf ("INFO: %s", tempMessage);
00063 }
00064 break;
00065
00066 case v_ERROR:
00067 {
00068 finalString = v_printf ("ERRO: %s", tempMessage);
00069 }
00070 break;
00071 case v_ERROR_UI:
00072 {
00073 finalString = v_printf ("ERRO: %s", tempMessage);
00074 #ifndef VAPI_WITHOUT_INTERFACE
00075 vapiGtkErrorDialogSetMessage (finalString);
00076 #endif
00077 }
00078 break;
00079 case v_SUCCESS:
00080 {
00081 finalString = v_printf ("SUCESSO: %s", Message);
00082 }
00083 break;
00084 case v_DEBUG:
00085 {
00086 finalString = v_printf ("DEBUG: %s", tempMessage);
00087 }
00088 break;
00089
00090 default:
00091 finalString = v_printf (" ");
00092 break;
00093 }
00094 printf ("%s\n", finalString);
00095 #ifndef VAPI_WITHOUT_INTERFACE
00096 free(tempMessage);
00097 tempMessage = v_printf("%s\n", finalString);
00098 vapiGtkWriteMessage (tempMessage, type);
00099 #endif
00100 free (finalString);
00101 free (tempMessage);
00102 }
00103
00104 void
00105 v_info (const char *fmt, ...)
00106 {
00107 va_list args;
00108 va_start (args, fmt);
00109 v_message (fmt, v_INFO, args);
00110 va_end (args);
00111 }
00112
00113 void
00114 v_error (const char *fmt, ...)
00115 {
00116 va_list args;
00117 va_start (args, fmt);
00118 v_message (fmt, v_ERROR, args);
00119 va_end (args);
00120 }
00121
00122 void
00123 v_success (const char *fmt, ...)
00124 {
00125 va_list args;
00126 va_start (args, fmt);
00127 v_message (fmt, v_SUCCESS, args);
00128 va_end (args);
00129 }
00130
00131 void
00132 v_debug (const char *fmt, ...)
00133 {
00134 va_list args;
00135 va_start (args, fmt);
00136 #ifdef DEBUG_LEVEL_0
00137 v_message (fmt, v_DEBUG, args);
00138 #endif
00139 va_end (args);
00140 }
00141
00142 void
00143 v_error_ui (const char *fmt, ...)
00144 {
00145 va_list args;
00146 va_start (args, fmt);
00147 v_message (fmt, v_ERROR_UI, args);
00148 va_end (args);
00149 }