Prathamesh Chavan <pc44800@xxxxxxxxx> writes: > +typedef void (*submodule_list_func_t)(const struct cache_entry *list_item, > + void *cb_data); > + > static char *get_default_remote(void) > { > char *dest = NULL, *ret; > @@ -353,17 +356,30 @@ static int module_list(int argc, const char **argv, const char *prefix) > return 0; > } > > -static void init_submodule(const char *path, const char *prefix, int quiet) > +static void for_each_submodule(const struct module_list *list, > + submodule_list_func_t fn, void *cb_data) In the output from $ git grep for_each \*.h we find that the convention is that an interator over a group of X is for_each_X, the callback function that is given to for_each_X is of type each_X_fn. An interator over a subset of group of X that has trait Y, for_each_Y_X() iterates and calls back a function of type each_X_fn (e.g. for_each_tag_ref() still calls each_ref_fn). I do not offhand think of a reason why the above code need to deviate from that pattern.