From 2ecfae295feb533e2b3ce1a0aff085e8417bbf09 Mon Sep 17 00:00:00 2001 From: Michael Mason Date: Tue, 31 Mar 2009 22:09:04 +0000 Subject: unstable/hypermail moved to testing/hypermail. replaces old version --- testing/hypermail/APKBUILD | 13 +++--- testing/hypermail/mdir2mbox.lua | 96 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 104 insertions(+), 5 deletions(-) create mode 100644 testing/hypermail/mdir2mbox.lua (limited to 'testing') diff --git a/testing/hypermail/APKBUILD b/testing/hypermail/APKBUILD index 06ddf011cd..6e4f412374 100644 --- a/testing/hypermail/APKBUILD +++ b/testing/hypermail/APKBUILD @@ -1,15 +1,16 @@ # Contributor: Michael Mason pkgname=hypermail -pkgver=2.1.8 +pkgver=2.2.0 pkgrel=0 pkgdesc="Mail Archiver" -url="http://www.hypermail.org" +url="http://www.hypermail-project.org" license="GPL" -depends="uclibc pcre" +depends="uclibc pcre lua" makedepends="pcre-dev bison" install= subpackages="" -source="http://www.hypermail.org/dist/$pkgname-$pkgver.tar.gz" +source="http://www.hypermail-project.org/$pkgname-$pkgver.tar.gz + mdir2mbox.lua" build() { cd "$srcdir/$pkgname-$pkgver" @@ -27,7 +28,9 @@ build() { install -m755 -D archive/rdmsg "$pkgdir"/usr/bin/rdmsg install -m755 -D archive/msg2archive "$pkgdir"/usr/bin/msgarchive install -m755 -D src/hypermail "$pkgdir"/usr/bin/hypermail + install -m755 -D "$srcdir"/mdir2mbox.lua "$pkgdir"/usr/bin/mdir2mbox.lua } -md5sums="bacd95589f2f3ca426631461fd9237dd hypermail-2.1.8.tar.gz" +md5sums="a064e36780ee41409c8c973f9c69927f hypermail-2.2.0.tar.gz +079b00d4ea667a0efd6fd370b1a4d5d8 mdir2mbox.lua" diff --git a/testing/hypermail/mdir2mbox.lua b/testing/hypermail/mdir2mbox.lua new file mode 100644 index 0000000000..dd883e02db --- /dev/null +++ b/testing/hypermail/mdir2mbox.lua @@ -0,0 +1,96 @@ +#!/usr/bin/lua +-- This script takes a mlmmj archive "maildir format" directory and +-- writes out an mbox formatted file to stdout +-- Copyright (c) 2009 N. Angelacos under the GPL 2 License + +require "posix" + +-- command line parser, or exit +check_command_line = function () + local source_dir = arg[1] + local source_time = arg[2] + + if (source_dir == nil ) then + io.stderr:write("mdir2mbox source_dir [hours]\n" .. + "Writes an mbox formatted file to stdout from the files in source_dir\n" .. + "If [hours] is given, then only files newer then [hours] are processed\n") + os.exit(-1) + end + + if (posix.stat(source_dir, "type") ~= "directory") then + io.stderr:write(source_dir .. " is not a directory\n") + os.exit(-1) + end + + return source_dir, source_time +end + +-- Get candidates +get_candidates = function (source, hours) + local all = posix.dir(source) + local candidates = {} + local timestamp = 0 + + if (hours) then + timestamp = os.time() - hours * 3600 + end + + for k,v in ipairs(all) do + local st = posix.stat(source .. "/" .. v) + if (st) and (st.type == "regular") and (st.mtime > timestamp) then + table.insert(candidates,source .. "/" .. v) + end + end + + return candidates +end + +file_to_mbox = function (path) + local fh = io.open(path) + if (fh == nil) then + return + end + local headers = "" + local l = "" + -- get headers + repeat + headers = headers .. l + l = (fh:read("*l") or "" ) .. "\n" + until (#l == 1) + + local from = string.match("\n" .. headers, "\nFrom: ([^\n]*)") + if from == nil then + from = string.match("\n" .. headers, "\nReply-To: ([^\n]*)") + end + if from == nil then + from = "" + end + from = string.match(from, "<([^>]*)>") or string.match(from, "([^ ]*)") + + + local date = string.match("\n" .. headers, "\nDate: ([^\n]*)") + if date == nil then + date = os.date ("%c", posix.stat(path, "mtime")) + end + local weekday,day,month,year,time,offset = string.match(date, "([^,]*), +(%d+) (%a+) (%d+) ([%d:]*) ([%d]*)") + + print ("From " .. from .. " " .. string.format("%s %s %s %s %s", weekday, month, day, time, year, offset )) + print (headers) + + -- get rest of message + repeat + local foo = fh:read("*l") + if foo then + print(foo) + end + until (foo == nil) + +fh:close() +end + +candidates = get_candidates(check_command_line ()) + +for k,v in ipairs(candidates) do + file_to_mbox(v) +end +print ("") -- cgit v1.2.3