Commit 0f245d7b authored by Derk-Jan Hartman's avatar Derk-Jan Hartman

update: allow update_Download to accept: directory, filename, NULL

directory: accepts any existing directory and will use the filename component of the update URL (old behaviour). This option no longer requires you to provide a string that ends with the pathsep.

filename: write directly to this filename. Existing files will be overwritten.

NULL: will write to filename component of the update URL. likely in the CWD.
parent 279bdb40
...@@ -35,6 +35,9 @@ ...@@ -35,6 +35,9 @@
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
# include "config.h" # include "config.h"
#endif #endif
#ifdef HAVE_SYS_STAT_H
# include <sys/stat.h>
#endif
#include <vlc_common.h> #include <vlc_common.h>
#include <vlc_update.h> #include <vlc_update.h>
...@@ -1517,6 +1520,7 @@ static void* update_DownloadReal( vlc_object_t *p_this ) ...@@ -1517,6 +1520,7 @@ static void* update_DownloadReal( vlc_object_t *p_this )
char *psz_tmpdestfile = NULL; char *psz_tmpdestfile = NULL;
FILE *p_file = NULL; FILE *p_file = NULL;
struct stat p_stat;
stream_t *p_stream = NULL; stream_t *p_stream = NULL;
void* p_buffer = NULL; void* p_buffer = NULL;
int i_read; int i_read;
...@@ -1548,13 +1552,24 @@ static void* update_DownloadReal( vlc_object_t *p_this ) ...@@ -1548,13 +1552,24 @@ static void* update_DownloadReal( vlc_object_t *p_this )
goto end; goto end;
} }
psz_tmpdestfile++; psz_tmpdestfile++;
if( asprintf( &psz_destfile, "%s%s", psz_destdir, psz_tmpdestfile ) == -1 )
if( utf8_stat( psz_destdir, &p_stat) == 0 && (p_stat.st_mode & S_IFDIR) )
{
if( asprintf( &psz_destfile, "%s%c%s", psz_destdir, DIR_SEP_CHAR, psz_tmpdestfile ) == -1 )
goto end; goto end;
}
else if( psz_destdir )
psz_destfile = strdup( psz_destdir );
else
psz_destfile = strdup( psz_tmpdestfile );
p_file = utf8_fopen( psz_destfile, "w" ); p_file = utf8_fopen( psz_destfile, "w" );
if( !p_file ) if( !p_file )
{ {
msg_Err( p_udt, "Failed to open %s for writing", psz_destfile ); msg_Err( p_udt, "Failed to open %s for writing", psz_destfile );
intf_UserFatal( p_udt, true, _("Saving file failed"),
_("Failed to open \"%s\" for writing"),
psz_destfile );
goto end; goto end;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment