summaryrefslogtreecommitdiff
path: root/amiga/download.c
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2011-07-23 15:19:27 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2011-07-23 15:19:27 +0000
commit7f6b694732f0f24d0ecb73fa3eb22c2ca9c40aa0 (patch)
treef8414263199e23e8aa3e9b74979550c51634d32f /amiga/download.c
parent9cd59748687410e8d4260d47d17c427686d4eecb (diff)
downloadnetsurf-7f6b694732f0f24d0ecb73fa3eb22c2ca9c40aa0.tar.gz
netsurf-7f6b694732f0f24d0ecb73fa3eb22c2ca9c40aa0.tar.bz2
Show existing file size when file already exists on download
svn path=/trunk/netsurf/; revision=12618
Diffstat (limited to 'amiga/download.c')
-rw-r--r--amiga/download.c27
1 files changed, 22 insertions, 5 deletions
diff --git a/amiga/download.c b/amiga/download.c
index 48163887e..71d7baaf1 100644
--- a/amiga/download.c
+++ b/amiga/download.c
@@ -102,7 +102,7 @@ struct gui_download_window *gui_download_window_create(download_context *ctx,
{
strlcpy(dw->fname, savereq->fr_Drawer, 1024);
AddPart((STRPTR)&dw->fname,savereq->fr_File,1024);
- if(!ami_download_check_overwrite(dw->fname, gui->shared->win))
+ if(!ami_download_check_overwrite(dw->fname, gui->shared->win, total_size))
{
FreeVec(dw);
return NULL;
@@ -327,7 +327,7 @@ gui_window_save_link(struct gui_window *g, const char *url, const char *title)
AddPart(fname,savereq->fr_File,1024);
ami_update_pointer(g->shared->win,GUI_POINTER_WAIT);
- if(ami_download_check_overwrite(fname, g->shared->win))
+ if(ami_download_check_overwrite(fname, g->shared->win, 0))
{
if(fh = FOpen(fname,MODE_NEWFILE,0))
{
@@ -356,11 +356,14 @@ gui_window_save_link(struct gui_window *g, const char *url, const char *title)
}
}
-BOOL ami_download_check_overwrite(const char *file, struct Window *win)
+BOOL ami_download_check_overwrite(const char *file, struct Window *win, ULONG size)
{
/* Return TRUE if file can be (over-)written */
int res = 0;
BPTR lock = 0;
+ BPTR fh = 0;
+ int64 oldsize = 0;
+ char *overwritetext;
if(option_ask_overwrite == false) return TRUE;
@@ -368,9 +371,23 @@ BOOL ami_download_check_overwrite(const char *file, struct Window *win)
if(lock)
{
- UnLock(lock);
+ if(size) {
+ if(fh = OpenFromLock(lock)) {
+ oldsize = GetFileSize(fh);
+ Close(fh);
+ }
+ overwritetext = ASPrintf("%s\n\n%s %lu %s\n%s %lu %s",
+ messages_get("OverwriteFile"),
+ messages_get("amiSizeExisting"), (ULONG)oldsize, messages_get("Bytes"),
+ messages_get("amiSizeNew"), size, messages_get("Bytes"));
+ } else {
+ UnLock(lock);
+ overwritetext = ASPrintf(messages_get("OverwriteFile"));
+ }
+
+ char *utf8text = ami_utf8_easy(overwritetext);
+ FreeVec(overwritetext);
- char *utf8text = ami_utf8_easy(messages_get("OverwriteFile"));
char *utf8gadget1 = ami_utf8_easy(messages_get("DontReplace"));
char *utf8gadget2 = ami_utf8_easy(messages_get("Replace"));
char *utf8gadgets = ASPrintf("%s|%s", utf8gadget1, utf8gadget2);