1#ifndef _system_filesys_h 2#define _system_filesys_h 3/* 4 Unix SMB/CIFS implementation. 5 6 filesystem system include wrappers 7 8 Copyright (C) Andrew Tridgell 2004 9 10 ** NOTE! The following LGPL license applies to the replace 11 ** library. This does NOT imply that all of Samba is released 12 ** under the LGPL 13 14 This library is free software; you can redistribute it and/or 15 modify it under the terms of the GNU Lesser General Public 16 License as published by the Free Software Foundation; either 17 version 3 of the License, or (at your option) any later version. 18 19 This library is distributed in the hope that it will be useful, 20 but WITHOUT ANY WARRANTY; without even the implied warranty of 21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 22 Lesser General Public License for more details. 23 24 You should have received a copy of the GNU Lesser General Public 25 License along with this library; if not, see <http://www.gnu.org/licenses/>. 26 27*/ 28 29#include <unistd.h> 30#include <sys/stat.h> 31 32#ifdef HAVE_SYS_PARAM_H 33#include <sys/param.h> 34#endif 35 36#ifdef HAVE_SYS_MOUNT_H 37#include <sys/mount.h> 38#endif 39 40#ifdef HAVE_MNTENT_H 41#include <mntent.h> 42#endif 43 44#ifdef HAVE_SYS_VFS_H 45#include <sys/vfs.h> 46#endif 47 48#ifdef HAVE_SYS_ACL_H 49#include <sys/acl.h> 50#endif 51 52#ifdef HAVE_ACL_LIBACL_H 53#include <acl/libacl.h> 54#endif 55 56#ifdef HAVE_SYS_FS_S5PARAM_H 57#include <sys/fs/s5param.h> 58#endif 59 60#if defined (HAVE_SYS_FILSYS_H) && !defined (_CRAY) 61#include <sys/filsys.h> 62#endif 63 64#ifdef HAVE_SYS_STATFS_H 65# include <sys/statfs.h> 66#endif 67 68#ifdef HAVE_DUSTAT_H 69#include <sys/dustat.h> 70#endif 71 72#ifdef HAVE_SYS_STATVFS_H 73#include <sys/statvfs.h> 74#endif 75 76#ifdef HAVE_SYS_FILIO_H 77#include <sys/filio.h> 78#endif 79 80#include <sys/file.h> 81 82#ifdef HAVE_FCNTL_H 83#include <fcntl.h> 84#else 85#ifdef HAVE_SYS_FCNTL_H 86#include <sys/fcntl.h> 87#endif 88#endif 89 90#ifdef HAVE_SYS_MODE_H 91/* apparently AIX needs this for S_ISLNK */ 92#ifndef S_ISLNK 93#include <sys/mode.h> 94#endif 95#endif 96 97#ifdef HAVE_SYS_IOCTL_H 98#include <sys/ioctl.h> 99#endif 100 101/* 102 * Veritas File System. Often in addition to native. 103 * Quotas different. 104 */ 105#if defined(HAVE_SYS_FS_VX_QUOTA_H) 106#define VXFS_QUOTA 107#endif 108 109#if HAVE_SYS_ATTRIBUTES_H 110#include <sys/attributes.h> 111#endif 112 113/* mutually exclusive (SuSE 8.2) */ 114#if HAVE_ATTR_XATTR_H 115#include <attr/xattr.h> 116#elif HAVE_SYS_XATTR_H 117#include <sys/xattr.h> 118#endif 119 120 121#ifdef HAVE_SYS_RESOURCE_H 122#include <sys/resource.h> 123#endif 124 125/* Some POSIX definitions for those without */ 126 127#ifndef S_IFDIR 128#define S_IFDIR 0x4000 129#endif 130#ifndef S_ISDIR 131#define S_ISDIR(mode) ((mode & 0xF000) == S_IFDIR) 132#endif 133#ifndef S_IRWXU 134#define S_IRWXU 00700 /* read, write, execute: owner */ 135#endif 136#ifndef S_IRUSR 137#define S_IRUSR 00400 /* read permission: owner */ 138#endif 139#ifndef S_IWUSR 140#define S_IWUSR 00200 /* write permission: owner */ 141#endif 142#ifndef S_IXUSR 143#define S_IXUSR 00100 /* execute permission: owner */ 144#endif 145#ifndef S_IRWXG 146#define S_IRWXG 00070 /* read, write, execute: group */ 147#endif 148#ifndef S_IRGRP 149#define S_IRGRP 00040 /* read permission: group */ 150#endif 151#ifndef S_IWGRP 152#define S_IWGRP 00020 /* write permission: group */ 153#endif 154#ifndef S_IXGRP 155#define S_IXGRP 00010 /* execute permission: group */ 156#endif 157#ifndef S_IRWXO 158#define S_IRWXO 00007 /* read, write, execute: other */ 159#endif 160#ifndef S_IROTH 161#define S_IROTH 00004 /* read permission: other */ 162#endif 163#ifndef S_IWOTH 164#define S_IWOTH 00002 /* write permission: other */ 165#endif 166#ifndef S_IXOTH 167#define S_IXOTH 00001 /* execute permission: other */ 168#endif 169 170#ifndef O_ACCMODE 171#define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR) 172#endif 173 174#ifndef MAXPATHLEN 175#define MAXPATHLEN 256 176#endif 177 178#ifndef SEEK_SET 179#define SEEK_SET 0 180#endif 181 182#ifdef _WIN32 183#define mkdir(d,m) _mkdir(d) 184#endif 185 186#endif 187