*.[ch]: remove extern from function declarations using spatch

There has been a push to remove extern from function declarations.
Remove some instances of "extern" for function declarations which are
caught by Coccinelle. Note that Coccinelle has some difficulty with
processing functions with `__attribute__` or varargs so some `extern`
declarations are left behind to be dealt with in a future patch.

This was the Coccinelle patch used:

	@@
	type T;
	identifier f;
	@@
	- extern
	  T f(...);

and it was run with:

	$ git ls-files \*.{c,h} |
		grep -v ^compat/ |
		xargs spatch --sp-file contrib/coccinelle/noextern.cocci --in-place

Files under `compat/` are intentionally excluded as some are directly
copied from external sources and we should avoid churning them as much
as possible.

Signed-off-by: Denton Liu <liu.denton@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Denton Liu 2019-04-29 04:28:14 -04:00 committed by Junio C Hamano
parent ffac537e6c
commit 554544276a
70 changed files with 885 additions and 885 deletions

View File

@ -31,7 +31,7 @@ int git_default_advice_config(const char *var, const char *value);
__attribute__((format (printf, 1, 2))) __attribute__((format (printf, 1, 2)))
void advise(const char *advice, ...); void advise(const char *advice, ...);
int error_resolve_conflict(const char *me); int error_resolve_conflict(const char *me);
extern void NORETURN die_resolve_conflict(const char *me); void NORETURN die_resolve_conflict(const char *me);
void NORETURN die_conclude_merge(void); void NORETURN die_conclude_merge(void);
void detach_advice(const char *new_name); void detach_advice(const char *new_name);

View File

@ -23,7 +23,7 @@ struct archiver_args {
/* main api */ /* main api */
extern int write_archive(int argc, const char **argv, const char *prefix, int write_archive(int argc, const char **argv, const char *prefix,
struct repository *repo, struct repository *repo,
const char *name_hint, int remote); const char *name_hint, int remote);
@ -39,19 +39,19 @@ struct archiver {
unsigned flags; unsigned flags;
void *data; void *data;
}; };
extern void register_archiver(struct archiver *); void register_archiver(struct archiver *);
extern void init_tar_archiver(void); void init_tar_archiver(void);
extern void init_zip_archiver(void); void init_zip_archiver(void);
extern void init_archivers(void); void init_archivers(void);
typedef int (*write_archive_entry_fn_t)(struct archiver_args *args, typedef int (*write_archive_entry_fn_t)(struct archiver_args *args,
const struct object_id *oid, const struct object_id *oid,
const char *path, size_t pathlen, const char *path, size_t pathlen,
unsigned int mode); unsigned int mode);
extern int write_archive_entries(struct archiver_args *args, write_archive_entry_fn_t write_entry); int write_archive_entries(struct archiver_args *args, write_archive_entry_fn_t write_entry);
extern void *object_file_to_archive(const struct archiver_args *args, void *object_file_to_archive(const struct archiver_args *args,
const char *path, const struct object_id *oid, const char *path, const struct object_id *oid,
unsigned int mode, enum object_type *type, unsigned int mode, enum object_type *type,
unsigned long *sizep); unsigned long *sizep);

View File

@ -11,10 +11,10 @@ struct repository;
* Otherwise, it will be either all non-SAMETREE commits or the single * Otherwise, it will be either all non-SAMETREE commits or the single
* best commit, as chosen by `find_all`. * best commit, as chosen by `find_all`.
*/ */
extern void find_bisection(struct commit_list **list, int *reaches, int *all, void find_bisection(struct commit_list **list, int *reaches, int *all,
int find_all); int find_all);
extern struct commit_list *filter_skipped(struct commit_list *list, struct commit_list *filter_skipped(struct commit_list *list,
struct commit_list **tried, struct commit_list **tried,
int show_all, int show_all,
int *count, int *count,
@ -31,14 +31,14 @@ struct rev_list_info {
const char *header_prefix; const char *header_prefix;
}; };
extern int bisect_next_all(struct repository *r, int bisect_next_all(struct repository *r,
const char *prefix, const char *prefix,
int no_checkout); int no_checkout);
extern int estimate_bisect_steps(int all); int estimate_bisect_steps(int all);
extern void read_bisect_terms(const char **bad, const char **good); void read_bisect_terms(const char **bad, const char **good);
extern int bisect_clean_state(void); int bisect_clean_state(void);
#endif #endif

View File

@ -177,6 +177,6 @@ struct blame_entry *blame_entry_prepend(struct blame_entry *head,
long start, long end, long start, long end,
struct blame_origin *o); struct blame_origin *o);
extern struct blame_origin *get_blame_suspects(struct commit *commit); struct blame_origin *get_blame_suspects(struct commit *commit);
#endif /* BLAME_H */ #endif /* BLAME_H */

View File

@ -50,7 +50,7 @@ void create_branch(struct repository *r,
* Return 1 if the named branch already exists; return 0 otherwise. * Return 1 if the named branch already exists; return 0 otherwise.
* Fill ref with the full refname for the branch. * Fill ref with the full refname for the branch.
*/ */
extern int validate_branchname(const char *name, struct strbuf *ref); int validate_branchname(const char *name, struct strbuf *ref);
/* /*
* Check if a branch 'name' can be created as a new branch; die otherwise. * Check if a branch 'name' can be created as a new branch; die otherwise.
@ -58,7 +58,7 @@ extern int validate_branchname(const char *name, struct strbuf *ref);
* Return 1 if the named branch already exists; return 0 otherwise. * Return 1 if the named branch already exists; return 0 otherwise.
* Fill ref with the full refname for the branch. * Fill ref with the full refname for the branch.
*/ */
extern int validate_new_branchname(const char *name, struct strbuf *ref, int force); int validate_new_branchname(const char *name, struct strbuf *ref, int force);
/* /*
* Remove information about the state of working on the current * Remove information about the state of working on the current
@ -72,26 +72,26 @@ void remove_branch_state(struct repository *r);
* Returns 0 on success. * Returns 0 on success.
*/ */
#define BRANCH_CONFIG_VERBOSE 01 #define BRANCH_CONFIG_VERBOSE 01
extern int install_branch_config(int flag, const char *local, const char *origin, const char *remote); int install_branch_config(int flag, const char *local, const char *origin, const char *remote);
/* /*
* Read branch description * Read branch description
*/ */
extern int read_branch_desc(struct strbuf *, const char *branch_name); int read_branch_desc(struct strbuf *, const char *branch_name);
/* /*
* Check if a branch is checked out in the main worktree or any linked * Check if a branch is checked out in the main worktree or any linked
* worktree and die (with a message describing its checkout location) if * worktree and die (with a message describing its checkout location) if
* it is. * it is.
*/ */
extern void die_if_checked_out(const char *branch, int ignore_current_worktree); void die_if_checked_out(const char *branch, int ignore_current_worktree);
/* /*
* Update all per-worktree HEADs pointing at the old ref to point the new ref. * Update all per-worktree HEADs pointing at the old ref to point the new ref.
* This will be used when renaming a branch. Returns 0 if successful, non-zero * This will be used when renaming a branch. Returns 0 if successful, non-zero
* otherwise. * otherwise.
*/ */
extern int replace_each_worktree_head_symref(const char *oldref, const char *newref, int replace_each_worktree_head_symref(const char *oldref, const char *newref,
const char *logmsg); const char *logmsg);
#endif #endif

252
builtin.h
View File

@ -102,7 +102,7 @@ extern const char git_more_info_string[];
#define PRUNE_PACKED_DRY_RUN 01 #define PRUNE_PACKED_DRY_RUN 01
#define PRUNE_PACKED_VERBOSE 02 #define PRUNE_PACKED_VERBOSE 02
extern void prune_packed_objects(int); void prune_packed_objects(int);
struct fmt_merge_msg_opts { struct fmt_merge_msg_opts {
unsigned add_title:1, unsigned add_title:1,
@ -110,7 +110,7 @@ struct fmt_merge_msg_opts {
int shortlog_len; int shortlog_len;
}; };
extern int fmt_merge_msg(struct strbuf *in, struct strbuf *out, int fmt_merge_msg(struct strbuf *in, struct strbuf *out,
struct fmt_merge_msg_opts *); struct fmt_merge_msg_opts *);
/** /**
@ -123,131 +123,131 @@ extern int fmt_merge_msg(struct strbuf *in, struct strbuf *out,
* You should most likely use a default of 0 or 1. "Punt" (-1) could be useful * You should most likely use a default of 0 or 1. "Punt" (-1) could be useful
* to be able to fall back to some historical compatibility name. * to be able to fall back to some historical compatibility name.
*/ */
extern void setup_auto_pager(const char *cmd, int def); void setup_auto_pager(const char *cmd, int def);
extern int is_builtin(const char *s); int is_builtin(const char *s);
extern int cmd_add(int argc, const char **argv, const char *prefix); int cmd_add(int argc, const char **argv, const char *prefix);
extern int cmd_am(int argc, const char **argv, const char *prefix); int cmd_am(int argc, const char **argv, const char *prefix);
extern int cmd_annotate(int argc, const char **argv, const char *prefix); int cmd_annotate(int argc, const char **argv, const char *prefix);
extern int cmd_apply(int argc, const char **argv, const char *prefix); int cmd_apply(int argc, const char **argv, const char *prefix);
extern int cmd_archive(int argc, const char **argv, const char *prefix); int cmd_archive(int argc, const char **argv, const char *prefix);
extern int cmd_bisect__helper(int argc, const char **argv, const char *prefix); int cmd_bisect__helper(int argc, const char **argv, const char *prefix);
extern int cmd_blame(int argc, const char **argv, const char *prefix); int cmd_blame(int argc, const char **argv, const char *prefix);
extern int cmd_branch(int argc, const char **argv, const char *prefix); int cmd_branch(int argc, const char **argv, const char *prefix);
extern int cmd_bundle(int argc, const char **argv, const char *prefix); int cmd_bundle(int argc, const char **argv, const char *prefix);
extern int cmd_cat_file(int argc, const char **argv, const char *prefix); int cmd_cat_file(int argc, const char **argv, const char *prefix);
extern int cmd_checkout(int argc, const char **argv, const char *prefix); int cmd_checkout(int argc, const char **argv, const char *prefix);
extern int cmd_checkout_index(int argc, const char **argv, const char *prefix); int cmd_checkout_index(int argc, const char **argv, const char *prefix);
extern int cmd_check_attr(int argc, const char **argv, const char *prefix); int cmd_check_attr(int argc, const char **argv, const char *prefix);
extern int cmd_check_ignore(int argc, const char **argv, const char *prefix); int cmd_check_ignore(int argc, const char **argv, const char *prefix);
extern int cmd_check_mailmap(int argc, const char **argv, const char *prefix); int cmd_check_mailmap(int argc, const char **argv, const char *prefix);
extern int cmd_check_ref_format(int argc, const char **argv, const char *prefix); int cmd_check_ref_format(int argc, const char **argv, const char *prefix);
extern int cmd_cherry(int argc, const char **argv, const char *prefix); int cmd_cherry(int argc, const char **argv, const char *prefix);
extern int cmd_cherry_pick(int argc, const char **argv, const char *prefix); int cmd_cherry_pick(int argc, const char **argv, const char *prefix);
extern int cmd_clone(int argc, const char **argv, const char *prefix); int cmd_clone(int argc, const char **argv, const char *prefix);
extern int cmd_clean(int argc, const char **argv, const char *prefix); int cmd_clean(int argc, const char **argv, const char *prefix);
extern int cmd_column(int argc, const char **argv, const char *prefix); int cmd_column(int argc, const char **argv, const char *prefix);
extern int cmd_commit(int argc, const char **argv, const char *prefix); int cmd_commit(int argc, const char **argv, const char *prefix);
extern int cmd_commit_graph(int argc, const char **argv, const char *prefix); int cmd_commit_graph(int argc, const char **argv, const char *prefix);
extern int cmd_commit_tree(int argc, const char **argv, const char *prefix); int cmd_commit_tree(int argc, const char **argv, const char *prefix);
extern int cmd_config(int argc, const char **argv, const char *prefix); int cmd_config(int argc, const char **argv, const char *prefix);
extern int cmd_count_objects(int argc, const char **argv, const char *prefix); int cmd_count_objects(int argc, const char **argv, const char *prefix);
extern int cmd_credential(int argc, const char **argv, const char *prefix); int cmd_credential(int argc, const char **argv, const char *prefix);
extern int cmd_describe(int argc, const char **argv, const char *prefix); int cmd_describe(int argc, const char **argv, const char *prefix);
extern int cmd_diff_files(int argc, const char **argv, const char *prefix); int cmd_diff_files(int argc, const char **argv, const char *prefix);
extern int cmd_diff_index(int argc, const char **argv, const char *prefix); int cmd_diff_index(int argc, const char **argv, const char *prefix);
extern int cmd_diff(int argc, const char **argv, const char *prefix); int cmd_diff(int argc, const char **argv, const char *prefix);
extern int cmd_diff_tree(int argc, const char **argv, const char *prefix); int cmd_diff_tree(int argc, const char **argv, const char *prefix);
extern int cmd_difftool(int argc, const char **argv, const char *prefix); int cmd_difftool(int argc, const char **argv, const char *prefix);
extern int cmd_fast_export(int argc, const char **argv, const char *prefix); int cmd_fast_export(int argc, const char **argv, const char *prefix);
extern int cmd_fetch(int argc, const char **argv, const char *prefix); int cmd_fetch(int argc, const char **argv, const char *prefix);
extern int cmd_fetch_pack(int argc, const char **argv, const char *prefix); int cmd_fetch_pack(int argc, const char **argv, const char *prefix);
extern int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix); int cmd_fmt_merge_msg(int argc, const char **argv, const char *prefix);
extern int cmd_for_each_ref(int argc, const char **argv, const char *prefix); int cmd_for_each_ref(int argc, const char **argv, const char *prefix);
extern int cmd_format_patch(int argc, const char **argv, const char *prefix); int cmd_format_patch(int argc, const char **argv, const char *prefix);
extern int cmd_fsck(int argc, const char **argv, const char *prefix); int cmd_fsck(int argc, const char **argv, const char *prefix);
extern int cmd_gc(int argc, const char **argv, const char *prefix); int cmd_gc(int argc, const char **argv, const char *prefix);
extern int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix); int cmd_get_tar_commit_id(int argc, const char **argv, const char *prefix);
extern int cmd_grep(int argc, const char **argv, const char *prefix); int cmd_grep(int argc, const char **argv, const char *prefix);
extern int cmd_hash_object(int argc, const char **argv, const char *prefix); int cmd_hash_object(int argc, const char **argv, const char *prefix);
extern int cmd_help(int argc, const char **argv, const char *prefix); int cmd_help(int argc, const char **argv, const char *prefix);
extern int cmd_index_pack(int argc, const char **argv, const char *prefix); int cmd_index_pack(int argc, const char **argv, const char *prefix);
extern int cmd_init_db(int argc, const char **argv, const char *prefix); int cmd_init_db(int argc, const char **argv, const char *prefix);
extern int cmd_interpret_trailers(int argc, const char **argv, const char *prefix); int cmd_interpret_trailers(int argc, const char **argv, const char *prefix);
extern int cmd_log(int argc, const char **argv, const char *prefix); int cmd_log(int argc, const char **argv, const char *prefix);
extern int cmd_log_reflog(int argc, const char **argv, const char *prefix); int cmd_log_reflog(int argc, const char **argv, const char *prefix);
extern int cmd_ls_files(int argc, const char **argv, const char *prefix); int cmd_ls_files(int argc, const char **argv, const char *prefix);
extern int cmd_ls_tree(int argc, const char **argv, const char *prefix); int cmd_ls_tree(int argc, const char **argv, const char *prefix);
extern int cmd_ls_remote(int argc, const char **argv, const char *prefix); int cmd_ls_remote(int argc, const char **argv, const char *prefix);
extern int cmd_mailinfo(int argc, const char **argv, const char *prefix); int cmd_mailinfo(int argc, const char **argv, const char *prefix);
extern int cmd_mailsplit(int argc, const char **argv, const char *prefix); int cmd_mailsplit(int argc, const char **argv, const char *prefix);
extern int cmd_merge(int argc, const char **argv, const char *prefix); int cmd_merge(int argc, const char **argv, const char *prefix);
extern int cmd_merge_base(int argc, const char **argv, const char *prefix); int cmd_merge_base(int argc, const char **argv, const char *prefix);
extern int cmd_merge_index(int argc, const char **argv, const char *prefix); int cmd_merge_index(int argc, const char **argv, const char *prefix);
extern int cmd_merge_ours(int argc, const char **argv, const char *prefix); int cmd_merge_ours(int argc, const char **argv, const char *prefix);
extern int cmd_merge_file(int argc, const char **argv, const char *prefix); int cmd_merge_file(int argc, const char **argv, const char *prefix);
extern int cmd_merge_recursive(int argc, const char **argv, const char *prefix); int cmd_merge_recursive(int argc, const char **argv, const char *prefix);
extern int cmd_merge_tree(int argc, const char **argv, const char *prefix); int cmd_merge_tree(int argc, const char **argv, const char *prefix);
extern int cmd_mktag(int argc, const char **argv, const char *prefix); int cmd_mktag(int argc, const char **argv, const char *prefix);
extern int cmd_mktree(int argc, const char **argv, const char *prefix); int cmd_mktree(int argc, const char **argv, const char *prefix);
extern int cmd_multi_pack_index(int argc, const char **argv, const char *prefix); int cmd_multi_pack_index(int argc, const char **argv, const char *prefix);
extern int cmd_mv(int argc, const char **argv, const char *prefix); int cmd_mv(int argc, const char **argv, const char *prefix);
extern int cmd_name_rev(int argc, const char **argv, const char *prefix); int cmd_name_rev(int argc, const char **argv, const char *prefix);
extern int cmd_notes(int argc, const char **argv, const char *prefix); int cmd_notes(int argc, const char **argv, const char *prefix);
extern int cmd_pack_objects(int argc, const char **argv, const char *prefix); int cmd_pack_objects(int argc, const char **argv, const char *prefix);
extern int cmd_pack_redundant(int argc, const char **argv, const char *prefix); int cmd_pack_redundant(int argc, const char **argv, const char *prefix);
extern int cmd_patch_id(int argc, const char **argv, const char *prefix); int cmd_patch_id(int argc, const char **argv, const char *prefix);
extern int cmd_prune(int argc, const char **argv, const char *prefix); int cmd_prune(int argc, const char **argv, const char *prefix);
extern int cmd_prune_packed(int argc, const char **argv, const char *prefix); int cmd_prune_packed(int argc, const char **argv, const char *prefix);
extern int cmd_pull(int argc, const char **argv, const char *prefix); int cmd_pull(int argc, const char **argv, const char *prefix);
extern int cmd_push(int argc, const char **argv, const char *prefix); int cmd_push(int argc, const char **argv, const char *prefix);
extern int cmd_range_diff(int argc, const char **argv, const char *prefix); int cmd_range_diff(int argc, const char **argv, const char *prefix);
extern int cmd_read_tree(int argc, const char **argv, const char *prefix); int cmd_read_tree(int argc, const char **argv, const char *prefix);
extern int cmd_rebase(int argc, const char **argv, const char *prefix); int cmd_rebase(int argc, const char **argv, const char *prefix);
extern int cmd_rebase__interactive(int argc, const char **argv, const char *prefix); int cmd_rebase__interactive(int argc, const char **argv, const char *prefix);
extern int cmd_receive_pack(int argc, const char **argv, const char *prefix); int cmd_receive_pack(int argc, const char **argv, const char *prefix);
extern int cmd_reflog(int argc, const char **argv, const char *prefix); int cmd_reflog(int argc, const char **argv, const char *prefix);
extern int cmd_remote(int argc, const char **argv, const char *prefix); int cmd_remote(int argc, const char **argv, const char *prefix);
extern int cmd_remote_ext(int argc, const char **argv, const char *prefix); int cmd_remote_ext(int argc, const char **argv, const char *prefix);
extern int cmd_remote_fd(int argc, const char **argv, const char *prefix); int cmd_remote_fd(int argc, const char **argv, const char *prefix);
extern int cmd_repack(int argc, const char **argv, const char *prefix); int cmd_repack(int argc, const char **argv, const char *prefix);
extern int cmd_rerere(int argc, const char **argv, const char *prefix); int cmd_rerere(int argc, const char **argv, const char *prefix);
extern int cmd_reset(int argc, const char **argv, const char *prefix); int cmd_reset(int argc, const char **argv, const char *prefix);
extern int cmd_rev_list(int argc, const char **argv, const char *prefix); int cmd_rev_list(int argc, const char **argv, const char *prefix);
extern int cmd_rev_parse(int argc, const char **argv, const char *prefix); int cmd_rev_parse(int argc, const char **argv, const char *prefix);
extern int cmd_revert(int argc, const char **argv, const char *prefix); int cmd_revert(int argc, const char **argv, const char *prefix);
extern int cmd_rm(int argc, const char **argv, const char *prefix); int cmd_rm(int argc, const char **argv, const char *prefix);
extern int cmd_send_pack(int argc, const char **argv, const char *prefix); int cmd_send_pack(int argc, const char **argv, const char *prefix);
extern int cmd_serve(int argc, const char **argv, const char *prefix); int cmd_serve(int argc, const char **argv, const char *prefix);
extern int cmd_shortlog(int argc, const char **argv, const char *prefix); int cmd_shortlog(int argc, const char **argv, const char *prefix);
extern int cmd_show(int argc, const char **argv, const char *prefix); int cmd_show(int argc, const char **argv, const char *prefix);
extern int cmd_show_branch(int argc, const char **argv, const char *prefix); int cmd_show_branch(int argc, const char **argv, const char *prefix);
extern int cmd_show_index(int argc, const char **argv, const char *prefix); int cmd_show_index(int argc, const char **argv, const char *prefix);
extern int cmd_status(int argc, const char **argv, const char *prefix); int cmd_status(int argc, const char **argv, const char *prefix);
extern int cmd_stripspace(int argc, const char **argv, const char *prefix); int cmd_stripspace(int argc, const char **argv, const char *prefix);
extern int cmd_submodule__helper(int argc, const char **argv, const char *prefix); int cmd_submodule__helper(int argc, const char **argv, const char *prefix);
extern int cmd_symbolic_ref(int argc, const char **argv, const char *prefix); int cmd_symbolic_ref(int argc, const char **argv, const char *prefix);
extern int cmd_tag(int argc, const char **argv, const char *prefix); int cmd_tag(int argc, const char **argv, const char *prefix);
extern int cmd_tar_tree(int argc, const char **argv, const char *prefix); int cmd_tar_tree(int argc, const char **argv, const char *prefix);
extern int cmd_unpack_file(int argc, const char **argv, const char *prefix); int cmd_unpack_file(int argc, const char **argv, const char *prefix);
extern int cmd_unpack_objects(int argc, const char **argv, const char *prefix); int cmd_unpack_objects(int argc, const char **argv, const char *prefix);
extern int cmd_update_index(int argc, const char **argv, const char *prefix); int cmd_update_index(int argc, const char **argv, const char *prefix);
extern int cmd_update_ref(int argc, const char **argv, const char *prefix); int cmd_update_ref(int argc, const char **argv, const char *prefix);
extern int cmd_update_server_info(int argc, const char **argv, const char *prefix); int cmd_update_server_info(int argc, const char **argv, const char *prefix);
extern int cmd_upload_archive(int argc, const char **argv, const char *prefix); int cmd_upload_archive(int argc, const char **argv, const char *prefix);
extern int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix); int cmd_upload_archive_writer(int argc, const char **argv, const char *prefix);
extern int cmd_upload_pack(int argc, const char **argv, const char *prefix); int cmd_upload_pack(int argc, const char **argv, const char *prefix);
extern int cmd_var(int argc, const char **argv, const char *prefix); int cmd_var(int argc, const char **argv, const char *prefix);
extern int cmd_verify_commit(int argc, const char **argv, const char *prefix); int cmd_verify_commit(int argc, const char **argv, const char *prefix);
extern int cmd_verify_tag(int argc, const char **argv, const char *prefix); int cmd_verify_tag(int argc, const char **argv, const char *prefix);
extern int cmd_version(int argc, const char **argv, const char *prefix); int cmd_version(int argc, const char **argv, const char *prefix);
extern int cmd_whatchanged(int argc, const char **argv, const char *prefix); int cmd_whatchanged(int argc, const char **argv, const char *prefix);
extern int cmd_worktree(int argc, const char **argv, const char *prefix); int cmd_worktree(int argc, const char **argv, const char *prefix);
extern int cmd_write_tree(int argc, const char **argv, const char *prefix); int cmd_write_tree(int argc, const char **argv, const char *prefix);
extern int cmd_verify_pack(int argc, const char **argv, const char *prefix); int cmd_verify_pack(int argc, const char **argv, const char *prefix);
extern int cmd_show_ref(int argc, const char **argv, const char *prefix); int cmd_show_ref(int argc, const char **argv, const char *prefix);
extern int cmd_pack_refs(int argc, const char **argv, const char *prefix); int cmd_pack_refs(int argc, const char **argv, const char *prefix);
extern int cmd_replace(int argc, const char **argv, const char *prefix); int cmd_replace(int argc, const char **argv, const char *prefix);
#endif #endif

View File

@ -6,11 +6,11 @@
#include "cache.h" #include "cache.h"
extern int index_bulk_checkin(struct object_id *oid, int index_bulk_checkin(struct object_id *oid,
int fd, size_t size, enum object_type type, int fd, size_t size, enum object_type type,
const char *path, unsigned flags); const char *path, unsigned flags);
extern void plug_bulk_checkin(void); void plug_bulk_checkin(void);
extern void unplug_bulk_checkin(void); void unplug_bulk_checkin(void);
#endif #endif

340
cache.h
View File

