summaryrefslogtreecommitdiffstats
path: root/walker.h
diff options
context:
space:
mode:
Diffstat (limited to 'walker.h')
-rw-r--r--walker.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/walker.h b/walker.h
new file mode 100644
index 0000000..d40b016
--- /dev/null
+++ b/walker.h
@@ -0,0 +1,38 @@
+#ifndef WALKER_H
+#define WALKER_H
+
+#include "remote.h"
+
+struct walker {
+ void *data;
+ int (*fetch_ref)(struct walker *, struct ref *ref);
+ void (*prefetch)(struct walker *, unsigned char *sha1);
+ int (*fetch)(struct walker *, unsigned char *sha1);
+ void (*cleanup)(struct walker *);
+ int get_verbosely;
+ int get_progress;
+ int get_recover;
+
+ int corrupt_object_found;
+};
+
+/* Report what we got under get_verbosely */
+__attribute__((format (printf, 2, 3)))
+void walker_say(struct walker *walker, const char *fmt, ...);
+
+/* Load pull targets from stdin */
+int walker_targets_stdin(char ***target, const char ***write_ref);
+
+/* Free up loaded targets */
+void walker_targets_free(int targets, char **target, const char **write_ref);
+
+/* If write_ref is set, the ref filename to write the target value to. */
+/* If write_ref_log_details is set, additional text will appear in the ref log. */
+int walker_fetch(struct walker *impl, int targets, char **target,
+ const char **write_ref, const char *write_ref_log_details);
+
+void walker_free(struct walker *walker);
+
+struct walker *get_http_walker(const char *url);
+
+#endif /* WALKER_H */