#ifndef __GIT_SHARED_H #define __GIT_SHARED_H #ifdef __cplusplus extern "C" { #endif typedef void (*cgit_errfunc)( const char *fmt, ... ); extern void cgit_error( const char *fmt, ... ) __attribute__((format (printf,1,2))); extern cgit_errfunc cgit_fatal; /* Default Fatal Error Function == cgit_error() */ struct short_commit_info { char rev[GIT_OID_HEXSZ+1]; git_time_t date; int offset; }; extern int is_bare( const char *path ); extern git_repository *open_repository( const char *path ); extern git_commit *get_commit_by_ref( git_repository *repo, const char *ref ); extern git_commit *get_commit_by_hex( git_repository *repo, const char *hex ); extern void close_repository( git_repository *repo ); extern void fill_short_commit_info( struct short_commit_info *info, const char *path ); extern void fill_commit_info( struct cgit_info *info, const char *path, const char *rpath ); extern void fill_mime_info( struct cgit_info *info, const char *path, const char *rpath ); extern size_t branches_number( const char *path, const char *skip ); extern size_t tags_number( const char *path ); struct cgit_ref_names { char **name; size_t len; }; extern struct cgit_ref_names *cgit_ref_names_new( void ); extern void cgit_ref_names_allocate( struct cgit_ref_names **ref_names ); extern void cgit_ref_names_add( struct cgit_ref_names *names, const char *name ); extern void cgit_ref_names_free( struct cgit_ref_names *names ); extern void lookup_branches_by_prefix( struct cgit_ref_names **ref_names, const char *prefix ); extern void lookup_tags_by_prefix( struct cgit_ref_names **ref_names, const char *prefix ); struct cgit_hex_commits { char **hex; size_t len; }; extern struct cgit_hex_commits *cgit_hex_commits_new( void ); extern void cgit_hex_commits_allocate( struct cgit_hex_commits **hex_commits ); extern void cgit_hex_commits_add( struct cgit_hex_commits *commits, const char *hex ); extern void cgit_hex_commits_free( struct cgit_hex_commits *commits ); extern void parse_relative_path( char *ref, char *rpath, const char *relative_path ); extern void cgit_fill_commits_list( struct cgit_hex_commits **hex_commits, int ofs, const char *relative_path, const char *revision ); extern git_repository *cgit_open_repository( void ); extern git_commit *lookup_commit_by_ref( const char *ref ); extern git_commit *lookup_commit_by_hex( const char *hex ); extern void cgit_fill_diff_with_parent( struct strbuf *sb, char *parent_hex, size_t parent_len, int *files, int *insertions, int *deletions, const char *hex ); extern void cgit_diff_with_parent( struct strbuf *sb, char *parent_hex, size_t parent_len, int *files, int *insertions, int *deletions, const char *hex, const char *relative_path ); #ifdef __cplusplus } #endif #endif /* __GIT_SHARED_H */