sic_error.c

Go to the documentation of this file.
00001 
00002 #include "sic_error.h"
00003 
00004 #include <stdio.h>
00005 #include <errno.h>
00006 #include <stdlib.h>
00007 #include <string.h>
00008 #ifndef WIN32
00009 #include <unistd.h>
00010 #else
00011 #include "win32.h"
00012 #endif
00013 #include "sic_comm.h"
00014 
00015 #include "gag_trace.h"
00016 
00022 void sic_perror( const char *s)
00023 {
00024 #ifndef WIN32
00025     char *message = errno ? strerror( errno) : "unknown error";
00026 #else
00027     LPTSTR message;
00028 
00029     errno = GetLastError( );
00030 
00031     FormatMessage(
00032         FORMAT_MESSAGE_ALLOCATE_BUFFER | 
00033         FORMAT_MESSAGE_FROM_SYSTEM |
00034         FORMAT_MESSAGE_IGNORE_INSERTS,
00035         NULL,
00036         errno,
00037         MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
00038         (LPTSTR) &message,
00039         0, NULL );
00040 #endif
00041     gag_trace( "<error> %s: %s (%d)", s, message, errno);
00042     errno = 0;
00043     fprintf( stderr, "Error (pid %d), %s: %s\n", sic_get_current_task_id( ), s, message);
00044 #ifdef WIN32
00045     LocalFree( message);
00046 #endif
00047     sic_do_exit( 1);
00048 }
00049 
00055 void sic_pwarning( const char *s)
00056 {
00057     char *message = errno ? strerror( errno) : "unknown error";
00058     gag_trace( "<warning> %s: %s (%d)", s, message, errno);
00059     errno = 0;
00060     fprintf( stderr, "Warning (pid %d), %s: %s\n", sic_get_current_task_id( ), s, message);
00061 }
00062 

Generated on Tue Mar 13 15:15:40 2007 for SIC by  doxygen 1.5.1