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_SPARSE_OID, 14 LOFC_SPARSE_PATH, 15 LOFC__COUNT /* must be last */ 16}; 17 18struct list_objects_filter_options { 19/* 20 * 'filter_spec' is the raw argument value given on the command line 21 * or protocol request. (The part after the "--keyword=".) For 22 * commands that launch filtering sub-processes, this value should be 23 * passed to them as received by the current process. 24 */ 25char*filter_spec; 26 27/* 28 * 'choice' is determined by parsing the filter-spec. This indicates 29 * the filtering algorithm to use. 30 */ 31enum list_objects_filter_choice choice; 32 33/* 34 * Parsed values (fields) from within the filter-spec. These are 35 * choice-specific; not all values will be defined for any given 36 * choice. 37 */ 38struct object_id *sparse_oid_value; 39char*sparse_path_value; 40unsigned long blob_limit_value; 41}; 42 43/* Normalized command line arguments */ 44#define CL_ARG__FILTER"filter" 45 46intparse_list_objects_filter( 47struct list_objects_filter_options *filter_options, 48const char*arg); 49 50intopt_parse_list_objects_filter(const struct option *opt, 51const char*arg,int unset); 52 53#define OPT_PARSE_LIST_OBJECTS_FILTER(fo) \ 54 { OPTION_CALLBACK, 0, CL_ARG__FILTER, fo, N_("args"), \ 55 N_("object filtering"), 0, \ 56 opt_parse_list_objects_filter } 57 58voidlist_objects_filter_release( 59struct list_objects_filter_options *filter_options); 60 61#endif/* LIST_OBJECTS_FILTER_OPTIONS_H */