repo: Add a new iterator traversal API for commits

This is a more optimized version of the GFile * APIs, and is now used
internally by the previous ostree_repo_traverse().
This commit is contained in:
Colin Walters committed 2015-02-16 10:10:35 -05:00
1 parent 08476ce254
commit 0f74ed62b7
3 files changed
+414 -101

No files matched your search

+53
View File
@@ -536,6 +536,59 @@ gboolean ostree_repo_traverse_commit_union (OstreeRepo *repo,
GCancellable *cancellable,
GError **error);
struct _OstreeRepoCommitTraverseIter {
gboolean initialized;
gpointer dummy[10];
char dummy_checksum_data[65*2];
};
typedef struct _OstreeRepoCommitTraverseIter OstreeRepoCommitTraverseIter;
typedef enum {
OSTREE_REPO_COMMIT_TRAVERSE_FLAG_NONE = (1 << 0)
} OstreeRepoCommitTraverseFlags;
gboolean
ostree_repo_commit_traverse_iter_init_commit (OstreeRepoCommitTraverseIter *iter,
OstreeRepo *repo,
GVariant *commit,
OstreeRepoCommitTraverseFlags flags,
GError **error);
gboolean
ostree_repo_commit_traverse_iter_init_dirtree (OstreeRepoCommitTraverseIter *iter,
OstreeRepo *repo,
GVariant *dirtree,
OstreeRepoCommitTraverseFlags flags,
GError **error);
typedef enum {
OSTREE_REPO_COMMIT_ITER_RESULT_ERROR,
OSTREE_REPO_COMMIT_ITER_RESULT_END,
OSTREE_REPO_COMMIT_ITER_RESULT_FILE,
OSTREE_REPO_COMMIT_ITER_RESULT_DIR
} OstreeRepoCommitIterResult;
OstreeRepoCommitIterResult ostree_repo_commit_traverse_iter_next (OstreeRepoCommitTraverseIter *iter,
GCancellable *cancellable,
GError **error);
void ostree_repo_commit_traverse_iter_get_file (OstreeRepoCommitTraverseIter *iter,
char **out_name,
char **out_checksum);
void ostree_repo_commit_traverse_iter_get_dir (OstreeRepoCommitTraverseIter *iter,
char **out_name,
char **out_content_checksum,
char **out_meta_checksum);
void
ostree_repo_commit_traverse_iter_clear (OstreeRepoCommitTraverseIter *iter);
void ostree_repo_commit_traverse_iter_cleanup (void *p);
#define ostree_cleanup_repo_commit_traverse_iter __attribute__ ((cleanup(ostree_repo_commit_traverse_iter_cleanup)))
/**
* OstreeRepoPruneFlags:
* @OSTREE_REPO_PRUNE_FLAGS_NONE: No special options for pruning