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