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 cgit_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 CGIT_INFO_INIT (struct cgit_info) { .kind = GIT_OBJECT_INVALID, .revision = { 0 }, .oid = { 0 }, .mode = GIT_FILEMODE_TREE, .author = NULL, .date = -1, .offset = 0, .mime = NULL, .lang = NULL }
5 kx
5 kx struct cgit_info {
5 kx git_object_t kind;
5 kx char revision[GIT_OID_HEXSZ+1];
5 kx char oid[GIT_OID_HEXSZ+1];
5 kx git_filemode_t mode;
5 kx const char *author;
5 kx git_time_t date;
5 kx int offset;
5 kx const char *mime;
5 kx const char *lang;
5 kx };
5 kx
5 kx struct cgit_repository {
5 kx const char *name;
5 kx struct cgit_info info;
5 kx const char *git_root;
5 kx const char *repo_root;
5 kx const char *relative_path;
5 kx struct cgit_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 *clone_prefix;
5 kx const char *clone_ro_prefix;
5 kx int nbranches; /* number of branches */
5 kx int ncommits; /* number of commits (no more than 9999) */
5 kx int ntags; /* number of tags */
5 kx };
5 kx
5 kx struct cgit_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 cgit_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 cgit_query {
5 kx int ofs;
5 kx const char *rev;
5 kx const char *revision;
5 kx const char *operation;
5 kx const char *search;
5 kx };
5 kx
5 kx struct cgit_versions {
5 kx const char *git;
5 kx const char *nginx;
5 kx const char *cgit;
5 kx };
5 kx
5 kx struct cgit_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 cgit_context {
5 kx struct cgit_environment env;
5 kx struct cgit_promotion promo;
5 kx struct cgit_query query;
5 kx struct cgit_page page;
5 kx struct cgit_tmplt_vars vars;
5 kx struct cgit_repository repo;
5 kx struct cgit_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 cgit_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 ${git-version}
5 kx ${nginx-version}
5 kx ${cgit-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 cgit_prepare_context( void );
5 kx extern void cgit_prepare_template_variables( void );
5 kx extern void cgit_release_template_variables( void );
5 kx
5 kx extern void cgit_parse_query( void );
5 kx
5 kx extern int ctx_grab_int_query_param( const char *name );
5 kx extern const char *ctx_grab_str_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 */