From cf824c4d12cbbf2f287fdee817b367974d2f8421 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Wed, 5 Mar 2008 20:03:08 +0000 Subject: Remove the support for SDP parsing via expat --- acinclude.m4 | 12 --- common/Makefile.am | 4 - common/sdp-expat.c | 292 ----------------------------------------------------- configure.in | 1 - cups/Makefile.am | 4 - daemon/Makefile.am | 4 - hcid/Makefile.am | 4 - 7 files changed, 321 deletions(-) delete mode 100644 common/sdp-expat.c diff --git a/acinclude.m4 b/acinclude.m4 index f9b9a224..3135d94c 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -156,11 +156,6 @@ AC_DEFUN([AC_PATH_USB], [ AC_DEFINE(NEED_USB_INTERRUPT_READ, 1, [Define to 1 if you need the usb_interrupt_read() function.])) ]) -AC_DEFUN([AC_PATH_EXPAT], [ - AC_CHECK_LIB(expat, XML_ParserCreate_MM, expat_found=yes, expat_found=no) - AC_CHECK_HEADERS(expat.h, dummy=yes, expat_found=no) -]) - AC_DEFUN([AC_PATH_INOTIFY], [ AC_CHECK_LIB(c ,inotify_init, inotify_found=yes, inotify_found=no) AC_CHECK_HEADERS(sys/inotify.h, dummy=yes, inotify_found=no) @@ -178,7 +173,6 @@ AC_DEFUN([AC_ARG_BLUEZ], [ pie_enable=no sndfile_enable=${sndfile_found} inotify_enable=${inotify_found} - expat_enable=${expat_found} hal_enable=${hal_found} usb_enable=${usb_found} alsa_enable=${alsa_found} @@ -248,10 +242,6 @@ AC_DEFUN([AC_ARG_BLUEZ], [ inotify_enable=${enableval} ]) - AC_ARG_ENABLE(expat, AC_HELP_STRING([--enable-expat], [enable Expat support]), [ - expat_enable=${enableval} - ]) - AC_ARG_ENABLE(hal, AC_HELP_STRING([--enable-hal], [enable HAL support]), [ hal_enable=${enableval} ]) @@ -393,14 +383,12 @@ AC_DEFUN([AC_ARG_BLUEZ], [ DBUS_LIBS="$DBUS_GLIB_LIBS" fi AM_CONDITIONAL(GLIB, true) - AM_CONDITIONAL(EXPAT, false) else AC_SUBST([GLIB_CFLAGS], ['-I$(top_srcdir)/eglib']) AC_SUBST([GLIB_LIBS], ['$(top_builddir)/eglib/libeglib.la -ldl']) AC_SUBST([GMODULE_CFLAGS], ['']) AC_SUBST([GMODULE_LIBS], ['']) AM_CONDITIONAL(GLIB, false) - AM_CONDITIONAL(EXPAT, test "${expat_enable}" = "yes" && test "${expat_found}" = "yes") fi AC_SUBST([SBC_CFLAGS], ['-I$(top_srcdir)/sbc']) diff --git a/common/Makefile.am b/common/Makefile.am index ed92765e..a6cab4d2 100644 --- a/common/Makefile.am +++ b/common/Makefile.am @@ -2,12 +2,8 @@ if GLIB sdp_sources = sdp-glib.c else -if EXPAT -sdp_sources = sdp-expat.c -else sdp_sources = sdp-dummy.c endif -endif if HAL hal_sources = hal-libhal.c diff --git a/common/sdp-expat.c b/common/sdp-expat.c deleted file mode 100644 index 7076261a..00000000 --- a/common/sdp-expat.c +++ /dev/null @@ -1,292 +0,0 @@ -/* - * - * BlueZ - Bluetooth protocol stack for Linux - * - * Copyright (C) 2005-2008 Marcel Holtmann - * - * - * 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 -#endif - -#include -#include - -#include -#include - -#include - -#include "logging.h" -#include "sdp-xml.h" - -static int compute_seq_size(sdp_data_t *data) -{ - int unit_size = data->unitSize; - sdp_data_t *seq = data->val.dataseq; - - for (; seq; seq = seq->next) - unit_size += seq->unitSize; - - return unit_size; -} - -/* Expat specific implementation of the context struct */ - -struct sdp_xml_context { - XML_Parser parser; /* Parser object being used */ - sdp_record_t *sdprec; /* SDP Record being built */ - struct sdp_xml_data *stack_head; /* Top of the stack of attributes */ - int attrId; /* Id of the most recently processed attribute */ -}; - -static void convert_xml_to_sdp_start(void *data, const char *el, const char **attr) -{ - struct sdp_xml_context *context = data; - int i; - - if (!strcmp(el, "record")) - return; - - if (!strcmp(el, "attribute")) { - /* Get the ID */ - for (i = 0; attr[i]; i += 1) { - if (!strcmp(attr[i], "id")) { - context->attrId = strtol(attr[i + 1], 0, 0); - break; - } - } - - return; - } - - /* Assume every other tag is an element of some sort */ - if (context->stack_head) { - struct sdp_xml_data *newelem = sdp_xml_data_alloc(); - newelem->next = context->stack_head; - context->stack_head = newelem; - } else { - context->stack_head = sdp_xml_data_alloc(); - context->stack_head->next = NULL; - } - - if (!strcmp(el, "sequence")) - context->stack_head->data = sdp_data_alloc(SDP_SEQ8, NULL); - else if (!strcmp(el, "alternate")) - context->stack_head->data = sdp_data_alloc(SDP_ALT8, NULL); - else { - /* Parse value, name, encoding */ - for (i = 0; attr[i]; i += 2) { - if (!strcmp(attr[i], "value")) { - int curlen = strlen(context->stack_head->text); - int attrlen = strlen(attr[i + 1]); - - /* Ensure we're big enough */ - while ((curlen + 1 + attrlen) > context->stack_head->size) { - sdp_xml_data_expand(context->stack_head); - } - - memcpy(&context->stack_head->text[curlen], - attr[i + 1], attrlen); - context->stack_head->text[curlen + attrlen] = '\0'; - } - - if (!strcmp(attr[i], "encoding")) { - if (!strcmp(attr[i + 1], "hex")) - context->stack_head->type = 1; - } - - if (!strcmp(attr[i], "name")) { - context->stack_head->name = strdup(attr[i + 1]); - } - } - - context->stack_head->data = sdp_xml_parse_datatype(el, - context->stack_head, context->sdprec); - - /* Could not parse an entry */ - if (context->stack_head->data == NULL) - XML_StopParser(context->parser, 0); - } -} - -static void convert_xml_to_sdp_end(void *data, const char *el) -{ - struct sdp_xml_context *context = data; - struct sdp_xml_data *elem; - - if (!strcmp(el, "record")) - return; - - if (!strcmp(el, "attribute")) { - if (context->stack_head && context->stack_head->data) { - int ret = sdp_attr_add(context->sdprec, context->attrId, - context->stack_head->data); - if (ret == -1) - debug("Trouble adding attribute\n"); - - context->stack_head->data = NULL; - sdp_xml_data_free(context->stack_head); - context->stack_head = NULL; - } else { - debug("No Data for attribute: %d\n", context->attrId); - } - - return; - } else if (!strcmp(el, "sequence")) { - context->stack_head->data->unitSize = compute_seq_size(context->stack_head->data); - - if (context->stack_head->data->unitSize > USHRT_MAX) { - context->stack_head->data->unitSize += sizeof(uint32_t); - context->stack_head->data->dtd = SDP_SEQ32; - } else if (context->stack_head->data->unitSize > UCHAR_MAX) { - context->stack_head->data->unitSize += sizeof(uint16_t); - context->stack_head->data->dtd = SDP_SEQ16; - } else { - context->stack_head->data->unitSize += sizeof(uint8_t); - } - } else if (!strcmp(el, "alternate")) { - context->stack_head->data->unitSize = compute_seq_size(context->stack_head->data); - - if (context->stack_head->data->unitSize > USHRT_MAX) { - context->stack_head->data->unitSize += sizeof(uint32_t); - context->stack_head->data->dtd = SDP_ALT32; - } else if (context->stack_head->data->unitSize > UCHAR_MAX) { - context->stack_head->data->unitSize += sizeof(uint16_t); - context->stack_head->data->dtd = SDP_ALT16; - } else { - context->stack_head->data->unitSize += sizeof(uint8_t); - } - } - - /* If we're not inside a seq or alt, then we're inside an attribute - which will be taken care of later - */ - if (context->stack_head->next && context->stack_head->data && - context->stack_head->next->data) { - switch (context->stack_head->next->data->dtd) { - case SDP_SEQ8: - case SDP_SEQ16: - case SDP_SEQ32: - case SDP_ALT8: - case SDP_ALT16: - case SDP_ALT32: - context->stack_head->next->data->val.dataseq = - sdp_seq_append(context->stack_head->next->data->val.dataseq, - context->stack_head->data); - context->stack_head->data = NULL; - break; - } - - elem = context->stack_head; - context->stack_head = context->stack_head->next; - - sdp_xml_data_free(elem); - } -} - -static struct sdp_xml_context *sdp_xml_init_context() -{ - struct sdp_xml_context *context; - - context = malloc(sizeof(struct sdp_xml_context)); - - if (!context) - return NULL; - - context->parser = 0; - context->sdprec = 0; - context->stack_head = 0; - - context->parser = XML_ParserCreate(NULL); - XML_SetElementHandler(context->parser, convert_xml_to_sdp_start, - convert_xml_to_sdp_end); - XML_SetUserData(context->parser, context); - - if (!context->parser) - goto fail; - - context->sdprec = sdp_record_alloc(); - - if (!context->sdprec) - goto fail; - - return context; - -fail: - if (context->parser) - free(context->parser); - - if (context->sdprec) - sdp_record_free(context->sdprec); - - if (context) - free(context); - - return NULL; -} - -static void sdp_xml_free_context(struct sdp_xml_context *context) -{ - struct sdp_xml_data *elem; - - /* Free the stack */ - while (context->stack_head) { - elem = context->stack_head; - context->stack_head = elem->next; - sdp_xml_data_free(elem); - } - - XML_ParserFree(context->parser); - - free(context); -} - -static int sdp_xml_parse_chunk(struct sdp_xml_context *context, - const char *data, int size, int final) -{ - if (!XML_Parse(context->parser, data, size, final)) { - error("Parse error at line %d: %s\n", - XML_GetCurrentLineNumber(context->parser), - XML_ErrorString(XML_GetErrorCode(context->parser))); - return -1; - } - - return 0; -} - -sdp_record_t *sdp_xml_parse_record(const char *data, int size) -{ - struct sdp_xml_context *context; - sdp_record_t *record; - - context = sdp_xml_init_context(); - - if (sdp_xml_parse_chunk(context, data, size, 1) < 0) { - sdp_record_free(context->sdprec); - sdp_xml_free_context(context); - return NULL; - } - - record = context->sdprec; - - sdp_xml_free_context(context); - - return record; -} diff --git a/configure.in b/configure.in index a79e792c..fc1901a3 100644 --- a/configure.in +++ b/configure.in @@ -32,7 +32,6 @@ AC_PATH_ALSA AC_PATH_GSTREAMER AC_PATH_HAL AC_PATH_USB -AC_PATH_EXPAT AC_PATH_INOTIFY AC_PATH_SNDFILE diff --git a/cups/Makefile.am b/cups/Makefile.am index 0573a4af..8cd3d4d4 100644 --- a/cups/Makefile.am +++ b/cups/Makefile.am @@ -8,10 +8,6 @@ bluetooth_SOURCES = main.c sdp.c spp.c hcrp.c bluetooth_LDADD = $(top_builddir)/common/libhelper.a \ @DBUS_LIBS@ @GLIB_LIBS@ @BLUEZ_LIBS@ - -if EXPAT -bluetooth_LDADD += -lexpat -endif endif AM_CFLAGS = @BLUEZ_CFLAGS@ @DBUS_CFLAGS@ @GLIB_CFLAGS@ diff --git a/daemon/Makefile.am b/daemon/Makefile.am index 6ef20b7e..39eabc7b 100644 --- a/daemon/Makefile.am +++ b/daemon/Makefile.am @@ -34,10 +34,6 @@ bluetoothd_LDADD = \ $(top_builddir)/sdpd/libsdpserver.a \ @GLIB_LIBS@ @DBUS_LIBS@ @BLUEZ_LIBS@ -if EXPAT -bluetoothd_LDADD += -lexpat -endif - passkey_agent_SOURCES = passkey-agent.c passkey_agent_LDADD = @DBUS_LIBS@ diff --git a/hcid/Makefile.am b/hcid/Makefile.am index 1fc640f1..c2f00b12 100644 --- a/hcid/Makefile.am +++ b/hcid/Makefile.am @@ -31,10 +31,6 @@ hcid_LDADD = libhciserver.a \ $(top_builddir)/sdpd/libsdpserver.a \ $(top_builddir)/common/libhelper.a \ @GLIB_LIBS@ @DBUS_LIBS@ @BLUEZ_LIBS@ - -if EXPAT -hcid_LDADD += -lexpat -endif endif AM_CFLAGS = @BLUEZ_CFLAGS@ @DBUS_CFLAGS@ @GLIB_CFLAGS@ -- cgit