4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
22 /* Copyright (c) 1988 AT&T */
23 /* All Rights Reserved */
27 * Copyright (c) 1997, by Sun Mircrosystems, Inc.
28 * All rights reserved.
31 #pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.13 */
35 #include <sys/types.h>
40 substr(MENU
*m
, char *s1
, char *s2
)
44 if (toupper(*s1
++) != toupper(*s2
++)) {
62 _match(MENU
*m
, char c
, ITEM
**current
)
67 * Indicates search has cycled past the current item. If the current
68 * item is matched after cycled is true then NO_MATCH results.
72 /* If a backspace is encountered then search backward from the */
73 /* current item. Otherwise, search forward from the current item. */
76 if (c
&& c
!= '\b') { /* c could be null */
77 if (Pindex(m
)+1 > MaxName(m
)) {
80 IthPattern(m
, Pindex(m
)) = c
;
81 IthPattern(m
, ++Pindex(m
)) = '\0';
97 if (++i
>= Nitems(m
)) {
101 if (substr(m
, Pattern(m
), Name(IthItem(m
, i
)))) {
109 if (i
== Index(*current
) && cycled
) {
112 *current
= IthItem(m
, i
);
114 if (c
&& c
!= '\b') {
116 IthPattern(m
, Pindex(m
)) = '\0';
124 menu_pattern(MENU
*m
)
138 set_menu_pattern(MENU
*m
, char *s
)
144 return (E_BAD_ARGUMENT
);
147 return (E_NOT_CONNECTED
);
150 return (E_BAD_STATE
);
153 IthPattern(m
, 0) = '\0';
165 current
= Current(m
);
168 if (_match(m
, *s
, ¤t
) != E_OK
) {
169 IthPattern(m
, 0) = '\0';
175 _chk_current(m
, &top
, current
);
176 _affect_change(m
, top
, current
);