1.1 --- a/src/SDL_error.c Thu Jul 06 18:01:37 2006 +0000
1.2 +++ b/src/SDL_error.c Mon Jul 10 21:04:37 2006 +0000
1.3 @@ -39,200 +39,217 @@
1.4
1.5 /* Private functions */
1.6
1.7 -static const char *SDL_LookupString(const char *key)
1.8 +static const char *
1.9 +SDL_LookupString(const char *key)
1.10 {
1.11 - /* FIXME: Add code to lookup key in language string hash-table */
1.12 - return key;
1.13 + /* FIXME: Add code to lookup key in language string hash-table */
1.14 + return key;
1.15 }
1.16
1.17 /* Public functions */
1.18
1.19 -void SDL_SetError (const char *fmt, ...)
1.20 +void
1.21 +SDL_SetError(const char *fmt, ...)
1.22 {
1.23 - va_list ap;
1.24 - SDL_error *error;
1.25 + va_list ap;
1.26 + SDL_error *error;
1.27
1.28 - /* Copy in the key, mark error as valid */
1.29 - error = SDL_GetErrBuf();
1.30 - error->error = 1;
1.31 - SDL_strlcpy((char *)error->key, fmt, sizeof(error->key));
1.32 + /* Copy in the key, mark error as valid */
1.33 + error = SDL_GetErrBuf();
1.34 + error->error = 1;
1.35 + SDL_strlcpy((char *) error->key, fmt, sizeof(error->key));
1.36
1.37 - va_start(ap, fmt);
1.38 - error->argc = 0;
1.39 - while ( *fmt ) {
1.40 - if ( *fmt++ == '%' ) {
1.41 - while ( *fmt == '.' || (*fmt >= '0' && *fmt <= '9') ) {
1.42 - ++fmt;
1.43 - }
1.44 - switch (*fmt++) {
1.45 - case 0: /* Malformed format string.. */
1.46 - --fmt;
1.47 - break;
1.48 - case 'c':
1.49 - case 'i':
1.50 - case 'd':
1.51 - case 'u':
1.52 - case 'o':
1.53 - case 'x':
1.54 - case 'X':
1.55 - error->args[error->argc++].value_i =
1.56 - va_arg(ap, int);
1.57 - break;
1.58 - case 'f':
1.59 - error->args[error->argc++].value_f =
1.60 - va_arg(ap, double);
1.61 - break;
1.62 - case 'p':
1.63 - error->args[error->argc++].value_ptr =
1.64 - va_arg(ap, void *);
1.65 - break;
1.66 - case 's':
1.67 - {
1.68 - int i = error->argc;
1.69 - const char *str = va_arg(ap, const char *);
1.70 - if (str == NULL)
1.71 - str = "(null)";
1.72 - SDL_strlcpy((char *)error->args[i].buf, str, ERR_MAX_STRLEN);
1.73 - error->argc++;
1.74 - }
1.75 - break;
1.76 - default:
1.77 - break;
1.78 - }
1.79 - if ( error->argc >= ERR_MAX_ARGS ) {
1.80 - break;
1.81 - }
1.82 - }
1.83 - }
1.84 - va_end(ap);
1.85 + va_start(ap, fmt);
1.86 + error->argc = 0;
1.87 + while (*fmt) {
1.88 + if (*fmt++ == '%') {
1.89 + while (*fmt == '.' || (*fmt >= '0' && *fmt <= '9')) {
1.90 + ++fmt;
1.91 + }
1.92 + switch (*fmt++) {
1.93 + case 0: /* Malformed format string.. */
1.94 + --fmt;
1.95 + break;
1.96 + case 'c':
1.97 + case 'i':
1.98 + case 'd':
1.99 + case 'u':
1.100 + case 'o':
1.101 + case 'x':
1.102 + case 'X':
1.103 + error->args[error->argc++].value_i = va_arg(ap, int);
1.104 + break;
1.105 + case 'f':
1.106 + error->args[error->argc++].value_f = va_arg(ap, double);
1.107 + break;
1.108 + case 'p':
1.109 + error->args[error->argc++].value_ptr = va_arg(ap, void *);
1.110 + break;
1.111 + case 's':
1.112 + {
1.113 + int i = error->argc;
1.114 + const char *str = va_arg(ap, const char *);
1.115 + if (str == NULL)
1.116 + str = "(null)";
1.117 + SDL_strlcpy((char *) error->args[i].buf, str,
1.118 + ERR_MAX_STRLEN);
1.119 + error->argc++;
1.120 + }
1.121 + break;
1.122 + default:
1.123 + break;
1.124 + }
1.125 + if (error->argc >= ERR_MAX_ARGS) {
1.126 + break;
1.127 + }
1.128 + }
1.129 + }
1.130 + va_end(ap);
1.131
1.132 - /* If we are in debug mode, print out an error message */
1.133 + /* If we are in debug mode, print out an error message */
1.134 #ifdef DEBUG_ERROR
1.135 - fprintf(stderr, "SDL_SetError: %s\n", SDL_GetError());
1.136 + fprintf(stderr, "SDL_SetError: %s\n", SDL_GetError());
1.137 #endif
1.138 }
1.139
1.140 /* This function has a bit more overhead than most error functions
1.141 so that it supports internationalization and thread-safe errors.
1.142 */
1.143 -char *SDL_GetErrorMsg(char *errstr, unsigned int maxlen)
1.144 +char *
1.145 +SDL_GetErrorMsg(char *errstr, unsigned int maxlen)
1.146 {
1.147 - SDL_error *error;
1.148 -
1.149 - /* Clear the error string */
1.150 - *errstr = '\0'; --maxlen;
1.151 + SDL_error *error;
1.152
1.153 - /* Get the thread-safe error, and print it out */
1.154 - error = SDL_GetErrBuf();
1.155 - if ( error->error ) {
1.156 - const char *fmt;
1.157 - char *msg = errstr;
1.158 - int len;
1.159 - int argi;
1.160 + /* Clear the error string */
1.161 + *errstr = '\0';
1.162 + --maxlen;
1.163 +
1.164 + /* Get the thread-safe error, and print it out */
1.165 + error = SDL_GetErrBuf();
1.166 + if (error->error) {
1.167 + const char *fmt;
1.168 + char *msg = errstr;
1.169 + int len;
1.170 + int argi;
1.171
1.172 - fmt = SDL_LookupString(error->key);
1.173 - argi = 0;
1.174 - while ( *fmt && (maxlen > 0) ) {
1.175 - if ( *fmt == '%' ) {
1.176 - char tmp[32], *spot = tmp;
1.177 - *spot++ = *fmt++;
1.178 - while ( (*fmt == '.' || (*fmt >= '0' && *fmt <= '9')) && spot < (tmp+SDL_arraysize(tmp)-2) ) {
1.179 - *spot++ = *fmt++;
1.180 - }
1.181 - *spot++ = *fmt++;
1.182 - *spot++ = '\0';
1.183 - switch (spot[-2]) {
1.184 - case '%':
1.185 - *msg++ = '%';
1.186 - maxlen -= 1;
1.187 - break;
1.188 - case 'c':
1.189 - case 'i':
1.190 - case 'd':
1.191 - case 'u':
1.192 - case 'o':
1.193 - case 'x':
1.194 - case 'X':
1.195 - len = SDL_snprintf(msg, maxlen, tmp, error->args[argi++].value_i);
1.196 - msg += len;
1.197 - maxlen -= len;
1.198 - break;
1.199 - case 'f':
1.200 - len = SDL_snprintf(msg, maxlen, tmp, error->args[argi++].value_f);
1.201 - msg += len;
1.202 - maxlen -= len;
1.203 - break;
1.204 - case 'p':
1.205 - len = SDL_snprintf(msg, maxlen, tmp, error->args[argi++].value_ptr);
1.206 - msg += len;
1.207 - maxlen -= len;
1.208 - break;
1.209 - case 's':
1.210 - len = SDL_snprintf(msg, maxlen, tmp, SDL_LookupString(error->args[argi++].buf));
1.211 - msg += len;
1.212 - maxlen -= len;
1.213 - break;
1.214 - }
1.215 - } else {
1.216 - *msg++ = *fmt++;
1.217 - maxlen -= 1;
1.218 - }
1.219 - }
1.220 - *msg = 0; /* NULL terminate the string */
1.221 - }
1.222 - return(errstr);
1.223 + fmt = SDL_LookupString(error->key);
1.224 + argi = 0;
1.225 + while (*fmt && (maxlen > 0)) {
1.226 + if (*fmt == '%') {
1.227 + char tmp[32], *spot = tmp;
1.228 + *spot++ = *fmt++;
1.229 + while ((*fmt == '.' || (*fmt >= '0' && *fmt <= '9'))
1.230 + && spot < (tmp + SDL_arraysize(tmp) - 2)) {
1.231 + *spot++ = *fmt++;
1.232 + }
1.233 + *spot++ = *fmt++;
1.234 + *spot++ = '\0';
1.235 + switch (spot[-2]) {
1.236 + case '%':
1.237 + *msg++ = '%';
1.238 + maxlen -= 1;
1.239 + break;
1.240 + case 'c':
1.241 + case 'i':
1.242 + case 'd':
1.243 + case 'u':
1.244 + case 'o':
1.245 + case 'x':
1.246 + case 'X':
1.247 + len =
1.248 + SDL_snprintf(msg, maxlen, tmp,
1.249 + error->args[argi++].value_i);
1.250 + msg += len;
1.251 + maxlen -= len;
1.252 + break;
1.253 + case 'f':
1.254 + len =
1.255 + SDL_snprintf(msg, maxlen, tmp,
1.256 + error->args[argi++].value_f);
1.257 + msg += len;
1.258 + maxlen -= len;
1.259 + break;
1.260 + case 'p':
1.261 + len =
1.262 + SDL_snprintf(msg, maxlen, tmp,
1.263 + error->args[argi++].value_ptr);
1.264 + msg += len;
1.265 + maxlen -= len;
1.266 + break;
1.267 + case 's':
1.268 + len =
1.269 + SDL_snprintf(msg, maxlen, tmp,
1.270 + SDL_LookupString(error->
1.271 + args[argi++].buf));
1.272 + msg += len;
1.273 + maxlen -= len;
1.274 + break;
1.275 + }
1.276 + } else {
1.277 + *msg++ = *fmt++;
1.278 + maxlen -= 1;
1.279 + }
1.280 + }
1.281 + *msg = 0; /* NULL terminate the string */
1.282 + }
1.283 + return (errstr);
1.284 }
1.285
1.286 /* Available for backwards compatibility */
1.287 -char *SDL_GetError (void)
1.288 +char *
1.289 +SDL_GetError(void)
1.290 {
1.291 - static char errmsg[SDL_ERRBUFIZE];
1.292 + static char errmsg[SDL_ERRBUFIZE];
1.293
1.294 - return((char *)SDL_GetErrorMsg(errmsg, SDL_ERRBUFIZE));
1.295 + return ((char *) SDL_GetErrorMsg(errmsg, SDL_ERRBUFIZE));
1.296 }
1.297
1.298 -void SDL_ClearError(void)
1.299 +void
1.300 +SDL_ClearError(void)
1.301 {
1.302 - SDL_error *error;
1.303 + SDL_error *error;
1.304
1.305 - error = SDL_GetErrBuf();
1.306 - error->error = 0;
1.307 + error = SDL_GetErrBuf();
1.308 + error->error = 0;
1.309 }
1.310
1.311 /* Very common errors go here */
1.312 -void SDL_Error(SDL_errorcode code)
1.313 +void
1.314 +SDL_Error(SDL_errorcode code)
1.315 {
1.316 - switch (code) {
1.317 - case SDL_ENOMEM:
1.318 - SDL_SetError("Out of memory");
1.319 - break;
1.320 - case SDL_EFREAD:
1.321 - SDL_SetError("Error reading from datastream");
1.322 - break;
1.323 - case SDL_EFWRITE:
1.324 - SDL_SetError("Error writing to datastream");
1.325 - break;
1.326 - case SDL_EFSEEK:
1.327 - SDL_SetError("Error seeking in datastream");
1.328 - break;
1.329 - default:
1.330 - SDL_SetError("Unknown SDL error");
1.331 - break;
1.332 - }
1.333 + switch (code) {
1.334 + case SDL_ENOMEM:
1.335 + SDL_SetError("Out of memory");
1.336 + break;
1.337 + case SDL_EFREAD:
1.338 + SDL_SetError("Error reading from datastream");
1.339 + break;
1.340 + case SDL_EFWRITE:
1.341 + SDL_SetError("Error writing to datastream");
1.342 + break;
1.343 + case SDL_EFSEEK:
1.344 + SDL_SetError("Error seeking in datastream");
1.345 + break;
1.346 + default:
1.347 + SDL_SetError("Unknown SDL error");
1.348 + break;
1.349 + }
1.350 }
1.351
1.352 #ifdef TEST_ERROR
1.353 -int main(int argc, char *argv[])
1.354 +int
1.355 +main(int argc, char *argv[])
1.356 {
1.357 - char buffer[BUFSIZ+1];
1.358 + char buffer[BUFSIZ + 1];
1.359
1.360 - SDL_SetError("Hi there!");
1.361 - printf("Error 1: %s\n", SDL_GetError());
1.362 - SDL_ClearError();
1.363 - SDL_memset(buffer, '1', BUFSIZ);
1.364 - buffer[BUFSIZ] = 0;
1.365 - SDL_SetError("This is the error: %s (%f)", buffer, 1.0);
1.366 - printf("Error 2: %s\n", SDL_GetError());
1.367 - exit(0);
1.368 + SDL_SetError("Hi there!");
1.369 + printf("Error 1: %s\n", SDL_GetError());
1.370 + SDL_ClearError();
1.371 + SDL_memset(buffer, '1', BUFSIZ);
1.372 + buffer[BUFSIZ] = 0;
1.373 + SDL_SetError("This is the error: %s (%f)", buffer, 1.0);
1.374 + printf("Error 2: %s\n", SDL_GetError());
1.375 + exit(0);
1.376 }
1.377 #endif
1.378 +/* vi: set ts=4 sw=4 expandtab: */