summaryrefslogtreecommitdiff
path: root/atari
diff options
context:
space:
mode:
authorOle Loots <ole@monochrom.net>2011-12-10 01:06:48 +0000
committerOle Loots <ole@monochrom.net>2011-12-10 01:06:48 +0000
commit4c1922433b76a4f3bc34824527e6ac7297cae6dc (patch)
tree89523a2f689b3d06621f6d004c2f309a4147ed40 /atari
parent0dfb12d43b38d1818b927e4b0e02799d49c467f2 (diff)
downloadnetsurf-4c1922433b76a4f3bc34824527e6ac7297cae6dc.tar.gz
netsurf-4c1922433b76a4f3bc34824527e6ac7297cae6dc.tar.bz2
added save page handlers.
svn path=/trunk/netsurf/; revision=13267
Diffstat (limited to 'atari')
-rw-r--r--atari/save.c88
-rw-r--r--atari/save.h4
2 files changed, 92 insertions, 0 deletions
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 <netsurf-browser.org.MarkBenjamin@dfgh.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 <ctype.h>
+#include <stdio.h>
+#include <string.h>
+#include <libxml/HTMLtree.h>
+
+#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