diff --git a/.gitignore b/.gitignore index 85b813b..92dacf9 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ alfont-2.0.6.tar.gz +/alfont-2.0.9.tar.gz diff --git a/alfont-2.0.6-linux.patch b/alfont-2.0.6-linux.patch deleted file mode 100644 index 93ba999..0000000 --- a/alfont-2.0.6-linux.patch +++ /dev/null @@ -1,79 +0,0 @@ ---- alfont-2.0.6/include/alfont.h~ 2006-11-30 13:48:16.000000000 +0100 -+++ alfont-2.0.6/include/alfont.h 2006-11-30 13:48:16.000000000 +0100 -@@ -10,9 +10,9 @@ - /* See FTL.txt (FreeType Project License) for license */ - - --#define ALFONT_WINDOWS //When compiling in WINDOWS,please uncomment this line. -+//#define ALFONT_WINDOWS //When compiling in WINDOWS,please uncomment this line. - //#define ALFONT_DOS //When compiling in DOS,please uncomment this line. --//#define ALFONT_LINUX //When compiling in LINUX,please uncomment this line. -+#define ALFONT_LINUX //When compiling in LINUX,please uncomment this line. - - - #ifndef ALFONT_H -@@ -461,4 +461,4 @@ - - Platform specifics - RISCOS-LATIN1 --*/ -\ No newline at end of file -+*/ ---- alfont-2.0.6/src/alfont.c~ 2006-11-30 16:12:55.000000000 +0100 -+++ alfont-2.0.6/src/alfont.c 2006-11-30 16:12:55.000000000 +0100 -@@ -450,7 +450,7 @@ - alfont_set_char_extra_spacing(font, 0); - - //Initial Font attribute -- font->language=""; /* Initial Language */ -+ font->language=strdup(""); /* Initial Language */ - font->type=0; /* Initial Code Convert */ - font->outline_top=0; /* Initial Font top outline width */ - font->outline_bottom=0; /* Initial Font bottom outline width */ -@@ -530,7 +530,7 @@ - alfont_set_char_extra_spacing(font, 0); - - //Initial Font attribute -- font->language=""; /* Initial Language */ -+ font->language=strdup(""); /* Initial Language */ - font->type=0; /* Initial Code Convert */ - font->outline_top=0; /* Initial Font top outline width */ - font->outline_bottom=0; /* Initial Font bottom outline width */ -@@ -871,7 +871,7 @@ - last_glyph_index = 0; - - #ifdef ALFONT_LINUX //Fix for Linux Unicode System(be converted) -- for (character = ugetxc(&(const char*)lpszW); character != 0; character = ugetxc(&(const char*)lpszW),character = ugetxc(&(const char*)lpszW)) { -+ for (character = ugetxc((const char**)&lpszW); character != 0; character = ugetxc((const char**)&lpszW),character = ugetxc((const char**)&lpszW)) { - #else - for (character = ugetxc(&(const char*)lpszW); character != 0; character = ugetxc(&(const char*)lpszW)) { - #endif -@@ -1957,7 +1957,7 @@ - last_glyph_index = 0; - - #ifdef ALFONT_LINUX //Fix for Linux Unicode System(be converted) -- for (character = ugetxc(&(const char*)lpszW); character != 0; character = ugetxc(&(const char*)lpszW),character = ugetxc(&(const char*)lpszW)) { -+ for (character = ugetxc((const char**)&lpszW); character != 0; character = ugetxc((const char**)&lpszW),character = ugetxc((const char**)&lpszW)) { - #else - for (character = ugetxc(&(const char*)lpszW); character != 0; character = ugetxc(&(const char*)lpszW)) { - #endif -@@ -2735,7 +2735,7 @@ - /* virtually draw char by char */ - last_glyph_index = 0; - #ifdef ALFONT_LINUX //Fix for Linux Unicode System(be converted) -- for (character = ugetxc(&(const char*)lpszW); character != 0; character = ugetxc(&(const char*)lpszW),character = ugetxc(&(const char*)lpszW)) { -+ for (character = ugetxc((const char**)&lpszW); character != 0; character = ugetxc((const char**)&lpszW),character = ugetxc((const char**)&lpszW)) { - #else - for (character = ugetxc(&(const char*)lpszW); character != 0; character = ugetxc(&(const char*)lpszW)) { - #endif -@@ -3712,7 +3712,9 @@ - if (language == NULL) { - language = ""; - } -- f->language=(char *)malloc(strlen(language)*sizeof(char)); -+ if (f->language) -+ free(f->language); -+ f->language=(char *)malloc((strlen(language)+1)*sizeof(char)); - strcpy(f->language,language); - } - diff --git a/alfont-2.0.9-build-fixes.patch b/alfont-2.0.9-build-fixes.patch new file mode 100644 index 0000000..57fbf20 --- /dev/null +++ b/alfont-2.0.9-build-fixes.patch @@ -0,0 +1,309 @@ +diff -up alfont-2.0.9/src/alfont.c~ alfont-2.0.9/src/alfont.c +--- alfont-2.0.9/src/alfont.c~ 2024-06-15 13:56:38.455325588 +0200 ++++ alfont-2.0.9/src/alfont.c 2024-06-15 13:56:43.799293099 +0200 +@@ -515,7 +515,7 @@ ALFONT_FONT *alfont_load_font_from_mem(c + memcpy((void *)font->data, (void *)data, data_len); + + /* load the font */ +- error = FT_New_Memory_Face(ft_library, font->data, font->data_size, 0, &font->face); ++ error = FT_New_Memory_Face(ft_library, (const FT_Byte *)font->data, font->data_size, 0, &font->face); + + if (error) { + free(font->data); +@@ -609,7 +609,7 @@ void alfont_textout_aa_ex(BITMAP *bmp, A + char *lpszW; + char *lpszW_tmp; + int x_tmp; +- int max_advancex; ++ int max_advancex=0; + char *lpszW_pointer=NULL; //used for freeing string + char *s_pointer=NULL; //used for original string fixed by autofix + char *s_pointer_temp=NULL; //temporary used for autofix string +@@ -618,11 +618,10 @@ void alfont_textout_aa_ex(BITMAP *bmp, A + int ret; //decide that if the ASCII Code convert to Unicode Code is all OK when used for autofix string or used for general convert. + int character; + int alpha_table[256]; +- int last_glyph_index; + int first_x=0, final_x=0, final_y=0; +- int curr_uformat; ++ int curr_uformat=0; + int first_flag=TRUE; //First Char flag +- BITMAP *masked_bmp; //the masked bmp used by Font hollow ++ BITMAP *masked_bmp=NULL; //the masked bmp used by Font hollow + + #ifdef ALFONT_DOS + iconv_t c_pt; +@@ -889,7 +888,6 @@ void alfont_textout_aa_ex(BITMAP *bmp, A + + /* draw char by char (using allegro unicode funcs) */ + acquire_bitmap(bmp); +- last_glyph_index = 0; + + if (f->fixed_width == TRUE) + { +@@ -978,7 +976,6 @@ void alfont_textout_aa_ex(BITMAP *bmp, A + real_x += v.x >> 6; + real_y += v.y >> 6; + }*/ +- last_glyph_index = glyph_index; + + /* draw only if exists */ + if ((cglyph.aa_available) && (cglyph.aabmp)) { +@@ -1774,18 +1771,18 @@ void alfont_textout_ex(BITMAP *bmp, ALFO + char *lpszW; + char *lpszW_tmp; + int x_tmp; +- int max_advancex; ++ int max_advancex=0; + char *lpszW_pointer=NULL; //used for freeing string + char *s_pointer=NULL; //used for original string fixed by autofix + char *s_pointer_temp=NULL; //temporary used for autofix string + char *precedingchar_pointer=NULL; //used for precedingchar character + int nLen; + int ret; //decide that if the ASCII Code convert to Unicode Code is all OK when used for autofix string or used for general convert. +- int character, last_glyph_index; ++ int character; + int first_x=0, final_x=0, final_y=0; +- int curr_uformat; ++ int curr_uformat=0; + int first_flag=TRUE; //First Char flag +- BITMAP *masked_bmp; //the masked bmp used by Font hollow ++ BITMAP *masked_bmp=NULL; //the masked bmp used by Font hollow + #ifdef ALFONT_DOS + iconv_t c_pt; + size_t fromlen, tolen; +@@ -2026,8 +2023,6 @@ void alfont_textout_ex(BITMAP *bmp, ALFO + + /* draw char by char (using allegro unicode funcs) */ + acquire_bitmap(bmp); +- last_glyph_index = 0; +- + + if (f->fixed_width == TRUE) + { +@@ -2115,7 +2110,6 @@ void alfont_textout_ex(BITMAP *bmp, ALFO + real_x += v.x >> 6; + real_y += v.y >> 6; + }*/ +- last_glyph_index = glyph_index; + + /* draw only if exists */ + if ((cglyph.mono_available) && (cglyph.bmp)) { +@@ -2628,14 +2622,14 @@ int alfont_text_height(ALFONT_FONT *f) { + int alfont_text_length(ALFONT_FONT *f, const char *str) { + char *lpszW; + char *lpszW_tmp; +- int max_advancex; ++ int max_advancex=0; + char *lpszW_pointer=NULL; //used for freeing string + char *str_pointer=NULL; //used for original string fixed by autofix + char *str_pointer_temp=NULL; //temporary used for autofix string + char *precedingchar_pointer=NULL; //used for precedingchar character + int nLen; + int ret; //decide that if the ASCII Code convert to Unicode Code is all OK when used for autofix string or used for general convert. +- int curr_uformat; ++ int curr_uformat=0; + int total_length = 0, character, last_glyph_index; + int glyph_index; + int glyph_index_tmp; +@@ -2953,7 +2947,7 @@ int alfont_text_length(ALFONT_FONT *f, c + } + + int alfont_char_length(ALFONT_FONT *f, int character) { +- int curr_uformat; ++ int curr_uformat=0; + int total_length = 0, last_glyph_index; + int glyph_index; + +@@ -3034,7 +3028,7 @@ int alfont_text_count(ALFONT_FONT *f, co + char *precedingchar_pointer=NULL; //used for precedingchar character + int nLen; + int ret; //decide that if the ASCII Code convert to Unicode Code is all OK when used for autofix string or used for general convert. +- int curr_uformat; ++ int curr_uformat=0; + int string_count=0; + #ifdef ALFONT_DOS + iconv_t c_pt; +@@ -3282,14 +3276,13 @@ int alfont_text_count(ALFONT_FONT *f, co + + int alfont_ugetc(ALFONT_FONT *f, const char *s) { + char *lpszW; +- char *lpszW_pointer=NULL; //used for freeing string + char *s_pointer=NULL; //used for original string fixed by autofix + char *s_pointer_temp=NULL; //temporary used for autofix string + char *precedingchar_pointer=NULL; //used for precedingchar character + int nLen; + int ret; //decide that if the ASCII Code convert to Unicode Code is all OK when used for autofix string or used for general convert. + int character; +- int curr_uformat; ++ int curr_uformat=0; + #ifdef ALFONT_DOS + iconv_t c_pt; + size_t fromlen, tolen; +@@ -3526,20 +3519,16 @@ int alfont_ugetc(ALFONT_FONT *f, const c + + int alfont_ugetx(ALFONT_FONT *f, char **s) { + char *lpszW; +- char *lpszW_pointer=NULL; //used for freeing string + char *s_pointer=NULL; //used for original string fixed by autofix + char *s_pointer_temp=NULL; //temporary used for autofix string + char *precedingchar_pointer=NULL; //used for precedingchar character + int nLen; + int ret; //decide that if the ASCII Code convert to Unicode Code is all OK when used for autofix string or used for general convert. + int character; +- int curr_uformat; ++ int curr_uformat=0; + +- char *lpszWS; ++ const char *lpszWS; + char *lpszWA; +- int sLen; //length before advances the *s pointer to the next character +- int aLen; //length after advances the *s pointer to the next character +- int lIndex; + + #ifdef ALFONT_DOS + iconv_t c_pt; +@@ -3551,8 +3540,6 @@ int alfont_ugetx(ALFONT_FONT *f, char ** + return 0; + } + +- sLen = strlen(*s); +- + nLen = strlen(*s) + 1; + s_pointer = (char *)malloc(nLen*sizeof(char)); + memset(s_pointer, 0, nLen); +@@ -3761,9 +3748,9 @@ int alfont_ugetx(ALFONT_FONT *f, char ** + //advances the *s pointer to the next character + + if (f->type==1) { +- ugetxc((char**)s); ++ ugetxc((const char**)s); + #ifdef ALFONT_LINUX +- ugetxc((char**)s); ++ ugetxc((const char**)s); + #endif + } + else if(f->type==2) { +@@ -3772,10 +3759,7 @@ int alfont_ugetx(ALFONT_FONT *f, char ** + ugetxc(&lpszWS); + #endif + #ifdef ALFONT_DOS +- if ((c_pt = iconv_open(f->language, "UTF-16LE")) == (iconv_t)-1) { +- aLen = strlen(lpszWS); +- } +- else { ++ if ((c_pt = iconv_open(f->language, "UTF-16LE")) != (iconv_t)-1) { + iconv(c_pt, NULL, NULL, NULL, NULL); + fromlen = strlen(lpszWS) + 1; + tolen = MB_CUR_MAX * fromlen * (sizeof(wchar_t) + 1); +@@ -3790,7 +3774,6 @@ int alfont_ugetx(ALFONT_FONT *f, char ** + free(lpszWA); + lpszWA = lpszWS + } +- aLen = strlen(lpszWA); + } + #else + setlocale(LC_CTYPE,f->language); +@@ -3798,14 +3781,8 @@ int alfont_ugetx(ALFONT_FONT *f, char ** + lpszWA = (char *)malloc(nLen*sizeof(char)); + memset(lpszWA, 0, nLen); + wcstombs(lpszWA, (const wchar_t *)lpszWS, nLen); +- aLen = strlen(lpszWA); + #endif + +- for (lIndex = 0; lIndex < sLen - aLen; lIndex++) +- { +- (*(*s)++); +- } +- + if (lpszWA) { + free(lpszWA); + } +@@ -3814,9 +3791,9 @@ int alfont_ugetx(ALFONT_FONT *f, char ** + #ifdef ALFONT_LINUX + set_uformat(U_UTF8); + #endif +- ugetxc((char**)s); ++ ugetxc((const char**)s); + #ifdef ALFONT_LINUX +- ugetxc((char**)s); ++ ugetxc((const char**)s); + #endif + } + +@@ -3842,20 +3819,16 @@ int alfont_ugetx(ALFONT_FONT *f, char ** + + int alfont_ugetxc(ALFONT_FONT *f, const char **s) { + char *lpszW; +- char *lpszW_pointer=NULL; //used for freeing string + char *s_pointer=NULL; //used for original string fixed by autofix + char *s_pointer_temp=NULL; //temporary used for autofix string + char *precedingchar_pointer=NULL; //used for precedingchar character + int nLen; + int ret; //decide that if the ASCII Code convert to Unicode Code is all OK when used for autofix string or used for general convert. + int character; +- int curr_uformat; ++ int curr_uformat=0; + +- char *lpszWS; ++ const char *lpszWS; + char *lpszWA; +- int sLen; //length before advances the *s pointer to the next character +- int aLen; //length after advances the *s pointer to the next character +- int lIndex; + + #ifdef ALFONT_DOS + iconv_t c_pt; +@@ -3867,8 +3840,6 @@ int alfont_ugetxc(ALFONT_FONT *f, const + return 0; + } + +- sLen = strlen(*s); +- + nLen = strlen(*s) + 1; + s_pointer = (char *)malloc(nLen*sizeof(char)); + memset(s_pointer, 0, nLen); +@@ -4088,10 +4059,7 @@ int alfont_ugetxc(ALFONT_FONT *f, const + ugetxc(&lpszWS); + #endif + #ifdef ALFONT_DOS +- if ((c_pt = iconv_open(f->language, "UTF-16LE")) == (iconv_t)-1) { +- aLen = strlen(lpszWS); +- } +- else { ++ if ((c_pt = iconv_open(f->language, "UTF-16LE")) != (iconv_t)-1) { + iconv(c_pt, NULL, NULL, NULL, NULL); + fromlen = strlen(lpszWS) + 1; + tolen = MB_CUR_MAX * fromlen * (sizeof(wchar_t) + 1); +@@ -4106,7 +4074,6 @@ int alfont_ugetxc(ALFONT_FONT *f, const + free(lpszWA); + lpszWA = lpszWS + } +- aLen = strlen(lpszWA); + } + #else + setlocale(LC_CTYPE,f->language); +@@ -4114,14 +4081,8 @@ int alfont_ugetxc(ALFONT_FONT *f, const + lpszWA = (char *)malloc(nLen*sizeof(char)); + memset(lpszWA, 0, nLen); + wcstombs(lpszWA, (const wchar_t *)lpszWS, nLen); +- aLen = strlen(lpszWA); + #endif + +- for (lIndex = 0; lIndex < sLen - aLen; lIndex++) +- { +- (*(*s)++); +- } +- + if (lpszWA) { + free(lpszWA); + } +@@ -4164,7 +4125,7 @@ int alfont_need_uconvert(ALFONT_FONT *f, + int need_unicode_convert=TRUE; + int nLen; + int ret; //decide that if the ASCII Code convert to Unicode Code is all OK when used for autofix string or used for general convert. +- int curr_uformat; ++ int curr_uformat=0; + #ifdef ALFONT_DOS + iconv_t c_pt; + size_t fromlen, tolen; diff --git a/alfont-2.0.9-linux.patch b/alfont-2.0.9-linux.patch new file mode 100644 index 0000000..9b3da99 --- /dev/null +++ b/alfont-2.0.9-linux.patch @@ -0,0 +1,58 @@ +diff -up alfont-2.0.9/include/alfont.h.linux alfont-2.0.9/include/alfont.h +--- alfont-2.0.9/include/alfont.h.linux 2009-02-01 23:52:34.000000000 +0100 ++++ alfont-2.0.9/include/alfont.h 2012-07-04 17:54:36.934125374 +0200 +@@ -10,9 +10,9 @@ + /* See FTL.txt (FreeType Project License) for license */ + + +-#define ALFONT_WINDOWS //When compiling in WINDOWS,please uncomment this line. ++//#define ALFONT_WINDOWS //When compiling in WINDOWS,please uncomment this line. + //#define ALFONT_DOS //When compiling in DOS,please uncomment this line. +-//#define ALFONT_LINUX //When compiling in LINUX,please uncomment this line. ++#define ALFONT_LINUX //When compiling in LINUX,please uncomment this line. + + + #ifndef ALFONT_H +@@ -468,4 +468,4 @@ TDS565 + + Platform specifics + RISCOS-LATIN1 +-*/ +\ No newline at end of file ++*/ +diff -up alfont-2.0.9/src/alfont.c.linux alfont-2.0.9/src/alfont.c +--- alfont-2.0.9/src/alfont.c.linux 2009-02-04 22:40:24.000000000 +0100 ++++ alfont-2.0.9/src/alfont.c 2012-07-05 12:09:47.299021581 +0200 +@@ -468,7 +468,7 @@ ALFONT_FONT *alfont_load_font(const char + alfont_set_char_extra_spacing(font, 0); + + //Initial Font attribute +- font->language=""; /* Initial Language */ ++ font->language=NULL; /* Initial Language */ + font->type=0; /* Initial Code Convert */ + font->outline_top=0; /* Initial Font top outline width */ + font->outline_bottom=0; /* Initial Font bottom outline width */ +@@ -548,7 +548,7 @@ ALFONT_FONT *alfont_load_font_from_mem(c + alfont_set_char_extra_spacing(font, 0); + + //Initial Font attribute +- font->language=""; /* Initial Language */ ++ font->language=NULL; /* Initial Language */ + font->type=0; /* Initial Code Convert */ + font->outline_top=0; /* Initial Font top outline width */ + font->outline_bottom=0; /* Initial Font bottom outline width */ +@@ -4823,12 +4823,13 @@ void alfont_set_char_extra_spacing(ALFON + + + void alfont_set_language(ALFONT_FONT *f, const char *language) { ++ free(f->language); + if (language == NULL) { + f->language = NULL; + } + else + { +- f->language=(char *)malloc(strlen(language)*sizeof(char)); ++ f->language=(char *)malloc((strlen(language)+1)*sizeof(char)); + strcpy(f->language,language); + } + } diff --git a/alfont-2.0.9-remove-alfont_get_string.patch b/alfont-2.0.9-remove-alfont_get_string.patch new file mode 100644 index 0000000..f4b76e4 --- /dev/null +++ b/alfont-2.0.9-remove-alfont_get_string.patch @@ -0,0 +1,284 @@ +Remove alfont_get_string + +alfont_get_string has a weird, weird API where its destination is char **out, +yet it does not return an allocated buffer in out, instead it uses _msize +on it to check if the passed in buffer is big enough ?? Which means the +parameter could have been a char * just as well ?? + +Anyways we don't have _msize on Linux, and no alfont using apps actually use +alfont_get_string(), so this patch just removes it completely, fixing the +_msize problem. + +Signed-off-by: Hans de Goede +diff -up alfont-2.0.9/include/alfont.h~ alfont-2.0.9/include/alfont.h +--- alfont-2.0.9/include/alfont.h~ 2012-07-29 11:51:08.000000000 +0200 ++++ alfont-2.0.9/include/alfont.h 2012-07-29 11:58:53.194121909 +0200 +@@ -103,8 +103,6 @@ ALFONT_DLL_DECLSPEC int alfont_ugetc(ALF + ALFONT_DLL_DECLSPEC int alfont_ugetx(ALFONT_FONT *f, char **s); //Returns the character pointered by `s' in the current encoding format, and advances the pointer to the next character after the one just returned + ALFONT_DLL_DECLSPEC int alfont_ugetxc(ALFONT_FONT *f, const char **s); //Returns the character pointered by `s' in the current encoding format, and advances the pointer to the next character after the one just returned + +-ALFONT_DLL_DECLSPEC void alfont_get_string(ALFONT_FONT *f, const char *s , char **out); //Gets the converted string pointered by `s' in the current encoding format +- + ALFONT_DLL_DECLSPEC void alfont_set_font_outline_top(ALFONT_FONT *f, int w); //Sets Font top outline width + ALFONT_DLL_DECLSPEC int alfont_get_font_outline_top(ALFONT_FONT *f); //Returns Font top outline width + ALFONT_DLL_DECLSPEC void alfont_set_font_outline_bottom(ALFONT_FONT *f, int w); //Sets Font bottom outline width +diff -up alfont-2.0.9/src/alfont.c~ alfont-2.0.9/src/alfont.c +--- alfont-2.0.9/src/alfont.c~ 2012-07-29 11:51:08.000000000 +0200 ++++ alfont-2.0.9/src/alfont.c 2012-07-29 11:58:44.277233388 +0200 +@@ -4156,256 +4156,6 @@ int alfont_ugetxc(ALFONT_FONT *f, const + return character; + } + +-void alfont_get_string(ALFONT_FONT *f, const char *s , char **out){ +- char *lpszW; +- char *lpszW_pointer=NULL; //used for freeing string +- char *s_pointer=NULL; //used for original string fixed by autofix +- char *s_pointer_temp=NULL; //temporary used for autofix string +- char *precedingchar_pointer=NULL; //used for precedingchar character +- int nLen; +- int ret; //decide that if the ASCII Code convert to Unicode Code is all OK when used for autofix string or used for general convert. +- int curr_uformat; +- +- #ifdef ALFONT_DOS +- iconv_t c_pt; +- size_t fromlen, tolen; +- char *sin, *sout; +- #endif +- +- if (s == NULL) { +- return; +- } +- +- nLen = strlen(s) + 1; +- s_pointer = (char *)malloc(nLen*sizeof(char)); +- memset(s_pointer, 0, nLen); +- strcpy(s_pointer, s); +- +- //Auto Fix for cutted string +- //For ASCII convert to unicode +- //Add the previous character to the s string +- //If find the cutted character, store it from the converted s string and remove it from the original s string +- if (f->autofix==TRUE) { +- if (f->type==2) { +- curr_uformat=get_uformat(); +- +- #ifdef ALFONT_DOS +- if ((c_pt = iconv_open("UTF-16LE", f->language)) != (iconv_t)-1) { +- +- fromlen = strlen(s) + 1; +- tolen = MB_CUR_MAX * fromlen * (sizeof(wchar_t) + 1); +- +- //add the previous character to the s string +- if (f->precedingchar != 0) { +- free(s_pointer); +- fromlen = strlen(s) + 1 + 1; +- tolen = MB_CUR_MAX * fromlen * (sizeof(wchar_t) + 1); +- s_pointer = (char *)malloc(tolen*sizeof(char)); +- memset(s_pointer, 0, tolen); +- precedingchar_pointer=(char *)malloc(2*sizeof(char)); +- memset(precedingchar_pointer, 0, 2); +- sprintf(precedingchar_pointer, "%c", f->precedingchar); +- strcpy(s_pointer,precedingchar_pointer); +- if (precedingchar_pointer) { +- free(precedingchar_pointer); +- precedingchar_pointer = NULL; +- } +- strcat(s_pointer, s); +- f->precedingchar = 0; +- } +- +- iconv(c_pt, NULL, NULL, NULL, NULL); +- lpszW = (char *)malloc(tolen*sizeof(char)); +- memset(lpszW, 0, tolen); +- sin = s; +- sout = lpszW; +- ret = iconv(c_pt, &sin, &fromlen, &sout, &tolen); +- iconv_close(c_pt); +- +- s_pointer_temp = s_pointer; +- +- if (ret == -1) { //If the ret is -1, the final one will can be a shortcutted character. +- //store the last character to precedingchar character +- //get the final character +- set_uformat(curr_uformat); +- while (*s_pointer_temp != '\0') { +- f->precedingchar = *s_pointer_temp; +- s_pointer_temp++; +- } +- //remove the final character +- s_pointer_temp--; +- *s_pointer_temp = '\0'; +- } +- if (lpszW) { +- free(lpszW); +- lpszW = NULL; +- } +- } +- #else +- +- +- #ifdef ALFONT_LINUX +- nLen = strlen(s_pointer) * 5 + 1; +- #else +- nLen = strlen(s_pointer) + 1; +- #endif +- +- //add the previous character to the s string +- if (f->precedingchar != 0) { +- free(s_pointer); +- nLen = strlen(s) + 1 + 1; +- s_pointer = (char *)malloc(nLen*sizeof(char)); +- memset(s_pointer, 0, nLen); +- precedingchar_pointer=(char *)malloc(2*sizeof(char)); +- memset(precedingchar_pointer, 0, 2); +- sprintf(precedingchar_pointer, "%c", f->precedingchar); +- strcpy(s_pointer,precedingchar_pointer); +- if (precedingchar_pointer) { +- free(precedingchar_pointer); +- precedingchar_pointer = NULL; +- } +- strcat(s_pointer, s); +- f->precedingchar = 0; +- } +- +- setlocale(LC_CTYPE,f->language); +- set_uformat(U_UNICODE); +- +- lpszW = (char *)malloc(nLen*sizeof(wchar_t)); +- memset(lpszW, 0, nLen); +- ret = mbstowcs((wchar_t *)lpszW, s_pointer, nLen); +- +- s_pointer_temp = s_pointer; +- +- if (ret == -1) { //If the ret is -1, the final one will can be a shortcutted character. +- //store the last character to precedingchar character +- //get the final character +- set_uformat(curr_uformat); +- while (*s_pointer_temp != '\0') { +- f->precedingchar = *s_pointer_temp; +- s_pointer_temp++; +- } +- //remove the final character +- s_pointer_temp--; +- *s_pointer_temp = '\0'; +- } +- if (lpszW) { +- free(lpszW); +- lpszW = NULL; +- } +- #endif +- //recover to original codepage +- set_uformat(curr_uformat); +- } +- } +- +- +- //Font Code Convert +- +- +- if (f->type==1) { +- +- #ifdef ALFONT_DOS +- if ((c_pt = iconv_open(f->language, "UTF-16LE")) == (iconv_t)-1) { +- lpszW = (char *)s_pointer; +- } +- else { +- iconv(c_pt, NULL, NULL, NULL, NULL); +- fromlen = strlen(s_pointer) + 1; +- tolen = MB_CUR_MAX * fromlen * (sizeof(wchar_t) + 1); +- lpszW = (char *)malloc(tolen*sizeof(char)); +- memset(lpszW, 0, tolen); +- sin = s_pointer; +- sout = lpszW; +- ret = iconv(c_pt, &sin, &fromlen, &sout, &tolen); +- iconv_close(c_pt); +- if (ret == -1) { +- lpszW = (char *)s_pointer; +- } +- } +- #else +- setlocale(LC_CTYPE,f->language); +- nLen= MB_CUR_MAX * wcslen((const wchar_t*)s_pointer) + 1; +- lpszW = (char *)malloc(nLen*sizeof(char)); +- memset(lpszW, 0, nLen); +- wcstombs(lpszW, (const wchar_t *)s_pointer, nLen); +- #endif +- } +- else if(f->type==2) { +- curr_uformat=get_uformat(); +- +- #ifdef ALFONT_DOS +- if ((c_pt = iconv_open("UTF-16LE", f->language)) == (iconv_t)-1) { +- lpszW = (char *)s_pointer; +- } +- else { +- iconv(c_pt, NULL, NULL, NULL, NULL); +- fromlen = strlen(s_pointer) + 1; +- tolen = MB_CUR_MAX * fromlen * (sizeof(wchar_t) + 1); +- lpszW = (char *)malloc(tolen*sizeof(char)); +- memset(lpszW, 0, tolen); +- sin = s_pointer; +- sout = lpszW; +- ret = iconv(c_pt, &sin, &fromlen, &sout, &tolen); +- iconv_close(c_pt); +- if (ret == -1) { +- lpszW = (char *)s_pointer; +- } +- else { +- set_uformat(U_UNICODE); +- } +- } +- #else +- setlocale(LC_CTYPE,f->language); +- set_uformat(U_UNICODE); +- +- #ifdef ALFONT_LINUX +- nLen = strlen(s_pointer) * 5 + 1; +- #else +- nLen= strlen(s_pointer) + 1; +- #endif +- +- lpszW = (char *)malloc(nLen*sizeof(wchar_t)); +- memset(lpszW, 0, nLen); +- mbstowcs((wchar_t *)lpszW, s_pointer, nLen); +- #endif +- } +- else { +- #ifdef ALFONT_LINUX +- set_uformat(U_UTF8); +- nLen= ustrlen(s_pointer) + 1; +- #endif +- lpszW = (char *)s_pointer; +- } +- +- memset(*out, 0, _msize(*out)); +- if (_msize(*out) > 0 && _msize(lpszW) >= _msize(*out)) +- { +- memcpy(*out, lpszW, _msize(*out)); +- } +- else if (_msize(*out) > 0 && _msize(*out) > _msize(lpszW)) +- { +- memcpy(*out, lpszW, _msize(lpszW)); +- } +- +- if ((f->type==1)||(f->type==2)) { +- if (lpszW) +- free(lpszW); +- } +- +- if(s_pointer) { +- free(s_pointer); +- } +- +- #ifndef ALFONT_DOS +- setlocale(LC_CTYPE,""); +- #endif +- +- if (f->type==2) { +- set_uformat(curr_uformat); +- } +-} +- + int alfont_need_uconvert(ALFONT_FONT *f, const char *str) { + char *lpszW; + char *str_pointer=NULL; //used for original string fixed by autofix diff --git a/alfont.rpmlintrc b/alfont.rpmlintrc new file mode 100644 index 0000000..fc50c84 --- /dev/null +++ b/alfont.rpmlintrc @@ -0,0 +1,4 @@ +# -devel has no docs +addFilter("no-documentation") +# Source0 is not an URL +addFilter("invalid-url") diff --git a/alfont.spec b/alfont.spec index 6f941f0..6256dca 100644 --- a/alfont.spec +++ b/alfont.spec @@ -1,13 +1,15 @@ Name: alfont -Version: 2.0.6 -Release: 8%{?dist} +Version: 2.0.9 +Release: 32%{?dist} Summary: Font rendering library for the Allegro game library -Group: System Environment/Libraries License: FTL URL: http://chernsha.sitesled.com/ -# this is http://chernsha.sitesled.com/AlFont206.rar repackaged in .tgz format +# this is http://chernsha.sitesled.com/AlFont209.rar repackaged in .tgz format Source0: %{name}-%{version}.tar.gz -Patch0: alfont-2.0.6-linux.patch +Patch0: alfont-2.0.9-linux.patch +Patch1: alfont-2.0.9-remove-alfont_get_string.patch +Patch2: alfont-2.0.9-build-fixes.patch +BuildRequires: gcc BuildRequires: allegro-devel freetype-devel %description @@ -18,7 +20,6 @@ text using freetype fonts on Allegro bitmaps. %package devel Summary: Development files for %{name} -Group: Development/Libraries Requires: %{name} = %{version}-%{release} Requires: allegro-devel @@ -28,9 +29,13 @@ developing applications that use %{name}. %prep -%setup -q -%patch0 -p1 -z .linux -sed -i s'/\r//g' freetype/docs/FTL.TXT +%autosetup -p1 +for i in include/alfont*.h freetype/docs/FTL.TXT; do + sed -i.orig s'/\r//g' $i + iconv -f ISO-8859-1 -t UTF-8 $i > $i.utf8 + mv $i.utf8 $i + touch -r $i.orig $i +done %build @@ -40,6 +45,7 @@ sed -i s'/\r//g' freetype/docs/FTL.TXT gcc -fPIC -DPIC $RPM_OPT_FLAGS -Iinclude `freetype-config --cflags` \ -o src/alfont.o -c src/alfont.c gcc -shared -Wl,-soname,lib%{name}.so.2 -o lib%{name}.so.%{version} \ + $RPM_OPT_FLAGS $RPM_LD_FLAGS \ src/alfont.o $(freetype-config --libs) $(allegro-config --libs) @@ -52,22 +58,121 @@ ln -s lib%{name}.so.%{version} $RPM_BUILD_ROOT%{_libdir}/lib%{name}.so install -m 644 include/%{name}*.h $RPM_BUILD_ROOT%{_includedir} -%post -p /sbin/ldconfig -%postun -p /sbin/ldconfig +%ldconfig_scriptlets %files -%defattr(-,root,root,-) -%doc CHANGES.txt README.txt freetype/docs/FTL.TXT +%doc CHANGES.txt README.txt +%license freetype/docs/FTL.TXT %{_libdir}/lib%{name}.so.* %files devel -%defattr(-,root,root,-) %{_includedir}/%{name}*.h %{_libdir}/lib%{name}.so %changelog +* Fri Jan 16 2026 Fedora Release Engineering - 2.0.9-32 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Wed Jul 23 2025 Fedora Release Engineering - 2.0.9-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Thu Jan 16 2025 Fedora Release Engineering - 2.0.9-30 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Jul 17 2024 Fedora Release Engineering - 2.0.9-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Sat Jun 15 2024 Hans de Goede - 2.0.9-28 +- Fix FTBFS (rhbz#2260975) +- Use distro LD_FLAGS when linking + +* Mon Jan 22 2024 Fedora Release Engineering - 2.0.9-27 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 2.0.9-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Jul 19 2023 Fedora Release Engineering - 2.0.9-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Jan 18 2023 Fedora Release Engineering - 2.0.9-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Wed Jul 20 2022 Fedora Release Engineering - 2.0.9-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed Jan 19 2022 Fedora Release Engineering - 2.0.9-22 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 21 2021 Fedora Release Engineering - 2.0.9-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Mon Jan 25 2021 Fedora Release Engineering - 2.0.9-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Fri Jul 31 2020 Fedora Release Engineering - 2.0.9-19 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Mon Jul 27 2020 Fedora Release Engineering - 2.0.9-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jan 28 2020 Fedora Release Engineering - 2.0.9-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jul 24 2019 Fedora Release Engineering - 2.0.9-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Thu Jan 31 2019 Fedora Release Engineering - 2.0.9-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Thu Jul 12 2018 Fedora Release Engineering - 2.0.9-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Feb 07 2018 Fedora Release Engineering - 2.0.9-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Aug 02 2017 Fedora Release Engineering - 2.0.9-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 2.0.9-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 2.0.9-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Wed Feb 03 2016 Fedora Release Engineering - 2.0.9-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Jun 16 2015 Fedora Release Engineering - 2.0.9-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Aug 15 2014 Fedora Release Engineering - 2.0.9-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 2.0.9-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sat Aug 03 2013 Fedora Release Engineering - 2.0.9-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Wed Feb 13 2013 Fedora Release Engineering - 2.0.9-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sun Jul 29 2012 Hans de Goede - 2.0.9-3 +- Fix undefined reference to _msize + +* Wed Jul 18 2012 Fedora Release Engineering - 2.0.9-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jul 5 2012 Hans de Goede - 2.0.9-1 +- New upstream release 2.0.9 + +* Thu Jan 12 2012 Fedora Release Engineering - 2.0.6-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + * Fri Jul 15 2011 Hans de Goede - 2.0.6-8 - Rebuild for new allegro-4.4 diff --git a/sources b/sources index 1546682..de6b0e3 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -12ffff67b0089c70037ad3d3f6306b9f alfont-2.0.6.tar.gz +71112b3089f941a7cfd9e2eeae2f99df alfont-2.0.9.tar.gz