- gpointer data)
-{
- gchar *sug_clean, *path, *path2 = NULL, *uri;
- GtkToolItem *tb;
- int suffix = 1;
- size_t i;
-
- sug_clean = g_strdup(suggested_filename);
- for (i = 0; i < strlen(sug_clean); i++)
- if (sug_clean[i] == G_DIR_SEPARATOR)
- sug_clean[i] = '_';
-
- path = g_build_filename((char *)data, sug_clean, NULL);
- path2 = g_strdup(path);
- while (g_file_test(path2, G_FILE_TEST_EXISTS) && suffix < 1000) {
- g_free(path2);
-
- path2 = g_strdup_printf("%s.%d", path, suffix);
- suffix++;
- }
-
- if (suffix == 1000) {
- fprintf(stderr, __NAME__": Suffix reached limit for download.\n");
- webkit_download_cancel(download);
- } else {
- uri = g_filename_to_uri(path2, NULL, NULL);
- webkit_download_set_destination(download, uri);
- g_free(uri);
-
- tb = gtk_tool_button_new(NULL, NULL);
- gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(tb), "network-receive");
- gtk_tool_button_set_label(GTK_TOOL_BUTTON(tb), sug_clean);
- gtk_toolbar_insert(GTK_TOOLBAR(dm.toolbar), tb, 0);
- gtk_widget_show_all(dm.win);
-
- g_signal_connect(G_OBJECT(download), "notify::estimated-progress",
- G_CALLBACK(changed_download_progress), tb);
-
- downloads++;
- g_signal_connect(G_OBJECT(download), "finished",
- G_CALLBACK(download_finished), tb);
-
- g_object_ref(download);
-
- struct DownloadItem *payload = malloc(sizeof(*payload));
- payload->tb = (GtkToolButton *)tb;
- payload->download = download;
- g_signal_connect(G_OBJECT(tb), "clicked",
- G_CALLBACK(download_click),
- payload);
- g_signal_connect(G_OBJECT(tb), "failed", G_CALLBACK(download_cancel),
- payload);
- g_signal_connect(G_OBJECT(tb), "destroy_event", G_CALLBACK(g_free),
- payload);
- }
-
- g_free(sug_clean);
- g_free(path);
- g_free(path2);
-
- /* Propagate -- to whom it may concern. */
- return FALSE;
+ gpointer data) {
+ gchar *sug_clean, *path, *path2 = NULL, *uri;
+ GtkToolItem *tb;
+ int suffix = 1;
+ size_t i;
+
+ sug_clean = g_strdup(suggested_filename);
+ for (i = 0; i < strlen(sug_clean); i++)
+ if (sug_clean[i] == G_DIR_SEPARATOR)
+ sug_clean[i] = '_';
+
+ path = g_build_filename((char *)data, sug_clean, NULL);
+ path2 = g_strdup(path);
+ while (g_file_test(path2, G_FILE_TEST_EXISTS) && suffix < 1000) {
+ g_free(path2);
+
+ path2 = g_strdup_printf("%s.%d", path, suffix);
+ suffix++;
+ }
+
+ if (suffix == 1000) {
+ fprintf(stderr, __NAME__ ": Suffix reached limit for download.\n");
+ webkit_download_cancel(download);
+ } else {
+ uri = g_filename_to_uri(path2, NULL, NULL);
+ webkit_download_set_destination(download, uri);
+ g_free(uri);
+
+ tb = gtk_tool_button_new(NULL, NULL);
+ gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(tb), "network-receive");
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(tb), sug_clean);
+ gtk_toolbar_insert(GTK_TOOLBAR(dm.toolbar), tb, 0);
+ gtk_widget_show_all(dm.win);
+
+ g_signal_connect(G_OBJECT(download), "notify::estimated-progress",
+ G_CALLBACK(changed_download_progress), tb);
+
+ downloads++;
+ g_signal_connect(G_OBJECT(download), "finished",
+ G_CALLBACK(download_finished), tb);
+
+ g_object_ref(download);
+
+ struct DownloadItem *payload = malloc(sizeof(*payload));
+ payload->tb = (GtkToolButton *)tb;
+ payload->download = download;
+ g_signal_connect(G_OBJECT(tb), "clicked", G_CALLBACK(download_click),
+ payload);
+ g_signal_connect(G_OBJECT(tb), "failed", G_CALLBACK(download_cancel),
+ payload);
+ g_signal_connect(G_OBJECT(tb), "destroy_event", G_CALLBACK(g_free),
+ payload);
+ }
+
+ g_free(sug_clean);
+ g_free(path);
+ g_free(path2);
+
+ // Propagate -- to whom it may concern.
+ return FALSE;