tAdding some malformats of the wild Internet. - 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 f9345d316c22c3153a204ae36054f2902b445867
 (DIR) parent 4e33ec64402d7050d2ff788eb89ed5bd891a5be1
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Mon, 21 May 2012 17:53:16 +0200
       
       Adding some malformats of the wild Internet.
       
       Diffstat:
         mime.c                              |      29 +++++++++++++++++++++--------
       
       1 file changed, 21 insertions(+), 8 deletions(-)
       ---
 (DIR) diff --git a/mime.c b/mime.c
       t@@ -78,14 +78,27 @@ mime_parsedate(char *str)
        {
                struct tm tim;
        
       -        bzero(&tim, sizeof(tim));
       -        if (strptime(str, "%a, %d %b %Y %T %z", &tim) == NULL) {
       -                if (strptime(str, "%a, %d %b %Y %T %Z", &tim) == NULL) {
       -                        if (strptime(str, "%d %b %Y %T %z", &tim) == NULL) {
       -                                return NULL;
       -                        }
       -                }
       -        }
       +        memset(&tim, 0, sizeof(tim));
       +        if (strptime(str, "%a, %d %b %Y %T %z", &tim) != NULL)
       +                return memdup(&tim, sizeof(tim));
       +
       +        if (!strncmp(str, "Date: ", 6))
       +                str += 6;
       +
       +        /*
       +         * Malformatted dates seen in the wild.
       +         */
       +        if (strptime(str, "%a, %d %b %Y %T %Z", &tim) != NULL)
       +                return memdup(&tim, sizeof(tim));
       +
       +        if (strptime(str, "%d %b %Y %T %z", &tim) != NULL)
       +                return memdup(&tim, sizeof(tim));
       +
       +        if (strptime(str, "%a, %d %b %Y, %T %z", &tim) != NULL)
       +                return memdup(&tim, sizeof(tim));
       +
       +        if (strptime(str, "%d.%m.%Y", &tim) != NULL)
       +                return memdup(&tim, sizeof(tim));
        
                return memdup(&tim, sizeof(tim));
        }