Blame include/git2/types.h

Packit Service 20376f
/*
Packit Service 20376f
 * Copyright (C) the libgit2 contributors. All rights reserved.
Packit Service 20376f
 *
Packit Service 20376f
 * This file is part of libgit2, distributed under the GNU GPL v2 with
Packit Service 20376f
 * a Linking Exception. For full terms see the included COPYING file.
Packit Service 20376f
 */
Packit Service 20376f
#ifndef INCLUDE_git_types_h__
Packit Service 20376f
#define INCLUDE_git_types_h__
Packit Service 20376f
Packit Service 20376f
#include "common.h"
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * @file git2/types.h
Packit Service 20376f
 * @brief libgit2 base & compatibility types
Packit Service 20376f
 * @ingroup Git
Packit Service 20376f
 * @{
Packit Service 20376f
 */
Packit Service 20376f
GIT_BEGIN_DECL
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * Cross-platform compatibility types for off_t / time_t
Packit Service 20376f
 *
Packit Service 20376f
 * NOTE: This needs to be in a public header so that both the library
Packit Service 20376f
 * implementation and client applications both agree on the same types.
Packit Service 20376f
 * Otherwise we get undefined behavior.
Packit Service 20376f
 *
Packit Service 20376f
 * Use the "best" types that each platform provides. Currently we truncate
Packit Service 20376f
 * these intermediate representations for compatibility with the git ABI, but
Packit Service 20376f
 * if and when it changes to support 64 bit types, our code will naturally
Packit Service 20376f
 * adapt.
Packit Service 20376f
 * NOTE: These types should match those that are returned by our internal
Packit Service 20376f
 * stat() functions, for all platforms.
Packit Service 20376f
 */
Packit Service 20376f
#include <sys/types.h>
Packit Service 20376f
#ifdef __amigaos4__
Packit Service 20376f
#include <stdint.h>
Packit Service 20376f
#endif
Packit Service 20376f
Packit Service 20376f
#if defined(_MSC_VER)
Packit Service 20376f
Packit Service 20376f
typedef __int64 git_off_t;
Packit Service 20376f
typedef __time64_t git_time_t;
Packit Service 20376f
Packit Service 20376f
#elif defined(__MINGW32__)
Packit Service 20376f
Packit Service 20376f
typedef off64_t git_off_t;
Packit Service 20376f
typedef __time64_t git_time_t;
Packit Service 20376f
Packit Service 20376f
#elif defined(__HAIKU__)
Packit Service 20376f
Packit Service 20376f
typedef __haiku_std_int64 git_off_t;
Packit Service 20376f
typedef __haiku_std_int64 git_time_t;
Packit Service 20376f
Packit Service 20376f
#else /* POSIX */
Packit Service 20376f
Packit Service 20376f
/*
Packit Service 20376f
 * Note: Can't use off_t since if a client program includes <sys/types.h>
Packit Service 20376f
 * before us (directly or indirectly), they'll get 32 bit off_t in their client
Packit Service 20376f
 * app, even though /we/ define _FILE_OFFSET_BITS=64.
Packit Service 20376f
 */
Packit Service 20376f
typedef int64_t git_off_t;
Packit Service 20376f
typedef int64_t git_time_t;
Packit Service 20376f
Packit Service 20376f
#endif
Packit Service 20376f
Packit Service 20376f
/** Basic type (loose or packed) of any Git object. */
Packit Service 20376f
typedef enum {
Packit Service 20376f
	GIT_OBJ_ANY = -2,		/**< Object can be any of the following */
Packit Service 20376f
	GIT_OBJ_BAD = -1,		/**< Object is invalid. */
Packit Service 20376f
	GIT_OBJ__EXT1 = 0,		/**< Reserved for future use. */
Packit Service 20376f
	GIT_OBJ_COMMIT = 1,		/**< A commit object. */
Packit Service 20376f
	GIT_OBJ_TREE = 2,		/**< A tree (directory listing) object. */
Packit Service 20376f
	GIT_OBJ_BLOB = 3,		/**< A file revision object. */
Packit Service 20376f
	GIT_OBJ_TAG = 4,		/**< An annotated tag object. */
Packit Service 20376f
	GIT_OBJ__EXT2 = 5,		/**< Reserved for future use. */
Packit Service 20376f
	GIT_OBJ_OFS_DELTA = 6, /**< A delta, base is given by an offset. */
Packit Service 20376f
	GIT_OBJ_REF_DELTA = 7, /**< A delta, base is given by object id. */
Packit Service 20376f
} git_otype;
Packit Service 20376f
Packit Service 20376f
/** An open object database handle. */
Packit Service 20376f
typedef struct git_odb git_odb;
Packit Service 20376f
Packit Service 20376f
/** A custom backend in an ODB */
Packit Service 20376f
typedef struct git_odb_backend git_odb_backend;
Packit Service 20376f
Packit Service 20376f
/** An object read from the ODB */
Packit Service 20376f
typedef struct git_odb_object git_odb_object;
Packit Service 20376f
Packit Service 20376f
/** A stream to read/write from the ODB */
Packit Service 20376f
typedef struct git_odb_stream git_odb_stream;
Packit Service 20376f
Packit Service 20376f
/** A stream to write a packfile to the ODB */
Packit Service 20376f
typedef struct git_odb_writepack git_odb_writepack;
Packit Service 20376f
Packit Service 20376f
/** An open refs database handle. */
Packit Service 20376f
typedef struct git_refdb git_refdb;
Packit Service 20376f
Packit Service 20376f
/** A custom backend for refs */
Packit Service 20376f
typedef struct git_refdb_backend git_refdb_backend;
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * Representation of an existing git repository,
Packit Service 20376f
 * including all its object contents
Packit Service 20376f
 */
Packit Service 20376f
typedef struct git_repository git_repository;
Packit Service 20376f
Packit Service 20376f
/** Representation of a working tree */
Packit Service 20376f
typedef struct git_worktree git_worktree;
Packit Service 20376f
Packit Service 20376f
/** Representation of a generic object in a repository */
Packit Service 20376f
typedef struct git_object git_object;
Packit Service 20376f
Packit Service 20376f
/** Representation of an in-progress walk through the commits in a repo */
Packit Service 20376f
typedef struct git_revwalk git_revwalk;
Packit Service 20376f
Packit Service 20376f
/** Parsed representation of a tag object. */
Packit Service 20376f
typedef struct git_tag git_tag;
Packit Service 20376f
Packit Service 20376f
/** In-memory representation of a blob object. */
Packit Service 20376f
typedef struct git_blob git_blob;
Packit Service 20376f
Packit Service 20376f
/** Parsed representation of a commit object. */
Packit Service 20376f
typedef struct git_commit git_commit;
Packit Service 20376f
Packit Service 20376f
/** Representation of each one of the entries in a tree object. */
Packit Service 20376f
typedef struct git_tree_entry git_tree_entry;
Packit Service 20376f
Packit Service 20376f
/** Representation of a tree object. */
Packit Service 20376f
typedef struct git_tree git_tree;
Packit Service 20376f
Packit Service 20376f
/** Constructor for in-memory trees */
Packit Service 20376f
typedef struct git_treebuilder git_treebuilder;
Packit Service 20376f
Packit Service 20376f
/** Memory representation of an index file. */
Packit Service 20376f
typedef struct git_index git_index;
Packit Service 20376f
Packit Service 20376f
/** An iterator for conflicts in the index. */
Packit Service 20376f
typedef struct git_index_conflict_iterator git_index_conflict_iterator;
Packit Service 20376f
Packit Service 20376f
/** Memory representation of a set of config files */
Packit Service 20376f
typedef struct git_config git_config;
Packit Service 20376f
Packit Service 20376f
/** Interface to access a configuration file */
Packit Service 20376f
typedef struct git_config_backend git_config_backend;
Packit Service 20376f
Packit Service 20376f
/** Representation of a reference log entry */
Packit Service 20376f
typedef struct git_reflog_entry git_reflog_entry;
Packit Service 20376f
Packit Service 20376f
/** Representation of a reference log */
Packit Service 20376f
typedef struct git_reflog git_reflog;
Packit Service 20376f
Packit Service 20376f
/** Representation of a git note */
Packit Service 20376f
typedef struct git_note git_note;
Packit Service 20376f
Packit Service 20376f
/** Representation of a git packbuilder */
Packit Service 20376f
typedef struct git_packbuilder git_packbuilder;
Packit Service 20376f
Packit Service 20376f
/** Time in a signature */
Packit Service 20376f
typedef struct git_time {
Packit Service 20376f
	git_time_t time; /**< time in seconds from epoch */
Packit Service 20376f
	int offset; /**< timezone offset, in minutes */
Packit Service 20376f
} git_time;
Packit Service 20376f
Packit Service 20376f
/** An action signature (e.g. for committers, taggers, etc) */
Packit Service 20376f
typedef struct git_signature {
Packit Service 20376f
	char *name; /**< full name of the author */
Packit Service 20376f
	char *email; /**< email of the author */
Packit Service 20376f
	git_time when; /**< time when the action happened */
Packit Service 20376f
} git_signature;
Packit Service 20376f
Packit Service 20376f
/** In-memory representation of a reference. */
Packit Service 20376f
typedef struct git_reference git_reference;
Packit Service 20376f
Packit Service 20376f
/** Iterator for references */
Packit Service 20376f
typedef struct git_reference_iterator  git_reference_iterator;
Packit Service 20376f
Packit Service 20376f
/** Transactional interface to references */
Packit Service 20376f
typedef struct git_transaction git_transaction;
Packit Service 20376f
Packit Service 20376f
/** Annotated commits, the input to merge and rebase. */
Packit Service 20376f
typedef struct git_annotated_commit git_annotated_commit;
Packit Service 20376f
Packit Service 20376f
/** Merge result */
Packit Service 20376f
typedef struct git_merge_result git_merge_result;
Packit Service 20376f
Packit Service 20376f
/** Representation of a status collection */
Packit Service 20376f
typedef struct git_status_list git_status_list;
Packit Service 20376f
Packit Service 20376f
/** Representation of a rebase */
Packit Service 20376f
typedef struct git_rebase git_rebase;
Packit Service 20376f
Packit Service 20376f
/** Basic type of any Git reference. */
Packit Service 20376f
typedef enum {
Packit Service 20376f
	GIT_REF_INVALID = 0, /**< Invalid reference */
Packit Service 20376f
	GIT_REF_OID = 1, /**< A reference which points at an object id */
Packit Service 20376f
	GIT_REF_SYMBOLIC = 2, /**< A reference which points at another reference */
Packit Service 20376f
	GIT_REF_LISTALL = GIT_REF_OID|GIT_REF_SYMBOLIC,
Packit Service 20376f
} git_ref_t;
Packit Service 20376f
Packit Service 20376f
/** Basic type of any Git branch. */
Packit Service 20376f
typedef enum {
Packit Service 20376f
	GIT_BRANCH_LOCAL = 1,
Packit Service 20376f
	GIT_BRANCH_REMOTE = 2,
Packit Service 20376f
	GIT_BRANCH_ALL = GIT_BRANCH_LOCAL|GIT_BRANCH_REMOTE,
Packit Service 20376f
} git_branch_t;
Packit Service 20376f
Packit Service 20376f
/** Valid modes for index and tree entries. */
Packit Service 20376f
typedef enum {
Packit Service 20376f
	GIT_FILEMODE_UNREADABLE          = 0000000,
Packit Service 20376f
	GIT_FILEMODE_TREE                = 0040000,
Packit Service 20376f
	GIT_FILEMODE_BLOB                = 0100644,
Packit Service 20376f
	GIT_FILEMODE_BLOB_EXECUTABLE     = 0100755,
Packit Service 20376f
	GIT_FILEMODE_LINK                = 0120000,
Packit Service 20376f
	GIT_FILEMODE_COMMIT              = 0160000,
Packit Service 20376f
} git_filemode_t;
Packit Service 20376f
Packit Service 20376f
/*
Packit Service 20376f
 * A refspec specifies the mapping between remote and local reference
Packit Service 20376f
 * names when fetch or pushing.
Packit Service 20376f
 */
Packit Service 20376f
typedef struct git_refspec git_refspec;
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * Git's idea of a remote repository. A remote can be anonymous (in
Packit Service 20376f
 * which case it does not have backing configuration entires).
