summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
Diffstat (limited to 'amiga')
-rw-r--r--amiga/bitmap.c3
-rwxr-xr-xamiga/context_menu.c2
-rw-r--r--amiga/download.c27
-rwxr-xr-xamiga/download.h2
-rw-r--r--amiga/drag.c6
-rwxr-xr-xamiga/gui.h2
-rw-r--r--amiga/iff_dr2d.c2
-rwxr-xr-xamiga/menu.c6
-rwxr-xr-xamiga/utf8.c4
9 files changed, 37 insertions, 17 deletions
diff --git a/amiga/bitmap.c b/amiga/bitmap.c
index d6895d2b3..b6e01c1ed 100644
--- a/amiga/bitmap.c
+++ b/amiga/bitmap.c
@@ -33,6 +33,7 @@
#include <datatypes/pictureclass.h>
#include <proto/dos.h>
#include <proto/intuition.h>
+#include <proto/utility.h>
#include "utils/messages.h"
/**
@@ -138,7 +139,7 @@ bool bitmap_save(void *bitmap, const char *path, unsigned flags)
int err = 0;
Object *dto = NULL;
- if(!ami_download_check_overwrite(path, NULL)) return false;
+ if(!ami_download_check_overwrite(path, NULL, 0)) return false;
if(dto = ami_datatype_object_from_bitmap(bitmap))
{
diff --git a/amiga/context_menu.c b/amiga/context_menu.c
index 03ece4373..92ba1598d 100755
--- a/amiga/context_menu.c
+++ b/amiga/context_menu.c
@@ -517,7 +517,7 @@ static uint32 ami_context_menu_hook(struct Hook *hook,Object *item,APTR reserved
AddPart(fname,savereq->fr_File,1024);
ami_update_pointer(gwin->win,GUI_POINTER_WAIT);
- if(ami_download_check_overwrite(fname, gwin->win))
+ if(ami_download_check_overwrite(fname, gwin->win, 0))
{
if(fh = FOpen(fname,MODE_NEWFILE,0))
{
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);
diff --git a/amiga/download.h b/amiga/download.h
index 99f11df5a..ed09a8057 100755
--- a/amiga/download.h
+++ b/amiga/download.h
@@ -35,5 +35,5 @@ struct dlnode
void ami_download_window_abort(struct gui_download_window *dw);
BOOL ami_download_window_event(struct gui_download_window *dw);
void ami_free_download_list(struct List *dllist);
-BOOL ami_download_check_overwrite(const char *file, struct Window *win);
+BOOL ami_download_check_overwrite(const char *file, struct Window *win, ULONG size);
#endif
diff --git a/amiga/drag.c b/amiga/drag.c
index 7fc3bc709..6afbd9388 100644
--- a/amiga/drag.c
+++ b/amiga/drag.c
@@ -156,7 +156,7 @@ void ami_drag_save(struct Window *win)
BPTR fh = 0;
AddPart(path, content_get_title(c), 1024);
- if(!ami_download_check_overwrite(path, win))
+ if(!ami_download_check_overwrite(path, win, 0))
break;
if(fh = FOpen(path,MODE_NEWFILE,0))
@@ -172,7 +172,7 @@ void ami_drag_save(struct Window *win)
case GUI_SAVE_TEXT_SELECTION: // selection
AddPart(path,"netsurf_text_file",1024);
- if(!ami_download_check_overwrite(path, win))
+ if(!ami_download_check_overwrite(path, win, 0))
break;
selection_save_text((struct selection *)drag_save_data,path);
break;
@@ -183,7 +183,7 @@ void ami_drag_save(struct Window *win)
BPTR lock = 0;
AddPart(path, content_get_title(c), 1024);
- if(!ami_download_check_overwrite(path, win))
+ if(!ami_download_check_overwrite(path, win, 0))
break;
if(lock = CreateDir(path))
diff --git a/amiga/gui.h b/amiga/gui.h
index 500eceb9c..f39ab1ae1 100755
--- a/amiga/gui.h
+++ b/amiga/gui.h
@@ -135,6 +135,8 @@ void ami_get_msg(void);
void ami_close_all_tabs(struct gui_window_2 *gwin);
void ami_quit_netsurf(void);
void ami_do_redraw(struct gui_window_2 *g);
+void ami_do_redraw_limits(struct gui_window *g, struct browser_window *bw,
+ int x0, int y0, int x1, int y1);
STRPTR ami_locale_langs(void);
int ami_key_to_nskey(ULONG keycode, struct InputEvent *ie);
struct box *ami_text_box_at_point(struct gui_window_2 *gwin, ULONG *x, ULONG *y);
diff --git a/amiga/iff_dr2d.c b/amiga/iff_dr2d.c
index 1787e1e9f..3f46ee933 100644
--- a/amiga/iff_dr2d.c
+++ b/amiga/iff_dr2d.c
@@ -308,7 +308,7 @@ bool ami_save_svg(struct hlcache_handle *c,char *filename)
const char *source_data;
ULONG source_size;
- if(!ami_download_check_overwrite(filename, NULL)) return false;
+ if(!ami_download_check_overwrite(filename, NULL, 0)) return false;
if(iffh = AllocIFF())
{
diff --git a/amiga/menu.c b/amiga/menu.c
index ed1966df7..10066014b 100755
--- a/amiga/menu.c
+++ b/amiga/menu.c
@@ -535,7 +535,7 @@ void ami_menupick(ULONG code,struct gui_window_2 *gwin,struct MenuItem *item)
AddPart(fname,savereq->fr_File,1024);
ami_update_pointer(gwin->win,GUI_POINTER_WAIT);
- if(ami_download_check_overwrite(fname, gwin->win))
+ if(ami_download_check_overwrite(fname, gwin->win, 0))
{
if(fh = FOpen(fname,MODE_NEWFILE,0))
{
@@ -561,7 +561,7 @@ void ami_menupick(ULONG code,struct gui_window_2 *gwin,struct MenuItem *item)
AddPart(fname,savereq->fr_File,1024);
ami_update_pointer(gwin->win,GUI_POINTER_WAIT);
- if(ami_download_check_overwrite(fname, gwin->win))
+ if(ami_download_check_overwrite(fname, gwin->win, 0))
{
save_as_text(gwin->bw->current_content,fname);
SetComment(fname,content_get_url(gwin->bw->current_content));
@@ -580,7 +580,7 @@ void ami_menupick(ULONG code,struct gui_window_2 *gwin,struct MenuItem *item)
strlcpy(fname,savereq->fr_Drawer,1024);
AddPart(fname,savereq->fr_File,1024);
ami_update_pointer(gwin->win,GUI_POINTER_WAIT);
- if(ami_download_check_overwrite(fname, gwin->win))
+ if(ami_download_check_overwrite(fname, gwin->win, 0))
{
if(lock = CreateDir(fname))
{
diff --git a/amiga/utf8.c b/amiga/utf8.c
index 030d6eef9..76e7b8690 100755
--- a/amiga/utf8.c
+++ b/amiga/utf8.c
@@ -30,7 +30,7 @@ void ami_utf8_free(char *ptr)
if(ptr) free(ptr);
}
-char *ami_utf8_easy(char *string)
+char *ami_utf8_easy(const char *string)
{
char *localtext;
@@ -44,7 +44,7 @@ char *ami_utf8_easy(char *string)
}
}
-char *ami_to_utf8_easy(char *string)
+char *ami_to_utf8_easy(const char *string)
{
char *localtext;