Yet another string correction.
[claws.git] / src / prefs_account.c
index 3ea0228885e746cad1c5ba60ca638b25c7ba8423..ec0d115165afa06d0e1e26666f3a33b13e2b0781 100644 (file)
@@ -369,6 +369,8 @@ static void prefs_account_mailcmd_toggled(GtkToggleButton *button,
                                          gpointer user_data);
 static void prefs_account_showpwd_checkbtn_toggled(GtkToggleButton *button,
                                          gpointer user_data);
+static void prefs_account_entry_changed_newline_check_cb(GtkWidget *entry,
+                                               gpointer user_data);
 static void prefs_account_filter_on_recv_toggled(GtkToggleButton *button,
                                          gpointer user_data);
 
@@ -435,6 +437,9 @@ static PrefParam basic_param[] = {
        {"password", NULL, &tmp_ac_prefs.passwd, P_PASSWORD,
         NULL, NULL, NULL},
 
+       {"config_version", "-1", &tmp_ac_prefs.config_version, P_INT,
+               NULL, NULL, NULL},
+
        {NULL, NULL, NULL, P_OTHER, NULL, NULL, NULL}
 };
 
@@ -1217,9 +1222,17 @@ static void basic_create_widget_func(PrefsPage * _page,
        uid_entry = gtk_entry_new ();
        gtk_widget_show (uid_entry);
        gtk_widget_set_size_request (uid_entry, DEFAULT_ENTRY_WIDTH, -1);
+       g_signal_connect(G_OBJECT(uid_entry), "changed",
+                       G_CALLBACK(prefs_account_entry_changed_newline_check_cb),
+                       GINT_TO_POINTER(ac_prefs->protocol));
+
        pass_entry = gtk_entry_new ();
        gtk_widget_show (pass_entry);
        gtk_widget_set_size_request (pass_entry, DEFAULT_ENTRY_WIDTH, -1);
+       g_signal_connect(G_OBJECT(pass_entry), "changed",
+                       G_CALLBACK(prefs_account_entry_changed_newline_check_cb),
+                       GINT_TO_POINTER(ac_prefs->protocol));
+
 #ifndef GENERIC_UMPC
        gtk_table_attach (GTK_TABLE (serv_table), uid_entry, 1, 2, 7, 8,
                          GTK_EXPAND | GTK_SHRINK | GTK_FILL,
@@ -1824,6 +1837,9 @@ static void send_create_widget_func(PrefsPage * _page,
        gtk_widget_show (smtp_uid_entry);
        gtk_widget_set_size_request (smtp_uid_entry, DEFAULT_ENTRY_WIDTH, -1);
        gtk_box_pack_start (GTK_BOX (hbox), smtp_uid_entry, TRUE, TRUE, 0);
+       g_signal_connect(G_OBJECT(smtp_uid_entry), "changed",
+                       G_CALLBACK(prefs_account_entry_changed_newline_check_cb),
+                       GINT_TO_POINTER(ac_prefs->protocol));
 
 #ifdef GENERIC_UMPC
        PACK_VSPACER(vbox4, vbox_spc, VSPACING_NARROW_2);
@@ -1845,6 +1861,9 @@ static void send_create_widget_func(PrefsPage * _page,
        gtk_widget_set_size_request (smtp_pass_entry, DEFAULT_ENTRY_WIDTH, -1);
        gtk_box_pack_start (GTK_BOX (hbox), smtp_pass_entry, TRUE, TRUE, 0);
        gtk_entry_set_visibility (GTK_ENTRY (smtp_pass_entry), FALSE);
+       g_signal_connect(G_OBJECT(smtp_pass_entry), "changed",
+                       G_CALLBACK(prefs_account_entry_changed_newline_check_cb),
+                       GINT_TO_POINTER(ac_prefs->protocol));
 
        showpwd_checkbtn = gtk_check_button_new_with_label (_("Show password"));
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(showpwd_checkbtn), FALSE);
@@ -2946,6 +2965,7 @@ static gint prefs_basic_apply(void)
                alertpanel_error(_("Mail address is not entered."));
                return -1;
        }
+
        if (((protocol == A_POP3) || 
             (protocol == A_LOCAL && !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(basic_page.mailcmd_checkbtn))) || 
             (protocol == A_NONE)) &&
@@ -3012,6 +3032,16 @@ static gint prefs_basic_apply(void)
                                protocol == A_IMAP4 ? "imap":"news",
                                tmp_ac_prefs.account_name ? tmp_ac_prefs.account_name : "(null)");
        
+       if (strchr(gtk_entry_get_text(GTK_ENTRY(basic_page.uid_entry)), '\n') != NULL) {
+               alertpanel_error(_("User ID cannot contain a newline character."));
+               return -1;
+       }
+
+       if (strchr(gtk_entry_get_text(GTK_ENTRY(basic_page.pass_entry)), '\n') != NULL) {
+               alertpanel_error(_("Password cannot contain a newline character."));
+               return -1;
+       }
+
        prefs_set_data_from_dialog(basic_param);
 
        /* Passwords are stored outside of PrefParams. */
@@ -3035,6 +3065,16 @@ static gint prefs_basic_apply(void)
 
 static gint prefs_receive_apply(void)
 {
+       if (strchr(gtk_entry_get_text(GTK_ENTRY(send_page.smtp_uid_entry)), '\n') != NULL) {
+               alertpanel_error(_("SMTP user ID cannot contain a newline character."));
+               return -1;
+       }
+
+       if (strchr(gtk_entry_get_text(GTK_ENTRY(send_page.smtp_pass_entry)), '\n') != NULL) {
+               alertpanel_error(_("SMTP password cannot contain a newline character."));
+               return -1;
+       }
+
        prefs_set_data_from_dialog(receive_param);
        return 0;
 }
@@ -4929,6 +4969,38 @@ static void prefs_account_showpwd_checkbtn_toggled(GtkToggleButton *button,
        gtk_entry_set_visibility(GTK_ENTRY(entry), active);
 }
 
+static void prefs_account_entry_changed_newline_check_cb(GtkWidget *entry,
+               gpointer user_data)
+{
+#if !GTK_CHECK_VERSION(3, 0, 0)
+       static GdkColor red;
+       static gboolean colors_initialised = FALSE;
+#else
+       static GdkColor red = { (guint32)0, (guint16)0xff, (guint16)0x70, (guint16)0x70 };
+#endif
+
+#if !GTK_CHECK_VERSION(3, 0, 0)
+       if (strchr(gtk_entry_get_text(GTK_ENTRY(entry)), '\n') != NULL) {
+               /* Entry contains a newline, light it up. */
+               debug_print("found newline in string, painting entry red\n");
+               if (!colors_initialised) {
+                       if (!gdk_color_parse("#ff7070", &red)) {
+                               g_warning("color parse failed: red");
+                               return;
+                       }
+                       colors_initialised = gdk_colormap_alloc_color(
+                                       gdk_colormap_get_system(), &red, FALSE, TRUE);
+               }
+
+               if (colors_initialised) {
+                       gtk_widget_modify_base(entry, GTK_STATE_NORMAL, &red);
+               }
+       } else {
+               gtk_widget_modify_base(entry, GTK_STATE_NORMAL, NULL);
+       }
+#endif
+}
+
 static void prefs_account_filter_on_recv_toggled(GtkToggleButton *button,
                                          gpointer user_data)
 {