#!/usr/bin/python # Autor: Alberto Mardegan # Fri Jun 15 11:41:33 CEST 2001 # # Iste programma es dispensate sub le licentia GPL (General Public License) # # Usage: # mbxsplit MAILBOX # # Le programma dividera le messages de MAILBOX (un file Unix mailbox) in plure # files nominate MAILBOX-YEAR-MONTH ubi YEAR essera le anno e MONTH le mense # relative a les. # Postque YEAR e MONTH es derivate del campo "From " del MAILBOX, e non del # campo "Date: " del messages, il es possibile que il existera alicun # discordantia. # Le original MAILBOX file essera invariate. # # IO NON ES RESPONSABILE DEL DAMNOS PROVOCATE DE ISTE PROGRAMMA import sys, string file = open(sys.argv[1]) nomimesi = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] mesi = ["01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"] idx = 0 linea = file.readline() while 1: if not linea: break if linea[0:5] == "From " : parole = string.split(linea) nomemese = parole[-4] mese = mesi[nomimesi.index(nomemese)] anno = parole[-1] f = open(sys.argv[1] + "-" + anno + "-" + mese, "a+") f.write(linea) while 1: linea = file.readline() if not linea: print "Il file è marcio" break f.write(linea) if linea == "\012": break # On suppone que le campo "Content-Length: " es correcte; si iste non es ver, # on habera probabilemente le message "Linea non riconosciuta" if linea[0:16] == "Content-Length: ": num = int(string.split(linea)[-1]) f.write(file.read(num)) while 1: linea = file.readline() if not linea or linea != "\012": break f.write("\012") f.close() else: print "Linea non riconosciuta: " + linea, linea = file.readline() file.close()