/****************************************************************************
- * Copyright (c) 2006 Free Software Foundation, Inc. *
+ * Copyright (c) 2006-2012,2017 Free Software Foundation, Inc. *
* *
* Permission is hereby granted, free of charge, to any person obtaining a *
* copy of this software and associated documentation files (the *
/****************************************************************************
* Author: Thomas E. Dickey *
+ * and: Juergen Pfeifer *
****************************************************************************/
#include <curses.priv.h>
#include <ctype.h>
#include <tic.h>
-#include <term_entry.h>
-MODULE_ID("$Id: entries.c,v 1.2 2006/12/24 00:58:33 tom Exp $")
+MODULE_ID("$Id: entries.c,v 1.25 2017/07/01 16:58:42 tom Exp $")
/****************************************************************************
*
NCURSES_EXPORT_VAR(ENTRY *) _nc_head = 0;
NCURSES_EXPORT_VAR(ENTRY *) _nc_tail = 0;
+static ENTRY *
+_nc_delink_entry(ENTRY * headp, TERMTYPE2 *tterm)
+/* delink the allocated storage for the given list entry */
+{
+ ENTRY *ep, *last;
+
+ for (last = 0, ep = headp; ep != 0; last = ep, ep = ep->next) {
+ if (&(ep->tterm) == tterm) {
+ if (last != 0) {
+ last->next = ep->next;
+ }
+ if (ep->next != 0) {
+ ep->next->last = last;
+ }
+ if (ep == _nc_head) {
+ _nc_head = ep->next;
+ }
+ if (ep == _nc_tail) {
+ _nc_tail = last;
+ }
+ break;
+ }
+ }
+ return ep;
+}
+
NCURSES_EXPORT(void)
-_nc_free_entry(ENTRY * headp, TERMTYPE *tterm)
+_nc_free_entry(ENTRY * headp, TERMTYPE2 *tterm)
/* free the allocated storage consumed by the given list entry */
{
ENTRY *ep;
(void) headp; /* unused - _nc_head is altered here! */
while (_nc_head != 0) {
- _nc_free_termtype(&(_nc_head->tterm));
+ _nc_free_termtype2(&(_nc_head->tterm));
}
}
-NCURSES_EXPORT(ENTRY *)
-_nc_delink_entry(ENTRY * headp, TERMTYPE *tterm)
-/* delink the allocated storage for the given list entry */
+NCURSES_EXPORT(void)
+_nc_leaks_tinfo(void)
{
- ENTRY *ep, *last;
+#if NO_LEAKS
+ char *s;
+#endif
- for (last = 0, ep = headp; ep != 0; last = ep, ep = ep->next) {
- if (&(ep->tterm) == tterm) {
- if (last != 0) {
- last->next = ep->next;
- }
- if (ep == _nc_head) {
- _nc_head = ep->next;
- }
- if (ep == _nc_tail) {
- _nc_tail = last;
- }
- break;
- }
+ T((T_CALLED("_nc_free_tinfo()")));
+#if NO_LEAKS
+ _nc_free_tparm();
+ _nc_tgetent_leaks();
+
+ if (TerminalOf(CURRENT_SCREEN) != 0) {
+ del_curterm(TerminalOf(CURRENT_SCREEN));
}
- return ep;
+ _nc_forget_prescr();
+
+ _nc_comp_captab_leaks();
+ _nc_free_entries(_nc_head);
+ _nc_get_type(0);
+ _nc_first_name(0);
+ _nc_db_iterator_leaks();
+ _nc_keyname_leaks();
+#if BROKEN_LINKER || USE_REENTRANT
+ _nc_names_leaks();
+ _nc_codes_leaks();
+ FreeIfNeeded(_nc_prescreen.real_acs_map);
+#endif
+ _nc_comp_error_leaks();
+
+ if ((s = _nc_home_terminfo()) != 0)
+ free(s);
+
+#ifdef TRACE
+ T((T_RETURN("")));
+ trace(0);
+ _nc_trace_buf(-1, (size_t) 0);
+#endif
+
+#endif /* NO_LEAKS */
+ returnVoid;
+}
+
+#if NO_LEAKS
+NCURSES_EXPORT(void)
+_nc_free_tinfo(int code)
+{
+ _nc_leaks_tinfo();
+ exit(code);
}
+#endif