changeset 1292:cb84b5c6d9ab

[gaim-migrate @ 1302] Patches from Decklin and "Falling Thanks guys :) committer: Tailor Script <tailor@pidgin.im>
author Rob Flynn <gaim@robflynn.com>
date Mon, 18 Dec 2000 05:17:58 +0000
parents ddfb2f68c590
children fbc0cbf24a62
files src/away.c src/dialogs.c src/gaim.h src/gaimrc.c src/server.c src/util.c
diffstat 6 files changed, 55 insertions(+), 45 deletions(-) [+]
line wrap: on
line diff
--- a/src/away.c	Mon Dec 18 05:08:46 2000 +0000
+++ b/src/away.c	Mon Dec 18 05:17:58 2000 +0000
@@ -69,26 +69,6 @@
 }
 
 
-/*
- * rcg10312000 This could be more robust, but it works for my current
- *  goal: to remove those annoying <BR> tags.  :)
- */
-static void strncpy_nohtml(gchar * dest, const gchar * src, size_t destsize)
-{
-	gchar *ptr;
-	g_snprintf(dest, destsize, "%s", src);
-
-	while (1) {
-		ptr = strstr(dest, "<BR>");
-		if (ptr == NULL)	/* done? */
-			return;
-
-		/* replace <BR> with a newline. */
-		*ptr = '\n';
-		memmove(ptr + 1, ptr + 4, strlen(ptr + 4) + 1);
-	}
-}
-
 void do_away_message(GtkWidget *w, struct away_message *a)
 {
 	GtkWidget *back;
--- a/src/dialogs.c	Mon Dec 18 05:08:46 2000 +0000
+++ b/src/dialogs.c	Mon Dec 18 05:17:58 2000 +0000
@@ -995,7 +995,13 @@
 void do_new_bp(GtkWidget *w, struct addbp *b)
 {
         struct buddy_pounce *bp = g_new0(struct buddy_pounce, 1);
-	
+
+        if(strlen(gtk_entry_get_text(GTK_ENTRY(b->nameentry))) == 0) {
+          	do_error_dialog(_("Please enter a buddy to pounce."), _("Buddy Pounce Error"));
+	        g_free(bp);
+                return;
+	}
+        
 	g_snprintf(bp->name, 80, "%s", gtk_entry_get_text(GTK_ENTRY(b->nameentry)));
 	g_snprintf(bp->message, 2048, "%s", gtk_entry_get_text(GTK_ENTRY(b->messentry)));
 	g_snprintf(bp->command, 2048, "%s", gtk_entry_get_text(GTK_ENTRY(b->commentry)));
@@ -1243,22 +1249,13 @@
 	junk = gtk_editable_get_chars(GTK_EDITABLE(b->text), 0, -1);
 
 	if (b->user) {
-		g_snprintf(b->user->user_info, sizeof(b->user->user_info), "%s", junk);
+		strncpy_withhtml(b->user->user_info, junk, sizeof b->user->user_info);
 		gc = b->user->gc;
 			
 		save_prefs();
 
-		if (gc) {
-			buf = g_malloc(strlen(junk) * 4);
-			if (!buf) {
-				buf = g_malloc(1);
-				buf[0] = 0;
-			}
-			//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);
-		}
+		if (gc)
+			serv_set_info(gc, b->user->user_info);
 	}
 	g_free(junk);
 	destroy_dialog(NULL, b->window);
@@ -1624,13 +1621,18 @@
 
 static void info_choose(GtkWidget *opt, struct set_info_dlg *b)
 {
-	int text_len;
+	int text_len = gtk_text_get_length(GTK_TEXT(b->text));
 	struct aim_user *u = gtk_object_get_user_data(GTK_OBJECT(opt));
+	gchar *buf = g_malloc(strlen(u->user_info)+1);
 	b->user = u;
-	text_len = gtk_text_get_length(GTK_TEXT(b->text));
+
+	strncpy_nohtml(buf, u->user_info, strlen(u->user_info)+1);
+
 	gtk_text_set_point(GTK_TEXT(b->text), 0);
 	gtk_text_forward_delete(GTK_TEXT(b->text), text_len);
-	gtk_text_insert(GTK_TEXT(b->text), NULL, NULL, NULL, u->user_info, -1);
+	gtk_text_insert(GTK_TEXT(b->text), NULL, NULL, NULL, buf, -1);
+
+	g_free(buf);
 }
 
 static void info_user_menu(struct set_info_dlg *b, GtkWidget *box)
@@ -1678,7 +1680,9 @@
 {
 	GtkWidget *buttons;
 	GtkWidget *vbox;
-	
+	gchar *buf;
+	struct aim_user *tmp;
+
 	struct set_info_dlg *b = g_new0(struct set_info_dlg, 1);
 
 	b->window = gtk_window_new(GTK_WINDOW_DIALOG);
@@ -1714,9 +1718,12 @@
 	gtk_text_set_editable(GTK_TEXT(b->text), TRUE);
 	gtk_widget_set_usize(b->text, 300, 200);
 	if (aim_users) {
-		gtk_text_insert(GTK_TEXT(b->text), NULL, NULL, NULL,
-				((struct gaim_connection *)connections->data)->user->user_info, -1);
-		b->user = ((struct gaim_connection *)connections->data)->user;
+		tmp = ((struct gaim_connection *)connections->data)->user;
+		buf = g_malloc(strlen(tmp->user_info)+1);
+		strncpy_nohtml(buf, tmp->user_info, strlen(tmp->user_info)+1);
+		gtk_text_insert(GTK_TEXT(b->text), NULL, NULL, NULL, buf, -1);
+		b->user = tmp;
+                g_free(buf);
 	}
 
 	gtk_widget_show(b->text);
@@ -1731,6 +1738,7 @@
 	aol_icon(b->window->window);
 	
 	gtk_window_set_title(GTK_WINDOW(b->window), _("Gaim - Set User Info"));
+	gtk_window_set_focus(GTK_WINDOW(b->window), b->text);
 	gtk_widget_show(b->window);
 
 }
--- a/src/gaim.h	Mon Dec 18 05:08:46 2000 +0000
+++ b/src/gaim.h	Mon Dec 18 05:17:58 2000 +0000
@@ -565,6 +565,7 @@
 extern int do_auto_login (char *);
 extern int file_is_dir (char *, GtkWidget *);
 extern char *gaim_user_dir();
+extern void strncpy_nohtml(gchar *, const gchar *, size_t);
 extern void strncpy_withhtml(gchar *, const gchar *, size_t);
 extern void away_on_login(char *);
 
--- a/src/gaimrc.c	Mon Dec 18 05:08:46 2000 +0000
+++ b/src/gaimrc.c	Mon Dec 18 05:17:58 2000 +0000
@@ -480,6 +480,10 @@
 		}
 	}
 
