]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - menu/m_new.c
ncurses 5.6 - patch 20061230
[ncurses.git] / menu / m_new.c
index ba2b90cffe193f5997baa4a6dc618b1daa4cf825..c20c6651779058b8b3ce2b6a7b7b49cf10c46ce5 100644 (file)
@@ -1,5 +1,5 @@
 /****************************************************************************
- * Copyright (c) 1998 Free Software Foundation, Inc.                        *
+ * Copyright (c) 1998-2004,2006 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            *
@@ -27,7 +27,7 @@
  ****************************************************************************/
 
 /****************************************************************************
- *   Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997            *
+ *   Author:  Juergen Pfeifer, 1995,1997                                    *
  ****************************************************************************/
 
 /***************************************************************************
@@ -37,7 +37,7 @@
 
 #include "menu.priv.h"
 
-MODULE_ID("$Id: m_new.c,v 1.10 1999/05/16 17:26:59 juergen Exp $")
+MODULE_ID("$Id: m_new.c,v 1.18 2006/11/04 19:04:06 tom Exp $")
 
 /*---------------------------------------------------------------------------
 |   Facility      :  libnmenu  
@@ -50,10 +50,13 @@ MODULE_ID("$Id: m_new.c,v 1.10 1999/05/16 17:26:59 juergen Exp $")
 |
 |   Return Values :  NULL on error
 +--------------------------------------------------------------------------*/
-MENU *new_menu(ITEM ** items)
+NCURSES_EXPORT(MENU *)
+new_menu(ITEM ** items)
 {
-  MENU *menu = (MENU *)calloc(1,sizeof(MENU));
-  
+  int err = E_SYSTEM_ERROR;
+  MENU *menu = (MENU *) calloc(1, sizeof(MENU));
+
+  T((T_CALLED("new_menu(%p)"), items));
   if (menu)
     {
       *menu = _nc_Default_Menu;
@@ -62,18 +65,19 @@ MENU *new_menu(ITEM ** items)
       menu->cols = menu->fcols;
       if (items && *items)
        {
-         if (!_nc_Connect_Items(menu,items))
+         if (!_nc_Connect_Items(menu, items))
            {
+             err = E_NOT_CONNECTED;
              free(menu);
-             menu = (MENU *)0;
+             menu = (MENU *) 0;
            }
        }
     }
 
   if (!menu)
-    SET_ERROR(E_SYSTEM_ERROR);
+    SET_ERROR(err);
 
-  return(menu);
+  returnMenu(menu);
 }
 
 /*---------------------------------------------------------------------------
@@ -87,17 +91,19 @@ MENU *new_menu(ITEM ** items)
 |                    E_BAD_ARGUMENT     - Invalid menu pointer passed
 |                    E_POSTED           - Menu is already posted
 +--------------------------------------------------------------------------*/
-int free_menu(MENU * menu)
+NCURSES_EXPORT(int)
+free_menu(MENU * menu)
 {
+  T((T_CALLED("free_menu(%p)"), menu));
   if (!menu)
     RETURN(E_BAD_ARGUMENT);
-  
-  if ( menu->status & _POSTED )
+
+  if (menu->status & _POSTED)
     RETURN(E_POSTED);
-  
-  if (menu->items) 
+
+  if (menu->items)
     _nc_Disconnect_Items(menu);
-  
+
   if ((menu->status & _MARK_ALLOCATED) && menu->mark)
     free(menu->mark);