Browse Source

* Got rid of HAVE_ERRNO_H ifdefs by defining seterrno()/geterrno() functions.

* More debugging information in the import/export and font functions.
tags/v0.99.beta14
Sam Hocevar sam 18 years ago
parent
commit
51936f585c
12 changed files with 122 additions and 202 deletions
  1. +3
    -12
      caca/caca.c
  2. +2
    -12
      caca/graphics.c
  3. +15
    -13
      common.h
  4. +4
    -16
      cucul/attr.c
  5. +2
    -9
      cucul/canvas.c
  6. +7
    -24
      cucul/cucul.c
  7. +9
    -30
      cucul/dither.c
  8. +16
    -23
      cucul/export.c
  9. +45
    -30
      cucul/font.c
  10. +3
    -12
      cucul/frame.c
  11. +15
    -15
      cucul/import.c
  12. +1
    -6
      cucul/legacy.c

+ 3
- 12
caca/caca.c View File

@@ -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;
} }




+ 2
- 12
caca/graphics.c View File

@@ -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;
} }




+ 15
- 13
common.h View File

@@ -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


+ 4
- 16
cucul/attr.c View File

@@ -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;
} }




+ 2
- 9
cucul/canvas.c View File

@@ -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;
} }




+ 7
- 24
cucul/cucul.c View File

@@ -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;
} }
} }


+ 9
- 30
cucul/dither.c View File

@@ -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;
} }




+ 16
- 23
cucul/export.c View File

@@ -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;
} }




+ 45
- 30
cucul/font.c View File

@@ -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;
} }
} }


+ 3
- 12
cucul/frame.c View File

@@ -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;
} }




+ 15
- 15
cucul/import.c View File

@@ -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;
} }




+ 1
- 6
cucul/legacy.c View File

@@ -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;
} }




Loading…
Cancel
Save