~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/errmsg.cc

  • Committer: Brian Aker
  • Date: 2009-04-13 16:22:40 UTC
  • mfrom: (971.1.78 mordred)
  • Revision ID: brian@gaz-20090413162240-ugi3gvhofmcuglzl
Merge Monty

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
#include <drizzled/server_includes.h>
21
21
#include <drizzled/errmsg.h>
22
22
#include <drizzled/gettext.h>
 
23
#include "drizzled/plugin_registry.h"
 
24
 
23
25
#include <vector>
24
26
 
25
27
using namespace std;
28
30
 
29
31
static bool errmsg_has= false;
30
32
 
31
 
static void add_errmsg_handler(Error_message_handler *handler)
 
33
void add_errmsg_handler(Error_message_handler *handler)
32
34
{
33
35
  all_errmsg_handler.push_back(handler);
 
36
  errmsg_has= true;
34
37
}
35
38
 
36
 
static void remove_errmsg_handler(Error_message_handler *handler)
 
39
void remove_errmsg_handler(Error_message_handler *handler)
37
40
{
38
41
  all_errmsg_handler.erase(find(all_errmsg_handler.begin(),
39
42
                                all_errmsg_handler.end(), handler));
40
43
}
41
44
 
42
 
int errmsg_initializer(st_plugin_int *plugin)
43
 
{
44
 
  Error_message_handler *p;
45
 
 
46
 
  if (plugin->plugin->init)
47
 
  {
48
 
    if (plugin->plugin->init(&p))
49
 
    {
50
 
      /* we're doing the errmsg plugin api,
51
 
        so we can't trust the errmsg api to emit our error messages
52
 
        so we will emit error messages to stderr */
53
 
      /* TRANSLATORS: The leading word "errmsg" is the name
54
 
        of the plugin api, and so should not be translated. */
55
 
      fprintf(stderr,
56
 
              _("errmsg plugin '%s' init() failed."),
57
 
              plugin->name.str);
58
 
      return 1;
59
 
    }
60
 
  }
61
 
 
62
 
  add_errmsg_handler(p);
63
 
  plugin->data= p;
64
 
  errmsg_has= true;
65
 
 
66
 
  return 0;
67
 
 
68
 
}
69
 
 
70
 
int errmsg_finalizer(st_plugin_int *plugin)
71
 
{
72
 
  Error_message_handler *p= static_cast<Error_message_handler *>(plugin->data);
73
 
 
74
 
  remove_errmsg_handler(p);
75
 
  if (plugin->plugin->deinit)
76
 
  {
77
 
    if (plugin->plugin->deinit(p))
78
 
    {
79
 
      /* we're doing the errmsg plugin api,
80
 
         so we can't trust the errmsg api to emit our error messages
81
 
         so we will emit error messages to stderr */
82
 
      /* TRANSLATORS: The leading word "errmsg" is the name
83
 
         of the plugin api, and so should not be translated. */
84
 
      fprintf(stderr,
85
 
              _("errmsg plugin '%s' deinit() failed."),
86
 
              plugin->name.str);
87
 
    }
88
 
  }
89
 
 
90
 
  return 0;
91
 
}
92
 
 
93
45
 
94
46
class ErrorMessagePrint : public unary_function<Error_message_handler *, bool>
95
47
{