Commit Diff


commit - 7a9df742c247f62cb09b77ae4bd3fb8006636553
commit + 25a58941e2beadb3c782e68c751bd74947177955
blob - 59cca6fff1cd992952d074f19528f0b9831465d0
blob + c4412341928e247e4ba1e74b8a4014eb2107252d
--- got/Makefile
+++ got/Makefile
@@ -3,8 +3,8 @@
 PROG=		got
 SRCS=		got.c blame.c commit_graph.c delta.c diff.c diffoffset.c \
 		diffreg.c error.c fileindex.c object.c object_cache.c \
-		object_idset.c object_parse.c opentemp.c path.c pathset.c \
-		pack.c privsep.c reference.c repository.c sha1.c worktree.c \
+		object_idset.c object_parse.c opentemp.c path.c pack.c \
+		privsep.c reference.c repository.c sha1.c worktree.c \
 		inflate.c
 
 CPPFLAGS = -I${.CURDIR}/../include -I${.CURDIR}/../lib \
blob - 098dd95cefae9823eb8553bd2a8d3730ea263d0c (mode 644)
blob + /dev/null
--- lib/got_lib_pathset.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (c) 2019 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_pathset;
-
-struct got_pathset *got_pathset_alloc(void);
-void got_pathset_free(struct got_pathset *);
-
-const struct got_error *got_pathset_add(struct got_pathset *, const char *,
-    void *);
-void *got_pathset_get(struct got_pathset *, const char *);
-const struct got_error *got_pathset_remove(void **, struct got_pathset *,
-    const char *);
-int got_pathset_contains(struct got_pathset *, const char *);
-const struct got_error *got_pathset_for_each_safe(struct got_pathset *,
-    const struct got_error *(*cb)(const char *, void *, void *),
-    void *);
-const struct got_error *got_pathset_for_each_reverse_safe(struct got_pathset *,
-    const struct got_error *(*cb)(const char *, void *, void *),
-    void *);
-int got_pathset_num_elements(struct got_pathset *);
blob - 0332c19e110a0a01f815e84f6523dff8331994da (mode 644)
blob + /dev/null
--- lib/pathset.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * Copyright (c) 2019 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.
- */
-
-#include <sys/tree.h>
-
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-#include <limits.h>
-
-#include "got_error.h"
-#include "got_lib_path.h"
-#include "got_lib_pathset.h"
-
-struct got_pathset_element {
-	RB_ENTRY(got_pathset_element)	entry;
-	char *path;
-	void *data;	/* API user data */
-};
-
-RB_HEAD(got_pathset_tree, got_pathset_element);
-
-static int
-cmp_elements(const struct got_pathset_element *e1,
-    const struct got_pathset_element *e2)
-{
-	return got_compare_paths(e1->path, e2->path);
-}
-
-RB_PROTOTYPE(got_pathset_tree, got_pathset_element, entry, cmp_elements);
-
-struct got_pathset {
-	struct got_pathset_tree entries;
-	int totelem;
-#define GOT_PATHSET_MAX_ELEM INT_MAX
-};
-
-struct got_pathset *
-got_pathset_alloc(void)
-{
-	struct got_pathset *set;
-
-	set = malloc(sizeof(*set));
-	if (set == NULL)
-		return NULL;
-
-	RB_INIT(&set->entries);
-	set->totelem = 0;
-
-	return set;
-}
-
-static void
-free_element(struct got_pathset_element *entry)
-{
-	free(entry->path);
-	free(entry);
-}
-
-void
-got_pathset_free(struct got_pathset *set)
-{
-	struct got_pathset_element *entry;
-
-	while ((entry = RB_MIN(got_pathset_tree, &set->entries))) {
-		RB_REMOVE(got_pathset_tree, &set->entries, entry);
-		/* User data should be freed by caller. */
-		free_element(entry);
-	}
-
-	free(set);
-}
-
-const struct got_error *
-got_pathset_add(struct got_pathset *set, const char *path, void *data)
-{
-	struct got_pathset_element *new;
-
-	if (set->totelem >= GOT_PATHSET_MAX_ELEM)
-		return got_error(GOT_ERR_NO_SPACE);
-
-	new = malloc(sizeof(*new));
-	if (new == NULL)
-		return got_error_from_errno();
-
-	new->path = strdup(path);
-	if (new->path == NULL)
-		return got_error_from_errno();
-		
-	new->data = data;
-
-	RB_INSERT(got_pathset_tree, &set->entries, new);
-	set->totelem++;
-	return NULL;
-}
-
-static struct got_pathset_element *
-find_element(struct got_pathset *set, const char *path)
-{
-	struct got_pathset_element key, *entry;
-	key.path = (char *)path;
-	key.data = NULL;
-	entry = RB_FIND(got_pathset_tree, &set->entries, &key);
-	return entry;
-}
-
-void *
-got_pathset_get(struct got_pathset *set, const char *path)
-{
-	struct got_pathset_element *entry = find_element(set, path);
-	return entry ? entry->data : NULL;
-}
-
-const struct got_error *
-got_pathset_remove(void **data, struct got_pathset *set, const char *path)
-{
-	struct got_pathset_element *entry;
-
-	if (data)
-		*data = NULL;
-
-	if (set->totelem == 0)
-		return got_error(GOT_ERR_NO_OBJ);
-
-	if (path == NULL)
-		entry = RB_ROOT(&set->entries);
-	else
-		entry = find_element(set, path);
-	if (entry == NULL)
-		return got_error(GOT_ERR_NO_OBJ);
-
-	RB_REMOVE(got_pathset_tree, &set->entries, entry);
-	if (data)
-		*data = entry->data;
-	free_element(entry);
-	set->totelem--;
-	return NULL;
-}
-
-int
-got_pathset_contains(struct got_pathset *set, const char *path)
-{
-	struct got_pathset_element *entry = find_element(set, path);
-	return entry ? 1 : 0;
-}
-
-const struct got_error *
-got_pathset_for_each_safe(struct got_pathset *set,
-    const struct got_error *(*cb)(const char *, void *, void *), void *arg)
-{
-	const struct got_error *err;
-	struct got_pathset_element *entry, *tmp;
-
-	RB_FOREACH_SAFE(entry, got_pathset_tree, &set->entries, tmp) {
-		err = (*cb)(entry->path, entry->data, arg);
-		if (err)
-			return err;
-	}
-	return NULL;
-}
-
-const struct got_error *
-got_pathset_for_each_reverse_safe(struct got_pathset *set,
-    const struct got_error *(*cb)(const char *, void *, void *), void *arg)
-{
-	const struct got_error *err;
-	struct got_pathset_element *entry, *tmp;
-
-	RB_FOREACH_REVERSE_SAFE(entry, got_pathset_tree, &set->entries, tmp) {
-		err = (*cb)(entry->path, entry->data, arg);
-		if (err)
-			return err;
-	}
-	return NULL;
-}
-
-int
-got_pathset_num_elements(struct got_pathset *set)
-{
-	return set->totelem;
-}
-
-RB_GENERATE(got_pathset_tree, got_pathset_element, entry, cmp_elements);
blob - f4dda9c1107a2a59b5d7c6f3878b068ca3075b96
blob + bd68cd59dd3fc57df8b43aee72ba61e5cda697d3
--- regress/Makefile
+++ regress/Makefile
@@ -1,3 +1,3 @@
-SUBDIR = cmdline delta idset pathset repository worktree
+SUBDIR = cmdline delta idset repository worktree
 
 .include <bsd.subdir.mk>
