~ruther/guix-local

a2319d2c8f4507b48e40e13ab56dbcfae3b2c533 — Eric Bavier 9 years ago 1fa3e33
gnu: Add Swish-e.

* gnu/packages/search.scm (swish-e): New variable.
* gnu/packages/patches/swish-e-search.patch,
gnu/packages/patches/swish-e-format-security.patch: New patches.
* gnu/local.mk (dist_patch_DATA): Add them.
M gnu/local.mk => gnu/local.mk +2 -0
@@ 797,6 797,8 @@ dist_patch_DATA =						\
  %D%/packages/patches/soprano-find-clucene.patch		\
  %D%/packages/patches/steghide-fixes.patch			\
  %D%/packages/patches/superlu-dist-scotchmetis.patch		\
  %D%/packages/patches/swish-e-search.patch			\
  %D%/packages/patches/swish-e-format-security.patch		\
  %D%/packages/patches/synfig-build-fix.patch			\
  %D%/packages/patches/t1lib-CVE-2010-2642.patch		\
  %D%/packages/patches/t1lib-CVE-2011-0764.patch		\

A gnu/packages/patches/swish-e-format-security.patch => gnu/packages/patches/swish-e-format-security.patch +33 -0
@@ 0,0 1,33 @@
Borrowed from Debian.

--- swish-e-2.4.7/src/parser.c	2009-04-05 03:58:32.000000000 +0200
+++ swish-e-2.4.7/src/parser.c	2013-06-11 13:53:08.196559035 +0200
@@ -1760,7 +1760,7 @@
     va_start(args, msg);
     vsnprintf(str, 1000, msg, args );
     va_end(args);
-    xmlParserError(parse_data->ctxt, str);
+    xmlParserError(parse_data->ctxt, "%s", str);
 }
 
 static void warning(void *data, const char *msg, ...)
@@ -1772,7 +1772,7 @@
     va_start(args, msg);
     vsnprintf(str, 1000, msg, args );
     va_end(args);
-    xmlParserWarning(parse_data->ctxt, str);
+    xmlParserWarning(parse_data->ctxt, "%s", str);
 }
 
 
--- swish-e-2.4.7/src/result_output.c	2009-04-05 03:58:32.000000000 +0200
+++ swish-e-2.4.7/src/result_output.c	2013-06-11 13:53:38.593550825 +0200
@@ -752,7 +752,7 @@
             s = (char *) emalloc(MAXWORDLEN + 1);
             n = strftime(s, (size_t) MAXWORDLEN, fmt, localtime(&(pv->value.v_date)));
             if (n && f)
-                fprintf(f, s);
+                fprintf(f, "%s", s);
             efree(s);
         }
         break;

A gnu/packages/patches/swish-e-search.patch => gnu/packages/patches/swish-e-search.patch +43 -0
@@ 0,0 1,43 @@
From http://swish-e.org/archive/2015-09/13295.html

--- a/src/compress.c	
+++ a/src/compress.c	
@@ -995,7 +995,7 @@ void    remove_worddata_longs(unsigned char *worddata,int *sz_worddata)
             progerr("Internal error in remove_worddata_longs");
 
         /* dst may be smaller than src. So move the data */
-        memcpy(dst,src,data_len);
+        memmove(dst,src,data_len);
 
         /* Increase pointers */
         src += data_len;