Packit Service 20376f
 */
Packit Service 20376f
typedef struct git_remote git_remote;
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * Interface which represents a transport to communicate with a
Packit Service 20376f
 * remote.
Packit Service 20376f
 */
Packit Service 20376f
typedef struct git_transport git_transport;
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * Preparation for a push operation. Can be used to configure what to
Packit Service 20376f
 * push and the level of parallelism of the packfile builder.
Packit Service 20376f
 */
Packit Service 20376f
typedef struct git_push git_push;
Packit Service 20376f
Packit Service 20376f
/* documentation in the definition */
Packit Service 20376f
typedef struct git_remote_head git_remote_head;
Packit Service 20376f
typedef struct git_remote_callbacks git_remote_callbacks;
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * This is passed as the first argument to the callback to allow the
Packit Service 20376f
 * user to see the progress.
Packit Service 20376f
 *
Packit Service 20376f
 * - total_objects: number of objects in the packfile being downloaded
Packit Service 20376f
 * - indexed_objects: received objects that have been hashed
Packit Service 20376f
 * - received_objects: objects which have been downloaded
Packit Service 20376f
 * - local_objects: locally-available objects that have been injected
Packit Service 20376f
 *    in order to fix a thin pack.
Packit Service 20376f
 * - received-bytes: size of the packfile received up to now
