blob: b240e2010d7853e7a75e937f4d41e3a146a89c9b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
--- index.c.orig Mon Mar 10 01:06:16 2003
+++ index.c Mon Oct 27 22:10:18 2003
@@ -103,6 +103,12 @@
for (; *src; ++src) {
c = * (const unsigned char *) src;
+ if((c & 0x80) && *(src+1)) {
+ *dest++ = c;
+ *dest++ = *(src+1);
+ src++;
+ continue;
+ }
if (isspace( c )) {
*dest++ = ' ';
@@ -184,7 +190,7 @@
charcount = 0;
for (i = 0; i <= UCHAR_MAX; i++){
- if (islower (i) || (utf8_mode && i >= 0xC0))
+ if (islower (i) || (utf8_mode && i >= 0xC0) || (i>=0x80))
chartab [charcount++] = i;
}
@@ -293,6 +299,15 @@
/* FIXME. Optimize this inner loop. */
while (*word && start < end && *start != '\t') {
+ if ((*start & 0x80) && start+1<end && start[1]!='\t') {
+ if(start[0]!=word[0])
+ return ((unsigned)word[0]<(unsigned)start[0])?-2:1;
+ if(start[1]!=word[1])
+ return ((unsigned)word[1]<(unsigned)start[1])?-2:1;
+ word+=2;
+ start+=2;
+ continue;
+ }
if (!dbindex -> isspacealnum[* (const unsigned char *) start]) {
++start;
continue;
@@ -340,6 +355,8 @@
*start != '\t' &&
!dbindex -> isspacealnum[* (const unsigned char *) start])
{
+ if((*start & 0x80) && start[1]!='\t')
+ break;
++start;
}
|