05d292b2 (kx 2023-03-24 03:51:10 +0300 1)
05d292b2 (kx 2023-03-24 03:51:10 +0300 2) #ifndef __GIT_SHARED_H
05d292b2 (kx 2023-03-24 03:51:10 +0300 3) #define __GIT_SHARED_H
05d292b2 (kx 2023-03-24 03:51:10 +0300 4)
05d292b2 (kx 2023-03-24 03:51:10 +0300 5) #ifdef __cplusplus
05d292b2 (kx 2023-03-24 03:51:10 +0300 6) extern "C" {
05d292b2 (kx 2023-03-24 03:51:10 +0300 7) #endif
05d292b2 (kx 2023-03-24 03:51:10 +0300 8)
05d292b2 (kx 2023-03-24 03:51:10 +0300 9)
05d292b2 (kx 2023-03-24 03:51:10 +0300 10) typedef void (*cgit_errfunc)( const char *fmt, ... );
05d292b2 (kx 2023-03-24 03:51:10 +0300 11)
05d292b2 (kx 2023-03-24 03:51:10 +0300 12) extern void cgit_error( const char *fmt, ... ) __attribute__((format (printf,1,2)));
05d292b2 (kx 2023-03-24 03:51:10 +0300 13) extern cgit_errfunc cgit_fatal; /* Default Fatal Error Function == cgit_error() */
05d292b2 (kx 2023-03-24 03:51:10 +0300 14)
05d292b2 (kx 2023-03-24 03:51:10 +0300 15) struct short_commit_info {
05d292b2 (kx 2023-03-24 03:51:10 +0300 16) char rev[GIT_OID_HEXSZ+1];
05d292b2 (kx 2023-03-24 03:51:10 +0300 17) git_time_t date;
05d292b2 (kx 2023-03-24 03:51:10 +0300 18) int offset;
05d292b2 (kx 2023-03-24 03:51:10 +0300 19) };
05d292b2 (kx 2023-03-24 03:51:10 +0300 20)
05d292b2 (kx 2023-03-24 03:51:10 +0300 21) extern int is_bare( const char *path );
05d292b2 (kx 2023-03-24 03:51:10 +0300 22) extern git_repository *open_repository( const char *path );
05d292b2 (kx 2023-03-24 03:51:10 +0300 23) extern git_commit *get_commit_by_ref( git_repository *repo, const char *ref );
05d292b2 (kx 2023-03-24 03:51:10 +0300 24) extern git_commit *get_commit_by_hex( git_repository *repo, const char *hex );
05d292b2 (kx 2023-03-24 03:51:10 +0300 25) extern void close_repository( git_repository *repo );
05d292b2 (kx 2023-03-24 03:51:10 +0300 26)
05d292b2 (kx 2023-03-24 03:51:10 +0300 27) extern void fill_short_commit_info( struct short_commit_info *info, const char *path );
05d292b2 (kx 2023-03-24 03:51:10 +0300 28) extern void fill_commit_info( struct cgit_info *info, const char *path, const char *rpath );
05d292b2 (kx 2023-03-24 03:51:10 +0300 29) extern void fill_mime_info( struct cgit_info *info, const char *path, const char *rpath );
05d292b2 (kx 2023-03-24 03:51:10 +0300 30)
05d292b2 (kx 2023-03-24 03:51:10 +0300 31) extern size_t branches_number( const char *path, const char *skip );
05d292b2 (kx 2023-03-24 03:51:10 +0300 32) extern size_t tags_number( const char *path );
05d292b2 (kx 2023-03-24 03:51:10 +0300 33)
05d292b2 (kx 2023-03-24 03:51:10 +0300 34) struct cgit_ref_names {
05d292b2 (kx 2023-03-24 03:51:10 +0300 35) char **name;
05d292b2 (kx 2023-03-24 03:51:10 +0300 36) size_t len;
05d292b2 (kx 2023-03-24 03:51:10 +0300 37) };
05d292b2 (kx 2023-03-24 03:51:10 +0300 38)
05d292b2 (kx 2023-03-24 03:51:10 +0300 39) extern struct cgit_ref_names *cgit_ref_names_new( void );
05d292b2 (kx 2023-03-24 03:51:10 +0300 40) extern void cgit_ref_names_allocate( struct cgit_ref_names **ref_names );
05d292b2 (kx 2023-03-24 03:51:10 +0300 41) extern void cgit_ref_names_add( struct cgit_ref_names *names, const char *name );
05d292b2 (kx 2023-03-24 03:51:10 +0300 42) extern void cgit_ref_names_free( struct cgit_ref_names *names );
05d292b2 (kx 2023-03-24 03:51:10 +0300 43)
05d292b2 (kx 2023-03-24 03:51:10 +0300 44) extern void lookup_branches_by_prefix( struct cgit_ref_names **ref_names, const char *prefix );
05d292b2 (kx 2023-03-24 03:51:10 +0300 45) extern void lookup_tags_by_prefix( struct cgit_ref_names **ref_names, const char *prefix );
05d292b2 (kx 2023-03-24 03:51:10 +0300 46)
05d292b2 (kx 2023-03-24 03:51:10 +0300 47) struct cgit_hex_commits {
05d292b2 (kx 2023-03-24 03:51:10 +0300 48) char **hex;
05d292b2 (kx 2023-03-24 03:51:10 +0300 49) size_t len;
05d292b2 (kx 2023-03-24 03:51:10 +0300 50) };
05d292b2 (kx 2023-03-24 03:51:10 +0300 51)
05d292b2 (kx 2023-03-24 03:51:10 +0300 52) extern struct cgit_hex_commits *cgit_hex_commits_new( void );
05d292b2 (kx 2023-03-24 03:51:10 +0300 53) extern void cgit_hex_commits_allocate( struct cgit_hex_commits **hex_commits );
05d292b2 (kx 2023-03-24 03:51:10 +0300 54) extern void cgit_hex_commits_add( struct cgit_hex_commits *commits, const char *hex );
05d292b2 (kx 2023-03-24 03:51:10 +0300 55) extern void cgit_hex_commits_free( struct cgit_hex_commits *commits );
05d292b2 (kx 2023-03-24 03:51:10 +0300 56)
05d292b2 (kx 2023-03-24 03:51:10 +0300 57) extern void parse_relative_path( char *ref, char *rpath, const char *relative_path );
05d292b2 (kx 2023-03-24 03:51:10 +0300 58)
05d292b2 (kx 2023-03-24 03:51:10 +0300 59) extern void cgit_fill_commits_list( struct cgit_hex_commits **hex_commits, int ofs, const char *relative_path, const char *revision );
05d292b2 (kx 2023-03-24 03:51:10 +0300 60)
05d292b2 (kx 2023-03-24 03:51:10 +0300 61) extern git_repository *cgit_open_repository( void );
05d292b2 (kx 2023-03-24 03:51:10 +0300 62) extern git_commit *lookup_commit_by_ref( const char *ref );
05d292b2 (kx 2023-03-24 03:51:10 +0300 63) extern git_commit *lookup_commit_by_hex( const char *hex );
05d292b2 (kx 2023-03-24 03:51:10 +0300 64)
05d292b2 (kx 2023-03-24 03:51:10 +0300 65) 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 );
05d292b2 (kx 2023-03-24 03:51:10 +0300 66) 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 );
05d292b2 (kx 2023-03-24 03:51:10 +0300 67)
05d292b2 (kx 2023-03-24 03:51:10 +0300 68)
05d292b2 (kx 2023-03-24 03:51:10 +0300 69) #ifdef __cplusplus
05d292b2 (kx 2023-03-24 03:51:10 +0300 70) }
05d292b2 (kx 2023-03-24 03:51:10 +0300 71) #endif
05d292b2 (kx 2023-03-24 03:51:10 +0300 72)
05d292b2 (kx 2023-03-24 03:51:10 +0300 73) #endif /* __GIT_SHARED_H */