]> git.notmuchmail.org Git - notmuch/blobdiff - date.c
notmuch setup: Collapse internal whitespace within message-id
[notmuch] / date.c
diff --git a/date.c b/date.c
index 0f217e44134b5567cbf401b32c7fdf0a48fd3d93..c116bbd5f432f54dfa41b6aa991a0caccdd0b972 100644 (file)
--- a/date.c
+++ b/date.c
@@ -27,6 +27,8 @@
 
 #include <time.h>
 
+#include <glib.h> /* For g_ascii_strncasecmp only. */
+
 #ifndef FALSE
 #define FALSE 0
 #endif
@@ -75,7 +77,7 @@ static unsigned char gmime_datetok_table[256] = {
        111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,
 };
 
-/* hrm, is there a library for this shit? */
+/* hrm, is there a library for this stuff? */
 static struct {
        char *name;
        int offset;
@@ -115,8 +117,8 @@ typedef struct _date_token {
        size_t len;
 } date_token;
 
-#define date_token_free(tok) g_slice_free (date_token, tok)
-#define date_token_new() g_slice_new (date_token)
+#define date_token_free(tok) free (tok)
+#define date_token_new() malloc (sizeof (date_token))
 
 static date_token *
 datetok (const char *date)
@@ -222,8 +224,9 @@ static int
 get_wday (const char *in, size_t inlen)
 {
        int wday;
-       
-       g_return_val_if_fail (in != NULL, -1);
+
+       if (in == NULL)
+               return -1;
        
        if (inlen < 3)
                return -1;
@@ -241,7 +244,8 @@ get_mday (const char *in, size_t inlen)
 {
        int mday;
        
-       g_return_val_if_fail (in != NULL, -1);
+       if (in == NULL)
+               return -1;
        
        mday = decode_int (in, inlen);
        
@@ -256,7 +260,8 @@ get_month (const char *in, size_t inlen)
 {
        int i;
        
-       g_return_val_if_fail (in != NULL, -1);
+       if (in == NULL)
+               return -1;
        
        if (inlen < 3)
                return -1;
@@ -274,7 +279,8 @@ get_year (const char *in, size_t inlen)
 {
        int year;
        
-       g_return_val_if_fail (in != NULL, -1);
+       if (in == NULL)
+               return -1;
        
        if ((year = decode_int (in, inlen)) == -1)
                return -1;
@@ -288,7 +294,7 @@ get_year (const char *in, size_t inlen)
        return year;
 }
 
-static gboolean
+static int
 get_time (const char *in, size_t inlen, int *hour, int *min, int *sec)
 {
        register const char *inptr;
@@ -359,6 +365,8 @@ get_tzone (date_token **token)
        return -1;
 }
 
+#define HAVE_TIMEZONE
+
 static time_t
 mktime_utc (struct tm *tm)
 {
@@ -405,7 +413,8 @@ parse_rfc822_date (date_token *tokens, int *tzone)
        struct tm tm;
        time_t t;
        
-       g_return_val_if_fail (tokens != NULL, (time_t) 0);
+       if (tokens == NULL)
+               return 0;
        
        token = tokens;
        
@@ -481,7 +490,7 @@ parse_rfc822_date (date_token *tokens, int *tzone)
 static time_t
 parse_broken_date (date_token *tokens, int *tzone)
 {
-       gboolean got_wday, got_month, got_tzone;
+       int got_wday, got_month, got_tzone;
        int hour, min, sec, offset, n;
        date_token *token;
        struct tm tm;
@@ -631,30 +640,20 @@ gmime_datetok_table_init (void)
 }
 #endif
 
-
-/**
- * g_mime_utils_header_decode_date:
- * @str: input date string
- * @tz_offset: timezone offset
- *
- * Decodes the rfc822 date string and saves the GMT offset into
- * @tz_offset if non-NULL.
- *
- * Returns: the time_t representation of the date string specified by
- * @str or (time_t) %0 on error. If @tz_offset is non-NULL, the value
- * of the timezone offset will be stored.
- **/
 time_t
-g_mime_utils_header_decode_date (const char *str, int *tz_offset)
+notmuch_parse_date (const char *str, int *tz_offset)
 {
        date_token *token, *tokens;
        time_t date;
-       
+
+       if (str == NULL)
+               return 0;
+
        if (!(tokens = datetok (str))) {
                if (tz_offset)
                        *tz_offset = 0;
                
-               return (time_t) 0;
+               return 0;
        }
        
        if (!(date = parse_rfc822_date (tokens, tz_offset)))