Commit Diff


commit - 8bf5b3c9ffbda6ccd1cbcc790feead341d31c357
commit + 718b3ab0e353c4ccb510b0ec9c3673b1c9a7344e
blob - a1de367be2f98b15140f7347f7a435580803b917
blob + e9f8bccaba3a5b29967825d40d6983546b54dc61
--- lib/delta.c
+++ lib/delta.c
@@ -26,9 +26,9 @@
 #include "got_repository.h"
 #include "got_object.h"
 
-#include "got_delta_lib.h"
-#include "got_path_lib.h"
-#include "got_zbuf_lib.h"
+#include "got_lib_delta.h"
+#include "got_lib_path.h"
+#include "got_lib_zbuf.h"
 
 #ifndef MIN
 #define	MIN(_a,_b) ((_a) < (_b) ? (_a) : (_b))
blob - 0cc46638942f0cf3f2194553f0cf7bbf7fb47cef
blob + f5217236e888b7b9ac51357436d53f9e8b909ad2
--- lib/diff.c
+++ lib/diff.c
@@ -29,8 +29,8 @@
 #include "got_error.h"
 #include "got_diff.h"
 
-#include "got_diff_lib.h"
-#include "got_path_lib.h"
+#include "got_lib_diff.h"
+#include "got_lib_path.h"
 
 const struct got_error *
 got_diff_blob(struct got_blob_object *blob1, struct got_blob_object *blob2,
blob - 87a1e5f57e6c41f013170935148c27ea8d8738e3
blob + 2fdd381ceed1dd1ccdb46640879c87952edbd56e
--- lib/diffreg.c
+++ lib/diffreg.c
@@ -88,7 +88,7 @@
 #include "got_object.h"
 #include "got_diff.h"
 
-#include "got_diff_lib.h"
+#include "got_lib_diff.h"
 
 #define MINIMUM(a, b)	(((a) < (b)) ? (a) : (b))
 #define MAXIMUM(a, b)	(((a) > (b)) ? (a) : (b))
blob - 349b0aa7642b2ac036100ff8f9e3ecfedcc5027d
blob + 6c2d120fdfd7717d4ea98634d7730201bdf56fd3
--- lib/fileindex.c
+++ lib/fileindex.c
@@ -25,7 +25,7 @@
 
 #include "got_error.h"
 
-#include "got_fileindex_lib.h"
+#include "got_lib_fileindex.h"
 
 const struct got_error *
 got_fileindex_entry_open(struct got_fileindex_entry **entry,
blob - bc986fd9f13fbac49dfd74e76e0039dea07c5f74 (mode 644)
blob + /dev/null
--- lib/got_delta_lib.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-struct got_delta {
-	SIMPLEQ_ENTRY(got_delta) entry;
-	off_t offset;
-	size_t tslen;
-	int type;
-	size_t size;
-	off_t data_offset;
-	uint8_t *delta_buf;
-	size_t delta_len;
-};
-
-struct got_delta_chain {
-	int nentries;
-	SIMPLEQ_HEAD(, got_delta) entries;
-};
-
-struct got_delta *got_delta_open(const char *, off_t, size_t, int, size_t,
-    off_t, uint8_t *, size_t);
-void got_delta_close(struct got_delta *);
-const struct got_error *got_delta_chain_get_base_type(int *,
-    struct got_delta_chain *);
-const struct got_error *got_delta_get_sizes(uint64_t *, uint64_t *,
-    const uint8_t *, size_t);
-const struct got_error *got_delta_apply_in_mem(uint8_t *, const uint8_t *,
-    size_t, uint8_t *, size_t *);
-const struct got_error *got_delta_apply(FILE *, const uint8_t *, size_t,
-    FILE *, size_t *);
-
-/*
- * The amount of result data we may keep in RAM while applying deltas.
- * Data larger than this is written to disk during delta application (slow).
- */
-#define GOT_DELTA_RESULT_SIZE_CACHED_MAX	(4 * 1024 * 1024) /* bytes */
-
-/*
- * Definitions for delta data streams.
- */
-
-#define GOT_DELTA_STREAM_LENGTH_MIN	4	/* bytes */
-
-/*
- * A delta stream begins with two size fields. The first specifies the
- * size of the delta base, and the second describes the expected size of
- * the data which results from applying the delta to the delta base.
- *
- * Each size field uses a variable length encoding:
- * size0...sizeN form a 7+7+7+...+7 bit integer, where size0 is the
- * least significant part and sizeN is the most significant part.
- * If the MSB of a size byte is set, an additional size byte follows.
- */
-#define GOT_DELTA_SIZE_VAL_MASK	0x7f
-#define GOT_DELTA_SIZE_SHIFT	7
-#define GOT_DELTA_SIZE_MORE	0x80
-
-/*
- * The rest of the delta stream contains copy instructions.
- *
- * A base copy instruction copies N bytes starting at offset X from the delta
- * base to the output. Base copy instructions begin with a byte which has its
- * MSB set. The remaining bits of this byte describe how many offset and
- * length value bytes follow.
- * The offset X is encoded in 1 to 4 bytes, and the length N is encoded in
- * 1 to 3 bytes. For both values, the first byte contributes the least
- * significant part and the last byte which is present contributes the
- * most significant part.
- * If the offset value is omitted, an offset of zero is implied.
- * If the length value is omitted, a default length of 65536 bytes is implied.
- *
- * An inline copy instruction copies data from the delta stream to the output.
- * Such instructions begin with one byte which does not have the MSB set
- * and which specifies the length of the inline data which follows (i.e.
- * at most 127 bytes). A length value of zero is invalid.
- */
-
-#define GOT_DELTA_BASE_COPY	0x80
-
-#define GOT_DELTA_COPY_OFF1	0x01	/* byte 1 of offset is present */
-#define GOT_DELTA_COPY_OFF2	0x02	/* byte 2 of offset is present */
-#define GOT_DELTA_COPY_OFF3	0x04	/* byte 3 of offset is present */
-#define GOT_DELTA_COPY_OFF4	0x08	/* byte 4 of offset is present */
-
-#define GOT_DELTA_COPY_LEN1	0x10	/* byte 1 of length is present */
-#define GOT_DELTA_COPY_LEN2	0x20	/* byte 2 of length is present */
-#define GOT_DELTA_COPY_LEN3	0x40	/* byte 3 of length is present */
-
-#define GOT_DELTA_COPY_DEFAULT_OFF	0x0	/* default offset if omitted */
-#define GOT_DELTA_COPY_DEFAULT_LEN	0x10000 /* default length if omitted */
blob - /dev/null
blob + bc986fd9f13fbac49dfd74e76e0039dea07c5f74 (mode 644)
--- /dev/null
+++ lib/got_lib_delta.h
@@ -0,0 +1,103 @@
+/*
+ * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+struct got_delta {
+	SIMPLEQ_ENTRY(got_delta) entry;
+	off_t offset;
+	size_t tslen;
+	int type;
+	size_t size;
+	off_t data_offset;
+	uint8_t *delta_buf;
+	size_t delta_len;
+};
+
+struct got_delta_chain {
+	int nentries;
+	SIMPLEQ_HEAD(, got_delta) entries;
+};
+
+struct got_delta *got_delta_open(const char *, off_t, size_t, int, size_t,
+    off_t, uint8_t *, size_t);
+void got_delta_close(struct got_delta *);
+const struct got_error *got_delta_chain_get_base_type(int *,
+    struct got_delta_chain *);
+const struct got_error *got_delta_get_sizes(uint64_t *, uint64_t *,
+    const uint8_t *, size_t);
+const struct got_error *got_delta_apply_in_mem(uint8_t *, const uint8_t *,
+    size_t, uint8_t *, size_t *);
+const struct got_error *got_delta_apply(FILE *, const uint8_t *, size_t,
+    FILE *, size_t *);
+
+/*
+ * The amount of result data we may keep in RAM while applying deltas.
+ * Data larger than this is written to disk during delta application (slow).
+ */
+#define GOT_DELTA_RESULT_SIZE_CACHED_MAX	(4 * 1024 * 1024) /* bytes */
+
+/*
+ * Definitions for delta data streams.
+ */
+
+#define GOT_DELTA_STREAM_LENGTH_MIN	4	/* bytes */
+
+/*
+ * A delta stream begins with two size fields. The first specifies the
+ * size of the delta base, and the second describes the expected size of
+ * the data which results from applying the delta to the delta base.
+ *
+ * Each size field uses a variable length encoding:
+ * size0...sizeN form a 7+7+7+...+7 bit integer, where size0 is the
+ * least significant part and sizeN is the most significant part.
+ * If the MSB of a size byte is set, an additional size byte follows.
+ */
+#define GOT_DELTA_SIZE_VAL_MASK	0x7f
+#define GOT_DELTA_SIZE_SHIFT	7
+#define GOT_DELTA_SIZE_MORE	0x80
+
+/*
+ * The rest of the delta stream contains copy instructions.
+ *
+ * A base copy instruction copies N bytes starting at offset X from the delta
+ * base to the output. Base copy instructions begin with a byte which has its
+ * MSB set. The remaining bits of this byte describe how many offset and
+ * length value bytes follow.
+ * The offset X is encoded in 1 to 4 bytes, and the length N is encoded in
+ * 1 to 3 bytes. For both values, the first byte contributes the least
+ * significant part and the last byte which is present contributes the
+ * most significant part.
+ * If the offset value is omitted, an offset of zero is implied.
+ * If the length value is omitted, a default length of 65536 bytes is implied.
+ *
+ * An inline copy instruction copies data from the delta stream to the output.
+ * Such instructions begin with one byte which does not have the MSB set
+ * and which specifies the length of the inline data which follows (i.e.
+ * at most 127 bytes). A length value of zero is invalid.
+ */
+
+#define GOT_DELTA_BASE_COPY	0x80
+
+#define GOT_DELTA_COPY_OFF1	0x01	/* byte 1 of offset is present */
+#define GOT_DELTA_COPY_OFF2	0x02	/* byte 2 of offset is present */
+#define GOT_DELTA_COPY_OFF3	0x04	/* byte 3 of offset is present */
+#define GOT_DELTA_COPY_OFF4	0x08	/* byte 4 of offset is present */
+
+#define GOT_DELTA_COPY_LEN1	0x10	/* byte 1 of length is present */
+#define GOT_DELTA_COPY_LEN2	0x20	/* byte 2 of length is present */
+#define GOT_DELTA_COPY_LEN3	0x40	/* byte 3 of length is present */
+
+#define GOT_DELTA_COPY_DEFAULT_OFF	0x0	/* default offset if omitted */
+#define GOT_DELTA_COPY_DEFAULT_LEN	0x10000 /* default length if omitted */
blob - d0351038fd1aa497adf26fcd0cc40fab666f7061 (mode 644)
blob + /dev/null
--- lib/got_diff_lib.h
+++ /dev/null
@@ -1,127 +0,0 @@
-
-
-/*ROR
- * Copyright (c) 1991, 1993
- *	The Regents of the University of California.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- *	@(#)diff.h	8.1 (Berkeley) 6/6/93
- */
-
-#include <sys/types.h>
-#include <regex.h>
-
-/*
- * Output format options
- */
-#define	D_NORMAL	0	/* Normal output */
-#define	D_EDIT		-1	/* Editor script out */
-#define	D_REVERSE	1	/* Reverse editor script */
-#define	D_CONTEXT	2	/* Diff with context */
-#define	D_UNIFIED	3	/* Unified context diff */
-#define	D_IFDEF		4	/* Diff with merged #ifdef's */
-#define	D_NREVERSE	5	/* Reverse ed script with numbered
-				   lines and no trailing . */
-#define	D_BRIEF		6	/* Say if the files differ */
-
-/*
- * Output flags
- */
-#define	D_HEADER	0x001	/* Print a header/footer between files */
-#define	D_EMPTY1	0x002	/* Treat first file as empty (/dev/null) */
-#define	D_EMPTY2	0x004	/* Treat second file as empty (/dev/null) */
-
-/*
- * Command line flags
- */
-#define D_FORCEASCII	0x008	/* Treat file as ascii regardless of content */
-#define D_FOLDBLANKS	0x010	/* Treat all white space as equal */
-#define D_MINIMAL	0x020	/* Make diff as small as possible */
-#define D_IGNORECASE	0x040	/* Case-insensitive matching */
-#define D_PROTOTYPE	0x080	/* Display C function prototype */
-#define D_EXPANDTABS	0x100	/* Expand tabs to spaces */
-#define D_IGNOREBLANKS	0x200	/* Ignore white space changes */
-
-/*
- * Status values for print_status() and diffreg() return values
- */
-#define	D_SAME		0	/* Files are the same */
-#define	D_DIFFER	1	/* Files are different */
-#define	D_BINARY	2	/* Binary files are different */
-#define	D_MISMATCH1	3	/* path1 was a dir, path2 a file */
-#define	D_MISMATCH2	4	/* path1 was a file, path2 a dir */
-#define	D_SKIPPED1	5	/* path1 was a special file */
-#define	D_SKIPPED2	6	/* path2 was a special file */
-
-struct excludes {
-	char *pattern;
-	struct excludes *next;
-};
-
-struct got_diff_state {
-	int  *J;			/* will be overlaid on class */
-	int  *class;		/* will be overlaid on file[0] */
-	int  *klist;		/* will be overlaid on file[0] after class */
-	int  *member;		/* will be overlaid on file[1] */
-	int   clen;
-	int   inifdef;		/* whether or not we are in a #ifdef block */
-	int   len[2];
-	int   pref, suff;	/* length of prefix and suffix */
-	int   slen[2];
-	int   anychange;
-	long *ixnew;		/* will be overlaid on file[1] */
-	long *ixold;		/* will be overlaid on klist */
-	struct cand *clist;	/* merely a free storage pot for candidates */
-	int   clistlen;		/* the length of clist */
-	struct line *sfile[2];	/* shortened by pruning common prefix/suffix */
-	u_char *chrtran;		/* translation table for case-folding */
-	struct context_vec *context_vec_start;
-	struct context_vec *context_vec_end;
-	struct context_vec *context_vec_ptr;
-	struct line *file[2];
-#define FUNCTION_CONTEXT_SIZE	55
-	char lastbuf[FUNCTION_CONTEXT_SIZE];
-	int lastline;
-	int lastmatchline;
-	struct stat stb1, stb2;
-};
-
-struct got_diff_args {
-	int	 Tflag;
-	int	 diff_format, diff_context, status;
-	char	*ifdefname, *diffargs, *ignore_pats;
-	const char *label[2];
-};
-
-char	*splice(char *, char *);
-const struct got_error *got_diffreg(int *, FILE *,
-    FILE *, int, struct got_diff_args *, struct got_diff_state *, FILE *);
-int	easprintf(char **, const char *, ...);
-void	*emalloc(size_t);
-void	*erealloc(void *, size_t);
-void	diffdir(char *, char *, int);
-void	print_only(const char *, size_t, const char *);
-void	print_status(int, char *, char *, char *);
blob - /dev/null
blob + d0351038fd1aa497adf26fcd0cc40fab666f7061 (mode 644)
--- /dev/null
+++ lib/got_lib_diff.h
@@ -0,0 +1,127 @@
+
+
+/*ROR
+ * Copyright (c) 1991, 1993
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)diff.h	8.1 (Berkeley) 6/6/93
+ */
+
+#include <sys/types.h>
+#include <regex.h>
+
+/*
+ * Output format options
+ */
+#define	D_NORMAL	0	/* Normal output */
+#define	D_EDIT		-1	/* Editor script out */
+#define	D_REVERSE	1	/* Reverse editor script */
+#define	D_CONTEXT	2	/* Diff with context */
+#define	D_UNIFIED	3	/* Unified context diff */
+#define	D_IFDEF		4	/* Diff with merged #ifdef's */
+#define	D_NREVERSE	5	/* Reverse ed script with numbered
+				   lines and no trailing . */
+#define	D_BRIEF		6	/* Say if the files differ */
+
+/*
+ * Output flags
+ */
+#define	D_HEADER	0x001	/* Print a header/footer between files */
+#define	D_EMPTY1	0x002	/* Treat first file as empty (/dev/null) */
+#define	D_EMPTY2	0x004	/* Treat second file as empty (/dev/null) */
+
+/*
+ * Command line flags
+ */
+#define D_FORCEASCII	0x008	/* Treat file as ascii regardless of content */
+#define D_FOLDBLANKS	0x010	/* Treat all white space as equal */
+#define D_MINIMAL	0x020	/* Make diff as small as possible */
+#define D_IGNORECASE	0x040	/* Case-insensitive matching */
+#define D_PROTOTYPE	0x080	/* Display C function prototype */
+#define D_EXPANDTABS	0x100	/* Expand tabs to spaces */
+#define D_IGNOREBLANKS	0x200	/* Ignore white space changes */
+
+/*
+ * Status values for print_status() and diffreg() return values
+ */
+#define	D_SAME		0	/* Files are the same */
+#define	D_DIFFER	1	/* Files are different */
+#define	D_BINARY	2	/* Binary files are different */
+#define	D_MISMATCH1	3	/* path1 was a dir, path2 a file */
+#define	D_MISMATCH2	4	/* path1 was a file, path2 a dir */
+#define	D_SKIPPED1	5	/* path1 was a special file */
+#define	D_SKIPPED2	6	/* path2 was a special file */
+
+struct excludes {
+	char *pattern;
+	struct excludes *next;
+};
+
+struct got_diff_state {
+	int  *J;			/* will be overlaid on class */
+	int  *class;		/* will be overlaid on file[0] */
+	int  *klist;		/* will be overlaid on file[0] after class */
+	int  *member;		/* will be overlaid on file[1] */
+	int   clen;
+	int   inifdef;		/* whether or not we are in a #ifdef block */
+	int   len[2];
+	int   pref, suff;	/* length of prefix and suffix */
+	int   slen[2];
+	int   anychange;
+	long *ixnew;		/* will be overlaid on file[1] */
+	long *ixold;		/* will be overlaid on klist */
+	struct cand *clist;	/* merely a free storage pot for candidates */
+	int   clistlen;		/* the length of clist */
+	struct line *sfile[2];	/* shortened by pruning common prefix/suffix */
+	u_char *chrtran;		/* translation table for case-folding */
+	struct context_vec *context_vec_start;
+	struct context_vec *context_vec_end;
+	struct context_vec *context_vec_ptr;
+	struct line *file[2];
+#define FUNCTION_CONTEXT_SIZE	55
+	char lastbuf[FUNCTION_CONTEXT_SIZE];
+	int lastline;
+	int lastmatchline;
+	struct stat stb1, stb2;
+};
+
+struct got_diff_args {
+	int	 Tflag;
+	int	 diff_format, diff_context, status;
+	char	*ifdefname, *diffargs, *ignore_pats;
+	const char *label[2];
+};
+
+char	*splice(char *, char *);
+const struct got_error *got_diffreg(int *, FILE *,
+    FILE *, int, struct got_diff_args *, struct got_diff_state *, FILE *);
+int	easprintf(char **, const char *, ...);
+void	*emalloc(size_t);
+void	*erealloc(void *, size_t);
+void	diffdir(char *, char *, int);
+void	print_only(const char *, size_t, const char *);
+void	print_status(int, char *, char *, char *);
blob - 018f4f25c636bf8cfb37d7b1765211c73acae8e9 (mode 644)
blob + /dev/null
--- lib/got_fileindex_lib.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-/*
- * State information for a tracked file in a work tree.
- * When written to disk, multi-byte fields are written in big-endian.
- * Some fields are based on results from stat(2). These are only used in
- * order to detect modifications made to on-disk files, they are never
- * applied back to the filesystem.
- */
-struct got_fileindex_entry {
-	TAILQ_ENTRY(got_fileindex_entry) entry;
-	uint64_t ctime_sec;
-	uint64_t ctime_nsec;
-	uint64_t mtime_sec;
-	uint64_t mtime_nsec;
-	uint32_t uid;
-	uint32_t gid;
-	/*
-	 * On-disk size is truncated to the lower 32 bits.
-	 * The value is only used to check for modifications anyway.
-	 */
-	uint32_t size;
-
-	uint16_t mode;
-#define GOT_INDEX_ENTRY_MODE_FILE_TYPE		0x000f
-#define GOT_INDEX_ENTRY_MODE_REGULAR_FILE	1
-#define GOT_INDEX_ENTRY_MODE_SYMLINK		2
-#define GOT_INDEX_ENTRY_MODE_PERMS		0xff10
-#define GOT_INDEX_ENTRY_MODE_PERMS_SHIFT	4
-
-	/* SHA1 of corresponding blob in repository. */
-	uint8_t blob_sha1[SHA1_DIGEST_LENGTH];
-
-	uint32_t flags;
-#define GOT_INDEX_ENTRY_F_PATH_LEN	0x00000fff
-#define GOT_INDEX_ENTRY_F_STAGE		0x00003000
-#define GOT_INDEX_ENTRY_F_EXTENDED	0x00004000
-#define GOT_INDEX_ENTRY_F_ASSUME_VALID	0x00008000
-
-	/*
-	 * UNIX-style path, relative to work tree root.
-	 * Variable length, and NUL-padded to a multiple of 8 on disk.
-	 */
-	char *path;
-
-	/* More data could be here if F_EXTENDED is set; To be determined... */
-};
-
-/* "Stages" of a file afflicted by a 3-way merge conflict. */
-#define GOT_INDEX_ENTRY_STAGE_MERGED	0
-#define GOT_INDEX_ENTRY_STAGE_ANCESTOR	1
-#define GOT_INDEX_ENTRY_STAGE_OURS	2
-#define GOT_INDEX_ENTRY_STAGE_THEIRS	3
-
-struct got_fileindex {
-	uint32_t nentries;
-	TAILQ_HEAD(, got_fileindex_entry) entries;
-};
-
-/* On-disk file index header structure. */
-struct got_fileindex_hdr {
-	uint32_t signature;	/* big-endian */
-#define GOT_FILE_INDEX_SIGNATURE	0x676f7449 /* 'g', 'o', 't', 'I' */
-	uint32_t version;	/* big-endian */
-#define GOT_FILE_INDEX_VERSION	1
-	uint32_t nentries;	/* big-endian */
-	/* list of concatenated fileindex entries */
-	uint8_t sha1[SHA1_DIGEST_LENGTH]; /* checksum of above on-disk data */
-};
-
-const struct got_error *got_fileindex_entry_open(struct got_fileindex_entry **,
-    const char *, const char *, uint8_t *);
-void got_fileindex_entry_close(struct got_fileindex_entry *);
-struct got_fileindex *got_fileindex_open(void);
-void got_fileindex_close(struct got_fileindex *);
-const struct got_error *got_fileindex_write(struct got_fileindex *, FILE *);
-const struct got_error *got_fileindex_entry_add(struct got_fileindex *,
-    struct got_fileindex_entry *);
blob - /dev/null
blob + 018f4f25c636bf8cfb37d7b1765211c73acae8e9 (mode 644)
--- /dev/null
+++ lib/got_lib_fileindex.h
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/*
+ * State information for a tracked file in a work tree.
+ * When written to disk, multi-byte fields are written in big-endian.
+ * Some fields are based on results from stat(2). These are only used in
+ * order to detect modifications made to on-disk files, they are never
+ * applied back to the filesystem.
+ */
+struct got_fileindex_entry {
+	TAILQ_ENTRY(got_fileindex_entry) entry;
+	uint64_t ctime_sec;
+	uint64_t ctime_nsec;
+	uint64_t mtime_sec;
+	uint64_t mtime_nsec;
+	uint32_t uid;
+	uint32_t gid;
+	/*
+	 * On-disk size is truncated to the lower 32 bits.
+	 * The value is only used to check for modifications anyway.
+	 */
+	uint32_t size;
+
+	uint16_t mode;
+#define GOT_INDEX_ENTRY_MODE_FILE_TYPE		0x000f
+#define GOT_INDEX_ENTRY_MODE_REGULAR_FILE	1
+#define GOT_INDEX_ENTRY_MODE_SYMLINK		2
+#define GOT_INDEX_ENTRY_MODE_PERMS		0xff10
+#define GOT_INDEX_ENTRY_MODE_PERMS_SHIFT	4
+
+	/* SHA1 of corresponding blob in repository. */
+	uint8_t blob_sha1[SHA1_DIGEST_LENGTH];
+
+	uint32_t flags;
+#define GOT_INDEX_ENTRY_F_PATH_LEN	0x00000fff
+#define GOT_INDEX_ENTRY_F_STAGE		0x00003000
+#define GOT_INDEX_ENTRY_F_EXTENDED	0x00004000
+#define GOT_INDEX_ENTRY_F_ASSUME_VALID	0x00008000
+
+	/*
+	 * UNIX-style path, relative to work tree root.
+	 * Variable length, and NUL-padded to a multiple of 8 on disk.
+	 */
+	char *path;
+
+	/* More data could be here if F_EXTENDED is set; To be determined... */
+};
+
+/* "Stages" of a file afflicted by a 3-way merge conflict. */
+#define GOT_INDEX_ENTRY_STAGE_MERGED	0
+#define GOT_INDEX_ENTRY_STAGE_ANCESTOR	1
+#define GOT_INDEX_ENTRY_STAGE_OURS	2
+#define GOT_INDEX_ENTRY_STAGE_THEIRS	3
+
+struct got_fileindex {
+	uint32_t nentries;
+	TAILQ_HEAD(, got_fileindex_entry) entries;
+};
+
+/* On-disk file index header structure. */
+struct got_fileindex_hdr {
+	uint32_t signature;	/* big-endian */
+#define GOT_FILE_INDEX_SIGNATURE	0x676f7449 /* 'g', 'o', 't', 'I' */
+	uint32_t version;	/* big-endian */
+#define GOT_FILE_INDEX_VERSION	1
+	uint32_t nentries;	/* big-endian */
+	/* list of concatenated fileindex entries */
+	uint8_t sha1[SHA1_DIGEST_LENGTH]; /* checksum of above on-disk data */
+};
+
+const struct got_error *got_fileindex_entry_open(struct got_fileindex_entry **,
+    const char *, const char *, uint8_t *);
+void got_fileindex_entry_close(struct got_fileindex_entry *);
+struct got_fileindex *got_fileindex_open(void);
+void got_fileindex_close(struct got_fileindex *);
+const struct got_error *got_fileindex_write(struct got_fileindex *, FILE *);
+const struct got_error *got_fileindex_entry_add(struct got_fileindex *,
+    struct got_fileindex_entry *);
blob - 156901f0339a8945664abed5e3624a696e2ea8b5 (mode 644)
blob + /dev/null
--- lib/got_object_lib.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-struct got_object_id {
-	u_int8_t sha1[SHA1_DIGEST_LENGTH];
-};
-
-struct got_object {
-	int type;
-	int flags;
-#define GOT_OBJ_FLAG_PACKED		0x01
-#define GOT_OBJ_FLAG_DELTIFIED		0x02
-
-	size_t hdrlen;
-	size_t size;
-	struct got_object_id id;
-
-	char *path_packfile;	/* if packed */
-	off_t pack_offset;	/* if packed */
-	struct got_delta_chain deltas; /* if deltified */
-};
-
-struct got_blob_object {
-	FILE *f;
-	struct got_zstream_buf zb;
-	size_t hdrlen;
-	size_t blocksize;
-	uint8_t *read_buf;
-	int flags;
-#define GOT_BLOB_F_COMPRESSED	0x01
-	struct got_object_id id;
-};
blob - /dev/null
blob + 156901f0339a8945664abed5e3624a696e2ea8b5 (mode 644)
--- /dev/null
+++ lib/got_lib_object.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+struct got_object_id {
+	u_int8_t sha1[SHA1_DIGEST_LENGTH];
+};
+
+struct got_object {
+	int type;
+	int flags;
+#define GOT_OBJ_FLAG_PACKED		0x01
+#define GOT_OBJ_FLAG_DELTIFIED		0x02
+
+	size_t hdrlen;
+	size_t size;
+	struct got_object_id id;
+
+	char *path_packfile;	/* if packed */
+	off_t pack_offset;	/* if packed */
+	struct got_delta_chain deltas; /* if deltified */
+};
+
+struct got_blob_object {
+	FILE *f;
+	struct got_zstream_buf zb;
+	size_t hdrlen;
+	size_t blocksize;
+	uint8_t *read_buf;
+	int flags;
+#define GOT_BLOB_F_COMPRESSED	0x01
+	struct got_object_id id;
+};
blob - 497c9c20139eece533dba83c6938dd6847ab1049 (mode 644)
blob + /dev/null
--- lib/got_pack_lib.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-/* An open pack file. */
-struct got_pack {
-	char *path_packfile;
-	FILE *packfile;
-	size_t filesize;
-};
-
-void got_pack_close(struct got_pack *);
-
-/* See Documentation/technical/pack-format.txt in Git. */
-
-struct got_packidx_trailer {
-	u_int8_t	packfile_sha1[SHA1_DIGEST_LENGTH];
-	u_int8_t	packidx_sha1[SHA1_DIGEST_LENGTH];
-} __attribute__((__packed__));
-
-/* Ignore pack index version 1 which is no longer written by Git. */
-#define GOT_PACKIDX_VERSION 2
-
-struct got_packidx_v2_hdr {
-	uint32_t	magic;		/* big endian */
-#define GOT_PACKIDX_V2_MAGIC 0xff744f63	/* "\377t0c" */
-	uint32_t	version;
-
-	/* 
-	 * Each entry N in the fanout table contains the number of objects in
-	 * the packfile whose SHA1 begins with a byte less than or equal to N.
-	 * The last entry (index 255) contains the number of objects in the
-	 * pack file whose first SHA1 byte is <= 0xff, and thus records the
-	 * total number of objects in the pack file. All pointer variables
-	 * below point to tables with a corresponding number of entries.
-	 */
-	uint32_t	fanout_table[0xff + 1];	/* values are big endian */
-
-	/* Sorted SHA1 checksums for each object in the pack file. */
-	struct got_object_id *sorted_ids;
-
-	/* CRC32 of the packed representation of each object. */
-	uint32_t	*crc32;
-
-	/* Offset into the pack file for each object. */
-	uint32_t	*offsets;		/* values are big endian */
-#define GOT_PACKIDX_OFFSET_VAL_MASK		0x7fffffff
-#define GOT_PACKIDX_OFFSET_VAL_IS_LARGE_IDX	0x80000000
-
-	/* Large offsets table is empty for pack files < 2 GB. */
-	uint64_t	*large_offsets;		/* values are big endian */
-
-	struct got_packidx_trailer trailer;
-};
-
-struct got_packfile_hdr {
-	uint32_t	signature;
-#define GOT_PACKFILE_SIGNATURE	0x5041434b	/* 'P' 'A' 'C' 'K' */
-	uint32_t	version;	/* big endian */
-#define GOT_PACKFILE_VERSION 2
-	uint32_t	nobjects;	/* big endian */
-};
-
-struct got_packfile_obj_hdr {
-	/* 
-	 * The object size field uses a variable length encoding:
-	 * size0...sizeN form a 4+7+7+...+7 bit integer, where size0 is the
-	 * least significant part and sizeN is the most significant part.
-	 * If the MSB of a size byte is set, an additional size byte follows.
-	 * Of the 7 remaining bits of size0, the first 3 bits indicate the
-	 * object's type, and the remaining 4 bits contribute to the size.
-	 */
-	uint8_t *size;		/* variable length */
-#define GOT_PACK_OBJ_SIZE_MORE		0x80
-#define GOT_PACK_OBJ_SIZE0_TYPE_MASK	0x70 /* See struct got_object->type */
-#define GOT_PACK_OBJ_SIZE0_TYPE_MASK_SHIFT	4
-#define GOT_PACK_OBJ_SIZE0_VAL_MASK	0x0f
-#define GOT_PACK_OBJ_SIZE_VAL_MASK	0x7f
-};
-
-/* If object is not a DELTA type. */
-struct got_packfile_object_data {
-	uint8_t *data;	/* compressed */
-};
-
-/* If object is of type	GOT_OBJ_TYPE_REF_DELTA. */
-struct got_packfile_object_data_ref_delta {
-	uint8_t sha1[SHA1_DIGEST_LENGTH];
-	uint8_t *delta_data;		/* compressed */
-};
-
-/* If object is of type GOT_OBJ_TYPE_OFFSET_DELTA. */
-struct got_packfile_object_data_offset_delta {
-	/* 
-	 * This offset is interpreted as a negative offset from
-	 * the got_packfile_obj_hdr corresponding to this object.
-	 * The size provided in the header specifies the amount
-	 * of compressed delta data that follows.
-	 *
-	 * This field uses a variable length encoding of N bytes,
-	 * where the MSB is always set except for the last byte.
-	 * The value is encoded as a series of N 7 bit integers,
-	 * which are concatenated, and if N > 1 the value 2^7 +
-	 * 2^14 + ... + 2^(7 * (n-1)) is added to the result.
-	 */
-	uint8_t *offset;	/* variable length */
-#define GOT_PACK_OBJ_DELTA_OFF_MORE		0x80
-#define GOT_PACK_OBJ_DELTA_OFF_VAL_MASK		0x7f
-	uint8_t *delta_data;		/* compressed */
-};
-
-struct got_packfile_obj_data {
-	union {
-		struct got_packfile_object_data data;
-		struct got_packfile_object_data_ref_delta ref_delta;
-		struct got_packfile_object_data_offset_delta offset_delta;
-	} __attribute__((__packed__));
-} __attribute__((__packed__));
-
-const struct got_error *got_packidx_open(struct got_packidx_v2_hdr **,
-    const char *);
-void got_packidx_close(struct got_packidx_v2_hdr *);
-
-const struct got_error *got_packfile_open_object(struct got_object **,
-    struct got_object_id *, struct got_repository *);
-const struct got_error *got_packfile_extract_object(FILE **,
-    struct got_object *, struct got_repository *);
-const struct got_error *got_packfile_extract_object_to_mem(uint8_t **, size_t *,
-    struct got_object *, struct got_repository *);
blob - /dev/null
blob + 497c9c20139eece533dba83c6938dd6847ab1049 (mode 644)
--- /dev/null
+++ lib/got_lib_pack.h
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* An open pack file. */
+struct got_pack {
+	char *path_packfile;
+	FILE *packfile;
+	size_t filesize;
+};
+
+void got_pack_close(struct got_pack *);
+
+/* See Documentation/technical/pack-format.txt in Git. */
+
+struct got_packidx_trailer {
+	u_int8_t	packfile_sha1[SHA1_DIGEST_LENGTH];
+	u_int8_t	packidx_sha1[SHA1_DIGEST_LENGTH];
+} __attribute__((__packed__));
+
+/* Ignore pack index version 1 which is no longer written by Git. */
+#define GOT_PACKIDX_VERSION 2
+
+struct got_packidx_v2_hdr {
+	uint32_t	magic;		/* big endian */
+#define GOT_PACKIDX_V2_MAGIC 0xff744f63	/* "\377t0c" */
+	uint32_t	version;
+
+	/* 
+	 * Each entry N in the fanout table contains the number of objects in
+	 * the packfile whose SHA1 begins with a byte less than or equal to N.
+	 * The last entry (index 255) contains the number of objects in the
+	 * pack file whose first SHA1 byte is <= 0xff, and thus records the
+	 * total number of objects in the pack file. All pointer variables
+	 * below point to tables with a corresponding number of entries.
+	 */
+	uint32_t	fanout_table[0xff + 1];	/* values are big endian */
+
+	/* Sorted SHA1 checksums for each object in the pack file. */
+	struct got_object_id *sorted_ids;
+
+	/* CRC32 of the packed representation of each object. */
+	uint32_t	*crc32;
+
+	/* Offset into the pack file for each object. */
+	uint32_t	*offsets;		/* values are big endian */
+#define GOT_PACKIDX_OFFSET_VAL_MASK		0x7fffffff
+#define GOT_PACKIDX_OFFSET_VAL_IS_LARGE_IDX	0x80000000
+
+	/* Large offsets table is empty for pack files < 2 GB. */
+	uint64_t	*large_offsets;		/* values are big endian */
+
+	struct got_packidx_trailer trailer;
+};
+
+struct got_packfile_hdr {
+	uint32_t	signature;
+#define GOT_PACKFILE_SIGNATURE	0x5041434b	/* 'P' 'A' 'C' 'K' */
+	uint32_t	version;	/* big endian */
+#define GOT_PACKFILE_VERSION 2
+	uint32_t	nobjects;	/* big endian */
+};
+
+struct got_packfile_obj_hdr {
+	/* 
+	 * The object size field uses a variable length encoding:
+	 * size0...sizeN form a 4+7+7+...+7 bit integer, where size0 is the
+	 * least significant part and sizeN is the most significant part.
+	 * If the MSB of a size byte is set, an additional size byte follows.
+	 * Of the 7 remaining bits of size0, the first 3 bits indicate the
+	 * object's type, and the remaining 4 bits contribute to the size.
+	 */
+	uint8_t *size;		/* variable length */
+#define GOT_PACK_OBJ_SIZE_MORE		0x80
+#define GOT_PACK_OBJ_SIZE0_TYPE_MASK	0x70 /* See struct got_object->type */
+#define GOT_PACK_OBJ_SIZE0_TYPE_MASK_SHIFT	4
+#define GOT_PACK_OBJ_SIZE0_VAL_MASK	0x0f
+#define GOT_PACK_OBJ_SIZE_VAL_MASK	0x7f
+};
+
+/* If object is not a DELTA type. */
+struct got_packfile_object_data {
+	uint8_t *data;	/* compressed */
+};
+
+/* If object is of type	GOT_OBJ_TYPE_REF_DELTA. */
+struct got_packfile_object_data_ref_delta {
+	uint8_t sha1[SHA1_DIGEST_LENGTH];
+	uint8_t *delta_data;		/* compressed */
+};
+
+/* If object is of type GOT_OBJ_TYPE_OFFSET_DELTA. */
+struct got_packfile_object_data_offset_delta {
+	/* 
+	 * This offset is interpreted as a negative offset from
+	 * the got_packfile_obj_hdr corresponding to this object.
+	 * The size provided in the header specifies the amount
+	 * of compressed delta data that follows.
+	 *
+	 * This field uses a variable length encoding of N bytes,
+	 * where the MSB is always set except for the last byte.
+	 * The value is encoded as a series of N 7 bit integers,
+	 * which are concatenated, and if N > 1 the value 2^7 +
+	 * 2^14 + ... + 2^(7 * (n-1)) is added to the result.
+	 */
+	uint8_t *offset;	/* variable length */
+#define GOT_PACK_OBJ_DELTA_OFF_MORE		0x80
+#define GOT_PACK_OBJ_DELTA_OFF_VAL_MASK		0x7f
+	uint8_t *delta_data;		/* compressed */
+};
+
+struct got_packfile_obj_data {
+	union {
+		struct got_packfile_object_data data;
+		struct got_packfile_object_data_ref_delta ref_delta;
+		struct got_packfile_object_data_offset_delta offset_delta;
+	} __attribute__((__packed__));
+} __attribute__((__packed__));
+
+const struct got_error *got_packidx_open(struct got_packidx_v2_hdr **,
+    const char *);
+void got_packidx_close(struct got_packidx_v2_hdr *);
+
+const struct got_error *got_packfile_open_object(struct got_object **,
+    struct got_object_id *, struct got_repository *);
+const struct got_error *got_packfile_extract_object(FILE **,
+    struct got_object *, struct got_repository *);
+const struct got_error *got_packfile_extract_object_to_mem(uint8_t **, size_t *,
+    struct got_object *, struct got_repository *);
blob - 53b63eff8f31d9fb8abb59dc9c33972ed6d43060 (mode 644)
blob + /dev/null
--- lib/got_path_lib.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-/* Utilities for dealing with filesystem paths. */
-
-#define GOT_DEFAULT_FILE_MODE	(S_IRUSR|S_IWUSR | S_IRGRP | S_IROTH)
-#define GOT_DEFAULT_DIR_MODE	(S_IRWXU | S_IRGRP|S_IXGRP | S_IROTH|S_IXOTH)
-
-/* Determine whether a path is an absolute path. */
-int got_path_is_absolute(const char *);
-
-/*
- * Return an absolute version of a relative path.
- * The result is allocated with malloc(3).
- */
-char *got_path_get_absolute(const char *);
-
-/* 
- * Normalize a path for internal processing.
- * The result is allocated with malloc(3).
- */
-char *got_path_normalize(const char *);
-
-/* Open a new temporary file for writing.
- * The file is not visible in the filesystem. */
-FILE *got_opentemp(void);
-
-/* Open a new temporary file for writing.
- * The file is visible in the filesystem. */
-const struct got_error *got_opentemp_named(char **, FILE **, const char *);
-
-/* Count the number of path segments separated by '/'. */
-const struct got_error *
-got_path_segment_count(int *count, const char *path);
blob - /dev/null
blob + 53b63eff8f31d9fb8abb59dc9c33972ed6d43060 (mode 644)
--- /dev/null
+++ lib/got_lib_path.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/* Utilities for dealing with filesystem paths. */
+
+#define GOT_DEFAULT_FILE_MODE	(S_IRUSR|S_IWUSR | S_IRGRP | S_IROTH)
+#define GOT_DEFAULT_DIR_MODE	(S_IRWXU | S_IRGRP|S_IXGRP | S_IROTH|S_IXOTH)
+
+/* Determine whether a path is an absolute path. */
+int got_path_is_absolute(const char *);
+
+/*
+ * Return an absolute version of a relative path.
+ * The result is allocated with malloc(3).
+ */
+char *got_path_get_absolute(const char *);
+
+/* 
+ * Normalize a path for internal processing.
+ * The result is allocated with malloc(3).
+ */
+char *got_path_normalize(const char *);
+
+/* Open a new temporary file for writing.
+ * The file is not visible in the filesystem. */
+FILE *got_opentemp(void);
+
+/* Open a new temporary file for writing.
+ * The file is visible in the filesystem. */
+const struct got_error *got_opentemp_named(char **, FILE **, const char *);
+
+/* Count the number of path segments separated by '/'. */
+const struct got_error *
+got_path_segment_count(int *count, const char *path);
blob - 683bfddab6362efaac7df37b134ce70444f95abf (mode 644)
blob + /dev/null
--- lib/got_repository_lib.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define GOT_PACKIDX_CACHE_SIZE	64
-#define GOT_PACK_CACHE_SIZE	GOT_PACKIDX_CACHE_SIZE
-
-struct got_repository {
-	char *path;
-	char *path_git_dir;
-
-	/* The pack index cache speeds up search for packed objects. */
-	struct got_packidx_v2_hdr *packidx_cache[GOT_PACKIDX_CACHE_SIZE];
-
-	/* Open file handles, memory maps, and cached deltas for pack files. */
-	struct got_pack packs[GOT_PACK_CACHE_SIZE];
-};
blob - /dev/null
blob + 683bfddab6362efaac7df37b134ce70444f95abf (mode 644)
--- /dev/null
+++ lib/got_lib_repository.h
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define GOT_PACKIDX_CACHE_SIZE	64
+#define GOT_PACK_CACHE_SIZE	GOT_PACKIDX_CACHE_SIZE
+
+struct got_repository {
+	char *path;
+	char *path_git_dir;
+
+	/* The pack index cache speeds up search for packed objects. */
+	struct got_packidx_v2_hdr *packidx_cache[GOT_PACKIDX_CACHE_SIZE];
+
+	/* Open file handles, memory maps, and cached deltas for pack files. */
+	struct got_pack packs[GOT_PACK_CACHE_SIZE];
+};
blob - d207ee390d6e7f6252e01034122dc9e112bfd66d (mode 644)
blob + /dev/null
--- lib/got_sha1_lib.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#define GOT_SHA1_STRING_ZERO "0000000000000000000000000000000000000000"
-
-int got_parse_sha1_digest(uint8_t *, const char *);
-char *got_sha1_digest_to_str(const uint8_t *, char *, size_t);
blob - /dev/null
blob + d207ee390d6e7f6252e01034122dc9e112bfd66d (mode 644)
--- /dev/null
+++ lib/got_lib_sha1.h
@@ -0,0 +1,20 @@
+/*
+ * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#define GOT_SHA1_STRING_ZERO "0000000000000000000000000000000000000000"
+
+int got_parse_sha1_digest(uint8_t *, const char *);
+char *got_sha1_digest_to_str(const uint8_t *, char *, size_t);
blob - 5694eaebb55252cb517324287f062e32a9a29b19 (mode 644)
blob + /dev/null
--- lib/got_worktree_lib.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-struct got_worktree {
-	char *root_path;
-	char *repo_path;
-	char *path_prefix;
-	char *base_commit;
-	char *head_ref;
-
-	/*
-	 * File descriptor for the lock file, open while a work tree is open.
-	 * When a work tree is opened, a shared lock on the lock file is
-	 * acquired with flock(2). This shared lock is held until the work
-	 * tree is closed, i.e. throughout the lifetime of any operation
-	 * which uses a work tree.
-	 * Before any modifications are made to the on-disk state of work
-	 * tree meta data, tracked files, or directory tree structure, this
-	 * shared lock must be upgraded to an exclusive lock.
-	 */
-	int lockfd;
-};
-
-#define GOT_WORKTREE_GOT_DIR		".got"
-#define GOT_WORKTREE_FILE_INDEX		"fileindex"
-#define GOT_WORKTREE_REPOSITORY		"repository"
-#define GOT_WORKTREE_PATH_PREFIX	"path-prefix"
-#define GOT_WORKTREE_HEAD		"head"
-#define GOT_WORKTREE_LOCK		"lock"
-#define GOT_WORKTREE_FORMAT		"format"
-
-#define GOT_WORKTREE_FORMAT_VERSION	1
-#define GOT_WORKTREE_INVALID_COMMIT_ID	GOT_SHA1_STRING_ZERO
blob - /dev/null
blob + 5694eaebb55252cb517324287f062e32a9a29b19 (mode 644)
--- /dev/null
+++ lib/got_lib_worktree.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+struct got_worktree {
+	char *root_path;
+	char *repo_path;
+	char *path_prefix;
+	char *base_commit;
+	char *head_ref;
+
+	/*
+	 * File descriptor for the lock file, open while a work tree is open.
+	 * When a work tree is opened, a shared lock on the lock file is
+	 * acquired with flock(2). This shared lock is held until the work
+	 * tree is closed, i.e. throughout the lifetime of any operation
+	 * which uses a work tree.
+	 * Before any modifications are made to the on-disk state of work
+	 * tree meta data, tracked files, or directory tree structure, this
+	 * shared lock must be upgraded to an exclusive lock.
+	 */
+	int lockfd;
+};
+
+#define GOT_WORKTREE_GOT_DIR		".got"
+#define GOT_WORKTREE_FILE_INDEX		"fileindex"
+#define GOT_WORKTREE_REPOSITORY		"repository"
+#define GOT_WORKTREE_PATH_PREFIX	"path-prefix"
+#define GOT_WORKTREE_HEAD		"head"
+#define GOT_WORKTREE_LOCK		"lock"
+#define GOT_WORKTREE_FORMAT		"format"
+
+#define GOT_WORKTREE_FORMAT_VERSION	1
+#define GOT_WORKTREE_INVALID_COMMIT_ID	GOT_SHA1_STRING_ZERO
blob - 9285ed5f1b90a4c3e4017658c8f83fb2dd3e8f2b (mode 644)
blob + /dev/null
--- lib/got_zbuf_lib.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-struct got_zstream_buf {
-	z_stream z;
-	char *inbuf;
-	size_t inlen;
-	char *outbuf;
-	size_t outlen;
-	int flags;
-#define GOT_ZSTREAM_F_HAVE_MORE		0x01
-#define GOT_ZSTREAM_F_OWN_OUTBUF	0x02
-};
-
-#define GOT_ZSTREAM_BUFSIZE		8192
-
-const struct got_error *got_inflate_init(struct got_zstream_buf *, uint8_t *,
-    size_t);
-const struct got_error *got_inflate_read(struct got_zstream_buf *, FILE *,
-    size_t *);
-void got_inflate_end(struct got_zstream_buf *);
-const struct got_error *got_inflate_to_mem(uint8_t **, size_t *, FILE *);
-const struct got_error *got_inflate_to_file(size_t *, FILE *, FILE *);
blob - /dev/null
blob + 9285ed5f1b90a4c3e4017658c8f83fb2dd3e8f2b (mode 644)
--- /dev/null
+++ lib/got_lib_zbuf.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2018 Stefan Sperling <stsp@openbsd.org>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+struct got_zstream_buf {
+	z_stream z;
+	char *inbuf;
+	size_t inlen;
+	char *outbuf;
+	size_t outlen;
+	int flags;
+#define GOT_ZSTREAM_F_HAVE_MORE		0x01
+#define GOT_ZSTREAM_F_OWN_OUTBUF	0x02
+};
+
+#define GOT_ZSTREAM_BUFSIZE		8192
+
+const struct got_error *got_inflate_init(struct got_zstream_buf *, uint8_t *,
+    size_t);
+const struct got_error *got_inflate_read(struct got_zstream_buf *, FILE *,
+    size_t *);
+void got_inflate_end(struct got_zstream_buf *);
+const struct got_error *got_inflate_to_mem(uint8_t **, size_t *, FILE *);
+const struct got_error *got_inflate_to_file(size_t *, FILE *, FILE *);
blob - f5cf92ac0828894e6d7a620a84503b2b07231860
blob + 7037325a47c164cee43c0303029705ceb1a19f7a
--- lib/object.c
+++ lib/object.c
@@ -30,11 +30,11 @@
 #include "got_object.h"
 #include "got_repository.h"
 
-#include "got_sha1_lib.h"
-#include "got_delta_lib.h"
-#include "got_pack_lib.h"
-#include "got_zbuf_lib.h"
-#include "got_object_lib.h"
+#include "got_lib_sha1.h"
+#include "got_lib_delta.h"
+#include "got_lib_pack.h"
+#include "got_lib_zbuf.h"
+#include "got_lib_object.h"
 
 #ifndef MIN
 #define	MIN(_a,_b) ((_a) < (_b) ? (_a) : (_b))
blob - 98c06d20b5a8631ff13b186324035c8eb68c1152
blob + 13400cde614412fa2c8db10001786781d672f8d8
--- lib/pack.c
+++ lib/pack.c
@@ -34,13 +34,13 @@
 #include "got_object.h"
 #include "got_repository.h"
 
-#include "got_sha1_lib.h"
-#include "got_pack_lib.h"
-#include "got_path_lib.h"
-#include "got_delta_lib.h"
-#include "got_zbuf_lib.h"
-#include "got_object_lib.h"
-#include "got_repository_lib.h"
+#include "got_lib_sha1.h"
+#include "got_lib_pack.h"
+#include "got_lib_path.h"
+#include "got_lib_delta.h"
+#include "got_lib_zbuf.h"
+#include "got_lib_object.h"
+#include "got_lib_repository.h"
 
 #ifndef nitems
 #define nitems(_a) (sizeof(_a) / sizeof((_a)[0]))
blob - 2359a13f176985e5b421c4923d26b0de468bc6c5
blob + ddd0a1e67d31a851c76efbed97aea073100c7c67
--- lib/path.c
+++ lib/path.c
@@ -22,7 +22,7 @@
 
 #include "got_error.h"
 
-#include "got_path_lib.h"
+#include "got_lib_path.h"
 
 int
 got_path_is_absolute(const char *path)
blob - 4a5ef20dd3967be4acf3dea7bc45f06864a9f48f
blob + 07d6b874c947c74d3665545cea5b355672bb3220
--- lib/refs.c
+++ lib/refs.c
@@ -29,11 +29,11 @@
 #include "got_repository.h"
 #include "got_refs.h"
 
-#include "got_sha1_lib.h"
-#include "got_path_lib.h"
-#include "got_delta_lib.h"
-#include "got_zbuf_lib.h"
-#include "got_object_lib.h"
+#include "got_lib_sha1.h"
+#include "got_lib_path.h"
+#include "got_lib_delta.h"
+#include "got_lib_zbuf.h"
+#include "got_lib_object.h"
 
 /* A symbolic reference. */
 struct got_symref {
blob - d1aca1b30e4b959908ed4daf82571c6e5dd229d0
blob + 9dea7fe71449e02beed91b0051eb9da34de1a42e
--- lib/repository.c
+++ lib/repository.c
@@ -28,12 +28,12 @@
 #include "got_refs.h"
 #include "got_repository.h"
 
-#include "got_path_lib.h"
-#include "got_delta_lib.h"
-#include "got_zbuf_lib.h"
-#include "got_object_lib.h"
-#include "got_pack_lib.h"
-#include "got_repository_lib.h"
+#include "got_lib_path.h"
+#include "got_lib_delta.h"
+#include "got_lib_zbuf.h"
+#include "got_lib_object.h"
+#include "got_lib_pack.h"
+#include "got_lib_repository.h"
 
 #ifndef nitems
 #define nitems(_a) (sizeof(_a) / sizeof((_a)[0]))
blob - 86810c7968e259e91b0f1ba40cce6ce75a241f7f
blob + d5e11f068c05988fcb1d445cfd83786de2c585d5
--- lib/sha1.c
+++ lib/sha1.c
@@ -21,7 +21,7 @@
 #include <stdlib.h>
 #include <limits.h>
 
-#include "got_sha1_lib.h"
+#include "got_lib_sha1.h"
 
 static int
 parse_xdigit(uint8_t *val, const char *hex)
blob - a1bff6f12c13bb8798b16dbca3d47ebeeaefdb6b
blob + 63c5da80f96650880e5a9b02c0efadd40d22d9c3
--- lib/worktree.c
+++ lib/worktree.c
@@ -34,13 +34,13 @@
 #include "got_object.h"
 #include "got_worktree.h"
 
-#include "got_worktree_lib.h"
-#include "got_path_lib.h"
-#include "got_sha1_lib.h"
-#include "got_fileindex_lib.h"
-#include "got_zbuf_lib.h"
-#include "got_delta_lib.h"
-#include "got_object_lib.h"
+#include "got_lib_worktree.h"
+#include "got_lib_path.h"
+#include "got_lib_sha1.h"
+#include "got_lib_fileindex.h"
+#include "got_lib_zbuf.h"
+#include "got_lib_delta.h"
+#include "got_lib_object.h"
 
 #ifndef MIN
 #define	MIN(_a,_b) ((_a) < (_b) ? (_a) : (_b))
blob - cf71b54b29e4cfa1754df50ca0de519f2a9df125
blob + 9024264945ebfbe8bb734400daa2cc59cb0f4b2a
--- lib/zbuf.c
+++ lib/zbuf.c
@@ -25,8 +25,8 @@
 #include "got_error.h"
 #include "got_object.h"
 
-#include "got_path_lib.h"
-#include "got_zbuf_lib.h"
+#include "got_lib_path.h"
+#include "got_lib_zbuf.h"
 
 const struct got_error *
 got_inflate_init(struct got_zstream_buf *zb, uint8_t *outbuf, size_t bufsize)
blob - 1486b9cf29e562247e4d0c5854683b917738a4c9
blob + b4272d32123c83c66b97ea8db4c10b5aa9bbb9da
--- regress/delta/delta_test.c
+++ regress/delta/delta_test.c
@@ -24,8 +24,8 @@
 
 #include "got_error.h"
 
-#include "got_delta_lib.h"
-#include "got_path_lib.h"
+#include "got_lib_delta.h"
+#include "got_lib_path.h"
 
 #ifndef nitems
 #define nitems(_a) (sizeof(_a) / sizeof((_a)[0]))
blob - a6f98b4bcc53010b340d551d227b66613375ce83
blob + 4fbb8881a53c1ccf94fc910bd447d44b64295018
--- regress/worktree/worktree_test.c
+++ regress/worktree/worktree_test.c
@@ -35,8 +35,8 @@
 #include "got_repository.h"
 #include "got_worktree.h"
 
-#include "got_worktree_lib.h"
-#include "got_path_lib.h"
+#include "got_lib_worktree.h"
+#include "got_lib_path.h"
 
 #define GOT_REPO_PATH "../../../"