Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(16)

Side by Side Diff: third_party/hyphen/google.patch

Issue 12259025: Linux: apply a different hyphen patch. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixes Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 ? google.patch
2 Index: hyphen.c 1 Index: hyphen.c
3 =================================================================== 2 ===================================================================
4 RCS file: /cvsroot/hunspell/hyphen/hyphen.c,v 3 RCS file: /cvsroot/hunspell/hyphen/hyphen.c,v
5 retrieving revision 1.4 4 retrieving revision 1.8
6 diff -u -r1.4 hyphen.c 5 diff -u -r1.8 hyphen.c
7 --- hyphen.c» 1 Dec 2010 01:30:20 -0000» 1.4 6 --- hyphen.c» 13 Sep 2012 07:50:49 -0000» 1.8
8 +++ hyphen.c» 1 Mar 2012 05:18:32 -0000 7 +++ hyphen.c» 6 Feb 2013 17:31:51 -0000
9 @@ -242,12 +242,71 @@ 8 @@ -374,19 +374,28 @@
10 } 9 HyphenDict *
11 #endif 10 hnj_hyphen_load (const char *fn)
12 11 {
13 +#ifdef HYPHEN_CHROME_CLIENT 12 + HyphenDict *result;
14 +typedef struct { 13 + FILE *f;
15 + const unsigned char *data; 14 + f = fopen (fn, "r");
16 + size_t offset;
17 + size_t size;
18 +} hnj_file;
19 +
20 +static hnj_file *
21 +hnj_fopen (const unsigned char *data, size_t size)
22 +{
23 + hnj_file *f;
24 +
25 + f = hnj_malloc (sizeof(hnj_file));
26 + if (f == NULL) 15 + if (f == NULL)
27 + return NULL; 16 + return NULL;
28 + f->offset = 0; 17 +
29 + f->data = data; 18 + result = hnj_hyphen_load_file(f);
30 + f->size = size; 19 +
31 + return f; 20 + fclose(f);
21 + return result;
32 +} 22 +}
33 + 23 +
34 +static void 24 +HyphenDict *
35 +hnj_fclose (hnj_file *f) 25 +hnj_hyphen_load_file (FILE *f)
36 +{ 26 +{
37 + hnj_free (f);
38 +}
39 +
40 +static char *
41 +hnj_fgets (char *s, int size, hnj_file *f)
42 +{
43 + int i;
44 +
45 + if (f->offset >= f->size)
46 + return NULL;
47 + for (i = 0; i < size - 1; i++) {
48 + char c;
49 +
50 + if (f->offset >= f->size)
51 + break;
52 + c = f->data[f->offset++];
53 + if (c == '\r' || c == '\n')
54 + break;
55 + s[i] = c;
56 + }
57 + s[i] = '\0';
58 + return s;
59 +}
60 +#else
61 +typedef FILE hnj_file;
62 +#define hnj_fopen(fn, mode) fopen((fn), (mode))
63 +#define hnj_fclose(f) fclose(f)
64 +#define hnj_fgets(s, size, f) fgets((s), (size), (f))
65 +#endif
66 +
67 +#ifdef HYPHEN_CHROME_CLIENT
68 +HyphenDict *
69 +hnj_hyphen_load (const unsigned char *data, size_t size)
70 +#else
71 HyphenDict *
72 hnj_hyphen_load (const char *fn)
73 +#endif
74 {
75 HyphenDict *dict[2]; 27 HyphenDict *dict[2];
76 HashTab *hashtab; 28 HashTab *hashtab;
77 - FILE *f; 29 - FILE *f;
78 + hnj_file *f;
79 char buf[MAX_CHARS]; 30 char buf[MAX_CHARS];
80 char word[MAX_CHARS]; 31 int nextlevel = 0;
81 char pattern[MAX_CHARS]; 32 int i, j, k;
82 @@ -261,7 +320,11 @@
83 HashEntry *e; 33 HashEntry *e;
84 int nextlevel = 0; 34 int state_num = 0;
85 35 -
86 +#ifdef HYPHEN_CHROME_CLIENT 36 - f = fopen (fn, "r");
87 + f = hnj_fopen (data, size); 37 - if (f == NULL)
88 +#else 38 - return NULL;
89 f = fopen (fn, "r"); 39 -
90 +#endif 40 // loading one or two dictionaries (separated by NEXTLEVEL keyword)
91 if (f == NULL) 41 for (k = 0; k < 2; k++) {
92 return NULL; 42 hashtab = hnj_hash_new ();
93 43 @@ -497,7 +506,6 @@
94 @@ -291,7 +354,7 @@
95 /* read in character set info */
96 if (k == 0) {
97 for (i=0;i<MAX_NAME;i++) dict[k]->cset[i]= 0;
98 - if (fgets(dict[k]->cset, sizeof(dict[k]->cset),f) != NULL) {
99 + if (hnj_fgets(dict[k]->cset, sizeof(dict[k]->cset),f) != NULL) {
100 for (i=0;i<MAX_NAME;i++)
101 if ((dict[k]->cset[i] == '\r') || (dict[k]->cset[i] == '\n'))
102 dict[k]->cset[i] = 0;
103 @@ -304,7 +367,7 @@
104 dict[k]->utf8 = dict[0]->utf8;
105 }
106
107 - while (fgets (buf, sizeof(buf), f) != NULL)
108 + while (hnj_fgets (buf, sizeof(buf), f) != NULL)
109 {
110 if (buf[0] != '%')
111 » {
112 @@ -385,7 +448,7 @@
113 if (dict[k]->utf8) {
114 int pu = -1; /* unicode character position */
115 int ps = -1; /* unicode start position (original replind ex) */
116 - int pc = (*word == '.') ? 1: 0; /* 8-bit character position */
117 + size_t pc = (*word == '.') ? 1: 0; /* 8-bit character position */
118 for (; pc < (strlen(word) + 1); pc++) {
119 /* beginning of an UTF-8 character (not '10' start bits) */
120 if ((((unsigned char) word[pc]) >> 6) != 2) pu++;
121 @@ -478,7 +541,7 @@
122 #endif 44 #endif
123 state_num = 0; 45 state_num = 0;
124 } 46 }
125 - fclose(f); 47 - fclose(f);
126 + hnj_fclose(f); 48 if (nextlevel) dict[0]->nextlevel = dict[1];
127 if (k == 2) dict[0]->nextlevel = dict[1]; 49 else {
128 return dict[0]; 50 dict[1] -> nextlevel = dict[0];
129 }
130 Index: hyphen.h 51 Index: hyphen.h
131 =================================================================== 52 ===================================================================
132 RCS file: /cvsroot/hunspell/hyphen/hyphen.h,v 53 RCS file: /cvsroot/hunspell/hyphen/hyphen.h,v
133 retrieving revision 1.2 54 retrieving revision 1.2
134 diff -u -r1.2 hyphen.h 55 diff -u -r1.2 hyphen.h
135 --- hyphen.h 27 Nov 2010 02:20:33 -0000 1.2 56 --- hyphen.h 27 Nov 2010 02:20:33 -0000 1.2
136 +++ hyphen.h» 1 Mar 2012 05:18:33 -0000 57 +++ hyphen.h» 6 Feb 2013 17:31:51 -0000
137 @@ -93,7 +93,11 @@ 58 @@ -90,7 +90,11 @@
138 int new_state; 59 int new_state;
139 }; 60 };
140 61
141 +#ifdef HYPHEN_CHROME_CLIENT 62 +#if 0
142 +HyphenDict *hnj_hyphen_load (const unsigned char *data, size_t size); 63 +/* DO NOT USE, there are known problems with Unicode on Windows. */
143 +#else
144 HyphenDict *hnj_hyphen_load (const char *fn); 64 HyphenDict *hnj_hyphen_load (const char *fn);
145 +#endif 65 +#endif
66 +HyphenDict *hnj_hyphen_load_file (FILE *f);
146 void hnj_hyphen_free (HyphenDict *dict); 67 void hnj_hyphen_free (HyphenDict *dict);
147 68
148 /* obsolete, use hnj_hyphen_hyphenate2() or *hyphenate3() functions) */ 69 /* obsolete, use hnj_hyphen_hyphenate2() or *hyphenate3() functions) */
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698