mirror of
https://git.proxmox.com/git/libgit2
synced 2025-12-30 16:20:18 +00:00
Add API git_signature_new_now
Most tags will have a timestamp of whenever the code is running and dealing with time and timezones is error-prone. Optimize for this case by adding a function which causes the signature to be created with a current timestamp. Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
This commit is contained in:
parent
b5c00c6d41
commit
9e9e6ae177
@ -49,6 +49,17 @@ GIT_BEGIN_DECL
|
||||
*/
|
||||
GIT_EXTERN(git_signature *) git_signature_new(const char *name, const char *email, git_time_t time, int offset);
|
||||
|
||||
/**
|
||||
* Create a new action signature with a timestamp of 'now'. The
|
||||
* signature must be freed manually or using git_signature_free
|
||||
*
|
||||
* @param name name of the person
|
||||
* @param email email of the person
|
||||
* @return the new sig, NULL on out of memory
|
||||
*/
|
||||
GIT_EXTERN(git_signature *) git_signature_new_now(const char *name, const char *email);
|
||||
|
||||
|
||||
/**
|
||||
* Create a copy of an existing signature.
|
||||
*
|
||||
|
||||
@ -65,6 +65,25 @@ git_signature *git_signature_dup(const git_signature *sig)
|
||||
return git_signature_new(sig->name, sig->email, sig->when.time, sig->when.offset);
|
||||
}
|
||||
|
||||
git_signature *git_signature_new_now(const char *name, const char *email)
|
||||
{
|
||||
time_t now;
|
||||
struct tm utc_tm, local_tm;
|
||||
int offset;
|
||||
|
||||
time(&now);
|
||||
|
||||
gmtime_r(&now, &utc_tm);
|
||||
localtime_r(&now, &local_tm);
|
||||
|
||||
offset = mktime(&local_tm) - mktime(&utc_tm);
|
||||
offset /= 60;
|
||||
/* mktime takes care of setting tm_isdst correctly */
|
||||
if (local_tm.tm_isdst)
|
||||
offset += 60;
|
||||
|
||||
return git_signature_new(name, email, now, offset);
|
||||
}
|
||||
|
||||
static int parse_timezone_offset(const char *buffer, long *offset_out)
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user