|
@@ -116,8 +116,68 @@ SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) |
|
|
return -1; |
|
|
} |
|
|
|
|
|
static char *SDL_GetErrorMsg(char *errstr, int maxlen); |
|
|
|
|
|
/* Available for backwards compatibility */ |
|
|
const char * |
|
|
SDL_GetError(void) |
|
|
{ |
|
|
static char errmsg[SDL_ERRBUFIZE]; |
|
|
|
|
|
return SDL_GetErrorMsg(errmsg, SDL_ERRBUFIZE); |
|
|
} |
|
|
|
|
|
void |
|
|
SDL_ClearError(void) |
|
|
{ |
|
|
SDL_error *error; |
|
|
|
|
|
error = SDL_GetErrBuf(); |
|
|
error->error = 0; |
|
|
} |
|
|
|
|
|
/* Very common errors go here */ |
|
|
int |
|
|
SDL_Error(SDL_errorcode code) |
|
|
{ |
|
|
switch (code) { |
|
|
case SDL_ENOMEM: |
|
|
return SDL_SetError("Out of memory"); |
|
|
case SDL_EFREAD: |
|
|
return SDL_SetError("Error reading from datastream"); |
|
|
case SDL_EFWRITE: |
|
|
return SDL_SetError("Error writing to datastream"); |
|
|
case SDL_EFSEEK: |
|
|
return SDL_SetError("Error seeking in datastream"); |
|
|
case SDL_UNSUPPORTED: |
|
|
return SDL_SetError("That operation is not supported"); |
|
|
default: |
|
|
return SDL_SetError("Unknown SDL error"); |
|
|
} |
|
|
} |
|
|
|
|
|
#ifdef TEST_ERROR |
|
|
int |
|
|
main(int argc, char *argv[]) |
|
|
{ |
|
|
char buffer[BUFSIZ + 1]; |
|
|
|
|
|
SDL_SetError("Hi there!"); |
|
|
printf("Error 1: %s\n", SDL_GetError()); |
|
|
SDL_ClearError(); |
|
|
SDL_memset(buffer, '1', BUFSIZ); |
|
|
buffer[BUFSIZ] = 0; |
|
|
SDL_SetError("This is the error: %s (%f)", buffer, 1.0); |
|
|
printf("Error 2: %s\n", SDL_GetError()); |
|
|
exit(0); |
|
|
} |
|
|
#endif |
|
|
|
|
|
|
|
|
/* keep this at the end of the file so it works with GCC builds that don't |
|
|
support "#pragma GCC diagnostic push" ... we'll just leave the warning |
|
|
disabled after this. */ |
|
|
#ifdef __GNUC__ |
|
|
#pragma GCC diagnostic push |
|
|
#pragma GCC diagnostic ignored "-Wformat-nonliteral" |
|
|
#endif |
|
|
/* This function has a bit more overhead than most error functions |
|
@@ -220,63 +280,5 @@ SDL_GetErrorMsg(char *errstr, int maxlen) |
|
|
} |
|
|
return (errstr); |
|
|
} |
|
|
#ifdef __GNUC__ |
|
|
#pragma GCC diagnostic pop |
|
|
#endif |
|
|
|
|
|
/* Available for backwards compatibility */ |
|
|
const char * |
|
|
SDL_GetError(void) |
|
|
{ |
|
|
static char errmsg[SDL_ERRBUFIZE]; |
|
|
|
|
|
return SDL_GetErrorMsg(errmsg, SDL_ERRBUFIZE); |
|
|
} |
|
|
|
|
|
void |
|
|
SDL_ClearError(void) |
|
|
{ |
|
|
SDL_error *error; |
|
|
|
|
|
error = SDL_GetErrBuf(); |
|
|
error->error = 0; |
|
|
} |
|
|
|
|
|
/* Very common errors go here */ |
|
|
int |
|
|
SDL_Error(SDL_errorcode code) |
|
|
{ |
|
|
switch (code) { |
|
|
case SDL_ENOMEM: |
|
|
return SDL_SetError("Out of memory"); |
|
|
case SDL_EFREAD: |
|
|
return SDL_SetError("Error reading from datastream"); |
|
|
case SDL_EFWRITE: |
|
|
return SDL_SetError("Error writing to datastream"); |
|
|
case SDL_EFSEEK: |
|
|
return SDL_SetError("Error seeking in datastream"); |
|
|
case SDL_UNSUPPORTED: |
|
|
return SDL_SetError("That operation is not supported"); |
|
|
default: |
|
|
return SDL_SetError("Unknown SDL error"); |
|
|
} |
|
|
} |
|
|
|
|
|
#ifdef TEST_ERROR |
|
|
int |
|
|
main(int argc, char *argv[]) |
|
|
{ |
|
|
char buffer[BUFSIZ + 1]; |
|
|
|
|
|
SDL_SetError("Hi there!"); |
|
|
printf("Error 1: %s\n", SDL_GetError()); |
|
|
SDL_ClearError(); |
|
|
SDL_memset(buffer, '1', BUFSIZ); |
|
|
buffer[BUFSIZ] = 0; |
|
|
SDL_SetError("This is the error: %s (%f)", buffer, 1.0); |
|
|
printf("Error 2: %s\n", SDL_GetError()); |
|
|
exit(0); |
|
|
} |
|
|
#endif |
|
|
|
|
|
/* vi: set ts=4 sw=4 expandtab: */ |