xref: /netbsd-src/lib/libmenu/userptr.c (revision 8bf240ccae447038214d5896a080610f9ddf499a)
1*8bf240ccSlukem /*	$NetBSD: userptr.c,v 1.9 2003/03/09 01:08:48 lukem Exp $	*/
2b68c50bcSblymn 
3b68c50bcSblymn /*-
4b7466e4fSblymn  * Copyright (c) 1998-1999 Brett Lymn (blymn@baea.com.au, brett_lymn@yahoo.com.au)
5b68c50bcSblymn  * All rights reserved.
6b68c50bcSblymn  *
7b68c50bcSblymn  * Redistribution and use in source and binary forms, with or without
8b68c50bcSblymn  * modification, are permitted provided that the following conditions
9b68c50bcSblymn  * are met:
10b68c50bcSblymn  * 1. Redistributions of source code must retain the above copyright
11b68c50bcSblymn  *    notice, this list of conditions and the following disclaimer.
12b68c50bcSblymn  * 2. The name of the author may not be used to endorse or promote products
13c03a48d6Swiz  *    derived from this software without specific prior written permission
14b68c50bcSblymn  *
15b68c50bcSblymn  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
16b68c50bcSblymn  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
17b68c50bcSblymn  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
18b68c50bcSblymn  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
19b68c50bcSblymn  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
20b68c50bcSblymn  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
21b68c50bcSblymn  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
22b68c50bcSblymn  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23b68c50bcSblymn  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
24b68c50bcSblymn  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25b68c50bcSblymn  *
26b68c50bcSblymn  *
27b68c50bcSblymn  */
28b68c50bcSblymn 
29*8bf240ccSlukem #include <sys/cdefs.h>
30*8bf240ccSlukem __RCSID("$NetBSD: userptr.c,v 1.9 2003/03/09 01:08:48 lukem Exp $");
31*8bf240ccSlukem 
32b68c50bcSblymn #include <menu.h>
3387bead52Skleink #include <stdlib.h>
3487bead52Skleink #include <string.h>
35b68c50bcSblymn 
36b68c50bcSblymn /* the following is defined in menu.c */
37b68c50bcSblymn extern MENU _menui_default_menu;
38b68c50bcSblymn 
39b68c50bcSblymn /* the following is defined in item.c */
40b68c50bcSblymn extern ITEM _menui_default_item;
41b68c50bcSblymn 
42b68c50bcSblymn /*
43b68c50bcSblymn  * Set the item user pointer data
44b68c50bcSblymn  */
45b68c50bcSblymn int
set_item_userptr(ITEM * param_item,char * userptr)4632a993afSblymn set_item_userptr(ITEM *param_item, char *userptr)
47b68c50bcSblymn {
48b68c50bcSblymn 	ITEM *item = (param_item != NULL) ? param_item : &_menui_default_item;
49b68c50bcSblymn 
50307e770bSblymn         item->userptr = userptr;
51b68c50bcSblymn         return E_OK;
52b68c50bcSblymn }
53b68c50bcSblymn 
54b68c50bcSblymn 
55b68c50bcSblymn /*
56b68c50bcSblymn  * Return the item user pointer
57b68c50bcSblymn  */
58b68c50bcSblymn char *
item_userptr(ITEM * item)5932a993afSblymn item_userptr(ITEM *item)
60b68c50bcSblymn {
61b68c50bcSblymn 	if (item == NULL)
62b68c50bcSblymn 		return _menui_default_item.userptr;
63b68c50bcSblymn 	else
64b68c50bcSblymn 		return item->userptr;
65b68c50bcSblymn }
66b68c50bcSblymn 
67b68c50bcSblymn /*
68b68c50bcSblymn  * Return the user pointer for the given menu
69b68c50bcSblymn  */
70b68c50bcSblymn char *
menu_userptr(MENU * menu)7132a993afSblymn menu_userptr(MENU *menu)
72b68c50bcSblymn {
73b68c50bcSblymn 	if (menu == NULL)
74b68c50bcSblymn 		return _menui_default_menu.userptr;
75b68c50bcSblymn 	else
76b68c50bcSblymn 		return menu->userptr;
77b68c50bcSblymn }
78b68c50bcSblymn 
79b68c50bcSblymn /*
80b68c50bcSblymn  * Set the user pointer for the given menu
81b68c50bcSblymn  */
82b68c50bcSblymn int
set_menu_userptr(MENU * param_menu,char * userptr)8332a993afSblymn set_menu_userptr(MENU *param_menu, char *userptr)
84b68c50bcSblymn {
85307e770bSblymn 	MENU *menu = (param_menu != NULL) ? param_menu : &_menui_default_menu;
86b68c50bcSblymn 
87307e770bSblymn         menu->userptr = userptr;
88b68c50bcSblymn 
89b68c50bcSblymn         return E_OK;
90b68c50bcSblymn }
91b68c50bcSblymn 
92