From 8fe6539026cf87a8bcf9a23d54cd9d48176bc880 Mon Sep 17 00:00:00 2001 From: Werner Lemberg Date: Sat, 29 Apr 2006 07:31:16 +0000 Subject: [PATCH] Further C library abstraction. Based on a patch from msn2@bidyut.com. * include/freetype/config/ftstdlib.h (FT_CHAR_BIT, FT_FILE, ft_fopen, ft_fclose, ft_fseek, ft_ftell, ft_fread, ft_smalloc, ft_scalloc, ft_srealloc, ft_sfree, ft_labs): New wrapper macros for C library functions. Update all users accordingly (and catch some other places where the C library function was used instead of the wrapper functions). * src/base/ftsystem.c: Don't include stdio.h and stdlib.h. * src/gzip/zutil.h [MSDOS && !(__TURBOC__ || __BORLANDC__)]: Don't include malloc.h. --- ChangeLog | 16 +++++++++ include/freetype/config/ftstdlib.h | 53 +++++++++++++++++++++++++----- include/freetype/fttypes.h | 6 ++-- src/base/ftmac.c | 14 ++++---- src/base/ftsystem.c | 31 ++++++++--------- src/cache/ftcimage.c | 2 +- src/cff/cffobjs.c | 4 +-- src/gxvalid/gxvfgen.c | 8 ++--- src/gzip/zutil.c | 8 ++--- src/gzip/zutil.h | 5 ++- 10 files changed, 98 insertions(+), 49 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4d2867e3c..bfb902cc3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +2006-04-29 Werner Lemberg + + Further C library abstraction. Based on a patch from + msn2@bidyut.com. + + * include/freetype/config/ftstdlib.h (FT_CHAR_BIT, FT_FILE, + ft_fopen, ft_fclose, ft_fseek, ft_ftell, ft_fread, ft_smalloc, + ft_scalloc, ft_srealloc, ft_sfree, ft_labs): New wrapper macros for + C library functions. Update all users accordingly (and catch some + other places where the C library function was used instead of the + wrapper functions). + + * src/base/ftsystem.c: Don't include stdio.h and stdlib.h. + * src/gzip/zutil.h [MSDOS && !(__TURBOC__ || __BORLANDC__)]: Don't + include malloc.h. + 2006-04-28 Werner Lemberg * src/lzw/ftlzw.c, src/lzw/zopen.c, src/lzw/zopen.h: Removed, diff --git a/include/freetype/config/ftstdlib.h b/include/freetype/config/ftstdlib.h index 09ccf0c23..aaba8b3b1 100644 --- a/include/freetype/config/ftstdlib.h +++ b/include/freetype/config/ftstdlib.h @@ -65,8 +65,9 @@ #include -#define FT_UINT_MAX UINT_MAX +#define FT_CHAR_BIT CHAR_BIT #define FT_INT_MAX INT_MAX +#define FT_UINT_MAX UINT_MAX #define FT_ULONG_MAX ULONG_MAX @@ -80,19 +81,19 @@ #include #define ft_isalnum isalnum -#define ft_isupper isupper -#define ft_islower islower #define ft_isdigit isdigit +#define ft_islower islower +#define ft_isupper isupper #define ft_isxdigit isxdigit #include +#define ft_memchr memchr #define ft_memcmp memcmp #define ft_memcpy memcpy #define ft_memmove memmove #define ft_memset memset -#define ft_memchr memchr #define ft_strcat strcat #define ft_strcmp strcmp #define ft_strcpy strcpy @@ -102,8 +103,21 @@ #define ft_strrchr strrchr + /**********************************************************************/ + /* */ + /* file handling */ + /* */ + /**********************************************************************/ + + #include +#define FT_FILE FILE +#define ft_fclose fclose +#define ft_fopen fopen +#define ft_fread fread +#define ft_fseek fseek +#define ft_ftell ftell #define ft_sprintf sprintf @@ -117,9 +131,32 @@ #include #define ft_qsort qsort + #define ft_exit exit /* only used to exit from unhandled exceptions */ + + /**********************************************************************/ + /* */ + /* memory allocation */ + /* */ + /**********************************************************************/ + + +#define ft_scalloc calloc +#define ft_sfree free +#define ft_smalloc malloc +#define ft_srealloc realloc + + + /**********************************************************************/ + /* */ + /* miscellaneous */ + /* */ + /**********************************************************************/ + + #define ft_atol atol +#define ft_labs labs /**********************************************************************/ @@ -135,13 +172,13 @@ /* jmp_buf is defined as a macro */ /* on certain platforms */ -#define ft_setjmp setjmp /* same thing here */ #define ft_longjmp longjmp /* likewise */ +#define ft_setjmp setjmp /* same thing here */ - /* the following is only used for debugging purposes, i.e. when */ - /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */ - /* */ + /* the following is only used for debugging purposes, i.e., if */ + /* FT_DEBUG_LEVEL_ERROR or FT_DEBUG_LEVEL_TRACE are defined */ + #include diff --git a/include/freetype/fttypes.h b/include/freetype/fttypes.h index 7727ebb55..fc65404bd 100644 --- a/include/freetype/fttypes.h +++ b/include/freetype/fttypes.h @@ -4,7 +4,7 @@ /* */ /* FreeType simple types definitions (specification only). */ /* */ -/* Copyright 1996-2001, 2002, 2004 by */ +/* Copyright 1996-2001, 2002, 2004, 2006 by */ /* David Turner, Robert Wilhelm, and Werner Lemberg. */ /* */ /* This file is part of the FreeType project, and may only be used, */ @@ -308,7 +308,7 @@ FT_BEGIN_HEADER /* FT_Offset */ /* */ /* */ - /* This is equivalent to the ANSI C `size_t' type, i.e. the largest */ + /* This is equivalent to the ANSI C `size_t' type, i.e., the largest */ /* _unsigned_ integer type used to express a file size or position, */ /* or a memory block size. */ /* */ @@ -321,7 +321,7 @@ FT_BEGIN_HEADER /* FT_PtrDist */ /* */ /* */ - /* This is equivalent to the ANSI C `ptrdiff_t' type, i.e. the */ + /* This is equivalent to the ANSI C `ptrdiff_t' type, i.e., the */ /* largest _signed_ integer type used to express the distance */ /* between two pointers. */ /* */ diff --git a/src/base/ftmac.c b/src/base/ftmac.c index 3be12cffc..5aed8965e 100644 --- a/src/base/ftmac.c +++ b/src/base/ftmac.c @@ -196,9 +196,9 @@ /* build up a complete face name */ ft_strcpy( fullName, famName ); if ( style & bold ) - strcat( fullName, " Bold" ); + ft_strcat( fullName, " Bold" ); if ( style & italic ) - strcat( fullName, " Italic" ); + ft_strcat( fullName, " Italic" ); /* compare with the name we are looking for */ if ( ft_strcmp( fullName, fontName ) == 0 ) @@ -292,13 +292,13 @@ #if defined( __MWERKS__ ) && !TARGET_RT_MAC_MACHO -#define STREAM_FILE( stream ) ( (FILE*)stream->descriptor.pointer ) +#define STREAM_FILE( stream ) ( (FT_FILE*)stream->descriptor.pointer ) FT_CALLBACK_DEF( void ) ft_FSp_stream_close( FT_Stream stream ) { - fclose( STREAM_FILE( stream ) ); + ft_fclose( STREAM_FILE( stream ) ); stream->descriptor.pointer = NULL; stream->size = 0; @@ -312,14 +312,14 @@ unsigned char* buffer, unsigned long count ) { - FILE* file; + FT_FILE* file; file = STREAM_FILE( stream ); - fseek( file, offset, SEEK_SET ); + ft_fseek( file, offset, SEEK_SET ); - return (unsigned long)fread( buffer, 1, count, file ); + return (unsigned long)ft_fread( buffer, 1, count, file ); } #endif /* __MWERKS__ && !TARGET_RT_MAC_MACHO */ diff --git a/src/base/ftsystem.c b/src/base/ftsystem.c index 8900e95c0..f61a3edfb 100644 --- a/src/base/ftsystem.c +++ b/src/base/ftsystem.c @@ -33,9 +33,6 @@ #include FT_ERRORS_H #include FT_TYPES_H -#include -#include - /*************************************************************************/ /* */ @@ -74,7 +71,7 @@ { FT_UNUSED( memory ); - return malloc( size ); + return ft_smalloc( size ); } @@ -107,7 +104,7 @@ FT_UNUSED( memory ); FT_UNUSED( cur_size ); - return realloc( block, new_size ); + return ft_srealloc( block, new_size ); } @@ -130,7 +127,7 @@ { FT_UNUSED( memory ); - free( block ); + ft_sfree( block ); } @@ -152,7 +149,7 @@ /* We use the macro STREAM_FILE for convenience to extract the */ /* system-specific stream handle from a given FreeType stream object */ -#define STREAM_FILE( stream ) ( (FILE*)stream->descriptor.pointer ) +#define STREAM_FILE( stream ) ( (FT_FILE*)stream->descriptor.pointer ) /*************************************************************************/ @@ -169,7 +166,7 @@ FT_CALLBACK_DEF( void ) ft_ansi_stream_close( FT_Stream stream ) { - fclose( STREAM_FILE( stream ) ); + ft_fclose( STREAM_FILE( stream ) ); stream->descriptor.pointer = NULL; stream->size = 0; @@ -203,14 +200,14 @@ unsigned char* buffer, unsigned long count ) { - FILE* file; + FT_FILE* file; file = STREAM_FILE( stream ); - fseek( file, offset, SEEK_SET ); + ft_fseek( file, offset, SEEK_SET ); - return (unsigned long)fread( buffer, 1, count, file ); + return (unsigned long)ft_fread( buffer, 1, count, file ); } @@ -220,13 +217,13 @@ FT_Stream_Open( FT_Stream stream, const char* filepathname ) { - FILE* file; + FT_FILE* file; if ( !stream ) return FT_Err_Invalid_Stream_Handle; - file = fopen( filepathname, "rb" ); + file = ft_fopen( filepathname, "rb" ); if ( !file ) { FT_ERROR(( "FT_Stream_Open:" )); @@ -235,9 +232,9 @@ return FT_Err_Cannot_Open_Resource; } - fseek( file, 0, SEEK_END ); - stream->size = ftell( file ); - fseek( file, 0, SEEK_SET ); + ft_fseek( file, 0, SEEK_END ); + stream->size = ft_ftell( file ); + ft_fseek( file, 0, SEEK_SET ); stream->descriptor.pointer = file; stream->pathname.pointer = (char*)filepathname; @@ -273,7 +270,7 @@ FT_Memory memory; - memory = (FT_Memory)malloc( sizeof ( *memory ) ); + memory = (FT_Memory)ft_smalloc( sizeof ( *memory ) ); if ( memory ) { memory->user = 0; diff --git a/src/cache/ftcimage.c b/src/cache/ftcimage.c index 500c52492..15d4e80c8 100644 --- a/src/cache/ftcimage.c +++ b/src/cache/ftcimage.c @@ -122,7 +122,7 @@ bitg = (FT_BitmapGlyph)glyph; - size = bitg->bitmap.rows * labs( bitg->bitmap.pitch ) + + size = bitg->bitmap.rows * ft_labs( bitg->bitmap.pitch ) + sizeof ( *bitg ); } break; diff --git a/src/cff/cffobjs.c b/src/cff/cffobjs.c index 56c1fc0f8..2d1204e38 100644 --- a/src/cff/cffobjs.c +++ b/src/cff/cffobjs.c @@ -612,8 +612,8 @@ /* double check */ if ( !(flags & FT_STYLE_FLAG_BOLD) && cffface->style_name ) - if ( !strncmp( cffface->style_name, "Bold", 4 ) || - !strncmp( cffface->style_name, "Black", 5 ) ) + if ( !ft_strncmp( cffface->style_name, "Bold", 4 ) || + !ft_strncmp( cffface->style_name, "Black", 5 ) ) flags |= FT_STYLE_FLAG_BOLD; cffface->style_flags = flags; diff --git a/src/gxvalid/gxvfgen.c b/src/gxvalid/gxvfgen.c index ca077b156..2af9a0da4 100644 --- a/src/gxvalid/gxvfgen.c +++ b/src/gxvalid/gxvfgen.c @@ -5,7 +5,7 @@ /* Generate feature registry data for gxv `feat' validator. */ /* This program is derived from gxfeatreg.c in gxlayout. */ /* */ -/* Copyright 2004, 2005 by Masatake YAMATO and Redhat K.K. */ +/* Copyright 2004, 2005, 2006 by Masatake YAMATO and Redhat K.K. */ /* */ /* This file may only be used, */ /* modified, and distributed under the terms of the FreeType project */ @@ -464,9 +464,9 @@ printf( " {%1d, %1d, %1d, %2d}, /* %s */\n", feat_name ? 1 : 0, - ( feat_name && - ( strncmp( feat_name, - APPLE_RESERVED, APPLE_RESERVED_LENGTH ) == 0 ) + ( feat_name && + ( ft_strncmp( feat_name, + APPLE_RESERVED, APPLE_RESERVED_LENGTH ) == 0 ) ) ? 1 : 0, featreg_table[i].exclusive ? 1 : 0, nSettings, diff --git a/src/gzip/zutil.c b/src/gzip/zutil.c index 5da9f9813..0b47dd420 100644 --- a/src/gzip/zutil.c +++ b/src/gzip/zutil.c @@ -157,8 +157,8 @@ void zcfree (voidpf opaque, voidpf ptr) #ifndef MY_ZCALLOC /* Any system without a special alloc function */ #ifndef STDC -extern voidp calloc OF((uInt items, uInt size)); -extern void free OF((voidpf ptr)); +extern voidp ft_scalloc OF((uInt items, uInt size)); +extern void ft_sfree OF((voidpf ptr)); #endif voidpf zcalloc (opaque, items, size) @@ -167,14 +167,14 @@ voidpf zcalloc (opaque, items, size) unsigned size; { if (opaque) items += size - size; /* make compiler happy */ - return (voidpf)calloc(items, size); + return (voidpf)ft_scalloc(items, size); } void zcfree (opaque, ptr) voidpf opaque; voidpf ptr; { - free(ptr); + ft_sfree(ptr); if (opaque) return; /* make compiler happy */ } diff --git a/src/gzip/zutil.h b/src/gzip/zutil.h index ce02022aa..5f2d54313 100644 --- a/src/gzip/zutil.h +++ b/src/gzip/zutil.h @@ -80,7 +80,6 @@ typedef unsigned long ulg; # include # endif # else /* MSC or DJGPP */ -# include # endif #endif @@ -95,7 +94,7 @@ typedef unsigned long ulg; #if defined(VAXC) || defined(VMS) # define OS_CODE 0x02 # define F_OPEN(name, mode) \ - fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") + ft_fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") #endif #ifdef AMIGA @@ -141,7 +140,7 @@ typedef unsigned long ulg; #endif #ifndef F_OPEN -# define F_OPEN(name, mode) fopen((name), (mode)) +# define F_OPEN(name, mode) ft_fopen((name), (mode)) #endif /* functions */