X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=menu%2Fm_new.c;h=c20c6651779058b8b3ce2b6a7b7b49cf10c46ce5;hp=668370610515e1b0f255504c476cf0b92cf7d5b3;hb=8144a95f5729b46a1ad4f4c3c4ba29800304e4c0;hpb=3a9b6a3bf0269231bef7de74757a910dedd04e0c diff --git a/menu/m_new.c b/menu/m_new.c index 66837061..c20c6651 100644 --- a/menu/m_new.c +++ b/menu/m_new.c @@ -1,33 +1,43 @@ -/*-----------------------------------------------------------------------------+ -| The ncurses menu library is Copyright (C) 1995-1997 | -| by Juergen Pfeifer | -| All Rights Reserved. | -| | -| Permission to use, copy, modify, and distribute this software and its | -| documentation for any purpose and without fee is hereby granted, provided | -| that the above copyright notice appear in all copies and that both that | -| copyright notice and this permission notice appear in supporting | -| documentation, and that the name of the above listed copyright holder(s) not | -| be used in advertising or publicity pertaining to distribution of the | -| software without specific, written prior permission. | -| | -| THE ABOVE LISTED COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD TO | -| THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FIT- | -| NESS, IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR | -| ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RE- | -| SULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, | -| NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH | -| THE USE OR PERFORMANCE OF THIS SOFTWARE. | -+-----------------------------------------------------------------------------*/ +/**************************************************************************** + * 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 * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Juergen Pfeifer, 1995,1997 * + ****************************************************************************/ /*************************************************************************** -* Module menu_new * +* Module m_new * * Creation and destruction of new menus * ***************************************************************************/ #include "menu.priv.h" -MODULE_ID("$Id: m_new.c,v 1.5 1997/05/01 16:47:26 juergen Exp $") +MODULE_ID("$Id: m_new.c,v 1.18 2006/11/04 19:04:06 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnmenu @@ -40,29 +50,34 @@ MODULE_ID("$Id: m_new.c,v 1.5 1997/05/01 16:47:26 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; + menu->status = 0; menu->rows = menu->frows; 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); } /*--------------------------------------------------------------------------- @@ -76,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);