summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xatari/download.c394
1 files changed, 197 insertions, 197 deletions
diff --git a/atari/download.c b/atari/download.c
index ffd9f722d..5f034d857 100755
--- a/atari/download.c
+++ b/atari/download.c
@@ -1,47 +1,47 @@
-/*
- * Copyright 2010 Ole Loots <ole@monochrom.net>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
+/*
+ * Copyright 2010 Ole Loots <ole@monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
#include <stdbool.h>
-
-#include "content/urldb.h"
-#include "content/fetch.h"
-#include "desktop/gui.h"
-#include "desktop/netsurf.h"
-#include "utils/nsoption.h"
-#include "desktop/save_complete.h"
-#include "desktop/textinput.h"
-#include "desktop/download.h"
-#include "render/html.h"
-#include "utils/log.h"
-#include "utils/messages.h"
-#include "utils/utils.h"
-#include "atari/gui.h"
-#include "atari/misc.h"
-#include "atari/res/netsurf.rsh"
-#include "atari/download.h"
-#include "atari/osspec.h"
+
+#include "content/urldb.h"
+#include "content/fetch.h"
+#include "desktop/gui.h"
+#include "desktop/netsurf.h"
+#include "utils/nsoption.h"
+#include "desktop/save_complete.h"
+#include "desktop/textinput.h"
+#include "desktop/download.h"
+#include "render/html.h"
+#include "utils/log.h"
+#include "utils/messages.h"
+#include "utils/utils.h"
+#include "atari/gui.h"
+#include "atari/misc.h"
+#include "atari/res/netsurf.rsh"
+#include "atari/download.h"
+#include "atari/osspec.h"
extern struct gui_window * input_window;
extern GRECT desk_area;
@@ -122,7 +122,7 @@ static short on_aes_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
}
return(retval);
-}
+}
static void on_redraw(struct gui_download_window *dw, GRECT *clip)
{
@@ -146,8 +146,8 @@ static void on_redraw(struct gui_download_window *dw, GRECT *clip)
((TEDINFO *)get_obspec(tree, DOWNLOAD_LBL_PERCENT))->te_ptext = dw->lbl_percent;
((TEDINFO *)get_obspec(tree, DOWNLOAD_LBL_SPEED))->te_ptext = dw->lbl_speed;
- if (dw->size_total > 0 ) {
- p = ((double)dw->size_downloaded / (double)dw->size_total * 100);
+ if (dw->size_total > 0 ) {
+ p = ((double)dw->size_downloaded / (double)dw->size_total * 100);
}
tree[DOWNLOAD_PROGRESS_DONE].ob_width = MAX( MIN( p*(DOWNLOAD_BAR_MAX/100),
DOWNLOAD_BAR_MAX ), 1);
@@ -167,58 +167,58 @@ static void on_redraw(struct gui_download_window *dw, GRECT *clip)
wind_get_grect(dw->aes_handle, WF_NEXTXYWH, &visible);
}
}
-
-static void on_abort_click(struct gui_download_window *dw)
-{
+
+static void on_abort_click(struct gui_download_window *dw)
+{
if( dw->status == NSATARI_DOWNLOAD_COMPLETE
|| dw->status == NSATARI_DOWNLOAD_ERROR ) {
gemtk_wm_send_msg(dw->guiwin, WM_CLOSED, 0,0,0,0);
- }
- else if( dw->status != NSATARI_DOWNLOAD_CANCELED ){
- dw->abort = true;
- }
-}
-
-static void on_cbrdy_click(struct gui_download_window *dw)
+ }
+ else if( dw->status != NSATARI_DOWNLOAD_CANCELED ){
+ dw->abort = true;
+ }
+}
+
+static void on_cbrdy_click(struct gui_download_window *dw)
{
- dw->close_on_finish = !dw->close_on_finish;
+ dw->close_on_finish = !dw->close_on_finish;
if (dw->close_on_finish && dw->status == NSATARI_DOWNLOAD_COMPLETE) {
gemtk_wm_send_msg(dw->guiwin, WM_CLOSED, 0,0,0,0);
}
gemtk_wm_exec_redraw(dw->guiwin, NULL);
- evnt_timer(250);
-}
-
-static void on_close(struct gui_download_window * dw)
-{
- gui_download_window_destroy(dw);
-}
-
-static void gui_download_window_destroy( struct gui_download_window * gdw)
-{
-
-
- LOG((""));
- if (gdw->status == NSATARI_DOWNLOAD_WORKING) {
- download_context_abort(gdw->ctx);
- }
-
- download_context_destroy(gdw->ctx);
-
- if (gdw->destination) {
- free( gdw->destination );
- }
- if (gdw->fd != NULL) {
- fclose(gdw->fd);
- gdw->fd = NULL;
- }
- if (gdw->fbuf != NULL) {
- free( gdw->fbuf );
- }
+ evnt_timer(250);
+}
+
+static void on_close(struct gui_download_window * dw)
+{
+ gui_download_window_destroy(dw);
+}
+
+static void gui_download_window_destroy( struct gui_download_window * gdw)
+{
+
+
+ LOG((""));
+ if (gdw->status == NSATARI_DOWNLOAD_WORKING) {
+ download_context_abort(gdw->ctx);
+ }
+
+ download_context_destroy(gdw->ctx);
+
+ if (gdw->destination) {
+ free( gdw->destination );
+ }
+ if (gdw->fd != NULL) {
+ fclose(gdw->fd);
+ gdw->fd = NULL;
+ }
+ if (gdw->fbuf != NULL) {
+ free( gdw->fbuf );
+ }
gemtk_wm_remove(gdw->guiwin);
wind_close(gdw->aes_handle);
- wind_delete(gdw->aes_handle);
- free(gdw);
+ wind_delete(gdw->aes_handle);
+ free(gdw);
}
static char * select_filepath( const char * path, const char * filename )
@@ -242,14 +242,14 @@ static char * select_filepath( const char * path, const char * filename )
printf("download file: %s\n", ret);
return(ret);
-}
+}
static struct gui_download_window *
gui_download_window_create(download_context *ctx, struct gui_window *parent)
{
- const char *filename;
- char *destination;
- char gdos_path[PATH_MAX];
+ const char *filename;
+ char *destination;
+ char gdos_path[PATH_MAX];
struct gui_download_window * gdw;
int dlgres = 0;
OBJECT * tree = gemtk_obj_get_tree(DOWNLOAD);
@@ -258,19 +258,19 @@ gui_download_window_create(download_context *ctx, struct gui_window *parent)
LOG(("Creating download window for gui window: %p", parent));
- /* TODO: Implement real form and use messages file strings! */
-
+ /* TODO: Implement real form and use messages file strings! */
+
if (tree == NULL){
die("Couldn't find AES Object tree for download window!");
return(NULL);
}
-
+
filename = download_context_get_filename((const download_context*)ctx);
snprintf(alert, 200, "[2][Accept download?|%.*s][Yes|Save as...|No]",
40,filename);
- dlgres = form_alert(2, alert);
- if( dlgres == 3){
- return( NULL );
+ dlgres = form_alert(2, alert);
+ if( dlgres == 3){
+ return( NULL );
}
else if( dlgres == 2 ){
gemdos_realpath(nsoption_charp(downloads_path), gdos_path);
@@ -285,38 +285,38 @@ gui_download_window_create(download_context *ctx, struct gui_window *parent)
destination = malloc( dstsize );
snprintf(destination, dstsize, "%s/%s", gdos_path, filename);
}
-
- gdw = calloc(1, sizeof(struct gui_download_window));
+
+ gdw = calloc(1, sizeof(struct gui_download_window));
if( gdw == NULL ){
warn_user(NULL, "Out of memory!");
- free( destination );
+ free( destination );
return( NULL );
}
-
- gdw->ctx = ctx;
- gdw->abort = false;
- gdw->start = clock() / CLOCKS_PER_SEC;
- gdw->lastrdw = 0;
- gdw->status = NSATARI_DOWNLOAD_WORKING;
- gdw->parent = parent;
- gdw->fbufsize = MAX(BUFSIZ, 48000);
- gdw->size_downloaded = 0;
+
+ gdw->ctx = ctx;
+ gdw->abort = false;
+ gdw->start = clock() / CLOCKS_PER_SEC;
+ gdw->lastrdw = 0;
+ gdw->status = NSATARI_DOWNLOAD_WORKING;
+ gdw->parent = parent;
+ gdw->fbufsize = MAX(BUFSIZ, 48000);
+ gdw->size_downloaded = 0;
gdw->size_total = download_context_get_total_length(ctx);
gdw->destination = destination;
- gdw->tree = tree;
-
- gdw->fd = fopen(gdw->destination, "wb");
+ gdw->tree = tree;
+
+ gdw->fd = fopen(gdw->destination, "wb");
if( gdw->fd == NULL ){
char spare[200];
snprintf(spare, 200, "Couldn't open %s for writing!", gdw->destination);
- gemtk_msg_box_show(GEMTK_MSG_BOX_ALERT, spare);
- gui_download_window_destroy(gdw);
- return( NULL );
+ gemtk_msg_box_show(GEMTK_MSG_BOX_ALERT, spare);
+ gui_download_window_destroy(gdw);
+ return( NULL );
}
-
- gdw->fbuf = malloc( gdw->fbufsize+1 );
- if( gdw->fbuf != NULL ){
- setvbuf( gdw->fd, gdw->fbuf, _IOFBF, gdw->fbufsize );
+
+ gdw->fbuf = malloc( gdw->fbufsize+1 );
+ if( gdw->fbuf != NULL ){
+ setvbuf( gdw->fd, gdw->fbuf, _IOFBF, gdw->fbufsize );
}
gdw->aes_handle = wind_create_grect(CLOSER | NAME | MOVER, &desk_area);
@@ -324,17 +324,17 @@ gui_download_window_create(download_context *ctx, struct gui_window *parent)
unsigned long gwflags = GEMTK_WM_FLAG_DEFAULTS;
gdw->guiwin = gemtk_wm_add(gdw->aes_handle, gwflags, on_aes_event);
if( gdw->guiwin == NULL || gdw->fd == NULL ){
- die("could not create guiwin");
- gui_download_window_destroy(gdw);
- return( NULL );
+ die("could not create guiwin");
+ gui_download_window_destroy(gdw);
+ return( NULL );
}
gemtk_wm_set_user_data(gdw->guiwin, gdw);
gemtk_wm_set_toolbar(gdw->guiwin, tree, 0, 0);
- gemtk_wm_set_toolbar_redraw_func(gdw->guiwin, toolbar_redraw_cb);
-
- strncpy((char*)&gdw->lbl_file, filename, MAX_SLEN_LBL_FILE-1);
- LOG(("created download: %s (total size: %d)",
- gdw->destination, gdw->size_total
+ gemtk_wm_set_toolbar_redraw_func(gdw->guiwin, toolbar_redraw_cb);
+
+ strncpy((char*)&gdw->lbl_file, filename, MAX_SLEN_LBL_FILE-1);
+ LOG(("created download: %s (total size: %d)",
+ gdw->destination, gdw->size_total
));
GRECT work, curr;
@@ -353,17 +353,17 @@ gui_download_window_create(download_context *ctx, struct gui_window *parent)
return(gdw);
}
-
-
-static nserror gui_download_window_data(struct gui_download_window *dw,
- const char *data, unsigned int size)
-{
-
- uint32_t clck = clock();
- uint32_t tnow = clck / (CLOCKS_PER_SEC>>3);
+
+
+static nserror gui_download_window_data(struct gui_download_window *dw,
+ const char *data, unsigned int size)
+{
+
+ uint32_t clck = clock();
+ uint32_t tnow = clck / (CLOCKS_PER_SEC>>3);
uint32_t sdiff = (clck / (CLOCKS_PER_SEC)) - dw->start;
- uint32_t p = 0;
- float speed;
+ uint32_t p = 0;
+ float speed;
float pf = 0;
LOG((""));
@@ -371,85 +371,85 @@ static nserror gui_download_window_data(struct gui_download_window *dw,
OBJECT * tree = dw->tree;
if(dw->abort == true){
- dw->status = NSATARI_DOWNLOAD_CANCELED;
- dw->abort = false;
+ dw->status = NSATARI_DOWNLOAD_CANCELED;
+ dw->abort = false;
download_context_abort(dw->ctx);
- gemtk_wm_exec_redraw(dw->guiwin, NULL);
- return(NSERROR_OK);
- }
-
- /* save data */
- fwrite( data , size, sizeof(unsigned char),dw->fd );
+ gemtk_wm_exec_redraw(dw->guiwin, NULL);
+ return(NSERROR_OK);
+ }
+
+ /* save data */
+ fwrite( data , size, sizeof(unsigned char),dw->fd );
dw->size_downloaded += size;
- /* Update GUI */
+ /* Update GUI */
if ((tnow - dw->lastrdw) > 1) {
- dw->lastrdw = tnow;
- speed = dw->size_downloaded / sdiff;
-
+ dw->lastrdw = tnow;
+ speed = dw->size_downloaded / sdiff;
+
if( dw->size_total > 0 ){
- p = ((double)dw->size_downloaded / (double)dw->size_total * 100);
- snprintf( (char*)&dw->lbl_percent, MAX_SLEN_LBL_PERCENT,
- "%lu%s", p, "%"
- );
- } else {
- snprintf( (char*)&dw->lbl_percent, MAX_SLEN_LBL_PERCENT,
- "%s", "?%"
- );
- }
- snprintf( (char*)&dw->lbl_speed, MAX_SLEN_LBL_SPEED, "%s/s",
- human_friendly_bytesize(speed)
- );
- snprintf( (char*)&dw->lbl_done, MAX_SLEN_LBL_DONE, "%s / %s",
- human_friendly_bytesize(dw->size_downloaded),
- (dw->size_total>0) ? human_friendly_bytesize(dw->size_total) : "?"
+ p = ((double)dw->size_downloaded / (double)dw->size_total * 100);
+ snprintf( (char*)&dw->lbl_percent, MAX_SLEN_LBL_PERCENT,
+ "%lu%s", p, "%"
+ );
+ } else {
+ snprintf( (char*)&dw->lbl_percent, MAX_SLEN_LBL_PERCENT,
+ "%s", "?%"
+ );
+ }
+ snprintf( (char*)&dw->lbl_speed, MAX_SLEN_LBL_SPEED, "%s/s",
+ human_friendly_bytesize(speed)
+ );
+ snprintf( (char*)&dw->lbl_done, MAX_SLEN_LBL_DONE, "%s / %s",
+ human_friendly_bytesize(dw->size_downloaded),
+ (dw->size_total>0) ? human_friendly_bytesize(dw->size_total) : "?"
);
- gemtk_wm_exec_redraw(dw->guiwin, NULL);
- }
- return NSERROR_OK;
-}
-
-static void gui_download_window_error(struct gui_download_window *dw,
- const char *error_msg)
-{
- LOG(("%s", error_msg));
- strncpy((char*)&dw->lbl_file, error_msg, MAX_SLEN_LBL_FILE-1);
- dw->status = NSATARI_DOWNLOAD_ERROR;
+ gemtk_wm_exec_redraw(dw->guiwin, NULL);
+ }
+ return NSERROR_OK;
+}
+
+static void gui_download_window_error(struct gui_download_window *dw,
+ const char *error_msg)
+{
+ LOG(("%s", error_msg));
+ strncpy((char*)&dw->lbl_file, error_msg, MAX_SLEN_LBL_FILE-1);
+ dw->status = NSATARI_DOWNLOAD_ERROR;
gemtk_wm_exec_redraw(dw->guiwin, NULL);
gui_window_set_status(input_window, messages_get("Done") );
- // TODO: change abort to close
-}
-
-static void gui_download_window_done(struct gui_download_window *dw)
+ // TODO: change abort to close
+}
+
+static void gui_download_window_done(struct gui_download_window *dw)
{
- OBJECT * tree;
+ OBJECT * tree;
LOG((""));
-// TODO: change abort to close
+// TODO: change abort to close
dw->status = NSATARI_DOWNLOAD_COMPLETE;
-
- if( dw->fd != NULL ) {
- fclose( dw->fd );
- dw->fd = NULL;
- }
+
+ if( dw->fd != NULL ) {
+ fclose( dw->fd );
+ dw->fd = NULL;
+ }
tree = dw->tree;
if (dw->close_on_finish) {
- gemtk_wm_send_msg(dw->guiwin, WM_CLOSED, 0, 0, 0, 0);
+ gemtk_wm_send_msg(dw->guiwin, WM_CLOSED, 0, 0, 0, 0);
} else {
- snprintf( (char*)&dw->lbl_percent, MAX_SLEN_LBL_PERCENT,
- "%lu%s", 100, "%"
- );
- snprintf( (char*)&dw->lbl_done, MAX_SLEN_LBL_DONE, "%s / %s",
- human_friendly_bytesize(dw->size_downloaded),
- (dw->size_total>0) ? human_friendly_bytesize(dw->size_total) : human_friendly_bytesize(dw->size_downloaded)
- );
+ snprintf( (char*)&dw->lbl_percent, MAX_SLEN_LBL_PERCENT,
+ "%lu%s", 100, "%"
+ );
+ snprintf( (char*)&dw->lbl_done, MAX_SLEN_LBL_DONE, "%s / %s",
+ human_friendly_bytesize(dw->size_downloaded),
+ (dw->size_total>0) ? human_friendly_bytesize(dw->size_total) : human_friendly_bytesize(dw->size_downloaded)
+ );
gemtk_wm_exec_redraw(dw->guiwin, NULL);
}
- gui_window_set_status(input_window, messages_get("Done") );
-}
+ gui_window_set_status(input_window, messages_get("Done") );
+}
static struct gui_download_table download_table = {
.create = gui_download_window_create,