Packit Service 20376f
 */
Packit Service 20376f
typedef struct git_transfer_progress {
Packit Service 20376f
	unsigned int total_objects;
Packit Service 20376f
	unsigned int indexed_objects;
Packit Service 20376f
	unsigned int received_objects;
Packit Service 20376f
	unsigned int local_objects;
Packit Service 20376f
	unsigned int total_deltas;
Packit Service 20376f
	unsigned int indexed_deltas;
Packit Service 20376f
	size_t received_bytes;
Packit Service 20376f
} git_transfer_progress;
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * Type for progress callbacks during indexing.  Return a value less than zero
Packit Service 20376f
 * to cancel the transfer.
Packit Service 20376f
 *
Packit Service 20376f
 * @param stats Structure containing information about the state of the transfer
Packit Service 20376f
 * @param payload Payload provided by caller
Packit Service 20376f
 */
Packit Service 20376f
typedef int (*git_transfer_progress_cb)(const git_transfer_progress *stats, void *payload);
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * Type for messages delivered by the transport.  Return a negative value
Packit Service 20376f
 * to cancel the network operation.
Packit Service 20376f
 *
Packit Service 20376f
 * @param str The message from the transport
Packit Service 20376f
 * @param len The length of the message
Packit Service 20376f
 * @param payload Payload provided by the caller
