cSvn-UI for SVN Repositories

cGit-UI – is a web interface for Subversion (SVN) Repositories. cSvn CGI script is writen in C and therefore it's fast enough

6 Commits   0 Branches   2 Tags
bfc1508d (kx 2023-03-24 03:55:33 +0300   1) 
bfc1508d (kx 2023-03-24 03:55:33 +0300   2) #ifndef    __CONTEXT_H
bfc1508d (kx 2023-03-24 03:55:33 +0300   3) #define    __CONTEXT_H
bfc1508d (kx 2023-03-24 03:55:33 +0300   4) 
bfc1508d (kx 2023-03-24 03:55:33 +0300   5) #ifdef __cplusplus
bfc1508d (kx 2023-03-24 03:55:33 +0300   6) extern "C" {
bfc1508d (kx 2023-03-24 03:55:33 +0300   7) #endif
bfc1508d (kx 2023-03-24 03:55:33 +0300   8) 
bfc1508d (kx 2023-03-24 03:55:33 +0300   9) 
bfc1508d (kx 2023-03-24 03:55:33 +0300  10) #define CONTEXT_MEM_SIZE  524288
bfc1508d (kx 2023-03-24 03:55:33 +0300  11) 
bfc1508d (kx 2023-03-24 03:55:33 +0300  12) struct __context
bfc1508d (kx 2023-03-24 03:55:33 +0300  13) {
bfc1508d (kx 2023-03-24 03:55:33 +0300  14)   void *_cur_brk;
bfc1508d (kx 2023-03-24 03:55:33 +0300  15)   unsigned char _mem[CONTEXT_MEM_SIZE];
bfc1508d (kx 2023-03-24 03:55:33 +0300  16) };
bfc1508d (kx 2023-03-24 03:55:33 +0300  17) 
bfc1508d (kx 2023-03-24 03:55:33 +0300  18) extern struct __context *pmctx;
bfc1508d (kx 2023-03-24 03:55:33 +0300  19) 
bfc1508d (kx 2023-03-24 03:55:33 +0300  20) #define __cur_brk  (*((void **)&(pmctx->_cur_brk)))
bfc1508d (kx 2023-03-24 03:55:33 +0300  21) #define __mem      ((unsigned char *)&((pmctx->_mem)[0]))
bfc1508d (kx 2023-03-24 03:55:33 +0300  22) 
bfc1508d (kx 2023-03-24 03:55:33 +0300  23) extern void __mctx_init( void );
bfc1508d (kx 2023-03-24 03:55:33 +0300  24) extern void *__sbrk( int incr );
bfc1508d (kx 2023-03-24 03:55:33 +0300  25) 
bfc1508d (kx 2023-03-24 03:55:33 +0300  26) 
bfc1508d (kx 2023-03-24 03:55:33 +0300  27) struct csvn_tmplt_vars {
bfc1508d (kx 2023-03-24 03:55:33 +0300  28)   const char *css;
bfc1508d (kx 2023-03-24 03:55:33 +0300  29)   const char *owner;
bfc1508d (kx 2023-03-24 03:55:33 +0300  30)   const char *author;
bfc1508d (kx 2023-03-24 03:55:33 +0300  31)   const char *description;
bfc1508d (kx 2023-03-24 03:55:33 +0300  32)   const char *keywords;
bfc1508d (kx 2023-03-24 03:55:33 +0300  33)   const char *title;
bfc1508d (kx 2023-03-24 03:55:33 +0300  34)   const char *favicon_path;
bfc1508d (kx 2023-03-24 03:55:33 +0300  35)   const char *syntax_highlight_css;
bfc1508d (kx 2023-03-24 03:55:33 +0300  36)   const char *logo;
bfc1508d (kx 2023-03-24 03:55:33 +0300  37)   const char *logo_alt;
bfc1508d (kx 2023-03-24 03:55:33 +0300  38)   const char *logo_link;
bfc1508d (kx 2023-03-24 03:55:33 +0300  39)   const char *home_page;
bfc1508d (kx 2023-03-24 03:55:33 +0300  40)   const char *snapshots;
bfc1508d (kx 2023-03-24 03:55:33 +0300  41)   const char *status_line;
bfc1508d (kx 2023-03-24 03:55:33 +0300  42)   const char *main_menu_logo;
bfc1508d (kx 2023-03-24 03:55:33 +0300  43)   const char *main_menu_item;
bfc1508d (kx 2023-03-24 03:55:33 +0300  44)   const char *left_menu_items;
bfc1508d (kx 2023-03-24 03:55:33 +0300  45)   const char *popup_menu_items;
bfc1508d (kx 2023-03-24 03:55:33 +0300  46)   const char *right_menu_items;
bfc1508d (kx 2023-03-24 03:55:33 +0300  47)   const char *copyright_notice;
bfc1508d (kx 2023-03-24 03:55:33 +0300  48)   const char *copyright;
bfc1508d (kx 2023-03-24 03:55:33 +0300  49)   const char *page_type;
bfc1508d (kx 2023-03-24 03:55:33 +0300  50)   const char *page_size;
bfc1508d (kx 2023-03-24 03:55:33 +0300  51)   const char *num_of_repos;
bfc1508d (kx 2023-03-24 03:55:33 +0300  52) };
bfc1508d (kx 2023-03-24 03:55:33 +0300  53) 
bfc1508d (kx 2023-03-24 03:55:33 +0300  54) #define KIND_DIR     0
bfc1508d (kx 2023-03-24 03:55:33 +0300  55) #define KIND_FILE    1
bfc1508d (kx 2023-03-24 03:55:33 +0300  56) #define KIND_UNKNOWN 2
bfc1508d (kx 2023-03-24 03:55:33 +0300  57) #define CSVN_INFO_INIT  (struct csvn_info) { .kind = KIND_UNKNOWN, .revision = 0, .author = NULL, .date = 0, .mime = NULL, .lang = NULL }
bfc1508d (kx 2023-03-24 03:55:33 +0300  58) 
bfc1508d (kx 2023-03-24 03:55:33 +0300  59) struct csvn_info {
bfc1508d (kx 2023-03-24 03:55:33 +0300  60)   int kind;
bfc1508d (kx 2023-03-24 03:55:33 +0300  61)   int revision;
bfc1508d (kx 2023-03-24 03:55:33 +0300  62)   const char *author;
bfc1508d (kx 2023-03-24 03:55:33 +0300  63)   time_t date;
bfc1508d (kx 2023-03-24 03:55:33 +0300  64)   const char *mime;
bfc1508d (kx 2023-03-24 03:55:33 +0300  65)   const char *lang;
bfc1508d (kx 2023-03-24 03:55:33 +0300  66) };
bfc1508d (kx 2023-03-24 03:55:33 +0300  67) 
bfc1508d (kx 2023-03-24 03:55:33 +0300  68) struct csvn_repository {
bfc1508d (kx 2023-03-24 03:55:33 +0300  69)   const char       *name;
bfc1508d (kx 2023-03-24 03:55:33 +0300  70)   struct csvn_info  info;
278d0ffa (kx 2023-04-12 19:33:28 +0300  71)   const char       *repo_root;
bfc1508d (kx 2023-03-24 03:55:33 +0300  72)   const char       *relative_path;
bfc1508d (kx 2023-03-24 03:55:33 +0300  73)   struct csvn_info  relative_info;
bfc1508d (kx 2023-03-24 03:55:33 +0300  74)   const char       *relative_html;
bfc1508d (kx 2023-03-24 03:55:33 +0300  75)   const char       *relative_href;
bfc1508d (kx 2023-03-24 03:55:33 +0300  76)   const char       *search_placeholder;
bfc1508d (kx 2023-03-24 03:55:33 +0300  77)   const char       *trunk;    /* trunk    directory name */
bfc1508d (kx 2023-03-24 03:55:33 +0300  78)   const char       *branches; /* branches directory name */
bfc1508d (kx 2023-03-24 03:55:33 +0300  79)   const char       *tags;     /* tags     directory name */
bfc1508d (kx 2023-03-24 03:55:33 +0300  80)   const char       *checkout_prefix;
bfc1508d (kx 2023-03-24 03:55:33 +0300  81)   const char       *checkout_ro_prefix;
bfc1508d (kx 2023-03-24 03:55:33 +0300  82)   int               nbranches; /* number of branches */
bfc1508d (kx 2023-03-24 03:55:33 +0300  83)   int               ntags;     /* number of tags     */
bfc1508d (kx 2023-03-24 03:55:33 +0300  84) };
bfc1508d (kx 2023-03-24 03:55:33 +0300  85) 
bfc1508d (kx 2023-03-24 03:55:33 +0300  86) struct csvn_page {
bfc1508d (kx 2023-03-24 03:55:33 +0300  87)   time_t modified;
bfc1508d (kx 2023-03-24 03:55:33 +0300  88)   time_t expires;
bfc1508d (kx 2023-03-24 03:55:33 +0300  89)   size_t size;
bfc1508d (kx 2023-03-24 03:55:33 +0300  90)   const char *mimetype;
bfc1508d (kx 2023-03-24 03:55:33 +0300  91)   const char *charset;
bfc1508d (kx 2023-03-24 03:55:33 +0300  92)   int status;
bfc1508d (kx 2023-03-24 03:55:33 +0300  93)   const char *status_message;
bfc1508d (kx 2023-03-24 03:55:33 +0300  94)   const char *header;
bfc1508d (kx 2023-03-24 03:55:33 +0300  95)   const char *footer;
bfc1508d (kx 2023-03-24 03:55:33 +0300  96) };
bfc1508d (kx 2023-03-24 03:55:33 +0300  97) 
bfc1508d (kx 2023-03-24 03:55:33 +0300  98) struct csvn_environment {
bfc1508d (kx 2023-03-24 03:55:33 +0300  99)   const char *http_host;
bfc1508d (kx 2023-03-24 03:55:33 +0300 100)   const char *https;
bfc1508d (kx 2023-03-24 03:55:33 +0300 101)   const char *no_http;
bfc1508d (kx 2023-03-24 03:55:33 +0300 102)   const char *path_info;
bfc1508d (kx 2023-03-24 03:55:33 +0300 103)   const char *query_string;
bfc1508d (kx 2023-03-24 03:55:33 +0300 104)   const char *request_uri;
bfc1508d (kx 2023-03-24 03:55:33 +0300 105)   const char *request_scheme;
bfc1508d (kx 2023-03-24 03:55:33 +0300 106)   const char *request_method;
bfc1508d (kx 2023-03-24 03:55:33 +0300 107)   const char *script_name;
bfc1508d (kx 2023-03-24 03:55:33 +0300 108)   const char *server_name;
bfc1508d (kx 2023-03-24 03:55:33 +0300 109)   const char *server_port;
bfc1508d (kx 2023-03-24 03:55:33 +0300 110)   const char *http_cookie;
bfc1508d (kx 2023-03-24 03:55:33 +0300 111)   unsigned int content_lenght;
bfc1508d (kx 2023-03-24 03:55:33 +0300 112)   const char *http_root;
bfc1508d (kx 2023-03-24 03:55:33 +0300 113)   int authenticated;
bfc1508d (kx 2023-03-24 03:55:33 +0300 114) };
bfc1508d (kx 2023-03-24 03:55:33 +0300 115) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 116) struct csvn_query {
bfc1508d (kx 2023-03-24 03:55:33 +0300 117)   int ofs;
bfc1508d (kx 2023-03-24 03:55:33 +0300 118)   int rev;
bfc1508d (kx 2023-03-24 03:55:33 +0300 119)   const char *revision;
bfc1508d (kx 2023-03-24 03:55:33 +0300 120)   const char *operation;
bfc1508d (kx 2023-03-24 03:55:33 +0300 121)   const char *search;
bfc1508d (kx 2023-03-24 03:55:33 +0300 122) };
bfc1508d (kx 2023-03-24 03:55:33 +0300 123) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 124) struct csvn_versions {
bfc1508d (kx 2023-03-24 03:55:33 +0300 125)   const char *subversion;
bfc1508d (kx 2023-03-24 03:55:33 +0300 126)   const char *nginx;
bfc1508d (kx 2023-03-24 03:55:33 +0300 127)   const char *csvn;
bfc1508d (kx 2023-03-24 03:55:33 +0300 128) };
bfc1508d (kx 2023-03-24 03:55:33 +0300 129) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 130) struct csvn_promotion {
bfc1508d (kx 2023-03-24 03:55:33 +0300 131)   const char *analytic_links;
bfc1508d (kx 2023-03-24 03:55:33 +0300 132)   const char *analytic_scripts;
bfc1508d (kx 2023-03-24 03:55:33 +0300 133)   int donate;
bfc1508d (kx 2023-03-24 03:55:33 +0300 134)   const char *donate_css;
bfc1508d (kx 2023-03-24 03:55:33 +0300 135)   const char *donate_html;
bfc1508d (kx 2023-03-24 03:55:33 +0300 136)   const char *donate_js;
bfc1508d (kx 2023-03-24 03:55:33 +0300 137)   const char *donate_header;
bfc1508d (kx 2023-03-24 03:55:33 +0300 138)   const char *donate_purpose;
bfc1508d (kx 2023-03-24 03:55:33 +0300 139) };
bfc1508d (kx 2023-03-24 03:55:33 +0300 140) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 141) struct csvn_context {
bfc1508d (kx 2023-03-24 03:55:33 +0300 142)   struct csvn_environment  env;
bfc1508d (kx 2023-03-24 03:55:33 +0300 143)   struct csvn_promotion    promo;
bfc1508d (kx 2023-03-24 03:55:33 +0300 144)   struct csvn_query        query;
bfc1508d (kx 2023-03-24 03:55:33 +0300 145)   struct csvn_page         page;
bfc1508d (kx 2023-03-24 03:55:33 +0300 146)   struct csvn_tmplt_vars   vars;
bfc1508d (kx 2023-03-24 03:55:33 +0300 147)   struct csvn_repository   repo;
bfc1508d (kx 2023-03-24 03:55:33 +0300 148)   struct csvn_versions     vers;
bfc1508d (kx 2023-03-24 03:55:33 +0300 149) };
bfc1508d (kx 2023-03-24 03:55:33 +0300 150) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 151) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 152) extern const char *ptype_repolist;
bfc1508d (kx 2023-03-24 03:55:33 +0300 153) extern const char *ptype_repo;
bfc1508d (kx 2023-03-24 03:55:33 +0300 154) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 155) extern struct csvn_context ctx;
bfc1508d (kx 2023-03-24 03:55:33 +0300 156) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 157) /*
bfc1508d (kx 2023-03-24 03:55:33 +0300 158)   header/footer template variables:
bfc1508d (kx 2023-03-24 03:55:33 +0300 159)   ================================
bfc1508d (kx 2023-03-24 03:55:33 +0300 160)   ${css}
bfc1508d (kx 2023-03-24 03:55:33 +0300 161)   ${owner}
bfc1508d (kx 2023-03-24 03:55:33 +0300 162)   ${author}
bfc1508d (kx 2023-03-24 03:55:33 +0300 163)   ${description}
bfc1508d (kx 2023-03-24 03:55:33 +0300 164)   ${keywords}
bfc1508d (kx 2023-03-24 03:55:33 +0300 165)   ${title}
bfc1508d (kx 2023-03-24 03:55:33 +0300 166)   ${favicon-path}
bfc1508d (kx 2023-03-24 03:55:33 +0300 167)   ${syntax-highlight-css}
bfc1508d (kx 2023-03-24 03:55:33 +0300 168)   ${logo}
bfc1508d (kx 2023-03-24 03:55:33 +0300 169)   ${logo-alt}
bfc1508d (kx 2023-03-24 03:55:33 +0300 170)   ${logo-link}
bfc1508d (kx 2023-03-24 03:55:33 +0300 171)   ${home-page}
bfc1508d (kx 2023-03-24 03:55:33 +0300 172)   ${snapshots}
bfc1508d (kx 2023-03-24 03:55:33 +0300 173)   ${status-line}
bfc1508d (kx 2023-03-24 03:55:33 +0300 174)   ${main-menu-logo}
bfc1508d (kx 2023-03-24 03:55:33 +0300 175)   ${main-menu-item}
bfc1508d (kx 2023-03-24 03:55:33 +0300 176)   ${left-menu-items}
bfc1508d (kx 2023-03-24 03:55:33 +0300 177)   ${popup-menu-items}
bfc1508d (kx 2023-03-24 03:55:33 +0300 178)   ${right-menu-items}
bfc1508d (kx 2023-03-24 03:55:33 +0300 179)   ${relative-html}
bfc1508d (kx 2023-03-24 03:55:33 +0300 180)   ${search-placeholder}
bfc1508d (kx 2023-03-24 03:55:33 +0300 181) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 182)   ${analytic-links}
bfc1508d (kx 2023-03-24 03:55:33 +0300 183)   ${analytic-scripts}
bfc1508d (kx 2023-03-24 03:55:33 +0300 184)   ${donate-css}
bfc1508d (kx 2023-03-24 03:55:33 +0300 185)   ${donate-html}
bfc1508d (kx 2023-03-24 03:55:33 +0300 186)   ${donate-js}
bfc1508d (kx 2023-03-24 03:55:33 +0300 187)   ${donate-header}
bfc1508d (kx 2023-03-24 03:55:33 +0300 188)   ${donate-purpose}
bfc1508d (kx 2023-03-24 03:55:33 +0300 189) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 190)   ${svn-version}
bfc1508d (kx 2023-03-24 03:55:33 +0300 191)   ${nginx-version}
bfc1508d (kx 2023-03-24 03:55:33 +0300 192)   ${csvn-version}
bfc1508d (kx 2023-03-24 03:55:33 +0300 193)   ${copyright-notice}
bfc1508d (kx 2023-03-24 03:55:33 +0300 194)   ${copyright}
bfc1508d (kx 2023-03-24 03:55:33 +0300 195) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 196)   ${page-type}
bfc1508d (kx 2023-03-24 03:55:33 +0300 197)   ${page-size}
bfc1508d (kx 2023-03-24 03:55:33 +0300 198)   ${num-of-repos}
bfc1508d (kx 2023-03-24 03:55:33 +0300 199)  */
bfc1508d (kx 2023-03-24 03:55:33 +0300 200) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 201) extern void csvn_prepare_context( void );
bfc1508d (kx 2023-03-24 03:55:33 +0300 202) extern void csvn_prepare_template_variables( void );
bfc1508d (kx 2023-03-24 03:55:33 +0300 203) extern void csvn_release_template_variables( void );
bfc1508d (kx 2023-03-24 03:55:33 +0300 204) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 205) extern void csvn_parse_query( void );
bfc1508d (kx 2023-03-24 03:55:33 +0300 206) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 207) extern int ctx_grab_int_query_param( const char *name );
bfc1508d (kx 2023-03-24 03:55:33 +0300 208) extern const char *ctx_remove_query_param( const char *query_string, const char *name );
bfc1508d (kx 2023-03-24 03:55:33 +0300 209) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 210) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 211) #ifdef __cplusplus
bfc1508d (kx 2023-03-24 03:55:33 +0300 212) }
bfc1508d (kx 2023-03-24 03:55:33 +0300 213) #endif
bfc1508d (kx 2023-03-24 03:55:33 +0300 214) 
bfc1508d (kx 2023-03-24 03:55:33 +0300 215) #endif  /* __CONTEXT_H */