1#ifndef LIST_OBJECTS_FILTER_OPTIONS_H 2#define LIST_OBJECTS_FILTER_OPTIONS_H 3 4#include"parse-options.h" 5 6/* 7 * The list of defined filters for list-objects. 8 */ 9enum list_objects_filter_choice { 10 LOFC_DISABLED =0, 11 LOFC_BLOB_NONE, 12 LOFC_BLOB_LIMIT, 13 LOFC_TREE_NONE, 14 LOFC_SPARSE_OID, 15 LOFC_SPARSE_PATH, 16 LOFC__COUNT /* must be last */ 17}; 18 19struct list_objects_filter_options { 20/* 21 * 'filter_spec' is the raw argument value given on the command line 22 * or protocol request. (The part after the "--keyword=".) For 23 * commands that launch filtering sub-processes, this value should be 24 * passed to them as received by the current process. 25 */ 26char*filter_spec; 27 28/* 29 * 'choice' is determined by parsing the filter-spec. This indicates 30 * the filtering algorithm to use. 31 */ 32enum list_objects_filter_choice choice; 33 34/* 35 * Choice is LOFC_DISABLED because "--no-filter" was requested. 36 */ 37unsigned int no_filter :1; 38 39/* 40 * Parsed values (fields) from within the filter-spec. These are 41 * choice-specific; not all values will be defined for any given 42 * choice. 43 */ 44struct object_id *sparse_oid_value; 45char*sparse_path_value; 46unsigned long blob_limit_value; 47}; 48 49/* Normalized command line arguments */ 50#define CL_ARG__FILTER"filter" 51 52intparse_list_objects_filter( 53struct list_objects_filter_options *filter_options, 54const char*arg); 55 56intopt_parse_list_objects_filter(const struct option *opt, 57const char*arg,int unset); 58 59#define OPT_PARSE_LIST_OBJECTS_FILTER(fo) \ 60 { OPTION_CALLBACK, 0, CL_ARG__FILTER, fo, N_("args"), \ 61 N_("object filtering"), 0, \ 62 opt_parse_list_objects_filter } 63 64voidlist_objects_filter_release( 65struct list_objects_filter_options *filter_options); 66 67staticinlinevoidlist_objects_filter_set_no_filter( 68struct list_objects_filter_options *filter_options) 69{ 70list_objects_filter_release(filter_options); 71 filter_options->no_filter =1; 72} 73 74voidpartial_clone_register( 75const char*remote, 76const struct list_objects_filter_options *filter_options); 77voidpartial_clone_get_default_filter_spec( 78struct list_objects_filter_options *filter_options); 79 80#endif/* LIST_OBJECTS_FILTER_OPTIONS_H */