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 */