1fdd4e1e0SJan Lentfer /**************************************************************************** 2*32bb5217SDaniel Fojt * Copyright 2019,2020 Thomas E. Dickey * 3*32bb5217SDaniel Fojt * Copyright 1998-2013,2017 Free Software Foundation, Inc. * 4fdd4e1e0SJan Lentfer * * 5fdd4e1e0SJan Lentfer * Permission is hereby granted, free of charge, to any person obtaining a * 6fdd4e1e0SJan Lentfer * copy of this software and associated documentation files (the * 7fdd4e1e0SJan Lentfer * "Software"), to deal in the Software without restriction, including * 8fdd4e1e0SJan Lentfer * without limitation the rights to use, copy, modify, merge, publish, * 9fdd4e1e0SJan Lentfer * distribute, distribute with modifications, sublicense, and/or sell * 10fdd4e1e0SJan Lentfer * copies of the Software, and to permit persons to whom the Software is * 11fdd4e1e0SJan Lentfer * furnished to do so, subject to the following conditions: * 12fdd4e1e0SJan Lentfer * * 13fdd4e1e0SJan Lentfer * The above copyright notice and this permission notice shall be included * 14fdd4e1e0SJan Lentfer * in all copies or substantial portions of the Software. * 15fdd4e1e0SJan Lentfer * * 16fdd4e1e0SJan Lentfer * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * 17fdd4e1e0SJan Lentfer * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * 18fdd4e1e0SJan Lentfer * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * 19fdd4e1e0SJan Lentfer * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * 20fdd4e1e0SJan Lentfer * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * 21fdd4e1e0SJan Lentfer * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * 22fdd4e1e0SJan Lentfer * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * 23fdd4e1e0SJan Lentfer * * 24fdd4e1e0SJan Lentfer * Except as contained in this notice, the name(s) of the above copyright * 25fdd4e1e0SJan Lentfer * holders shall not be used in advertising or otherwise to promote the * 26fdd4e1e0SJan Lentfer * sale, use or other dealings in this Software without prior written * 27fdd4e1e0SJan Lentfer * authorization. * 28fdd4e1e0SJan Lentfer ****************************************************************************/ 29fdd4e1e0SJan Lentfer 30fdd4e1e0SJan Lentfer /**************************************************************************** 311d102085SJan Lentfer * Author: Thomas E. Dickey 1996-on * 32fdd4e1e0SJan Lentfer ****************************************************************************/ 33*32bb5217SDaniel Fojt /* $Id: nc_alloc.h,v 1.26 2020/02/02 23:34:34 tom Exp $ */ 34fdd4e1e0SJan Lentfer 35fdd4e1e0SJan Lentfer #ifndef NC_ALLOC_included 36fdd4e1e0SJan Lentfer #define NC_ALLOC_included 1 373468e90cSJohn Marino /* *INDENT-OFF* */ 38fdd4e1e0SJan Lentfer 39*32bb5217SDaniel Fojt #include <ncurses_cfg.h> 40*32bb5217SDaniel Fojt #include <curses.h> 41*32bb5217SDaniel Fojt 42fdd4e1e0SJan Lentfer #ifdef __cplusplus 43fdd4e1e0SJan Lentfer extern "C" { 44fdd4e1e0SJan Lentfer #endif 45fdd4e1e0SJan Lentfer 4600d8f3c4SJohn Marino #if defined(HAVE_LIBDMALLOC) && HAVE_LIBDMALLOC 471d102085SJan Lentfer #include <string.h> 481d102085SJan Lentfer #undef strndup /* workaround for #define in GLIBC 2.7 */ 49fdd4e1e0SJan Lentfer #include <dmalloc.h> /* Gray Watson's library */ 50fdd4e1e0SJan Lentfer #else 51fdd4e1e0SJan Lentfer #undef HAVE_LIBDMALLOC 52fdd4e1e0SJan Lentfer #define HAVE_LIBDMALLOC 0 53fdd4e1e0SJan Lentfer #endif 54fdd4e1e0SJan Lentfer 5500d8f3c4SJohn Marino #if defined(HAVE_LIBDBMALLOC) && HAVE_LIBDBMALLOC 56fdd4e1e0SJan Lentfer #include <dbmalloc.h> /* Conor Cahill's library */ 57fdd4e1e0SJan Lentfer #else 58fdd4e1e0SJan Lentfer #undef HAVE_LIBDBMALLOC 59fdd4e1e0SJan Lentfer #define HAVE_LIBDBMALLOC 0 60fdd4e1e0SJan Lentfer #endif 61fdd4e1e0SJan Lentfer 6200d8f3c4SJohn Marino #if defined(HAVE_LIBMPATROL) && HAVE_LIBMPATROL 631d102085SJan Lentfer #include <mpatrol.h> /* Memory-Patrol library */ 641d102085SJan Lentfer #else 651d102085SJan Lentfer #undef HAVE_LIBMPATROL 661d102085SJan Lentfer #define HAVE_LIBMPATROL 0 671d102085SJan Lentfer #endif 681d102085SJan Lentfer 69fdd4e1e0SJan Lentfer #ifndef NO_LEAKS 70fdd4e1e0SJan Lentfer #define NO_LEAKS 0 71fdd4e1e0SJan Lentfer #endif 72fdd4e1e0SJan Lentfer 73fdd4e1e0SJan Lentfer #if HAVE_LIBDBMALLOC || HAVE_LIBDMALLOC || NO_LEAKS 74fdd4e1e0SJan Lentfer #define HAVE_NC_FREEALL 1 75fdd4e1e0SJan Lentfer struct termtype; 76*32bb5217SDaniel Fojt extern NCURSES_EXPORT(void) _nc_free_tinfo(int) GCC_NORETURN GCC_DEPRECATED("use exit_terminfo"); 77*32bb5217SDaniel Fojt 78*32bb5217SDaniel Fojt #ifdef NCURSES_INTERNALS 791d102085SJan Lentfer extern NCURSES_EXPORT(void) _nc_free_tic(int) GCC_NORETURN; 801d102085SJan Lentfer extern NCURSES_EXPORT(void) _nc_free_tparm(void); 811d102085SJan Lentfer extern NCURSES_EXPORT(void) _nc_leaks_dump_entry(void); 821d102085SJan Lentfer extern NCURSES_EXPORT(void) _nc_leaks_tic(void); 8300d8f3c4SJohn Marino 8400d8f3c4SJohn Marino #if NCURSES_SP_FUNCS 8500d8f3c4SJohn Marino extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_free_and_exit)(SCREEN*, int) GCC_NORETURN; 86fdd4e1e0SJan Lentfer #endif 87*32bb5217SDaniel Fojt extern NCURSES_EXPORT(void) _nc_free_and_exit(int) GCC_NORETURN; 88fdd4e1e0SJan Lentfer 89*32bb5217SDaniel Fojt #else /* !NCURSES_INTERNALS */ 90*32bb5217SDaniel Fojt extern NCURSES_EXPORT(void) _nc_free_and_exit(int) GCC_NORETURN GCC_DEPRECATED("use exit_curses"); 91*32bb5217SDaniel Fojt #endif 9200d8f3c4SJohn Marino 93*32bb5217SDaniel Fojt #define ExitProgram(code) exit_curses(code) 94*32bb5217SDaniel Fojt 95*32bb5217SDaniel Fojt #else 96*32bb5217SDaniel Fojt extern NCURSES_EXPORT(void) _nc_free_and_exit(int) GCC_NORETURN GCC_DEPRECATED("use exit_curses"); 9700d8f3c4SJohn Marino #endif /* NO_LEAKS, etc */ 9800d8f3c4SJohn Marino 99fdd4e1e0SJan Lentfer #ifndef HAVE_NC_FREEALL 100fdd4e1e0SJan Lentfer #define HAVE_NC_FREEALL 0 101fdd4e1e0SJan Lentfer #endif 102fdd4e1e0SJan Lentfer 103fdd4e1e0SJan Lentfer #ifndef ExitProgram 104fdd4e1e0SJan Lentfer #define ExitProgram(code) exit(code) 105fdd4e1e0SJan Lentfer #endif 106fdd4e1e0SJan Lentfer 107fdd4e1e0SJan Lentfer /* doalloc.c */ 108fdd4e1e0SJan Lentfer extern NCURSES_EXPORT(void *) _nc_doalloc(void *, size_t); 109fdd4e1e0SJan Lentfer #if !HAVE_STRDUP 1103468e90cSJohn Marino #undef strdup 111fdd4e1e0SJan Lentfer #define strdup _nc_strdup 112fdd4e1e0SJan Lentfer extern NCURSES_EXPORT(char *) _nc_strdup(const char *); 113fdd4e1e0SJan Lentfer #endif 114fdd4e1e0SJan Lentfer 1151d102085SJan Lentfer /* entries.c */ 1161d102085SJan Lentfer extern NCURSES_EXPORT(void) _nc_leaks_tinfo(void); 1171d102085SJan Lentfer 1183468e90cSJohn Marino #define typeMalloc(type,elts) (type *)malloc((size_t)(elts)*sizeof(type)) 1193468e90cSJohn Marino #define typeCalloc(type,elts) (type *)calloc((size_t)(elts),sizeof(type)) 1203468e90cSJohn Marino #define typeRealloc(type,elts,ptr) (type *)_nc_doalloc(ptr, (size_t)(elts)*sizeof(type)) 121fdd4e1e0SJan Lentfer 122fdd4e1e0SJan Lentfer #ifdef __cplusplus 123fdd4e1e0SJan Lentfer } 124fdd4e1e0SJan Lentfer #endif 125fdd4e1e0SJan Lentfer 1263468e90cSJohn Marino /* *INDENT-ON* */ 1273468e90cSJohn Marino 128fdd4e1e0SJan Lentfer #endif /* NC_ALLOC_included */ 129