changeset 1191:4fd0d35826fe

[gaim-migrate @ 1201] thanks to decklin for this patch. for some reason the logic in strcpy_withhtml looks funny to me. i'm sure it's just me though. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Sun, 03 Dec 2000 09:50:39 +0000
parents c3ebd5932e32
children a97e334ecfa2
files src/away.c src/dialogs.c src/gaim.h src/server.c src/util.c
diffstat 5 files changed, 18 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/away.c	Sat Dec 02 20:02:59 2000 +0000
+++ b/src/away.c	Sun Dec 03 09:50:39 2000 +0000
@@ -89,7 +89,6 @@
 	}
 }
 
-
 void do_away_message(GtkWidget *w, struct away_message *a)
 {
 	GtkWidget *back;
@@ -178,7 +177,7 @@
 
 
         buf2 = g_malloc(strlen(awaymessage->message)*4 + 1);
-	strcpy(buf2, awaymessage->message);
+	strncpy_withhtml(buf2, awaymessage->message, strlen(awaymessage->message)*4 + 1);
         serv_set_away(buf2);
         g_free(buf2);
 	gtk_widget_show(imaway);
--- a/src/dialogs.c	Sat Dec 02 20:02:59 2000 +0000
+++ b/src/dialogs.c	Sun Dec 03 09:50:39 2000 +0000
@@ -1297,7 +1297,8 @@
 				buf = g_malloc(1);
 				buf[0] = 0;
 			}
-			g_snprintf(buf, MIN(strlen(junk) * 2, 4096), "%s", junk);
+			//g_snprintf(buf, MIN(strlen(junk) * 2, 4096), "%s", junk);
+                        strncpy_withhtml(buf, junk, MIN(strlen(junk) * 2, 4096));
 			serv_set_info(gc, buf);
 			g_free(buf);
 		}
--- a/src/gaim.h	Sat Dec 02 20:02:59 2000 +0000
+++ b/src/gaim.h	Sun Dec 03 09:50:39 2000 +0000
@@ -550,6 +550,7 @@
 extern void set_first_user (char *);
 extern int do_auto_login (char *);
 extern int file_is_dir (char *, GtkWidget *);
+extern void strncpy_withhtml(gchar *, const gchar *, size_t);
 
 /* Functions in server.c */
 /* input to serv */
--- a/src/server.c	Sat Dec 02 20:02:59 2000 +0000
+++ b/src/server.c	Sun Dec 03 09:50:39 2000 +0000
@@ -97,7 +97,7 @@
 
 	if (strlen(gc->user->user_info)) {
 		buf = g_malloc(strlen(gc->user->user_info) * 4);
-		strcpy(buf, gc->user->user_info);
+		strncpy_withhtml(buf, gc->user->user_info, strlen(gc->user->user_info) * 4);
 		serv_set_info(gc, buf);
 		g_free(buf);
 	}
--- a/src/util.c	Sat Dec 02 20:02:59 2000 +0000
+++ b/src/util.c	Sun Dec 03 09:50:39 2000 +0000
@@ -1232,3 +1232,16 @@
 		}
 	}
 }
+
+void strncpy_withhtml(gchar *dest, const gchar *src, size_t destsize)
+{
+	gchar *sp = src, *dp = dest;
+
+	while (dp < dest+destsize) {
+                if (*sp == '\n' && dp < dest+destsize-4) {
+                    strcpy(dp, "<BR>");
+                    sp++; dp += 4;
+                }
+                else *dp++ = *sp++;
+	}
+}