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