error.h (2717B)
1 /************************************************************************ 2 * error.h Header file for dopewars error-handling routines * 3 * Copyright (C) 1998-2021 Ben Webb * 4 * Email: benwebb@users.sf.net * 5 * WWW: https://dopewars.sourceforge.io/ * 6 * * 7 * This program is free software; you can redistribute it and/or * 8 * modify it under the terms of the GNU General Public License * 9 * as published by the Free Software Foundation; either version 2 * 10 * of the License, or (at your option) any later version. * 11 * * 12 * This program is distributed in the hope that it will be useful, * 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 15 * GNU General Public License for more details. * 16 * * 17 * You should have received a copy of the GNU General Public License * 18 * along with this program; if not, write to the Free Software * 19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, * 20 * MA 02111-1307, USA. * 21 ************************************************************************/ 22 23 #ifndef __DP_ERROR_H__ 24 #define __DP_ERROR_H__ 25 26 #ifdef HAVE_CONFIG_H 27 #include <config.h> 28 #endif 29 30 #include <glib.h> 31 32 struct _LastError; 33 typedef struct _ErrorType { 34 void (*AppendErrorString) (GString *str, struct _LastError *error); 35 void (*FreeErrorData) (struct _LastError *error); 36 } ErrorType; 37 38 typedef struct _LastError { 39 gint code; 40 ErrorType *type; 41 gpointer data; 42 } LastError; 43 44 extern ErrorType *ET_CUSTOM, *ET_ERRNO; 45 46 #ifdef CYGWIN 47 extern ErrorType *ET_WIN32, *ET_WINSOCK; 48 #else 49 extern ErrorType *ET_HERRNO; 50 #endif 51 52 typedef enum { 53 E_FULLBUF 54 } CustomErrorCode; 55 56 typedef struct _ErrTable { 57 gint code; 58 gchar *string; 59 } ErrTable; 60 61 void WantUTF8Errors(gboolean want); 62 gchar *ErrStrFromErrno(int errcode); 63 void FreeError(LastError *error); 64 LastError *NewError(ErrorType *type, gint code, gpointer data); 65 void SetError(LastError **error, ErrorType *type, gint code, 66 gpointer data); 67 void LookupErrorCode(GString *str, gint code, ErrTable *table, 68 gchar *fallbackstr); 69 void g_string_assign_error(GString *str, LastError *error); 70 void g_string_append_error(GString *str, LastError *error); 71 72 #endif /* __DP_ERROR_H__ */