commit - 36067e24da07e071cb6ca722029a484ac9d48fed
commit + dab376b8b67c043a8a5e937abc4452cdd533eaac
blob - bb2e3fb2564fa3f8a2f9b351927f9f687c7874c0
blob + 64bc8733fecc8915eec899c37c5f8ee6265c8d6d
--- src/addritem.c
+++ src/addritem.c
}
}
-/**
- * Get picture filename for person object.
- * \param person Person object.
- * \return copy of picture file path string (to be freed by caller - and there is
- * no guarantee that path does exist, or NULL.
- */
-gchar *addritem_person_get_picture( ItemPerson *person) {
- if (person->picture)
- return g_strconcat( get_rc_dir(), G_DIR_SEPARATOR_S,
- ADDRBOOK_DIR, G_DIR_SEPARATOR_S, person->picture,
- ".png", NULL );
- return NULL;
+size_t addritem_person_get_picture(char *dst, ItemPerson *person) {
+ if (!person->picture)
+ return 0;
+ char buf[PATH_MAX];
+ snprintf(buf, sizeof(buf), "%s/%s/%s.png", get_rc_dir(), ADDRBOOK_DIR, person->picture);
+ return strlcpy(dst, buf, sizeof(dst));
}
-/**
- * Delete picture for person object.
- * \param person Person object.
- */
-void addritem_person_remove_picture( ItemPerson *person) {
- if (person->picture) {
- gchar *filename = g_strconcat( get_rc_dir(), G_DIR_SEPARATOR_S,
- ADDRBOOK_DIR, G_DIR_SEPARATOR_S, person->picture,
- ".png", NULL );
- if (is_file_exist(filename)) {
- debug_print("removing addressbook picture %s\n",
- filename);
- if (unlink(filename) < 0) {
- FILE_OP_ERROR(filename, "remove");
- g_free(filename);
- return;
- }
- }
- g_free(person->picture);
- person->picture = NULL;
- g_free(filename);
- }
+int addritem_person_remove_picture(ItemPerson *person) {
+ if (!person->picture)
+ return 0;
+
+ char path[PATH_MAX];
+ snprintf(path, sizeof(path), "%s/%s/%s", get_rc_dir(), ADDRBOOK_DIR, person->picture);
+ int ret = unlink(path);
+ free(person->picture);
+ person->picture = NULL;
+ return ret;
}
/**
blob - 926ebc75aefe4db6acceb07218cb80aade1e5eca
blob + 651c6694ba8b85a8d96c6bdbf64bc53288d89af6
--- src/addritem.h
+++ src/addritem.h
ItemPerson *addritem_create_item_person ( void );
ItemPerson *addritem_copy_item_person ( ItemPerson *item );
void addritem_person_set_picture ( ItemPerson *person, const gchar *value );
-gchar *addritem_person_get_picture ( ItemPerson *person);
-void addritem_person_remove_picture ( ItemPerson *person);
+size_t addritem_person_get_picture (char *dst, ItemPerson *person);
+int addritem_person_remove_picture ( ItemPerson *person);
void addritem_person_set_first_name ( ItemPerson *person, const gchar *value );
void addritem_person_set_last_name ( ItemPerson *person, const gchar *value );
void addritem_person_set_nick_name ( ItemPerson *person, const gchar *value );
blob - f28511823e8aa91231e1a1aa71af322d7e28ee20
blob + 3c89870020ac69280bb24aa66eebf650c75ed848
--- src/addrmerge.c
+++ src/addrmerge.c
addritem_folder_remove_person(ADAPTER_FOLDER(page->pobj)->itemFolder, person);
person = addrbook_remove_person( page->abf, person );
- if( person ) {
- gchar *filename = addritem_person_get_picture(person);
- if ((g_strcmp0(person->picture, target->picture) &&
- filename && is_file_exist(filename)))
- unlink(filename);
- if (filename)
- g_free(filename);
- addritem_free_item_person( person );
+ if (person) {
+ char filename[PATH_MAX];
+ if (addritem_person_get_picture(filename, person))
+ remove(filename);
}
}
GtkWidget *namesList = NULL;
MainWindow *mainwin = mainwindow_get_mainwindow();
GtkListStore *store = NULL;
- GtkTreeIter iter;
GList *node;
ItemPerson *person;
- GError *error = NULL;
gchar *msg, *label_msg;
dialog = page->dialog = gtk_dialog_new_with_buttons (
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
g_free(label_msg);
- if (page->pickPicture) {
- GtkWidget *scrollwinPictures;
-
- store = gtk_list_store_new(N_SET_COLUMNS,
- GDK_TYPE_PIXBUF,
- G_TYPE_POINTER,
- -1);
- gtk_list_store_clear(store);
-
- vbox = gtkut_get_options_frame(mvbox, &frame,
- _("Keep which picture?"));
- gtk_container_set_border_width(GTK_CONTAINER(frame), 4);
-
- scrollwinPictures = gtk_scrolled_window_new(NULL, NULL);
- gtk_container_set_border_width(GTK_CONTAINER(scrollwinPictures), 1);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwinPictures),
- GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scrollwinPictures),
- GTK_SHADOW_IN);
- gtk_box_pack_start (GTK_BOX (vbox), scrollwinPictures, FALSE, FALSE, 0);
- gtk_widget_set_size_request(scrollwinPictures, 464, 192);
-
- iconView = gtk_icon_view_new_with_model(GTK_TREE_MODEL(store));
- gtk_icon_view_set_selection_mode(GTK_ICON_VIEW(iconView), GTK_SELECTION_SINGLE);
- gtk_icon_view_set_pixbuf_column(GTK_ICON_VIEW(iconView), SET_ICON);
- gtk_container_add(GTK_CONTAINER(scrollwinPictures), GTK_WIDGET(iconView));
- g_signal_connect(G_OBJECT(iconView), "selection-changed",
- G_CALLBACK(addrmerge_picture_selected), page);
-
- /* Add pictures from persons */
- for (node = page->persons; node; node = node->next) {
- gchar *filename;
- person = node->data;
- filename = addritem_person_get_picture(person);
- if (filename && is_file_exist(filename)) {
- GdkPixbuf *pixbuf;
- GtkWidget *image;
-
- pixbuf = gdk_pixbuf_new_from_file(filename, &error);
- if (error) {
- debug_print("Failed to read image: \n%s",
- error->message);
- g_error_free(error);
- continue;
- }
-
- image = gtk_image_new();
- gtk_image_set_from_pixbuf(GTK_IMAGE(image), pixbuf);
-
- gtk_list_store_append(store, &iter);
- gtk_list_store_set(store, &iter,
- SET_ICON, pixbuf,
- SET_PERSON, person,
- -1);
- }
- if (filename)
- g_free(filename);
- }
- }
-
if (page->pickName) {
GtkWidget *scrollwinNames;
gchar *name_titles[N_NAME_COLS];
AddrItemObject *aio;
ItemPerson *person, *target = NULL, *nameTarget = NULL;
GList *persons = NULL, *emails = NULL;
- gboolean pickPicture = FALSE, pickName = FALSE;
+ gboolean pickName = FALSE;
- /* Test for read only */
if( ds->interface->readOnly ) {
- alertpanel_warning(_("This address data is read-only and cannot be deleted."));
+ alertpanel_warning("This address data is read-only and cannot be deleted.");
return;
}
}
}
- /* Check if more than one person has a picture */
- for (node = persons; node; node = node->next) {
- gchar *filename;
- person = node->data;
- filename = addritem_person_get_picture(person);
- if (filename && is_file_exist(filename)) {
- if (target == NULL) {
- target = person;
- } else {
- pickPicture = TRUE;
- target = NULL;
- g_free(filename);
- break;
- }
- }
- if (filename)
- g_free(filename);
- }
- if (pickPicture || target) {
- /* At least one person had a picture */
- } else if (persons && persons->data) {
- /* No person had a picture. Use the first person as target */
+ if (persons && persons->data) {
target = persons->data;
} else {
/* No persons in list. Abort */
/* Create object */
page = g_new0(struct AddrMergePage, 1);
- page->pickPicture = pickPicture;
+ page->pickPicture = FALSE;
page->pickName = pickName;
page->target = target;
page->nameTarget = nameTarget;
blob - 9164f098f5713f2a1f0f7cb259c4f9f1b1fe744a
blob + 3f89d69e211dbc84fd5fde69c5ac885485b1c5a1
--- src/common/utils.h
+++ src/common/utils.h
#endif
#include <wchar.h>
-/* The Hurd doesn't have these limits */
-#ifndef PATH_MAX
- #define PATH_MAX 4196
-#endif
-#ifndef HOST_NAME_MAX
- #define HOST_NAME_MAX 256
-#endif
-
/* Handling Base64 content in procmime and prefs_customheader */
#define B64_LINE_SIZE 57
blob - 83aea785c9ef73d75aee06e47aef722ab135b93a
blob + 28567290bd0264bd4f8fdb8535f84e460ef3c403
--- src/compose.c
+++ src/compose.c
#include <wchar.h>
#include <wctype.h>
#include <signal.h>
+#include <err.h>
#include <errno.h>
#include <libgen.h>
if (compose_can_autosave(compose))
compose_draft((gpointer)compose, COMPOSE_AUTO_SAVE);
- if (unlink(compose->exteditor_file) < 0)
- FILE_OP_ERROR(compose->exteditor_file, "unlink");
+ if (remove(compose->exteditor_file) < 0)
+ warn("remove %s", compose->exteditor_file);
gtk_text_buffer_get_start_iter(buffer, &iter);
blob - 36c8e1f16a1d49b8d87394a563b675205ca43797
blob + 6b516dba307873d8349b574c11a22d27f055275c
--- src/editaddress.c
+++ src/editaddress.c
addritem_person_set_common_name( current_person, cn );
g_free( cn );
- if (personeditdlg.picture_set) {
- GdkPixbuf * pixbuf = gtk_image_get_pixbuf(GTK_IMAGE(personeditdlg.image));
-
- if (!current_person->picture)
- name = g_strconcat( get_rc_dir(), G_DIR_SEPARATOR_S, ADDRBOOK_DIR, G_DIR_SEPARATOR_S,
- ADDRITEM_ID(current_person), ".png", NULL );
- else
- name = g_strconcat( get_rc_dir(), G_DIR_SEPARATOR_S, ADDRBOOK_DIR, G_DIR_SEPARATOR_S,
- current_person->picture, ".png", NULL );
-
- gdk_pixbuf_save(pixbuf, name, "png", &error, NULL);
- if (error) {
- alertpanel_error(_("Failed to save image: \n%s"),
- error->message);
- g_error_free(error);
- } else {
- debug_print("saved picture to %s\n", name);
- }
- if (!current_person->picture)
- addritem_person_set_picture( current_person, ADDRITEM_ID(current_person) ) ;
- g_free( name );
- } else {
- if (!current_person->picture)
- name = g_strconcat( get_rc_dir(), G_DIR_SEPARATOR_S, ADDRBOOK_DIR, G_DIR_SEPARATOR_S,
- ADDRITEM_ID(current_person), ".png", NULL );
- else
- name = g_strconcat( get_rc_dir(), G_DIR_SEPARATOR_S, ADDRBOOK_DIR, G_DIR_SEPARATOR_S,
- current_person->picture, ".png", NULL );
- unlink(name);
- g_free(name);
- }
name = gtk_editable_get_chars( GTK_EDITABLE(personeditdlg.entry_first), 0, -1 );
addritem_person_set_first_name( current_person, name );
g_free( name );
if( ADDRITEM_NAME(current_person) )
gtk_entry_set_text(GTK_ENTRY(personeditdlg.entry_name), ADDRITEM_NAME(person) );
-
- if( current_person->picture ) {
- filename = g_strconcat( get_rc_dir(), G_DIR_SEPARATOR_S, ADDRBOOK_DIR, G_DIR_SEPARATOR_S,
- current_person->picture, ".png", NULL );
- if (is_file_exist(filename)) {
- pixbuf = gdk_pixbuf_new_from_file(filename, &error);
- if (error) {
- debug_print("Failed to import image: %s\n",
- error->message);
- g_error_free(error);
- goto no_img;
- }
- personeditdlg.picture_set = TRUE;
- cm_menu_set_sensitive("EditAddressPopup/UnsetPicture", personeditdlg.picture_set);
- } else {
- goto no_img;
- }
- gtk_image_set_from_pixbuf(GTK_IMAGE(personeditdlg.image), pixbuf);
- } else {
-no_img:
- addressbook_edit_person_clear_picture();
- }
-
- g_free(filename);
- if (pixbuf) {
- g_object_unref(pixbuf);
- pixbuf = NULL;
- }
-
if( current_person->firstName )
gtk_entry_set_text(GTK_ENTRY(personeditdlg.entry_first), current_person->firstName );
if( current_person->lastName )
blob - eb47fdfe16995f5d68a7f002a048695cadd735ea
blob + e2eefa528a0db568c9fb1d27eb6edd40d97b8bf8
--- src/folder.c
+++ src/folder.c
gint config_version = -1;
path = folder_get_list_path();
- if (!is_file_exist(path)) return -1;
node = xml_parse_file(path);
if (!node) return -1;
g_free(dir);
cache = folder_item_get_cache_file(item);
- if (is_file_exist(cache))
- unlink(cache);
+ unlink(cache);
g_free(cache);
}
blob - 85baa8232686d4520f03569e38563c5b9e21d852
blob + de3bd78cc6e5a49e046513d94e76226b8d84b634
--- src/imap.c
+++ src/imap.c
static void imap_remove_cached_msg(Folder *folder, FolderItem *item, MsgInfo *msginfo)
{
- gchar *filename;
-
- filename = imap_get_cached_filename(item, msginfo->msgnum);
-
- cm_return_if_fail(filename != NULL);
-
- if (is_file_exist(filename)) {
- unlink(filename);
+ char *name = imap_get_cached_filename(item, msginfo->msgnum);
+ if (!name) {
+ warn("cannot get filename for message number %d", msginfo->msgnum);
+ return;
}
- g_free(filename);
+ if (remove(name) < 0)
+ warn("remove %s", name);
+ free(name);
}
static gchar *imap_fetch_msg_full(Folder *folder, FolderItem *item, gint uid,
blob - 6fb652376d23bb63a6a3bced902b228b32797a96
blob + 5bd8b7b5d43bf52cc5a7a74f0d3b6569454bdbf4
--- src/main.c
+++ src/main.c
static void install_basic_sighandlers (void);
static void exit_claws (MainWindow *mainwin);
-#define MAKE_DIR_IF_NOT_EXIST(dir) \
-{ \
- if (!is_dir_exist(dir)) { \
- if (is_file_exist(dir)) { \
- alertpanel_warning \
- (_("File '%s' already exists.\n" \
- "Can't create folder."), \
- dir); \
- return 1; \
- } \
- if (make_dir(dir) < 0) \
- return 1; \
- } \
-}
-
#define STRNCMP(S1, S2) (strncmp((S1), (S2), sizeof((S2)) - 1))
#define CM_FD_WRITE(S) fd_write(sock, (S), strlen((S)))
g_free(userrc);
CHDIR_RETURN_VAL_IF_FAIL(get_rc_dir(), 1);
- MAKE_DIR_IF_NOT_EXIST(get_mail_base_dir());
- MAKE_DIR_IF_NOT_EXIST(get_mime_tmp_dir());
- MAKE_DIR_IF_NOT_EXIST(get_tmp_dir());
+ if (mkdir(get_mail_base_dir(), 0755) < 0 && errno != EEXIST)
+ err(1, "make %s", get_mail_base_dir());
+ if (mkdir(get_mime_tmp_dir(), 0755) < 0 && errno != EEXIST)
+ err(1, "make %s", get_mime_tmp_dir());
+ if (mkdir(get_tmp_dir(), 0755) < 0 && errno != EEXIST)
+ err(1, "make %s", get_tmp_dir());
remove_all_files(get_tmp_dir());
remove_all_files(get_mime_tmp_dir());
- if (is_file_exist("claws.log")) {
- if (rename_force("claws.log", "claws.log.bak") < 0)
- FILE_OP_ERROR("claws.log", "rename");
- }
set_log_file(LOG_PROTOCOL, "claws.log");
-
- if (is_file_exist("filtering.log")) {
- if (rename_force("filtering.log", "filtering.log.bak") < 0)
- FILE_OP_ERROR("filtering.log", "rename");
- }
set_log_file(LOG_DEBUG_FILTERING, "filtering.log");
CHDIR_RETURN_VAL_IF_FAIL(get_home_dir(), 1);
blob - 42dc750da793ef3455105dea820790be8f17abd0
blob + 7ee6a4e8b56b0db644c5f8461963f0a629e72882
--- src/mh.c
+++ src/mh.c
return nummsgs;
}
-static gchar *mh_fetch_msg(Folder *folder, FolderItem *item, gint num)
+static gchar *mh_fetch_msg(Folder *folder, FolderItem *item, int num)
{
- gchar *path;
- gchar *file;
-
- cm_return_val_if_fail(item != NULL, NULL);
- cm_return_val_if_fail(num > 0, NULL);
-
- path = folder_item_get_path(item);
- file = g_strconcat(path, G_DIR_SEPARATOR_S, itos(num), NULL);
-
- if (!is_file_exist(file)) {
- g_free(file);
- g_free(path);
+ if (item == NULL) {
+ warn("fetch message %d: NULL folder item", num);
return NULL;
+ } else if (num <= 0) {
+ warn("fetch message %d: message number must be positive");
+ return NULL;
}
- g_free(path);
+
+ char *path = folder_item_get_path(item);
+ char *file = malloc(PATH_MAX);
+ snprintf(file, sizeof(file), "%s/%d", path, num);
return file;
}