From 421bb589e67d1bbdd9b052522417481b67cc0a12 Mon Sep 17 00:00:00 2001 From: Priyeshkkumar Date: Mon, 29 Jun 2020 21:53:44 +0530 Subject: [PATCH] Added functions to initialize and un-initialize logging --- [priyesh]ChangeLog | 13 +++++++++++- include/freetype/internal/ftdebug.h | 19 +++++++++++++++++ src/base/ftdebug.c | 32 +++++++++++++++++++++++++++++ src/base/ftinit.c | 10 +++++++++ 4 files changed, 73 insertions(+), 1 deletion(-) diff --git a/[priyesh]ChangeLog b/[priyesh]ChangeLog index 0f84213b6..7c91f11d8 100644 --- a/[priyesh]ChangeLog +++ b/[priyesh]ChangeLog @@ -12,4 +12,15 @@ * include/freetype/internal/ftdebug.h: Created an environment for dlg support in FreeType. - \ No newline at end of file + + * include/freetype/internal/ftdebug.h: Added functions `ft_logging_init()` and `ft_logging_deinit()` for + initializing and un-initalizing FILE*. + + * src/base/ftdebug.c: + 1. Added a FILE* to write logs to file + 2. Added function definitions for functions + `ft_logging_init()` and `ft_logging_deinit()`. + + * src/base/ftinit.c: + 1. Added a function call to `ft_logging_init()` in `FT_Init_FreeType()` if FT_LOGGING macro is enabled. + 2. Added a function call to `ft_logging_deinit()` in `FT_Done_FreeType()` if FT_LOGGING macro is enabled. \ No newline at end of file diff --git a/include/freetype/internal/ftdebug.h b/include/freetype/internal/ftdebug.h index 469220c9c..4bc810486 100644 --- a/include/freetype/internal/ftdebug.h +++ b/include/freetype/internal/ftdebug.h @@ -307,6 +307,25 @@ FT_BEGIN_HEADER FT_BASE( void ) ft_debug_init( void ); +#ifdef FT_LOGGING + + /************************************************************************ + * + * If FT_LOGGING macro is enabled, Freetype needs to initialize and + * un-initialize FILE* using following functions + * These functions are defined in ftdebug.c + * + */ + + FT_BASE( void ) + ft_logging_init( void ); + + FT_BASE( void ) + ft_logging_deinit( void ); + + +#endif /* FT_LOGGING */ + FT_END_HEADER #endif /* FTDEBUG_H_ */ diff --git a/src/base/ftdebug.c b/src/base/ftdebug.c index 62cf680b0..b5e4a4a7c 100644 --- a/src/base/ftdebug.c +++ b/src/base/ftdebug.c @@ -314,5 +314,37 @@ #endif /* !FT_DEBUG_LEVEL_TRACE */ +#ifdef FT_LOGGING + + + /****************************************************************** + * If FT_LOGGING is enabled FreeType needs a FILE* to write logs + * to file. + */ + static FILE* fileptr = NULL; + + + + /******************************************************************* + * + * If FT_LOGGING is enabled, FreeType needs a FILE* to write logs + * therefore it uses `ft_logging_init()` function to initialize a + * FILE* and `ft_logging_deinit()` to un-initialize the FILE* + * + */ + + FT_BASE_DEF( void ) + ft_logging_init( void ) + { + fileptr = fopen( "freetype2.logs", "w" ); + } + + FT_BASE_DEF( void ) + ft_logging_deinit( void ) + { + fclose( fileptr ); + } + +#endif /* FT_LOGGING */ /* END */ diff --git a/src/base/ftinit.c b/src/base/ftinit.c index 0acc75e46..24d5dc710 100644 --- a/src/base/ftinit.c +++ b/src/base/ftinit.c @@ -202,6 +202,11 @@ FT_Memory memory; + /* If logging is enabled initialize the FILE* */ +#ifdef FT_LOGGING + ft_logging_init(); +#endif /* FT_LOGGING */ + /* check of `alibrary' delayed to `FT_New_Library' */ /* First of all, allocate a new system object -- this function is part */ @@ -248,6 +253,11 @@ /* discard memory manager */ FT_Done_Memory( memory ); + /* If logging is enabled we need to close the FILE* */ +#ifdef FT_LOGGING + ft_logging_deinit(); +#endif /* FT_LOGGING */ + return FT_Err_Ok; }