diff options
author | kx <kx@radix.pro> | 2023-03-24 03:55:33 +0300 |
---|---|---|
committer | kx <kx@radix.pro> | 2023-03-24 03:55:33 +0300 |
commit | bfc1508d26c89c9a36d2d9a827fe2c4ed128884d (patch) | |
tree | 8d41298a7072a3e289e4912f77ece75cbea1bd54 /csvncgi/ctx.h | |
parent | c836ae3775cf72f17e0b7e3792d156fdb389bee3 (diff) | |
download | csvn-ui-bfc1508d26c89c9a36d2d9a827fe2c4ed128884d.tar.xz |
Version 0.1.4
Diffstat (limited to 'csvncgi/ctx.h')
-rw-r--r-- | csvncgi/ctx.h | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/csvncgi/ctx.h b/csvncgi/ctx.h new file mode 100644 index 0000000..d184682 --- /dev/null +++ b/csvncgi/ctx.h @@ -0,0 +1,214 @@ + +#ifndef __CONTEXT_H +#define __CONTEXT_H + +#ifdef __cplusplus +extern "C" { +#endif + + +#define CONTEXT_MEM_SIZE 524288 + +struct __context +{ + void *_cur_brk; + unsigned char _mem[CONTEXT_MEM_SIZE]; +}; + +extern struct __context *pmctx; + +#define __cur_brk (*((void **)&(pmctx->_cur_brk))) +#define __mem ((unsigned char *)&((pmctx->_mem)[0])) + +extern void __mctx_init( void ); +extern void *__sbrk( int incr ); + + +struct csvn_tmplt_vars { + const char *css; + const char *owner; + const char *author; + const char *description; + const char *keywords; + const char *title; + const char *favicon_path; + const char *syntax_highlight_css; + const char *logo; + const char *logo_alt; + const char *logo_link; + const char *home_page; + const char *snapshots; + const char *status_line; + const char *main_menu_logo; + const char *main_menu_item; + const char *left_menu_items; + const char *popup_menu_items; + const char *right_menu_items; + const char *copyright_notice; + const char *copyright; + const char *page_type; + const char *page_size; + const char *num_of_repos; +}; + +#define KIND_DIR 0 +#define KIND_FILE 1 +#define KIND_UNKNOWN 2 +#define CSVN_INFO_INIT (struct csvn_info) { .kind = KIND_UNKNOWN, .revision = 0, .author = NULL, .date = 0, .mime = NULL, .lang = NULL } + +struct csvn_info { + int kind; + int revision; + const char *author; + time_t date; + const char *mime; + const char *lang; +}; + +struct csvn_repository { + const char *name; + struct csvn_info info; + const char *relative_path; + struct csvn_info relative_info; + const char *relative_html; + const char *relative_href; + const char *search_placeholder; + const char *trunk; /* trunk directory name */ + const char *branches; /* branches directory name */ + const char *tags; /* tags directory name */ + const char *checkout_prefix; + const char *checkout_ro_prefix; + int nbranches; /* number of branches */ + int ntags; /* number of tags */ +}; + +struct csvn_page { + time_t modified; + time_t expires; + size_t size; + const char *mimetype; + const char *charset; + int status; + const char *status_message; + const char *header; + const char *footer; +}; + +struct csvn_environment { + const char *http_host; + const char *https; + const char *no_http; + const char *path_info; + const char *query_string; + const char *request_uri; + const char *request_scheme; + const char *request_method; + const char *script_name; + const char *server_name; + const char *server_port; + const char *http_cookie; + unsigned int content_lenght; + const char *http_root; + int authenticated; +}; + +struct csvn_query { + int ofs; + int rev; + const char *revision; + const char *operation; + const char *search; +}; + +struct csvn_versions { + const char *subversion; + const char *nginx; + const char *csvn; +}; + +struct csvn_promotion { + const char *analytic_links; + const char *analytic_scripts; + int donate; + const char *donate_css; + const char *donate_html; + const char *donate_js; + const char *donate_header; + const char *donate_purpose; +}; + +struct csvn_context { + struct csvn_environment env; + struct csvn_promotion promo; + struct csvn_query query; + struct csvn_page page; + struct csvn_tmplt_vars vars; + struct csvn_repository repo; + struct csvn_versions vers; +}; + + +extern const char *ptype_repolist; +extern const char *ptype_repo; + +extern struct csvn_context ctx; + +/* + header/footer template variables: + ================================ + ${css} + ${owner} + ${author} + ${description} + ${keywords} + ${title} + ${favicon-path} + ${syntax-highlight-css} + ${logo} + ${logo-alt} + ${logo-link} + ${home-page} + ${snapshots} + ${status-line} + ${main-menu-logo} + ${main-menu-item} + ${left-menu-items} + ${popup-menu-items} + ${right-menu-items} + ${relative-html} + ${search-placeholder} + + ${analytic-links} + ${analytic-scripts} + ${donate-css} + ${donate-html} + ${donate-js} + ${donate-header} + ${donate-purpose} + + ${svn-version} + ${nginx-version} + ${csvn-version} + ${copyright-notice} + ${copyright} + + ${page-type} + ${page-size} + ${num-of-repos} + */ + +extern void csvn_prepare_context( void ); +extern void csvn_prepare_template_variables( void ); +extern void csvn_release_template_variables( void ); + +extern void csvn_parse_query( void ); + +extern int ctx_grab_int_query_param( const char *name ); +extern const char *ctx_remove_query_param( const char *query_string, const char *name ); + + +#ifdef __cplusplus +} +#endif + +#endif /* __CONTEXT_H */ |