X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=date.c;h=c116bbd5f432f54dfa41b6aa991a0caccdd0b972;hp=016af4eac6d36a91b485facee50cd257385d2981;hb=7f254fb603f5ee073d48b052c00e1fdb6b8dc940;hpb=dbadca9a63ce9e97dc2d80fb0fee7ba2f8640316 diff --git a/date.c b/date.c index 016af4ea..c116bbd5 100644 --- a/date.c +++ b/date.c @@ -27,6 +27,8 @@ #include +#include /* For g_ascii_strncasecmp only. */ + #ifndef FALSE #define FALSE 0 #endif @@ -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) @@ -292,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; @@ -363,6 +365,8 @@ get_tzone (date_token **token) return -1; } +#define HAVE_TIMEZONE + static time_t mktime_utc (struct tm *tm) { @@ -486,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; @@ -636,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)))