diff options
author | kx <kx@radix.pro> | 2023-03-24 03:51:10 +0300 |
---|---|---|
committer | kx <kx@radix.pro> | 2023-03-24 03:51:10 +0300 |
commit | 05d292b208dfe01324826b4c87bbc4da3389a0d5 (patch) | |
tree | b10a2269e9320785f3b61189e75f6778fa167986 /cgitcgi/git-shared.h | |
parent | 40ab18a661ff6ada40e73969be293918d346a2f5 (diff) | |
download | cgit-ui-05d292b208dfe01324826b4c87bbc4da3389a0d5.tar.xz |
Version 0.1.7
Diffstat (limited to 'cgitcgi/git-shared.h')
-rw-r--r-- | cgitcgi/git-shared.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/cgitcgi/git-shared.h b/cgitcgi/git-shared.h new file mode 100644 index 0000000..a81a8f7 --- /dev/null +++ b/cgitcgi/git-shared.h @@ -0,0 +1,73 @@ + +#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 */ |