/* system-dependent definitions for textutils programs. Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc. 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, 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, USA. */ /* * $DragonFly: src/gnu/usr.bin/sort/system.h,v 1.2 2003/11/09 11:41:16 eirikn Exp $ */ /* Include sys/types.h before this file. */ #include #ifdef STAT_MACROS_BROKEN #undef S_ISBLK #undef S_ISCHR #undef S_ISDIR #undef S_ISFIFO #undef S_ISLNK #undef S_ISMPB #undef S_ISMPC #undef S_ISNWK #undef S_ISREG #undef S_ISSOCK #endif /* STAT_MACROS_BROKEN. */ #if !defined(S_ISBLK) && defined(S_IFBLK) #define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK) #endif #if !defined(S_ISCHR) && defined(S_IFCHR) #define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR) #endif #if !defined(S_ISDIR) && defined(S_IFDIR) #define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR) #endif #if !defined(S_ISREG) && defined(S_IFREG) #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG) #endif #if !defined(S_ISFIFO) && defined(S_IFIFO) #define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO) #endif #if !defined(S_ISLNK) && defined(S_IFLNK) #define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK) #endif #if !defined(S_ISSOCK) && defined(S_IFSOCK) #define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK) #endif #if !defined(S_ISMPB) && defined(S_IFMPB) /* V7 */ #define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB) #define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC) #endif #if !defined(S_ISNWK) && defined(S_IFNWK) /* HP/UX */ #define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK) #endif #if !defined(HAVE_MKFIFO) #define mkfifo(path, mode) (mknod ((path), (mode) | S_IFIFO, 0)) #endif #ifdef HAVE_UNISTD_H #include #endif #ifndef _POSIX_VERSION off_t lseek (); #endif #ifndef STDIN_FILENO #define STDIN_FILENO 0 #endif #ifndef STDOUT_FILENO #define STDOUT_FILENO 1 #endif #ifndef STDERR_FILENO #define STDERR_FILENO 2 #endif /* Don't use bcopy! Use memmove if source and destination may overlap, memcpy otherwise. */ #ifdef HAVE_STRING_H # if !STDC_HEADERS && HAVE_MEMORY_H # include # endif # include #else # include char *memchr (); #endif #include #ifndef errno extern int errno; #endif #ifdef STDC_HEADERS #include #else char *getenv (); #endif #ifndef EXIT_FAILURE # define EXIT_FAILURE 1 #endif #ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 #endif #ifdef HAVE_FCNTL_H #include #else #include #endif #if !defined(SEEK_SET) #define SEEK_SET 0 #define SEEK_CUR 1 #define SEEK_END 2 #endif #ifndef _POSIX_SOURCE #include #endif /* Get or fake the disk device blocksize. Usually defined by sys/param.h (if at all). */ #if !defined(DEV_BSIZE) && defined(BSIZE) #define DEV_BSIZE BSIZE #endif #if !defined(DEV_BSIZE) && defined(BBSIZE) /* SGI */ #define DEV_BSIZE BBSIZE #endif #ifndef DEV_BSIZE #define DEV_BSIZE 4096 #endif /* Extract or fake data from a `struct stat'. ST_BLKSIZE: Optimal I/O blocksize for the file, in bytes. */ #ifndef HAVE_ST_BLKSIZE # define ST_BLKSIZE(statbuf) DEV_BSIZE #else /* HAVE_ST_BLKSIZE */ /* Some systems, like Sequents, return st_blksize of 0 on pipes. */ # define ST_BLKSIZE(statbuf) ((statbuf).st_blksize > 0 \ ? (statbuf).st_blksize : DEV_BSIZE) #endif /* HAVE_ST_BLKSIZE */ #ifndef S_ISLNK #define lstat stat #endif #ifndef RETSIGTYPE #define RETSIGTYPE void #endif #include #if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII)) #define ISASCII(c) 1 #else #define ISASCII(c) isascii((unsigned char)c) #endif #ifdef isblank #define ISBLANK(c) (ISASCII (c) && isblank ((unsigned char)c)) #else #define ISBLANK(c) ((c) == ' ' || (c) == '\t') #endif #ifdef isgraph #define ISGRAPH(c) (ISASCII (c) && isgraph ((unsigned char)c)) #else #define ISGRAPH(c) (ISASCII (c) && isprint ((unsigned char)c) && !isspace ((unsigned char)c)) #endif #define ISPRINT(c) (ISASCII (c) && isprint ((unsigned char)c)) #define ISDIGIT(c) (ISASCII (c) && isdigit ((unsigned char)c)) #define ISALNUM(c) (ISASCII (c) && isalnum ((unsigned char)c)) #define ISALPHA(c) (ISASCII (c) && isalpha ((unsigned char)c)) #define ISCNTRL(c) (ISASCII (c) && iscntrl ((unsigned char)c)) #define ISLOWER(c) (ISASCII (c) && islower ((unsigned char)c)) #define ISPUNCT(c) (ISASCII (c) && ispunct ((unsigned char)c)) #define ISSPACE(c) (ISASCII (c) && isspace ((unsigned char)c)) #define ISUPPER(c) (ISASCII (c) && isupper ((unsigned char)c)) #define ISXDIGIT(c) (ISASCII (c) && isxdigit ((unsigned char)c)) /* Disable string localization for the time being. */ #undef _ #define _(String) String