예제 #1
0
int git_signature_new(git_signature **sig_out, const char *name, const char *email, git_time_t time, int offset)
{
	git_signature *p = NULL;

	assert(name && email);

	*sig_out = NULL;

	if (contains_angle_brackets(name) ||
		contains_angle_brackets(email)) {
		return signature_error(
			"Neither `name` nor `email` should contain angle brackets chars.");
	}

	p = git__calloc(1, sizeof(git_signature));
	GITERR_CHECK_ALLOC(p);

	p->name = extract_trimmed(name, strlen(name));
	GITERR_CHECK_ALLOC(p->name);
	p->email = extract_trimmed(email, strlen(email));
	GITERR_CHECK_ALLOC(p->email);

	if (p->name[0] == '\0' || p->email[0] == '\0') {
		git_signature_free(p);
		return signature_error("Signature cannot have an empty name or email");
	}

	p->when.time = time;
	p->when.offset = offset;

	*sig_out = p;
	return 0;
}
예제 #2
0
int git_signature_new(git_signature **sig_out, const char *name, const char *email, git_time_t time, int offset)
{
	git_signature *p = NULL;

	assert(name && email);

	*sig_out = NULL;

	p = git__calloc(1, sizeof(git_signature));
	GITERR_CHECK_ALLOC(p);

	if (process_trimming(name, &p->name, name + strlen(name), 1) < 0 ||
		process_trimming(email, &p->email, email + strlen(email), 1) < 0)
	{
		git_signature_free(p);
		return -1;
	}
		
	if (contains_angle_brackets(p->email) ||
		contains_angle_brackets(p->name))
	{
		git_signature_free(p);
		return signature_error("Neither `name` nor `email` should contain angle brackets chars.");
	}

	p->when.time = time;
	p->when.offset = offset;

	*sig_out = p;

	return 0;
}