1d1d32c3dSAlex Richardson /*- 2d1d32c3dSAlex Richardson * SPDX-License-Identifier: BSD-2-Clause 3d1d32c3dSAlex Richardson * 4d1d32c3dSAlex Richardson * Copyright 2018-2020 Alex Richardson <arichardson@FreeBSD.org> 5d1d32c3dSAlex Richardson * 6d1d32c3dSAlex Richardson * This software was developed by SRI International and the University of 7d1d32c3dSAlex Richardson * Cambridge Computer Laboratory (Department of Computer Science and 8d1d32c3dSAlex Richardson * Technology) under DARPA contract HR0011-18-C-0016 ("ECATS"), as part of the 9d1d32c3dSAlex Richardson * DARPA SSITH research programme. 10d1d32c3dSAlex Richardson * 11d1d32c3dSAlex Richardson * This software was developed by SRI International and the University of 12d1d32c3dSAlex Richardson * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237) 13d1d32c3dSAlex Richardson * ("CTSRD"), as part of the DARPA CRASH research programme. 14d1d32c3dSAlex Richardson * 15d1d32c3dSAlex Richardson * Redistribution and use in source and binary forms, with or without 16d1d32c3dSAlex Richardson * modification, are permitted provided that the following conditions 17d1d32c3dSAlex Richardson * are met: 18d1d32c3dSAlex Richardson * 1. Redistributions of source code must retain the above copyright 19d1d32c3dSAlex Richardson * notice, this list of conditions and the following disclaimer. 20d1d32c3dSAlex Richardson * 2. Redistributions in binary form must reproduce the above copyright 21d1d32c3dSAlex Richardson * notice, this list of conditions and the following disclaimer in the 22d1d32c3dSAlex Richardson * documentation and/or other materials provided with the distribution. 23d1d32c3dSAlex Richardson * 24d1d32c3dSAlex Richardson * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 25d1d32c3dSAlex Richardson * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26d1d32c3dSAlex Richardson * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27d1d32c3dSAlex Richardson * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 28d1d32c3dSAlex Richardson * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29d1d32c3dSAlex Richardson * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 30d1d32c3dSAlex Richardson * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31d1d32c3dSAlex Richardson * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32d1d32c3dSAlex Richardson * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 33d1d32c3dSAlex Richardson * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 34d1d32c3dSAlex Richardson * SUCH DAMAGE. 35d1d32c3dSAlex Richardson */ 36d1d32c3dSAlex Richardson #pragma once 37d1d32c3dSAlex Richardson /* 38d1d32c3dSAlex Richardson * glibc shipped with Ubuntu 16.04 doesn't include a definition of 39d1d32c3dSAlex Richardson * struct timespec when sys/stat.h is included. 40d1d32c3dSAlex Richardson */ 41d1d32c3dSAlex Richardson #define __need_timespec 42d1d32c3dSAlex Richardson #include <time.h> 43d1d32c3dSAlex Richardson 44d1d32c3dSAlex Richardson /* <bits/stat.h> contains a member named __unused. */ 45d1d32c3dSAlex Richardson #include "../__unused_workaround_start.h" 46d1d32c3dSAlex Richardson #include_next <sys/stat.h> 47d1d32c3dSAlex Richardson #include "../__unused_workaround_end.h" 48d1d32c3dSAlex Richardson 49d1d32c3dSAlex Richardson #define st_atimensec st_atim.tv_nsec 50d1d32c3dSAlex Richardson #define st_mtimensec st_mtim.tv_nsec 51d1d32c3dSAlex Richardson #define st_ctimensec st_ctim.tv_nsec 52d1d32c3dSAlex Richardson 53d1d32c3dSAlex Richardson #define st_atimespec st_atim 54d1d32c3dSAlex Richardson #define st_mtimespec st_mtim 55d1d32c3dSAlex Richardson #define st_ctimespec st_ctim 56d1d32c3dSAlex Richardson 57d1d32c3dSAlex Richardson #ifndef S_ISTXT 58d1d32c3dSAlex Richardson #define S_ISTXT S_ISVTX 59d1d32c3dSAlex Richardson #endif 6079e02149SAlex Richardson 6118cf1e50SWarner Losh #ifndef DEFFILEMODE 6218cf1e50SWarner Losh #define DEFFILEMODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH) 6318cf1e50SWarner Losh #endif 6418cf1e50SWarner Losh 6518cf1e50SWarner Losh #ifndef ALLPERMS 6618cf1e50SWarner Losh #define ALLPERMS (S_ISUID | S_ISGID | S_ISTXT | S_IRWXU | S_IRWXG | S_IRWXO) 6718cf1e50SWarner Losh #endif 6818cf1e50SWarner Losh 69*52c8e24cSJessica Clarke #define UF_SETTABLE 0x0000ffff 70*52c8e24cSJessica Clarke #define UF_NODUMP 0x00000001 71*52c8e24cSJessica Clarke #define UF_IMMUTABLE 0x00000002 72*52c8e24cSJessica Clarke #define UF_APPEND 0x00000004 73*52c8e24cSJessica Clarke #define UF_OPAQUE 0x00000008 74*52c8e24cSJessica Clarke #define UF_NOUNLINK 0x00000010 75*52c8e24cSJessica Clarke #define UF_SYSTEM 0x00000080 76*52c8e24cSJessica Clarke #define UF_SPARSE 0x00000100 77*52c8e24cSJessica Clarke #define UF_OFFLINE 0x00000200 78*52c8e24cSJessica Clarke #define UF_REPARSE 0x00000400 79*52c8e24cSJessica Clarke #define UF_ARCHIVE 0x00000800 80*52c8e24cSJessica Clarke #define UF_READONLY 0x00001000 81*52c8e24cSJessica Clarke #define UF_HIDDEN 0x00008000 82*52c8e24cSJessica Clarke #define SF_SETTABLE 0xffff0000 83*52c8e24cSJessica Clarke #define SF_ARCHIVED 0x00010000 84*52c8e24cSJessica Clarke #define SF_IMMUTABLE 0x00020000 85*52c8e24cSJessica Clarke #define SF_APPEND 0x00040000 86*52c8e24cSJessica Clarke #define SF_NOUNLINK 0x00100000 87*52c8e24cSJessica Clarke #define SF_SNAPSHOT 0x00200000 88*52c8e24cSJessica Clarke 8979e02149SAlex Richardson /* This include is needed for OpenZFS bootstrap */ 9079e02149SAlex Richardson #include <sys/mount.h> 91