summaryrefslogtreecommitdiff
path: root/cgitcgi/ctx.h
diff options
context:
space:
mode:
authorkx <kx@radix.pro>2023-03-24 03:51:10 +0300
committerkx <kx@radix.pro>2023-03-24 03:51:10 +0300
commit05d292b208dfe01324826b4c87bbc4da3389a0d5 (patch)
treeb10a2269e9320785f3b61189e75f6778fa167986 /cgitcgi/ctx.h
parent40ab18a661ff6ada40e73969be293918d346a2f5 (diff)
downloadcgit-ui-05d292b208dfe01324826b4c87bbc4da3389a0d5.tar.xz
Version 0.1.7
Diffstat (limited to 'cgitcgi/ctx.h')
-rw-r--r--cgitcgi/ctx.h216
1 files changed, 216 insertions, 0 deletions
diff --git a/cgitcgi/ctx.h b/cgitcgi/ctx.h
new file mode 100644
index 0000000..999acb0
--- /dev/null
+++ b/cgitcgi/ctx.h
@@ -0,0 +1,216 @@
+
+#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 cgit_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 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 }
+
+struct cgit_info {
+ git_object_t kind;
+ char revision[GIT_OID_HEXSZ+1];
+ char oid[GIT_OID_HEXSZ+1];
+ git_filemode_t mode;
+ const char *author;
+ git_time_t date;
+ int offset;
+ const char *mime;
+ const char *lang;
+};
+
+struct cgit_repository {
+ const char *name;
+ struct cgit_info info;
+ const char *git_root;
+ const char *repo_root;
+ const char *relative_path;
+ struct cgit_info relative_info;
+ const char *relative_html;
+ const char *relative_href;
+ const char *search_placeholder;
+ const char *trunk; /* trunk directory name */
+ const char *clone_prefix;
+ const char *clone_ro_prefix;
+ int nbranches; /* number of branches */
+ int ncommits; /* number of commits (no more than 9999) */
+ int ntags; /* number of tags */
+};
+
+struct cgit_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 cgit_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 cgit_query {
+ int ofs;
+ const char *rev;
+ const char *revision;
+ const char *operation;
+ const char *search;
+};
+
+struct cgit_versions {
+ const char *git;
+ const char *nginx;
+ const char *cgit;
+};
+
+struct cgit_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 cgit_context {
+ struct cgit_environment env;
+ struct cgit_promotion promo;
+ struct cgit_query query;
+ struct cgit_page page;
+ struct cgit_tmplt_vars vars;
+ struct cgit_repository repo;
+ struct cgit_versions vers;
+};
+
+
+extern const char *ptype_repolist;
+extern const char *ptype_repo;
+
+extern struct cgit_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}
+
+ ${git-version}
+ ${nginx-version}
+ ${cgit-version}
+ ${copyright-notice}
+ ${copyright}
+
+ ${page-type}
+ ${page-size}
+ ${num-of-repos}
+ */
+
+extern void cgit_prepare_context( void );
+extern void cgit_prepare_template_variables( void );
+extern void cgit_release_template_variables( void );
+
+extern void cgit_parse_query( void );
+
+extern int ctx_grab_int_query_param( const char *name );
+extern const char *ctx_grab_str_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 */