Real fix for Coverity 1372362.
[claws.git] / src / plugins / vcalendar / vcalendar.c
index 263d542754945911f506253408c572c573da15e0..7678ca46e815fa2a5283d504a901f68edbe95d66 100644 (file)
@@ -150,7 +150,7 @@ static void create_meeting_from_message_cb_ui(GtkAction *action, gpointer data)
                }
                
                if (fp) {
-                       gchar uid[256];
+                       gchar *uid;
                        time_t t = time(NULL);
                        time_t t2 = t+3600;
                        gchar *org = NULL;
@@ -179,22 +179,13 @@ static void create_meeting_from_message_cb_ui(GtkAction *action, gpointer data)
 
                        org = g_strdup(account->address);
 
-                       if (account->set_domain && account->domain) {
-                               g_snprintf(uid, sizeof(uid), "%s", account->domain); 
-                       } else if (!strncmp(get_domain_name(), "localhost", strlen("localhost"))) {
-                               g_snprintf(uid, sizeof(uid), "%s", 
-                                       strchr(account->address, '@') ?
-                                       strchr(account->address, '@')+1 :
-                                       account->address);
-                       } else {
-                               g_snprintf(uid, sizeof(uid), "%s", "");
-                       }
-                       generate_msgid(uid, 255, account->address);
+                       uid = prefs_account_generate_msgid(account);
                        
                        event = vcal_manager_new_event(uid,
                                        org, NULL, NULL/*location*/, summary, description, 
                                        dtstart, dtend, recur, tzid, url, method, sequence, 
                                        ICAL_VTODO_COMPONENT);
+                       g_free(uid);
                        
                        /* hack to get default hours */
                        g_free(event->dtstart);
@@ -217,7 +208,7 @@ bail:
                        g_free(url);
                }
 
-               procmsg_msginfo_free(msginfo);
+               procmsg_msginfo_free(&msginfo);
        }
 
        statusbar_progress_all(0,0,0);
@@ -376,7 +367,7 @@ static void vcalviewer_answer_set_choices(VCalViewer *vcalviewer, VCalEvent *eve
        
        vcalviewer_show_unavailable(vcalviewer, FALSE);
 
-       if (method == ICAL_METHOD_REQUEST && event && !event->rec_occurence) {
+       if (method == ICAL_METHOD_REQUEST && event && !event->rec_occurrence) {
                PrefsAccount *account = vcal_manager_get_account_from_event(event);
                
                if (!account)
@@ -561,13 +552,16 @@ void vcalviewer_display_event (VCalViewer *vcalviewer, VCalEvent *event)
 /* start */
        if (event->start && *(event->start)) {
                if (event->recur && *(event->recur)) {
-                       gchar *tmp = g_strdup_printf(_("%s <span weight=\"bold\">(this event recurs)</span>"),
+                       gchar *tmp = g_strdup_printf(g_strconcat("%s <span weight=\"bold\">",
+                                                       _("(this event recurs)"),"</span>", NULL),
                                        event->start);
                        GTK_LABEL_SET_TEXT_TRIMMED(GTK_LABEL(vcalviewer->start), tmp);
                        gtk_label_set_use_markup(GTK_LABEL(vcalviewer->start), TRUE);
                        g_free(tmp);
-               } else if (event->rec_occurence) {
-                       gchar *tmp = g_strdup_printf(_("%s <span weight=\"bold\">(this event is part of a recurring event)</span>"),
+               } else if (event->rec_occurrence) {
+                       gchar *tmp = g_strdup_printf(g_strconcat("%s <span weight=\"bold\">",
+                                                       _("(this event is part of a recurring event)"),
+                                                       "</span>", NULL),
                                        event->start);
                        GTK_LABEL_SET_TEXT_TRIMMED(GTK_LABEL(vcalviewer->start), tmp);
                        gtk_label_set_use_markup(GTK_LABEL(vcalviewer->start), TRUE);
@@ -735,7 +729,7 @@ static void vcalviewer_get_reply_values(VCalViewer *vcalviewer, MimeInfo *mimein
                charset = CS_WINDOWS_1252;
 
        if (!vcalviewer->event->answers || g_slist_length(vcalviewer->event->answers) > 1) {
-               g_warning("strange, no answers or more than one\n");
+               g_warning("strange, no answers or more than one");
        } 
        
        if (vcalviewer->event->answers) {
@@ -1067,7 +1061,7 @@ static gboolean vcalviewer_action_cb(GtkButton *widget, gpointer data)
        s_vcalviewer = vcalviewer;
        
        if (!vcalviewer->event) {
-               g_warning("can't get event\n");
+               g_warning("can't get event");
                return TRUE;
        }
 
@@ -1087,8 +1081,8 @@ static gboolean vcalviewer_action_cb(GtkButton *widget, gpointer data)
                AlertValue val = alertpanel_full(_("No account found"), 
                                        _("You have no account matching any attendee.\n"
                                            "Do you want to reply anyway?"),
-                                       GTK_STOCK_CANCEL, _("+Reply anyway"), NULL, FALSE,
-                                       NULL, ALERT_QUESTION, G_ALERTDEFAULT);
+                                       GTK_STOCK_CANCEL, g_strconcat("+", _("Reply anyway"), NULL),
+                                       NULL, FALSE, NULL, ALERT_QUESTION, G_ALERTDEFAULT);
                if (val == G_ALERTALTERNATE) {          
                        account = account_get_default();
                        vcal_manager_update_answer(event, account->address, 
@@ -1106,7 +1100,7 @@ static gboolean vcalviewer_action_cb(GtkButton *widget, gpointer data)
        
        if (event->organizer && *(event->organizer) && 
            !vcal_manager_reply(account, event)) {
-               g_warning("couldn't send reply\n");
+               g_warning("couldn't send reply");
        } else {
                debug_print("no organizer, not sending answer\n");
        }
@@ -1321,8 +1315,11 @@ void vcalendar_init(void)
        gchar *directory = g_strconcat(get_rc_dir(), G_DIR_SEPARATOR_S,
                                "vcalendar", NULL);
        START_TIMING("");
-       if (!is_dir_exist(directory))
-               make_dir (directory);
+       if (!is_dir_exist(directory) && make_dir (directory) != 0) {
+               g_free(directory);
+               return;
+       }
+
        g_free(directory);
 
        vcal_prefs_init();
@@ -1339,16 +1336,15 @@ void vcalendar_init(void)
                folder_scan_tree(folder, TRUE);
                END_TIMING();
        }
-       if (folder) {
-               if (!folder->inbox) {
-                       folder->klass->create_tree(folder);
-                       folder_scan_tree(folder, TRUE);
-               }
-               if (folder->klass->scan_required(folder, folder->inbox)) {
-                       START_TIMING("scanning folder");
-                       folder_item_scan(folder->inbox);
-                       END_TIMING();
-               }
+
+       if (!folder->inbox) {
+               folder->klass->create_tree(folder);
+               folder_scan_tree(folder, TRUE);
+       }
+       if (folder->klass->scan_required(folder, folder->inbox)) {
+               START_TIMING("scanning folder");
+               folder_item_scan(folder->inbox);
+               END_TIMING();
        }
        
        vcal_folder_gtk_init();