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:
Junio C Hamano
2007-04-18 16:16:37 -07:00
parent 3086486d32
commit a5e92abde6
6 changed files with 43 additions and 26 deletions

4
diff.c
View File

@ -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) {