/*
gutenfetch - a small utility to list and fetch books available through
project gutenberg
Copyright (C) 2001, 2002, 2003 Russell Francis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the
Free Software Foundation, Inc.
59 Temple Place, Suite 330
Boston, MA 02111-1307 USA
Last updated on $Date: 2004/03/21 05:14:13 $ by $Author: johntabularasa $.
*/
#include "stddefs.h"
#include "libgutenfetch_error.h"
#ifdef HAVE_STRING_H
# include <string.h>
#endif
#ifdef HAVE_STRINGS_H
# include <strings.h>
#endif
#ifdef HAVE_STDIO_H
# include <stdio.h>
#endif
#ifdef HAVE_ERRNO_H
# include <errno.h>
#endif
#ifdef HAVE_STDLIB_H
# include <stdlib.h>
#endif
static char *error_messages[NUM_OF_ERRORS];
/**
* Initialize internal variables of the error code.
*
* This function builds a table of error strings, to be
* used later if something bad should happen.
*/
void
gutenfetch_error_init(void)
{
error_messages[GUTENFETCH_OK] =
(char*)_("The operation was successful.");
error_messages[GUTENFETCH_UNRECOGNIZED_ERROR] =
(char*)_("The error code is unrecognized.");
error_messages[GUTENFETCH_SEE_ERRNO] = (char*)"";
error_messages[GUTENFETCH_NOMEM] =
(char*)_("Memory allocation failure.");
error_messages[GUTENFETCH_CURL_GLOBAL_INIT_FAILED] =
(char*)_("The global initialization of CURL failed.");
error_messages[GUTENFETCH_CURL_PERFORM_FAILED] =
(char*)_("CURL was unable to perform the requested file transfer.");
error_messages[GUTENFETCH_CURL_GET_HANDLE_FAILED] =
(char*)_("An attempt to get a CURL handle has failed.");
error_messages[GUTENFETCH_BAD_PARAM] =
(char*)_("A bad parameter has been passed to an internal function.");
error_messages[GUTENFETCH_NO_ACTIVE_SERVER] =
(char*)_("There is no currently active gutenfetch server.");
error_messages[GUTENFETCH_UNABLE_TO_DETAIL_LISTING] =
(char*)_("Unable to detail the ebook listings.");
error_messages[GUTENFETCH_UNABLE_TO_INIT_CACHE] =
(char *)_("Unable to initialize the cache directory.");
}
/**
* Release the resources used by the error code.
*/
void
gutenfetch_error_shutdown(void)
{
}
/**
* Convert a gutenfetch_error_t code into a human readable string.
*
* @param error_code The numeric representation of the error.
* @return A NULL-terminated human-readable error string.
*/
const char *
gutenfetch_error_to_string(gutenfetch_error_t error_code)
{
char *errmsg = NULL;
switch (error_code) {
case GUTENFETCH_SEE_ERRNO:
errmsg = strerror(errno);
break;
case GUTENFETCH_BAD_PARAM:
case GUTENFETCH_NOMEM:
case GUTENFETCH_CURL_GLOBAL_INIT_FAILED:
case GUTENFETCH_CURL_GET_HANDLE_FAILED:
case GUTENFETCH_CURL_PERFORM_FAILED:
case GUTENFETCH_NO_ACTIVE_SERVER:
case GUTENFETCH_UNABLE_TO_DETAIL_LISTING:
case GUTENFETCH_UNABLE_TO_INIT_CACHE:
case GUTENFETCH_OK:
errmsg = error_messages[error_code];
break;
case GUTENFETCH_UNRECOGNIZED_ERROR:
default:
errmsg = error_messages[GUTENFETCH_UNRECOGNIZED_ERROR];
break;
}
return errmsg;
}
syntax highlighted by Code2HTML, v. 0.9.1