* More debugging information in the import/export and font functions.tags/v0.99.beta14
@@ -24,9 +24,6 @@ | |||||
# include <stdlib.h> | # include <stdlib.h> | ||||
# include <string.h> | # include <string.h> | ||||
# include <stdio.h> | # include <stdio.h> | ||||
# if defined(HAVE_ERRNO_H) | |||||
# include <errno.h> | |||||
# endif | |||||
# if defined(USE_PLUGINS) | # if defined(USE_PLUGINS) | ||||
# if defined(HAVE_DLFCN_H) | # if defined(HAVE_DLFCN_H) | ||||
# include <dlfcn.h> | # include <dlfcn.h> | ||||
@@ -69,9 +66,7 @@ caca_display_t * caca_create_display(cucul_canvas_t * cv) | |||||
if(!dp) | if(!dp) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = ENOMEM; | |||||
#endif | |||||
seterrno(ENOMEM); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
@@ -87,9 +82,7 @@ caca_display_t * caca_create_display(cucul_canvas_t * cv) | |||||
dlclose(dp->plugin); | dlclose(dp->plugin); | ||||
#endif | #endif | ||||
free(dp); | free(dp); | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = ENODEV; | |||||
#endif | |||||
seterrno(ENODEV); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
@@ -100,9 +93,7 @@ caca_display_t * caca_create_display(cucul_canvas_t * cv) | |||||
dlclose(dp->plugin); | dlclose(dp->plugin); | ||||
#endif | #endif | ||||
free(dp); | free(dp); | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = ENODEV; | |||||
#endif | |||||
seterrno(ENODEV); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
@@ -18,12 +18,6 @@ | |||||
#include "config.h" | #include "config.h" | ||||
#include "common.h" | #include "common.h" | ||||
#if !defined(__KERNEL__) | |||||
# if defined(HAVE_ERRNO_H) | |||||
# include <errno.h> | |||||
# endif | |||||
#endif | |||||
#include "caca.h" | #include "caca.h" | ||||
#include "caca_internals.h" | #include "caca_internals.h" | ||||
#include "cucul.h" | #include "cucul.h" | ||||
@@ -45,10 +39,8 @@ int caca_set_display_title(caca_display_t *dp, char const *title) | |||||
{ | { | ||||
int ret = dp->drv.set_display_title(dp, title); | int ret = dp->drv.set_display_title(dp, title); | ||||
#if defined(HAVE_ERRNO_H) | |||||
if(ret) | if(ret) | ||||
errno = ENOSYS; | |||||
#endif | |||||
seterrno(ENOSYS); | |||||
return ret; | return ret; | ||||
} | } | ||||
@@ -195,9 +187,7 @@ int caca_set_mouse(caca_display_t *dp, int flag) | |||||
{ | { | ||||
if(!dp->drv.set_mouse) | if(!dp->drv.set_mouse) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = ENOSYS; | |||||
#endif | |||||
seterrno(ENOSYS); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -17,6 +17,7 @@ | |||||
* function prototypes that are sometimes missing. | * function prototypes that are sometimes missing. | ||||
*/ | */ | ||||
/* C99 types */ | |||||
#if defined HAVE_INTTYPES_H && !defined __KERNEL__ | #if defined HAVE_INTTYPES_H && !defined __KERNEL__ | ||||
# include <inttypes.h> | # include <inttypes.h> | ||||
#else | #else | ||||
@@ -32,31 +33,36 @@ typedef long int intptr_t; | |||||
typedef unsigned long int uintptr_t; | typedef unsigned long int uintptr_t; | ||||
#endif | #endif | ||||
/* errno handling */ | |||||
#if defined HAVE_ERRNO_H && !defined __KERNEL__ | |||||
# include <errno.h> | |||||
static inline void seterrno(int e) { errno = e; } | |||||
static inline int geterrno(void) { return errno; } | |||||
#else | |||||
# define seterrno(x) do {} while(0) | |||||
# define geterrno(x) 0 | |||||
#endif | |||||
/* debug messages */ | |||||
#if defined DEBUG && !defined __KERNEL__ | #if defined DEBUG && !defined __KERNEL__ | ||||
# include <stdio.h> | # include <stdio.h> | ||||
# include <stdarg.h> | # include <stdarg.h> | ||||
# if defined(HAVE_ERRNO_H) | |||||
# include <errno.h> | |||||
# endif | |||||
static inline void debug(const char *format, ...) | static inline void debug(const char *format, ...) | ||||
{ | { | ||||
# if defined(HAVE_ERRNO_H) | |||||
int saved_errno = errno; | |||||
# endif | |||||
int saved_errno = geterrno(); | |||||
va_list args; | va_list args; | ||||
va_start(args, format); | va_start(args, format); | ||||
fprintf(stderr, "** libcaca debug ** "); | fprintf(stderr, "** libcaca debug ** "); | ||||
vfprintf(stderr, format, args); | vfprintf(stderr, format, args); | ||||
fprintf(stderr, "\n"); | fprintf(stderr, "\n"); | ||||
va_end(args); | va_end(args); | ||||
# if defined(HAVE_ERRNO_H) | |||||
errno = saved_errno; | |||||
# endif | |||||
seterrno(saved_errno); | |||||
} | } | ||||
#else | #else | ||||
# define debug(format, ...) do {} while(0) | # define debug(format, ...) do {} while(0) | ||||
#endif | #endif | ||||
/* hton16() and hton32() */ | |||||
#if defined HAVE_HTONS | #if defined HAVE_HTONS | ||||
# if defined __KERNEL__ | # if defined __KERNEL__ | ||||
/* Nothing to do */ | /* Nothing to do */ | ||||
@@ -101,7 +107,3 @@ static inline uint32_t hton32(uint32_t x) | |||||
} | } | ||||
#endif | #endif | ||||
#if defined __KERNEL__ | |||||
# undef HAVE_ERRNO_H | |||||
#endif | |||||
@@ -19,10 +19,6 @@ | |||||
#include "config.h" | #include "config.h" | ||||
#include "common.h" | #include "common.h" | ||||
#if defined(HAVE_ERRNO_H) | |||||
# include <errno.h> | |||||
#endif | |||||
#include "cucul.h" | #include "cucul.h" | ||||
#include "cucul_internals.h" | #include "cucul_internals.h" | ||||
@@ -89,9 +85,7 @@ int cucul_set_attr(cucul_canvas_t *cv, unsigned long int attr) | |||||
{ | { | ||||
if(sizeof(unsigned long int) > sizeof(uint32_t) && attr > 0xffffffff) | if(sizeof(unsigned long int) > sizeof(uint32_t) && attr > 0xffffffff) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -131,9 +125,7 @@ int cucul_put_attr(cucul_canvas_t *cv, int x, int y, unsigned long int attr) | |||||
if(sizeof(unsigned long int) > sizeof(uint32_t) && attr > 0xffffffff) | if(sizeof(unsigned long int) > sizeof(uint32_t) && attr > 0xffffffff) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -177,9 +169,7 @@ int cucul_set_color_ansi(cucul_canvas_t *cv, unsigned char fg, unsigned char bg) | |||||
if(fg > 0x20 || bg > 0x20) | if(fg > 0x20 || bg > 0x20) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -213,9 +203,7 @@ int cucul_set_color_argb(cucul_canvas_t *cv, unsigned int fg, unsigned int bg) | |||||
if(fg > 0xffff || bg > 0xffff) | if(fg > 0xffff || bg > 0xffff) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -24,9 +24,6 @@ | |||||
# include <string.h> | # include <string.h> | ||||
# include <stdlib.h> | # include <stdlib.h> | ||||
# include <stdarg.h> | # include <stdarg.h> | ||||
# if defined(HAVE_ERRNO_H) | |||||
# include <errno.h> | |||||
# endif | |||||
# if defined(HAVE_UNISTD_H) | # if defined(HAVE_UNISTD_H) | ||||
# include <unistd.h> | # include <unistd.h> | ||||
# endif | # endif | ||||
@@ -384,9 +381,7 @@ int cucul_blit(cucul_canvas_t *dst, int x, int y, | |||||
if(mask && (src->width != mask->width || src->height != mask->height)) | if(mask && (src->width != mask->width || src->height != mask->height)) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -471,9 +466,7 @@ int cucul_set_canvas_boundaries(cucul_canvas_t *cv, int x, int y, | |||||
if(cv->refcount) | if(cv->refcount) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EBUSY; | |||||
#endif | |||||
seterrno(EBUSY); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -24,9 +24,6 @@ | |||||
# include <stdlib.h> | # include <stdlib.h> | ||||
# include <string.h> | # include <string.h> | ||||
# include <time.h> | # include <time.h> | ||||
# if defined(HAVE_ERRNO_H) | |||||
# include <errno.h> | |||||
# endif | |||||
# include <sys/types.h> | # include <sys/types.h> | ||||
# if defined(HAVE_UNISTD_H) | # if defined(HAVE_UNISTD_H) | ||||
# include <unistd.h> | # include <unistd.h> | ||||
@@ -87,23 +84,17 @@ cucul_canvas_t * cucul_create_canvas(unsigned int width, unsigned int height) | |||||
if(_cucul_set_canvas_size(cv, width, height) < 0) | if(_cucul_set_canvas_size(cv, width, height) < 0) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
int saved_errno = errno; | |||||
#endif | |||||
int saved_errno = geterrno(); | |||||
free(cv->frames); | free(cv->frames); | ||||
free(cv); | free(cv); | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = saved_errno; | |||||
#endif | |||||
seterrno(saved_errno); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
return cv; | return cv; | ||||
nomem: | nomem: | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = ENOMEM; | |||||
#endif | |||||
seterrno(ENOMEM); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
@@ -137,9 +128,7 @@ int cucul_set_canvas_size(cucul_canvas_t *cv, unsigned int width, | |||||
{ | { | ||||
if(cv->refcount) | if(cv->refcount) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EBUSY; | |||||
#endif | |||||
seterrno(EBUSY); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -192,9 +181,7 @@ int cucul_free_canvas(cucul_canvas_t *cv) | |||||
if(cv->refcount) | if(cv->refcount) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EBUSY; | |||||
#endif | |||||
seterrno(EBUSY); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -262,9 +249,7 @@ int _cucul_set_canvas_size(cucul_canvas_t *cv, unsigned int width, | |||||
new_size * sizeof(uint32_t)); | new_size * sizeof(uint32_t)); | ||||
if(new_size && (!cv->frames[f].chars || !cv->frames[f].attrs)) | if(new_size && (!cv->frames[f].chars || !cv->frames[f].attrs)) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = ENOMEM; | |||||
#endif | |||||
seterrno(ENOMEM); | |||||
return -1; | return -1; | ||||
} | } | ||||
} | } | ||||
@@ -356,9 +341,7 @@ int _cucul_set_canvas_size(cucul_canvas_t *cv, unsigned int width, | |||||
new_size * sizeof(uint32_t)); | new_size * sizeof(uint32_t)); | ||||
if(new_size && (!cv->frames[f].chars || !cv->frames[f].attrs)) | if(new_size && (!cv->frames[f].chars || !cv->frames[f].attrs)) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = ENOMEM; | |||||
#endif | |||||
seterrno(ENOMEM); | |||||
return -1; | return -1; | ||||
} | } | ||||
} | } | ||||
@@ -26,9 +26,6 @@ | |||||
# include <stdlib.h> | # include <stdlib.h> | ||||
# include <limits.h> | # include <limits.h> | ||||
# include <string.h> | # include <string.h> | ||||
# if defined(HAVE_ERRNO_H) | |||||
# include <errno.h> | |||||
# endif | |||||
#endif | #endif | ||||
#include "cucul.h" | #include "cucul.h" | ||||
@@ -271,18 +268,14 @@ cucul_dither_t *cucul_create_dither(unsigned int bpp, unsigned int w, | |||||
/* Minor sanity test */ | /* Minor sanity test */ | ||||
if(!w || !h || !pitch || bpp > 32 || bpp < 8) | if(!w || !h || !pitch || bpp > 32 || bpp < 8) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
d = malloc(sizeof(cucul_dither_t)); | d = malloc(sizeof(cucul_dither_t)); | ||||
if(!d) | if(!d) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = ENOMEM; | |||||
#endif | |||||
seterrno(ENOMEM); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
@@ -377,9 +370,7 @@ int cucul_set_dither_palette(cucul_dither_t *d, | |||||
if(d->bpp != 8) | if(d->bpp != 8) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -387,9 +378,7 @@ int cucul_set_dither_palette(cucul_dither_t *d, | |||||
{ | { | ||||
if((red[i] | green[i] | blue[i] | alpha[i]) >= 0x1000) | if((red[i] | green[i] | blue[i] | alpha[i]) >= 0x1000) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
} | } | ||||
@@ -448,9 +437,7 @@ int cucul_set_dither_gamma(cucul_dither_t *d, float gamma) | |||||
if(gamma <= 0.0) | if(gamma <= 0.0) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -520,9 +507,7 @@ int cucul_set_dither_antialias(cucul_dither_t *d, char const *str) | |||||
d->antialias = 1; | d->antialias = 1; | ||||
else | else | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -596,9 +581,7 @@ int cucul_set_dither_color(cucul_dither_t *d, char const *str) | |||||
d->color_mode = COLOR_MODE_FULL16; | d->color_mode = COLOR_MODE_FULL16; | ||||
else | else | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -675,9 +658,7 @@ int cucul_set_dither_charset(cucul_dither_t *d, char const *str) | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -770,9 +751,7 @@ int cucul_set_dither_mode(cucul_dither_t *d, char const *str) | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -20,9 +20,6 @@ | |||||
#include "common.h" | #include "common.h" | ||||
#if !defined(__KERNEL__) | #if !defined(__KERNEL__) | ||||
# if defined(HAVE_ERRNO_H) | |||||
# include <errno.h> | |||||
# endif | |||||
# include <stdlib.h> | # include <stdlib.h> | ||||
# include <stdio.h> | # include <stdio.h> | ||||
# include <string.h> | # include <string.h> | ||||
@@ -117,9 +114,7 @@ void *cucul_export_memory(cucul_canvas_t *cv, char const *format, | |||||
if(!strcasecmp("tga", format)) | if(!strcasecmp("tga", format)) | ||||
return export_tga(cv, bytes); | return export_tga(cv, bytes); | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
@@ -276,8 +271,8 @@ static void *export_utf8(cucul_canvas_t *cv, unsigned long int *bytes, int cr) | |||||
} | } | ||||
/* Crop to really used size */ | /* Crop to really used size */ | ||||
debug("utf8 export: alloc %li bytes, realloc %li\n", | |||||
(long int)*bytes, (long int)(uintptr_t)(cur - data)); | |||||
debug("utf8 export: alloc %lu bytes, realloc %lu", | |||||
(unsigned long int)*bytes, (unsigned long int)(cur - data)); | |||||
*bytes = (uintptr_t)(cur - data); | *bytes = (uintptr_t)(cur - data); | ||||
data = realloc(data, *bytes); | data = realloc(data, *bytes); | ||||
@@ -356,8 +351,8 @@ static void *export_ansi(cucul_canvas_t *cv, unsigned long int *bytes) | |||||
} | } | ||||
/* Crop to really used size */ | /* Crop to really used size */ | ||||
debug("ansi export: alloc %li bytes, realloc %li\n", | |||||
(long int)*bytes, (long int)(uintptr_t)(cur - data)); | |||||
debug("ansi export: alloc %lu bytes, realloc %lu", | |||||
(unsigned long int)*bytes, (unsigned long int)(cur - data)); | |||||
*bytes = (uintptr_t)(cur - data); | *bytes = (uintptr_t)(cur - data); | ||||
data = realloc(data, *bytes); | data = realloc(data, *bytes); | ||||
@@ -432,8 +427,8 @@ static void *export_html(cucul_canvas_t *cv, unsigned long int *bytes) | |||||
cur += sprintf(cur, "</div></body></html>\n"); | cur += sprintf(cur, "</div></body></html>\n"); | ||||
/* Crop to really used size */ | /* Crop to really used size */ | ||||
debug("html export: alloc %li bytes, realloc %li\n", | |||||
(long int)*bytes, (long int)(uintptr_t)(cur - data)); | |||||
debug("html export: alloc %lu bytes, realloc %lu", | |||||
(unsigned long int)*bytes, (unsigned long int)(cur - data)); | |||||
*bytes = (uintptr_t)(cur - data); | *bytes = (uintptr_t)(cur - data); | ||||
data = realloc(data, *bytes); | data = realloc(data, *bytes); | ||||
@@ -527,8 +522,8 @@ static void *export_html3(cucul_canvas_t *cv, unsigned long int *bytes) | |||||
cur += sprintf(cur, "</table>\n"); | cur += sprintf(cur, "</table>\n"); | ||||
/* Crop to really used size */ | /* Crop to really used size */ | ||||
debug("html3 export: alloc %li bytes, realloc %li\n", | |||||
(long int)*bytes, (long int)(uintptr_t)(cur - data)); | |||||
debug("html3 export: alloc %lu bytes, realloc %lu", | |||||
(unsigned long int)*bytes, (unsigned long int)(cur - data)); | |||||
*bytes = (uintptr_t)(cur - data); | *bytes = (uintptr_t)(cur - data); | ||||
data = realloc(data, *bytes); | data = realloc(data, *bytes); | ||||
@@ -634,8 +629,8 @@ static void *export_irc(cucul_canvas_t *cv, unsigned long int *bytes) | |||||
} | } | ||||
/* Crop to really used size */ | /* Crop to really used size */ | ||||
debug("IRC export: alloc %li bytes, realloc %li\n", | |||||
(long int)*bytes, (long int)(uintptr_t)(cur - data)); | |||||
debug("IRC export: alloc %lu bytes, realloc %lu", | |||||
(unsigned long int)*bytes, (unsigned long int)(cur - data)); | |||||
*bytes = (uintptr_t)(cur - data); | *bytes = (uintptr_t)(cur - data); | ||||
data = realloc(data, *bytes); | data = realloc(data, *bytes); | ||||
@@ -743,8 +738,8 @@ static void *export_ps(cucul_canvas_t *cv, unsigned long int *bytes) | |||||
cur += sprintf(cur, "showpage\n"); | cur += sprintf(cur, "showpage\n"); | ||||
/* Crop to really used size */ | /* Crop to really used size */ | ||||
debug("PS export: alloc %li bytes, realloc %li\n", | |||||
(long int)*bytes, (long int)(uintptr_t)(cur - data)); | |||||
debug("PS export: alloc %lu bytes, realloc %lu", | |||||
(unsigned long int)*bytes, (unsigned long int)(cur - data)); | |||||
*bytes = (uintptr_t)(cur - data); | *bytes = (uintptr_t)(cur - data); | ||||
data = realloc(data, *bytes); | data = realloc(data, *bytes); | ||||
@@ -829,8 +824,8 @@ static void *export_svg(cucul_canvas_t *cv, unsigned long int *bytes) | |||||
cur += sprintf(cur, "</svg>\n"); | cur += sprintf(cur, "</svg>\n"); | ||||
/* Crop to really used size */ | /* Crop to really used size */ | ||||
debug("SVG export: alloc %li bytes, realloc %li\n", | |||||
(long int)*bytes, (long int)(uintptr_t)(cur - data)); | |||||
debug("SVG export: alloc %lu bytes, realloc %lu", | |||||
(unsigned long int)*bytes, (unsigned long int)(cur - data)); | |||||
*bytes = (uintptr_t)(cur - data); | *bytes = (uintptr_t)(cur - data); | ||||
data = realloc(data, *bytes); | data = realloc(data, *bytes); | ||||
@@ -848,9 +843,7 @@ static void *export_tga(cucul_canvas_t *cv, unsigned long int *bytes) | |||||
fontlist = cucul_get_font_list(); | fontlist = cucul_get_font_list(); | ||||
if(!fontlist[0]) | if(!fontlist[0]) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
@@ -22,9 +22,6 @@ | |||||
# if defined(HAVE_ENDIAN_H) | # if defined(HAVE_ENDIAN_H) | ||||
# include <endian.h> | # include <endian.h> | ||||
# endif | # endif | ||||
# if defined(HAVE_ERRNO_H) | |||||
# include <errno.h> | |||||
# endif | |||||
# include <stdio.h> | # include <stdio.h> | ||||
# include <stdlib.h> | # include <stdlib.h> | ||||
# include <string.h> | # include <string.h> | ||||
@@ -126,26 +123,22 @@ cucul_font_t *cucul_load_font(void const *data, unsigned int size) | |||||
if(!strcasecmp(data, "Monospace Bold 12")) | if(!strcasecmp(data, "Monospace Bold 12")) | ||||
return cucul_load_font((char *)&monobold12_data, monobold12_size); | return cucul_load_font((char *)&monobold12_data, monobold12_size); | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = ENOENT; | |||||
#endif | |||||
seterrno(ENOENT); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
if(size < sizeof(struct font_header)) | if(size < sizeof(struct font_header)) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
debug("font error: data size %i < header size %i", | |||||
size, (int)sizeof(struct font_header)); | |||||
seterrno(EINVAL); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
f = malloc(sizeof(cucul_font_t)); | f = malloc(sizeof(cucul_font_t)); | ||||
if(!f) | if(!f) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = ENOMEM; | |||||
#endif | |||||
seterrno(ENOMEM); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
@@ -167,10 +160,18 @@ cucul_font_t *cucul_load_font(void const *data, unsigned int size) | |||||
f->header.bpp != 2 && f->header.bpp != 1) | f->header.bpp != 2 && f->header.bpp != 1) | ||||
|| (f->header.flags & 1) == 0) | || (f->header.flags & 1) == 0) | ||||
{ | { | ||||
free(f); | |||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#if defined DEBUG | |||||
if(size != 4 + f->header.control_size + f->header.data_size) | |||||
debug("font error: data size %i < expected size %i", | |||||
size, 4 + f->header.control_size + f->header.data_size); | |||||
else if(f->header.bpp != 8 && f->header.bpp != 4 && | |||||
f->header.bpp != 2 && f->header.bpp != 1) | |||||
debug("font error: invalid bpp %i", f->header.bpp); | |||||
else if((f->header.flags & 1) == 0) | |||||
debug("font error: invalid flags %.04x", f->header.flags); | |||||
#endif | #endif | ||||
free(f); | |||||
seterrno(EINVAL); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
@@ -178,9 +179,7 @@ cucul_font_t *cucul_load_font(void const *data, unsigned int size) | |||||
if(!f->block_list) | if(!f->block_list) | ||||
{ | { | ||||
free(f); | free(f); | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = ENOMEM; | |||||
#endif | |||||
seterrno(ENOMEM); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
@@ -190,9 +189,7 @@ cucul_font_t *cucul_load_font(void const *data, unsigned int size) | |||||
{ | { | ||||
free(f->block_list); | free(f->block_list); | ||||
free(f); | free(f); | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = ENOMEM; | |||||
#endif | |||||
seterrno(ENOMEM); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
@@ -209,12 +206,21 @@ cucul_font_t *cucul_load_font(void const *data, unsigned int size) | |||||
|| (i > 0 && f->block_list[i].start < f->block_list[i - 1].stop) | || (i > 0 && f->block_list[i].start < f->block_list[i - 1].stop) | ||||
|| f->block_list[i].index >= f->header.glyphs) | || f->block_list[i].index >= f->header.glyphs) | ||||
{ | { | ||||
#if defined DEBUG | |||||
if(f->block_list[i].start > f->block_list[i].stop) | |||||
debug("font error: block %i has start %i > stop %i", | |||||
i, f->block_list[i].start, f->block_list[i].stop); | |||||
else if(i > 0 && f->block_list[i].start < f->block_list[i - 1].stop) | |||||
debug("font error: block %i has start %i < previous stop %i", | |||||
f->block_list[i].start, f->block_list[i - 1].stop); | |||||
else if(f->block_list[i].index >= f->header.glyphs) | |||||
debug("font error: block %i has index >= glyph count %i", | |||||
f->block_list[i].index, f->header.glyphs); | |||||
#endif | |||||
free(f->user_block_list); | free(f->user_block_list); | ||||
free(f->block_list); | free(f->block_list); | ||||
free(f); | free(f); | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
@@ -231,9 +237,7 @@ cucul_font_t *cucul_load_font(void const *data, unsigned int size) | |||||
free(f->user_block_list); | free(f->user_block_list); | ||||
free(f->block_list); | free(f->block_list); | ||||
free(f); | free(f); | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = ENOMEM; | |||||
#endif | |||||
seterrno(ENOMEM); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
@@ -252,13 +256,24 @@ cucul_font_t *cucul_load_font(void const *data, unsigned int size) | |||||
+ (f->glyph_list[i].width * f->glyph_list[i].height * | + (f->glyph_list[i].width * f->glyph_list[i].height * | ||||
f->header.bpp + 7) / 8 > f->header.data_size) | f->header.bpp + 7) / 8 > f->header.data_size) | ||||
{ | { | ||||
#if defined DEBUG | |||||
if(f->glyph_list[i].data_offset >= f->header.data_size) | |||||
debug("font error: glyph %i has data start %i > " | |||||
"data end %i", | |||||
f->glyph_list[i].data_offset, f->header.data_size); | |||||
else if(f->glyph_list[i].data_offset | |||||
+ (f->glyph_list[i].width * f->glyph_list[i].height * | |||||
f->header.bpp + 7) / 8 > f->header.data_size) | |||||
debug("font error: glyph %i has data end %i > " | |||||
"data end %i", f->glyph_list[i].data_offset | |||||
+ (f->glyph_list[i].width * f->glyph_list[i].height * | |||||
f->header.bpp + 7) / 8, f->header.data_size); | |||||
#endif | |||||
free(f->glyph_list); | free(f->glyph_list); | ||||
free(f->user_block_list); | free(f->user_block_list); | ||||
free(f->block_list); | free(f->block_list); | ||||
free(f); | free(f); | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return NULL; | return NULL; | ||||
} | } | ||||
} | } | ||||
@@ -22,9 +22,6 @@ | |||||
# include <stdio.h> | # include <stdio.h> | ||||
# include <stdlib.h> | # include <stdlib.h> | ||||
# include <string.h> | # include <string.h> | ||||
# if defined(HAVE_ERRNO_H) | |||||
# include <errno.h> | |||||
# endif | |||||
#endif | #endif | ||||
#include "cucul.h" | #include "cucul.h" | ||||
@@ -66,9 +63,7 @@ int cucul_set_canvas_frame(cucul_canvas_t *cv, unsigned int frame) | |||||
{ | { | ||||
if(frame >= cv->framecount) | if(frame >= cv->framecount) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -160,17 +155,13 @@ int cucul_free_canvas_frame(cucul_canvas_t *cv, unsigned int id) | |||||
if(id >= cv->framecount) | if(id >= cv->framecount) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
if(cv->framecount == 1) | if(cv->framecount == 1) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -19,9 +19,6 @@ | |||||
#include "common.h" | #include "common.h" | ||||
#if !defined __KERNEL__ | #if !defined __KERNEL__ | ||||
# if defined HAVE_ERRNO_H | |||||
# include <errno.h> | |||||
# endif | |||||
# include <stdio.h> | # include <stdio.h> | ||||
# include <stdlib.h> | # include <stdlib.h> | ||||
# include <string.h> | # include <string.h> | ||||
@@ -118,9 +115,7 @@ long int cucul_import_memory(cucul_canvas_t *cv, void const *data, | |||||
return import_text(cv, data, len); | return import_text(cv, data, len); | ||||
} | } | ||||
#if defined HAVE_ERRNO_H | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -157,9 +152,7 @@ long int cucul_import_file(cucul_canvas_t *cv, char const *filename, | |||||
char const *format) | char const *format) | ||||
{ | { | ||||
#if defined __KERNEL__ | #if defined __KERNEL__ | ||||
# if defined HAVE_ERRNO_H | |||||
errno = ENOSYS; | |||||
# endif | |||||
seterrno(ENOSYS); | |||||
return -1; | return -1; | ||||
#else | #else | ||||
FILE *fp; | FILE *fp; | ||||
@@ -178,9 +171,7 @@ long int cucul_import_file(cucul_canvas_t *cv, char const *filename, | |||||
if(!data) | if(!data) | ||||
{ | { | ||||
fclose(fp); | fclose(fp); | ||||
# if defined HAVE_ERRNO_H | |||||
errno = ENOMEM; | |||||
# endif | |||||
seterrno(ENOMEM); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -236,7 +227,10 @@ static long int import_caca(cucul_canvas_t *cv, | |||||
return 0; | return 0; | ||||
if(buf[0] != 0xca || buf[1] != 0xca || buf[2] != 'C' || buf[3] != 'V') | if(buf[0] != 0xca || buf[1] != 0xca || buf[2] != 'C' || buf[3] != 'V') | ||||
{ | |||||
debug("caca import error: expected \\xca\\xcaCV header"); | |||||
goto invalid_caca; | goto invalid_caca; | ||||
} | |||||
control_size = sscanu32(buf + 4); | control_size = sscanu32(buf + 4); | ||||
data_size = sscanu32(buf + 8); | data_size = sscanu32(buf + 8); | ||||
@@ -248,7 +242,11 @@ static long int import_caca(cucul_canvas_t *cv, | |||||
return 0; | return 0; | ||||
if(control_size < 16 + frames * 32) | if(control_size < 16 + frames * 32) | ||||
{ | |||||
debug("caca import error: control size %lu < expected %lu", | |||||
(unsigned long int)control_size, 16 + frames * 32); | |||||
goto invalid_caca; | goto invalid_caca; | ||||
} | |||||
for(expected_size = 0, f = 0; f < frames; f++) | for(expected_size = 0, f = 0; f < frames; f++) | ||||
{ | { | ||||
@@ -269,7 +267,11 @@ static long int import_caca(cucul_canvas_t *cv, | |||||
} | } | ||||
if(expected_size != data_size) | if(expected_size != data_size) | ||||
{ | |||||
debug("caca import error: data size %lu < expected %lu", | |||||
(unsigned long int)data_size, (unsigned long int)expected_size); | |||||
goto invalid_caca; | goto invalid_caca; | ||||
} | |||||
/* FIXME: read all frames, not only the first one */ | /* FIXME: read all frames, not only the first one */ | ||||
cucul_set_canvas_size(cv, 0, 0); | cucul_set_canvas_size(cv, 0, 0); | ||||
@@ -293,9 +295,7 @@ static long int import_caca(cucul_canvas_t *cv, | |||||
return 4 + control_size + data_size; | return 4 + control_size + data_size; | ||||
invalid_caca: | invalid_caca: | ||||
#if defined HAVE_ERRNO_H | |||||
errno = EINVAL; | |||||
#endif | |||||
seterrno(EINVAL); | |||||
return -1; | return -1; | ||||
} | } | ||||
@@ -20,9 +20,6 @@ | |||||
#include "common.h" | #include "common.h" | ||||
#if !defined(__KERNEL__) | #if !defined(__KERNEL__) | ||||
# if defined(HAVE_ERRNO_H) | |||||
# include <errno.h> | |||||
# endif | |||||
# include <stdio.h> | # include <stdio.h> | ||||
# include <stdlib.h> | # include <stdlib.h> | ||||
# include <string.h> | # include <string.h> | ||||
@@ -88,9 +85,7 @@ cucul_buffer_t * cucul_export_canvas(cucul_canvas_t *cv, char const *format) | |||||
ex = malloc(sizeof(cucul_buffer_t)); | ex = malloc(sizeof(cucul_buffer_t)); | ||||
if(!ex) | if(!ex) | ||||
{ | { | ||||
#if defined(HAVE_ERRNO_H) | |||||
errno = ENOMEM; | |||||
#endif | |||||
seterrno(ENOMEM); | |||||
return NULL; | return NULL; | ||||
} | } | ||||