Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
graphics
tgif
tgif-4.2.5-HAVE_IMLIB.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File tgif-4.2.5-HAVE_IMLIB.patch of Package tgif
--- README.libidn.original 2021-01-03 09:34:28.835096054 +0100 +++ README.libidn 2021-01-03 09:34:11.018864376 +0100 @@ -0,0 +1,17 @@ +Watchout! +Recent distributions of linux always have stringprep_convert as part of +libidn. Due to this a code simplification has been introduced that can +be controlled by the compile time switch: + +MOREDEFINES = -DHAVE_LIBIDN + +in either Tgif.tmpl and / or Tgif.tmp-linux. + +If this is defined (and libidn is linked to tgif) the call to +stringprep_convert is used directly, seveal function pointer definitions +within inmethod.c are commented out. + +To revert to the original behavior simply remove the -DHAVE_LIBIDN from the +compile time parameters and you will be back to the original behavior. + +Dieter Jurzitza / 2021-01-03 --- Tgif.tmpl.original 2011-06-28 04:04:59.000000000 +0200 +++ Tgif.tmpl 2021-01-02 23:29:59.920378207 +0100 @@ -53,7 +53,7 @@ -DDEFATTRGROUP=\"TANGRAM-II:Declaration:Events:Messages:Rewards:Initialization:Watches\" \@@\ -D_NO_NKF -D_NO_CHINPUT -D_NO_XCIN \@@\ -DUSE_XT_INITIALIZE -DPTHREAD -MOREDEFINES = +MOREDEFINES = -DHAVE_LIBIDN XCOMM ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ XCOMM Please see Imakefile for more defines to be added to MOREDEFINES above --- Tgif.tmpl-linux.original 2011-06-28 04:04:59.000000000 +0200 +++ Tgif.tmpl-linux 2021-01-03 09:27:03.720978973 +0100 @@ -53,7 +53,7 @@ -DDEFATTRGROUP=\"TANGRAM-II:Declaration:Events:Messages:Rewards:Initialization:Watches\" \@@\ -D_NO_NKF -D_NO_CHINPUT -D_NO_XCIN \@@\ -DUSE_XT_INITIALIZE -DPTHREAD -MOREDEFINES = +MOREDEFINES = -DHAVE_LIBIDN XCOMM ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ XCOMM Please see Imakefile for more defines to be added to MOREDEFINES above --- tgifdefs.h.original 2011-06-28 04:04:59.000000000 +0200 +++ tgifdefs.h 2021-01-06 19:26:16.567075162 +0100 @@ -37,6 +37,13 @@ #include <arpa/inet.h> #include <netdb.h> +#ifdef HAVE_LIBIDN +#include <stringprep.h> +#endif /* HAVE_LIBIDN */ + +/* avoid messages about unused variables ... */ +#define UNUSED(p) ( (void) (p) ) + #ifdef HAVE_GETTIMEOFDAY #undef _NO_GETTIMEOFDAY #endif /* HAVE_GETTIMEOFDAY */ --- inmethod.e.original 2011-06-28 04:04:57.000000000 +0200 +++ inmethod.e 2021-01-03 08:22:18.165350255 +0100 @@ -36,10 +36,16 @@ #define extern #endif /*_INCLUDE_FROM_INMETHOD_C_*/ +#ifndef HAVE_LIBIDN extern int Tgim_has_stringprep_convert ARGS_DECL((void)); extern char *Tgim_stringprep_convert ARGS_DECL((const char *str, const char *to_codeset, const char *from_codeset)); +#define IDNSTRSZ 1024 +#define LIBDIRS ((char const*[]) {"/lib/", "/lib64/", "/usr/lib/", "/usr/lib64/", "/usr/local/lib/", "/usr/local/lib64/"}) +#define LIBDIRSELEM 6 +#define LIBIDN "libidn.so." +#endif /* HAVE_LIBIDN */ extern void CleanUpInputMethods ARGS_DECL((void)); extern int InitInputMethods ARGS_DECL((void)); --- inmethod.c.original 2011-06-28 04:04:57.000000000 +0200 +++ inmethod.c 2021-01-03 08:54:40.718538775 +0100 @@ -637,6 +637,7 @@ } }; +#ifndef HAVE_LIBIDN static void *gpLibIdnHandle=NULL; static Tgim_stringprep_convert_Func *gpfn_stringprep_convert=NULL; @@ -654,7 +655,24 @@ void InitTgim_stringprep_convert() { #if (!defined(_NO_IDNLIB) || defined(HAVE_LIBZ)) - gpLibIdnHandle = OPEN_DL("libidn.so", OPEN_DL_MODE); + int loop, len; + char libidnname[IDNSTRSZ], pathname[IDNSTRSZ]; + extern void list_libdirectory (char *dirname, char *libidnname, int *done); + + /* no better idea - loop through the list of libdirs and search for the entry with LIBIDN - + libidnname will contain the value at the end. */ + for (loop=0; loop < LIBDIRSELEM; loop ++){ + sprintf (&pathname[0], "%s", LIBDIRS[loop]); + list_libdirectory(&pathname[0], &libidnname[0], &loop); + } + if ((len=readlink(&libidnname[0], &libidnname[0], IDNSTRSZ-1))>0){ + /* readlink() does not null terminate the string. Let us do this manually ... */ + libidnname[len]='\0'; + } + else { + libidnname[0]='\0'; + } + gpLibIdnHandle = OPEN_DL(&libidnname[0], OPEN_DL_MODE); if (gpLibIdnHandle != NULL) { gpfn_stringprep_convert = (Tgim_stringprep_convert_Func*)GET_DL_SYM(gpLibIdnHandle, @@ -664,6 +682,33 @@ gpLibIdnHandle = NULL; } } +} +/* Search for LIBIDN within dirname and store the result in libidnname */ +void list_libdirectory(char *dirname, char *libidnname, int *done){ + /* Scan files in directory */ + struct dirent **files; + int n, i; + + n = scandir(dirname, &files, NULL, alphasort); + + /* Loop through file names */ + if (n > 0){ + for (i = 0; i < n; i++) { + /* Get pointer to file entry */ + struct dirent *ent = files[i]; + if (strstr (ent->d_name, LIBIDN)){ + /* found it -> break the loops (both here and in the calling function ) */ + i=n; + *done=LIBDIRSELEM; + sprintf(libidnname, "%s%s", dirname, ent->d_name); + } + } + /* Release file names */ + for (i = 0; i < n; i++) { + free(files[i]); + } + free(files); + } #endif /* (!defined(_NO_IDNLIB) || defined(HAVE_LIBZ)) */ } @@ -687,10 +732,13 @@ #endif /* (!defined(_NO_IDNLIB) || defined(HAVE_LIBZ)) */ return NULL; } +#endif /* HAVE_LIBIDN */ void CleanUpInputMethods() { - CleanUpTgim_stringprep_convert(); +#ifndef HAVE_LIBIDN + CleanUpTgim_stringprep_convert(); +#endif /* HAVE_LIBIDN */ if (gnInputMethodIndex != INVALID && gstIMInfo[gnInputMethodIndex].pCleanUpFunc != NULL) { (gstIMInfo[gnInputMethodIndex].pCleanUpFunc)(mainDisplay, mainWindow); @@ -815,10 +863,12 @@ fprintf(stderr, "\n"); } } +#ifndef HAVE_LIBIDN if (gnSingleOrDoubleByteInputMethod == TGIM_SBIM && gnInputMethod != INVALID) { InitTgim_stringprep_convert(); } +#endif /* HAVE_LIBIDN */ return TRUE; } --- text.c.original 2021-01-02 21:31:04.708772649 +0100 +++ text.c 2021-01-03 08:51:28.352008561 +0100 @@ -3808,8 +3808,12 @@ char *s; int has_ch; { +#ifdef HAVE_LIBIDN + if (has_ch >= 2 && !canvasFontDoubleByte) { +#else if (has_ch >= 2 && !canvasFontDoubleByte && Tgim_has_stringprep_convert()) { +#endif char *psz=NULL, *psz1=NULL, *psz2=NULL, *psz_encoding=NULL; char buf[MAXSTRING]; @@ -3830,8 +3834,12 @@ *psz2 = '-'; } if (psz_encoding != NULL) { - psz = Tgim_stringprep_convert(s, psz_encoding, "utf-8"); - if (psz != NULL && strlen(psz) == 1) { +#ifdef HAVE_LIBIDN + psz = stringprep_convert(s, psz_encoding, "utf-8"); +#else + psz = Tgim_stringprep_convert(s, psz_encoding, "utf-8"); +#endif /* HAVE_LIBIDN */ + if (psz != NULL && strlen(psz) == 1) { s[0] = psz[0]; s[1] = '\0'; has_ch = 1;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor