comparison plugins/spellchk.c @ 106:e05e6373ea5a

[gaim-migrate @ 116] Modified spellchk.c so now it uses a more customizable dictionary and added filectl.c to allow remote-control of gaim. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Wed, 12 Apr 2000 06:51:37 +0000
parents c5a1a1b05c26
children d927bb34e2c6
comparison
equal deleted inserted replaced
105:c76d4c0c5e3a 106:e05e6373ea5a
43 } 43 }
44 } 44 }
45 45
46 void gaim_plugin_init(void *handle) { 46 void gaim_plugin_init(void *handle) {
47 struct replace_words *p; 47 struct replace_words *p;
48 FILE *file;
49 char buffer[256];
50 char *good;
51 char *bad;
48 52
49 p = malloc(sizeof *p); 53 sprintf(buffer, "%s/.gaim/dict", getenv("HOME"));
50 p->bad = "definately"; 54 file = fopen(buffer, "r");
51 p->good = "definitely"; 55 while (fgets(buffer, sizeof buffer, file)) {
52 words = g_list_append(words, p); 56 buffer[strlen(buffer) - 1] = 0;
53 57 p = malloc(sizeof *p);
54 p = malloc(sizeof *p); 58 good = strdup(strpbrk(strpbrk(buffer, " \t\r\f\n"),
55 p->bad = "u"; 59 "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM"));
56 p->good = "you"; 60 bad = strpbrk(buffer, " \t\r\f\n");
57 words = g_list_append(words, p); 61 bad[0] = 0;
58 62 bad = strdup(buffer);
59 p = malloc(sizeof *p); 63 p->bad = bad;
60 p->bad = "r"; 64 p->good = good;
61 p->good = "are"; 65 words = g_list_append(words, p);
62 words = g_list_append(words, p); 66 }
63
64 p = malloc(sizeof *p);
65 p->bad = "teh";
66 p->good = "the";
67 words = g_list_append(words, p);
68 67
69 gaim_signal_connect(handle, event_im_send, spell_check, NULL); 68 gaim_signal_connect(handle, event_im_send, spell_check, NULL);
70 } 69 }
71 70
72 char *name() { 71 char *name() {
90 state = 1; 89 state = 1;
91 } else if (m[pos] == '<') 90 } else if (m[pos] == '<')
92 state = 2; 91 state = 2;
93 break; 92 break;
94 case 1: /* inside word */ 93 case 1: /* inside word */
95 if (isspace(m[pos])) 94 if (isspace(m[pos]) || m[pos] == '\'' || m[pos] == '.')
96 state = 0; 95 state = 0;
96 else if (m[pos] == '<')
97 state = 2;
97 break; 98 break;
98 case 2: /* inside HTML tag */ 99 case 2: /* inside HTML tag */
99 if (m[pos] == '>') 100 if (m[pos] == '>')
100 state = 0; 101 state = 0;
101 break; 102 break;
117 state = 1; 118 state = 1;
118 } else if (m[pos] == '<') 119 } else if (m[pos] == '<')
119 state = 2; 120 state = 2;
120 break; 121 break;
121 case 1: 122 case 1:
122 if (isspace(m[pos])) 123 if (isspace(m[pos]) || m[pos] == '\'' || m[pos] == '.')
123 state = 0; 124 state = 0;
124 break; 125 break;
125 case 2: 126 case 2:
126 if (m[pos] == '>') 127 if (m[pos] == '>')
127 state = 0; 128 state = 0;
130 } 131 }
131 return pos - 1; 132 return pos - 1;
132 } 133 }
133 134
134 char *have_word(char *m, int pos) { 135 char *have_word(char *m, int pos) {
135 char *tmp = strpbrk(&m[pos], "' \t\f\r\n"); 136 char *tmp = strpbrk(&m[pos], "' \t\f\r\n.");
136 int len = (int)(tmp - &m[pos]); 137 int len = (int)(tmp - &m[pos]);
137 138
138 if (tmp == NULL) { 139 if (tmp == NULL) {
139 tmp = strdup(&m[pos]); 140 tmp = strdup(&m[pos]);
140 return tmp; 141 return tmp;