De vez en cuando hago cosas de provecho, he aquí el resultado de alguna de ellas.
Some time ago I wanted IceWM to check my Maildir mailbox. I found an old patch, but it was for IceWM 1.0.9, so I started my own patch.
I don't know so much about C++ programming, just about C, but I think my code doesn't look much as an ugly hack.
To apply the patch you have to compile IceWM. Download IceWM source and this patch, and apply it as follows:
$ tar xzf icewm-1.2.XX.tar.gz
$ cd icewm-1.2.XX/
$ patch -p1 < ../maildir-icewm-1.2.XX.diffIf there were no errores, you can now just compile IceWM as usually.
To use the Maildir feature, change your ~/.icewm/preferences file and set MailBoxPath to maildir:///home/user/Maildir, for example. Don't forget to activate TaskBarShowMailboxStatus.
It's recommended to move large Maildir subdirectories out of your main Maildir, because it may slow down the mail check process.
This patch looks your maildir recursively for new mails in new/ subdirectories.
Please, note that IceWM mail checker doesn't usually change between versions, so last patch should work with newer versions of IceWM.
Existe en IceWM la posibilidad de que te informe cuando llega un correo nuevo. IceWM te permite comprobarlo mediante POP3, IMAP e incluso en un fichero mbox, pero no te permite hacerlo en un buzón en Maildir.
Como parece que nadie se animaba a hacer el parche para IceWM, lo he hecho yo. Puede ser algo chapuza, pero funciona. No tengo mucha idea de C++, aunque tampoco he necesitado saber demasiado, ya que no es un parche que presente gran dificultad. Hace uso de funciones como stat(), opendir(), readdir(), etc.
El parche ha sido creado para IceWM en su versión 1.2.16 y para la versión 1.2.18, aunque supongo que iré actualizándolo. De todas formas, los ficheros que modifica (src/amailbox.*) no se suelen modificar entre versiones, por lo que el parche seguirá funcionando.
Hay que bajar el código fuente de IceWM, descomprimirlo y aplicar el parche. El proceso lo describo abajo.
$ tar xzf icewm-1.2.XX.tar.gz
$ cd icewm-1.2.XX/
$ patch -p1 < ../maildir-icewm-1.2.XX.diffTras esto, y si no ha habido ningún mensaje de error, el parche estará aplicado y podremos compilar IceWM normalmente.
Para hacer uso del parche, en nuestro ~/.icewm/preferences hay que modificar la opción MailBoxPath, dándole un valor como maildir:///home/usuario/Maildir. No debemos olvidarnos de activar el módulo de comprobación de correo, TaskBarShowMailboxStatus.
Nota: el sistema de comprobación de correo no suele cambiar de una versión a otra de IceWM, por lo que no hay problema en usar el último parche disponible. Por ejemplo, el parche para la versión 1.2.25 es aplicable a la versión 1.2.31 y funciona correctamente.
El parche colgado anteriormente (hasta 8/diciembre/2004) funcionaba de forma parcial. Se basaba en los directorios new/ y fallaba con el formato más extendido de Maildir (subdirectorios .directorio.subd/{cur,new,tmp} en vez de directorio/subd/{new,cur,tmp}. Por eso lo he corregido y parece que ya funciona bien. Se aconseja aplicar este nuevo parche en lugar del antiguo.
El parche comprueba los directorios recursivamente (vaya, la RAE no acepta recursivo...mejor recurrente), buscando ficheros que no tengan el flag 'S' activado. Este flag es el que indica que el mensaje ya se ha leído. Se aconseja mover de sitio las carpetas con muchos mensajes antiguos, porque puede ralentizar mucho el proceso.
Es bastante probable que existan fallos en el parche. Se agradecería cualquier comentario a la dirección de contacto.
Ya existía un parche para IceWM con esta funcionalidad, pero se creó en el 2002 para la versión 1.0.9. Aunque el parche es posible aplicarlo, porque el código fuente que modifica no ha cambiado demasiado desde esa versión, no mira en los distintos directorios del buzón, lo que lo limita mucho. Además... la verdad es que no vi que existía tal parche hasta después de acabar el mío, así que... :)