blob - 7046be709f854cb231dae101e6b5e9fe1670cc55
blob + 622918d65a3235175fbd16aaffcc60725d7d93cc
--- regress/idset/Makefile
+++ regress/idset/Makefile
@@ -1,9 +1,9 @@
 .PATH:${.CURDIR}/../../lib
 
 PROG = idset_test
-SRCS = error.c object.c privsep.c sha1.c pack.c inflate.c path.c pathset.c \
-	opentemp.c delta.c repository.c reference.c worktree.c fileindex.c \
-	object_cache.c object_idset.c object_parse.c idset_test.c
+SRCS = error.c object.c privsep.c sha1.c pack.c inflate.c path.c opentemp.c \
+	delta.c repository.c reference.c worktree.c fileindex.c object_cache.c \
+	object_idset.c object_parse.c idset_test.c
 
 CPPFLAGS = -I${.CURDIR}/../../include -I${.CURDIR}/../../lib
 LDADD = -lutil -lz
blob - 35b7f216dd013066af642519d26ad4ddcb5a6b31 (mode 644)
blob + /dev/null
--- regress/pathset/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-.PATH:${.CURDIR}/../../lib
-
-PROG = pathset_test
-SRCS = error.c sha1.c pathset.c path.c pathset_test.c
-
-CPPFLAGS = -I${.CURDIR}/../../include -I${.CURDIR}/../../lib
-LDADD = 
-
-NOMAN = yes
-
-.include <bsd.regress.mk>
blob - 9cd8b5a95ebbc11b42f2187aa0aebcc0a8a4aab5 (mode 644)
blob + /dev/null
--- regress/pathset/pathset_test.c
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * Copyright (c) 2019 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.
- */
-
-#include <stdarg.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <err.h>
-
-#include "got_error.h"
-
-#include "got_lib_pathset.h"
-
-static int verbose;
-
-void
-test_printf(char *fmt, ...)
-{
-	va_list ap;
-
-	if (!verbose)
-		return;
-
-	va_start(ap, fmt);
-	vprintf(fmt, ap);
-	va_end(ap);
-}
-
-static const char *path1 = "/", *path2 = "/usr", *path3 = "/usr/bin";
-static const char *data1 = "data1", *data2 = "data2", *data3 = "data3";
-
-static const struct got_error *
-pathset_add_remove_iter_cb(const char *path, void *data, void *arg)
-{
-	test_printf("%s\n", path);
-	if ((strcmp(path, path1) == 0 && data == (void *)data1) ||
-	    (strcmp(path, path3) == 0 && data == (void *)data3))
-		return NULL;
-	abort();
-	return NULL; /* not reached */
-}
-
-static int
-pathset_add_remove_iter(void)
-{
-	const struct got_error *err = NULL;
-	struct got_pathset *set;
-
-	set = got_pathset_alloc();
-	if (set == NULL) {
-		err = got_error_from_errno();
-		goto done;
-	}
-	if (got_pathset_num_elements(set) != 0) {
-		err = got_error(GOT_ERR_BAD_PATH);
-		goto done;
-	}
-
-
-	err = got_pathset_add(set, path1, (void *)data1);
-	if (err)
-		goto done;
-	if (got_pathset_num_elements(set) != 1) {
-		err = got_error(GOT_ERR_BAD_PATH);
-		goto done;
-	}
-
-	if (!got_pathset_contains(set, path1)) {
-		err = got_error(GOT_ERR_BAD_PATH);
-		goto done;
-	}
-
-	err = got_pathset_add(set, path2, (void *)data2);
-	if (err)
-		goto done;
-	if (!got_pathset_contains(set, path2)) {
-		err = got_error(GOT_ERR_BAD_PATH);
-		goto done;
-	}
-	if (got_pathset_num_elements(set) != 2) {
-		err = got_error(GOT_ERR_BAD_PATH);
-		goto done;
-	}
-
-	err = got_pathset_add(set, path3, (void *)data3);
-	if (err)
-		goto done;
-	if (got_pathset_get(set, path3) != (void *)data3) {
-		err = got_error(GOT_ERR_BAD_PATH);
-		goto done;
-	}
-	if (got_pathset_num_elements(set) != 3) {
-		err = got_error(GOT_ERR_BAD_PATH);
-		goto done;
-	}
-
-	err = got_pathset_remove(NULL, set, path2);
-	if (err)
-		goto done;
-	if (got_pathset_num_elements(set) != 2) {
-		err = got_error(GOT_ERR_BAD_PATH);
-		goto done;
-	}
-	if (got_pathset_contains(set, path2)) {
-		err = got_error(GOT_ERR_BAD_PATH);
-		goto done;
-	}
-	if (got_pathset_get(set, path2) != NULL) {
-		err = got_error(GOT_ERR_BAD_PATH);
-		goto done;
-	}
-
-	got_pathset_for_each_safe(set, pathset_add_remove_iter_cb, NULL);
-done:
-	got_pathset_free(set);
-	return (err == NULL);
-}
-
-static const struct got_error *
-pathset_iter_order_cb(const char *path, void *data, void *arg)
-{
-	static int i;
-	test_printf("%s\n", path);
-	if (i == 0 && strcmp(path, "/") != 0)
-		abort();
-	if (i == 1 && strcmp(path, "/usr.bin") != 0)
-		abort();
-	if (i == 2 && strcmp(path, "/usr.bin/vi") != 0)
-		abort();
-	if (i == 3 && strcmp(path, "/usr.sbin") != 0)
-		abort();
-	if (i == 4 && strcmp(path, "/usr.sbin/unbound") != 0)
-		abort();
-	if (i == 5 && strcmp(path, "/usr.sbin/zic") != 0)
-		abort();
-	if (i > 5)
-		abort();
-	i++;
-	return NULL;
-}
-
-static const struct got_error *
-pathset_iter_reverse_order_cb(const char *path, void *data, void *arg)
-{
-	static int i;
-	test_printf("%s\n", path);
-	if (i == 0 && strcmp(path, "/usr.sbin/zic") != 0)
-		abort();
-	if (i == 1 && strcmp(path, "/usr.sbin/unbound") != 0)
-		abort();
-	if (i == 2 && strcmp(path, "/usr.sbin") != 0)
-		abort();
-	if (i == 3 && strcmp(path, "/usr.bin/vi") != 0)
-		abort();
-	if (i == 4 && strcmp(path, "/usr.bin") != 0)
-		abort();
-	if (i == 5 && strcmp(path, "/") != 0)
-		abort();
-	if (i > 5)
-		abort();
-	i++;
-	return NULL;
-}
-
-static int
-pathset_iter_order(void)
-{
-	const struct got_error *err = NULL;
-	struct got_pathset *set;
-
-	set = got_pathset_alloc();
-	if (set == NULL) {
-		err = got_error_from_errno();
-		goto done;
-	}
-	if (got_pathset_num_elements(set) != 0) {
-		err = got_error(GOT_ERR_BAD_PATH);
-		goto done;
-	}
-
-
-	err = got_pathset_add(set, "/usr.bin", (void *)data1);
-	if (err)
-		goto done;
-	err = got_pathset_add(set, "/usr.sbin/unbound", (void *)data1);
-	if (err)
-		goto done;
-	err = got_pathset_add(set, "/usr.bin/vi", (void *)data1);
-	if (err)
-		goto done;
-	err = got_pathset_add(set, "/", (void *)data1);
-	if (err)
-		goto done;
-	err = got_pathset_add(set, "/usr.sbin/zic", (void *)data1);
-	if (err)
-		goto done;
-	err = got_pathset_add(set, "/usr.sbin", (void *)data1);
-	if (err)
-		goto done;
-
-	test_printf("normal order:\n");
-	got_pathset_for_each_safe(set, pathset_iter_order_cb, NULL);
-	test_printf("reverse order:\n");
-	got_pathset_for_each_reverse_safe(set, pathset_iter_reverse_order_cb,
-	    NULL);
-done:
-	got_pathset_free(set);
-	return (err == NULL);
-}
-
-#define RUN_TEST(expr, name) \
-	{ test_ok = (expr);  \
-	printf("test_%s %s\n", (name), test_ok ? "ok" : "failed"); \
-	failure = (failure || !test_ok); }
-
-void
-usage(void)
-{
-	fprintf(stderr, "usage: pathset_test [-v]\n");
-}
-
-int
-main(int argc, char *argv[])
-{
-	int test_ok = 0, failure = 0;
-	int ch;
-
-#ifndef PROFILE
-	if (pledge("stdio", NULL) == -1)
-		err(1, "pledge");
-#endif
-
-	while ((ch = getopt(argc, argv, "v")) != -1) {
-		switch (ch) {
-		case 'v':
-			verbose = 1;
-			break;
-		default:
-			usage();
-			return 1;
-		}
-	}
-	argc -= optind;
-	argv += optind;
-
-	RUN_TEST(pathset_add_remove_iter(), "pathset_add_remove_iter");
-	RUN_TEST(pathset_iter_order(), "pathset_iter_order");
-
-	return failure ? 1 : 0;
-}
blob - 7eba96e9e3b3cf49fc84691bde7194b8a506ac39
blob + 5da0a61342d57368a2ad4a97cf0cfcacf13e6028
--- regress/repository/Makefile
+++ regress/repository/Makefile
@@ -4,7 +4,7 @@ PROG = repository_test
 SRCS = path.c repository.c error.c reference.c object.c object_cache.c \
 	object_idset.c object_parse.c opentemp.c sha1.c diff.c diffreg.c \
 	pack.c privsep.c delta.c fileindex.c worktree.c inflate.c \
