From 9e47eba18746a1cefcf51f08492dc29d1d60e159 Mon Sep 17 00:00:00 2001 From: dan Date: Sun, 12 Dec 1999 04:17:18 +0000 Subject: [PATCH] - Added a global var WErrorCode similar to errno or RErrorCode. - New function wsyserrorwithcode(), like wsyserror() for prints the message for the specified error code, instead of errno. This is for cases where you can't call wsyserror() immediately after the error, but save errno code for a later use. --- WINGs/ChangeLog | 4 ++++ WINGs/WUtil.h | 8 ++++++++ WINGs/error.c | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+) diff --git a/WINGs/ChangeLog b/WINGs/ChangeLog index 8e548d9d..2b2a83ca 100644 --- a/WINGs/ChangeLog +++ b/WINGs/ChangeLog @@ -34,6 +34,10 @@ changes since wmaker 0.61.1: 2. if new_size is 0, call wfree(old), and return NULL. 3. if both old is a valid pointer and new_size>0, call realloc. - added wstrerror(int errnum) to return the string associated with errnum. +- added a global var WErrorCode which can hold various error codes + (similar to errno or RErrorCode). +- new wsyserrorwithcode(int error, const char* fmt, ...), similar to + wsyserror(), but printing the message for the specified error code. changes since wmaker 0.61.0: ............................ diff --git a/WINGs/WUtil.h b/WINGs/WUtil.h index 066d8f62..ab9c9a76 100644 --- a/WINGs/WUtil.h +++ b/WINGs/WUtil.h @@ -148,6 +148,7 @@ char *wstrerror(int errnum); void wfatal(const char *msg, ...); void wwarning(const char *msg, ...); void wsyserror(const char *msg, ...); +void wsyserrorwithcode(int error, const char *msg, ...); char *wfindfile(char *paths, char *file); @@ -359,6 +360,13 @@ proplist_t WMGetUDSearchList(WMUserDefaults *database); void WMSetUDSearchList(WMUserDefaults *database, proplist_t list); + +/****** Global Variables *******/ + +extern int WErrorCode; + + + #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/WINGs/error.c b/WINGs/error.c index ab5e0c0d..4e0e7aca 100644 --- a/WINGs/error.c +++ b/WINGs/error.c @@ -29,6 +29,10 @@ extern char *_WINGS_progname; +int WErrorCode = 0; + + + #define MAXLINE 1024 @@ -142,3 +146,33 @@ wsyserror(const char *msg, ...) va_end(args); } + +/********************************************************************* + * Prints a system error message with variable arguments, being given + * the error code. + * + * error - the error code foe which to print the message + * msg - message to print with optional formatting + * ... - arguments to use on formatting + *********************************************************************/ +void +wsyserrorwithcode(int error, const char *msg, ...) +{ + va_list args; + char buf[MAXLINE]; + + va_start(args, msg); + vsprintf(buf, msg, args); + fflush(stdout); + fputs(_WINGS_progname, stderr); + fputs(" error: ", stderr); + strcat(buf, ": "); + strcat(buf, wstrerror(error)); + strcat(buf,"\n"); + fputs(buf, stderr); + fflush(stderr); + fflush(stdout); + va_end(args); +} + + -- 2.11.4.GIT