diff options
Diffstat (limited to 'usr.sbin/mtree/excludes.c')
-rw-r--r-- | usr.sbin/mtree/excludes.c | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/usr.sbin/mtree/excludes.c b/usr.sbin/mtree/excludes.c deleted file mode 100644 index 21a49b0..0000000 --- a/usr.sbin/mtree/excludes.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2000 Massachusetts Institute of Technology - * - * Permission to use, copy, modify, and distribute this software and - * its documentation for any purpose and without fee is hereby - * granted, provided that both the above copyright notice and this - * permission notice appear in all copies, that both the above - * copyright notice and this permission notice appear in all - * supporting documentation, and that the name of M.I.T. not be used - * in advertising or publicity pertaining to distribution of the - * software without specific, written prior permission. M.I.T. makes - * no representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied - * warranty. - * - * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS - * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT - * SHALL M.I.T. 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. - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include <sys/types.h> -#include <sys/time.h> /* XXX for mtree.h */ -#include <sys/queue.h> - -#include <err.h> -#include <fnmatch.h> -#include <fts.h> -#include <stdio.h> -#include <stdlib.h> - -#include "mtree.h" /* XXX for extern.h */ -#include "extern.h" - -/* - * We're assuming that there won't be a whole lot of excludes, - * so it's OK to use a stupid algorithm. - */ -struct exclude { - LIST_ENTRY(exclude) link; - const char *glob; - int pathname; -}; -static LIST_HEAD(, exclude) excludes; - -void -init_excludes(void) -{ - LIST_INIT(&excludes); -} - -void -read_excludes_file(const char *name) -{ - FILE *fp; - char *line, *str; - struct exclude *e; - size_t len; - - fp = fopen(name, "r"); - if (fp == 0) - err(1, "%s", name); - - while ((line = fgetln(fp, &len)) != 0) { - if (line[len - 1] == '\n') - len--; - if (len == 0) - continue; - - str = malloc(len + 1); - e = malloc(sizeof *e); - if (str == 0 || e == 0) - errx(1, "memory allocation error"); - e->glob = str; - memcpy(str, line, len); - str[len] = '\0'; - if (strchr(str, '/')) - e->pathname = 1; - else - e->pathname = 0; - LIST_INSERT_HEAD(&excludes, e, link); - } - fclose(fp); -} - -int -check_excludes(const char *fname, const char *path) -{ - struct exclude *e; - - /* fnmatch(3) has a funny return value convention... */ -#define MATCH(g, n) (fnmatch((g), (n), FNM_PATHNAME) == 0) - - LIST_FOREACH(e, &excludes, link) { - if ((e->pathname && MATCH(e->glob, path)) - || MATCH(e->glob, fname)) - return 1; - } - return 0; -} |