00001 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 #include "config.h"
00036 
00037 #include <assert.h>
00038 
00039 #include <discover/discover.h>
00040 #include <discover/discover-xml.h>
00041 
00042 #include <discover/utils.h>
00043 
00044 static char *discover_errlist[] = {
00045     N_("Success."),
00046     N_("Input/output error."),
00047     N_("XML parsing error."),
00048     N_("System error."),
00049     N_("Disabled bus."),
00050     N_("Bus not found."),
00051     N_("Data source not found."),
00052     N_("Device not found."),
00053     N_("Invalid version range."),
00054     N_("Not implemented.")
00055 };
00056 static int
00057 discover_nerr = sizeof(discover_errlist) / sizeof(discover_errlist[0]);
00058 
00067 discover_error_t *
00068 discover_error_new(void)
00069 {
00070     discover_error_t *status = _discover_xmalloc(sizeof(discover_error_t));
00071     status->code = 0;
00072     status->message = NULL;
00073     status->create_message = _discover_create_message;
00074     return status;
00075 }
00076 
00081 void *
00082 _discover_create_message(discover_error_t **status, char *message)
00083 {
00084     if((*status)->message) {
00085         free((*status)->message);
00086     }
00087     (*status)->message = _discover_xmalloc(strlen(message) + 1);
00088     strcpy((*status)->message, message);
00089 }
00090 
00094 void
00095 discover_error_free(discover_error_t *status)
00096 {
00097     assert(status != NULL);
00098     if (status->message != NULL) {
00099         free(status->message);
00100     }
00101     free(status);
00102 }
00103 
00110 char *
00111 discover_strerror(discover_error_t *err)
00112 {
00113     assert(err != NULL);
00114     assert(err->code >= 0);
00115     assert(err->code < discover_nerr);
00116 
00117     return _(discover_errlist[err->code]);
00118 }
00119 
00123 int
00124 discover_major_version(void)
00125 {
00126     return PACKAGE_MAJOR;
00127 }
00128 
00132 int
00133 discover_minor_version(void)
00134 {
00135     return PACKAGE_MINOR;
00136 }
00137 
00141 int
00142 discover_micro_version(void)
00143 {
00144     return PACKAGE_MICRO;
00145 }
00146