From 362fbc38426e0ad5c919c4ce7e546e00b6745b5b Mon Sep 17 00:00:00 2001 From: m0gg Date: Sat, 9 Dec 2006 09:36:57 +0000 Subject: Added --- nanohttp/nanohttp-error.c | 131 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 nanohttp/nanohttp-error.c (limited to 'nanohttp') diff --git a/nanohttp/nanohttp-error.c b/nanohttp/nanohttp-error.c new file mode 100644 index 0000000..a556af8 --- /dev/null +++ b/nanohttp/nanohttp-error.c @@ -0,0 +1,131 @@ +/****************************************************************** +* $Id: nanohttp-error.c,v 1.1 2006/12/09 09:36:57 m0gg Exp $ +* +* CSOAP Project: A http client/server library in C +* Copyright (C) 2003 Ferhat Ayaz +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Library General Public +* License as published by the Free Software Foundation; either +* version 2 of the License, or (at your option) any later version. +* +* This library 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 +* Library General Public License for more details. +* +* You should have received a copy of the GNU Library General Public +* License along with this library; if not, write to the +* Free Software Foundation, Inc., 59 Temple Place - Suite 330, +* Boston, MA 02111-1307, USA. +* +* Email: ayaz@jprogrammer.net +******************************************************************/ +#ifdef HAVE_CONFIG_H +#include +#endif + +#ifdef HAVE_STDLIB_H +#include +#endif + +#ifdef HAVE_STDIO_H +#include +#endif + +#ifdef HAVE_STDARG_H +#include +#endif + +#ifdef HAVE_STRING_H +#include +#endif + +#ifdef HAVE_ERRNO_H +#include +#endif + +#include "nanohttp-logging.h" +#include "nanohttp-error.h" + +typedef struct _herror_impl_t +{ + int errcode; + char message[250]; + char *func; +} herror_impl_t; + +herror_t +herror_new(const char *func, int errcode, const char *format, ...) +{ + va_list ap; + herror_impl_t *impl; + + if (!(impl = (herror_impl_t *) malloc(sizeof(herror_impl_t)))) + { + log_error2("malloc failed (%s)", strerror(errno)); + return NULL; + } + + impl->errcode = errcode; + + if (func) + impl->func = strdup(func); + else + func = NULL; + + va_start(ap, format); + vsprintf(impl->message, format, ap); + va_end(ap); + + return (herror_t) impl; +} + +int +herror_code(herror_t err) +{ + herror_impl_t *impl = (herror_impl_t *) err; + + if (!err) + return H_OK; + + return impl->errcode; +} + +const char * +herror_func(herror_t err) +{ + herror_impl_t *impl = (herror_impl_t *) err; + + if (!err) + return ""; + + return impl->func; +} + +const char * +herror_message(herror_t err) +{ + herror_impl_t *impl = (herror_impl_t *) err; + + if (!err) + return ""; + + return impl->message; +} + +void +herror_release(herror_t err) +{ + herror_impl_t *impl = (herror_impl_t *) err; + + if (!err) + return; + + if (impl->func) + free(impl->func); + + free(impl); + + return; +} -- cgit v1.1-32-gdbae