1 /**************************************************************************** 2 * Copyright (c) 1998,2000 Free Software Foundation, Inc. * 3 * * 4 * Permission is hereby granted, free of charge, to any person obtaining a * 5 * copy of this software and associated documentation files (the * 6 * "Software"), to deal in the Software without restriction, including * 7 * without limitation the rights to use, copy, modify, merge, publish, * 8 * distribute, distribute with modifications, sublicense, and/or sell * 9 * copies of the Software, and to permit persons to whom the Software is * 10 * furnished to do so, subject to the following conditions: * 11 * * 12 * The above copyright notice and this permission notice shall be included * 13 * in all copies or substantial portions of the Software. * 14 * * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * 16 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * 17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * 18 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * 19 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * 20 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * 21 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * 22 * * 23 * Except as contained in this notice, the name(s) of the above copyright * 24 * holders shall not be used in advertising or otherwise to promote the * 25 * sale, use or other dealings in this Software without prior written * 26 * authorization. * 27 ****************************************************************************/ 28 29 /**************************************************************************** 30 * Author: Juergen Pfeifer <juergen.pfeifer@gmx.net> 1995,1997 * 31 ****************************************************************************/ 32 33 /*************************************************************************** 34 * Module m_request_name * 35 * Routines to handle external names of menu requests * 36 ***************************************************************************/ 37 38 #include "menu.priv.h" 39 40 MODULE_ID("$Id: m_req_name.c,v 1.13 2000/12/10 02:16:48 tom Exp $") 41 42 static const char *request_names[ MAX_MENU_COMMAND - MIN_MENU_COMMAND + 1 ] = { 43 "LEFT_ITEM" , 44 "RIGHT_ITEM" , 45 "UP_ITEM" , 46 "DOWN_ITEM" , 47 "SCR_ULINE" , 48 "SCR_DLINE" , 49 "SCR_DPAGE" , 50 "SCR_UPAGE" , 51 "FIRST_ITEM" , 52 "LAST_ITEM" , 53 "NEXT_ITEM" , 54 "PREV_ITEM" , 55 "TOGGLE_ITEM" , 56 "CLEAR_PATTERN", 57 "BACK_PATTERN" , 58 "NEXT_MATCH" , 59 "PREV_MATCH" 60 }; 61 #define A_SIZE (sizeof(request_names)/sizeof(request_names[0])) 62 63 /*--------------------------------------------------------------------------- 64 | Facility : libnmenu 65 | Function : const char * menu_request_name (int request); 66 | 67 | Description : Get the external name of a menu request. 68 | 69 | Return Values : Pointer to name - on success 70 | NULL - on invalid request code 71 +--------------------------------------------------------------------------*/ 72 NCURSES_EXPORT(const char *) 73 menu_request_name ( int request ) 74 { 75 if ( (request < MIN_MENU_COMMAND) || (request > MAX_MENU_COMMAND) ) 76 { 77 SET_ERROR(E_BAD_ARGUMENT); 78 return (const char *)0; 79 } 80 else 81 return request_names[ request - MIN_MENU_COMMAND ]; 82 } 83 84 85 /*--------------------------------------------------------------------------- 86 | Facility : libnmenu 87 | Function : int menu_request_by_name (const char *str); 88 | 89 | Description : Search for a request with this name. 90 | 91 | Return Values : Request Id - on success 92 | E_NO_MATCH - request not found 93 +--------------------------------------------------------------------------*/ 94 NCURSES_EXPORT(int) 95 menu_request_by_name ( const char *str ) 96 { 97 /* because the table is so small, it doesn't really hurt 98 to run sequentially through it. 99 */ 100 unsigned int i = 0; 101 char buf[16]; 102 103 if (str) 104 { 105 strncpy(buf,str,sizeof(buf)); 106 while( (i<sizeof(buf)) && (buf[i] != '\0') ) 107 { 108 buf[i] = toupper(buf[i]); 109 i++; 110 } 111 112 for (i=0; i < A_SIZE; i++) 113 { 114 if (strncmp(request_names[i],buf,sizeof(buf))==0) 115 return MIN_MENU_COMMAND + i; 116 } 117 } 118 RETURN(E_NO_MATCH); 119 } 120 121 /* m_req_name.c ends here */ 122