5 kx
5 kx #ifndef __CONTEXT_H
5 kx #define __CONTEXT_H
5 kx
5 kx #ifdef __cplusplus
5 kx extern "C" {
5 kx #endif
5 kx
5 kx
5 kx #define CONTEXT_MEM_SIZE 524288
5 kx
5 kx struct __context
5 kx {
5 kx void *_cur_brk;
5 kx unsigned char _mem[CONTEXT_MEM_SIZE];
5 kx };
5 kx
5 kx extern struct __context *pmctx;
5 kx
5 kx #define __cur_brk (*((void **)&(pmctx->_cur_brk)))
5 kx #define __mem ((unsigned char *)&((pmctx->_mem)[0]))
5 kx
5 kx extern void __mctx_init( void );
5 kx extern void *__sbrk( int incr );
5 kx
5 kx
5 kx struct csvn_tmplt_vars {
5 kx const char *css;
5 kx const char *owner;
5 kx const char *author;
5 kx const char *description;
5 kx const char *keywords;
5 kx const char *title;
5 kx const char *favicon_path;
5 kx const char *syntax_highlight_css;
5 kx const char *logo;
5 kx const char *logo_alt;
5 kx const char *logo_link;
5 kx const char *home_page;
5 kx const char *snapshots;
5 kx const char *status_line;
5 kx const char *main_menu_logo;
5 kx const char *main_menu_item;
5 kx const char *left_menu_items;
5 kx const char *popup_menu_items;
5 kx const char *right_menu_items;
5 kx const char *copyright_notice;
5 kx const char *copyright;
5 kx const char *page_type;
5 kx const char *page_size;
5 kx const char *num_of_repos;
5 kx };
5 kx
5 kx #define KIND_DIR 0
5 kx #define KIND_FILE 1
5 kx #define KIND_UNKNOWN 2
5 kx #define CSVN_INFO_INIT (struct csvn_info) { .kind = KIND_UNKNOWN, .revision = 0, .author = NULL, .date = 0, .mime = NULL, .lang = NULL }
5 kx
5 kx struct csvn_info {
5 kx int kind;
5 kx int revision;
5 kx const char *author;
5 kx time_t date;
5 kx const char *mime;
5 kx const char *lang;
5 kx };
5 kx
5 kx struct csvn_repository {
5 kx const char *name;
5 kx struct csvn_info info;
5 kx const char *repo_root;
5 kx const char *relative_path;
5 kx struct csvn_info relative_info;
5 kx const char *relative_html;
5 kx const char *relative_href;
5 kx const char *search_placeholder;
5 kx const char *trunk; /* trunk directory name */
5 kx const char *branches; /* branches directory name */
5 kx const char *tags; /* tags directory name */
5 kx const char *checkout_prefix;
5 kx const char *checkout_ro_prefix;
5 kx int nbranches; /* number of branches */
5 kx int ntags; /* number of tags */
5 kx };
5 kx
5 kx struct csvn_page {
5 kx time_t modified;
5 kx time_t expires;
5 kx size_t size;
5 kx const char *mimetype;
5 kx const char *charset;
5 kx int status;
5 kx const char *status_message;
5 kx const char *header;
5 kx const char *footer;
5 kx };
5 kx
5 kx struct csvn_environment {
5 kx const char *http_host;
5 kx const char *https;
5 kx const char *no_http;
5 kx const char *path_info;
5 kx const char *query_string;
5 kx const char *request_uri;
5 kx const char *request_scheme;
5 kx const char *request_method;
5 kx const char *script_name;
5 kx const char *server_name;
5 kx const char *server_port;
5 kx const char *http_cookie;
5 kx unsigned int content_lenght;
5 kx const char *http_root;
5 kx int authenticated;
5 kx };
5 kx
5 kx struct csvn_query {
5 kx int ofs;
5 kx int rev;
5 kx const char *revision;
5 kx const char *operation;
5 kx const char *search;
5 kx };
5 kx
5 kx struct csvn_versions {
5 kx const char *subversion;
5 kx const char *nginx;
5 kx const char *csvn;
5 kx };
5 kx
5 kx struct csvn_promotion {
5 kx const char *analytic_links;
5 kx const char *analytic_scripts;
5 kx int donate;
5 kx const char *donate_css;
5 kx const char *donate_html;
5 kx const char *donate_js;
5 kx const char *donate_header;
5 kx const char *donate_purpose;
5 kx };
5 kx
5 kx struct csvn_context {
5 kx struct csvn_environment env;
5 kx struct csvn_promotion promo;
5 kx struct csvn_query query;
5 kx struct csvn_page page;
5 kx struct csvn_tmplt_vars vars;
5 kx struct csvn_repository repo;
5 kx struct csvn_versions vers;
5 kx };
5 kx
5 kx
5 kx extern const char *ptype_repolist;
5 kx extern const char *ptype_repo;
5 kx
5 kx extern struct csvn_context ctx;
5 kx
5 kx /*
5 kx header/footer template variables:
5 kx ================================
5 kx ${css}
5 kx ${owner}
5 kx ${author}
5 kx ${description}
5 kx ${keywords}
5 kx ${title}
5 kx ${favicon-path}
5 kx ${syntax-highlight-css}
5 kx ${logo}
5 kx ${logo-alt}
5 kx ${logo-link}
5 kx ${home-page}
5 kx ${snapshots}
5 kx ${status-line}
5 kx ${main-menu-logo}
5 kx ${main-menu-item}
5 kx ${left-menu-items}
5 kx ${popup-menu-items}
5 kx ${right-menu-items}
5 kx ${relative-html}
5 kx ${search-placeholder}
5 kx
5 kx ${analytic-links}
5 kx ${analytic-scripts}
5 kx ${donate-css}
5 kx ${donate-html}
5 kx ${donate-js}
5 kx ${donate-header}
5 kx ${donate-purpose}
5 kx
5 kx ${svn-version}
5 kx ${nginx-version}
5 kx ${csvn-version}
5 kx ${copyright-notice}
5 kx ${copyright}
5 kx
5 kx ${page-type}
5 kx ${page-size}
5 kx ${num-of-repos}
5 kx */
5 kx
5 kx extern void csvn_prepare_context( void );
5 kx extern void csvn_prepare_template_variables( void );
5 kx extern void csvn_release_template_variables( void );
5 kx
5 kx extern void csvn_parse_query( void );
5 kx
5 kx extern int ctx_grab_int_query_param( const char *name );
5 kx extern const char *ctx_remove_query_param( const char *query_string, const char *name );
5 kx
5 kx
5 kx #ifdef __cplusplus
5 kx }
5 kx #endif
5 kx
5 kx #endif /* __CONTEXT_H */