tAdd podcast support and rename rpuopen -> rpopen. - rohrpost - A commandline mail client to change the world as we see it. (HTM) git clone git://r-36.net/rohrpost (DIR) Log (DIR) Files (DIR) Refs (DIR) LICENSE --- (DIR) commit a0a537336009f27ac86f9654581186de3d338f2b (DIR) parent 535143e5642d255782af28d9f6cce4521f275802 (HTM) Author: Christoph Lohmann <20h@r-36.net> Date: Sun, 22 Jan 2012 17:51:03 +0100 Add podcast support and rename rpuopen -> rpopen. Diffstat: bin/rpopen | 24 ++++++++++++++++++++++++ bin/rppodplay | 30 ++++++++++++++++++++++++++++++ bin/rpuopen | 24 ------------------------ config.mk | 2 +- ind.c | 3 ++- llist.c | 8 ++++++-- meta.c | 11 ++++++++--- mime.c | 11 +++++------ 8 files changed, 76 insertions(+), 37 deletions(-) --- (DIR) diff --git a/bin/rpopen b/bin/rpopen t@@ -0,0 +1,24 @@ +#!/bin/sh + +if [ $# -lt 1 ]; +then + echo "usage: `basename $0` msgid" + exit 1 +fi + +if [ -z "$BROWSER" ]; +then + echo -n "\$BROWSER must be set to the command which invokes" + echo " your URL handler." + exit 1 +fi + +msgid="$*" + +url=`rpview $msgid | awk '/URL:/ {print $2}' | tr -d '\r'` +for i in $url +do + echo $i + $BROWSER "$i" +done + (DIR) diff --git a/bin/rppodplay b/bin/rppodplay t@@ -0,0 +1,30 @@ +#!/bin/sh + +if [ $# -lt 1 ]; +then + echo "usage: `basename $0` msgid" + exit 1 +fi + +if [ -z "$AUDIOPLAYER" ]; +then + if [ -z "$MEDIAPLAYER" ]; + then + echo "\$MEDIAPLAYER or \$AUDIOPLAYER should be set for" \ + "playing the media." + exit 1 + fi + player="$MEDIAPLAYER" +else + player="$AUDIOPLAYER" +fi + +msgid="$*" + +url=`rpview $msgid | awk '/Enclosure:/ {print $2}' | tr -d '\r'` +for i in $url +do + echo $i + $player "$i" +done + (DIR) diff --git a/bin/rpuopen b/bin/rpuopen t@@ -1,24 +0,0 @@ -#!/bin/sh - -if [ $# -lt 1 ]; -then - echo "usage: `basename $0` msgid" - exit 1 -fi - -if [ -z "$BROWSER" ]; -then - echo -n "\$BROWSER must be set to the command which invokes" - echo " your URL handler." - exit 1 -fi - -msgid="$*" - -url=`rpview $msgid | awk '/URL:/ {print $2}' | tr -d '\r'` -for i in $url -do - echo $i - $BROWSER "$i" -done - (DIR) diff --git a/config.mk b/config.mk t@@ -5,7 +5,7 @@ VERSION = 0.3 # Customize below to fit your system # paths -PREFIX ?= /usr +PREFIX = /usr/local MANPREFIX = ${PREFIX}/share/man # includes and libs (DIR) diff --git a/ind.c b/ind.c t@@ -11,6 +11,7 @@ #include <string.h> #include <strings.h> #include <errno.h> +#include <ctype.h> #include <sys/types.h> #include <sys/stat.h> #include <time.h> t@@ -491,7 +492,7 @@ strisascii(char *str) char * findlimitws(char *str, int limit) { - int i, len; + int len; char *ptr; len = strlen(str); (DIR) diff --git a/llist.c b/llist.c t@@ -30,11 +30,15 @@ llistelemvalue_internfree(llistelem_t *elem, int mode) else llist_efree((llist_t *)elem->data); } else { - if (elem->data != NULL && !(mode & FREE_BARE)) + if (elem->data != NULL && !(mode & FREE_BARE)) { free(elem->data); + elem->data = NULL; + } } - if (elem->key != NULL && !(mode & FREE_BARE)) + if (elem->key != NULL && !(mode & FREE_BARE)) { free(elem->key); + elem->key = NULL; + } } void (DIR) diff --git a/meta.c b/meta.c t@@ -20,13 +20,18 @@ mime2meta(mime_t *mime) meta_t * meta_headers2mime(meta_t *meta) { - llistelem_t *param, *header; + llistelem_t *header; char *enc; forllist(meta->hdrs, header) { - if(!strisascii(header->value)) { - } + enc = mime_encodeheader(header->key, header->value); + + free(header->value); + header->value = enc; + header->datalen = strlen(enc); } + + return meta; } meta_t * (DIR) diff --git a/mime.c b/mime.c t@@ -334,7 +334,7 @@ char * mime_encodeheader(char *header, char *value) { char *ret, *b64, *p, *mp, *str; - int len, hlen, lmax, isascii = 0, firstline; + int len, hlen, lmax, isascii = 0, firstline, slen; /* * RFC 2047: t@@ -351,10 +351,10 @@ mime_encodeheader(char *header, char *value) slen = strlen(value); ret = NULL; - for (p = value, firstline = 0; slen > 0; slen -= lmax, p = mp) { - if (firstline == 1) { + for (p = value, firstline = 1; slen > 0; slen -= lmax, p = mp) { + if (firstline) { lmax += hlen; - firstline++; + firstline = 0; } mp = findlimitws(p, lmax); t@@ -1078,8 +1078,7 @@ mime_decodepartencoding(mime_t *mime, int *len) if (!strcasecmp(mime->cte, "base64")) { *len = mime->bodylen; ret = b64dec(mime->body, len); - } - if (!strcasecmp(mime->cte, "quoted-printable")) { + } else if (!strcasecmp(mime->cte, "quoted-printable")) { *len = mime->bodylen; ret = qpdec(mime->body, len, 0); }