Mercurial > pidgin
diff src/gaimrc.c @ 3493:4b204c262376
[gaim-migrate @ 3553]
Rob committed some bug fixes to gtk1-stable, but not to HEAD. now his computer
is acting up again, so i'm making the corresponding commits to HEAD. this
should help with yahoo i18n, segfaults on jabber, a problem in gaimrc, and
word wrapping on new mail notification.
Modified Files:
ChangeLog src/gaim.h src/gaimrc.c src/prpl.c
src/protocols/msn/msn.c src/protocols/yahoo/yahoo.c
----------------------------------------------------------------------
committer: Tailor Script <tailor@pidgin.im>
author | Luke Schierer <lschiere@pidgin.im> |
---|---|
date | Tue, 10 Sep 2002 15:31:34 +0000 |
parents | 0073a014e55b |
children | 593567405d48 |
line wrap: on
line diff
--- a/src/gaimrc.c Sun Sep 08 15:22:48 2002 +0000 +++ b/src/gaimrc.c Tue Sep 10 15:31:34 2002 +0000 @@ -63,16 +63,15 @@ char value[MAX_VALUES][4096]; }; -static struct parse *parse_line(char *line) +static struct parse *parse_line(char *line, struct parse *p) { char *c = line; int inopt = 1, inval = 0, curval = -1; int optlen = 0, vallen = 0; - static struct parse p; int x; for (x = 0; x < MAX_VALUES; x++) { - p.value[x][0] = 0; + p->value[x][0] = 0; } @@ -85,36 +84,36 @@ /* if ((*c < 'a' || *c > 'z') && *c != '_') { */ if ((*c < 'a' || *c > 'z') && *c != '_' && (*c < 'A' || *c > 'Z')) { inopt = 0; - p.option[optlen] = 0; + p->option[optlen] = 0; c++; continue; } - p.option[optlen] = *c; + p->option[optlen] = *c; optlen++; c++; continue; } else if (inval) { if ((*c == '}')) { if (*(c - 1) == '\\') { - p.value[curval][vallen - 1] = *c; + p->value[curval][vallen - 1] = *c; c++; continue; } else { - p.value[curval][vallen - 1] = 0; + p->value[curval][vallen - 1] = 0; inval = 0; c++; continue; } } else { - p.value[curval][vallen] = *c; + p->value[curval][vallen] = *c; vallen++; c++; continue; } } else if (*c == '{') { if (*(c - 1) == '\\') { - p.value[curval][vallen - 1] = *c; + p->value[curval][vallen - 1] = *c; c++; continue; } else { @@ -129,7 +128,7 @@ c++; } - return &p; + return p; } @@ -228,6 +227,7 @@ static void gaimrc_read_away(FILE *f) { + struct parse parse_buffer; struct parse *p; char buf[4096]; struct away_message *a; @@ -241,7 +241,7 @@ if (buf[0] == '}') return; - p = parse_line(buf); + p = parse_line(buf, &parse_buffer); if (!strcmp(p->option, "message")) { a = g_new0(struct away_message, 1); @@ -301,6 +301,7 @@ static void gaimrc_read_pounce(FILE *f) { + struct parse parse_buffer; struct parse *p; char buf[4096]; struct buddy_pounce *b; @@ -314,7 +315,7 @@ if (buf[0] == '}') return; - p = parse_line(buf); + p = parse_line(buf, &parse_buffer); if (!strcmp(p->option, "entry")) { b = g_new0(struct buddy_pounce, 1); @@ -413,6 +414,7 @@ static void gaimrc_read_plugins(FILE *f) { + struct parse parse_buffer; struct parse *p; char buf[4096]; GSList *load = NULL; @@ -426,7 +428,7 @@ if (buf[0] == '}') break; - p = parse_line(buf); + p = parse_line(buf, &parse_buffer); if (!strcmp(p->option, "plugin")) { filter_break(p->value[0]); load = g_slist_append(load, g_strdup(p->value[0])); @@ -446,6 +448,7 @@ static struct aim_user *gaimrc_read_user(FILE *f) { + struct parse parse_buffer; struct parse *p; struct aim_user *u; int i; @@ -454,7 +457,7 @@ if (!fgets(buf, sizeof(buf), f)) return NULL; - p = parse_line(buf); + p = parse_line(buf, &parse_buffer); if (strcmp(p->option, "ident")) return NULL; @@ -499,7 +502,7 @@ return u; } - p = parse_line(buf); + p = parse_line(buf, &parse_buffer); if (strcmp(p->option, "user_opts")) return u; @@ -513,7 +516,7 @@ if (!strcmp(buf, "\t}")) return u; - p = parse_line(buf); + p = parse_line(buf, &parse_buffer); if (strcmp(p->option, "proto_opts")) return u; @@ -527,7 +530,7 @@ if (!strcmp(buf, "\t}")) return u; - p = parse_line(buf); + p = parse_line(buf, &parse_buffer); if (strcmp(p->option, "iconfile")) return u; @@ -540,7 +543,7 @@ if (!strcmp(buf, "\t}")) return u; - p = parse_line(buf); + p = parse_line(buf, &parse_buffer); if (strcmp(p->option, "alias")) return u; @@ -593,6 +596,7 @@ { char buf[2048]; struct aim_user *u; + struct parse parse_buffer; struct parse *p; buf[0] = 0; @@ -606,7 +610,7 @@ - p = parse_line(buf); + p = parse_line(buf, &parse_buffer); if (!strcmp(p->option, "current_user")) { } else if (strcmp(p->option, "user")) { @@ -706,6 +710,7 @@ static void gaimrc_read_options(FILE *f) { char buf[2048]; + struct parse parse_buffer; struct parse *p; gboolean read_logging = FALSE, read_general = FALSE, read_display = FALSE; int general_options = 0, display_options = 0; @@ -720,7 +725,7 @@ if (!fgets(buf, sizeof(buf), f)) return; - p = parse_line(buf); + p = parse_line(buf, &parse_buffer); if (!strcmp(p->option, "general_options")) { general_options = atoi(p->value[0]); @@ -872,6 +877,7 @@ { int i; char buf[2048]; + struct parse parse_buffer; struct parse *p; buf[0] = 0; @@ -887,7 +893,7 @@ if (!fgets(buf, sizeof(buf), f)) return; - p = parse_line(buf); + p = parse_line(buf, &parse_buffer); if (!strcmp(p->option, "sound_cmd")) { g_snprintf(sound_cmd, sizeof(sound_cmd), "%s", p->value[0]); @@ -1006,6 +1012,7 @@ static void gaimrc_read_proxy(FILE *f) { char buf[2048]; + struct parse parse_buffer; struct parse *p; buf[0] = 0; @@ -1018,7 +1025,7 @@ if (!fgets(buf, sizeof(buf), f)) return; - p = parse_line(buf); + p = parse_line(buf, &parse_buffer); if (!strcmp(p->option, "host")) { g_snprintf(proxyhost, sizeof(proxyhost), "%s", p->value[0]); @@ -1135,7 +1142,7 @@ away_options = OPT_AWAY_BACK_ON_IM; - for (i = 0; i < 7; i++) + for (i = 0; i < NUM_SOUNDS; i++) sound_file[i] = NULL; font_options = 0; /* Enable all of the sound players that might be available. The first