1*25f3fb54SBrooks Davis /* $NetBSD: extern.h,v 1.39 2014/04/24 17:22:41 christos Exp $ */ 2c6ec7d31SBrooks Davis 3c6ec7d31SBrooks Davis /*- 4c6ec7d31SBrooks Davis * Copyright (c) 1991, 1993 5c6ec7d31SBrooks Davis * The Regents of the University of California. All rights reserved. 6c6ec7d31SBrooks Davis * 7c6ec7d31SBrooks Davis * Redistribution and use in source and binary forms, with or without 8c6ec7d31SBrooks Davis * modification, are permitted provided that the following conditions 9c6ec7d31SBrooks Davis * are met: 10c6ec7d31SBrooks Davis * 1. Redistributions of source code must retain the above copyright 11c6ec7d31SBrooks Davis * notice, this list of conditions and the following disclaimer. 12c6ec7d31SBrooks Davis * 2. Redistributions in binary form must reproduce the above copyright 13c6ec7d31SBrooks Davis * notice, this list of conditions and the following disclaimer in the 14c6ec7d31SBrooks Davis * documentation and/or other materials provided with the distribution. 15c6ec7d31SBrooks Davis * 3. Neither the name of the University nor the names of its contributors 16c6ec7d31SBrooks Davis * may be used to endorse or promote products derived from this software 17c6ec7d31SBrooks Davis * without specific prior written permission. 18c6ec7d31SBrooks Davis * 19c6ec7d31SBrooks Davis * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 20c6ec7d31SBrooks Davis * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21c6ec7d31SBrooks Davis * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22c6ec7d31SBrooks Davis * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 23c6ec7d31SBrooks Davis * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24c6ec7d31SBrooks Davis * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25c6ec7d31SBrooks Davis * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26c6ec7d31SBrooks Davis * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27c6ec7d31SBrooks Davis * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28c6ec7d31SBrooks Davis * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29c6ec7d31SBrooks Davis * SUCH DAMAGE. 30c6ec7d31SBrooks Davis * 31c6ec7d31SBrooks Davis * @(#)extern.h 8.1 (Berkeley) 6/6/93 32c6ec7d31SBrooks Davis */ 33c6ec7d31SBrooks Davis 34c6ec7d31SBrooks Davis #include "mtree.h" 35c6ec7d31SBrooks Davis 36c6ec7d31SBrooks Davis #if HAVE_NBTOOL_CONFIG_H 37c6ec7d31SBrooks Davis #include "nbtool_config.h" 38c6ec7d31SBrooks Davis #else 39c6ec7d31SBrooks Davis #define HAVE_STRUCT_STAT_ST_FLAGS 1 40c6ec7d31SBrooks Davis #endif 41c6ec7d31SBrooks Davis 42c6ec7d31SBrooks Davis #include <err.h> 43c6ec7d31SBrooks Davis #include <fts.h> 44c6ec7d31SBrooks Davis #include <util.h> 45edd6bc76SEd Schouten #include <stdbool.h> 46c6ec7d31SBrooks Davis 47c6ec7d31SBrooks Davis #if HAVE_NETDB_H 48c6ec7d31SBrooks Davis /* For MAXHOSTNAMELEN on some platforms. */ 49c6ec7d31SBrooks Davis #include <netdb.h> 50c6ec7d31SBrooks Davis #endif 51c6ec7d31SBrooks Davis 52c6ec7d31SBrooks Davis #ifndef MAXHOSTNAMELEN 53c6ec7d31SBrooks Davis #define MAXHOSTNAMELEN 256 54c6ec7d31SBrooks Davis #endif 55c6ec7d31SBrooks Davis 56c6ec7d31SBrooks Davis enum flavor { 57c6ec7d31SBrooks Davis F_MTREE, 58c6ec7d31SBrooks Davis F_FREEBSD9, 59c6ec7d31SBrooks Davis F_NETBSD6 60c6ec7d31SBrooks Davis }; 61c6ec7d31SBrooks Davis 62c6ec7d31SBrooks Davis void addtag(slist_t *, char *); 63c6ec7d31SBrooks Davis int check_excludes(const char *, const char *); 64c6ec7d31SBrooks Davis int compare(NODE *, FTSENT *); 65c6ec7d31SBrooks Davis int crc(int, u_int32_t *, u_int32_t *); 66*25f3fb54SBrooks Davis void cwalk(FILE *); 67*25f3fb54SBrooks Davis void dump_nodes(FILE *, const char *, NODE *, int); 68c6ec7d31SBrooks Davis void init_excludes(void); 69c6ec7d31SBrooks Davis int matchtags(NODE *); 70c6ec7d31SBrooks Davis __dead __printflike(1,2) void mtree_err(const char *, ...); 71c6ec7d31SBrooks Davis const char *nodetype(u_int); 72c6ec7d31SBrooks Davis u_int parsekey(const char *, int *); 73c6ec7d31SBrooks Davis void parsetags(slist_t *, char *); 74c6ec7d31SBrooks Davis u_int parsetype(const char *); 75c6ec7d31SBrooks Davis void read_excludes_file(const char *); 76c6ec7d31SBrooks Davis const char *rlink(const char *); 77c6ec7d31SBrooks Davis int verify(FILE *); 78edd6bc76SEd Schouten void load_only(const char *fname); 79edd6bc76SEd Schouten bool find_only(const char *path); 80c6ec7d31SBrooks Davis 81c6ec7d31SBrooks Davis extern int bflag, dflag, eflag, iflag, jflag, lflag, mflag, 82c6ec7d31SBrooks Davis nflag, qflag, rflag, sflag, tflag, uflag; 83c6ec7d31SBrooks Davis extern int mtree_Mflag, mtree_Sflag, mtree_Wflag; 84c6ec7d31SBrooks Davis extern size_t mtree_lineno; 85c6ec7d31SBrooks Davis extern enum flavor flavor; 86c6ec7d31SBrooks Davis extern u_int32_t crc_total; 87c6ec7d31SBrooks Davis extern int ftsoptions, keys; 88c6ec7d31SBrooks Davis extern char fullpath[]; 89c6ec7d31SBrooks Davis extern slist_t includetags, excludetags; 90c6ec7d31SBrooks Davis 91