summaryrefslogtreecommitdiff
path: root/csvncgi/ctx.h
diff options
context:
space:
mode:
authorkx <kx@radix.pro>2023-03-24 03:55:33 +0300
committerkx <kx@radix.pro>2023-03-24 03:55:33 +0300
commitbfc1508d26c89c9a36d2d9a827fe2c4ed128884d (patch)
tree8d41298a7072a3e289e4912f77ece75cbea1bd54 /csvncgi/ctx.h
parentc836ae3775cf72f17e0b7e3792d156fdb389bee3 (diff)
downloadcsvn-ui-bfc1508d26c89c9a36d2d9a827fe2c4ed128884d.tar.xz
Version 0.1.4
Diffstat (limited to 'csvncgi/ctx.h')
-rw-r--r--csvncgi/ctx.h214
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 */