Updated slattach to new header-compression enabled version (from NetBSD)
[unix-history] / gnu / usr.bin / pr / system.h
CommitLineData
9a35093c
NW
1/* system-dependent definitions for textutils programs.
2 Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc.
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2, or (at your option)
7 any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
17
18/* Include sys/types.h before this file. */
19
20#include <sys/stat.h>
21#ifndef S_ISREG /* Doesn't have POSIX.1 stat stuff. */
22#define mode_t unsigned short
23#endif
24#if !defined(S_ISBLK) && defined(S_IFBLK)
25#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
26#endif
27#if !defined(S_ISCHR) && defined(S_IFCHR)
28#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
29#endif
30#if !defined(S_ISDIR) && defined(S_IFDIR)
31#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
32#endif
33#if !defined(S_ISREG) && defined(S_IFREG)
34#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
35#endif
36#if !defined(S_ISFIFO) && defined(S_IFIFO)
37#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
38#endif
39#if !defined(S_ISLNK) && defined(S_IFLNK)
40#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
41#endif
42#if !defined(S_ISSOCK) && defined(S_IFSOCK)
43#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
44#endif
45#if !defined(S_ISMPB) && defined(S_IFMPB) /* V7 */
46#define S_ISMPB(m) (((m) & S_IFMT) == S_IFMPB)
47#define S_ISMPC(m) (((m) & S_IFMT) == S_IFMPC)
48#endif
49#if !defined(S_ISNWK) && defined(S_IFNWK) /* HP/UX */
50#define S_ISNWK(m) (((m) & S_IFMT) == S_IFNWK)
51#endif
52#if !defined(HAVE_MKFIFO)
53#define mkfifo(path, mode) (mknod ((path), (mode) | S_IFIFO, 0))
54#endif
55
56#ifdef HAVE_UNISTD_H
57#include <unistd.h>
58#endif
59#ifndef _POSIX_VERSION
60off_t lseek ();
61#endif
62
63#if defined(HAVE_STRING_H) || defined(STDC_HEADERS)
64#if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H)
65#include <memory.h>
66#endif
67#include <string.h>
68#ifndef index
69#define index strchr
70#endif
71#ifndef rindex
72#define rindex strrchr
73#endif
74/* Don't define bcopy; we need one that can handle overlaps. */
75#ifndef bzero
76#define bzero(s, n) memset ((s), 0, (n))
77#endif
78#ifndef bcmp
79#define bcmp(s1, s2, n) memcmp ((s1), (s2), (n))
80#endif
81#else
82#include <strings.h>
83char *memchr ();
84#endif
85
86#include <errno.h>
87#ifdef STDC_HEADERS
88#include <stdlib.h>
89#else
90char *getenv ();
91extern int errno;
92#endif
93
94#if defined(HAVE_FCNTL_H) || defined(_POSIX_VERSION)
95#include <fcntl.h>
96#else
97#include <sys/file.h>
98#endif
99
100#if !defined(SEEK_SET)
101#define SEEK_SET 0
102#define SEEK_CUR 1
103#define SEEK_END 2
104#endif
105
106#ifndef _POSIX_SOURCE
107#include <sys/param.h>
108#endif
109
110/* Get or fake the disk device blocksize.
111 Usually defined by sys/param.h (if at all). */
112#if !defined(DEV_BSIZE) && defined(BSIZE)
113#define DEV_BSIZE BSIZE
114#endif
115#if !defined(DEV_BSIZE) && defined(BBSIZE) /* SGI */
116#define DEV_BSIZE BBSIZE
117#endif
118#ifndef DEV_BSIZE
119#define DEV_BSIZE 4096
120#endif
121
122/* Extract or fake data from a `struct stat'.
123 ST_BLKSIZE: Optimal I/O blocksize for the file, in bytes. */
124#ifndef HAVE_ST_BLKSIZE
125# define ST_BLKSIZE(statbuf) DEV_BSIZE
126#else /* HAVE_ST_BLKSIZE */
127/* Some systems, like Sequents, return st_blksize of 0 on pipes. */
128# define ST_BLKSIZE(statbuf) ((statbuf).st_blksize > 0 \
129 ? (statbuf).st_blksize : DEV_BSIZE)
130#endif /* HAVE_ST_BLKSIZE */
131
132#ifndef S_ISLNK
133#define lstat stat
134#endif
135
136#ifndef RETSIGTYPE
137#define RETSIGTYPE void
138#endif
139
140#include <ctype.h>
141
142#ifndef isascii
143#define isascii(c) 1
144#endif
145
146#ifdef isblank
147#define ISBLANK(c) (isascii (c) && isblank (c))
148#else
149#define ISBLANK(c) ((c) == ' ' || (c) == '\t')
150#endif
151#ifdef isgraph
152#define ISGRAPH(c) (isascii (c) && isgraph (c))
153#else
154#define ISGRAPH(c) (isascii (c) && isprint (c) && !isspace (c))
155#endif
156
157#define ISPRINT(c) (isascii (c) && isprint (c))
158#define ISDIGIT(c) (isascii (c) && isdigit (c))
159#define ISALNUM(c) (isascii (c) && isalnum (c))
160#define ISALPHA(c) (isascii (c) && isalpha (c))
161#define ISCNTRL(c) (isascii (c) && iscntrl (c))
162#define ISLOWER(c) (isascii (c) && islower (c))
163#define ISPUNCT(c) (isascii (c) && ispunct (c))
164#define ISSPACE(c) (isascii (c) && isspace (c))
165#define ISUPPER(c) (isascii (c) && isupper (c))
166#define ISXDIGIT(c) (isascii (c) && isxdigit (c))