/* * Copyright (c) 1997 Joerg Wunsch. All rights reserved. * * Copyright (c) 1997, 2000 Hellmuth Michaelis. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *--------------------------------------------------------------------------- * * i4b daemon - runtime configuration lexical analyzer * --------------------------------------------------- * * $Id: rc_scan.l,v 1.7 2009/10/29 14:39:24 christos Exp $ * * $FreeBSD$ * * last edit-date: [Mon Oct 2 22:49:40 2000] * *---------------------------------------------------------------------------*/ %{ #include #include #include #include #include #include #include "rc_parse.h" int lineno; void reset_scanner(FILE *infile); int yylex(void); %} %option noyywrap nounput noinput %% #.*$ { /* * Drop comment. NB: this prevents a hash * sign from appearing inside a quoted string. */ } ["][^"]*["] { char *str; if ((str = malloc(yyleng - 1)) == 0) errx(EX_OSERR, "Out of virtual memory"); memcpy(str, yytext + 1, yyleng - 2); str[yyleng - 2] = 0; yylval.str = str; return STRING; } (-*[0-9]+)|\* { char *str; char *p = yytext; int i = 0; if ((str = malloc(128)) == 0) errx(EX_OSERR, "Out of virtual memory"); while(*p == '-' || isdigit((unsigned char)*p) || *p == '*') str[i++] = *p++; str[i] = '\0'; yylval.str = str; return NUMBERSTR; } acctall { return ACCTALL; } acctfile { return ACCTFILE; } alert { return ALERT; } aliasing { return ALIASING; } aliasfile { return ALIASFNAME; } answerprog { return ANSWERPROG; } autoupdown { return AUTOUPDOWN; } b1protocol { return B1PROTOCOL; } beepconnect { return BEEPCONNECT; } budget-callbackperiod { return BUDGETCALLBACKPERIOD; } budget-callbackncalls { return BUDGETCALLBACKNCALLS; } budget-callbacksfile { return BUDGETCALLBACKSFILE; } budget-callbacksfile-rotate { return BUDGETCALLBACKSFILEROTATE; } budget-calloutperiod { return BUDGETCALLOUTPERIOD; } budget-calloutncalls { return BUDGETCALLOUTNCALLS; } budget-calloutsfile { return BUDGETCALLOUTSFILE; } budget-calloutsfile-rotate { return BUDGETCALLOUTSFILEROTATE; } callbackwait { return CALLBACKWAIT; } calledbackwait { return CALLEDBACKWAIT; } connectprog { return CONNECTPROG; } controller { return CONTROLLER; } dialin-reaction { return REACTION; } dialout-type { return DIALOUTTYPE; } dialrandincr { return DIALRANDINCR; } dialretries { return DIALRETRIES; } direction { return DIRECTION; } disconnectprog { return DISCONNECTPROG; } downtries { return DOWNTRIES; } downtime { return DOWNTIME; } earlyhangup { return EARLYHANGUP; } entry { return ENTRY; } extcallattr { return EXTCALLATTR; } firmware { return FIRMWARE; } holidayfile { return HOLIDAYFILE; } idletime-incoming { return IDLETIME_IN; } idletime-outgoing { return IDLETIME_OUT; } idle-algorithm-outgoing { return IDLE_ALG_OUT; } isdncontroller { return ISDNCONTROLLER; } isdnchannel { return ISDNCHANNEL; } isdntime { return ISDNTIME; } isdntxdel-incoming { return ISDNTXDELIN; } isdntxdel-outgoing { return ISDNTXDELOUT; } local-phone-dialout { return LOCAL_PHONE_DIALOUT; } local-phone-incoming { return LOCAL_PHONE_INCOMING; } mailer { return MAILER; } mailto { return MAILTO; } monitor-allowed { return MONITORSW; } monitor-port { return MONITORPORT; } monitor { return MONITOR; } monitor-access { return MONITORACCESS; } fullcmd { return FULLCMD; } restrictedcmd { return RESTRICTEDCMD; } channelstate { return CHANNELSTATE; } callin { return CALLIN; } callout { return CALLOUT; } logevents { return LOGEVENTS; } name { return NAME; } no { return NO; } off { return OFF; } on { return ON; } ppp-auth-rechallenge { return PPP_AUTH_RECHALLENGE; } ppp-auth-paranoid { return PPP_AUTH_PARANOID; } ppp-expect-auth { return PPP_EXPECT_AUTH; } ppp-expect-name { return PPP_EXPECT_NAME; } ppp-expect-password { return PPP_EXPECT_PASSWORD; } ppp-send-auth { return PPP_SEND_AUTH; } ppp-send-name { return PPP_SEND_NAME; } ppp-send-password { return PPP_SEND_PASSWORD; } protocol { return PROTOCOL; } ratesfile { return RATESFILE; } ratetype { return RATETYPE; } recoverytime { return RECOVERYTIME; } regexpr { return REGEXPR; } regprog { return REGPROG; } remdial-handling { return REMOTE_NUMBERS_HANDLING; } remote-phone-dialout { return REMOTE_PHONE_DIALOUT; } remote-phone-incoming { return REMOTE_PHONE_INCOMING; } rotatesuffix { return ROTATESUFFIX; } rtprio { return RTPRIO; } system { return SYSTEM; } tinainitprog { return TINAINITPROG; } unitlength { return UNITLENGTH; } unitlengthsrc { return UNITLENGTHSRC; } useacctfile { return USEACCTFILE; } usrdevicename { return USRDEVICENAME; } usrdeviceunit { return USRDEVICEUNIT; } usedown { return USEDOWN; } valid { return VALID; } yes { return YES; } \n { lineno++; return '\n'; } [A-Za-z/.][-A-Za-z0-9_/.]* { char *str; if ((str = strdup(yytext)) == 0) err(EX_OSERR, "Out of virtual memory"); yylval.str = str; return STRING; } [ \t] { /* drop white space */ } . { return yytext[0]; } %% void reset_scanner(FILE *infile) { yyrestart(infile); lineno = 1; }