xref: /freebsd/lib/libc/net/nslexer.l (revision eba230afba4932f02a1ca44efc797cf7499a5cb0)
1248aee62SJacques Vidrine %{
2248aee62SJacques Vidrine /*	$NetBSD: nslexer.l,v 1.3 1999/01/25 00:16:17 lukem Exp $	*/
3248aee62SJacques Vidrine 
4248aee62SJacques Vidrine /*-
5*b61a5730SWarner Losh  * SPDX-License-Identifier: BSD-2-Clause
6d915a14eSPedro F. Giffuni  *
7248aee62SJacques Vidrine  * Copyright (c) 1997, 1998, 1999 The NetBSD Foundation, Inc.
8248aee62SJacques Vidrine  * All rights reserved.
9248aee62SJacques Vidrine  *
10248aee62SJacques Vidrine  * This code is derived from software contributed to The NetBSD Foundation
11248aee62SJacques Vidrine  * by Luke Mewburn.
12248aee62SJacques Vidrine  *
13248aee62SJacques Vidrine  * Redistribution and use in source and binary forms, with or without
14248aee62SJacques Vidrine  * modification, are permitted provided that the following conditions
15248aee62SJacques Vidrine  * are met:
16248aee62SJacques Vidrine  * 1. Redistributions of source code must retain the above copyright
17248aee62SJacques Vidrine  *    notice, this list of conditions and the following disclaimer.
18248aee62SJacques Vidrine  * 2. Redistributions in binary form must reproduce the above copyright
19248aee62SJacques Vidrine  *    notice, this list of conditions and the following disclaimer in the
20248aee62SJacques Vidrine  *    documentation and/or other materials provided with the distribution.
21248aee62SJacques Vidrine  *
22248aee62SJacques Vidrine  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
23248aee62SJacques Vidrine  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
24248aee62SJacques Vidrine  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
25248aee62SJacques Vidrine  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
26248aee62SJacques Vidrine  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27248aee62SJacques Vidrine  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28248aee62SJacques Vidrine  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29248aee62SJacques Vidrine  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30248aee62SJacques Vidrine  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31248aee62SJacques Vidrine  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32248aee62SJacques Vidrine  * POSSIBILITY OF SUCH DAMAGE.
33248aee62SJacques Vidrine  */
34248aee62SJacques Vidrine 
352bbd7cf8SJacques Vidrine #include "namespace.h"
36248aee62SJacques Vidrine #include <ctype.h>
37248aee62SJacques Vidrine #define _NS_PRIVATE
38248aee62SJacques Vidrine #include <nsswitch.h>
39248aee62SJacques Vidrine #include <string.h>
4046d93063SJacques Vidrine #include <syslog.h>
412bbd7cf8SJacques Vidrine #include "un-namespace.h"
42248aee62SJacques Vidrine 
43248aee62SJacques Vidrine #include "nsparser.h"
44248aee62SJacques Vidrine 
45248aee62SJacques Vidrine %}
46248aee62SJacques Vidrine 
47d3450d02SEdward Tomasz Napierala %option never-interactive
48a7880d59SJung-uk Kim %option noinput
49a7880d59SJung-uk Kim %option nounput
50248aee62SJacques Vidrine %option yylineno
51248aee62SJacques Vidrine 
52248aee62SJacques Vidrine BLANK		[ \t]
53248aee62SJacques Vidrine CR		\n
54248aee62SJacques Vidrine STRING		[a-zA-Z][a-zA-Z0-9_]*
55248aee62SJacques Vidrine 
56248aee62SJacques Vidrine %%
57248aee62SJacques Vidrine 
58248aee62SJacques Vidrine {BLANK}+	;			/* skip whitespace */
59248aee62SJacques Vidrine 
60248aee62SJacques Vidrine #.*		;			/* skip comments */
61248aee62SJacques Vidrine 
62248aee62SJacques Vidrine \\{CR}		;			/* allow continuation */
63248aee62SJacques Vidrine 
64248aee62SJacques Vidrine {CR}		return NL;
65248aee62SJacques Vidrine 
66248aee62SJacques Vidrine [sS][uU][cC][cC][eE][sS][sS]		return SUCCESS;
67248aee62SJacques Vidrine [uU][nN][aA][vV][aA][iI][lL]		return UNAVAIL;
68248aee62SJacques Vidrine [nN][oO][tT][fF][oO][uU][nN][dD]	return NOTFOUND;
69248aee62SJacques Vidrine [tT][rR][yY][aA][gG][aA][iI][nN]	return TRYAGAIN;
70248aee62SJacques Vidrine 
71248aee62SJacques Vidrine [rR][eE][tT][uU][rR][nN]		return RETURN;
72248aee62SJacques Vidrine [cC][oO][nN][tT][iI][nN][uU][eE]	return CONTINUE;
73248aee62SJacques Vidrine 
74248aee62SJacques Vidrine {STRING}	{
75248aee62SJacques Vidrine 			char *p;
76248aee62SJacques Vidrine 			int i;
77248aee62SJacques Vidrine 
7846d93063SJacques Vidrine 			if ((p = strdup(yytext)) == NULL) {
7946d93063SJacques Vidrine 				syslog(LOG_ERR,
8046d93063SJacques Vidrine 			       "NSSWITCH(nslexer): memory allocation failure");
8146d93063SJacques Vidrine 				return ERRORTOKEN;
8246d93063SJacques Vidrine 			}
83248aee62SJacques Vidrine 			for (i = 0; i < strlen(p); i++) {
84248aee62SJacques Vidrine 				if (isupper((unsigned char)p[i]))
85248aee62SJacques Vidrine 					p[i] = tolower((unsigned char)p[i]);
86248aee62SJacques Vidrine 			}
87248aee62SJacques Vidrine 			_nsyylval.str = p;
88248aee62SJacques Vidrine 			return STRING;
89248aee62SJacques Vidrine 		}
90248aee62SJacques Vidrine 
9170982dcaSBill Fenner .		return yytext[0];
92248aee62SJacques Vidrine 
93248aee62SJacques Vidrine %%
94248aee62SJacques Vidrine 
95248aee62SJacques Vidrine #undef _nsyywrap
96248aee62SJacques Vidrine int
97626c9d74SCraig Rodrigues _nsyywrap(void)
98248aee62SJacques Vidrine {
99248aee62SJacques Vidrine 	return 1;
100248aee62SJacques Vidrine } /* _nsyywrap */
101248aee62SJacques Vidrine 
102248aee62SJacques Vidrine void
_nsyyerror(const char * msg)103626c9d74SCraig Rodrigues _nsyyerror(const char *msg)
104248aee62SJacques Vidrine {
105248aee62SJacques Vidrine 
10646d93063SJacques Vidrine 	 syslog(LOG_ERR, "NSSWITCH(nslexer): %s line %d: %s at '%s'",
10746d93063SJacques Vidrine 	     _PATH_NS_CONF, yylineno, msg, yytext);
108248aee62SJacques Vidrine } /* _nsyyerror */
109