frm_req_name.c revision 50276
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 form_request_name                                                 *
35* Routines to handle external names of menu requests                       *
36***************************************************************************/
37
38#include "form.priv.h"
39
40MODULE_ID("$Id: frm_req_name.c,v 1.7 1999/05/16 17:21:53 juergen Exp $")
41
42static const char *request_names[ MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1 ] = {
43  "NEXT_PAGE"	 ,
44  "PREV_PAGE"	 ,
45  "FIRST_PAGE"	 ,
46  "LAST_PAGE"	 ,
47
48  "NEXT_FIELD"	 ,
49  "PREV_FIELD"	 ,
50  "FIRST_FIELD"	 ,
51  "LAST_FIELD"	 ,
52  "SNEXT_FIELD"	 ,
53  "SPREV_FIELD"	 ,
54  "SFIRST_FIELD" ,
55  "SLAST_FIELD"	 ,
56  "LEFT_FIELD"	 ,
57  "RIGHT_FIELD"	 ,
58  "UP_FIELD"	 ,
59  "DOWN_FIELD"	 ,
60
61  "NEXT_CHAR"	 ,
62  "PREV_CHAR"	 ,
63  "NEXT_LINE"	 ,
64  "PREV_LINE"	 ,
65  "NEXT_WORD"	 ,
66  "PREV_WORD"	 ,
67  "BEG_FIELD"	 ,
68  "END_FIELD"	 ,
69  "BEG_LINE"	 ,
70  "END_LINE"	 ,
71  "LEFT_CHAR"	 ,
72  "RIGHT_CHAR"	 ,
73  "UP_CHAR"	 ,
74  "DOWN_CHAR"	 ,
75
76  "NEW_LINE"	 ,
77  "INS_CHAR"	 ,
78  "INS_LINE"	 ,
79  "DEL_CHAR"	 ,
80  "DEL_PREV"	 ,
81  "DEL_LINE"	 ,
82  "DEL_WORD"	 ,
83  "CLR_EOL"	 ,
84  "CLR_EOF"	 ,
85  "CLR_FIELD"	 ,
86  "OVL_MODE"	 ,
87  "INS_MODE"	 ,
88  "SCR_FLINE"	 ,
89  "SCR_BLINE"	 ,
90  "SCR_FPAGE"	 ,
91  "SCR_BPAGE"	 ,
92  "SCR_FHPAGE"   ,
93  "SCR_BHPAGE"   ,
94  "SCR_FCHAR"    ,
95  "SCR_BCHAR"    ,
96  "SCR_HFLINE"   ,
97  "SCR_HBLINE"   ,
98  "SCR_HFHALF"   ,
99  "SCR_HBHALF"   ,
100
101  "VALIDATION"	 ,
102  "NEXT_CHOICE"	 ,
103  "PREV_CHOICE"
104};
105#define A_SIZE (sizeof(request_names)/sizeof(request_names[0]))
106
107/*---------------------------------------------------------------------------
108|   Facility      :  libnform
109|   Function      :  const char * form_request_name (int request);
110|
111|   Description   :  Get the external name of a form request.
112|
113|   Return Values :  Pointer to name      - on success
114|                    NULL                 - on invalid request code
115+--------------------------------------------------------------------------*/
116const char *form_request_name( int request )
117{
118  if ( (request < MIN_FORM_COMMAND) || (request > MAX_FORM_COMMAND) )
119    {
120      SET_ERROR (E_BAD_ARGUMENT);
121      return (const char *)0;
122    }
123  else
124    return request_names[ request - MIN_FORM_COMMAND ];
125}
126
127
128/*---------------------------------------------------------------------------
129|   Facility      :  libnform
130|   Function      :  int form_request_by_name (const char *str);
131|
132|   Description   :  Search for a request with this name.
133|
134|   Return Values :  Request Id       - on success
135|                    E_NO_MATCH       - request not found
136+--------------------------------------------------------------------------*/
137int form_request_by_name( const char *str )
138{
139  /* because the table is so small, it doesn't really hurt
140     to run sequentially through it.
141  */
142  unsigned int i = 0;
143  char buf[16];
144
145  if (str)
146    {
147      strncpy(buf,str,sizeof(buf));
148      while( (i<sizeof(buf)) && (buf[i] != '\0') )
149	{
150	  buf[i] = toupper(buf[i]);
151	  i++;
152	}
153
154      for (i=0; i < A_SIZE; i++)
155	{
156	  if (strncmp(request_names[i],buf,sizeof(buf))==0)
157	    return MIN_FORM_COMMAND + i;
158	}
159    }
160  RETURN(E_NO_MATCH);
161}
162
163/* frm_req_name.c ends here */
164