Improved error handling
This commit is contained in:
parent
b51fbc3868
commit
c5f82e1631
@ -56,7 +56,7 @@ typedef struct _Download
|
|||||||
|
|
||||||
/* prototypes */
|
/* prototypes */
|
||||||
static int _download(Prefs * prefs, char const * url);
|
static int _download(Prefs * prefs, char const * url);
|
||||||
static int _download_error(char const * message, int ret);
|
static int _download_error(Download * download, char const * message, int ret);
|
||||||
static void _download_refresh(Download * download);
|
static void _download_refresh(Download * download);
|
||||||
|
|
||||||
/* callbacks */
|
/* callbacks */
|
||||||
@ -82,7 +82,7 @@ static int _download(Prefs * prefs, char const * url)
|
|||||||
if(prefs->output == NULL)
|
if(prefs->output == NULL)
|
||||||
prefs->output = basename(url);
|
prefs->output = basename(url);
|
||||||
if(gettimeofday(&download.tv, NULL) != 0)
|
if(gettimeofday(&download.tv, NULL) != 0)
|
||||||
return _download_error("gettimeofday", 1);
|
return _download_error(NULL, "gettimeofday", 1);
|
||||||
download.data_received = 0;
|
download.data_received = 0;
|
||||||
download.window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
download.window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||||
gtk_window_set_title(GTK_WINDOW(download.window), "Download file");
|
gtk_window_set_title(GTK_WINDOW(download.window), "Download file");
|
||||||
@ -113,7 +113,7 @@ static int _download(Prefs * prefs, char const * url)
|
|||||||
|
|
||||||
|
|
||||||
/* download_error */
|
/* download_error */
|
||||||
static int _download_error(char const * message, int ret)
|
static int _download_error(Download * download, char const * message, int ret)
|
||||||
{
|
{
|
||||||
GtkWidget * dialog;
|
GtkWidget * dialog;
|
||||||
|
|
||||||
@ -123,11 +123,13 @@ static int _download_error(char const * message, int ret)
|
|||||||
perror(message);
|
perror(message);
|
||||||
return -ret;
|
return -ret;
|
||||||
}
|
}
|
||||||
dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT,
|
dialog = gtk_message_dialog_new(download != NULL
|
||||||
GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s: %s",
|
? GTK_WINDOW(download->window) : NULL,
|
||||||
message, strerror(errno));
|
GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR,
|
||||||
|
GTK_BUTTONS_CLOSE, "%s: %s", message, strerror(errno));
|
||||||
gtk_window_set_title(GTK_WINDOW(dialog), "Error");
|
gtk_window_set_title(GTK_WINDOW(dialog), "Error");
|
||||||
gtk_dialog_run(GTK_DIALOG(dialog));
|
gtk_dialog_run(GTK_DIALOG(dialog));
|
||||||
|
gtk_widget_destroy(dialog);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -312,9 +314,9 @@ static gboolean _download_on_idle(gpointer data)
|
|||||||
|
|
||||||
if((download->fp = fopen(download->prefs->output, "w")) == NULL)
|
if((download->fp = fopen(download->prefs->output, "w")) == NULL)
|
||||||
{
|
{
|
||||||
/* FIXME really report the error as such */
|
_download_error(download, download->prefs->output, 0);
|
||||||
gtk_label_set_text(GTK_LABEL(download->status), strerror(
|
/* FIXME cleanup */
|
||||||
errno));
|
gtk_main_quit();
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
download->conn = gnet_conn_http_new();
|
download->conn = gnet_conn_http_new();
|
||||||
|
Loading…
Reference in New Issue
Block a user