about summary refs log tree commit diff
path: root/pkgs/tools/text/mairix
diff options
context:
space:
mode:
authorLluís Batlle i Rossell <viric@viric.name>2016-01-14 17:37:50 +0100
committerLluís Batlle i Rossell <viric@viric.name>2016-01-14 17:38:57 +0100
commit6401bb1795791ae5843b17dbf9e1d2132ed8fc4c (patch)
treec5f6b35a86ce397a525c7b17ad7f8c17240d33ac /pkgs/tools/text/mairix
parentbe120868664911f43171ef93dc0dd57ee5881207 (diff)
downloadnixlib-6401bb1795791ae5843b17dbf9e1d2132ed8fc4c.tar
nixlib-6401bb1795791ae5843b17dbf9e1d2132ed8fc4c.tar.gz
nixlib-6401bb1795791ae5843b17dbf9e1d2132ed8fc4c.tar.bz2
nixlib-6401bb1795791ae5843b17dbf9e1d2132ed8fc4c.tar.lz
nixlib-6401bb1795791ae5843b17dbf9e1d2132ed8fc4c.tar.xz
nixlib-6401bb1795791ae5843b17dbf9e1d2132ed8fc4c.tar.zst
nixlib-6401bb1795791ae5843b17dbf9e1d2132ed8fc4c.zip
mairix: add fix (patch) for big files.
Diffstat (limited to 'pkgs/tools/text/mairix')
-rw-r--r--pkgs/tools/text/mairix/default.nix4
-rw-r--r--pkgs/tools/text/mairix/mmap.patch110
2 files changed, 114 insertions, 0 deletions
diff --git a/pkgs/tools/text/mairix/default.nix b/pkgs/tools/text/mairix/default.nix
index 97fcd0629847..f3fece1f1774 100644
--- a/pkgs/tools/text/mairix/default.nix
+++ b/pkgs/tools/text/mairix/default.nix
@@ -10,6 +10,10 @@ stdenv.mkDerivation rec {
 
   buildInputs = [ zlib bzip2 bison flex ];
 
+  # https://github.com/rc0/mairix/issues/12
+  patches = [ ./mmap.patch ];
+  patchFlags = "-p2";
+
   meta = {
     homepage = http://www.rc0.org.uk/mairix;
     license = stdenv.lib.licenses.gpl2Plus;
diff --git a/pkgs/tools/text/mairix/mmap.patch b/pkgs/tools/text/mairix/mmap.patch
new file mode 100644
index 000000000000..0d43ac7ce7ae
--- /dev/null
+++ b/pkgs/tools/text/mairix/mmap.patch
@@ -0,0 +1,110 @@
+Fix "Cannot allocate memory" on mmap of files bigger than 2GiB.
+
+https://github.com/rc0/mairix/issues/12
+
+diff -ruN t/mairix-0.22/mairix.h mairix/mairix-0.22/mairix.h
+--- t/mairix-0.22/mairix.h  2010-06-05 14:41:10.000000000 -0700
++++ mairix/mairix-0.22/mairix.h 2015-07-08 13:33:06.678718524 -0700
+@@ -327,8 +327,8 @@
+   DTR8_BAD_ATTACHMENT /* corrupt attachment (e.g. no body part) */
+ };
+ struct rfc822 *data_to_rfc822(struct msg_src *src, char *data, int length, enum data_to_rfc822_error *error);
+-void create_ro_mapping(const char *filename, unsigned char **data, int *len);
+-void free_ro_mapping(unsigned char *data, int len);
++void create_ro_mapping(const char *filename, unsigned char **data, size_t *len);
++void free_ro_mapping(unsigned char *data, size_t len);
+ char *format_msg_src(struct msg_src *src);
+
+ /* In tok.c */
+diff -ruN t/mairix-0.22/mbox.c mairix/mairix-0.22/mbox.c
+--- t/mairix-0.22/mbox.c    2010-06-05 14:41:10.000000000 -0700
++++ mairix/mairix-0.22/mbox.c   2015-07-08 13:32:45.126280861 -0700
+@@ -816,7 +816,7 @@
+         mb->n_old_msgs_valid = mb->n_msgs;
+       } else {
+         unsigned char *va;
+-        int len;
++        size_t len;
+         create_ro_mapping(mb->path, &va, &len);
+         if (va) {
+           rescan_mbox(mb, (char *) va, len);
+@@ -852,7 +852,7 @@
+   int any_new = 0;
+   int N;
+   unsigned char *va;
+-  int valen;
++  size_t valen;
+   enum data_to_rfc822_error error;
+
+   for (i=0; i<db->n_mboxen; i++) {
+diff -ruN t/mairix-0.22/rfc822.c mairix/mairix-0.22/rfc822.c
+--- t/mairix-0.22/rfc822.c  2010-06-05 14:41:10.000000000 -0700
++++ mairix/mairix-0.22/rfc822.c 2015-07-08 13:30:59.388133879 -0700
+@@ -1250,7 +1250,7 @@
+ }
+ #endif /* USE_GZIP_MBOX || USE_BZIP_MBOX */
+
+-void create_ro_mapping(const char *filename, unsigned char **data, int *len)/*{{{*/
++void create_ro_mapping(const char *filename, unsigned char **data, size_t *len)/*{{{*/
+ {
+   struct stat sb;
+   int fd;
+@@ -1371,7 +1371,7 @@
+   data_alloc_type = ALLOC_MMAP;
+ }
+ /*}}}*/
+-void free_ro_mapping(unsigned char *data, int len)/*{{{*/
++void free_ro_mapping(unsigned char *data, size_t len)/*{{{*/
+ {
+   int r;
+
+@@ -1399,7 +1399,7 @@
+ /*}}}*/
+ struct rfc822 *make_rfc822(char *filename)/*{{{*/
+ {
+-  int len;
++  size_t len;
+   unsigned char *data;
+   struct rfc822 *result;
+
+diff -ruN t/mairix-0.22/search.c mairix/mairix-0.22/search.c
+--- t/mairix-0.22/search.c  2010-06-05 14:41:10.000000000 -0700
++++ mairix/mairix-0.22/search.c 2015-07-08 13:32:25.809888610 -0700
+@@ -667,7 +667,7 @@
+ static void append_file_to_mbox(const char *path, FILE *out)/*{{{*/
+ {
+   unsigned char *data;
+-  int len;
++  size_t len;
+   create_ro_mapping(path, &data, &len);
+   if (data) {
+     fprintf(out, "From mairix@mairix Mon Jan  1 12:34:56 1970\n");
+@@ -683,8 +683,8 @@
+
+ static void get_validated_mbox_msg(struct read_db *db, int msg_index,/*{{{*/
+                                    int *mbox_index,
+-                                   unsigned char **mbox_data, int *mbox_len,
+-                                   unsigned char **msg_data,  int *msg_len)
++                                   unsigned char **mbox_data, size_t *mbox_len,
++                                   unsigned char **msg_data,  size_t *msg_len)
+ {
+   /* msg_data==NULL if checksum mismatches */
+   unsigned char *start;
+@@ -715,7 +715,7 @@
+ {
+   /* Need to common up code with try_copy_to_path */
+   unsigned char *mbox_start, *msg_start;
+-  int mbox_len, msg_len;
++  size_t mbox_len, msg_len;
+   int mbox_index;
+
+   get_validated_mbox_msg(db, msg_index, &mbox_index, &mbox_start, &mbox_len, &msg_start, &msg_len);
+@@ -735,7 +735,7 @@
+ static void try_copy_to_path(struct read_db *db, int msg_index, char *target_path)/*{{{*/
+ {
+   unsigned char *data;
+-  int mbox_len, msg_len;
++  size_t mbox_len, msg_len;
+   int mbi;
+   FILE *out;
+   unsigned char *start;