diff options
Diffstat (limited to 'riscos/save_complete.c')
-rw-r--r-- | riscos/save_complete.c | 79 |
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); } } |