Handling more error cases
This commit is contained in:
parent
f52ec7e720
commit
0dcac17a1c
22
src/surfer.c
22
src/surfer.c
@ -681,13 +681,16 @@ void surfer_console_message(Surfer * surfer, char const * message,
|
|||||||
|
|
||||||
|
|
||||||
/* surfer_download */
|
/* surfer_download */
|
||||||
void surfer_download(Surfer * surfer, char const * url, char const * suggested)
|
int surfer_download(Surfer * surfer, char const * url, char const * suggested)
|
||||||
{
|
{
|
||||||
|
int ret = 0;
|
||||||
GtkWidget * dialog;
|
GtkWidget * dialog;
|
||||||
char * filename = NULL;
|
char * filename = NULL;
|
||||||
char * argv[] = { "download", "-O", NULL, NULL, NULL };
|
char * argv[] = { "download", "-O", NULL, NULL, NULL };
|
||||||
GError * error = NULL;
|
GError * error = NULL;
|
||||||
|
|
||||||
|
if(url == NULL)
|
||||||
|
return -surfer_error(surfer, strerror(EINVAL), 1);
|
||||||
dialog = gtk_file_chooser_dialog_new(_("Save file as..."),
|
dialog = gtk_file_chooser_dialog_new(_("Save file as..."),
|
||||||
GTK_WINDOW(surfer->window),
|
GTK_WINDOW(surfer->window),
|
||||||
GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL,
|
GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL,
|
||||||
@ -701,13 +704,18 @@ void surfer_download(Surfer * surfer, char const * url, char const * suggested)
|
|||||||
dialog));
|
dialog));
|
||||||
gtk_widget_destroy(dialog);
|
gtk_widget_destroy(dialog);
|
||||||
if(filename == NULL)
|
if(filename == NULL)
|
||||||
return;
|
return 0;
|
||||||
argv[2] = filename;
|
argv[2] = filename;
|
||||||
argv[3] = strdup(url); /* XXX may fail */
|
if((argv[3] = strdup(url)) == NULL)
|
||||||
g_spawn_async(NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL, NULL,
|
ret = -surfer_error(surfer, strerror(errno), 1);
|
||||||
&error);
|
else
|
||||||
free(argv[3]);
|
{
|
||||||
|
g_spawn_async(NULL, argv, NULL, G_SPAWN_SEARCH_PATH, NULL, NULL,
|
||||||
|
NULL, &error);
|
||||||
|
free(argv[3]);
|
||||||
|
}
|
||||||
g_free(filename);
|
g_free(filename);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -845,7 +853,7 @@ void surfer_go_home(Surfer * surfer)
|
|||||||
{
|
{
|
||||||
char const * homepage;
|
char const * homepage;
|
||||||
|
|
||||||
if((homepage = config_get(surfer->config, "", "homepage")) == NULL)
|
if((homepage = config_get(surfer->config, NULL, "homepage")) == NULL)
|
||||||
homepage = SURFER_DEFAULT_HOME;
|
homepage = SURFER_DEFAULT_HOME;
|
||||||
surfer_open(surfer, homepage);
|
surfer_open(surfer, homepage);
|
||||||
}
|
}
|
||||||
|
@ -86,7 +86,7 @@ void surfer_save(Surfer * surfer, char const * filename);
|
|||||||
void surfer_find(Surfer * surfer, char const * text);
|
void surfer_find(Surfer * surfer, char const * text);
|
||||||
|
|
||||||
/* download */
|
/* download */
|
||||||
void surfer_download(Surfer * surfer, char const * url, char const * suggested);
|
int surfer_download(Surfer * surfer, char const * url, char const * suggested);
|
||||||
|
|
||||||
/* interface */
|
/* interface */
|
||||||
void surfer_about(Surfer * surfer);
|
void surfer_about(Surfer * surfer);
|
||||||
|
Loading…
Reference in New Issue
Block a user