xref: /freebsd-src/contrib/ncurses/progs/progs.priv.h (revision 21817992b3314c908ab50f0bb88d2ee750b9c4ac)
10e3d5408SPeter Wemm /****************************************************************************
2*21817992SBaptiste Daroussin  * Copyright 2019-2022,2024 Thomas E. Dickey                                *
3e1865124SBaptiste Daroussin  * Copyright 1998-2015,2017 Free Software Foundation, Inc.                  *
40e3d5408SPeter Wemm  *                                                                          *
50e3d5408SPeter Wemm  * Permission is hereby granted, free of charge, to any person obtaining a  *
60e3d5408SPeter Wemm  * copy of this software and associated documentation files (the            *
70e3d5408SPeter Wemm  * "Software"), to deal in the Software without restriction, including      *
80e3d5408SPeter Wemm  * without limitation the rights to use, copy, modify, merge, publish,      *
90e3d5408SPeter Wemm  * distribute, distribute with modifications, sublicense, and/or sell       *
100e3d5408SPeter Wemm  * copies of the Software, and to permit persons to whom the Software is    *
110e3d5408SPeter Wemm  * furnished to do so, subject to the following conditions:                 *
120e3d5408SPeter Wemm  *                                                                          *
130e3d5408SPeter Wemm  * The above copyright notice and this permission notice shall be included  *
140e3d5408SPeter Wemm  * in all copies or substantial portions of the Software.                   *
150e3d5408SPeter Wemm  *                                                                          *
160e3d5408SPeter Wemm  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
170e3d5408SPeter Wemm  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
180e3d5408SPeter Wemm  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
190e3d5408SPeter Wemm  * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
200e3d5408SPeter Wemm  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
210e3d5408SPeter Wemm  * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
220e3d5408SPeter Wemm  * THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
230e3d5408SPeter Wemm  *                                                                          *
240e3d5408SPeter Wemm  * Except as contained in this notice, the name(s) of the above copyright   *
250e3d5408SPeter Wemm  * holders shall not be used in advertising or otherwise to promote the     *
260e3d5408SPeter Wemm  * sale, use or other dealings in this Software without prior written       *
270e3d5408SPeter Wemm  * authorization.                                                           *
280e3d5408SPeter Wemm  ****************************************************************************/
290e3d5408SPeter Wemm 
300e3d5408SPeter Wemm /****************************************************************************
314a1a9510SRong-En Fan  *  Author: Thomas E. Dickey                    1997-on                     *
320e3d5408SPeter Wemm  ****************************************************************************/
330e3d5408SPeter Wemm /*
34*21817992SBaptiste Daroussin  * $Id: progs.priv.h,v 1.62 2024/04/08 17:28:28 tom Exp $
350e3d5408SPeter Wemm  *
360e3d5408SPeter Wemm  *	progs.priv.h
370e3d5408SPeter Wemm  *
380e3d5408SPeter Wemm  *	Header file for curses utility programs
390e3d5408SPeter Wemm  */
400e3d5408SPeter Wemm 
41aae38d10SBaptiste Daroussin #ifndef PROGS_PRIV_H
42aae38d10SBaptiste Daroussin #define PROGS_PRIV_H 1
43aae38d10SBaptiste Daroussin 
44*21817992SBaptiste Daroussin #include <curses.priv.h>
450e3d5408SPeter Wemm 
460e3d5408SPeter Wemm #include <ctype.h>
470e3d5408SPeter Wemm 
480e3d5408SPeter Wemm #if HAVE_DIRENT_H
490e3d5408SPeter Wemm # include <dirent.h>
500e3d5408SPeter Wemm # define NAMLEN(dirent) strlen((dirent)->d_name)
514a1a9510SRong-En Fan # if defined(_FILE_OFFSET_BITS) && defined(HAVE_STRUCT_DIRENT64)
524a1a9510SRong-En Fan #  if !defined(_LP64) && (_FILE_OFFSET_BITS == 64)
534a1a9510SRong-En Fan #   define	DIRENT	struct dirent64
540e3d5408SPeter Wemm #  else
554a1a9510SRong-En Fan #   define	DIRENT	struct dirent
564a1a9510SRong-En Fan #  endif
574a1a9510SRong-En Fan # else
584a1a9510SRong-En Fan #  define	DIRENT	struct dirent
594a1a9510SRong-En Fan # endif
604a1a9510SRong-En Fan #else
614a1a9510SRong-En Fan # define DIRENT struct direct
620e3d5408SPeter Wemm # define NAMLEN(dirent) (dirent)->d_namlen
630e3d5408SPeter Wemm # if HAVE_SYS_NDIR_H
640e3d5408SPeter Wemm #  include <sys/ndir.h>
650e3d5408SPeter Wemm # endif
660e3d5408SPeter Wemm # if HAVE_SYS_DIR_H
670e3d5408SPeter Wemm #  include <sys/dir.h>
680e3d5408SPeter Wemm # endif
690e3d5408SPeter Wemm # if HAVE_NDIR_H
700e3d5408SPeter Wemm #  include <ndir.h>
710e3d5408SPeter Wemm # endif
720e3d5408SPeter Wemm #endif
730e3d5408SPeter Wemm 
740e3d5408SPeter Wemm #if HAVE_GETOPT_H
750e3d5408SPeter Wemm #include <getopt.h>
7673f0a83dSXin LI #elif !defined(HAVE_GETOPT_HEADER)
770e3d5408SPeter Wemm /* 'getopt()' may be prototyped in <stdlib.h>, but declaring its
780e3d5408SPeter Wemm  * variables doesn't hurt.
790e3d5408SPeter Wemm  */
800e3d5408SPeter Wemm extern char *optarg;
810e3d5408SPeter Wemm extern int optind;
820e3d5408SPeter Wemm #endif /* HAVE_GETOPT_H */
830e3d5408SPeter Wemm 
840e3d5408SPeter Wemm #include <tic.h>
85aae38d10SBaptiste Daroussin 
865ca44d1cSRong-En Fan #if HAVE_NC_FREEALL
875ca44d1cSRong-En Fan #undef ExitProgram
885ca44d1cSRong-En Fan #ifdef USE_LIBTINFO
89aae38d10SBaptiste Daroussin #define ExitProgram(code) exit_terminfo(code)
905ca44d1cSRong-En Fan #else
915ca44d1cSRong-En Fan #define ExitProgram(code) _nc_free_tic(code)
925ca44d1cSRong-En Fan #endif
935ca44d1cSRong-En Fan #endif
940e3d5408SPeter Wemm 
95aae38d10SBaptiste Daroussin /* error-returns for tput */
96aae38d10SBaptiste Daroussin #define ErrUsage	2
97aae38d10SBaptiste Daroussin #define ErrTermType	3
98aae38d10SBaptiste Daroussin #define ErrCapName	4
99aae38d10SBaptiste Daroussin #define ErrSystem(n)	(4 + (n))
100aae38d10SBaptiste Daroussin 
1010e3d5408SPeter Wemm /* We use isascii only to guard against use of 7-bit ctype tables in the
1020e3d5408SPeter Wemm  * isprint test in infocmp.
1030e3d5408SPeter Wemm  */
10418259542SPeter Wemm #if !HAVE_ISASCII
1050e3d5408SPeter Wemm # undef isascii
1060e3d5408SPeter Wemm # if ('z'-'a' == 25) && ('z' < 127) && ('Z'-'A' == 25) && ('Z' < 127) && ('9' < 127)
10739f2269fSPeter Wemm #  define isascii(c) (UChar(c) <= 127)
1080e3d5408SPeter Wemm # else
1090e3d5408SPeter Wemm #  define isascii(c) 1		/* not really ascii anyway */
1100e3d5408SPeter Wemm # endif
1110e3d5408SPeter Wemm #endif
11218259542SPeter Wemm 
113*21817992SBaptiste Daroussin #define VtoTrace(opt) (unsigned) ((opt > 0) ? opt : (opt == 0))
1147a69bbfbSPeter Wemm 
115*21817992SBaptiste Daroussin /*
116*21817992SBaptiste Daroussin  * If configured for tracing, the debug- and trace-output are merged together
117*21817992SBaptiste Daroussin  * in the trace file for "upper" levels of the verbose option.
118*21817992SBaptiste Daroussin  */
119*21817992SBaptiste Daroussin #ifdef TRACE
120*21817992SBaptiste Daroussin #define use_verbosity(level) do { \
121*21817992SBaptiste Daroussin  		set_trace_level(level); \
122*21817992SBaptiste Daroussin 		if (_nc_tracing > DEBUG_LEVEL(2)) \
123*21817992SBaptiste Daroussin 		    _nc_tracing |= TRACE_MAXIMUM; \
124*21817992SBaptiste Daroussin 		else if (_nc_tracing == DEBUG_LEVEL(2)) \
125*21817992SBaptiste Daroussin 		    _nc_tracing |= TRACE_ORDINARY; \
126*21817992SBaptiste Daroussin 		if (level >= 2) \
127*21817992SBaptiste Daroussin 		    curses_trace(_nc_tracing); \
128*21817992SBaptiste Daroussin 	} while (0)
129aae38d10SBaptiste Daroussin #else
130*21817992SBaptiste Daroussin #define use_verbosity(level) do { set_trace_level(level); } while (0)
131*21817992SBaptiste Daroussin #endif
132*21817992SBaptiste Daroussin 
133*21817992SBaptiste Daroussin #ifndef CUR
134*21817992SBaptiste Daroussin #define CUR ((TERMTYPE *)(cur_term))->
135aae38d10SBaptiste Daroussin #endif
136aae38d10SBaptiste Daroussin 
137aae38d10SBaptiste Daroussin #endif /* PROGS_PRIV_H */
138