Create 'ref-filter.h', also add ref-filter to the Makefile. This completes movement of creation of 'ref-filter' from 'for-each-ref'. Mentored-by: Christian Couder <christian.couder@xxxxxxxxx> Mentored-by: Matthieu Moy <matthieu.moy@xxxxxxxxxxxxxxx> Signed-off-by: Karthik Nayak <karthik.188@xxxxxxxxx> --- Makefile | 1 + builtin/for-each-ref.c | 41 +------------------------------ ref-filter.c | 1 + ref-filter.h | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 40 deletions(-) create mode 100644 ref-filter.h diff --git a/Makefile b/Makefile index 323c401..ad455a3 100644 --- a/Makefile +++ b/Makefile @@ -762,6 +762,7 @@ LIB_OBJS += reachable.o LIB_OBJS += read-cache.o LIB_OBJS += reflog-walk.o LIB_OBJS += refs.o +LIB_OBJS += ref-filter.o LIB_OBJS += remote.o LIB_OBJS += replace_object.o LIB_OBJS += rerere.o diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c index 65ed954..2f11c01 100644 --- a/builtin/for-each-ref.c +++ b/builtin/for-each-ref.c @@ -2,46 +2,7 @@ #include "cache.h" #include "refs.h" #include "parse-options.h" - -/* Quoting styles */ -#define QUOTE_NONE 0 -#define QUOTE_SHELL 1 -#define QUOTE_PERL 2 -#define QUOTE_PYTHON 4 -#define QUOTE_TCL 8 - -struct atom_value { - const char *s; - unsigned long ul; /* used for sorting when not FIELD_STR */ -}; - -struct ref_sort { - struct ref_sort *next; - int atom; /* index into used_atom array */ - unsigned reverse : 1; -}; - -struct ref_array_item { - unsigned char objectname[20]; - int flag; - const char *symref; - struct atom_value *value; - char *refname; -}; - -struct ref_array { - int nr, alloc; - struct ref_array_item **items; -}; - -struct ref_filter { - const char **name_patterns; -}; - -struct ref_filter_cbdata { - struct ref_array array; - struct ref_filter filter; -}; +#include "ref-filter.h" static char const * const for_each_ref_usage[] = { N_("git for-each-ref [<options>] [<pattern>]"), diff --git a/ref-filter.c b/ref-filter.c index 2a8f504..1c73750 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -2,6 +2,7 @@ #include "cache.h" #include "parse-options.h" #include "refs.h" +#include "ref-filter.h" #include "wildmatch.h" #include "commit.h" #include "remote.h" diff --git a/ref-filter.h b/ref-filter.h new file mode 100644 index 0000000..dacae59 --- /dev/null +++ b/ref-filter.h @@ -0,0 +1,66 @@ +#ifndef REF_FILTER_H +#define REF_FILTER_H + +#include "sha1-array.h" +#include "refs.h" +#include "commit.h" +#include "parse-options.h" + +/* Quoting styles */ +#define QUOTE_NONE 0 +#define QUOTE_SHELL 1 +#define QUOTE_PERL 2 +#define QUOTE_PYTHON 4 +#define QUOTE_TCL 8 + +struct atom_value { + const char *s; + unsigned long ul; /* used for sorting when not FIELD_STR */ +}; + +struct ref_sort { + struct ref_sort *next; + int atom; /* index into used_atom array */ + unsigned reverse : 1; +}; + +struct ref_array_item { + unsigned char objectname[20]; + int flag; + const char *symref; + struct atom_value *value; + char *refname; +}; + +struct ref_array { + int nr, alloc; + struct ref_array_item **items; +}; + +struct ref_filter { + const char **name_patterns; +}; + +struct ref_filter_cbdata { + struct ref_array array; + struct ref_filter filter; +}; + +/* Callback function for for_each_*ref(). This filters the refs based on the filters set */ +int ref_filter_handler(const char *refname, const unsigned char *sha1, int flag, void *cb_data); +/* Clear all memory allocated to ref_filter_data */ +void ref_filter_clear_data(struct ref_filter_cbdata *ref_cbdata); +/* Parse format string and sort specifiers */ +int parse_ref_filter_atom(const char *atom, const char *ep); +/* Used to verify if the given format is correct and to parse out the used atoms */ +int verify_ref_format(const char *format); +/* Sort the given ref_array as per the ref_sort provided */ +void sort_ref_array(struct ref_sort *sort, struct ref_array *array); +/* Print the ref using the given format and quote_style */ +void show_ref_array_item(struct ref_array_item *info, const char *format, int quote_style); +/* Callback function for parsing the sort option */ +int opt_parse_ref_sort(const struct option *opt, const char *arg, int unset); +/* Default sort option based on refname */ +struct ref_sort *ref_default_sort(void); + +#endif /* REF_FILTER_H */ -- 2.4.2 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html