-	pathset.c repository_test.c
+	repository_test.c
 
 CPPFLAGS = -I${.CURDIR}/../../include -I${.CURDIR}/../../lib \
 	-DGOT_LIBEXECDIR=${GOT_LIBEXECDIR}
blob - c7e2786beead1950de2cd83f434b064dc3366aa0
blob + f31fa65e08a2297db4491f0a7c4c42af2674c65e
--- regress/worktree/Makefile
+++ regress/worktree/Makefile
@@ -2,8 +2,8 @@
 
 PROG = worktree_test
 SRCS = worktree.c repository.c object.c object_cache.c object_idset.c \
-	object_parse.c opentemp.c path.c pathset.c error.c reference.c sha1.c \
-	pack.c privsep.c delta.c inflate.c fileindex.c worktree_test.c
+	object_parse.c opentemp.c path.c error.c reference.c sha1.c pack.c \
+	privsep.c delta.c inflate.c fileindex.c worktree_test.c
 
 CPPFLAGS = -I${.CURDIR}/../../include -I${.CURDIR}/../../lib \
 	-DGOT_LIBEXECDIR=${GOT_LIBEXECDIR}
blob - fb527723e3ad29a2d4e54676089954a3376cfaa1
blob + 72f8d6d7e4c381ebb68b1e052998d0843ff100aa
--- tog/Makefile
+++ tog/Makefile
@@ -3,8 +3,8 @@
 PROG=		tog
 SRCS=		tog.c blame.c commit_graph.c delta.c diff.c diffoffset.c \
 		diffreg.c error.c fileindex.c object.c object_cache.c \
-		object_idset.c object_parse.c opentemp.c path.c pathset.c \
-		pack.c privsep.c reference.c repository.c sha1.c worktree.c \
+		object_idset.c object_parse.c opentemp.c path.c pack.c \
+		privsep.c reference.c repository.c sha1.c worktree.c \
 		utf8.c inflate.c
 
 CPPFLAGS = -I${.CURDIR}/../include -I${.CURDIR}/../lib \