From 4c1922433b76a4f3bc34824527e6ac7297cae6dc Mon Sep 17 00:00:00 2001 From: Ole Loots Date: Sat, 10 Dec 2011 01:06:48 +0000 Subject: added save page handlers. svn path=/trunk/netsurf/; revision=13267 --- atari/save.c | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ atari/save.h | 4 +++ 2 files changed, 92 insertions(+) create mode 100644 atari/save.c create mode 100644 atari/save.h diff --git a/atari/save.c b/atari/save.c new file mode 100644 index 000000000..83e4e410c --- /dev/null +++ b/atari/save.c @@ -0,0 +1,88 @@ +/* + * Copyright 2009 Mark Benjamin + * + * 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 . + */ + +#include +#include +#include +#include + +#include "content/content.h" +#include "desktop/save_complete.h" +#include "utils/utils.h" + +/* + This code was simply taken from GTK frontend. It requires adjustment + within the core or frontend to work well. + ( mime type detection fails on load of the saved webpage, that's because + no file extension is saved. ) +*/ + +/** +* conducts the filesystem save appropriate to the gui +* \param path save path +* \param filename name of file to save +* \param len data length +* \param sourcedata pointer to data to save +* \param type content type +* \return true for success +*/ + +bool save_complete_gui_save(const char *path, const char *filename, + size_t len, const char *sourcedata, lwc_string *mime_type) +{ + int res; + int namelen; + namelen = strlen(path) + strlen(filename) + 2; /* '/', '\0' */ + char *fullpath = malloc(namelen); + if (!fullpath) { + warn_user("NoMemory", 0); + return false; + } + snprintf(fullpath, namelen, "%s/%s", path, filename); + FILE *f; + f = fopen(fullpath, "wb"); + free(fullpath); + if (f == NULL) + return false; + res = fwrite(sourcedata, len, 1, f); + fclose(f); + if (res != 1) + return false; + return true; +} + +/** +* wrapper for lib function htmlSaveFileFormat; front sets path from path +* + filename in a filesystem-specific way +*/ + +int save_complete_htmlSaveFileFormat(const char *path, const char *filename, + xmlDocPtr cur, const char *encoding, int format) +{ + int ret; + int len = strlen(path) + strlen(filename) + 2; + char *fullpath = malloc(len); + if (fullpath == NULL) { + warn_user("NoMemory", 0); + return -1; + } + snprintf(fullpath, len, "%s/%s", path, filename); + ret = htmlSaveFileFormat(fullpath, cur, encoding, format); + free(fullpath); + return ret; +} diff --git a/atari/save.h b/atari/save.h new file mode 100644 index 000000000..00852d048 --- /dev/null +++ b/atari/save.h @@ -0,0 +1,4 @@ +#ifndef NSATARI_SAVE_H +#define NSATARI_SAVE_H + +#endif -- cgit v1.2.3