summaryrefslogtreecommitdiff
path: root/riscos/save_complete.c
diff options
context:
space:
mode:
Diffstat (limited to 'riscos/save_complete.c')
-rw-r--r--riscos/save_complete.c79
1 files changed, 30 insertions, 49 deletions
diff --git a/riscos/save_complete.c b/riscos/save_complete.c
index 08baffbd8..fca18e987 100644
--- a/riscos/save_complete.c
+++ b/riscos/save_complete.c
@@ -13,6 +13,7 @@
#include "netsurf/css/css.h"
#include "netsurf/render/form.h"
#include "netsurf/render/layout.h"
+#include "netsurf/riscos/gui.h"
#include "netsurf/riscos/save_complete.h"
#include "netsurf/utils/log.h"
#include "netsurf/utils/utils.h"
@@ -36,16 +37,11 @@ void save_complete(struct content *c) {
char *fname = 0, *spath;
unsigned int i;
- if (c->type != CONTENT_HTML) {
+ if (c->type != CONTENT_HTML)
return;
- }
fname = "test"; /*get_filename(c->data.html.base_url);*/
- if (!fname) { /* no path -> exit */
- return;
- }
-
spath = xcalloc(strlen(SAVE_PATH)+strlen(OBJ_DIR)+strlen(fname)+50,
sizeof(char));
@@ -53,55 +49,35 @@ void save_complete(struct content *c) {
xosfile_create_dir(spath, 77);
/* save stylesheets, ignoring the base sheet and <style> elements */
- for (i=2; i!=c->data.html.stylesheet_count; i++) {
- if (c->data.html.stylesheet_content[i] == 0) {
+ for (i = 2; i != c->data.html.stylesheet_count; i++) {
+ struct content *css = c->data.html.object[i].content;
+
+ if (!css)
continue;
- }
- save_imported_sheets(c->data.html.stylesheet_content[i], (int)i, 0, spath, fname);
+ save_imported_sheets(css, (int)i, 0, spath, fname);
sprintf(spath, "%s%s%s.%d/css", SAVE_PATH, fname, OBJ_DIR, i);
- xosfile_save_stamped(spath, 0xf79, c->data.html.stylesheet_content[i]->data.css.data, c->data.html.stylesheet_content[i]->data.css.data + c->data.html.stylesheet_content[i]->data.css.length);
+ xosfile_save_stamped(spath, 0xf79,
+ css->source_data,
+ css->source_data + css->source_size);
}
/* save objects */
- for (i=0; i!=c->data.html.object_count; i++) {
+ for (i = 0; i != c->data.html.object_count; i++) {
+ struct content *obj = c->data.html.object[i].content;
/* skip difficult content types */
- if (c->data.html.object[i].content->type >= CONTENT_PLUGIN) {
+ if (!obj || obj->type >= CONTENT_PLUGIN) {
continue;
}
sprintf(spath, "%s%s%s.%d", SAVE_PATH, fname, OBJ_DIR, i);
- switch(c->data.html.object[i].content->type) {
- case CONTENT_HTML:
- strcat(spath, "/htm");
- xosfile_save_stamped(spath, 0xfaf, c->data.html.object[i].content->data.html.source, c->data.html.object[i].content->data.html.source + c->data.html.object[i].content->data.html.length);
- break;
- case CONTENT_JPEG:
- strcat(spath, "/jpg");
- xosfile_save_stamped(spath, 0xc85, c->data.html.object[i].content->data.jpeg.data, (char*)c->data.html.object[i].content->data.jpeg.data + c->data.html.object[i].content->data.jpeg.length);
- break;
- case CONTENT_PNG:
- strcat(spath, "/png");
- xosfile_save_stamped(spath, 0xb60, c->data.html.object[i].content->data.png.data, c->data.html.object[i].content->data.png.data + c->data.html.object[i].content->data.png.length);
- break;
- case CONTENT_GIF:
- strcat(spath, "/gif");
- xosfile_save_stamped(spath, 0x695, c->data.html.object[i].content->data.gif.data, c->data.html.object[i].content->data.gif.data + c->data.html.object[i].content->data.gif.length);
- break;
- case CONTENT_SPRITE:
- strcat(spath, "/spr");
- xosfile_save_stamped(spath, 0xff9, c->data.html.object[i].content->data.sprite.data, (char*)c->data.html.object[i].content->data.sprite.data + c->data.html.object[i].content->data.sprite.length);
- break;
- case CONTENT_DRAW:
- strcat(spath, "/drw");
- xosfile_save_stamped(spath, 0xaff, c->data.html.object[i].content->data.draw.data, (char*)c->data.html.object[i].content->data.draw.data + c->data.html.object[i].content->data.draw.length);
- break;
- default:
- break;
- }
+ xosfile_save_stamped(spath,
+ ro_content_filetype(obj),
+ obj->source_data,
+ obj->source_data + obj->source_size);
}
/** \todo URL rewriting */
@@ -109,23 +85,28 @@ void save_complete(struct content *c) {
/* save the html file out last of all (allows url rewriting first) */
sprintf(spath, "%s%s", SAVE_PATH, fname);
xosfile_save_stamped(spath, 0xfaf,
- c->data.html.source,
- c->data.html.source + c->data.html.length);
+ c->source_data,
+ c->source_data + c->source_size);
xfree(spath);
xfree(fname);
}
-void save_imported_sheets(struct content *c, int parent, int level, char *p, char *fn) {
+void save_imported_sheets(struct content *c, int parent, int level, char *p, char *fn)
+{
unsigned int j;
- for (j=0; j!=c->data.css.import_count; j++) {
- if (c->data.css.import_content[j] == 0) {
+ for (j = 0; j != c->data.css.import_count; j++) {
+ struct content *css = c->data.css.import_content[j];
+
+ if (!css)
continue;
- }
- save_imported_sheets(c->data.css.import_content[j], parent, level+1, p, fn);
+
+ save_imported_sheets(css, parent, level+1, p, fn);
sprintf(p, "%s%s%s.%d%c%d/css", SAVE_PATH, fn, OBJ_DIR, parent, 'a'+level, j);
- xosfile_save_stamped(p, 0xf79, c->data.css.import_content[j]->data.css.data, c->data.css.import_content[j]->data.css.data + c->data.css.import_content[j]->data.css.length);
+ xosfile_save_stamped(p, 0xf79,
+ css->source_data,
+ css->source_data + css->source_size);
}
}