diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-08-05 21:20:44 +0200 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-08-05 21:20:44 +0200 |
commit | be1f0f55cc36e0866dbc5e2289d5911dc48eb7ce (patch) | |
tree | 3f8938cbe6cf52631928f2063d72ed78347b8b6d /src | |
parent | a32da554cb16e4fe676705edd16eea0bf89a2f0b (diff) |
Remove old config file parsing code
Diffstat (limited to 'src')
-rw-r--r-- | src/Makefile.am | 11 | ||||
-rw-r--r-- | src/lexer.l | 160 | ||||
-rw-r--r-- | src/parser.y | 331 |
3 files changed, 2 insertions, 500 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 664db750..879d6b4e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -6,7 +6,7 @@ dbus_DATA = bluetooth.conf confdir = $(sysconfdir)/bluetooth -conf_DATA = hcid.conf +conf_DATA = statedir = $(localstatedir)/lib/bluetooth @@ -18,7 +18,6 @@ sbin_PROGRAMS = bluetoothd bluetoothd_SOURCES = main.c hcid.h sdpd.h \ sdpd-server.c sdpd-request.c sdpd-service.c \ sdpd-database.c security.c storage.c \ - parser.h parser.y lexer.l kword.c kword.h \ server.h server.c manager.h manager.c error.h error.c \ adapter.h adapter.c device.h device.c plugin.h plugin.c \ dbus-common.c dbus-common.h dbus-hci.h dbus-hci.c \ @@ -40,16 +39,10 @@ AM_CFLAGS = @BLUEZ_CFLAGS@ @DBUS_CFLAGS@ \ INCLUDES = -I$(top_srcdir)/common -BUILT_SOURCES = parser.h - if MANPAGES -man_MANS = bluetoothd.8 hcid.conf.5 +man_MANS = bluetoothd.8 endif -AM_YFLAGS = -d - -CLEANFILES = lexer.c parser.c parser.h - EXTRA_DIST = bluetooth.conf bluetoothd.8 hcid.conf.5 hcid.conf \ list-devices test-discovery test-manager test-adapter test-device \ simple-service simple-agent service-record.dtd \ diff --git a/src/lexer.l b/src/lexer.l deleted file mode 100644 index 768a0783..00000000 --- a/src/lexer.l +++ /dev/null @@ -1,160 +0,0 @@ -%{ -/* - * - * BlueZ - Bluetooth protocol stack for Linux - * - * Copyright (C) 2000-2001 Qualcomm Incorporated - * Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com> - * Copyright (C) 2002-2008 Marcel Holtmann <marcel@holtmann.org> - * - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <stdio.h> -#include <errno.h> -#include <string.h> -#include <sys/socket.h> - -#include <bluetooth/bluetooth.h> -#include <bluetooth/hci.h> -#include <bluetooth/hci_lib.h> - -#include "hcid.h" -#include "kword.h" -#include "parser.h" - -static char str_buf[255]; - -#define ECHO {;} -#define YY_DECL int yylex(void) - -int cfg_error(const char *ftm, ...); -int yyerror(char *str); - -%} - -%option nounput - -hex 0x[0-9a-zA-Z]+ -num [0-9]+ -kword [A-Za-z0-9\_\-]+ -word [A-Za-z0-9\-\_+=\!\$\#\%\&\*\^\@@\\\~\.]+ -wordnm {word}:{num} -list ({word}\,*)+ -comment \#.*\n -fname [A-Za-z0-9\_\.\-]+ -path (\/{fname})+ -string \".*\" -hci hci[0-9]+ -hextuple [0-9a-zA-Z][0-9a-zA-Z] -hexquad {hextuple}{hextuple} -bdaddr {hextuple}:{hextuple}:{hextuple}:{hextuple}:{hextuple}:{hextuple} -id {hexquad}:{hexquad} - -%x OPTION PARAM - -%% -[ \t] { - /* Skip spaces and tabs */ - ; -} - -{comment} { - /* Skip comments */ - lineno++; -} - -\n { - lineno++; -} - -{hci} { - yylval.str = yytext; - return HCI; -} - -{bdaddr} { - yylval.str = yytext; - return BDADDR; -} - -{hex} { - yylval.num = strtol(yytext, NULL, 16); - return NUM; -} - -{num} { - yylval.num = atoi(yytext); - return NUM; -} - -{kword} { - int kw = find_keyword(cfg_keyword, yytext); - if( kw != -1 ) - return kw; - - yylval.str = yytext; - return WORD; -} - -{word} { - yylval.str = yytext; - return WORD; -} - -{string} { - if (yyleng > sizeof(str_buf) - 1) { - yyerror("string too long"); - return 0; - } - - strncpy(str_buf, yytext + 1, yyleng - 2); - str_buf[yyleng - 2] = '\0'; - - yylval.str = str_buf; - return STRING; -} - -{list} { - yylval.str = yytext; - return LIST; -} - -{path} { - yylval.str = yytext; - return PATH; -} - -{id} { - yylval.str = yytext; - return ID; -} - -. { - return *yytext; -} - -%% - -int yywrap(void) -{ - return 1; -} diff --git a/src/parser.y b/src/parser.y deleted file mode 100644 index c2978612..00000000 --- a/src/parser.y +++ /dev/null @@ -1,331 +0,0 @@ -%{ -/* - * - * BlueZ - Bluetooth protocol stack for Linux - * - * Copyright (C) 2000-2001 Qualcomm Incorporated - * Copyright (C) 2002-2003 Maxim Krasnyansky <maxk@qualcomm.com> - * Copyright (C) 2002-2008 Marcel Holtmann <marcel@holtmann.org> - * - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <stdio.h> -#include <errno.h> -#include <stdlib.h> -#include <string.h> -#include <stdarg.h> - -#include <sys/socket.h> -#include <asm/types.h> - -#include <glib.h> - -#include <bluetooth/bluetooth.h> -#include <bluetooth/hci.h> -#include <bluetooth/hci_lib.h> - -#include "hcid.h" -#include "kword.h" - -int cfg_error(const char *fmt, ...); - -int yyparse(void); -int yylex(void); -int yyerror(char *s); - -void yylex_destroy(void); - -%} - -%union { - char *str; - long num; -} - -%token K_OPTIONS K_DEVICE -%token K_AUTOINIT K_SECURITY K_PAIRING K_OFFMODE K_DEVICEID -%token K_PTYPE K_NAME K_CLASS K_VOICE K_PAGETO K_LM K_LP K_ISCAN K_PSCAN K_DISCOVTO -%token K_PASSKEY -%token K_YES K_NO - -%token <str> WORD PATH STRING LIST HCI BDADDR ID -%token <num> NUM - -%type <num> bool pkt_type link_mode link_policy sec_mode pair_mode off_mode -%type <str> dev_name dev_id hci bdaddr - -%% -config: statement | config statement; -statement: - K_OPTIONS hcid_options - - | device device_options - - | WORD { - cfg_error("Invalid statement '%s'", $1); - } - - | error { - yyclearin; yyerrok; - } - ; - -device: - K_DEVICE { - } - - | K_DEVICE hci { - } - - | K_DEVICE bdaddr { - } - ; - -hcid_options: '{' hcid_opts '}'; -hcid_opts: | hcid_opt ';' | error ';' | hcid_opts hcid_opt ';'; -hcid_opt: - K_AUTOINIT bool { - hcid.auto_init = $2; - } - - | K_SECURITY sec_mode { - hcid.security = $2; - } - - | K_PAIRING pair_mode { - hcid.pairing = $2; - } - - | K_OFFMODE off_mode { - hcid.offmode = $2; - } - - | K_DEVICEID dev_id { - strncpy((char *) hcid.deviceid, $2, 15); - } - - | K_PASSKEY STRING { - strncpy((char *) hcid.pin_code, $2, 16); - hcid.pin_len = strlen($2); - if (hcid.pin_len > 16) - hcid.pin_len = 16; - } - - - | WORD { - cfg_error("Unknown option '%s'", $1); - } - ; - -sec_mode: - WORD { - int opt = find_keyword(sec_param, $1); - if (opt < 0) { - cfg_error("Unknown security mode '%s'", $1); - $$ = 0; - } else - $$ = opt; - } - - | K_NO { - $$ = HCID_SEC_NONE; - } - ; - -pair_mode: - WORD { - int opt = find_keyword(pair_param, $1); - if (opt < 0) { - cfg_error("Unknown pairing mode '%s'", $1); - $$ = 0; - } else - $$ = opt; - } - ; - -off_mode: - WORD { - int opt = find_keyword(off_param, $1); - if (opt < 0) { - cfg_error("Unknown off mode '%s'", $1); - $$ = 0; - } else - $$ = opt; - } - ; - -dev_id: - ID { - } - ; - -device_options: '{' device_opts '}'; -device_opts: | device_opt ';' | error ';' | device_opts device_opt ';'; -device_opt: - K_PTYPE pkt_type { - } - - | K_LM link_mode { - } - - | K_LP link_policy { - } - - | K_NAME dev_name { - } - - | K_CLASS NUM { - } - - | K_VOICE NUM { - } - - | K_PAGETO NUM { - } - - | K_DISCOVTO NUM { - } - - | K_ISCAN bool { - } - - | K_PSCAN bool { - } - - | WORD { - cfg_error("Unknown option '%s'",$1); - YYABORT; - } - ; - -dev_name: - WORD { - $$ = $1; - } - - | STRING { - $$ = $1; - } - ; - -hci: - HCI { - $$ = $1; - } - ; - -bdaddr: - BDADDR { - $$ = $1; - } - ; - -pkt_type: - WORD { - unsigned int opt; - if (!hci_strtoptype($1, &opt)) - cfg_error("Unknown packet type '%s'", $1); - $$ = opt; - } - - | LIST { - unsigned int opt; - if (!hci_strtoptype($1, &opt)) - cfg_error("Unknown packet type '%s'", $1); - $$ = opt; - } - ; - -link_mode: - WORD { - unsigned int opt; - if (!hci_strtolm($1, &opt)) - cfg_error("Unknown link mode '%s'", $1); - $$ = opt; - } - - | LIST { - unsigned int opt; - if (!hci_strtolm($1, &opt)) - cfg_error("Unknown link mode '%s'", $1); - $$ = opt; - } - ; - -link_policy: - WORD { - unsigned int opt; - if (!hci_strtolp($1, &opt)) - cfg_error("Unknown link policy '%s'", $1); - $$ = opt; - } - - | LIST { - unsigned int opt; - if (!hci_strtolp($1, &opt)) - cfg_error("Unknown link policy '%s'", $1); - $$ = opt; - } - ; - -bool: K_YES { $$ = 1; } | K_NO { $$ = 0; }; - -%% - -int yyerror(char *s) -{ - error("%s line %d", s, lineno); - return 0; -} - -int cfg_error(const char *fmt, ...) -{ - char buf[255]; - va_list ap; - - va_start(ap, fmt); - vsnprintf(buf,sizeof(buf),fmt,ap); - va_end(ap); - - yyerror(buf); - return 0; -} - -/* - * Read config file. - */ -int read_config(char *file) -{ - extern FILE *yyin; - - if (!(yyin = fopen(file, "r"))) { - error("Can't open config file %s", file); - return -1; - } - - lineno = 1; - yyparse(); - - fclose(yyin); - - return 0; -} |