grep: enable recurse-submodules to work on <tree> objects
[gitweb.git] / connected.h
index 071d408f387b2afdbb642920054a7735c982200b..4ca325f79dc5ee45823834f71f66a6d3b278c3e5 100644 (file)
@@ -10,18 +10,48 @@ struct transport;
  */
 typedef int (*sha1_iterate_fn)(void *, unsigned char [20]);
 
+/*
+ * Named-arguments struct for check_connected. All arguments are
+ * optional, and can be left to defaults as set by CHECK_CONNECTED_INIT.
+ */
+struct check_connected_options {
+       /* Avoid printing any errors to stderr. */
+       int quiet;
+
+       /* --shallow-file to pass to rev-list sub-process */
+       const char *shallow_file;
+
+       /* Transport whose objects we are checking, if available. */
+       struct transport *transport;
+
+       /*
+        * If non-zero, send error messages to this descriptor rather
+        * than stderr. The descriptor is closed before check_connected
+        * returns.
+        */
+       int err_fd;
+
+       /* If non-zero, show progress as we traverse the objects. */
+       int progress;
+
+       /*
+        * Insert these variables into the environment of the child process.
+        */
+       const char **env;
+};
+
+#define CHECK_CONNECTED_INIT { 0 }
+
 /*
  * Make sure that our object store has all the commits necessary to
  * connect the ancestry chain to some of our existing refs, and all
  * the trees and blobs that these commits use.
  *
  * Return 0 if Ok, non zero otherwise (i.e. some missing objects)
+ *
+ * If "opt" is NULL, behaves as if CHECK_CONNECTED_INIT was passed.
  */
-extern int check_everything_connected(sha1_iterate_fn, int quiet, void *cb_data);
-extern int check_shallow_connected(sha1_iterate_fn, int quiet, void *cb_data,
-                                  const char *shallow_file);
-extern int check_everything_connected_with_transport(sha1_iterate_fn, int quiet,
-                                                    void *cb_data,
-                                                    struct transport *transport);
+int check_connected(sha1_iterate_fn fn, void *cb_data,
+                   struct check_connected_options *opt);
 
 #endif /* CONNECTED_H */