1 1.2 lukem %{ 2 1.13 abs /* $NetBSD: nslexer.l,v 1.13 2012/06/25 22:32:45 abs Exp $ */ 3 1.2 lukem 4 1.2 lukem /*- 5 1.2 lukem * Copyright (c) 1997, 1998, 1999 The NetBSD Foundation, Inc. 6 1.2 lukem * All rights reserved. 7 1.2 lukem * 8 1.2 lukem * This code is derived from software contributed to The NetBSD Foundation 9 1.2 lukem * by Luke Mewburn. 10 1.2 lukem * 11 1.2 lukem * Redistribution and use in source and binary forms, with or without 12 1.2 lukem * modification, are permitted provided that the following conditions 13 1.2 lukem * are met: 14 1.2 lukem * 1. Redistributions of source code must retain the above copyright 15 1.2 lukem * notice, this list of conditions and the following disclaimer. 16 1.2 lukem * 2. Redistributions in binary form must reproduce the above copyright 17 1.2 lukem * notice, this list of conditions and the following disclaimer in the 18 1.2 lukem * documentation and/or other materials provided with the distribution. 19 1.2 lukem * 20 1.2 lukem * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 21 1.2 lukem * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 22 1.2 lukem * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 23 1.2 lukem * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 24 1.2 lukem * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 1.2 lukem * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 1.2 lukem * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 1.2 lukem * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 1.2 lukem * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 1.2 lukem * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 1.2 lukem * POSSIBILITY OF SUCH DAMAGE. 31 1.2 lukem */ 32 1.3 lukem 33 1.3 lukem #include <sys/cdefs.h> 34 1.3 lukem #if defined(LIBC_SCCS) && !defined(lint) 35 1.13 abs __RCSID("$NetBSD: nslexer.l,v 1.13 2012/06/25 22:32:45 abs Exp $"); 36 1.3 lukem #endif /* LIBC_SCCS and not lint */ 37 1.2 lukem 38 1.4 kleink #include "namespace.h" 39 1.2 lukem #include <ctype.h> 40 1.2 lukem #define _NS_PRIVATE 41 1.2 lukem #include <nsswitch.h> 42 1.2 lukem #include <string.h> 43 1.7 lukem #include <syslog.h> 44 1.2 lukem 45 1.2 lukem #include "nsparser.h" 46 1.2 lukem 47 1.2 lukem %} 48 1.2 lukem 49 1.11 christos %option yylineno nounput noinput 50 1.7 lukem %option never-interactive 51 1.2 lukem 52 1.2 lukem BLANK [ \t] 53 1.2 lukem CR \n 54 1.2 lukem STRING [a-zA-Z][a-zA-Z0-9_]* 55 1.2 lukem 56 1.2 lukem %% 57 1.2 lukem 58 1.2 lukem {BLANK}+ ; /* skip whitespace */ 59 1.2 lukem 60 1.2 lukem #.* ; /* skip comments */ 61 1.2 lukem 62 1.2 lukem \\{CR} ; /* allow continuation */ 63 1.2 lukem 64 1.2 lukem {CR} return NL; 65 1.2 lukem 66 1.2 lukem [sS][uU][cC][cC][eE][sS][sS] return SUCCESS; 67 1.2 lukem [uU][nN][aA][vV][aA][iI][lL] return UNAVAIL; 68 1.2 lukem [nN][oO][tT][fF][oO][uU][nN][dD] return NOTFOUND; 69 1.2 lukem [tT][rR][yY][aA][gG][aA][iI][nN] return TRYAGAIN; 70 1.2 lukem 71 1.2 lukem [rR][eE][tT][uU][rR][nN] return RETURN; 72 1.2 lukem [cC][oO][nN][tT][iI][nN][uU][eE] return CONTINUE; 73 1.2 lukem 74 1.2 lukem {STRING} { 75 1.2 lukem char *p; 76 1.6 thorpej size_t i; 77 1.2 lukem 78 1.7 lukem if ((p = strdup(yytext)) == NULL) { 79 1.7 lukem syslog(LOG_ERR, "libc nsdispatch: %m"); 80 1.7 lukem return NL; 81 1.7 lukem } 82 1.2 lukem 83 1.2 lukem for (i = 0; i < strlen(p); i++) { 84 1.2 lukem if (isupper((unsigned char)p[i])) 85 1.2 lukem p[i] = tolower((unsigned char)p[i]); 86 1.2 lukem } 87 1.2 lukem _nsyylval.str = p; 88 1.2 lukem return STRING; 89 1.2 lukem } 90 1.2 lukem 91 1.5 lukem . return yytext[0]; 92 1.2 lukem 93 1.2 lukem %% 94 1.2 lukem 95 1.2 lukem #undef _nsyywrap 96 1.2 lukem int 97 1.12 matt _nsyywrap(void) 98 1.2 lukem { 99 1.2 lukem return 1; 100 1.2 lukem } /* _nsyywrap */ 101 1.2 lukem 102 1.2 lukem void 103 1.13 abs _nsyyerror(const char *msg) 104 1.2 lukem { 105 1.2 lukem 106 1.7 lukem syslog(LOG_WARNING, "libc nsdispatch: %s line %d: %s at '%s'", 107 1.7 lukem _PATH_NS_CONF, yylineno, msg, yytext); 108 1.2 lukem } /* _nsyyerror */ 109