00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include <config.h>
00026
00027 #include <drizzled/definitions.h>
00028 #include <drizzled/errmsg_print.h>
00029 #include <drizzled/plugin/error_message.h>
00030
00031 #include <cerrno>
00032 #include <cstring>
00033
00034 namespace drizzled
00035 {
00036
00037 void sql_perror(const char *message)
00038 {
00039 char *errmsg_ptr;
00040 char errmsg[STRERROR_MAX];
00041 errmsg[0]= 0;
00042
00043 #ifdef STRERROR_R_CHAR_P
00044 errmsg_ptr= strerror_r(errno, errmsg, sizeof(errmsg));
00045 #else
00046 strerror_r(errno, errmsg, sizeof(errmsg));
00047 errmsg_ptr= errmsg;
00048 #endif
00049
00050 errmsg_printf(error::ERROR, "%s: %s\n", message, errmsg);
00051
00052 }
00053
00054
00055 void sql_perror(const std::string &message)
00056 {
00057 static std::string empty;
00058 sql_perror(message, empty);
00059 }
00060
00061
00062 void sql_perror(std::string message, const std::string &extra)
00063 {
00064 char *errmsg_ptr;
00065 char errmsg[STRERROR_MAX];
00066 errmsg[0]= 0;
00067
00068 #ifdef STRERROR_R_CHAR_P
00069 errmsg_ptr= strerror_r(errno, errmsg, sizeof(errmsg));
00070 #else
00071 strerror_r(errno, errmsg, sizeof(errmsg));
00072 errmsg_ptr= errmsg;
00073 #endif
00074
00075 if (not extra.empty())
00076 {
00077 if (message.at(message.size()) != ' ')
00078 message+= " ";
00079
00080 message+= "'";
00081 message+= extra;
00082 message+= "'";
00083 }
00084
00085 errmsg_printf(error::ERROR, "%s: %s\n", message.c_str(), errmsg);
00086 }
00087
00088 bool errmsg_printf (error::level_t priority, char const *format, ...)
00089 {
00090 bool rv;
00091 va_list args;
00092 va_start(args, format);
00093 rv= plugin::ErrorMessage::vprintf(priority, format, args);
00094 va_end(args);
00095 return rv;
00096 }
00097
00098 }