diff options
| author | Marcel Holtmann <marcel@holtmann.org> | 2008-03-05 20:03:08 +0000 | 
|---|---|---|
| committer | Marcel Holtmann <marcel@holtmann.org> | 2008-03-05 20:03:08 +0000 | 
| commit | cf824c4d12cbbf2f287fdee817b367974d2f8421 (patch) | |
| tree | c8ae8ef7eaefdc4fe3c995a8a7781fc5103f18c1 | |
| parent | 51862bbe2eefb797734e495f1d6190dfeb1ef31e (diff) | |
Remove the support for SDP parsing via expat
| -rw-r--r-- | acinclude.m4 | 12 | ||||
| -rw-r--r-- | common/Makefile.am | 4 | ||||
| -rw-r--r-- | common/sdp-expat.c | 292 | ||||
| -rw-r--r-- | configure.in | 1 | ||||
| -rw-r--r-- | cups/Makefile.am | 4 | ||||
| -rw-r--r-- | daemon/Makefile.am | 4 | ||||
| -rw-r--r-- | hcid/Makefile.am | 4 | 
7 files changed, 0 insertions, 321 deletions
| 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 <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 <stdlib.h> -#include <limits.h> - -#include <bluetooth/sdp.h> -#include <bluetooth/sdp_lib.h> - -#include <expat.h> - -#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@ | 
