Check-in [c24bdd8c15]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:improved heuristic to resolve ICU symbols
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: c24bdd8c1506445b9d74940c9dc8ff8eaa1fc6e2
User & Date: chw 2015-04-01 09:06:25
Context
2015-04-01
10:41
again, improved heuristic to resolve ICU symbols check-in: daa805f15c user: chw tags: trunk
09:06
improved heuristic to resolve ICU symbols check-in: c24bdd8c15 user: chw tags: trunk
2015-03-30
10:07
fixed missing Expose events check-in: f2c2ec46ec user: chw tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to jni/tcl/pkgs/sqlite3.8.8.3/icu4c/dl_icu.c.

14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
static int libver = 0;
static sqlite3_mutex *lock = 0;

static void *
libicuuc_link(const char *basefn)
{
    static const int ver[] = {
	54, 53, 52, 51, 50, 49,
	4008, 4006, 4004, 4002, 4000,
	3008, 3006, 3004, 3002,
	-1
    };
    char fn[128];
    void *func = NULL;








|







14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
static int libver = 0;
static sqlite3_mutex *lock = 0;

static void *
libicuuc_link(const char *basefn)
{
    static const int ver[] = {
	55, 54, 53, 52, 51, 50, 49,
	4008, 4006, 4004, 4002, 4000,
	3008, 3006, 3004, 3002,
	-1
    };
    char fn[128];
    void *func = NULL;

72
73
74
75
76
77
78




79
80



81
82
83
84
85
86
87
88
89
90
91
92
93











94
95
96
97
98
99
100

	sqlite3_mutex_enter(lock);
	if (libver != 0) {
	    sqlite3_mutex_leave(lock);
	    goto dolink2;
	}
	for (i = 0; i < sizeof (ver) / sizeof (ver[0]); i++) {




	    if (ver[i] > 1000) {
		sprintf(fn, "%s_%d_%d", basefn, ver[i] / 1000, ver[i] % 1000);



	    } else if (ver > 0) {
		sprintf(fn, "%s_%d", basefn, ver[i]);
	    } else {
		strcpy(fn, basefn);
	    }
#ifdef ANDROID
	    dlerror();
#endif
	    func = dlsym(libicuuc_so, fn);
	    if (func != NULL) {
		libver = ver[i];
		break;
	    }











	}
	sqlite3_mutex_leave(lock);
#ifdef ANDROID
	if (func == NULL) {
	    __android_log_print(ANDROID_LOG_ERROR, "sqlite3_icu",
				"dlsym(\"%s\"): %s", basefn, dlerror());
	} else {







>
>
>
>


>
>
>













>
>
>
>
>
>
>
>
>
>
>







72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118

	sqlite3_mutex_enter(lock);
	if (libver != 0) {
	    sqlite3_mutex_leave(lock);
	    goto dolink2;
	}
	for (i = 0; i < sizeof (ver) / sizeof (ver[0]); i++) {
#ifdef ANDROID
	    int ver2 = ver[i];
#endif

	    if (ver[i] > 1000) {
		sprintf(fn, "%s_%d_%d", basefn, ver[i] / 1000, ver[i] % 1000);
#ifdef ANDROID
		ver2 = ver[i] / 1000 + ver[i] % 1000;
#endif
	    } else if (ver > 0) {
		sprintf(fn, "%s_%d", basefn, ver[i]);
	    } else {
		strcpy(fn, basefn);
	    }
#ifdef ANDROID
	    dlerror();
#endif
	    func = dlsym(libicuuc_so, fn);
	    if (func != NULL) {
		libver = ver[i];
		break;
	    }
#ifdef ANDROID
	    if (ver2 != ver[i]) {
		sprintf(fn, "%s_%d", basefn, ver2);
		dlerror();
		func = dlsym(libicuuc_so, fn);
		if (func != NULL) {
		    libver = ver2;
		    break;
		}
	    }
#endif
	}
	sqlite3_mutex_leave(lock);
#ifdef ANDROID
	if (func == NULL) {
	    __android_log_print(ANDROID_LOG_ERROR, "sqlite3_icu",
				"dlsym(\"%s\"): %s", basefn, dlerror());
	} else {