@ -350,10 +350,10 @@ struct index_state {
}; };
/* Name hashing */ /* Name hashing */
extern int test_lazy_init_name_hash(struct index_state *istate, int try_threaded); int test_lazy_init_name_hash(struct index_state *istate, int try_threaded);
extern void add_name_hash(struct index_state *istate, struct cache_entry *ce); void add_name_hash(struct index_state *istate, struct cache_entry *ce);
extern void remove_name_hash(struct index_state *istate, struct cache_entry *ce); void remove_name_hash(struct index_state *istate, struct cache_entry *ce);
extern void free_name_hash(struct index_state *istate); void free_name_hash(struct index_state *istate);
/* Cache entry creation and cleanup */ /* Cache entry creation and cleanup */
@ -543,7 +543,7 @@ static inline enum object_type object_type(unsigned int mode)
*/ */
extern const char * const local_repo_env[]; extern const char * const local_repo_env[];
extern void setup_git_env(const char *git_dir); void setup_git_env(const char *git_dir);
/* /*
* Returns true iff we have a configured git repository (either via * Returns true iff we have a configured git repository (either via
@ -552,29 +552,29 @@ extern void setup_git_env(const char *git_dir);
int have_git_dir(void); int have_git_dir(void);
extern int is_bare_repository_cfg; extern int is_bare_repository_cfg;
extern int is_bare_repository(void); int is_bare_repository(void);
extern int is_inside_git_dir(void); int is_inside_git_dir(void);
extern char *git_work_tree_cfg; extern char *git_work_tree_cfg;
extern int is_inside_work_tree(void); int is_inside_work_tree(void);
extern const char *get_git_dir(void); const char *get_git_dir(void);
extern const char *get_git_common_dir(void); const char *get_git_common_dir(void);
extern char *get_object_directory(void); char *get_object_directory(void);
extern char *get_index_file(void); char *get_index_file(void);
extern char *get_graft_file(struct repository *r); char *get_graft_file(struct repository *r);
extern void set_git_dir(const char *path); void set_git_dir(const char *path);
extern int get_common_dir_noenv(struct strbuf *sb, const char *gitdir); int get_common_dir_noenv(struct strbuf *sb, const char *gitdir);
extern int get_common_dir(struct strbuf *sb, const char *gitdir); int get_common_dir(struct strbuf *sb, const char *gitdir);
extern const char *get_git_namespace(void); const char *get_git_namespace(void);
extern const char *strip_namespace(const char *namespaced_ref); const char *strip_namespace(const char *namespaced_ref);
extern const char *get_super_prefix(void); const char *get_super_prefix(void);
extern const char *get_git_work_tree(void); const char *get_git_work_tree(void);
/* /*
* Return true if the given path is a git directory; note that this _just_ * Return true if the given path is a git directory; note that this _just_
* looks at the directory itself. If you want to know whether "foo/.git" * looks at the directory itself. If you want to know whether "foo/.git"
* is a repository, you must feed that path, not just "foo". * is a repository, you must feed that path, not just "foo".
*/ */
extern int is_git_directory(const char *path); int is_git_directory(const char *path);
/* /*
* Return 1 if the given path is the root of a git repository or * Return 1 if the given path is the root of a git repository or
@ -586,7 +586,7 @@ extern int is_git_directory(const char *path);
* as we usually consider sub-repos precious, and would prefer to err on the * as we usually consider sub-repos precious, and would prefer to err on the
* side of not disrupting or deleting them. * side of not disrupting or deleting them.
*/ */
extern int is_nonbare_repository_dir(struct strbuf *path); int is_nonbare_repository_dir(struct strbuf *path);
#define READ_GITFILE_ERR_STAT_FAILED 1 #define READ_GITFILE_ERR_STAT_FAILED 1
#define READ_GITFILE_ERR_NOT_A_FILE 2 #define READ_GITFILE_ERR_NOT_A_FILE 2
@ -596,17 +596,17 @@ extern int is_nonbare_repository_dir(struct strbuf *path);
#define READ_GITFILE_ERR_NO_PATH 6 #define READ_GITFILE_ERR_NO_PATH 6
#define READ_GITFILE_ERR_NOT_A_REPO 7 #define READ_GITFILE_ERR_NOT_A_REPO 7
#define READ_GITFILE_ERR_TOO_LARGE 8 #define READ_GITFILE_ERR_TOO_LARGE 8
extern void read_gitfile_error_die(int error_code, const char *path, const char *dir); void read_gitfile_error_die(int error_code, const char *path, const char *dir);
extern const char *read_gitfile_gently(const char *path, int *return_error_code); const char *read_gitfile_gently(const char *path, int *return_error_code);
#define read_gitfile(path) read_gitfile_gently((path), NULL) #define read_gitfile(path) read_gitfile_gently((path), NULL)
extern const char *resolve_gitdir_gently(const char *suspect, int *return_error_code); const char *resolve_gitdir_gently(const char *suspect, int *return_error_code);
#define resolve_gitdir(path) resolve_gitdir_gently((path), NULL) #define resolve_gitdir(path) resolve_gitdir_gently((path), NULL)
extern void set_git_work_tree(const char *tree); void set_git_work_tree(const char *tree);
#define ALTERNATE_DB_ENVIRONMENT "GIT_ALTERNATE_OBJECT_DIRECTORIES" #define ALTERNATE_DB_ENVIRONMENT "GIT_ALTERNATE_OBJECT_DIRECTORIES"
extern void setup_work_tree(void); void setup_work_tree(void);
/* /*
* Find the commondir and gitdir of the repository that contains the current * Find the commondir and gitdir of the repository that contains the current
* working directory, without changing the working directory or other global * working directory, without changing the working directory or other global
@ -615,12 +615,12 @@ extern void setup_work_tree(void);
* both have the same result appended to the buffer. The return value is * both have the same result appended to the buffer. The return value is
* either 0 upon success and non-zero if no repository was found. * either 0 upon success and non-zero if no repository was found.
*/ */
extern int discover_git_directory(struct strbuf *commondir, int discover_git_directory(struct strbuf *commondir,
struct strbuf *gitdir); struct strbuf *gitdir);
extern const char *setup_git_directory_gently(int *); const char *setup_git_directory_gently(int *);
extern const char *setup_git_directory(void); const char *setup_git_directory(void);
extern char *prefix_path(const char *prefix, int len, const char *path); char *prefix_path(const char *prefix, int len, const char *path);
extern char *prefix_path_gently(const char *prefix, int len, int *remaining, const char *path); char *prefix_path_gently(const char *prefix, int len, int *remaining, const char *path);
/* /*
* Concatenate "prefix" (if len is non-zero) and "path", with no * Concatenate "prefix" (if len is non-zero) and "path", with no
@ -632,23 +632,23 @@ extern char *prefix_path_gently(const char *prefix, int len, int *remaining, con
* The return value is always a newly allocated string (even if the * The return value is always a newly allocated string (even if the
* prefix was empty). * prefix was empty).
*/ */
extern char *prefix_filename(const char *prefix, const char *path); char *prefix_filename(const char *prefix, const char *path);
extern int check_filename(const char *prefix, const char *name); int check_filename(const char *prefix, const char *name);
extern void verify_filename(const char *prefix, void verify_filename(const char *prefix,
const char *name, const char *name,
int diagnose_misspelt_rev); int diagnose_misspelt_rev);
extern void verify_non_filename(const char *prefix, const char *name); void verify_non_filename(const char *prefix, const char *name);
extern int path_inside_repo(const char *prefix, const char *path); int path_inside_repo(const char *prefix, const char *path);
#define INIT_DB_QUIET 0x0001 #define INIT_DB_QUIET 0x0001
#define INIT_DB_EXIST_OK 0x0002 #define INIT_DB_EXIST_OK 0x0002
extern int init_db(const char *git_dir, const char *real_git_dir, int init_db(const char *git_dir, const char *real_git_dir,
const char *template_dir, unsigned int flags); const char *template_dir, unsigned int flags);
extern void sanitize_stdfds(void); void sanitize_stdfds(void);
extern int daemonize(void); int daemonize(void);
#define alloc_nr(x) (((x)+16)*3/2) #define alloc_nr(x) (((x)+16)*3/2)
@ -672,14 +672,14 @@ extern int daemonize(void);
/* Initialize and use the cache information */ /* Initialize and use the cache information */
struct lock_file; struct lock_file;
extern void preload_index(struct index_state *index, void preload_index(struct index_state *index,
const struct pathspec *pathspec, const struct pathspec *pathspec,
unsigned int refresh_flags); unsigned int refresh_flags);
extern int do_read_index(struct index_state *istate, const char *path, int do_read_index(struct index_state *istate, const char *path,
int must_exist); /* for testting only! */ int must_exist); /* for testting only! */
extern int read_index_from(struct index_state *, const char *path, int read_index_from(struct index_state *, const char *path,
const char *gitdir); const char *gitdir);
extern int is_index_unborn(struct index_state *); int is_index_unborn(struct index_state *);
/* For use with `write_locked_index()`. */ /* For use with `write_locked_index()`. */
#define COMMIT_LOCK (1 << 0) #define COMMIT_LOCK (1 << 0)
@ -704,11 +704,11 @@ extern int is_index_unborn(struct index_state *);
* If `SKIP_IF_UNCHANGED` is given and the index is unchanged, nothing * If `SKIP_IF_UNCHANGED` is given and the index is unchanged, nothing
* is written (and the lock is rolled back if `COMMIT_LOCK` is given). * is written (and the lock is rolled back if `COMMIT_LOCK` is given).
*/ */
extern int write_locked_index(struct index_state *, struct lock_file *lock, unsigned flags); int write_locked_index(struct index_state *, struct lock_file *lock, unsigned flags);
extern int discard_index(struct index_state *); int discard_index(struct index_state *);
extern void move_index_extensions(struct index_state *dst, struct index_state *src); void move_index_extensions(struct index_state *dst, struct index_state *src);
extern int unmerged_index(const struct index_state *); int unmerged_index(const struct index_state *);
/** /**
* Returns 1 if istate differs from tree, 0 otherwise. If tree is NULL, * Returns 1 if istate differs from tree, 0 otherwise. If tree is NULL,
@ -717,15 +717,15 @@ extern int unmerged_index(const struct index_state *);
* provided, the space-separated list of files that differ will be appended * provided, the space-separated list of files that differ will be appended
* to it. * to it.
*/ */
extern int repo_index_has_changes(struct repository *repo, int repo_index_has_changes(struct repository *repo,
struct tree *tree, struct tree *tree,
struct strbuf *sb); struct strbuf *sb);
extern int verify_path(const char *path, unsigned mode); int verify_path(const char *path, unsigned mode);
extern int strcmp_offset(const char *s1, const char *s2, size_t *first_change); int strcmp_offset(const char *s1, const char *s2, size_t *first_change);
extern int index_dir_exists(struct index_state *istate, const char *name, int namelen); int index_dir_exists(struct index_state *istate, const char *name, int namelen);
extern void adjust_dirname_case(struct index_state *istate, char *name); void adjust_dirname_case(struct index_state *istate, char *name);
extern struct cache_entry *index_file_exists(struct index_state *istate, const char *name, int namelen, int igncase); struct cache_entry *index_file_exists(struct index_state *istate, const char *name, int namelen, int igncase);
/* /*
* Searches for an entry defined by name and namelen in the given index. * Searches for an entry defined by name and namelen in the given index.
@ -744,7 +744,7 @@ extern struct cache_entry *index_file_exists(struct index_state *istate, const c
* index_name_pos(&index, "f", 1) -> -3 * index_name_pos(&index, "f", 1) -> -3
* index_name_pos(&index, "g", 1) -> -5 * index_name_pos(&index, "g", 1) -> -5
*/ */
extern int index_name_pos(const struct index_state *, const char *name, int namelen); int index_name_pos(const struct index_state *, const char *name, int namelen);
#define ADD_CACHE_OK_TO_ADD 1 /* Ok to add */ #define ADD_CACHE_OK_TO_ADD 1 /* Ok to add */
#define ADD_CACHE_OK_TO_REPLACE 2 /* Ok to replace file/directory */ #define ADD_CACHE_OK_TO_REPLACE 2 /* Ok to replace file/directory */
@ -753,14 +753,14 @@ extern int index_name_pos(const struct index_state *, const char *name, int name
#define ADD_CACHE_NEW_ONLY 16 /* Do not replace existing ones */ #define ADD_CACHE_NEW_ONLY 16 /* Do not replace existing ones */
#define ADD_CACHE_KEEP_CACHE_TREE 32 /* Do not invalidate cache-tree */ #define ADD_CACHE_KEEP_CACHE_TREE 32 /* Do not invalidate cache-tree */
#define ADD_CACHE_RENORMALIZE 64 /* Pass along HASH_RENORMALIZE */ #define ADD_CACHE_RENORMALIZE 64 /* Pass along HASH_RENORMALIZE */
extern int add_index_entry(struct index_state *, struct cache_entry *ce, int option); int add_index_entry(struct index_state *, struct cache_entry *ce, int option);
extern void rename_index_entry_at(struct index_state *, int pos, const char *new_name); void rename_index_entry_at(struct index_state *, int pos, const char *new_name);
/* Remove entry, return true if there are more entries to go. */ /* Remove entry, return true if there are more entries to go. */
extern int remove_index_entry_at(struct index_state *, int pos); int remove_index_entry_at(struct index_state *, int pos);
extern void remove_marked_cache_entries(struct index_state *istate, int invalidate); void remove_marked_cache_entries(struct index_state *istate, int invalidate);
extern int remove_file_from_index(struct index_state *, const char *path); int remove_file_from_index(struct index_state *, const char *path);
#define ADD_CACHE_VERBOSE 1 #define ADD_CACHE_VERBOSE 1
#define ADD_CACHE_PRETEND 2 #define ADD_CACHE_PRETEND 2
#define ADD_CACHE_IGNORE_ERRORS 4 #define ADD_CACHE_IGNORE_ERRORS 4
@ -775,14 +775,14 @@ extern int remove_file_from_index(struct index_state *, const char *path);
* the latter will do necessary lstat(2) internally before * the latter will do necessary lstat(2) internally before
* calling the former. * calling the former.
*/ */
extern int add_to_index(struct index_state *, const char *path, struct stat *, int flags); int add_to_index(struct index_state *, const char *path, struct stat *, int flags);
extern int add_file_to_index(struct index_state *, const char *path, int flags); int add_file_to_index(struct index_state *, const char *path, int flags);
extern int chmod_index_entry(struct index_state *, struct cache_entry *ce, char flip); int chmod_index_entry(struct index_state *, struct cache_entry *ce, char flip);
extern int ce_same_name(const struct cache_entry *a, const struct cache_entry *b); int ce_same_name(const struct cache_entry *a, const struct cache_entry *b);
extern void set_object_name_for_intent_to_add_entry(struct cache_entry *ce); void set_object_name_for_intent_to_add_entry(struct cache_entry *ce);
extern int index_name_is_other(const struct index_state *, const char *, int); int index_name_is_other(const struct index_state *, const char *, int);
extern void *read_blob_data_from_index(const struct index_state *, const char *, unsigned long *); void *read_blob_data_from_index(const struct index_state *, const char *, unsigned long *);
/* do stat comparison even if CE_VALID is true */ /* do stat comparison even if CE_VALID is true */
#define CE_MATCH_IGNORE_VALID 01 #define CE_MATCH_IGNORE_VALID 01
@ -796,22 +796,22 @@ extern void *read_blob_data_from_index(const struct index_state *, const char *,
#define CE_MATCH_REFRESH 0x10 #define CE_MATCH_REFRESH 0x10
/* don't refresh_fsmonitor state or do stat comparison even if CE_FSMONITOR_VALID is true */ /* don't refresh_fsmonitor state or do stat comparison even if CE_FSMONITOR_VALID is true */
#define CE_MATCH_IGNORE_FSMONITOR 0X20 #define CE_MATCH_IGNORE_FSMONITOR 0X20
extern int is_racy_timestamp(const struct index_state *istate, int is_racy_timestamp(const struct index_state *istate,
const struct cache_entry *ce); const struct cache_entry *ce);
extern int ie_match_stat(struct index_state *, const struct cache_entry *, struct stat *, unsigned int); int ie_match_stat(struct index_state *, const struct cache_entry *, struct stat *, unsigned int);
extern int ie_modified(struct index_state *, const struct cache_entry *, struct stat *, unsigned int); int ie_modified(struct index_state *, const struct cache_entry *, struct stat *, unsigned int);
#define HASH_WRITE_OBJECT 1 #define HASH_WRITE_OBJECT 1
#define HASH_FORMAT_CHECK 2 #define HASH_FORMAT_CHECK 2
#define HASH_RENORMALIZE 4 #define HASH_RENORMALIZE 4
extern int index_fd(struct index_state *istate, struct object_id *oid, int fd, struct stat *st, enum object_type type, const char *path, unsigned flags); int index_fd(struct index_state *istate, struct object_id *oid, int fd, struct stat *st, enum object_type type, const char *path, unsigned flags);
extern int index_path(struct index_state *istate, struct object_id *oid, const char *path, struct stat *st, unsigned flags); int index_path(struct index_state *istate, struct object_id *oid, const char *path, struct stat *st, unsigned flags);
/* /*
* Record to sd the data from st that we use to check whether a file * Record to sd the data from st that we use to check whether a file
* might have changed. * might have changed.
*/ */
extern void fill_stat_data(struct stat_data *sd, struct stat *st); void fill_stat_data(struct stat_data *sd, struct stat *st);
/* /*
* Return 0 if st is consistent with a file not having been changed * Return 0 if st is consistent with a file not having been changed
@ -819,11 +819,11 @@ extern void fill_stat_data(struct stat_data *sd, struct stat *st);
* combination of MTIME_CHANGED, CTIME_CHANGED, OWNER_CHANGED, * combination of MTIME_CHANGED, CTIME_CHANGED, OWNER_CHANGED,
* INODE_CHANGED, and DATA_CHANGED. * INODE_CHANGED, and DATA_CHANGED.
*/ */
extern int match_stat_data(const struct stat_data *sd, struct stat *st); int match_stat_data(const struct stat_data *sd, struct stat *st);
extern int match_stat_data_racy(const struct index_state *istate, int match_stat_data_racy(const struct index_state *istate,
const struct stat_data *sd, struct stat *st); const struct stat_data *sd, struct stat *st);
extern void fill_stat_cache_info(struct cache_entry *ce, struct stat *st); void fill_stat_cache_info(struct cache_entry *ce, struct stat *st);
#define REFRESH_REALLY 0x0001 /* ignore_valid */ #define REFRESH_REALLY 0x0001 /* ignore_valid */
#define REFRESH_UNMERGED 0x0002 /* allow unmerged */ #define REFRESH_UNMERGED 0x0002 /* allow unmerged */
@ -832,10 +832,10 @@ extern void fill_stat_cache_info(struct cache_entry *ce, struct stat *st);
#define REFRESH_IGNORE_SUBMODULES 0x0010 /* ignore submodules */ #define REFRESH_IGNORE_SUBMODULES 0x0010 /* ignore submodules */
#define REFRESH_IN_PORCELAIN 0x0020 /* user friendly output, not "needs update" */ #define REFRESH_IN_PORCELAIN 0x0020 /* user friendly output, not "needs update" */
#define REFRESH_PROGRESS 0x0040 /* show progress bar if stderr is tty */ #define REFRESH_PROGRESS 0x0040 /* show progress bar if stderr is tty */
extern int refresh_index(struct index_state *, unsigned int flags, const struct pathspec *pathspec, char *seen, const char *header_msg); int refresh_index(struct index_state *, unsigned int flags, const struct pathspec *pathspec, char *seen, const char *header_msg);
extern struct cache_entry *refresh_cache_entry(struct index_state *, struct cache_entry *, unsigned int); struct cache_entry *refresh_cache_entry(struct index_state *, struct cache_entry *, unsigned int);
extern void set_alternate_index_output(const char *); void set_alternate_index_output(const char *);
extern int verify_index_checksum; extern int verify_index_checksum;
extern int verify_ce_order; extern int verify_ce_order;
@ -1020,7 +1020,7 @@ int verify_repository_format(const struct repository_format *format,
* set_git_dir() before calling this, and use it only for "are we in a valid * set_git_dir() before calling this, and use it only for "are we in a valid
* repo?". * repo?".
*/ */
extern void check_repository_format(void); void check_repository_format(void);
#define MTIME_CHANGED 0x0001 #define MTIME_CHANGED 0x0001
#define CTIME_CHANGED 0x0002 #define CTIME_CHANGED 0x0002
@ -1045,8 +1045,8 @@ extern void check_repository_format(void);
* Note that while this version avoids the static buffer, it is not fully * Note that while this version avoids the static buffer, it is not fully
* reentrant, as it calls into other non-reentrant git code. * reentrant, as it calls into other non-reentrant git code.
*/ */
extern const char *find_unique_abbrev(const struct object_id *oid, int len); const char *find_unique_abbrev(const struct object_id *oid, int len);
extern int find_unique_abbrev_r(char *hex, const struct object_id *oid, int len); int find_unique_abbrev_r(char *hex, const struct object_id *oid, int len);
extern const unsigned char null_sha1[GIT_MAX_RAWSZ]; extern const unsigned char null_sha1[GIT_MAX_RAWSZ];
extern const struct object_id null_oid; extern const struct object_id null_oid;
@ -1242,7 +1242,7 @@ typedef int create_file_fn(const char *path, void *cb);
int raceproof_create_file(const char *path, create_file_fn fn, void *cb); int raceproof_create_file(const char *path, create_file_fn fn, void *cb);
int mkdir_in_gitdir(const char *path); int mkdir_in_gitdir(const char *path);
extern char *expand_user_path(const char *path, int real_home); char *expand_user_path(const char *path, int real_home);
const char *enter_repo(const char *path, int strict); const char *enter_repo(const char *path, int strict);
static inline int is_absolute_path(const char *path) static inline int is_absolute_path(const char *path)
{ {
@ -1286,26 +1286,26 @@ int looks_like_command_line_option(const char *str);
* "$XDG_CONFIG_HOME/git/$filename" if $XDG_CONFIG_HOME is non-empty, otherwise * "$XDG_CONFIG_HOME/git/$filename" if $XDG_CONFIG_HOME is non-empty, otherwise
* "$HOME/.config/git/$filename". Return NULL upon error. * "$HOME/.config/git/$filename". Return NULL upon error.
*/ */
extern char *xdg_config_home(const char *filename); char *xdg_config_home(const char *filename);
/** /**
* Return a newly allocated string with the evaluation of * Return a newly allocated string with the evaluation of
* "$XDG_CACHE_HOME/git/$filename" if $XDG_CACHE_HOME is non-empty, otherwise * "$XDG_CACHE_HOME/git/$filename" if $XDG_CACHE_HOME is non-empty, otherwise
* "$HOME/.cache/git/$filename". Return NULL upon error. * "$HOME/.cache/git/$filename". Return NULL upon error.
*/ */
extern char *xdg_cache_home(const char *filename); char *xdg_cache_home(const char *filename);
extern int git_open_cloexec(const char *name, int flags); int git_open_cloexec(const char *name, int flags);
#define git_open(name) git_open_cloexec(name, O_RDONLY) #define git_open(name) git_open_cloexec(name, O_RDONLY)
extern int unpack_loose_header(git_zstream *stream, unsigned char *map, unsigned long mapsize, void *buffer, unsigned long bufsiz); int unpack_loose_header(git_zstream *stream, unsigned char *map, unsigned long mapsize, void *buffer, unsigned long bufsiz);
extern int parse_loose_header(const char *hdr, unsigned long *sizep); int parse_loose_header(const char *hdr, unsigned long *sizep);
extern int check_object_signature(const struct object_id *oid, void *buf, unsigned long size, const char *type); int check_object_signature(const struct object_id *oid, void *buf, unsigned long size, const char *type);
extern int finalize_object_file(const char *tmpfile, const char *filename); int finalize_object_file(const char *tmpfile, const char *filename);
/* Helper to check and "touch" a file */ /* Helper to check and "touch" a file */
extern int check_and_freshen_file(const char *fn, int freshen); int check_and_freshen_file(const char *fn, int freshen);
extern const signed char hexval_table[256]; extern const signed char hexval_table[256];
static inline unsigned int hexval(unsigned char c) static inline unsigned int hexval(unsigned char c)
@ -1378,21 +1378,21 @@ enum get_oid_result {
*/ */
}; };
extern int get_oid(const char *str, struct object_id *oid); int get_oid(const char *str, struct object_id *oid);
extern int get_oid_commit(const char *str, struct object_id *oid); int get_oid_commit(const char *str, struct object_id *oid);
extern int get_oid_committish(const char *str, struct object_id *oid); int get_oid_committish(const char *str, struct object_id *oid);
extern int get_oid_tree(const char *str, struct object_id *oid); int get_oid_tree(const char *str, struct object_id *oid);
extern int get_oid_treeish(const char *str, struct object_id *oid); int get_oid_treeish(const char *str, struct object_id *oid);
extern int get_oid_blob(const char *str, struct object_id *oid); int get_oid_blob(const char *str, struct object_id *oid);
extern void maybe_die_on_misspelt_object_name(const char *name, const char *prefix); void maybe_die_on_misspelt_object_name(const char *name, const char *prefix);
extern enum get_oid_result get_oid_with_context(struct repository *repo, const char *str, enum get_oid_result get_oid_with_context(struct repository *repo, const char *str,
unsigned flags, struct object_id *oid, unsigned flags, struct object_id *oid,
struct object_context *oc); struct object_context *oc);
typedef int each_abbrev_fn(const struct object_id *oid, void *); typedef int each_abbrev_fn(const struct object_id *oid, void *);
extern int for_each_abbrev(const char *prefix, each_abbrev_fn, void *); int for_each_abbrev(const char *prefix, each_abbrev_fn, void *);
extern int set_disambiguate_hint_config(const char *var, const char *value); int set_disambiguate_hint_config(const char *var, const char *value);
/* /*
* Try to read a SHA1 in hexadecimal format from the 40 characters * Try to read a SHA1 in hexadecimal format from the 40 characters
@ -1401,15 +1401,15 @@ extern int set_disambiguate_hint_config(const char *var, const char *value);
* input, so it is safe to pass this function an arbitrary * input, so it is safe to pass this function an arbitrary
* null-terminated string. * null-terminated string.
*/ */
extern int get_sha1_hex(const char *hex, unsigned char *sha1); int get_sha1_hex(const char *hex, unsigned char *sha1);
extern int get_oid_hex(const char *hex, struct object_id *sha1); int get_oid_hex(const char *hex, struct object_id *sha1);
/* /*
* Read `len` pairs of hexadecimal digits from `hex` and write the * Read `len` pairs of hexadecimal digits from `hex` and write the
* values to `binary` as `len` bytes. Return 0 on success, or -1 if * values to `binary` as `len` bytes. Return 0 on success, or -1 if
* the input does not consist of hex digits). * the input does not consist of hex digits).
*/ */
extern int hex_to_bytes(unsigned char *binary, const char *hex, size_t len); int hex_to_bytes(unsigned char *binary, const char *hex, size_t len);
/* /*
* Convert a binary hash to its hex equivalent. The `_r` variant is reentrant, * Convert a binary hash to its hex equivalent. The `_r` variant is reentrant,
@ -1437,7 +1437,7 @@ char *oid_to_hex(const struct object_id *oid); /* same static buffer */
* other invalid character. end is only updated on success; otherwise, it is * other invalid character. end is only updated on success; otherwise, it is
* unmodified. * unmodified.
*/ */
extern int parse_oid_hex(const char *hex, struct object_id *oid, const char **end); int parse_oid_hex(const char *hex, struct object_id *oid, const char **end);
/* /*
* This reads short-hand syntax that not only evaluates to a commit * This reads short-hand syntax that not only evaluates to a commit
@ -1468,23 +1468,23 @@ extern int parse_oid_hex(const char *hex, struct object_id *oid, const char **en
#define INTERPRET_BRANCH_LOCAL (1<<0) #define INTERPRET_BRANCH_LOCAL (1<<0)
#define INTERPRET_BRANCH_REMOTE (1<<1) #define INTERPRET_BRANCH_REMOTE (1<<1)
#define INTERPRET_BRANCH_HEAD (1<<2) #define INTERPRET_BRANCH_HEAD (1<<2)
extern int interpret_branch_name(const char *str, int len, struct strbuf *, int interpret_branch_name(const char *str, int len, struct strbuf *,
unsigned allowed); unsigned allowed);
extern int get_oid_mb(const char *str, struct object_id *oid); int get_oid_mb(const char *str, struct object_id *oid);
extern int validate_headref(const char *ref); int validate_headref(const char *ref);
extern int base_name_compare(const char *name1, int len1, int mode1, const char *name2, int len2, int mode2); int base_name_compare(const char *name1, int len1, int mode1, const char *name2, int len2, int mode2);
extern int df_name_compare(const char *name1, int len1, int mode1, const char *name2, int len2, int mode2); int df_name_compare(const char *name1, int len1, int mode1, const char *name2, int len2, int mode2);
extern int name_compare(const char *name1, size_t len1, const char *name2, size_t len2); int name_compare(const char *name1, size_t len1, const char *name2, size_t len2);
extern int cache_name_stage_compare(const char *name1, int len1, int stage1, const char *name2, int len2, int stage2); int cache_name_stage_compare(const char *name1, int len1, int stage1, const char *name2, int len2, int stage2);
extern void *read_object_with_reference(const struct object_id *oid, void *read_object_with_reference(const struct object_id *oid,
const char *required_type, const char *required_type,
unsigned long *size, unsigned long *size,
struct object_id *oid_ret); struct object_id *oid_ret);
extern struct object *peel_to_type(const char *name, int namelen, struct object *peel_to_type(const char *name, int namelen,
struct object *o, enum object_type); struct object *o, enum object_type);
enum date_mode_type { enum date_mode_type {
@ -1539,20 +1539,20 @@ enum want_ident {
WANT_COMMITTER_IDENT WANT_COMMITTER_IDENT
}; };
extern const char *git_author_info(int); const char *git_author_info(int);
extern const char *git_committer_info(int); const char *git_committer_info(int);
extern const char *fmt_ident(const char *name, const char *email, const char *fmt_ident(const char *name, const char *email,
enum want_ident whose_ident, enum want_ident whose_ident,
const char *date_str, int); const char *date_str, int);
extern const char *fmt_name(enum want_ident); const char *fmt_name(enum want_ident);
extern const char *ident_default_name(void); const char *ident_default_name(void);
extern const char *ident_default_email(void); const char *ident_default_email(void);
extern const char *git_editor(void); const char *git_editor(void);
extern const char *git_sequence_editor(void); const char *git_sequence_editor(void);
extern const char *git_pager(int stdout_is_tty); const char *git_pager(int stdout_is_tty);
extern int is_terminal_dumb(void); int is_terminal_dumb(void);
extern int git_ident_config(const char *, const char *, void *); int git_ident_config(const char *, const char *, void *);
extern void reset_ident_date(void); void reset_ident_date(void);
struct ident_split { struct ident_split {
const char *name_begin; const char *name_begin;
@ -1568,7 +1568,7 @@ struct ident_split {
* Signals an success with 0, but time part of the result may be NULL * Signals an success with 0, but time part of the result may be NULL
* if the input lacks timestamp and zone * if the input lacks timestamp and zone
*/ */
extern int split_ident_line(struct ident_split *, const char *, int); int split_ident_line(struct ident_split *, const char *, int);
/* /*
* Like show_date, but pull the timestamp and tz parameters from * Like show_date, but pull the timestamp and tz parameters from
@ -1585,7 +1585,7 @@ const char *show_ident_date(const struct ident_split *id,
* Because there are two fields, we must choose one as the primary key; we * Because there are two fields, we must choose one as the primary key; we
* currently arbitrarily pick the email. * currently arbitrarily pick the email.
*/ */
extern int ident_cmp(const struct ident_split *, const struct ident_split *); int ident_cmp(const struct ident_split *, const struct ident_split *);
struct checkout { struct checkout {
struct index_state *istate; struct index_state *istate;
@ -1601,14 +1601,14 @@ struct checkout {
#define CHECKOUT_INIT { NULL, "" } #define CHECKOUT_INIT { NULL, "" }
#define TEMPORARY_FILENAME_LENGTH 25 #define TEMPORARY_FILENAME_LENGTH 25
extern int checkout_entry(struct cache_entry *ce, const struct checkout *state, char *topath, int *nr_checkouts); int checkout_entry(struct cache_entry *ce, const struct checkout *state, char *topath, int *nr_checkouts);
extern void enable_delayed_checkout(struct checkout *state); void enable_delayed_checkout(struct checkout *state);
extern int finish_delayed_checkout(struct checkout *state, int *nr_checkouts); int finish_delayed_checkout(struct checkout *state, int *nr_checkouts);
/* /*
* Unlink the last component and schedule the leading directories for * Unlink the last component and schedule the leading directories for
* removal, such that empty directories get removed. * removal, such that empty directories get removed.
*/ */
extern void unlink_entry(const struct cache_entry *ce); void unlink_entry(const struct cache_entry *ce);
struct cache_def { struct cache_def {
struct strbuf path; struct strbuf path;
@ -1622,12 +1622,12 @@ static inline void cache_def_clear(struct cache_def *cache)
strbuf_release(&cache->path); strbuf_release(&cache->path);
} }
extern int has_symlink_leading_path(const char *name, int len); int has_symlink_leading_path(const char *name, int len);
extern int threaded_has_symlink_leading_path(struct cache_def *, const char *, int); int threaded_has_symlink_leading_path(struct cache_def *, const char *, int);
extern int check_leading_path(const char *name, int len); int check_leading_path(const char *name, int len);
extern int has_dirs_only_path(const char *name, int len, int prefix_len); int has_dirs_only_path(const char *name, int len, int prefix_len);
extern void schedule_dir_for_removal(const char *name, int len); void schedule_dir_for_removal(const char *name, int len);
extern void remove_scheduled_dirs(void); void remove_scheduled_dirs(void);
struct pack_window { struct pack_window {
struct pack_window *next; struct pack_window *next;
@ -1649,14 +1649,14 @@ struct pack_entry {
* usual "XXXXXX" trailer, and the resulting filename is written into the * usual "XXXXXX" trailer, and the resulting filename is written into the
* "template" buffer. Returns the open descriptor. * "template" buffer. Returns the open descriptor.
*/ */
extern int odb_mkstemp(struct strbuf *temp_filename, const char *pattern); int odb_mkstemp(struct strbuf *temp_filename, const char *pattern);
/* /*
* Create a pack .keep file named "name" (which should generally be the output * Create a pack .keep file named "name" (which should generally be the output
* of odb_pack_name). Returns a file descriptor opened for writing, or -1 on * of odb_pack_name). Returns a file descriptor opened for writing, or -1 on
* error. * error.
*/ */
extern int odb_pack_keep(const char *name); int odb_pack_keep(const char *name);
/* /*
* Set this to 0 to prevent oid_object_info_extended() from fetching missing * Set this to 0 to prevent oid_object_info_extended() from fetching missing
@ -1667,10 +1667,10 @@ extern int odb_pack_keep(const char *name);
extern int fetch_if_missing; extern int fetch_if_missing;
/* Dumb servers support */ /* Dumb servers support */
extern int update_server_info(int); int update_server_info(int);
extern const char *get_log_output_encoding(void); const char *get_log_output_encoding(void);
extern const char *get_commit_output_encoding(void); const char *get_commit_output_encoding(void);
/* /*
* This is a hack for test programs like test-dump-untracked-cache to * This is a hack for test programs like test-dump-untracked-cache to
@ -1679,8 +1679,8 @@ extern const char *get_commit_output_encoding(void);
*/ */
extern int ignore_untracked_cache_config; extern int ignore_untracked_cache_config;
extern int committer_ident_sufficiently_given(void); int committer_ident_sufficiently_given(void);
extern int author_ident_sufficiently_given(void); int author_ident_sufficiently_given(void);
extern const char *git_commit_encoding; extern const char *git_commit_encoding;
extern const char *git_log_output_encoding; extern const char *git_log_output_encoding;
@ -1688,22 +1688,22 @@ extern const char *git_mailmap_file;
extern const char *git_mailmap_blob; extern const char *git_mailmap_blob;
/* IO helper functions */ /* IO helper functions */
extern void maybe_flush_or_die(FILE *, const char *); void maybe_flush_or_die(FILE *, const char *);
__attribute__((format (printf, 2, 3))) __attribute__((format (printf, 2, 3)))
extern void fprintf_or_die(FILE *, const char *fmt, ...); extern void fprintf_or_die(FILE *, const char *fmt, ...);
#define COPY_READ_ERROR (-2) #define COPY_READ_ERROR (-2)
#define COPY_WRITE_ERROR (-3) #define COPY_WRITE_ERROR (-3)
extern int copy_fd(int ifd, int ofd); int copy_fd(int ifd, int ofd);
extern int copy_file(const char *dst, const char *src, int mode); int copy_file(const char *dst, const char *src, int mode);
extern int copy_file_with_time(const char *dst, const char *src, int mode); int copy_file_with_time(const char *dst, const char *src, int mode);
extern void write_or_die(int fd, const void *buf, size_t count); void write_or_die(int fd, const void *buf, size_t count);
extern void fsync_or_die(int fd, const char *); void fsync_or_die(int fd, const char *);
extern ssize_t read_in_full(int fd, void *buf, size_t count); ssize_t read_in_full(int fd, void *buf, size_t count);
extern ssize_t write_in_full(int fd, const void *buf, size_t count); ssize_t write_in_full(int fd, const void *buf, size_t count);
extern ssize_t pread_in_full(int fd, void *buf, size_t count, off_t offset); ssize_t pread_in_full(int fd, void *buf, size_t count, off_t offset);
static inline ssize_t write_str_in_full(int fd, const char *str) static inline ssize_t write_str_in_full(int fd, const char *str)
{ {
@ -1714,7 +1714,7 @@ static inline ssize_t write_str_in_full(int fd, const char *str)
* Open (and truncate) the file at path, write the contents of buf to it, * Open (and truncate) the file at path, write the contents of buf to it,
* and close it. Dies if any errors are encountered. * and close it. Dies if any errors are encountered.
*/ */
extern void write_file_buf(const char *path, const char *buf, size_t len); void write_file_buf(const char *path, const char *buf, size_t len);
/** /**
* Like write_file_buf(), but format the contents into a buffer first. * Like write_file_buf(), but format the contents into a buffer first.
@ -1727,13 +1727,13 @@ __attribute__((format (printf, 2, 3)))
extern void write_file(const char *path, const char *fmt, ...); extern void write_file(const char *path, const char *fmt, ...);
/* pager.c */ /* pager.c */
extern void setup_pager(void); void setup_pager(void);
extern int pager_in_use(void); int pager_in_use(void);
extern int pager_use_color; extern int pager_use_color;
extern int term_columns(void); int term_columns(void);
extern int decimal_width(uintmax_t); int decimal_width(uintmax_t);
extern int check_pager_config(const char *cmd); int check_pager_config(const char *cmd);
extern void prepare_pager_args(struct child_process *, const char *pager); void prepare_pager_args(struct child_process *, const char *pager);
extern const char *editor_program; extern const char *editor_program;
extern const char *askpass_program; extern const char *askpass_program;
@ -1777,13 +1777,13 @@ void shift_tree_by(const struct object_id *, const struct object_id *, struct ob
/* All WS_* -- when extended, adapt diff.c emit_symbol */ /* All WS_* -- when extended, adapt diff.c emit_symbol */
#define WS_RULE_MASK 07777 #define WS_RULE_MASK 07777
extern unsigned whitespace_rule_cfg; extern unsigned whitespace_rule_cfg;
extern unsigned whitespace_rule(struct index_state *, const char *); unsigned whitespace_rule(struct index_state *, const char *);
extern unsigned parse_whitespace_rule(const char *); unsigned parse_whitespace_rule(const char *);
extern unsigned ws_check(const char *line, int len, unsigned ws_rule); unsigned ws_check(const char *line, int len, unsigned ws_rule);
extern void ws_check_emit(const char *line, int len, unsigned ws_rule, FILE *stream, const char *set, const char *reset, const char *ws); void ws_check_emit(const char *line, int len, unsigned ws_rule, FILE *stream, const char *set, const char *reset, const char *ws);
extern char *whitespace_error_string(unsigned ws); char *whitespace_error_string(unsigned ws);
extern void ws_fix_copy(struct strbuf *, const char *, int, unsigned, int *); void ws_fix_copy(struct strbuf *, const char *, int, unsigned, int *);
extern int ws_blank_line(const char *line, int len, unsigned ws_rule); int ws_blank_line(const char *line, int len, unsigned ws_rule);
#define ws_tab_width(rule) ((rule) & WS_TAB_WIDTH_MASK) #define ws_tab_width(rule) ((rule) & WS_TAB_WIDTH_MASK)
/* ls-files */ /* ls-files */
@ -1853,9 +1853,9 @@ void safe_create_dir(const char *dir, int share);
* Should we print an ellipsis after an abbreviated SHA-1 value * Should we print an ellipsis after an abbreviated SHA-1 value
* when doing diff-raw output or indicating a detached HEAD? * when doing diff-raw output or indicating a detached HEAD?
*/ */
extern int print_sha1_ellipsis(void); int print_sha1_ellipsis(void);
/* Return 1 if the file is empty or does not exists, 0 otherwise. */ /* Return 1 if the file is empty or does not exists, 0 otherwise. */
extern int is_empty_or_missing_file(const char *filename); int is_empty_or_missing_file(const char *filename);
#endif /* CACHE_H */ #endif /* CACHE_H */

View File

@ -8,7 +8,7 @@
* tracking branch. Return the name of the remote if such a branch * tracking branch. Return the name of the remote if such a branch
* exists, NULL otherwise. * exists, NULL otherwise.
*/ */
extern const char *unique_tracking_name(const char *name, const char *unique_tracking_name(const char *name,
struct object_id *oid, struct object_id *oid,
int *dwim_remotes_matched); int *dwim_remotes_matched);

View File

@ -27,20 +27,20 @@ struct column_options {
}; };
struct option; struct option;
extern int parseopt_column_callback(const struct option *, const char *, int); int parseopt_column_callback(const struct option *, const char *, int);
extern int git_column_config(const char *var, const char *value, int git_column_config(const char *var, const char *value,
const char *command, unsigned int *colopts); const char *command, unsigned int *colopts);
extern int finalize_colopts(unsigned int *colopts, int stdout_is_tty); int finalize_colopts(unsigned int *colopts, int stdout_is_tty);
static inline int column_active(unsigned int colopts) static inline int column_active(unsigned int colopts)
{ {
return (colopts & COL_ENABLE_MASK) == COL_ENABLED; return (colopts & COL_ENABLE_MASK) == COL_ENABLED;
} }
struct string_list; struct string_list;
extern void print_columns(const struct string_list *list, unsigned int colopts, void print_columns(const struct string_list *list, unsigned int colopts,
const struct column_options *opts); const struct column_options *opts);
extern int run_column_filter(int colopts, const struct column_options *); int run_column_filter(int colopts, const struct column_options *);
extern int stop_column_filter(void); int stop_column_filter(void);
#endif #endif

View File

@ -177,8 +177,8 @@ void free_commit_list(struct commit_list *list);
struct rev_info; /* in revision.h, it circularly uses enum cmit_fmt */ struct rev_info; /* in revision.h, it circularly uses enum cmit_fmt */
extern int has_non_ascii(const char *text); int has_non_ascii(const char *text);
extern const char *logmsg_reencode(const struct commit *commit, const char *logmsg_reencode(const struct commit *commit,
char **commit_encoding, char **commit_encoding,
const char *output_encoding); const char *output_encoding);
const char *repo_logmsg_reencode(struct repository *r, const char *repo_logmsg_reencode(struct repository *r,
@ -189,7 +189,7 @@ const char *repo_logmsg_reencode(struct repository *r,
#define logmsg_reencode(c, enc, out) repo_logmsg_reencode(the_repository, c, enc, out) #define logmsg_reencode(c, enc, out) repo_logmsg_reencode(the_repository, c, enc, out)
#endif #endif
extern const char *skip_blank_lines(const char *msg); const char *skip_blank_lines(const char *msg);
/** Removes the first commit from a list sorted by date, and adds all /** Removes the first commit from a list sorted by date, and adds all
* of its parents. * of its parents.
@ -240,22 +240,22 @@ struct commit *get_fork_point(const char *refname, struct commit *commit);
struct oid_array; struct oid_array;
struct ref; struct ref;
extern int register_shallow(struct repository *r, const struct object_id *oid); int register_shallow(struct repository *r, const struct object_id *oid);
extern int unregister_shallow(const struct object_id *oid); int unregister_shallow(const struct object_id *oid);
extern int for_each_commit_graft(each_commit_graft_fn, void *); int for_each_commit_graft(each_commit_graft_fn, void *);
extern int is_repository_shallow(struct repository *r); int is_repository_shallow(struct repository *r);
extern struct commit_list *get_shallow_commits(struct object_array *heads, struct commit_list *get_shallow_commits(struct object_array *heads,
int depth, int shallow_flag, int not_shallow_flag); int depth, int shallow_flag, int not_shallow_flag);
extern struct commit_list *get_shallow_commits_by_rev_list( struct commit_list *get_shallow_commits_by_rev_list(
int ac, const char **av, int shallow_flag, int not_shallow_flag); int ac, const char **av, int shallow_flag, int not_shallow_flag);
extern void set_alternate_shallow_file(struct repository *r, const char *path, int override); void set_alternate_shallow_file(struct repository *r, const char *path, int override);
extern int write_shallow_commits(struct strbuf *out, int use_pack_protocol, int write_shallow_commits(struct strbuf *out, int use_pack_protocol,
const struct oid_array *extra); const struct oid_array *extra);
extern void setup_alternate_shallow(struct lock_file *shallow_lock, void setup_alternate_shallow(struct lock_file *shallow_lock,
const char **alternate_shallow_file, const char **alternate_shallow_file,
const struct oid_array *extra); const struct oid_array *extra);
extern const char *setup_temporary_shallow(const struct oid_array *extra); const char *setup_temporary_shallow(const struct oid_array *extra);
extern void advertise_shallow_grafts(int); void advertise_shallow_grafts(int);
struct shallow_info { struct shallow_info {
struct oid_array *shallow; struct oid_array *shallow;
@ -272,20 +272,20 @@ struct shallow_info {
int nr_commits; int nr_commits;
}; };
extern void prepare_shallow_info(struct shallow_info *, struct oid_array *); void prepare_shallow_info(struct shallow_info *, struct oid_array *);
extern void clear_shallow_info(struct shallow_info *); void clear_shallow_info(struct shallow_info *);
extern void remove_nonexistent_theirs_shallow(struct shallow_info *); void remove_nonexistent_theirs_shallow(struct shallow_info *);
extern void assign_shallow_commits_to_refs(struct shallow_info *info, void assign_shallow_commits_to_refs(struct shallow_info *info,
uint32_t **used, uint32_t **used,
int *ref_status); int *ref_status);
extern int delayed_reachability_test(struct shallow_info *si, int c); int delayed_reachability_test(struct shallow_info *si, int c);
#define PRUNE_SHOW_ONLY 1 #define PRUNE_SHOW_ONLY 1
#define PRUNE_QUICK 2 #define PRUNE_QUICK 2
extern void prune_shallow(unsigned options); void prune_shallow(unsigned options);
extern struct trace_key trace_shallow; extern struct trace_key trace_shallow;
extern int interactive_add(int argc, const char **argv, const char *prefix, int patch); int interactive_add(int argc, const char **argv, const char *prefix, int patch);
extern int run_add_interactive(const char *revision, const char *patch_mode, int run_add_interactive(const char *revision, const char *patch_mode,
const struct pathspec *pathspec); const struct pathspec *pathspec);
struct commit_extra_header { struct commit_extra_header {
@ -295,24 +295,24 @@ struct commit_extra_header {
size_t len; size_t len;
}; };
extern void append_merge_tag_headers(struct commit_list *parents, void append_merge_tag_headers(struct commit_list *parents,
struct commit_extra_header ***tail); struct commit_extra_header ***tail);
extern int commit_tree(const char *msg, size_t msg_len, int commit_tree(const char *msg, size_t msg_len,
const struct object_id *tree, const struct object_id *tree,
struct commit_list *parents, struct object_id *ret, struct commit_list *parents, struct object_id *ret,
const char *author, const char *sign_commit); const char *author, const char *sign_commit);
extern int commit_tree_extended(const char *msg, size_t msg_len, int commit_tree_extended(const char *msg, size_t msg_len,
const struct object_id *tree, const struct object_id *tree,
struct commit_list *parents, struct commit_list *parents,
struct object_id *ret, const char *author, struct object_id *ret, const char *author,
const char *sign_commit, const char *sign_commit,
struct commit_extra_header *); struct commit_extra_header *);
extern struct commit_extra_header *read_commit_extra_headers(struct commit *, const char **); struct commit_extra_header *read_commit_extra_headers(struct commit *, const char **);
extern void free_commit_extra_headers(struct commit_extra_header *extra); void free_commit_extra_headers(struct commit_extra_header *extra);
/* /*
* Search the commit object contents given by "msg" for the header "key". * Search the commit object contents given by "msg" for the header "key".
@ -322,23 +322,23 @@ extern void free_commit_extra_headers(struct commit_extra_header *extra);
* Note that some headers (like mergetag) may be multi-line. It is the caller's * Note that some headers (like mergetag) may be multi-line. It is the caller's
* responsibility to parse further in this case! * responsibility to parse further in this case!
*/ */
extern const char *find_commit_header(const char *msg, const char *key, const char *find_commit_header(const char *msg, const char *key,
size_t *out_len); size_t *out_len);
/* Find the end of the log message, the right place for a new trailer. */ /* Find the end of the log message, the right place for a new trailer. */
extern size_t ignore_non_trailer(const char *buf, size_t len); size_t ignore_non_trailer(const char *buf, size_t len);
typedef int (*each_mergetag_fn)(struct commit *commit, struct commit_extra_header *extra, typedef int (*each_mergetag_fn)(struct commit *commit, struct commit_extra_header *extra,
void *cb_data); void *cb_data);
extern int for_each_mergetag(each_mergetag_fn fn, struct commit *commit, void *data); int for_each_mergetag(each_mergetag_fn fn, struct commit *commit, void *data);
struct merge_remote_desc { struct merge_remote_desc {
struct object *obj; /* the named object, could be a tag */ struct object *obj; /* the named object, could be a tag */
char name[FLEX_ARRAY]; char name[FLEX_ARRAY];
}; };
extern struct merge_remote_desc *merge_remote_util(struct commit *); struct merge_remote_desc *merge_remote_util(struct commit *);
extern void set_merge_remote_desc(struct commit *commit, void set_merge_remote_desc(struct commit *commit,
const char *name, struct object *obj); const char *name, struct object *obj);
/* /*
@ -348,9 +348,9 @@ extern void set_merge_remote_desc(struct commit *commit,
*/ */
struct commit *get_merge_parent(const char *name); struct commit *get_merge_parent(const char *name);
extern int parse_signed_commit(const struct commit *commit, int parse_signed_commit(const struct commit *commit,
struct strbuf *message, struct strbuf *signature); struct strbuf *message, struct strbuf *signature);
extern int remove_signature(struct strbuf *buf); int remove_signature(struct strbuf *buf);
/* /*
* Check the signature of the given commit. The result of the check is stored * Check the signature of the given commit. The result of the check is stored
@ -359,7 +359,7 @@ extern int remove_signature(struct strbuf *buf);
* at all. This may allocate memory for sig->gpg_output, sig->gpg_status, * at all. This may allocate memory for sig->gpg_output, sig->gpg_status,
* sig->signer and sig->key. * sig->signer and sig->key.
*/ */
extern int check_commit_signature(const struct commit *commit, struct signature_check *sigc); int check_commit_signature(const struct commit *commit, struct signature_check *sigc);
/* record author-date for each commit object */ /* record author-date for each commit object */
struct author_date_slab; struct author_date_slab;

182
config.h
View File

@ -68,62 +68,62 @@ struct config_options {
}; };
typedef int (*config_fn_t)(const char *, const char *, void *); typedef int (*config_fn_t)(const char *, const char *, void *);
extern int git_default_config(const char *, const char *, void *); int git_default_config(const char *, const char *, void *);
extern int git_config_from_file(config_fn_t fn, const char *, void *); int git_config_from_file(config_fn_t fn, const char *, void *);
extern int git_config_from_file_with_options(config_fn_t fn, const char *, int git_config_from_file_with_options(config_fn_t fn, const char *,
void *, void *,
const struct config_options *); const struct config_options *);
extern int git_config_from_mem(config_fn_t fn, int git_config_from_mem(config_fn_t fn,
const enum config_origin_type, const enum config_origin_type,
const char *name, const char *name,
const char *buf, size_t len, const char *buf, size_t len,
void *data, const struct config_options *opts); void *data, const struct config_options *opts);
extern int git_config_from_blob_oid(config_fn_t fn, const char *name, int git_config_from_blob_oid(config_fn_t fn, const char *name,
const struct object_id *oid, void *data); const struct object_id *oid, void *data);
extern void git_config_push_parameter(const char *text); void git_config_push_parameter(const char *text);
extern int git_config_from_parameters(config_fn_t fn, void *data); int git_config_from_parameters(config_fn_t fn, void *data);
extern void read_early_config(config_fn_t cb, void *data); void read_early_config(config_fn_t cb, void *data);
extern void git_config(config_fn_t fn, void *); void git_config(config_fn_t fn, void *);
extern int config_with_options(config_fn_t fn, void *, int config_with_options(config_fn_t fn, void *,
struct git_config_source *config_source, struct git_config_source *config_source,
const struct config_options *opts); const struct config_options *opts);
extern int git_parse_ssize_t(const char *, ssize_t *); int git_parse_ssize_t(const char *, ssize_t *);
extern int git_parse_ulong(const char *, unsigned long *); int git_parse_ulong(const char *, unsigned long *);
extern int git_parse_maybe_bool(const char *); int git_parse_maybe_bool(const char *);
extern int git_config_int(const char *, const char *); int git_config_int(const char *, const char *);
extern int64_t git_config_int64(const char *, const char *); int64_t git_config_int64(const char *, const char *);
extern unsigned long git_config_ulong(const char *, const char *); unsigned long git_config_ulong(const char *, const char *);
extern ssize_t git_config_ssize_t(const char *, const char *); ssize_t git_config_ssize_t(const char *, const char *);
extern int git_config_bool_or_int(const char *, const char *, int *); int git_config_bool_or_int(const char *, const char *, int *);
extern int git_config_bool(const char *, const char *); int git_config_bool(const char *, const char *);
extern int git_config_string(const char **, const char *, const char *); int git_config_string(const char **, const char *, const char *);
extern int git_config_pathname(const char **, const char *, const char *); int git_config_pathname(const char **, const char *, const char *);
extern int git_config_expiry_date(timestamp_t *, const char *, const char *); int git_config_expiry_date(timestamp_t *, const char *, const char *);
extern int git_config_color(char *, const char *, const char *); int git_config_color(char *, const char *, const char *);
extern int git_config_set_in_file_gently(const char *, const char *, const char *); int git_config_set_in_file_gently(const char *, const char *, const char *);
extern void git_config_set_in_file(const char *, const char *, const char *); void git_config_set_in_file(const char *, const char *, const char *);
extern int git_config_set_gently(const char *, const char *); int git_config_set_gently(const char *, const char *);
extern void git_config_set(const char *, const char *); void git_config_set(const char *, const char *);
extern int git_config_parse_key(const char *, char **, int *); int git_config_parse_key(const char *, char **, int *);
extern int git_config_key_is_valid(const char *key); int git_config_key_is_valid(const char *key);
extern int git_config_set_multivar_gently(const char *, const char *, const char *, int); int git_config_set_multivar_gently(const char *, const char *, const char *, int);
extern void git_config_set_multivar(const char *, const char *, const char *, int); void git_config_set_multivar(const char *, const char *, const char *, int);
extern int git_config_set_multivar_in_file_gently(const char *, const char *, const char *, const char *, int); int git_config_set_multivar_in_file_gently(const char *, const char *, const char *, const char *, int);
extern void git_config_set_multivar_in_file(const char *, const char *, const char *, const char *, int); void git_config_set_multivar_in_file(const char *, const char *, const char *, const char *, int);
extern int git_config_rename_section(const char *, const char *); int git_config_rename_section(const char *, const char *);
extern int git_config_rename_section_in_file(const char *, const char *, const char *); int git_config_rename_section_in_file(const char *, const char *, const char *);
extern int git_config_copy_section(const char *, const char *); int git_config_copy_section(const char *, const char *);
extern int git_config_copy_section_in_file(const char *, const char *, const char *); int git_config_copy_section_in_file(const char *, const char *, const char *);
extern const char *git_etc_gitconfig(void); const char *git_etc_gitconfig(void);
extern int git_env_bool(const char *, int); int git_env_bool(const char *, int);
extern unsigned long git_env_ulong(const char *, unsigned long); unsigned long git_env_ulong(const char *, unsigned long);
extern int git_config_system(void); int git_config_system(void);
extern int config_error_nonbool(const char *); int config_error_nonbool(const char *);
#if defined(__GNUC__) #if defined(__GNUC__)
#define config_error_nonbool(s) (config_error_nonbool(s), const_error()) #define config_error_nonbool(s) (config_error_nonbool(s), const_error())
#endif #endif
extern int git_config_parse_parameter(const char *, config_fn_t fn, void *data); int git_config_parse_parameter(const char *, config_fn_t fn, void *data);
enum config_scope { enum config_scope {
CONFIG_SCOPE_UNKNOWN = 0, CONFIG_SCOPE_UNKNOWN = 0,
@ -133,9 +133,9 @@ enum config_scope {
CONFIG_SCOPE_CMDLINE, CONFIG_SCOPE_CMDLINE,
}; };
extern enum config_scope current_config_scope(void); enum config_scope current_config_scope(void);
extern const char *current_config_origin_type(void); const char *current_config_origin_type(void);
extern const char *current_config_name(void); const char *current_config_name(void);
struct config_include_data { struct config_include_data {
int depth; int depth;
@ -144,7 +144,7 @@ struct config_include_data {
const struct config_options *opts; const struct config_options *opts;
}; };
#define CONFIG_INCLUDE_INIT { 0 } #define CONFIG_INCLUDE_INIT { 0 }
extern int git_config_include(const char *name, const char *value, void *data); int git_config_include(const char *name, const char *value, void *data);
/* /*
* Match and parse a config key of the form: * Match and parse a config key of the form:
@ -159,7 +159,7 @@ extern int git_config_include(const char *name, const char *value, void *data);
* If the subsection pointer-to-pointer passed in is NULL, returns 0 only if * If the subsection pointer-to-pointer passed in is NULL, returns 0 only if
* there is no subsection at all. * there is no subsection at all.
*/ */
extern int parse_config_key(const char *var, int parse_config_key(const char *var,
const char *section, const char *section,
const char **subsection, int *subsection_len, const char **subsection, int *subsection_len,
const char **key); const char **key);
@ -192,71 +192,71 @@ struct config_set {
struct configset_list list; struct configset_list list;
}; };
extern void git_configset_init(struct config_set *cs); void git_configset_init(struct config_set *cs);
extern int git_configset_add_file(struct config_set *cs, const char *filename); int git_configset_add_file(struct config_set *cs, const char *filename);
extern const struct string_list *git_configset_get_value_multi(struct config_set *cs, const char *key); const struct string_list *git_configset_get_value_multi(struct config_set *cs, const char *key);
extern void git_configset_clear(struct config_set *cs); void git_configset_clear(struct config_set *cs);
/* /*
* These functions return 1 if not found, and 0 if found, leaving the found * These functions return 1 if not found, and 0 if found, leaving the found
* value in the 'dest' pointer. * value in the 'dest' pointer.
*/ */
extern int git_configset_get_value(struct config_set *cs, const char *key, const char **dest); int git_configset_get_value(struct config_set *cs, const char *key, const char **dest);
extern int git_configset_get_string_const(struct config_set *cs, const char *key, const char **dest); int git_configset_get_string_const(struct config_set *cs, const char *key, const char **dest);
extern int git_configset_get_string(struct config_set *cs, const char *key, char **dest); int git_configset_get_string(struct config_set *cs, const char *key, char **dest);
extern int git_configset_get_int(struct config_set *cs, const char *key, int *dest); int git_configset_get_int(struct config_set *cs, const char *key, int *dest);
extern int git_configset_get_ulong(struct config_set *cs, const char *key, unsigned long *dest); int git_configset_get_ulong(struct config_set *cs, const char *key, unsigned long *dest);
extern int git_configset_get_bool(struct config_set *cs, const char *key, int *dest); int git_configset_get_bool(struct config_set *cs, const char *key, int *dest);
extern int git_configset_get_bool_or_int(struct config_set *cs, const char *key, int *is_bool, int *dest); int git_configset_get_bool_or_int(struct config_set *cs, const char *key, int *is_bool, int *dest);
extern int git_configset_get_maybe_bool(struct config_set *cs, const char *key, int *dest); int git_configset_get_maybe_bool(struct config_set *cs, const char *key, int *dest);
extern int git_configset_get_pathname(struct config_set *cs, const char *key, const char **dest); int git_configset_get_pathname(struct config_set *cs, const char *key, const char **dest);
/* Functions for reading a repository's config */ /* Functions for reading a repository's config */
struct repository; struct repository;
extern void repo_config(struct repository *repo, config_fn_t fn, void *data); void repo_config(struct repository *repo, config_fn_t fn, void *data);
extern int repo_config_get_value(struct repository *repo, int repo_config_get_value(struct repository *repo,
const char *key, const char **value); const char *key, const char **value);
extern const struct string_list *repo_config_get_value_multi(struct repository *repo, const struct string_list *repo_config_get_value_multi(struct repository *repo,
const char *key); const char *key);
extern int repo_config_get_string_const(struct repository *repo, int repo_config_get_string_const(struct repository *repo,
const char *key, const char **dest); const char *key, const char **dest);
extern int repo_config_get_string(struct repository *repo, int repo_config_get_string(struct repository *repo,
const char *key, char **dest); const char *key, char **dest);
extern int repo_config_get_int(struct repository *repo, int repo_config_get_int(struct repository *repo,
const char *key, int *dest); const char *key, int *dest);
extern int repo_config_get_ulong(struct repository *repo, int repo_config_get_ulong(struct repository *repo,
const char *key, unsigned long *dest); const char *key, unsigned long *dest);
extern int repo_config_get_bool(struct repository *repo, int repo_config_get_bool(struct repository *repo,
const char *key, int *dest); const char *key, int *dest);
extern int repo_config_get_bool_or_int(struct repository *repo, int repo_config_get_bool_or_int(struct repository *repo,
const char *key, int *is_bool, int *dest); const char *key, int *is_bool, int *dest);
extern int repo_config_get_maybe_bool(struct repository *repo, int repo_config_get_maybe_bool(struct repository *repo,
const char *key, int *dest); const char *key, int *dest);
extern int repo_config_get_pathname(struct repository *repo, int repo_config_get_pathname(struct repository *repo,
const char *key, const char **dest); const char *key, const char **dest);
extern int git_config_get_value(const char *key, const char **value); int git_config_get_value(const char *key, const char **value);
extern const struct string_list *git_config_get_value_multi(const char *key); const struct string_list *git_config_get_value_multi(const char *key);
extern void git_config_clear(void); void git_config_clear(void);
extern int git_config_get_string_const(const char *key, const char **dest); int git_config_get_string_const(const char *key, const char **dest);
extern int git_config_get_string(const char *key, char **dest); int git_config_get_string(const char *key, char **dest);
extern int git_config_get_int(const char *key, int *dest); int git_config_get_int(const char *key, int *dest);
extern int git_config_get_ulong(const char *key, unsigned long *dest); int git_config_get_ulong(const char *key, unsigned long *dest);
extern int git_config_get_bool(const char *key, int *dest); int git_config_get_bool(const char *key, int *dest);
extern int git_config_get_bool_or_int(const char *key, int *is_bool, int *dest); int git_config_get_bool_or_int(const char *key, int *is_bool, int *dest);
extern int git_config_get_maybe_bool(const char *key, int *dest); int git_config_get_maybe_bool(const char *key, int *dest);
extern int git_config_get_pathname(const char *key, const char **dest); int git_config_get_pathname(const char *key, const char **dest);
extern int git_config_get_index_threads(int *dest); int git_config_get_index_threads(int *dest);
extern int git_config_get_untracked_cache(void); int git_config_get_untracked_cache(void);
extern int git_config_get_split_index(void); int git_config_get_split_index(void);
extern int git_config_get_max_percent_split_change(void); int git_config_get_max_percent_split_change(void);
extern int git_config_get_fsmonitor(void); int git_config_get_fsmonitor(void);
/* This dies if the configured or default date is in the future */ /* This dies if the configured or default date is in the future */
extern int git_config_get_expiry(const char *key, const char **output); int git_config_get_expiry(const char *key, const char **output);
/* parse either "this many days" integer, or "5.days.ago" approxidate */ /* parse either "this many days" integer, or "5.days.ago" approxidate */
extern int git_config_get_expiry_in_days(const char *key, timestamp_t *, timestamp_t now); int git_config_get_expiry_in_days(const char *key, timestamp_t *, timestamp_t now);
struct key_value_info { struct key_value_info {
const char *filename; const char *filename;
@ -266,7 +266,7 @@ struct key_value_info {
}; };
extern NORETURN void git_die_config(const char *key, const char *err, ...) __attribute__((format(printf, 2, 3))); extern NORETURN void git_die_config(const char *key, const char *err, ...) __attribute__((format(printf, 2, 3)));
extern NORETURN void git_die_config_linenr(const char *key, const char *filename, int linenr); NORETURN void git_die_config_linenr(const char *key, const char *filename, int linenr);
#define LOOKUP_CONFIG(mapping, var) \ #define LOOKUP_CONFIG(mapping, var) \
lookup_config(mapping, ARRAY_SIZE(mapping), var) lookup_config(mapping, ARRAY_SIZE(mapping), var)

View File

@ -7,19 +7,19 @@
#define CONNECT_DIAG_URL (1u << 1) #define CONNECT_DIAG_URL (1u << 1)
#define CONNECT_IPV4 (1u << 2) #define CONNECT_IPV4 (1u << 2)
#define CONNECT_IPV6 (1u << 3) #define CONNECT_IPV6 (1u << 3)
extern struct child_process *git_connect(int fd[2], const char *url, const char *prog, int flags); struct child_process *git_connect(int fd[2], const char *url, const char *prog, int flags);
extern int finish_connect(struct child_process *conn); int finish_connect(struct child_process *conn);
extern int git_connection_is_socket(struct child_process *conn); int git_connection_is_socket(struct child_process *conn);
extern int server_supports(const char *feature); int server_supports(const char *feature);
extern int parse_feature_request(const char *features, const char *feature); int parse_feature_request(const char *features, const char *feature);
extern const char *server_feature_value(const char *feature, int *len_ret); const char *server_feature_value(const char *feature, int *len_ret);
extern int url_is_local_not_ssh(const char *url); int url_is_local_not_ssh(const char *url);
struct packet_reader; struct packet_reader;
extern enum protocol_version discover_version(struct packet_reader *reader); enum protocol_version discover_version(struct packet_reader *reader);
extern int server_supports_v2(const char *c, int die_on_error); int server_supports_v2(const char *c, int die_on_error);
extern int server_supports_feature(const char *c, const char *feature, int server_supports_feature(const char *c, const char *feature,
int die_on_error); int die_on_error);
#endif #endif

View File

@ -25,22 +25,22 @@ struct hashfile_checkpoint {
git_hash_ctx ctx; git_hash_ctx ctx;
}; };
extern void hashfile_checkpoint(struct hashfile *, struct hashfile_checkpoint *); void hashfile_checkpoint(struct hashfile *, struct hashfile_checkpoint *);
extern int hashfile_truncate(struct hashfile *, struct hashfile_checkpoint *); int hashfile_truncate(struct hashfile *, struct hashfile_checkpoint *);
/* finalize_hashfile flags */ /* finalize_hashfile flags */
#define CSUM_CLOSE 1 #define CSUM_CLOSE 1
#define CSUM_FSYNC 2 #define CSUM_FSYNC 2
#define CSUM_HASH_IN_STREAM 4 #define CSUM_HASH_IN_STREAM 4
extern struct hashfile *hashfd(int fd, const char *name); struct hashfile *hashfd(int fd, const char *name);
extern struct hashfile *hashfd_check(const char *name); struct hashfile *hashfd_check(const char *name);
extern struct hashfile *hashfd_throughput(int fd, const char *name, struct progress *tp); struct hashfile *hashfd_throughput(int fd, const char *name, struct progress *tp);
extern int finalize_hashfile(struct hashfile *, unsigned char *, unsigned int); int finalize_hashfile(struct hashfile *, unsigned char *, unsigned int);
extern void hashwrite(struct hashfile *, const void *, unsigned int); void hashwrite(struct hashfile *, const void *, unsigned int);
extern void hashflush(struct hashfile *f); void hashflush(struct hashfile *f);
extern void crc32_begin(struct hashfile *); void crc32_begin(struct hashfile *);
extern uint32_t crc32_end(struct hashfile *); uint32_t crc32_end(struct hashfile *);
static inline void hashwrite_u8(struct hashfile *f, uint8_t data) static inline void hashwrite_u8(struct hashfile *f, uint8_t data)
{ {

View File

@ -50,12 +50,12 @@ struct decoration {
* NULL), returning the previously associated pointer. If there is no previous * NULL), returning the previously associated pointer. If there is no previous
* association, this function returns NULL. * association, this function returns NULL.
*/ */
extern void *add_decoration(struct decoration *n, const struct object *obj, void *decoration); void *add_decoration(struct decoration *n, const struct object *obj, void *decoration);
/* /*
* Return the pointer associated to the given object. If there is no * Return the pointer associated to the given object. If there is no
* association, this function returns NULL. * association, this function returns NULL.
*/ */
extern void *lookup_decoration(struct decoration *n, const struct object *obj); void *lookup_decoration(struct decoration *n, const struct object *obj);
#endif #endif

10
delta.h
View File

@ -13,7 +13,7 @@ struct delta_index;
* before free_delta_index() is called. The returned pointer must be freed * before free_delta_index() is called. The returned pointer must be freed
* using free_delta_index(). * using free_delta_index().
*/ */
extern struct delta_index * struct delta_index *
create_delta_index(const void *buf, unsigned long bufsize); create_delta_index(const void *buf, unsigned long bufsize);
/* /*
@ -21,14 +21,14 @@ create_delta_index(const void *buf, unsigned long bufsize);
* *
* Given pointer must be what create_delta_index() returned, or NULL. * Given pointer must be what create_delta_index() returned, or NULL.
*/ */
extern void free_delta_index(struct delta_index *index); void free_delta_index(struct delta_index *index);
/* /*
* sizeof_delta_index: returns memory usage of delta index * sizeof_delta_index: returns memory usage of delta index
* *
* Given pointer must be what create_delta_index() returned, or NULL. * Given pointer must be what create_delta_index() returned, or NULL.
*/ */
extern unsigned long sizeof_delta_index(struct delta_index *index); unsigned long sizeof_delta_index(struct delta_index *index);
/* /*
* create_delta: create a delta from given index for the given buffer * create_delta: create a delta from given index for the given buffer
@ -40,7 +40,7 @@ extern unsigned long sizeof_delta_index(struct delta_index *index);
* returned and *delta_size is updated with its size. The returned buffer * returned and *delta_size is updated with its size. The returned buffer
* must be freed by the caller. * must be freed by the caller.
*/ */
extern void * void *
create_delta(const struct delta_index *index, create_delta(const struct delta_index *index,
const void *buf, unsigned long bufsize, const void *buf, unsigned long bufsize,
unsigned long *delta_size, unsigned long max_delta_size); unsigned long *delta_size, unsigned long max_delta_size);
@ -75,7 +75,7 @@ diff_delta(const void *src_buf, unsigned long src_bufsize,
* *trg_bufsize is updated with its size. On failure a NULL pointer is * *trg_bufsize is updated with its size. On failure a NULL pointer is
* returned. The returned buffer must be freed by the caller. * returned. The returned buffer must be freed by the caller.
*/ */
extern void *patch_delta(const void *src_buf, unsigned long src_size, void *patch_delta(const void *src_buf, unsigned long src_size,
const void *delta_buf, unsigned long delta_size, const void *delta_buf, unsigned long delta_size,
unsigned long *dst_size); unsigned long *dst_size);

70
dir.h
View File

@ -202,7 +202,7 @@ struct dir_struct {
}; };
/*Count the number of slashes for string s*/ /*Count the number of slashes for string s*/
extern int count_slashes(const char *s); int count_slashes(const char *s);
/* /*
* The ordering of these constants is significant, with * The ordering of these constants is significant, with
@ -213,24 +213,24 @@ extern int count_slashes(const char *s);
#define MATCHED_RECURSIVELY 1 #define MATCHED_RECURSIVELY 1
#define MATCHED_FNMATCH 2 #define MATCHED_FNMATCH 2
#define MATCHED_EXACTLY 3 #define MATCHED_EXACTLY 3
extern int simple_length(const char *match); int simple_length(const char *match);
extern int no_wildcard(const char *string); int no_wildcard(const char *string);
extern char *common_prefix(const struct pathspec *pathspec); char *common_prefix(const struct pathspec *pathspec);
extern int match_pathspec(const struct index_state *istate, int match_pathspec(const struct index_state *istate,
const struct pathspec *pathspec, const struct pathspec *pathspec,
const char *name, int namelen, const char *name, int namelen,
int prefix, char *seen, int is_dir); int prefix, char *seen, int is_dir);
extern int report_path_error(const char *ps_matched, const struct pathspec *pathspec, const char *prefix); int report_path_error(const char *ps_matched, const struct pathspec *pathspec, const char *prefix);
extern int within_depth(const char *name, int namelen, int depth, int max_depth); int within_depth(const char *name, int namelen, int depth, int max_depth);
extern int fill_directory(struct dir_struct *dir, int fill_directory(struct dir_struct *dir,
struct index_state *istate, struct index_state *istate,
const struct pathspec *pathspec); const struct pathspec *pathspec);
extern int read_directory(struct dir_struct *, struct index_state *istate, int read_directory(struct dir_struct *, struct index_state *istate,
const char *path, int len, const char *path, int len,
const struct pathspec *pathspec); const struct pathspec *pathspec);
extern int is_excluded_from_list(const char *pathname, int pathlen, int is_excluded_from_list(const char *pathname, int pathlen,
const char *basename, int *dtype, const char *basename, int *dtype,
struct exclude_list *el, struct exclude_list *el,
struct index_state *istate); struct index_state *istate);
@ -242,37 +242,37 @@ struct dir_entry *dir_add_ignored(struct dir_struct *dir,
* these implement the matching logic for dir.c:excluded_from_list and * these implement the matching logic for dir.c:excluded_from_list and
* attr.c:path_matches() * attr.c:path_matches()
*/ */
extern int match_basename(const char *, int, int match_basename(const char *, int,
const char *, int, int, unsigned); const char *, int, int, unsigned);
extern int match_pathname(const char *, int, int match_pathname(const char *, int,
const char *, int, const char *, int,
const char *, int, int, unsigned); const char *, int, int, unsigned);
extern struct exclude *last_exclude_matching(struct dir_struct *dir, struct exclude *last_exclude_matching(struct dir_struct *dir,
struct index_state *istate, struct index_state *istate,
const char *name, int *dtype); const char *name, int *dtype);
extern int is_excluded(struct dir_struct *dir, int is_excluded(struct dir_struct *dir,
struct index_state *istate, struct index_state *istate,
const char *name, int *dtype); const char *name, int *dtype);
extern struct exclude_list *add_exclude_list(struct dir_struct *dir, struct exclude_list *add_exclude_list(struct dir_struct *dir,
int group_type, const char *src); int group_type, const char *src);
extern int add_excludes_from_file_to_list(const char *fname, const char *base, int baselen, int add_excludes_from_file_to_list(const char *fname, const char *base, int baselen,
struct exclude_list *el, struct index_state *istate); struct exclude_list *el, struct index_state *istate);
extern void add_excludes_from_file(struct dir_struct *, const char *fname); void add_excludes_from_file(struct dir_struct *, const char *fname);
extern int add_excludes_from_blob_to_list(struct object_id *oid, int add_excludes_from_blob_to_list(struct object_id *oid,
const char *base, int baselen, const char *base, int baselen,
struct exclude_list *el); struct exclude_list *el);
extern void parse_exclude_pattern(const char **string, int *patternlen, unsigned *flags, int *nowildcardlen); void parse_exclude_pattern(const char **string, int *patternlen, unsigned *flags, int *nowildcardlen);
extern void add_exclude(const char *string, const char *base, void add_exclude(const char *string, const char *base,
int baselen, struct exclude_list *el, int srcpos); int baselen, struct exclude_list *el, int srcpos);
extern void clear_exclude_list(struct exclude_list *el); void clear_exclude_list(struct exclude_list *el);
extern void clear_directory(struct dir_struct *dir); void clear_directory(struct dir_struct *dir);
extern int file_exists(const char *); int file_exists(const char *);
extern int is_inside_dir(const char *dir); int is_inside_dir(const char *dir);
extern int dir_inside_of(const char *subdir, const char *dir); int dir_inside_of(const char *subdir, const char *dir);
static inline int is_dot_or_dotdot(const char *name) static inline int is_dot_or_dotdot(const char *name)
{ {
@ -281,9 +281,9 @@ static inline int is_dot_or_dotdot(const char *name)
(name[1] == '.' && name[2] == '\0'))); (name[1] == '.' && name[2] == '\0')));
} }
extern int is_empty_dir(const char *dir); int is_empty_dir(const char *dir);
extern void setup_standard_excludes(struct dir_struct *dir); void setup_standard_excludes(struct dir_struct *dir);
/* Constants for remove_dir_recursively: */ /* Constants for remove_dir_recursively: */
@ -311,23 +311,23 @@ extern void setup_standard_excludes(struct dir_struct *dir);
* This function uses path as temporary scratch space, but restores it * This function uses path as temporary scratch space, but restores it
* before returning. * before returning.
*/ */
extern int remove_dir_recursively(struct strbuf *path, int flag); int remove_dir_recursively(struct strbuf *path, int flag);
/* tries to remove the path with empty directories along it, ignores ENOENT */ /* tries to remove the path with empty directories along it, ignores ENOENT */
extern int remove_path(const char *path); int remove_path(const char *path);
extern int fspathcmp(const char *a, const char *b); int fspathcmp(const char *a, const char *b);
extern int fspathncmp(const char *a, const char *b, size_t count); int fspathncmp(const char *a, const char *b, size_t count);
/* /*
* The prefix part of pattern must not contains wildcards. * The prefix part of pattern must not contains wildcards.
*/ */
struct pathspec_item; struct pathspec_item;
extern int git_fnmatch(const struct pathspec_item *item, int git_fnmatch(const struct pathspec_item *item,
const char *pattern, const char *string, const char *pattern, const char *string,
int prefix); int prefix);
extern int submodule_path_match(const struct index_state *istate, int submodule_path_match(const struct index_state *istate,
const struct pathspec *ps, const struct pathspec *ps,
const char *submodule_name, const char *submodule_name,
char *seen); char *seen);
@ -372,10 +372,10 @@ void remove_untracked_cache(struct index_state *istate);
* When `recurse_into_nested` is set, recurse into any nested submodules, * When `recurse_into_nested` is set, recurse into any nested submodules,
* connecting them as well. * connecting them as well.
*/ */
extern void connect_work_tree_and_git_dir(const char *work_tree, void connect_work_tree_and_git_dir(const char *work_tree,
const char *git_dir, const char *git_dir,
int recurse_into_nested); int recurse_into_nested);
extern void relocate_gitdir(const char *path, void relocate_gitdir(const char *path,
const char *old_git_dir, const char *old_git_dir,
const char *new_git_dir); const char *new_git_dir);
#endif #endif

View File

@ -3,14 +3,14 @@
struct argv_array; struct argv_array;
extern void git_set_exec_path(const char *exec_path); void git_set_exec_path(const char *exec_path);
extern void git_resolve_executable_dir(const char *path); void git_resolve_executable_dir(const char *path);
extern const char *git_exec_path(void); const char *git_exec_path(void);
extern void setup_path(void); void setup_path(void);
extern const char **prepare_git_cmd(struct argv_array *out, const char **argv); const char **prepare_git_cmd(struct argv_array *out, const char **argv);
extern int execv_git_cmd(const char **argv); /* NULL terminated */ int execv_git_cmd(const char **argv); /* NULL terminated */
LAST_ARG_MUST_BE_NULL LAST_ARG_MUST_BE_NULL
extern int execl_git_cmd(const char *cmd, ...); extern int execl_git_cmd(const char *cmd, ...);
extern char *system_path(const char *path); char *system_path(const char *path);
#endif /* GIT_EXEC_CMD_H */ #endif /* GIT_EXEC_CMD_H */

View File

@ -2,6 +2,6 @@
#define FMT_MERGE_MSG_H #define FMT_MERGE_MSG_H
extern int merge_log_config; extern int merge_log_config;
extern int fmt_merge_msg_config(const char *key, const char *value, void *cb); int fmt_merge_msg_config(const char *key, const char *value, void *cb);
#endif /* FMT_MERGE_MSG_H */ #endif /* FMT_MERGE_MSG_H */

View File

@ -10,31 +10,31 @@ extern struct trace_key trace_fsmonitor;
* Read the fsmonitor index extension and (if configured) restore the * Read the fsmonitor index extension and (if configured) restore the
* CE_FSMONITOR_VALID state. * CE_FSMONITOR_VALID state.
*/ */
extern int read_fsmonitor_extension(struct index_state *istate, const void *data, unsigned long sz); int read_fsmonitor_extension(struct index_state *istate, const void *data, unsigned long sz);
/* /*
* Fill the fsmonitor_dirty ewah bits with their state from the index, * Fill the fsmonitor_dirty ewah bits with their state from the index,
* before it is split during writing. * before it is split during writing.
*/ */
extern void fill_fsmonitor_bitmap(struct index_state *istate); void fill_fsmonitor_bitmap(struct index_state *istate);
/* /*
* Write the CE_FSMONITOR_VALID state into the fsmonitor index * Write the CE_FSMONITOR_VALID state into the fsmonitor index
* extension. Reads from the fsmonitor_dirty ewah in the index. * extension. Reads from the fsmonitor_dirty ewah in the index.
*/ */
extern void write_fsmonitor_extension(struct strbuf *sb, struct index_state *istate); void write_fsmonitor_extension(struct strbuf *sb, struct index_state *istate);
/* /*
* Add/remove the fsmonitor index extension * Add/remove the fsmonitor index extension
*/ */
extern void add_fsmonitor(struct index_state *istate); void add_fsmonitor(struct index_state *istate);
extern void remove_fsmonitor(struct index_state *istate); void remove_fsmonitor(struct index_state *istate);
/* /*
* Add/remove the fsmonitor index extension as necessary based on the current * Add/remove the fsmonitor index extension as necessary based on the current
* core.fsmonitor setting. * core.fsmonitor setting.
*/ */
extern void tweak_fsmonitor(struct index_state *istate); void tweak_fsmonitor(struct index_state *istate);
/* /*
* Run the configured fsmonitor integration script and clear the * Run the configured fsmonitor integration script and clear the
@ -42,7 +42,7 @@ extern void tweak_fsmonitor(struct index_state *istate);
* any corresponding untracked cache directory structures. Optimized to only * any corresponding untracked cache directory structures. Optimized to only
* run the first time it is called. * run the first time it is called.
*/ */
extern void refresh_fsmonitor(struct index_state *istate); void refresh_fsmonitor(struct index_state *istate);
/* /*
* Set the given cache entries CE_FSMONITOR_VALID bit. This should be * Set the given cache entries CE_FSMONITOR_VALID bit. This should be

View File

@ -28,11 +28,11 @@
#define FORMAT_PRESERVING(n) __attribute__((format_arg(n))) #define FORMAT_PRESERVING(n) __attribute__((format_arg(n)))
extern int use_gettext_poison(void); int use_gettext_poison(void);
#ifndef NO_GETTEXT #ifndef NO_GETTEXT
extern void git_setup_gettext(void); void git_setup_gettext(void);
extern int gettext_width(const char *s); int gettext_width(const char *s);
#else #else
static inline void git_setup_gettext(void) static inline void git_setup_gettext(void)
{ {
@ -87,6 +87,6 @@ const char *Q_(const char *msgid, const char *plu, unsigned long n)
#endif #endif
const char *get_preferred_languages(void); const char *get_preferred_languages(void);
extern int is_utf8_locale(void); int is_utf8_locale(void);
#endif #endif

View File

@ -249,7 +249,7 @@ typedef unsigned long uintptr_t;
#ifdef MKDIR_WO_TRAILING_SLASH #ifdef MKDIR_WO_TRAILING_SLASH
#define mkdir(a,b) compat_mkdir_wo_trailing_slash((a),(b)) #define mkdir(a,b) compat_mkdir_wo_trailing_slash((a),(b))
extern int compat_mkdir_wo_trailing_slash(const char*, mode_t); int compat_mkdir_wo_trailing_slash(const char*, mode_t);
#endif #endif
#ifdef NO_STRUCT_ITIMERVAL #ifdef NO_STRUCT_ITIMERVAL
@ -267,9 +267,9 @@ struct itimerval {
#include <libgen.h> #include <libgen.h>
#else #else
#define basename gitbasename #define basename gitbasename
extern char *gitbasename(char *); char *gitbasename(char *);
#define dirname gitdirname #define dirname gitdirname
extern char *gitdirname(char *); char *gitdirname(char *);
#endif #endif
#ifndef NO_ICONV #ifndef NO_ICONV
@ -446,8 +446,8 @@ static inline char *git_find_last_dir_sep(const char *path)
struct strbuf; struct strbuf;
/* General helper functions */ /* General helper functions */
extern void vreportf(const char *prefix, const char *err, va_list params); void vreportf(const char *prefix, const char *err, va_list params);
extern NORETURN void usage(const char *err); NORETURN void usage(const char *err);
extern NORETURN void usagef(const char *err, ...) __attribute__((format (printf, 1, 2))); extern NORETURN void usagef(const char *err, ...) __attribute__((format (printf, 1, 2)));
extern NORETURN void die(const char *err, ...) __attribute__((format (printf, 1, 2))); extern NORETURN void die(const char *err, ...) __attribute__((format (printf, 1, 2)));
extern NORETURN void die_errno(const char *err, ...) __attribute__((format (printf, 1, 2))); extern NORETURN void die_errno(const char *err, ...) __attribute__((format (printf, 1, 2)));
@ -482,15 +482,15 @@ static inline int const_error(void)
#define error_errno(...) (error_errno(__VA_ARGS__), const_error()) #define error_errno(...) (error_errno(__VA_ARGS__), const_error())
#endif #endif
extern void set_die_routine(NORETURN_PTR void (*routine)(const char *err, va_list params)); void set_die_routine(NORETURN_PTR void (*routine)(const char *err, va_list params));
extern void set_error_routine(void (*routine)(const char *err, va_list params)); void set_error_routine(void (*routine)(const char *err, va_list params));
extern void (*get_error_routine(void))(const char *err, va_list params); extern void (*get_error_routine(void))(const char *err, va_list params);
extern void set_warn_routine(void (*routine)(const char *warn, va_list params)); void set_warn_routine(void (*routine)(const char *warn, va_list params));
extern void (*get_warn_routine(void))(const char *warn, va_list params); extern void (*get_warn_routine(void))(const char *warn, va_list params);
extern void set_die_is_recursing_routine(int (*routine)(void)); void set_die_is_recursing_routine(int (*routine)(void));
extern int starts_with(const char *str, const char *prefix); int starts_with(const char *str, const char *prefix);
extern int istarts_with(const char *str, const char *prefix); int istarts_with(const char *str, const char *prefix);
/* /*
* If the string "str" begins with the string found in "prefix", return 1. * If the string "str" begins with the string found in "prefix", return 1.
@ -613,8 +613,8 @@ static inline int ends_with(const char *str, const char *suffix)
#define mmap git_mmap #define mmap git_mmap
#define munmap git_munmap #define munmap git_munmap
extern void *git_mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset); void *git_mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);
extern int git_munmap(void *start, size_t length); int git_munmap(void *start, size_t length);
#else /* NO_MMAP || USE_WIN32_MMAP */ #else /* NO_MMAP || USE_WIN32_MMAP */
@ -668,17 +668,17 @@ extern int git_munmap(void *start, size_t length);
#undef stat #undef stat
#endif #endif
#define stat(path, buf) git_stat(path, buf) #define stat(path, buf) git_stat(path, buf)
extern int git_stat(const char *, struct stat *); int git_stat(const char *, struct stat *);
#ifdef fstat #ifdef fstat
#undef fstat #undef fstat
#endif #endif
#define fstat(fd, buf) git_fstat(fd, buf) #define fstat(fd, buf) git_fstat(fd, buf)
extern int git_fstat(int, struct stat *); int git_fstat(int, struct stat *);
#ifdef lstat #ifdef lstat
#undef lstat #undef lstat
#endif #endif
#define lstat(path, buf) git_lstat(path, buf) #define lstat(path, buf) git_lstat(path, buf)
extern int git_lstat(const char *, struct stat *); int git_lstat(const char *, struct stat *);
#endif #endif
#define DEFAULT_PACKED_GIT_LIMIT \ #define DEFAULT_PACKED_GIT_LIMIT \
@ -686,50 +686,50 @@ extern int git_lstat(const char *, struct stat *);
#ifdef NO_PREAD #ifdef NO_PREAD
#define pread git_pread #define pread git_pread
extern ssize_t git_pread(int fd, void *buf, size_t count, off_t offset); ssize_t git_pread(int fd, void *buf, size_t count, off_t offset);
#endif #endif
/* /*
* Forward decl that will remind us if its twin in cache.h changes. * Forward decl that will remind us if its twin in cache.h changes.
* This function is used in compat/pread.c. But we can't include * This function is used in compat/pread.c. But we can't include
* cache.h there. * cache.h there.
*/ */
extern ssize_t read_in_full(int fd, void *buf, size_t count); ssize_t read_in_full(int fd, void *buf, size_t count);
#ifdef NO_SETENV #ifdef NO_SETENV
#define setenv gitsetenv #define setenv gitsetenv
extern int gitsetenv(const char *, const char *, int); int gitsetenv(const char *, const char *, int);
#endif #endif
#ifdef NO_MKDTEMP #ifdef NO_MKDTEMP
#define mkdtemp gitmkdtemp #define mkdtemp gitmkdtemp
extern char *gitmkdtemp(char *); char *gitmkdtemp(char *);
#endif #endif
#ifdef NO_UNSETENV #ifdef NO_UNSETENV
#define unsetenv gitunsetenv #define unsetenv gitunsetenv
extern void gitunsetenv(const char *); void gitunsetenv(const char *);
#endif #endif
#ifdef NO_STRCASESTR #ifdef NO_STRCASESTR
#define strcasestr gitstrcasestr #define strcasestr gitstrcasestr
extern char *gitstrcasestr(const char *haystack, const char *needle); char *gitstrcasestr(const char *haystack, const char *needle);
#endif #endif
#ifdef NO_STRLCPY #ifdef NO_STRLCPY
#define strlcpy gitstrlcpy #define strlcpy gitstrlcpy
extern size_t gitstrlcpy(char *, const char *, size_t); size_t gitstrlcpy(char *, const char *, size_t);
#endif #endif
#ifdef NO_STRTOUMAX #ifdef NO_STRTOUMAX
#define strtoumax gitstrtoumax #define strtoumax gitstrtoumax
extern uintmax_t gitstrtoumax(const char *, char **, int); uintmax_t gitstrtoumax(const char *, char **, int);
#define strtoimax gitstrtoimax #define strtoimax gitstrtoimax
extern intmax_t gitstrtoimax(const char *, char **, int); intmax_t gitstrtoimax(const char *, char **, int);
#endif #endif
#ifdef NO_HSTRERROR #ifdef NO_HSTRERROR
#define hstrerror githstrerror #define hstrerror githstrerror
extern const char *githstrerror(int herror); const char *githstrerror(int herror);
#endif #endif
#ifdef NO_MEMMEM #ifdef NO_MEMMEM
@ -761,7 +761,7 @@ char *gitstrdup(const char *s);
# endif # endif
# define fopen(a,b) git_fopen(a,b) # define fopen(a,b) git_fopen(a,b)
# endif # endif
extern FILE *git_fopen(const char*, const char*); FILE *git_fopen(const char*, const char*);
#endif #endif
#ifdef SNPRINTF_RETURNS_BOGUS #ifdef SNPRINTF_RETURNS_BOGUS
@ -775,7 +775,7 @@ extern int git_snprintf(char *str, size_t maxsize,
#undef vsnprintf #undef vsnprintf
#endif #endif
#define vsnprintf git_vsnprintf #define vsnprintf git_vsnprintf
extern int git_vsnprintf(char *str, size_t maxsize, int git_vsnprintf(char *str, size_t maxsize,
const char *format, va_list ap); const char *format, va_list ap);
#endif #endif
@ -805,11 +805,11 @@ const char *inet_ntop(int af, const void *src, char *dst, size_t size);
#ifdef NO_PTHREADS #ifdef NO_PTHREADS
#define atexit git_atexit #define atexit git_atexit
extern int git_atexit(void (*handler)(void)); int git_atexit(void (*handler)(void));
#endif #endif
typedef void (*try_to_free_t)(size_t); typedef void (*try_to_free_t)(size_t);
extern try_to_free_t set_try_to_free_routine(try_to_free_t); try_to_free_t set_try_to_free_routine(try_to_free_t);
static inline size_t st_add(size_t a, size_t b) static inline size_t st_add(size_t a, size_t b)
{ {
@ -845,28 +845,28 @@ static inline size_t st_sub(size_t a, size_t b)
# define xalloca(size) (xmalloc(size)) # define xalloca(size) (xmalloc(size))
# define xalloca_free(p) (free(p)) # define xalloca_free(p) (free(p))
#endif #endif
extern char *xstrdup(const char *str); char *xstrdup(const char *str);
extern void *xmalloc(size_t size); void *xmalloc(size_t size);
extern void *xmallocz(size_t size); void *xmallocz(size_t size);
extern void *xmallocz_gently(size_t size); void *xmallocz_gently(size_t size);
extern void *xmemdupz(const void *data, size_t len); void *xmemdupz(const void *data, size_t len);
extern char *xstrndup(const char *str, size_t len); char *xstrndup(const char *str, size_t len);
extern void *xrealloc(void *ptr, size_t size); void *xrealloc(void *ptr, size_t size);
extern void *xcalloc(size_t nmemb, size_t size); void *xcalloc(size_t nmemb, size_t size);
extern void *xmmap(void *start, size_t length, int prot, int flags, int fd, off_t offset); void *xmmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);
extern void *xmmap_gently(void *start, size_t length, int prot, int flags, int fd, off_t offset); void *xmmap_gently(void *start, size_t length, int prot, int flags, int fd, off_t offset);
extern int xopen(const char *path, int flags, ...); extern int xopen(const char *path, int flags, ...);
extern ssize_t xread(int fd, void *buf, size_t len); ssize_t xread(int fd, void *buf, size_t len);
extern ssize_t xwrite(int fd, const void *buf, size_t len); ssize_t xwrite(int fd, const void *buf, size_t len);
extern ssize_t xpread(int fd, void *buf, size_t len, off_t offset); ssize_t xpread(int fd, void *buf, size_t len, off_t offset);
extern int xdup(int fd); int xdup(int fd);
extern FILE *xfopen(const char *path, const char *mode); FILE *xfopen(const char *path, const char *mode);
extern FILE *xfdopen(int fd, const char *mode); FILE *xfdopen(int fd, const char *mode);
extern int xmkstemp(char *temp_filename); int xmkstemp(char *temp_filename);
extern int xmkstemp_mode(char *temp_filename, int mode); int xmkstemp_mode(char *temp_filename, int mode);
extern char *xgetcwd(void); char *xgetcwd(void);
extern FILE *fopen_for_writing(const char *path); FILE *fopen_for_writing(const char *path);
extern FILE *fopen_or_warn(const char *path, const char *mode); FILE *fopen_or_warn(const char *path, const char *mode);
/* /*
* FREE_AND_NULL(ptr) is like free(ptr) followed by ptr = NULL. Note * FREE_AND_NULL(ptr) is like free(ptr) followed by ptr = NULL. Note
@ -972,7 +972,7 @@ extern int xsnprintf(char *dst, size_t max, const char *fmt, ...);
#define HOST_NAME_MAX 256 #define HOST_NAME_MAX 256
#endif #endif
extern int xgethostname(char *buf, size_t len); int xgethostname(char *buf, size_t len);
/* in ctype.c, for kwset users */ /* in ctype.c, for kwset users */
extern const unsigned char tolower_trans_tbl[256]; extern const unsigned char tolower_trans_tbl[256];
@ -1257,7 +1257,7 @@ static inline int is_missing_file_error(int errno_)
return (errno_ == ENOENT || errno_ == ENOTDIR); return (errno_ == ENOENT || errno_ == ENOTDIR);
} }
extern int cmd_main(int, const char **); int cmd_main(int, const char **);
/* /*
* Intercept all calls to exit() and route them to trace2 to * Intercept all calls to exit() and route them to trace2 to
@ -1280,7 +1280,7 @@ int trace2_cmd_exit_fl(const char *file, int line, int code);
* an annotation, and does nothing in non-leak-checking builds. * an annotation, and does nothing in non-leak-checking builds.
*/ */
#ifdef SUPPRESS_ANNOTATED_LEAKS #ifdef SUPPRESS_ANNOTATED_LEAKS
extern void unleak_memory(const void *ptr, size_t len); void unleak_memory(const void *ptr, size_t len);
#define UNLEAK(var) unleak_memory(&(var), sizeof(var)) #define UNLEAK(var) unleak_memory(&(var), sizeof(var))
#else #else
#define UNLEAK(var) do {} while (0) #define UNLEAK(var) do {} while (0)

22
grep.h
View File

@ -186,17 +186,17 @@ struct grep_opt {
void *output_priv; void *output_priv;
}; };
extern void init_grep_defaults(struct repository *); void init_grep_defaults(struct repository *);
extern int grep_config(const char *var, const char *value, void *); int grep_config(const char *var, const char *value, void *);
extern void grep_init(struct grep_opt *, struct repository *repo, const char *prefix); void grep_init(struct grep_opt *, struct repository *repo, const char *prefix);
void grep_commit_pattern_type(enum grep_pattern_type, struct grep_opt *opt); void grep_commit_pattern_type(enum grep_pattern_type, struct grep_opt *opt);
extern void append_grep_pat(struct grep_opt *opt, const char *pat, size_t patlen, const char *origin, int no, enum grep_pat_token t); void append_grep_pat(struct grep_opt *opt, const char *pat, size_t patlen, const char *origin, int no, enum grep_pat_token t);
extern void append_grep_pattern(struct grep_opt *opt, const char *pat, const char *origin, int no, enum grep_pat_token t); void append_grep_pattern(struct grep_opt *opt, const char *pat, const char *origin, int no, enum grep_pat_token t);
extern void append_header_grep_pattern(struct grep_opt *, enum grep_header_field, const char *); void append_header_grep_pattern(struct grep_opt *, enum grep_header_field, const char *);
extern void compile_grep_patterns(struct grep_opt *opt); void compile_grep_patterns(struct grep_opt *opt);
extern void free_grep_patterns(struct grep_opt *opt); void free_grep_patterns(struct grep_opt *opt);
extern int grep_buffer(struct grep_opt *opt, char *buf, unsigned long size); int grep_buffer(struct grep_opt *opt, char *buf, unsigned long size);
struct grep_source { struct grep_source {
char *name; char *name;
@ -226,8 +226,8 @@ void grep_source_load_driver(struct grep_source *gs,
int grep_source(struct grep_opt *opt, struct grep_source *gs); int grep_source(struct grep_opt *opt, struct grep_source *gs);
extern struct grep_opt *grep_opt_dup(const struct grep_opt *opt); struct grep_opt *grep_opt_dup(const struct grep_opt *opt);
extern int grep_threads_ok(const struct grep_opt *opt); int grep_threads_ok(const struct grep_opt *opt);
/* /*
* Mutex used around access to the attributes machinery if * Mutex used around access to the attributes machinery if

View File

@ -104,11 +104,11 @@
* `memihash_cont` is a variant of `memihash` that allows a computation to be * `memihash_cont` is a variant of `memihash` that allows a computation to be
* continued with another chunk of data. * continued with another chunk of data.
*/ */
extern unsigned int strhash(const char *buf); unsigned int strhash(const char *buf);
extern unsigned int strihash(const char *buf); unsigned int strihash(const char *buf);
extern unsigned int memhash(const void *buf, size_t len); unsigned int memhash(const void *buf, size_t len);
extern unsigned int memihash(const void *buf, size_t len); unsigned int memihash(const void *buf, size_t len);
extern unsigned int memihash_cont(unsigned int hash_seed, const void *buf, size_t len); unsigned int memihash_cont(unsigned int hash_seed, const void *buf, size_t len);
/* /*
* Converts a cryptographic hash (e.g. SHA-1) into an int-sized hash code * Converts a cryptographic hash (e.g. SHA-1) into an int-sized hash code
@ -216,7 +216,7 @@ struct hashmap {
* parameter may be used to preallocate a sufficiently large table and thus * parameter may be used to preallocate a sufficiently large table and thus
* prevent expensive resizing. If 0, the table is dynamically resized. * prevent expensive resizing. If 0, the table is dynamically resized.
*/ */
extern void hashmap_init(struct hashmap *map, void hashmap_init(struct hashmap *map,
hashmap_cmp_fn equals_function, hashmap_cmp_fn equals_function,
const void *equals_function_data, const void *equals_function_data,
size_t initial_size); size_t initial_size);
@ -227,7 +227,7 @@ extern void hashmap_init(struct hashmap *map,
* If `free_entries` is true, each hashmap_entry in the map is freed as well * If `free_entries` is true, each hashmap_entry in the map is freed as well
* using stdlibs free(). * using stdlibs free().
*/ */
extern void hashmap_free(struct hashmap *map, int free_entries); void hashmap_free(struct hashmap *map, int free_entries);
/* hashmap_entry functions */ /* hashmap_entry functions */
@ -284,7 +284,7 @@ static inline unsigned int hashmap_get_size(struct hashmap *map)
* If an entry with matching hash code is found, `key` and `keydata` are passed * If an entry with matching hash code is found, `key` and `keydata` are passed
* to `hashmap_cmp_fn` to decide whether the entry matches the key. * to `hashmap_cmp_fn` to decide whether the entry matches the key.
*/ */
extern void *hashmap_get(const struct hashmap *map, const void *key, void *hashmap_get(const struct hashmap *map, const void *key,
const void *keydata); const void *keydata);
/* /*
@ -316,7 +316,7 @@ static inline void *hashmap_get_from_hash(const struct hashmap *map,
* `entry` is the hashmap_entry to start the search from, obtained via a previous * `entry` is the hashmap_entry to start the search from, obtained via a previous
* call to `hashmap_get` or `hashmap_get_next`. * call to `hashmap_get` or `hashmap_get_next`.
*/ */
extern void *hashmap_get_next(const struct hashmap *map, const void *entry); void *hashmap_get_next(const struct hashmap *map, const void *entry);
/* /*
* Adds a hashmap entry. This allows to add duplicate entries (i.e. * Adds a hashmap entry. This allows to add duplicate entries (i.e.
@ -325,7 +325,7 @@ extern void *hashmap_get_next(const struct hashmap *map, const void *entry);
* `map` is the hashmap structure. * `map` is the hashmap structure.
* `entry` is the entry to add. * `entry` is the entry to add.
*/ */
extern void hashmap_add(struct hashmap *map, void *entry); void hashmap_add(struct hashmap *map, void *entry);
/* /*
* Adds or replaces a hashmap entry. If the hashmap contains duplicate * Adds or replaces a hashmap entry. If the hashmap contains duplicate
@ -335,7 +335,7 @@ extern void hashmap_add(struct hashmap *map, void *entry);
* `entry` is the entry to add or replace. * `entry` is the entry to add or replace.
* Returns the replaced entry, or NULL if not found (i.e. the entry was added). * Returns the replaced entry, or NULL if not found (i.e. the entry was added).
*/ */
extern void *hashmap_put(struct hashmap *map, void *entry); void *hashmap_put(struct hashmap *map, void *entry);
/* /*
* Removes a hashmap entry matching the specified key. If the hashmap contains * Removes a hashmap entry matching the specified key. If the hashmap contains
@ -344,7 +344,7 @@ extern void *hashmap_put(struct hashmap *map, void *entry);
* *
* Argument explanation is the same as in `hashmap_get`. * Argument explanation is the same as in `hashmap_get`.
*/ */
extern void *hashmap_remove(struct hashmap *map, const void *key, void *hashmap_remove(struct hashmap *map, const void *key,
const void *keydata); const void *keydata);
/* /*
@ -365,10 +365,10 @@ struct hashmap_iter {
}; };
/* Initializes a `hashmap_iter` structure. */ /* Initializes a `hashmap_iter` structure. */
extern void hashmap_iter_init(struct hashmap *map, struct hashmap_iter *iter); void hashmap_iter_init(struct hashmap *map, struct hashmap_iter *iter);
/* Returns the next hashmap_entry, or NULL if there are no more entries. */ /* Returns the next hashmap_entry, or NULL if there are no more entries. */
extern void *hashmap_iter_next(struct hashmap_iter *iter); void *hashmap_iter_next(struct hashmap_iter *iter);
/* Initializes the iterator and returns the first entry, if any. */ /* Initializes the iterator and returns the first entry, if any. */
static inline void *hashmap_iter_first(struct hashmap *map, static inline void *hashmap_iter_first(struct hashmap *map,
@ -429,7 +429,7 @@ static inline void hashmap_enable_item_counting(struct hashmap *map)
* *
* Uses a hashmap to store the pool of interned strings. * Uses a hashmap to store the pool of interned strings.
*/ */
extern const void *memintern(const void *data, size_t len); const void *memintern(const void *data, size_t len);
static inline const char *strintern(const char *string) static inline const char *strintern(const char *string)
{ {
return memintern(string, strlen(string)); return memintern(string, strlen(string));

30
help.h
View File

@ -19,31 +19,31 @@ static inline void mput_char(char c, unsigned int num)
putchar(c); putchar(c);
} }
extern void list_common_cmds_help(void); void list_common_cmds_help(void);
extern void list_all_cmds_help(void); void list_all_cmds_help(void);
extern void list_common_guides_help(void); void list_common_guides_help(void);
extern void list_config_help(int for_human); void list_config_help(int for_human);
extern void list_all_main_cmds(struct string_list *list); void list_all_main_cmds(struct string_list *list);
extern void list_all_other_cmds(struct string_list *list); void list_all_other_cmds(struct string_list *list);
extern void list_cmds_by_category(struct string_list *list, void list_cmds_by_category(struct string_list *list,
const char *category); const char *category);
extern void list_cmds_by_config(struct string_list *list); void list_cmds_by_config(struct string_list *list);
extern const char *help_unknown_cmd(const char *cmd); const char *help_unknown_cmd(const char *cmd);
extern void load_command_list(const char *prefix, void load_command_list(const char *prefix,
struct cmdnames *main_cmds, struct cmdnames *main_cmds,
struct cmdnames *other_cmds); struct cmdnames *other_cmds);
extern void add_cmdname(struct cmdnames *cmds, const char *name, int len); void add_cmdname(struct cmdnames *cmds, const char *name, int len);
/* Here we require that excludes is a sorted list. */ /* Here we require that excludes is a sorted list. */
extern void exclude_cmds(struct cmdnames *cmds, struct cmdnames *excludes); void exclude_cmds(struct cmdnames *cmds, struct cmdnames *excludes);
extern int is_in_cmdlist(struct cmdnames *cmds, const char *name); int is_in_cmdlist(struct cmdnames *cmds, const char *name);
extern void list_commands(unsigned int colopts, struct cmdnames *main_cmds, struct cmdnames *other_cmds); void list_commands(unsigned int colopts, struct cmdnames *main_cmds, struct cmdnames *other_cmds);
/* /*
* call this to die(), when it is suspected that the user mistyped a * call this to die(), when it is suspected that the user mistyped a
* ref to the command, to give suggested "correct" refs. * ref to the command, to give suggested "correct" refs.
*/ */
extern void help_unknown_ref(const char *ref, const char *cmd, const char *error); void help_unknown_ref(const char *ref, const char *cmd, const char *error);
static inline void list_config_item(struct string_list *list, static inline void list_config_item(struct string_list *list,
const char *prefix, const char *prefix,

52
http.h
View File

@ -75,18 +75,18 @@ struct buffer {
}; };
/* Curl request read/write callbacks */ /* Curl request read/write callbacks */
extern size_t fread_buffer(char *ptr, size_t eltsize, size_t nmemb, void *strbuf); size_t fread_buffer(char *ptr, size_t eltsize, size_t nmemb, void *strbuf);
extern size_t fwrite_buffer(char *ptr, size_t eltsize, size_t nmemb, void *strbuf); size_t fwrite_buffer(char *ptr, size_t eltsize, size_t nmemb, void *strbuf);
extern size_t fwrite_null(char *ptr, size_t eltsize, size_t nmemb, void *strbuf); size_t fwrite_null(char *ptr, size_t eltsize, size_t nmemb, void *strbuf);
#ifndef NO_CURL_IOCTL #ifndef NO_CURL_IOCTL
extern curlioerr ioctl_buffer(CURL *handle, int cmd, void *clientp); curlioerr ioctl_buffer(CURL *handle, int cmd, void *clientp);
#endif #endif
/* Slot lifecycle functions */ /* Slot lifecycle functions */
extern struct active_request_slot *get_active_slot(void); struct active_request_slot *get_active_slot(void);
extern int start_active_slot(struct active_request_slot *slot); int start_active_slot(struct active_request_slot *slot);
extern void run_active_slot(struct active_request_slot *slot); void run_active_slot(struct active_request_slot *slot);
extern void finish_all_active_slots(void); void finish_all_active_slots(void);
/* /*
* This will run one slot to completion in a blocking manner, similar to how * This will run one slot to completion in a blocking manner, similar to how
@ -98,15 +98,15 @@ int run_one_slot(struct active_request_slot *slot,
struct slot_results *results); struct slot_results *results);
#ifdef USE_CURL_MULTI #ifdef USE_CURL_MULTI
extern void fill_active_slots(void); void fill_active_slots(void);
extern void add_fill_function(void *data, int (*fill)(void *)); void add_fill_function(void *data, int (*fill)(void *));
extern void step_active_slots(void); void step_active_slots(void);
#endif #endif
extern void http_init(struct remote *remote, const char *url, void http_init(struct remote *remote, const char *url,
int proactive_auth); int proactive_auth);
extern void http_cleanup(void); void http_cleanup(void);
extern struct curl_slist *http_copy_default_headers(void); struct curl_slist *http_copy_default_headers(void);
extern long int git_curl_ipresolve; extern long int git_curl_ipresolve;
extern int active_requests; extern int active_requests;
@ -146,10 +146,10 @@ void normalize_curl_result(CURLcode *result, long http_code, char *errorstr,
size_t errorlen); size_t errorlen);
/* Helpers for modifying and creating URLs */ /* Helpers for modifying and creating URLs */
extern void append_remote_object_url(struct strbuf *buf, const char *url, void append_remote_object_url(struct strbuf *buf, const char *url,
const char *hex, const char *hex,
int only_two_digit_prefix); int only_two_digit_prefix);
extern char *get_remote_object_url(const char *url, const char *hex, char *get_remote_object_url(const char *url, const char *hex,
int only_two_digit_prefix); int only_two_digit_prefix);
/* Options for http_get_*() */ /* Options for http_get_*() */
@ -204,10 +204,10 @@ struct http_get_options {
*/ */
int http_get_strbuf(const char *url, struct strbuf *result, struct http_get_options *options); int http_get_strbuf(const char *url, struct strbuf *result, struct http_get_options *options);
extern int http_fetch_ref(const char *base, struct ref *ref); int http_fetch_ref(const char *base, struct ref *ref);
/* Helpers for fetching packs */ /* Helpers for fetching packs */
extern int http_get_info_packs(const char *base_url, int http_get_info_packs(const char *base_url,
struct packed_git **packs_head); struct packed_git **packs_head);
struct http_pack_request { struct http_pack_request {
@ -219,10 +219,10 @@ struct http_pack_request {
struct active_request_slot *slot; struct active_request_slot *slot;
}; };
extern struct http_pack_request *new_http_pack_request( struct http_pack_request *new_http_pack_request(
struct packed_git *target, const char *base_url); struct packed_git *target, const char *base_url);
extern int finish_http_pack_request(struct http_pack_request *preq); int finish_http_pack_request(struct http_pack_request *preq);
extern void release_http_pack_request(struct http_pack_request *preq); void release_http_pack_request(struct http_pack_request *preq);
/* Helpers for fetching object */ /* Helpers for fetching object */
struct http_object_request { struct http_object_request {
@ -241,12 +241,12 @@ struct http_object_request {
struct active_request_slot *slot; struct active_request_slot *slot;
}; };
extern struct http_object_request *new_http_object_request( struct http_object_request *new_http_object_request(
const char *base_url, const struct object_id *oid); const char *base_url, const struct object_id *oid);
extern void process_http_object_request(struct http_object_request *freq); void process_http_object_request(struct http_object_request *freq);
extern int finish_http_object_request(struct http_object_request *freq); int finish_http_object_request(struct http_object_request *freq);
extern void abort_http_object_request(struct http_object_request *freq); void abort_http_object_request(struct http_object_request *freq);
extern void release_http_object_request(struct http_object_request *freq); void release_http_object_request(struct http_object_request *freq);
/* setup routine for curl_easy_setopt CURLOPT_DEBUGFUNCTION */ /* setup routine for curl_easy_setopt CURLOPT_DEBUGFUNCTION */
void setup_curl_trace(CURL *handle); void setup_curl_trace(CURL *handle);

10
kwset.h
View File

@ -37,16 +37,16 @@ typedef struct kwset_t* kwset_t;
if enough memory cannot be obtained. The argument if non-NULL if enough memory cannot be obtained. The argument if non-NULL
specifies a table of character translations to be applied to all specifies a table of character translations to be applied to all
pattern and search text. */ pattern and search text. */
extern kwset_t kwsalloc(unsigned char const *); kwset_t kwsalloc(unsigned char const *);
/* Incrementally extend the keyword set to include the given string. /* Incrementally extend the keyword set to include the given string.
Return NULL for success, or an error message. Remember an index Return NULL for success, or an error message. Remember an index
number for each keyword included in the set. */ number for each keyword included in the set. */
extern const char *kwsincr(kwset_t, char const *, size_t); const char *kwsincr(kwset_t, char const *, size_t);
/* When the keyword set has been completely built, prepare it for /* When the keyword set has been completely built, prepare it for
use. Return NULL for success, or an error message. */ use. Return NULL for success, or an error message. */
extern const char *kwsprep(kwset_t); const char *kwsprep(kwset_t);
/* Search through the given buffer for a member of the keyword set. /* Search through the given buffer for a member of the keyword set.
Return a pointer to the leftmost longest match found, or NULL if Return a pointer to the leftmost longest match found, or NULL if
@ -54,8 +54,8 @@ extern const char *kwsprep(kwset_t);
the matching substring in the integer it points to. Similarly, the matching substring in the integer it points to. Similarly,
if foundindex is non-NULL, store the index of the particular if foundindex is non-NULL, store the index of the particular
keyword found therein. */ keyword found therein. */
extern size_t kwsexec(kwset_t, char const *, size_t, struct kwsmatch *); size_t kwsexec(kwset_t, char const *, size_t, struct kwsmatch *);
/* Deallocate the given keyword set and all its associated storage. */ /* Deallocate the given keyword set and all its associated storage. */
extern void kwsfree(kwset_t); void kwsfree(kwset_t);

View File

@ -25,17 +25,17 @@ struct diff_ranges {
struct range_set target; struct range_set target;
}; };
extern void range_set_init(struct range_set *, size_t prealloc); void range_set_init(struct range_set *, size_t prealloc);
extern void range_set_release(struct range_set *); void range_set_release(struct range_set *);
/* Range includes start; excludes end */ /* Range includes start; excludes end */
extern void range_set_append_unsafe(struct range_set *, long start, long end); void range_set_append_unsafe(struct range_set *, long start, long end);
/* New range must begin at or after end of last added range */ /* New range must begin at or after end of last added range */
extern void range_set_append(struct range_set *, long start, long end); void range_set_append(struct range_set *, long start, long end);
/* /*
* In-place pass of sorting and merging the ranges in the range set, * In-place pass of sorting and merging the ranges in the range set,
* to sort and make the ranges disjoint. * to sort and make the ranges disjoint.
*/ */
extern void sort_and_merge_range_set(struct range_set *); void sort_and_merge_range_set(struct range_set *);
/* Linked list of interesting files and their associated ranges. The /* Linked list of interesting files and their associated ranges. The
* list must be kept sorted by path. * list must be kept sorted by path.
@ -54,10 +54,10 @@ struct line_log_data {
struct diff_ranges diff; struct diff_ranges diff;
}; };
extern void line_log_init(struct rev_info *rev, const char *prefix, struct string_list *args); void line_log_init(struct rev_info *rev, const char *prefix, struct string_list *args);
extern int line_log_filter(struct rev_info *rev); int line_log_filter(struct rev_info *rev);
extern int line_log_print(struct rev_info *rev, struct commit *commit); int line_log_print(struct rev_info *rev, struct commit *commit);
#endif /* LINE_LOG_H */ #endif /* LINE_LOG_H */

View File

@ -159,7 +159,7 @@ struct lock_file {
* timeout_ms is -1, retry indefinitely. The flags argument and error * timeout_ms is -1, retry indefinitely. The flags argument and error
* handling are described above. * handling are described above.
*/ */
extern int hold_lock_file_for_update_timeout( int hold_lock_file_for_update_timeout(
struct lock_file *lk, const char *path, struct lock_file *lk, const char *path,
int flags, long timeout_ms); int flags, long timeout_ms);
@ -188,7 +188,7 @@ static inline int is_lock_file_locked(struct lock_file *lk)
* of `hold_lock_file_for_update()` to lock `path`. `err` should be the * of `hold_lock_file_for_update()` to lock `path`. `err` should be the
* `errno` set by the failing call. * `errno` set by the failing call.
*/ */
extern void unable_to_lock_message(const char *path, int err, void unable_to_lock_message(const char *path, int err,
struct strbuf *buf); struct strbuf *buf);
/* /*
@ -197,7 +197,7 @@ extern void unable_to_lock_message(const char *path, int err,
* `errno` set by the failing * `errno` set by the failing
* call. * call.
*/ */
extern NORETURN void unable_to_lock_die(const char *path, int err); NORETURN void unable_to_lock_die(const char *path, int err);
/* /*
* Associate a stdio stream with the lockfile (which must still be * Associate a stdio stream with the lockfile (which must still be
@ -234,7 +234,7 @@ static inline FILE *get_lock_file_fp(struct lock_file *lk)
* Return the path of the file that is locked by the specified * Return the path of the file that is locked by the specified
* lock_file object. The caller must free the memory. * lock_file object. The caller must free the memory.
*/ */
extern char *get_locked_file_path(struct lock_file *lk); char *get_locked_file_path(struct lock_file *lk);
/* /*
* If the lockfile is still open, close it (and the file pointer if it * If the lockfile is still open, close it (and the file pointer if it
@ -282,7 +282,7 @@ static inline int reopen_lock_file(struct lock_file *lk)
* call `commit_lock_file()` for a `lock_file` object that is not * call `commit_lock_file()` for a `lock_file` object that is not
* currently locked. * currently locked.
*/ */
extern int commit_lock_file(struct lock_file *lk); int commit_lock_file(struct lock_file *lk);
/* /*
* Like `commit_lock_file()`, but rename the lockfile to the provided * Like `commit_lock_file()`, but rename the lockfile to the provided

View File

@ -4,7 +4,7 @@
struct repository; struct repository;
struct argv_array; struct argv_array;
struct packet_reader; struct packet_reader;
extern int ls_refs(struct repository *r, struct argv_array *keys, int ls_refs(struct repository *r, struct argv_array *keys,
struct packet_reader *request); struct packet_reader *request);
#endif /* LS_REFS_H */ #endif /* LS_REFS_H */

View File

@ -39,8 +39,8 @@ struct mailinfo {
int input_error; int input_error;
}; };
extern void setup_mailinfo(struct mailinfo *); void setup_mailinfo(struct mailinfo *);
extern int mailinfo(struct mailinfo *, const char *msg, const char *patch); int mailinfo(struct mailinfo *, const char *msg, const char *patch);
extern void clear_mailinfo(struct mailinfo *); void clear_mailinfo(struct mailinfo *);
#endif /* MAILINFO_H */ #endif /* MAILINFO_H */

View File

@ -4,7 +4,7 @@
struct blob; struct blob;
struct index_state; struct index_state;
extern void *merge_blobs(struct index_state *, const char *, void *merge_blobs(struct index_state *, const char *,
struct blob *, struct blob *, struct blob *, struct blob *,
struct blob *, unsigned long *); struct blob *, unsigned long *);

View File

@ -162,7 +162,7 @@ const char *loose_object_path(struct repository *r, struct strbuf *buf,
void *map_loose_object(struct repository *r, const struct object_id *oid, void *map_loose_object(struct repository *r, const struct object_id *oid,
unsigned long *size); unsigned long *size);
extern void *read_object_file_extended(struct repository *r, void *read_object_file_extended(struct repository *r,
const struct object_id *oid, const struct object_id *oid,
enum object_type *type, enum object_type *type,
unsigned long *size, int lookup_replace); unsigned long *size, int lookup_replace);
@ -180,20 +180,20 @@ static inline void *repo_read_object_file(struct repository *r,
/* Read and unpack an object file into memory, write memory to an object file */ /* Read and unpack an object file into memory, write memory to an object file */
int oid_object_info(struct repository *r, const struct object_id *, unsigned long *); int oid_object_info(struct repository *r, const struct object_id *, unsigned long *);
extern int hash_object_file(const void *buf, unsigned long len, int hash_object_file(const void *buf, unsigned long len,
const char *type, struct object_id *oid); const char *type, struct object_id *oid);
extern int write_object_file(const void *buf, unsigned long len, int write_object_file(const void *buf, unsigned long len,
const char *type, struct object_id *oid); const char *type, struct object_id *oid);
extern int hash_object_file_literally(const void *buf, unsigned long len, int hash_object_file_literally(const void *buf, unsigned long len,
const char *type, struct object_id *oid, const char *type, struct object_id *oid,
unsigned flags); unsigned flags);
extern int pretend_object_file(void *, unsigned long, enum object_type, int pretend_object_file(void *, unsigned long, enum object_type,
struct object_id *oid); struct object_id *oid);
extern int force_object_loose(const struct object_id *oid, time_t mtime); int force_object_loose(const struct object_id *oid, time_t mtime);
/* /*
* Open the loose object at path, check its hash, and return the contents, * Open the loose object at path, check its hash, and return the contents,
@ -227,9 +227,9 @@ int repo_has_object_file_with_flags(struct repository *r,
* with the specified name. This function does not respect replace * with the specified name. This function does not respect replace
* references. * references.
*/ */
extern int has_loose_object_nonlocal(const struct object_id *); int has_loose_object_nonlocal(const struct object_id *);
extern void assert_oid_type(const struct object_id *oid, enum object_type expect); void assert_oid_type(const struct object_id *oid, enum object_type expect);
struct object_info { struct object_info {
/* Request */ /* Request */

View File

@ -90,19 +90,19 @@ struct object {
struct object_id oid; struct object_id oid;
}; };
extern const char *type_name(unsigned int type); const char *type_name(unsigned int type);
extern int type_from_string_gently(const char *str, ssize_t, int gentle); int type_from_string_gently(const char *str, ssize_t, int gentle);
#define type_from_string(str) type_from_string_gently(str, -1, 0) #define type_from_string(str) type_from_string_gently(str, -1, 0)
/* /*
* Return the current number of buckets in the object hashmap. * Return the current number of buckets in the object hashmap.
*/ */
extern unsigned int get_max_object_index(void); unsigned int get_max_object_index(void);
/* /*
* Return the object from the specified bucket in the object hashmap. * Return the object from the specified bucket in the object hashmap.
*/ */
extern struct object *get_indexed_object(unsigned int); struct object *get_indexed_object(unsigned int);
/* /*
* This can be used to see if we have heard of the object before, but * This can be used to see if we have heard of the object before, but
@ -118,7 +118,7 @@ extern struct object *get_indexed_object(unsigned int);
*/ */
struct object *lookup_object(struct repository *r, const unsigned char *sha1); struct object *lookup_object(struct repository *r, const unsigned char *sha1);
extern void *create_object(struct repository *r, const unsigned char *sha1, void *obj); void *create_object(struct repository *r, const unsigned char *sha1, void *obj);
void *object_as_type(struct repository *r, struct object *obj, enum object_type type, int quiet); void *object_as_type(struct repository *r, struct object *obj, enum object_type type, int quiet);
@ -189,6 +189,6 @@ void clear_object_flags(unsigned flags);
/* /*
* Clear the specified object flags from all in-core commit objects. * Clear the specified object flags from all in-core commit objects.
*/ */
extern void clear_commit_marks_all(unsigned int flags); void clear_commit_marks_all(unsigned int flags);
#endif /* OBJECT_H */ #endif /* OBJECT_H */

View File

@ -33,7 +33,7 @@ struct oidmap {
* parameter may be used to preallocate a sufficiently large table and thus * parameter may be used to preallocate a sufficiently large table and thus
* prevent expensive resizing. If 0, the table is dynamically resized. * prevent expensive resizing. If 0, the table is dynamically resized.
*/ */
extern void oidmap_init(struct oidmap *map, size_t initial_size); void oidmap_init(struct oidmap *map, size_t initial_size);
/* /*
* Frees an oidmap structure and allocated memory. * Frees an oidmap structure and allocated memory.
@ -41,12 +41,12 @@ extern void oidmap_init(struct oidmap *map, size_t initial_size);
* If `free_entries` is true, each oidmap_entry in the map is freed as well * If `free_entries` is true, each oidmap_entry in the map is freed as well
* using stdlibs free(). * using stdlibs free().
*/ */
extern void oidmap_free(struct oidmap *map, int free_entries); void oidmap_free(struct oidmap *map, int free_entries);
/* /*
* Returns the oidmap entry for the specified oid, or NULL if not found. * Returns the oidmap entry for the specified oid, or NULL if not found.
*/ */
extern void *oidmap_get(const struct oidmap *map, void *oidmap_get(const struct oidmap *map,
const struct object_id *key); const struct object_id *key);
/* /*
@ -57,14 +57,14 @@ extern void *oidmap_get(const struct oidmap *map,
* *
* Returns the replaced entry, or NULL if not found (i.e. the entry was added). * Returns the replaced entry, or NULL if not found (i.e. the entry was added).
*/ */
extern void *oidmap_put(struct oidmap *map, void *entry); void *oidmap_put(struct oidmap *map, void *entry);
/* /*
* Removes an oidmap entry matching the specified oid. * Removes an oidmap entry matching the specified oid.
* *
* Returns the removed entry, or NULL if not found. * Returns the removed entry, or NULL if not found.
*/ */
extern void *oidmap_remove(struct oidmap *map, const struct object_id *key); void *oidmap_remove(struct oidmap *map, const struct object_id *key);
struct oidmap_iter { struct oidmap_iter {

24
pack.h
View File

@ -55,7 +55,7 @@ struct pack_idx_option {
uint32_t *anomaly; uint32_t *anomaly;
}; };
extern void reset_pack_idx_option(struct pack_idx_option *); void reset_pack_idx_option(struct pack_idx_option *);
/* /*
* Packed object index header * Packed object index header
@ -79,28 +79,28 @@ struct progress;
/* Note, the data argument could be NULL if object type is blob */ /* Note, the data argument could be NULL if object type is blob */
typedef int (*verify_fn)(const struct object_id *, enum object_type, unsigned long, void*, int*); typedef int (*verify_fn)(const struct object_id *, enum object_type, unsigned long, void*, int*);
extern const char *write_idx_file(const char *index_name, struct pack_idx_entry **objects, int nr_objects, const struct pack_idx_option *, const unsigned char *sha1); const char *write_idx_file(const char *index_name, struct pack_idx_entry **objects, int nr_objects, const struct pack_idx_option *, const unsigned char *sha1);
extern int check_pack_crc(struct packed_git *p, struct pack_window **w_curs, off_t offset, off_t len, unsigned int nr); int check_pack_crc(struct packed_git *p, struct pack_window **w_curs, off_t offset, off_t len, unsigned int nr);
extern int verify_pack_index(struct packed_git *); int verify_pack_index(struct packed_git *);
extern int verify_pack(struct repository *, struct packed_git *, verify_fn fn, struct progress *, uint32_t); int verify_pack(struct repository *, struct packed_git *, verify_fn fn, struct progress *, uint32_t);
extern off_t write_pack_header(struct hashfile *f, uint32_t); off_t write_pack_header(struct hashfile *f, uint32_t);
extern void fixup_pack_header_footer(int, unsigned char *, const char *, uint32_t, unsigned char *, off_t); void fixup_pack_header_footer(int, unsigned char *, const char *, uint32_t, unsigned char *, off_t);
extern char *index_pack_lockfile(int fd); char *index_pack_lockfile(int fd);
/* /*
* The "hdr" output buffer should be at least this big, which will handle sizes * The "hdr" output buffer should be at least this big, which will handle sizes
* up to 2^67. * up to 2^67.
*/ */
#define MAX_PACK_OBJECT_HEADER 10 #define MAX_PACK_OBJECT_HEADER 10
extern int encode_in_pack_object_header(unsigned char *hdr, int hdr_len, int encode_in_pack_object_header(unsigned char *hdr, int hdr_len,
enum object_type, uintmax_t); enum object_type, uintmax_t);
#define PH_ERROR_EOF (-1) #define PH_ERROR_EOF (-1)
#define PH_ERROR_PACK_SIGNATURE (-2) #define PH_ERROR_PACK_SIGNATURE (-2)
#define PH_ERROR_PROTOCOL (-3) #define PH_ERROR_PROTOCOL (-3)
extern int read_pack_header(int fd, struct pack_header *); int read_pack_header(int fd, struct pack_header *);
extern struct hashfile *create_tmp_packfile(char **pack_tmp_name); struct hashfile *create_tmp_packfile(char **pack_tmp_name);
extern void finish_tmp_packfile(struct strbuf *name_buffer, const char *pack_tmp_name, struct pack_idx_entry **written_list, uint32_t nr_written, struct pack_idx_option *pack_idx_opts, unsigned char sha1[]); void finish_tmp_packfile(struct strbuf *name_buffer, const char *pack_tmp_name, struct pack_idx_entry **written_list, uint32_t nr_written, struct pack_idx_option *pack_idx_opts, unsigned char sha1[]);
#endif #endif

View File

@ -15,23 +15,23 @@ struct object_info;
* *
* Example: odb_pack_name(out, sha1, "idx") => ".git/objects/pack/pack-1234..idx" * Example: odb_pack_name(out, sha1, "idx") => ".git/objects/pack/pack-1234..idx"
*/ */
extern char *odb_pack_name(struct strbuf *buf, const unsigned char *sha1, const char *ext); char *odb_pack_name(struct strbuf *buf, const unsigned char *sha1, const char *ext);
/* /*
* Return the name of the (local) packfile with the specified sha1 in * Return the name of the (local) packfile with the specified sha1 in
* its name. The return value is a pointer to memory that is * its name. The return value is a pointer to memory that is
* overwritten each time this function is called. * overwritten each time this function is called.
*/ */
extern char *sha1_pack_name(const unsigned char *sha1); char *sha1_pack_name(const unsigned char *sha1);
/* /*
* Return the name of the (local) pack index file with the specified * Return the name of the (local) pack index file with the specified
* sha1 in its name. The return value is a pointer to memory that is * sha1 in its name. The return value is a pointer to memory that is
* overwritten each time this function is called. * overwritten each time this function is called.
*/ */
extern char *sha1_pack_index_name(const unsigned char *sha1); char *sha1_pack_index_name(const unsigned char *sha1);
extern struct packed_git *parse_pack_index(unsigned char *sha1, const char *idx_path); struct packed_git *parse_pack_index(unsigned char *sha1, const char *idx_path);
typedef void each_file_in_pack_dir_fn(const char *full_path, size_t full_path_len, typedef void each_file_in_pack_dir_fn(const char *full_path, size_t full_path_len,
const char *file_pach, void *data); const char *file_pach, void *data);
@ -45,8 +45,8 @@ void for_each_file_in_pack_dir(const char *objdir,
#define PACKDIR_FILE_GARBAGE 4 #define PACKDIR_FILE_GARBAGE 4
extern void (*report_garbage)(unsigned seen_bits, const char *path); extern void (*report_garbage)(unsigned seen_bits, const char *path);
extern void reprepare_packed_git(struct repository *r); void reprepare_packed_git(struct repository *r);
extern void install_packed_git(struct repository *r, struct packed_git *pack); void install_packed_git(struct repository *r, struct packed_git *pack);
struct packed_git *get_packed_git(struct repository *r); struct packed_git *get_packed_git(struct repository *r);
struct list_head *get_packed_git_mru(struct repository *r); struct list_head *get_packed_git_mru(struct repository *r);
@ -59,34 +59,34 @@ struct packed_git *get_all_packs(struct repository *r);
*/ */
unsigned long approximate_object_count(void); unsigned long approximate_object_count(void);
extern struct packed_git *find_sha1_pack(const unsigned char *sha1, struct packed_git *find_sha1_pack(const unsigned char *sha1,
struct packed_git *packs); struct packed_git *packs);
extern void pack_report(void); void pack_report(void);
/* /*
* mmap the index file for the specified packfile (if it is not * mmap the index file for the specified packfile (if it is not
* already mmapped). Return 0 on success. * already mmapped). Return 0 on success.
*/ */
extern int open_pack_index(struct packed_git *); int open_pack_index(struct packed_git *);
/* /*
* munmap the index file for the specified packfile (if it is * munmap the index file for the specified packfile (if it is
* currently mmapped). * currently mmapped).
*/ */
extern void close_pack_index(struct packed_git *); void close_pack_index(struct packed_git *);
int close_pack_fd(struct packed_git *p); int close_pack_fd(struct packed_git *p);
extern uint32_t get_pack_fanout(struct packed_git *p, uint32_t value); uint32_t get_pack_fanout(struct packed_git *p, uint32_t value);
extern unsigned char *use_pack(struct packed_git *, struct pack_window **, off_t, unsigned long *); unsigned char *use_pack(struct packed_git *, struct pack_window **, off_t, unsigned long *);
extern void close_pack_windows(struct packed_git *); void close_pack_windows(struct packed_git *);
extern void close_pack(struct packed_git *); void close_pack(struct packed_git *);
extern void close_all_packs(struct raw_object_store *o); void close_all_packs(struct raw_object_store *o);
extern void unuse_pack(struct pack_window **); void unuse_pack(struct pack_window **);
extern void clear_delta_base_cache(void); void clear_delta_base_cache(void);
extern struct packed_git *add_packed_git(const char *path, size_t path_len, int local); struct packed_git *add_packed_git(const char *path, size_t path_len, int local);
/* /*
* Make sure that a pointer access into an mmap'd index file is within bounds, * Make sure that a pointer access into an mmap'd index file is within bounds,
@ -96,7 +96,7 @@ extern struct packed_git *add_packed_git(const char *path, size_t path_len, int
* (like the 64-bit extended offset table), as we compare the size to the * (like the 64-bit extended offset table), as we compare the size to the
* fixed-length parts when we open the file. * fixed-length parts when we open the file.
*/ */
extern void check_pack_index_ptr(const struct packed_git *p, const void *ptr); void check_pack_index_ptr(const struct packed_git *p, const void *ptr);
/* /*
* Perform binary search on a pack-index for a given oid. Packfile is expected to * Perform binary search on a pack-index for a given oid. Packfile is expected to
@ -112,59 +112,59 @@ int bsearch_pack(const struct object_id *oid, const struct packed_git *p, uint32
* at the SHA-1 within the mmapped index. Return NULL if there is an * at the SHA-1 within the mmapped index. Return NULL if there is an
* error. * error.
*/ */
extern const unsigned char *nth_packed_object_sha1(struct packed_git *, uint32_t n); const unsigned char *nth_packed_object_sha1(struct packed_git *, uint32_t n);
/* /*
* Like nth_packed_object_sha1, but write the data into the object specified by * Like nth_packed_object_sha1, but write the data into the object specified by
* the the first argument. Returns the first argument on success, and NULL on * the the first argument. Returns the first argument on success, and NULL on
* error. * error.
*/ */
extern const struct object_id *nth_packed_object_oid(struct object_id *, struct packed_git *, uint32_t n); const struct object_id *nth_packed_object_oid(struct object_id *, struct packed_git *, uint32_t n);
/* /*
* Return the offset of the nth object within the specified packfile. * Return the offset of the nth object within the specified packfile.
* The index must already be opened. * The index must already be opened.
*/ */
extern off_t nth_packed_object_offset(const struct packed_git *, uint32_t n); off_t nth_packed_object_offset(const struct packed_git *, uint32_t n);
/* /*
* If the object named sha1 is present in the specified packfile, * If the object named sha1 is present in the specified packfile,
* return its offset within the packfile; otherwise, return 0. * return its offset within the packfile; otherwise, return 0.
*/ */
extern off_t find_pack_entry_one(const unsigned char *sha1, struct packed_git *); off_t find_pack_entry_one(const unsigned char *sha1, struct packed_git *);
extern int is_pack_valid(struct packed_git *); int is_pack_valid(struct packed_git *);
extern void *unpack_entry(struct repository *r, struct packed_git *, off_t, enum object_type *, unsigned long *); void *unpack_entry(struct repository *r, struct packed_git *, off_t, enum object_type *, unsigned long *);
extern unsigned long unpack_object_header_buffer(const unsigned char *buf, unsigned long len, enum object_type *type, unsigned long *sizep); unsigned long unpack_object_header_buffer(const unsigned char *buf, unsigned long len, enum object_type *type, unsigned long *sizep);
extern unsigned long get_size_from_delta(struct packed_git *, struct pack_window **, off_t); unsigned long get_size_from_delta(struct packed_git *, struct pack_window **, off_t);
extern int unpack_object_header(struct packed_git *, struct pack_window **, off_t *, unsigned long *); int unpack_object_header(struct packed_git *, struct pack_window **, off_t *, unsigned long *);
extern void release_pack_memory(size_t); void release_pack_memory(size_t);
/* global flag to enable extra checks when accessing packed objects */ /* global flag to enable extra checks when accessing packed objects */
extern int do_check_packed_object_crc; extern int do_check_packed_object_crc;
extern int packed_object_info(struct repository *r, int packed_object_info(struct repository *r,
struct packed_git *pack, struct packed_git *pack,
off_t offset, struct object_info *); off_t offset, struct object_info *);
extern void mark_bad_packed_object(struct packed_git *p, const unsigned char *sha1); void mark_bad_packed_object(struct packed_git *p, const unsigned char *sha1);
extern const struct packed_git *has_packed_and_bad(struct repository *r, const unsigned char *sha1); const struct packed_git *has_packed_and_bad(struct repository *r, const unsigned char *sha1);
/* /*
* Iff a pack file in the given repository contains the object named by sha1, * Iff a pack file in the given repository contains the object named by sha1,
* return true and store its location to e. * return true and store its location to e.
*/ */
extern int find_pack_entry(struct repository *r, const struct object_id *oid, struct pack_entry *e); int find_pack_entry(struct repository *r, const struct object_id *oid, struct pack_entry *e);
extern int has_object_pack(const struct object_id *oid); int has_object_pack(const struct object_id *oid);
extern int has_pack_index(const unsigned char *sha1); int has_pack_index(const unsigned char *sha1);
/* /*
* Return 1 if an object in a promisor packfile is or refers to the given * Return 1 if an object in a promisor packfile is or refers to the given
* object, 0 otherwise. * object, 0 otherwise.
*/ */
extern int is_promisor_object(const struct object_id *oid); int is_promisor_object(const struct object_id *oid);
/* /*
* Expose a function for fuzz testing. * Expose a function for fuzz testing.
@ -176,7 +176,7 @@ extern int is_promisor_object(const struct object_id *oid);
* have a convenient entry-point for fuzz testing. For real uses, you should * have a convenient entry-point for fuzz testing. For real uses, you should
* probably use open_pack_index() or parse_pack_index() instead. * probably use open_pack_index() or parse_pack_index() instead.
*/ */
extern int load_idx(const char *path, const unsigned int hashsz, void *idx_map, int load_idx(const char *path, const unsigned int hashsz, void *idx_map,
size_t idx_size, struct packed_git *p); size_t idx_size, struct packed_git *p);
#endif #endif

2
path.h
View File

@ -143,7 +143,7 @@ extern int strbuf_git_path_submodule(struct strbuf *sb, const char *path,
const char *fmt, ...) const char *fmt, ...)
__attribute__((format (printf, 3, 4))); __attribute__((format (printf, 3, 4)));
extern void report_linked_checkout_garbage(void); void report_linked_checkout_garbage(void);
/* /*
* You can define a static memoized git path like: * You can define a static memoized git path like:

View File

@ -172,7 +172,7 @@ struct packet_reader {
* Initialize a 'struct packet_reader' object which is an * Initialize a 'struct packet_reader' object which is an
* abstraction around the 'packet_read_with_status()' function. * abstraction around the 'packet_read_with_status()' function.
*/ */
extern void packet_reader_init(struct packet_reader *reader, int fd, void packet_reader_init(struct packet_reader *reader, int fd,
char *src_buffer, size_t src_len, char *src_buffer, size_t src_len,
int options); int options);
@ -186,7 +186,7 @@ extern void packet_reader_init(struct packet_reader *reader, int fd,
* 'line' is set to point at the read line * 'line' is set to point at the read line
* PACKET_READ_FLUSH: 'pktlen' is set to '0' and 'line' is set to NULL * PACKET_READ_FLUSH: 'pktlen' is set to '0' and 'line' is set to NULL
*/ */
extern enum packet_read_status packet_reader_read(struct packet_reader *reader); enum packet_read_status packet_reader_read(struct packet_reader *reader);
/* /*
* Peek the next packet line without consuming it and return the status. * Peek the next packet line without consuming it and return the status.
@ -196,7 +196,7 @@ extern enum packet_read_status packet_reader_read(struct packet_reader *reader);
* Peeking multiple times without calling 'packet_reader_read()' will return * Peeking multiple times without calling 'packet_reader_read()' will return
* the same result. * the same result.
*/ */
extern enum packet_read_status packet_reader_peek(struct packet_reader *reader); enum packet_read_status packet_reader_peek(struct packet_reader *reader);
#define DEFAULT_PACKET_MAX 1000 #define DEFAULT_PACKET_MAX 1000
#define LARGE_PACKET_MAX 65520 #define LARGE_PACKET_MAX 65520

View File

@ -10,7 +10,7 @@
#include <string.h> #include <string.h>
#include "sha1.h" #include "sha1.h"
extern void ppc_sha1_core(uint32_t *hash, const unsigned char *p, void ppc_sha1_core(uint32_t *hash, const unsigned char *p,
unsigned int nblocks); unsigned int nblocks);
int ppc_SHA1_Init(ppc_SHA_CTX *c) int ppc_SHA1_Init(ppc_SHA_CTX *c)

View File

@ -37,24 +37,24 @@ struct prio_queue {
/* /*
* Add the "thing" to the queue. * Add the "thing" to the queue.
*/ */
extern void prio_queue_put(struct prio_queue *, void *thing); void prio_queue_put(struct prio_queue *, void *thing);
/* /*
* Extract the "thing" that compares the smallest out of the queue, * Extract the "thing" that compares the smallest out of the queue,
* or NULL. If compare function is NULL, the queue acts as a LIFO * or NULL. If compare function is NULL, the queue acts as a LIFO
* stack. * stack.
*/ */
extern void *prio_queue_get(struct prio_queue *); void *prio_queue_get(struct prio_queue *);
/* /*
* Gain access to the "thing" that would be returned by * Gain access to the "thing" that would be returned by
* prio_queue_get, but do not remove it from the queue. * prio_queue_get, but do not remove it from the queue.
*/ */
extern void *prio_queue_peek(struct prio_queue *); void *prio_queue_peek(struct prio_queue *);
extern void clear_prio_queue(struct prio_queue *); void clear_prio_queue(struct prio_queue *);
/* Reverse the LIFO elements */ /* Reverse the LIFO elements */
extern void prio_queue_reverse(struct prio_queue *); void prio_queue_reverse(struct prio_queue *);
#endif /* PRIO_QUEUE_H */ #endif /* PRIO_QUEUE_H */

View File

@ -14,7 +14,7 @@ enum protocol_version {
* 'protocol.version' config. If unconfigured, a value of 'protocol_v0' is * 'protocol.version' config. If unconfigured, a value of 'protocol_v0' is
* returned. * returned.
*/ */
extern enum protocol_version get_protocol_version_config(void); enum protocol_version get_protocol_version_config(void);
/* /*
* Used by a server to determine which protocol version should be used based on * Used by a server to determine which protocol version should be used based on
@ -23,12 +23,12 @@ extern enum protocol_version get_protocol_version_config(void);
* request a particular protocol version, a default of 'protocol_v0' will be * request a particular protocol version, a default of 'protocol_v0' will be
* used. * used.
*/ */
extern enum protocol_version determine_protocol_version_server(void); enum protocol_version determine_protocol_version_server(void);
/* /*
* Used by a client to determine which protocol version the server is speaking * Used by a client to determine which protocol version the server is speaking
* based on the server's initial response. * based on the server's initial response.
*/ */
extern enum protocol_version determine_protocol_version_client(const char *server_response); enum protocol_version determine_protocol_version_client(const char *server_response);
#endif /* PROTOCOL_H */ #endif /* PROTOCOL_H */

30
quote.h
View File

@ -29,8 +29,8 @@ struct strbuf;
* sq_quotef() quotes the entire formatted string as a single result. * sq_quotef() quotes the entire formatted string as a single result.
*/ */
extern void sq_quote_buf(struct strbuf *, const char *src); void sq_quote_buf(struct strbuf *, const char *src);
extern void sq_quote_argv(struct strbuf *, const char **argv); void sq_quote_argv(struct strbuf *, const char **argv);
extern void sq_quotef(struct strbuf *, const char *fmt, ...); extern void sq_quotef(struct strbuf *, const char *fmt, ...);
/* /*
@ -45,14 +45,14 @@ void sq_quote_argv_pretty(struct strbuf *, const char **argv);
* NULL if the input does not look like what sq_quote would have * NULL if the input does not look like what sq_quote would have
* produced. * produced.
*/ */
extern char *sq_dequote(char *); char *sq_dequote(char *);
/* /*
* Same as the above, but can be used to unwrap many arguments in the * Same as the above, but can be used to unwrap many arguments in the
* same string separated by space. Like sq_quote, it works in place, * same string separated by space. Like sq_quote, it works in place,
* modifying arg and appending pointers into it to argv. * modifying arg and appending pointers into it to argv.
*/ */
extern int sq_dequote_to_argv(char *arg, const char ***argv, int *nr, int *alloc); int sq_dequote_to_argv(char *arg, const char ***argv, int *nr, int *alloc);
/* /*
* Same as above, but store the unquoted strings in an argv_array. We will * Same as above, but store the unquoted strings in an argv_array. We will
@ -60,24 +60,24 @@ extern int sq_dequote_to_argv(char *arg, const char ***argv, int *nr, int *alloc
* will duplicate and take ownership of the strings. * will duplicate and take ownership of the strings.
*/ */
struct argv_array; struct argv_array;
extern int sq_dequote_to_argv_array(char *arg, struct argv_array *); int sq_dequote_to_argv_array(char *arg, struct argv_array *);
extern int unquote_c_style(struct strbuf *, const char *quoted, const char **endp); int unquote_c_style(struct strbuf *, const char *quoted, const char **endp);
extern size_t quote_c_style(const char *name, struct strbuf *, FILE *, int no_dq); size_t quote_c_style(const char *name, struct strbuf *, FILE *, int no_dq);
extern void quote_two_c_style(struct strbuf *, const char *, const char *, int); void quote_two_c_style(struct strbuf *, const char *, const char *, int);
extern void write_name_quoted(const char *name, FILE *, int terminator); void write_name_quoted(const char *name, FILE *, int terminator);
extern void write_name_quoted_relative(const char *name, const char *prefix, void write_name_quoted_relative(const char *name, const char *prefix,
FILE *fp, int terminator); FILE *fp, int terminator);
/* quote path as relative to the given prefix */ /* quote path as relative to the given prefix */
extern char *quote_path_relative(const char *in, const char *prefix, char *quote_path_relative(const char *in, const char *prefix,
struct strbuf *out); struct strbuf *out);
/* quoting as a string literal for other languages */ /* quoting as a string literal for other languages */
extern void perl_quote_buf(struct strbuf *sb, const char *src); void perl_quote_buf(struct strbuf *sb, const char *src);
extern void python_quote_buf(struct strbuf *sb, const char *src); void python_quote_buf(struct strbuf *sb, const char *src);
extern void tcl_quote_buf(struct strbuf *sb, const char *src); void tcl_quote_buf(struct strbuf *sb, const char *src);
extern void basic_regex_quote_buf(struct strbuf *sb, const char *src); void basic_regex_quote_buf(struct strbuf *sb, const char *src);
#endif #endif

View File

@ -4,9 +4,9 @@
struct progress; struct progress;
struct rev_info; struct rev_info;
extern int add_unseen_recent_objects_to_traversal(struct rev_info *revs, int add_unseen_recent_objects_to_traversal(struct rev_info *revs,
timestamp_t timestamp); timestamp_t timestamp);
extern void mark_reachable_objects(struct rev_info *revs, int mark_reflog, void mark_reachable_objects(struct rev_info *revs, int mark_reflog,
timestamp_t mark_recent, struct progress *); timestamp_t mark_recent, struct progress *);
#endif #endif

View File

@ -6,21 +6,21 @@
struct commit; struct commit;
struct reflog_walk_info; struct reflog_walk_info;
extern void init_reflog_walk(struct reflog_walk_info **info); void init_reflog_walk(struct reflog_walk_info **info);
extern int add_reflog_for_walk(struct reflog_walk_info *info, int add_reflog_for_walk(struct reflog_walk_info *info,
struct commit *commit, const char *name); struct commit *commit, const char *name);
extern void show_reflog_message(struct reflog_walk_info *info, int, void show_reflog_message(struct reflog_walk_info *info, int,
const struct date_mode *, int force_date); const struct date_mode *, int force_date);
extern void get_reflog_message(struct strbuf *sb, void get_reflog_message(struct strbuf *sb,
struct reflog_walk_info *reflog_info); struct reflog_walk_info *reflog_info);
extern const char *get_reflog_ident(struct reflog_walk_info *reflog_info); const char *get_reflog_ident(struct reflog_walk_info *reflog_info);
extern timestamp_t get_reflog_timestamp(struct reflog_walk_info *reflog_info); timestamp_t get_reflog_timestamp(struct reflog_walk_info *reflog_info);
extern void get_reflog_selector(struct strbuf *sb, void get_reflog_selector(struct strbuf *sb,
struct reflog_walk_info *reflog_info, struct reflog_walk_info *reflog_info,
const struct date_mode *dmode, int force_date, const struct date_mode *dmode, int force_date,
int shorten); int shorten);
extern int reflog_walk_empty(struct reflog_walk_info *walk); int reflog_walk_empty(struct reflog_walk_info *walk);
struct commit *next_reflog_entry(struct reflog_walk_info *reflog_info); struct commit *next_reflog_entry(struct reflog_walk_info *reflog_info);

2
refs.h
View File

@ -111,7 +111,7 @@ int should_autocreate_reflog(const char *refname);
int is_branch(const char *refname); int is_branch(const char *refname);
extern int refs_init_db(struct strbuf *err); int refs_init_db(struct strbuf *err);
/* /*
* If refname is a non-symbolic reference that refers to a tag object, * If refname is a non-symbolic reference that refers to a tag object,

View File

@ -119,13 +119,13 @@ struct ref {
#define REF_HEADS (1u << 1) #define REF_HEADS (1u << 1)
#define REF_TAGS (1u << 2) #define REF_TAGS (1u << 2)
extern struct ref *find_ref_by_name(const struct ref *list, const char *name); struct ref *find_ref_by_name(const struct ref *list, const char *name);
struct ref *alloc_ref(const char *name); struct ref *alloc_ref(const char *name);
struct ref *copy_ref(const struct ref *ref); struct ref *copy_ref(const struct ref *ref);
struct ref *copy_ref_list(const struct ref *ref); struct ref *copy_ref_list(const struct ref *ref);
void sort_ref_list(struct ref **, int (*cmp)(const void *, const void *)); void sort_ref_list(struct ref **, int (*cmp)(const void *, const void *));
extern int count_refspec_match(const char *, struct ref *refs, struct ref **matched_ref); int count_refspec_match(const char *, struct ref *refs, struct ref **matched_ref);
int ref_compare_name(const void *, const void *); int ref_compare_name(const void *, const void *);
int check_ref_type(const struct ref *ref, int flags); int check_ref_type(const struct ref *ref, int flags);
@ -139,13 +139,13 @@ struct oid_array;
struct packet_reader; struct packet_reader;
struct argv_array; struct argv_array;
struct string_list; struct string_list;
extern struct ref **get_remote_heads(struct packet_reader *reader, struct ref **get_remote_heads(struct packet_reader *reader,
struct ref **list, unsigned int flags, struct ref **list, unsigned int flags,
struct oid_array *extra_have, struct oid_array *extra_have,
struct oid_array *shallow_points); struct oid_array *shallow_points);
/* Used for protocol v2 in order to retrieve refs from a remote */ /* Used for protocol v2 in order to retrieve refs from a remote */
extern struct ref **get_remote_refs(int fd_out, struct packet_reader *reader, struct ref **get_remote_refs(int fd_out, struct packet_reader *reader,
struct ref **list, int for_push, struct ref **list, int for_push,
const struct argv_array *ref_prefixes, const struct argv_array *ref_prefixes,
const struct string_list *server_options); const struct string_list *server_options);
@ -287,9 +287,9 @@ struct push_cas_option {
int alloc; int alloc;
}; };
extern int parseopt_push_cas_option(const struct option *, const char *arg, int unset); int parseopt_push_cas_option(const struct option *, const char *arg, int unset);
extern int is_empty_cas(const struct push_cas_option *); int is_empty_cas(const struct push_cas_option *);
void apply_push_cas(struct push_cas_option *, struct remote *, struct ref *); void apply_push_cas(struct push_cas_option *, struct remote *, struct ref *);
#endif #endif

View File

@ -16,7 +16,7 @@ void prepare_replace_object(struct repository *r);
* This internal function is only declared here for the benefit of * This internal function is only declared here for the benefit of
* lookup_replace_object(). Please do not call it directly. * lookup_replace_object(). Please do not call it directly.
*/ */
extern const struct object_id *do_lookup_replace_object(struct repository *r, const struct object_id *do_lookup_replace_object(struct repository *r,
const struct object_id *oid); const struct object_id *oid);
/* /*

View File

@ -8,12 +8,12 @@ struct resolve_undo_info {
struct object_id oid[3]; struct object_id oid[3];
}; };
extern void record_resolve_undo(struct index_state *, struct cache_entry *); void record_resolve_undo(struct index_state *, struct cache_entry *);
extern void resolve_undo_write(struct strbuf *, struct string_list *); void resolve_undo_write(struct strbuf *, struct string_list *);
extern struct string_list *resolve_undo_read(const char *, unsigned long); struct string_list *resolve_undo_read(const char *, unsigned long);
extern void resolve_undo_clear_index(struct index_state *); void resolve_undo_clear_index(struct index_state *);
extern int unmerge_index_entry_at(struct index_state *, int); int unmerge_index_entry_at(struct index_state *, int);
extern void unmerge_index(struct index_state *, const struct pathspec *); void unmerge_index(struct index_state *, const struct pathspec *);
extern void unmerge_marked_index(struct index_state *); void unmerge_marked_index(struct index_state *);
#endif #endif

View File

@ -55,7 +55,7 @@ struct child_process {
#define CHILD_PROCESS_INIT { NULL, ARGV_ARRAY_INIT, ARGV_ARRAY_INIT } #define CHILD_PROCESS_INIT { NULL, ARGV_ARRAY_INIT, ARGV_ARRAY_INIT }
void child_process_init(struct child_process *); void child_process_init(struct child_process *);
void child_process_clear(struct child_process *); void child_process_clear(struct child_process *);
extern int is_executable(const char *name); int is_executable(const char *name);
int start_command(struct child_process *); int start_command(struct child_process *);
int finish_command(struct child_process *); int finish_command(struct child_process *);
@ -67,10 +67,10 @@ int run_command(struct child_process *);
* or disabled. Note that this points to static storage that will be * or disabled. Note that this points to static storage that will be
* overwritten by further calls to find_hook and run_hook_*. * overwritten by further calls to find_hook and run_hook_*.
*/ */
extern const char *find_hook(const char *name); const char *find_hook(const char *name);
LAST_ARG_MUST_BE_NULL LAST_ARG_MUST_BE_NULL
extern int run_hook_le(const char *const *env, const char *name, ...); extern int run_hook_le(const char *const *env, const char *name, ...);
extern int run_hook_ve(const char *const *env, const char *name, va_list args); int run_hook_ve(const char *const *env, const char *name, va_list args);
#define RUN_COMMAND_NO_STDIN 1 #define RUN_COMMAND_NO_STDIN 1
#define RUN_GIT_CMD 2 /*If this is to be git sub-command */ #define RUN_GIT_CMD 2 /*If this is to be git sub-command */

View File

@ -2,7 +2,7 @@
#define SERVE_H #define SERVE_H
struct argv_array; struct argv_array;
extern int has_capability(const struct argv_array *keys, const char *capability, int has_capability(const struct argv_array *keys, const char *capability,
const char **value); const char **value);
struct serve_options { struct serve_options {
@ -10,6 +10,6 @@ struct serve_options {
unsigned stateless_rpc; unsigned stateless_rpc;
}; };
#define SERVE_OPTIONS_INIT { 0 } #define SERVE_OPTIONS_INIT { 0 }
extern void serve(struct serve_options *options); void serve(struct serve_options *options);
#endif /* SERVE_H */ #endif /* SERVE_H */

View File

@ -3,7 +3,7 @@
typedef const unsigned char *sha1_access_fn(size_t index, void *table); typedef const unsigned char *sha1_access_fn(size_t index, void *table);
extern int sha1_pos(const unsigned char *sha1, int sha1_pos(const unsigned char *sha1,
void *table, void *table,
size_t nr, size_t nr,
sha1_access_fn fn); sha1_access_fn fn);

View File

@ -8,10 +8,10 @@
/* opaque */ /* opaque */
struct git_istream; struct git_istream;
extern struct git_istream *open_istream(const struct object_id *, enum object_type *, unsigned long *, struct stream_filter *); struct git_istream *open_istream(const struct object_id *, enum object_type *, unsigned long *, struct stream_filter *);
extern int close_istream(struct git_istream *); int close_istream(struct git_istream *);
extern ssize_t read_istream(struct git_istream *, void *, size_t); ssize_t read_istream(struct git_istream *, void *, size_t);
extern int stream_blob_to_fd(int fd, const struct object_id *, struct stream_filter *, int can_seek); int stream_blob_to_fd(int fd, const struct object_id *, struct stream_filter *, int can_seek);
#endif /* STREAMING_H */ #endif /* STREAMING_H */

View File

@ -174,7 +174,7 @@ struct string_list_item *string_list_insert(struct string_list *list, const char
* Remove the given string from the sorted list. If the string * Remove the given string from the sorted list. If the string
* doesn't exist, the list is not altered. * doesn't exist, the list is not altered.
*/ */
extern void string_list_remove(struct string_list *list, const char *string, void string_list_remove(struct string_list *list, const char *string,
int free_util); int free_util);
/** /**

View File

@ -42,7 +42,7 @@ struct subprocess_capability {
/* subprocess functions */ /* subprocess functions */
/* Function to test two subprocess hashmap entries for equality. */ /* Function to test two subprocess hashmap entries for equality. */
extern int cmd2process_cmp(const void *unused_cmp_data, int cmd2process_cmp(const void *unused_cmp_data,
const void *e1, const void *e1,
const void *e2, const void *e2,
const void *unused_keydata); const void *unused_keydata);

View File

@ -30,17 +30,17 @@ struct submodule {
struct submodule_cache; struct submodule_cache;
struct repository; struct repository;
extern void submodule_cache_free(struct submodule_cache *cache); void submodule_cache_free(struct submodule_cache *cache);
extern int parse_submodule_fetchjobs(const char *var, const char *value); int parse_submodule_fetchjobs(const char *var, const char *value);
extern int parse_fetch_recurse_submodules_arg(const char *opt, const char *arg); int parse_fetch_recurse_submodules_arg(const char *opt, const char *arg);
struct option; struct option;
extern int option_fetch_parse_recurse_submodules(const struct option *opt, int option_fetch_parse_recurse_submodules(const struct option *opt,
const char *arg, int unset); const char *arg, int unset);
extern int parse_update_recurse_submodules_arg(const char *opt, const char *arg); int parse_update_recurse_submodules_arg(const char *opt, const char *arg);
extern int parse_push_recurse_submodules_arg(const char *opt, const char *arg); int parse_push_recurse_submodules_arg(const char *opt, const char *arg);
extern void repo_read_gitmodules(struct repository *repo); void repo_read_gitmodules(struct repository *repo);
extern void gitmodules_config_oid(const struct object_id *commit_oid); void gitmodules_config_oid(const struct object_id *commit_oid);
const struct submodule *submodule_from_name(struct repository *r, const struct submodule *submodule_from_name(struct repository *r,
const struct object_id *commit_or_tree, const struct object_id *commit_or_tree,
const char *name); const char *name);
@ -66,7 +66,7 @@ int check_submodule_name(const char *name);
* New helpers to retrieve arbitrary configuration from the '.gitmodules' file * New helpers to retrieve arbitrary configuration from the '.gitmodules' file
* should NOT be added. * should NOT be added.
*/ */
extern void fetch_config_from_gitmodules(int *max_children, int *recurse_submodules); void fetch_config_from_gitmodules(int *max_children, int *recurse_submodules);
extern void update_clone_config_from_gitmodules(int *max_jobs); void update_clone_config_from_gitmodules(int *max_jobs);
#endif /* SUBMODULE_CONFIG_H */ #endif /* SUBMODULE_CONFIG_H */

14
tag.h
View File

@ -11,13 +11,13 @@ struct tag {
char *tag; char *tag;
timestamp_t date; timestamp_t date;
}; };
extern struct tag *lookup_tag(struct repository *r, const struct object_id *oid); struct tag *lookup_tag(struct repository *r, const struct object_id *oid);
extern int parse_tag_buffer(struct repository *r, struct tag *item, const void *data, unsigned long size); int parse_tag_buffer(struct repository *r, struct tag *item, const void *data, unsigned long size);
extern int parse_tag(struct tag *item); int parse_tag(struct tag *item);
extern void release_tag_memory(struct tag *t); void release_tag_memory(struct tag *t);
extern struct object *deref_tag(struct repository *r, struct object *, const char *, int); struct object *deref_tag(struct repository *r, struct object *, const char *, int);
extern struct object *deref_tag_noverify(struct object *); struct object *deref_tag_noverify(struct object *);
extern int gpg_verify_tag(const struct object_id *oid, int gpg_verify_tag(const struct object_id *oid,
const char *name_to_report, unsigned flags); const char *name_to_report, unsigned flags);
#endif /* TAG_H */ #endif /* TAG_H */

View File

@ -89,7 +89,7 @@ struct tempfile {
* a tempfile (whose "fd" member can be used for writing to it), or * a tempfile (whose "fd" member can be used for writing to it), or
* NULL on error. It is an error if a file already exists at that path. * NULL on error. It is an error if a file already exists at that path.
*/ */
extern struct tempfile *create_tempfile(const char *path); struct tempfile *create_tempfile(const char *path);
/* /*
* Register an existing file as a tempfile, meaning that it will be * Register an existing file as a tempfile, meaning that it will be
@ -97,7 +97,7 @@ extern struct tempfile *create_tempfile(const char *path);
* but it can be worked with like any other closed tempfile (for * but it can be worked with like any other closed tempfile (for
* example, it can be opened using reopen_tempfile()). * example, it can be opened using reopen_tempfile()).
*/ */
extern struct tempfile *register_tempfile(const char *path); struct tempfile *register_tempfile(const char *path);
/* /*
@ -136,7 +136,7 @@ extern struct tempfile *register_tempfile(const char *path);
*/ */
/* See "mks_tempfile functions" above. */ /* See "mks_tempfile functions" above. */
extern struct tempfile *mks_tempfile_sm(const char *filename_template, struct tempfile *mks_tempfile_sm(const char *filename_template,
int suffixlen, int mode); int suffixlen, int mode);
/* See "mks_tempfile functions" above. */ /* See "mks_tempfile functions" above. */
@ -159,7 +159,7 @@ static inline struct tempfile *mks_tempfile(const char *filename_template)
} }
/* See "mks_tempfile functions" above. */ /* See "mks_tempfile functions" above. */
extern struct tempfile *mks_tempfile_tsm(const char *filename_template, struct tempfile *mks_tempfile_tsm(const char *filename_template,
int suffixlen, int mode); int suffixlen, int mode);
/* See "mks_tempfile functions" above. */ /* See "mks_tempfile functions" above. */
@ -182,7 +182,7 @@ static inline struct tempfile *mks_tempfile_t(const char *filename_template)
} }
/* See "mks_tempfile functions" above. */ /* See "mks_tempfile functions" above. */
extern struct tempfile *xmks_tempfile_m(const char *filename_template, int mode); struct tempfile *xmks_tempfile_m(const char *filename_template, int mode);
/* See "mks_tempfile functions" above. */ /* See "mks_tempfile functions" above. */
static inline struct tempfile *xmks_tempfile(const char *filename_template) static inline struct tempfile *xmks_tempfile(const char *filename_template)
@ -196,7 +196,7 @@ static inline struct tempfile *xmks_tempfile(const char *filename_template)
* stream is closed automatically when `close_tempfile_gently()` is called or * stream is closed automatically when `close_tempfile_gently()` is called or
* when the file is deleted or renamed. * when the file is deleted or renamed.
*/ */
extern FILE *fdopen_tempfile(struct tempfile *tempfile, const char *mode); FILE *fdopen_tempfile(struct tempfile *tempfile, const char *mode);
static inline int is_tempfile_active(struct tempfile *tempfile) static inline int is_tempfile_active(struct tempfile *tempfile)
{ {
@ -207,10 +207,10 @@ static inline int is_tempfile_active(struct tempfile *tempfile)
* Return the path of the lockfile. The return value is a pointer to a * Return the path of the lockfile. The return value is a pointer to a
* field within the lock_file object and should not be freed. * field within the lock_file object and should not be freed.
*/ */
extern const char *get_tempfile_path(struct tempfile *tempfile); const char *get_tempfile_path(struct tempfile *tempfile);
extern int get_tempfile_fd(struct tempfile *tempfile); int get_tempfile_fd(struct tempfile *tempfile);
extern FILE *get_tempfile_fp(struct tempfile *tempfile); FILE *get_tempfile_fp(struct tempfile *tempfile);
/* /*
* If the temporary file is still open, close it (and the file pointer * If the temporary file is still open, close it (and the file pointer
@ -220,7 +220,7 @@ extern FILE *get_tempfile_fp(struct tempfile *tempfile);
* should eventually be called regardless of whether `close_tempfile_gently()` * should eventually be called regardless of whether `close_tempfile_gently()`
* succeeds. * succeeds.
*/ */
extern int close_tempfile_gently(struct tempfile *tempfile); int close_tempfile_gently(struct tempfile *tempfile);
/* /*
* Re-open a temporary file that has been closed using * Re-open a temporary file that has been closed using
@ -241,7 +241,7 @@ extern int close_tempfile_gently(struct tempfile *tempfile);
* *
* * `rename_tempfile()` to move the file to its permanent location. * * `rename_tempfile()` to move the file to its permanent location.
*/ */
extern int reopen_tempfile(struct tempfile *tempfile); int reopen_tempfile(struct tempfile *tempfile);
/* /*
* Close the file descriptor and/or file pointer and remove the * Close the file descriptor and/or file pointer and remove the
@ -249,7 +249,7 @@ extern int reopen_tempfile(struct tempfile *tempfile);
* `delete_tempfile()` for a `tempfile` object that has already been * `delete_tempfile()` for a `tempfile` object that has already been
* deleted or renamed. * deleted or renamed.
*/ */
extern void delete_tempfile(struct tempfile **tempfile_p); void delete_tempfile(struct tempfile **tempfile_p);
/* /*
* Close the file descriptor and/or file pointer if they are still * Close the file descriptor and/or file pointer if they are still
@ -260,6 +260,6 @@ extern void delete_tempfile(struct tempfile **tempfile_p);
* `rename(2)`. It is a bug to call `rename_tempfile()` for a * `rename(2)`. It is a bug to call `rename_tempfile()` for a
* `tempfile` object that is not currently active. * `tempfile` object that is not currently active.
*/ */
extern int rename_tempfile(struct tempfile **tempfile_p, const char *path); int rename_tempfile(struct tempfile **tempfile_p, const char *path);
#endif /* TEMPFILE_H */ #endif /* TEMPFILE_H */

16
trace.h
View File

@ -17,12 +17,12 @@ extern struct trace_key trace_default_key;
extern struct trace_key trace_perf_key; extern struct trace_key trace_perf_key;
extern struct trace_key trace_setup_key; extern struct trace_key trace_setup_key;
extern void trace_repo_setup(const char *prefix); void trace_repo_setup(const char *prefix);
extern int trace_want(struct trace_key *key); int trace_want(struct trace_key *key);
extern void trace_disable(struct trace_key *key); void trace_disable(struct trace_key *key);
extern uint64_t getnanotime(void); uint64_t getnanotime(void);
extern void trace_command_performance(const char **argv); void trace_command_performance(const char **argv);
extern void trace_verbatim(struct trace_key *key, const void *buf, unsigned len); void trace_verbatim(struct trace_key *key, const void *buf, unsigned len);
uint64_t trace_performance_enter(void); uint64_t trace_performance_enter(void);
#ifndef HAVE_VARIADIC_MACROS #ifndef HAVE_VARIADIC_MACROS
@ -36,7 +36,7 @@ extern void trace_printf_key(struct trace_key *key, const char *format, ...);
__attribute__((format (printf, 2, 3))) __attribute__((format (printf, 2, 3)))
extern void trace_argv_printf(const char **argv, const char *format, ...); extern void trace_argv_printf(const char **argv, const char *format, ...);
extern void trace_strbuf(struct trace_key *key, const struct strbuf *data); void trace_strbuf(struct trace_key *key, const struct strbuf *data);
/* Prints elapsed time (in nanoseconds) if GIT_TRACE_PERFORMANCE is enabled. */ /* Prints elapsed time (in nanoseconds) if GIT_TRACE_PERFORMANCE is enabled. */
__attribute__((format (printf, 2, 3))) __attribute__((format (printf, 2, 3)))
@ -137,7 +137,7 @@ extern void trace_printf_key_fl(const char *file, int line, struct trace_key *ke
__attribute__((format (printf, 4, 5))) __attribute__((format (printf, 4, 5)))
extern void trace_argv_printf_fl(const char *file, int line, const char **argv, extern void trace_argv_printf_fl(const char *file, int line, const char **argv,
const char *format, ...); const char *format, ...);
extern void trace_strbuf_fl(const char *file, int line, struct trace_key *key, void trace_strbuf_fl(const char *file, int line, struct trace_key *key,
const struct strbuf *data); const struct strbuf *data);
__attribute__((format (printf, 4, 5))) __attribute__((format (printf, 4, 5)))
extern void trace_performance_fl(const char *file, int line, extern void trace_performance_fl(const char *file, int line,

View File

@ -134,7 +134,7 @@ struct transport {
#define TRANSPORT_PUSH_OPTIONS (1<<14) #define TRANSPORT_PUSH_OPTIONS (1<<14)
#define TRANSPORT_RECURSE_SUBMODULES_ONLY (1<<15) #define TRANSPORT_RECURSE_SUBMODULES_ONLY (1<<15)
extern int transport_summary_width(const struct ref *refs); int transport_summary_width(const struct ref *refs);
/* Returns a transport suitable for the url */ /* Returns a transport suitable for the url */
struct transport *transport_get(struct remote *, const char *); struct transport *transport_get(struct remote *, const char *);
@ -263,5 +263,5 @@ void transport_print_push_status(const char *dest, struct ref *refs,
int verbose, int porcelain, unsigned int *reject_reasons); int verbose, int porcelain, unsigned int *reject_reasons);
typedef void alternate_ref_fn(const struct object_id *oid, void *); typedef void alternate_ref_fn(const struct object_id *oid, void *);
extern void for_each_alternate_ref(alternate_ref_fn, void *); void for_each_alternate_ref(alternate_ref_fn, void *);
#endif #endif

View File

@ -67,8 +67,8 @@ struct traverse_info {
}; };
int get_tree_entry(const struct object_id *, const char *, struct object_id *, unsigned *); int get_tree_entry(const struct object_id *, const char *, struct object_id *, unsigned *);
extern char *make_traverse_path(char *path, const struct traverse_info *info, const struct name_entry *n); char *make_traverse_path(char *path, const struct traverse_info *info, const struct name_entry *n);
extern void setup_traverse_info(struct traverse_info *info, const char *base); void setup_traverse_info(struct traverse_info *info, const char *base);
static inline int traverse_path_len(const struct traverse_info *info, const struct name_entry *n) static inline int traverse_path_len(const struct traverse_info *info, const struct name_entry *n)
{ {

View File

@ -13,11 +13,11 @@ void upload_pack(struct upload_pack_options *options);
struct repository; struct repository;
struct argv_array; struct argv_array;
struct packet_reader; struct packet_reader;
extern int upload_pack_v2(struct repository *r, struct argv_array *keys, int upload_pack_v2(struct repository *r, struct argv_array *keys,
struct packet_reader *request); struct packet_reader *request);
struct strbuf; struct strbuf;
extern int upload_pack_advertise(struct repository *r, int upload_pack_advertise(struct repository *r,
struct strbuf *value); struct strbuf *value);
#endif /* UPLOAD_PACK_H */ #endif /* UPLOAD_PACK_H */

16
url.h
View File

@ -3,14 +3,14 @@
struct strbuf; struct strbuf;
extern int is_url(const char *url); int is_url(const char *url);
extern int is_urlschemechar(int first_flag, int ch); int is_urlschemechar(int first_flag, int ch);
extern char *url_decode(const char *url); char *url_decode(const char *url);
extern char *url_decode_mem(const char *url, int len); char *url_decode_mem(const char *url, int len);
extern char *url_decode_parameter_name(const char **query); char *url_decode_parameter_name(const char **query);
extern char *url_decode_parameter_value(const char **query); char *url_decode_parameter_value(const char **query);
extern void end_url_with_slash(struct strbuf *buf, const char *url); void end_url_with_slash(struct strbuf *buf, const char *url);
extern void str_end_url_with_slash(const char *url, char **dest); void str_end_url_with_slash(const char *url, char **dest);
#endif /* URL_H */ #endif /* URL_H */

View File

@ -33,7 +33,7 @@ struct url_info {
* '?...' and '#...' portion; will always be >= 1 */ * '?...' and '#...' portion; will always be >= 1 */
}; };
extern char *url_normalize(const char *, struct url_info *); char *url_normalize(const char *, struct url_info *);
struct urlmatch_item { struct urlmatch_item {
size_t hostmatch_len; size_t hostmatch_len;
@ -52,6 +52,6 @@ struct urlmatch_config {
int (*cascade_fn)(const char *var, const char *value, void *cb); int (*cascade_fn)(const char *var, const char *value, void *cb);
}; };
extern int urlmatch_config_entry(const char *var, const char *value, void *cb); int urlmatch_config_entry(const char *var, const char *value, void *cb);
#endif /* URL_MATCH_H */ #endif /* URL_MATCH_H */

2
utf8.h
View File

@ -16,7 +16,7 @@ __attribute__((format (printf, 2, 3)))
int utf8_fprintf(FILE *, const char *, ...); int utf8_fprintf(FILE *, const char *, ...);
extern const char utf8_bom[]; extern const char utf8_bom[];
extern int skip_utf8_bom(char **, size_t); int skip_utf8_bom(char **, size_t);
void strbuf_add_wrapped_text(struct strbuf *buf, void strbuf_add_wrapped_text(struct strbuf *buf,
const char *text, int indent, int indent2, int width); const char *text, int indent, int indent2, int width);

View File

@ -1,7 +1,7 @@
#ifndef VARINT_H #ifndef VARINT_H
#define VARINT_H #define VARINT_H
extern int encode_varint(uintmax_t, unsigned char *); int encode_varint(uintmax_t, unsigned char *);
extern uintmax_t decode_varint(const unsigned char **); uintmax_t decode_varint(const unsigned char **);
#endif /* VARINT_H */ #endif /* VARINT_H */

View File

@ -13,6 +13,6 @@ struct sliding_view {
#define SLIDING_VIEW_INIT(input, len) { (input), 0, 0, (len), STRBUF_INIT } #define SLIDING_VIEW_INIT(input, len) { (input), 0, 0, (len), STRBUF_INIT }
extern int move_window(struct sliding_view *view, off_t off, size_t width); int move_window(struct sliding_view *view, off_t off, size_t width);
#endif #endif

View File

@ -4,7 +4,7 @@
struct line_buffer; struct line_buffer;
struct sliding_view; struct sliding_view;
extern int svndiff0_apply(struct line_buffer *delta, off_t delta_len, int svndiff0_apply(struct line_buffer *delta, off_t delta_len,
struct sliding_view *preimage, FILE *postimage); struct sliding_view *preimage, FILE *postimage);
#endif #endif

View File

@ -30,37 +30,37 @@ struct worktree {
* The caller is responsible for freeing the memory from the returned * The caller is responsible for freeing the memory from the returned
* worktree(s). * worktree(s).
*/ */
extern struct worktree **get_worktrees(unsigned flags); struct worktree **get_worktrees(unsigned flags);
/* /*
* Returns 1 if linked worktrees exist, 0 otherwise. * Returns 1 if linked worktrees exist, 0 otherwise.
*/ */
extern int submodule_uses_worktrees(const char *path); int submodule_uses_worktrees(const char *path);
/* /*
* Return git dir of the worktree. Note that the path may be relative. * Return git dir of the worktree. Note that the path may be relative.
* If wt is NULL, git dir of current worktree is returned. * If wt is NULL, git dir of current worktree is returned.
*/ */
extern const char *get_worktree_git_dir(const struct worktree *wt); const char *get_worktree_git_dir(const struct worktree *wt);
/* /*
* Search a worktree that can be unambiguously identified by * Search a worktree that can be unambiguously identified by
* "arg". "prefix" must not be NULL. * "arg". "prefix" must not be NULL.
*/ */
extern struct worktree *find_worktree(struct worktree **list, struct worktree *find_worktree(struct worktree **list,
const char *prefix, const char *prefix,
const char *arg); const char *arg);
/* /*
* Return true if the given worktree is the main one. * Return true if the given worktree is the main one.
*/ */
extern int is_main_worktree(const struct worktree *wt); int is_main_worktree(const struct worktree *wt);
/* /*
* Return the reason string if the given worktree is locked or NULL * Return the reason string if the given worktree is locked or NULL
* otherwise. * otherwise.
*/ */
extern const char *worktree_lock_reason(struct worktree *wt); const char *worktree_lock_reason(struct worktree *wt);
#define WT_VALIDATE_WORKTREE_MISSING_OK (1 << 0) #define WT_VALIDATE_WORKTREE_MISSING_OK (1 << 0)
@ -68,27 +68,27 @@ extern const char *worktree_lock_reason(struct worktree *wt);
* Return zero if the worktree is in good condition. Error message is * Return zero if the worktree is in good condition. Error message is
* returned if "errmsg" is not NULL. * returned if "errmsg" is not NULL.
*/ */
extern int validate_worktree(const struct worktree *wt, int validate_worktree(const struct worktree *wt,
struct strbuf *errmsg, struct strbuf *errmsg,
unsigned flags); unsigned flags);
/* /*
* Update worktrees/xxx/gitdir with the new path. * Update worktrees/xxx/gitdir with the new path.
*/ */
extern void update_worktree_location(struct worktree *wt, void update_worktree_location(struct worktree *wt,
const char *path_); const char *path_);
/* /*
* Free up the memory for worktree(s) * Free up the memory for worktree(s)
*/ */
extern void free_worktrees(struct worktree **); void free_worktrees(struct worktree **);
/* /*
* Check if a per-worktree symref points to a ref in the main worktree * Check if a per-worktree symref points to a ref in the main worktree
* or any linked worktree, and return the worktree that holds the ref, * or any linked worktree, and return the worktree that holds the ref,
* or NULL otherwise. The result may be destroyed by the next call. * or NULL otherwise. The result may be destroyed by the next call.
*/ */
extern const struct worktree *find_shared_symref(const char *symref, const struct worktree *find_shared_symref(const char *symref,
const char *target); const char *target);
/* /*

View File

@ -27,9 +27,9 @@ int read_mmfile(mmfile_t *ptr, const char *filename);
void read_mmblob(mmfile_t *ptr, const struct object_id *oid); void read_mmblob(mmfile_t *ptr, const struct object_id *oid);
int buffer_is_binary(const char *ptr, unsigned long size); int buffer_is_binary(const char *ptr, unsigned long size);
extern void xdiff_set_find_func(xdemitconf_t *xecfg, const char *line, int cflags); void xdiff_set_find_func(xdemitconf_t *xecfg, const char *line, int cflags);
extern void xdiff_clear_find_func(xdemitconf_t *xecfg); void xdiff_clear_find_func(xdemitconf_t *xecfg);
extern int git_xmerge_config(const char *var, const char *value, void *cb); int git_xmerge_config(const char *var, const char *value, void *cb);
extern int git_xmerge_style; extern int git_xmerge_style;
/* /*
@ -46,7 +46,7 @@ void discard_hunk_line(void *priv,
* The `flags` given as XDF_WHITESPACE_FLAGS determine how white spaces * The `flags` given as XDF_WHITESPACE_FLAGS determine how white spaces
* are treated for the comparision. * are treated for the comparision.
*/ */
extern int xdiff_compare_lines(const char *l1, long s1, int xdiff_compare_lines(const char *l1, long s1,
const char *l2, long s2, long flags); const char *l2, long s2, long flags);
/* /*
@ -54,6 +54,6 @@ extern int xdiff_compare_lines(const char *l1, long s1,
* The `flags` given as XDF_WHITESPACE_FLAGS determine how white spaces * The `flags` given as XDF_WHITESPACE_FLAGS determine how white spaces
* are treated for the hash. * are treated for the hash.
*/ */
extern unsigned long xdiff_hash_string(const char *s, size_t len, long flags); unsigned long xdiff_hash_string(const char *s, size_t len, long flags);
#endif #endif