Packit Service 20376f
 */
Packit Service 20376f
typedef int (*git_transport_message_cb)(const char *str, int len, void *payload);
Packit Service 20376f
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * Type of host certificate structure that is passed to the check callback
Packit Service 20376f
 */
Packit Service 20376f
typedef enum git_cert_t {
Packit Service 20376f
	/**
Packit Service 20376f
	 * No information about the certificate is available. This may
Packit Service 20376f
	 * happen when using curl.
Packit Service 20376f
	 */
Packit Service 20376f
	GIT_CERT_NONE,
Packit Service 20376f
        /**
Packit Service 20376f
         * The `data` argument to the callback will be a pointer to
Packit Service 20376f
         * the DER-encoded data.
Packit Service 20376f
         */
Packit Service 20376f
	GIT_CERT_X509,
Packit Service 20376f
        /**
Packit Service 20376f
         * The `data` argument to the callback will be a pointer to a
Packit Service 20376f
         * `git_cert_hostkey` structure.
Packit Service 20376f
         */
Packit Service 20376f
	GIT_CERT_HOSTKEY_LIBSSH2,
Packit Service 20376f
	/**
Packit Service 20376f
	 * The `data` argument to the callback will be a pointer to a
Packit Service 20376f
	 * `git_strarray` with `name:content` strings containing
Packit Service 20376f
	 * information about the certificate. This is used when using
Packit Service 20376f
	 * curl.
Packit Service 20376f
	 */
Packit Service 20376f
	GIT_CERT_STRARRAY,
Packit Service 20376f
} git_cert_t;
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * Parent type for `git_cert_hostkey` and `git_cert_x509`.
Packit Service 20376f
 */
