about summary refs log tree commit diff
path: root/third_party/git/patch-delta.c
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-09-21T10·03+0300
committerVincent Ambo <mail@tazj.in>2021-09-21T11·29+0300
commit43b1791ec601732ac31195df96781a848360a9ac (patch)
treedaae8d638343295d2f1f7da955e556ef4c958864 /third_party/git/patch-delta.c
parent2d8e7dc9d9c38127ec4ebd13aee8e8f586a43318 (diff)
chore(3p/git): Unvendor git and track patches instead r/2903
This was vendored a long time ago under the expectation that keeping
it in sync with cgit would be easier this way, but it has proven not
to be a big issue.

On the other hand, a vendored copy of git is an annoying maintenance
burden. It is much easier to rebase the single (dottime) patch that we
have.

This removes the vendored copy of git and instead passes the git
source code to cgit via `pkgs.srcOnly`, which includes the applied
patch so that cgit can continue rendering dottime.

Change-Id: If31f62dea7ce688fd1b9050204e9378019775f2b
Diffstat (limited to 'third_party/git/patch-delta.c')
-rw-r--r--third_party/git/patch-delta.c94
1 files changed, 0 insertions, 94 deletions
diff --git a/third_party/git/patch-delta.c b/third_party/git/patch-delta.c
deleted file mode 100644
index b5c8594db60d..000000000000
--- a/third_party/git/patch-delta.c
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * patch-delta.c:
- * recreate a buffer from a source and the delta produced by diff-delta.c
- *
- * (C) 2005 Nicolas Pitre <nico@fluxnic.net>
- *
- * This code is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include "git-compat-util.h"
-#include "delta.h"
-
-void *patch_delta(const void *src_buf, unsigned long src_size,
-		  const void *delta_buf, unsigned long delta_size,
-		  unsigned long *dst_size)
-{
-	const unsigned char *data, *top;
-	unsigned char *dst_buf, *out, cmd;
-	unsigned long size;
-
-	if (delta_size < DELTA_SIZE_MIN)
-		return NULL;
-
-	data = delta_buf;
-	top = (const unsigned char *) delta_buf + delta_size;
-
-	/* make sure the orig file size matches what we expect */
-	size = get_delta_hdr_size(&data, top);
-	if (size != src_size)
-		return NULL;
-
-	/* now the result size */
-	size = get_delta_hdr_size(&data, top);
-	dst_buf = xmallocz(size);
-
-	out = dst_buf;
-	while (data < top) {
-		cmd = *data++;
-		if (cmd & 0x80) {
-			unsigned long cp_off = 0, cp_size = 0;
-#define PARSE_CP_PARAM(bit, var, shift) do { \
-			if (cmd & (bit)) { \
-				if (data >= top) \
-					goto bad_length; \
-				var |= ((unsigned) *data++ << (shift)); \
-			} } while (0)
-			PARSE_CP_PARAM(0x01, cp_off, 0);
-			PARSE_CP_PARAM(0x02, cp_off, 8);
-			PARSE_CP_PARAM(0x04, cp_off, 16);
-			PARSE_CP_PARAM(0x08, cp_off, 24);
-			PARSE_CP_PARAM(0x10, cp_size, 0);
-			PARSE_CP_PARAM(0x20, cp_size, 8);
-			PARSE_CP_PARAM(0x40, cp_size, 16);
-#undef PARSE_CP_PARAM
-			if (cp_size == 0) cp_size = 0x10000;
-			if (unsigned_add_overflows(cp_off, cp_size) ||
-			    cp_off + cp_size > src_size ||
-			    cp_size > size)
-				goto bad_length;
-			memcpy(out, (char *) src_buf + cp_off, cp_size);
-			out += cp_size;
-			size -= cp_size;
-		} else if (cmd) {
-			if (cmd > size || cmd > top - data)
-				goto bad_length;
-			memcpy(out, data, cmd);
-			out += cmd;
-			data += cmd;
-			size -= cmd;
-		} else {
-			/*
-			 * cmd == 0 is reserved for future encoding
-			 * extensions. In the mean time we must fail when
-			 * encountering them (might be data corruption).
-			 */
-			error("unexpected delta opcode 0");
-			goto bad;
-		}
-	}
-
-	/* sanity check */
-	if (data != top || size != 0) {
-		bad_length:
-		error("delta replay has gone wild");
-		bad:
-		free(dst_buf);
-		return NULL;
-	}
-
-	*dst_size = out - dst_buf;
-	return dst_buf;
-}