diff options
-rw-r--r-- | chinese/Makefile | 1 | ||||
-rw-r--r-- | chinese/dictd/Makefile | 18 | ||||
-rw-r--r-- | chinese/dictd/files/patch-index.c | 71 | ||||
-rw-r--r-- | chinese/dictd/files/patch-libmaa::arg.c | 12 |
4 files changed, 102 insertions, 0 deletions
diff --git a/chinese/Makefile b/chinese/Makefile index 63c7269..723bfd3 100644 --- a/chinese/Makefile +++ b/chinese/Makefile @@ -28,6 +28,7 @@ SUBDIR += cwtex SUBDIR += cxterm SUBDIR += dia + SUBDIR += dictd SUBDIR += dictd-database SUBDIR += emacs20 SUBDIR += enscript diff --git a/chinese/dictd/Makefile b/chinese/dictd/Makefile new file mode 100644 index 0000000..4710032 --- /dev/null +++ b/chinese/dictd/Makefile @@ -0,0 +1,18 @@ +# New ports collection makefile for: dictd +# Date created: 19 July 2002 +# Whom: Kuang-che Wu <kcwu@ck.tp.edu.tw> +# +# $FreeBSD$ +# + +CATEGORIES= chinese + +MAINTAINER= kcwu@ck.tp.edu.tw + +MASTERDIR= ${.CURDIR}/../../net/dictd +EXTRA_PATCHES= ${.CURDIR}/files/patch-index.c \ + ${.CURDIR}/files/patch-libmaa::arg.c + +.include "${MASTERDIR}/Makefile" + +PKGNAMEPREFIX:= ${PKGNAMEPREFIX}tw- diff --git a/chinese/dictd/files/patch-index.c b/chinese/dictd/files/patch-index.c new file mode 100644 index 0000000..a257941 --- /dev/null +++ b/chinese/dictd/files/patch-index.c @@ -0,0 +1,71 @@ +--- index.c.orig Mon Apr 29 22:43:42 2002 ++++ index.c Fri Jul 19 05:23:01 2002 +@@ -120,6 +120,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 (!isspacealnum(*start)) { + ++start; + continue; +@@ -139,7 +148,11 @@ + ++start; + } + +- while (*start != '\t' && !isspacealnum(*start)) ++start; ++ while (*start != '\t' && !isspacealnum(*start)) ++ if((*start & 0x80) && start[1]!='\t') ++ break; ++ else ++ ++start; + + PRINTF(DBG_SEARCH,(" result = %d\n", + *word ? 1 : ((*start != '\t') ? -1 : 0))); +@@ -315,7 +328,6 @@ + int count = 0; + dictWord *datum; + const char *previous = NULL; +- + while (pt && pt < database->index->end) { + if (!compare( word, pt, database->index->end )) { + if (!previous || altcompare(previous, pt, database->index->end)) { +@@ -643,6 +655,7 @@ + char tmp; + dictWord *datum; + ++ if(*word & 0x80) return count; + #define CHECK \ + if ((pt = dict_index_search(buf, database->index)) \ + && !compare(buf, pt, database->index->end)) { \ +@@ -724,6 +737,11 @@ + if (isspace( *(const unsigned char *)w )) { + *pt++ = ' '; + } else { ++ if((*w & 0x80) && *(w+1)) { ++ *pt++=*w++; ++ *pt++=*w; ++ continue; ++ } + if (!isalnum( *(const unsigned char *)w )) continue; + *pt++ = tolower(*w); + } +@@ -790,6 +808,11 @@ + = binary_search( buf, i->start, i->end ); + } + for (j = '0'; j <= '9'; j++) { ++ buf[0] = j; ++ buf[1] = '\0'; ++ i->optStart[j] = binary_search( buf, i->start, i->end ); ++ } ++ for (j = 0x80; j <= 255; j++) { + buf[0] = j; + buf[1] = '\0'; + i->optStart[j] = binary_search( buf, i->start, i->end ); diff --git a/chinese/dictd/files/patch-libmaa::arg.c b/chinese/dictd/files/patch-libmaa::arg.c new file mode 100644 index 0000000..14176f4 --- /dev/null +++ b/chinese/dictd/files/patch-libmaa::arg.c @@ -0,0 +1,12 @@ +--- libmaa/arg.c.orig Wed Jul 17 05:21:04 2002 ++++ libmaa/arg.c Wed Jul 17 05:13:50 2002 +@@ -216,6 +216,9 @@ + ++pt; + + for (last = pt, len = 0; *pt; ++pt, ++len) { ++ if((*pt & 0x80) && pt[1]) { ++ ++pt, ++len; ++ } else + switch (*pt) { + case ' ': + case '\t': |