nc_alloc.h 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. /****************************************************************************
  2. * Copyright (c) 1998 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. * Author: Thomas E. Dickey <dickey@clark.net> 1996,1997 *
  30. ****************************************************************************/
  31. /* $Id$ */
  32. #ifndef NC_ALLOC_included
  33. #define NC_ALLOC_included 1
  34. #if HAVE_LIBDMALLOC
  35. #include <dmalloc.h> /* Gray Watson's library */
  36. #else
  37. #undef HAVE_LIBDMALLOC
  38. #define HAVE_LIBDMALLOC 0
  39. #endif
  40. #if HAVE_LIBDBMALLOC
  41. #include <dbmalloc.h> /* Conor Cahill's library */
  42. #else
  43. #undef HAVE_LIBDBMALLOC
  44. #define HAVE_LIBDBMALLOC 0
  45. #endif
  46. #ifndef NO_LEAKS
  47. #define NO_LEAKS 0
  48. #endif
  49. #if HAVE_LIBDBMALLOC || HAVE_LIBDMALLOC || NO_LEAKS
  50. #define HAVE_NC_FREEALL 1
  51. struct termtype;
  52. extern void _nc_free_and_exit(int) GCC_NORETURN;
  53. extern void _nc_free_tparm(void);
  54. extern void _nc_leaks_dump_entry(void);
  55. #define ExitProgram(code) _nc_free_and_exit(code)
  56. #endif
  57. #ifndef HAVE_NC_FREEALL
  58. #define HAVE_NC_FREEALL 0
  59. #endif
  60. #ifndef ExitProgram
  61. #define ExitProgram(code) return code
  62. #endif
  63. /* doalloc.c */
  64. extern void *_nc_doalloc(void *, size_t);
  65. #if !HAVE_STRDUP
  66. /* #define strdup _nc_strdup */
  67. extern char *_nc_strdup(const char *);
  68. #endif
  69. #define typeMalloc(type,elts) (type *)malloc((elts)*sizeof(type))
  70. #define typeCalloc(type,elts) (type *)calloc((elts),sizeof(type))
  71. #define typeRealloc(type,elts,ptr) (type *)_nc_doalloc(ptr, (elts)*sizeof(type))
  72. #endif /* NC_ALLOC_included */