convert: add get_stream_filter_ca() variant
Like the previous patch, we will also need to call get_stream_filter() with a precomputed `struct conv_attrs`, when we add support for parallel checkout workers. So add the _ca() variant which takes the conversion attributes struct as a parameter. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
55b4ad0ead
commit
3e9e82c0d8
28
convert.c
28
convert.c
@ -1942,34 +1942,31 @@ static struct stream_filter *ident_filter(const struct object_id *oid)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return an appropriately constructed filter for the path, or NULL if
|
* Return an appropriately constructed filter for the given ca, or NULL if
|
||||||
* the contents cannot be filtered without reading the whole thing
|
* the contents cannot be filtered without reading the whole thing
|
||||||
* in-core.
|
* in-core.
|
||||||
*
|
*
|
||||||
* Note that you would be crazy to set CRLF, smudge/clean or ident to a
|
* Note that you would be crazy to set CRLF, smudge/clean or ident to a
|
||||||
* large binary blob you would want us not to slurp into the memory!
|
* large binary blob you would want us not to slurp into the memory!
|
||||||
*/
|
*/
|
||||||
struct stream_filter *get_stream_filter(const struct index_state *istate,
|
struct stream_filter *get_stream_filter_ca(const struct conv_attrs *ca,
|
||||||
const char *path,
|
const struct object_id *oid)
|
||||||
const struct object_id *oid)
|
|
||||||
{
|
{
|
||||||
struct conv_attrs ca;
|
|
||||||
struct stream_filter *filter = NULL;
|
struct stream_filter *filter = NULL;
|
||||||
|
|
||||||
convert_attrs(istate, &ca, path);
|
if (ca->drv && (ca->drv->process || ca->drv->smudge || ca->drv->clean))
|
||||||
if (ca.drv && (ca.drv->process || ca.drv->smudge || ca.drv->clean))
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (ca.working_tree_encoding)
|
if (ca->working_tree_encoding)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (ca.crlf_action == CRLF_AUTO || ca.crlf_action == CRLF_AUTO_CRLF)
|
if (ca->crlf_action == CRLF_AUTO || ca->crlf_action == CRLF_AUTO_CRLF)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (ca.ident)
|
if (ca->ident)
|
||||||
filter = ident_filter(oid);
|
filter = ident_filter(oid);
|
||||||
|
|
||||||
if (output_eol(ca.crlf_action) == EOL_CRLF)
|
if (output_eol(ca->crlf_action) == EOL_CRLF)
|
||||||
filter = cascade_filter(filter, lf_to_crlf_filter());
|
filter = cascade_filter(filter, lf_to_crlf_filter());
|
||||||
else
|
else
|
||||||
filter = cascade_filter(filter, &null_filter_singleton);
|
filter = cascade_filter(filter, &null_filter_singleton);
|
||||||
@ -1977,6 +1974,15 @@ struct stream_filter *get_stream_filter(const struct index_state *istate,
|
|||||||
return filter;
|
return filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct stream_filter *get_stream_filter(const struct index_state *istate,
|
||||||
|
const char *path,
|
||||||
|
const struct object_id *oid)
|
||||||
|
{
|
||||||
|
struct conv_attrs ca;
|
||||||
|
convert_attrs(istate, &ca, path);
|
||||||
|
return get_stream_filter_ca(&ca, oid);
|
||||||
|
}
|
||||||
|
|
||||||
void free_stream_filter(struct stream_filter *filter)
|
void free_stream_filter(struct stream_filter *filter)
|
||||||
{
|
{
|
||||||
filter->vtbl->free(filter);
|
filter->vtbl->free(filter);
|
||||||
|
@ -179,6 +179,8 @@ struct stream_filter; /* opaque */
|
|||||||
struct stream_filter *get_stream_filter(const struct index_state *istate,
|
struct stream_filter *get_stream_filter(const struct index_state *istate,
|
||||||
const char *path,
|
const char *path,
|
||||||
const struct object_id *);
|
const struct object_id *);
|
||||||
|
struct stream_filter *get_stream_filter_ca(const struct conv_attrs *ca,
|
||||||
|
const struct object_id *oid);
|
||||||
void free_stream_filter(struct stream_filter *);
|
void free_stream_filter(struct stream_filter *);
|
||||||
int is_null_stream_filter(struct stream_filter *);
|
int is_null_stream_filter(struct stream_filter *);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user