Mercurial > pidgin
annotate src/gaimrc.c @ 142:fbabd28795d2
[gaim-migrate @ 152]
Added auto-load for plugins. Rob pointed out this might be a bad idea: what
if plugins modify the buddy list; the plugins are loaded before signon, thus
before the buddy list appears. That would cause errors; then when the list
does appear, the plugin doesn't work right because it didn't start off well.
My response:
EWarmenhoven: there are ways around that
EWarmenhoven: in gaim_plugin_init you could have:
EWarmenhoven:
if (blist) {
do_the_normal_thing();
} else {
gaim_signal_connect(handle, event_signon, now_the_buddy_list_is_here, NULL);
}
EWarmenhoven: and actually, that's the way it should be for all plugins that
modify the buddy list, because there will be at least one point during
execution that it could be loaded when the person is signed off (and i'm not
talking about when they first start it up, i'm talking about when they choose
'sign off' instead of 'close' in the buddy list menu)
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Thu, 20 Apr 2000 00:12:58 +0000 |
parents | 350d88f043b6 |
children | 595c26ef5527 |
rev | line source |
---|---|
1 | 1 /* |
2 * gaim | |
3 * | |
4 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
5 * | |
6 * This program is free software; you can redistribute it and/or modify | |
7 * it under the terms of the GNU General Public License as published by | |
8 * the Free Software Foundation; either version 2 of the License, or | |
9 * (at your option) any later version. | |
10 * | |
11 * This program is distributed in the hope that it will be useful, | |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 * GNU General Public License for more details. | |
15 * | |
16 * You should have received a copy of the GNU General Public License | |
17 * along with this program; if not, write to the Free Software | |
18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
19 * | |
20 */ | |
21 | |
22 #include <string.h> | |
23 #include <sys/time.h> | |
24 | |
25 #include <sys/types.h> | |
26 #include <sys/stat.h> | |
27 | |
28 #include <unistd.h> | |
29 #include <stdio.h> | |
30 #include <stdlib.h> | |
31 #include <gtk/gtk.h> | |
32 #include "gaim.h" | |
33 #include "proxy.h" | |
34 | |
84 | 35 #ifdef USE_APPLET |
82 | 36 #include "gnome_applet_mgr.h" |
37 #endif | |
38 | |
1 | 39 |
40 struct aim_user *current_user = NULL; | |
41 GList *aim_users = NULL; | |
42 int general_options; | |
43 int display_options; | |
44 int sound_options; | |
45 int font_options; | |
46 | |
47 int report_idle, web_browser; | |
48 struct save_pos blist_pos; | |
49 char web_command[2048]; | |
50 char aim_host[512]; | |
51 int aim_port; | |
52 char login_host[512]; | |
53 int login_port; | |
54 | |
55 | |
56 struct parse { | |
57 char option[256]; | |
58 char value[6][256]; | |
59 }; | |
60 | |
61 static struct parse *parse_line(char *line) | |
62 { | |
63 char *c = line; | |
64 int inopt = 1, inval = 0, curval = -1; | |
65 int optlen = 0, vallen = 0; | |
66 static struct parse p; | |
67 | |
68 | |
69 while(*c) { | |
70 if (*c == '\t') { | |
71 c++; | |
72 continue; | |
73 } | |
74 if (inopt) { | |
75 // if ((*c < 'a' || *c > 'z') && *c != '_') { | |
76 if ((*c < 'a' || *c > 'z') && *c != '_' && (*c < 'A' || *c > 'Z')) { | |
77 inopt = 0; | |
78 p.option[optlen] = 0; | |
79 c++; | |
80 continue; | |
81 } | |
82 | |
83 p.option[optlen] = *c; | |
84 optlen++; | |
85 c++; | |
86 continue; | |
87 } else if (inval) { | |
88 if ( (*c == '}') ) { | |
89 if (*(c-1) == '\\') { | |
90 p.value[curval][vallen - 1] = *c; | |
91 c++; | |
92 continue; | |
93 } else { | |
94 p.value[curval][vallen - 1] = 0; | |
95 inval = 0; | |
96 c++; | |
97 continue; | |
98 } | |
99 } else { | |
100 p.value[curval][vallen] = *c; | |
101 vallen++; | |
102 c++; | |
103 continue; } | |
104 } else if (*c == '{') { | |
105 if (*(c-1) == '\\') { | |
106 p.value[curval][vallen-1] = *c; | |
107 c++; | |
108 continue; | |
109 } | |
110 else | |
111 { | |
112 curval++; | |
113 vallen = 0; | |
114 inval = 1; | |
115 c++; | |
116 c++; | |
117 continue; | |
118 } | |
119 } | |
120 c++; | |
121 } | |
122 return &p; | |
123 } | |
124 | |
125 | |
126 static int gaimrc_parse_tag(FILE *f) | |
127 { | |
128 char buf[2048]; | |
129 char tag[256]; | |
130 buf[0] = '#'; | |
131 | |
132 while (buf[0] == '#' && !feof(f)) | |
133 fgets(buf, sizeof(buf), f); | |
134 | |
135 if (feof(f)) | |
136 return -1; | |
137 | |
138 sscanf(buf, "%s {", tag); | |
139 | |
140 if (!strcmp(tag, "users")) { | |
141 return 0; | |
142 } else if (!strcmp(tag, "options")) { | |
143 return 1; | |
144 } else if (!strcmp(tag, "away")) { | |
145 return 2; | |
142
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
146 } else if (!strcmp(tag, "plugins")) { |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
147 return 3; |
1 | 148 } |
149 | |
150 return -1; | |
151 } | |
152 | |
153 void filter_break(char *msg) | |
154 { | |
44 | 155 char *c; |
156 int mc; | |
157 int cc; | |
158 | |
159 c = g_malloc(strlen(msg)+1); | |
160 strcpy(c, msg); | |
1 | 161 |
44 | 162 mc = 0; |
163 cc = 0; | |
164 while (c[cc] != '\0') | |
165 { | |
166 if (c[cc] == '\\') { | |
167 cc++; | |
168 msg[mc] = c[cc]; | |
169 } | |
170 else { | |
171 msg[mc] = c[cc]; | |
172 } | |
173 mc++; | |
174 cc++; | |
175 } | |
176 msg[mc] = 0; | |
177 g_free(c); | |
1 | 178 } |
179 | |
44 | 180 |
1 | 181 static void gaimrc_read_away(FILE *f) |
182 { | |
183 struct parse *p; | |
184 char buf[4096]; | |
185 struct away_message *a; | |
186 | |
187 buf[0] = 0; | |
188 | |
189 while (buf[0] != '}') | |
190 { | |
191 if (!fgets(buf, sizeof(buf), f)) | |
192 return; | |
193 | |
194 if (buf[0] == '}') | |
195 return; | |
196 | |
197 p = parse_line(buf); | |
15 | 198 if (!strcmp(p->option, "message")) |
199 { | |
200 a = g_new0(struct away_message, 1); | |
1 | 201 |
15 | 202 g_snprintf(a->name, sizeof(a->name), "%s", p->value[0]); |
203 g_snprintf(a->message, sizeof(a->message), "%s", p->value[1]); | |
204 filter_break(a->message); | |
205 away_messages = g_list_append(away_messages, a); | |
206 } | |
1 | 207 } |
208 } | |
209 | |
210 static void gaimrc_write_away(FILE *f) | |
211 { | |
212 GList *awy = away_messages; | |
213 struct away_message *a; | |
214 | |
215 fprintf(f, "away {\n"); | |
216 | |
217 while (awy) { | |
26 | 218 char *str1, *str2; |
219 | |
1 | 220 a = (struct away_message *)awy->data; |
26 | 221 |
222 str1 = escape_text2(a->name); | |
223 str2 = escape_text2(a->message); | |
224 | |
225 fprintf(f, "\tmessage { %s } { %s }\n", str1, str2); | |
226 | |
227 /* escape_text2 uses malloc(), so we don't want to g_free these */ | |
228 free(str1); | |
229 free(str2); | |
230 | |
1 | 231 awy = awy->next; |
232 } | |
233 | |
234 fprintf(f, "}\n"); | |
235 } | |
236 | |
142
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
237 #ifdef GAIM_PLUGINS |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
238 static void gaimrc_write_plugins(FILE *f) |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
239 { |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
240 GList *pl = plugins; |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
241 struct gaim_plugin *p; |
1 | 242 |
142
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
243 fprintf(f, "plugins {\n"); |
1 | 244 |
142
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
245 while (pl) { |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
246 char *path; |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
247 |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
248 p = (struct gaim_plugin *)pl->data; |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
249 |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
250 path = escape_text2(p->filename); |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
251 |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
252 fprintf(f, "\tplugin { %s }\n", path); |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
253 |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
254 free(path); |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
255 |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
256 pl = pl->next; |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
257 } |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
258 |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
259 fprintf(f, "}\n"); |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
260 } |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
261 |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
262 static void gaimrc_read_plugins(FILE *f) |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
263 { |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
264 struct parse *p; |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
265 char buf[4096]; |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
266 |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
267 buf[0] = 0; |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
268 |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
269 while (buf[0] != '}') |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
270 { |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
271 if (!fgets(buf, sizeof(buf), f)) |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
272 return; |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
273 |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
274 if (buf[0] == '}') |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
275 return; |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
276 |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
277 p = parse_line(buf); |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
278 if (!strcmp(p->option, "plugin")) |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
279 { |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
280 load_plugin(p->value[0]); |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
281 } |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
282 } |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
283 } |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
284 #endif /* GAIM_PLUGINS */ |
1 | 285 |
286 static struct aim_user *gaimrc_read_user(FILE *f) | |
287 { | |
288 struct parse *p; | |
289 struct aim_user *u; | |
290 char buf[4096]; | |
291 | |
292 if (!fgets(buf, sizeof(buf), f)) | |
293 return NULL; | |
294 | |
295 p = parse_line(buf); | |
296 | |
297 if (strcmp(p->option, "ident")) | |
298 return NULL; | |
299 | |
300 u = g_new0(struct aim_user, 1); | |
301 | |
302 strcpy(u->username, p->value[0]); | |
303 strcpy(u->password, p->value[1]); | |
304 | |
305 u->user_info[0] = 0; | |
306 | |
307 if (!fgets(buf, sizeof(buf), f)) | |
308 return u; | |
309 | |
310 if (strcmp(buf, "\t\tuser_info {\n")) { | |
311 return u; | |
312 } | |
313 | |
314 if (!fgets(buf, sizeof(buf), f)) | |
315 return u; | |
316 | |
317 while (strncmp(buf, "\t\t}", 3)) { | |
318 if (strlen(buf) > 3) | |
319 strcat(u->user_info, &buf[3]); | |
320 | |
321 if (!fgets(buf, sizeof(buf), f)) { | |
322 return u; | |
323 } | |
324 } | |
325 | |
326 return u; | |
327 | |
328 } | |
329 | |
330 static void gaimrc_write_user(FILE *f, struct aim_user *u) | |
331 { | |
332 char *c; | |
333 int nl = 1;; | |
131
350d88f043b6
[gaim-migrate @ 141]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
84
diff
changeset
|
334 if (general_options & OPT_GEN_REMEMBER_PASS) |
350d88f043b6
[gaim-migrate @ 141]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
84
diff
changeset
|
335 fprintf(f, "\t\tident { %s } { %s }\n", u->username, u->password); |
350d88f043b6
[gaim-migrate @ 141]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
84
diff
changeset
|
336 else |
350d88f043b6
[gaim-migrate @ 141]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
84
diff
changeset
|
337 fprintf(f, "\t\tident { %s } { }\n", u->username); |
1 | 338 fprintf(f, "\t\tuser_info {"); |
339 c = u->user_info; | |
340 while(*c) { | |
341 /* This is not as silly as it looks. */ | |
342 if (*c == '\n') { | |
343 nl++; | |
344 } else { | |
345 if (nl) { | |
346 while(nl) { | |
347 fprintf(f, "\n\t\t\t"); | |
348 nl--; | |
349 } | |
350 } | |
351 fprintf(f, "%c", *c); | |
352 } | |
353 c++; | |
354 } | |
355 fprintf(f, "\n\t\t}\n"); | |
356 | |
357 } | |
358 | |
359 | |
360 static void gaimrc_read_users(FILE *f) | |
361 { | |
362 char buf[2048]; | |
363 struct aim_user *u; | |
364 struct parse *p; | |
365 int cur = 0; | |
366 | |
367 buf[0] = 0; | |
368 | |
369 while (buf[0] != '}') { | |
370 if (buf[0] == '#') | |
371 continue; | |
372 | |
373 if (!fgets(buf, sizeof(buf), f)) | |
374 return; | |
375 | |
376 | |
377 | |
378 p = parse_line(buf); | |
379 | |
380 if (!strcmp(p->option, "current_user")) { | |
381 cur = 1;; | |
382 } else if (strcmp(p->option, "user")) { | |
383 continue; | |
384 } | |
385 | |
386 u = gaimrc_read_user(f); | |
387 | |
388 if (cur) | |
389 current_user = u; | |
390 | |
391 aim_users = g_list_append(aim_users, u); | |
392 } | |
393 } | |
394 | |
395 static void gaimrc_write_users(FILE *f) | |
396 { | |
397 GList *usr = aim_users; | |
398 struct aim_user *u; | |
399 | |
400 fprintf(f, "users {\n"); | |
401 | |
402 while(usr) { | |
403 u = (struct aim_user *)usr->data; | |
404 if (current_user == u) { | |
405 fprintf(f, "\tcurrent_user {\n"); | |
406 } else { | |
407 fprintf(f, "\tuser {\n"); | |
408 } | |
409 gaimrc_write_user(f, u); | |
410 | |
411 fprintf(f, "\t}\n"); | |
412 | |
413 usr = usr->next; | |
414 } | |
415 | |
416 fprintf(f, "}\n"); | |
417 } | |
418 | |
419 | |
420 | |
421 | |
422 static void gaimrc_read_options(FILE *f) | |
423 { | |
424 char buf[2048]; | |
425 struct parse *p; | |
426 | |
427 buf[0] = 0; | |
428 | |
429 while (buf[0] != '}') { | |
430 if (buf[0] == '#') | |
431 continue; | |
432 | |
433 if (!fgets(buf, sizeof(buf), f)) | |
434 return; | |
435 | |
436 p = parse_line(buf); | |
437 | |
438 if (!strcmp(p->option, "general_options")) { | |
439 general_options = atoi(p->value[0]); | |
440 } else if (!strcmp(p->option, "display_options")) { | |
441 display_options = atoi(p->value[0]); | |
442 } else if (!strcmp(p->option, "sound_options")) { | |
443 sound_options = atoi(p->value[0]); | |
444 } else if (!strcmp(p->option, "font_options")) { | |
445 font_options = atoi(p->value[0]); | |
446 } else if (!strcmp(p->option, "report_idle")) { | |
447 report_idle = atoi(p->value[0]); | |
448 } else if (!strcmp(p->option, "web_browser")) { | |
449 web_browser = atoi(p->value[0]); | |
450 } else if (!strcmp(p->option, "web_command")) { | |
451 strcpy(web_command, p->value[0]); | |
452 } else if (!strcmp(p->option, "proxy_type")) { | |
453 proxy_type = atoi(p->value[0]); | |
454 } else if (!strcmp(p->option, "proxy_host")) { | |
455 strcpy(proxy_host, p->value[0]); | |
456 } else if (!strcmp(p->option, "proxy_port")) { | |
457 proxy_port = atoi(p->value[0]); | |
458 } else if (!strcmp(p->option, "aim_host")) { | |
459 strcpy(aim_host, p->value[0]); | |
460 } else if (!strcmp(p->option, "aim_port")) { | |
461 aim_port = atoi(p->value[0]); | |
462 } else if (!strcmp(p->option, "login_host")) { | |
463 strcpy(login_host, p->value[0]); | |
464 } else if (!strcmp(p->option, "login_port")) { | |
465 login_port = atoi(p->value[0]); | |
466 } else if (!strcmp(p->option, "blist_pos")) { | |
467 blist_pos.x = atoi(p->value[0]); | |
468 blist_pos.y = atoi(p->value[1]); | |
469 blist_pos.width = atoi(p->value[2]); | |
470 blist_pos.height = atoi(p->value[3]); | |
471 blist_pos.xoff = atoi(p->value[4]); | |
472 blist_pos.yoff = atoi(p->value[5]); | |
82 | 473 } |
1 | 474 |
475 } | |
476 | |
477 } | |
478 | |
479 static void gaimrc_write_options(FILE *f) | |
480 { | |
481 | |
482 fprintf(f, "options {\n"); | |
483 fprintf(f, "\tgeneral_options { %d }\n", general_options); | |
484 fprintf(f, "\tdisplay_options { %d }\n", display_options); | |
485 fprintf(f, "\tsound_options { %d }\n", sound_options); | |
486 fprintf(f, "\tfont_options { %d }\n", font_options); | |
487 fprintf(f, "\treport_idle { %d }\n", report_idle); | |
488 fprintf(f, "\tweb_browser { %d }\n", web_browser); | |
489 fprintf(f, "\tweb_command { %s }\n", web_command); | |
490 fprintf(f, "\tproxy_type { %d }\n", proxy_type); | |
491 fprintf(f, "\tproxy_host { %s }\n", proxy_host); | |
492 fprintf(f, "\tproxy_port { %d }\n", proxy_port); | |
493 fprintf(f, "\taim_host { %s }\n", aim_host); | |
494 fprintf(f, "\taim_port { %d }\n", aim_port); | |
495 fprintf(f, "\tlogin_host { %s }\n", login_host); | |
496 fprintf(f, "\tlogin_port { %d }\n", login_port); | |
497 fprintf(f, "\tblist_pos { %d } { %d } { %d } { %d } { %d } { %d }\n", | |
498 blist_pos.x, blist_pos.y, blist_pos.width, blist_pos.height, | |
499 blist_pos.xoff, blist_pos.yoff); | |
500 fprintf(f, "}\n"); | |
501 } | |
502 | |
503 | |
504 void set_defaults() | |
505 { | |
506 general_options = | |
507 OPT_GEN_SEND_LINKS | | |
508 OPT_GEN_ENTER_SENDS | | |
509 OPT_GEN_SAVED_WINDOWS | | |
510 OPT_GEN_REMEMBER_PASS | | |
511 OPT_GEN_REGISTERED; | |
512 display_options = | |
513 OPT_DISP_SHOW_IDLETIME | | |
514 OPT_DISP_SHOW_TIME | | |
515 OPT_DISP_SHOW_PIXMAPS | | |
516 OPT_DISP_SHOW_BUTTON_XPM; | |
517 font_options = 0; | |
518 sound_options = OPT_SOUND_LOGIN | OPT_SOUND_LOGOUT | OPT_SOUND_RECV | OPT_SOUND_SEND; | |
519 report_idle = IDLE_GAIM; | |
520 web_browser = BROWSER_NETSCAPE; | |
521 proxy_type = PROXY_NONE; | |
522 | |
523 aim_port = TOC_PORT; | |
524 login_port = AUTH_PORT; | |
525 g_snprintf(aim_host, sizeof(aim_host), "%s", TOC_HOST); | |
526 g_snprintf(login_host, sizeof(login_host), "%s", AUTH_HOST); | |
527 proxy_host[0] = 0; | |
528 proxy_port = 0; | |
529 g_snprintf(web_command, sizeof(web_command), "xterm -e lynx %%s"); | |
530 blist_pos.width = 0; | |
531 blist_pos.height = 0; | |
532 blist_pos.x = 0; | |
533 blist_pos.y = 0; | |
534 blist_pos.xoff = 0; | |
535 blist_pos.yoff = 0; | |
536 } | |
537 | |
538 | |
539 void load_prefs() | |
540 { | |
541 FILE *f; | |
542 char buf[1024]; | |
543 int ver = 0; | |
544 | |
545 if (getenv("HOME")) { | |
546 g_snprintf(buf, sizeof(buf), "%s/.gaimrc", getenv("HOME")); | |
547 if ((f = fopen(buf,"r"))) { | |
548 fgets(buf, sizeof(buf), f); | |
549 sscanf(buf, "# .gaimrc v%d", &ver); | |
15 | 550 if ( (ver <= 1) || (buf[0] != '#')) { |
1 | 551 fclose(f); |
552 set_defaults(); | |
553 save_prefs(); | |
554 load_prefs(); | |
555 return; | |
556 } | |
557 while(!feof(f)) { | |
558 switch(gaimrc_parse_tag(f)) { | |
559 case -1: | |
560 /* Let the loop end, EOF*/ | |
561 break; | |
562 case 0: | |
563 gaimrc_read_users(f); | |
564 break; | |
565 case 1: | |
566 gaimrc_read_options(f); | |
567 break; | |
568 case 2: | |
569 gaimrc_read_away(f); | |
570 break; | |
142
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
571 #ifdef GAIM_PLUGINS |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
572 case 3: |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
573 gaimrc_read_plugins(f); |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
574 break; |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
575 #endif |
1 | 576 default: |
577 /* NOOP */ | |
578 break; | |
579 } | |
580 } | |
581 fclose(f); | |
582 } | |
583 } | |
584 | |
585 } | |
586 | |
587 void save_prefs() | |
588 { | |
589 FILE *f; | |
590 char buf[BUF_LONG]; | |
591 | |
592 if (getenv("HOME")) { | |
593 g_snprintf(buf, sizeof(buf), "%s/.gaimrc", getenv("HOME")); | |
594 if ((f = fopen(buf,"w"))) { | |
15 | 595 fprintf(f, "# .gaimrc v%d\n", 2); |
1 | 596 gaimrc_write_users(f); |
597 gaimrc_write_options(f); | |
598 gaimrc_write_away(f); | |
142
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
599 #ifdef GAIM_PLUGINS |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
600 gaimrc_write_plugins(f); |
fbabd28795d2
[gaim-migrate @ 152]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
131
diff
changeset
|
601 #endif |
1 | 602 fclose(f); |
603 chmod(buf, S_IRUSR | S_IWUSR); | |
604 } | |
605 | |
606 } | |
607 } | |
608 |