--- a/src/headers.c	
+++ a/src/headers.c	
@@ -280,7 +280,7 @@ static SWISH_HEADER_VALUE fetch_single_header( IndexFILE *indexf, HEADER_MAP *he
 
         case SWISH_NUMBER:
         case SWISH_BOOL:
-            value.number = *(unsigned long *) data_pointer;
+            value.number = *(unsigned int *) data_pointer;
 
             /* $$$ Ugly hack alert! */
             /* correct for removed files */
--- a/src/swishspider	
+++ a/src/swishspider	
@@ -27,6 +27,7 @@ use LWP::UserAgent;
 use HTTP::Status;
 use HTML::Parser 3.00;
 use HTML::LinkExtor;
+use Encode;
 
     if (scalar(@ARGV) != 2) {
         print STDERR "Usage: $0 localpath url\n";
@@ -94,7 +95,7 @@ use HTML::LinkExtor;
     # Don't allow links above the base
     $URI::ABS_REMOTE_LEADING_DOTS = 1;
 
-    $p->parse( $$content_ref );
+    $p->parse( decode_utf8 $$content_ref );
     close( LINKS );
 
     exit;

M gnu/packages/search.scm => gnu/packages/search.scm +66 -1
@@ 23,10 23,14 @@
  #:use-module (guix packages)
  #:use-module (guix download)
  #:use-module (guix build-system gnu)
  #:use-module (gnu packages)
  #:use-module (gnu packages compression)
  #:use-module (gnu packages check)
  #:use-module (gnu packages databases)
  #:use-module (gnu packages linux))
  #:use-module (gnu packages linux)
  #:use-module (gnu packages perl)
  #:use-module (gnu packages web)
  #:use-module (gnu packages xml))

(define-public xapian
  (package


@@ 171,4 175,65 @@ with slocate, and attempts to be compatible to GNU locate when it does not
conflict with slocate compatibility.")
    (license gpl2)))

(define-public swish-e
  (package
    (name "swish-e")
    (version "2.4.7")
    (source (origin
              (method url-fetch)
              (uri (list (string-append "http://swish-e.org/distribution/"
                                        "swish-e-" version ".tar.gz")
                         ;; The upstream swish-e.org appears to be down... so
                         ;; use debian's copy as a fallback.
                         (string-append "http://http.debian.net/debian/pool/"
                                        "main/s/swish-e/swish-e_" version
                                        ".orig.tar.gz")))
              (file-name (string-append name "-" version ".tar.gz"))
              (sha256
               (base32
                "0qkrk7z25yp9hynj21vxkyn7yi8gcagcfxnass5cgczcz0gm9pax"))
              (patches (search-patches "swish-e-search.patch"
                                       "swish-e-format-security.patch"))))
    (build-system gnu-build-system)
    ;; Several other packages and perl modules may be installed alongside
    ;; swish-e to extend its features at runtime, but are not required for
    ;; building: xpdf, catdoc, MP3::Tag, Spreadsheet::ParseExcel,
    ;; HTML::Entities.
    (inputs
     `(("libxml" ,libxml2)
       ("zlib" ,zlib)
       ("perl" ,perl)
       ("perl-uri" ,perl-uri)
       ("perl-html-parser" ,perl-html-parser)
       ("perl-html-tagset" ,perl-html-tagset)
       ("perl-mime-types" ,perl-mime-types)))
    (arguments
     `(#:phases (modify-phases %standard-phases
                  (add-after 'install 'wrap-programs
                    (lambda* (#:key inputs outputs #:allow-other-keys)
                      (let* ((out (assoc-ref outputs "out")))
                        (for-each
                         (lambda (program)
                           (wrap-program program
                             `("PERL5LIB" ":" prefix
                               ,(map (lambda (i)
                                       (string-append (assoc-ref inputs i)
                                                      "/lib/perl5/site_perl"))
                                     ;; These perl modules have no propagated
                                     ;; inputs, so no further analysis needed.
                                     '("perl-uri"
                                       "perl-html-parser"
                                       "perl-html-tagset"
                                       "perl-mime-types")))))
                         (list (string-append out "/lib/swish-e/swishspider")
                               (string-append out "/bin/swish-filter-test")))
                        #t))))))
    (home-page "http://swish-e.org")
    (synopsis "Web indexing system")
    (description
     "Swish-e is Simple Web Indexing System for Humans - Enhanced.  Swish-e
can quickly and easily index directories of files or remote web sites and
search the generated indexes.")
    (license gpl2+)))                   ;with exception

;;; search.scm ends here