diff options
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | cgit.c | 2 | ||||
| -rw-r--r-- | cgit.h | 30 | ||||
| m--------- | git | 0 | ||||
| -rw-r--r-- | parsing.c | 2 | ||||
| -rw-r--r-- | shared.c | 17 | ||||
| -rw-r--r-- | ui-atom.c | 2 | ||||
| -rw-r--r-- | ui-blame.c | 12 | ||||
| -rw-r--r-- | ui-blob.c | 10 | ||||
| -rw-r--r-- | ui-commit.c | 2 | ||||
| -rw-r--r-- | ui-diff.c | 14 | ||||
| -rw-r--r-- | ui-log.c | 6 | ||||
| -rw-r--r-- | ui-patch.c | 6 | ||||
| -rw-r--r-- | ui-plain.c | 6 | ||||
| -rw-r--r-- | ui-shared.c | 8 | ||||
| -rw-r--r-- | ui-snapshot.c | 14 | ||||
| -rw-r--r-- | ui-stats.c | 2 | ||||
| -rw-r--r-- | ui-tag.c | 2 | ||||
| -rw-r--r-- | ui-tree.c | 8 | 
19 files changed, 77 insertions, 68 deletions
@@ -14,7 +14,7 @@ htmldir = $(docdir)  pdfdir = $(docdir)  mandir = $(prefix)/share/man  SHA1_HEADER = <openssl/sha.h> -GIT_VER = 2.40.1 +GIT_VER = 2.41.0  GIT_URL = https://www.kernel.org/pub/software/scm/git/git-$(GIT_VER).tar.xz  INSTALL = install  COPYTREE = cp -r @@ -631,7 +631,7 @@ static int prepare_repo_cmd(int nongit)  		return 1;  	} -	if (get_oid(ctx.qry.head, &oid)) { +	if (repo_get_oid(the_repository, ctx.qry.head, &oid)) {  		char *old_head = ctx.qry.head;  		ctx.qry.head = xstrdup(ctx.repo->defbranch);  		cgit_print_error_page(404, "Not found", @@ -1,31 +1,35 @@  #ifndef CGIT_H  #define CGIT_H +#include <stdbool.h>  #include <git-compat-util.h> -#include <stdbool.h> +#include <archive.h>  #include <cache.h> +#include <commit.h> +#include <diffcore.h> +#include <diff.h> +#include <environment.h> +#include <graph.h>  #include <grep.h> +#include <hex.h> +#include <log-tree.h> +#include <notes.h>  #include <object.h> +#include <object-name.h>  #include <object-store.h> -#include <tree.h> -#include <commit.h> -#include <tag.h> -#include <diff.h> -#include <diffcore.h> -#include <strvec.h>  #include <refs.h>  #include <revision.h> -#include <log-tree.h> -#include <archive.h> +#include <setup.h>  #include <string-list.h> +#include <strvec.h> +#include <tag.h> +#include <tree.h> +#include <utf8.h> +#include <wrapper.h>  #include <xdiff-interface.h>  #include <xdiff/xdiff.h> -#include <utf8.h> -#include <notes.h> -#include <graph.h> -#include <inttypes.h>  /* Add isgraph(x) to Git's sane ctype support (see git-compat-util.h) */  #undef isgraph diff --git a/git b/git -Subproject 0d1bd1dfb37ef25e1911777c94129fc769ffec3 +Subproject fe86abd7511a9a6862d5706c6fa1d9b57a63ba0 @@ -198,7 +198,7 @@ struct taginfo *cgit_parse_tag(struct tag *tag)  	const char *p;  	struct taginfo *ret = NULL; -	data = read_object_file(&tag->object.oid, &type, &size); +	data = repo_read_object_file(the_repository, &tag->object.oid, &type, &size);  	if (!data || type != OBJ_TAG)  		goto cleanup; @@ -241,7 +241,7 @@ static int load_mmfile(mmfile_t *file, const struct object_id *oid)  		file->ptr = (char *)"";  		file->size = 0;  	} else { -		file->ptr = read_object_file(oid, &type, +		file->ptr = repo_read_object_file(the_repository, oid, &type,  		                           (unsigned long *)&file->size);  	}  	return 1; @@ -343,7 +343,7 @@ void cgit_diff_tree(const struct object_id *old_oid,  	struct diff_options opt;  	struct pathspec_item *item; -	diff_setup(&opt); +	repo_diff_setup(the_repository, &opt);  	opt.output_format = DIFF_FORMAT_CALLBACK;  	opt.detect_rename = 1;  	opt.rename_limit = ctx.cfg.renamelimit; @@ -539,7 +539,9 @@ char *expand_macros(const char *txt)  char *get_mimetype_for_filename(const char *filename)  { -	char *ext, *mimetype, *token, line[1024], *saveptr; +	char *ext, *mimetype, line[1024]; +	struct string_list list = STRING_LIST_INIT_NODUP; +	int i;  	FILE *file;  	struct string_list_item *mime; @@ -564,13 +566,16 @@ char *get_mimetype_for_filename(const char *filename)  	while (fgets(line, sizeof(line), file)) {  		if (!line[0] || line[0] == '#')  			continue; -		mimetype = strtok_r(line, " \t\r\n", &saveptr); -		while ((token = strtok_r(NULL, " \t\r\n", &saveptr))) { -			if (!strcasecmp(ext, token)) { +		string_list_split_in_place(&list, line, " \t\r\n", -1); +		string_list_remove_empty_items(&list, 0); +		mimetype = list.items[0].string; +		for (i = 1; i < list.nr; i++) { +			if (!strcasecmp(ext, list.items[i].string)) {  				fclose(file);  				return xstrdup(mimetype);  			}  		} +		string_list_clear(&list, 0);  	}  	fclose(file);  	return NULL; @@ -97,7 +97,7 @@ void cgit_print_atom(char *tip, const char *path, int max_count)  		argv[argc++] = path;  	} -	init_revisions(&rev, NULL); +	repo_init_revisions(the_repository, &rev, NULL);  	rev.abbrev = DEFAULT_ABBREV;  	rev.commit_format = CMIT_FMT_DEFAULT;  	rev.verbose_header = 1; @@ -49,12 +49,12 @@ static void emit_blame_entry_hash(struct blame_entry *ent)  	char *detail = emit_suspect_detail(suspect);  	html("<span class='oid'>"); -	cgit_commit_link(find_unique_abbrev(oid, DEFAULT_ABBREV), detail, +	cgit_commit_link(repo_find_unique_abbrev(the_repository, oid, DEFAULT_ABBREV), detail,  			 NULL, ctx.qry.head, oid_to_hex(oid), suspect->path);  	html("</span>");  	free(detail); -	if (!parse_commit(suspect->commit) && suspect->commit->parents) { +	if (!repo_parse_commit(the_repository, suspect->commit) && suspect->commit->parents) {  		struct commit *parent = suspect->commit->parents->item;  		html(" "); @@ -126,7 +126,7 @@ static void print_object(const struct object_id *oid, const char *path,  		return;  	} -	buf = read_object_file(oid, &type, &size); +	buf = repo_read_object_file(the_repository, oid, &type, &size);  	if (!buf) {  		cgit_print_error_page(500, "Internal server error",  			"Error reading object %s", oid_to_hex(oid)); @@ -135,7 +135,7 @@ static void print_object(const struct object_id *oid, const char *path,  	strvec_push(&rev_argv, "blame");  	strvec_push(&rev_argv, rev); -	init_revisions(&revs, NULL); +	repo_init_revisions(the_repository, &revs, NULL);  	revs.diffopt.flags.allow_textconv = 1;  	setup_revisions(rev_argv.nr, rev_argv.v, &revs, NULL);  	init_scoreboard(&sb); @@ -287,13 +287,13 @@ void cgit_print_blame(void)  	if (!rev)  		rev = ctx.qry.head; -	if (get_oid(rev, &oid)) { +	if (repo_get_oid(the_repository, rev, &oid)) {  		cgit_print_error_page(404, "Not found",  			"Invalid revision name: %s", rev);  		return;  	}  	commit = lookup_commit_reference(the_repository, &oid); -	if (!commit || parse_commit(commit)) { +	if (!commit || repo_parse_commit(the_repository, commit)) {  		cgit_print_error_page(404, "Not found",  			"Invalid commit reference: %s", rev);  		return; @@ -52,7 +52,7 @@ int cgit_ref_path_exists(const char *path, const char *ref, int file_only)  		.file_only = file_only  	}; -	if (get_oid(ref, &oid)) +	if (repo_get_oid(the_repository, ref, &oid))  		goto done;  	if (oid_object_info(the_repository, &oid, &size) != OBJ_COMMIT)  		goto done; @@ -87,7 +87,7 @@ int cgit_print_file(char *path, const char *head, int file_only)  		.file_only = file_only  	}; -	if (get_oid(head, &oid)) +	if (repo_get_oid(the_repository, head, &oid))  		return -1;  	type = oid_object_info(the_repository, &oid, &size);  	if (type == OBJ_COMMIT) { @@ -100,7 +100,7 @@ int cgit_print_file(char *path, const char *head, int file_only)  	}  	if (type == OBJ_BAD)  		return -1; -	buf = read_object_file(&oid, &type, &size); +	buf = repo_read_object_file(the_repository, &oid, &type, &size);  	if (!buf)  		return -1;  	buf[size] = '\0'; @@ -138,7 +138,7 @@ void cgit_print_blob(const char *hex, char *path, const char *head, int file_onl  			return;  		}  	} else { -		if (get_oid(head, &oid)) { +		if (repo_get_oid(the_repository, head, &oid)) {  			cgit_print_error_page(404, "Not found",  					"Bad ref: %s", head);  			return; @@ -160,7 +160,7 @@ void cgit_print_blob(const char *hex, char *path, const char *head, int file_onl  		return;  	} -	buf = read_object_file(&oid, &type, &size); +	buf = repo_read_object_file(the_repository, &oid, &type, &size);  	if (!buf) {  		cgit_print_error_page(500, "Internal server error",  				"Error reading object %s", hex); diff --git a/ui-commit.c b/ui-commit.c index 0787237..30672d0 100644 --- a/ui-commit.c +++ b/ui-commit.c @@ -26,7 +26,7 @@ void cgit_print_commit(char *hex, const char *prefix)  	if (!hex)  		hex = ctx.qry.head; -	if (get_oid(hex, &oid)) { +	if (repo_get_oid(the_repository, hex, &oid)) {  		cgit_print_error_page(400, "Bad request",  				"Bad object id: %s", hex);  		return; @@ -258,8 +258,8 @@ static void header(const struct object_id *oid1, char *path1, int mode1,  		htmlf("<br/>deleted file mode %.6o", mode1);  	if (!subproject) { -		abbrev1 = xstrdup(find_unique_abbrev(oid1, DEFAULT_ABBREV)); -		abbrev2 = xstrdup(find_unique_abbrev(oid2, DEFAULT_ABBREV)); +		abbrev1 = xstrdup(repo_find_unique_abbrev(the_repository, oid1, DEFAULT_ABBREV)); +		abbrev2 = xstrdup(repo_find_unique_abbrev(the_repository, oid2, DEFAULT_ABBREV));  		htmlf("<br/>index %s..%s", abbrev1, abbrev2);  		free(abbrev1);  		free(abbrev2); @@ -402,13 +402,13 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,  	if (!new_rev)  		new_rev = ctx.qry.head; -	if (get_oid(new_rev, new_rev_oid)) { +	if (repo_get_oid(the_repository, new_rev, new_rev_oid)) {  		cgit_print_error_page(404, "Not found",  			"Bad object name: %s", new_rev);  		return;  	}  	commit = lookup_commit_reference(the_repository, new_rev_oid); -	if (!commit || parse_commit(commit)) { +	if (!commit || repo_parse_commit(the_repository, commit)) {  		cgit_print_error_page(404, "Not found",  			"Bad commit: %s", oid_to_hex(new_rev_oid));  		return; @@ -416,7 +416,7 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,  	new_tree_oid = get_commit_tree_oid(commit);  	if (old_rev) { -		if (get_oid(old_rev, old_rev_oid)) { +		if (repo_get_oid(the_repository, old_rev, old_rev_oid)) {  			cgit_print_error_page(404, "Not found",  				"Bad object name: %s", old_rev);  			return; @@ -429,7 +429,7 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,  	if (!is_null_oid(old_rev_oid)) {  		commit2 = lookup_commit_reference(the_repository, old_rev_oid); -		if (!commit2 || parse_commit(commit2)) { +		if (!commit2 || repo_parse_commit(the_repository, commit2)) {  			cgit_print_error_page(404, "Not found",  				"Bad commit: %s", oid_to_hex(old_rev_oid));  			return; @@ -442,7 +442,7 @@ void cgit_print_diff(const char *new_rev, const char *old_rev,  	if (raw) {  		struct diff_options diffopt; -		diff_setup(&diffopt); +		repo_diff_setup(the_repository, &diffopt);  		diffopt.output_format = DIFF_FORMAT_PATCH;  		diffopt.flags.recursive = 1;  		diff_setup_done(&diffopt); @@ -146,7 +146,7 @@ static int show_commit(struct commit *commit, struct rev_info *revs)  	/* When we get here we have precisely one parent. */  	parent = parents->item;  	/* If we can't parse the commit, let print_commit() report an error. */ -	if (parse_commit(parent)) +	if (repo_parse_commit(the_repository, parent))  		return 1;  	files = 0; @@ -330,7 +330,7 @@ static const char *disambiguate_ref(const char *ref, int *must_free_result)  	struct strbuf longref = STRBUF_INIT;  	strbuf_addf(&longref, "refs/heads/%s", ref); -	if (get_oid(longref.buf, &oid) == 0) { +	if (repo_get_oid(the_repository, longref.buf, &oid) == 0) {  		*must_free_result = 1;  		return strbuf_detach(&longref, NULL);  	} @@ -430,7 +430,7 @@ void cgit_print_log(const char *tip, int ofs, int cnt, char *grep, char *pattern  	if (path)  		strvec_push(&rev_argv, path); -	init_revisions(&rev, NULL); +	repo_init_revisions(the_repository, &rev, NULL);  	rev.abbrev = DEFAULT_ABBREV;  	rev.commit_format = CMIT_FMT_DEFAULT;  	rev.verbose_header = 1; @@ -31,7 +31,7 @@ void cgit_print_patch(const char *new_rev, const char *old_rev,  	if (!new_rev)  		new_rev = ctx.qry.head; -	if (get_oid(new_rev, &new_rev_oid)) { +	if (repo_get_oid(the_repository, new_rev, &new_rev_oid)) {  		cgit_print_error_page(404, "Not found",  				"Bad object id: %s", new_rev);  		return; @@ -44,7 +44,7 @@ void cgit_print_patch(const char *new_rev, const char *old_rev,  	}  	if (old_rev) { -		if (get_oid(old_rev, &old_rev_oid)) { +		if (repo_get_oid(the_repository, old_rev, &old_rev_oid)) {  			cgit_print_error_page(404, "Not found",  					"Bad object id: %s", old_rev);  			return; @@ -78,7 +78,7 @@ void cgit_print_patch(const char *new_rev, const char *old_rev,  			      "%s%n%n%w(0)%b";  	} -	init_revisions(&rev, NULL); +	repo_init_revisions(the_repository, &rev, NULL);  	rev.abbrev = DEFAULT_ABBREV;  	rev.verbose_header = 1;  	rev.diff = 1; @@ -28,7 +28,7 @@ static int print_object(const struct object_id *oid, const char *path)  		return 0;  	} -	buf = read_object_file(oid, &type, &size); +	buf = repo_read_object_file(the_repository, oid, &type, &size);  	if (!buf) {  		cgit_print_error_page(404, "Not found", "Not found");  		return 0; @@ -181,12 +181,12 @@ void cgit_print_plain(void)  	if (!rev)  		rev = ctx.qry.head; -	if (get_oid(rev, &oid)) { +	if (repo_get_oid(the_repository, rev, &oid)) {  		cgit_print_error_page(404, "Not found", "Not found");  		return;  	}  	commit = lookup_commit_reference(the_repository, &oid); -	if (!commit || parse_commit(commit)) { +	if (!commit || repo_parse_commit(the_repository, commit)) {  		cgit_print_error_page(404, "Not found", "Not found");  		return;  	} diff --git a/ui-shared.c b/ui-shared.c index baea6f2..eef2aa8 100644 --- a/ui-shared.c +++ b/ui-shared.c @@ -1188,11 +1188,11 @@ void cgit_compose_snapshot_prefix(struct strbuf *filename, const char *base,  	 * name starts with {v,V}[0-9] and the prettify mapping is injective,  	 * i.e. each stripped tag can be inverted without ambiguities.  	 */ -	if (get_oid(fmt("refs/tags/%s", ref), &oid) == 0 && +	if (repo_get_oid(the_repository, fmt("refs/tags/%s", ref), &oid) == 0 &&  	    (ref[0] == 'v' || ref[0] == 'V') && isdigit(ref[1]) && -	    ((get_oid(fmt("refs/tags/%s", ref + 1), &oid) == 0) + -	     (get_oid(fmt("refs/tags/v%s", ref + 1), &oid) == 0) + -	     (get_oid(fmt("refs/tags/V%s", ref + 1), &oid) == 0) == 1)) +	    ((repo_get_oid(the_repository, fmt("refs/tags/%s", ref + 1), &oid) == 0) + +	     (repo_get_oid(the_repository, fmt("refs/tags/v%s", ref + 1), &oid) == 0) + +	     (repo_get_oid(the_repository, fmt("refs/tags/V%s", ref + 1), &oid) == 0) == 1))  		ref++;  	strbuf_addf(filename, "%s-%s", base, ref); diff --git a/ui-snapshot.c b/ui-snapshot.c index 18361a6..9f629a9 100644 --- a/ui-snapshot.c +++ b/ui-snapshot.c @@ -117,7 +117,7 @@ const struct object_id *cgit_snapshot_get_sig(const char *ref,  	struct notes_tree *tree;  	struct object_id oid; -	if (get_oid(ref, &oid)) +	if (repo_get_oid(the_repository, ref, &oid))  		return NULL;  	tree = &snapshot_sig_notes[f - &cgit_snapshot_formats[0]]; @@ -156,7 +156,7 @@ static int make_snapshot(const struct cgit_snapshot_format *format,  {  	struct object_id oid; -	if (get_oid(hex, &oid)) { +	if (repo_get_oid(the_repository, hex, &oid)) {  		cgit_print_error_page(404, "Not found",  				"Bad object id: %s", hex);  		return 1; @@ -190,7 +190,7 @@ static int write_sig(const struct cgit_snapshot_format *format,  		return 0;  	} -	buf = read_object_file(note, &type, &size); +	buf = repo_read_object_file(the_repository, note, &type, &size);  	if (!buf) {  		cgit_print_error_page(404, "Not found", "Not found");  		return 0; @@ -230,7 +230,7 @@ static const char *get_ref_from_filename(const struct cgit_repo *repo,  	strbuf_addstr(&snapshot, filename);  	strbuf_setlen(&snapshot, snapshot.len - strlen(format->suffix)); -	if (get_oid(snapshot.buf, &oid) == 0) +	if (repo_get_oid(the_repository, snapshot.buf, &oid) == 0)  		goto out;  	reponame = cgit_snapshot_prefix(repo); @@ -242,15 +242,15 @@ static const char *get_ref_from_filename(const struct cgit_repo *repo,  		strbuf_splice(&snapshot, 0, new_start - snapshot.buf, "", 0);  	} -	if (get_oid(snapshot.buf, &oid) == 0) +	if (repo_get_oid(the_repository, snapshot.buf, &oid) == 0)  		goto out;  	strbuf_insert(&snapshot, 0, "v", 1); -	if (get_oid(snapshot.buf, &oid) == 0) +	if (repo_get_oid(the_repository, snapshot.buf, &oid) == 0)  		goto out;  	strbuf_splice(&snapshot, 0, 1, "V", 1); -	if (get_oid(snapshot.buf, &oid) == 0) +	if (repo_get_oid(the_repository, snapshot.buf, &oid) == 0)  		goto out;  	result = 0; @@ -230,7 +230,7 @@ static struct string_list collect_stats(const struct cgit_period *period)  		argv[4] = ctx.qry.path;  		argc += 2;  	} -	init_revisions(&rev, NULL); +	repo_init_revisions(the_repository, &rev, NULL);  	rev.abbrev = DEFAULT_ABBREV;  	rev.commit_format = CMIT_FMT_DEFAULT;  	rev.max_parents = 1; @@ -48,7 +48,7 @@ void cgit_print_tag(char *revname)  		revname = ctx.qry.head;  	strbuf_addf(&fullref, "refs/tags/%s", revname); -	if (get_oid(fullref.buf, &oid)) { +	if (repo_get_oid(the_repository, fullref.buf, &oid)) {  		cgit_print_error_page(404, "Not found",  			"Bad tag reference: %s", revname);  		goto cleanup; @@ -98,7 +98,7 @@ static void print_object(const struct object_id *oid, const char *path, const ch  		return;  	} -	buf = read_object_file(oid, &type, &size); +	buf = repo_read_object_file(the_repository, oid, &type, &size);  	if (!buf) {  		cgit_print_error_page(500, "Internal server error",  			"Error reading object %s", oid_to_hex(oid)); @@ -242,7 +242,7 @@ static int ls_item(const struct object_id *oid, struct strbuf *base,  	}  	if (S_ISLNK(mode)) {  		html(" -> "); -		buf = read_object_file(oid, &type, &size); +		buf = repo_read_object_file(the_repository, oid, &type, &size);  		if (!buf) {  			htmlf("Error reading object: %s", oid_to_hex(oid));  			goto cleanup; @@ -372,13 +372,13 @@ void cgit_print_tree(const char *rev, char *path)  	if (!rev)  		rev = ctx.qry.head; -	if (get_oid(rev, &oid)) { +	if (repo_get_oid(the_repository, rev, &oid)) {  		cgit_print_error_page(404, "Not found",  			"Invalid revision name: %s", rev);  		return;  	}  	commit = lookup_commit_reference(the_repository, &oid); -	if (!commit || parse_commit(commit)) { +	if (!commit || repo_parse_commit(the_repository, commit)) {  		cgit_print_error_page(404, "Not found",  			"Invalid commit reference: %s", rev);  		return;  | 
