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