home *** CD-ROM | disk | FTP | other *** search
- /*
- Flash (SWF) interface to httrack
- Using the library provided by Macromedia(tm)
- from http://www.macromedia.com/software/flash/download/search_engine/index.html
- See swf2html_license.txt for more information on the license
- */
-
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "swf2html_cls.h"
-
- #ifdef _WIN32
- #define MODEXTERN __declspec(dllexport)
- #else
- #define MODEXTERN
- #endif
-
- extern "C" {
- #include "../htsmodules.h"
- #include "swf2html_interface.h"
- };
-
- extern "C" MODEXTERN int hts_detect_swf(htsmoduleStruct* str) {
- if (strcmp(str->mime, "application/x-shockwave-flash") == 0) {
- return 1;
- }
- return 0;
- }
-
- extern "C" MODEXTERN int hts_parse_swf(htsmoduleStruct* str) {
- char linkrel[256];
- if (str && str->size > 0) {
- FILE* fp = fopen(str->filename, "rb");
- str->relativeToHtmlLink = 1;
- str->localLink = linkrel;
- str->localLinkSize = sizeof(linkrel) - 1;
- if (fp) {
- int ret = 0;
- char* buffer = (char*) malloc(str->size);
- if (buffer) {
- str->userdef = buffer;
- if ((int) fread(buffer, 1, str->size, fp) == str->size) {
- Swf2HtmlConverterCallback converter;
- converter.SetDumpLinks(true);
- converter.SetDumpText(false);
- if (!converter.ConvertSwf2Html(buffer, str->size, str, (htsmodAddLink) str->addLink)) {
- ret = 0;
- strcpy(str->err_msg, "can't parse swf file: internal module error");
- } else {
- ret = 1;
- }
- } else {
- strcpy(str->err_msg, "can't parse swf file: file read error");
- }
- free(buffer);
- } else {
- strcpy(str->err_msg, "can't parse swf file: can't allocate enough memory");
- }
- fclose(fp);
- return ret;
- } else {
- strcpy(str->err_msg, "can't parse swf file: can't open file");
- }
- } else {
- strcpy(str->err_msg, "can't parse swf file: zero length file");
- }
- return 0;
- }
-