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