1170754Sdelphij/* Return a string describing the type of a file. 2170754Sdelphij 3170754Sdelphij Copyright (C) 1993, 1994, 2001, 2002, 2004 Free Software Foundation, Inc. 4170754Sdelphij 5170754Sdelphij This program is free software; you can redistribute it and/or modify 6170754Sdelphij it under the terms of the GNU General Public License as published by 7170754Sdelphij the Free Software Foundation; either version 2, or (at your option) 8170754Sdelphij any later version. 9170754Sdelphij 10170754Sdelphij This program is distributed in the hope that it will be useful, 11170754Sdelphij but WITHOUT ANY WARRANTY; without even the implied warranty of 12170754Sdelphij MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13170754Sdelphij GNU General Public License for more details. 14170754Sdelphij 15170754Sdelphij You should have received a copy of the GNU General Public License 16170754Sdelphij along with this program; if not, write to the Free Software Foundation, 17170754Sdelphij Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 18170754Sdelphij 19170754Sdelphij/* Written by Paul Eggert and Jim Meyering. */ 20170754Sdelphij 21170754Sdelphij#ifndef FILE_TYPE_H 22170754Sdelphij# define FILE_TYPE_H 1 23170754Sdelphij 24170754Sdelphij# if ! defined S_ISREG && ! defined S_IFREG 25170754Sdelphijyou must include <sys/stat.h> before including this file 26170754Sdelphij# endif 27170754Sdelphij 28170754Sdelphijchar const *file_type (struct stat const *); 29170754Sdelphij 30170754Sdelphij# ifndef S_IFMT 31170754Sdelphij# define S_IFMT 0170000 32170754Sdelphij# endif 33170754Sdelphij 34170754Sdelphij# if STAT_MACROS_BROKEN 35170754Sdelphij# undef S_ISBLK 36170754Sdelphij# undef S_ISCHR 37170754Sdelphij# undef S_ISDIR 38170754Sdelphij# undef S_ISDOOR 39170754Sdelphij# undef S_ISFIFO 40170754Sdelphij# undef S_ISLNK 41170754Sdelphij# undef S_ISNAM 42170754Sdelphij# undef S_ISMPB 43170754Sdelphij# undef S_ISMPC 44170754Sdelphij# undef S_ISNWK 45170754Sdelphij# undef S_ISREG 46170754Sdelphij# undef S_ISSOCK 47170754Sdelphij# endif 48170754Sdelphij 49170754Sdelphij 50170754Sdelphij# ifndef S_ISBLK 51170754Sdelphij# ifdef S_IFBLK 52170754Sdelphij# define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) 53170754Sdelphij# else 54170754Sdelphij# define S_ISBLK(m) 0 55170754Sdelphij# endif 56170754Sdelphij# endif 57170754Sdelphij 58170754Sdelphij# ifndef S_ISCHR 59170754Sdelphij# ifdef S_IFCHR 60170754Sdelphij# define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) 61170754Sdelphij# else 62170754Sdelphij# define S_ISCHR(m) 0 63170754Sdelphij# endif 64170754Sdelphij# endif 65170754Sdelphij 66170754Sdelphij# ifndef S_ISDIR 67170754Sdelphij# ifdef S_IFDIR 68170754Sdelphij# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) 69170754Sdelphij# else 70170754Sdelphij# define S_ISDIR(m) 0 71170754Sdelphij# endif 72170754Sdelphij# endif 73170754Sdelphij 74170754Sdelphij# ifndef S_ISDOOR /* Solaris 2.5 and up */ 75170754Sdelphij# ifdef S_IFDOOR 76170754Sdelphij# define S_ISDOOR(m) (((m) & S_IFMT) == S_IFDOOR) 77170754Sdelphij# else 78170754Sdelphij# define S_ISDOOR(m) 0 79170754Sdelphij# endif 80170754Sdelphij# endif 81170754Sdelphij 82170754Sdelphij# ifndef S_ISFIFO 83170754Sdelphij# ifdef S_IFIFO 84170754Sdelphij# define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) 85170754Sdelphij# else 86170754Sdelphij# define S_ISFIFO(m) 0 87170754Sdelphij# endif 88170754Sdelphij# endif 89170754Sdelphij 90170754Sdelphij# ifndef S_ISLNK 91170754Sdelphij# ifdef S_IFLNK 92170754Sdelphij# define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) 93170754Sdelphij# else 94170754Sdelphij# define S_ISLNK(m) 0 95170754Sdelphij# endif 96170754Sdelphij# endif 97170754Sdelphij 98170754Sdelphij# ifndef S_ISMPB /* V7 */ 99170754Sdelphij# ifdef S_IFMPB 100170754Sdelphij# define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB) 101170754Sdelphij# define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC) 102170754Sdelphij# else 103170754Sdelphij# define S_ISMPB(m) 0 104170754Sdelphij# define S_ISMPC(m) 0 105170754Sdelphij# endif 106170754Sdelphij# endif 107170754Sdelphij 108170754Sdelphij# ifndef S_ISNAM /* Xenix */ 109170754Sdelphij# ifdef S_IFNAM 110170754Sdelphij# define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM) 111170754Sdelphij# else 112170754Sdelphij# define S_ISNAM(m) 0 113170754Sdelphij# endif 114170754Sdelphij# endif 115170754Sdelphij 116170754Sdelphij# ifndef S_ISNWK /* HP/UX */ 117170754Sdelphij# ifdef S_IFNWK 118170754Sdelphij# define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK) 119170754Sdelphij# else 120170754Sdelphij# define S_ISNWK(m) 0 121170754Sdelphij# endif 122170754Sdelphij# endif 123170754Sdelphij 124170754Sdelphij# ifndef S_ISREG 125170754Sdelphij# ifdef S_IFREG 126170754Sdelphij# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) 127170754Sdelphij# else 128170754Sdelphij# define S_ISREG(m) 0 129170754Sdelphij# endif 130170754Sdelphij# endif 131170754Sdelphij 132170754Sdelphij# ifndef S_ISSOCK 133170754Sdelphij# ifdef S_IFSOCK 134170754Sdelphij# define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) 135170754Sdelphij# else 136170754Sdelphij# define S_ISSOCK(m) 0 137170754Sdelphij# endif 138170754Sdelphij# endif 139170754Sdelphij 140170754Sdelphij 141170754Sdelphij# ifndef S_TYPEISMQ 142170754Sdelphij# define S_TYPEISMQ(p) 0 143170754Sdelphij# endif 144170754Sdelphij 145170754Sdelphij# ifndef S_TYPEISTMO 146170754Sdelphij# define S_TYPEISTMO(p) 0 147170754Sdelphij# endif 148170754Sdelphij 149170754Sdelphij 150170754Sdelphij# ifndef S_TYPEISSEM 151170754Sdelphij# ifdef S_INSEM 152170754Sdelphij# define S_TYPEISSEM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSEM) 153170754Sdelphij# else 154170754Sdelphij# define S_TYPEISSEM(p) 0 155170754Sdelphij# endif 156170754Sdelphij# endif 157170754Sdelphij 158170754Sdelphij# ifndef S_TYPEISSHM 159170754Sdelphij# ifdef S_INSHD 160170754Sdelphij# define S_TYPEISSHM(p) (S_ISNAM ((p)->st_mode) && (p)->st_rdev == S_INSHD) 161170754Sdelphij# else 162170754Sdelphij# define S_TYPEISSHM(p) 0 163170754Sdelphij# endif 164170754Sdelphij# endif 165170754Sdelphij 166170754Sdelphij#endif /* FILE_TYPE_H */ 167