mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-29 15:10:02 +00:00
Introduce git__date_rfc2822_fmt. Allows for RFC2822 date headers
This commit is contained in:
parent
b3b36a68d1
commit
8e14b47fd7
28
src/date.c
28
src/date.c
@ -874,3 +874,31 @@ int git__date_parse(git_time_t *out, const char *date)
|
|||||||
*out = approxidate_str(date, time_sec, &error_ret);
|
*out = approxidate_str(date, time_sec, &error_ret);
|
||||||
return error_ret;
|
return error_ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int git__date_rfc2822_fmt(char *out, size_t len, const git_time *date)
|
||||||
|
{
|
||||||
|
int written;
|
||||||
|
struct tm gmt;
|
||||||
|
time_t t;
|
||||||
|
|
||||||
|
assert(out && date);
|
||||||
|
|
||||||
|
t = (time_t) (date->time + date->offset * 60);
|
||||||
|
|
||||||
|
if (p_gmtime_r (&t, &gmt) == NULL)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
written = p_snprintf(out, len, "%.3s, %u %.3s %.4u %02u:%02u:%02u %+03d%02d",
|
||||||
|
weekday_names[gmt.tm_wday],
|
||||||
|
gmt.tm_mday,
|
||||||
|
month_names[gmt.tm_mon],
|
||||||
|
gmt.tm_year + 1900,
|
||||||
|
gmt.tm_hour, gmt.tm_min, gmt.tm_sec,
|
||||||
|
date->offset / 60, date->offset % 60);
|
||||||
|
|
||||||
|
if (written < 0 || (written > (int) len - 1))
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
12
src/util.h
12
src/util.h
@ -20,6 +20,8 @@
|
|||||||
# define max(a,b) ((a) > (b) ? (a) : (b))
|
# define max(a,b) ((a) > (b) ? (a) : (b))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define GIT_DATE_RFC2822_SZ 32
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Custom memory allocation wrappers
|
* Custom memory allocation wrappers
|
||||||
* that set error code and error message
|
* that set error code and error message
|
||||||
@ -328,6 +330,16 @@ extern int git__parse_bool(int *out, const char *value);
|
|||||||
*/
|
*/
|
||||||
extern int git__date_parse(git_time_t *out, const char *date);
|
extern int git__date_parse(git_time_t *out, const char *date);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Format a git_time as a RFC2822 string
|
||||||
|
*
|
||||||
|
* @param out buffer to store formatted date; a '\\0' terminator will automatically be added.
|
||||||
|
* @param len size of the buffer; should be atleast `GIT_DATE_RFC2822_SZ` in size;
|
||||||
|
* @param date the date to be formatted
|
||||||
|
* @return 0 if successful; -1 on error
|
||||||
|
*/
|
||||||
|
extern int git__date_rfc2822_fmt(char *out, size_t len, const git_time *date);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Unescapes a string in-place.
|
* Unescapes a string in-place.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user