merged internal-xsl branch

Jean-Francois Dockes Jean-Francois Dockes 2019-01-30

<< < 1 2 3 (Page 3 of 3)
changed src/windows/mkinstdir.sh
changed src/windows/rclstartw.cpp
changed src/windows/recoll-setup.iss
changed src/Makefile.am
changed src/VERSION
changed src/configure.ac
copied src/windows/dirent.c -> src/internfile/mh_xslt.h
copied src/windows/dirent.h -> src/filters/openxml-word-body.xsl
src/windows/mkinstdir.sh Diff Switch to side-by-side view
Loading...
src/windows/rclstartw.cpp Diff Switch to side-by-side view
Loading...
src/windows/recoll-setup.iss Diff Switch to side-by-side view
Loading...
src/Makefile.am Diff Switch to side-by-side view
Loading...
src/VERSION Diff Switch to side-by-side view
Loading...
src/configure.ac Diff Switch to side-by-side view
Loading...
src/windows/dirent.c to src/internfile/mh_xslt.h
--- a/src/windows/dirent.c
+++ b/src/internfile/mh_xslt.h
@@ -1,154 +1,49 @@
-/*
-
-    Implementation of POSIX directory browsing functions and types for Win32.
-
-    Author:  Kevlin Henney (kevlin@acm.org, kevlin@curbralan.com)
-    History: Created March 1997. Updated June 2003 and July 2012.
-    Rights:  See end of file.
-
-*/
-
-#include <dirent.h>
-#include <errno.h>
-#include <io.h> /* _findfirst and _findnext set errno iff they return -1 */
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-typedef ptrdiff_t handle_type; /* C99's intptr_t not sufficiently portable */
-
-struct DIR
-{
-    handle_type         handle; /* -1 for failed rewind */
-    struct _finddata_t  info;
-    struct dirent       result; /* d_name null iff first time */
-    char                *name;  /* null-terminated char string */
-};
-
-DIR *opendir(const char *name)
-{
-    DIR *dir = 0;
-
-    if(name && name[0])
-    {
-        size_t base_length = strlen(name);
-        const char *all = /* search pattern must end with suitable wildcard */
-            strchr("/\\", name[base_length - 1]) ? "*" : "/*";
-
-        if((dir = (DIR *) malloc(sizeof *dir)) != 0 &&
-           (dir->name = (char *) malloc(base_length + strlen(all) + 1)) != 0)
-        {
-            strcat(strcpy(dir->name, name), all);
-
-            if((dir->handle =
-                (handle_type) _findfirst(dir->name, &dir->info)) != -1)
-            {
-                dir->result.d_name = 0;
-            }
-            else /* rollback */
-            {
-                free(dir->name);
-                free(dir);
-                dir = 0;
-            }
-        }
-        else /* rollback */
-        {
-            free(dir);
-            dir   = 0;
-            errno = ENOMEM;
-        }
-    }
-    else
-    {
-        errno = EINVAL;
-    }
-
-    return dir;
-}
-
-int closedir(DIR *dir)
-{
-    int result = -1;
-
-    if(dir)
-    {
-        if(dir->handle != -1)
-        {
-            result = _findclose(dir->handle);
-        }
-
-        free(dir->name);
-        free(dir);
-    }
-
-    if(result == -1) /* map all errors to EBADF */
-    {
-        errno = EBADF;
-    }
-
-    return result;
-}
-
-struct dirent *readdir(DIR *dir)
-{
-    struct dirent *result = 0;
-
-    if(dir && dir->handle != -1)
-    {
-        if(!dir->result.d_name || _findnext(dir->handle, &dir->info) != -1)
-        {
-            result         = &dir->result;
-            result->d_mtime = dir->info.time_write;
-            result->d_size = dir->info.size;
-            result->d_name = dir->info.name;
-            if (dir->info.attrib & _A_SUBDIR)
-                result->d_mode = S_IFDIR;
-            else
-                result->d_mode = S_IFREG;
-        }
-    }
-    else
-    {
-        errno = EBADF;
-    }
-
-    return result;
-}
-
-void rewinddir(DIR *dir)
-{
-    if(dir && dir->handle != -1)
-    {
-        _findclose(dir->handle);
-        dir->handle = (handle_type) _findfirst(dir->name, &dir->info);
-        dir->result.d_name = 0;
-    }
-    else
-    {
-        errno = EBADF;
-    }
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-/*
-
-    Copyright Kevlin Henney, 1997, 2003, 2012. All rights reserved.
-
-    Permission to use, copy, modify, and distribute this software and its
-    documentation for any purpose is hereby granted without fee, provided
-    that this copyright and permissions notice appear in all copies and
-    derivatives.
-    
-    This software is supplied "as is" without express or implied warranty.
-
-    But that said, if there are any problems please get in touch.
-
-*/
+/* Copyright (C) 2018 J.F.Dockes
+ *   This program 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; either version 2 of the License, or
+ *   (at your option) any later version.
+ *
+ *   This program 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, write to the
+ *   Free Software Foundation, Inc.,
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+#ifndef _MH_XSLT_H_INCLUDED_
+#define _MH_XSLT_H_INCLUDED_
+
+#include <string>
+
+#include "mimehandler.h"
+
+class MimeHandlerXslt : public RecollFilter {
+ public:
+    MimeHandlerXslt(RclConfig *cnf, const std::string& id,
+                    const std::vector<std::string>& params);
+    virtual ~MimeHandlerXslt();
+
+    virtual bool next_document() override;
+    virtual void clear_impl() override;
+
+    virtual bool is_data_input_ok(DataInput input) const override {
+        return (input == DOCUMENT_FILE_NAME || input == DOCUMENT_STRING);
+    }
+
+protected:
+    virtual bool set_document_file_impl(const std::string& mt, 
+                                        const std::string& file_path);
+    virtual bool set_document_string_impl(const std::string& mt,
+                                          const std::string& data);
+
+    class Internal;
+private:
+    Internal *m{nullptr};
+};
+
+
+#endif /* _MH_XSLT_H_INCLUDED_ */
src/windows/dirent.h to src/filters/openxml-word-body.xsl
--- a/src/windows/dirent.h
+++ b/src/filters/openxml-word-body.xsl
@@ -1,57 +1,27 @@
-#ifndef DIRENT_INCLUDED
-#define DIRENT_INCLUDED
-
-/*
-
-    Declaration of POSIX directory browsing functions and types for Win32.
-
-    Author:  Kevlin Henney (kevlin@acm.org, kevlin@curbralan.com)
-    History: Created March 1997. Updated June 2003.
-    Rights:  See end of file.
-    
-*/
-#include <sys/stat.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-typedef struct DIR DIR;
-
-struct dirent
-{
-    char *d_name;
-    // The native call we use, findfirst/next return file attributes at once,
-    // no need for a separate stat() call in most cases
-    // Note that ctime is actually creation time. No use for posix.
-    time_t d_mtime;
-    off_t d_size;
-    int   d_mode; // S_IFREG or S_IFDIR only
-};
-
-DIR           *opendir(const char *);
-int           closedir(DIR *);
-struct dirent *readdir(DIR *);
-void          rewinddir(DIR *);
-
-/*
-
-    Copyright Kevlin Henney, 1997, 2003. All rights reserved.
-
-    Permission to use, copy, modify, and distribute this software and its
-    documentation for any purpose is hereby granted without fee, provided
-    that this copyright and permissions notice appear in all copies and
-    derivatives.
-    
-    This software is supplied "as is" without express or implied warranty.
-
-    But that said, if there are any problems please get in touch.
-
-*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
+                xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006"
+                xmlns:o="urn:schemas-microsoft-com:office:office"
+                xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+                xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"
+                xmlns:v="urn:schemas-microsoft-com:vml"
+                xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"
+                xmlns:w10="urn:schemas-microsoft-com:office:word"
+                xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
+                xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml">
+
+  <xsl:output omit-xml-declaration="yes"/>
+
+  <xsl:template match="/">
+    <div>
+      <xsl:apply-templates/> 
+    </div>
+  </xsl:template>
+
+  <xsl:template match="w:p">
+    <p>
+      <xsl:value-of select="."/>
+    </p>
+  </xsl:template>
+
+</xsl:stylesheet>
<< < 1 2 3 (Page 3 of 3)