diff options
Diffstat (limited to '')
| -rw-r--r-- | cgit.c | 42 | ||||
| -rw-r--r-- | cgit.css | 27 | 
2 files changed, 61 insertions, 8 deletions
| @@ -26,14 +26,27 @@ void add_mimetype(const char *name, const char *value)  	item->util = xstrdup(value);  } -struct cgit_filter *new_filter(const char *cmd, int extra_args) +struct cgit_filter *new_filter(const char *cmd, filter_type filtertype)  {  	struct cgit_filter *f;  	int args_size = 0; +	int extra_args;  	if (!cmd || !cmd[0])  		return NULL; +	switch (filtertype) { +		case SOURCE: +			extra_args = 1; +			break; + +		case ABOUT: +		case COMMIT: +		default: +			extra_args = 0; +			break; +	} +  	f = xmalloc(sizeof(struct cgit_filter));  	f->cmd = xstrdup(cmd);  	args_size = (2 + extra_args) * sizeof(char *); @@ -83,11 +96,11 @@ void repo_config(struct cgit_repo *repo, const char *name, const char *value)  		repo->logo_link = xstrdup(value);  	else if (ctx.cfg.enable_filter_overrides) {  		if (!strcmp(name, "about-filter")) -			repo->about_filter = new_filter(value, 0); +			repo->about_filter = new_filter(value, ABOUT);  		else if (!strcmp(name, "commit-filter")) -			repo->commit_filter = new_filter(value, 0); +			repo->commit_filter = new_filter(value, COMMIT);  		else if (!strcmp(name, "source-filter")) -			repo->source_filter = new_filter(value, 1); +			repo->source_filter = new_filter(value, SOURCE);  	}  } @@ -147,6 +160,8 @@ void config_cb(const char *name, const char *value)  		ctx.cfg.enable_filter_overrides = atoi(value);  	else if (!strcmp(name, "enable-gitweb-owner"))  		ctx.cfg.enable_gitweb_owner = atoi(value); +	else if (!strcmp(name, "enable-http-clone")) +		ctx.cfg.enable_http_clone = atoi(value);  	else if (!strcmp(name, "enable-index-links"))  		ctx.cfg.enable_index_links = atoi(value);  	else if (!strcmp(name, "enable-commit-graph")) @@ -178,9 +193,9 @@ void config_cb(const char *name, const char *value)  	else if (!strcmp(name, "cache-dynamic-ttl"))  		ctx.cfg.cache_dynamic_ttl = atoi(value);  	else if (!strcmp(name, "about-filter")) -		ctx.cfg.about_filter = new_filter(value, 0); +		ctx.cfg.about_filter = new_filter(value, ABOUT);  	else if (!strcmp(name, "commit-filter")) -		ctx.cfg.commit_filter = new_filter(value, 0); +		ctx.cfg.commit_filter = new_filter(value, COMMIT);  	else if (!strcmp(name, "embedded"))  		ctx.cfg.embedded = atoi(value);  	else if (!strcmp(name, "max-atom-items")) @@ -210,7 +225,7 @@ void config_cb(const char *name, const char *value)  	else if (!strcmp(name, "section-from-path"))  		ctx.cfg.section_from_path = atoi(value);  	else if (!strcmp(name, "source-filter")) -		ctx.cfg.source_filter = new_filter(value, 1); +		ctx.cfg.source_filter = new_filter(value, SOURCE);  	else if (!strcmp(name, "summary-log"))  		ctx.cfg.summary_log = atoi(value);  	else if (!strcmp(name, "summary-branches")) @@ -229,6 +244,8 @@ void config_cb(const char *name, const char *value)  		ctx.cfg.robots = xstrdup(value);  	else if (!strcmp(name, "clone-prefix"))  		ctx.cfg.clone_prefix = xstrdup(value); +	else if (!strcmp(name, "clone-url")) +		ctx.cfg.clone_url = xstrdup(value);  	else if (!strcmp(name, "local-time"))  		ctx.cfg.local_time = atoi(value);  	else if (!prefixcmp(name, "mimetype.")) @@ -312,6 +329,7 @@ static void prepare_context(struct cgit_context *ctx)  	ctx->cfg.logo = "/cgit.png";  	ctx->cfg.local_time = 0;  	ctx->cfg.enable_gitweb_owner = 1; +	ctx->cfg.enable_http_clone = 1;  	ctx->cfg.enable_tree_linenumbers = 1;  	ctx->cfg.max_repo_count = 50;  	ctx->cfg.max_commit_count = 50; @@ -443,7 +461,7 @@ static int prepare_repo_cmd(struct cgit_context *ctx)  		tmp = xstrdup(ctx->qry.head);  		ctx->qry.head = ctx->repo->defbranch;  		ctx->page.status = 404; -		ctx->page.statusmsg = "not found"; +		ctx->page.statusmsg = "Not found";  		cgit_print_http_headers(ctx);  		cgit_print_docstart(ctx);  		cgit_print_pageheader(ctx); @@ -451,6 +469,7 @@ static int prepare_repo_cmd(struct cgit_context *ctx)  		cgit_print_docend();  		return 1;  	} +	cgit_prepare_repo_env(ctx->repo);  	return 0;  } @@ -462,6 +481,8 @@ static void process_request(void *cbdata)  	cmd = cgit_get_cmd(ctx);  	if (!cmd) {  		ctx->page.title = "cgit error"; +		ctx->page.status = 404; +		ctx->page.statusmsg = "Not found";  		cgit_print_http_headers(ctx);  		cgit_print_docstart(ctx);  		cgit_print_pageheader(ctx); @@ -470,6 +491,11 @@ static void process_request(void *cbdata)  		return;  	} +	if (!ctx->cfg.enable_http_clone && cmd->is_clone) { +		html_status(404, "Not found", 0); +		return; +	} +  	/* If cmd->want_vpath is set, assume ctx->qry.path contains a "virtual"  	 * in-project path limit to be made available at ctx->qry.vpath.  	 * Otherwise, no path limit is in effect (ctx->qry.vpath = NULL). @@ -331,6 +331,33 @@ table.commit-info {  	margin-top: 1.5em;  } +div.cgit-panel { +	float: right; +	margin-top: 1.5em; +} + +div.cgit-panel table { +	border-collapse: collapse; +	border: solid 1px #aaa; +	background-color: #eee; +} + +div.cgit-panel th { +	text-align: center; +} + +div.cgit-panel td { +	padding: 0.25em 0.5em; +} + +div.cgit-panel td.label { +	padding-right: 0.5em; +} + +div.cgit-panel td.ctrl { +	padding-left: 0.5em; +} +  table.commit-info th {  	text-align: left;  	font-weight: normal; | 