Packit Service 20376f
typedef struct {
Packit Service 20376f
	/**
Packit Service 20376f
	 * Type of certificate. A `GIT_CERT_` value.
Packit Service 20376f
	 */
Packit Service 20376f
	git_cert_t cert_type;
Packit Service 20376f
} git_cert;
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * Callback for the user's custom certificate checks.
Packit Service 20376f
 *
Packit Service 20376f
 * @param cert The host certificate
Packit Service 20376f
 * @param valid Whether the libgit2 checks (OpenSSL or WinHTTP) think
Packit Service 20376f
 * this certificate is valid
Packit Service 20376f
 * @param host Hostname of the host libgit2 connected to
Packit Service 20376f
 * @param payload Payload provided by the caller
Packit Service 20376f
 */
Packit Service 20376f
typedef int (*git_transport_certificate_check_cb)(git_cert *cert, int valid, const char *host, void *payload);
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * Opaque structure representing a submodule.
Packit Service 20376f
 */
Packit Service 20376f
typedef struct git_submodule git_submodule;
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * Submodule update values
Packit Service 20376f
 *
Packit Service 20376f
 * These values represent settings for the `submodule.$name.update`
Packit Service 20376f
 * configuration value which says how to handle `git submodule update` for
Packit Service 20376f
 * this submodule.  The value is usually set in the ".gitmodules" file and
Packit Service 20376f
 * copied to ".git/config" when the submodule is initialized.
Packit Service 20376f
 *
Packit Service 20376f
 * You can override this setting on a per-submodule basis with
Packit Service 20376f
 * `git_submodule_set_update()` and write the changed value to disk using
Packit Service 20376f
 * `git_submodule_save()`.  If you have overwritten the value, you can
Packit Service 20376f
 * revert it by passing `GIT_SUBMODULE_UPDATE_RESET` to the set function.
Packit Service 20376f
 *
Packit Service 20376f
 * The values are:
Packit Service 20376f
 *
Packit Service 20376f
 * - GIT_SUBMODULE_UPDATE_CHECKOUT: the default; when a submodule is
Packit Service 20376f
 *   updated, checkout the new detached HEAD to the submodule directory.
Packit Service 20376f
 * - GIT_SUBMODULE_UPDATE_REBASE: update by rebasing the current checked
Packit Service 20376f
 *   out branch onto the commit from the superproject.
Packit Service 20376f
 * - GIT_SUBMODULE_UPDATE_MERGE: update by merging the commit in the
Packit Service 20376f
 *   superproject into the current checkout out branch of the submodule.
Packit Service 20376f
 * - GIT_SUBMODULE_UPDATE_NONE: do not update this submodule even when
Packit Service 20376f
 *   the commit in the superproject is updated.
Packit Service 20376f
 * - GIT_SUBMODULE_UPDATE_DEFAULT: not used except as static initializer
Packit Service 20376f
 *   when we don't want any particular update rule to be specified.
Packit Service 20376f
 */
Packit Service 20376f
typedef enum {
Packit Service 20376f
	GIT_SUBMODULE_UPDATE_CHECKOUT = 1,
Packit Service 20376f
	GIT_SUBMODULE_UPDATE_REBASE   = 2,
Packit Service 20376f
	GIT_SUBMODULE_UPDATE_MERGE    = 3,
Packit Service 20376f
	GIT_SUBMODULE_UPDATE_NONE     = 4,
Packit Service 20376f
Packit Service 20376f
	GIT_SUBMODULE_UPDATE_DEFAULT  = 0
Packit Service 20376f
} git_submodule_update_t;
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * Submodule ignore values
Packit Service 20376f
 *
Packit Service 20376f
 * These values represent settings for the `submodule.$name.ignore`
Packit Service 20376f
 * configuration value which says how deeply to look at the working
Packit Service 20376f
 * directory when getting submodule status.
Packit Service 20376f
 *
Packit Service 20376f
 * You can override this value in memory on a per-submodule basis with
Packit Service 20376f
 * `git_submodule_set_ignore()` and can write the changed value to disk