+	if (i = strlen(u->user_info)) {
+		u->user_info[i-1] = '\0';
+	}
+
 	if (!fgets(buf, sizeof(buf), f)) {
 		return u;
 	}
--- a/src/server.c	Mon Dec 18 05:08:46 2000 +0000
+++ b/src/server.c	Mon Dec 18 05:17:58 2000 +0000
@@ -97,10 +97,10 @@
 	char *buf;
 
 	if (strlen(gc->user->user_info)) {
-		buf = g_malloc(strlen(gc->user->user_info) * 4);
-		strncpy_withhtml(buf, gc->user->user_info, strlen(gc->user->user_info) * 4);
-		serv_set_info(gc, buf);
-		g_free(buf);
+		//g_malloc(strlen(gc->user->user_info) * 4);
+		//strncpy_withhtml(buf, gc->user->user_info, strlen(gc->user->user_info) * 4);
+		serv_set_info(gc, gc->user->user_info);
+		//g_free(buf);
 	}
 
 	if (gc->idle_timer > 0)
--- a/src/util.c	Mon Dec 18 05:08:46 2000 +0000
+++ b/src/util.c	Mon Dec 18 05:17:58 2000 +0000
@@ -1257,11 +1257,27 @@
 	return g_strjoin(G_DIR_SEPARATOR_S, g_get_home_dir(), ".gaim", NULL);
 }
 
+/*
+ * rcg10312000 This could be more robust, but it works for my current
+ *  goal: to remove those annoying <BR> tags.  :)
+ * dtf12162000 made the loop more readable. i am a neat freak. ;) */
+void strncpy_nohtml(gchar *dest, const gchar *src, size_t destsize)
+{
+	gchar *ptr;
+	g_snprintf(dest, destsize, "%s", src);
+
+	while (ptr = strstr(dest, "<BR>")) {
+		/* replace <BR> with a newline. */
+		*ptr = '\n';
+		memmove(ptr + 1, ptr + 4, strlen(ptr + 4) + 1);
+	}
+}
+
 void strncpy_withhtml(gchar *dest, const gchar *src, size_t destsize)
 {
 	gchar *end = dest + destsize;
 
-	while (dest < end) {
+	while (*src && dest < end) {
 		if (*src == '\n' && dest < end - 4) {
 			strcpy(dest, "<BR>");
 			src++;
@@ -1269,6 +1285,7 @@
 		} else
 			*dest++ = *src++;
 	}
+	dest[destsize-1] = '\0';
 }