/* Copyright (C) 1991, 2000 artofcode LLC. All rights reserved. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA, 02111-1307. */ /*$Id: stat_.h,v 1.6.2.2.2.1 2003/01/17 00:49:05 giles Exp $ */ /* Generic substitute for Unix sys/stat.h */ #ifndef stat__INCLUDED # define stat__INCLUDED /* We must include std.h before any file that includes sys/types.h. */ #include "std.h" /* Metrowerks Standard Library doesn't use subdirs */ #ifdef __MWERKS__ #include #else #include #endif /* * Many environments, including the MS-DOS compilers, don't define * the st_blocks member of a stat structure. */ #if defined(__SVR3) || defined(__EMX__) || defined(__DVX__) || defined(OSK) || defined(__MSDOS__) || defined(__QNX__) || defined(VMS) || defined(__WIN32__) || defined(__IBMC__) || defined(__BEOS__) || defined(Plan9) || defined(__WATCOMC__) # define stat_blocks(psbuf) (((psbuf)->st_size + 1023) >> 10) #else # define stat_blocks(psbuf) ((psbuf)->st_blocks) #endif /* * Microsoft C uses _stat instead of stat, * for both the function name and the structure name. */ #ifdef _MSC_VER # define stat _stat #endif /* * Some (System V?) systems test for directories in a slightly different way. */ #if defined(OSK) || !defined(S_ISDIR) # ifdef S_IFDIR # define stat_is_dir(stbuf) ((stbuf).st_mode & S_IFDIR) # else # ifdef _S_IFDIR # define stat_is_dir(stbuf) ((stbuf).st_mode & _S_IFDIR) # endif # endif #else # define stat_is_dir(stbuf) S_ISDIR((stbuf).st_mode) #endif /* * Some systems have S_IFMT and S_IFCHR but not S_ISCHR. */ #ifndef S_ISCHR # ifndef S_IFMT # ifdef _S_IFMT # define S_IFMT _S_IFMT # define S_IFCHR _S_IFCHR # else # ifdef __S_IFMT # define S_IFMT __S_IFMT # define S_IFCHR __S_IFCHR # endif # endif # endif # define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR) #endif /* * Microsoft C doesn't define S_IRUSR or S_IWUSR. */ #ifndef S_IRUSR # ifndef S_IREAD # define S_IRUSR _S_IREAD # else # define S_IRUSR S_IREAD # endif #endif #ifndef S_IWUSR # ifndef S_IWRITE # define S_IWUSR _S_IWRITE # else # define S_IWUSR S_IWRITE # endif #endif #endif /* stat__INCLUDED */