src/vapiString.c

Ir para a documentação deste ficheiro.
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  * Windows não suporta o vasprintf, então teos que o criar.
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) // _vscprintf doesn't count
00027                 + 1;            // terminating '\0'
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 }

Gerado em Tue Jul 24 10:34:59 2007 para Vapi por  doxygen 1.5.1