Fix funny types used in attribute value representation
It was bothering me a lot that I abused small integer values casted to (void *) to represent non string values in gitattributes. This corrects it by making the type of attribute values (const char *), and using the address of a few statically allocated character buffer to denote true/false. Unset attributes are represented as having NULLs as their values. Added in-header documentation to explain how git_checkattr() routine should be called. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
4
diff.c
4
diff.c
@ -1069,7 +1069,7 @@ static int file_is_binary(struct diff_filespec *one)
|
||||
|
||||
setup_diff_attr_check(&attr_diff_check);
|
||||
if (!git_checkattr(one->path, 1, &attr_diff_check)) {
|
||||
void *value = attr_diff_check.value;
|
||||
const char *value = attr_diff_check.value;
|
||||
if (ATTR_TRUE(value))
|
||||
return 0;
|
||||
else if (ATTR_FALSE(value))
|
||||
@ -1078,7 +1078,7 @@ static int file_is_binary(struct diff_filespec *one)
|
||||
;
|
||||
else
|
||||
die("unknown value %s given to 'diff' attribute",
|
||||
(char *)value);
|
||||
value);
|
||||
}
|
||||
|
||||
if (!one->data) {
|
||||
|
Reference in New Issue
Block a user