attr: rename function and struct related to checking attributes
The traditional API to check attributes is to prepare an N-element array of "struct git_attr_check" and pass N and the array to the function "git_check_attr()" as arguments. In preparation to revamp the API to pass a single structure, in which these N elements are held, rename the type used for these individual array elements to "struct attr_check_item" and rename the function to "git_check_attrs()". Signed-off-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Stefan Beller <sbeller@google.com> Signed-off-by: Brandon Williams <bmwill@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
7d42ec547c
commit
7bd18054d2
@ -87,7 +87,7 @@ void *sha1_file_to_archive(const struct archiver_args *args,
|
|||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setup_archive_check(struct git_attr_check *check)
|
static void setup_archive_check(struct attr_check_item *check)
|
||||||
{
|
{
|
||||||
static struct git_attr *attr_export_ignore;
|
static struct git_attr *attr_export_ignore;
|
||||||
static struct git_attr *attr_export_subst;
|
static struct git_attr *attr_export_subst;
|
||||||
@ -123,7 +123,7 @@ static int write_archive_entry(const unsigned char *sha1, const char *base,
|
|||||||
struct archiver_context *c = context;
|
struct archiver_context *c = context;
|
||||||
struct archiver_args *args = c->args;
|
struct archiver_args *args = c->args;
|
||||||
write_archive_entry_fn_t write_entry = c->write_entry;
|
write_archive_entry_fn_t write_entry = c->write_entry;
|
||||||
struct git_attr_check check[2];
|
struct attr_check_item check[2];
|
||||||
const char *path_without_prefix;
|
const char *path_without_prefix;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ static int write_archive_entry(const unsigned char *sha1, const char *base,
|
|||||||
path_without_prefix = path.buf + args->baselen;
|
path_without_prefix = path.buf + args->baselen;
|
||||||
|
|
||||||
setup_archive_check(check);
|
setup_archive_check(check);
|
||||||
if (!git_check_attr(path_without_prefix, ARRAY_SIZE(check), check)) {
|
if (!git_check_attrs(path_without_prefix, ARRAY_SIZE(check), check)) {
|
||||||
if (ATTR_TRUE(check[0].value))
|
if (ATTR_TRUE(check[0].value))
|
||||||
return 0;
|
return 0;
|
||||||
args->convert = ATTR_TRUE(check[1].value);
|
args->convert = ATTR_TRUE(check[1].value);
|
||||||
|
12
attr.c
12
attr.c
@ -56,7 +56,7 @@ static struct git_attr *(git_attr_hash[HASHSIZE]);
|
|||||||
static int cannot_trust_maybe_real;
|
static int cannot_trust_maybe_real;
|
||||||
|
|
||||||
/* NEEDSWORK: This will become per git_attr_check */
|
/* NEEDSWORK: This will become per git_attr_check */
|
||||||
static struct git_attr_check *check_all_attr;
|
static struct attr_check_item *check_all_attr;
|
||||||
|
|
||||||
const char *git_attr_name(const struct git_attr *attr)
|
const char *git_attr_name(const struct git_attr *attr)
|
||||||
{
|
{
|
||||||
@ -713,7 +713,7 @@ static int macroexpand_one(int attr_nr, int rem);
|
|||||||
|
|
||||||
static int fill_one(const char *what, struct match_attr *a, int rem)
|
static int fill_one(const char *what, struct match_attr *a, int rem)
|
||||||
{
|
{
|
||||||
struct git_attr_check *check = check_all_attr;
|
struct attr_check_item *check = check_all_attr;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = a->num_attr - 1; 0 < rem && 0 <= i; i--) {
|
for (i = a->num_attr - 1; 0 < rem && 0 <= i; i--) {
|
||||||
@ -778,7 +778,7 @@ static int macroexpand_one(int nr, int rem)
|
|||||||
* collected. Otherwise all attributes are collected.
|
* collected. Otherwise all attributes are collected.
|
||||||
*/
|
*/
|
||||||
static void collect_some_attrs(const char *path, int num,
|
static void collect_some_attrs(const char *path, int num,
|
||||||
struct git_attr_check *check)
|
struct attr_check_item *check)
|
||||||
|
|
||||||
{
|
{
|
||||||
struct attr_stack *stk;
|
struct attr_stack *stk;
|
||||||
@ -806,7 +806,7 @@ static void collect_some_attrs(const char *path, int num,
|
|||||||
rem = 0;
|
rem = 0;
|
||||||
for (i = 0; i < num; i++) {
|
for (i = 0; i < num; i++) {
|
||||||
if (!check[i].attr->maybe_real) {
|
if (!check[i].attr->maybe_real) {
|
||||||
struct git_attr_check *c;
|
struct attr_check_item *c;
|
||||||
c = check_all_attr + check[i].attr->attr_nr;
|
c = check_all_attr + check[i].attr->attr_nr;
|
||||||
c->value = ATTR__UNSET;
|
c->value = ATTR__UNSET;
|
||||||
rem++;
|
rem++;
|
||||||
@ -821,7 +821,7 @@ static void collect_some_attrs(const char *path, int num,
|
|||||||
rem = fill(path, pathlen, basename_offset, stk, rem);
|
rem = fill(path, pathlen, basename_offset, stk, rem);
|
||||||
}
|
}
|
||||||
|
|
||||||
int git_check_attr(const char *path, int num, struct git_attr_check *check)
|
int git_check_attrs(const char *path, int num, struct attr_check_item *check)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -837,7 +837,7 @@ int git_check_attr(const char *path, int num, struct git_attr_check *check)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int git_all_attrs(const char *path, int *num, struct git_attr_check **check)
|
int git_all_attrs(const char *path, int *num, struct attr_check_item **check)
|
||||||
{
|
{
|
||||||
int i, count, j;
|
int i, count, j;
|
||||||
|
|
||||||
|
8
attr.h
8
attr.h
@ -20,11 +20,11 @@ extern const char git_attr__false[];
|
|||||||
#define ATTR_UNSET(v) ((v) == NULL)
|
#define ATTR_UNSET(v) ((v) == NULL)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Send one or more git_attr_check to git_check_attr(), and
|
* Send one or more git_attr_check to git_check_attrs(), and
|
||||||
* each 'value' member tells what its value is.
|
* each 'value' member tells what its value is.
|
||||||
* Unset one is returned as NULL.
|
* Unset one is returned as NULL.
|
||||||
*/
|
*/
|
||||||
struct git_attr_check {
|
struct attr_check_item {
|
||||||
const struct git_attr *attr;
|
const struct git_attr *attr;
|
||||||
const char *value;
|
const char *value;
|
||||||
};
|
};
|
||||||
@ -36,7 +36,7 @@ struct git_attr_check {
|
|||||||
*/
|
*/
|
||||||
extern const char *git_attr_name(const struct git_attr *);
|
extern const char *git_attr_name(const struct git_attr *);
|
||||||
|
|
||||||
int git_check_attr(const char *path, int, struct git_attr_check *);
|
int git_check_attrs(const char *path, int, struct attr_check_item *);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Retrieve all attributes that apply to the specified path. *num
|
* Retrieve all attributes that apply to the specified path. *num
|
||||||
@ -45,7 +45,7 @@ int git_check_attr(const char *path, int, struct git_attr_check *);
|
|||||||
* objects describing the attributes and their values. *check must be
|
* objects describing the attributes and their values. *check must be
|
||||||
* free()ed by the caller.
|
* free()ed by the caller.
|
||||||
*/
|
*/
|
||||||
int git_all_attrs(const char *path, int *num, struct git_attr_check **check);
|
int git_all_attrs(const char *path, int *num, struct attr_check_item **check);
|
||||||
|
|
||||||
enum git_attr_direction {
|
enum git_attr_direction {
|
||||||
GIT_ATTR_CHECKIN,
|
GIT_ATTR_CHECKIN,
|
||||||
|
@ -24,8 +24,8 @@ static const struct option check_attr_options[] = {
|
|||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
|
||||||
static void output_attr(int cnt, struct git_attr_check *check,
|
static void output_attr(int cnt, struct attr_check_item *check,
|
||||||
const char *file)
|
const char *file)
|
||||||
{
|
{
|
||||||
int j;
|
int j;
|
||||||
for (j = 0; j < cnt; j++) {
|
for (j = 0; j < cnt; j++) {
|
||||||
@ -51,14 +51,15 @@ static void output_attr(int cnt, struct git_attr_check *check,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void check_attr(const char *prefix, int cnt,
|
static void check_attr(const char *prefix,
|
||||||
struct git_attr_check *check, const char *file)
|
int cnt, struct attr_check_item *check,
|
||||||
|
const char *file)
|
||||||
{
|
{
|
||||||
char *full_path =
|
char *full_path =
|
||||||
prefix_path(prefix, prefix ? strlen(prefix) : 0, file);
|
prefix_path(prefix, prefix ? strlen(prefix) : 0, file);
|
||||||
if (check != NULL) {
|
if (check != NULL) {
|
||||||
if (git_check_attr(full_path, cnt, check))
|
if (git_check_attrs(full_path, cnt, check))
|
||||||
die("git_check_attr died");
|
die("git_check_attrs died");
|
||||||
output_attr(cnt, check, file);
|
output_attr(cnt, check, file);
|
||||||
} else {
|
} else {
|
||||||
if (git_all_attrs(full_path, &cnt, &check))
|
if (git_all_attrs(full_path, &cnt, &check))
|
||||||
@ -69,8 +70,8 @@ static void check_attr(const char *prefix, int cnt,
|
|||||||
free(full_path);
|
free(full_path);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void check_attr_stdin_paths(const char *prefix, int cnt,
|
static void check_attr_stdin_paths(const char *prefix,
|
||||||
struct git_attr_check *check)
|
int cnt, struct attr_check_item *check)
|
||||||
{
|
{
|
||||||
struct strbuf buf = STRBUF_INIT;
|
struct strbuf buf = STRBUF_INIT;
|
||||||
struct strbuf unquoted = STRBUF_INIT;
|
struct strbuf unquoted = STRBUF_INIT;
|
||||||
@ -99,7 +100,7 @@ static NORETURN void error_with_usage(const char *msg)
|
|||||||
|
|
||||||
int cmd_check_attr(int argc, const char **argv, const char *prefix)
|
int cmd_check_attr(int argc, const char **argv, const char *prefix)
|
||||||
{
|
{
|
||||||
struct git_attr_check *check;
|
struct attr_check_item *check;
|
||||||
int cnt, i, doubledash, filei;
|
int cnt, i, doubledash, filei;
|
||||||
|
|
||||||
if (!is_bare_repository())
|
if (!is_bare_repository())
|
||||||
|
@ -894,7 +894,7 @@ static void write_pack_file(void)
|
|||||||
written, nr_result);
|
written, nr_result);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setup_delta_attr_check(struct git_attr_check *check)
|
static void setup_delta_attr_check(struct attr_check_item *check)
|
||||||
{
|
{
|
||||||
static struct git_attr *attr_delta;
|
static struct git_attr *attr_delta;
|
||||||
|
|
||||||
@ -906,10 +906,10 @@ static void setup_delta_attr_check(struct git_attr_check *check)
|
|||||||
|
|
||||||
static int no_try_delta(const char *path)
|
static int no_try_delta(const char *path)
|
||||||
{
|
{
|
||||||
struct git_attr_check check[1];
|
struct attr_check_item check[1];
|
||||||
|
|
||||||
setup_delta_attr_check(check);
|
setup_delta_attr_check(check);
|
||||||
if (git_check_attr(path, ARRAY_SIZE(check), check))
|
if (git_check_attrs(path, ARRAY_SIZE(check), check))
|
||||||
return 0;
|
return 0;
|
||||||
if (ATTR_FALSE(check->value))
|
if (ATTR_FALSE(check->value))
|
||||||
return 1;
|
return 1;
|
||||||
|
12
convert.c
12
convert.c
@ -1028,7 +1028,7 @@ static int ident_to_worktree(const char *path, const char *src, size_t len,
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum crlf_action git_path_check_crlf(struct git_attr_check *check)
|
static enum crlf_action git_path_check_crlf(struct attr_check_item *check)
|
||||||
{
|
{
|
||||||
const char *value = check->value;
|
const char *value = check->value;
|
||||||
|
|
||||||
@ -1045,7 +1045,7 @@ static enum crlf_action git_path_check_crlf(struct git_attr_check *check)
|
|||||||
return CRLF_UNDEFINED;
|
return CRLF_UNDEFINED;
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum eol git_path_check_eol(struct git_attr_check *check)
|
static enum eol git_path_check_eol(struct attr_check_item *check)
|
||||||
{
|
{
|
||||||
const char *value = check->value;
|
const char *value = check->value;
|
||||||
|
|
||||||
@ -1058,7 +1058,7 @@ static enum eol git_path_check_eol(struct git_attr_check *check)
|
|||||||
return EOL_UNSET;
|
return EOL_UNSET;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct convert_driver *git_path_check_convert(struct git_attr_check *check)
|
static struct convert_driver *git_path_check_convert(struct attr_check_item *check)
|
||||||
{
|
{
|
||||||
const char *value = check->value;
|
const char *value = check->value;
|
||||||
struct convert_driver *drv;
|
struct convert_driver *drv;
|
||||||
@ -1071,7 +1071,7 @@ static struct convert_driver *git_path_check_convert(struct git_attr_check *chec
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int git_path_check_ident(struct git_attr_check *check)
|
static int git_path_check_ident(struct attr_check_item *check)
|
||||||
{
|
{
|
||||||
const char *value = check->value;
|
const char *value = check->value;
|
||||||
|
|
||||||
@ -1093,7 +1093,7 @@ static const char *conv_attr_name[] = {
|
|||||||
static void convert_attrs(struct conv_attrs *ca, const char *path)
|
static void convert_attrs(struct conv_attrs *ca, const char *path)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
static struct git_attr_check ccheck[NUM_CONV_ATTRS];
|
static struct attr_check_item ccheck[NUM_CONV_ATTRS];
|
||||||
|
|
||||||
if (!ccheck[0].attr) {
|
if (!ccheck[0].attr) {
|
||||||
for (i = 0; i < NUM_CONV_ATTRS; i++)
|
for (i = 0; i < NUM_CONV_ATTRS; i++)
|
||||||
@ -1102,7 +1102,7 @@ static void convert_attrs(struct conv_attrs *ca, const char *path)
|
|||||||
git_config(read_convert_config, NULL);
|
git_config(read_convert_config, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!git_check_attr(path, NUM_CONV_ATTRS, ccheck)) {
|
if (!git_check_attrs(path, NUM_CONV_ATTRS, ccheck)) {
|
||||||
ca->crlf_action = git_path_check_crlf(ccheck + 4);
|
ca->crlf_action = git_path_check_crlf(ccheck + 4);
|
||||||
if (ca->crlf_action == CRLF_UNDEFINED)
|
if (ca->crlf_action == CRLF_UNDEFINED)
|
||||||
ca->crlf_action = git_path_check_crlf(ccheck + 0);
|
ca->crlf_action = git_path_check_crlf(ccheck + 0);
|
||||||
|
10
ll-merge.c
10
ll-merge.c
@ -336,13 +336,13 @@ static const struct ll_merge_driver *find_ll_merge_driver(const char *merge_attr
|
|||||||
return &ll_merge_drv[LL_TEXT_MERGE];
|
return &ll_merge_drv[LL_TEXT_MERGE];
|
||||||
}
|
}
|
||||||
|
|
||||||
static int git_path_check_merge(const char *path, struct git_attr_check check[2])
|
static int git_path_check_merge(const char *path, struct attr_check_item check[2])
|
||||||
{
|
{
|
||||||
if (!check[0].attr) {
|
if (!check[0].attr) {
|
||||||
check[0].attr = git_attr("merge");
|
check[0].attr = git_attr("merge");
|
||||||
check[1].attr = git_attr("conflict-marker-size");
|
check[1].attr = git_attr("conflict-marker-size");
|
||||||
}
|
}
|
||||||
return git_check_attr(path, 2, check);
|
return git_check_attrs(path, 2, check);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void normalize_file(mmfile_t *mm, const char *path)
|
static void normalize_file(mmfile_t *mm, const char *path)
|
||||||
@ -362,7 +362,7 @@ int ll_merge(mmbuffer_t *result_buf,
|
|||||||
mmfile_t *theirs, const char *their_label,
|
mmfile_t *theirs, const char *their_label,
|
||||||
const struct ll_merge_options *opts)
|
const struct ll_merge_options *opts)
|
||||||
{
|
{
|
||||||
static struct git_attr_check check[2];
|
static struct attr_check_item check[2];
|
||||||
static const struct ll_merge_options default_opts;
|
static const struct ll_merge_options default_opts;
|
||||||
const char *ll_driver_name = NULL;
|
const char *ll_driver_name = NULL;
|
||||||
int marker_size = DEFAULT_CONFLICT_MARKER_SIZE;
|
int marker_size = DEFAULT_CONFLICT_MARKER_SIZE;
|
||||||
@ -398,12 +398,12 @@ int ll_merge(mmbuffer_t *result_buf,
|
|||||||
|
|
||||||
int ll_merge_marker_size(const char *path)
|
int ll_merge_marker_size(const char *path)
|
||||||
{
|
{
|
||||||
static struct git_attr_check check;
|
static struct attr_check_item check;
|
||||||
int marker_size = DEFAULT_CONFLICT_MARKER_SIZE;
|
int marker_size = DEFAULT_CONFLICT_MARKER_SIZE;
|
||||||
|
|
||||||
if (!check.attr)
|
if (!check.attr)
|
||||||
check.attr = git_attr("conflict-marker-size");
|
check.attr = git_attr("conflict-marker-size");
|
||||||
if (!git_check_attr(path, 1, &check) && check.value) {
|
if (!git_check_attrs(path, 1, &check) && check.value) {
|
||||||
marker_size = atoi(check.value);
|
marker_size = atoi(check.value);
|
||||||
if (marker_size <= 0)
|
if (marker_size <= 0)
|
||||||
marker_size = DEFAULT_CONFLICT_MARKER_SIZE;
|
marker_size = DEFAULT_CONFLICT_MARKER_SIZE;
|
||||||
|
@ -263,7 +263,7 @@ struct userdiff_driver *userdiff_find_by_name(const char *name) {
|
|||||||
struct userdiff_driver *userdiff_find_by_path(const char *path)
|
struct userdiff_driver *userdiff_find_by_path(const char *path)
|
||||||
{
|
{
|
||||||
static struct git_attr *attr;
|
static struct git_attr *attr;
|
||||||
struct git_attr_check check;
|
struct attr_check_item check;
|
||||||
|
|
||||||
if (!attr)
|
if (!attr)
|
||||||
attr = git_attr("diff");
|
attr = git_attr("diff");
|
||||||
@ -271,7 +271,7 @@ struct userdiff_driver *userdiff_find_by_path(const char *path)
|
|||||||
|
|
||||||
if (!path)
|
if (!path)
|
||||||
return NULL;
|
return NULL;
|
||||||
if (git_check_attr(path, 1, &check))
|
if (git_check_attrs(path, 1, &check))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (ATTR_TRUE(check.value))
|
if (ATTR_TRUE(check.value))
|
||||||
|
6
ws.c
6
ws.c
@ -71,7 +71,7 @@ unsigned parse_whitespace_rule(const char *string)
|
|||||||
return rule;
|
return rule;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void setup_whitespace_attr_check(struct git_attr_check *check)
|
static void setup_whitespace_attr_check(struct attr_check_item *check)
|
||||||
{
|
{
|
||||||
static struct git_attr *attr_whitespace;
|
static struct git_attr *attr_whitespace;
|
||||||
|
|
||||||
@ -82,10 +82,10 @@ static void setup_whitespace_attr_check(struct git_attr_check *check)
|
|||||||
|
|
||||||
unsigned whitespace_rule(const char *pathname)
|
unsigned whitespace_rule(const char *pathname)
|
||||||
{
|
{
|
||||||
struct git_attr_check attr_whitespace_rule;
|
struct attr_check_item attr_whitespace_rule;
|
||||||
|
|
||||||
setup_whitespace_attr_check(&attr_whitespace_rule);
|
setup_whitespace_attr_check(&attr_whitespace_rule);
|
||||||
if (!git_check_attr(pathname, 1, &attr_whitespace_rule)) {
|
if (!git_check_attrs(pathname, 1, &attr_whitespace_rule)) {
|
||||||
const char *value;
|
const char *value;
|
||||||
|
|
||||||
value = attr_whitespace_rule.value;
|
value = attr_whitespace_rule.value;
|
||||||
|
Loading…
Reference in New Issue
Block a user