1 /**************************************************************************** 2 * Copyright (c) 1998 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.12 1999/05/16 17:27:47 juergen 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 const char *menu_request_name( int request ) 73 { 74 if ( (request < MIN_MENU_COMMAND) || (request > MAX_MENU_COMMAND) ) 75 { 76 SET_ERROR(E_BAD_ARGUMENT); 77 return (const char *)0; 78 } 79 else 80 return request_names[ request - MIN_MENU_COMMAND ]; 81 } 82 83 84 /*--------------------------------------------------------------------------- 85 | Facility : libnmenu 86 | Function : int menu_request_by_name (const char *str); 87 | 88 | Description : Search for a request with this name. 89 | 90 | Return Values : Request Id - on success 91 | E_NO_MATCH - request not found 92 +--------------------------------------------------------------------------*/ 93 int menu_request_by_name( const char *str ) 94 { 95 /* because the table is so small, it doesn't really hurt 96 to run sequentially through it. 97 */ 98 unsigned int i = 0; 99 char buf[16]; 100 101 if (str) 102 { 103 strncpy(buf,str,sizeof(buf)); 104 while( (i<sizeof(buf)) && (buf[i] != '\0') ) 105 { 106 buf[i] = toupper(buf[i]); 107 i++; 108 } 109 110 for (i=0; i < A_SIZE; i++) 111 { 112 if (strncmp(request_names[i],buf,sizeof(buf))==0) 113 return MIN_MENU_COMMAND + i; 114 } 115 } 116 RETURN(E_NO_MATCH); 117 } 118 119 /* m_req_name.c ends here */ 120