Packit Service 20376f
 * with `git_submodule_save()`.  If you have overwritten the value, you
Packit Service 20376f
 * can revert to the on disk value by using `GIT_SUBMODULE_IGNORE_RESET`.
Packit Service 20376f
 *
Packit Service 20376f
 * The values are:
Packit Service 20376f
 *
Packit Service 20376f
 * - GIT_SUBMODULE_IGNORE_UNSPECIFIED: use the submodule's configuration
Packit Service 20376f
 * - GIT_SUBMODULE_IGNORE_NONE: don't ignore any change - i.e. even an
Packit Service 20376f
 *   untracked file, will mark the submodule as dirty.  Ignored files are
Packit Service 20376f
 *   still ignored, of course.
Packit Service 20376f
 * - GIT_SUBMODULE_IGNORE_UNTRACKED: ignore untracked files; only changes
Packit Service 20376f
 *   to tracked files, or the index or the HEAD commit will matter.
Packit Service 20376f
 * - GIT_SUBMODULE_IGNORE_DIRTY: ignore changes in the working directory,
Packit Service 20376f
 *   only considering changes if the HEAD of submodule has moved from the
Packit Service 20376f
 *   value in the superproject.
Packit Service 20376f
 * - GIT_SUBMODULE_IGNORE_ALL: never check if the submodule is dirty
Packit Service 20376f
 * - GIT_SUBMODULE_IGNORE_DEFAULT: not used except as static initializer
Packit Service 20376f
 *   when we don't want any particular ignore rule to be specified.
Packit Service 20376f
 */
Packit Service 20376f
typedef enum {
Packit Service 20376f
	GIT_SUBMODULE_IGNORE_UNSPECIFIED  = -1, /**< use the submodule's configuration */
Packit Service 20376f
Packit Service 20376f
	GIT_SUBMODULE_IGNORE_NONE      = 1,  /**< any change or untracked == dirty */
Packit Service 20376f
	GIT_SUBMODULE_IGNORE_UNTRACKED = 2,  /**< dirty if tracked files change */
Packit Service 20376f
	GIT_SUBMODULE_IGNORE_DIRTY     = 3,  /**< only dirty if HEAD moved */
Packit Service 20376f
	GIT_SUBMODULE_IGNORE_ALL       = 4,  /**< never dirty */
Packit Service 20376f
} git_submodule_ignore_t;
Packit Service 20376f
Packit Service 20376f
/**
Packit Service 20376f
 * Options for submodule recurse.
Packit Service 20376f
 *
Packit Service 20376f
 * Represent the value of `submodule.$name.fetchRecurseSubmodules`
Packit Service 20376f
 *
Packit Service 20376f
 * * GIT_SUBMODULE_RECURSE_NO    - do no recurse into submodules
Packit Service 20376f
 * * GIT_SUBMODULE_RECURSE_YES   - recurse into submodules
Packit Service 20376f
 * * GIT_SUBMODULE_RECURSE_ONDEMAND - recurse into submodules only when
Packit Service 20376f
 *                                    commit not already in local clone
Packit Service 20376f
 */
Packit Service 20376f
typedef enum {
Packit Service 20376f
	GIT_SUBMODULE_RECURSE_NO = 0,
Packit Service 20376f
	GIT_SUBMODULE_RECURSE_YES = 1,
Packit Service 20376f
	GIT_SUBMODULE_RECURSE_ONDEMAND = 2,
Packit Service 20376f
} git_submodule_recurse_t;
Packit Service 20376f
Packit Service 20376f
/** A type to write in a streaming fashion, for example, for filters. */
Packit Service 20376f
typedef struct git_writestream git_writestream;
Packit Service 20376f
Packit Service 20376f
struct git_writestream {
Packit Service 20376f
	int (*write)(git_writestream *stream, const char *buffer, size_t len);
Packit Service 20376f
	int (*close)(git_writestream *stream);
Packit Service 20376f
	void (*free)(git_writestream *stream);
Packit Service 20376f
};
Packit Service 20376f
Packit Service 20376f
/** @} */
Packit Service 20376f
GIT_END_DECL
Packit Service 20376f
Packit Service 20376f
#endif