コード例 #1
0
ファイル: rugged_commit.c プロジェクト: Angeldude/sonic-pi
/*
 *  call-seq:
 *    commit.header_field(field_name) -> str
 *
 *  Returns +commit+'s header field value.
 */
static VALUE rb_git_commit_header_field(VALUE self, VALUE rb_field)
{
	git_buf header_field = { 0 };
	git_commit *commit = NULL;

	const char *encoding_name;
	rb_encoding *encoding = rb_utf8_encoding();
	VALUE rb_result;

	int error;

	Check_Type(rb_field, T_STRING);
	Data_Get_Struct(self, git_commit, commit);

	error = git_commit_header_field(&header_field, commit, StringValueCStr(rb_field));

	if (error < 0) {
		git_buf_free(&header_field);
		if (error == GIT_ENOTFOUND)
			return Qnil;
		rugged_exception_check(error);
	}

	encoding_name = git_commit_message_encoding(commit);
	if (encoding_name != NULL)
		encoding = rb_enc_find(encoding_name);

	rb_result = rb_enc_str_new(header_field.ptr, header_field.size, encoding);
	git_buf_free(&header_field);
	return rb_result;
}
コード例 #2
0
ファイル: rugged_commit.c プロジェクト: jacobvosmaer/rugged
/*
 *  call-seq:
 *    commit.header_field(field_name) -> str
 *
 *  Returns +commit+'s header field value.
 */
static VALUE rb_git_commit_header_field(VALUE self, VALUE rb_field) {
	git_buf header_field = { 0 };
	VALUE rb_result;
	git_commit *commit;

	Check_Type(rb_field, T_STRING);

	Data_Get_Struct(self, git_commit, commit);

	rugged_exception_check(
		git_commit_header_field(&header_field, commit, StringValueCStr(rb_field))
	);

	rb_result = rb_enc_str_new(header_field.ptr, header_field.size, rb_utf8_encoding());

	git_buf_free(&header_field);

	return rb_result;
}