progs.priv.h revision 66963
1/****************************************************************************
2 * Copyright (c) 1998-2000 Free Software Foundation, Inc.                   *
3 *                                                                          *
4 * Permission is hereby granted, free of charge, to any person obtaining a  *
5 * copy of this software and associated documentation files (the            *
6 * "Software"), to deal in the Software without restriction, including      *
7 * without limitation the rights to use, copy, modify, merge, publish,      *
8 * distribute, distribute with modifications, sublicense, and/or sell       *
9 * copies of the Software, and to permit persons to whom the Software is    *
10 * furnished to do so, subject to the following conditions:                 *
11 *                                                                          *
12 * The above copyright notice and this permission notice shall be included  *
13 * in all copies or substantial portions of the Software.                   *
14 *                                                                          *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
16 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
18 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
19 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
20 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
21 * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
22 *                                                                          *
23 * Except as contained in this notice, the name(s) of the above copyright   *
24 * holders shall not be used in advertising or otherwise to promote the     *
25 * sale, use or other dealings in this Software without prior written       *
26 * authorization.                                                           *
27 ****************************************************************************/
28
29/****************************************************************************
30 *  Author: Thomas E. Dickey <dickey@clark.net> 1997,1998                   *
31 ****************************************************************************/
32/*
33 * $Id: progs.priv.h,v 1.24 2000/10/01 01:33:34 tom Exp $
34 *
35 *	progs.priv.h
36 *
37 *	Header file for curses utility programs
38 */
39
40#include <ncurses_cfg.h>
41
42#if USE_RCS_IDS
43#define MODULE_ID(id) static const char Ident[] = id;
44#else
45#define MODULE_ID(id) /*nothing*/
46#endif
47
48#include <stdlib.h>
49#include <ctype.h>
50#include <string.h>
51#include <sys/types.h>
52
53#if HAVE_UNISTD_H
54#include <unistd.h>
55#else
56# if HAVE_LIBC_H
57# include <libc.h>
58# endif
59#endif
60
61#if HAVE_SYS_BSDTYPES_H
62#include <sys/bsdtypes.h>	/* needed for ISC */
63#endif
64
65#if HAVE_LIMITS_H
66# include <limits.h>
67#elif HAVE_SYS_PARAM_H
68# include <sys/param.h>
69#endif
70
71#if HAVE_DIRENT_H
72# include <dirent.h>
73# define NAMLEN(dirent) strlen((dirent)->d_name)
74#else
75# define dirent direct
76# define NAMLEN(dirent) (dirent)->d_namlen
77# if HAVE_SYS_NDIR_H
78#  include <sys/ndir.h>
79# endif
80# if HAVE_SYS_DIR_H
81#  include <sys/dir.h>
82# endif
83# if HAVE_NDIR_H
84#  include <ndir.h>
85# endif
86#endif
87
88#include <errno.h>
89
90#if DECL_ERRNO
91extern int errno;
92#endif
93
94#if HAVE_GETOPT_H
95#include <getopt.h>
96#else
97/* 'getopt()' may be prototyped in <stdlib.h>, but declaring its
98 * variables doesn't hurt.
99 */
100extern char *optarg;
101extern int optind;
102#endif /* HAVE_GETOPT_H */
103
104#include <curses.h>
105#include <term_entry.h>
106#include <tic.h>
107#include <nc_alloc.h>
108
109/* usually in <unistd.h> */
110#ifndef STDOUT_FILENO
111#define STDOUT_FILENO 1
112#endif
113
114#ifndef STDERR_FILENO
115#define STDERR_FILENO 2
116#endif
117
118#ifndef EXIT_SUCCESS
119#define EXIT_SUCCESS 0
120#endif
121
122#ifndef EXIT_FAILURE
123#define EXIT_FAILURE 1
124#endif
125
126#ifndef R_OK
127#define	R_OK	4		/* Test for readable.  */
128#endif
129
130#ifndef W_OK
131#define	W_OK	2		/* Test for writable.  */
132#endif
133
134#ifndef X_OK
135#define	X_OK	1		/* Test for executable.  */
136#endif
137
138#ifndef F_OK
139#define	F_OK	0		/* Test for existence.  */
140#endif
141
142/* usually in <unistd.h> */
143#ifndef STDOUT_FILENO
144#define STDOUT_FILENO 1
145#endif
146
147#ifndef STDERR_FILENO
148#define STDERR_FILENO 2
149#endif
150
151/* may be in limits.h, included from various places */
152#ifndef PATH_MAX
153# if defined(_POSIX_PATH_MAX)
154#  define PATH_MAX _POSIX_PATH_MAX
155# elif defined(MAXPATHLEN)
156#  define PATH_MAX MAXPATHLEN
157# else
158#  define PATH_MAX 255	/* the Posix minimum pathsize */
159# endif
160#endif
161
162/* We use isascii only to guard against use of 7-bit ctype tables in the
163 * isprint test in infocmp.
164 */
165#if !HAVE_ISASCII
166# undef isascii
167# if ('z'-'a' == 25) && ('z' < 127) && ('Z'-'A' == 25) && ('Z' < 127) && ('9' < 127)
168#  define isascii(c) (((c) & 0xff) <= 127)
169# else
170#  define isascii(c) 1	/* not really ascii anyway */
171# endif
172#endif
173
174#define SIZEOF(v) (sizeof(v)/sizeof(v[0]))
175