ncurses 5.7 - patch 20090711
[ncurses.git] / ncurses / tinfo / comp_parse.c
index 667b3257f25a4a806571263ad0c2c8a6f1c198b2..3325a0ddae6c7e4660fe9e5a4f83430cdd307bbe 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998-2005,2006 Free Software Foundation, Inc.              *
+ * Copyright (c) 1998-2007,2008 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            *
@@ -53,7 +53,7 @@
 #include <tic.h>
 #include <term_entry.h>
 
-MODULE_ID("$Id: comp_parse.c,v 1.63 2006/07/08 18:55:14 tom Exp $")
+MODULE_ID("$Id: comp_parse.c,v 1.69 2008/08/16 21:58:16 tom Exp $")
 
 static void sanity_check2(TERMTYPE *, bool);
 NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype2) (TERMTYPE *, bool) = sanity_check2;
@@ -62,30 +62,6 @@ NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype2) (TERMTYPE *, bool) = sanit
 static void sanity_check(TERMTYPE *);
 NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype) (TERMTYPE *) = sanity_check;
 
-/****************************************************************************
- *
- * Entry queue handling
- *
- ****************************************************************************/
-/*
- *  The entry list is a doubly linked list with NULLs terminating the lists:
- *
- *       ---------   ---------   ---------
- *       |       |   |       |   |       |   offset
- *        |-------|   |-------|   |-------|
- *       |   ----+-->|   ----+-->|  NULL |   next
- *       |-------|   |-------|   |-------|
- *       |  NULL |<--+----   |<--+----   |   last
- *       ---------   ---------   ---------
- *           ^                       ^
- *           |                       |
- *           |                       |
- *        _nc_head                _nc_tail
- */
-
-NCURSES_EXPORT_VAR(ENTRY *) _nc_head = 0;
-NCURSES_EXPORT_VAR(ENTRY *) _nc_tail = 0;
-
 static void
 enqueue(ENTRY * ep)
 /* add an entry to the in-core list */
@@ -103,51 +79,6 @@ enqueue(ENTRY * ep)
        newp->last->next = newp;
 }
 
-NCURSES_EXPORT(void)
-_nc_free_entries(ENTRY * headp)
-/* free the allocated storage consumed by list entries */
-{
-    (void) headp;              /* unused - _nc_head is altered here! */
-
-    while (_nc_head != 0) {
-       _nc_free_termtype(&(_nc_head->tterm));
-    }
-}
-
-NCURSES_EXPORT(ENTRY *)
-_nc_delink_entry(ENTRY * headp, TERMTYPE *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 == _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)
-/* free the allocated storage consumed by the given list entry */
-{
-    ENTRY *ep;
-
-    if ((ep = _nc_delink_entry(headp, tterm)) != 0) {
-       free(ep);
-    }
-}
-
 static char *
 force_bar(char *dst, char *src)
 {
@@ -252,7 +183,8 @@ _nc_resolve_uses2(bool fullresolve, bool literal)
 {
     ENTRY *qp, *rp, *lastread = 0;
     bool keepgoing;
-    int i, unresolved, total_unresolved, multiples;
+    unsigned i;
+    int unresolved, total_unresolved, multiples;
 
     DEBUG(2, ("RESOLUTION BEGINNING"));
 
@@ -534,3 +466,26 @@ sanity_check(TERMTYPE *tp)
 {
     sanity_check2(tp, FALSE);
 }
+
+#if NO_LEAKS
+NCURSES_EXPORT(void)
+_nc_leaks_tic(void)
+{
+    _nc_alloc_entry_leaks();
+    _nc_captoinfo_leaks();
+    _nc_comp_captab_leaks();
+    _nc_comp_scan_leaks();
+#if BROKEN_LINKER || USE_REENTRANT
+    _nc_names_leaks();
+    _nc_codes_leaks();
+#endif
+    _nc_tic_expand(0, FALSE, 0);
+}
+
+NCURSES_EXPORT(void)
+_nc_free_tic(int code)
+{
+    _nc_leaks_tic();
+    _nc_free_tinfo(code);
+}
+#endif