Compare commits
18 Commits
last_svn_t
...
release-1.
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d0014a1ae5 | ||
|
|
dee7744256 | ||
|
|
adcc34aeac | ||
|
|
3a11a7b113 | ||
|
|
af5db93bb1 | ||
|
|
579a6fdee4 | ||
|
|
5a505c72ec | ||
|
|
374ff706fd | ||
|
|
44564d16f8 | ||
|
|
c0a5ccc174 | ||
|
|
522dee807f | ||
|
|
062d62bbc4 | ||
|
|
ca1d800b96 | ||
|
|
bd8ea3ac77 | ||
|
|
191814ec13 | ||
|
|
854cc93854 | ||
|
|
6a0f25b290 | ||
|
|
ed0a4d2222 |
40
Makefile.am
40
Makefile.am
@@ -1,3 +1,4 @@
|
|||||||
|
# $Id: Makefile.am,v 1.5 2006/04/29 20:12:50 r3mi Exp $
|
||||||
#
|
#
|
||||||
# Top-level "Makefile.am" for libupnp
|
# Top-level "Makefile.am" for libupnp
|
||||||
#
|
#
|
||||||
@@ -8,42 +9,17 @@ ACLOCAL_AMFLAGS = -I m4
|
|||||||
|
|
||||||
DISTCHECK_CONFIGURE_FLAGS = --enable-debug --enable-samples
|
DISTCHECK_CONFIGURE_FLAGS = --enable-debug --enable-samples
|
||||||
|
|
||||||
SUBDIRS = \
|
SUBDIRS = ixml threadutil upnp docs/dist
|
||||||
ixml \
|
|
||||||
threadutil \
|
|
||||||
upnp \
|
|
||||||
docs/dist
|
|
||||||
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = libupnp.pc.in LICENSE THANKS libupnp.spec \
|
||||||
Doxyfile \
|
|
||||||
libupnp.pc.in \
|
|
||||||
LICENSE \
|
|
||||||
THANKS \
|
|
||||||
libupnp.spec \
|
|
||||||
build/libupnp.bpf \
|
build/libupnp.bpf \
|
||||||
build/libupnp.bpr \
|
build/libupnp.bpr \
|
||||||
build/libupnp.dsp \
|
build/libupnp.dsp \
|
||||||
build/libupnp.dsw \
|
build/libupnp.dsw \
|
||||||
build/inc/autoconfig.h \
|
build/inc/autoconfig.h \
|
||||||
build/inc/config.h \
|
build/inc/config.h \
|
||||||
build/inc/upnpconfig.h \
|
build/inc/upnpconfig.h
|
||||||
build/msvc/inttypes.h \
|
|
||||||
build/msvc/stdint.h \
|
|
||||||
build/vc8/ixml.vcproj \
|
|
||||||
build/vc8/libupnp.sln \
|
|
||||||
build/vc8/libupnp.vcproj \
|
|
||||||
build/vc8/threadutil.vcproj \
|
|
||||||
build/vc8/tvcombo.vcproj \
|
|
||||||
build/vc8/tvctrlpt.vcproj \
|
|
||||||
build/vc8/tvdevice.vcproj \
|
|
||||||
build/vc9/ixml.vcproj \
|
|
||||||
build/vc9/libupnp.sln \
|
|
||||||
build/vc9/libupnp.vcproj \
|
|
||||||
build/vc9/threadutil.vcproj \
|
|
||||||
build/vc9/tvcombo.vcproj \
|
|
||||||
build/vc9/tvctrlpt.vcproj \
|
|
||||||
build/vc9/tvdevice.vcproj
|
|
||||||
|
|
||||||
|
|
||||||
# This variable must have 'exec' in its name, in order to be installed
|
# This variable must have 'exec' in its name, in order to be installed
|
||||||
@@ -51,14 +27,18 @@ EXTRA_DIST = \
|
|||||||
pkgconfigexecdir = $(libdir)/pkgconfig
|
pkgconfigexecdir = $(libdir)/pkgconfig
|
||||||
pkgconfigexec_DATA = libupnp.pc
|
pkgconfigexec_DATA = libupnp.pc
|
||||||
|
|
||||||
|
|
||||||
$(pkgconfigexec_DATA): config.status
|
$(pkgconfigexec_DATA): config.status
|
||||||
|
|
||||||
|
|
||||||
if WITH_DOCUMENTATION
|
if WITH_DOCDIR
|
||||||
|
docdir = @DOCDIR@
|
||||||
doc_DATA = LICENSE README NEWS TODO THANKS
|
doc_DATA = LICENSE README NEWS TODO THANKS
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
CLEANFILES = IUpnpErrFile.txt IUpnpInfoFile.txt
|
CLEANFILES = IUpnpErrFile.txt IUpnpInfoFile.txt
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
57
THANKS
57
THANKS
@@ -6,53 +6,18 @@ suggesting various improvements or submitting actual code.
|
|||||||
Here is a list of these people. Help us keep it complete and
|
Here is a list of these people. Help us keep it complete and
|
||||||
exempt of errors.
|
exempt of errors.
|
||||||
|
|
||||||
- Alex (afaucher)
|
|
||||||
- Andre Sodermans (wienerschnitzel)
|
|
||||||
- Anthony Viallard (homer242)
|
|
||||||
- Apostolos Syropoulos
|
|
||||||
- Arno Willig
|
|
||||||
- Bob Ciora
|
|
||||||
- Carlo Parata
|
|
||||||
- Chaos
|
|
||||||
- Charles Nepveu (cnepveu)
|
|
||||||
- Chris Pickel
|
|
||||||
- Chuck Thomason (cyt4)
|
|
||||||
- Craig Nelson
|
|
||||||
- David Blanchet
|
|
||||||
- David Maass
|
|
||||||
- Emil Ljungdahl
|
|
||||||
- Erik Johansson
|
|
||||||
- Eric Tanguy
|
|
||||||
- Erwan Velu
|
- Erwan Velu
|
||||||
- Eugene Christensen
|
|
||||||
- Fabrice Fontaine
|
|
||||||
- Fredrik Svensson
|
|
||||||
- Glen Masgai
|
|
||||||
- Hartmut Holzgraefe - hholzgra
|
|
||||||
- Ingo Hofmann
|
|
||||||
- Jiri Zouhar
|
|
||||||
- John Dennis
|
|
||||||
- Jonathan Casiot (no_dice)
|
|
||||||
- Josh Carroll
|
|
||||||
- Keith Brindley
|
|
||||||
- Leuk_He
|
|
||||||
- Loigu
|
|
||||||
- Luke Kim (nereusuj)
|
|
||||||
- Marcelo Roberto Jimenez (mroberto)
|
|
||||||
- Markus Strobl
|
|
||||||
- Nektarios K. Papadopoulos (npapadop)
|
|
||||||
- Nicholas Kraft
|
|
||||||
- Nick Leverton (leveret)
|
|
||||||
- Oskar Liljeblad
|
|
||||||
- Michael (oxygenic)
|
|
||||||
- Paul Vixie
|
- Paul Vixie
|
||||||
- Peter Hartley
|
- Arno Willig
|
||||||
- Rene Hexel
|
- Eric Tanguy
|
||||||
- Robert Gingher (robsbox)
|
- Oskar Liljeblad
|
||||||
- Ronan Menard
|
- Chaos
|
||||||
|
- John Dennis
|
||||||
|
- Jiri Zouhar
|
||||||
|
- Loigu
|
||||||
|
- Marcelo Jimenez
|
||||||
|
- Markus Strobl
|
||||||
|
- Nektarios K. Papadopoulos
|
||||||
|
- Oxy
|
||||||
- Siva Chandran
|
- Siva Chandran
|
||||||
- Stéphane Corthésy
|
|
||||||
- Steve Bresson
|
|
||||||
- Timothy Redaelli
|
|
||||||
- Titus Winters
|
|
||||||
|
|
||||||
|
|||||||
11
TODO
11
TODO
@@ -18,13 +18,12 @@ http://sourceforge.net/tracker/?group_id=7189&atid=307189
|
|||||||
|
|
||||||
- make API clean for large files and 64 bits
|
- make API clean for large files and 64 bits
|
||||||
|
|
||||||
- Why is NUM_HANDLE defined to 200 when we can register only:
|
|
||||||
A) One client(1)
|
|
||||||
B) An IPv4 and IPv6 device (2)
|
|
||||||
NUM_HANDLE should be 3
|
|
||||||
|
|
||||||
- A sane way to implement the virtual directory callback initialization and checking
|
To Be Decided
|
||||||
against NULL pointers.
|
=============
|
||||||
|
|
||||||
|
- IPV6 support ?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,3 +13,7 @@ autoreconf --force --install -Wall -Wno-obsolete $* || exit 1
|
|||||||
echo "Now run ./configure and then make."
|
echo "Now run ./configure and then make."
|
||||||
exit 0
|
exit 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
/* autoconfig.h. Generated from autoconfig.h.in by configure. */
|
/* autoconfig.h. Generated by configure. */
|
||||||
/* autoconfig.h.in. Generated from configure.ac by autoheader. */
|
/* autoconfig.h.in. Generated from configure.ac by autoheader. */
|
||||||
|
|
||||||
/* Define to 1 to compile debug code */
|
/* Define to 1 to compile debug code */
|
||||||
@@ -19,18 +19,15 @@
|
|||||||
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
|
/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */
|
||||||
#define HAVE_FSEEKO 1
|
#define HAVE_FSEEKO 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `ftime' function. */
|
|
||||||
#define HAVE_FTIME 1
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||||
#define HAVE_INTTYPES_H 1
|
#define HAVE_INTTYPES_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the `compat' library (-lcompat). */
|
|
||||||
/* #undef HAVE_LIBCOMPAT */
|
|
||||||
|
|
||||||
/* Define to 1 if you have the <limits.h> header file. */
|
/* Define to 1 if you have the <limits.h> header file. */
|
||||||
#define HAVE_LIMITS_H 1
|
#define HAVE_LIMITS_H 1
|
||||||
|
|
||||||
|
/* Define to 1 if you have the <malloc.h> header file. */
|
||||||
|
#define HAVE_MALLOC_H 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <memory.h> header file. */
|
/* Define to 1 if you have the <memory.h> header file. */
|
||||||
#define HAVE_MEMORY_H 1
|
#define HAVE_MEMORY_H 1
|
||||||
|
|
||||||
@@ -82,14 +79,11 @@
|
|||||||
/* Define to 1 if you have the `vprintf' function. */
|
/* Define to 1 if you have the `vprintf' function. */
|
||||||
#define HAVE_VPRINTF 1
|
#define HAVE_VPRINTF 1
|
||||||
|
|
||||||
/* Define to 1 if you have the <ws2tcpip.h> header file. */
|
|
||||||
/* #undef HAVE_WS2TCPIP_H */
|
|
||||||
|
|
||||||
/* Define to 1 to prevent compilation of assert() */
|
/* Define to 1 to prevent compilation of assert() */
|
||||||
/* #undef NDEBUG */
|
#define NDEBUG 1
|
||||||
|
|
||||||
/* Define to 1 to prevent some debug code */
|
/* Define to 1 to prevent some debug code */
|
||||||
/* #undef NO_DEBUG */
|
#define NO_DEBUG 1
|
||||||
|
|
||||||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||||
/* #undef NO_MINUS_C_MINUS_O */
|
/* #undef NO_MINUS_C_MINUS_O */
|
||||||
@@ -98,19 +92,19 @@
|
|||||||
#define PACKAGE "libupnp"
|
#define PACKAGE "libupnp"
|
||||||
|
|
||||||
/* Define to the address where bug reports for this package should be sent. */
|
/* Define to the address where bug reports for this package should be sent. */
|
||||||
#define PACKAGE_BUGREPORT "mroberto@users.sourceforge.net"
|
#define PACKAGE_BUGREPORT "virtual_worlds@gmx.de"
|
||||||
|
|
||||||
/* Define to the full name of this package. */
|
/* Define to the full name of this package. */
|
||||||
#define PACKAGE_NAME "libupnp"
|
#define PACKAGE_NAME "libupnp"
|
||||||
|
|
||||||
/* Define to the full name and version of this package. */
|
/* Define to the full name and version of this package. */
|
||||||
#define PACKAGE_STRING "libupnp 1.8.0"
|
#define PACKAGE_STRING "libupnp 1.4.0"
|
||||||
|
|
||||||
/* Define to the one symbol short name of this package. */
|
/* Define to the one symbol short name of this package. */
|
||||||
#define PACKAGE_TARNAME "libupnp"
|
#define PACKAGE_TARNAME "libupnp"
|
||||||
|
|
||||||
/* Define to the version of this package. */
|
/* Define to the version of this package. */
|
||||||
#define PACKAGE_VERSION "1.8.0"
|
#define PACKAGE_VERSION "1.4.0"
|
||||||
|
|
||||||
/* Define to necessary symbol if this constant uses a non-standard name on
|
/* Define to necessary symbol if this constant uses a non-standard name on
|
||||||
your system. */
|
your system. */
|
||||||
@@ -123,7 +117,7 @@
|
|||||||
#define UPNP_HAVE_CLIENT 1
|
#define UPNP_HAVE_CLIENT 1
|
||||||
|
|
||||||
/* see upnpconfig.h */
|
/* see upnpconfig.h */
|
||||||
#define UPNP_HAVE_DEBUG 1
|
/* #undef UPNP_HAVE_DEBUG */
|
||||||
|
|
||||||
/* see upnpconfig.h */
|
/* see upnpconfig.h */
|
||||||
#define UPNP_HAVE_DEVICE 1
|
#define UPNP_HAVE_DEVICE 1
|
||||||
@@ -134,41 +128,35 @@
|
|||||||
/* see upnpconfig.h */
|
/* see upnpconfig.h */
|
||||||
#define UPNP_HAVE_WEBSERVER 1
|
#define UPNP_HAVE_WEBSERVER 1
|
||||||
|
|
||||||
/* Do not use pthread_rwlock_t */
|
|
||||||
#define UPNP_USE_RWLOCK 1
|
|
||||||
|
|
||||||
/* see upnpconfig.h */
|
/* see upnpconfig.h */
|
||||||
#define UPNP_VERSION_MAJOR 1
|
#define UPNP_VERSION_MAJOR 1
|
||||||
|
|
||||||
/* see upnpconfig.h */
|
/* see upnpconfig.h */
|
||||||
#define UPNP_VERSION_MINOR 8
|
#define UPNP_VERSION_MINOR 4
|
||||||
|
|
||||||
/* see upnpconfig.h */
|
/* see upnpconfig.h */
|
||||||
#define UPNP_VERSION_PATCH 0
|
#define UPNP_VERSION_PATCH 0
|
||||||
|
|
||||||
/* see upnpconfig.h */
|
/* see upnpconfig.h */
|
||||||
#define UPNP_VERSION_STRING "1.8.0"
|
#define UPNP_VERSION_STRING "1.4.0"
|
||||||
|
|
||||||
/* Version number of package */
|
/* Version number of package */
|
||||||
#define VERSION "1.8.0"
|
#define VERSION "1.4.0"
|
||||||
|
|
||||||
/* File Offset size */
|
/* Number of bits in a file offset, on hosts where this is settable. */
|
||||||
#define _FILE_OFFSET_BITS 64
|
#define _FILE_OFFSET_BITS 64
|
||||||
|
|
||||||
/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
|
/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */
|
||||||
/* #undef _LARGEFILE_SOURCE */
|
/* #undef _LARGEFILE_SOURCE */
|
||||||
|
|
||||||
/* Large files support */
|
/* Define for large files, on AIX-style hosts. */
|
||||||
#define _LARGE_FILE_SOURCE
|
/* #undef _LARGE_FILES */
|
||||||
|
|
||||||
/* Define to empty if `const' does not conform to ANSI C. */
|
/* Define to empty if `const' does not conform to ANSI C. */
|
||||||
/* #undef const */
|
/* #undef const */
|
||||||
|
|
||||||
/* Define to `long int' if <sys/types.h> does not define. */
|
/* Define to `unsigned' if <sys/types.h> does not define. */
|
||||||
/* #undef off_t */
|
|
||||||
|
|
||||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
|
||||||
/* #undef size_t */
|
/* #undef size_t */
|
||||||
|
|
||||||
/* Type for storing the length of struct sockaddr */
|
/* Substitute for socklen_t */
|
||||||
/* #undef socklen_t */
|
/* #undef socklen_t */
|
||||||
|
|||||||
@@ -1,102 +1,86 @@
|
|||||||
/**************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
**************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#ifndef INTERNAL_CONFIG_H
|
#ifndef INTERNAL_CONFIG_H
|
||||||
#define INTERNAL_CONFIG_H
|
#define INTERNAL_CONFIG_H
|
||||||
|
|
||||||
|
|
||||||
#include "autoconfig.h"
|
#include "autoconfig.h"
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/** @name Compile time configuration options
|
||||||
* \name Compile time configuration options
|
|
||||||
*
|
|
||||||
* The Linux SDK for UPnP Devices contains some compile-time parameters
|
* The Linux SDK for UPnP Devices contains some compile-time parameters
|
||||||
* that effect the behavior of the SDK. All configuration options are
|
* that effect the behavior of the SDK. All configuration options are
|
||||||
* located in {\tt src/inc/config.h}.
|
* located in {\tt src/inc/config.h}.
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//@{
|
||||||
|
|
||||||
/*!
|
/** @name THREAD_IDLE_TIME
|
||||||
* \name THREAD_IDLE_TIME
|
|
||||||
*
|
|
||||||
* The {\tt THREAD_IDLE_TIME} constant determines when a thread will be
|
* The {\tt THREAD_IDLE_TIME} constant determines when a thread will be
|
||||||
* removed from the thread pool and returned to the operating system. When
|
* removed from the thread pool and returned to the operating system. When
|
||||||
* a thread in the thread pool has been idle for this number of milliseconds
|
* a thread in the thread pool has been idle for this number of milliseconds
|
||||||
* the thread will be released from the thread pool. The default value is
|
* the thread will be released from the thread pool. The default value is
|
||||||
* 5000 milliseconds (5 seconds).
|
* 5000 milliseconds (5 seconds).
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//@{
|
||||||
#define THREAD_IDLE_TIME 5000
|
#define THREAD_IDLE_TIME 5000
|
||||||
/* @} */
|
//@}
|
||||||
|
|
||||||
|
/** @name JOBS_PER_THREAD
|
||||||
/*!
|
|
||||||
* \name JOBS_PER_THREAD
|
|
||||||
*
|
|
||||||
* The {\tt JOBS_PER_THREAD} constant determines when a new thread will be
|
* The {\tt JOBS_PER_THREAD} constant determines when a new thread will be
|
||||||
* allocated to the thread pool inside the SDK. The thread pool will
|
* allocated to the thread pool inside the SDK. The thread pool will
|
||||||
* try and maintain this jobs/thread ratio. When the jobs/thread ratio
|
* try and maintain this jobs/thread ratio. When the jobs/thread ratio
|
||||||
* becomes greater than this, then a new thread (up to the max) will be
|
* becomes greater than this, then a new thread (up to the max) will be
|
||||||
* allocated to the thread pool. The default ratio is 10 jobs/thread.
|
* allocated to the thread pool. The default ratio is 10 jobs/thread.
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//@{
|
||||||
#define JOBS_PER_THREAD 10
|
#define JOBS_PER_THREAD 10
|
||||||
/* @} */
|
//@}
|
||||||
|
|
||||||
|
/** @name MIN_THREADS
|
||||||
/*!
|
|
||||||
* \name MIN_THREADS
|
|
||||||
*
|
|
||||||
* The {\tt MIN_THREADS} constant defines the minimum number of threads the
|
* The {\tt MIN_THREADS} constant defines the minimum number of threads the
|
||||||
* thread pool inside the SDK will create. The thread pool will
|
* thread pool inside the SDK will create. The thread pool will
|
||||||
* always have this number of threads. These threads are used
|
* always have this number of threads. These threads are used
|
||||||
* for both callbacks into applications built on top of the SDK and also
|
* for both callbacks into applications built on top of the SDK and also
|
||||||
* for making connections to other control points and devices. This number
|
* for making connections to other control points and devices. This number
|
||||||
* includes persistent threads. The default value is two threads.
|
* includes persistent threads. The default value is two threads.
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//@{
|
||||||
#define MIN_THREADS 2
|
#define MIN_THREADS 2
|
||||||
/* @} */
|
//@}
|
||||||
|
|
||||||
|
/** @name MAX_THREADS
|
||||||
/*!
|
|
||||||
* \name MAX_THREADS
|
|
||||||
*
|
|
||||||
* The {\tt MAX_THREADS} constant defines the maximum number of threads the
|
* The {\tt MAX_THREADS} constant defines the maximum number of threads the
|
||||||
* thread pool inside the SDK will create. These threads are used
|
* thread pool inside the SDK will create. These threads are used
|
||||||
* for both callbacks into applications built on top of the library and also
|
* for both callbacks into applications built on top of the library and also
|
||||||
@@ -105,79 +89,49 @@
|
|||||||
* necessary for correct operation. This value can be increased for greater
|
* necessary for correct operation. This value can be increased for greater
|
||||||
* performance in operation at the expense of greater memory overhead. The
|
* performance in operation at the expense of greater memory overhead. The
|
||||||
* default value is 12.
|
* default value is 12.
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//@{
|
||||||
#define MAX_THREADS 12
|
#define MAX_THREADS 12
|
||||||
/* @} */
|
//@}
|
||||||
|
|
||||||
|
/** @name DEFAULT_SOAP_CONTENT_LENGTH
|
||||||
/*! \name MAX_JOBS_TOTAL
|
|
||||||
*
|
|
||||||
* The {\tt MAX_JOBS_TOTAL} constant determines the maximum number of jobs
|
|
||||||
* that can be queued. If this limit is reached further jobs will be thrown
|
|
||||||
* to avoid memory exhaustion. The default value 100.
|
|
||||||
* (Added by Axis.)
|
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
#define MAX_JOBS_TOTAL 100
|
|
||||||
/* @} */
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \name DEFAULT_SOAP_CONTENT_LENGTH
|
|
||||||
*
|
|
||||||
* SOAP messages will read at most {\tt DEFAULT_SOAP_CONTENT_LENGTH} bytes.
|
* SOAP messages will read at most {\tt DEFAULT_SOAP_CONTENT_LENGTH} bytes.
|
||||||
* This prevents devices that have a misbehaving web server to send
|
* This prevents devices that have a misbehaving web server to send
|
||||||
* a large amount of data to the control point causing it to crash.
|
* a large amount of data to the control point causing it to crash.
|
||||||
* This can be adjusted dynamically with {\tt UpnpSetMaxContentLength}.
|
* This can be adjusted dynamically with {\tt UpnpSetMaxContentLength}.
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
//@{
|
||||||
#define DEFAULT_SOAP_CONTENT_LENGTH 16000
|
#define DEFAULT_SOAP_CONTENT_LENGTH 16000
|
||||||
/* @} */
|
//@}
|
||||||
|
|
||||||
|
/** @name NUM_SSDP_COPY
|
||||||
/*!
|
|
||||||
* \name NUM_SSDP_COPY
|
|
||||||
*
|
|
||||||
* This configuration parameter determines how many copies of each SSDP
|
* This configuration parameter determines how many copies of each SSDP
|
||||||
* advertisement and search packets will be sent. By default it will send two
|
* advertisement and search packets will be sent. By default it will send two
|
||||||
* copies of every packet.
|
* copies of every packet.
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
//@{
|
||||||
#define NUM_SSDP_COPY 2
|
#define NUM_SSDP_COPY 2
|
||||||
/* @} */
|
//@}
|
||||||
|
|
||||||
|
/** @name SSDP_PAUSE
|
||||||
/*!
|
|
||||||
* \name SSDP_PAUSE
|
|
||||||
*
|
|
||||||
* This configuration parameter determines the pause between identical SSDP
|
* This configuration parameter determines the pause between identical SSDP
|
||||||
* advertisement and search packets. The pause is measured in milliseconds
|
* advertisement and search packets. The pause is measured in milliseconds
|
||||||
* and defaults to 100.
|
* and defaults to 100.
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
//@{
|
||||||
#define SSDP_PAUSE 100
|
#define SSDP_PAUSE 100
|
||||||
/* @} */
|
//@}
|
||||||
|
|
||||||
/*!
|
/** @name WEB_SERVER_BUF_SIZE
|
||||||
* \name WEB_SERVER_BUF_SIZE
|
|
||||||
*
|
|
||||||
* This configuration parameter sets the maximum buffer size for the
|
* This configuration parameter sets the maximum buffer size for the
|
||||||
* webserver. The default value is 1MB.
|
* webserver. The default value is 1MB.
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
//@{
|
||||||
#define WEB_SERVER_BUF_SIZE (1024*1024)
|
#define WEB_SERVER_BUF_SIZE (1024*1024)
|
||||||
/* @} */
|
//@}
|
||||||
|
|
||||||
/*!
|
/** @name AUTO_RENEW_TIME
|
||||||
* \name AUTO_RENEW_TIME
|
|
||||||
*
|
|
||||||
* The {\tt AUTO_RENEW_TIME} is the time, in seconds, before a subscription
|
* The {\tt AUTO_RENEW_TIME} is the time, in seconds, before a subscription
|
||||||
* expires that the SDK automatically resubscribes. The default
|
* expires that the SDK automatically resubscribes. The default
|
||||||
* value is 10 seconds. Setting this value too low can result in the
|
* value is 10 seconds. Setting this value too low can result in the
|
||||||
@@ -185,87 +139,71 @@
|
|||||||
* subscription to timeout. In order to avoid continually resubscribing
|
* subscription to timeout. In order to avoid continually resubscribing
|
||||||
* the minimum subscription time is five seconds more than the auto renew
|
* the minimum subscription time is five seconds more than the auto renew
|
||||||
* time.
|
* time.
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
#define AUTO_RENEW_TIME 10
|
|
||||||
/* @} */
|
|
||||||
|
|
||||||
/*!
|
//@{
|
||||||
* \name CP_MINIMUM_SUBSCRIPTION_TIME
|
#define AUTO_RENEW_TIME 10
|
||||||
*
|
//@}
|
||||||
|
|
||||||
|
/** @name CP_MINIMUM_SUBSCRIPTION_TIME
|
||||||
* The {\tt CP_MINIMUM_SUBSCRIPTION_TIME} is the minimum subscription time
|
* The {\tt CP_MINIMUM_SUBSCRIPTION_TIME} is the minimum subscription time
|
||||||
* allowed for a control point using the SDK. Subscribing for less than
|
* allowed for a control point using the SDK. Subscribing for less than
|
||||||
* this time automatically results in a subscription for this amount. The
|
* this time automatically results in a subscription for this amount. The
|
||||||
* default value is 5 seconds more than the {\tt AUTO_RENEW_TIME}, or 15
|
* default value is 5 seconds more than the {\tt AUTO_RENEW_TIME}, or 15
|
||||||
* seconds.
|
* seconds.
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//@{
|
||||||
#define CP_MINIMUM_SUBSCRIPTION_TIME (AUTO_RENEW_TIME + 5)
|
#define CP_MINIMUM_SUBSCRIPTION_TIME (AUTO_RENEW_TIME + 5)
|
||||||
/* @} */
|
//@}
|
||||||
|
|
||||||
|
/** @name MAX_SEARCH_TIME
|
||||||
/*!
|
|
||||||
* \name MAX_SEARCH_TIME
|
|
||||||
*
|
|
||||||
* The {\tt MAX_SEARCH_TIME} is the maximum time
|
* The {\tt MAX_SEARCH_TIME} is the maximum time
|
||||||
* allowed for an SSDP search by a control point. Searching for greater than
|
* allowed for an SSDP search by a control point. Searching for greater than
|
||||||
* this time automatically results in a search for this amount. The default
|
* this time automatically results in a search for this amount. The default
|
||||||
* value is 80 seconds.
|
* value is 80 seconds.
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//@{
|
||||||
#define MAX_SEARCH_TIME 80
|
#define MAX_SEARCH_TIME 80
|
||||||
/* @} */
|
//@}
|
||||||
|
|
||||||
|
/** @name MIN_SEARCH_TIME
|
||||||
/*!
|
|
||||||
* \name MIN_SEARCH_TIME
|
|
||||||
*
|
|
||||||
* The {\tt MIN_SEARCH_TIME} is the minimumm time
|
* The {\tt MIN_SEARCH_TIME} is the minimumm time
|
||||||
* allowed for an SSDP search by a control point. Searching for less than
|
* allowed for an SSDP search by a control point. Searching for less than
|
||||||
* this time automatically results in a search for this amount. The default
|
* this time automatically results in a search for this amount. The default
|
||||||
* value is 2 seconds.
|
* value is 2 seconds.
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//@{
|
||||||
#define MIN_SEARCH_TIME 2
|
#define MIN_SEARCH_TIME 2
|
||||||
/* @} */
|
//@}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/** @name AUTO_ADVERTISEMENT_TIME
|
||||||
* \name AUTO_ADVERTISEMENT_TIME
|
|
||||||
*
|
|
||||||
* The {\tt AUTO_ADVERTISEMENT_TIME} is the time, in seconds, before an
|
* The {\tt AUTO_ADVERTISEMENT_TIME} is the time, in seconds, before an
|
||||||
* device advertisements expires before a renewed advertisement is sent.
|
* device advertisements expires before a renewed advertisement is sent.
|
||||||
* The default time is 30 seconds.
|
* The default time is 30 seconds.
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//@{
|
||||||
#define AUTO_ADVERTISEMENT_TIME 30
|
#define AUTO_ADVERTISEMENT_TIME 30
|
||||||
/* @} */
|
//@}
|
||||||
|
|
||||||
|
/** @name SSDP_PACKET_DISTRIBUTE
|
||||||
/*!
|
|
||||||
* \name SSDP_PACKET_DISTRIBUTE
|
|
||||||
*
|
|
||||||
* The {\tt SSDP_PACKET_DISTRIBUTE} enables the SSDP packets to be sent
|
* The {\tt SSDP_PACKET_DISTRIBUTE} enables the SSDP packets to be sent
|
||||||
* at an interval equal to half of the expiration time of SSDP packets
|
* at an interval equal to half of the expiration time of SSDP packets
|
||||||
* minus the AUTO_ADVERTISEMENT_TIME. This is used to increase
|
* minus the AUTO_ADVERTISEMENT_TIME. This is used to increase
|
||||||
* the probability of SSDP packets reaching to control points.
|
* the probability of SSDP packets reaching to control points.
|
||||||
* It is recommended that this flag be turned on for embedded wireless
|
* It is recommended that this flag be turned on for embedded wireless
|
||||||
* devices.
|
* devices.
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//@{
|
||||||
#define SSDP_PACKET_DISTRIBUTE 1
|
#define SSDP_PACKET_DISTRIBUTE 1
|
||||||
/* @} */
|
//@}
|
||||||
|
|
||||||
|
/** @name Module Exclusion
|
||||||
/*!
|
|
||||||
* \name Module Exclusion
|
|
||||||
*
|
|
||||||
* Depending on the requirements, the user can selectively discard any of
|
* Depending on the requirements, the user can selectively discard any of
|
||||||
* the major modules like SOAP, GENA, SSDP or the Internal web server. By
|
* the major modules like SOAP, GENA, SSDP or the Internal web server. By
|
||||||
* default everything is included inside the SDK. By setting any of
|
* default everything is included inside the SDK. By setting any of
|
||||||
@@ -281,8 +219,9 @@
|
|||||||
* \item {\tt EXCLUDE_JNI[0,1]}
|
* \item {\tt EXCLUDE_JNI[0,1]}
|
||||||
* \end{itemize}
|
* \end{itemize}
|
||||||
*
|
*
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//@{
|
||||||
#define EXCLUDE_SSDP 0
|
#define EXCLUDE_SSDP 0
|
||||||
#define EXCLUDE_SOAP 0
|
#define EXCLUDE_SOAP 0
|
||||||
#define EXCLUDE_GENA 0
|
#define EXCLUDE_GENA 0
|
||||||
@@ -294,28 +233,24 @@
|
|||||||
#else
|
#else
|
||||||
# define EXCLUDE_JNI 1
|
# define EXCLUDE_JNI 1
|
||||||
#endif
|
#endif
|
||||||
/* @} */
|
//@}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/** @name DEBUG_TARGET
|
||||||
* \name DEBUG_TARGET
|
|
||||||
*
|
|
||||||
* The user has the option to redirect the library output debug messages
|
* The user has the option to redirect the library output debug messages
|
||||||
* to either the screen or to a log file. All the output messages with
|
* to either the screen or to a log file. All the output messages with
|
||||||
* debug level 0 will go to {\tt upnp.err} and messages with debug level
|
* debug level 0 will go to {\tt upnp.err} and messages with debug level
|
||||||
* greater than zero will be redirected to {\tt upnp.out}.
|
* greater than zero will be redirected to {\tt upnp.out}.
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
//@{
|
||||||
#define DEBUG_TARGET 1
|
#define DEBUG_TARGET 1
|
||||||
/* @} */
|
//@}
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/** @name Other debugging features
|
||||||
* \name Other debugging features
|
The UPnP SDK contains other features to aid in debugging:
|
||||||
*
|
see <upnp/upnpdebug.h>
|
||||||
* The UPnP SDK contains other features to aid in debugging:
|
|
||||||
* see <upnp/inc/upnpdebug.h>
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define DEBUG_ALL 1
|
#define DEBUG_ALL 1
|
||||||
@@ -328,44 +263,57 @@
|
|||||||
#define DEBUG_HTTP 0
|
#define DEBUG_HTTP 0
|
||||||
#define DEBUG_API 0
|
#define DEBUG_API 0
|
||||||
|
|
||||||
|
//@} // Compile time configuration options
|
||||||
/*
|
|
||||||
* @} Compile time configuration options
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
* Do not change, Internal purpose only!!!
|
* Do not change, Internal purpose only!!!
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
/*!
|
//@{
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set additional defines based on requested configuration
|
* Set additional defines based on requested configuration
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// configure --enable-client
|
||||||
/* configure --enable-client */
|
|
||||||
#if UPNP_HAVE_CLIENT
|
#if UPNP_HAVE_CLIENT
|
||||||
# define INCLUDE_CLIENT_APIS 1
|
# define INCLUDE_CLIENT_APIS 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// configure --enable-device
|
||||||
/* configure --enable-device */
|
|
||||||
#if UPNP_HAVE_DEVICE
|
#if UPNP_HAVE_DEVICE
|
||||||
# define INCLUDE_DEVICE_APIS 1
|
# define INCLUDE_DEVICE_APIS 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// configure --enable-webserver --enable-device
|
||||||
/* configure --enable-webserver --enable-device */
|
|
||||||
#if UPNP_HAVE_WEBSERVER
|
#if UPNP_HAVE_WEBSERVER
|
||||||
# define INTERNAL_WEB_SERVER 1
|
# define INTERNAL_WEB_SERVER 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** @name DBGONLY
|
||||||
|
The {\bf DBGONLY} macro allows code to be marked so that it
|
||||||
|
is only included in the DEBUG build and not the release. To
|
||||||
|
use this macro, put the code inside of the parentheses:
|
||||||
|
|
||||||
|
{\tt DBGONLY(int i;)}
|
||||||
|
|
||||||
|
This will cause a declaration of the integer {\tt i} only
|
||||||
|
in the debug build.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//@{
|
||||||
|
#ifdef DEBUG
|
||||||
|
#define DBGONLY(x) x
|
||||||
|
#else
|
||||||
|
#define DBGONLY(x)
|
||||||
|
#endif
|
||||||
|
//@}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#undef EXCLUDE_WEB_SERVER
|
#undef EXCLUDE_WEB_SERVER
|
||||||
#undef EXCLUDE_MINISERVER
|
#undef EXCLUDE_MINISERVER
|
||||||
#ifdef INTERNAL_WEB_SERVER
|
#ifdef INTERNAL_WEB_SERVER
|
||||||
@@ -376,7 +324,6 @@
|
|||||||
#define EXCLUDE_MINISERVER 1
|
#define EXCLUDE_MINISERVER 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if EXCLUDE_GENA == 1 && EXCLUDE_SOAP == 1 && EXCLUDE_WEB_SERVER == 1
|
#if EXCLUDE_GENA == 1 && EXCLUDE_SOAP == 1 && EXCLUDE_WEB_SERVER == 1
|
||||||
#undef EXCLUDE_MINISERVER
|
#undef EXCLUDE_MINISERVER
|
||||||
#define EXCLUDE_MINISERVER 1
|
#define EXCLUDE_MINISERVER 1
|
||||||
@@ -385,7 +332,6 @@
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if EXCLUDE_GENA == 0 || EXCLUDE_SOAP == 0 || EXCLUDE_WEB_SERVER == 0
|
#if EXCLUDE_GENA == 0 || EXCLUDE_SOAP == 0 || EXCLUDE_WEB_SERVER == 0
|
||||||
#undef EXCLUDE_MINISERVER
|
#undef EXCLUDE_MINISERVER
|
||||||
#define EXCLUDE_MINISERVER 0
|
#define EXCLUDE_MINISERVER 0
|
||||||
@@ -395,17 +341,20 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef INCLUDE_CLIENT_APIS
|
#ifdef INCLUDE_CLIENT_APIS
|
||||||
#define CLIENTONLY(x) x
|
#define CLIENTONLY(x) x
|
||||||
#else /* INCLUDE_CLIENT_APIS */
|
#else
|
||||||
#define CLIENTONLY(x)
|
#define CLIENTONLY(x)
|
||||||
#endif /* INCLUDE_CLIENT_APIS */
|
#endif
|
||||||
|
|
||||||
|
#ifdef INCLUDE_DEVICE_APIS
|
||||||
|
#define DEVICEONLY(x) x
|
||||||
|
#else
|
||||||
|
#define DEVICEONLY(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//@}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* INTERNAL_CONFIG_H */
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,35 +1,35 @@
|
|||||||
/* upnp/inc/upnpconfig.h. Generated from upnpconfig.h.in by configure. */
|
/* upnp/inc/upnpconfig.h. Generated by configure. */
|
||||||
/* -*- C -*- */
|
// -*- C -*-
|
||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2006 R<>mi Turboult <r3mi@users.sourceforge.net>
|
// Copyright (c) 2006 R<>mi Turboult <r3mi@users.sourceforge.net>
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* * Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* * Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifndef UPNP_CONFIG_H
|
#ifndef UPNP_CONFIG_H
|
||||||
#define UPNP_CONFIG_H
|
#define UPNP_CONFIG_H
|
||||||
@@ -40,13 +40,13 @@
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
/** The library version (string) e.g. "1.3.0" */
|
/** The library version (string) e.g. "1.3.0" */
|
||||||
#define UPNP_VERSION_STRING "1.8.0"
|
#define UPNP_VERSION_STRING "1.4.0"
|
||||||
|
|
||||||
/** Major version of the library */
|
/** Major version of the library */
|
||||||
#define UPNP_VERSION_MAJOR 1
|
#define UPNP_VERSION_MAJOR 1
|
||||||
|
|
||||||
/** Minor version of the library */
|
/** Minor version of the library */
|
||||||
#define UPNP_VERSION_MINOR 8
|
#define UPNP_VERSION_MINOR 4
|
||||||
|
|
||||||
/** Patch version of the library */
|
/** Patch version of the library */
|
||||||
#define UPNP_VERSION_PATCH 0
|
#define UPNP_VERSION_PATCH 0
|
||||||
@@ -69,7 +69,7 @@
|
|||||||
|
|
||||||
/** Defined to 1 if the library has been compiled with DEBUG enabled
|
/** Defined to 1 if the library has been compiled with DEBUG enabled
|
||||||
* (i.e. configure --enable-debug) : <upnp/upnpdebug.h> file is available */
|
* (i.e. configure --enable-debug) : <upnp/upnpdebug.h> file is available */
|
||||||
#define UPNP_HAVE_DEBUG 1
|
#undef UPNP_HAVE_DEBUG
|
||||||
|
|
||||||
|
|
||||||
/** Defined to 1 if the library has been compiled with client API enabled
|
/** Defined to 1 if the library has been compiled with client API enabled
|
||||||
@@ -92,5 +92,6 @@
|
|||||||
#define UPNP_HAVE_TOOLS 1
|
#define UPNP_HAVE_TOOLS 1
|
||||||
|
|
||||||
|
|
||||||
#endif /* UPNP_CONFIG_H */
|
#endif // UPNP_CONFIG_H
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@
|
|||||||
<RESFILES value=""/>
|
<RESFILES value=""/>
|
||||||
<DEFFILE value=""/>
|
<DEFFILE value=""/>
|
||||||
<RESDEPEN value="$(RESFILES)"/>
|
<RESDEPEN value="$(RESFILES)"/>
|
||||||
<LIBFILES value="D:\pthreads-w32-1-10-0-release\pthreadBC1.lib"/>
|
<LIBFILES value="..\..\..\pthreads-w32-1-10-0-release\pthreadBC1.lib"/>
|
||||||
<LIBRARIES value=""/>
|
<LIBRARIES value=""/>
|
||||||
<SPARELIBS value=""/>
|
<SPARELIBS value=""/>
|
||||||
<PACKAGES value=""/>
|
<PACKAGES value=""/>
|
||||||
@@ -45,11 +45,11 @@
|
|||||||
<DEBUGLIBPATH value="$(BCB)\lib\debug"/>
|
<DEBUGLIBPATH value="$(BCB)\lib\debug"/>
|
||||||
<RELEASELIBPATH value="$(BCB)\lib\release"/>
|
<RELEASELIBPATH value="$(BCB)\lib\release"/>
|
||||||
<LINKER value="tlink32"/>
|
<LINKER value="tlink32"/>
|
||||||
<USERDEFINES value="WIN32;LIBUPNP_EXPORTS;UPNP_USE_BCBPP"/>
|
<USERDEFINES value="WIN32;LIBUPNP_EXPORTS"/>
|
||||||
<SYSDEFINES value="NO_STRICT;_NO_VCL"/>
|
<SYSDEFINES value="NO_STRICT;_NO_VCL"/>
|
||||||
<MAINSOURCE value="libupnp.bpf"/>
|
<MAINSOURCE value="libupnp.bpf"/>
|
||||||
<INCLUDEPATH value="..\upnp\src\genlib\util;..\upnp\src;..\upnp\src\uuid;..\upnp\src\urlconfig;..\upnp\src\ssdp;..\upnp\src\soap;..\upnp\src\genlib\service_table;..\upnp\src\genlib\net;..\upnp\src\genlib\net\uri;..\upnp\src\genlib\net\http;..\upnp\src\genlib\miniserver;..\upnp\src\genlib\client_table;..\upnp\src\gena;..\upnp\src\api;..\threadutil\src;..\ixml\src;$(BCB)\include;$(BCB)\include\vcl;..\ixml\inc;..\threadutil\inc;..\upnp\inc;inc;..\ixml\src\inc;..\upnp\src\inc;..\..\pthreads-w32-1-10-0-release"/>
|
<INCLUDEPATH value="..\upnp\src\genlib\util;..\upnp\src;..\upnp\src\uuid;..\upnp\src\urlconfig;..\upnp\src\ssdp;..\upnp\src\soap;..\upnp\src\genlib\service_table;..\upnp\src\genlib\net;..\upnp\src\genlib\net\uri;..\upnp\src\genlib\net\http;..\upnp\src\genlib\miniserver;..\upnp\src\genlib\client_table;..\upnp\src\gena;..\upnp\src\api;..\threadutil\src;..\ixml\src;$(BCB)\include;$(BCB)\include\vcl;..\ixml\inc;..\threadutil\inc;..\upnp\inc;inc;..\ixml\src\inc;..\upnp\src\inc"/>
|
||||||
<LIBPATH value="..\upnp\src\uuid;..\upnp\src\urlconfig;..\upnp\src\ssdp;..\upnp\src\soap;..\upnp\src\genlib\util;..\upnp\src\genlib\service_table;..\upnp\src\genlib\net\uri;..\upnp\src\genlib\net\http;..\upnp\src\genlib\net;..\upnp\src\genlib\miniserver;..\upnp\src\genlib\client_table;..\upnp\src\gena;..\upnp\src\api;..\upnp\src;..\threadutil\src;..\ixml\src;$(BCB)\lib\obj;$(BCB)\lib;..\..\pthreads-w32-1-10-0-release"/>
|
<LIBPATH value="..\upnp\src\uuid;..\upnp\src\urlconfig;..\upnp\src\ssdp;..\upnp\src\soap;..\upnp\src\genlib\util;..\upnp\src\genlib\service_table;..\upnp\src\genlib\net\uri;..\upnp\src\genlib\net\http;..\upnp\src\genlib\net;..\upnp\src\genlib\miniserver;..\upnp\src\genlib\client_table;..\upnp\src\gena;..\upnp\src\api;..\upnp\src;..\threadutil\src;..\ixml\src;$(BCB)\lib\obj;$(BCB)\lib"/>
|
||||||
<WARNINGS value="-w-par"/>
|
<WARNINGS value="-w-par"/>
|
||||||
</MACROS>
|
</MACROS>
|
||||||
<OPTIONS>
|
<OPTIONS>
|
||||||
@@ -94,27 +94,22 @@ ProductVersion=1.0.0.0
|
|||||||
Comments=
|
Comments=
|
||||||
|
|
||||||
[HistoryLists\hlIncludePath]
|
[HistoryLists\hlIncludePath]
|
||||||
Count=3
|
Count=1
|
||||||
Item0=..\upnp\src\genlib\util;..\upnp\src;..\upnp\src\uuid;..\upnp\src\urlconfig;..\upnp\src\ssdp;..\upnp\src\soap;..\upnp\src\genlib\service_table;..\upnp\src\genlib\net;..\upnp\src\genlib\net\uri;..\upnp\src\genlib\net\http;..\upnp\src\genlib\miniserver;..\upnp\src\genlib\client_table;..\upnp\src\gena;..\upnp\src\api;..\threadutil\src;..\ixml\src;$(BCB)\include;$(BCB)\include\vcl;..\ixml\inc;..\threadutil\inc;..\upnp\inc;inc;..\ixml\src\inc;..\upnp\src\inc;..\..\pthreads-w32-1-10-0-release
|
Item0=..\upnp\src\genlib\util;..\upnp\src;..\upnp\src\uuid;..\upnp\src\urlconfig;..\upnp\src\ssdp;..\upnp\src\soap;..\upnp\src\genlib\service_table;..\upnp\src\genlib\net;..\upnp\src\genlib\net\uri;..\upnp\src\genlib\net\http;..\upnp\src\genlib\miniserver;..\upnp\src\genlib\client_table;..\upnp\src\gena;..\upnp\src\api;..\threadutil\src;..\ixml\src;$(BCB)\include;$(BCB)\include\vcl;..\ixml\inc;..\threadutil\inc;..\upnp\inc;inc;..\ixml\src\inc;..\upnp\src\inc
|
||||||
Item1=..\upnp\src\genlib\util;..\upnp\src;..\upnp\src\uuid;..\upnp\src\urlconfig;..\upnp\src\ssdp;..\upnp\src\soap;..\upnp\src\genlib\service_table;..\upnp\src\genlib\net;..\upnp\src\genlib\net\uri;..\upnp\src\genlib\net\http;..\upnp\src\genlib\miniserver;..\upnp\src\genlib\client_table;..\upnp\src\gena;..\upnp\src\api;..\threadutil\src;..\ixml\src;$(BCB)\include;$(BCB)\include\vcl;..\ixml\inc;..\threadutil\inc;..\upnp\inc;inc;..\ixml\src\inc;..\upnp\src\inc;D:\DEVELOP\pthreads-w32-1-10-0-release
|
|
||||||
Item2=..\upnp\src\genlib\util;..\upnp\src;..\upnp\src\uuid;..\upnp\src\urlconfig;..\upnp\src\ssdp;..\upnp\src\soap;..\upnp\src\genlib\service_table;..\upnp\src\genlib\net;..\upnp\src\genlib\net\uri;..\upnp\src\genlib\net\http;..\upnp\src\genlib\miniserver;..\upnp\src\genlib\client_table;..\upnp\src\gena;..\upnp\src\api;..\threadutil\src;..\ixml\src;$(BCB)\include;$(BCB)\include\vcl;..\ixml\inc;..\threadutil\inc;..\upnp\inc;inc;..\ixml\src\inc;..\upnp\src\inc
|
|
||||||
|
|
||||||
[HistoryLists\hlLibraryPath]
|
[HistoryLists\hlLibraryPath]
|
||||||
Count=3
|
Count=1
|
||||||
Item0=..\upnp\src\uuid;..\upnp\src\urlconfig;..\upnp\src\ssdp;..\upnp\src\soap;..\upnp\src\genlib\util;..\upnp\src\genlib\service_table;..\upnp\src\genlib\net\uri;..\upnp\src\genlib\net\http;..\upnp\src\genlib\net;..\upnp\src\genlib\miniserver;..\upnp\src\genlib\client_table;..\upnp\src\gena;..\upnp\src\api;..\upnp\src;..\threadutil\src;..\ixml\src;$(BCB)\lib\obj;$(BCB)\lib;..\..\pthreads-w32-1-10-0-release
|
Item0=..\upnp\src\uuid;..\upnp\src\urlconfig;..\upnp\src\ssdp;..\upnp\src\soap;..\upnp\src\genlib\util;..\upnp\src\genlib\service_table;..\upnp\src\genlib\net\uri;..\upnp\src\genlib\net\http;..\upnp\src\genlib\net;..\upnp\src\genlib\miniserver;..\upnp\src\genlib\client_table;..\upnp\src\gena;..\upnp\src\api;..\upnp\src;..\threadutil\src;..\ixml\src;$(BCB)\lib\obj;$(BCB)\lib
|
||||||
Item1=..\upnp\src\uuid;..\upnp\src\urlconfig;..\upnp\src\ssdp;..\upnp\src\soap;..\upnp\src\genlib\util;..\upnp\src\genlib\service_table;..\upnp\src\genlib\net\uri;..\upnp\src\genlib\net\http;..\upnp\src\genlib\net;..\upnp\src\genlib\miniserver;..\upnp\src\genlib\client_table;..\upnp\src\gena;..\upnp\src\api;..\upnp\src;..\threadutil\src;..\ixml\src;$(BCB)\lib\obj;$(BCB)\lib;D:\DEVELOP\pthreads-w32-1-10-0-release
|
|
||||||
Item2=..\upnp\src\uuid;..\upnp\src\urlconfig;..\upnp\src\ssdp;..\upnp\src\soap;..\upnp\src\genlib\util;..\upnp\src\genlib\service_table;..\upnp\src\genlib\net\uri;..\upnp\src\genlib\net\http;..\upnp\src\genlib\net;..\upnp\src\genlib\miniserver;..\upnp\src\genlib\client_table;..\upnp\src\gena;..\upnp\src\api;..\upnp\src;..\threadutil\src;..\ixml\src;$(BCB)\lib\obj;$(BCB)\lib
|
|
||||||
|
|
||||||
[HistoryLists\hlDebugSourcePath]
|
[HistoryLists\hlDebugSourcePath]
|
||||||
Count=1
|
Count=1
|
||||||
Item0=$(BCB)\source\vcl
|
Item0=$(BCB)\source\vcl
|
||||||
|
|
||||||
[HistoryLists\hlConditionals]
|
[HistoryLists\hlConditionals]
|
||||||
Count=4
|
Count=3
|
||||||
Item0=WIN32;LIBUPNP_EXPORTS;UPNP_USE_BCBPP
|
Item0=WIN32;LIBUPNP_EXPORTS
|
||||||
Item1=WIN32;LIBUPNP_EXPORTS
|
Item1=WIN32;EXPORT_SPEC
|
||||||
Item2=WIN32;EXPORT_SPEC
|
Item2=WIN32
|
||||||
Item3=WIN32
|
|
||||||
|
|
||||||
[Debugging]
|
[Debugging]
|
||||||
DebugSourceDirs=$(BCB)\source\vcl
|
DebugSourceDirs=$(BCB)\source\vcl
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ RSC=rc.exe
|
|||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBUPNP_EXPORTS" /YX /FD /c
|
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBUPNP_EXPORTS" /YX /FD /c
|
||||||
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\pthreads\include" /I "..\ixml\src\inc" /I "..\ixml\inc" /I "..\threadutil\inc" /I "..\upnp\inc" /I "..\upnp\src\inc" /I ".\inc" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBUPNP_EXPORTS" /D "PTW32_STATIC_LIB" /D "UPNP_STATIC_LIB" /D "UPNP_USE_MSVCPP" /FR /YX /FD /c
|
# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\pthreads\include" /I "..\ixml\src\inc" /I "..\ixml\inc" /I "..\threadutil\inc" /I "..\upnp\inc" /I "..\upnp\src\inc" /I ".\inc" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBUPNP_EXPORTS" /FR /YX /FD /c
|
||||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||||
# ADD BASE RSC /l 0x407 /d "NDEBUG"
|
# ADD BASE RSC /l 0x407 /d "NDEBUG"
|
||||||
@@ -53,8 +53,7 @@ BSC32=bscmake.exe
|
|||||||
# ADD BSC32 /nologo
|
# ADD BSC32 /nologo
|
||||||
LINK32=link.exe
|
LINK32=link.exe
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
|
||||||
# ADD LINK32 kernel32.lib user32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\pthreads\lib\pthreadvc2.lib ws2_32.lib /nologo /dll /machine:I386
|
# ADD LINK32 kernel32.lib user32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\pthreads\lib\pthreadvc2.lib ws2_32.lib /nologo /dll /machine:I386
|
||||||
# SUBTRACT LINK32 /pdb:none
|
|
||||||
|
|
||||||
!ELSEIF "$(CFG)" == "libupnp - Win32 Debug"
|
!ELSEIF "$(CFG)" == "libupnp - Win32 Debug"
|
||||||
|
|
||||||
@@ -70,7 +69,7 @@ LINK32=link.exe
|
|||||||
# PROP Ignore_Export_Lib 0
|
# PROP Ignore_Export_Lib 0
|
||||||
# PROP Target_Dir ""
|
# PROP Target_Dir ""
|
||||||
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBUPNP_EXPORTS" /YX /FD /GZ /c
|
# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBUPNP_EXPORTS" /YX /FD /GZ /c
|
||||||
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\..\pthreads\include" /I "..\ixml\src\inc" /I "..\ixml\inc" /I "..\threadutil\inc" /I "..\upnp\inc" /I "..\upnp\src\inc" /I "..\build\inc" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBUPNP_EXPORTS" /D "UPNP_USE_MSVCPP" /FR /YX /FD /GZ /c
|
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "..\pthreads\include" /I "..\ixml\src\inc" /I "..\ixml\inc" /I "..\threadutil\inc" /I "..\upnp\inc" /I "..\upnp\src\inc" /I "..\build\inc" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "LIBUPNP_EXPORTS" /FR /YX /FD /GZ /c
|
||||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||||
# ADD BASE RSC /l 0x407 /d "_DEBUG"
|
# ADD BASE RSC /l 0x407 /d "_DEBUG"
|
||||||
@@ -80,7 +79,7 @@ BSC32=bscmake.exe
|
|||||||
# ADD BSC32 /nologo
|
# ADD BSC32 /nologo
|
||||||
LINK32=link.exe
|
LINK32=link.exe
|
||||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
|
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
|
||||||
# ADD LINK32 kernel32.lib user32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\..\pthreads\lib\pthreadvc2.lib ws2_32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
|
# ADD LINK32 kernel32.lib user32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib ..\pthreads\lib\pthreadvc2.lib ws2_32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept
|
||||||
|
|
||||||
!ENDIF
|
!ENDIF
|
||||||
|
|
||||||
@@ -275,146 +274,6 @@ SOURCE=..\upnp\src\win_dll.c
|
|||||||
# Begin Group "Header-Dateien"
|
# Begin Group "Header-Dateien"
|
||||||
|
|
||||||
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
# PROP Default_Filter "h;hpp;hxx;hm;inl"
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\client_table.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\config.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\gena.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\gena_ctrlpt.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\gena_device.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\global.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\gmtdate.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\http_client.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\httpparser.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\httpreadwrite.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\inet_pton.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\md5.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\membuffer.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\miniserver.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\netall.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\parsetools.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\server.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\service_table.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\soaplib.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\sock.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\ssdplib.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\statcodes.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\statuscodes.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\strintmap.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\sysdep.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\unixutil.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\upnp_timeout.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\upnpapi.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\upnpclosesocket.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\uri.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\urlconfig.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\util.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\utilall.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\uuid.h
|
|
||||||
# End Source File
|
|
||||||
# Begin Source File
|
|
||||||
|
|
||||||
SOURCE=..\upnp\src\inc\webserver.h
|
|
||||||
# End Source File
|
|
||||||
# End Group
|
# End Group
|
||||||
# Begin Group "Ressourcendateien"
|
# Begin Group "Ressourcendateien"
|
||||||
|
|
||||||
|
|||||||
@@ -1,301 +0,0 @@
|
|||||||
// ISO C9x compliant inttypes.h for Microsoft Visual Studio
|
|
||||||
// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
|
|
||||||
//
|
|
||||||
// Copyright (c) 2006 Alexander Chemeris
|
|
||||||
//
|
|
||||||
// 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.
|
|
||||||
//
|
|
||||||
// 3. The name of the author may be used to endorse or promote products
|
|
||||||
// derived from this software without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
|
|
||||||
//
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#ifndef _MSC_VER // [
|
|
||||||
#error "Use this header only with Microsoft Visual C++ compilers!"
|
|
||||||
#endif // _MSC_VER ]
|
|
||||||
|
|
||||||
#ifndef _MSC_INTTYPES_H_ // [
|
|
||||||
#define _MSC_INTTYPES_H_
|
|
||||||
|
|
||||||
#if _MSC_VER > 1000
|
|
||||||
#pragma once
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
// 7.8 Format conversion of integer types
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
intmax_t quot;
|
|
||||||
intmax_t rem;
|
|
||||||
} imaxdiv_t;
|
|
||||||
|
|
||||||
// 7.8.1 Macros for format specifiers
|
|
||||||
|
|
||||||
// The fprintf macros for signed integers are:
|
|
||||||
#define PRId8 "d"
|
|
||||||
#define PRIi8 "i"
|
|
||||||
#define PRIdLEAST8 "d"
|
|
||||||
#define PRIiLEAST8 "i"
|
|
||||||
#define PRIdFAST8 "d"
|
|
||||||
#define PRIiFAST8 "i"
|
|
||||||
|
|
||||||
#define PRId16 "hd"
|
|
||||||
#define PRIi16 "hi"
|
|
||||||
#define PRIdLEAST16 "hd"
|
|
||||||
#define PRIiLEAST16 "hi"
|
|
||||||
#define PRIdFAST16 "hd"
|
|
||||||
#define PRIiFAST16 "hi"
|
|
||||||
|
|
||||||
#define PRId32 "I32d"
|
|
||||||
#define PRIi32 "I32i"
|
|
||||||
#define PRIdLEAST32 "I32d"
|
|
||||||
#define PRIiLEAST32 "I32i"
|
|
||||||
#define PRIdFAST32 "I32d"
|
|
||||||
#define PRIiFAST32 "I32i"
|
|
||||||
|
|
||||||
#define PRId64 "I64d"
|
|
||||||
#define PRIi64 "I64i"
|
|
||||||
#define PRIdLEAST64 "I64d"
|
|
||||||
#define PRIiLEAST64 "I64i"
|
|
||||||
#define PRIdFAST64 "I64d"
|
|
||||||
#define PRIiFAST64 "I64i"
|
|
||||||
|
|
||||||
#define PRIdMAX "I64d"
|
|
||||||
#define PRIiMAX "I64i"
|
|
||||||
|
|
||||||
#define PRIdPTR "Id"
|
|
||||||
#define PRIiPTR "Ii"
|
|
||||||
|
|
||||||
// The fprintf macros for unsigned integers are:
|
|
||||||
#define PRIo8 "o"
|
|
||||||
#define PRIu8 "u"
|
|
||||||
#define PRIx8 "x"
|
|
||||||
#define PRIX8 "X"
|
|
||||||
#define PRIoLEAST8 "o"
|
|
||||||
#define PRIuLEAST8 "u"
|
|
||||||
#define PRIxLEAST8 "x"
|
|
||||||
#define PRIXLEAST8 "X"
|
|
||||||
#define PRIoFAST8 "o"
|
|
||||||
#define PRIuFAST8 "u"
|
|
||||||
#define PRIxFAST8 "x"
|
|
||||||
#define PRIXFAST8 "X"
|
|
||||||
|
|
||||||
#define PRIo16 "ho"
|
|
||||||
#define PRIu16 "hu"
|
|
||||||
#define PRIx16 "hx"
|
|
||||||
#define PRIX16 "hX"
|
|
||||||
#define PRIoLEAST16 "ho"
|
|
||||||
#define PRIuLEAST16 "hu"
|
|
||||||
#define PRIxLEAST16 "hx"
|
|
||||||
#define PRIXLEAST16 "hX"
|
|
||||||
#define PRIoFAST16 "ho"
|
|
||||||
#define PRIuFAST16 "hu"
|
|
||||||
#define PRIxFAST16 "hx"
|
|
||||||
#define PRIXFAST16 "hX"
|
|
||||||
|
|
||||||
#define PRIo32 "I32o"
|
|
||||||
#define PRIu32 "I32u"
|
|
||||||
#define PRIx32 "I32x"
|
|
||||||
#define PRIX32 "I32X"
|
|
||||||
#define PRIoLEAST32 "I32o"
|
|
||||||
#define PRIuLEAST32 "I32u"
|
|
||||||
#define PRIxLEAST32 "I32x"
|
|
||||||
#define PRIXLEAST32 "I32X"
|
|
||||||
#define PRIoFAST32 "I32o"
|
|
||||||
#define PRIuFAST32 "I32u"
|
|
||||||
#define PRIxFAST32 "I32x"
|
|
||||||
#define PRIXFAST32 "I32X"
|
|
||||||
|
|
||||||
#define PRIo64 "I64o"
|
|
||||||
#define PRIu64 "I64u"
|
|
||||||
#define PRIx64 "I64x"
|
|
||||||
#define PRIX64 "I64X"
|
|
||||||
#define PRIoLEAST64 "I64o"
|
|
||||||
#define PRIuLEAST64 "I64u"
|
|
||||||
#define PRIxLEAST64 "I64x"
|
|
||||||
#define PRIXLEAST64 "I64X"
|
|
||||||
#define PRIoFAST64 "I64o"
|
|
||||||
#define PRIuFAST64 "I64u"
|
|
||||||
#define PRIxFAST64 "I64x"
|
|
||||||
#define PRIXFAST64 "I64X"
|
|
||||||
|
|
||||||
#define PRIoMAX "I64o"
|
|
||||||
#define PRIuMAX "I64u"
|
|
||||||
#define PRIxMAX "I64x"
|
|
||||||
#define PRIXMAX "I64X"
|
|
||||||
|
|
||||||
#define PRIoPTR "Io"
|
|
||||||
#define PRIuPTR "Iu"
|
|
||||||
#define PRIxPTR "Ix"
|
|
||||||
#define PRIXPTR "IX"
|
|
||||||
|
|
||||||
// The fscanf macros for signed integers are:
|
|
||||||
#define SCNd8 "d"
|
|
||||||
#define SCNi8 "i"
|
|
||||||
#define SCNdLEAST8 "d"
|
|
||||||
#define SCNiLEAST8 "i"
|
|
||||||
#define SCNdFAST8 "d"
|
|
||||||
#define SCNiFAST8 "i"
|
|
||||||
|
|
||||||
#define SCNd16 "hd"
|
|
||||||
#define SCNi16 "hi"
|
|
||||||
#define SCNdLEAST16 "hd"
|
|
||||||
#define SCNiLEAST16 "hi"
|
|
||||||
#define SCNdFAST16 "hd"
|
|
||||||
#define SCNiFAST16 "hi"
|
|
||||||
|
|
||||||
#define SCNd32 "ld"
|
|
||||||
#define SCNi32 "li"
|
|
||||||
#define SCNdLEAST32 "ld"
|
|
||||||
#define SCNiLEAST32 "li"
|
|
||||||
#define SCNdFAST32 "ld"
|
|
||||||
#define SCNiFAST32 "li"
|
|
||||||
|
|
||||||
#define SCNd64 "I64d"
|
|
||||||
#define SCNi64 "I64i"
|
|
||||||
#define SCNdLEAST64 "I64d"
|
|
||||||
#define SCNiLEAST64 "I64i"
|
|
||||||
#define SCNdFAST64 "I64d"
|
|
||||||
#define SCNiFAST64 "I64i"
|
|
||||||
|
|
||||||
#define SCNdMAX "I64d"
|
|
||||||
#define SCNiMAX "I64i"
|
|
||||||
|
|
||||||
#ifdef _WIN64 // [
|
|
||||||
# define SCNdPTR "I64d"
|
|
||||||
# define SCNiPTR "I64i"
|
|
||||||
#else // _WIN64 ][
|
|
||||||
# define SCNdPTR "ld"
|
|
||||||
# define SCNiPTR "li"
|
|
||||||
#endif // _WIN64 ]
|
|
||||||
|
|
||||||
// The fscanf macros for unsigned integers are:
|
|
||||||
#define SCNo8 "o"
|
|
||||||
#define SCNu8 "u"
|
|
||||||
#define SCNx8 "x"
|
|
||||||
#define SCNX8 "X"
|
|
||||||
#define SCNoLEAST8 "o"
|
|
||||||
#define SCNuLEAST8 "u"
|
|
||||||
#define SCNxLEAST8 "x"
|
|
||||||
#define SCNXLEAST8 "X"
|
|
||||||
#define SCNoFAST8 "o"
|
|
||||||
#define SCNuFAST8 "u"
|
|
||||||
#define SCNxFAST8 "x"
|
|
||||||
#define SCNXFAST8 "X"
|
|
||||||
|
|
||||||
#define SCNo16 "ho"
|
|
||||||
#define SCNu16 "hu"
|
|
||||||
#define SCNx16 "hx"
|
|
||||||
#define SCNX16 "hX"
|
|
||||||
#define SCNoLEAST16 "ho"
|
|
||||||
#define SCNuLEAST16 "hu"
|
|
||||||
#define SCNxLEAST16 "hx"
|
|
||||||
#define SCNXLEAST16 "hX"
|
|
||||||
#define SCNoFAST16 "ho"
|
|
||||||
#define SCNuFAST16 "hu"
|
|
||||||
#define SCNxFAST16 "hx"
|
|
||||||
#define SCNXFAST16 "hX"
|
|
||||||
|
|
||||||
#define SCNo32 "lo"
|
|
||||||
#define SCNu32 "lu"
|
|
||||||
#define SCNx32 "lx"
|
|
||||||
#define SCNX32 "lX"
|
|
||||||
#define SCNoLEAST32 "lo"
|
|
||||||
#define SCNuLEAST32 "lu"
|
|
||||||
#define SCNxLEAST32 "lx"
|
|
||||||
#define SCNXLEAST32 "lX"
|
|
||||||
#define SCNoFAST32 "lo"
|
|
||||||
#define SCNuFAST32 "lu"
|
|
||||||
#define SCNxFAST32 "lx"
|
|
||||||
#define SCNXFAST32 "lX"
|
|
||||||
|
|
||||||
#define SCNo64 "I64o"
|
|
||||||
#define SCNu64 "I64u"
|
|
||||||
#define SCNx64 "I64x"
|
|
||||||
#define SCNX64 "I64X"
|
|
||||||
#define SCNoLEAST64 "I64o"
|
|
||||||
#define SCNuLEAST64 "I64u"
|
|
||||||
#define SCNxLEAST64 "I64x"
|
|
||||||
#define SCNXLEAST64 "I64X"
|
|
||||||
#define SCNoFAST64 "I64o"
|
|
||||||
#define SCNuFAST64 "I64u"
|
|
||||||
#define SCNxFAST64 "I64x"
|
|
||||||
#define SCNXFAST64 "I64X"
|
|
||||||
|
|
||||||
#define SCNoMAX "I64o"
|
|
||||||
#define SCNuMAX "I64u"
|
|
||||||
#define SCNxMAX "I64x"
|
|
||||||
#define SCNXMAX "I64X"
|
|
||||||
|
|
||||||
#ifdef _WIN64 // [
|
|
||||||
# define SCNoPTR "I64o"
|
|
||||||
# define SCNuPTR "I64u"
|
|
||||||
# define SCNxPTR "I64x"
|
|
||||||
# define SCNXPTR "I64X"
|
|
||||||
#else // _WIN64 ][
|
|
||||||
# define SCNoPTR "lo"
|
|
||||||
# define SCNuPTR "lu"
|
|
||||||
# define SCNxPTR "lx"
|
|
||||||
# define SCNXPTR "lX"
|
|
||||||
#endif // _WIN64 ]
|
|
||||||
|
|
||||||
// 7.8.2 Functions for greatest-width integer types
|
|
||||||
|
|
||||||
// 7.8.2.1 The imaxabs function
|
|
||||||
#define imaxabs _abs64
|
|
||||||
|
|
||||||
// 7.8.2.2 The imaxdiv function
|
|
||||||
|
|
||||||
// This is modified version of div() function from Microsoft's div.c found
|
|
||||||
// in %MSVC.NET%\crt\src\div.c
|
|
||||||
#ifdef STATIC_IMAXDIV // [
|
|
||||||
static
|
|
||||||
#else // STATIC_IMAXDIV ][
|
|
||||||
_inline
|
|
||||||
#endif // STATIC_IMAXDIV ]
|
|
||||||
imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom)
|
|
||||||
{
|
|
||||||
imaxdiv_t result;
|
|
||||||
|
|
||||||
result.quot = numer / denom;
|
|
||||||
result.rem = numer % denom;
|
|
||||||
|
|
||||||
if (numer < 0 && result.rem > 0) {
|
|
||||||
// did division wrong; must fix up
|
|
||||||
++result.quot;
|
|
||||||
result.rem -= denom;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 7.8.2.3 The strtoimax and strtoumax functions
|
|
||||||
#define strtoimax _strtoi64
|
|
||||||
#define strtoumax _strtoui64
|
|
||||||
|
|
||||||
// 7.8.2.4 The wcstoimax and wcstoumax functions
|
|
||||||
#define wcstoimax _wcstoi64
|
|
||||||
#define wcstoumax _wcstoui64
|
|
||||||
|
|
||||||
|
|
||||||
#endif // _MSC_INTTYPES_H_ ]
|
|
||||||
@@ -1,222 +0,0 @@
|
|||||||
// ISO C9x compliant stdint.h for Microsoft Visual Studio
|
|
||||||
// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124
|
|
||||||
//
|
|
||||||
// Copyright (c) 2006 Alexander Chemeris
|
|
||||||
//
|
|
||||||
// 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.
|
|
||||||
//
|
|
||||||
// 3. The name of the author may be used to endorse or promote products
|
|
||||||
// derived from this software without specific prior written permission.
|
|
||||||
//
|
|
||||||
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 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.
|
|
||||||
//
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
#ifndef _MSC_VER // [
|
|
||||||
#error "Use this header only with Microsoft Visual C++ compilers!"
|
|
||||||
#endif // _MSC_VER ]
|
|
||||||
|
|
||||||
#ifndef _MSC_STDINT_H_ // [
|
|
||||||
#define _MSC_STDINT_H_
|
|
||||||
|
|
||||||
#if _MSC_VER > 1000
|
|
||||||
#pragma once
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <limits.h>
|
|
||||||
|
|
||||||
// For Visual Studio 6 in C++ mode wrap <wchar.h> include with 'extern "C++" {}'
|
|
||||||
// or compiler give many errors like this:
|
|
||||||
// error C2733: second C linkage of overloaded function 'wmemchr' not allowed
|
|
||||||
#if (_MSC_VER < 1300) && defined(__cplusplus)
|
|
||||||
extern "C++" {
|
|
||||||
#endif
|
|
||||||
# include <wchar.h>
|
|
||||||
#if (_MSC_VER < 1300) && defined(__cplusplus)
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// 7.18.1 Integer types
|
|
||||||
|
|
||||||
// 7.18.1.1 Exact-width integer types
|
|
||||||
typedef __int8 int8_t;
|
|
||||||
typedef __int16 int16_t;
|
|
||||||
typedef __int32 int32_t;
|
|
||||||
typedef __int64 int64_t;
|
|
||||||
typedef unsigned __int8 uint8_t;
|
|
||||||
typedef unsigned __int16 uint16_t;
|
|
||||||
typedef unsigned __int32 uint32_t;
|
|
||||||
typedef unsigned __int64 uint64_t;
|
|
||||||
|
|
||||||
// 7.18.1.2 Minimum-width integer types
|
|
||||||
typedef int8_t int_least8_t;
|
|
||||||
typedef int16_t int_least16_t;
|
|
||||||
typedef int32_t int_least32_t;
|
|
||||||
typedef int64_t int_least64_t;
|
|
||||||
typedef uint8_t uint_least8_t;
|
|
||||||
typedef uint16_t uint_least16_t;
|
|
||||||
typedef uint32_t uint_least32_t;
|
|
||||||
typedef uint64_t uint_least64_t;
|
|
||||||
|
|
||||||
// 7.18.1.3 Fastest minimum-width integer types
|
|
||||||
typedef int8_t int_fast8_t;
|
|
||||||
typedef int16_t int_fast16_t;
|
|
||||||
typedef int32_t int_fast32_t;
|
|
||||||
typedef int64_t int_fast64_t;
|
|
||||||
typedef uint8_t uint_fast8_t;
|
|
||||||
typedef uint16_t uint_fast16_t;
|
|
||||||
typedef uint32_t uint_fast32_t;
|
|
||||||
typedef uint64_t uint_fast64_t;
|
|
||||||
|
|
||||||
// 7.18.1.4 Integer types capable of holding object pointers
|
|
||||||
#ifdef _WIN64 // [
|
|
||||||
typedef __int64 intptr_t;
|
|
||||||
typedef unsigned __int64 uintptr_t;
|
|
||||||
#else // _WIN64 ][
|
|
||||||
typedef int intptr_t;
|
|
||||||
typedef unsigned int uintptr_t;
|
|
||||||
#endif // _WIN64 ]
|
|
||||||
|
|
||||||
// 7.18.1.5 Greatest-width integer types
|
|
||||||
typedef int64_t intmax_t;
|
|
||||||
typedef uint64_t uintmax_t;
|
|
||||||
|
|
||||||
|
|
||||||
// 7.18.2 Limits of specified-width integer types
|
|
||||||
|
|
||||||
#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [ See footnote 220 at page 257 and footnote 221 at page 259
|
|
||||||
|
|
||||||
// 7.18.2.1 Limits of exact-width integer types
|
|
||||||
#define INT8_MIN ((int8_t)_I8_MIN)
|
|
||||||
#define INT8_MAX _I8_MAX
|
|
||||||
#define INT16_MIN ((int16_t)_I16_MIN)
|
|
||||||
#define INT16_MAX _I16_MAX
|
|
||||||
#define INT32_MIN ((int32_t)_I32_MIN)
|
|
||||||
#define INT32_MAX _I32_MAX
|
|
||||||
#define INT64_MIN ((int64_t)_I64_MIN)
|
|
||||||
#define INT64_MAX _I64_MAX
|
|
||||||
#define UINT8_MAX _UI8_MAX
|
|
||||||
#define UINT16_MAX _UI16_MAX
|
|
||||||
#define UINT32_MAX _UI32_MAX
|
|
||||||
#define UINT64_MAX _UI64_MAX
|
|
||||||
|
|
||||||
// 7.18.2.2 Limits of minimum-width integer types
|
|
||||||
#define INT_LEAST8_MIN INT8_MIN
|
|
||||||
#define INT_LEAST8_MAX INT8_MAX
|
|
||||||
#define INT_LEAST16_MIN INT16_MIN
|
|
||||||
#define INT_LEAST16_MAX INT16_MAX
|
|
||||||
#define INT_LEAST32_MIN INT32_MIN
|
|
||||||
#define INT_LEAST32_MAX INT32_MAX
|
|
||||||
#define INT_LEAST64_MIN INT64_MIN
|
|
||||||
#define INT_LEAST64_MAX INT64_MAX
|
|
||||||
#define UINT_LEAST8_MAX UINT8_MAX
|
|
||||||
#define UINT_LEAST16_MAX UINT16_MAX
|
|
||||||
#define UINT_LEAST32_MAX UINT32_MAX
|
|
||||||
#define UINT_LEAST64_MAX UINT64_MAX
|
|
||||||
|
|
||||||
// 7.18.2.3 Limits of fastest minimum-width integer types
|
|
||||||
#define INT_FAST8_MIN INT8_MIN
|
|
||||||
#define INT_FAST8_MAX INT8_MAX
|
|
||||||
#define INT_FAST16_MIN INT16_MIN
|
|
||||||
#define INT_FAST16_MAX INT16_MAX
|
|
||||||
#define INT_FAST32_MIN INT32_MIN
|
|
||||||
#define INT_FAST32_MAX INT32_MAX
|
|
||||||
#define INT_FAST64_MIN INT64_MIN
|
|
||||||
#define INT_FAST64_MAX INT64_MAX
|
|
||||||
#define UINT_FAST8_MAX UINT8_MAX
|
|
||||||
#define UINT_FAST16_MAX UINT16_MAX
|
|
||||||
#define UINT_FAST32_MAX UINT32_MAX
|
|
||||||
#define UINT_FAST64_MAX UINT64_MAX
|
|
||||||
|
|
||||||
// 7.18.2.4 Limits of integer types capable of holding object pointers
|
|
||||||
#ifdef _WIN64 // [
|
|
||||||
# define INTPTR_MIN INT64_MIN
|
|
||||||
# define INTPTR_MAX INT64_MAX
|
|
||||||
# define UINTPTR_MAX UINT64_MAX
|
|
||||||
#else // _WIN64 ][
|
|
||||||
# define INTPTR_MIN INT32_MIN
|
|
||||||
# define INTPTR_MAX INT32_MAX
|
|
||||||
# define UINTPTR_MAX UINT32_MAX
|
|
||||||
#endif // _WIN64 ]
|
|
||||||
|
|
||||||
// 7.18.2.5 Limits of greatest-width integer types
|
|
||||||
#define INTMAX_MIN INT64_MIN
|
|
||||||
#define INTMAX_MAX INT64_MAX
|
|
||||||
#define UINTMAX_MAX UINT64_MAX
|
|
||||||
|
|
||||||
// 7.18.3 Limits of other integer types
|
|
||||||
|
|
||||||
#ifdef _WIN64 // [
|
|
||||||
# define PTRDIFF_MIN _I64_MIN
|
|
||||||
# define PTRDIFF_MAX _I64_MAX
|
|
||||||
#else // _WIN64 ][
|
|
||||||
# define PTRDIFF_MIN _I32_MIN
|
|
||||||
# define PTRDIFF_MAX _I32_MAX
|
|
||||||
#endif // _WIN64 ]
|
|
||||||
|
|
||||||
#define SIG_ATOMIC_MIN INT_MIN
|
|
||||||
#define SIG_ATOMIC_MAX INT_MAX
|
|
||||||
|
|
||||||
#ifndef SIZE_MAX // [
|
|
||||||
# ifdef _WIN64 // [
|
|
||||||
# define SIZE_MAX _UI64_MAX
|
|
||||||
# else // _WIN64 ][
|
|
||||||
# define SIZE_MAX _UI32_MAX
|
|
||||||
# endif // _WIN64 ]
|
|
||||||
#endif // SIZE_MAX ]
|
|
||||||
|
|
||||||
// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
|
|
||||||
#ifndef WCHAR_MIN // [
|
|
||||||
# define WCHAR_MIN 0
|
|
||||||
#endif // WCHAR_MIN ]
|
|
||||||
#ifndef WCHAR_MAX // [
|
|
||||||
# define WCHAR_MAX _UI16_MAX
|
|
||||||
#endif // WCHAR_MAX ]
|
|
||||||
|
|
||||||
#define WINT_MIN 0
|
|
||||||
#define WINT_MAX _UI16_MAX
|
|
||||||
|
|
||||||
#endif // __STDC_LIMIT_MACROS ]
|
|
||||||
|
|
||||||
|
|
||||||
// 7.18.4 Limits of other integer types
|
|
||||||
|
|
||||||
#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [ See footnote 224 at page 260
|
|
||||||
|
|
||||||
// 7.18.4.1 Macros for minimum-width integer constants
|
|
||||||
|
|
||||||
#define INT8_C(val) val##i8
|
|
||||||
#define INT16_C(val) val##i16
|
|
||||||
#define INT32_C(val) val##i32
|
|
||||||
#define INT64_C(val) val##i64
|
|
||||||
|
|
||||||
#define UINT8_C(val) val##ui8
|
|
||||||
#define UINT16_C(val) val##ui16
|
|
||||||
#define UINT32_C(val) val##ui32
|
|
||||||
#define UINT64_C(val) val##ui64
|
|
||||||
|
|
||||||
// 7.18.4.2 Macros for greatest-width integer constants
|
|
||||||
#define INTMAX_C INT64_C
|
|
||||||
#define UINTMAX_C UINT64_C
|
|
||||||
|
|
||||||
#endif // __STDC_CONSTANT_MACROS ]
|
|
||||||
|
|
||||||
|
|
||||||
#endif // _MSC_STDINT_H_ ]
|
|
||||||
@@ -1,217 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="8.00"
|
|
||||||
Name="ixml"
|
|
||||||
ProjectGUID="{AD489FAF-9CDD-411B-BFE9-1B9C6C16D427}"
|
|
||||||
RootNamespace="ixml"
|
|
||||||
>
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"
|
|
||||||
/>
|
|
||||||
</Platforms>
|
|
||||||
<ToolFiles>
|
|
||||||
</ToolFiles>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="4"
|
|
||||||
CharacterSet="2"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="..\..\ixml\inc;..\..\ixml\src\inc;..\inc;..\..\upnp\inc"
|
|
||||||
PreprocessorDefinitions="WIN32;DEBUG"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="1"
|
|
||||||
WarningLevel="3"
|
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
CompileAs="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLibrarianTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="4"
|
|
||||||
UseOfMFC="0"
|
|
||||||
CharacterSet="2"
|
|
||||||
WholeProgramOptimization="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
AdditionalIncludeDirectories="..\..\ixml\inc;..\..\ixml\src\inc;..\inc"
|
|
||||||
PreprocessorDefinitions="WIN32;IXML_INLINE="
|
|
||||||
RuntimeLibrary="0"
|
|
||||||
WarningLevel="3"
|
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
CompileAs="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLibrarianTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Source Files"
|
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\attr.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\document.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\element.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\ixml.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\ixmldebug.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\ixmlmembuf.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\ixmlparser.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\namedNodeMap.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\node.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\nodeList.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Header Files"
|
|
||||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
|
||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\inc\ixml.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\inc\ixmldebug.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\inc\ixmlmembuf.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\inc\ixmlparser.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 9.00
|
|
||||||
# Visual Studio 2005
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libupnp", "libupnp.vcproj", "{6227F51A-1498-4C4A-B213-F6FDED605125}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "threadutil", "threadutil.vcproj", "{24884928-0501-4CF2-BC8A-180AFC23B2AF}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ixml", "ixml.vcproj", "{AD489FAF-9CDD-411B-BFE9-1B9C6C16D427}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvdevice", "tvdevice.vcproj", "{F592B023-E1F3-4A1E-841E-662DEE497435}"
|
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
|
||||||
{6227F51A-1498-4C4A-B213-F6FDED605125} = {6227F51A-1498-4C4A-B213-F6FDED605125}
|
|
||||||
{24884928-0501-4CF2-BC8A-180AFC23B2AF} = {24884928-0501-4CF2-BC8A-180AFC23B2AF}
|
|
||||||
{AD489FAF-9CDD-411B-BFE9-1B9C6C16D427} = {AD489FAF-9CDD-411B-BFE9-1B9C6C16D427}
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvctrlpt", "tvctrlpt.vcproj", "{BC1557D9-9E84-4BA5-861E-CB04D767FBDC}"
|
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
|
||||||
{AD489FAF-9CDD-411B-BFE9-1B9C6C16D427} = {AD489FAF-9CDD-411B-BFE9-1B9C6C16D427}
|
|
||||||
{24884928-0501-4CF2-BC8A-180AFC23B2AF} = {24884928-0501-4CF2-BC8A-180AFC23B2AF}
|
|
||||||
{6227F51A-1498-4C4A-B213-F6FDED605125} = {6227F51A-1498-4C4A-B213-F6FDED605125}
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvcombo", "tvcombo.vcproj", "{B5D74697-F615-4DCB-AA8B-935F6372F01C}"
|
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
|
||||||
{6227F51A-1498-4C4A-B213-F6FDED605125} = {6227F51A-1498-4C4A-B213-F6FDED605125}
|
|
||||||
{24884928-0501-4CF2-BC8A-180AFC23B2AF} = {24884928-0501-4CF2-BC8A-180AFC23B2AF}
|
|
||||||
{AD489FAF-9CDD-411B-BFE9-1B9C6C16D427} = {AD489FAF-9CDD-411B-BFE9-1B9C6C16D427}
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Global
|
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
|
||||||
Debug|Win32 = Debug|Win32
|
|
||||||
Release|Win32 = Release|Win32
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
||||||
{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{24884928-0501-4CF2-BC8A-180AFC23B2AF}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{24884928-0501-4CF2-BC8A-180AFC23B2AF}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{24884928-0501-4CF2-BC8A-180AFC23B2AF}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{24884928-0501-4CF2-BC8A-180AFC23B2AF}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{AD489FAF-9CDD-411B-BFE9-1B9C6C16D427}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{AD489FAF-9CDD-411B-BFE9-1B9C6C16D427}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{AD489FAF-9CDD-411B-BFE9-1B9C6C16D427}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{AD489FAF-9CDD-411B-BFE9-1B9C6C16D427}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{F592B023-E1F3-4A1E-841E-662DEE497435}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{F592B023-E1F3-4A1E-841E-662DEE497435}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{F592B023-E1F3-4A1E-841E-662DEE497435}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{F592B023-E1F3-4A1E-841E-662DEE497435}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{BC1557D9-9E84-4BA5-861E-CB04D767FBDC}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{BC1557D9-9E84-4BA5-861E-CB04D767FBDC}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{BC1557D9-9E84-4BA5-861E-CB04D767FBDC}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{BC1557D9-9E84-4BA5-861E-CB04D767FBDC}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{B5D74697-F615-4DCB-AA8B-935F6372F01C}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{B5D74697-F615-4DCB-AA8B-935F6372F01C}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{B5D74697-F615-4DCB-AA8B-935F6372F01C}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{B5D74697-F615-4DCB-AA8B-935F6372F01C}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
|
||||||
HideSolutionNode = FALSE
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
|
||||||
@@ -1,654 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="8.00"
|
|
||||||
Name="libupnp"
|
|
||||||
ProjectGUID="{6227F51A-1498-4C4A-B213-F6FDED605125}"
|
|
||||||
RootNamespace="libupnp"
|
|
||||||
>
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"
|
|
||||||
/>
|
|
||||||
</Platforms>
|
|
||||||
<ToolFiles>
|
|
||||||
</ToolFiles>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="2"
|
|
||||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
|
||||||
UseOfMFC="0"
|
|
||||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
|
||||||
CharacterSet="2"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
PreprocessorDefinitions="NDEBUG"
|
|
||||||
MkTypLibCompatible="true"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
TargetEnvironment="1"
|
|
||||||
TypeLibraryName=".\Release/libupnp.tlb"
|
|
||||||
HeaderFileName=""
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="2"
|
|
||||||
InlineFunctionExpansion="1"
|
|
||||||
AdditionalIncludeDirectories="..\..\pthreads\include;..\..\ixml\src\inc;..\..\ixml\inc;..\..\threadutil\inc;..\..\upnp\inc;..\..\upnp\src\inc;..\inc;..\msvc"
|
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBUPNP_EXPORTS;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_SECURE_NO_WARNINGS"
|
|
||||||
StringPooling="true"
|
|
||||||
RuntimeLibrary="0"
|
|
||||||
EnableFunctionLevelLinking="true"
|
|
||||||
PrecompiledHeaderFile=".\Release/libupnp.pch"
|
|
||||||
AssemblerListingLocation="$(OutDir)\"
|
|
||||||
ObjectFile="$(OutDir)\"
|
|
||||||
ProgramDataBaseFileName="$(OutDir)\"
|
|
||||||
BrowseInformation="1"
|
|
||||||
WarningLevel="3"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
CompileAs="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
PreprocessorDefinitions="NDEBUG"
|
|
||||||
Culture="1031"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalDependencies="odbc32.lib odbccp32.lib ..\..\pthreads\lib\pthreadvc2.lib ws2_32.lib iphlpapi.lib"
|
|
||||||
OutputFile="$(OutDir)\libupnp.dll"
|
|
||||||
LinkIncremental="1"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
ProgramDatabaseFile=".\Release/libupnp.pdb"
|
|
||||||
ImportLibrary=".\Release/libupnp.lib"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
OutputFile=".\Release/libupnp.bsc"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="2"
|
|
||||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
|
||||||
UseOfMFC="0"
|
|
||||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
|
||||||
CharacterSet="2"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
PreprocessorDefinitions="_DEBUG"
|
|
||||||
MkTypLibCompatible="true"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
TargetEnvironment="1"
|
|
||||||
TypeLibraryName=".\Debug/libupnp.tlb"
|
|
||||||
HeaderFileName=""
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="..\..\pthreads\include;..\..\ixml\src\inc;..\..\ixml\inc;..\..\threadutil\inc;..\..\upnp\inc;..\..\upnp\src\inc;..\inc;..\msvc"
|
|
||||||
PreprocessorDefinitions="DEBUG;WIN32;_WINDOWS;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_SECURE_NO_WARNINGS"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="1"
|
|
||||||
PrecompiledHeaderFile="$(OutDir)\libupnp.pch"
|
|
||||||
AssemblerListingLocation="$(OutDir)\"
|
|
||||||
ObjectFile="$(OutDir)\"
|
|
||||||
ProgramDataBaseFileName="$(OutDir)\"
|
|
||||||
BrowseInformation="1"
|
|
||||||
WarningLevel="3"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
CompileAs="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
PreprocessorDefinitions="_DEBUG"
|
|
||||||
Culture="1031"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalDependencies="..\..\pthreads\lib\pthreadvc2.lib ws2_32.lib iphlpapi.lib ixml.lib"
|
|
||||||
OutputFile="$(OutDir)\libupnp.dll"
|
|
||||||
LinkIncremental="2"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
AdditionalLibraryDirectories="$(OutDir)\..\ixml"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
ProgramDatabaseFile="$(OutDir)\libupnp.pdb"
|
|
||||||
ImportLibrary="$(OutDir)\libupnp.lib"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
OutputFile="$(OutDir)\libupnp.bsc"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="sources"
|
|
||||||
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\ActionComplete.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\ActionRequest.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\attr.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\client_table\client_table.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\Discovery.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\document.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\element.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\Event.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\EventSubscribe.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\FileInfo.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\FreeList.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\gena\gena_callback2.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\gena\gena_ctrlpt.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\gena\gena_device.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\net\http\httpparser.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\net\http\httpreadwrite.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inet_pton.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\ixml.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\ixmlmembuf.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\ixmlparser.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\LinkedList.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\uuid\md5.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\util\membuffer.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\miniserver\miniserver.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\namedNodeMap.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\node.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\nodeList.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\net\http\parsetools.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\service_table\service_table.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\soap\soap_common.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\soap\soap_ctrlpt.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\soap\soap_device.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\net\sock.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\ssdp\ssdp_ctrlpt.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\ssdp\ssdp_device.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\ssdp\ssdp_ResultData.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\ssdp\ssdp_server.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\net\http\statcodes.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\StateVarComplete.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\StateVarRequest.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\util\strintmap.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\SubscriptionRequest.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\uuid\sysdep.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\ThreadPool.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\TimerThread.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\util\upnp_timeout.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\upnpapi.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\upnpdebug.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\UpnpString.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\upnptools.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\net\uri\uri.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\urlconfig\urlconfig.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\util\util.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\uuid\uuid.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\net\http\webserver.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\win_dll.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="headers"
|
|
||||||
Filter="h;hpp;hxx;hm;inl"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\ActionComplete.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\actionrequest.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\client_table.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\config.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\discovery.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\Event.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\EventSubscribe.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\FileInfo.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\gena.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\gena_ctrlpt.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\gena_device.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\global.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\gmtdate.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\http_client.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\httpparser.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\httpreadwrite.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\inet_pton.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\md5.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\membuffer.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\miniserver.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\netall.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\parsetools.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\server.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\service_table.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\soaplib.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\sock.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\ssdp\ssdp_ResultData.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\ssdplib.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\statcodes.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\StateVarComplete.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\statevarrequest.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\statuscodes.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\strintmap.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\SubscriptionRequest.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\sysdep.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\unixutil.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\upnp.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\upnp_timeout.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\upnpapi.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\upnpclosesocket.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\upnpdebug.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\UpnpString.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\upnptools.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\uri.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\urlconfig.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\util.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\utilall.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\uuid.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\webserver.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\..\libupnp_win32.patch"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
||||||
@@ -1,213 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="8.00"
|
|
||||||
Name="threadutil"
|
|
||||||
ProjectGUID="{24884928-0501-4CF2-BC8A-180AFC23B2AF}"
|
|
||||||
RootNamespace="threadutil"
|
|
||||||
>
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"
|
|
||||||
/>
|
|
||||||
</Platforms>
|
|
||||||
<ToolFiles>
|
|
||||||
</ToolFiles>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="4"
|
|
||||||
CharacterSet="2"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="..\..\threadutil\inc;..\..\upnp\inc;..\..\ixml\inc;..\..\pthreads\include"
|
|
||||||
PreprocessorDefinitions="WIN32;DEBUG"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
WarningLevel="3"
|
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLibrarianTool"
|
|
||||||
AdditionalDependencies="pthreadVC2.lib"
|
|
||||||
AdditionalLibraryDirectories="..\..\pthreads\lib"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="$(ConfigurationName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="2"
|
|
||||||
WholeProgramOptimization="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
RuntimeLibrary="2"
|
|
||||||
WarningLevel="3"
|
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
OptimizeReferences="2"
|
|
||||||
EnableCOMDATFolding="2"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Source Files"
|
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\FreeList.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\LinkedList.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\ThreadPool.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\TimerThread.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Header Files"
|
|
||||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
|
||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\inc\FreeList.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\inc\ithread.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\inc\LinkedList.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\inc\ThreadPool.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\inc\TimerThread.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Resource Files"
|
|
||||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
|
||||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
|
||||||
>
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
||||||
@@ -1,216 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="8.00"
|
|
||||||
Name="tvcombo"
|
|
||||||
ProjectGUID="{B5D74697-F615-4DCB-AA8B-935F6372F01C}"
|
|
||||||
RootNamespace="tvcombo"
|
|
||||||
>
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"
|
|
||||||
/>
|
|
||||||
</Platforms>
|
|
||||||
<ToolFiles>
|
|
||||||
</ToolFiles>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="2"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="..\..\upnp\inc;..\..\ixml\inc;..\..\upnp\sample\common;..\inc;..\..\threadutil\inc;..\..\pthreads\include;..\..\upnp\sample\tvcombo;..\..\upnp\sample\tvcombo\linux"
|
|
||||||
PreprocessorDefinitions="WIN32;DEBUG"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
WarningLevel="3"
|
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalDependencies="..\..\pthreads\lib\pthreadVC2.lib ixml.lib threadutil.lib libupnp.lib"
|
|
||||||
AdditionalLibraryDirectories=""$(OutDir)";"out.vc8.$(ConfigurationName)\ixml";"out.vc8.$(ConfigurationName)\threadutil";"out.vc8.$(ConfigurationName)\libupnp""
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="$(ConfigurationName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="2"
|
|
||||||
WholeProgramOptimization="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
RuntimeLibrary="2"
|
|
||||||
WarningLevel="3"
|
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
OptimizeReferences="2"
|
|
||||||
EnableCOMDATFolding="2"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Source Files"
|
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\common\sample_util.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvcombo\linux\upnp_tv_combo_main.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvcombo\upnp_tv_ctrlpt.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvcombo\upnp_tv_device.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Header Files"
|
|
||||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
|
||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\common\sample_util.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvcombo\upnp_tv_ctrlpt.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvcombo\upnp_tv_device.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Resource Files"
|
|
||||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
|
||||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
|
||||||
>
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
||||||
@@ -1,208 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="8.00"
|
|
||||||
Name="tvctrlpt"
|
|
||||||
ProjectGUID="{BC1557D9-9E84-4BA5-861E-CB04D767FBDC}"
|
|
||||||
RootNamespace="tvctrlpt"
|
|
||||||
>
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"
|
|
||||||
/>
|
|
||||||
</Platforms>
|
|
||||||
<ToolFiles>
|
|
||||||
</ToolFiles>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="2"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="..\..\upnp\inc;..\..\ixml\inc;..\..\upnp\sample\common;..\inc;..\..\threadutil\inc;..\..\pthreads\include;..\..\upnp\sample\tvctrlpt;..\..\upnp\sample\tvctrlpt\linux"
|
|
||||||
PreprocessorDefinitions="WIN32;DEBUG"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
WarningLevel="3"
|
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalDependencies="..\..\pthreads\lib\pthreadVC2.lib ixml.lib threadutil.lib libupnp.lib"
|
|
||||||
AdditionalLibraryDirectories=""$(OutDir)";"out.vc8.$(ConfigurationName)\ixml";"out.vc8.$(ConfigurationName)\threadutil";"out.vc8.$(ConfigurationName)\libupnp""
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="$(ConfigurationName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="2"
|
|
||||||
WholeProgramOptimization="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
RuntimeLibrary="2"
|
|
||||||
WarningLevel="3"
|
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
OptimizeReferences="2"
|
|
||||||
EnableCOMDATFolding="2"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Source Files"
|
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\common\sample_util.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvctrlpt\upnp_tv_ctrlpt.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvctrlpt\linux\upnp_tv_ctrlpt_main.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Header Files"
|
|
||||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
|
||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\common\sample_util.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvctrlpt\upnp_tv_ctrlpt.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Resource Files"
|
|
||||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
|
||||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
|
||||||
>
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
||||||
@@ -1,208 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="8.00"
|
|
||||||
Name="tvdevice"
|
|
||||||
ProjectGUID="{F592B023-E1F3-4A1E-841E-662DEE497435}"
|
|
||||||
RootNamespace="tvdevice"
|
|
||||||
>
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"
|
|
||||||
/>
|
|
||||||
</Platforms>
|
|
||||||
<ToolFiles>
|
|
||||||
</ToolFiles>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc8.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="2"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="..\..\upnp\inc;..\..\ixml\inc;..\..\upnp\sample\common;..\inc;..\..\threadutil\inc;..\..\pthreads\include;..\..\upnp\sample\tvdevice;..\..\upnp\sample\tvdevice\linux"
|
|
||||||
PreprocessorDefinitions="WIN32;DEBUG"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
WarningLevel="3"
|
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalDependencies="..\..\pthreads\lib\pthreadVC2.lib ixml.lib threadutil.lib libupnp.lib"
|
|
||||||
AdditionalLibraryDirectories=""$(OutDir)";"out.vc8.$(ConfigurationName)\ixml";"out.vc8.$(ConfigurationName)\threadutil";"out.vc8.$(ConfigurationName)\libupnp""
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="$(ConfigurationName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="2"
|
|
||||||
WholeProgramOptimization="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
RuntimeLibrary="2"
|
|
||||||
WarningLevel="3"
|
|
||||||
Detect64BitPortabilityProblems="true"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
OptimizeReferences="2"
|
|
||||||
EnableCOMDATFolding="2"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebDeploymentTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Source Files"
|
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\common\sample_util.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvdevice\upnp_tv_device.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvdevice\linux\upnp_tv_device_main.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Header Files"
|
|
||||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
|
||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\common\sample_util.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvdevice\upnp_tv_device.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Resource Files"
|
|
||||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
|
||||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
|
||||||
>
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
||||||
@@ -1,216 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="9.00"
|
|
||||||
Name="ixml"
|
|
||||||
ProjectGUID="{9C2C266D-35A3-465F-A297-0E21D54E5C89}"
|
|
||||||
RootNamespace="ixml"
|
|
||||||
TargetFrameworkVersion="196613"
|
|
||||||
>
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"
|
|
||||||
/>
|
|
||||||
</Platforms>
|
|
||||||
<ToolFiles>
|
|
||||||
</ToolFiles>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="4"
|
|
||||||
CharacterSet="0"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="..\..\ixml\inc;..\..\ixml\src\inc;..\inc;..\..\upnp\inc"
|
|
||||||
PreprocessorDefinitions="DEBUG;WIN32;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_SECURE_NO_WARNINGS"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLibrarianTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="4"
|
|
||||||
CharacterSet="0"
|
|
||||||
WholeProgramOptimization="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="2"
|
|
||||||
EnableIntrinsicFunctions="true"
|
|
||||||
AdditionalIncludeDirectories="..\..\ixml\inc;..\..\ixml\src\inc;..\inc"
|
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBUPNP_EXPORTS;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_SECURE_NO_WARNINGS"
|
|
||||||
RuntimeLibrary="2"
|
|
||||||
EnableFunctionLevelLinking="true"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLibrarianTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Source Files"
|
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\attr.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\document.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\element.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\ixml.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\ixmldebug.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\ixmlmembuf.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\ixmlparser.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\namedNodeMap.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\node.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\nodeList.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Header Files"
|
|
||||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
|
||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\inc\ixml.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\inc\ixmldebug.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\inc\ixmlmembuf.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\inc\ixmlparser.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
|
||||||
# Visual Studio 2008
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libupnp", "libupnp.vcproj", "{6227F51A-1498-4C4A-B213-F6FDED605125}"
|
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
|
||||||
{9C2C266D-35A3-465F-A297-0E21D54E5C89} = {9C2C266D-35A3-465F-A297-0E21D54E5C89}
|
|
||||||
{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D} = {1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ixml", "ixml.vcproj", "{9C2C266D-35A3-465F-A297-0E21D54E5C89}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "threadutil", "threadutil.vcproj", "{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}"
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvctrlpt", "tvctrlpt.vcproj", "{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}"
|
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
|
||||||
{6227F51A-1498-4C4A-B213-F6FDED605125} = {6227F51A-1498-4C4A-B213-F6FDED605125}
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvdevice", "tvdevice.vcproj", "{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}"
|
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
|
||||||
{6227F51A-1498-4C4A-B213-F6FDED605125} = {6227F51A-1498-4C4A-B213-F6FDED605125}
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tvcombo", "tvcombo.vcproj", "{6365804B-22C6-4D5E-91F3-0C052EB55B4F}"
|
|
||||||
ProjectSection(ProjectDependencies) = postProject
|
|
||||||
{6227F51A-1498-4C4A-B213-F6FDED605125} = {6227F51A-1498-4C4A-B213-F6FDED605125}
|
|
||||||
EndProjectSection
|
|
||||||
EndProject
|
|
||||||
Global
|
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
|
||||||
Debug|Win32 = Debug|Win32
|
|
||||||
Release|Win32 = Release|Win32
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
||||||
{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{6227F51A-1498-4C4A-B213-F6FDED605125}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{6227F51A-1498-4C4A-B213-F6FDED605125}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{9C2C266D-35A3-465F-A297-0E21D54E5C89}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug|Win32.ActiveCfg = Debug|Win32
|
|
||||||
{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Debug|Win32.Build.0 = Debug|Win32
|
|
||||||
{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release|Win32.ActiveCfg = Release|Win32
|
|
||||||
{6365804B-22C6-4D5E-91F3-0C052EB55B4F}.Release|Win32.Build.0 = Release|Win32
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
|
||||||
HideSolutionNode = FALSE
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
|
||||||
@@ -1,650 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="9,00"
|
|
||||||
Name="libupnp"
|
|
||||||
ProjectGUID="{6227F51A-1498-4C4A-B213-F6FDED605125}"
|
|
||||||
RootNamespace="libupnp"
|
|
||||||
TargetFrameworkVersion="131072"
|
|
||||||
>
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"
|
|
||||||
/>
|
|
||||||
</Platforms>
|
|
||||||
<ToolFiles>
|
|
||||||
</ToolFiles>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="2"
|
|
||||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
|
||||||
UseOfMFC="0"
|
|
||||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
|
||||||
CharacterSet="0"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
PreprocessorDefinitions="NDEBUG"
|
|
||||||
MkTypLibCompatible="true"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
TargetEnvironment="1"
|
|
||||||
TypeLibraryName=".\Release/libupnp.tlb"
|
|
||||||
HeaderFileName=""
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="2"
|
|
||||||
InlineFunctionExpansion="1"
|
|
||||||
AdditionalIncludeDirectories="..\..\pthreads\include,..\ixml\src\inc,..\ixml\inc,..\threadutil\inc,..\upnp\inc,..\upnp\src\inc,.\inc"
|
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBUPNP_EXPORTS;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_SECURE_NO_WARNINGS"
|
|
||||||
StringPooling="true"
|
|
||||||
RuntimeLibrary="2"
|
|
||||||
EnableFunctionLevelLinking="true"
|
|
||||||
PrecompiledHeaderFile=".\Release/libupnp.pch"
|
|
||||||
AssemblerListingLocation=".\Release/"
|
|
||||||
ObjectFile=".\Release/"
|
|
||||||
ProgramDataBaseFileName=".\Release/"
|
|
||||||
BrowseInformation="1"
|
|
||||||
WarningLevel="3"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
PreprocessorDefinitions="NDEBUG"
|
|
||||||
Culture="1031"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalDependencies="..\..\pthreads\lib\pthreadvc2.lib ws2_32.lib iphlpapi.lib"
|
|
||||||
OutputFile=".\Release/libupnp.dll"
|
|
||||||
LinkIncremental="1"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
ProgramDatabaseFile=".\Release/libupnp.pdb"
|
|
||||||
RandomizedBaseAddress="1"
|
|
||||||
DataExecutionPrevention="0"
|
|
||||||
ImportLibrary=".\Release/libupnp.lib"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
OutputFile=".\Release/libupnp.bsc"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="2"
|
|
||||||
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
|
||||||
UseOfMFC="0"
|
|
||||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
|
||||||
CharacterSet="0"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
PreprocessorDefinitions="_DEBUG"
|
|
||||||
MkTypLibCompatible="true"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
TargetEnvironment="1"
|
|
||||||
TypeLibraryName=".\Debug/libupnp.tlb"
|
|
||||||
HeaderFileName=""
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="..\..\pthreads\include;..\..\ixml\src\inc;..\..\ixml\inc;..\..\threadutil\inc;..\..\upnp\inc;..\..\upnp\src\inc;..\inc;..\msvc"
|
|
||||||
PreprocessorDefinitions="DEBUG;WIN32;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_SECURE_NO_WARNINGS"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
PrecompiledHeaderFile="$(OutDir)\libupnp.pch"
|
|
||||||
AssemblerListingLocation="$(OutDir)\"
|
|
||||||
ObjectFile="$(OutDir)\"
|
|
||||||
ProgramDataBaseFileName="$(OutDir)\"
|
|
||||||
BrowseInformation="1"
|
|
||||||
WarningLevel="3"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
PreprocessorDefinitions="_DEBUG"
|
|
||||||
Culture="1031"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalDependencies="..\..\pthreads\lib\pthreadvc2.lib ws2_32.lib iphlpapi.lib $(TargetDir)..\ixml\ixml.lib"
|
|
||||||
OutputFile="$(OutDir)\libupnp.dll"
|
|
||||||
LinkIncremental="2"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
ProgramDatabaseFile="$(OutDir)\libupnp.pdb"
|
|
||||||
RandomizedBaseAddress="1"
|
|
||||||
DataExecutionPrevention="0"
|
|
||||||
ImportLibrary="$(OutDir)\libupnp.lib"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
SuppressStartupBanner="true"
|
|
||||||
OutputFile="$(OutDir)\libupnp.bsc"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="sources"
|
|
||||||
Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\ActionComplete.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\ActionRequest.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\attr.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\client_table\client_table.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\Discovery.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\document.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\element.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\Event.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\EventSubscribe.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\FileInfo.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\FreeList.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\gena\gena_callback2.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\gena\gena_ctrlpt.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\gena\gena_device.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\net\http\httpparser.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\net\http\httpreadwrite.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inet_pton.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\ixml.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\ixmlmembuf.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\ixmlparser.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\LinkedList.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\uuid\md5.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\util\membuffer.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\miniserver\miniserver.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\namedNodeMap.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\node.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\ixml\src\nodeList.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\net\http\parsetools.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\service_table\service_table.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\soap\soap_common.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\soap\soap_ctrlpt.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\soap\soap_device.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\net\sock.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\ssdp\ssdp_ctrlpt.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\ssdp\ssdp_device.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\ssdp\ssdp_ResultData.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\ssdp\ssdp_server.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\net\http\statcodes.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\StateVarComplete.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\StateVarRequest.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\util\strintmap.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\SubscriptionRequest.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\uuid\sysdep.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\ThreadPool.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\TimerThread.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\util\upnp_timeout.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\upnpapi.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\upnpdebug.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\UpnpString.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\api\upnptools.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\net\uri\uri.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\urlconfig\urlconfig.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\util\util.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\uuid\uuid.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\genlib\net\http\webserver.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\win_dll.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="headers"
|
|
||||||
Filter="h;hpp;hxx;hm;inl"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\ActionComplete.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\ActionRequest.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\client_table.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\config.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\Discovery.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\Event.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\EventSubscribe.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\FileInfo.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\gena.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\gena_ctrlpt.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\gena_device.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\global.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\gmtdate.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\http_client.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\httpparser.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\httpreadwrite.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\inet_pton.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\md5.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\membuffer.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\miniserver.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\netall.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\parsetools.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\server.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\service_table.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\soaplib.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\sock.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\ssdp\ssdp_ResultData.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\ssdplib.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\statcodes.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\StateVarComplete.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\StateVarRequest.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\statuscodes.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\strintmap.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\SubscriptionRequest.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\sysdep.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\unixutil.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\upnp.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\upnp_timeout.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\upnpapi.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\upnpclosesocket.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\upnpdebug.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\UpnpString.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\inc\upnptools.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\uri.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\urlconfig.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\util.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\utilall.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\uuid.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\src\inc\webserver.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\..\..\libupnp_win32.patch"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
||||||
@@ -1,216 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="9,00"
|
|
||||||
Name="threadutil"
|
|
||||||
ProjectGUID="{1D3EEF7A-D248-48C0-B6B5-ECA229FE4B3D}"
|
|
||||||
RootNamespace="threadutil"
|
|
||||||
TargetFrameworkVersion="196613"
|
|
||||||
>
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"
|
|
||||||
/>
|
|
||||||
</Platforms>
|
|
||||||
<ToolFiles>
|
|
||||||
</ToolFiles>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="4"
|
|
||||||
CharacterSet="0"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="..\..\threadutil\inc;..\..\upnp\inc;..\..\ixml\inc;..\..\pthreads\include"
|
|
||||||
PreprocessorDefinitions="DEBUG;WIN32;_USRDLL;LIBUPNP_EXPORTS;UPNP_USE_MSVCPP;_CRT_SECURE_NO_WARNINGS"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
CompileAs="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLibrarianTool"
|
|
||||||
AdditionalDependencies="pthreadVC2.lib"
|
|
||||||
AdditionalLibraryDirectories="..\..\pthreads\lib"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="0"
|
|
||||||
WholeProgramOptimization="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="2"
|
|
||||||
EnableIntrinsicFunctions="true"
|
|
||||||
AdditionalIncludeDirectories="..\..\threadutil\inc;..\..\upnp\inc;..\..\ixml\inc;..\..\pthreads\include"
|
|
||||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;LIBUPNP_EXPORTS;PTW32_STATIC_LIB;UPNP_STATIC_LIB;UPNP_USE_MSVCPP;_CRT_SECURE_NO_WARNINGS"
|
|
||||||
RuntimeLibrary="2"
|
|
||||||
EnableFunctionLevelLinking="true"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
CompileAs="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
OptimizeReferences="2"
|
|
||||||
EnableCOMDATFolding="2"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Source Files"
|
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\FreeList.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\LinkedList.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\ThreadPool.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\src\TimerThread.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Header Files"
|
|
||||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
|
||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\inc\FreeList.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\inc\ithread.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\inc\LinkedList.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\inc\threadpool.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\threadutil\inc\TimerThread.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Resource Files"
|
|
||||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
|
||||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
|
||||||
>
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
||||||
@@ -1,214 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="9,00"
|
|
||||||
Name="tvcombo"
|
|
||||||
ProjectGUID="{6365804B-22C6-4D5E-91F3-0C052EB55B4F}"
|
|
||||||
RootNamespace="tvcombo"
|
|
||||||
TargetFrameworkVersion="196613"
|
|
||||||
>
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"
|
|
||||||
/>
|
|
||||||
</Platforms>
|
|
||||||
<ToolFiles>
|
|
||||||
</ToolFiles>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="2"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="..\..\upnp\inc;..\..\upnp\sample\common;..\..\upnp\sample;..\..\ixml\inc;..\..\pthreads\include;..\inc;..\..\threadutil\inc;..\..\upnp\sample\tvcombo"
|
|
||||||
PreprocessorDefinitions="DEBUG;WIN32"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
CompileAs="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalDependencies="..\..\pthreads\lib\pthreadVC2.lib $(TargetDir)..\libupnp\libupnp.lib"
|
|
||||||
AdditionalLibraryDirectories=""$(TargetDir)..\ixml";"$(TargetDir)..\threadutil";"$(TargetDir)..\libupnp""
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="2"
|
|
||||||
WholeProgramOptimization="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="2"
|
|
||||||
EnableIntrinsicFunctions="true"
|
|
||||||
RuntimeLibrary="2"
|
|
||||||
EnableFunctionLevelLinking="true"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
CompileAs="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
OptimizeReferences="2"
|
|
||||||
EnableCOMDATFolding="2"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Source Files"
|
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\common\sample_util.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvcombo\linux\upnp_tv_combo_main.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvcombo\upnp_tv_ctrlpt.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvcombo\upnp_tv_device.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Resource Files"
|
|
||||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
|
||||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
|
||||||
>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Header Files"
|
|
||||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
|
||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\common\sample_util.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvcombo\upnp_tv_ctrlpt.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvcombo\upnp_tv_device.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
||||||
@@ -1,204 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="9.00"
|
|
||||||
Name="tvctrlpt"
|
|
||||||
ProjectGUID="{8FB56F1C-E617-4B79-96AE-1FA499A3A9B5}"
|
|
||||||
RootNamespace="sample"
|
|
||||||
TargetFrameworkVersion="196613"
|
|
||||||
>
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"
|
|
||||||
/>
|
|
||||||
</Platforms>
|
|
||||||
<ToolFiles>
|
|
||||||
</ToolFiles>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="2"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="..\..\upnp\inc;..\..\upnp\sample\common;..\..\ixml\inc;..\inc;..\..\threadutil\inc;..\..\pthreads\include;..\..\upnp\sample\tvctrlpt\linux;..\..\upnp\sample\tvctrlpt"
|
|
||||||
PreprocessorDefinitions="WIN32;DEBUG"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalDependencies="..\..\pthreads\lib\pthreadVC2.lib ixml.lib threadutil.lib libupnp.lib"
|
|
||||||
AdditionalLibraryDirectories=""$(OutDir)";".\out.vc9.$(ConfigurationName)\ixml";".\out.vc9.$(ConfigurationName)\threadutil";".\out.vc9.$(ConfigurationName)\libupnp""
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="$(ConfigurationName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="2"
|
|
||||||
WholeProgramOptimization="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="2"
|
|
||||||
EnableIntrinsicFunctions="true"
|
|
||||||
RuntimeLibrary="2"
|
|
||||||
EnableFunctionLevelLinking="true"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
OptimizeReferences="2"
|
|
||||||
EnableCOMDATFolding="2"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Source Files"
|
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\common\sample_util.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvctrlpt\upnp_tv_ctrlpt.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvctrlpt\linux\upnp_tv_ctrlpt_main.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Header Files"
|
|
||||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
|
||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\common\sample_util.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvctrlpt\upnp_tv_ctrlpt.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Resource Files"
|
|
||||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
|
||||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
|
||||||
>
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
||||||
@@ -1,204 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="Windows-1252"?>
|
|
||||||
<VisualStudioProject
|
|
||||||
ProjectType="Visual C++"
|
|
||||||
Version="9.00"
|
|
||||||
Name="tvdevice"
|
|
||||||
ProjectGUID="{7FB5F4A6-74F9-471D-B358-BAA0AC1CCA0A}"
|
|
||||||
RootNamespace="tvdevice"
|
|
||||||
TargetFrameworkVersion="196613"
|
|
||||||
>
|
|
||||||
<Platforms>
|
|
||||||
<Platform
|
|
||||||
Name="Win32"
|
|
||||||
/>
|
|
||||||
</Platforms>
|
|
||||||
<ToolFiles>
|
|
||||||
</ToolFiles>
|
|
||||||
<Configurations>
|
|
||||||
<Configuration
|
|
||||||
Name="Debug|Win32"
|
|
||||||
OutputDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
IntermediateDirectory=".\out.vc9.$(ConfigurationName)\$(ProjectName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="2"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="0"
|
|
||||||
AdditionalIncludeDirectories="..\..\upnp\inc;..\..\ixml\inc;..\..\upnp\sample\common;..\inc;..\..\threadutil\inc;..\..\pthreads\include;..\..\upnp\sample\tvdevice;..\..\upnp\sample\tvdevice\linux"
|
|
||||||
PreprocessorDefinitions="WIN32;DEBUG"
|
|
||||||
MinimalRebuild="true"
|
|
||||||
BasicRuntimeChecks="3"
|
|
||||||
RuntimeLibrary="3"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="4"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
AdditionalDependencies="..\..\pthreads\lib\pthreadVC2.lib ixml.lib threadutil.lib libupnp.lib"
|
|
||||||
AdditionalLibraryDirectories=""$(OutDir)";".\out.vc9.$(ConfigurationName)\ixml";".\out.vc9.$(ConfigurationName)\threadutil";".\out.vc9.$(ConfigurationName)\libupnp""
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
<Configuration
|
|
||||||
Name="Release|Win32"
|
|
||||||
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
|
|
||||||
IntermediateDirectory="$(ConfigurationName)"
|
|
||||||
ConfigurationType="1"
|
|
||||||
CharacterSet="2"
|
|
||||||
WholeProgramOptimization="1"
|
|
||||||
>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreBuildEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCustomBuildTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXMLDataGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCWebServiceProxyGeneratorTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCMIDLTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCCLCompilerTool"
|
|
||||||
Optimization="2"
|
|
||||||
EnableIntrinsicFunctions="true"
|
|
||||||
RuntimeLibrary="2"
|
|
||||||
EnableFunctionLevelLinking="true"
|
|
||||||
WarningLevel="3"
|
|
||||||
DebugInformationFormat="3"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManagedResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCResourceCompilerTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPreLinkEventTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCLinkerTool"
|
|
||||||
GenerateDebugInformation="true"
|
|
||||||
OptimizeReferences="2"
|
|
||||||
EnableCOMDATFolding="2"
|
|
||||||
TargetMachine="1"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCALinkTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCManifestTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCXDCMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCBscMakeTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCFxCopTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCAppVerifierTool"
|
|
||||||
/>
|
|
||||||
<Tool
|
|
||||||
Name="VCPostBuildEventTool"
|
|
||||||
/>
|
|
||||||
</Configuration>
|
|
||||||
</Configurations>
|
|
||||||
<References>
|
|
||||||
</References>
|
|
||||||
<Files>
|
|
||||||
<Filter
|
|
||||||
Name="Source Files"
|
|
||||||
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
|
|
||||||
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\common\sample_util.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvdevice\upnp_tv_device.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvdevice\linux\upnp_tv_device_main.c"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Header Files"
|
|
||||||
Filter="h;hpp;hxx;hm;inl;inc;xsd"
|
|
||||||
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
|
|
||||||
>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\common\sample_util.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
<File
|
|
||||||
RelativePath="..\..\upnp\sample\tvdevice\upnp_tv_device.h"
|
|
||||||
>
|
|
||||||
</File>
|
|
||||||
</Filter>
|
|
||||||
<Filter
|
|
||||||
Name="Resource Files"
|
|
||||||
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
|
|
||||||
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
|
|
||||||
>
|
|
||||||
</Filter>
|
|
||||||
</Files>
|
|
||||||
<Globals>
|
|
||||||
</Globals>
|
|
||||||
</VisualStudioProject>
|
|
||||||
384
configure.ac
384
configure.ac
@@ -1,195 +1,34 @@
|
|||||||
# -*- Autoconf -*-
|
# -*- Autoconf -*-
|
||||||
|
# $Id: configure.ac,v 1.11 2006/04/09 13:59:44 r3mi Exp $
|
||||||
#
|
#
|
||||||
# Top-level configure.ac file for libupnp
|
# Top-level configure.ac file for libupnp
|
||||||
#
|
#
|
||||||
# Process this file with autoconf to produce a configure script.
|
# Process this file with autoconf to produce a configure script.
|
||||||
#
|
#
|
||||||
# (C) Copyright 2005-2007 Rémi Turboult <r3mi@users.sourceforge.net>
|
# (C) Copyright 2005-2006 R<EFBFBD>mi Turboult <r3mi@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
|
|
||||||
AC_PREREQ(2.60)
|
AC_PREREQ(2.59)
|
||||||
|
|
||||||
AC_INIT([libupnp], [1.8.0], [mroberto@users.sourceforge.net])
|
AC_INIT([libupnp], [1.4.1], [virtual_worlds@gmx.de])
|
||||||
dnl ############################################################################
|
# *Independently* of the above libupnp package version, the libtool version
|
||||||
dnl # *Independently* of the above libupnp package version, the libtool version
|
# of the 3 libraries need to be updated whenever there is a change released :
|
||||||
dnl # of the 3 libraries need to be updated whenever there is a change released:
|
# "current:revision:age" (this is NOT the same as the package version), where:
|
||||||
dnl # "current:revision:age" (this is NOT the same as the package version),
|
# - library code modified: revision++
|
||||||
dnl # where:
|
# - interfaces changed/added/removed: current++ and revision=0
|
||||||
dnl # - library code modified: revision++
|
# - interfaces added: age++
|
||||||
dnl # - interfaces changed/added/removed: current++ and revision=0
|
# - interfaces removed: age=0
|
||||||
dnl # - interfaces added: age++
|
# *please update only once, before a formal release, not for each change*
|
||||||
dnl # - interfaces removed: age=0
|
AC_SUBST([LT_VERSION_IXML], [2:2:0])
|
||||||
dnl # *please update only once, before a formal release, not for each change*
|
AC_SUBST([LT_VERSION_THREADUTIL], [2:2:0])
|
||||||
dnl #
|
AC_SUBST([LT_VERSION_UPNP], [2:2:0])
|
||||||
dnl ############################################################################
|
|
||||||
dnl # Release 1.4.1:
|
|
||||||
dnl #AC_SUBST([LT_VERSION_IXML], [2:2:0])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_THREADUTIL], [2:2:0])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_UPNP], [2:2:0])
|
|
||||||
dnl #
|
|
||||||
dnl ############################################################################
|
|
||||||
dnl # Release 1.4.6:
|
|
||||||
dnl # "current:revision:age"
|
|
||||||
dnl #
|
|
||||||
dnl # - Code has changed in ixml
|
|
||||||
dnl # revision: 2 -> 3
|
|
||||||
dnl # - Code has changed in threadutil
|
|
||||||
dnl # revision: 2 -> 3
|
|
||||||
dnl # - Interface added in threadutil
|
|
||||||
dnl # current: 2 -> 3
|
|
||||||
dnl # revisiion: 3 -> 0
|
|
||||||
dnl # age: 0 -> 1
|
|
||||||
dnl # - Code has changed in upnp
|
|
||||||
dnl # revision: 2 -> 3
|
|
||||||
dnl #
|
|
||||||
dnl #AC_SUBST([LT_VERSION_IXML], [2:3:0])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_THREADUTIL], [3:0:1])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_UPNP], [2:3:0])
|
|
||||||
dnl #
|
|
||||||
dnl ############################################################################
|
|
||||||
dnl # Release 1.6.0:
|
|
||||||
dnl # "current:revision:age"
|
|
||||||
dnl #
|
|
||||||
dnl # - Code has changed in ixml
|
|
||||||
dnl # revision: 3 -> 4
|
|
||||||
dnl # - Code has changed in threadutil
|
|
||||||
dnl # revision: 0 -> 1
|
|
||||||
dnl # - Code has changed in upnp
|
|
||||||
dnl # revision: 3 -> 4
|
|
||||||
dnl # - Interface changed in upnp
|
|
||||||
dnl # current: 2 -> 3
|
|
||||||
dnl # revision: 4 -> 0
|
|
||||||
dnl # - Interface removed in upnp
|
|
||||||
dnl # age: 0 -> 0
|
|
||||||
dnl #
|
|
||||||
dnl #AC_SUBST([LT_VERSION_IXML], [2:4:0])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_THREADUTIL], [3:1:1])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_UPNP], [3:0:0])
|
|
||||||
dnl #
|
|
||||||
dnl ############################################################################
|
|
||||||
dnl # Release 1.6.1:
|
|
||||||
dnl # "current:revision:age"
|
|
||||||
dnl #
|
|
||||||
dnl # - Code has changed in threadutil
|
|
||||||
dnl # revision: 1 -> 2
|
|
||||||
dnl # - Interface added in threadutil
|
|
||||||
dnl # current: 3 -> 4
|
|
||||||
dnl # revision: 2 -> 0
|
|
||||||
dnl # - Interface added in threadutil
|
|
||||||
dnl # age: 1 -> 2
|
|
||||||
dnl # - Code has changed in upnp
|
|
||||||
dnl # revision: 0 -> 1
|
|
||||||
dnl #
|
|
||||||
dnl #AC_SUBST([LT_VERSION_IXML], [2:4:0])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_THREADUTIL], [4:0:2])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_UPNP], [3:1:0])
|
|
||||||
dnl #
|
|
||||||
dnl ############################################################################
|
|
||||||
dnl # Release 1.6.2:
|
|
||||||
dnl # "current:revision:age"
|
|
||||||
dnl #
|
|
||||||
dnl # - Code has changed in upnp
|
|
||||||
dnl # revision: 1 -> 2
|
|
||||||
dnl #
|
|
||||||
dnl #AC_SUBST([LT_VERSION_IXML], [2:4:0])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_THREADUTIL], [4:0:2])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_UPNP], [3:2:0])
|
|
||||||
dnl #
|
|
||||||
dnl ############################################################################
|
|
||||||
dnl # Release 1.6.3:
|
|
||||||
dnl # "current:revision:age"
|
|
||||||
dnl #
|
|
||||||
dnl # - Code has changed in threadutil
|
|
||||||
dnl # revision: 0 -> 1
|
|
||||||
dnl #
|
|
||||||
dnl #AC_SUBST([LT_VERSION_IXML], [2:4:0])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_THREADUTIL], [4:1:2])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_UPNP], [3:2:0])
|
|
||||||
dnl #
|
|
||||||
dnl ############################################################################
|
|
||||||
dnl # Release 1.6.4:
|
|
||||||
dnl # "current:revision:age"
|
|
||||||
dnl #
|
|
||||||
dnl # - Code has changed in threadutil
|
|
||||||
dnl # revision: 1 -> 2
|
|
||||||
dnl # - Code has changed in upnp
|
|
||||||
dnl # revision: 2 -> 3
|
|
||||||
dnl #
|
|
||||||
dnl #AC_SUBST([LT_VERSION_IXML], [2:4:0])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_THREADUTIL], [4:2:2])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_UPNP], [3:3:0])
|
|
||||||
dnl #
|
|
||||||
dnl ############################################################################
|
|
||||||
dnl # Release 1.6.5:
|
|
||||||
dnl # "current:revision:age"
|
|
||||||
dnl #
|
|
||||||
dnl # - Code has changed in upnp
|
|
||||||
dnl # revision: 3 -> 4
|
|
||||||
dnl #
|
|
||||||
dnl #AC_SUBST([LT_VERSION_IXML], [2:4:0])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_THREADUTIL], [4:2:2])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_UPNP], [3:4:0])
|
|
||||||
dnl #
|
|
||||||
dnl ############################################################################
|
|
||||||
dnl # Release 1.6.6:
|
|
||||||
dnl # "current:revision:age"
|
|
||||||
dnl #
|
|
||||||
dnl # - Code has changed in threadutil
|
|
||||||
dnl # revision: 2 -> 3
|
|
||||||
dnl # - Code has changed in upnp
|
|
||||||
dnl # revision: 4 -> 5
|
|
||||||
dnl #
|
|
||||||
dnl #AC_SUBST([LT_VERSION_IXML], [2:4:0])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_THREADUTIL], [4:3:2])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_UPNP], [3:5:0])
|
|
||||||
dnl #
|
|
||||||
dnl ############################################################################
|
|
||||||
dnl # Release 1.8.0:
|
|
||||||
dnl # "current:revision:age"
|
|
||||||
dnl #
|
|
||||||
dnl # - Code has changed in upnp
|
|
||||||
dnl # revision: 5 -> 6
|
|
||||||
dnl # - Interfaces have been changed, added and removed in upnp
|
|
||||||
dnl # current: 3 -> 4
|
|
||||||
dnl # revision: 6 -> 0
|
|
||||||
dnl # - Interface has been removed in upnp
|
|
||||||
dnl # age = 0
|
|
||||||
dnl # - Code has changed in threadutil
|
|
||||||
dnl # revision: 3 -> 4
|
|
||||||
dnl # - Interfaces have been changed, added and removed in upnp
|
|
||||||
dnl # current: 4 -> 5
|
|
||||||
dnl # revision: 4 -> 0
|
|
||||||
dnl #
|
|
||||||
dnl #AC_SUBST([LT_VERSION_IXML], [2:4:0])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_THREADUTIL], [5:0:2])
|
|
||||||
dnl #AC_SUBST([LT_VERSION_UPNP], [4:0:0])
|
|
||||||
dnl #
|
|
||||||
dnl ############################################################################
|
|
||||||
AC_SUBST([LT_VERSION_IXML], [2:4:0])
|
|
||||||
AC_SUBST([LT_VERSION_THREADUTIL], [5:0:2])
|
|
||||||
AC_SUBST([LT_VERSION_UPNP], [4:0:0])
|
|
||||||
dnl ############################################################################
|
|
||||||
dnl # Repeating the algorithm to place it closer to the modificatin place:
|
|
||||||
dnl # - library code modified: revision++
|
|
||||||
dnl # - interfaces changed/added/removed: current++ and revision=0
|
|
||||||
dnl # - interfaces added: age++
|
|
||||||
dnl # - interfaces removed: age=0
|
|
||||||
dnl # *please update only once, before a formal release, not for each change*
|
|
||||||
dnl ############################################################################
|
|
||||||
|
|
||||||
|
|
||||||
AC_CONFIG_AUX_DIR([build-aux])
|
AC_CONFIG_AUX_DIR(config.aux)
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR(m4)
|
||||||
AC_CONFIG_SRCDIR([upnp/inc/upnp.h])
|
AC_CONFIG_SRCDIR(upnp/inc/upnp.h)
|
||||||
|
|
||||||
|
AM_INIT_AUTOMAKE([1.8 -Wall foreign subdir-objects])
|
||||||
AM_INIT_AUTOMAKE([1.8 -Wall foreign subdir-objects dist-bzip2])
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Get canonical host names in host and host_os
|
|
||||||
#
|
|
||||||
AC_CANONICAL_HOST
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# There are 3 configuration files :
|
# There are 3 configuration files :
|
||||||
@@ -203,14 +42,14 @@ AC_CANONICAL_HOST
|
|||||||
# installed libraries.
|
# installed libraries.
|
||||||
#
|
#
|
||||||
AC_CONFIG_HEADERS([autoconfig.h upnp/inc/upnpconfig.h])
|
AC_CONFIG_HEADERS([autoconfig.h upnp/inc/upnpconfig.h])
|
||||||
#AC_SYS_LARGEFILE_SENSITIVE
|
|
||||||
|
|
||||||
AC_REVISION([$Revision: 1.11 $])
|
AC_REVISION([$Revision: 1.11 $])
|
||||||
|
|
||||||
upnpmaj=`echo "$PACKAGE_VERSION" | sed 's/\..*//' `
|
upnpmaj=`echo "$PACKAGE_VERSION" | sed 's/\..*//' `
|
||||||
upnpmin=[`echo "$PACKAGE_VERSION" | sed 's/^[^.]\.// ; s/[^0-9].*$//' `]
|
upnpmin=[`echo "$PACKAGE_VERSION" | sed 's/^[^.]\.// ; s/[^0-9].*$//' `]
|
||||||
upnppatch=[`echo "$PACKAGE_VERSION" | sed 's/^[^.]\.[^.]\.// ; s/[^0-9].*$//' `]
|
upnppatch=[`echo "$PACKAGE_VERSION" | sed 's/^[^.]\.[^.]\.// ; s/[^0-9].*$//' `]
|
||||||
AC_DEFINE_UNQUOTED([UPNP_VERSION_STRING], "$PACKAGE_VERSION", [see upnpconfig.h])
|
AC_DEFINE_UNQUOTED([UPNP_VERSION_STRING], "$PACKAGE_VERSION",
|
||||||
|
[see upnpconfig.h])
|
||||||
AC_DEFINE_UNQUOTED([UPNP_VERSION_MAJOR], $upnpmaj, [see upnpconfig.h])
|
AC_DEFINE_UNQUOTED([UPNP_VERSION_MAJOR], $upnpmaj, [see upnpconfig.h])
|
||||||
AC_DEFINE_UNQUOTED([UPNP_VERSION_MINOR], $upnpmin, [see upnpconfig.h])
|
AC_DEFINE_UNQUOTED([UPNP_VERSION_MINOR], $upnpmin, [see upnpconfig.h])
|
||||||
AC_DEFINE_UNQUOTED([UPNP_VERSION_PATCH], $upnppatch, [see upnpconfig.h])
|
AC_DEFINE_UNQUOTED([UPNP_VERSION_PATCH], $upnppatch, [see upnpconfig.h])
|
||||||
@@ -232,6 +71,7 @@ fi
|
|||||||
#
|
#
|
||||||
# Check for libupnp subsets
|
# Check for libupnp subsets
|
||||||
#
|
#
|
||||||
|
|
||||||
RT_BOOL_ARG_ENABLE([client], [yes], [control point code (client)])
|
RT_BOOL_ARG_ENABLE([client], [yes], [control point code (client)])
|
||||||
if test "x$enable_client" = xyes ; then
|
if test "x$enable_client" = xyes ; then
|
||||||
AC_DEFINE(UPNP_HAVE_CLIENT, 1, [see upnpconfig.h])
|
AC_DEFINE(UPNP_HAVE_CLIENT, 1, [see upnpconfig.h])
|
||||||
@@ -265,36 +105,20 @@ fi
|
|||||||
RT_BOOL_ARG_ENABLE([samples], [yes], [compilation of upnp/sample/ code])
|
RT_BOOL_ARG_ENABLE([samples], [yes], [compilation of upnp/sample/ code])
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# doc installation
|
# doc installation
|
||||||
# autoconf >= 2.60 already defines ${docdir}, but we will not use its
|
AC_MSG_CHECKING([documentation installation])
|
||||||
# default value, which is ${datarootdir}/doc/${PACKAGE_TARNAME}.
|
AC_ARG_WITH([docdir],
|
||||||
# That would give us ${datarootdir}/doc/libupnp, and we want the package
|
AC_HELP_STRING([--with-docdir=DIR],
|
||||||
# version on that.
|
|
||||||
#
|
|
||||||
docdir="${datadir}/doc/${PACKAGE_NAME}-${PACKAGE_VERSION}"
|
|
||||||
AC_MSG_CHECKING([for documentation directory])
|
|
||||||
AC_ARG_WITH(
|
|
||||||
[documentation],
|
|
||||||
AS_HELP_STRING(
|
|
||||||
[--with-documentation=directory_name],
|
|
||||||
[where documentation is installed
|
[where documentation is installed
|
||||||
@<:@[DATADIR/doc/]AC_PACKAGE_NAME[-]AC_PACKAGE_VERSION@:>@])
|
@<:@[DATADIR/doc/]AC_PACKAGE_NAME[-]AC_PACKAGE_VERSION@:>@])
|
||||||
AS_HELP_STRING(
|
AC_HELP_STRING([--without-docdir],
|
||||||
[--without-documentation],
|
|
||||||
[do not install the documentation]),
|
[do not install the documentation]),
|
||||||
[],
|
[DOCDIR="$with_docdir"],
|
||||||
[with_documentation=no])
|
[DOCDIR="${datadir}/doc/${PACKAGE_NAME}-${PACKAGE_VERSION}"])
|
||||||
|
|
||||||
#
|
AM_CONDITIONAL(WITH_DOCDIR, test x"$with_docdir" != xno)
|
||||||
# If something has been entered after an equal sign, assume it is the directory
|
AC_SUBST(DOCDIR)
|
||||||
#
|
AC_MSG_RESULT($DOCDIR)
|
||||||
if test x"$with_documentation" != xyes -a x"$with_documentation" != xno; then
|
|
||||||
docdir="$with_documentation"
|
|
||||||
fi
|
|
||||||
AM_CONDITIONAL(WITH_DOCUMENTATION, test x"$with_documentation" != xno)
|
|
||||||
AC_SUBST(docdir)
|
|
||||||
AC_MSG_RESULT($docdir)
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -307,117 +131,39 @@ AC_PROG_INSTALL
|
|||||||
AC_PROG_MAKE_SET
|
AC_PROG_MAKE_SET
|
||||||
AC_PROG_EGREP
|
AC_PROG_EGREP
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Default compilation flags
|
# Default compilation flags
|
||||||
#
|
#
|
||||||
echo "--------------------- Default compilation flags -------------------------------"
|
|
||||||
echo host is $host
|
|
||||||
echo host_os is $host_os
|
|
||||||
case $host_os in
|
|
||||||
freebsd*)
|
|
||||||
echo "Using FreeBSD specific compiler settings"
|
|
||||||
# Put FreeBSD specific compiler flags here
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Using non-specific system compiler settings"
|
|
||||||
if test x"$enable_debug" = xyes; then
|
if test x"$enable_debug" = xyes; then
|
||||||
# AC_PROG_CC already sets CFLAGS to "-g -O2" by default
|
# AC_PROG_CC already sets CFLAGS to "-g -O2" by default
|
||||||
#:
|
:
|
||||||
# Use -O0 in debug so that variables do not get optimized out
|
|
||||||
AX_CFLAGS_GCC_OPTION([-O0])
|
|
||||||
else
|
else
|
||||||
# add optimise for size
|
# add optimise for size
|
||||||
AX_CFLAGS_GCC_OPTION([-Os])
|
AX_CFLAGS_GCC_OPTION([-Os])
|
||||||
fi
|
fi
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
AX_CFLAGS_WARN_ALL
|
AX_CFLAGS_WARN_ALL
|
||||||
echo "-------------------------------------------------------------------------------"
|
|
||||||
|
# Arrange for large-file support (can be disabled with --disable-largefile).
|
||||||
|
# Define _FILE_OFFSET_BITS and _LARGE_FILES if necessary
|
||||||
|
AC_SYS_LARGEFILE
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Lot's of stuff to ensure large file support
|
# Checks for header files
|
||||||
#
|
|
||||||
AC_TYPE_SIZE_T
|
|
||||||
AC_TYPE_OFF_T
|
|
||||||
AC_DEFINE([_LARGE_FILE_SOURCE], [], [Large files support])
|
|
||||||
AC_DEFINE([_FILE_OFFSET_BITS], [64], [File Offset size])
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Are we targetting Win32?
|
|
||||||
#
|
|
||||||
AC_MSG_CHECKING([for Win32])
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
|
|
||||||
#ifdef WIN32
|
|
||||||
#error Yup
|
|
||||||
#endif
|
|
||||||
],[])], [ac_cv_win32="no"], [ac_cv_win32="yes"])
|
|
||||||
if test "$ac_cv_win32" = "yes"; then
|
|
||||||
AC_MSG_RESULT([yes])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT([no])
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
#
|
|
||||||
# Checks for header files (which aren't needed on Win32)
|
|
||||||
#
|
#
|
||||||
AC_HEADER_STDC
|
AC_HEADER_STDC
|
||||||
if test "$ac_cv_win32" = "no"; then
|
|
||||||
# libupnp code doesn't use autoconf variables yet,
|
# libupnp code doesn't use autoconf variables yet,
|
||||||
# so just abort if a header file is not found.
|
# so just abort if a header file is not found.
|
||||||
AC_CHECK_HEADERS(
|
AC_CHECK_HEADERS([arpa/inet.h fcntl.h limits.h netdb.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time.h sys/timeb.h syslog.h unistd.h],[],[AC_MSG_ERROR([required header file missing])])
|
||||||
[ \
|
|
||||||
arpa/inet.h \
|
|
||||||
fcntl.h \
|
|
||||||
inttypes.h \
|
|
||||||
limits.h \
|
|
||||||
netdb.h \
|
|
||||||
netinet/in.h \
|
|
||||||
stdlib.h \
|
|
||||||
string.h \
|
|
||||||
sys/ioctl.h \
|
|
||||||
sys/socket.h \
|
|
||||||
sys/time.h \
|
|
||||||
syslog.h \
|
|
||||||
unistd.h \
|
|
||||||
],
|
|
||||||
[],
|
|
||||||
[AC_MSG_ERROR([required header file missing])])
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Checks for typedefs, structures, and compiler characteristics
|
# Checks for typedefs, structures, and compiler characteristics
|
||||||
#
|
#
|
||||||
AC_C_CONST
|
AC_C_CONST
|
||||||
|
AC_TYPE_SIZE_T
|
||||||
# The test for socklen_t was getting it wrong when it exists but is in ws2tcpip.h,
|
TYPE_SOCKLEN_T
|
||||||
# so we use a new test.
|
|
||||||
#TYPE_SOCKLEN_T
|
|
||||||
|
|
||||||
AC_CHECK_HEADERS([sys/types.h sys/socket.h ws2tcpip.h])
|
|
||||||
AC_MSG_CHECKING(for socklen_t)
|
|
||||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
|
|
||||||
#ifdef HAVE_SYS_TYPES_H
|
|
||||||
#include <sys/types.h>
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_SYS_SOCKET_H
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#endif
|
|
||||||
#ifdef HAVE_WS2TCPIP_H
|
|
||||||
#include <ws2tcpip.h>
|
|
||||||
#endif
|
|
||||||
],[ socklen_t t = 0; return t; ])
|
|
||||||
],[ac_cv_socklen_t="yes"],[ac_cv_socklen_t="no"])
|
|
||||||
if test "$ac_cv_socklen_t" = "yes"; then
|
|
||||||
AC_MSG_RESULT([yes])
|
|
||||||
else
|
|
||||||
AC_MSG_RESULT([no, using int])
|
|
||||||
AC_DEFINE(socklen_t, int, [Type for storing the length of struct sockaddr])
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
@@ -425,65 +171,25 @@ fi
|
|||||||
#
|
#
|
||||||
AC_FUNC_VPRINTF
|
AC_FUNC_VPRINTF
|
||||||
AC_FUNC_FSEEKO
|
AC_FUNC_FSEEKO
|
||||||
AC_CHECK_FUNCS(ftime,, [AC_CHECK_LIB(compat, ftime)])
|
|
||||||
#
|
|
||||||
# Solaris needs -lsocket -lnsl -lrt
|
|
||||||
AC_SEARCH_LIBS([bind], [socket])
|
|
||||||
AC_SEARCH_LIBS([gethostbyname], [nsl])
|
|
||||||
AC_SEARCH_LIBS([sched_getparam], [rt])
|
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Checks for POSIX Threads
|
# Checks for POSIX Threads
|
||||||
#
|
#
|
||||||
echo "--------------------------- pthread stuff -------------------------------------"
|
ACX_PTHREAD([],[AC_MSG_ERROR([POSIX threads are required to build this program])])
|
||||||
ACX_PTHREAD(
|
|
||||||
[],
|
|
||||||
[AC_MSG_ERROR([POSIX threads are required to build this program])])
|
|
||||||
#
|
|
||||||
# Update environment variables for pthreads
|
|
||||||
#
|
|
||||||
CC="$PTHREAD_CC"
|
|
||||||
CFLAGS="$PTHREAD_CFLAGS $CFLAGS"
|
|
||||||
LIBS="$PTHREAD_LIBS $LIBS"
|
|
||||||
#
|
|
||||||
# Determine if pthread_rwlock_t is available
|
|
||||||
#
|
|
||||||
echo "----------------------- pthread_rwlock_t stuff --------------------------------"
|
|
||||||
AC_MSG_CHECKING([if pthread_rwlock_t is available])
|
|
||||||
AC_LANG([C])
|
|
||||||
AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_PROGRAM(
|
|
||||||
[#include <pthread.h>],
|
|
||||||
[pthread_rwlock_t *x;])],
|
|
||||||
[AC_DEFINE([UPNP_USE_RWLOCK], [1], [Use pthread_rwlock_t])
|
|
||||||
AC_MSG_RESULT([yes, supported without any options])],
|
|
||||||
[AC_COMPILE_IFELSE(
|
|
||||||
[AC_LANG_PROGRAM(
|
|
||||||
[#define _GNU_SOURCE
|
|
||||||
#include <pthread.h>],
|
|
||||||
[pthread_rwlock_t *x;])],
|
|
||||||
[AC_DEFINE([UPNP_USE_RWLOCK], [1], [Use pthread_rwlock_t])
|
|
||||||
CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
|
|
||||||
AC_MSG_RESULT([yes, definition of _GNU_SOURCE required])],
|
|
||||||
[AC_DEFINE([UPNP_USE_RWLOCK], [0], [Do not use pthread_rwlock_t])
|
|
||||||
AC_MSG_RESULT([no, needs to fallback to pthread_mutex])
|
|
||||||
AC_MSG_ERROR([pthread_rwlock_t not available])])])
|
|
||||||
echo "-------------------------------------------------------------------------------"
|
|
||||||
|
|
||||||
|
|
||||||
AC_CONFIG_FILES([
|
|
||||||
Makefile
|
|
||||||
|
AC_CONFIG_FILES([Makefile
|
||||||
ixml/Makefile
|
ixml/Makefile
|
||||||
ixml/doc/Makefile
|
ixml/doc/Makefile
|
||||||
threadutil/Makefile
|
threadutil/Makefile
|
||||||
upnp/Makefile
|
upnp/Makefile
|
||||||
upnp/doc/Makefile
|
upnp/doc/Makefile
|
||||||
upnp/sample/Makefile
|
|
||||||
docs/dist/Makefile
|
docs/dist/Makefile
|
||||||
libupnp.pc
|
libupnp.pc
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
AC_OUTPUT
|
AC_OUTPUT
|
||||||
|
|
||||||
|
|||||||
17
docs/dist/Makefile.am
vendored
17
docs/dist/Makefile.am
vendored
@@ -1,7 +1,4 @@
|
|||||||
|
EXTRA_DIST = ./UPnP_Programming_Guide.pdf \
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
./UPnP_Programming_Guide.pdf \
|
|
||||||
./IXML_Programming_Guide.pdf \
|
./IXML_Programming_Guide.pdf \
|
||||||
./html/upnp/icon1.gif \
|
./html/upnp/icon1.gif \
|
||||||
./html/upnp/icon2.gif \
|
./html/upnp/icon2.gif \
|
||||||
@@ -39,7 +36,7 @@ EXTRA_DIST = \
|
|||||||
./html/upnp/UPNP_E_SOCKET_ERROR-208.html \
|
./html/upnp/UPNP_E_SOCKET_ERROR-208.html \
|
||||||
./html/upnp/UPNP_E_CANCELED-210.html \
|
./html/upnp/UPNP_E_CANCELED-210.html \
|
||||||
./html/upnp/UPNP_E_SUBSCRIBE_UNACCEPTED-301.html \
|
./html/upnp/UPNP_E_SUBSCRIBE_UNACCEPTED-301.html \
|
||||||
./html/upnp/UPNP_E_UNSUBSCRIBE_UNACCEPTED-302.html \
|
./html/upnp/UPNP_E_UNSUBSCRIBE_UNACCAPTED-302.html \
|
||||||
./html/upnp/UPNP_E_NOTIFY_UNACCEPTED-303.html \
|
./html/upnp/UPNP_E_NOTIFY_UNACCEPTED-303.html \
|
||||||
./html/upnp/UPNP_E_INVALID_ARGUMENT-501.html \
|
./html/upnp/UPNP_E_INVALID_ARGUMENT-501.html \
|
||||||
./html/upnp/UPNP_E_FILE_NOT_FOUND-502.html \
|
./html/upnp/UPNP_E_FILE_NOT_FOUND-502.html \
|
||||||
@@ -254,10 +251,9 @@ EXTRA_DIST = \
|
|||||||
./html/ixml/ixmlCloneDOMString.html \
|
./html/ixml/ixmlCloneDOMString.html \
|
||||||
./html/ixml/ixmlFreeDOMString.html
|
./html/ixml/ixmlFreeDOMString.html
|
||||||
|
|
||||||
if WITH_DOCUMENTATION
|
if WITH_DOCDIR
|
||||||
docsdir = @docdir@
|
docsdir = @DOCDIR@
|
||||||
nobase_docs_DATA = \
|
nobase_docs_DATA = ./UPnP_Programming_Guide.pdf \
|
||||||
./UPnP_Programming_Guide.pdf \
|
|
||||||
./IXML_Programming_Guide.pdf \
|
./IXML_Programming_Guide.pdf \
|
||||||
./html/upnp/icon1.gif \
|
./html/upnp/icon1.gif \
|
||||||
./html/upnp/icon2.gif \
|
./html/upnp/icon2.gif \
|
||||||
@@ -295,7 +291,7 @@ if WITH_DOCUMENTATION
|
|||||||
./html/upnp/UPNP_E_SOCKET_ERROR-208.html \
|
./html/upnp/UPNP_E_SOCKET_ERROR-208.html \
|
||||||
./html/upnp/UPNP_E_CANCELED-210.html \
|
./html/upnp/UPNP_E_CANCELED-210.html \
|
||||||
./html/upnp/UPNP_E_SUBSCRIBE_UNACCEPTED-301.html \
|
./html/upnp/UPNP_E_SUBSCRIBE_UNACCEPTED-301.html \
|
||||||
./html/upnp/UPNP_E_UNSUBSCRIBE_UNACCEPTED-302.html \
|
./html/upnp/UPNP_E_UNSUBSCRIBE_UNACCAPTED-302.html \
|
||||||
./html/upnp/UPNP_E_NOTIFY_UNACCEPTED-303.html \
|
./html/upnp/UPNP_E_NOTIFY_UNACCEPTED-303.html \
|
||||||
./html/upnp/UPNP_E_INVALID_ARGUMENT-501.html \
|
./html/upnp/UPNP_E_INVALID_ARGUMENT-501.html \
|
||||||
./html/upnp/UPNP_E_FILE_NOT_FOUND-502.html \
|
./html/upnp/UPNP_E_FILE_NOT_FOUND-502.html \
|
||||||
@@ -510,4 +506,3 @@ if WITH_DOCUMENTATION
|
|||||||
./html/ixml/ixmlCloneDOMString.html \
|
./html/ixml/ixmlCloneDOMString.html \
|
||||||
./html/ixml/ixmlFreeDOMString.html
|
./html/ixml/ixmlFreeDOMString.html
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|||||||
@@ -24,23 +24,15 @@ libixml_la_LDFLAGS = -version-info $(LT_VERSION_IXML) \
|
|||||||
-export-symbols-regex '^ixml.*'
|
-export-symbols-regex '^ixml.*'
|
||||||
|
|
||||||
libixml_la_SOURCES = \
|
libixml_la_SOURCES = \
|
||||||
src/attr.c \
|
src/ixml.c src/node.c src/ixmlparser.c \
|
||||||
src/document.c \
|
src/ixmlmembuf.c src/nodeList.c \
|
||||||
src/element.c \
|
src/element.c src/attr.c src/document.c \
|
||||||
src/inc/ixmlmembuf.h \
|
|
||||||
src/inc/ixmlparser.h \
|
|
||||||
src/ixml.c \
|
|
||||||
src/ixmldebug.c \
|
|
||||||
src/ixmlparser.c \
|
|
||||||
src/ixmlmembuf.c \
|
|
||||||
src/namedNodeMap.c \
|
src/namedNodeMap.c \
|
||||||
src/node.c \
|
src/inc/ixmlmembuf.h src/inc/ixmlparser.h
|
||||||
src/nodeList.c
|
|
||||||
|
|
||||||
upnpincludedir = $(includedir)/upnp
|
upnpincludedir = $(includedir)/upnp
|
||||||
upnpinclude_HEADERS = \
|
upnpinclude_HEADERS = inc/ixml.h
|
||||||
inc/ixml.h \
|
|
||||||
inc/ixmldebug.h
|
|
||||||
|
|
||||||
check_PROGRAMS = test_document
|
check_PROGRAMS = test_document
|
||||||
TESTS = test/test_document.sh
|
TESTS = test/test_document.sh
|
||||||
@@ -55,3 +47,4 @@ dist-hook:
|
|||||||
clean-local:
|
clean-local:
|
||||||
@if [ -d bin ] ; then rm -rf bin ; fi
|
@if [ -d bin ] ; then rm -rf bin ; fi
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
2777
ixml/inc/ixml.h
2777
ixml/inc/ixml.h
File diff suppressed because it is too large
Load Diff
@@ -1,67 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef IXMLDEBUG_H
|
|
||||||
#define IXMLDEBUG_H
|
|
||||||
|
|
||||||
|
|
||||||
#include "UpnpGlobal.h"
|
|
||||||
#include "ixml.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*
|
|
||||||
* \brief Auxiliar routines to aid debugging.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Prints the debug statement either on the standard output or log file
|
|
||||||
* along with the information from where this debug statement is coming.
|
|
||||||
*/
|
|
||||||
#ifdef DEBUG
|
|
||||||
void IxmlPrintf(
|
|
||||||
/*! [in] The file name, usually __FILE__. */
|
|
||||||
const char *DbgFileName,
|
|
||||||
/*! [in] The line number, usually __LINE__ or a variable that got the
|
|
||||||
* __LINE__ at the appropriate place. */
|
|
||||||
int DbgLineNo,
|
|
||||||
/*! [in] The function name. */
|
|
||||||
const char *FunctionName,
|
|
||||||
/*! [in] Printf like format specification. */
|
|
||||||
const char* FmtStr,
|
|
||||||
/*! [in] Printf like Variable number of arguments that will go in the debug
|
|
||||||
* statement. */
|
|
||||||
...)
|
|
||||||
#if (__GNUC__ >= 3)
|
|
||||||
/* This enables printf like format checking by the compiler */
|
|
||||||
__attribute__((format (__printf__, 4, 5)))
|
|
||||||
#endif
|
|
||||||
;
|
|
||||||
#else /* DEBUG */
|
|
||||||
static UPNP_INLINE void IxmlPrintf(
|
|
||||||
const char* FmtStr,
|
|
||||||
...) {}
|
|
||||||
#endif /* DEBUG */
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Print the node names and values of a XML tree.
|
|
||||||
*/
|
|
||||||
#ifdef DEBUG
|
|
||||||
void printNodes(
|
|
||||||
/*! [in] The root of the tree to print. */
|
|
||||||
IXML_Node *tmpRoot,
|
|
||||||
/*! [in] The depth to print. */
|
|
||||||
int depth);
|
|
||||||
#else
|
|
||||||
static UPNP_INLINE void printNodes(
|
|
||||||
IXML_Node *tmpRoot,
|
|
||||||
int depth)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* IXMLDEBUG_H */
|
|
||||||
|
|
||||||
@@ -1,53 +1,60 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#include "ixmlparser.h"
|
#include "ixmlparser.h"
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
#include <string.h>
|
* Function: Attr_init
|
||||||
|
* Initializes an attribute node
|
||||||
|
* External function.
|
||||||
void ixmlAttr_init(IN IXML_Attr *attr)
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
void
|
||||||
|
ixmlAttr_init( IN IXML_Attr * attr )
|
||||||
{
|
{
|
||||||
if( attr != NULL ) {
|
if( attr != NULL ) {
|
||||||
memset( attr, 0, sizeof( IXML_Attr ) );
|
memset( attr, 0, sizeof( IXML_Attr ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
void ixmlAttr_free(IN IXML_Attr *attr)
|
* Function: Attr_free
|
||||||
|
* Frees an attribute node.
|
||||||
|
* external function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
void
|
||||||
|
ixmlAttr_free( IN IXML_Attr * attr )
|
||||||
{
|
{
|
||||||
if( attr != NULL ) {
|
if( attr != NULL ) {
|
||||||
ixmlNode_free( ( IXML_Node * ) attr );
|
ixmlNode_free( ( IXML_Node * ) attr );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,97 +1,119 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "ixmldebug.h"
|
|
||||||
#include "ixmlparser.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
|
#include "ixmlparser.h"
|
||||||
|
|
||||||
void ixmlDocument_init(IXML_Document *doc)
|
/*================================================================
|
||||||
|
* ixmlDocument_init
|
||||||
|
* It initialize the document structure.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
void
|
||||||
|
ixmlDocument_init( IN IXML_Document * doc )
|
||||||
{
|
{
|
||||||
memset( doc, 0, sizeof( IXML_Document ) );
|
memset( doc, 0, sizeof( IXML_Document ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
void ixmlDocument_free(IXML_Document *doc)
|
* ixmlDocument_free
|
||||||
|
* It frees the whole document tree.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
void
|
||||||
|
ixmlDocument_free( IN IXML_Document * doc )
|
||||||
{
|
{
|
||||||
if( doc != NULL ) {
|
if( doc != NULL ) {
|
||||||
ixmlNode_free( ( IXML_Node * ) doc );
|
ixmlNode_free( ( IXML_Node * ) doc );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
/*!
|
* ixmlDocument_setOwnerDocument
|
||||||
* When this function is called first time, nodeptr is the root of the subtree,
|
*
|
||||||
* so it is not necessay to do two steps recursion.
|
* When this function is called first time, nodeptr is the root
|
||||||
|
* of the subtree, so it is not necessay to do two steps
|
||||||
|
* recursion.
|
||||||
*
|
*
|
||||||
* Internal function called by ixmlDocument_importNode
|
* Internal function called by ixmlDocument_importNode
|
||||||
*/
|
*
|
||||||
static void ixmlDocument_setOwnerDocument(
|
*=================================================================*/
|
||||||
/*! [in] The document node. */
|
void
|
||||||
IXML_Document *doc,
|
ixmlDocument_setOwnerDocument( IN IXML_Document * doc,
|
||||||
/*! [in] \todo documentation. */
|
IN IXML_Node * nodeptr )
|
||||||
IXML_Node *nodeptr)
|
|
||||||
{
|
{
|
||||||
if( nodeptr != NULL ) {
|
if( nodeptr != NULL ) {
|
||||||
nodeptr->ownerDocument = doc;
|
nodeptr->ownerDocument = doc;
|
||||||
ixmlDocument_setOwnerDocument(
|
ixmlDocument_setOwnerDocument( doc,
|
||||||
doc, ixmlNode_getFirstChild(nodeptr));
|
ixmlNode_getFirstChild( nodeptr ) );
|
||||||
ixmlDocument_setOwnerDocument(
|
ixmlDocument_setOwnerDocument( doc,
|
||||||
doc, ixmlNode_getNextSibling(nodeptr));
|
ixmlNode_getNextSibling
|
||||||
|
( nodeptr ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
|
* ixmlDocument_importNode
|
||||||
|
* Imports a node from another document to this document. The
|
||||||
|
* returned node has no parent; (parentNode is null). The source
|
||||||
|
* node is not altered or removed from the original document;
|
||||||
|
* this method creates a new copy of the source node.
|
||||||
|
|
||||||
int ixmlDocument_importNode(
|
* For all nodes, importing a node creates a node object owned
|
||||||
IXML_Document *doc,
|
* by the importing document, with attribute values identical to
|
||||||
IXML_Node *importNode,
|
* the source node's nodeName and nodeType, plus the attributes
|
||||||
BOOL deep,
|
* related to namespaces (prefix, localName, and namespaceURI).
|
||||||
IXML_Node **rtNode)
|
* As in the cloneNode operation on a node, the source node is
|
||||||
|
* not altered.
|
||||||
|
*
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixmlDocument_importNode( IN IXML_Document * doc,
|
||||||
|
IN IXML_Node * importNode,
|
||||||
|
IN BOOL deep,
|
||||||
|
OUT IXML_Node ** rtNode )
|
||||||
{
|
{
|
||||||
unsigned short nodeType;
|
unsigned short nodeType;
|
||||||
IXML_Node *newNode;
|
IXML_Node *newNode;
|
||||||
|
|
||||||
*rtNode = NULL;
|
*rtNode = NULL;
|
||||||
|
|
||||||
if (doc == NULL || importNode == NULL) {
|
if( ( doc == NULL ) || ( importNode == NULL ) ) {
|
||||||
return IXML_INVALID_PARAMETER;
|
return IXML_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -111,16 +133,29 @@ int ixmlDocument_importNode(
|
|||||||
return IXML_SUCCESS;
|
return IXML_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
int ixmlDocument_createElementEx(
|
* ixmlDocument_createElementEx
|
||||||
IXML_Document *doc,
|
* Creates an element of the type specified.
|
||||||
const DOMString tagName,
|
* External function.
|
||||||
IXML_Element **rtElement)
|
* Parameters:
|
||||||
|
* doc: pointer to document
|
||||||
|
* tagName: The name of the element, it is case-sensitive.
|
||||||
|
* Return Value:
|
||||||
|
* IXML_SUCCESS
|
||||||
|
* IXML_INVALID_PARAMETER: if either doc or tagName is NULL
|
||||||
|
* IXML_INSUFFICIENT_MEMORY: if not enough memory to finish this operations.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixmlDocument_createElementEx( IN IXML_Document * doc,
|
||||||
|
IN const DOMString tagName,
|
||||||
|
OUT IXML_Element ** rtElement )
|
||||||
{
|
{
|
||||||
|
|
||||||
int errCode = IXML_SUCCESS;
|
int errCode = IXML_SUCCESS;
|
||||||
IXML_Element *newElement = NULL;
|
IXML_Element *newElement = NULL;
|
||||||
|
|
||||||
if (doc == NULL || tagName == NULL) {
|
if( ( doc == NULL ) || ( tagName == NULL ) ) {
|
||||||
errCode = IXML_INVALID_PARAMETER;
|
errCode = IXML_INVALID_PARAMETER;
|
||||||
goto ErrorHandler;
|
goto ErrorHandler;
|
||||||
}
|
}
|
||||||
@@ -153,23 +188,46 @@ int ixmlDocument_createElementEx(
|
|||||||
|
|
||||||
ErrorHandler:
|
ErrorHandler:
|
||||||
*rtElement = newElement;
|
*rtElement = newElement;
|
||||||
|
|
||||||
return errCode;
|
return errCode;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
IXML_Element *ixmlDocument_createElement(
|
* ixmlDocument_createElement
|
||||||
IXML_Document *doc,
|
* Creates an element of the type specified.
|
||||||
const DOMString tagName)
|
* External function.
|
||||||
|
* Parameters:
|
||||||
|
* doc: pointer to document
|
||||||
|
* tagName: The name of the element, it is case-sensitive.
|
||||||
|
* Return Value:
|
||||||
|
* A new element object with the nodeName set to tagName, and
|
||||||
|
* localName, prefix and namespaceURI set to null.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
IXML_Element *
|
||||||
|
ixmlDocument_createElement( IN IXML_Document * doc,
|
||||||
|
IN const DOMString tagName )
|
||||||
{
|
{
|
||||||
IXML_Element *newElement = NULL;
|
IXML_Element *newElement = NULL;
|
||||||
|
|
||||||
ixmlDocument_createElementEx( doc, tagName, &newElement );
|
ixmlDocument_createElementEx( doc, tagName, &newElement );
|
||||||
return newElement;
|
return newElement;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
int ixmlDocument_createDocumentEx(IXML_Document **rtDoc)
|
* ixmlDocument_createDocumentEx
|
||||||
|
* Creates an document object
|
||||||
|
* Internal function.
|
||||||
|
* Parameters:
|
||||||
|
* rtDoc: the document created or NULL on failure
|
||||||
|
* Return Value:
|
||||||
|
* IXML_SUCCESS
|
||||||
|
* IXML_INSUFFICIENT_MEMORY: if not enough memory to finish this operations.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixmlDocument_createDocumentEx( OUT IXML_Document ** rtDoc )
|
||||||
{
|
{
|
||||||
IXML_Document *doc;
|
IXML_Document *doc;
|
||||||
int errCode = IXML_SUCCESS;
|
int errCode = IXML_SUCCESS;
|
||||||
@@ -199,27 +257,49 @@ ErrorHandler:
|
|||||||
return errCode;
|
return errCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
IXML_Document *ixmlDocument_createDocument()
|
* ixmlDocument_createDocument
|
||||||
|
* Creates an document object
|
||||||
|
* Internal function.
|
||||||
|
* Parameters:
|
||||||
|
* none
|
||||||
|
* Return Value:
|
||||||
|
* A new document object with the nodeName set to "#document".
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
IXML_Document *
|
||||||
|
ixmlDocument_createDocument( )
|
||||||
{
|
{
|
||||||
IXML_Document *doc = NULL;
|
IXML_Document *doc = NULL;
|
||||||
|
|
||||||
ixmlDocument_createDocumentEx( &doc );
|
ixmlDocument_createDocumentEx( &doc );
|
||||||
|
|
||||||
return doc;
|
return doc;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
int ixmlDocument_createTextNodeEx(
|
* ixmlDocument_createTextNodeEx
|
||||||
IXML_Document *doc,
|
* Creates an text node.
|
||||||
const DOMString data,
|
* External function.
|
||||||
IXML_Node **textNode)
|
* Parameters:
|
||||||
|
* data: text data for the text node. It is stored in nodeValue field.
|
||||||
|
* Return Value:
|
||||||
|
* IXML_SUCCESS
|
||||||
|
* IXML_INVALID_PARAMETER: if either doc or data is NULL
|
||||||
|
* IXML_INSUFFICIENT_MEMORY: if not enough memory to finish this operations.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixmlDocument_createTextNodeEx( IN IXML_Document * doc,
|
||||||
|
IN const char *data,
|
||||||
|
OUT IXML_Node ** textNode )
|
||||||
{
|
{
|
||||||
IXML_Node *returnNode;
|
IXML_Node *returnNode;
|
||||||
int rc = IXML_SUCCESS;
|
int rc = IXML_SUCCESS;
|
||||||
|
|
||||||
returnNode = NULL;
|
returnNode = NULL;
|
||||||
if (doc == NULL || data == NULL) {
|
if( ( doc == NULL ) || ( data == NULL ) ) {
|
||||||
rc = IXML_INVALID_PARAMETER;
|
rc = IXML_INVALID_PARAMETER;
|
||||||
goto ErrorHandler;
|
goto ErrorHandler;
|
||||||
}
|
}
|
||||||
@@ -256,12 +336,22 @@ int ixmlDocument_createTextNodeEx(
|
|||||||
ErrorHandler:
|
ErrorHandler:
|
||||||
*textNode = returnNode;
|
*textNode = returnNode;
|
||||||
return rc;
|
return rc;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
IXML_Node *ixmlDocument_createTextNode(
|
* ixmlDocument_createTextNode
|
||||||
IXML_Document *doc,
|
* Creates an text node.
|
||||||
const DOMString data)
|
* External function.
|
||||||
|
* Parameters:
|
||||||
|
* data: text data for the text node. It is stored in nodeValue field.
|
||||||
|
* Return Value:
|
||||||
|
* The new text node.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
IXML_Node *
|
||||||
|
ixmlDocument_createTextNode( IN IXML_Document * doc,
|
||||||
|
IN const char *data )
|
||||||
{
|
{
|
||||||
IXML_Node *returnNode = NULL;
|
IXML_Node *returnNode = NULL;
|
||||||
|
|
||||||
@@ -270,11 +360,21 @@ IXML_Node *ixmlDocument_createTextNode(
|
|||||||
return returnNode;
|
return returnNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
int ixmlDocument_createAttributeEx(
|
* ixmlDocument_createAttributeEx
|
||||||
IXML_Document *doc,
|
* Creates an attribute of the given name.
|
||||||
const char *name,
|
* External function.
|
||||||
IXML_Attr **rtAttr)
|
* Parameters:
|
||||||
|
* name: The name of the Attribute node.
|
||||||
|
* Return Value:
|
||||||
|
* IXML_SUCCESS
|
||||||
|
* IXML_INSUFFICIENT_MEMORY: if not enough memory to finish this operations.
|
||||||
|
*
|
||||||
|
================================================================*/
|
||||||
|
int
|
||||||
|
ixmlDocument_createAttributeEx( IN IXML_Document * doc,
|
||||||
|
IN char *name,
|
||||||
|
OUT IXML_Attr ** rtAttr )
|
||||||
{
|
{
|
||||||
IXML_Attr *attrNode = NULL;
|
IXML_Attr *attrNode = NULL;
|
||||||
int errCode = IXML_SUCCESS;
|
int errCode = IXML_SUCCESS;
|
||||||
@@ -285,7 +385,7 @@ int ixmlDocument_createAttributeEx(
|
|||||||
goto ErrorHandler;
|
goto ErrorHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doc == NULL || name == NULL) {
|
if( ( doc == NULL ) || ( name == NULL ) ) {
|
||||||
ixmlAttr_free( attrNode );
|
ixmlAttr_free( attrNode );
|
||||||
attrNode = NULL;
|
attrNode = NULL;
|
||||||
errCode = IXML_INVALID_PARAMETER;
|
errCode = IXML_INVALID_PARAMETER;
|
||||||
@@ -293,6 +393,7 @@ int ixmlDocument_createAttributeEx(
|
|||||||
}
|
}
|
||||||
|
|
||||||
ixmlAttr_init( attrNode );
|
ixmlAttr_init( attrNode );
|
||||||
|
|
||||||
attrNode->n.nodeType = eATTRIBUTE_NODE;
|
attrNode->n.nodeType = eATTRIBUTE_NODE;
|
||||||
|
|
||||||
// set the node fields
|
// set the node fields
|
||||||
@@ -309,31 +410,56 @@ int ixmlDocument_createAttributeEx(
|
|||||||
ErrorHandler:
|
ErrorHandler:
|
||||||
*rtAttr = attrNode;
|
*rtAttr = attrNode;
|
||||||
return errCode;
|
return errCode;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
IXML_Attr *ixmlDocument_createAttribute(
|
* ixmlDocument_createAttribute
|
||||||
IXML_Document *doc,
|
* Creates an attribute of the given name.
|
||||||
const char *name)
|
* External function.
|
||||||
|
* Parameters:
|
||||||
|
* name: The name of the Attribute node.
|
||||||
|
* Return Value:
|
||||||
|
* A new attr object with the nodeName attribute set to the
|
||||||
|
* given name, and the localName, prefix and namespaceURI set to NULL.
|
||||||
|
* The value of the attribute is the empty string.
|
||||||
|
*
|
||||||
|
================================================================*/
|
||||||
|
IXML_Attr *
|
||||||
|
ixmlDocument_createAttribute( IN IXML_Document * doc,
|
||||||
|
IN char *name )
|
||||||
{
|
{
|
||||||
IXML_Attr *attrNode = NULL;
|
IXML_Attr *attrNode = NULL;
|
||||||
|
|
||||||
ixmlDocument_createAttributeEx( doc, name, &attrNode );
|
ixmlDocument_createAttributeEx( doc, name, &attrNode );
|
||||||
|
|
||||||
return attrNode;
|
return attrNode;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
int ixmlDocument_createAttributeNSEx(
|
* ixmlDocument_createAttributeNSEx
|
||||||
IXML_Document *doc,
|
* Creates an attrbute of the given name and namespace URI
|
||||||
const DOMString namespaceURI,
|
* External function.
|
||||||
const DOMString qualifiedName,
|
* Parameters:
|
||||||
IXML_Attr **rtAttr )
|
* namespaceURI: the namespace fo the attribute to create
|
||||||
|
* qualifiedName: qualifiedName of the attribute to instantiate
|
||||||
|
* Return Value:
|
||||||
|
* IXML_SUCCESS
|
||||||
|
* IXML_INVALID_PARAMETER: if either doc,namespaceURI or qualifiedName is NULL
|
||||||
|
* IXML_INSUFFICIENT_MEMORY: if not enough memory to finish this operations.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixmlDocument_createAttributeNSEx( IN IXML_Document * doc,
|
||||||
|
IN DOMString namespaceURI,
|
||||||
|
IN DOMString qualifiedName,
|
||||||
|
OUT IXML_Attr ** rtAttr )
|
||||||
{
|
{
|
||||||
IXML_Attr *attrNode = NULL;
|
IXML_Attr *attrNode = NULL;
|
||||||
int errCode = IXML_SUCCESS;
|
int errCode = IXML_SUCCESS;
|
||||||
|
|
||||||
if (doc == NULL || namespaceURI == NULL || qualifiedName == NULL) {
|
if( ( doc == NULL ) || ( namespaceURI == NULL )
|
||||||
|
|| ( qualifiedName == NULL ) ) {
|
||||||
errCode = IXML_INVALID_PARAMETER;
|
errCode = IXML_INVALID_PARAMETER;
|
||||||
goto ErrorHandler;
|
goto ErrorHandler;
|
||||||
}
|
}
|
||||||
@@ -363,43 +489,68 @@ int ixmlDocument_createAttributeNSEx(
|
|||||||
ErrorHandler:
|
ErrorHandler:
|
||||||
*rtAttr = attrNode;
|
*rtAttr = attrNode;
|
||||||
return errCode;
|
return errCode;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
IXML_Attr *ixmlDocument_createAttributeNS(
|
* ixmlDocument_createAttributeNS
|
||||||
IXML_Document *doc,
|
* Creates an attrbute of the given name and namespace URI
|
||||||
const DOMString namespaceURI,
|
* External function.
|
||||||
const DOMString qualifiedName)
|
* Parameters:
|
||||||
|
* namespaceURI: the namespace fo the attribute to create
|
||||||
|
* qualifiedName: qualifiedName of the attribute to instantiate
|
||||||
|
* Return Value:
|
||||||
|
* Creates an attribute node with the given namespaceURI and
|
||||||
|
* qualifiedName. The prefix and localname are extracted from
|
||||||
|
* the qualifiedName. The node value is empty.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
IXML_Attr *
|
||||||
|
ixmlDocument_createAttributeNS( IN IXML_Document * doc,
|
||||||
|
IN DOMString namespaceURI,
|
||||||
|
IN DOMString qualifiedName )
|
||||||
{
|
{
|
||||||
IXML_Attr *attrNode = NULL;
|
IXML_Attr *attrNode = NULL;
|
||||||
|
|
||||||
ixmlDocument_createAttributeNSEx(
|
ixmlDocument_createAttributeNSEx( doc, namespaceURI, qualifiedName,
|
||||||
doc, namespaceURI, qualifiedName, &attrNode);
|
&attrNode );
|
||||||
|
|
||||||
return attrNode;
|
return attrNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
int ixmlDocument_createCDATASectionEx(
|
* ixmlDocument_createCDATASectionEx
|
||||||
IXML_Document *doc,
|
* Creates an CDATASection node whose value is the specified string
|
||||||
const DOMString data,
|
* External function.
|
||||||
IXML_CDATASection **rtCD)
|
* Parameters:
|
||||||
|
* data: the data for the CDATASection contents.
|
||||||
|
* Return Value:
|
||||||
|
* IXML_SUCCESS
|
||||||
|
* IXML_INVALID_PARAMETER: if either doc or data is NULL
|
||||||
|
* IXML_INSUFFICIENT_MEMORY: if not enough memory to finish this operations.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixmlDocument_createCDATASectionEx( IN IXML_Document * doc,
|
||||||
|
IN DOMString data,
|
||||||
|
OUT IXML_CDATASection ** rtCD )
|
||||||
{
|
{
|
||||||
int errCode = IXML_SUCCESS;
|
int errCode = IXML_SUCCESS;
|
||||||
IXML_CDATASection *cDSectionNode = NULL;
|
IXML_CDATASection *cDSectionNode = NULL;
|
||||||
|
|
||||||
if(doc == NULL || data == NULL) {
|
if( ( doc == NULL ) || ( data == NULL ) ) {
|
||||||
errCode = IXML_INVALID_PARAMETER;
|
errCode = IXML_INVALID_PARAMETER;
|
||||||
goto ErrorHandler;
|
goto ErrorHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
cDSectionNode = (IXML_CDATASection *)malloc(sizeof (IXML_CDATASection));
|
cDSectionNode =
|
||||||
|
( IXML_CDATASection * ) malloc( sizeof( IXML_CDATASection ) );
|
||||||
if( cDSectionNode == NULL ) {
|
if( cDSectionNode == NULL ) {
|
||||||
errCode = IXML_INSUFFICIENT_MEMORY;
|
errCode = IXML_INSUFFICIENT_MEMORY;
|
||||||
goto ErrorHandler;
|
goto ErrorHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
ixmlCDATASection_init( cDSectionNode );
|
ixmlCDATASection_init( cDSectionNode );
|
||||||
|
|
||||||
cDSectionNode->n.nodeType = eCDATA_SECTION_NODE;
|
cDSectionNode->n.nodeType = eCDATA_SECTION_NODE;
|
||||||
cDSectionNode->n.nodeName = strdup( CDATANODENAME );
|
cDSectionNode->n.nodeName = strdup( CDATANODENAME );
|
||||||
if( cDSectionNode->n.nodeName == NULL ) {
|
if( cDSectionNode->n.nodeName == NULL ) {
|
||||||
@@ -422,58 +573,80 @@ int ixmlDocument_createCDATASectionEx(
|
|||||||
ErrorHandler:
|
ErrorHandler:
|
||||||
*rtCD = cDSectionNode;
|
*rtCD = cDSectionNode;
|
||||||
return errCode;
|
return errCode;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
IXML_CDATASection *ixmlDocument_createCDATASection(
|
* ixmlDocument_createCDATASection
|
||||||
IXML_Document *doc,
|
* Creates an CDATASection node whose value is the specified string
|
||||||
const DOMString data)
|
* External function.
|
||||||
|
* Parameters:
|
||||||
|
* data: the data for the CDATASection contents.
|
||||||
|
* Return Value:
|
||||||
|
* The new CDATASection object.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
IXML_CDATASection *
|
||||||
|
ixmlDocument_createCDATASection( IN IXML_Document * doc,
|
||||||
|
IN DOMString data )
|
||||||
{
|
{
|
||||||
|
|
||||||
IXML_CDATASection *cDSectionNode = NULL;
|
IXML_CDATASection *cDSectionNode = NULL;
|
||||||
|
|
||||||
ixmlDocument_createCDATASectionEx( doc, data, &cDSectionNode );
|
ixmlDocument_createCDATASectionEx( doc, data, &cDSectionNode );
|
||||||
|
|
||||||
return cDSectionNode;
|
return cDSectionNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
int ixmlDocument_createElementNSEx(
|
* ixmlDocument_createElementNSEx
|
||||||
IXML_Document *doc,
|
* Creates an element of the given qualified name and namespace URI.
|
||||||
const DOMString namespaceURI,
|
* External function.
|
||||||
const DOMString qualifiedName,
|
* Parameters:
|
||||||
IXML_Element **rtElement)
|
* namespaceURI: the namespace URI of the element to create.
|
||||||
|
* qualifiedName: the qualified name of the element to instantiate.
|
||||||
|
* Return Value:
|
||||||
|
* Return Value:
|
||||||
|
* IXML_SUCCESS
|
||||||
|
* IXML_INVALID_PARAMETER: if either doc,namespaceURI or qualifiedName is NULL
|
||||||
|
* IXML_INSUFFICIENT_MEMORY: if not enough memory to finish this operations.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixmlDocument_createElementNSEx( IN IXML_Document * doc,
|
||||||
|
IN DOMString namespaceURI,
|
||||||
|
IN DOMString qualifiedName,
|
||||||
|
OUT IXML_Element ** rtElement )
|
||||||
{
|
{
|
||||||
IXML_Element *newElement = NULL;
|
|
||||||
int ret = IXML_SUCCESS;
|
|
||||||
int line = 0;
|
|
||||||
|
|
||||||
if (doc == NULL || namespaceURI == NULL || qualifiedName == NULL) {
|
IXML_Element *newElement = NULL;
|
||||||
line = __LINE__;
|
int errCode = IXML_SUCCESS;
|
||||||
ret = IXML_INVALID_PARAMETER;
|
|
||||||
|
if( ( doc == NULL ) || ( namespaceURI == NULL )
|
||||||
|
|| ( qualifiedName == NULL ) ) {
|
||||||
|
errCode = IXML_INVALID_PARAMETER;
|
||||||
goto ErrorHandler;
|
goto ErrorHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ixmlDocument_createElementEx(doc, qualifiedName, &newElement);
|
errCode =
|
||||||
if (ret != IXML_SUCCESS) {
|
ixmlDocument_createElementEx( doc, qualifiedName, &newElement );
|
||||||
line = __LINE__;
|
if( errCode != IXML_SUCCESS ) {
|
||||||
goto ErrorHandler;
|
goto ErrorHandler;
|
||||||
}
|
}
|
||||||
// set the namespaceURI field
|
// set the namespaceURI field
|
||||||
newElement->n.namespaceURI = strdup( namespaceURI );
|
newElement->n.namespaceURI = strdup( namespaceURI );
|
||||||
if( newElement->n.namespaceURI == NULL ) {
|
if( newElement->n.namespaceURI == NULL ) {
|
||||||
line = __LINE__;
|
|
||||||
ixmlElement_free( newElement );
|
ixmlElement_free( newElement );
|
||||||
newElement = NULL;
|
newElement = NULL;
|
||||||
ret = IXML_INSUFFICIENT_MEMORY;
|
errCode = IXML_INSUFFICIENT_MEMORY;
|
||||||
goto ErrorHandler;
|
goto ErrorHandler;
|
||||||
}
|
}
|
||||||
// set the localName and prefix
|
// set the localName and prefix
|
||||||
ret = ixmlNode_setNodeName((IXML_Node *)newElement, qualifiedName);
|
errCode =
|
||||||
if (ret != IXML_SUCCESS) {
|
ixmlNode_setNodeName( ( IXML_Node * ) newElement, qualifiedName );
|
||||||
line = __LINE__;
|
if( errCode != IXML_SUCCESS ) {
|
||||||
ixmlElement_free( newElement );
|
ixmlElement_free( newElement );
|
||||||
newElement = NULL;
|
newElement = NULL;
|
||||||
ret = IXML_INSUFFICIENT_MEMORY;
|
errCode = IXML_INSUFFICIENT_MEMORY;
|
||||||
goto ErrorHandler;
|
goto ErrorHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -481,70 +654,115 @@ int ixmlDocument_createElementNSEx(
|
|||||||
|
|
||||||
ErrorHandler:
|
ErrorHandler:
|
||||||
*rtElement = newElement;
|
*rtElement = newElement;
|
||||||
if (ret != IXML_SUCCESS) {
|
return errCode;
|
||||||
IxmlPrintf(__FILE__, line, "ixmlDocument_createElementNSEx", "Error %d\n", ret);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
/*================================================================
|
||||||
}
|
* ixmlDocument_createElementNS
|
||||||
|
* Creates an element of the given qualified name and namespace URI.
|
||||||
|
* External function.
|
||||||
IXML_Element *ixmlDocument_createElementNS(
|
* Parameters:
|
||||||
IXML_Document *doc,
|
* namespaceURI: the namespace URI of the element to create.
|
||||||
const DOMString namespaceURI,
|
* qualifiedName: the qualified name of the element to instantiate.
|
||||||
const DOMString qualifiedName)
|
* Return Value:
|
||||||
|
* The new element object with tagName qualifiedName, prefix and
|
||||||
|
* localName extraced from qualfiedName, nodeName of qualfiedName,
|
||||||
|
* namespaceURI of namespaceURI.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
IXML_Element *
|
||||||
|
ixmlDocument_createElementNS( IN IXML_Document * doc,
|
||||||
|
IN DOMString namespaceURI,
|
||||||
|
IN DOMString qualifiedName )
|
||||||
{
|
{
|
||||||
IXML_Element *newElement = NULL;
|
IXML_Element *newElement = NULL;
|
||||||
|
|
||||||
ixmlDocument_createElementNSEx(doc, namespaceURI, qualifiedName, &newElement);
|
ixmlDocument_createElementNSEx( doc, namespaceURI, qualifiedName,
|
||||||
|
&newElement );
|
||||||
return newElement;
|
return newElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
IXML_NodeList *ixmlDocument_getElementsByTagName(
|
* ixmlDocument_getElementsByTagName
|
||||||
IXML_Document *doc,
|
* Returns a nodeList of all the Elements with a given tag name
|
||||||
const DOMString tagName)
|
* in the order in which they are encountered in a preorder traversal
|
||||||
|
* of the document tree.
|
||||||
|
* External function.
|
||||||
|
* Parameters:
|
||||||
|
* tagName: the name of the tag to match on. The special value "*"
|
||||||
|
* matches all tags.
|
||||||
|
* Return Value:
|
||||||
|
* A new nodeList object containing all the matched Elements.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
IXML_NodeList *
|
||||||
|
ixmlDocument_getElementsByTagName( IN IXML_Document * doc,
|
||||||
|
IN char *tagName )
|
||||||
{
|
{
|
||||||
IXML_NodeList *returnNodeList = NULL;
|
IXML_NodeList *returnNodeList = NULL;
|
||||||
|
|
||||||
if (doc == NULL || tagName == NULL) {
|
if( ( doc == NULL ) || ( tagName == NULL ) ) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ixmlNode_getElementsByTagName((IXML_Node *)doc, tagName, &returnNodeList);
|
ixmlNode_getElementsByTagName( ( IXML_Node * ) doc, tagName,
|
||||||
|
&returnNodeList );
|
||||||
return returnNodeList;
|
return returnNodeList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
IXML_NodeList *ixmlDocument_getElementsByTagNameNS(
|
* ixmlDocument_getElementsByTagNameNS
|
||||||
IXML_Document *doc,
|
* Returns a nodeList of all the Elements with a given local name and
|
||||||
const DOMString namespaceURI,
|
* namespace URI in the order in which they are encountered in a
|
||||||
const DOMString localName)
|
* preorder traversal of the document tree.
|
||||||
|
* External function.
|
||||||
|
* Parameters:
|
||||||
|
* namespaceURI: the namespace of the elements to match on. The special
|
||||||
|
* value "*" matches all namespaces.
|
||||||
|
* localName: the local name of the elements to match on. The special
|
||||||
|
* value "*" matches all local names.
|
||||||
|
* Return Value:
|
||||||
|
* A new nodeList object containing all the matched Elements.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
IXML_NodeList *
|
||||||
|
ixmlDocument_getElementsByTagNameNS( IN IXML_Document * doc,
|
||||||
|
IN DOMString namespaceURI,
|
||||||
|
IN DOMString localName )
|
||||||
{
|
{
|
||||||
IXML_NodeList *returnNodeList = NULL;
|
IXML_NodeList *returnNodeList = NULL;
|
||||||
|
|
||||||
if (doc == NULL || namespaceURI == NULL || localName == NULL) {
|
if( ( doc == NULL ) || ( namespaceURI == NULL )
|
||||||
|
|| ( localName == NULL ) ) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ixmlNode_getElementsByTagNameNS(
|
ixmlNode_getElementsByTagNameNS( ( IXML_Node * ) doc, namespaceURI,
|
||||||
(IXML_Node *)doc, namespaceURI, localName, &returnNodeList);
|
localName, &returnNodeList );
|
||||||
|
|
||||||
return returnNodeList;
|
return returnNodeList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
IXML_Element *ixmlDocument_getElementById(
|
* ixmlDocument_getElementById
|
||||||
IXML_Document *doc,
|
* Returns the element whose ID is given by tagName. If no such
|
||||||
const DOMString tagName)
|
* element exists, returns null.
|
||||||
|
* External function.
|
||||||
|
* Parameter:
|
||||||
|
* tagName: the tag name for an element.
|
||||||
|
* Return Values:
|
||||||
|
* The matching element.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
IXML_Element *
|
||||||
|
ixmlDocument_getElementById( IN IXML_Document * doc,
|
||||||
|
IN DOMString tagName )
|
||||||
{
|
{
|
||||||
IXML_Element *rtElement = NULL;
|
IXML_Element *rtElement = NULL;
|
||||||
IXML_Node *nodeptr = ( IXML_Node * ) doc;
|
IXML_Node *nodeptr = ( IXML_Node * ) doc;
|
||||||
const char *name;
|
const char *name;
|
||||||
|
|
||||||
if (nodeptr == NULL || tagName == NULL) {
|
if( ( nodeptr == NULL ) || ( tagName == NULL ) ) {
|
||||||
return rtElement;
|
return rtElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -558,26 +776,29 @@ IXML_Element *ixmlDocument_getElementById(
|
|||||||
rtElement = ( IXML_Element * ) nodeptr;
|
rtElement = ( IXML_Element * ) nodeptr;
|
||||||
return rtElement;
|
return rtElement;
|
||||||
} else {
|
} else {
|
||||||
rtElement = ixmlDocument_getElementById(
|
rtElement = ixmlDocument_getElementById( ( IXML_Document * )
|
||||||
(IXML_Document *)ixmlNode_getFirstChild(nodeptr),
|
ixmlNode_getFirstChild
|
||||||
|
( nodeptr ),
|
||||||
tagName );
|
tagName );
|
||||||
if( rtElement == NULL ) {
|
if( rtElement == NULL ) {
|
||||||
rtElement = ixmlDocument_getElementById(
|
rtElement = ixmlDocument_getElementById( ( IXML_Document
|
||||||
(IXML_Document *)ixmlNode_getNextSibling(nodeptr),
|
* )
|
||||||
|
ixmlNode_getNextSibling
|
||||||
|
( nodeptr ),
|
||||||
tagName );
|
tagName );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
rtElement = ixmlDocument_getElementById(
|
rtElement = ixmlDocument_getElementById( ( IXML_Document * )
|
||||||
(IXML_Document *)ixmlNode_getFirstChild(nodeptr),
|
ixmlNode_getFirstChild
|
||||||
tagName);
|
( nodeptr ), tagName );
|
||||||
if( rtElement == NULL ) {
|
if( rtElement == NULL ) {
|
||||||
rtElement = ixmlDocument_getElementById(
|
rtElement = ixmlDocument_getElementById( ( IXML_Document * )
|
||||||
(IXML_Document *)ixmlNode_getNextSibling(nodeptr),
|
ixmlNode_getNextSibling
|
||||||
|
( nodeptr ),
|
||||||
tagName );
|
tagName );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return rtElement;
|
return rtElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,173 +1,77 @@
|
|||||||
/**************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
**************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#ifndef IXML_MEMBUF_H
|
|
||||||
#define IXML_MEMBUF_H
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
#ifndef _IXML_MEMBUF_H
|
||||||
|
#define _IXML_MEMBUF_H
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
#include "ixml.h"
|
#include "ixml.h"
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h> /* for size_t */
|
|
||||||
|
|
||||||
|
|
||||||
#define MINVAL( a, b ) ( (a) < (b) ? (a) : (b) )
|
#define MINVAL( a, b ) ( (a) < (b) ? (a) : (b) )
|
||||||
#define MAXVAL( a, b ) ( (a) > (b) ? (a) : (b) )
|
#define MAXVAL( a, b ) ( (a) > (b) ? (a) : (b) )
|
||||||
|
|
||||||
|
#ifndef WIN32
|
||||||
|
#define XINLINE inline
|
||||||
|
#endif
|
||||||
|
|
||||||
#define MEMBUF_DEF_SIZE_INC 20
|
#define MEMBUF_DEF_SIZE_INC 20
|
||||||
|
|
||||||
|
|
||||||
/*!
|
typedef struct // ixml_membuf
|
||||||
* \brief The ixml_membuf type.
|
|
||||||
*/
|
|
||||||
typedef struct
|
|
||||||
{
|
{
|
||||||
char *buf;
|
char *buf;
|
||||||
|
|
||||||
size_t length;
|
size_t length;
|
||||||
size_t capacity;
|
size_t capacity;
|
||||||
size_t size_inc;
|
size_t size_inc;
|
||||||
|
|
||||||
} ixml_membuf;
|
} ixml_membuf;
|
||||||
|
|
||||||
|
//--------------------------------------------------
|
||||||
/*!
|
//////////////// functions /////////////////////////
|
||||||
* \brief ixml_membuf initialization routine.
|
//--------------------------------------------------
|
||||||
|
/*
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif // __cplusplus
|
||||||
*/
|
*/
|
||||||
void ixml_membuf_init(
|
|
||||||
/*! [in,out] The memory buffer to initializa. */
|
|
||||||
ixml_membuf *m);
|
|
||||||
|
|
||||||
|
void ixml_membuf_init(INOUT ixml_membuf *m);
|
||||||
|
void ixml_membuf_destroy(INOUT ixml_membuf *m);
|
||||||
|
int ixml_membuf_assign(INOUT ixml_membuf *m, IN const void *buf,
|
||||||
|
IN size_t buf_len );
|
||||||
|
int ixml_membuf_assign_str(INOUT ixml_membuf *m, IN const char *c_str );
|
||||||
|
int ixml_membuf_append(INOUT ixml_membuf *m, IN const void *buf);
|
||||||
|
int ixml_membuf_append_str(INOUT ixml_membuf *m, IN const char *c_str);
|
||||||
|
int ixml_membuf_insert(INOUT ixml_membuf *m, IN const void* buf,
|
||||||
|
IN size_t buf_len, int index );
|
||||||
|
|
||||||
/*!
|
#endif // _IXML_MEMBUF_H
|
||||||
* \brief ixml_membuf clearing routine.
|
|
||||||
*
|
|
||||||
* The internal buffer is deleted and ixml_membuf_init() is called in the end
|
|
||||||
* to reinitialize the buffer.
|
|
||||||
*/
|
|
||||||
void ixml_membuf_destroy(
|
|
||||||
/*! [in,out] The memory buffer to clear. */
|
|
||||||
ixml_membuf *m);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Copies the contents o a buffer to the designated ixml_membuf.
|
|
||||||
*
|
|
||||||
* The previous contents of the ixml_membuf are destroyed.
|
|
||||||
*
|
|
||||||
* \return IXML_SUCCESS if successfull, or the error code returned
|
|
||||||
* by ixml_membuf_set_size().
|
|
||||||
*
|
|
||||||
* \sa ixml_membuf_assign_str().
|
|
||||||
*/
|
|
||||||
int ixml_membuf_assign(
|
|
||||||
/*! [in,out] The memory buffer on which to operate. */
|
|
||||||
ixml_membuf *m,
|
|
||||||
/*! [in] The input buffer to copy from. */
|
|
||||||
const void *buf,
|
|
||||||
/*! [in] The number of bytes to copy from the input buffer. */
|
|
||||||
size_t buf_len);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Copies a \b NULL terminated string to the ixml_buffer.
|
|
||||||
*
|
|
||||||
* This is a convenience function that internally uses ixml_membuf_assign().
|
|
||||||
*
|
|
||||||
* \return The return value of ixml_membuf_assign().
|
|
||||||
*
|
|
||||||
* \sa ixml_membuf_assign().
|
|
||||||
*/
|
|
||||||
int ixml_membuf_assign_str(
|
|
||||||
/*! [in,out] The memory buffer on which to operate. */
|
|
||||||
ixml_membuf *m,
|
|
||||||
/*! [in] The input string to copy from. */
|
|
||||||
const char *c_str);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Appends one byte to the designated ixml_membuffer.
|
|
||||||
*
|
|
||||||
* This is a convenience function that internally uses ixml_membuf_insert().
|
|
||||||
*
|
|
||||||
* \return The return value of ixml_membuf_insert().
|
|
||||||
*
|
|
||||||
* \sa ixml_membuf_insert()
|
|
||||||
*/
|
|
||||||
int ixml_membuf_append(
|
|
||||||
/*! [in,out] The memory buffer on which to operate. */
|
|
||||||
ixml_membuf *m,
|
|
||||||
/*! [in] The pointer to the byte to append. */
|
|
||||||
const void *buf);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Appends the contents of a \b NULL terminated string to the designated
|
|
||||||
* ixml_membuf.
|
|
||||||
*
|
|
||||||
* This is a convenience function that internally uses ixml_membuf_insert().
|
|
||||||
*
|
|
||||||
* \return The return value of ixml_membuf_insert().
|
|
||||||
*
|
|
||||||
* \sa ixml_membuf_insert().
|
|
||||||
*/
|
|
||||||
int ixml_membuf_append_str(
|
|
||||||
/*! [in,out] The memory buffer on which to operate. */
|
|
||||||
ixml_membuf *m,
|
|
||||||
/*! [in] The input string to copy from. */
|
|
||||||
const char *c_str);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief
|
|
||||||
*
|
|
||||||
* \return
|
|
||||||
* \li 0 if successfull.
|
|
||||||
* \li IXML_INDEX_SIZE_ERR if the index parameter is out of range.
|
|
||||||
* \li Or the return code of ixml_membuf_set_size()
|
|
||||||
*
|
|
||||||
* \sa ixml_membuf_set_size()
|
|
||||||
*/
|
|
||||||
int ixml_membuf_insert(
|
|
||||||
/*! [in,out] The memory buffer on which to operate. */
|
|
||||||
ixml_membuf *m,
|
|
||||||
/*! [in] The pointer to the input buffer. */
|
|
||||||
const void *buf,
|
|
||||||
/*! [in] The buffer length. */
|
|
||||||
size_t buf_len,
|
|
||||||
/*! [in] The point of insertion relative to the beggining of the
|
|
||||||
* ixml_membuf internal buffer. */
|
|
||||||
int index);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* IXML_MEMBUF_H */
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,49 +1,41 @@
|
|||||||
/**************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
**************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#ifndef IXMLPARSER_H
|
|
||||||
#define IXMLPARSER_H
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
#ifndef _IXMLPARSER_H
|
||||||
|
#define _IXMLPARSER_H
|
||||||
|
|
||||||
#include "ixml.h"
|
#include "ixml.h"
|
||||||
#include "ixmlmembuf.h"
|
#include "ixmlmembuf.h"
|
||||||
|
|
||||||
|
// Parser definitions
|
||||||
/* Parser definitions */
|
|
||||||
#define QUOT """
|
#define QUOT """
|
||||||
#define LT "<"
|
#define LT "<"
|
||||||
#define GT ">"
|
#define GT ">"
|
||||||
@@ -52,7 +44,6 @@
|
|||||||
#define ESC_HEX "&#x"
|
#define ESC_HEX "&#x"
|
||||||
#define ESC_DEC "&#"
|
#define ESC_DEC "&#"
|
||||||
|
|
||||||
|
|
||||||
typedef struct _IXML_NamespaceURI
|
typedef struct _IXML_NamespaceURI
|
||||||
{
|
{
|
||||||
char *nsURI;
|
char *nsURI;
|
||||||
@@ -78,192 +69,52 @@ typedef enum
|
|||||||
eCONTENT,
|
eCONTENT,
|
||||||
} PARSER_STATE;
|
} PARSER_STATE;
|
||||||
|
|
||||||
|
|
||||||
typedef struct _Parser
|
typedef struct _Parser
|
||||||
{
|
{
|
||||||
/*! Data buffer. */
|
char *dataBuffer; //data buffer
|
||||||
char *dataBuffer;
|
char *curPtr; //ptr to the token parsed
|
||||||
/*! Pointer to the token parsed. */
|
char *savePtr; //Saves for backup
|
||||||
char *curPtr;
|
|
||||||
/*! Saves for backup. */
|
|
||||||
char *savePtr;
|
|
||||||
ixml_membuf lastElem;
|
ixml_membuf lastElem;
|
||||||
ixml_membuf tokenBuf;
|
ixml_membuf tokenBuf;
|
||||||
|
|
||||||
IXML_Node *pNeedPrefixNode;
|
IXML_Node *pNeedPrefixNode;
|
||||||
IXML_ElementStack *pCurElement;
|
IXML_ElementStack *pCurElement;
|
||||||
IXML_Node *currentNodePtr;
|
IXML_Node *currentNodePtr;
|
||||||
PARSER_STATE state;
|
PARSER_STATE state;
|
||||||
|
|
||||||
BOOL bHasTopLevel;
|
BOOL bHasTopLevel;
|
||||||
|
|
||||||
} Parser;
|
} Parser;
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Check to see whether name is a valid xml name.
|
|
||||||
*/
|
|
||||||
BOOL Parser_isValidXmlName(
|
|
||||||
/*! [in] The string to be checked. */
|
|
||||||
const DOMString name);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Sets the error character.
|
|
||||||
*
|
|
||||||
* If 'c' is 0 (default), the parser is strict about XML encoding:
|
|
||||||
* invalid UTF-8 sequences or "&" entities are rejected, and the parsing
|
|
||||||
* aborts.
|
|
||||||
*
|
|
||||||
* If 'c' is not 0, the parser is relaxed: invalid UTF-8 characters
|
|
||||||
* are replaced by this character, and invalid "&" entities are left
|
|
||||||
* untranslated. The parsing is then allowed to continue.
|
|
||||||
*/
|
|
||||||
void Parser_setErrorChar(
|
|
||||||
/*! [in] The character to become the error character. */
|
|
||||||
char c);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Fees a node contents.
|
|
||||||
*/
|
|
||||||
void Parser_freeNodeContent(
|
|
||||||
/*! [in] The Node to process. */
|
|
||||||
IXML_Node *IXML_Nodeptr);
|
|
||||||
|
|
||||||
int Parser_LoadDocument(IXML_Document **retDoc, const char * xmlFile, BOOL file);
|
|
||||||
|
|
||||||
|
int Parser_LoadDocument( IXML_Document **retDoc, char * xmlFile, BOOL file);
|
||||||
|
BOOL Parser_isValidXmlName( DOMString name);
|
||||||
int Parser_setNodePrefixAndLocalName(IXML_Node *newIXML_NodeIXML_Attr);
|
int Parser_setNodePrefixAndLocalName(IXML_Node *newIXML_NodeIXML_Attr);
|
||||||
|
void Parser_freeNodeContent( IXML_Node *IXML_Nodeptr);
|
||||||
|
|
||||||
|
void Parser_setErrorChar( char c );
|
||||||
|
|
||||||
|
void ixmlAttr_free(IXML_Attr *attrNode);
|
||||||
void ixmlAttr_init(IXML_Attr *attrNode);
|
void ixmlAttr_init(IXML_Attr *attrNode);
|
||||||
|
|
||||||
/*!
|
int ixmlElement_setTagName(IXML_Element *element, char *tagName);
|
||||||
* \brief Set the given element's tagName.
|
|
||||||
*
|
|
||||||
* \return One of the following:
|
|
||||||
* \li \b IXML_SUCCESS, if successfull.
|
|
||||||
* \li \b IXML_FAILED, if element of tagname is \b NULL.
|
|
||||||
* \li \b IXML_INSUFFICIENT_MEMORY, if there is no memory to allocate the
|
|
||||||
* buffer for the element's tagname.
|
|
||||||
*/
|
|
||||||
int ixmlElement_setTagName(
|
|
||||||
/*! [in] The element to change the tagname. */
|
|
||||||
IXML_Element *element,
|
|
||||||
/*! [in] The new tagName for the element. */
|
|
||||||
const char *tagName);
|
|
||||||
|
|
||||||
|
void ixmlNamedNodeMap_init(IXML_NamedNodeMap *nnMap);
|
||||||
|
int ixmlNamedNodeMap_addToNamedNodeMap(IXML_NamedNodeMap **nnMap, IXML_Node *add);
|
||||||
|
|
||||||
/*!
|
void ixmlNode_init(IXML_Node *IXML_Nodeptr);
|
||||||
* \brief Initializes a NamedNodeMap object.
|
BOOL ixmlNode_compare(IXML_Node *srcIXML_Node, IXML_Node *destIXML_Node);
|
||||||
*/
|
|
||||||
void ixmlNamedNodeMap_init(
|
|
||||||
/*! [in] The named node map to process. */
|
|
||||||
IXML_NamedNodeMap *nnMap);
|
|
||||||
|
|
||||||
|
void ixmlNode_getElementsByTagName( IXML_Node *n, char *tagname, IXML_NodeList **list);
|
||||||
|
void ixmlNode_getElementsByTagNameNS( IXML_Node *IXML_Node, char *namespaceURI,
|
||||||
|
char *localName, IXML_NodeList **list);
|
||||||
|
|
||||||
/*!
|
int ixmlNode_setNodeProperties(IXML_Node* node, IXML_Node *src);
|
||||||
* \brief Add a node to a NamedNodeMap.
|
int ixmlNode_setNodeName( IXML_Node* node, DOMString qualifiedName);
|
||||||
*
|
|
||||||
* \return IXML_SUCCESS or failure.
|
|
||||||
*/
|
|
||||||
int ixmlNamedNodeMap_addToNamedNodeMap(
|
|
||||||
/* [in] The named node map. */
|
|
||||||
IXML_NamedNodeMap **nnMap,
|
|
||||||
/* [in] The node to add. */
|
|
||||||
IXML_Node *add);
|
|
||||||
|
|
||||||
/*!
|
void ixmlNodeList_init(IXML_NodeList *nList);
|
||||||
* \brief Add a node to nodelist.
|
int ixmlNodeList_addToNodeList(IXML_NodeList **nList, IXML_Node *add);
|
||||||
*/
|
|
||||||
int ixmlNodeList_addToNodeList(
|
|
||||||
/*! [in] The pointer to the nodelist. */
|
|
||||||
IXML_NodeList **nList,
|
|
||||||
/*! [in] The node to add. */
|
|
||||||
IXML_Node *add);
|
|
||||||
|
|
||||||
|
#endif // _IXMLPARSER_H
|
||||||
/*!
|
|
||||||
* \brief Intializes a node.
|
|
||||||
*/
|
|
||||||
void ixmlNode_init(
|
|
||||||
/*! [in] The \b Node to iniatialize. */
|
|
||||||
IN IXML_Node *nodeptr);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Compare two nodes to see whether they are the same node.
|
|
||||||
* Parent, sibling and children node are ignored.
|
|
||||||
*
|
|
||||||
* \return
|
|
||||||
* \li TRUE, the two nodes are the same.
|
|
||||||
* \li FALSE, the two nodes are not the same.
|
|
||||||
*/
|
|
||||||
BOOL ixmlNode_compare(
|
|
||||||
/*! [in] The first \b Node. */
|
|
||||||
IXML_Node *srcNode,
|
|
||||||
/*! [in] The second \b Node. */
|
|
||||||
IXML_Node *destNode);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Returns a nodeList of all descendant Elements with a given tagName,
|
|
||||||
* in the order in which they are encountered in a traversal of this element
|
|
||||||
* tree.
|
|
||||||
*/
|
|
||||||
void ixmlNode_getElementsByTagName(
|
|
||||||
/*! [in] The \b Node tree. */
|
|
||||||
IXML_Node *n,
|
|
||||||
/*! [in] The tag name to match. */
|
|
||||||
const char *tagname,
|
|
||||||
/*! [out] The output \b NodeList. */
|
|
||||||
IXML_NodeList **list);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Returns a nodeList of all the descendant Elements with a given local
|
|
||||||
* name and namespace URI in the order in which they are encountered in a
|
|
||||||
* preorder traversal of this Elememt tree.
|
|
||||||
*/
|
|
||||||
void ixmlNode_getElementsByTagNameNS(
|
|
||||||
/*! [in] The \b Element tree. */
|
|
||||||
IXML_Node *n,
|
|
||||||
/*! [in] The name space to match. */
|
|
||||||
const char *namespaceURI,
|
|
||||||
/*! [in] The local name to match. */
|
|
||||||
const char *localName,
|
|
||||||
/*! [out] The output \b NodeList. */
|
|
||||||
IXML_NodeList **list);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief
|
|
||||||
*
|
|
||||||
* \return
|
|
||||||
*/
|
|
||||||
int ixmlNode_setNodeName(
|
|
||||||
/*! [in] The \b Node. */
|
|
||||||
IXML_Node *node,
|
|
||||||
/*! [in] . */
|
|
||||||
const DOMString qualifiedName);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief
|
|
||||||
*
|
|
||||||
* \return
|
|
||||||
*/
|
|
||||||
int ixmlNode_setNodeProperties(
|
|
||||||
/*! [in] . */
|
|
||||||
IXML_Node *destNode,
|
|
||||||
/*! [in] . */
|
|
||||||
IXML_Node *src);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Initializes a nodelist
|
|
||||||
*/
|
|
||||||
void ixmlNodeList_init(
|
|
||||||
/*! [in,out] The \b NodeList to initialize. */
|
|
||||||
IXML_NodeList *nList);
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* IXMLPARSER_H */
|
|
||||||
|
|
||||||
|
|||||||
389
ixml/src/ixml.c
389
ixml/src/ixml.c
@@ -1,65 +1,51 @@
|
|||||||
/**************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
**************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "ixmldebug.h"
|
|
||||||
#include "ixmlmembuf.h"
|
#include "ixmlmembuf.h"
|
||||||
#include "ixmlparser.h"
|
#include "ixmlparser.h"
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
#include <stdlib.h> /* for free() */
|
* copy_with_escape
|
||||||
#include <string.h>
|
*
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
/*!
|
static void
|
||||||
* \brief Appends a string to a buffer, substituting some characters by escape
|
copy_with_escape( INOUT ixml_membuf * buf,
|
||||||
* sequences.
|
IN char *p )
|
||||||
*/
|
|
||||||
static void copy_with_escape(
|
|
||||||
/*! [in,out] The input/output buffer. */
|
|
||||||
ixml_membuf *buf,
|
|
||||||
/*! [in] The string to copy from. */
|
|
||||||
const char *p)
|
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
int plen;
|
int plen;
|
||||||
|
|
||||||
if (p == NULL) {
|
if( p == NULL )
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
plen = strlen( p );
|
plen = strlen( p );
|
||||||
|
|
||||||
@@ -87,59 +73,58 @@ static void copy_with_escape(
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
ixml_membuf_append( buf, &p[i] );
|
ixml_membuf_append( buf, &p[i] );
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
/*!
|
* ixmlPrintDomTreeRecursive
|
||||||
* \brief Recursive function to print all the node in a tree.
|
* It is a recursive function to print all the node in a tree.
|
||||||
* Internal to parser only.
|
* Internal to parser only.
|
||||||
*/
|
*
|
||||||
static void ixmlPrintDomTreeRecursive(
|
*=================================================================*/
|
||||||
/*! [in] \todo documentation. */
|
void
|
||||||
IXML_Node *nodeptr,
|
ixmlPrintDomTreeRecursive( IN IXML_Node * nodeptr,
|
||||||
/*! [in] \todo documentation. */
|
IN ixml_membuf * buf )
|
||||||
ixml_membuf *buf)
|
|
||||||
{
|
{
|
||||||
const char *nodeName = NULL;
|
char *nodeName = NULL;
|
||||||
const char *nodeValue = NULL;
|
char *nodeValue = NULL;
|
||||||
IXML_Node *child = NULL,
|
IXML_Node *child = NULL,
|
||||||
*sibling = NULL;
|
*sibling = NULL;
|
||||||
|
|
||||||
if( nodeptr != NULL ) {
|
if( nodeptr != NULL ) {
|
||||||
nodeName = (const char *)ixmlNode_getNodeName(nodeptr);
|
nodeName = ( char * )ixmlNode_getNodeName( nodeptr );
|
||||||
nodeValue = ixmlNode_getNodeValue( nodeptr );
|
nodeValue = ixmlNode_getNodeValue( nodeptr );
|
||||||
|
|
||||||
switch ( ixmlNode_getNodeType( nodeptr ) ) {
|
switch ( ixmlNode_getNodeType( nodeptr ) ) {
|
||||||
|
|
||||||
case eTEXT_NODE:
|
case eTEXT_NODE:
|
||||||
copy_with_escape( buf, nodeValue );
|
copy_with_escape( buf, nodeValue );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eCDATA_SECTION_NODE:
|
case eCDATA_SECTION_NODE:
|
||||||
ixml_membuf_append_str(buf, "<![CDATA[");
|
|
||||||
ixml_membuf_append_str( buf, nodeValue );
|
ixml_membuf_append_str( buf, nodeValue );
|
||||||
ixml_membuf_append_str(buf, "]]>");
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ePROCESSING_INSTRUCTION_NODE:
|
case ePROCESSING_INSTRUCTION_NODE:
|
||||||
ixml_membuf_append_str( buf, "<?" );
|
ixml_membuf_append_str( buf, "<?" );
|
||||||
ixml_membuf_append_str( buf, nodeName );
|
ixml_membuf_append_str( buf, nodeName );
|
||||||
ixml_membuf_append_str( buf, " " );
|
ixml_membuf_append_str( buf, " " );
|
||||||
copy_with_escape(buf, nodeValue);
|
ixml_membuf_append_str( buf, nodeValue );
|
||||||
ixml_membuf_append_str( buf, "?>\n" );
|
ixml_membuf_append_str( buf, "?>\n" );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eDOCUMENT_NODE:
|
case eDOCUMENT_NODE:
|
||||||
ixmlPrintDomTreeRecursive(
|
ixmlPrintDomTreeRecursive( ixmlNode_getFirstChild
|
||||||
ixmlNode_getFirstChild(nodeptr), buf);
|
( nodeptr ), buf );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eATTRIBUTE_NODE:
|
case eATTRIBUTE_NODE:
|
||||||
ixml_membuf_append_str( buf, nodeName );
|
ixml_membuf_append_str( buf, nodeName );
|
||||||
ixml_membuf_append_str( buf, "=\"" );
|
ixml_membuf_append_str( buf, "=\"" );
|
||||||
copy_with_escape(buf, nodeValue);
|
if( nodeValue != NULL ) {
|
||||||
|
ixml_membuf_append_str( buf, nodeValue );
|
||||||
|
}
|
||||||
ixml_membuf_append_str( buf, "\"" );
|
ixml_membuf_append_str( buf, "\"" );
|
||||||
if( nodeptr->nextSibling != NULL ) {
|
if( nodeptr->nextSibling != NULL ) {
|
||||||
ixml_membuf_append_str( buf, " " );
|
ixml_membuf_append_str( buf, " " );
|
||||||
@@ -150,69 +135,71 @@ static void ixmlPrintDomTreeRecursive(
|
|||||||
case eELEMENT_NODE:
|
case eELEMENT_NODE:
|
||||||
ixml_membuf_append_str( buf, "<" );
|
ixml_membuf_append_str( buf, "<" );
|
||||||
ixml_membuf_append_str( buf, nodeName );
|
ixml_membuf_append_str( buf, nodeName );
|
||||||
|
|
||||||
if( nodeptr->firstAttr != NULL ) {
|
if( nodeptr->firstAttr != NULL ) {
|
||||||
ixml_membuf_append_str( buf, " " );
|
ixml_membuf_append_str( buf, " " );
|
||||||
ixmlPrintDomTreeRecursive( nodeptr->firstAttr, buf );
|
ixmlPrintDomTreeRecursive( nodeptr->firstAttr, buf );
|
||||||
}
|
}
|
||||||
|
|
||||||
child = ixmlNode_getFirstChild( nodeptr );
|
child = ixmlNode_getFirstChild( nodeptr );
|
||||||
if (child != NULL &&
|
if( ( child != NULL )
|
||||||
ixmlNode_getNodeType(child) == eELEMENT_NODE) {
|
&& ( ixmlNode_getNodeType( child ) ==
|
||||||
ixml_membuf_append_str(buf, ">\r\n");
|
eELEMENT_NODE ) ) {
|
||||||
|
ixml_membuf_append_str( buf, ">\n" );
|
||||||
} else {
|
} else {
|
||||||
ixml_membuf_append_str( buf, ">" );
|
ixml_membuf_append_str( buf, ">" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// output the children
|
// output the children
|
||||||
ixmlPrintDomTreeRecursive(
|
ixmlPrintDomTreeRecursive( ixmlNode_getFirstChild
|
||||||
ixmlNode_getFirstChild(nodeptr), buf);
|
( nodeptr ), buf );
|
||||||
|
|
||||||
// Done with children. Output the end tag.
|
// Done with children. Output the end tag.
|
||||||
ixml_membuf_append_str( buf, "</" );
|
ixml_membuf_append_str( buf, "</" );
|
||||||
ixml_membuf_append_str( buf, nodeName );
|
ixml_membuf_append_str( buf, nodeName );
|
||||||
|
|
||||||
sibling = ixmlNode_getNextSibling( nodeptr );
|
sibling = ixmlNode_getNextSibling( nodeptr );
|
||||||
if (sibling != NULL &&
|
if( sibling != NULL
|
||||||
ixmlNode_getNodeType(sibling) == eTEXT_NODE) {
|
&& ixmlNode_getNodeType( sibling ) == eTEXT_NODE ) {
|
||||||
ixml_membuf_append_str( buf, ">" );
|
ixml_membuf_append_str( buf, ">" );
|
||||||
} else {
|
} else {
|
||||||
ixml_membuf_append_str( buf, ">\r\n" );
|
ixml_membuf_append_str( buf, ">\n" );
|
||||||
}
|
}
|
||||||
ixmlPrintDomTreeRecursive(
|
ixmlPrintDomTreeRecursive( ixmlNode_getNextSibling
|
||||||
ixmlNode_getNextSibling(nodeptr), buf);
|
( nodeptr ), buf );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
IxmlPrintf(__FILE__, __LINE__, "ixmlPrintDomTreeRecursive",
|
|
||||||
"Warning, unknown node type %d\n",
|
|
||||||
ixmlNode_getNodeType(nodeptr));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
/*!
|
* ixmlPrintDomTree
|
||||||
* \brief Print a DOM tree.
|
* Print a DOM tree.
|
||||||
|
* Element, and Attribute nodes are handled differently.
|
||||||
|
* We don't want to print the Element and Attribute nodes' sibling.
|
||||||
|
* External function.
|
||||||
*
|
*
|
||||||
* Element, and Attribute nodes are handled differently. We don't want to print
|
*=================================================================*/
|
||||||
* the Element and Attribute nodes' sibling.
|
void
|
||||||
*/
|
ixmlPrintDomTree( IN IXML_Node * nodeptr,
|
||||||
static void ixmlPrintDomTree(
|
IN ixml_membuf * buf )
|
||||||
/*! [in] \todo documentation. */
|
|
||||||
IXML_Node *nodeptr,
|
|
||||||
/*! [in] \todo documentation. */
|
|
||||||
ixml_membuf *buf)
|
|
||||||
{
|
{
|
||||||
const char *nodeName = NULL;
|
char *nodeName = NULL;
|
||||||
const char *nodeValue = NULL;
|
char *nodeValue = NULL;
|
||||||
IXML_Node *child = NULL;
|
IXML_Node *child = NULL;
|
||||||
|
|
||||||
if (nodeptr == NULL || buf == NULL) {
|
if( ( nodeptr == NULL ) || ( buf == NULL ) ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
nodeName = (const char *)ixmlNode_getNodeName(nodeptr);
|
nodeName = ( char * )ixmlNode_getNodeName( nodeptr );
|
||||||
nodeValue = ixmlNode_getNodeValue( nodeptr );
|
nodeValue = ixmlNode_getNodeValue( nodeptr );
|
||||||
|
|
||||||
switch ( ixmlNode_getNodeType( nodeptr ) ) {
|
switch ( ixmlNode_getNodeType( nodeptr ) ) {
|
||||||
|
|
||||||
case eTEXT_NODE:
|
case eTEXT_NODE:
|
||||||
case eCDATA_SECTION_NODE:
|
case eCDATA_SECTION_NODE:
|
||||||
case ePROCESSING_INSTRUCTION_NODE:
|
case ePROCESSING_INSTRUCTION_NODE:
|
||||||
@@ -223,68 +210,67 @@ static void ixmlPrintDomTree(
|
|||||||
case eATTRIBUTE_NODE:
|
case eATTRIBUTE_NODE:
|
||||||
ixml_membuf_append_str( buf, nodeName );
|
ixml_membuf_append_str( buf, nodeName );
|
||||||
ixml_membuf_append_str( buf, "=\"" );
|
ixml_membuf_append_str( buf, "=\"" );
|
||||||
copy_with_escape(buf, nodeValue);
|
ixml_membuf_append_str( buf, nodeValue );
|
||||||
ixml_membuf_append_str( buf, "\"" );
|
ixml_membuf_append_str( buf, "\"" );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eELEMENT_NODE:
|
case eELEMENT_NODE:
|
||||||
ixml_membuf_append_str( buf, "<" );
|
ixml_membuf_append_str( buf, "<" );
|
||||||
ixml_membuf_append_str( buf, nodeName );
|
ixml_membuf_append_str( buf, nodeName );
|
||||||
|
|
||||||
if( nodeptr->firstAttr != NULL ) {
|
if( nodeptr->firstAttr != NULL ) {
|
||||||
ixml_membuf_append_str( buf, " " );
|
ixml_membuf_append_str( buf, " " );
|
||||||
ixmlPrintDomTreeRecursive( nodeptr->firstAttr, buf );
|
ixmlPrintDomTreeRecursive( nodeptr->firstAttr, buf );
|
||||||
}
|
}
|
||||||
|
|
||||||
child = ixmlNode_getFirstChild( nodeptr );
|
child = ixmlNode_getFirstChild( nodeptr );
|
||||||
if (child != NULL &&
|
if( ( child != NULL )
|
||||||
ixmlNode_getNodeType(child) == eELEMENT_NODE) {
|
&& ( ixmlNode_getNodeType( child ) == eELEMENT_NODE ) ) {
|
||||||
ixml_membuf_append_str(buf, ">\r\n");
|
ixml_membuf_append_str( buf, ">\n" );
|
||||||
} else {
|
} else {
|
||||||
ixml_membuf_append_str( buf, ">" );
|
ixml_membuf_append_str( buf, ">" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// output the children
|
// output the children
|
||||||
ixmlPrintDomTreeRecursive(
|
ixmlPrintDomTreeRecursive( ixmlNode_getFirstChild( nodeptr ),
|
||||||
ixmlNode_getFirstChild(nodeptr), buf);
|
buf );
|
||||||
|
|
||||||
// Done with children. Output the end tag.
|
// Done with children. Output the end tag.
|
||||||
ixml_membuf_append_str( buf, "</" );
|
ixml_membuf_append_str( buf, "</" );
|
||||||
ixml_membuf_append_str( buf, nodeName );
|
ixml_membuf_append_str( buf, nodeName );
|
||||||
ixml_membuf_append_str(buf, ">\r\n");
|
ixml_membuf_append_str( buf, ">\n" );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
IxmlPrintf(__FILE__, __LINE__, "ixmlPrintDomTree",
|
|
||||||
"Warning, unknown node type %d\n",
|
|
||||||
ixmlNode_getNodeType(nodeptr));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
/*!
|
* ixmlDomTreetoString
|
||||||
* \brief Converts a DOM tree into a text string.
|
* Converts a DOM tree into a text string
|
||||||
|
* Element, and Attribute nodes are handled differently.
|
||||||
|
* We don't want to print the Element and Attribute nodes' sibling.
|
||||||
|
* External function.
|
||||||
*
|
*
|
||||||
* Element, and Attribute nodes are handled differently. We don't want to print
|
*=================================================================*/
|
||||||
* the Element and Attribute nodes' sibling.
|
void
|
||||||
*/
|
ixmlDomTreetoString( IN IXML_Node * nodeptr,
|
||||||
static void ixmlDomTreetoString(
|
IN ixml_membuf * buf )
|
||||||
/*! [in] \todo documentation. */
|
|
||||||
IXML_Node *nodeptr,
|
|
||||||
/*! [in] \todo documentation. */
|
|
||||||
ixml_membuf *buf)
|
|
||||||
{
|
{
|
||||||
const char *nodeName = NULL;
|
char *nodeName = NULL;
|
||||||
const char *nodeValue = NULL;
|
char *nodeValue = NULL;
|
||||||
IXML_Node *child = NULL;
|
IXML_Node *child = NULL;
|
||||||
|
|
||||||
if (nodeptr == NULL || buf == NULL) {
|
if( ( nodeptr == NULL ) || ( buf == NULL ) ) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
nodeName = (const char *)ixmlNode_getNodeName(nodeptr);
|
nodeName = ( char * )ixmlNode_getNodeName( nodeptr );
|
||||||
nodeValue = ixmlNode_getNodeValue( nodeptr );
|
nodeValue = ixmlNode_getNodeValue( nodeptr );
|
||||||
|
|
||||||
switch ( ixmlNode_getNodeType( nodeptr ) ) {
|
switch ( ixmlNode_getNodeType( nodeptr ) ) {
|
||||||
|
|
||||||
case eTEXT_NODE:
|
case eTEXT_NODE:
|
||||||
case eCDATA_SECTION_NODE:
|
case eCDATA_SECTION_NODE:
|
||||||
case ePROCESSING_INSTRUCTION_NODE:
|
case ePROCESSING_INSTRUCTION_NODE:
|
||||||
@@ -295,27 +281,30 @@ static void ixmlDomTreetoString(
|
|||||||
case eATTRIBUTE_NODE:
|
case eATTRIBUTE_NODE:
|
||||||
ixml_membuf_append_str( buf, nodeName );
|
ixml_membuf_append_str( buf, nodeName );
|
||||||
ixml_membuf_append_str( buf, "=\"" );
|
ixml_membuf_append_str( buf, "=\"" );
|
||||||
copy_with_escape(buf, nodeValue );
|
ixml_membuf_append_str( buf, nodeValue );
|
||||||
ixml_membuf_append_str( buf, "\"" );
|
ixml_membuf_append_str( buf, "\"" );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case eELEMENT_NODE:
|
case eELEMENT_NODE:
|
||||||
ixml_membuf_append_str( buf, "<" );
|
ixml_membuf_append_str( buf, "<" );
|
||||||
ixml_membuf_append_str( buf, nodeName );
|
ixml_membuf_append_str( buf, nodeName );
|
||||||
|
|
||||||
if( nodeptr->firstAttr != NULL ) {
|
if( nodeptr->firstAttr != NULL ) {
|
||||||
ixml_membuf_append_str( buf, " " );
|
ixml_membuf_append_str( buf, " " );
|
||||||
ixmlPrintDomTreeRecursive( nodeptr->firstAttr, buf );
|
ixmlPrintDomTreeRecursive( nodeptr->firstAttr, buf );
|
||||||
}
|
}
|
||||||
|
|
||||||
child = ixmlNode_getFirstChild( nodeptr );
|
child = ixmlNode_getFirstChild( nodeptr );
|
||||||
if (child != NULL &&
|
if( ( child != NULL )
|
||||||
ixmlNode_getNodeType(child) == eELEMENT_NODE) {
|
&& ( ixmlNode_getNodeType( child ) == eELEMENT_NODE ) ) {
|
||||||
ixml_membuf_append_str( buf, ">" );
|
ixml_membuf_append_str( buf, ">" );
|
||||||
} else {
|
} else {
|
||||||
ixml_membuf_append_str( buf, ">" );
|
ixml_membuf_append_str( buf, ">" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// output the children
|
// output the children
|
||||||
ixmlPrintDomTreeRecursive(ixmlNode_getFirstChild(nodeptr), buf);
|
ixmlPrintDomTreeRecursive( ixmlNode_getFirstChild( nodeptr ),
|
||||||
|
buf );
|
||||||
|
|
||||||
// Done with children. Output the end tag.
|
// Done with children. Output the end tag.
|
||||||
ixml_membuf_append_str( buf, "</" );
|
ixml_membuf_append_str( buf, "</" );
|
||||||
@@ -324,35 +313,54 @@ static void ixmlDomTreetoString(
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
IxmlPrintf(__FILE__, __LINE__, "ixmlPrintDomTreeRecursive",
|
|
||||||
"Warning, unknown node type %d\n",
|
|
||||||
ixmlNode_getNodeType(nodeptr));
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
int ixmlLoadDocumentEx(const char *xmlFile, IXML_Document **doc)
|
* ixmlLoadDocumentEx
|
||||||
|
* Parses the given file, and returns the DOM tree from it.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixmlLoadDocumentEx( IN char *xmlFile,
|
||||||
|
IXML_Document ** doc )
|
||||||
{
|
{
|
||||||
if (xmlFile == NULL || doc == NULL) {
|
|
||||||
|
if( ( xmlFile == NULL ) || ( doc == NULL ) ) {
|
||||||
return IXML_INVALID_PARAMETER;
|
return IXML_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Parser_LoadDocument( doc, xmlFile, TRUE );
|
return Parser_LoadDocument( doc, xmlFile, TRUE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
IXML_Document *ixmlLoadDocument(const char *xmlFile)
|
* ixmlLoadDocument
|
||||||
|
* Parses the given file, and returns the DOM tree from it.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
IXML_Document *
|
||||||
|
ixmlLoadDocument( IN char *xmlFile )
|
||||||
{
|
{
|
||||||
|
|
||||||
IXML_Document *doc = NULL;
|
IXML_Document *doc = NULL;
|
||||||
|
|
||||||
ixmlLoadDocumentEx( xmlFile, &doc );
|
ixmlLoadDocumentEx( xmlFile, &doc );
|
||||||
|
|
||||||
return doc;
|
return doc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
|
* ixmlPrintDocument
|
||||||
|
* Prints entire document, prepending XML prolog first.
|
||||||
|
* Puts lots of white spaces.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
|
||||||
DOMString ixmlPrintDocument(IXML_Document *doc)
|
DOMString
|
||||||
|
ixmlPrintDocument(IXML_Document *doc)
|
||||||
{
|
{
|
||||||
IXML_Node* rootNode = ( IXML_Node * )doc;
|
IXML_Node* rootNode = ( IXML_Node * )doc;
|
||||||
ixml_membuf memBuf;
|
ixml_membuf memBuf;
|
||||||
@@ -363,15 +371,22 @@ DOMString ixmlPrintDocument(IXML_Document *doc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ixml_membuf_init( buf );
|
ixml_membuf_init( buf );
|
||||||
ixml_membuf_append_str(buf, "<?xml version=\"1.0\"?>\r\n");
|
ixml_membuf_append_str( buf, "<?xml version=\"1.0\"?>\n" );
|
||||||
ixmlPrintDomTree( rootNode, buf );
|
ixmlPrintDomTree( rootNode, buf );
|
||||||
|
|
||||||
return buf->buf;
|
return buf->buf;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
DOMString ixmlPrintNode(IXML_Node *node)
|
* ixmlPrintNode
|
||||||
|
* Print DOM tree under node. Puts lots of white spaces
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
DOMString
|
||||||
|
ixmlPrintNode( IN IXML_Node * node )
|
||||||
{
|
{
|
||||||
|
|
||||||
ixml_membuf memBuf;
|
ixml_membuf memBuf;
|
||||||
ixml_membuf *buf = &memBuf;
|
ixml_membuf *buf = &memBuf;
|
||||||
|
|
||||||
@@ -381,12 +396,20 @@ DOMString ixmlPrintNode(IXML_Node *node)
|
|||||||
|
|
||||||
ixml_membuf_init( buf );
|
ixml_membuf_init( buf );
|
||||||
ixmlPrintDomTree( node, buf );
|
ixmlPrintDomTree( node, buf );
|
||||||
|
|
||||||
return buf->buf;
|
return buf->buf;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
|
* ixmlDocumenttoString
|
||||||
|
* converts DOM tree under node to text string,
|
||||||
|
* prepending XML prolog first.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
|
||||||
DOMString ixmlDocumenttoString(IXML_Document *doc)
|
DOMString
|
||||||
|
ixmlDocumenttoString(IXML_Document *doc)
|
||||||
{
|
{
|
||||||
IXML_Node* rootNode = ( IXML_Node * )doc;
|
IXML_Node* rootNode = ( IXML_Node * )doc;
|
||||||
ixml_membuf memBuf;
|
ixml_membuf memBuf;
|
||||||
@@ -397,15 +420,22 @@ DOMString ixmlDocumenttoString(IXML_Document *doc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ixml_membuf_init( buf );
|
ixml_membuf_init( buf );
|
||||||
ixml_membuf_append_str(buf, "<?xml version=\"1.0\"?>\r\n");
|
ixml_membuf_append_str( buf, "<?xml version=\"1.0\"?>\n" );
|
||||||
ixmlDomTreetoString( rootNode, buf );
|
ixmlDomTreetoString( rootNode, buf );
|
||||||
|
|
||||||
return buf->buf;
|
return buf->buf;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
DOMString ixmlNodetoString(IXML_Node *node)
|
* ixmlNodetoString
|
||||||
|
* converts DOM tree under node to text string
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
DOMString
|
||||||
|
ixmlNodetoString( IN IXML_Node * node )
|
||||||
{
|
{
|
||||||
|
|
||||||
ixml_membuf memBuf;
|
ixml_membuf memBuf;
|
||||||
ixml_membuf *buf = &memBuf;
|
ixml_membuf *buf = &memBuf;
|
||||||
|
|
||||||
@@ -415,55 +445,86 @@ DOMString ixmlNodetoString(IXML_Node *node)
|
|||||||
|
|
||||||
ixml_membuf_init( buf );
|
ixml_membuf_init( buf );
|
||||||
ixmlDomTreetoString( node, buf );
|
ixmlDomTreetoString( node, buf );
|
||||||
|
|
||||||
return buf->buf;
|
return buf->buf;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
void ixmlRelaxParser(char errorChar)
|
* ixmlRelaxParser
|
||||||
|
* Makes the XML parser more tolerant to malformed text.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
void
|
||||||
|
ixmlRelaxParser(char errorChar)
|
||||||
{
|
{
|
||||||
Parser_setErrorChar( errorChar );
|
Parser_setErrorChar( errorChar );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int ixmlParseBufferEx(const char *buffer, IXML_Document **retDoc)
|
/*================================================================
|
||||||
|
* ixmlParseBufferEx
|
||||||
|
* Parse xml file stored in buffer.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixmlParseBufferEx( IN char *buffer,
|
||||||
|
IXML_Document ** retDoc )
|
||||||
{
|
{
|
||||||
if (buffer == NULL || retDoc == NULL) {
|
|
||||||
|
if( ( buffer == NULL ) || ( retDoc == NULL ) ) {
|
||||||
return IXML_INVALID_PARAMETER;
|
return IXML_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buffer[0] == '\0') {
|
if( strlen( buffer ) == 0 ) {
|
||||||
return IXML_INVALID_PARAMETER;
|
return IXML_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
return Parser_LoadDocument( retDoc, buffer, FALSE );
|
return Parser_LoadDocument( retDoc, buffer, FALSE );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
IXML_Document *ixmlParseBuffer(const char *buffer)
|
* ixmlParseBuffer
|
||||||
|
* Parse xml file stored in buffer.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
IXML_Document *
|
||||||
|
ixmlParseBuffer( IN char *buffer )
|
||||||
{
|
{
|
||||||
IXML_Document *doc = NULL;
|
IXML_Document *doc = NULL;
|
||||||
|
|
||||||
ixmlParseBufferEx( buffer, &doc );
|
ixmlParseBufferEx( buffer, &doc );
|
||||||
|
|
||||||
return doc;
|
return doc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
DOMString ixmlCloneDOMString(const DOMString src)
|
* ixmlCloneDOMString
|
||||||
|
* Clones a DOM String.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
DOMString
|
||||||
|
ixmlCloneDOMString( IN const DOMString src )
|
||||||
{
|
{
|
||||||
if( src == NULL ) {
|
if( src == NULL ) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return strdup(src);
|
return ( strdup( src ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
void ixmlFreeDOMString(DOMString buf)
|
* ixmlFreeDOMString
|
||||||
|
* Frees a DOM String.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
void
|
||||||
|
ixmlFreeDOMString( IN DOMString buf )
|
||||||
{
|
{
|
||||||
if( buf != NULL ) {
|
if( buf != NULL ) {
|
||||||
free( buf );
|
free( buf );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,70 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "autoconfig.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include "ixmldebug.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
void IxmlPrintf(
|
|
||||||
const char *DbgFileName,
|
|
||||||
int DbgLineNo,
|
|
||||||
const char *FunctionName,
|
|
||||||
const char *FmtStr,
|
|
||||||
...)
|
|
||||||
{
|
|
||||||
va_list ArgList;
|
|
||||||
|
|
||||||
FILE *fp = stdout;
|
|
||||||
fprintf(fp, "(%s::%s), line %d", DbgFileName, FunctionName, DbgLineNo);
|
|
||||||
if (FmtStr) {
|
|
||||||
fprintf(fp, ": ");
|
|
||||||
va_start(ArgList, FmtStr);
|
|
||||||
vfprintf(fp, FmtStr, ArgList);
|
|
||||||
fflush(fp);
|
|
||||||
va_end(ArgList);
|
|
||||||
} else {
|
|
||||||
fprintf(fp, "\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void printNodes(IXML_Node *tmpRoot, int depth)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
IXML_NodeList *NodeList1;
|
|
||||||
IXML_Node *ChildNode1;
|
|
||||||
unsigned short NodeType;
|
|
||||||
const DOMString NodeValue;
|
|
||||||
const DOMString NodeName;
|
|
||||||
NodeList1 = ixmlNode_getChildNodes(tmpRoot);
|
|
||||||
for (i = 0; i < 100; ++i) {
|
|
||||||
ChildNode1 = ixmlNodeList_item(NodeList1, i);
|
|
||||||
if (ChildNode1 == NULL) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
printNodes(ChildNode1, depth+1);
|
|
||||||
NodeType = ixmlNode_getNodeType(ChildNode1);
|
|
||||||
NodeValue = ixmlNode_getNodeValue(ChildNode1);
|
|
||||||
NodeName = ixmlNode_getNodeName(ChildNode1);
|
|
||||||
IxmlPrintf(__FILE__, __LINE__, "printNodes",
|
|
||||||
"DEPTH-%2d-IXML_Node Type %d, "
|
|
||||||
"IXML_Node Name: %s, IXML_Node Value: %s\n",
|
|
||||||
depth, NodeType, NodeName, NodeValue);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -1,87 +1,79 @@
|
|||||||
/**************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
**************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "ixmlmembuf.h"
|
|
||||||
#include "ixml.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include "ixmlmembuf.h"
|
||||||
|
#include "ixml.h"
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
/*!
|
* ixml_membuf_set_size
|
||||||
* \brief Increases or decreases buffer capacity so that at least 'new_length'
|
*
|
||||||
* bytes can be stored.
|
* Increases or decreases buffer cap so that at least
|
||||||
|
* 'new_length' bytes can be stored
|
||||||
*
|
*
|
||||||
* On error, m's fields do not change.
|
* On error, m's fields do not change.
|
||||||
*
|
*
|
||||||
* \return
|
* returns:
|
||||||
* \li UPNP_E_SUCCESS
|
* UPNP_E_SUCCESS
|
||||||
* \li UPNP_E_OUTOF_MEMORY
|
* UPNP_E_OUTOF_MEMORY
|
||||||
*/
|
*
|
||||||
static int ixml_membuf_set_size(
|
*=================================================================*/
|
||||||
/*! [in,out] The memory buffer. */
|
static int
|
||||||
INOUT ixml_membuf *m,
|
ixml_membuf_set_size( INOUT ixml_membuf * m,
|
||||||
/*! [in] The new lenght. */
|
|
||||||
IN size_t new_length )
|
IN size_t new_length )
|
||||||
{
|
{
|
||||||
size_t diff;
|
size_t diff;
|
||||||
size_t alloc_len;
|
size_t alloc_len;
|
||||||
char *temp_buf;
|
char *temp_buf;
|
||||||
|
|
||||||
if (new_length >= m->length) {
|
if( new_length >= m->length ) // increase length
|
||||||
/* increase length */
|
{
|
||||||
/* need more mem? */
|
// need more mem?
|
||||||
if( new_length <= m->capacity ) {
|
if( new_length <= m->capacity ) {
|
||||||
/* have enough mem; done */
|
return 0; // have enough mem; done
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
diff = new_length - m->length;
|
diff = new_length - m->length;
|
||||||
alloc_len = MAXVAL( m->size_inc, diff ) + m->capacity;
|
alloc_len = MAXVAL( m->size_inc, diff ) + m->capacity;
|
||||||
} else {
|
} else // decrease length
|
||||||
// decrease length
|
{
|
||||||
assert( new_length <= m->length );
|
assert( new_length <= m->length );
|
||||||
|
|
||||||
// if diff is 0..m->size_inc, don't free
|
// if diff is 0..m->size_inc, don't free
|
||||||
if( ( m->capacity - new_length ) <= m->size_inc ) {
|
if( ( m->capacity - new_length ) <= m->size_inc ) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
alloc_len = new_length + m->size_inc;
|
alloc_len = new_length + m->size_inc;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,22 +81,27 @@ static int ixml_membuf_set_size(
|
|||||||
|
|
||||||
temp_buf = realloc( m->buf, alloc_len + 1 );
|
temp_buf = realloc( m->buf, alloc_len + 1 );
|
||||||
if( temp_buf == NULL ) {
|
if( temp_buf == NULL ) {
|
||||||
/* try smaller size */
|
// try smaller size
|
||||||
alloc_len = new_length;
|
alloc_len = new_length;
|
||||||
temp_buf = realloc( m->buf, alloc_len + 1 );
|
temp_buf = realloc( m->buf, alloc_len + 1 );
|
||||||
|
|
||||||
if( temp_buf == NULL ) {
|
if( temp_buf == NULL ) {
|
||||||
return IXML_INSUFFICIENT_MEMORY;
|
return IXML_INSUFFICIENT_MEMORY;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* save */
|
// save
|
||||||
m->buf = temp_buf;
|
m->buf = temp_buf;
|
||||||
m->capacity = alloc_len;
|
m->capacity = alloc_len;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
void ixml_membuf_init(ixml_membuf *m)
|
* membuffer_init
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
void
|
||||||
|
ixml_membuf_init( INOUT ixml_membuf * m )
|
||||||
{
|
{
|
||||||
assert( m != NULL );
|
assert( m != NULL );
|
||||||
|
|
||||||
@@ -114,8 +111,13 @@ void ixml_membuf_init(ixml_membuf *m)
|
|||||||
m->capacity = 0;
|
m->capacity = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
void ixml_membuf_destroy(ixml_membuf *m)
|
* membuffer_destroy
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
void
|
||||||
|
ixml_membuf_destroy( INOUT ixml_membuf * m )
|
||||||
{
|
{
|
||||||
if( m == NULL ) {
|
if( m == NULL ) {
|
||||||
return;
|
return;
|
||||||
@@ -125,11 +127,15 @@ void ixml_membuf_destroy(ixml_membuf *m)
|
|||||||
ixml_membuf_init( m );
|
ixml_membuf_init( m );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
int ixml_membuf_assign(
|
* ixml_membuf_assign
|
||||||
ixml_membuf *m,
|
*
|
||||||
const void *buf,
|
*
|
||||||
size_t buf_len)
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixml_membuf_assign( INOUT ixml_membuf * m,
|
||||||
|
IN const void *buf,
|
||||||
|
IN size_t buf_len )
|
||||||
{
|
{
|
||||||
int return_code;
|
int return_code;
|
||||||
|
|
||||||
@@ -145,28 +151,35 @@ int ixml_membuf_assign(
|
|||||||
if( return_code != 0 ) {
|
if( return_code != 0 ) {
|
||||||
return return_code;
|
return return_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
// copy
|
// copy
|
||||||
memcpy( m->buf, buf, buf_len );
|
memcpy( m->buf, buf, buf_len );
|
||||||
|
m->buf[buf_len] = 0; // null-terminate
|
||||||
|
|
||||||
// null-terminate
|
|
||||||
m->buf[buf_len] = 0;
|
|
||||||
m->length = buf_len;
|
m->length = buf_len;
|
||||||
|
|
||||||
return IXML_SUCCESS;
|
return IXML_SUCCESS;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
int ixml_membuf_assign_str(
|
* ixml_membuf_assign_str
|
||||||
ixml_membuf *m,
|
*
|
||||||
const char *c_str)
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixml_membuf_assign_str( INOUT ixml_membuf * m,
|
||||||
|
IN const char *c_str )
|
||||||
{
|
{
|
||||||
return ixml_membuf_assign( m, c_str, strlen( c_str ) );
|
return ixml_membuf_assign( m, c_str, strlen( c_str ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
int ixml_membuf_append(
|
* ixml_membuf_append
|
||||||
INOUT ixml_membuf *m,
|
*
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixml_membuf_append( INOUT ixml_membuf * m,
|
||||||
IN const void *buf )
|
IN const void *buf )
|
||||||
{
|
{
|
||||||
assert( m != NULL );
|
assert( m != NULL );
|
||||||
@@ -174,45 +187,50 @@ int ixml_membuf_append(
|
|||||||
return ixml_membuf_insert( m, buf, 1, m->length );
|
return ixml_membuf_insert( m, buf, 1, m->length );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
int ixml_membuf_append_str(
|
* ixml_membuf_append_str
|
||||||
INOUT ixml_membuf *m,
|
*
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixml_membuf_append_str( INOUT ixml_membuf * m,
|
||||||
IN const char *c_str )
|
IN const char *c_str )
|
||||||
{
|
{
|
||||||
return ixml_membuf_insert( m, c_str, strlen( c_str ), m->length );
|
return ixml_membuf_insert( m, c_str, strlen( c_str ), m->length );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
int ixml_membuf_insert(
|
* ixml_membuf_insert
|
||||||
INOUT ixml_membuf *m,
|
*
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixml_membuf_insert( INOUT ixml_membuf * m,
|
||||||
IN const void *buf,
|
IN const void *buf,
|
||||||
IN size_t buf_len,
|
IN size_t buf_len,
|
||||||
int index )
|
int index )
|
||||||
{
|
{
|
||||||
int return_code = 0;
|
int return_code;
|
||||||
|
|
||||||
assert( m != NULL );
|
assert( m != NULL );
|
||||||
|
|
||||||
if (index < 0 || index > (int)m->length) {
|
if( index < 0 || index > ( int )m->length )
|
||||||
return IXML_INDEX_SIZE_ERR;
|
return IXML_INDEX_SIZE_ERR;
|
||||||
}
|
|
||||||
|
|
||||||
if( buf == NULL || buf_len == 0 ) {
|
if( buf == NULL || buf_len == 0 ) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* alloc mem */
|
// alloc mem
|
||||||
return_code = ixml_membuf_set_size( m, m->length + buf_len );
|
return_code = ixml_membuf_set_size( m, m->length + buf_len );
|
||||||
if( return_code != 0 ) {
|
if( return_code != 0 ) {
|
||||||
return return_code;
|
return return_code;
|
||||||
}
|
}
|
||||||
/* insert data */
|
// insert data
|
||||||
/* move data to right of insertion point */
|
// move data to right of insertion point
|
||||||
memmove( m->buf + index + buf_len, m->buf + index, m->length - index );
|
memmove( m->buf + index + buf_len, m->buf + index, m->length - index );
|
||||||
memcpy( m->buf + index, buf, buf_len );
|
memcpy( m->buf + index, buf, buf_len );
|
||||||
m->length += buf_len;
|
m->length += buf_len;
|
||||||
/* Null terminate */
|
m->buf[m->length] = 0; // null-terminate
|
||||||
m->buf[m->length] = 0;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,62 +1,53 @@
|
|||||||
/**************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
**************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "ixmlparser.h"
|
#include "ixmlparser.h"
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
#include <assert.h>
|
* NamedNodeMap_getItemNumber
|
||||||
#include <stdlib.h> /* for free(), malloc() */
|
* return the item number of a item in NamedNodeMap.
|
||||||
#include <string.h>
|
* Internal to parser only.
|
||||||
|
* Parameters:
|
||||||
|
* name: the name of the item to find
|
||||||
/*!
|
*
|
||||||
* \brief Return the item number of a item in NamedNodeMap.
|
*=================================================================*/
|
||||||
*/
|
unsigned long
|
||||||
static unsigned long ixmlNamedNodeMap_getItemNumber(
|
ixmlNamedNodeMap_getItemNumber( IN IXML_NamedNodeMap * nnMap,
|
||||||
/*! [in] The named node map to process. */
|
IN char *name )
|
||||||
IN IXML_NamedNodeMap *nnMap,
|
|
||||||
/*! [in] The name of the item to find. */
|
|
||||||
IN const char *name)
|
|
||||||
{
|
{
|
||||||
IXML_Node *tempNode;
|
IXML_Node *tempNode;
|
||||||
unsigned long returnItemNo = 0;
|
unsigned long returnItemNo = 0;
|
||||||
|
|
||||||
assert( nnMap != NULL && name != NULL );
|
assert( nnMap != NULL && name != NULL );
|
||||||
if (nnMap == NULL || name == NULL) {
|
if( ( nnMap == NULL ) || ( name == NULL ) ) {
|
||||||
return IXML_INVALID_ITEM_NUMBER;
|
return IXML_INVALID_ITEM_NUMBER;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,6 +56,7 @@ static unsigned long ixmlNamedNodeMap_getItemNumber(
|
|||||||
if( strcmp( name, tempNode->nodeName ) == 0 ) {
|
if( strcmp( name, tempNode->nodeName ) == 0 ) {
|
||||||
return returnItemNo;
|
return returnItemNo;
|
||||||
}
|
}
|
||||||
|
|
||||||
tempNode = tempNode->nextSibling;
|
tempNode = tempNode->nextSibling;
|
||||||
returnItemNo++;
|
returnItemNo++;
|
||||||
}
|
}
|
||||||
@@ -72,22 +64,39 @@ static unsigned long ixmlNamedNodeMap_getItemNumber(
|
|||||||
return IXML_INVALID_ITEM_NUMBER;
|
return IXML_INVALID_ITEM_NUMBER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
void ixmlNamedNodeMap_init(IXML_NamedNodeMap *nnMap)
|
* NamedNodeMap_init
|
||||||
|
* Initializes a NamedNodeMap object.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
void
|
||||||
|
ixmlNamedNodeMap_init( IN IXML_NamedNodeMap * nnMap )
|
||||||
{
|
{
|
||||||
assert( nnMap != NULL );
|
assert( nnMap != NULL );
|
||||||
|
|
||||||
memset( nnMap, 0, sizeof( IXML_NamedNodeMap ) );
|
memset( nnMap, 0, sizeof( IXML_NamedNodeMap ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
IXML_Node *ixmlNamedNodeMap_getNamedItem(
|
* NamedNodeMap_getNamedItem
|
||||||
IXML_NamedNodeMap *nnMap,
|
* Retrieves a node specified by name.
|
||||||
const DOMString name)
|
* External function.
|
||||||
|
*
|
||||||
|
* Parameter:
|
||||||
|
* name: type nodeName of a node to retrieve.
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* A Node with the specified nodeName, or null if it
|
||||||
|
* does not identify any node in this map.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
IXML_Node *
|
||||||
|
ixmlNamedNodeMap_getNamedItem( IN IXML_NamedNodeMap * nnMap,
|
||||||
|
IN char *name )
|
||||||
{
|
{
|
||||||
long index;
|
long index;
|
||||||
|
|
||||||
if (nnMap == NULL || name == NULL) {
|
if( ( nnMap == NULL ) || ( name == NULL ) ) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,13 +104,26 @@ IXML_Node *ixmlNamedNodeMap_getNamedItem(
|
|||||||
if( index == IXML_INVALID_ITEM_NUMBER ) {
|
if( index == IXML_INVALID_ITEM_NUMBER ) {
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
return ixmlNamedNodeMap_item(nnMap, (unsigned long)index);
|
return ( ixmlNamedNodeMap_item( nnMap, ( unsigned long )index ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
IXML_Node *ixmlNamedNodeMap_item(
|
* NamedNodeMap_item
|
||||||
IN IXML_NamedNodeMap *nnMap,
|
* Returns the indexth item in the map. If index is greater than or
|
||||||
|
* equal to the number of nodes in this map, this returns null.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
* Parameter:
|
||||||
|
* index: index into this map.
|
||||||
|
*
|
||||||
|
* Return Value:
|
||||||
|
* The node at the indexth position in the map, or null if that is
|
||||||
|
* not a valid index.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
IXML_Node *
|
||||||
|
ixmlNamedNodeMap_item( IN IXML_NamedNodeMap * nnMap,
|
||||||
IN unsigned long index )
|
IN unsigned long index )
|
||||||
{
|
{
|
||||||
IXML_Node *tempNode;
|
IXML_Node *tempNode;
|
||||||
@@ -123,8 +145,16 @@ IXML_Node *ixmlNamedNodeMap_item(
|
|||||||
return tempNode;
|
return tempNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
unsigned long ixmlNamedNodeMap_getLength(IXML_NamedNodeMap *nnMap)
|
* NamedNodeMap_getLength
|
||||||
|
* Return the number of Nodes in this map.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
unsigned long
|
||||||
|
ixmlNamedNodeMap_getLength( IN IXML_NamedNodeMap * nnMap )
|
||||||
{
|
{
|
||||||
IXML_Node *tempNode;
|
IXML_Node *tempNode;
|
||||||
unsigned long length = 0;
|
unsigned long length = 0;
|
||||||
@@ -135,12 +165,17 @@ unsigned long ixmlNamedNodeMap_getLength(IXML_NamedNodeMap *nnMap)
|
|||||||
tempNode = tempNode->nextSibling;
|
tempNode = tempNode->nextSibling;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
void ixmlNamedNodeMap_free(IXML_NamedNodeMap *nnMap)
|
* ixmlNamedNodeMap_free
|
||||||
|
* frees a NamedNodeMap.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
void
|
||||||
|
ixmlNamedNodeMap_free( IXML_NamedNodeMap * nnMap )
|
||||||
{
|
{
|
||||||
IXML_NamedNodeMap *pNext;
|
IXML_NamedNodeMap *pNext;
|
||||||
|
|
||||||
@@ -151,27 +186,38 @@ void ixmlNamedNodeMap_free(IXML_NamedNodeMap *nnMap)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
int ixmlNamedNodeMap_addToNamedNodeMap(
|
* NamedNodeMap_addToNamedNodeMap
|
||||||
IXML_NamedNodeMap **nnMap,
|
* add a node to a NamedNodeMap.
|
||||||
IXML_Node *add)
|
* Internal to parser only.
|
||||||
|
* Parameters:
|
||||||
|
* add: the node to add into NamedNodeMap.
|
||||||
|
* Return:
|
||||||
|
* IXML_SUCCESS or failure.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixmlNamedNodeMap_addToNamedNodeMap( IN IXML_NamedNodeMap ** nnMap,
|
||||||
|
IN IXML_Node * add )
|
||||||
{
|
{
|
||||||
IXML_NamedNodeMap *traverse = NULL;
|
IXML_NamedNodeMap *traverse = NULL,
|
||||||
IXML_NamedNodeMap *p = NULL;
|
*p = NULL;
|
||||||
IXML_NamedNodeMap *newItem = NULL;
|
IXML_NamedNodeMap *newItem = NULL;
|
||||||
|
|
||||||
if( add == NULL ) {
|
if( add == NULL ) {
|
||||||
return IXML_SUCCESS;
|
return IXML_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*nnMap == NULL) {
|
if( *nnMap == NULL ) // nodelist is empty
|
||||||
// nodelist is empty
|
{
|
||||||
*nnMap = (IXML_NamedNodeMap *)malloc(sizeof (IXML_NamedNodeMap));
|
*nnMap =
|
||||||
|
( IXML_NamedNodeMap * ) malloc( sizeof( IXML_NamedNodeMap ) );
|
||||||
if( *nnMap == NULL ) {
|
if( *nnMap == NULL ) {
|
||||||
return IXML_INSUFFICIENT_MEMORY;
|
return IXML_INSUFFICIENT_MEMORY;
|
||||||
}
|
}
|
||||||
ixmlNamedNodeMap_init( *nnMap );
|
ixmlNamedNodeMap_init( *nnMap );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( ( *nnMap )->nodeItem == NULL ) {
|
if( ( *nnMap )->nodeItem == NULL ) {
|
||||||
( *nnMap )->nodeItem = add;
|
( *nnMap )->nodeItem = add;
|
||||||
} else {
|
} else {
|
||||||
@@ -181,7 +227,9 @@ int ixmlNamedNodeMap_addToNamedNodeMap(
|
|||||||
p = traverse;
|
p = traverse;
|
||||||
traverse = traverse->next;
|
traverse = traverse->next;
|
||||||
}
|
}
|
||||||
newItem = (IXML_NamedNodeMap *)malloc(sizeof (IXML_NamedNodeMap));
|
|
||||||
|
newItem =
|
||||||
|
( IXML_NamedNodeMap * ) malloc( sizeof( IXML_NamedNodeMap ) );
|
||||||
if( newItem == NULL ) {
|
if( newItem == NULL ) {
|
||||||
return IXML_INSUFFICIENT_MEMORY;
|
return IXML_INSUFFICIENT_MEMORY;
|
||||||
}
|
}
|
||||||
@@ -192,4 +240,3 @@ int ixmlNamedNodeMap_addToNamedNodeMap(
|
|||||||
|
|
||||||
return IXML_SUCCESS;
|
return IXML_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
1090
ixml/src/node.c
1090
ixml/src/node.c
File diff suppressed because it is too large
Load Diff
@@ -1,57 +1,61 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "ixmlparser.h"
|
#include "ixmlparser.h"
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
#include <assert.h>
|
* ixmlNodeList_init
|
||||||
#include <string.h>
|
* initializes a nodelist
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
void ixmlNodeList_init(IXML_NodeList *nList)
|
*=================================================================*/
|
||||||
|
void
|
||||||
|
ixmlNodeList_init( IXML_NodeList * nList )
|
||||||
{
|
{
|
||||||
assert( nList != NULL );
|
assert( nList != NULL );
|
||||||
|
|
||||||
memset( nList, 0, sizeof( IXML_NodeList ) );
|
memset( nList, 0, sizeof( IXML_NodeList ) );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
IXML_Node *ixmlNodeList_item(
|
* ixmlNodeList_item
|
||||||
IXML_NodeList *nList,
|
* Returns the indexth item in the collection. If index is greater
|
||||||
|
* than or equal to the number of nodes in the list, this returns
|
||||||
|
* null.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
IXML_Node *
|
||||||
|
ixmlNodeList_item( IXML_NodeList * nList,
|
||||||
unsigned long index )
|
unsigned long index )
|
||||||
{
|
{
|
||||||
IXML_NodeList *next;
|
IXML_NodeList *next;
|
||||||
@@ -71,19 +75,24 @@ IXML_Node *ixmlNodeList_item(
|
|||||||
next = next->next;
|
next = next->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (next == NULL) {
|
if( next == NULL ) return NULL;
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return next->nodeItem;
|
return next->nodeItem;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int ixmlNodeList_addToNodeList(
|
/*================================================================
|
||||||
IXML_NodeList **nList,
|
* ixmlNodeList_addToNodeList
|
||||||
IXML_Node *add)
|
* Add a node to nodelist
|
||||||
|
* Internal to parser only.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
int
|
||||||
|
ixmlNodeList_addToNodeList( IN IXML_NodeList ** nList,
|
||||||
|
IN IXML_Node * add )
|
||||||
{
|
{
|
||||||
IXML_NodeList *traverse = NULL;
|
IXML_NodeList *traverse,
|
||||||
IXML_NodeList *p = NULL;
|
*p = NULL;
|
||||||
IXML_NodeList *newListItem;
|
IXML_NodeList *newListItem;
|
||||||
|
|
||||||
assert( add != NULL );
|
assert( add != NULL );
|
||||||
@@ -92,8 +101,8 @@ int ixmlNodeList_addToNodeList(
|
|||||||
return IXML_FAILED;
|
return IXML_FAILED;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*nList == NULL) {
|
if( *nList == NULL ) // nodelist is empty
|
||||||
// nodelist is empty
|
{
|
||||||
*nList = ( IXML_NodeList * ) malloc( sizeof( IXML_NodeList ) );
|
*nList = ( IXML_NodeList * ) malloc( sizeof( IXML_NodeList ) );
|
||||||
if( *nList == NULL ) {
|
if( *nList == NULL ) {
|
||||||
return IXML_INSUFFICIENT_MEMORY;
|
return IXML_INSUFFICIENT_MEMORY;
|
||||||
@@ -111,7 +120,8 @@ int ixmlNodeList_addToNodeList(
|
|||||||
traverse = traverse->next;
|
traverse = traverse->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
newListItem = (IXML_NodeList *)malloc(sizeof (IXML_NodeList));
|
newListItem =
|
||||||
|
( IXML_NodeList * ) malloc( sizeof( IXML_NodeList ) );
|
||||||
if( newListItem == NULL ) {
|
if( newListItem == NULL ) {
|
||||||
return IXML_INSUFFICIENT_MEMORY;
|
return IXML_INSUFFICIENT_MEMORY;
|
||||||
}
|
}
|
||||||
@@ -123,8 +133,15 @@ int ixmlNodeList_addToNodeList(
|
|||||||
return IXML_SUCCESS;
|
return IXML_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
unsigned long ixmlNodeList_length(IXML_NodeList *nList)
|
* ixmlNodeList_length
|
||||||
|
* Returns the number of nodes in the list. The range of valid
|
||||||
|
* child node indices is 0 to length-1 inclusive.
|
||||||
|
* External function.
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
unsigned long
|
||||||
|
ixmlNodeList_length( IN IXML_NodeList * nList )
|
||||||
{
|
{
|
||||||
IXML_NodeList *list;
|
IXML_NodeList *list;
|
||||||
unsigned long length = 0;
|
unsigned long length = 0;
|
||||||
@@ -138,15 +155,22 @@ unsigned long ixmlNodeList_length(IXML_NodeList *nList)
|
|||||||
return length;
|
return length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*================================================================
|
||||||
void ixmlNodeList_free(IXML_NodeList *nList)
|
* ixmlNodeList_free
|
||||||
|
* frees a nodeList
|
||||||
|
* External function
|
||||||
|
*
|
||||||
|
*=================================================================*/
|
||||||
|
void
|
||||||
|
ixmlNodeList_free( IN IXML_NodeList * nList )
|
||||||
{
|
{
|
||||||
IXML_NodeList *next;
|
IXML_NodeList *next;
|
||||||
|
|
||||||
while( nList != NULL ) {
|
while( nList != NULL ) {
|
||||||
next = nList->next;
|
next = nList->next;
|
||||||
|
|
||||||
free( nList );
|
free( nList );
|
||||||
nList = next;
|
nList = next;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
0
ixml/test/test_document.sh
Executable file → Normal file
0
ixml/test/test_document.sh
Executable file → Normal file
@@ -6,6 +6,7 @@ includedir=@includedir@
|
|||||||
Name: libupnp
|
Name: libupnp
|
||||||
Description: Linux SDK for UPnP Devices
|
Description: Linux SDK for UPnP Devices
|
||||||
Version: @VERSION@
|
Version: @VERSION@
|
||||||
Libs: @PTHREAD_CFLAGS@ @PTHREAD_LIBS@ -L${libdir} -lupnp -lthreadutil -lixml
|
Libs: @PTHREAD_LIBS@ -L${libdir} -lupnp -lthreadutil -lixml
|
||||||
Cflags: @PTHREAD_CFLAGS@ -I${includedir}/upnp
|
Cflags: @PTHREAD_CFLAGS@ -I${includedir}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
19
libupnp.spec
19
libupnp.spec
@@ -1,14 +1,15 @@
|
|||||||
Version: 1.6.6
|
Version: 1.4.1
|
||||||
Summary: Universal Plug and Play (UPnP) SDK
|
Summary: Universal Plug and Play (UPnP) SDK
|
||||||
Name: libupnp
|
Name: libupnp
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
License: BSD
|
License: BSD
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
URL: http://www.libupnp.org/
|
URL: http://www.libupnp.org/
|
||||||
Source: http://puzzle.dl.sourceforge.net/sourceforge/pupnp/%{name}-%{version}.tar.bz2
|
Source: http://puzzle.dl.sourceforge.net/sourceforge/pupnp/%{name}-%{version}.tar.gz
|
||||||
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||||
|
|
||||||
%define docdeveldir %{_docdir}/%{name}-devel-%{version}
|
%define docdir %{_docdir}/%{name}-%{version}-%{release}
|
||||||
|
%define docdeveldir %{_docdir}/%{name}-devel-%{version}-%{release}
|
||||||
|
|
||||||
%description
|
%description
|
||||||
The Universal Plug and Play (UPnP) SDK for Linux provides
|
The Universal Plug and Play (UPnP) SDK for Linux provides
|
||||||
@@ -28,7 +29,7 @@ the UPnP SDK libraries.
|
|||||||
%setup -q
|
%setup -q
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%configure --with-documentation
|
%configure --with-docdir=%{docdir}/
|
||||||
make %{?_smp_mflags}
|
make %{?_smp_mflags}
|
||||||
|
|
||||||
%install
|
%install
|
||||||
@@ -77,15 +78,6 @@ make install DESTDIR=$RPM_BUILD_ROOT
|
|||||||
rm -rf %{buildroot}
|
rm -rf %{buildroot}
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
* Mon Nov 19 2007 Marcelo Jimenez <mroberto@users.sourceforge.net> - 1.6.2-1
|
|
||||||
- Update to version 1.6.2
|
|
||||||
|
|
||||||
* Mon Nov 19 2007 Marcelo Jimenez <mroberto@users.sourceforge.net> - 1.4.7-1
|
|
||||||
- Update to version 1.4.7
|
|
||||||
|
|
||||||
* Fri Feb 02 2007 Eric Tanguy <eric.tanguy@univ-nantes.fr> - 1.4.2-1
|
|
||||||
- Update to version 1.4.2
|
|
||||||
|
|
||||||
* Wed Jul 05 2006 Eric Tanguy <eric.tanguy@univ-nantes.fr> - 1.4.1-1
|
* Wed Jul 05 2006 Eric Tanguy <eric.tanguy@univ-nantes.fr> - 1.4.1-1
|
||||||
- Update to version 1.4.1
|
- Update to version 1.4.1
|
||||||
|
|
||||||
@@ -125,4 +117,3 @@ rm -rf %{buildroot}
|
|||||||
* Thu Dec 22 2005 Eric Tanguy 1.2.1a-1
|
* Thu Dec 22 2005 Eric Tanguy 1.2.1a-1
|
||||||
- Modify spec file from
|
- Modify spec file from
|
||||||
http://rpm.pbone.net/index.php3/stat/4/idpl/2378737/com/libupnp-1.2.1a_DSM320-3.i386.rpm.html
|
http://rpm.pbone.net/index.php3/stat/4/idpl/2378737/com/libupnp-1.2.1a_DSM320-3.i386.rpm.html
|
||||||
|
|
||||||
|
|||||||
@@ -1,88 +1,50 @@
|
|||||||
##### http://autoconf-archive.cryp.to/acx_pthread.html
|
dnl @synopsis ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
||||||
#
|
dnl
|
||||||
# SYNOPSIS
|
dnl @summary figure out how to build C programs using POSIX threads
|
||||||
#
|
dnl
|
||||||
# ACX_PTHREAD([ACTION-IF-FOUND[, ACTION-IF-NOT-FOUND]])
|
dnl This macro figures out how to build C programs using POSIX threads.
|
||||||
#
|
dnl It sets the PTHREAD_LIBS output variable to the threads library and
|
||||||
# DESCRIPTION
|
dnl linker flags, and the PTHREAD_CFLAGS output variable to any special
|
||||||
#
|
dnl C compiler flags that are needed. (The user can also force certain
|
||||||
# This macro figures out how to build C programs using POSIX threads.
|
dnl compiler flags/libs to be tested by setting these environment
|
||||||
# It sets the PTHREAD_LIBS output variable to the threads library and
|
dnl variables.)
|
||||||
# linker flags, and the PTHREAD_CFLAGS output variable to any special
|
dnl
|
||||||
# C compiler flags that are needed. (The user can also force certain
|
dnl Also sets PTHREAD_CC to any special C compiler that is needed for
|
||||||
# compiler flags/libs to be tested by setting these environment
|
dnl multi-threaded programs (defaults to the value of CC otherwise).
|
||||||
# variables.)
|
dnl (This is necessary on AIX to use the special cc_r compiler alias.)
|
||||||
#
|
dnl
|
||||||
# Also sets PTHREAD_CC to any special C compiler that is needed for
|
dnl NOTE: You are assumed to not only compile your program with these
|
||||||
# multi-threaded programs (defaults to the value of CC otherwise).
|
dnl flags, but also link it with them as well. e.g. you should link
|
||||||
# (This is necessary on AIX to use the special cc_r compiler alias.)
|
dnl with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS
|
||||||
#
|
dnl $LIBS
|
||||||
# NOTE: You are assumed to not only compile your program with these
|
dnl
|
||||||
# flags, but also link it with them as well. e.g. you should link
|
dnl If you are only building threads programs, you may wish to use
|
||||||
# with $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS
|
dnl these variables in your default LIBS, CFLAGS, and CC:
|
||||||
# $LIBS
|
dnl
|
||||||
#
|
dnl LIBS="$PTHREAD_LIBS $LIBS"
|
||||||
# If you are only building threads programs, you may wish to use
|
dnl CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
||||||
# these variables in your default LIBS, CFLAGS, and CC:
|
dnl CC="$PTHREAD_CC"
|
||||||
#
|
dnl
|
||||||
# LIBS="$PTHREAD_LIBS $LIBS"
|
dnl In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
|
||||||
# CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
|
dnl constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
|
||||||
# CC="$PTHREAD_CC"
|
dnl that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
||||||
#
|
dnl
|
||||||
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute
|
dnl ACTION-IF-FOUND is a list of shell commands to run if a threads
|
||||||
# constant has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to
|
dnl library is found, and ACTION-IF-NOT-FOUND is a list of commands to
|
||||||
# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
|
dnl run it if it is not found. If ACTION-IF-FOUND is not specified, the
|
||||||
#
|
dnl default action will define HAVE_PTHREAD.
|
||||||
# ACTION-IF-FOUND is a list of shell commands to run if a threads
|
dnl
|
||||||
# library is found, and ACTION-IF-NOT-FOUND is a list of commands to
|
dnl Please let the authors know if this macro fails on any platform, or
|
||||||
# run it if it is not found. If ACTION-IF-FOUND is not specified, the
|
dnl if you have any other suggestions or comments. This macro was based
|
||||||
# default action will define HAVE_PTHREAD.
|
dnl on work by SGJ on autoconf scripts for FFTW (www.fftw.org) (with
|
||||||
#
|
dnl help from M. Frigo), as well as ac_pthread and hb_pthread macros
|
||||||
# Please let the authors know if this macro fails on any platform, or
|
dnl posted by Alejandro Forero Cuervo to the autoconf macro repository.
|
||||||
# if you have any other suggestions or comments. This macro was based
|
dnl We are also grateful for the helpful feedback of numerous users.
|
||||||
# on work by SGJ on autoconf scripts for FFTW (http://www.fftw.org/)
|
dnl
|
||||||
# (with help from M. Frigo), as well as ac_pthread and hb_pthread
|
dnl @category InstalledPackages
|
||||||
# macros posted by Alejandro Forero Cuervo to the autoconf macro
|
dnl @author Steven G. Johnson <stevenj@alum.mit.edu>
|
||||||
# repository. We are also grateful for the helpful feedback of
|
dnl @version 2005-06-15
|
||||||
# numerous users.
|
dnl @license GPLWithACException
|
||||||
#
|
|
||||||
# LAST MODIFICATION
|
|
||||||
#
|
|
||||||
# 2006-05-29
|
|
||||||
#
|
|
||||||
# COPYLEFT
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006 Steven G. Johnson <stevenj@alum.mit.edu>
|
|
||||||
#
|
|
||||||
# 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., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
# 02111-1307, USA.
|
|
||||||
#
|
|
||||||
# As a special exception, the respective Autoconf Macro's copyright
|
|
||||||
# owner gives unlimited permission to copy, distribute and modify the
|
|
||||||
# configure scripts that are the output of Autoconf when processing
|
|
||||||
# the Macro. You need not follow the terms of the GNU General Public
|
|
||||||
# License when using or distributing such scripts, even though
|
|
||||||
# portions of the text of the Macro appear in them. The GNU General
|
|
||||||
# Public License (GPL) does govern all other use of the material that
|
|
||||||
# constitutes the Autoconf Macro.
|
|
||||||
#
|
|
||||||
# This special exception to the GPL applies to versions of the
|
|
||||||
# Autoconf Macro released by the Autoconf Macro Archive. When you
|
|
||||||
# make and distribute a modified version of the Autoconf Macro, you
|
|
||||||
# may extend this special exception to the GPL to apply to your
|
|
||||||
# modified version as well.
|
|
||||||
|
|
||||||
AC_DEFUN([ACX_PTHREAD], [
|
AC_DEFUN([ACX_PTHREAD], [
|
||||||
AC_REQUIRE([AC_CANONICAL_HOST])
|
AC_REQUIRE([AC_CANONICAL_HOST])
|
||||||
@@ -254,12 +216,8 @@ if test "x$acx_pthread_ok" = xyes; then
|
|||||||
LIBS="$save_LIBS"
|
LIBS="$save_LIBS"
|
||||||
CFLAGS="$save_CFLAGS"
|
CFLAGS="$save_CFLAGS"
|
||||||
|
|
||||||
# More AIX lossage: must compile with xlc_r or cc_r
|
# More AIX lossage: must compile with cc_r
|
||||||
if test x"$GCC" != xyes; then
|
AC_CHECK_PROG(PTHREAD_CC, cc_r, cc_r, ${CC})
|
||||||
AC_CHECK_PROGS(PTHREAD_CC, xlc_r cc_r, ${CC})
|
|
||||||
else
|
|
||||||
PTHREAD_CC=$CC
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
PTHREAD_CC="$CC"
|
PTHREAD_CC="$CC"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -1,87 +1,48 @@
|
|||||||
##### http://autoconf-archive.cryp.to/ax_cflags_gcc_option.html
|
dnl @synopsis AX_CFLAGS_GCC_OPTION (optionflag [,[shellvar][,[A][,[NA]]])
|
||||||
#
|
dnl
|
||||||
# SYNOPSIS
|
dnl AX_CFLAGS_GCC_OPTION(-fvomit-frame) would show a message as like
|
||||||
#
|
dnl "checking CFLAGS for gcc -fvomit-frame ... yes" and adds the
|
||||||
# AX_CFLAGS_GCC_OPTION (optionflag [,[shellvar][,[A][,[NA]]])
|
dnl optionflag to CFLAGS if it is understood. You can override the
|
||||||
#
|
dnl shellvar-default of CFLAGS of course. The order of arguments stems
|
||||||
# DESCRIPTION
|
dnl from the explicit macros like AX_CFLAGS_WARN_ALL.
|
||||||
#
|
dnl
|
||||||
# AX_CFLAGS_GCC_OPTION(-fvomit-frame) would show a message as like
|
dnl The cousin AX_CXXFLAGS_GCC_OPTION would check for an option to add
|
||||||
# "checking CFLAGS for gcc -fvomit-frame ... yes" and adds the
|
dnl to CXXFLAGS - and it uses the autoconf setup for C++ instead of C
|
||||||
# optionflag to CFLAGS if it is understood. You can override the
|
dnl (since it is possible to use different compilers for C and C++).
|
||||||
# shellvar-default of CFLAGS of course. The order of arguments stems
|
dnl
|
||||||
# from the explicit macros like AX_CFLAGS_WARN_ALL.
|
dnl The macro is a lot simpler than any special AX_CFLAGS_* macro (or
|
||||||
#
|
dnl ac_cxx_rtti.m4 macro) but allows to check for arbitrary options.
|
||||||
# The cousin AX_CXXFLAGS_GCC_OPTION would check for an option to add
|
dnl However, if you use this macro in a few places, it would be great
|
||||||
# to CXXFLAGS - and it uses the autoconf setup for C++ instead of C
|
dnl if you would make up a new function-macro and submit it to the
|
||||||
# (since it is possible to use different compilers for C and C++).
|
dnl ac-archive.
|
||||||
#
|
dnl
|
||||||
# The macro is a lot simpler than any special AX_CFLAGS_* macro (or
|
dnl - $1 option-to-check-for : required ("-option" as non-value)
|
||||||
# ac_cxx_rtti.m4 macro) but allows to check for arbitrary options.
|
dnl - $2 shell-variable-to-add-to : CFLAGS (or CXXFLAGS in the other case)
|
||||||
# However, if you use this macro in a few places, it would be great
|
dnl - $3 action-if-found : add value to shellvariable
|
||||||
# if you would make up a new function-macro and submit it to the
|
dnl - $4 action-if-not-found : nothing
|
||||||
# ac-archive.
|
dnl
|
||||||
#
|
dnl note: in earlier versions, $1-$2 were swapped. We try to detect the
|
||||||
# - $1 option-to-check-for : required ("-option" as non-value)
|
dnl situation and accept a $2=~/-/ as being the old
|
||||||
# - $2 shell-variable-to-add-to : CFLAGS (or CXXFLAGS in the other case)
|
dnl option-to-check-for.
|
||||||
# - $3 action-if-found : add value to shellvariable
|
dnl
|
||||||
# - $4 action-if-not-found : nothing
|
dnl also: there are other variants that emerged from the original macro
|
||||||
#
|
dnl variant which did just test an option to be possibly added.
|
||||||
# note: in earlier versions, $1-$2 were swapped. We try to detect the
|
dnl However, some compilers accept an option silently, or possibly for
|
||||||
# situation and accept a $2=~/-/ as being the old
|
dnl just another option that was not intended. Therefore, we have to do
|
||||||
# option-to-check-for.
|
dnl a generic test for a compiler family. For gcc we check "-pedantic"
|
||||||
#
|
dnl being accepted which is also understood by compilers who just want
|
||||||
# also: there are other variants that emerged from the original macro
|
dnl to be compatible with gcc even when not being made from gcc
|
||||||
# variant which did just test an option to be possibly added.
|
dnl sources.
|
||||||
# However, some compilers accept an option silently, or possibly for
|
dnl
|
||||||
# just another option that was not intended. Therefore, we have to do
|
dnl see also:
|
||||||
# a generic test for a compiler family. For gcc we check "-pedantic"
|
dnl
|
||||||
# being accepted which is also understood by compilers who just want
|
dnl AX_CFLAGS_SUN_OPTION AX_CFLAGS_HPUX_OPTION
|
||||||
# to be compatible with gcc even when not being made from gcc
|
dnl AX_CFLAGS_AIX_OPTION AX_CFLAGS_IRIX_OPTION
|
||||||
# sources.
|
dnl
|
||||||
#
|
dnl @category C
|
||||||
# see also:
|
dnl @author Guido Draheim <guidod@gmx.de>
|
||||||
#
|
dnl @version 2003-11-04
|
||||||
# AX_CFLAGS_SUN_OPTION AX_CFLAGS_HPUX_OPTION
|
dnl @license GPLWithACException
|
||||||
# AX_CFLAGS_AIX_OPTION AX_CFLAGS_IRIX_OPTION
|
|
||||||
#
|
|
||||||
# LAST MODIFICATION
|
|
||||||
#
|
|
||||||
# 2006-12-12
|
|
||||||
#
|
|
||||||
# COPYLEFT
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006 Guido U. Draheim <guidod@gmx.de>
|
|
||||||
#
|
|
||||||
# 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., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
# 02111-1307, USA.
|
|
||||||
#
|
|
||||||
# As a special exception, the respective Autoconf Macro's copyright
|
|
||||||
# owner gives unlimited permission to copy, distribute and modify the
|
|
||||||
# configure scripts that are the output of Autoconf when processing
|
|
||||||
# the Macro. You need not follow the terms of the GNU General Public
|
|
||||||
# License when using or distributing such scripts, even though
|
|
||||||
# portions of the text of the Macro appear in them. The GNU General
|
|
||||||
# Public License (GPL) does govern all other use of the material that
|
|
||||||
# constitutes the Autoconf Macro.
|
|
||||||
#
|
|
||||||
# This special exception to the GPL applies to versions of the
|
|
||||||
# Autoconf Macro released by the Autoconf Macro Archive. When you
|
|
||||||
# make and distribute a modified version of the Autoconf Macro, you
|
|
||||||
# may extend this special exception to the GPL to apply to your
|
|
||||||
# modified version as well.
|
|
||||||
|
|
||||||
AC_DEFUN([AX_CFLAGS_GCC_OPTION_OLD], [dnl
|
AC_DEFUN([AX_CFLAGS_GCC_OPTION_OLD], [dnl
|
||||||
AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl
|
AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl
|
||||||
@@ -92,8 +53,7 @@ VAR,[VAR="no, unknown"
|
|||||||
AC_LANG_C
|
AC_LANG_C
|
||||||
ac_save_[]FLAGS="$[]FLAGS"
|
ac_save_[]FLAGS="$[]FLAGS"
|
||||||
for ac_arg dnl
|
for ac_arg dnl
|
||||||
in "-pedantic -Werror % m4_ifval($2,$2,-option)" dnl GCC
|
in "-pedantic % m4_ifval($2,$2,-option)" dnl GCC
|
||||||
"-pedantic % m4_ifval($2,$2,-option) %% no, obsolete" dnl new GCC
|
|
||||||
#
|
#
|
||||||
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
||||||
AC_TRY_COMPILE([],[return 0;],
|
AC_TRY_COMPILE([],[return 0;],
|
||||||
@@ -125,11 +85,10 @@ AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_gcc_option_$2])dnl
|
|||||||
AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)],
|
AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)],
|
||||||
VAR,[VAR="no, unknown"
|
VAR,[VAR="no, unknown"
|
||||||
AC_LANG_SAVE
|
AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CXX
|
||||||
ac_save_[]FLAGS="$[]FLAGS"
|
ac_save_[]FLAGS="$[]FLAGS"
|
||||||
for ac_arg dnl
|
for ac_arg dnl
|
||||||
in "-pedantic -Werror % m4_ifval($2,$2,-option)" dnl GCC
|
in "-pedantic % m4_ifval($2,$2,-option)" dnl GCC
|
||||||
"-pedantic % m4_ifval($2,$2,-option) %% no, obsolete" dnl new GCC
|
|
||||||
#
|
#
|
||||||
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
||||||
AC_TRY_COMPILE([],[return 0;],
|
AC_TRY_COMPILE([],[return 0;],
|
||||||
@@ -163,8 +122,7 @@ VAR,[VAR="no, unknown"
|
|||||||
AC_LANG_C
|
AC_LANG_C
|
||||||
ac_save_[]FLAGS="$[]FLAGS"
|
ac_save_[]FLAGS="$[]FLAGS"
|
||||||
for ac_arg dnl
|
for ac_arg dnl
|
||||||
in "-pedantic -Werror % m4_ifval($1,$1,-option)" dnl GCC
|
in "-pedantic % m4_ifval($1,$1,-option)" dnl GCC
|
||||||
"-pedantic % m4_ifval($1,$1,-option) %% no, obsolete" dnl new GCC
|
|
||||||
#
|
#
|
||||||
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
||||||
AC_TRY_COMPILE([],[return 0;],
|
AC_TRY_COMPILE([],[return 0;],
|
||||||
@@ -196,11 +154,10 @@ AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_gcc_option_$1])dnl
|
|||||||
AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)],
|
AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)],
|
||||||
VAR,[VAR="no, unknown"
|
VAR,[VAR="no, unknown"
|
||||||
AC_LANG_SAVE
|
AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CXX
|
||||||
ac_save_[]FLAGS="$[]FLAGS"
|
ac_save_[]FLAGS="$[]FLAGS"
|
||||||
for ac_arg dnl
|
for ac_arg dnl
|
||||||
in "-pedantic -Werror % m4_ifval($1,$1,-option)" dnl GCC
|
in "-pedantic % m4_ifval($1,$1,-option)" dnl GCC
|
||||||
"-pedantic % m4_ifval($1,$1,-option) %% no, obsolete" dnl new GCC
|
|
||||||
#
|
#
|
||||||
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
||||||
AC_TRY_COMPILE([],[return 0;],
|
AC_TRY_COMPILE([],[return 0;],
|
||||||
|
|||||||
@@ -1,66 +1,27 @@
|
|||||||
##### http://autoconf-archive.cryp.to/ax_cflags_warn_all.html
|
dnl @synopsis AX_CFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])]
|
||||||
#
|
dnl
|
||||||
# SYNOPSIS
|
dnl Try to find a compiler option that enables most reasonable
|
||||||
#
|
dnl warnings. This macro is directly derived from VL_PROG_CC_WARNINGS
|
||||||
# AX_CFLAGS_WARN_ALL [(shellvar [,default, [A/NA]])]
|
dnl which is split up into two AX_CFLAGS_WARN_ALL and
|
||||||
#
|
dnl AX_CFLAGS_WARN_ALL_ANSI
|
||||||
# DESCRIPTION
|
dnl
|
||||||
#
|
dnl For the GNU CC compiler it will be -Wall (and -ansi -pedantic) The
|
||||||
# Try to find a compiler option that enables most reasonable
|
dnl result is added to the shellvar being CFLAGS by default.
|
||||||
# warnings. This macro is directly derived from VL_PROG_CC_WARNINGS
|
dnl
|
||||||
# which is split up into two AX_CFLAGS_WARN_ALL and
|
dnl Currently this macro knows about GCC, Solaris C compiler, Digital
|
||||||
# AX_CFLAGS_WARN_ALL_ANSI
|
dnl Unix C compiler, C for AIX Compiler, HP-UX C compiler, IRIX C
|
||||||
#
|
dnl compiler, NEC SX-5 (Super-UX 10) C compiler, and Cray J90 (Unicos
|
||||||
# For the GNU CC compiler it will be -Wall (and -ansi -pedantic) The
|
dnl 10.0.0.8) C compiler.
|
||||||
# result is added to the shellvar being CFLAGS by default.
|
dnl
|
||||||
#
|
dnl - $1 shell-variable-to-add-to : CFLAGS
|
||||||
# Currently this macro knows about GCC, Solaris C compiler, Digital
|
dnl - $2 add-value-if-not-found : nothing
|
||||||
# Unix C compiler, C for AIX Compiler, HP-UX C compiler, IRIX C
|
dnl - $3 action-if-found : add value to shellvariable
|
||||||
# compiler, NEC SX-5 (Super-UX 10) C compiler, and Cray J90 (Unicos
|
dnl - $4 action-if-not-found : nothing
|
||||||
# 10.0.0.8) C compiler.
|
dnl
|
||||||
#
|
dnl @category C
|
||||||
# - $1 shell-variable-to-add-to : CFLAGS
|
dnl @author Guido Draheim <guidod@gmx.de>
|
||||||
# - $2 add-value-if-not-found : nothing
|
dnl @version 2003-01-06
|
||||||
# - $3 action-if-found : add value to shellvariable
|
dnl @license GPLWithACException
|
||||||
# - $4 action-if-not-found : nothing
|
|
||||||
#
|
|
||||||
# LAST MODIFICATION
|
|
||||||
#
|
|
||||||
# 2006-12-12
|
|
||||||
#
|
|
||||||
# COPYLEFT
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006 Guido U. Draheim <guidod@gmx.de>
|
|
||||||
#
|
|
||||||
# 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., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
# 02111-1307, USA.
|
|
||||||
#
|
|
||||||
# As a special exception, the respective Autoconf Macro's copyright
|
|
||||||
# owner gives unlimited permission to copy, distribute and modify the
|
|
||||||
# configure scripts that are the output of Autoconf when processing
|
|
||||||
# the Macro. You need not follow the terms of the GNU General Public
|
|
||||||
# License when using or distributing such scripts, even though
|
|
||||||
# portions of the text of the Macro appear in them. The GNU General
|
|
||||||
# Public License (GPL) does govern all other use of the material that
|
|
||||||
# constitutes the Autoconf Macro.
|
|
||||||
#
|
|
||||||
# This special exception to the GPL applies to versions of the
|
|
||||||
# Autoconf Macro released by the Autoconf Macro Archive. When you
|
|
||||||
# make and distribute a modified version of the Autoconf Macro, you
|
|
||||||
# may extend this special exception to the GPL to apply to your
|
|
||||||
# modified version as well.
|
|
||||||
|
|
||||||
AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl
|
AC_DEFUN([AX_CFLAGS_WARN_ALL],[dnl
|
||||||
AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl
|
AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl
|
||||||
@@ -111,7 +72,7 @@ AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_warn_all])dnl
|
|||||||
AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings],
|
AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum warnings],
|
||||||
VAR,[VAR="no, unknown"
|
VAR,[VAR="no, unknown"
|
||||||
AC_LANG_SAVE
|
AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CXX
|
||||||
ac_save_[]FLAGS="$[]FLAGS"
|
ac_save_[]FLAGS="$[]FLAGS"
|
||||||
for ac_arg dnl
|
for ac_arg dnl
|
||||||
in "-pedantic % -Wall" dnl GCC
|
in "-pedantic % -Wall" dnl GCC
|
||||||
@@ -154,5 +115,4 @@ dnl compilers will fail about it. That was needed since a lot of
|
|||||||
dnl compilers will give false positives for some option-syntax
|
dnl compilers will give false positives for some option-syntax
|
||||||
dnl like -Woption or -Xoption as they think of it is a pass-through
|
dnl like -Woption or -Xoption as they think of it is a pass-through
|
||||||
dnl to later compile stages or something. The "%" is used as a
|
dnl to later compile stages or something. The "%" is used as a
|
||||||
dnl delimimiter. A non-option comment can be given after "%%" marks
|
dnl delimimiter. A non-option comment can be given after "%%" marks.
|
||||||
dnl which will be shown but not added to the respective C/CXXFLAGS.
|
|
||||||
|
|||||||
@@ -1,66 +1,27 @@
|
|||||||
##### http://autoconf-archive.cryp.to/ax_cflags_warn_all_ansi.html
|
dnl @synopsis AX_CFLAGS_WARN_ALL_ANSI [(shellvar [,default, [A/NA]])]
|
||||||
#
|
dnl
|
||||||
# SYNOPSIS
|
dnl Try to find a compiler option that enables most reasonable
|
||||||
#
|
dnl warnings. This macro is directly derived from VL_PROG_CC_WARNINGS
|
||||||
# AX_CFLAGS_WARN_ALL_ANSI [(shellvar [,default, [A/NA]])]
|
dnl which is split up into two AX_CFLAGS_WARN_ALL and
|
||||||
#
|
dnl AX_CFLAGS_WARN_ALL_ANSI
|
||||||
# DESCRIPTION
|
dnl
|
||||||
#
|
dnl For the GNU CC compiler it will be -Wall (and -ansi -pedantic) The
|
||||||
# Try to find a compiler option that enables most reasonable
|
dnl result is added to the shellvar being CFLAGS by default.
|
||||||
# warnings. This macro is directly derived from VL_PROG_CC_WARNINGS
|
dnl
|
||||||
# which is split up into two AX_CFLAGS_WARN_ALL and
|
dnl Currently this macro knows about GCC, Solaris C compiler, Digital
|
||||||
# AX_CFLAGS_WARN_ALL_ANSI
|
dnl Unix C compiler, C for AIX Compiler, HP-UX C compiler, IRIX C
|
||||||
#
|
dnl compiler, NEC SX-5 (Super-UX 10) C compiler, and Cray J90 (Unicos
|
||||||
# For the GNU CC compiler it will be -Wall (and -ansi -pedantic) The
|
dnl 10.0.0.8) C compiler.
|
||||||
# result is added to the shellvar being CFLAGS by default.
|
dnl
|
||||||
#
|
dnl - $1 shell-variable-to-add-to : CFLAGS
|
||||||
# Currently this macro knows about GCC, Solaris C compiler, Digital
|
dnl - $2 add-value-if-not-found : nothing
|
||||||
# Unix C compiler, C for AIX Compiler, HP-UX C compiler, IRIX C
|
dnl - $3 action-if-found : add value to shellvariable
|
||||||
# compiler, NEC SX-5 (Super-UX 10) C compiler, and Cray J90 (Unicos
|
dnl - $4 action-if-not-found : nothing
|
||||||
# 10.0.0.8) C compiler.
|
dnl
|
||||||
#
|
dnl @category C
|
||||||
# - $1 shell-variable-to-add-to : CFLAGS
|
dnl @author Guido Draheim <guidod@gmx.de>
|
||||||
# - $2 add-value-if-not-found : nothing
|
dnl @version 2003-01-06
|
||||||
# - $3 action-if-found : add value to shellvariable
|
dnl @license GPLWithACException
|
||||||
# - $4 action-if-not-found : nothing
|
|
||||||
#
|
|
||||||
# LAST MODIFICATION
|
|
||||||
#
|
|
||||||
# 2006-12-12
|
|
||||||
#
|
|
||||||
# COPYLEFT
|
|
||||||
#
|
|
||||||
# Copyright (c) 2006 Guido U. Draheim <guidod@gmx.de>
|
|
||||||
#
|
|
||||||
# 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., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
# 02111-1307, USA.
|
|
||||||
#
|
|
||||||
# As a special exception, the respective Autoconf Macro's copyright
|
|
||||||
# owner gives unlimited permission to copy, distribute and modify the
|
|
||||||
# configure scripts that are the output of Autoconf when processing
|
|
||||||
# the Macro. You need not follow the terms of the GNU General Public
|
|
||||||
# License when using or distributing such scripts, even though
|
|
||||||
# portions of the text of the Macro appear in them. The GNU General
|
|
||||||
# Public License (GPL) does govern all other use of the material that
|
|
||||||
# constitutes the Autoconf Macro.
|
|
||||||
#
|
|
||||||
# This special exception to the GPL applies to versions of the
|
|
||||||
# Autoconf Macro released by the Autoconf Macro Archive. When you
|
|
||||||
# make and distribute a modified version of the Autoconf Macro, you
|
|
||||||
# may extend this special exception to the GPL to apply to your
|
|
||||||
# modified version as well.
|
|
||||||
|
|
||||||
AC_DEFUN([AX_CFLAGS_WARN_ALL_ANSI],[dnl
|
AC_DEFUN([AX_CFLAGS_WARN_ALL_ANSI],[dnl
|
||||||
AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl
|
AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl
|
||||||
@@ -116,7 +77,7 @@ AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_warn_all_ansi])dnl
|
|||||||
AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum ansi warnings],
|
AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum ansi warnings],
|
||||||
VAR,[VAR="no, unknown"
|
VAR,[VAR="no, unknown"
|
||||||
AC_LANG_SAVE
|
AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG_CXX
|
||||||
ac_save_[]FLAGS="$[]FLAGS"
|
ac_save_[]FLAGS="$[]FLAGS"
|
||||||
# IRIX C compiler:
|
# IRIX C compiler:
|
||||||
# -use_readonly_const is the default for IRIX C,
|
# -use_readonly_const is the default for IRIX C,
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ AC_DEFUN([RT_BOOL_ARG_ENABLE],[
|
|||||||
)])
|
)])
|
||||||
test "x$enable_[$1]" != [x]m4_if([$2],[yes],[no],[yes]) dnl
|
test "x$enable_[$1]" != [x]m4_if([$2],[yes],[no],[yes]) dnl
|
||||||
&& enable_[]Name=[$2]
|
&& enable_[]Name=[$2]
|
||||||
AC_MSG_RESULT($enable_[]Name)
|
AC_MSG_RESULT($enable_[]Name)dnl
|
||||||
AM_CONDITIONAL([ENABLE_]NAME, test x"$enable_[]Name" = xyes)
|
AM_CONDITIONAL([ENABLE_]NAME, test x"$enable_[]Name" = xyes)
|
||||||
dnl
|
dnl
|
||||||
m4_popdef([NAME])dnl
|
m4_popdef([NAME])dnl
|
||||||
|
|||||||
@@ -1,52 +1,13 @@
|
|||||||
##### http://autoconf-archive.cryp.to/type_socklen_t.html
|
dnl @synopsis TYPE_SOCKLEN_T
|
||||||
#
|
dnl
|
||||||
# SYNOPSIS
|
dnl Check whether sys/socket.h defines type socklen_t. Please note that
|
||||||
#
|
dnl some systems require sys/types.h to be included before sys/socket.h
|
||||||
# TYPE_SOCKLEN_T
|
dnl can be compiled.
|
||||||
#
|
dnl
|
||||||
# DESCRIPTION
|
dnl @category Misc
|
||||||
#
|
dnl @author Lars Brinkhoff <lars@nocrew.org>
|
||||||
# Check whether sys/socket.h defines type socklen_t. Please note that
|
dnl @version 2005-01-11
|
||||||
# some systems require sys/types.h to be included before sys/socket.h
|
dnl @license GPLWithACException
|
||||||
# can be compiled.
|
|
||||||
#
|
|
||||||
# LAST MODIFICATION
|
|
||||||
#
|
|
||||||
# 2005-01-11
|
|
||||||
#
|
|
||||||
# COPYLEFT
|
|
||||||
#
|
|
||||||
# Copyright (c) 2005 Lars Brinkhoff <lars@nocrew.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., 59 Temple Place - Suite 330, Boston, MA
|
|
||||||
# 02111-1307, USA.
|
|
||||||
#
|
|
||||||
# As a special exception, the respective Autoconf Macro's copyright
|
|
||||||
# owner gives unlimited permission to copy, distribute and modify the
|
|
||||||
# configure scripts that are the output of Autoconf when processing
|
|
||||||
# the Macro. You need not follow the terms of the GNU General Public
|
|
||||||
# License when using or distributing such scripts, even though
|
|
||||||
# portions of the text of the Macro appear in them. The GNU General
|
|
||||||
# Public License (GPL) does govern all other use of the material that
|
|
||||||
# constitutes the Autoconf Macro.
|
|
||||||
#
|
|
||||||
# This special exception to the GPL applies to versions of the
|
|
||||||
# Autoconf Macro released by the Autoconf Macro Archive. When you
|
|
||||||
# make and distribute a modified version of the Autoconf Macro, you
|
|
||||||
# may extend this special exception to the GPL to apply to your
|
|
||||||
# modified version as well.
|
|
||||||
|
|
||||||
AC_DEFUN([TYPE_SOCKLEN_T],
|
AC_DEFUN([TYPE_SOCKLEN_T],
|
||||||
[AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t,
|
[AC_CACHE_CHECK([for socklen_t], ac_cv_type_socklen_t,
|
||||||
|
|||||||
14
svnignore
14
svnignore
@@ -1,14 +0,0 @@
|
|||||||
.deps
|
|
||||||
.dirstamp
|
|
||||||
.libs
|
|
||||||
.*.swp
|
|
||||||
*~
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
aclocal.m4
|
|
||||||
autoconfig.h*
|
|
||||||
autom4te.cache
|
|
||||||
config*
|
|
||||||
libtool
|
|
||||||
libupnp.pc
|
|
||||||
stamp-h*
|
|
||||||
@@ -6,6 +6,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
AM_CPPFLAGS = -I$(srcdir)/inc -I$(srcdir)/src/inc
|
AM_CPPFLAGS = -I$(srcdir)/inc -I$(srcdir)/src/inc
|
||||||
|
AM_CFLAGS = $(PTHREAD_CFLAGS)
|
||||||
|
|
||||||
if ENABLE_DEBUG
|
if ENABLE_DEBUG
|
||||||
AM_CPPFLAGS += -DDEBUG -DSTATS
|
AM_CPPFLAGS += -DDEBUG -DSTATS
|
||||||
@@ -20,11 +21,12 @@ libthreadutil_la_LDFLAGS = -version-info $(LT_VERSION_THREADUTIL)
|
|||||||
|
|
||||||
libthreadutil_la_SOURCES = \
|
libthreadutil_la_SOURCES = \
|
||||||
src/FreeList.c src/LinkedList.c \
|
src/FreeList.c src/LinkedList.c \
|
||||||
src/ThreadPool.c src/TimerThread.c
|
src/ThreadPool.c src/TimerThread.c \
|
||||||
|
src/iasnprintf.c
|
||||||
|
|
||||||
upnpincludedir = $(includedir)/upnp
|
upnpincludedir = $(includedir)/upnp
|
||||||
upnpinclude_HEADERS = \
|
upnpinclude_HEADERS = \
|
||||||
inc/FreeList.h inc/LinkedList.h \
|
inc/FreeList.h inc/LinkedList.h \
|
||||||
inc/ThreadPool.h inc/TimerThread.h \
|
inc/ThreadPool.h inc/TimerThread.h \
|
||||||
inc/ithread.h
|
inc/iasnprintf.h inc/ithread.h
|
||||||
|
|
||||||
|
|||||||
@@ -1,52 +1,45 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* * Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* * Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#ifndef FREE_LIST_H
|
#ifndef FREE_LIST_H
|
||||||
#define FREE_LIST_H
|
#define FREE_LIST_H
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//#include <malloc.h>
|
||||||
|
|
||||||
|
|
||||||
#include "ithread.h"
|
#include "ithread.h"
|
||||||
|
|
||||||
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@@ -59,7 +52,7 @@ extern "C" {
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
typedef struct FREELISTNODE
|
typedef struct FREELISTNODE
|
||||||
{
|
{
|
||||||
struct FREELISTNODE *next;
|
struct FREELISTNODE*next; //pointer to next free node
|
||||||
} FreeListNode;
|
} FreeListNode;
|
||||||
|
|
||||||
|
|
||||||
@@ -72,10 +65,12 @@ typedef struct FREELISTNODE
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
typedef struct FREELIST
|
typedef struct FREELIST
|
||||||
{
|
{
|
||||||
FreeListNode *head;
|
FreeListNode *head; //head of free list
|
||||||
size_t element_size;
|
size_t element_size; //size of elements in free
|
||||||
int maxFreeListLength;
|
//list
|
||||||
int freeListLength;
|
int maxFreeListLength; //max size of free structures
|
||||||
|
//to keep
|
||||||
|
int freeListLength; //current size of free list
|
||||||
|
|
||||||
}FreeList;
|
}FreeList;
|
||||||
|
|
||||||
@@ -146,5 +141,4 @@ int FreeListDestroy (FreeList *free_list);
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* FREE_LIST_H */
|
#endif // FREE_LIST_H
|
||||||
|
|
||||||
|
|||||||
@@ -1,60 +1,49 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* * Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* * Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#ifndef LINKED_LIST_H
|
#ifndef LINKED_LIST_H
|
||||||
#define LINKED_LIST_H
|
#define LINKED_LIST_H
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "FreeList.h"
|
#include "FreeList.h"
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define EOUTOFMEM (-7 & 1<<29)
|
#define EOUTOFMEM (-7 & 1<<29)
|
||||||
|
|
||||||
|
|
||||||
#define FREELISTSIZE 100
|
#define FREELISTSIZE 100
|
||||||
#define LIST_SUCCESS 1
|
#define LIST_SUCCESS 1
|
||||||
#define LIST_FAIL 0
|
#define LIST_FAIL 0
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: free_routine
|
* Name: free_routine
|
||||||
*
|
*
|
||||||
@@ -63,7 +52,6 @@ extern "C" {
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
typedef void (*free_function)(void *arg);
|
typedef void (*free_function)(void *arg);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: cmp_routine
|
* Name: cmp_routine
|
||||||
*
|
*
|
||||||
@@ -73,7 +61,6 @@ typedef void (*free_function)(void *arg);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
typedef int (*cmp_routine)(void *itemA,void *itemB);
|
typedef int (*cmp_routine)(void *itemA,void *itemB);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: ListNode
|
* Name: ListNode
|
||||||
*
|
*
|
||||||
@@ -83,12 +70,11 @@ typedef int (*cmp_routine)(void *itemA,void *itemB);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
typedef struct LISTNODE
|
typedef struct LISTNODE
|
||||||
{
|
{
|
||||||
struct LISTNODE *prev;
|
struct LISTNODE *prev; //previous node
|
||||||
struct LISTNODE *next;
|
struct LISTNODE *next; //next node
|
||||||
void *item;
|
void *item; //item
|
||||||
} ListNode;
|
} ListNode;
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: LinkedList
|
* Name: LinkedList
|
||||||
*
|
*
|
||||||
@@ -110,15 +96,14 @@ typedef struct LISTNODE
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
typedef struct LINKEDLIST
|
typedef struct LINKEDLIST
|
||||||
{
|
{
|
||||||
ListNode head; /* head, first item is stored at: head->next */
|
ListNode head; //head, first item is stored at: head->next
|
||||||
ListNode tail; /* tail, last item is stored at: tail->prev */
|
ListNode tail; //tail, last item is stored at: tail->prev
|
||||||
long size; /* size of list */
|
long size; //size of list
|
||||||
FreeList freeNodeList; /* free list to use */
|
FreeList freeNodeList; //free list to use
|
||||||
free_function free_func; /* free function to use */
|
free_function free_func; //free function to use
|
||||||
cmp_routine cmp_func; /* compare function to use */
|
cmp_routine cmp_func; //compare function to use
|
||||||
} LinkedList;
|
} LinkedList;
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ListInit
|
* Function: ListInit
|
||||||
*
|
*
|
||||||
@@ -134,7 +119,6 @@ typedef struct LINKEDLIST
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int ListInit(LinkedList *list,cmp_routine cmp_func, free_function free_func);
|
int ListInit(LinkedList *list,cmp_routine cmp_func, free_function free_func);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ListAddHead
|
* Function: ListAddHead
|
||||||
*
|
*
|
||||||
@@ -151,7 +135,6 @@ int ListInit(LinkedList *list,cmp_routine cmp_func, free_function free_func);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
ListNode *ListAddHead(LinkedList *list, void *item);
|
ListNode *ListAddHead(LinkedList *list, void *item);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ListAddTail
|
* Function: ListAddTail
|
||||||
*
|
*
|
||||||
@@ -168,7 +151,6 @@ ListNode *ListAddHead(LinkedList *list, void *item);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
ListNode *ListAddTail(LinkedList *list, void *item);
|
ListNode *ListAddTail(LinkedList *list, void *item);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ListAddAfter
|
* Function: ListAddAfter
|
||||||
*
|
*
|
||||||
@@ -223,7 +205,6 @@ ListNode *ListAddBefore(LinkedList *list,void *item, ListNode *anode);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
void *ListDelNode(LinkedList *list,ListNode *dnode, int freeItem);
|
void *ListDelNode(LinkedList *list,ListNode *dnode, int freeItem);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ListDestroy
|
* Function: ListDestroy
|
||||||
*
|
*
|
||||||
@@ -259,7 +240,6 @@ int ListDestroy(LinkedList *list, int freeItem);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
ListNode* ListHead(LinkedList *list);
|
ListNode* ListHead(LinkedList *list);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ListTail
|
* Function: ListTail
|
||||||
*
|
*
|
||||||
@@ -276,7 +256,6 @@ ListNode* ListHead(LinkedList *list);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
ListNode* ListTail(LinkedList *list);
|
ListNode* ListTail(LinkedList *list);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ListNext
|
* Function: ListNext
|
||||||
*
|
*
|
||||||
@@ -293,7 +272,6 @@ ListNode* ListTail(LinkedList *list);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
ListNode* ListNext(LinkedList *list, ListNode * node);
|
ListNode* ListNext(LinkedList *list, ListNode * node);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ListPrev
|
* Function: ListPrev
|
||||||
*
|
*
|
||||||
@@ -310,7 +288,6 @@ ListNode* ListNext(LinkedList *list, ListNode * node);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
ListNode* ListPrev(LinkedList *list, ListNode * node);
|
ListNode* ListPrev(LinkedList *list, ListNode * node);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ListFind
|
* Function: ListFind
|
||||||
*
|
*
|
||||||
@@ -330,7 +307,6 @@ ListNode* ListPrev(LinkedList *list, ListNode * node);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
ListNode* ListFind(LinkedList *list, ListNode *start, void * item);
|
ListNode* ListFind(LinkedList *list, ListNode *start, void * item);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ListSize
|
* Function: ListSize
|
||||||
*
|
*
|
||||||
@@ -351,5 +327,4 @@ int ListSize(LinkedList* list);
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* LINKED_LIST_H */
|
#endif //LINKED_LIST_H
|
||||||
|
|
||||||
|
|||||||
@@ -1,162 +1,106 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* * Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* * Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#ifndef THREADPOOL_H
|
#ifndef THREADPOOL_H
|
||||||
#define THREADPOOL_H
|
#define THREADPOOL_H
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "FreeList.h"
|
|
||||||
#include "ithread.h"
|
|
||||||
#include "LinkedList.h"
|
|
||||||
#include "UpnpInet.h"
|
|
||||||
#include "UpnpGlobal.h" /* for UPNP_INLINE, EXPORT_SPEC */
|
|
||||||
|
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
#include <time.h>
|
|
||||||
struct timezone
|
|
||||||
{
|
|
||||||
int tz_minuteswest; /* minutes W of Greenwich */
|
|
||||||
int tz_dsttime; /* type of dst correction */
|
|
||||||
};
|
|
||||||
int gettimeofday(struct timeval *tv, struct timezone *tz);
|
|
||||||
#else /* WIN32 */
|
|
||||||
#include <sys/param.h>
|
|
||||||
#include <sys/time.h> /* for gettimeofday() */
|
|
||||||
#if defined(__OSX__) || defined(__APPLE__) || defined(__NetBSD__)
|
|
||||||
#include <sys/resource.h> /* for setpriority() */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//Size of job free list
|
||||||
/*! Size of job free list */
|
|
||||||
#define JOBFREELISTSIZE 100
|
#define JOBFREELISTSIZE 100
|
||||||
|
|
||||||
|
|
||||||
#define INFINITE_THREADS -1
|
#define INFINITE_THREADS -1
|
||||||
|
|
||||||
|
|
||||||
#define EMAXTHREADS (-8 & 1<<29)
|
#define EMAXTHREADS (-8 & 1<<29)
|
||||||
|
|
||||||
|
//Invalid Policy
|
||||||
/*! Invalid Policy */
|
|
||||||
#define INVALID_POLICY (-9 & 1<<29)
|
#define INVALID_POLICY (-9 & 1<<29)
|
||||||
|
|
||||||
|
//Invalid JOB Id
|
||||||
/*! Invalid JOB Id */
|
|
||||||
#define INVALID_JOB_ID (-2 & 1<<29)
|
#define INVALID_JOB_ID (-2 & 1<<29)
|
||||||
|
|
||||||
|
typedef enum duration {SHORT_TERM,PERSISTENT} Duration;
|
||||||
|
|
||||||
typedef enum duration {
|
typedef enum priority {LOW_PRIORITY,
|
||||||
SHORT_TERM,
|
|
||||||
PERSISTENT
|
|
||||||
} Duration;
|
|
||||||
|
|
||||||
|
|
||||||
typedef enum priority {
|
|
||||||
LOW_PRIORITY,
|
|
||||||
MED_PRIORITY,
|
MED_PRIORITY,
|
||||||
HIGH_PRIORITY
|
HIGH_PRIORITY} ThreadPriority;
|
||||||
} ThreadPriority;
|
|
||||||
|
#define DEFAULT_PRIORITY MED_PRIORITY //default priority used by TPJobInit
|
||||||
|
#define DEFAULT_MIN_THREADS 1 //default minimum used by TPAttrInit
|
||||||
|
#define DEFAULT_MAX_THREADS 10 //default max used by TPAttrInit
|
||||||
|
#define DEFAULT_JOBS_PER_THREAD 10 //default jobs per thread used by TPAttrInit
|
||||||
|
#define DEFAULT_STARVATION_TIME 500 //default starvation time used by TPAttrInit
|
||||||
|
#define DEFAULT_IDLE_TIME 10 * 1000 //default idle time used by TPAttrInit
|
||||||
|
#define DEFAULT_FREE_ROUTINE NULL //default free routine used TPJobInit
|
||||||
|
|
||||||
|
#define STATS 1 //always include stats because code change is minimal
|
||||||
|
|
||||||
|
|
||||||
/*! default priority used by TPJobInit */
|
//Statistics
|
||||||
#define DEFAULT_PRIORITY MED_PRIORITY
|
#ifdef WIN32 // todo: check why STATSONLY fails during compilation
|
||||||
|
#undef STATS
|
||||||
|
#endif
|
||||||
/*! default minimum used by TPAttrInit */
|
|
||||||
#define DEFAULT_MIN_THREADS 1
|
|
||||||
|
|
||||||
|
|
||||||
/*! default max used by TPAttrInit */
|
|
||||||
#define DEFAULT_MAX_THREADS 10
|
|
||||||
|
|
||||||
|
|
||||||
/*! default jobs per thread used by TPAttrInit */
|
|
||||||
#define DEFAULT_JOBS_PER_THREAD 10
|
|
||||||
|
|
||||||
|
|
||||||
/*! default starvation time used by TPAttrInit */
|
|
||||||
#define DEFAULT_STARVATION_TIME 500
|
|
||||||
|
|
||||||
|
|
||||||
/*! default idle time used by TPAttrInit */
|
|
||||||
#define DEFAULT_IDLE_TIME 10 * 1000
|
|
||||||
|
|
||||||
|
|
||||||
/*! default free routine used TPJobInit */
|
|
||||||
#define DEFAULT_FREE_ROUTINE NULL
|
|
||||||
|
|
||||||
|
|
||||||
/*! default max jobs used TPAttrInit */
|
|
||||||
#define DEFAULT_MAX_JOBS_TOTAL 100
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Statistics.
|
|
||||||
*
|
|
||||||
* Always include stats because code change is minimal.
|
|
||||||
*/
|
|
||||||
#define STATS 1
|
|
||||||
|
|
||||||
|
#ifdef STATS
|
||||||
|
#define STATSONLY(x) x
|
||||||
|
#else
|
||||||
|
#define STATSONLY(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
#define DEBUG 1
|
#define DEBUG 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//DEBUGGING
|
||||||
|
#ifndef WIN32
|
||||||
|
#ifdef DEBUG
|
||||||
|
#define DBGONLY(x) x
|
||||||
|
#else
|
||||||
|
#define DBGONLY(x)
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "LinkedList.h"
|
||||||
|
#include <sys/timeb.h>
|
||||||
|
#include "FreeList.h"
|
||||||
|
|
||||||
|
#include "ithread.h"
|
||||||
|
#include <errno.h>
|
||||||
|
#include <sys/timeb.h>
|
||||||
|
#define EXPORT
|
||||||
typedef int PolicyType;
|
typedef int PolicyType;
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_POLICY SCHED_OTHER
|
#define DEFAULT_POLICY SCHED_OTHER
|
||||||
|
#define DEFAULT_SCHED_PARAM 0 //default priority
|
||||||
|
|
||||||
/*! Default priority */
|
|
||||||
#define DEFAULT_SCHED_PARAM 0
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: free_routine
|
* Name: free_routine
|
||||||
@@ -166,7 +110,6 @@ typedef int PolicyType;
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
typedef void (*free_routine)(void *arg);
|
typedef void (*free_routine)(void *arg);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: ThreadPoolAttr
|
* Name: ThreadPoolAttr
|
||||||
*
|
*
|
||||||
@@ -176,31 +119,26 @@ typedef void (*free_routine)(void *arg);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
typedef struct THREADPOOLATTR
|
typedef struct THREADPOOLATTR
|
||||||
{
|
{
|
||||||
/* minThreads, ThreadPool will always maintain at least this many threads */
|
int minThreads; //minThreads, ThreadPool will always maintain at least
|
||||||
int minThreads;
|
//this many threads
|
||||||
|
|
||||||
/* maxThreads, ThreadPool will never have more than this number of threads */
|
int maxThreads; //maxThreads, ThreadPool will never have more than this
|
||||||
int maxThreads;
|
//number of threads
|
||||||
|
|
||||||
/* maxIdleTime (in milliseconds) this is the maximum time a thread will
|
int maxIdleTime; //maxIdleTime (in milliseconds)
|
||||||
* remain idle before dying */
|
// this is the maximum time a thread will remain idle
|
||||||
int maxIdleTime;
|
// before dying
|
||||||
|
|
||||||
/* jobs per thread to maintain */
|
int jobsPerThread; //jobs per thread to maintain
|
||||||
int jobsPerThread;
|
|
||||||
|
|
||||||
/* maximum number of jobs that can be queued totally. */
|
int starvationTime; //the time a low priority or med priority
|
||||||
int maxJobsTotal;
|
//job waits before getting bumped
|
||||||
|
//up a priority (in milliseconds)
|
||||||
|
|
||||||
/* the time a low priority or med priority job waits before getting bumped
|
PolicyType schedPolicy; //scheduling policy to use
|
||||||
* up a priority (in milliseconds) */
|
|
||||||
int starvationTime;
|
|
||||||
|
|
||||||
/* scheduling policy to use */
|
|
||||||
PolicyType schedPolicy;
|
|
||||||
} ThreadPoolAttr;
|
} ThreadPoolAttr;
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: ThreadPool
|
* Name: ThreadPool
|
||||||
*
|
*
|
||||||
@@ -209,51 +147,58 @@ typedef struct THREADPOOLATTR
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
typedef struct THREADPOOLJOB
|
typedef struct THREADPOOLJOB
|
||||||
{
|
{
|
||||||
start_routine func;
|
start_routine func; //function
|
||||||
void *arg;
|
void *arg; //arg
|
||||||
free_routine free_func;
|
free_routine free_func; //free function
|
||||||
struct timeval requestTime;
|
struct timeb requestTime; //time of request
|
||||||
int priority;
|
int priority; //priority of request
|
||||||
int jobId;
|
int jobId; //id
|
||||||
} ThreadPoolJob;
|
} ThreadPoolJob;
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: ThreadPoolStats
|
* Name: ThreadPoolStats
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Structure to hold statistics
|
* Structure to hold statistics
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
|
STATSONLY(
|
||||||
|
|
||||||
typedef struct TPOOLSTATS
|
typedef struct TPOOLSTATS
|
||||||
{
|
{
|
||||||
double totalTimeHQ;
|
double totalTimeHQ; //total time spent by all jobs in high priority Q
|
||||||
int totalJobsHQ;
|
int totalJobsHQ; //total jobs in HQ run so far
|
||||||
double avgWaitHQ;
|
double avgWaitHQ; //average wait in HQ
|
||||||
double totalTimeMQ;
|
double totalTimeMQ; //total time spent by all jobs in med priority Q
|
||||||
int totalJobsMQ;
|
int totalJobsMQ; //total jobs in MQ run so far
|
||||||
double avgWaitMQ;
|
double avgWaitMQ; //average wait in MQ
|
||||||
double totalTimeLQ;
|
double totalTimeLQ; //total time spent by all jobs in low priority Q
|
||||||
int totalJobsLQ;
|
int totalJobsLQ; //total jobs in LQ run so far
|
||||||
double avgWaitLQ;
|
double avgWaitLQ; //average wait in LQ
|
||||||
double totalWorkTime;
|
double totalWorkTime; //total time spent working for all threads
|
||||||
double totalIdleTime;
|
double totalIdleTime; //total time spent idle for all threads
|
||||||
int workerThreads;
|
int workerThreads; //number of current workerThreads
|
||||||
int idleThreads;
|
int idleThreads; //number of current idle threads
|
||||||
int persistentThreads;
|
int persistentThreads; //number of persistent threads
|
||||||
int totalThreads;
|
int totalThreads; //total number of current threads
|
||||||
int maxThreads;
|
int maxThreads; //max threads so far
|
||||||
int currentJobsHQ;
|
int currentJobsHQ; // current jobs in Q
|
||||||
int currentJobsLQ;
|
int currentJobsLQ; //current jobs in Q
|
||||||
int currentJobsMQ;
|
int currentJobsMQ; //current jobs in Q
|
||||||
}ThreadPoolStats;
|
}ThreadPoolStats;
|
||||||
|
|
||||||
|
)
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief A thread pool similar to the thread pool in the UPnP SDK.
|
/****************************************************************************
|
||||||
|
* Name: ThreadPool
|
||||||
*
|
*
|
||||||
|
* Description:
|
||||||
|
* A thread pool similar to the thread pool in the UPnP SDK.
|
||||||
* Allows jobs to be scheduled for running by threads in a
|
* Allows jobs to be scheduled for running by threads in a
|
||||||
* thread pool. The thread pool is initialized with a
|
* thread pool. The thread pool is initialized with a
|
||||||
* minimum and maximum thread number as well as a max idle time
|
* minimum and maximum thread number as well as a
|
||||||
|
* max idle time
|
||||||
* and a jobs per thread ratio. If a worker thread waits the whole
|
* and a jobs per thread ratio. If a worker thread waits the whole
|
||||||
* max idle time without receiving a job and the thread pool
|
* max idle time without receiving a job and the thread pool
|
||||||
* currently has more threads running than the minimum
|
* currently has more threads running than the minimum
|
||||||
@@ -262,29 +207,34 @@ typedef struct TPOOLSTATS
|
|||||||
* becomes greater than the set ratio and the thread pool currently has
|
* becomes greater than the set ratio and the thread pool currently has
|
||||||
* less than the maximum threads then a new thread will
|
* less than the maximum threads then a new thread will
|
||||||
* be created.
|
* be created.
|
||||||
*/
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
typedef struct THREADPOOL
|
typedef struct THREADPOOL
|
||||||
{
|
{
|
||||||
ithread_mutex_t mutex; /* mutex to protect job qs */
|
ithread_mutex_t mutex; //mutex to protect job qs
|
||||||
ithread_cond_t condition; /* condition variable to signal Q */
|
ithread_cond_t condition; //condition variable to signal Q
|
||||||
ithread_cond_t start_and_shutdown; /* condition variable for start and stop */
|
ithread_cond_t start_and_shutdown; //condition variable for start
|
||||||
int lastJobId; /* ids for jobs */
|
//and stop
|
||||||
int shutdown; /* whether or not we are shutting down */
|
int lastJobId; //ids for jobs
|
||||||
int totalThreads; /* total number of threads */
|
int shutdown; //whether or not we are shutting down
|
||||||
int busyThreads; /* number of threads that are currently executing jobs */
|
int totalThreads; //total number of threads
|
||||||
int persistentThreads; /* number of persistent threads */
|
int persistentThreads; //number of persistent threads
|
||||||
FreeList jobFreeList; /* free list of jobs */
|
FreeList jobFreeList; //free list of jobs
|
||||||
LinkedList lowJobQ; /* low priority job Q */
|
LinkedList lowJobQ; //low priority job Q
|
||||||
LinkedList medJobQ; /* med priority job Q */
|
LinkedList medJobQ; //med priority job Q
|
||||||
LinkedList highJobQ; /* high priority job Q */
|
LinkedList highJobQ; //high priority job Q
|
||||||
ThreadPoolJob *persistentJob; /* persistent job */
|
ThreadPoolJob *persistentJob; //persistent job
|
||||||
ThreadPoolAttr attr; /* thread pool attributes */
|
|
||||||
|
ThreadPoolAttr attr; //thread pool attributes
|
||||||
|
|
||||||
|
//statistics
|
||||||
|
STATSONLY(ThreadPoolStats stats;)
|
||||||
|
|
||||||
/* statistics */
|
|
||||||
ThreadPoolStats stats;
|
|
||||||
} ThreadPool;
|
} ThreadPool;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ThreadPoolInit
|
* Function: ThreadPoolInit
|
||||||
*
|
*
|
||||||
@@ -321,8 +271,8 @@ typedef struct THREADPOOL
|
|||||||
* INVALID_POLICY if schedPolicy can't be set
|
* INVALID_POLICY if schedPolicy can't be set
|
||||||
* EMAXTHREADS if minimum threads is greater than maximum threads
|
* EMAXTHREADS if minimum threads is greater than maximum threads
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int ThreadPoolInit(ThreadPool *tp, ThreadPoolAttr *attr);
|
int ThreadPoolInit(ThreadPool *tp,
|
||||||
|
ThreadPoolAttr *attr);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ThreadPoolAddPersistent
|
* Function: ThreadPoolAddPersistent
|
||||||
@@ -344,8 +294,9 @@ int ThreadPoolInit(ThreadPool *tp, ThreadPoolAttr *attr);
|
|||||||
* EOUTOFMEM not enough memory to add job.
|
* EOUTOFMEM not enough memory to add job.
|
||||||
* EMAXTHREADS not enough threads to add persistent job.
|
* EMAXTHREADS not enough threads to add persistent job.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int ThreadPoolAddPersistent(ThreadPool*tp, ThreadPoolJob *job, int *jobId);
|
int ThreadPoolAddPersistent (ThreadPool*tp,
|
||||||
|
ThreadPoolJob *job,
|
||||||
|
int *jobId);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ThreadPoolGetAttr
|
* Function: ThreadPoolGetAttr
|
||||||
@@ -360,9 +311,8 @@ int ThreadPoolAddPersistent(ThreadPool*tp, ThreadPoolJob *job, int *jobId);
|
|||||||
* 0 on success, nonzero on failure
|
* 0 on success, nonzero on failure
|
||||||
* Always returns 0.
|
* Always returns 0.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int ThreadPoolGetAttr(ThreadPool *tp, ThreadPoolAttr *out);
|
int ThreadPoolGetAttr(ThreadPool *tp,
|
||||||
|
ThreadPoolAttr *out);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ThreadPoolSetAttr
|
* Function: ThreadPoolSetAttr
|
||||||
*
|
*
|
||||||
@@ -376,8 +326,8 @@ int ThreadPoolGetAttr(ThreadPool *tp, ThreadPoolAttr *out);
|
|||||||
* 0 on success, nonzero on failure
|
* 0 on success, nonzero on failure
|
||||||
* Returns INVALID_POLICY if policy can not be set.
|
* Returns INVALID_POLICY if policy can not be set.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int ThreadPoolSetAttr(ThreadPool *tp, ThreadPoolAttr *attr);
|
int ThreadPoolSetAttr(ThreadPool *tp,
|
||||||
|
ThreadPoolAttr *attr);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ThreadPoolAdd
|
* Function: ThreadPoolAdd
|
||||||
@@ -396,8 +346,9 @@ int ThreadPoolSetAttr(ThreadPool *tp, ThreadPoolAttr *attr);
|
|||||||
* 0 on success, nonzero on failure
|
* 0 on success, nonzero on failure
|
||||||
* EOUTOFMEM if not enough memory to add job.
|
* EOUTOFMEM if not enough memory to add job.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int ThreadPoolAdd (ThreadPool*tp, ThreadPoolJob *job, int *jobId);
|
int ThreadPoolAdd (ThreadPool*tp,
|
||||||
|
ThreadPoolJob *job,
|
||||||
|
int *jobId);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ThreadPoolRemove
|
* Function: ThreadPoolRemove
|
||||||
@@ -414,7 +365,8 @@ int ThreadPoolAdd (ThreadPool*tp, ThreadPoolJob *job, int *jobId);
|
|||||||
* 0 on success, nonzero on failure.
|
* 0 on success, nonzero on failure.
|
||||||
* INVALID_JOB_ID if job not found.
|
* INVALID_JOB_ID if job not found.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int ThreadPoolRemove(ThreadPool *tp, int jobId, ThreadPoolJob *out);
|
int ThreadPoolRemove(ThreadPool *tp,
|
||||||
|
int jobId, ThreadPoolJob *out);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -451,7 +403,6 @@ int ThreadPoolShutdown(ThreadPool *tp);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TPJobInit(ThreadPoolJob *job, start_routine func, void *arg);
|
int TPJobInit(ThreadPoolJob *job, start_routine func, void *arg);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: TPJobSetPriority
|
* Function: TPJobSetPriority
|
||||||
*
|
*
|
||||||
@@ -465,7 +416,6 @@ int TPJobInit(ThreadPoolJob *job, start_routine func, void *arg);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TPJobSetPriority(ThreadPoolJob *job, ThreadPriority priority);
|
int TPJobSetPriority(ThreadPoolJob *job, ThreadPriority priority);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: TPJobSetFreeFunction
|
* Function: TPJobSetFreeFunction
|
||||||
*
|
*
|
||||||
@@ -493,7 +443,6 @@ int TPJobSetFreeFunction(ThreadPoolJob *job, free_routine func);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TPAttrInit(ThreadPoolAttr *attr);
|
int TPAttrInit(ThreadPoolAttr *attr);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: TPAttrSetMaxThreads
|
* Function: TPAttrSetMaxThreads
|
||||||
*
|
*
|
||||||
@@ -507,7 +456,6 @@ int TPAttrInit(ThreadPoolAttr *attr);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TPAttrSetMaxThreads(ThreadPoolAttr *attr, int maxThreads);
|
int TPAttrSetMaxThreads(ThreadPoolAttr *attr, int maxThreads);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: TPAttrSetMinThreads
|
* Function: TPAttrSetMinThreads
|
||||||
*
|
*
|
||||||
@@ -521,7 +469,6 @@ int TPAttrSetMaxThreads(ThreadPoolAttr *attr, int maxThreads);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TPAttrSetMinThreads(ThreadPoolAttr *attr, int minThreads);
|
int TPAttrSetMinThreads(ThreadPoolAttr *attr, int minThreads);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: TPAttrSetIdleTime
|
* Function: TPAttrSetIdleTime
|
||||||
*
|
*
|
||||||
@@ -534,7 +481,6 @@ int TPAttrSetMinThreads(ThreadPoolAttr *attr, int minThreads);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TPAttrSetIdleTime(ThreadPoolAttr *attr, int idleTime);
|
int TPAttrSetIdleTime(ThreadPoolAttr *attr, int idleTime);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: TPAttrSetJobsPerThread
|
* Function: TPAttrSetJobsPerThread
|
||||||
*
|
*
|
||||||
@@ -548,7 +494,6 @@ int TPAttrSetIdleTime(ThreadPoolAttr *attr, int idleTime);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TPAttrSetJobsPerThread(ThreadPoolAttr *attr, int jobsPerThread);
|
int TPAttrSetJobsPerThread(ThreadPoolAttr *attr, int jobsPerThread);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: TPAttrSetStarvationTime
|
* Function: TPAttrSetStarvationTime
|
||||||
*
|
*
|
||||||
@@ -562,7 +507,6 @@ int TPAttrSetJobsPerThread(ThreadPoolAttr *attr, int jobsPerThread);
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TPAttrSetStarvationTime(ThreadPoolAttr *attr, int starvationTime);
|
int TPAttrSetStarvationTime(ThreadPoolAttr *attr, int starvationTime);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: TPAttrSetSchedPolicy
|
* Function: TPAttrSetSchedPolicy
|
||||||
*
|
*
|
||||||
@@ -577,20 +521,6 @@ int TPAttrSetStarvationTime(ThreadPoolAttr *attr, int starvationTime);
|
|||||||
int TPAttrSetSchedPolicy(ThreadPoolAttr *attr, PolicyType schedPolicy);
|
int TPAttrSetSchedPolicy(ThreadPoolAttr *attr, PolicyType schedPolicy);
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Function: TPAttrSetMaxJobsTotal
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Sets the maximum number jobs that can be qeued totally.
|
|
||||||
* Parameters:
|
|
||||||
* attr - must be valid thread pool attributes.
|
|
||||||
* maxJobsTotal - maximum number of jobs
|
|
||||||
* Returns:
|
|
||||||
* Always returns 0.
|
|
||||||
*****************************************************************************/
|
|
||||||
int TPAttrSetMaxJobsTotal(ThreadPoolAttr *attr, int maxJobsTotal);
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ThreadPoolGetStats
|
* Function: ThreadPoolGetStats
|
||||||
*
|
*
|
||||||
@@ -604,21 +534,12 @@ int TPAttrSetMaxJobsTotal(ThreadPoolAttr *attr, int maxJobsTotal);
|
|||||||
* Returns:
|
* Returns:
|
||||||
* Always returns 0.
|
* Always returns 0.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#ifdef STATS
|
STATSONLY( EXPORT int ThreadPoolGetStats(ThreadPool *tp, ThreadPoolStats *stats););
|
||||||
EXPORT_SPEC int ThreadPoolGetStats(ThreadPool *tp, ThreadPoolStats *stats);
|
|
||||||
|
|
||||||
EXPORT_SPEC void ThreadPoolPrintStats(ThreadPoolStats *stats);
|
|
||||||
#else
|
|
||||||
static UPNP_INLINE int ThreadPoolGetStats(ThreadPool *tp, ThreadPoolStats *stats) {}
|
|
||||||
|
|
||||||
static UPNP_INLINE void ThreadPoolPrintStats(ThreadPoolStats *stats) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
STATSONLY(EXPORT void ThreadPoolPrintStats(ThreadPoolStats *stats););
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif //ThreadPool
|
||||||
#endif /* THREADPOOL_H */
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,171 +1,191 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* * Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* * Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#ifndef TIMERTHREAD_H
|
#ifndef TIMERTHREAD_H
|
||||||
#define TIMERTHREAD_H
|
#define TIMERTHREAD_H
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "FreeList.h"
|
|
||||||
#include "ithread.h"
|
#include "ithread.h"
|
||||||
#include "LinkedList.h"
|
#include "LinkedList.h"
|
||||||
|
#include "FreeList.h"
|
||||||
#include "ThreadPool.h"
|
#include "ThreadPool.h"
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#define INVALID_EVENT_ID (-10 & 1<<29)
|
#define INVALID_EVENT_ID (-10 & 1<<29)
|
||||||
|
|
||||||
|
//Timeout Types
|
||||||
/* Timeout Types */
|
//absolute means in seconds from Jan 1, 1970
|
||||||
/* absolute means in seconds from Jan 1, 1970 */
|
//relative means in seconds from current time
|
||||||
/* relative means in seconds from current time */
|
|
||||||
typedef enum timeoutType {ABS_SEC,REL_SEC} TimeoutType;
|
typedef enum timeoutType {ABS_SEC,REL_SEC} TimeoutType;
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/****************************************************************************
|
||||||
* A timer thread similar to the one in the Upnp SDK that allows
|
* Name: TimerThread
|
||||||
* the scheduling of a job to run at a specified time in the future.
|
|
||||||
*
|
*
|
||||||
|
* Description:
|
||||||
|
* A timer thread similar to the one in the Upnp SDK that allows
|
||||||
|
* the scheduling of a job to run at a specified time in the future
|
||||||
* Because the timer thread uses the thread pool there is no
|
* Because the timer thread uses the thread pool there is no
|
||||||
* gurantee of timing, only approximate timing.
|
* gurantee of timing, only approximate timing.
|
||||||
|
* Uses ThreadPool, Mutex, Condition, Thread
|
||||||
*
|
*
|
||||||
* Uses ThreadPool, Mutex, Condition, Thread.
|
*
|
||||||
*/
|
*****************************************************************************/
|
||||||
typedef struct TIMERTHREAD
|
typedef struct TIMERTHREAD
|
||||||
{
|
{
|
||||||
ithread_mutex_t mutex;
|
ithread_mutex_t mutex; //mutex to protect eventQ
|
||||||
ithread_cond_t condition;
|
ithread_cond_t condition; //condition variable
|
||||||
int lastEventId;
|
int lastEventId; //last event id
|
||||||
LinkedList eventQ;
|
LinkedList eventQ; //event q
|
||||||
int shutdown;
|
int shutdown; //whether or not we are shutdown
|
||||||
FreeList freeEvents;
|
FreeList freeEvents; //FreeList for events
|
||||||
ThreadPool *tp;
|
ThreadPool *tp; //ThreadPool to use
|
||||||
} TimerThread;
|
} TimerThread;
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/****************************************************************************
|
||||||
* Struct to contain information for a timer event.
|
* Name: TimerEvent
|
||||||
*
|
*
|
||||||
* Internal to the TimerThread.
|
* Description:
|
||||||
*/
|
*
|
||||||
|
* Struct to contain information for a timer event.
|
||||||
|
* Internal to the TimerThread
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
typedef struct TIMEREVENT
|
typedef struct TIMEREVENT
|
||||||
{
|
{
|
||||||
ThreadPoolJob job;
|
ThreadPoolJob job;
|
||||||
/*! [in] Absolute time for event in seconds since Jan 1, 1970. */
|
time_t eventTime; //absolute time for event in seconds since Jan 1, 1970
|
||||||
time_t eventTime;
|
Duration persistent; //long term or short term job
|
||||||
/*! [in] Long term or short term job. */
|
int id; //id of job
|
||||||
Duration persistent;
|
|
||||||
int id;
|
|
||||||
} TimerEvent;
|
} TimerEvent;
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Initializes and starts timer thread.
|
|
||||||
|
/************************************************************************
|
||||||
|
* Function: TimerThreadInit
|
||||||
*
|
*
|
||||||
* \return 0 on success, nonzero on failure. Returns error from
|
* Description:
|
||||||
* ThreadPoolAddPersistent on failure.
|
* Initializes and starts timer thread.
|
||||||
*/
|
*
|
||||||
int TimerThreadInit(
|
* Parameters:
|
||||||
/*! [in] Valid timer thread pointer. */
|
* timer - valid timer thread pointer.
|
||||||
TimerThread *timer,
|
* tp - valid thread pool to use. Must be
|
||||||
/*! [in] Valid thread pool to use. Must be started. Must be valid for
|
* started. Must be valid for lifetime
|
||||||
* lifetime of timer. Timer must be shutdown BEFORE thread pool. */
|
* of timer. Timer must be shutdown
|
||||||
|
* BEFORE thread pool.
|
||||||
|
* Return:
|
||||||
|
* 0 on success, nonzero on failure
|
||||||
|
* Returns error from ThreadPoolAddPersistent on failure.
|
||||||
|
*
|
||||||
|
************************************************************************/
|
||||||
|
int TimerThreadInit(TimerThread *timer,
|
||||||
ThreadPool *tp);
|
ThreadPool *tp);
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/************************************************************************
|
||||||
* \brief Schedules an event to run at a specified time.
|
* Function: TimerThreadSchedule
|
||||||
*
|
*
|
||||||
* \return 0 on success, nonzero on failure, EOUTOFMEM if not enough memory
|
* Description:
|
||||||
* to schedule job.
|
* Schedules an event to run at a specified time.
|
||||||
*/
|
*
|
||||||
int TimerThreadSchedule(
|
* Parameters:
|
||||||
/*! [in] Valid timer thread pointer. */
|
* timer - valid timer thread pointer.
|
||||||
TimerThread* timer,
|
* time_t - time of event.
|
||||||
/*! [in] time of event. Either in absolute seconds, or relative
|
* either in absolute seconds,
|
||||||
* seconds in the future. */
|
* or relative seconds in the future.
|
||||||
|
* timeoutType - either ABS_SEC, or REL_SEC.
|
||||||
|
* if REL_SEC, then the event
|
||||||
|
* will be scheduled at the
|
||||||
|
* current time + REL_SEC.
|
||||||
|
* job-> valid Thread pool job with following fields
|
||||||
|
* func - function to schedule
|
||||||
|
* arg - argument to function
|
||||||
|
* priority - priority of job.
|
||||||
|
*
|
||||||
|
* id - id of timer event. (out, can be null)
|
||||||
|
* Return:
|
||||||
|
* 0 on success, nonzero on failure
|
||||||
|
* EOUTOFMEM if not enough memory to schedule job.
|
||||||
|
*
|
||||||
|
************************************************************************/
|
||||||
|
int TimerThreadSchedule(TimerThread* timer,
|
||||||
time_t time,
|
time_t time,
|
||||||
/*! [in] either ABS_SEC, or REL_SEC. If REL_SEC, then the event
|
|
||||||
* will be scheduled at the current time + REL_SEC. */
|
|
||||||
TimeoutType type,
|
TimeoutType type,
|
||||||
/*! [in] Valid Thread pool job with following fields. */
|
|
||||||
ThreadPoolJob *job,
|
ThreadPoolJob *job,
|
||||||
/*! [in] . */
|
|
||||||
Duration duration,
|
Duration duration,
|
||||||
/*! [in] Id of timer event. (out, can be null). */
|
|
||||||
int *id);
|
int *id);
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
/*!
|
* Function: TimerThreadRemove
|
||||||
* \brief Removes an event from the timer Q.
|
|
||||||
*
|
*
|
||||||
* Events can only be removed before they have been placed in the thread pool.
|
* Description:
|
||||||
|
* Removes an event from the timer Q.
|
||||||
|
* Events can only be removed
|
||||||
|
* before they have been placed in the
|
||||||
|
* thread pool.
|
||||||
*
|
*
|
||||||
* \return 0 on success, INVALID_EVENT_ID on failure.
|
* Parameters:
|
||||||
*/
|
* timer - valid timer thread pointer.
|
||||||
int TimerThreadRemove(
|
* id - id of event to remove.
|
||||||
/*! [in] Valid timer thread pointer. */
|
* ThreadPoolJob *out - space for thread pool job.
|
||||||
TimerThread *timer,
|
* Return:
|
||||||
/*! [in] Id of event to remove. */
|
* 0 on success,
|
||||||
|
* INVALID_EVENT_ID on failure
|
||||||
|
*
|
||||||
|
************************************************************************/
|
||||||
|
int TimerThreadRemove(TimerThread *timer,
|
||||||
int id,
|
int id,
|
||||||
/*! [in] Space for thread pool job. */
|
|
||||||
ThreadPoolJob *out);
|
ThreadPoolJob *out);
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
/*!
|
* Function: TimerThreadShutdown
|
||||||
* \brief Shutdown the timer thread.
|
|
||||||
*
|
*
|
||||||
|
* Description:
|
||||||
|
* Shutdown the timer thread
|
||||||
* Events scheduled in the future will NOT be run.
|
* Events scheduled in the future will NOT be run.
|
||||||
*
|
* Timer thread should be shutdown BEFORE it's associated
|
||||||
* Timer thread should be shutdown BEFORE it's associated thread pool.
|
* thread pool.
|
||||||
*
|
* Returns:
|
||||||
* \return 0 if succesfull, nonzero otherwise. Always returns 0.
|
* returns 0 if succesfull,
|
||||||
*/
|
* nonzero otherwise.
|
||||||
int TimerThreadShutdown(
|
* Always returns 0.
|
||||||
/*! [in] Valid timer thread pointer. */
|
***********************************************************************/
|
||||||
TimerThread *timer);
|
int TimerThreadShutdown(TimerThread *timer);
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* TIMER_THREAD_H */
|
#endif //TIMER_THREAD_H
|
||||||
|
|
||||||
|
|||||||
66
threadutil/inc/iasnprintf.h
Normal file
66
threadutil/inc/iasnprintf.h
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without
|
||||||
|
// modification, are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer.
|
||||||
|
// * 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.
|
||||||
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
|
// may be used to endorse or promote products derived from this software
|
||||||
|
// without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL 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.
|
||||||
|
//
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#define EXPORT
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocates enough memory for the
|
||||||
|
* Formatted string, up to max
|
||||||
|
* specified.
|
||||||
|
* With max set to -1, allocates
|
||||||
|
* as much size as needed.
|
||||||
|
* Memory must be freed using free.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EXPORT int iasnprintf(char **ret,
|
||||||
|
int incr,
|
||||||
|
int max,
|
||||||
|
const char * fmt, ...)
|
||||||
|
#ifndef SPARC_SOLARIS
|
||||||
|
#if (__GNUC__ >= 3)
|
||||||
|
__attribute__((format (__printf__, 4, 5)));
|
||||||
|
#else
|
||||||
|
;
|
||||||
|
#endif
|
||||||
|
EXPORT void iasnprintfFree(char *);
|
||||||
|
#else
|
||||||
|
;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -1,88 +1,55 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* * Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* * Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#ifndef ITHREAD_H
|
|
||||||
#define ITHREAD_H
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#if !defined(WIN32)
|
|
||||||
#include <sys/param.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#include "UpnpGlobal.h" /* For UPNP_INLINE, EXPORT_SPEC */
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef ITHREADH
|
||||||
|
#define ITHREADH
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include <pthread.h>
|
#ifdef DEBUG
|
||||||
#ifdef WIN32
|
#define DEBUG_ONLY(x) x
|
||||||
/* Do not #include <unistd.h> */
|
|
||||||
#else
|
#else
|
||||||
|
#define DEBUG_ONLY(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <pthread.h>
|
||||||
|
#ifndef WIN32
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if defined(BSD)
|
|
||||||
#define PTHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef PTHREAD_MUTEX_RECURSIVE
|
|
||||||
/* This system has SuS2-compliant mutex attributes.
|
|
||||||
* E.g. on Cygwin, where we don't have the old nonportable (NP) symbols
|
|
||||||
*/
|
|
||||||
#define ITHREAD_MUTEX_FAST_NP PTHREAD_MUTEX_NORMAL
|
|
||||||
#define ITHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE
|
|
||||||
#define ITHREAD_MUTEX_ERRORCHECK_NP PTHREAD_MUTEX_ERRORCHECK
|
|
||||||
#else /* PTHREAD_MUTEX_RECURSIVE */
|
|
||||||
#define ITHREAD_MUTEX_FAST_NP PTHREAD_MUTEX_FAST_NP
|
#define ITHREAD_MUTEX_FAST_NP PTHREAD_MUTEX_FAST_NP
|
||||||
#define ITHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE_NP
|
#define ITHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_RECURSIVE_NP
|
||||||
#define ITHREAD_MUTEX_ERRORCHECK_NP PTHREAD_MUTEX_ERRORCHECK_NP
|
#define ITHREAD_MUTEX_ERRORCHECK_NP PTHREAD_MUTEX_ERRORCHECK_NP
|
||||||
#endif /* PTHREAD_MUTEX_RECURSIVE */
|
|
||||||
|
|
||||||
|
|
||||||
#define ITHREAD_PROCESS_PRIVATE PTHREAD_PROCESS_PRIVATE
|
|
||||||
#define ITHREAD_PROCESS_SHARED PTHREAD_PROCESS_SHARED
|
|
||||||
|
|
||||||
|
|
||||||
#define ITHREAD_CANCELED PTHREAD_CANCELED
|
#define ITHREAD_CANCELED PTHREAD_CANCELED
|
||||||
|
|
||||||
|
|
||||||
@@ -96,7 +63,6 @@ extern "C" {
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
typedef pthread_t ithread_t;
|
typedef pthread_t ithread_t;
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: ithread_attr_t
|
* Name: ithread_attr_t
|
||||||
*
|
*
|
||||||
@@ -162,117 +128,6 @@ typedef pthread_mutex_t ithread_mutex_t;
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
typedef pthread_condattr_t ithread_condattr_t;
|
typedef pthread_condattr_t ithread_condattr_t;
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Name: ithread_rwlockattr_t
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Mutex attribute.
|
|
||||||
* typedef to pthread_rwlockattr_t
|
|
||||||
* Internal Use Only
|
|
||||||
***************************************************************************/
|
|
||||||
typedef pthread_rwlockattr_t ithread_rwlockattr_t;
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Name: ithread_rwlock_t
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Condition attribute.
|
|
||||||
* typedef to pthread_rwlock_t
|
|
||||||
* Internal Use Only
|
|
||||||
***************************************************************************/
|
|
||||||
typedef pthread_rwlock_t ithread_rwlock_t;
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Function: ithread_initialize_library
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Initializes the library. Does nothing in all implementations, except
|
|
||||||
* when statically linked for WIN32.
|
|
||||||
* Parameters:
|
|
||||||
* none.
|
|
||||||
* Returns:
|
|
||||||
* 0 on success, Nonzero on failure.
|
|
||||||
***************************************************************************/
|
|
||||||
static UPNP_INLINE int ithread_initialize_library(void) {
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
#if defined(WIN32) && defined(PTW32_STATIC_LIB)
|
|
||||||
ret = !pthread_win32_process_attach_np();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Function: ithread_cleanup_library
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Clean up library resources. Does nothing in all implementations, except
|
|
||||||
* when statically linked for WIN32.
|
|
||||||
* Parameters:
|
|
||||||
* none.
|
|
||||||
* Returns:
|
|
||||||
* 0 on success, Nonzero on failure.
|
|
||||||
***************************************************************************/
|
|
||||||
static UPNP_INLINE int ithread_cleanup_library(void) {
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
#if defined(WIN32) && defined(PTW32_STATIC_LIB)
|
|
||||||
ret = !pthread_win32_process_detach_np();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Function: ithread_initialize_thread
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Initializes the thread. Does nothing in all implementations, except
|
|
||||||
* when statically linked for WIN32.
|
|
||||||
* Parameters:
|
|
||||||
* none.
|
|
||||||
* Returns:
|
|
||||||
* 0 on success, Nonzero on failure.
|
|
||||||
***************************************************************************/
|
|
||||||
static UPNP_INLINE int ithread_initialize_thread(void) {
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
#if defined(WIN32) && defined(PTW32_STATIC_LIB)
|
|
||||||
ret = !pthread_win32_thread_attach_np();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Function: ithread_cleanup_thread
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Clean up thread resources. Does nothing in all implementations, except
|
|
||||||
* when statically linked for WIN32.
|
|
||||||
* Parameters:
|
|
||||||
* none.
|
|
||||||
* Returns:
|
|
||||||
* 0 on success, Nonzero on failure.
|
|
||||||
***************************************************************************/
|
|
||||||
static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|
||||||
int ret = 0;
|
|
||||||
|
|
||||||
#if defined(WIN32) && defined(PTW32_STATIC_LIB)
|
|
||||||
ret = !pthread_win32_thread_detach_np();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ithread_mutexattr_init
|
* Function: ithread_mutexattr_init
|
||||||
*
|
*
|
||||||
@@ -287,8 +142,8 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* Always returns 0.
|
* Always returns 0.
|
||||||
* See man page for pthread_mutexattr_init
|
* See man page for pthread_mutexattr_init
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#define ithread_mutexattr_init pthread_mutexattr_init
|
|
||||||
|
|
||||||
|
#define ithread_mutexattr_init pthread_mutexattr_init
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ithread_mutexattr_destroy
|
* Function: ithread_mutexattr_destroy
|
||||||
@@ -317,7 +172,7 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* ITHREAD_MUTEX_ERRORCHECK_NP
|
* ITHREAD_MUTEX_ERRORCHECK_NP
|
||||||
*
|
*
|
||||||
* Parameters:
|
* Parameters:
|
||||||
* ithread_mutexattr_t * attr (must be valid non NULL pointer to
|
* ithread_mutexattr_t * mutex (must be valid non NULL pointer to
|
||||||
* ithread_mutexattr_t)
|
* ithread_mutexattr_t)
|
||||||
* int kind (one of ITHREAD_MUTEX_FAST_NP or ITHREAD_MUTEX_RECURSIVE_NP
|
* int kind (one of ITHREAD_MUTEX_FAST_NP or ITHREAD_MUTEX_RECURSIVE_NP
|
||||||
* or ITHREAD_MUTEX_ERRORCHECK_NP)
|
* or ITHREAD_MUTEX_ERRORCHECK_NP)
|
||||||
@@ -326,11 +181,8 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* Returns EINVAL if the kind is not supported.
|
* Returns EINVAL if the kind is not supported.
|
||||||
* See man page for pthread_mutexattr_setkind_np
|
* See man page for pthread_mutexattr_setkind_np
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#ifdef PTHREAD_MUTEX_RECURSIVE
|
|
||||||
#define ithread_mutexattr_setkind_np pthread_mutexattr_settype
|
|
||||||
#else
|
|
||||||
#define ithread_mutexattr_setkind_np pthread_mutexattr_setkind_np
|
#define ithread_mutexattr_setkind_np pthread_mutexattr_setkind_np
|
||||||
#endif
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ithread_mutexattr_getkind_np
|
* Function: ithread_mutexattr_getkind_np
|
||||||
@@ -342,7 +194,7 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* ITHREAD_MUTEX_ERRORCHECK_NP
|
* ITHREAD_MUTEX_ERRORCHECK_NP
|
||||||
*
|
*
|
||||||
* Parameters:
|
* Parameters:
|
||||||
* ithread_mutexattr_t * attr (must be valid non NULL pointer to
|
* ithread_mutexattr_t * mutex (must be valid non NULL pointer to
|
||||||
* pthread_mutexattr_t)
|
* pthread_mutexattr_t)
|
||||||
* int *kind (one of ITHREAD_MUTEX_FAST_NP or ITHREAD_MUTEX_RECURSIVE_NP
|
* int *kind (one of ITHREAD_MUTEX_FAST_NP or ITHREAD_MUTEX_RECURSIVE_NP
|
||||||
* or ITHREAD_MUTEX_ERRORCHECK_NP)
|
* or ITHREAD_MUTEX_ERRORCHECK_NP)
|
||||||
@@ -351,11 +203,7 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* Always returns 0.
|
* Always returns 0.
|
||||||
* See man page for pthread_mutexattr_getkind_np
|
* See man page for pthread_mutexattr_getkind_np
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#ifdef PTHREAD_MUTEX_RECURSIVE
|
|
||||||
#define ithread_mutexattr_getkind_np pthread_mutexattr_gettype
|
|
||||||
#else
|
|
||||||
#define ithread_mutexattr_getkind_np pthread_mutexattr_getkind_np
|
#define ithread_mutexattr_getkind_np pthread_mutexattr_getkind_np
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@@ -375,7 +223,6 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#define ithread_mutex_init pthread_mutex_init
|
#define ithread_mutex_init pthread_mutex_init
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ithread_mutex_lock
|
* Function: ithread_mutex_lock
|
||||||
*
|
*
|
||||||
@@ -430,169 +277,6 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
#define ithread_mutex_destroy pthread_mutex_destroy
|
#define ithread_mutex_destroy pthread_mutex_destroy
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Function: ithread_rwlockattr_init
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Initializes a rwlock attribute variable to default values.
|
|
||||||
* Parameters:
|
|
||||||
* const ithread_rwlockattr_init *attr (must be valid non NULL pointer to
|
|
||||||
* pthread_rwlockattr_t)
|
|
||||||
* Returns:
|
|
||||||
* 0 on success, Nonzero on failure.
|
|
||||||
* Always returns 0.
|
|
||||||
* See man page for pthread_rwlockattr_init
|
|
||||||
***************************************************************************/
|
|
||||||
#define ithread_rwlockattr_init pthread_rwlockattr_init
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Function: ithread_rwlockattr_destroy
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Releases any resources held by the rwlock attribute.
|
|
||||||
* Parameters:
|
|
||||||
* ithread_rwlockattr_t *attr (must be valid non NULL pointer to
|
|
||||||
* pthread_rwlockattr_t)
|
|
||||||
* Returns:
|
|
||||||
* 0 on success, Nonzero on failure.
|
|
||||||
* Always returns 0.
|
|
||||||
* See man page for pthread_rwlockattr_destroy
|
|
||||||
***************************************************************************/
|
|
||||||
#define ithread_rwlockattr_destroy pthread_rwlockattr_destroy
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Function: ithread_rwlockatttr_setpshared
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Sets the rwlock type in the attribute.
|
|
||||||
* Valid types are: ITHREAD_PROCESS_PRIVATE
|
|
||||||
* ITHREAD_PROCESS_SHARED
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* ithread_rwlockattr_t * attr (must be valid non NULL pointer to
|
|
||||||
* ithread_rwlockattr_t)
|
|
||||||
* int kind (one of ITHREAD_PROCESS_PRIVATE or ITHREAD_PROCESS_SHARED)
|
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
* 0 on success. Nonzero on failure.
|
|
||||||
* Returns EINVAL if the kind is not supported.
|
|
||||||
* See man page for pthread_rwlockattr_setkind_np
|
|
||||||
*****************************************************************************/
|
|
||||||
#define ithread_rwlockatttr_setpshared pthread_rwlockatttr_setpshared
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Function: ithread_rwlockatttr_getpshared
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Gets the rwlock type in the attribute.
|
|
||||||
* Valid types are: ITHREAD_PROCESS_PRIVATE
|
|
||||||
* ITHREAD_PROCESS_SHARED
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* ithread_rwlockattr_t * attr (must be valid non NULL pointer to
|
|
||||||
* pthread_rwlockattr_t)
|
|
||||||
* int *kind (one of ITHREAD_PROCESS_PRIVATE or ITHREAD_PROCESS_SHARED)
|
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
* 0 on success. Nonzero on failure.
|
|
||||||
* Always returns 0.
|
|
||||||
* See man page for pthread_rwlockatttr_getpshared
|
|
||||||
*****************************************************************************/
|
|
||||||
#define ithread_rwlockatttr_getpshared pthread_rwlockatttr_getpshared
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Function: ithread_rwlock_init
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Initializes rwlock.
|
|
||||||
* Must be called before use.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* ithread_rwlock_t *rwlock (must be valid non NULL pointer to pthread_rwlock_t)
|
|
||||||
* const ithread_rwlockattr_t *rwlock_attr
|
|
||||||
* Returns:
|
|
||||||
* 0 on success, Nonzero on failure.
|
|
||||||
* Always returns 0.
|
|
||||||
* See man page for pthread_rwlock_init
|
|
||||||
*****************************************************************************/
|
|
||||||
#define ithread_rwlock_init pthread_rwlock_init
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Function: ithread_rwlock_rdlock
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Locks rwlock for reading.
|
|
||||||
* Parameters:
|
|
||||||
* ithread_rwlock_t *rwlock (must be valid non NULL pointer to pthread_rwlock_t)
|
|
||||||
* rwlock must be initialized.
|
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
* 0 on success, Nonzero on failure.
|
|
||||||
* Always returns 0.
|
|
||||||
* See man page for pthread_rwlock_rdlock
|
|
||||||
*****************************************************************************/
|
|
||||||
#define ithread_rwlock_rdlock pthread_rwlock_rdlock
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Function: ithread_rwlock_wrlock
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Locks rwlock for writting.
|
|
||||||
* Parameters:
|
|
||||||
* ithread_rwlock_t *rwlock (must be valid non NULL pointer to pthread_rwlock_t)
|
|
||||||
* rwlock must be initialized.
|
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
* 0 on success, Nonzero on failure.
|
|
||||||
* Always returns 0.
|
|
||||||
* See man page for pthread_rwlock_wrlock
|
|
||||||
*****************************************************************************/
|
|
||||||
#define ithread_rwlock_wrlock pthread_rwlock_wrlock
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Function: ithread_rwlock_unlock
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Unlocks rwlock.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* ithread_rwlock_t *rwlock (must be valid non NULL pointer to pthread_rwlock_t)
|
|
||||||
* rwlock must be initialized.
|
|
||||||
*
|
|
||||||
* Returns:
|
|
||||||
* 0 on success, Nonzero on failure.
|
|
||||||
* Always returns 0.
|
|
||||||
* See man page for pthread_rwlock_unlock
|
|
||||||
*****************************************************************************/
|
|
||||||
#define ithread_rwlock_unlock pthread_rwlock_unlock
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
|
||||||
* Function: ithread_rwlock_destroy
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Releases any resources held by the rwlock.
|
|
||||||
* rwlock can no longer be used after this call.
|
|
||||||
* rwlock is only destroyed when there are no longer any threads waiting on it.
|
|
||||||
* rwlock cannot be destroyed if it is locked.
|
|
||||||
* Parameters:
|
|
||||||
* ithread_rwlock_t *rwlock (must be valid non NULL pointer to pthread_rwlock_t)
|
|
||||||
* rwlock must be initialized.
|
|
||||||
* Returns:
|
|
||||||
* 0 on success. Nonzero on failure.
|
|
||||||
* Always returns 0.
|
|
||||||
* See man page for pthread_rwlock_destroy
|
|
||||||
*****************************************************************************/
|
|
||||||
#define ithread_rwlock_destroy pthread_rwlock_destroy
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ithread_cond_init
|
* Function: ithread_cond_init
|
||||||
*
|
*
|
||||||
@@ -609,6 +293,7 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
#define ithread_cond_init pthread_cond_init
|
#define ithread_cond_init pthread_cond_init
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ithread_cond_signal
|
* Function: ithread_cond_signal
|
||||||
*
|
*
|
||||||
@@ -668,18 +353,22 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* Function: pthread_cond_timedwait
|
* Function: pthread_cond_timedwait
|
||||||
*
|
*
|
||||||
* Description:
|
* Description:
|
||||||
* Atomically releases the associated mutex and waits on the
|
* Atomically releases the associated mutex and waits on the condition.
|
||||||
* condition.
|
* If the condition is not signaled in the specified time
|
||||||
* If the condition is not signaled in the specified time than the
|
* than the
|
||||||
* call times out and returns.
|
* call times out and returns.
|
||||||
* Associated mutex MUST be locked by thread before entering this call.
|
* Associated mutex MUST be locked by thread before entering
|
||||||
|
* this call.
|
||||||
* Mutex is reacquired when call returns.
|
* Mutex is reacquired when call returns.
|
||||||
* Parameters:
|
* Parameters:
|
||||||
* ithread_cond_t *cond (must be valid non NULL pointer to ithread_cond_t)
|
* ithread_cond_t * cond (must be valid non NULL pointer to
|
||||||
|
* ithread_cond_t)
|
||||||
* cond must be initialized
|
* cond must be initialized
|
||||||
* ithread_mutex_t *mutex (must be valid non NULL pointer to ithread_mutex_t)
|
* ithread_mutex_t *mutex (must be valid non NULL pointer to
|
||||||
|
* ithread_mutex_t)
|
||||||
* Mutex must be locked.
|
* Mutex must be locked.
|
||||||
* const struct timespec *abstime (absolute time, measured from Jan 1, 1970)
|
* const struct timespec *abstime (absolute time, measured
|
||||||
|
* from Jan 1, 1970)
|
||||||
* Returns:
|
* Returns:
|
||||||
* 0 on success. ETIMEDOUT on timeout. Nonzero on failure.
|
* 0 on success. ETIMEDOUT on timeout. Nonzero on failure.
|
||||||
* See man page for pthread_cond_timedwait
|
* See man page for pthread_cond_timedwait
|
||||||
@@ -751,7 +440,6 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#define ithread_exit pthread_exit
|
#define ithread_exit pthread_exit
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ithread_get_current_thread_id
|
* Function: ithread_get_current_thread_id
|
||||||
*
|
*
|
||||||
@@ -775,7 +463,6 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#define ithread_self pthread_self
|
#define ithread_self pthread_self
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ithread_detach
|
* Function: ithread_detach
|
||||||
*
|
*
|
||||||
@@ -789,7 +476,6 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#define ithread_detach pthread_detach
|
#define ithread_detach pthread_detach
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: ithread_join
|
* Function: ithread_join
|
||||||
*
|
*
|
||||||
@@ -809,6 +495,7 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
#define ithread_join pthread_join
|
#define ithread_join pthread_join
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: isleep
|
* Function: isleep
|
||||||
*
|
*
|
||||||
@@ -822,12 +509,7 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* 0 on success, Nonzero on failure.
|
* 0 on success, Nonzero on failure.
|
||||||
* See man page for sleep (man 3 sleep)
|
* See man page for sleep (man 3 sleep)
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#ifdef WIN32
|
|
||||||
#define isleep(x) Sleep((x)*1000)
|
|
||||||
#else
|
|
||||||
#define isleep sleep
|
#define isleep sleep
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Function: isleep
|
* Function: isleep
|
||||||
@@ -842,23 +524,29 @@ static UPNP_INLINE int ithread_cleanup_thread(void) {
|
|||||||
* 0 on success, Nonzero on failure.
|
* 0 on success, Nonzero on failure.
|
||||||
* See man page for sleep (man 3 sleep)
|
* See man page for sleep (man 3 sleep)
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
#ifdef WIN32
|
|
||||||
#define imillisleep Sleep
|
|
||||||
#else
|
|
||||||
#define imillisleep(x) usleep(1000*x)
|
#define imillisleep(x) usleep(1000*x)
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
#ifndef UPNP_STATIC_LIB
|
||||||
|
#ifdef LIBUPNP_EXPORTS
|
||||||
|
// set up declspec for dll export to make functions visible to library users
|
||||||
|
#define EXPORT_SPEC __declspec(dllexport)
|
||||||
|
#else
|
||||||
|
#define EXPORT_SPEC __declspec(dllimport)
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#define EXPORT_SPEC
|
||||||
|
#endif
|
||||||
|
#else
|
||||||
|
#define EXPORT_SPEC
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifndef PTHREAD_MUTEX_RECURSIVE
|
//NK: Added for satisfying the gcc compiler
|
||||||
/* NK: Added for satisfying the gcc compiler */
|
|
||||||
EXPORT_SPEC int pthread_mutexattr_setkind_np(pthread_mutexattr_t *attr, int kind);
|
EXPORT_SPEC int pthread_mutexattr_setkind_np(pthread_mutexattr_t *attr, int kind);
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif //ITHREADH
|
||||||
#endif /* ITHREAD_H */
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,55 +1,42 @@
|
|||||||
/**************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
**************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#include "LinkedList.h"
|
#include "LinkedList.h"
|
||||||
|
#ifdef __FreeBSD__
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
/* Do not #include <sys/param.h> */
|
|
||||||
#else
|
|
||||||
#include <sys/param.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#if (defined(BSD) && BSD >= 199306) || defined(__OSX__) || defined(__APPLE__)
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#else
|
#else
|
||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
freeListNode( ListNode * node,
|
freeListNode( ListNode * node,
|
||||||
LinkedList * list )
|
LinkedList * list )
|
||||||
@@ -544,4 +531,3 @@ ListSize( LinkedList * list )
|
|||||||
|
|
||||||
return list->size;
|
return list->size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,69 +1,68 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "TimerThread.h"
|
#include "TimerThread.h"
|
||||||
|
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
/*!
|
* Function: FreeTimerEvent
|
||||||
* \brief Deallocates a dynamically allocated TimerEvent.
|
*
|
||||||
*/
|
* Description:
|
||||||
static void FreeTimerEvent(
|
* Deallocates a dynamically allocated TimerEvent.
|
||||||
/*! [in] Valid timer thread pointer. */
|
* Parameters:
|
||||||
TimerThread *timer,
|
* TimerEvent *event - must be allocated with CreateTimerEvent
|
||||||
/*! [in] Must be allocated with CreateTimerEvent*/
|
*****************************************************************************/
|
||||||
|
static void
|
||||||
|
FreeTimerEvent( TimerThread * timer,
|
||||||
TimerEvent * event )
|
TimerEvent * event )
|
||||||
{
|
{
|
||||||
|
|
||||||
assert( timer != NULL );
|
assert( timer != NULL );
|
||||||
|
|
||||||
FreeListFree( &timer->freeEvents, event );
|
FreeListFree( &timer->freeEvents, event );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
/*!
|
* Function: TimerThreadWorker
|
||||||
* \brief Implements timer thread.
|
|
||||||
*
|
*
|
||||||
* Waits for next event to occur and schedules associated job into threadpool.
|
* Description:
|
||||||
*/
|
* Implements timer thread.
|
||||||
static void *TimerThreadWorker(
|
* Waits for next event to occur and schedules
|
||||||
/*! [in] arg is cast to (TimerThread *). */
|
* associated job into threadpool.
|
||||||
void *arg)
|
* Internal Only.
|
||||||
|
* Parameters:
|
||||||
|
* void * arg -> is cast to TimerThread *
|
||||||
|
*****************************************************************************/
|
||||||
|
static void *
|
||||||
|
TimerThreadWorker( void *arg )
|
||||||
{
|
{
|
||||||
TimerThread *timer = ( TimerThread * ) arg;
|
TimerThread *timer = ( TimerThread * ) arg;
|
||||||
ListNode *head = NULL;
|
ListNode *head = NULL;
|
||||||
@@ -82,14 +81,19 @@ static void *TimerThreadWorker(
|
|||||||
|
|
||||||
while( 1 )
|
while( 1 )
|
||||||
{
|
{
|
||||||
|
|
||||||
//mutex should always be locked at top of loop
|
//mutex should always be locked at top of loop
|
||||||
|
|
||||||
//Check for shutdown
|
//Check for shutdown
|
||||||
|
|
||||||
if( timer->shutdown )
|
if( timer->shutdown )
|
||||||
{
|
{
|
||||||
|
|
||||||
timer->shutdown = 0;
|
timer->shutdown = 0;
|
||||||
ithread_cond_signal( &timer->condition );
|
ithread_cond_signal( &timer->condition );
|
||||||
ithread_mutex_unlock( &timer->mutex );
|
ithread_mutex_unlock( &timer->mutex );
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
nextEvent = NULL;
|
nextEvent = NULL;
|
||||||
@@ -98,6 +102,7 @@ static void *TimerThreadWorker(
|
|||||||
if( timer->eventQ.size > 0 )
|
if( timer->eventQ.size > 0 )
|
||||||
{
|
{
|
||||||
head = ListHead( &timer->eventQ );
|
head = ListHead( &timer->eventQ );
|
||||||
|
|
||||||
nextEvent = ( TimerEvent * ) head->item;
|
nextEvent = ( TimerEvent * ) head->item;
|
||||||
nextEventTime = nextEvent->eventTime;
|
nextEventTime = nextEvent->eventTime;
|
||||||
}
|
}
|
||||||
@@ -105,41 +110,53 @@ static void *TimerThreadWorker(
|
|||||||
currentTime = time( NULL );
|
currentTime = time( NULL );
|
||||||
|
|
||||||
//If time has elapsed, schedule job
|
//If time has elapsed, schedule job
|
||||||
|
|
||||||
if( ( nextEvent != NULL ) && ( currentTime >= nextEventTime ) )
|
if( ( nextEvent != NULL ) && ( currentTime >= nextEventTime ) )
|
||||||
{
|
{
|
||||||
|
|
||||||
if( nextEvent->persistent ) {
|
if( nextEvent->persistent ) {
|
||||||
|
|
||||||
ThreadPoolAddPersistent( timer->tp, &nextEvent->job,
|
ThreadPoolAddPersistent( timer->tp, &nextEvent->job,
|
||||||
&tempId );
|
&tempId );
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
ThreadPoolAdd( timer->tp, &nextEvent->job, &tempId );
|
ThreadPoolAdd( timer->tp, &nextEvent->job, &tempId );
|
||||||
}
|
}
|
||||||
|
|
||||||
ListDelNode( &timer->eventQ, head, 0 );
|
ListDelNode( &timer->eventQ, head, 0 );
|
||||||
FreeTimerEvent( timer, nextEvent );
|
FreeTimerEvent( timer, nextEvent );
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( nextEvent != NULL ) {
|
if( nextEvent != NULL ) {
|
||||||
timeToWait.tv_nsec = 0;
|
timeToWait.tv_nsec = 0;
|
||||||
timeToWait.tv_sec = nextEvent->eventTime;
|
timeToWait.tv_sec = nextEvent->eventTime;
|
||||||
|
|
||||||
ithread_cond_timedwait( &timer->condition, &timer->mutex,
|
ithread_cond_timedwait( &timer->condition, &timer->mutex,
|
||||||
&timeToWait );
|
&timeToWait );
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
ithread_cond_wait( &timer->condition, &timer->mutex );
|
ithread_cond_wait( &timer->condition, &timer->mutex );
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
/*!
|
* Function: CalculateEventTime
|
||||||
* \brief Calculates the appropriate timeout in absolute seconds
|
|
||||||
* since Jan 1, 1970.
|
|
||||||
*
|
*
|
||||||
* \return
|
* Description:
|
||||||
*/
|
* Calculates the appropriate timeout in absolute seconds since
|
||||||
static int CalculateEventTime(
|
* Jan 1, 1970
|
||||||
/*! [in] Timeout. */
|
* Internal Only.
|
||||||
time_t *timeout,
|
* Parameters:
|
||||||
/*! [in] Timeout type. */
|
* time_t *timeout - timeout
|
||||||
|
*
|
||||||
|
*****************************************************************************/
|
||||||
|
static int
|
||||||
|
CalculateEventTime( time_t * timeout,
|
||||||
TimeoutType type )
|
TimeoutType type )
|
||||||
{
|
{
|
||||||
time_t now;
|
time_t now;
|
||||||
@@ -158,21 +175,28 @@ static int CalculateEventTime(
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/****************************************************************************
|
||||||
* \brief Creates a Timer Event. (Dynamically allocated).
|
* Function: CreateTimerEvent
|
||||||
*
|
*
|
||||||
* \return (TimerEvent *) on success, NULL on failure.
|
* Description:
|
||||||
*/
|
* Creates a Timer Event. (Dynamically allocated)
|
||||||
static TimerEvent *CreateTimerEvent(
|
* Internal to timer thread.
|
||||||
/*! [in] Valid timer thread pointer. */
|
* Parameters:
|
||||||
TimerThread *timer,
|
* func - thread function to run.
|
||||||
/*! [in] . */
|
* arg - argument to function.
|
||||||
|
* priority - priority of job.
|
||||||
|
* eventTime - the absoule time of the event
|
||||||
|
* in seconds from Jan, 1970
|
||||||
|
* id - id of job
|
||||||
|
*
|
||||||
|
* Returns:
|
||||||
|
* TimerEvent * on success, NULL on failure.
|
||||||
|
****************************************************************************/
|
||||||
|
static TimerEvent *
|
||||||
|
CreateTimerEvent( TimerThread * timer,
|
||||||
ThreadPoolJob * job,
|
ThreadPoolJob * job,
|
||||||
/*! [in] . */
|
|
||||||
Duration persistent,
|
Duration persistent,
|
||||||
/*! [in] The absoule time of the event in seconds from Jan, 1970. */
|
|
||||||
time_t eventTime,
|
time_t eventTime,
|
||||||
/*! [in] Id of job. */
|
|
||||||
int id )
|
int id )
|
||||||
{
|
{
|
||||||
TimerEvent *temp = NULL;
|
TimerEvent *temp = NULL;
|
||||||
@@ -191,8 +215,25 @@ static TimerEvent *CreateTimerEvent(
|
|||||||
return temp;
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
int TimerThreadInit(TimerThread *timer, ThreadPool *tp)
|
* Function: TimerThreadInit
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Initializes and starts timer thread.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* timer - valid timer thread pointer.
|
||||||
|
* tp - valid thread pool to use. Must be
|
||||||
|
* started. Must be valid for lifetime
|
||||||
|
* of timer. Timer must be shutdown
|
||||||
|
* BEFORE thread pool.
|
||||||
|
* Return:
|
||||||
|
* 0 on success, nonzero on failure
|
||||||
|
* Returns error from ThreadPoolAddPersistent if failure.
|
||||||
|
************************************************************************/
|
||||||
|
int
|
||||||
|
TimerThreadInit( TimerThread * timer,
|
||||||
|
ThreadPool * tp )
|
||||||
{
|
{
|
||||||
|
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
@@ -249,9 +290,32 @@ int TimerThreadInit(TimerThread *timer, ThreadPool *tp)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
int TimerThreadSchedule(
|
* Function: TimerThreadSchedule
|
||||||
TimerThread *timer,
|
*
|
||||||
|
* Description:
|
||||||
|
* Schedules an event to run at a specified time.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* timer - valid timer thread pointer.
|
||||||
|
* time_t - time of event.
|
||||||
|
* either in absolute seconds,
|
||||||
|
* or relative seconds in the future.
|
||||||
|
* timeoutType - either ABS_SEC, or REL_SEC.
|
||||||
|
* if REL_SEC, then the event
|
||||||
|
* will be scheduled at the
|
||||||
|
* current time + REL_SEC.
|
||||||
|
*
|
||||||
|
* func - function to schedule
|
||||||
|
* arg - argument to function
|
||||||
|
* priority - priority of job.
|
||||||
|
* id - id of timer event. (out)
|
||||||
|
* Return:
|
||||||
|
* 0 on success, nonzero on failure
|
||||||
|
* EOUTOFMEM if not enough memory to schedule job
|
||||||
|
************************************************************************/
|
||||||
|
int
|
||||||
|
TimerThreadSchedule( TimerThread * timer,
|
||||||
time_t timeout,
|
time_t timeout,
|
||||||
TimeoutType type,
|
TimeoutType type,
|
||||||
ThreadPoolJob * job,
|
ThreadPoolJob * job,
|
||||||
@@ -330,9 +394,26 @@ int TimerThreadSchedule(
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
int TimerThreadRemove(
|
* Function: TimerThreadRemove
|
||||||
TimerThread *timer,
|
*
|
||||||
|
* Description:
|
||||||
|
* Removes an event from the timer Q.
|
||||||
|
* Events can only be removed
|
||||||
|
* before they have been placed in the
|
||||||
|
* thread pool.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* timer - valid timer thread pointer.
|
||||||
|
* id - id of event to remove.
|
||||||
|
* out - space for returned job (Can be NULL)
|
||||||
|
* Return:
|
||||||
|
* 0 on success.
|
||||||
|
* INVALID_EVENT_ID on error.
|
||||||
|
*
|
||||||
|
************************************************************************/
|
||||||
|
int
|
||||||
|
TimerThreadRemove( TimerThread * timer,
|
||||||
int id,
|
int id,
|
||||||
ThreadPoolJob * out )
|
ThreadPoolJob * out )
|
||||||
{
|
{
|
||||||
@@ -369,8 +450,21 @@ int TimerThreadRemove(
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/************************************************************************
|
||||||
int TimerThreadShutdown(TimerThread *timer)
|
* Function: TimerThreadShutdown
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* Shutdown the timer thread
|
||||||
|
* Events scheduled in the future will NOT be run.
|
||||||
|
* Timer thread should be shutdown BEFORE it's associated
|
||||||
|
* thread pool.
|
||||||
|
* Returns:
|
||||||
|
* returns 0 if succesfull,
|
||||||
|
* nonzero otherwise.
|
||||||
|
* Always returns 0.
|
||||||
|
***********************************************************************/
|
||||||
|
int
|
||||||
|
TimerThreadShutdown( TimerThread * timer )
|
||||||
{
|
{
|
||||||
ListNode *tempNode2 = NULL;
|
ListNode *tempNode2 = NULL;
|
||||||
ListNode *tempNode = NULL;
|
ListNode *tempNode = NULL;
|
||||||
@@ -423,4 +517,3 @@ int TimerThreadShutdown(TimerThread *timer)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
152
threadutil/src/iasnprintf.c
Normal file
152
threadutil/src/iasnprintf.c
Normal file
@@ -0,0 +1,152 @@
|
|||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
|
// All rights reserved.
|
||||||
|
//
|
||||||
|
// Redistribution and use in source and binary forms, with or without
|
||||||
|
// modification, are permitted provided that the following conditions are met:
|
||||||
|
//
|
||||||
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
|
// this list of conditions and the following disclaimer.
|
||||||
|
// * 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.
|
||||||
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
|
// may be used to endorse or promote products derived from this software
|
||||||
|
// without specific prior written permission.
|
||||||
|
//
|
||||||
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL 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.
|
||||||
|
//
|
||||||
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <assert.h>
|
||||||
|
#ifdef __FreeBSD__
|
||||||
|
#include <stdlib.h>
|
||||||
|
#else
|
||||||
|
#include <malloc.h>
|
||||||
|
#endif
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "iasnprintf.h"
|
||||||
|
|
||||||
|
#ifndef NULL
|
||||||
|
#define NULL 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WIN32
|
||||||
|
#define vsnprintf _vsnprintf
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allocates enough memory for the
|
||||||
|
* Formatted string, up to max
|
||||||
|
* specified.
|
||||||
|
* With max set to -1, it allocates as
|
||||||
|
* much size as needed.
|
||||||
|
* Memory must be freed using free.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
iasnprintf( char **ret,
|
||||||
|
int incr,
|
||||||
|
int max,
|
||||||
|
const char *fmt,
|
||||||
|
... )
|
||||||
|
{
|
||||||
|
int size = incr;
|
||||||
|
int retc = 0;
|
||||||
|
va_list ap;
|
||||||
|
char *temp = NULL;
|
||||||
|
|
||||||
|
assert( ret );
|
||||||
|
assert( fmt );
|
||||||
|
( *ret ) = ( char * )malloc( incr );
|
||||||
|
|
||||||
|
if( ( *ret ) == NULL ) return -1;
|
||||||
|
|
||||||
|
while( 1 ) {
|
||||||
|
va_start( ap, fmt );
|
||||||
|
retc = vsnprintf( ( *ret ), size, fmt, ap );
|
||||||
|
va_end( ap );
|
||||||
|
|
||||||
|
if( retc < 0 ) {
|
||||||
|
//size not big enough
|
||||||
|
//and vsnprintf does NOT return the
|
||||||
|
//necessary number of bytes
|
||||||
|
if( ( max != -1 ) && ( size == max ) ) //max reached
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
incr *= 2; //increase increment
|
||||||
|
//increase size and try again
|
||||||
|
if( ( max != -1 ) && ( ( size + incr ) > max ) ) {
|
||||||
|
incr = ( max - size );
|
||||||
|
}
|
||||||
|
|
||||||
|
temp = ( char * )realloc( ( *ret ), size + incr );
|
||||||
|
if( temp == NULL ) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
size += incr;
|
||||||
|
( *ret ) = temp;
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if( ( retc + 1 ) > size ) {
|
||||||
|
//size not big enough
|
||||||
|
//and vsnprintf
|
||||||
|
//returns the necessary
|
||||||
|
//number of bytes
|
||||||
|
if( ( max != -1 ) && ( retc + 1 > max ) ) {
|
||||||
|
retc = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
temp = ( char * )realloc( ( *ret ), retc + 1 );
|
||||||
|
if( temp == NULL ) {
|
||||||
|
retc = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
size = retc + 1;
|
||||||
|
( *ret ) = temp; //size increased try again
|
||||||
|
} else if( ( retc + 1 ) < size ) {
|
||||||
|
//size is bigger than needed
|
||||||
|
//try and reallocate smaller
|
||||||
|
|
||||||
|
temp = ( char * )realloc( ( *ret ), retc + 1 );
|
||||||
|
if( temp != NULL ) {
|
||||||
|
( *ret ) = temp;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
} else //size is just right, exit
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if( retc < 0 ) {
|
||||||
|
free( ( *ret ) );
|
||||||
|
( *ret ) = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return retc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
iasnprintfFree( char *fChar )
|
||||||
|
{
|
||||||
|
free( fChar );
|
||||||
|
fChar = NULL;
|
||||||
|
}
|
||||||
185
upnp/Makefile.am
185
upnp/Makefile.am
@@ -1,116 +1,80 @@
|
|||||||
|
# $Id: Makefile.am,v 1.10 2006/04/08 15:22:22 r3mi Exp $
|
||||||
#
|
#
|
||||||
# "Makefile.am" for "libupnp/upnp"
|
# "Makefile.am" for "libupnp/upnp"
|
||||||
#
|
#
|
||||||
# Copyright (C) 2005 Rémi Turboult <r3mi@users.sourceforge.net>
|
# Copyright (C) 2005 R<EFBFBD>mi Turboult <r3mi@users.sourceforge.net>
|
||||||
#
|
#
|
||||||
|
|
||||||
SUBDIRS = doc . sample
|
SUBDIRS = doc
|
||||||
|
|
||||||
AM_CPPFLAGS = \
|
AM_CPPFLAGS = -I$(srcdir)/inc \
|
||||||
-I$(srcdir)/inc \
|
|
||||||
-I$(top_srcdir)/threadutil/inc \
|
-I$(top_srcdir)/threadutil/inc \
|
||||||
-I$(top_srcdir)/ixml/inc
|
-I$(top_srcdir)/ixml/inc
|
||||||
|
|
||||||
LDADD = \
|
AM_CFLAGS = $(PTHREAD_CFLAGS)
|
||||||
libupnp.la \
|
|
||||||
|
AM_LDFLAGS = $(PTHREAD_LIBS)
|
||||||
|
|
||||||
|
LDADD = libupnp.la \
|
||||||
$(top_builddir)/threadutil/libthreadutil.la \
|
$(top_builddir)/threadutil/libthreadutil.la \
|
||||||
$(top_builddir)/ixml/libixml.la
|
$(top_builddir)/ixml/libixml.la
|
||||||
|
|
||||||
|
|
||||||
upnpincludedir = $(includedir)/upnp
|
upnpincludedir = $(includedir)/upnp
|
||||||
upnpinclude_HEADERS = \
|
upnpinclude_HEADERS = inc/upnp.h
|
||||||
inc/ActionComplete.h \
|
|
||||||
inc/ActionRequest.h \
|
|
||||||
inc/Discovery.h \
|
|
||||||
inc/Event.h \
|
|
||||||
inc/EventSubscribe.h \
|
|
||||||
inc/FileInfo.h \
|
|
||||||
inc/StateVarComplete.h \
|
|
||||||
inc/StateVarRequest.h \
|
|
||||||
inc/SubscriptionRequest.h \
|
|
||||||
inc/UpnpString.h \
|
|
||||||
inc/upnp.h \
|
|
||||||
inc/upnpdebug.h \
|
|
||||||
inc/UpnpGlobal.h \
|
|
||||||
inc/UpnpInet.h
|
|
||||||
|
|
||||||
nodist_upnpinclude_HEADERS = inc/upnpconfig.h
|
nodist_upnpinclude_HEADERS = inc/upnpconfig.h
|
||||||
if ENABLE_TOOLS
|
if ENABLE_TOOLS
|
||||||
upnpinclude_HEADERS += inc/upnptools.h
|
upnpinclude_HEADERS += inc/upnptools.h
|
||||||
endif
|
endif
|
||||||
|
if ENABLE_DEBUG
|
||||||
|
upnpinclude_HEADERS += inc/upnpdebug.h
|
||||||
|
endif
|
||||||
|
|
||||||
lib_LTLIBRARIES = libupnp.la
|
lib_LTLIBRARIES = libupnp.la
|
||||||
|
|
||||||
libupnp_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/src/inc
|
libupnp_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(srcdir)/src/inc
|
||||||
|
libupnp_la_LDFLAGS = -version-info $(LT_VERSION_UPNP) \
|
||||||
libupnp_la_LDFLAGS = \
|
|
||||||
-version-info $(LT_VERSION_UPNP) \
|
|
||||||
-export-symbols-regex '^Upnp.*' \
|
-export-symbols-regex '^Upnp.*' \
|
||||||
$(top_builddir)/threadutil/libthreadutil.la \
|
$(top_builddir)/threadutil/libthreadutil.la \
|
||||||
$(top_builddir)/ixml/libixml.la
|
$(top_builddir)/ixml/libixml.la
|
||||||
|
|
||||||
libupnp_la_SOURCES = \
|
libupnp_la_SOURCES = \
|
||||||
src/inc/config.h \
|
src/inc/config.h \
|
||||||
src/inc/client_table.h \
|
src/inc/client_table.h src/inc/global.h \
|
||||||
src/inc/ClientSubscription.h \
|
src/inc/md5.h src/inc/ssdplib.h \
|
||||||
src/inc/gena.h \
|
src/inc/unixutil.h src/inc/urlconfig.h \
|
||||||
src/inc/gena_ctrlpt.h \
|
src/inc/gmtdate.h src/inc/membuffer.h \
|
||||||
src/inc/gena_device.h \
|
src/inc/server.h src/inc/statcodes.h \
|
||||||
src/inc/global.h \
|
src/inc/upnpapi.h src/inc/utilall.h \
|
||||||
src/inc/gmtdate.h \
|
src/inc/gena_ctrlpt.h src/inc/http_client.h \
|
||||||
src/inc/httpparser.h \
|
src/inc/miniserver.h src/inc/service_table.h \
|
||||||
src/inc/httpreadwrite.h \
|
src/inc/statuscodes.h src/inc/upnpclosesocket.h \
|
||||||
src/inc/md5.h \
|
src/inc/util.h src/inc/gena_device.h \
|
||||||
src/inc/membuffer.h \
|
src/inc/httpparser.h src/inc/netall.h \
|
||||||
src/inc/miniserver.h \
|
src/inc/soaplib.h src/inc/strintmap.h \
|
||||||
src/inc/netall.h \
|
src/inc/upnp_timeout.h src/inc/uuid.h \
|
||||||
src/inc/parsetools.h \
|
src/inc/gena.h src/inc/httpreadwrite.h \
|
||||||
src/inc/server.h \
|
src/inc/parsetools.h src/inc/sock.h \
|
||||||
src/inc/service_table.h \
|
src/inc/sysdep.h src/inc/uri.h \
|
||||||
src/inc/soaplib.h \
|
|
||||||
src/inc/sock.h \
|
|
||||||
src/inc/statcodes.h \
|
|
||||||
src/inc/statuscodes.h \
|
|
||||||
src/inc/strintmap.h \
|
|
||||||
src/inc/ssdplib.h \
|
|
||||||
src/inc/sysdep.h \
|
|
||||||
src/inc/unixutil.h \
|
|
||||||
src/inc/upnpapi.h \
|
|
||||||
src/inc/upnpclosesocket.h \
|
|
||||||
src/inc/upnp_timeout.h \
|
|
||||||
src/inc/uri.h \
|
|
||||||
src/inc/urlconfig.h \
|
|
||||||
src/inc/util.h \
|
|
||||||
src/inc/utilall.h \
|
|
||||||
src/inc/uuid.h \
|
|
||||||
src/inc/VirtualDir.h \
|
|
||||||
src/inc/webserver.h
|
src/inc/webserver.h
|
||||||
|
|
||||||
# ssdp
|
# ssdp
|
||||||
libupnp_la_SOURCES += \
|
libupnp_la_SOURCES += src/ssdp/ssdp_device.c src/ssdp/ssdp_ctrlpt.c \
|
||||||
src/ssdp/ssdp_ResultData.c \
|
|
||||||
src/ssdp/ssdp_ResultData.h \
|
|
||||||
src/ssdp/ssdp_device.c \
|
|
||||||
src/ssdp/ssdp_ctrlpt.c \
|
|
||||||
src/ssdp/ssdp_server.c
|
src/ssdp/ssdp_server.c
|
||||||
|
|
||||||
# soap
|
# soap
|
||||||
libupnp_la_SOURCES += \
|
libupnp_la_SOURCES += src/soap/soap_device.c src/soap/soap_ctrlpt.c \
|
||||||
src/soap/soap_device.c \
|
|
||||||
src/soap/soap_ctrlpt.c \
|
|
||||||
src/soap/soap_common.c
|
src/soap/soap_common.c
|
||||||
|
|
||||||
# genlib
|
# genlib
|
||||||
libupnp_la_SOURCES += \
|
libupnp_la_SOURCES += \
|
||||||
src/genlib/miniserver/miniserver.c \
|
src/genlib/miniserver/miniserver.c \
|
||||||
src/genlib/client_table/client_table.c \
|
|
||||||
src/genlib/client_table/ClientSubscription.c \
|
|
||||||
src/genlib/service_table/service_table.c \
|
src/genlib/service_table/service_table.c \
|
||||||
src/genlib/util/membuffer.c \
|
src/genlib/util/membuffer.c \
|
||||||
src/genlib/util/strintmap.c \
|
src/genlib/util/strintmap.c \
|
||||||
src/genlib/util/upnp_timeout.c \
|
src/genlib/util/upnp_timeout.c \
|
||||||
src/genlib/util/util.c \
|
src/genlib/util/util.c \
|
||||||
|
src/genlib/client_table/client_table.c \
|
||||||
src/genlib/net/sock.c \
|
src/genlib/net/sock.c \
|
||||||
src/genlib/net/http/httpparser.c \
|
src/genlib/net/http/httpparser.c \
|
||||||
src/genlib/net/http/httpreadwrite.c \
|
src/genlib/net/http/httpreadwrite.c \
|
||||||
@@ -120,64 +84,81 @@ libupnp_la_SOURCES += \
|
|||||||
src/genlib/net/uri/uri.c
|
src/genlib/net/uri/uri.c
|
||||||
|
|
||||||
# gena
|
# gena
|
||||||
libupnp_la_SOURCES += \
|
libupnp_la_SOURCES += src/gena/gena_device.c src/gena/gena_ctrlpt.c \
|
||||||
src/gena/gena_device.c \
|
|
||||||
src/gena/gena_ctrlpt.c \
|
|
||||||
src/gena/gena_callback2.c
|
src/gena/gena_callback2.c
|
||||||
|
|
||||||
# api
|
# api
|
||||||
libupnp_la_SOURCES += \
|
libupnp_la_SOURCES += src/api/upnpapi.c
|
||||||
src/api/ActionComplete.c \
|
|
||||||
src/api/ActionRequest.c \
|
|
||||||
src/api/Discovery.c \
|
|
||||||
src/api/Event.c \
|
|
||||||
src/api/EventSubscribe.c \
|
|
||||||
src/api/FileInfo.c \
|
|
||||||
src/api/StateVarComplete.c \
|
|
||||||
src/api/StateVarRequest.c \
|
|
||||||
src/api/SubscriptionRequest.c \
|
|
||||||
src/api/UpnpString.c \
|
|
||||||
src/api/upnpapi.c
|
|
||||||
|
|
||||||
if ENABLE_TOOLS
|
if ENABLE_TOOLS
|
||||||
libupnp_la_SOURCES += src/api/upnptools.c
|
libupnp_la_SOURCES += src/api/upnptools.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if ENABLE_DEBUG
|
if ENABLE_DEBUG
|
||||||
libupnp_la_SOURCES += src/api/upnpdebug.c
|
libupnp_la_SOURCES += src/api/upnpdebug.c
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
# uuid
|
# uuid
|
||||||
libupnp_la_SOURCES += \
|
libupnp_la_SOURCES += src/uuid/md5.c src/uuid/sysdep.c src/uuid/uuid.c
|
||||||
src/uuid/md5.c \
|
|
||||||
src/uuid/sysdep.c \
|
|
||||||
src/uuid/uuid.c
|
|
||||||
|
|
||||||
|
|
||||||
# urlconfig
|
# urlconfig
|
||||||
libupnp_la_SOURCES += src/urlconfig/urlconfig.c
|
libupnp_la_SOURCES += src/urlconfig/urlconfig.c
|
||||||
|
|
||||||
|
|
||||||
# inet_pton (needed on Win32, compiles to nothing elsewhere)
|
# samples
|
||||||
libupnp_la_SOURCES += \
|
noinst_PROGRAMS =
|
||||||
src/inet_pton.c \
|
if ENABLE_SAMPLES
|
||||||
src/inc/inet_pton.h
|
if ENABLE_CLIENT
|
||||||
|
noinst_PROGRAMS += upnp_tv_ctrlpt
|
||||||
|
upnp_tv_ctrlpt_CPPFLAGS = $(AM_CPPFLAGS) \
|
||||||
|
-I$(srcdir)/sample/common/ \
|
||||||
|
-I$(srcdir)/sample/tvctrlpt
|
||||||
|
endif
|
||||||
|
if ENABLE_DEVICE
|
||||||
|
noinst_PROGRAMS += upnp_tv_device
|
||||||
|
upnp_tv_device_CPPFLAGS = $(AM_CPPFLAGS) \
|
||||||
|
-I$(srcdir)/sample/common/ \
|
||||||
|
-I$(srcdir)/sample/tvdevice
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
upnp_tv_device_SOURCES = \
|
||||||
|
sample/common/sample_util.c \
|
||||||
|
sample/common/sample_util.h \
|
||||||
|
sample/tvdevice/upnp_tv_device.c \
|
||||||
|
sample/tvdevice/upnp_tv_device.h \
|
||||||
|
sample/tvdevice/linux/upnp_tv_device_main.c
|
||||||
|
upnp_tv_ctrlpt_SOURCES = \
|
||||||
|
sample/common/sample_util.c \
|
||||||
|
sample/common/sample_util.h \
|
||||||
|
sample/tvctrlpt/upnp_tv_ctrlpt.c \
|
||||||
|
sample/tvctrlpt/upnp_tv_ctrlpt.h \
|
||||||
|
sample/tvctrlpt/linux/upnp_tv_ctrlpt_main.c
|
||||||
|
|
||||||
|
if WITH_DOCDIR
|
||||||
|
docdir = @DOCDIR@
|
||||||
|
examplesdir = $(docdir)/examples
|
||||||
|
examples_DATA = $(upnp_tv_ctrlpt_SOURCES) $(upnp_tv_device_SOURCES)
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
# check / distcheck tests
|
# check / distcheck tests
|
||||||
check_PROGRAMS = test_init
|
check_PROGRAMS = test_init
|
||||||
TESTS = test_init
|
TESTS = test_init
|
||||||
|
|
||||||
test_init_SOURCES = test/test_init.c
|
test_init_SOURCES = test/test_init.c
|
||||||
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = LICENSE \
|
||||||
LICENSE \
|
sample/tvdevice/web/tvcontrolSCPD.xml \
|
||||||
m4/libupnp.m4 \
|
sample/tvdevice/web/tvdevicedesc.xml \
|
||||||
|
sample/tvdevice/web/tvdevicepres.html \
|
||||||
|
sample/tvdevice/web/tvpictureSCPD.xml \
|
||||||
|
src/inc/inet_pton.h \
|
||||||
|
src/inet_pton.c \
|
||||||
src/win_dll.c
|
src/win_dll.c
|
||||||
|
|
||||||
|
|
||||||
CLEANFILES = \
|
|
||||||
IUpnpErrFile.txt \
|
CLEANFILES = IUpnpErrFile.txt IUpnpInfoFile.txt
|
||||||
IUpnpInfoFile.txt
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,173 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef ACTIONCOMPLETE_H
|
|
||||||
#define ACTIONCOMPLETE_H
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*
|
|
||||||
* \brief UpnpActionComplete object declararion.
|
|
||||||
*
|
|
||||||
* \author Marcelo Roberto Jimenez
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief The type of an UpnpActionComplete object.
|
|
||||||
*/
|
|
||||||
typedef struct s_UpnpActionComplete UpnpActionComplete;
|
|
||||||
|
|
||||||
|
|
||||||
#include "ixml.h" /* for IXML_Document */
|
|
||||||
#include "UpnpGlobal.h" /* for EXPORT_SPEC */
|
|
||||||
#include "UpnpString.h"
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Constructor.
|
|
||||||
*
|
|
||||||
* \return Pointer to the newly created object.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC UpnpActionComplete *UpnpActionComplete_new();
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Destructor.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC void UpnpActionComplete_delete(
|
|
||||||
/*! [in] \b this pointer. */
|
|
||||||
UpnpActionComplete *p);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Copy Constructor.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC UpnpActionComplete *UpnpActionComplete_dup(
|
|
||||||
/*! [in] \b this pointer. */
|
|
||||||
const UpnpActionComplete *p);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Assignment operator.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC void UpnpActionComplete_assign(
|
|
||||||
/*! [in] \b this pointer. */
|
|
||||||
UpnpActionComplete *p,
|
|
||||||
/*! [in] \b that pointer. */
|
|
||||||
const UpnpActionComplete *q);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Error code getter.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC int UpnpActionComplete_get_ErrCode(
|
|
||||||
/*! [in] \b this pointer. */
|
|
||||||
const UpnpActionComplete *p);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Error code setter.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC void UpnpActionComplete_set_ErrCode(
|
|
||||||
/*! [in] \b this pointer. */
|
|
||||||
UpnpActionComplete *p,
|
|
||||||
/*! [in] The error code to set. */
|
|
||||||
int n);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Control URL getter.
|
|
||||||
*
|
|
||||||
* \return The control URL string.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpActionComplete_get_CtrlUrl(
|
|
||||||
/*! [in] \b this pointer. */
|
|
||||||
const UpnpActionComplete *p);
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Control URL getter as a C string
|
|
||||||
*
|
|
||||||
* \return The control URL string.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC const char *UpnpActionComplete_get_CtrlUrl_cstr(
|
|
||||||
/*! [in] \b this pointer. */
|
|
||||||
const UpnpActionComplete *p);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Control URL setter.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC void UpnpActionComplete_set_CtrlUrl(
|
|
||||||
/*! [in] \b this pointer. */
|
|
||||||
UpnpActionComplete *p,
|
|
||||||
/*! [in] The control URL string to copy. */
|
|
||||||
const UpnpString *s);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Set the control URL from a null terminated C string.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC void UpnpActionComplete_strcpy_CtrlUrl(
|
|
||||||
/*! [in] \b this pointer. */
|
|
||||||
UpnpActionComplete *p,
|
|
||||||
/*! [in] The null terminated control URL C string to copy. */
|
|
||||||
const char *s);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief ActionRequest document getter.
|
|
||||||
*
|
|
||||||
* \return A pointer to the document object.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC IXML_Document *UpnpActionComplete_get_ActionRequest(
|
|
||||||
/*! [in] \b this pointer. */
|
|
||||||
const UpnpActionComplete *p);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief ActionRequest document setter.
|
|
||||||
*
|
|
||||||
* \note The ActionComplete object takes ownership of the document parameter,
|
|
||||||
* i.e. it is responsible for deleting it upon destruction.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC void UpnpActionComplete_set_ActionRequest(
|
|
||||||
/*! [in] \b this pointer. */
|
|
||||||
UpnpActionComplete *p,
|
|
||||||
/*! [in] Document to copy. */
|
|
||||||
IXML_Document *d);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief ActionResult document getter.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC IXML_Document *UpnpActionComplete_get_ActionResult(
|
|
||||||
/*! [in] \b this pointer. */
|
|
||||||
const UpnpActionComplete *p);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief ActionResult document setter.
|
|
||||||
*
|
|
||||||
* \note The ActionComplete object takes ownership of the document parameter,
|
|
||||||
* i.e. it is responsible for deleting it upon destruction.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC void UpnpActionComplete_set_ActionResult(
|
|
||||||
/*! [in] \b this pointer. */
|
|
||||||
UpnpActionComplete *p,
|
|
||||||
/*! [in] Document to copy. */
|
|
||||||
IXML_Document *d);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* ACTIONCOMPLETE_H */
|
|
||||||
|
|
||||||
@@ -1,96 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef ACTIONREQUEST_H
|
|
||||||
#define ACTIONREQUEST_H
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*
|
|
||||||
* \brief UpnpActionRequest object declaration.
|
|
||||||
*
|
|
||||||
* \author Marcelo Roberto Jimenez
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*! Returned as part of a \b UPNP_CONTROL_ACTION_COMPLETE callback. */
|
|
||||||
typedef struct s_UpnpActionRequest UpnpActionRequest;
|
|
||||||
|
|
||||||
|
|
||||||
#include "ixml.h" /* for IXML_Document */
|
|
||||||
#include "UpnpGlobal.h" /* for EXPORT_SPEC */
|
|
||||||
#include "UpnpInet.h" /* for sockaddr, sockaddr_storage */
|
|
||||||
#include "UpnpString.h"
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
/*! Constructor */
|
|
||||||
EXPORT_SPEC UpnpActionRequest *UpnpActionRequest_new();
|
|
||||||
|
|
||||||
/*! Destructor */
|
|
||||||
EXPORT_SPEC void UpnpActionRequest_delete(UpnpActionRequest *p);
|
|
||||||
|
|
||||||
/*! Copy Constructor */
|
|
||||||
EXPORT_SPEC UpnpActionRequest *UpnpActionRequest_dup(const UpnpActionRequest *p);
|
|
||||||
|
|
||||||
/*! Assignment operator */
|
|
||||||
EXPORT_SPEC void UpnpActionRequest_assign(UpnpActionRequest *p, const UpnpActionRequest *q);
|
|
||||||
|
|
||||||
/*! The result of the operation */
|
|
||||||
EXPORT_SPEC int UpnpActionRequest_get_ErrCode(const UpnpActionRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpActionRequest_set_ErrCode(UpnpActionRequest *p, int n);
|
|
||||||
|
|
||||||
/*! The socket number of the connection to the requestor */
|
|
||||||
EXPORT_SPEC int UpnpActionRequest_get_Socket(const UpnpActionRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpActionRequest_set_Socket(UpnpActionRequest *p, int n);
|
|
||||||
|
|
||||||
/*! The error string in case of error */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpActionRequest_get_ErrStr(const UpnpActionRequest *p);
|
|
||||||
EXPORT_SPEC const char *UpnpActionRequest_get_ErrStr_cstr(const UpnpActionRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpActionRequest_set_ErrStr(UpnpActionRequest *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpActionRequest_strcpy_ErrStr(UpnpActionRequest *p, const char *s);
|
|
||||||
|
|
||||||
/*! The Action Name */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpActionRequest_get_ActionName(const UpnpActionRequest *p);
|
|
||||||
EXPORT_SPEC const char *UpnpActionRequest_get_ActionName_cstr(const UpnpActionRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpActionRequest_set_ActionName(UpnpActionRequest *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpActionRequest_strcpy_ActionName(UpnpActionRequest *p, const char *s);
|
|
||||||
|
|
||||||
/*! The unique device ID */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpActionRequest_get_DevUDN(const UpnpActionRequest *p);
|
|
||||||
EXPORT_SPEC const char *UpnpActionRequest_get_DevUDN_cstr(const UpnpActionRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpActionRequest_set_DevUDN(UpnpActionRequest *p, const UpnpString *s);
|
|
||||||
|
|
||||||
/*! The service ID */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpActionRequest_get_ServiceID(const UpnpActionRequest *p);
|
|
||||||
EXPORT_SPEC const char *UpnpActionRequest_get_ServiceID_cstr(const UpnpActionRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpActionRequest_set_ServiceID(UpnpActionRequest *p, const UpnpString *s);
|
|
||||||
|
|
||||||
/*! The DOM document describing the action */
|
|
||||||
EXPORT_SPEC IXML_Document *UpnpActionRequest_get_ActionRequest(const UpnpActionRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpActionRequest_set_ActionRequest(UpnpActionRequest *p, IXML_Document *d);
|
|
||||||
|
|
||||||
/*! The DOM document describing the result of the action */
|
|
||||||
EXPORT_SPEC IXML_Document *UpnpActionRequest_get_ActionResult(const UpnpActionRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpActionRequest_set_ActionResult(UpnpActionRequest *p, IXML_Document *d);
|
|
||||||
|
|
||||||
/*! The DOM document containing the information from the SOAP header */
|
|
||||||
EXPORT_SPEC IXML_Document *UpnpActionRequest_get_SoapHeader(const UpnpActionRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpActionRequest_set_SoapHeader(UpnpActionRequest *p, IXML_Document *d);
|
|
||||||
|
|
||||||
/*! IP address of the control point requesting this action */
|
|
||||||
EXPORT_SPEC const struct sockaddr *UpnpActionRequest_get_CtrlPtIPAddr(const UpnpActionRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpActionRequest_set_CtrlPtIPAddr(UpnpActionRequest *p, const struct sockaddr *sa);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* ACTIONREQUEST_H */
|
|
||||||
|
|
||||||
@@ -1,112 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef DISCOVERY_H
|
|
||||||
#define DISCOVERY_H
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*
|
|
||||||
* \brief UpnpDiscovery object declararion.
|
|
||||||
*
|
|
||||||
* \author Marcelo Roberto Jimenez
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*! Returned in a \b UPNP_DISCOVERY_RESULT callback. */
|
|
||||||
typedef struct s_UpnpDiscovery UpnpDiscovery;
|
|
||||||
|
|
||||||
|
|
||||||
#include "UpnpGlobal.h" /* for EXPORT_SPEC */
|
|
||||||
#include "UpnpInet.h" /* for sockaddr, sockaddr_storage */
|
|
||||||
#include "UpnpString.h"
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
/*! Constructor */
|
|
||||||
EXPORT_SPEC UpnpDiscovery *UpnpDiscovery_new();
|
|
||||||
|
|
||||||
/*! Destructor */
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_delete(UpnpDiscovery *p);
|
|
||||||
|
|
||||||
/*! Copy Constructor */
|
|
||||||
EXPORT_SPEC UpnpDiscovery *UpnpDiscovery_dup(const UpnpDiscovery *p);
|
|
||||||
|
|
||||||
/*! Assignment operator */
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_assign(UpnpDiscovery *p, const UpnpDiscovery *q);
|
|
||||||
|
|
||||||
/*! The result code of the \b UpnpSearchAsync call. */
|
|
||||||
EXPORT_SPEC int UpnpDiscovery_get_ErrCode(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_set_ErrCode(UpnpDiscovery *p, int n);
|
|
||||||
|
|
||||||
/*! The expiration time of the advertisement. */
|
|
||||||
EXPORT_SPEC int UpnpDiscovery_get_Expires(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_set_Expires(UpnpDiscovery *p, int n);
|
|
||||||
|
|
||||||
/*! The unique device identifier. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpDiscovery_get_DeviceID(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC const char *UpnpDiscovery_get_DeviceID_cstr(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_set_DeviceID(UpnpDiscovery *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_strcpy_DeviceID(UpnpDiscovery *p, const char *s);
|
|
||||||
|
|
||||||
/*! The device type. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpDiscovery_get_DeviceType(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC const char *UpnpDiscovery_get_DeviceType_cstr(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_set_DeviceType(UpnpDiscovery *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_strcpy_DeviceType(UpnpDiscovery *p, const char *s);
|
|
||||||
|
|
||||||
/*! The ServiceType. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpDiscovery_get_ServiceType(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC const char *UpnpDiscovery_get_ServiceType_cstr(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_set_ServiceType(UpnpDiscovery *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_strcpy_ServiceType(UpnpDiscovery *p, const char *s);
|
|
||||||
|
|
||||||
/*! The service version. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpDiscovery_get_ServiceVer(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC const char *UpnpDiscovery_get_ServiceVer_cstr(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_set_ServiceVer(UpnpDiscovery *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_strcpy_ServiceVer(UpnpDiscovery *p, const char *s);
|
|
||||||
|
|
||||||
/*! The URL to the UPnP description document for the device. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpDiscovery_get_Location(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC const char *UpnpDiscovery_get_Location_cstr(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_set_Location(UpnpDiscovery *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_strcpy_Location(UpnpDiscovery *p, const char *s);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_strncpy_Location(UpnpDiscovery *p, const char *s, int n);
|
|
||||||
|
|
||||||
/*! The operating system the device is running. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpDiscovery_get_Os(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC const char *UpnpDiscovery_get_Os_cstr(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_set_Os(UpnpDiscovery *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_strcpy_Os(UpnpDiscovery *p, const char *s);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_strncpy_Os(UpnpDiscovery *p, const char *s, int n);
|
|
||||||
|
|
||||||
/*! Date when the response was generated. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpDiscovery_get_Date(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC const char *UpnpDiscovery_get_Date_cstr(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_set_Date(UpnpDiscovery *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_strcpy_Date(UpnpDiscovery *p, const char *s);
|
|
||||||
|
|
||||||
/*! Confirmation that the MAN header was understood by the device. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpDiscovery_get_Ext(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC const char *UpnpDiscovery_get_Ext_cstr(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_set_Ext(UpnpDiscovery *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_strcpy_Ext(UpnpDiscovery *p, const char *s);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_strncpy_Ext(UpnpDiscovery *p, const char *s, int n);
|
|
||||||
|
|
||||||
/*! The host address of the device responding to the search. */
|
|
||||||
EXPORT_SPEC const struct sockaddr *UpnpDiscovery_get_DestAddr(const UpnpDiscovery *p);
|
|
||||||
EXPORT_SPEC void UpnpDiscovery_set_DestAddr(UpnpDiscovery *p, const struct sockaddr *sa);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* DISCOVERY_H */
|
|
||||||
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef EVENT_H
|
|
||||||
#define EVENT_H
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*
|
|
||||||
* \brief UpnpEvent object declararion.
|
|
||||||
*
|
|
||||||
* \author Marcelo Roberto Jimenez
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*! Returned along with a \b UPNP_EVENT_RECEIVED callback. */
|
|
||||||
typedef struct s_UpnpEvent UpnpEvent;
|
|
||||||
|
|
||||||
|
|
||||||
#include "ixml.h" /* for IXML_Document */
|
|
||||||
#include "UpnpGlobal.h" /* for EXPORT_SPEC */
|
|
||||||
#include "UpnpString.h"
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
/*! Constructor */
|
|
||||||
EXPORT_SPEC UpnpEvent *UpnpEvent_new();
|
|
||||||
|
|
||||||
/*! Destructor */
|
|
||||||
EXPORT_SPEC void UpnpEvent_delete(UpnpEvent *p);
|
|
||||||
|
|
||||||
/*! Copy Constructor */
|
|
||||||
EXPORT_SPEC UpnpEvent *UpnpEvent_dup(const UpnpEvent *p);
|
|
||||||
|
|
||||||
/*! Assignment operator */
|
|
||||||
EXPORT_SPEC void UpnpEvent_assign(UpnpEvent *p, const UpnpEvent *q);
|
|
||||||
|
|
||||||
/*! The event sequence number. */
|
|
||||||
EXPORT_SPEC int UpnpEvent_get_EventKey(const UpnpEvent *p);
|
|
||||||
EXPORT_SPEC void UpnpEvent_set_EventKey(UpnpEvent *p, int n);
|
|
||||||
|
|
||||||
/*! The DOM tree representing the changes generating the event. */
|
|
||||||
EXPORT_SPEC IXML_Document *UpnpEvent_get_ChangedVariables(const UpnpEvent *p);
|
|
||||||
EXPORT_SPEC void UpnpEvent_set_ChangedVariables(UpnpEvent *p, IXML_Document *d);
|
|
||||||
|
|
||||||
/*! The subscription ID for this subscription. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpEvent_get_SID(const UpnpEvent *p);
|
|
||||||
EXPORT_SPEC const char *UpnpEvent_get_SID_cstr(const UpnpEvent *p);
|
|
||||||
EXPORT_SPEC void UpnpEvent_set_SID(UpnpEvent *p, const UpnpString *s);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* EVENT_H */
|
|
||||||
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef EVENTSUBSCRIBE_H
|
|
||||||
#define EVENTSUBSCRIBE_H
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*
|
|
||||||
* \brief UpnpEventSubscribe object declararion.
|
|
||||||
*
|
|
||||||
* \author Marcelo Roberto Jimenez
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*! Returned along with a \b UPNP_EVENT_SUBSCRIBE_COMPLETE or
|
|
||||||
* \b UPNP_EVENT_UNSUBSCRIBE_COMPLETE callback. */
|
|
||||||
typedef struct s_UpnpEventSubscribe UpnpEventSubscribe;
|
|
||||||
|
|
||||||
|
|
||||||
#include "UpnpGlobal.h" /* for EXPORT_SPEC */
|
|
||||||
#include "UpnpString.h"
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
/*! Constructor */
|
|
||||||
EXPORT_SPEC UpnpEventSubscribe *UpnpEventSubscribe_new();
|
|
||||||
|
|
||||||
/*! Destructor */
|
|
||||||
EXPORT_SPEC void UpnpEventSubscribe_delete(UpnpEventSubscribe *p);
|
|
||||||
|
|
||||||
/*! Copy Constructor */
|
|
||||||
EXPORT_SPEC UpnpEventSubscribe *UpnpEventSubscribe_dup(const UpnpEventSubscribe *p);
|
|
||||||
|
|
||||||
/*! Assignment operator */
|
|
||||||
EXPORT_SPEC void UpnpEventSubscribe_assign(UpnpEventSubscribe *p, const UpnpEventSubscribe *q);
|
|
||||||
|
|
||||||
/*! The result of the operation. */
|
|
||||||
EXPORT_SPEC int UpnpEventSubscribe_get_ErrCode(const UpnpEventSubscribe *p);
|
|
||||||
EXPORT_SPEC void UpnpEventSubscribe_set_ErrCode(UpnpEventSubscribe *p, int n);
|
|
||||||
|
|
||||||
/*! The actual subscription time (for subscriptions only). */
|
|
||||||
EXPORT_SPEC int UpnpEventSubscribe_get_TimeOut(const UpnpEventSubscribe *p);
|
|
||||||
EXPORT_SPEC void UpnpEventSubscribe_set_TimeOut(UpnpEventSubscribe *p, int n);
|
|
||||||
|
|
||||||
/*! The SID for this subscription. For subscriptions, this only
|
|
||||||
* contains a valid SID if the \b Upnp_EventSubscribe.result field
|
|
||||||
* contains a \b UPNP_E_SUCCESS result code. For unsubscriptions,
|
|
||||||
* this contains the SID from which the subscription is being
|
|
||||||
* unsubscribed. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpEventSubscribe_get_SID(const UpnpEventSubscribe *p);
|
|
||||||
EXPORT_SPEC const char *UpnpEventSubscribe_get_SID_cstr(const UpnpEventSubscribe *p);
|
|
||||||
EXPORT_SPEC void UpnpEventSubscribe_set_SID(UpnpEventSubscribe *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpEventSubscribe_strcpy_SID(UpnpEventSubscribe *p, const char *s);
|
|
||||||
|
|
||||||
|
|
||||||
/*! The event URL being subscribed to or removed from. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpEventSubscribe_get_PublisherUrl(const UpnpEventSubscribe *p);
|
|
||||||
EXPORT_SPEC const char *UpnpEventSubscribe_get_PublisherUrl_cstr(const UpnpEventSubscribe *p);
|
|
||||||
EXPORT_SPEC void UpnpEventSubscribe_set_PublisherUrl(UpnpEventSubscribe *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpEventSubscribe_strcpy_PublisherUrl(UpnpEventSubscribe *p, const char *s);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* EVENTSUBSCRIBE_H */
|
|
||||||
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef FILEINFO_H
|
|
||||||
#define FILEINFO_H
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*
|
|
||||||
* \brief UpnpFileInfo object declararion.
|
|
||||||
*
|
|
||||||
* \author Marcelo Roberto Jimenez
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*! Detailed description of this class should go here */
|
|
||||||
typedef struct s_UpnpFileInfo UpnpFileInfo;
|
|
||||||
|
|
||||||
|
|
||||||
#include "ixml.h" /* for DOMString */
|
|
||||||
#include "UpnpGlobal.h" /* for EXPORT_SPEC */
|
|
||||||
|
|
||||||
|
|
||||||
#include <sys/types.h> /* for off_t */
|
|
||||||
#include <time.h> /* for time_t */
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
/*! Constructor */
|
|
||||||
EXPORT_SPEC UpnpFileInfo *UpnpFileInfo_new();
|
|
||||||
|
|
||||||
/*! Destructor */
|
|
||||||
EXPORT_SPEC void UpnpFileInfo_delete(UpnpFileInfo *p);
|
|
||||||
|
|
||||||
/*! Copy Constructor */
|
|
||||||
EXPORT_SPEC UpnpFileInfo *UpnpFileInfo_dup(const UpnpFileInfo *p);
|
|
||||||
|
|
||||||
/*! Assignment operator */
|
|
||||||
EXPORT_SPEC void UpnpFileInfo_assign(UpnpFileInfo *p, const UpnpFileInfo *q);
|
|
||||||
|
|
||||||
/*! The length of the file. A length less than 0 indicates the size
|
|
||||||
* is unknown, and data will be sent until 0 bytes are returned from
|
|
||||||
* a read call. */
|
|
||||||
EXPORT_SPEC off_t UpnpFileInfo_get_FileLength(const UpnpFileInfo *p);
|
|
||||||
EXPORT_SPEC void UpnpFileInfo_set_FileLength(UpnpFileInfo *p, off_t l);
|
|
||||||
|
|
||||||
/*! The time at which the contents of the file was modified;
|
|
||||||
* The time system is always local (not GMT). */
|
|
||||||
EXPORT_SPEC const time_t *UpnpFileInfo_get_LastModified(const UpnpFileInfo *p);
|
|
||||||
EXPORT_SPEC void UpnpFileInfo_set_LastModified(UpnpFileInfo *p, const time_t *t);
|
|
||||||
|
|
||||||
/*! If the file is a directory, \b is_directory contains
|
|
||||||
* a non-zero value. For a regular file, it should be 0. */
|
|
||||||
EXPORT_SPEC int UpnpFileInfo_get_IsDirectory(const UpnpFileInfo *p);
|
|
||||||
EXPORT_SPEC void UpnpFileInfo_set_IsDirectory(UpnpFileInfo *p, int b);
|
|
||||||
|
|
||||||
/*! If the file or directory is readable, this contains
|
|
||||||
* a non-zero value. If unreadable, it should be set to 0. */
|
|
||||||
EXPORT_SPEC int UpnpFileInfo_get_IsReadable(const UpnpFileInfo *p);
|
|
||||||
EXPORT_SPEC void UpnpFileInfo_set_IsReadable(UpnpFileInfo *p, int b);
|
|
||||||
|
|
||||||
/*! The content type of the file. */
|
|
||||||
EXPORT_SPEC const DOMString UpnpFileInfo_get_ContentType(const UpnpFileInfo *p);
|
|
||||||
EXPORT_SPEC const char *UpnpFileInfo_get_ContentType_cstr(const UpnpFileInfo *p);
|
|
||||||
EXPORT_SPEC void UpnpFileInfo_set_ContentType(UpnpFileInfo *p, const DOMString s);
|
|
||||||
|
|
||||||
/*! Additional HTTP headers to return. Each header line should be
|
|
||||||
* followed by "\r\n". */
|
|
||||||
EXPORT_SPEC const DOMString UpnpFileInfo_get_ExtraHeaders(const UpnpFileInfo *p);
|
|
||||||
EXPORT_SPEC const char *UpnpFileInfo_get_ExtraHeaders_cstr(const UpnpFileInfo *p);
|
|
||||||
EXPORT_SPEC void UpnpFileInfo_set_ExtraHeaders(UpnpFileInfo *p, const DOMString s);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* FILEINFO_H */
|
|
||||||
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef STATEVARCOMPLETE_H
|
|
||||||
#define STATEVARCOMPLETE_H
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*
|
|
||||||
* \brief UpnpStateVarComplete object declararion.
|
|
||||||
*
|
|
||||||
* \author Marcelo Roberto Jimenez
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*! Represents the reply for the current value of a state variable in an
|
|
||||||
* asynchronous call. */
|
|
||||||
typedef struct s_UpnpStateVarComplete UpnpStateVarComplete;
|
|
||||||
|
|
||||||
|
|
||||||
#include "ixml.h" /* for DOMString */
|
|
||||||
#include "UpnpGlobal.h" /* for EXPORT_SPEC */
|
|
||||||
#include "UpnpString.h"
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
/*! Constructor */
|
|
||||||
EXPORT_SPEC UpnpStateVarComplete *UpnpStateVarComplete_new();
|
|
||||||
|
|
||||||
/*! Destructor */
|
|
||||||
EXPORT_SPEC void UpnpStateVarComplete_delete(UpnpStateVarComplete *p);
|
|
||||||
|
|
||||||
/*! Copy Constructor */
|
|
||||||
EXPORT_SPEC UpnpStateVarComplete *UpnpStateVarComplete_dup(const UpnpStateVarComplete *p);
|
|
||||||
|
|
||||||
/*! Assignment operator */
|
|
||||||
EXPORT_SPEC void UpnpStateVarComplete_assign(UpnpStateVarComplete *p, const UpnpStateVarComplete *q);
|
|
||||||
|
|
||||||
/*! The result of the operation */
|
|
||||||
EXPORT_SPEC int UpnpStateVarComplete_get_ErrCode(const UpnpStateVarComplete *p);
|
|
||||||
EXPORT_SPEC void UpnpStateVarComplete_set_ErrCode(UpnpStateVarComplete *p, int n);
|
|
||||||
|
|
||||||
/*! The control URL for the service. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpStateVarComplete_get_CtrlUrl(const UpnpStateVarComplete *p);
|
|
||||||
EXPORT_SPEC const char *UpnpStateVarComplete_get_CtrlUrl_cstr(const UpnpStateVarComplete *p);
|
|
||||||
EXPORT_SPEC void UpnpStateVarComplete_set_CtrlUrl(UpnpStateVarComplete *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpStateVarComplete_strcpy_CtrlUrl(UpnpStateVarComplete *p, const char *s);
|
|
||||||
|
|
||||||
/*! The name of the variable. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpStateVarComplete_get_StateVarName(const UpnpStateVarComplete *p);
|
|
||||||
EXPORT_SPEC const char *UpnpStateVarComplete_get_StateVarName_cstr(const UpnpStateVarComplete *p);
|
|
||||||
EXPORT_SPEC void UpnpStateVarComplete_set_StateVarName(UpnpStateVarComplete *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpStateVarComplete_strcpy_StateVarName(UpnpStateVarComplete *p, const char *s);
|
|
||||||
|
|
||||||
/*! The current value of the variable. This needs to be allocated by
|
|
||||||
* the caller. When finished with it, the SDK frees this \b DOMString. */
|
|
||||||
EXPORT_SPEC const DOMString UpnpStateVarComplete_get_CurrentVal(const UpnpStateVarComplete *p);
|
|
||||||
EXPORT_SPEC const char *UpnpStateVarComplete_get_CurrentVal_cstr(const UpnpStateVarComplete *p);
|
|
||||||
EXPORT_SPEC void UpnpStateVarComplete_set_CurrentVal(UpnpStateVarComplete *p, const DOMString s);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* STATEVARCOMPLETE_H */
|
|
||||||
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef STATEVARREQUEST_H
|
|
||||||
#define STATEVARREQUEST_H
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*
|
|
||||||
* \brief UpnpStateVarRequest object declararion.
|
|
||||||
*
|
|
||||||
* \author Marcelo Roberto Jimenez
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*! Represents the request for current value of a state variable in a service
|
|
||||||
* state table. */
|
|
||||||
typedef struct s_UpnpStateVarRequest UpnpStateVarRequest;
|
|
||||||
|
|
||||||
|
|
||||||
#include "ixml.h" /* for DOMString */
|
|
||||||
#include "UpnpGlobal.h" /* for EXPORT_SPEC */
|
|
||||||
#include "UpnpInet.h" /* for sockaddr, sockaddr_storage */
|
|
||||||
#include "UpnpString.h"
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
/*! Constructor */
|
|
||||||
EXPORT_SPEC UpnpStateVarRequest *UpnpStateVarRequest_new();
|
|
||||||
|
|
||||||
/*! Destructor */
|
|
||||||
EXPORT_SPEC void UpnpStateVarRequest_delete(UpnpStateVarRequest *p);
|
|
||||||
|
|
||||||
/*! Copy Constructor */
|
|
||||||
EXPORT_SPEC UpnpStateVarRequest *UpnpStateVarRequest_dup(const UpnpStateVarRequest *p);
|
|
||||||
|
|
||||||
/*! Assignment operator */
|
|
||||||
EXPORT_SPEC void UpnpStateVarRequest_assign(UpnpStateVarRequest *p, const UpnpStateVarRequest *q);
|
|
||||||
|
|
||||||
/*! The result of the operation */
|
|
||||||
EXPORT_SPEC int UpnpStateVarRequest_get_ErrCode(const UpnpStateVarRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpStateVarRequest_set_ErrCode(UpnpStateVarRequest *p, int n);
|
|
||||||
|
|
||||||
/*! The socket number of the connection to the requestor */
|
|
||||||
EXPORT_SPEC int UpnpStateVarRequest_get_Socket(const UpnpStateVarRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpStateVarRequest_set_Socket(UpnpStateVarRequest *p, int n);
|
|
||||||
|
|
||||||
/*! The error string in case of error */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpStateVarRequest_get_ErrStr(const UpnpStateVarRequest *p);
|
|
||||||
EXPORT_SPEC const char *UpnpStateVarRequest_get_ErrStr_cstr(const UpnpStateVarRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpStateVarRequest_set_ErrStr(UpnpStateVarRequest *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpStateVarRequest_strcpy_ErrStr(UpnpStateVarRequest *p, const char *s);
|
|
||||||
|
|
||||||
/*! The unique device ID */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpStateVarRequest_get_DevUDN(const UpnpStateVarRequest *p);
|
|
||||||
EXPORT_SPEC const char *UpnpStateVarRequest_get_DevUDN_cstr(const UpnpStateVarRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpStateVarRequest_set_DevUDN(UpnpStateVarRequest *p, const UpnpString *s);
|
|
||||||
|
|
||||||
/*! The service ID */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpStateVarRequest_get_ServiceID(const UpnpStateVarRequest *p);
|
|
||||||
EXPORT_SPEC const char *UpnpStateVarRequest_get_ServiceID_cstr(const UpnpStateVarRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpStateVarRequest_set_ServiceID(UpnpStateVarRequest *p, const UpnpString *s);
|
|
||||||
|
|
||||||
/*! The name of the variable. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpStateVarRequest_get_StateVarName(const UpnpStateVarRequest *p);
|
|
||||||
EXPORT_SPEC const char *UpnpStateVarRequest_get_StateVarName_cstr(const UpnpStateVarRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpStateVarRequest_set_StateVarName(UpnpStateVarRequest *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpStateVarRequest_strcpy_StateVarName(UpnpStateVarRequest *p, const char *s);
|
|
||||||
|
|
||||||
/*! IP address of sender requesting the state variable. */
|
|
||||||
EXPORT_SPEC const struct sockaddr *UpnpStateVarRequest_get_CtrlPtIPAddr(const UpnpStateVarRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpStateVarRequest_set_CtrlPtIPAddr(UpnpStateVarRequest *p, const struct sockaddr *sa);
|
|
||||||
|
|
||||||
/*! The current value of the variable. This needs to be allocated by
|
|
||||||
* the caller. When finished with it, the SDK frees this \b DOMString. */
|
|
||||||
EXPORT_SPEC const DOMString UpnpStateVarRequest_get_CurrentVal(const UpnpStateVarRequest *p);
|
|
||||||
EXPORT_SPEC const char *UpnpStateVarRequest_get_CurrentVal_cstr(const UpnpStateVarRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpStateVarRequest_set_CurrentVal(UpnpStateVarRequest *p, const DOMString s);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* STATEVARREQUEST_H */
|
|
||||||
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef SUBSCRIPTIONREQUEST_H
|
|
||||||
#define SUBSCRIPTIONREQUEST_H
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*
|
|
||||||
* \brief UpnpSubscriptionRequest object declararion.
|
|
||||||
*
|
|
||||||
* \author Marcelo Roberto Jimenez
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/*! Returned along with a \b UPNP_EVENT_SUBSCRIPTION_REQUEST callback. */
|
|
||||||
typedef struct s_UpnpSubscriptionRequest UpnpSubscriptionRequest;
|
|
||||||
|
|
||||||
|
|
||||||
#include "UpnpGlobal.h" /* for EXPORT_SPEC */
|
|
||||||
#include "UpnpString.h"
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
/*! Constructor */
|
|
||||||
EXPORT_SPEC UpnpSubscriptionRequest *UpnpSubscriptionRequest_new();
|
|
||||||
|
|
||||||
/*! Destructor */
|
|
||||||
EXPORT_SPEC void UpnpSubscriptionRequest_delete(UpnpSubscriptionRequest *p);
|
|
||||||
|
|
||||||
/*! Copy Constructor */
|
|
||||||
EXPORT_SPEC UpnpSubscriptionRequest *UpnpSubscriptionRequest_dup(const UpnpSubscriptionRequest *p);
|
|
||||||
|
|
||||||
/*! Assignment operator */
|
|
||||||
EXPORT_SPEC void UpnpSubscriptionRequest_assign(UpnpSubscriptionRequest *p, const UpnpSubscriptionRequest *q);
|
|
||||||
|
|
||||||
/*! The identifier for the service being subscribed to. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpSubscriptionRequest_get_ServiceId(const UpnpSubscriptionRequest *p);
|
|
||||||
EXPORT_SPEC const char *UpnpSubscriptionRequest_get_ServiceId_cstr(const UpnpSubscriptionRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpSubscriptionRequest_set_ServiceId(UpnpSubscriptionRequest *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpSubscriptionRequest_strcpy_ServiceId(UpnpSubscriptionRequest *p, const char *s);
|
|
||||||
|
|
||||||
/*! Universal device name. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpSubscriptionRequest_get_UDN(const UpnpSubscriptionRequest *p);
|
|
||||||
EXPORT_SPEC const char *UpnpSubscriptionRequest_get_UDN_cstr(const UpnpSubscriptionRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpSubscriptionRequest_set_UDN(UpnpSubscriptionRequest *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpSubscriptionRequest_strcpy_UDN(UpnpSubscriptionRequest *p, const char *s);
|
|
||||||
|
|
||||||
/*! The assigned subscription ID for this subscription. */
|
|
||||||
EXPORT_SPEC const UpnpString *UpnpSubscriptionRequest_get_SID(const UpnpSubscriptionRequest *p);
|
|
||||||
EXPORT_SPEC const char *UpnpSubscriptionRequest_get_SID_cstr(const UpnpSubscriptionRequest *p);
|
|
||||||
EXPORT_SPEC void UpnpSubscriptionRequest_set_SID(UpnpSubscriptionRequest *p, const UpnpString *s);
|
|
||||||
EXPORT_SPEC void UpnpSubscriptionRequest_strcpy_SID(UpnpSubscriptionRequest *p, const char *s);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* SUBSCRIPTIONREQUEST_H */
|
|
||||||
|
|
||||||
@@ -1,120 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef UPNPGLOBAL_H
|
|
||||||
#define UPNPGLOBAL_H
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*
|
|
||||||
* \brief Defines constants that for some reason are not defined on some systems.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#if defined MYLIB_LARGEFILE_SENSITIVE && _FILE_OFFSET_BITS+0 != 64
|
|
||||||
#if defined __GNUC__
|
|
||||||
#warning libupnp requires largefile mode - use AC_SYS_LARGEFILE
|
|
||||||
#else
|
|
||||||
#error libupnp requires largefile mode - use AC_SYS_LARGEFILE
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
/*
|
|
||||||
* EXPORT_SPEC
|
|
||||||
*/
|
|
||||||
#ifdef UPNP_STATIC_LIB
|
|
||||||
#define EXPORT_SPEC
|
|
||||||
#else /* UPNP_STATIC_LIB */
|
|
||||||
#ifdef LIBUPNP_EXPORTS
|
|
||||||
/*! set up declspec for dll export to make functions
|
|
||||||
* visible to library users */
|
|
||||||
#define EXPORT_SPEC __declspec(dllexport)
|
|
||||||
#else /* LIBUPNP_EXPORTS */
|
|
||||||
#define EXPORT_SPEC __declspec(dllimport)
|
|
||||||
#endif /* LIBUPNP_EXPORTS */
|
|
||||||
#endif /* UPNP_STATIC_LIB */
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* UPNP_INLINE
|
|
||||||
* PRId64
|
|
||||||
* PRIzu
|
|
||||||
*/
|
|
||||||
#ifdef UPNP_USE_MSVCPP
|
|
||||||
/* define some things the M$ VC++ doesn't know */
|
|
||||||
#define UPNP_INLINE
|
|
||||||
typedef __int64 int64_t;
|
|
||||||
#define PRId64 "I64d"
|
|
||||||
#define PRIzu "lu"
|
|
||||||
#endif /* UPNP_USE_MSVCPP */
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef UPNP_USE_BCBPP
|
|
||||||
/* define some things Borland Builder doesn't know */
|
|
||||||
#define UPNP_INLINE inline
|
|
||||||
typedef __int64 int64_t;
|
|
||||||
#warning The Borland C compiler is probably broken on PRId64,
|
|
||||||
#warning please someone provide a proper fix here
|
|
||||||
#define PRId64 "I64d"
|
|
||||||
#define PRIzu "zu"
|
|
||||||
#endif /* UPNP_USE_BCBPP */
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __GNUC__
|
|
||||||
#define UPNP_INLINE inline
|
|
||||||
|
|
||||||
/* Note with PRIzu that in the case of Mingw32, it's the MS C
|
|
||||||
* runtime printf which ends up getting called, not the glibc
|
|
||||||
* printf, so it genuinely doesn't have "zu"
|
|
||||||
*/
|
|
||||||
#define PRIzu "lu"
|
|
||||||
#endif /* __GNUC__ */
|
|
||||||
#else
|
|
||||||
/*!
|
|
||||||
* \brief Export functions on WIN32 DLLs.
|
|
||||||
*
|
|
||||||
* Every funtion that belongs to the library API must use this
|
|
||||||
* definition upon declaration or it will not be exported on WIN32
|
|
||||||
* DLLs.
|
|
||||||
*/
|
|
||||||
#define EXPORT_SPEC
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Declares an inline function.
|
|
||||||
*
|
|
||||||
* Surprisingly, there are some compilers that do not understand the
|
|
||||||
* inline keyword. This definition makes the use of this keyword
|
|
||||||
* portable to these systems.
|
|
||||||
*/
|
|
||||||
#define UPNP_INLINE inline
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Supply the PRId64 printf() macro.
|
|
||||||
*
|
|
||||||
* MSVC still does not know about this.
|
|
||||||
*/
|
|
||||||
/* #define PRId64 PRId64 */
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Supply the PRIzu printf() macro.
|
|
||||||
*
|
|
||||||
* This macro was invented so that we can live a little longer with
|
|
||||||
* MSVC lack of C99. "z" is the correct printf() size specifier for
|
|
||||||
* the size_t type.
|
|
||||||
*/
|
|
||||||
#define PRIzu "zu"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Defining this macro here gives some interesting information about unused
|
|
||||||
* functions in the code. Of course, this should never go uncommented on a
|
|
||||||
* release.
|
|
||||||
*/
|
|
||||||
/*#define inline*/
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* UPNPGLOBAL_H */
|
|
||||||
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef UPNPINET_H
|
|
||||||
#define UPNPINET_H
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*
|
|
||||||
* \brief Provides a platform independent way to include TCP/IP types and functions.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
#include <winsock2.h>
|
|
||||||
#include <Ws2tcpip.h>
|
|
||||||
#else
|
|
||||||
#include <sys/param.h>
|
|
||||||
#if (defined(BSD) && BSD >= 199306) || defined (__FreeBSD_kernel__)
|
|
||||||
#include <ifaddrs.h>
|
|
||||||
/* Do not move or remove the include below for "sys/socket"!
|
|
||||||
* Will break FreeBSD builds. */
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#endif
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* UPNPINET_H */
|
|
||||||
|
|
||||||
@@ -1,133 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef STRING_H
|
|
||||||
#define STRING_H
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \defgroup UpnpString The UpnpString Class
|
|
||||||
*
|
|
||||||
* \brief Implements string operations in the UPnP library.
|
|
||||||
*
|
|
||||||
* \author Marcelo Roberto Jimenez
|
|
||||||
*
|
|
||||||
* \version 1.0
|
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*
|
|
||||||
* \file
|
|
||||||
*
|
|
||||||
* \brief UpnpString object declarartion.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "UpnpGlobal.h" /* for EXPORT_SPEC */
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Type of the string objects inside libupnp.
|
|
||||||
*/
|
|
||||||
typedef struct s_UpnpString UpnpString;
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Constructor.
|
|
||||||
*
|
|
||||||
* \return A pointer to a new allocated object.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC UpnpString *UpnpString_new();
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Destructor.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC void UpnpString_delete(
|
|
||||||
/*! [in] The \em \b this pointer. */
|
|
||||||
UpnpString *p);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Copy Constructor.
|
|
||||||
*
|
|
||||||
* \return A pointer to a new allocated copy of the original object.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC UpnpString *UpnpString_dup(
|
|
||||||
/*! [in] The \em \b this pointer. */
|
|
||||||
const UpnpString *p);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Assignment operator.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC void UpnpString_assign(
|
|
||||||
/*! [in] The \em \b this pointer. */
|
|
||||||
UpnpString *p,
|
|
||||||
/*! [in] The \em \b that pointer. */
|
|
||||||
const UpnpString *q);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Returns the length of the string.
|
|
||||||
*
|
|
||||||
* \return The length of the string.
|
|
||||||
* */
|
|
||||||
EXPORT_SPEC int UpnpString_get_Length(
|
|
||||||
/*! [in] The \em \b this pointer. */
|
|
||||||
const UpnpString *p);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Returns the pointer to char.
|
|
||||||
*
|
|
||||||
* \return The pointer to char.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC const char *UpnpString_get_String(
|
|
||||||
/*! [in] The \em \b this pointer. */
|
|
||||||
const UpnpString *p);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Sets the string from a pointer to char.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC void UpnpString_set_String(
|
|
||||||
/*! [in] The \em \b this pointer. */
|
|
||||||
UpnpString *p,
|
|
||||||
/*! [in] (char *) to copy from. */
|
|
||||||
const char *s);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Sets the string from a pointer to char using a maximum of N chars.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC void UpnpString_set_StringN(
|
|
||||||
/*! [in] The \em \b this pointer. */
|
|
||||||
UpnpString *p,
|
|
||||||
/*! [in] (char *) to copy from. */
|
|
||||||
const char *s,
|
|
||||||
/*! Maximum number of chars to copy.*/
|
|
||||||
int n);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Clears the string, sets its size to zero.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC void UpnpString_clear(
|
|
||||||
/*! [in] The \em \b this pointer. */
|
|
||||||
UpnpString *p);
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
/* @} UpnpString The UpnpString API */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* STRING_H */
|
|
||||||
|
|
||||||
3860
upnp/inc/upnp.h
3860
upnp/inc/upnp.h
File diff suppressed because it is too large
Load Diff
@@ -1,34 +1,34 @@
|
|||||||
/* -*- C -*- */
|
// -*- C -*-
|
||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2006 R<>mi Turboult <r3mi@users.sourceforge.net>
|
// Copyright (c) 2006 R<>mi Turboult <r3mi@users.sourceforge.net>
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* * Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* * Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifndef UPNP_CONFIG_H
|
#ifndef UPNP_CONFIG_H
|
||||||
#define UPNP_CONFIG_H
|
#define UPNP_CONFIG_H
|
||||||
@@ -91,5 +91,6 @@
|
|||||||
#undef UPNP_HAVE_TOOLS
|
#undef UPNP_HAVE_TOOLS
|
||||||
|
|
||||||
|
|
||||||
#endif /* UPNP_CONFIG_H */
|
#endif // UPNP_CONFIG_H
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,66 +1,59 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* Copyright (c) 2006 R<>mi Turboult <r3mi@users.sourceforge.net>
|
// Copyright (c) 2006 R<>mi Turboult <r3mi@users.sourceforge.net>
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifndef UPNP_DEBUG_H
|
#ifndef UPNP_DEBUG_H
|
||||||
#define UPNP_DEBUG_H
|
#define UPNP_DEBUG_H
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \file
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "ThreadPool.h"
|
|
||||||
#include "upnpconfig.h"
|
#include "upnpconfig.h"
|
||||||
#include "UpnpGlobal.h" /* for UPNP_INLINE */
|
|
||||||
|
|
||||||
|
// Function declarations only if debug compiled into the library
|
||||||
|
#if UPNP_HAVE_DEBUG
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/** \name Other debugging features
|
/** @name Other debugging features
|
||||||
*
|
The UPnP SDK contains other features to aid in debugging.
|
||||||
* The UPnP SDK contains other features to aid in debugging.
|
|
||||||
*/
|
*/
|
||||||
/*@{*/
|
|
||||||
|
|
||||||
/** \name Upnp_LogLevel
|
//@{
|
||||||
|
|
||||||
|
/** @name Upnp_LogLevel
|
||||||
* The user has the option to select 4 different types of debugging levels,
|
* The user has the option to select 4 different types of debugging levels,
|
||||||
* see \c UpnpSetLogLevel.
|
* see {\tt UpnpSetLogLevel}.
|
||||||
* The critical level will show only those messages
|
* The critical level will show only those messages
|
||||||
* which can halt the normal processing of the library, like memory
|
* which can halt the normal processing of the library, like memory
|
||||||
* allocation errors. The remaining three levels are just for debugging
|
* allocation errors. The remaining three levels are just for debugging
|
||||||
@@ -69,246 +62,197 @@ extern "C" {
|
|||||||
* Info Level displays the other important operational information
|
* Info Level displays the other important operational information
|
||||||
* regarding the working of the library. If the user selects All,
|
* regarding the working of the library. If the user selects All,
|
||||||
* then the library displays all the debugging information that it has.
|
* then the library displays all the debugging information that it has.
|
||||||
* \li \c UPNP_CRITICAL [0]
|
* \begin{itemize}
|
||||||
* \li \c UPNP_PACKET [1]
|
* \item {\tt UPNP_CRITICAL [0]}
|
||||||
* \li \c UPNP_INFO [2]
|
* \item {\tt UPNP_PACKET [1]}
|
||||||
* \li \c UPNP_ALL [3]
|
* \item {\tt UPNP_INFO [2]}
|
||||||
|
* \item {\tt UPNP_ALL [3]}
|
||||||
|
* \end{itemize}
|
||||||
*/
|
*/
|
||||||
typedef enum Upnp_Module {
|
|
||||||
SSDP,
|
|
||||||
SOAP,
|
|
||||||
GENA,
|
|
||||||
TPOOL,
|
|
||||||
MSERV,
|
|
||||||
DOM,
|
|
||||||
API,
|
|
||||||
HTTP
|
|
||||||
} Dbg_Module;
|
|
||||||
|
|
||||||
|
typedef enum Upnp_Module {SSDP,SOAP,GENA,TPOOL,MSERV,DOM,API, HTTP} Dbg_Module;
|
||||||
/*@{*/
|
//@{
|
||||||
typedef enum Upnp_LogLevel_e {
|
typedef enum Upnp_LogLevel_e {
|
||||||
UPNP_CRITICAL,
|
UPNP_CRITICAL,
|
||||||
UPNP_PACKET,
|
UPNP_PACKET,
|
||||||
UPNP_INFO,
|
UPNP_INFO,
|
||||||
UPNP_ALL
|
UPNP_ALL
|
||||||
} Upnp_LogLevel;
|
} Upnp_LogLevel;
|
||||||
/*@}*/
|
//@}
|
||||||
|
|
||||||
|
// for backward compatibility
|
||||||
|
#define Dbg_Level Upnp_LogLevel
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Default log level : see \c Upnp_LogLevel
|
* Default log level : see {\tt Upnp_LogLevel}
|
||||||
*/
|
*/
|
||||||
#define UPNP_DEFAULT_LOG_LEVEL UPNP_ALL
|
#define UPNP_DEFAULT_LOG_LEVEL UPNP_ALL
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/***************************************************************************
|
||||||
* \brief Initialize the log files.
|
* Function : UpnpInitLog
|
||||||
*
|
*
|
||||||
* \return -1 if fails or UPNP_E_SUCCESS if succeeds.
|
* Parameters: void
|
||||||
*/
|
|
||||||
#ifdef DEBUG
|
|
||||||
int UpnpInitLog(void);
|
|
||||||
#else
|
|
||||||
static UPNP_INLINE int UpnpInitLog(void)
|
|
||||||
{
|
|
||||||
return UPNP_E_SUCCESS;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Set the log level (see \c Upnp_LogLevel).
|
|
||||||
*/
|
|
||||||
#ifdef DEBUG
|
|
||||||
void UpnpSetLogLevel(
|
|
||||||
/*! [in] Log level. */
|
|
||||||
Upnp_LogLevel log_level);
|
|
||||||
#else
|
|
||||||
static UPNP_INLINE void UpnpSetLogLevel(Upnp_LogLevel log_level) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Closes the log files.
|
|
||||||
*/
|
|
||||||
#ifdef DEBUG
|
|
||||||
void UpnpCloseLog(void);
|
|
||||||
#else
|
|
||||||
static UPNP_INLINE void UpnpCloseLog(void) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Set the name for error and information files, respectively.
|
|
||||||
*/
|
|
||||||
#ifdef DEBUG
|
|
||||||
void UpnpSetLogFileNames(
|
|
||||||
/*! [in] Name of the error file. */
|
|
||||||
const char *ErrFileName,
|
|
||||||
/*! [in] Name of the information file. */
|
|
||||||
const char *InfoFileName);
|
|
||||||
#else
|
|
||||||
static UPNP_INLINE void UpnpSetLogFileNames(
|
|
||||||
const char *ErrFileName,
|
|
||||||
const char *InfoFileName) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Check if the module is turned on for debug and returns the file
|
|
||||||
* descriptor corresponding to the debug level
|
|
||||||
*
|
*
|
||||||
* \return NULL if the module is turn off for debug otheriwse returns the
|
* Description:
|
||||||
* right file descriptor.
|
* This functions initializes the log files
|
||||||
*/
|
* Returns: int
|
||||||
#ifdef DEBUG
|
* -1 : If fails
|
||||||
FILE *UpnpGetDebugFile(
|
* UPNP_E_SUCCESS : if success
|
||||||
/*! [in] The level of the debug logging. It will decide whether debug
|
***************************************************************************/
|
||||||
* statement will go to standard output, or any of the log files. */
|
int UpnpInitLog();
|
||||||
Upnp_LogLevel level,
|
|
||||||
/*! [in] debug will go in the name of this module. */
|
// for backward compatibility
|
||||||
Dbg_Module module);
|
#define InitLog UpnpInitLog
|
||||||
#else
|
|
||||||
static UPNP_INLINE FILE *UpnpGetDebugFile(Upnp_LogLevel level, Dbg_Module module)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/***************************************************************************
|
||||||
* \brief Returns true if debug output should be done in this module.
|
* Function : UpnpSetLogLevel
|
||||||
*
|
*
|
||||||
* \return Nonzero value if true, zero if false.
|
* Parameters: void
|
||||||
*/
|
*
|
||||||
#ifdef DEBUG
|
* Description:
|
||||||
int DebugAtThisLevel(
|
* This functions set the log level (see {\tt Upnp_LogLevel}
|
||||||
/*! [in] The level of the debug logging. It will decide whether debug
|
* Returns: void
|
||||||
* statement will go to standard output, or any of the log files. */
|
***************************************************************************/
|
||||||
Upnp_LogLevel DLevel,
|
void UpnpSetLogLevel (Upnp_LogLevel);
|
||||||
/*! [in] Debug will go in the name of this module. */
|
|
||||||
Dbg_Module Module);
|
|
||||||
#else
|
|
||||||
static UPNP_INLINE int DebugAtThisLevel(
|
|
||||||
Upnp_LogLevel DLevel,
|
|
||||||
Dbg_Module Module)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/***************************************************************************
|
||||||
* \brief Prints the debug statement either on the standard output or log file
|
* Function : UpnpCloseLog
|
||||||
* along with the information from where this debug statement is coming.
|
*
|
||||||
*/
|
* Parameters: void
|
||||||
#ifdef DEBUG
|
*
|
||||||
void UpnpPrintf(
|
* Description:
|
||||||
/*! [in] The level of the debug logging. It will decide whether debug
|
* This functions closes the log files
|
||||||
* statement will go to standard output, or any of the log files. */
|
* Returns: void
|
||||||
Upnp_LogLevel DLevel,
|
***************************************************************************/
|
||||||
/*! [in] debug will go in the name of this module. */
|
void UpnpCloseLog();
|
||||||
Dbg_Module Module,
|
|
||||||
/*! [in] Name of the file from where debug statement is coming. */
|
// for backward compatibility
|
||||||
const char* DbgFileName,
|
#define CloseLog UpnpCloseLog
|
||||||
/*! [in] Line number of the file from where debug statement is coming. */
|
|
||||||
int DbgLineNo,
|
|
||||||
/*! [in] Printf like format specification. */
|
/***************************************************************************
|
||||||
|
* Function : UpnpSetLogFileNames
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* IN const char* ErrFileName: name of the error file
|
||||||
|
* IN const char *InfoFileName: name of the information file
|
||||||
|
* IN int size: Size of the buffer
|
||||||
|
* IN int starLength: This parameter provides the width of the banner
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* This functions takes the buffer and writes the buffer in the file as
|
||||||
|
* per the requested banner
|
||||||
|
* Returns: void
|
||||||
|
***************************************************************************/
|
||||||
|
void UpnpSetLogFileNames (const char* ErrFileName, const char* InfoFileName);
|
||||||
|
|
||||||
|
// for backward compatibility
|
||||||
|
#define SetLogFileNames UpnpSetLogFileNames
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* Function : UpnpGetDebugFile
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* IN Dbg_Level DLevel: The level of the debug logging. It will decide
|
||||||
|
* whether debug statement will go to standard output,
|
||||||
|
* or any of the log files.
|
||||||
|
* IN Dbg_Module Module: debug will go in the name of this module
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* This function checks if the module is turned on for debug
|
||||||
|
* and returns the file descriptor corresponding to the debug level
|
||||||
|
* Returns: FILE *
|
||||||
|
* NULL : if the module is turn off for debug
|
||||||
|
* else returns the right file descriptor
|
||||||
|
***************************************************************************/
|
||||||
|
FILE* UpnpGetDebugFile (Upnp_LogLevel level, Dbg_Module module);
|
||||||
|
|
||||||
|
// for backward compatibility
|
||||||
|
#define GetDebugFile UpnpGetDebugFile
|
||||||
|
|
||||||
|
|
||||||
|
/***************************************************************************
|
||||||
|
* Function : UpnpPrintf
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* IN Dbg_Level DLevel: The level of the debug logging. It will decide
|
||||||
|
* whether debug statement will go to standard output,
|
||||||
|
* or any of the log files.
|
||||||
|
* IN Dbg_Module Module: debug will go in the name of this module
|
||||||
|
* IN char *DbgFileName: Name of the file from where debug statement is
|
||||||
|
* coming
|
||||||
|
* IN int DbgLineNo : Line number of the file from where debug statement
|
||||||
|
* is coming
|
||||||
|
* IN char * FmtStr, ...: Variable number of arguments that will go
|
||||||
|
* in the debug statement
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* This functions prints the debug statement either on the startdard
|
||||||
|
* output or log file along with the information from where this
|
||||||
|
* debug statement is coming
|
||||||
|
* Returns: void
|
||||||
|
***************************************************************************/
|
||||||
|
void UpnpPrintf (Upnp_LogLevel DLevel, Dbg_Module Module,
|
||||||
|
const char* DbgFileName, int DbgLineNo,
|
||||||
const char* FmtStr,
|
const char* FmtStr,
|
||||||
/*! [in] Printf like Variable number of arguments that will go in the debug
|
|
||||||
* statement. */
|
|
||||||
...)
|
...)
|
||||||
#if (__GNUC__ >= 3)
|
#if (__GNUC__ >= 3)
|
||||||
/* This enables printf like format checking by the compiler */
|
|
||||||
__attribute__((format (__printf__, 5, 6)))
|
__attribute__((format (__printf__, 5, 6)))
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
#else /* DEBUG */
|
|
||||||
static UPNP_INLINE void UpnpPrintf(
|
|
||||||
Upnp_LogLevel DLevel,
|
|
||||||
Dbg_Module Module,
|
|
||||||
const char* DbgFileName,
|
|
||||||
int DbgLineNo,
|
|
||||||
const char* FmtStr,
|
|
||||||
...)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif /* DEBUG */
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/***************************************************************************
|
||||||
* \brief Writes the file name and file number from where debug statement is
|
* Function : UpnpDisplayBanner
|
||||||
* coming to the log file.
|
*
|
||||||
*/
|
* Parameters:
|
||||||
#ifdef DEBUG
|
* IN FILE *fd: file descriptor where the banner will be written
|
||||||
void UpnpDisplayFileAndLine(
|
* IN char **lines: The buffer that will be written
|
||||||
/*! [in] File descriptor where line number and file name will be written. */
|
* IN int size: Size of the buffer
|
||||||
FILE *fd,
|
* IN int starLength: This parameter provides the width of the banner
|
||||||
/*! [in] Name of the file. */
|
*
|
||||||
const char *DbgFileName,
|
* Description:
|
||||||
/*! [in] Line number of the file. */
|
* This functions takes the buffer and writes the buffer in the file as
|
||||||
int DbgLineNo);
|
* per the requested banner
|
||||||
#else
|
* Returns: void
|
||||||
static UPNP_INLINE void UpnpDisplayFileAndLine(
|
***************************************************************************/
|
||||||
FILE *fd,
|
void UpnpDisplayBanner (FILE *fd,
|
||||||
const char *DbgFileName,
|
const char** lines, size_t size, int starlength);
|
||||||
int DbgLineNo) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/***************************************************************************
|
||||||
* \brief Writes the buffer in the file as per the requested banner
|
* Function : UpnpDisplayFileAndLine
|
||||||
*/
|
*
|
||||||
#ifdef DEBUG
|
* Parameters:
|
||||||
void UpnpDisplayBanner(
|
* IN FILE *fd: File descriptor where line number and file name will be
|
||||||
/*! [in] file descriptor where the banner will be written. */
|
* written
|
||||||
FILE *fd,
|
* IN char *DbgFileName: Name of the file
|
||||||
/*! [in] The buffer that will be written. */
|
* IN int DbgLineNo : Line number of the file
|
||||||
const char **lines,
|
*
|
||||||
/*! [in] Size of the buffer. */
|
* Description:
|
||||||
size_t size,
|
* This function writes the file name and file number from where
|
||||||
/*! [in] This parameter provides the width of the banner. */
|
* debug statement is coming to the log file
|
||||||
int starlength);
|
* Returns: void
|
||||||
#else
|
***************************************************************************/
|
||||||
static UPNP_INLINE void UpnpDisplayBanner(
|
void UpnpDisplayFileAndLine (FILE *fd, const char *DbgFileName, int DbgLineNo);
|
||||||
FILE *fd,
|
|
||||||
const char **lines,
|
|
||||||
size_t size,
|
|
||||||
int starlength) {}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
//@}
|
||||||
* \brief Prints thread pool statistics.
|
|
||||||
*/
|
|
||||||
#ifdef DEBUG
|
|
||||||
void PrintThreadPoolStats(
|
|
||||||
/*! [in] The thread pool. */
|
|
||||||
ThreadPool *tp,
|
|
||||||
/*! [in] The file name that called this function, use the macro __FILE__. */
|
|
||||||
const char *DbgFileName,
|
|
||||||
/*! [in] The line number that the function was called, use the macro __LINE__. */
|
|
||||||
int DbgLineNo,
|
|
||||||
/*! [in] The message. */
|
|
||||||
const char *msg);
|
|
||||||
#else
|
|
||||||
static UPNP_INLINE void PrintThreadPoolStats(
|
|
||||||
ThreadPool *tp,
|
|
||||||
const char *DbgFileName,
|
|
||||||
int DbgLineNo,
|
|
||||||
const char *msg)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*@}*/
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* UPNP_DEBUG_H */
|
#endif // UPNP_HAVE_DEBUG
|
||||||
|
|
||||||
|
#endif // UPNP_DEBUG_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,265 +1,230 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* * Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* * Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* * Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/** @name Optional Tool APIs
|
||||||
|
* The Linux SDK for UPnP Devices contains some additional, optional
|
||||||
|
* utility APIs that can be helpful in writing applications using the
|
||||||
|
* SDK. These additional APIs can be compiled out in order to save code
|
||||||
|
* size in the SDK. Refer to the README for details.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//@{
|
||||||
|
|
||||||
#ifndef UPNP_TOOLS_H
|
#ifndef UPNP_TOOLS_H
|
||||||
#define UPNP_TOOLS_H
|
#define UPNP_TOOLS_H
|
||||||
|
|
||||||
|
#include "upnp.h"
|
||||||
|
|
||||||
/*!
|
// Function declarations only if tools compiled into the library
|
||||||
* \file
|
|
||||||
*
|
|
||||||
* \defgroup UPnPTools Optional Tool API
|
|
||||||
*
|
|
||||||
* \brief Additional, optional utility API that can be helpful in writing
|
|
||||||
* applications.
|
|
||||||
*
|
|
||||||
* This additional API can be compiled out in order to save code size in the
|
|
||||||
* library. Refer to the file README for details.
|
|
||||||
*
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "ixml.h" /* for IXML_Document */
|
|
||||||
|
|
||||||
|
|
||||||
/* Function declarations only if tools compiled into the library */
|
|
||||||
#if UPNP_HAVE_TOOLS
|
#if UPNP_HAVE_TOOLS
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/** {\bf UpnpResolveURL} combines a base URL and a relative URL into
|
||||||
/*!
|
* a single absolute URL. The memory for {\bf AbsURL} needs to be
|
||||||
* \brief Converts an SDK error code into a string error message suitable for
|
* allocated by the caller and must be large enough to hold the
|
||||||
* display. The memory returned from this function should NOT be freed.
|
* {\bf BaseURL} and {\bf RelURL} combined.
|
||||||
*
|
*
|
||||||
* \return An ASCII text string representation of the error message associated
|
* @return [int] An integer representing one of the following:
|
||||||
* with the error code or the string "Unknown error code"
|
* \begin{itemize}
|
||||||
*/
|
* \item {\tt UPNP_E_SUCCESS}: The operation completed successfully.
|
||||||
EXPORT_SPEC const char *UpnpGetErrorMessage(
|
* \item {\tt UPNP_E_INVALID_PARAM}: {\bf RelURL} is {\tt NULL}.
|
||||||
/*! [in] The SDK error code to convert. */
|
* \item {\tt UPNP_E_INVALID_URL}: The {\bf BaseURL} / {\bf RelURL}
|
||||||
int errorcode);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Combines a base URL and a relative URL into a single absolute URL.
|
|
||||||
*
|
|
||||||
* The memory for \b AbsURL needs to be allocated by the caller and must
|
|
||||||
* be large enough to hold the \b BaseURL and \b RelURL combined.
|
|
||||||
*
|
|
||||||
* \return An integer representing one of the following:
|
|
||||||
* \li <tt>UPNP_E_SUCCESS</tt>: The operation completed successfully.
|
|
||||||
* \li <tt>UPNP_E_INVALID_PARAM</tt>: \b RelURL is <tt>NULL</tt>.
|
|
||||||
* \li <tt>UPNP_E_INVALID_URL</tt>: The \b BaseURL / \b RelURL
|
|
||||||
* combination does not form a valid URL.
|
* combination does not form a valid URL.
|
||||||
* \li <tt>UPNP_E_OUTOF_MEMORY</tt>: Insufficient resources exist to
|
* \item {\tt UPNP_E_OUTOF_MEMORY}: Insufficient resources exist to
|
||||||
* complete this operation.
|
* complete this operation.
|
||||||
|
* \end{itemize}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
EXPORT_SPEC int UpnpResolveURL(
|
EXPORT_SPEC int UpnpResolveURL(
|
||||||
/*! [in] The base URL to combine. */
|
IN const char * BaseURL, /** The base URL to combine. */
|
||||||
const char *BaseURL,
|
IN const char * RelURL, /** The relative URL to {\bf BaseURL}. */
|
||||||
/*! [in] The relative URL to \b BaseURL. */
|
OUT char * AbsURL /** A pointer to a buffer to store the
|
||||||
const char *RelURL,
|
absolute URL. */
|
||||||
/*! [out] A pointer to a buffer to store the absolute URL. */
|
);
|
||||||
char *AbsURL);
|
|
||||||
|
|
||||||
|
/** {\bf UpnpMakeAction} creates an action request packet based on its input
|
||||||
/*!
|
* parameters (status variable name and value pair). Any number of input
|
||||||
* \brief Creates an action request packet based on its input parameters
|
* parameters can be passed to this function but every input variable name
|
||||||
* (status variable name and value pair).
|
* should have a matching value argument.
|
||||||
*
|
*
|
||||||
* Any number of input parameters can be passed to this function but every
|
* @return [IXML_Document*] The action node of {\bf Upnp_Document} type or
|
||||||
* input variable name should have a matching value argument.
|
* {\tt NULL} if the operation failed.
|
||||||
*
|
|
||||||
* It is a wrapper function that calls makeAction() function to create the
|
|
||||||
* action request.
|
|
||||||
*
|
|
||||||
* \return The action node of \b Upnp_Document type or <tt>NULL</tt> if the
|
|
||||||
* operation failed.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
EXPORT_SPEC IXML_Document* UpnpMakeAction(
|
EXPORT_SPEC IXML_Document* UpnpMakeAction(
|
||||||
/*! [in] Name of the action request or response. */
|
IN const char * ActionName, /** The action name. */
|
||||||
const char *ActionName,
|
IN const char * ServType, /** The service type. */
|
||||||
/*! [in] The service type. */
|
IN int NumArg, /** Number of argument pairs to be passed. */
|
||||||
const char *ServType,
|
IN const char * Arg, /** Status variable name and value pair. */
|
||||||
/*! [in] Number of argument pairs to be passed. */
|
IN ... /* Other status variable name and value pairs. */
|
||||||
int NumArg,
|
);
|
||||||
/*! [in] pointer to the first argument. */
|
|
||||||
const char *Arg,
|
|
||||||
/*! [in] Argument list. */
|
|
||||||
...);
|
|
||||||
|
|
||||||
|
/** {\bf UpnpAddToAction} creates an action request packet based on its input
|
||||||
/*!
|
* parameters (status variable name and value pair). This API is specially
|
||||||
* \brief Ceates an action response packet based on its output parameters
|
* suitable inside a loop to add any number input parameters into an existing
|
||||||
* (status variable name and value pair).
|
* action. If no action document exists in the beginning then a
|
||||||
|
* {\bf Upnp_Document} variable initialized with {\tt NULL} should be passed
|
||||||
|
* as a parameter.
|
||||||
*
|
*
|
||||||
* Any number of input parameters can be passed to this function but every
|
* @return [int] An integer representing one of the following:
|
||||||
* output variable name should have a matching value argument.
|
* \begin{itemize}
|
||||||
*
|
* \item {\tt UPNP_E_SUCCESS}: The operation completed successfully.
|
||||||
* It is a wrapper function that calls makeAction() function to create the
|
* \item {\tt UPNP_E_INVALID_PARAM}: One or more of the parameters
|
||||||
* action request.
|
* are invalid.
|
||||||
*
|
* \item {\tt UPNP_E_OUTOF_MEMORY}: Insufficient resources exist to
|
||||||
* \return The action node of \b Upnp_Document type or <tt>NULL</tt> if the
|
|
||||||
* operation failed.
|
|
||||||
*/
|
|
||||||
EXPORT_SPEC IXML_Document *UpnpMakeActionResponse(
|
|
||||||
/*! [in] The action name. */
|
|
||||||
const char *ActionName,
|
|
||||||
/*! [in] The service type.. */
|
|
||||||
const char *ServType,
|
|
||||||
/*! [in] The number of argument pairs passed. */
|
|
||||||
int NumArg,
|
|
||||||
/*! [in] The status variable name and value pair. */
|
|
||||||
const char *Arg,
|
|
||||||
/*! [in] Other status variable name and value pairs. */
|
|
||||||
...);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Adds the argument in the action request.
|
|
||||||
*
|
|
||||||
* This API is specially suitable inside a loop to add any number input
|
|
||||||
* parameters into an existing action. If no action document exists in the
|
|
||||||
* beginning then a <b>Upnp_Document variable initialized with <tt>NULL</tt></b>
|
|
||||||
* should be passed as a parameter.
|
|
||||||
*
|
|
||||||
* It is a wrapper function that calls addToAction() function to add the
|
|
||||||
* argument in the action request.
|
|
||||||
*
|
|
||||||
* \return An integer representing one of the following:
|
|
||||||
* \li <tt>UPNP_E_SUCCESS</tt>: The operation completed successfully.
|
|
||||||
* \li <tt>UPNP_E_INVALID_PARAM</tt>: One or more of the parameters are invalid.
|
|
||||||
* \li <tt>UPNP_E_OUTOF_MEMORY</tt>: Insufficient resources exist to
|
|
||||||
* complete this operation.
|
* complete this operation.
|
||||||
|
* \end{itemize}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
EXPORT_SPEC int UpnpAddToAction(
|
EXPORT_SPEC int UpnpAddToAction(
|
||||||
/*! [in,out] A pointer to store the action document node. */
|
IN OUT IXML_Document ** ActionDoc,
|
||||||
IXML_Document **ActionDoc,
|
/** A pointer to store the action
|
||||||
/*! [in] The action name. */
|
document node. */
|
||||||
const char *ActionName,
|
IN const char * ActionName, /** The action name. */
|
||||||
/*! [in] The service type. */
|
IN const char * ServType, /** The service type. */
|
||||||
const char *ServType,
|
IN const char * ArgName, /** The status variable name. */
|
||||||
/*! [in] The status variable name. */
|
IN const char * ArgVal /** The status variable value. */
|
||||||
const char *ArgName,
|
);
|
||||||
/*! [in] The status variable value. */
|
|
||||||
const char *ArgVal);
|
|
||||||
|
|
||||||
|
/** {\bf UpnpMakeActionResponse} creates an action response packet based
|
||||||
/*!
|
* on its output parameters (status variable name and value pair). Any
|
||||||
* \brief Creates an action response packet based on its output parameters
|
* number of input parameters can be passed to this function but every output
|
||||||
* (status variable name and value pair).
|
* variable name should have a matching value argument.
|
||||||
*
|
*
|
||||||
* This API is especially suitable inside a loop to add any number of input
|
* @return [IXML_Document*] The action node of {\bf Upnp_Document} type or
|
||||||
* parameters into an existing action response. If no action document exists
|
* {\tt NULL} if the operation failed.
|
||||||
* in the beginning, a \b Upnp_Document variable initialized with <tt>NULL</tt>
|
|
||||||
* should be passed as a parameter.
|
|
||||||
*
|
|
||||||
* It is a wrapper function that calls addToAction() function to add the
|
|
||||||
* argument in the action request.
|
|
||||||
*
|
|
||||||
* \return An integer representing one of the following:
|
|
||||||
* \li <tt>UPNP_E_SUCCESS</tt>: The operation completed successfully.
|
|
||||||
* \li <tt>UPNP_E_INVALID_PARAM</tt>: One or more of the parameters are invalid.
|
|
||||||
* \li <tt>UPNP_E_OUTOF_MEMORY</tt>: Insufficient resources exist to
|
|
||||||
* complete this operation.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
EXPORT_SPEC IXML_Document* UpnpMakeActionResponse(
|
||||||
|
IN const char * ActionName, /** The action name. */
|
||||||
|
IN const char * ServType, /** The service type. */
|
||||||
|
IN int NumArg, /** The number of argument pairs passed. */
|
||||||
|
IN const char * Arg, /** The status variable name and value pair. */
|
||||||
|
IN ... /* Other status variable name and value pairs. */
|
||||||
|
);
|
||||||
|
|
||||||
|
/** {\bf UpnpAddToActionResponse} creates an action response
|
||||||
|
* packet based on its output parameters (status variable name
|
||||||
|
* and value pair). This API is especially suitable inside
|
||||||
|
* a loop to add any number of input parameters into an existing action
|
||||||
|
* response. If no action document exists in the beginning, a
|
||||||
|
* {\bf Upnp_Document} variable initialized with {\tt NULL} should be passed
|
||||||
|
* as a parameter.
|
||||||
|
*
|
||||||
|
* @return [int] An integer representing one of the following:
|
||||||
|
* \begin{itemize}
|
||||||
|
* \item {\tt UPNP_E_SUCCESS}: The operation completed successfully.
|
||||||
|
* \item {\tt UPNP_E_INVALID_PARAM}: One or more of the parameters
|
||||||
|
* are invalid.
|
||||||
|
* \item {\tt UPNP_E_OUTOF_MEMORY}: Insufficient resources exist to
|
||||||
|
* complete this operation.
|
||||||
|
* \end{itemize}
|
||||||
|
*/
|
||||||
|
|
||||||
EXPORT_SPEC int UpnpAddToActionResponse(
|
EXPORT_SPEC int UpnpAddToActionResponse(
|
||||||
/*! [in,out] Pointer to a document to store the action document node. */
|
IN OUT IXML_Document ** ActionResponse,
|
||||||
IXML_Document **ActionResponse,
|
/** Pointer to a document to
|
||||||
/*! [in] The action name. */
|
store the action document
|
||||||
const char *ActionName,
|
node. */
|
||||||
/*! [in] The service type. */
|
IN const char * ActionName, /** The action name. */
|
||||||
const char *ServType,
|
IN const char * ServType, /** The service type. */
|
||||||
/*! [in] The status variable name. */
|
IN const char * ArgName, /** The status variable name. */
|
||||||
const char *ArgName,
|
IN const char * ArgVal /** The status variable value. */
|
||||||
/*! [in] The status variable value. */
|
);
|
||||||
const char *ArgVal);
|
|
||||||
|
|
||||||
|
/** {\bf UpnpAddToPropertySet} can be used when an application needs to
|
||||||
/*!
|
* transfer the status of many variables at once. It can be used
|
||||||
* \brief Creates a property set message packet.
|
* (inside a loop) to add some extra status variables into an existing
|
||||||
|
* property set. If the application does not already have a property
|
||||||
|
* set document, the application should create a variable initialized
|
||||||
|
* with {\tt NULL} and pass that as the first parameter.
|
||||||
*
|
*
|
||||||
* Any number of input parameters can be passed to this function but every
|
* @return [int] An integer representing one of the following:
|
||||||
* input variable name should have a matching value input argument.
|
* \begin{itemize}
|
||||||
*
|
* \item {\tt UPNP_E_SUCCESS}: The operation completed successfully.
|
||||||
* \return <tt>NULL</tt> on failure, or the property-set document node.
|
* \item {\tt UPNP_E_INVALID_PARAM}: One or more of the parameters
|
||||||
*/
|
* are invalid.
|
||||||
EXPORT_SPEC IXML_Document *UpnpCreatePropertySet(
|
* \item {\tt UPNP_E_OUTOF_MEMORY}: Insufficient resources exist to
|
||||||
/*! [in] The number of argument pairs passed. */
|
|
||||||
int NumArg,
|
|
||||||
/*! [in] The status variable name and value pair. */
|
|
||||||
const char *Arg,
|
|
||||||
/*! [in] Variable sized list with the rest of the parameters. */
|
|
||||||
...);
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
* \brief Can be used when an application needs to transfer the status of many
|
|
||||||
* variables at once.
|
|
||||||
*
|
|
||||||
* It can be used (inside a loop) to add some extra status variables into an
|
|
||||||
* existing property set. If the application does not already have a property
|
|
||||||
* set document, the application should create a variable initialized with
|
|
||||||
* <tt>NULL</tt> and pass that as the first parameter.
|
|
||||||
*
|
|
||||||
* \return An integer representing one of the following:
|
|
||||||
* \li <tt>UPNP_E_SUCCESS</tt>: The operation completed successfully.
|
|
||||||
* \li <tt>UPNP_E_INVALID_PARAM</tt>: One or more of the parameters are invalid.
|
|
||||||
* \li <tt>UPNP_E_OUTOF_MEMORY</tt>: Insufficient resources exist to
|
|
||||||
* complete this operation.
|
* complete this operation.
|
||||||
|
* \end{itemize}
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
EXPORT_SPEC int UpnpAddToPropertySet(
|
|
||||||
/*! [in,out] A pointer to the document containing the property set document node. */
|
|
||||||
IXML_Document **PropSet,
|
|
||||||
/*! [in] The status variable name. */
|
|
||||||
const char *ArgName,
|
|
||||||
/*! [in] The status variable value. */
|
|
||||||
const char *ArgVal);
|
|
||||||
|
|
||||||
|
EXPORT_SPEC int UpnpAddToPropertySet(
|
||||||
|
IN OUT IXML_Document **PropSet,
|
||||||
|
/** A pointer to the document containing
|
||||||
|
the property set document node. */
|
||||||
|
IN const char * ArgName, /** The status variable name. */
|
||||||
|
IN const char * ArgVal /** The status variable value. */
|
||||||
|
);
|
||||||
|
|
||||||
|
/** {\bf UpnpCreatePropertySet} creates a property set
|
||||||
|
* message packet. Any number of input parameters can be passed
|
||||||
|
* to this function but every input variable name should have
|
||||||
|
* a matching value input argument.
|
||||||
|
*
|
||||||
|
* @return [IXML_Document*] {\tt NULL} on failure, or the property-set
|
||||||
|
* document node.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
EXPORT_SPEC IXML_Document* UpnpCreatePropertySet(
|
||||||
|
IN int NumArg, /** The number of argument pairs passed. */
|
||||||
|
IN const char* Arg, /** The status variable name and value pair. */
|
||||||
|
IN ...
|
||||||
|
);
|
||||||
|
|
||||||
|
/** {\bf UpnpGetErrorMessage} converts an SDK error code into a
|
||||||
|
* string error message suitable for display. The memory returned
|
||||||
|
* from this function should NOT be freed.
|
||||||
|
*
|
||||||
|
* @return [char*] An ASCII text string representation of the error message
|
||||||
|
* associated with the error code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
EXPORT_SPEC const char * UpnpGetErrorMessage(
|
||||||
|
int errorcode /** The SDK error code to convert. */
|
||||||
|
);
|
||||||
|
|
||||||
|
//@}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif // UPNP_HAVE_TOOLS
|
||||||
|
|
||||||
/*! @} */
|
#endif // UPNP_TOOLS_H
|
||||||
|
|
||||||
|
|
||||||
#endif /* UPNP_HAVE_TOOLS */
|
|
||||||
|
|
||||||
|
|
||||||
#endif /* UPNP_TOOLS_H */
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,97 +0,0 @@
|
|||||||
# -*- Autoconf -*-
|
|
||||||
# This file is part of the aMule project.
|
|
||||||
# This file is part of the libupnp library project.
|
|
||||||
#
|
|
||||||
# Copyright (c) 2003-2008 aMule Team ( admin@amule.org / http://www.amule.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
|
|
||||||
#
|
|
||||||
|
|
||||||
dnl --------------------------------------------------------------------------
|
|
||||||
dnl LIBUPNP_CHECK([VERSION = 1.6.6], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
|
|
||||||
dnl
|
|
||||||
dnl Check for the libupnp library
|
|
||||||
dnl --------------------------------------------------------------------------
|
|
||||||
dnl
|
|
||||||
dnl This macro sets these variables:
|
|
||||||
dnl - LIBUPNP_VERSION
|
|
||||||
dnl Something like "1.6.7"
|
|
||||||
dnl - LIBUPNP_CPPFLAGS
|
|
||||||
dnl Flags to be added to CPPFLAGS
|
|
||||||
dnl - LIBUPNP_CFLAGS
|
|
||||||
dnl Flags to be added to CFLAGS
|
|
||||||
dnl - LIBUPNP_LDFLAGS
|
|
||||||
dnl Flags to be added to LDFLAGS
|
|
||||||
dnl - LIBUPNP_LIBS
|
|
||||||
dnl Library to be added to LIBS
|
|
||||||
dnl
|
|
||||||
dnl The LIBUPNP_CPPFLAGS, LIBUPNP_CFLAGS, LIBUPNP_LDFLAGS and LIBUPNP_LIBS variables are also substituted.
|
|
||||||
dnl
|
|
||||||
AC_DEFUN([LIBUPNP_CHECK],
|
|
||||||
[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
|
|
||||||
m4_define([MIN_LIBUPNP_VERSION], [m4_ifval([$1], [$1], [1.6.6])])dnl
|
|
||||||
|
|
||||||
dnl Test for --with-libupnp-prefix
|
|
||||||
AC_ARG_WITH(
|
|
||||||
[libupnp-prefix],
|
|
||||||
[AS_HELP_STRING(
|
|
||||||
[--with-libupnp-prefix=PREFIX],
|
|
||||||
[UPnP library location])],
|
|
||||||
[export PKG_CONFIG_PATH=$withval/lib/pkgconfig])
|
|
||||||
|
|
||||||
dnl Check for libupnp >= MIN_LIBUPNP_VERSION
|
|
||||||
AS_IF([test $cross_compiling = no], [
|
|
||||||
AC_MSG_CHECKING([for libupnp version >= MIN_LIBUPNP_VERSION])
|
|
||||||
AS_IF([test -n "$PKG_CONFIG"], [
|
|
||||||
AS_IF([$PKG_CONFIG libupnp --exists], [
|
|
||||||
LIBUPNP_VERSION=`$PKG_CONFIG libupnp --modversion`
|
|
||||||
AS_IF([$PKG_CONFIG libupnp --atleast-version=MIN_LIBUPNP_VERSION], [
|
|
||||||
result=yes
|
|
||||||
resultstr=" (version $LIBUPNP_VERSION)"
|
|
||||||
LIBUPNP_CPPFLAGS=`$PKG_CONFIG libupnp --cflags-only-I`
|
|
||||||
LIBUPNP_CFLAGS=`$PKG_CONFIG libupnp --cflags-only-other`
|
|
||||||
LIBUPNP_LDFLAGS=`$PKG_CONFIG libupnp --libs-only-L`
|
|
||||||
LIBUPNP_LIBS=`$PKG_CONFIG libupnp --libs-only-other`
|
|
||||||
LIBUPNP_LIBS="$LIBUPNP_LIBS `$PKG_CONFIG libupnp --libs-only-l`"
|
|
||||||
], [
|
|
||||||
result=no
|
|
||||||
resultstr=" (version $LIBUPNP_VERSION is not new enough)"
|
|
||||||
])
|
|
||||||
], [
|
|
||||||
result=no
|
|
||||||
resultstr=" (try to use --with-libupnp-prefix=PREFIX)"
|
|
||||||
])
|
|
||||||
], [
|
|
||||||
result=no
|
|
||||||
resultstr=" (pkg-config not found)"
|
|
||||||
])
|
|
||||||
AC_MSG_RESULT([$result$resultstr])
|
|
||||||
libupnp_error="libupnp >= MIN_LIBUPNP_VERSION not found$resultstr"
|
|
||||||
], [
|
|
||||||
dnl Currently cross-compilation with libupnp is not supported.
|
|
||||||
result=no
|
|
||||||
libupnp_error="cross compiling"
|
|
||||||
])
|
|
||||||
|
|
||||||
dnl Execute the right action.
|
|
||||||
AS_IF([test ${result:-no} = yes], [$2], [$3])
|
|
||||||
|
|
||||||
dnl Exported symbols
|
|
||||||
AC_SUBST([LIBUPNP_CPPFLAGS])dnl
|
|
||||||
AC_SUBST([LIBUPNP_CFLAGS])dnl
|
|
||||||
AC_SUBST([LIBUPNP_LDFLAGS])dnl
|
|
||||||
AC_SUBST([LIBUPNP_LIBS])dnl
|
|
||||||
m4_undefine([MIN_LIBUPNP_VERSION])dnl
|
|
||||||
])
|
|
||||||
@@ -1,84 +0,0 @@
|
|||||||
#
|
|
||||||
# "Makefile.am" for "libupnp/upnp/sample"
|
|
||||||
#
|
|
||||||
# Copyright (C) 2007 Marcelo Roberto Jimenez <mroberto@users.sourceforge.net>
|
|
||||||
#
|
|
||||||
|
|
||||||
AM_CPPFLAGS = \
|
|
||||||
-I$(top_srcdir)/upnp/inc \
|
|
||||||
-I$(top_srcdir)/threadutil/inc \
|
|
||||||
-I$(top_srcdir)/ixml/inc
|
|
||||||
|
|
||||||
LDADD = \
|
|
||||||
$(top_builddir)/upnp/libupnp.la \
|
|
||||||
$(top_builddir)/threadutil/libthreadutil.la \
|
|
||||||
$(top_builddir)/ixml/libixml.la
|
|
||||||
|
|
||||||
|
|
||||||
# samples
|
|
||||||
noinst_PROGRAMS =
|
|
||||||
if ENABLE_SAMPLES
|
|
||||||
if ENABLE_CLIENT
|
|
||||||
noinst_PROGRAMS += upnp_tv_ctrlpt
|
|
||||||
upnp_tv_ctrlpt_CPPFLAGS = \
|
|
||||||
$(AM_CPPFLAGS) \
|
|
||||||
-I$(srcdir)/common/ \
|
|
||||||
-I$(srcdir)/tvctrlpt
|
|
||||||
if ENABLE_DEVICE
|
|
||||||
noinst_PROGRAMS += upnp_tv_combo
|
|
||||||
upnp_tv_combo_CPPFLAGS = $(AM_CPPFLAGS) \
|
|
||||||
-I$(srcdir)/common/ \
|
|
||||||
-I$(srcdir)/tvcombo
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
if ENABLE_DEVICE
|
|
||||||
noinst_PROGRAMS += upnp_tv_device
|
|
||||||
upnp_tv_device_CPPFLAGS = \
|
|
||||||
$(AM_CPPFLAGS) \
|
|
||||||
-I$(srcdir)/common/ \
|
|
||||||
-I$(srcdir)/tvdevice
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
upnp_tv_device_SOURCES = \
|
|
||||||
common/sample_util.c \
|
|
||||||
common/sample_util.h \
|
|
||||||
tvdevice/upnp_tv_device.c \
|
|
||||||
tvdevice/upnp_tv_device.h \
|
|
||||||
tvdevice/linux/upnp_tv_device_main.c
|
|
||||||
|
|
||||||
|
|
||||||
upnp_tv_ctrlpt_SOURCES = \
|
|
||||||
common/sample_util.c \
|
|
||||||
common/sample_util.h \
|
|
||||||
tvctrlpt/upnp_tv_ctrlpt.c \
|
|
||||||
tvctrlpt/upnp_tv_ctrlpt.h \
|
|
||||||
tvctrlpt/linux/upnp_tv_ctrlpt_main.c
|
|
||||||
|
|
||||||
upnp_tv_combo_SOURCES = \
|
|
||||||
common/sample_util.c \
|
|
||||||
common/sample_util.h \
|
|
||||||
tvcombo/upnp_tv_ctrlpt.c \
|
|
||||||
tvcombo/upnp_tv_ctrlpt.h \
|
|
||||||
tvcombo/upnp_tv_device.c \
|
|
||||||
tvcombo/upnp_tv_device.h \
|
|
||||||
tvcombo/linux/upnp_tv_combo_main.c
|
|
||||||
|
|
||||||
|
|
||||||
if WITH_DOCUMENTATION
|
|
||||||
examplesdir = $(docdir)/examples
|
|
||||||
examples_DATA = \
|
|
||||||
$(sort \
|
|
||||||
$(upnp_tv_ctrlpt_SOURCES) \
|
|
||||||
$(upnp_tv_device_SOURCES))
|
|
||||||
endif
|
|
||||||
|
|
||||||
|
|
||||||
EXTRA_DIST = \
|
|
||||||
web/tvcombodesc.xml \
|
|
||||||
web/tvcontrolSCPD.xml \
|
|
||||||
web/tvdevicedesc.xml \
|
|
||||||
web/tvdevicepres.html \
|
|
||||||
web/tvpictureSCPD.xml
|
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,58 +1,52 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#ifndef SAMPLE_UTIL_H
|
#ifndef SAMPLE_UTIL_H
|
||||||
#define SAMPLE_UTIL_H
|
#define SAMPLE_UTIL_H
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif /* __cplusplus */
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include "ithread.h"
|
|
||||||
#include "ixml.h" /* for IXML_Document, IXML_Element */
|
|
||||||
#include "upnp.h" /* for Upnp_EventType */
|
|
||||||
#include "upnptools.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "upnptools.h"
|
||||||
|
#include "ithread.h"
|
||||||
|
#include "ixml.h"
|
||||||
|
|
||||||
/* mutex to control displaying of events */
|
//mutex to control displaying of events
|
||||||
extern ithread_mutex_t display_mutex ;
|
extern ithread_mutex_t display_mutex ;
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
STATE_UPDATE = 0,
|
STATE_UPDATE = 0,
|
||||||
DEVICE_ADDED =1,
|
DEVICE_ADDED =1,
|
||||||
@@ -168,13 +162,9 @@ int SampleUtil_PrintEvent(IN Upnp_EventType EventType,
|
|||||||
* controlURL -- OUT -- The control URL for the service
|
* controlURL -- OUT -- The control URL for the service
|
||||||
*
|
*
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
int SampleUtil_FindAndParseService (
|
int SampleUtil_FindAndParseService (IN IXML_Document *DescDoc, IN char* location,
|
||||||
IN IXML_Document *DescDoc,
|
IN char *serviceType, OUT char **serviceId,
|
||||||
IN const char* location,
|
OUT char **eventURL, OUT char **controlURL);
|
||||||
IN char *serviceType,
|
|
||||||
OUT char **serviceId,
|
|
||||||
OUT char **eventURL,
|
|
||||||
OUT char **controlURL);
|
|
||||||
|
|
||||||
|
|
||||||
/********************************************************************************
|
/********************************************************************************
|
||||||
@@ -206,10 +196,7 @@ extern print_string gPrintFun;
|
|||||||
* const char * UDN
|
* const char * UDN
|
||||||
* int newDevice
|
* int newDevice
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
typedef void (*state_update)(
|
typedef void (*state_update)( const char *varName, const char *varValue, const char *UDN,
|
||||||
const char *varName,
|
|
||||||
const char *varValue,
|
|
||||||
const char *UDN,
|
|
||||||
eventType type);
|
eventType type);
|
||||||
|
|
||||||
//global state update function used by smaple util
|
//global state update function used by smaple util
|
||||||
@@ -237,7 +224,7 @@ int SampleUtil_Initialize(print_string print_function);
|
|||||||
* Parameters:
|
* Parameters:
|
||||||
*
|
*
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
int SampleUtil_Finish();
|
int SampleUtil_Finish(void);
|
||||||
|
|
||||||
/********************************************************************************
|
/********************************************************************************
|
||||||
* SampleUtil_Print
|
* SampleUtil_Print
|
||||||
@@ -271,22 +258,11 @@ int SampleUtil_RegisterUpdateFunction(state_update update_function);
|
|||||||
* Parameters:
|
* Parameters:
|
||||||
*
|
*
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
void SampleUtil_StateUpdate(
|
void SampleUtil_StateUpdate( const char *varName, const char *varValue, const char *UDN,
|
||||||
const char *varName,
|
|
||||||
const char *varValue,
|
|
||||||
const char *UDN,
|
|
||||||
eventType type);
|
eventType type);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
};
|
};
|
||||||
#endif /* __cplusplus */
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
#define snprintf _snprintf
|
|
||||||
#define strcasecmp stricmp
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif /* UPNPSDK_UTIL_H */
|
||||||
#endif /* SAMPLE_UTIL_H */
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,491 +0,0 @@
|
|||||||
/*******************************************************************************
|
|
||||||
*
|
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
*
|
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer.
|
|
||||||
* - 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.
|
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL 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.
|
|
||||||
*
|
|
||||||
******************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#include "sample_util.h"
|
|
||||||
#include "upnp_tv_ctrlpt.h"
|
|
||||||
#include "upnp_tv_device.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
Tags for valid commands issued at the command prompt
|
|
||||||
*/
|
|
||||||
enum cmdloop_tvcmds {
|
|
||||||
PRTHELP = 0, PRTFULLHELP, POWON, POWOFF,
|
|
||||||
SETCHAN, SETVOL, SETCOL, SETTINT, SETCONT, SETBRT,
|
|
||||||
CTRLACTION, PICTACTION, CTRLGETVAR, PICTGETVAR,
|
|
||||||
PRTDEV, LSTDEV, REFRESH, EXITCMD
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
Data structure for parsing commands from the command line
|
|
||||||
*/
|
|
||||||
struct cmdloop_commands {
|
|
||||||
char *str; // the string
|
|
||||||
int cmdnum; // the command
|
|
||||||
int numargs; // the number of arguments
|
|
||||||
char *args; // the args
|
|
||||||
} cmdloop_commands;
|
|
||||||
|
|
||||||
/*
|
|
||||||
Mappings between command text names, command tag,
|
|
||||||
and required command arguments for command line
|
|
||||||
commands
|
|
||||||
*/
|
|
||||||
static struct cmdloop_commands cmdloop_cmdlist[] = {
|
|
||||||
{"Help", PRTHELP, 1, ""},
|
|
||||||
{"HelpFull", PRTFULLHELP, 1, ""},
|
|
||||||
{"ListDev", LSTDEV, 1, ""},
|
|
||||||
{"Refresh", REFRESH, 1, ""},
|
|
||||||
{"PrintDev", PRTDEV, 2, "<devnum>"},
|
|
||||||
{"PowerOn", POWON, 2, "<devnum>"},
|
|
||||||
{"PowerOff", POWOFF, 2, "<devnum>"},
|
|
||||||
{"SetChannel", SETCHAN, 3, "<devnum> <channel (int)>"},
|
|
||||||
{"SetVolume", SETVOL, 3, "<devnum> <volume (int)>"},
|
|
||||||
{"SetColor", SETCOL, 3, "<devnum> <color (int)>"},
|
|
||||||
{"SetTint", SETTINT, 3, "<devnum> <tint (int)>"},
|
|
||||||
{"SetContrast", SETCONT, 3, "<devnum> <contrast (int)>"},
|
|
||||||
{"SetBrightness", SETBRT, 3, "<devnum> <brightness (int)>"},
|
|
||||||
{"CtrlAction", CTRLACTION, 2, "<devnum> <action (string)>"},
|
|
||||||
{"PictAction", PICTACTION, 2, "<devnum> <action (string)>"},
|
|
||||||
{"CtrlGetVar", CTRLGETVAR, 2, "<devnum> <varname (string)>"},
|
|
||||||
{"PictGetVar", PICTGETVAR, 2, "<devnum> <varname (string)>"},
|
|
||||||
{"Exit", EXITCMD, 1, ""}
|
|
||||||
};
|
|
||||||
|
|
||||||
void
|
|
||||||
linux_print( const char *string )
|
|
||||||
{
|
|
||||||
puts( string );
|
|
||||||
}
|
|
||||||
|
|
||||||
/********************************************************************************
|
|
||||||
* TvCtrlPointPrintHelp
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Print help info for this application.
|
|
||||||
********************************************************************************/
|
|
||||||
void
|
|
||||||
TvCtrlPointPrintShortHelp( void )
|
|
||||||
{
|
|
||||||
SampleUtil_Print( "Commands:" );
|
|
||||||
SampleUtil_Print( " Help" );
|
|
||||||
SampleUtil_Print( " HelpFull" );
|
|
||||||
SampleUtil_Print( " ListDev" );
|
|
||||||
SampleUtil_Print( " Refresh" );
|
|
||||||
SampleUtil_Print( " PrintDev <devnum>" );
|
|
||||||
SampleUtil_Print( " PowerOn <devnum>" );
|
|
||||||
SampleUtil_Print( " PowerOff <devnum>" );
|
|
||||||
SampleUtil_Print( " SetChannel <devnum> <channel>" );
|
|
||||||
SampleUtil_Print( " SetVolume <devnum> <volume>" );
|
|
||||||
SampleUtil_Print( " SetColor <devnum> <color>" );
|
|
||||||
SampleUtil_Print( " SetTint <devnum> <tint>" );
|
|
||||||
SampleUtil_Print( " SetContrast <devnum> <contrast>" );
|
|
||||||
SampleUtil_Print( " SetBrightness <devnum> <brightness>" );
|
|
||||||
SampleUtil_Print( " CtrlAction <devnum> <action>" );
|
|
||||||
SampleUtil_Print( " PictAction <devnum> <action>" );
|
|
||||||
SampleUtil_Print( " CtrlGetVar <devnum> <varname>" );
|
|
||||||
SampleUtil_Print( " PictGetVar <devnum> <action>" );
|
|
||||||
SampleUtil_Print( " Exit" );
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
TvCtrlPointPrintLongHelp( void )
|
|
||||||
{
|
|
||||||
SampleUtil_Print( "" );
|
|
||||||
SampleUtil_Print( "******************************" );
|
|
||||||
SampleUtil_Print( "* TV Control Point Help Info *" );
|
|
||||||
SampleUtil_Print( "******************************" );
|
|
||||||
SampleUtil_Print( "" );
|
|
||||||
SampleUtil_Print( "This sample control point application automatically searches" );
|
|
||||||
SampleUtil_Print( "for and subscribes to the services of television device emulator" );
|
|
||||||
SampleUtil_Print( "devices, described in the tvdevicedesc.xml description document." );
|
|
||||||
SampleUtil_Print( "It also registers itself as a tv device." );
|
|
||||||
SampleUtil_Print( "" );
|
|
||||||
SampleUtil_Print( "Commands:" );
|
|
||||||
SampleUtil_Print( " Help" );
|
|
||||||
SampleUtil_Print( " Print this help info." );
|
|
||||||
SampleUtil_Print( " ListDev" );
|
|
||||||
SampleUtil_Print( " Print the current list of TV Device Emulators that this" );
|
|
||||||
SampleUtil_Print( " control point is aware of. Each device is preceded by a" );
|
|
||||||
SampleUtil_Print( " device number which corresponds to the devnum argument of" );
|
|
||||||
SampleUtil_Print( " commands listed below." );
|
|
||||||
SampleUtil_Print( " Refresh" );
|
|
||||||
SampleUtil_Print( " Delete all of the devices from the device list and issue new" );
|
|
||||||
SampleUtil_Print( " search request to rebuild the list from scratch." );
|
|
||||||
SampleUtil_Print( " PrintDev <devnum>" );
|
|
||||||
SampleUtil_Print( " Print the state table for the device <devnum>." );
|
|
||||||
SampleUtil_Print( " e.g., 'PrintDev 1' prints the state table for the first" );
|
|
||||||
SampleUtil_Print( " device in the device list." );
|
|
||||||
SampleUtil_Print( " PowerOn <devnum>" );
|
|
||||||
SampleUtil_Print( " Sends the PowerOn action to the Control Service of" );
|
|
||||||
SampleUtil_Print( " device <devnum>." );
|
|
||||||
SampleUtil_Print( " PowerOff <devnum>" );
|
|
||||||
SampleUtil_Print( " Sends the PowerOff action to the Control Service of" );
|
|
||||||
SampleUtil_Print( " device <devnum>." );
|
|
||||||
SampleUtil_Print( " SetChannel <devnum> <channel>" );
|
|
||||||
SampleUtil_Print( " Sends the SetChannel action to the Control Service of" );
|
|
||||||
SampleUtil_Print( " device <devnum>, requesting the channel to be changed" );
|
|
||||||
SampleUtil_Print( " to <channel>." );
|
|
||||||
SampleUtil_Print( " SetVolume <devnum> <volume>" );
|
|
||||||
SampleUtil_Print( " Sends the SetVolume action to the Control Service of" );
|
|
||||||
SampleUtil_Print( " device <devnum>, requesting the volume to be changed" );
|
|
||||||
SampleUtil_Print( " to <volume>." );
|
|
||||||
SampleUtil_Print( " SetColor <devnum> <color>" );
|
|
||||||
SampleUtil_Print( " Sends the SetColor action to the Control Service of" );
|
|
||||||
SampleUtil_Print( " device <devnum>, requesting the color to be changed" );
|
|
||||||
SampleUtil_Print( " to <color>." );
|
|
||||||
SampleUtil_Print( " SetTint <devnum> <tint>" );
|
|
||||||
SampleUtil_Print( " Sends the SetTint action to the Control Service of" );
|
|
||||||
SampleUtil_Print( " device <devnum>, requesting the tint to be changed" );
|
|
||||||
SampleUtil_Print( " to <tint>." );
|
|
||||||
SampleUtil_Print( " SetContrast <devnum> <contrast>" );
|
|
||||||
SampleUtil_Print( " Sends the SetContrast action to the Control Service of" );
|
|
||||||
SampleUtil_Print( " device <devnum>, requesting the contrast to be changed" );
|
|
||||||
SampleUtil_Print( " to <contrast>." );
|
|
||||||
SampleUtil_Print( " SetBrightness <devnum> <brightness>" );
|
|
||||||
SampleUtil_Print( " Sends the SetBrightness action to the Control Service of" );
|
|
||||||
SampleUtil_Print( " device <devnum>, requesting the brightness to be changed" );
|
|
||||||
SampleUtil_Print( " to <brightness>." );
|
|
||||||
SampleUtil_Print( " CtrlAction <devnum> <action>" );
|
|
||||||
SampleUtil_Print( " Sends an action request specified by the string <action>" );
|
|
||||||
SampleUtil_Print( " to the Control Service of device <devnum>. This command" );
|
|
||||||
SampleUtil_Print( " only works for actions that have no arguments." );
|
|
||||||
SampleUtil_Print( " (e.g., \"CtrlAction 1 IncreaseChannel\")" );
|
|
||||||
SampleUtil_Print( " PictAction <devnum> <action>" );
|
|
||||||
SampleUtil_Print( " Sends an action request specified by the string <action>" );
|
|
||||||
SampleUtil_Print( " to the Picture Service of device <devnum>. This command" );
|
|
||||||
SampleUtil_Print( " only works for actions that have no arguments." );
|
|
||||||
SampleUtil_Print( " (e.g., \"PictAction 1 DecreaseContrast\")" );
|
|
||||||
SampleUtil_Print( " CtrlGetVar <devnum> <varname>" );
|
|
||||||
SampleUtil_Print( " Requests the value of a variable specified by the string <varname>" );
|
|
||||||
SampleUtil_Print( " from the Control Service of device <devnum>." );
|
|
||||||
SampleUtil_Print( " (e.g., \"CtrlGetVar 1 Volume\")" );
|
|
||||||
SampleUtil_Print( " PictGetVar <devnum> <action>" );
|
|
||||||
SampleUtil_Print( " Requests the value of a variable specified by the string <varname>" );
|
|
||||||
SampleUtil_Print( " from the Picture Service of device <devnum>." );
|
|
||||||
SampleUtil_Print( " (e.g., \"PictGetVar 1 Tint\")" );
|
|
||||||
SampleUtil_Print( " Exit" );
|
|
||||||
SampleUtil_Print( " Exits the control point application." );
|
|
||||||
}
|
|
||||||
|
|
||||||
/********************************************************************************
|
|
||||||
* TvCtrlPointPrintCommands
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Print the list of valid command line commands to the user
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* None
|
|
||||||
*
|
|
||||||
********************************************************************************/
|
|
||||||
void
|
|
||||||
TvCtrlPointPrintCommands()
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
int numofcmds = sizeof( cmdloop_cmdlist ) / sizeof( cmdloop_commands );
|
|
||||||
|
|
||||||
SampleUtil_Print( "Valid Commands:" );
|
|
||||||
for( i = 0; i < numofcmds; i++ ) {
|
|
||||||
SampleUtil_Print( " %-14s %s", cmdloop_cmdlist[i].str,
|
|
||||||
cmdloop_cmdlist[i].args );
|
|
||||||
}
|
|
||||||
SampleUtil_Print( "" );
|
|
||||||
}
|
|
||||||
|
|
||||||
/********************************************************************************
|
|
||||||
* TvCtrlPointCommandLoop
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Function that receives commands from the user at the command prompt
|
|
||||||
* during the lifetime of the control point, and calls the appropriate
|
|
||||||
* functions for those commands.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* None
|
|
||||||
*
|
|
||||||
********************************************************************************/
|
|
||||||
void *
|
|
||||||
TvCtrlPointCommandLoop( void *args )
|
|
||||||
{
|
|
||||||
char cmdline[100];
|
|
||||||
|
|
||||||
while( 1 ) {
|
|
||||||
SampleUtil_Print( "\n>> " );
|
|
||||||
fgets( cmdline, 100, stdin );
|
|
||||||
TvCtrlPointProcessCommand( cmdline );
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
TvCtrlPointProcessCommand( char *cmdline )
|
|
||||||
{
|
|
||||||
char cmd[100];
|
|
||||||
char strarg[100];
|
|
||||||
int arg_val_err = -99999;
|
|
||||||
int arg1 = arg_val_err;
|
|
||||||
int arg2 = arg_val_err;
|
|
||||||
int cmdnum = -1;
|
|
||||||
int numofcmds = sizeof( cmdloop_cmdlist ) / sizeof( cmdloop_commands );
|
|
||||||
int cmdfound = 0;
|
|
||||||
int i,
|
|
||||||
rc;
|
|
||||||
int invalidargs = 0;
|
|
||||||
int validargs;
|
|
||||||
|
|
||||||
validargs = sscanf( cmdline, "%s %d %d", cmd, &arg1, &arg2 );
|
|
||||||
|
|
||||||
for( i = 0; i < numofcmds; i++ ) {
|
|
||||||
if( strcasecmp( cmd, cmdloop_cmdlist[i].str ) == 0 ) {
|
|
||||||
cmdnum = cmdloop_cmdlist[i].cmdnum;
|
|
||||||
cmdfound++;
|
|
||||||
if( validargs != cmdloop_cmdlist[i].numargs )
|
|
||||||
invalidargs++;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !cmdfound ) {
|
|
||||||
SampleUtil_Print( "Command not found; try 'Help'" );
|
|
||||||
return TV_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( invalidargs ) {
|
|
||||||
SampleUtil_Print( "Invalid arguments; try 'Help'" );
|
|
||||||
return TV_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch ( cmdnum ) {
|
|
||||||
case PRTHELP:
|
|
||||||
TvCtrlPointPrintShortHelp();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PRTFULLHELP:
|
|
||||||
TvCtrlPointPrintLongHelp();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case POWON:
|
|
||||||
TvCtrlPointSendPowerOn( arg1 );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case POWOFF:
|
|
||||||
TvCtrlPointSendPowerOff( arg1 );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SETCHAN:
|
|
||||||
TvCtrlPointSendSetChannel( arg1, arg2 );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SETVOL:
|
|
||||||
TvCtrlPointSendSetVolume( arg1, arg2 );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SETCOL:
|
|
||||||
TvCtrlPointSendSetColor( arg1, arg2 );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SETTINT:
|
|
||||||
TvCtrlPointSendSetTint( arg1, arg2 );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SETCONT:
|
|
||||||
TvCtrlPointSendSetContrast( arg1, arg2 );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SETBRT:
|
|
||||||
TvCtrlPointSendSetBrightness( arg1, arg2 );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CTRLACTION:
|
|
||||||
/*
|
|
||||||
re-parse commandline since second arg is string
|
|
||||||
*/
|
|
||||||
validargs = sscanf( cmdline, "%s %d %s", cmd, &arg1, strarg );
|
|
||||||
if( 3 == validargs )
|
|
||||||
TvCtrlPointSendAction( TV_SERVICE_CONTROL, arg1, strarg,
|
|
||||||
NULL, NULL, 0 );
|
|
||||||
else
|
|
||||||
invalidargs++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PICTACTION:
|
|
||||||
/*
|
|
||||||
re-parse commandline since second arg is string
|
|
||||||
*/
|
|
||||||
validargs = sscanf( cmdline, "%s %d %s", cmd, &arg1, strarg );
|
|
||||||
if( 3 == validargs )
|
|
||||||
TvCtrlPointSendAction( TV_SERVICE_PICTURE, arg1, strarg,
|
|
||||||
NULL, NULL, 0 );
|
|
||||||
else
|
|
||||||
invalidargs++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case CTRLGETVAR:
|
|
||||||
/*
|
|
||||||
re-parse commandline since second arg is string
|
|
||||||
*/
|
|
||||||
validargs = sscanf( cmdline, "%s %d %s", cmd, &arg1, strarg );
|
|
||||||
if( 3 == validargs )
|
|
||||||
TvCtrlPointGetVar( TV_SERVICE_CONTROL, arg1, strarg );
|
|
||||||
else
|
|
||||||
invalidargs++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PICTGETVAR:
|
|
||||||
/*
|
|
||||||
re-parse commandline since second arg is string
|
|
||||||
*/
|
|
||||||
validargs = sscanf( cmdline, "%s %d %s", cmd, &arg1, strarg );
|
|
||||||
if( 3 == validargs )
|
|
||||||
TvCtrlPointGetVar( TV_SERVICE_PICTURE, arg1, strarg );
|
|
||||||
else
|
|
||||||
invalidargs++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case PRTDEV:
|
|
||||||
TvCtrlPointPrintDevice( arg1 );
|
|
||||||
break;
|
|
||||||
|
|
||||||
case LSTDEV:
|
|
||||||
TvCtrlPointPrintList();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case REFRESH:
|
|
||||||
TvCtrlPointRefresh();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case EXITCMD:
|
|
||||||
rc = TvCtrlPointStop();
|
|
||||||
exit( rc );
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
SampleUtil_Print( "Command not implemented; see 'Help'" );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( invalidargs )
|
|
||||||
SampleUtil_Print( "Invalid args in command; see 'Help'" );
|
|
||||||
|
|
||||||
return TV_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
device_main( int argc, char **argv )
|
|
||||||
{
|
|
||||||
|
|
||||||
unsigned int portTemp = 0;
|
|
||||||
char *ip_address = NULL,
|
|
||||||
*desc_doc_name = NULL,
|
|
||||||
*web_dir_path = NULL;
|
|
||||||
unsigned int port = 0;
|
|
||||||
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
SampleUtil_Initialize( linux_print );
|
|
||||||
|
|
||||||
// Parse options
|
|
||||||
for( i = 1; i < argc; i++ ) {
|
|
||||||
if( strcmp( argv[i], "-ip" ) == 0 ) {
|
|
||||||
ip_address = argv[++i];
|
|
||||||
} else if( strcmp( argv[i], "-port" ) == 0 ) {
|
|
||||||
sscanf( argv[++i], "%u", &portTemp );
|
|
||||||
} else if( strcmp( argv[i], "-desc" ) == 0 ) {
|
|
||||||
desc_doc_name = argv[++i];
|
|
||||||
} else if( strcmp( argv[i], "-webdir" ) == 0 ) {
|
|
||||||
web_dir_path = argv[++i];
|
|
||||||
} else if( strcmp( argv[i], "-help" ) == 0 ) {
|
|
||||||
SampleUtil_Print( "Usage: %s -ip ipaddress -port port"
|
|
||||||
" -desc desc_doc_name -webdir web_dir_path"
|
|
||||||
" -help (this message)\n", argv[0] );
|
|
||||||
SampleUtil_Print( "\tipaddress: IP address of the device"
|
|
||||||
" (must match desc. doc)\n" );
|
|
||||||
SampleUtil_Print( "\t\te.g.: 192.168.0.4\n" );
|
|
||||||
SampleUtil_Print( "\tport: Port number to use for "
|
|
||||||
"receiving UPnP messages (must match desc. doc)\n" );
|
|
||||||
SampleUtil_Print( "\t\te.g.: 5431\n" );
|
|
||||||
SampleUtil_Print
|
|
||||||
( "\tdesc_doc_name: name of device description document\n" );
|
|
||||||
SampleUtil_Print( "\t\te.g.: tvcombodesc.xml\n" );
|
|
||||||
SampleUtil_Print
|
|
||||||
( "\tweb_dir_path: Filesystem path where web files "
|
|
||||||
"related to the device are stored\n" );
|
|
||||||
SampleUtil_Print( "\t\te.g.: /upnp/sample/web\n" );
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
port = ( unsigned short )portTemp;
|
|
||||||
|
|
||||||
return TvDeviceStart( ip_address, port, desc_doc_name, web_dir_path, linux_print );
|
|
||||||
}
|
|
||||||
|
|
||||||
int main( int argc, char **argv )
|
|
||||||
{
|
|
||||||
int rc;
|
|
||||||
ithread_t cmdloop_thread;
|
|
||||||
#ifdef WIN32
|
|
||||||
#else
|
|
||||||
int sig;
|
|
||||||
sigset_t sigs_to_catch;
|
|
||||||
#endif
|
|
||||||
int code;
|
|
||||||
|
|
||||||
device_main(argc, argv);
|
|
||||||
rc = TvCtrlPointStart( linux_print, NULL );
|
|
||||||
if( rc != TV_SUCCESS ) {
|
|
||||||
SampleUtil_Print( "Error starting UPnP TV Control Point" );
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
/* start a command loop thread */
|
|
||||||
code = ithread_create( &cmdloop_thread, NULL, TvCtrlPointCommandLoop, NULL );
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
ithread_join(cmdloop_thread, NULL);
|
|
||||||
#else
|
|
||||||
/*
|
|
||||||
Catch Ctrl-C and properly shutdown
|
|
||||||
*/
|
|
||||||
sigemptyset( &sigs_to_catch );
|
|
||||||
sigaddset( &sigs_to_catch, SIGINT );
|
|
||||||
sigwait( &sigs_to_catch, &sig );
|
|
||||||
|
|
||||||
SampleUtil_Print( "Shutting down on signal %d...\n", sig );
|
|
||||||
#endif
|
|
||||||
TvDeviceStop();
|
|
||||||
rc = TvCtrlPointStop();
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,170 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
*
|
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer.
|
|
||||||
* - 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.
|
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL 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.
|
|
||||||
*
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef UPNP_TV_CTRLPT_H
|
|
||||||
#define UPNP_TV_CTRLPT_H
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#include "sample_util.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include "ithread.h"
|
|
||||||
#include "upnp.h"
|
|
||||||
#include "upnptools.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include <signal.h>
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
/* Do not #include <unistd.h> */
|
|
||||||
#else
|
|
||||||
#include <unistd.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#define TV_SERVICE_SERVCOUNT 2
|
|
||||||
#define TV_SERVICE_CONTROL 0
|
|
||||||
#define TV_SERVICE_PICTURE 1
|
|
||||||
|
|
||||||
#define TV_CONTROL_VARCOUNT 3
|
|
||||||
#define TV_CONTROL_POWER 0
|
|
||||||
#define TV_CONTROL_CHANNEL 1
|
|
||||||
#define TV_CONTROL_VOLUME 2
|
|
||||||
|
|
||||||
#define TV_PICTURE_VARCOUNT 4
|
|
||||||
#define TV_PICTURE_COLOR 0
|
|
||||||
#define TV_PICTURE_TINT 1
|
|
||||||
#define TV_PICTURE_CONTRAST 2
|
|
||||||
#define TV_PICTURE_BRIGHTNESS 3
|
|
||||||
|
|
||||||
#define TV_MAX_VAL_LEN 5
|
|
||||||
|
|
||||||
#define TV_SUCCESS 0
|
|
||||||
#define TV_ERROR (-1)
|
|
||||||
#define TV_WARNING 1
|
|
||||||
|
|
||||||
/* This should be the maximum VARCOUNT from above */
|
|
||||||
#define TV_MAXVARS TV_PICTURE_VARCOUNT
|
|
||||||
|
|
||||||
extern char TvDeviceType[];
|
|
||||||
extern char *TvServiceType[];
|
|
||||||
extern char *TvServiceName[];
|
|
||||||
extern char *TvVarName[TV_SERVICE_SERVCOUNT][TV_MAXVARS];
|
|
||||||
extern char TvVarCount[];
|
|
||||||
|
|
||||||
struct tv_service {
|
|
||||||
char ServiceId[NAME_SIZE];
|
|
||||||
char ServiceType[NAME_SIZE];
|
|
||||||
char *VariableStrVal[TV_MAXVARS];
|
|
||||||
char EventURL[NAME_SIZE];
|
|
||||||
char ControlURL[NAME_SIZE];
|
|
||||||
char SID[NAME_SIZE];
|
|
||||||
};
|
|
||||||
|
|
||||||
extern struct TvDeviceNode *GlobalDeviceList;
|
|
||||||
|
|
||||||
struct TvDevice {
|
|
||||||
char UDN[250];
|
|
||||||
char DescDocURL[250];
|
|
||||||
char FriendlyName[250];
|
|
||||||
char PresURL[250];
|
|
||||||
int AdvrTimeOut;
|
|
||||||
struct tv_service TvService[TV_SERVICE_SERVCOUNT];
|
|
||||||
};
|
|
||||||
|
|
||||||
struct TvDeviceNode {
|
|
||||||
struct TvDevice device;
|
|
||||||
struct TvDeviceNode *next;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern ithread_mutex_t DeviceListMutex;
|
|
||||||
|
|
||||||
extern UpnpClient_Handle ctrlpt_handle;
|
|
||||||
|
|
||||||
void TvCtrlPointPrintHelp();
|
|
||||||
int TvCtrlPointDeleteNode(struct TvDeviceNode*);
|
|
||||||
int TvCtrlPointRemoveDevice(const char *);
|
|
||||||
int TvCtrlPointRemoveAll();
|
|
||||||
int TvCtrlPointRefresh();
|
|
||||||
|
|
||||||
|
|
||||||
int TvCtrlPointSendAction(int, int, char *, char **, char **, int);
|
|
||||||
int TvCtrlPointSendActionNumericArg(int devnum, int service, char *actionName, char *paramName, int paramValue);
|
|
||||||
int TvCtrlPointSendPowerOn(int devnum);
|
|
||||||
int TvCtrlPointSendPowerOff(int devnum);
|
|
||||||
int TvCtrlPointSendSetChannel(int, int);
|
|
||||||
int TvCtrlPointSendSetVolume(int, int);
|
|
||||||
int TvCtrlPointSendSetColor(int, int);
|
|
||||||
int TvCtrlPointSendSetTint(int, int);
|
|
||||||
int TvCtrlPointSendSetContrast(int, int);
|
|
||||||
int TvCtrlPointSendSetBrightness(int, int);
|
|
||||||
|
|
||||||
int TvCtrlPointGetVar(int, int, char*);
|
|
||||||
int TvCtrlPointGetPower(int devnum);
|
|
||||||
int TvCtrlPointGetChannel(int);
|
|
||||||
int TvCtrlPointGetVolume(int);
|
|
||||||
int TvCtrlPointGetColor(int);
|
|
||||||
int TvCtrlPointGetTint(int);
|
|
||||||
int TvCtrlPointGetContrast(int);
|
|
||||||
int TvCtrlPointGetBrightness(int);
|
|
||||||
|
|
||||||
int TvCtrlPointGetDevice(int, struct TvDeviceNode **);
|
|
||||||
int TvCtrlPointPrintList( void );
|
|
||||||
int TvCtrlPointPrintDevice(int);
|
|
||||||
void TvCtrlPointAddDevice(IXML_Document *, const char *, int);
|
|
||||||
void TvCtrlPointHandleGetVar(const char *, const char *, const DOMString);
|
|
||||||
void TvStateUpdate(char*,int, IXML_Document * , char **);
|
|
||||||
void TvCtrlPointHandleEvent(const UpnpString *, int, IXML_Document *);
|
|
||||||
void TvCtrlPointHandleSubscribeUpdate(const char *, const Upnp_SID, int);
|
|
||||||
int TvCtrlPointCallbackEventHandler(Upnp_EventType, void *, void *);
|
|
||||||
void TvCtrlPointVerifyTimeouts(int);
|
|
||||||
void TvCtrlPointPrintCommands( void );
|
|
||||||
void* TvCtrlPointCommandLoop( void* );
|
|
||||||
int TvCtrlPointStart( print_string printFunctionPtr, state_update updateFunctionPtr );
|
|
||||||
int TvCtrlPointStop( void );
|
|
||||||
int TvCtrlPointProcessCommand( char *cmdline );
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif //UPNP_TV_CTRLPT_H
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,632 +0,0 @@
|
|||||||
/**************************************************************************
|
|
||||||
*
|
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
*
|
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer.
|
|
||||||
* - 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.
|
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 INTEL 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.
|
|
||||||
*
|
|
||||||
**************************************************************************/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef UPNP_TV_DEVICE_H
|
|
||||||
#define UPNP_TV_DEVICE_H
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <signal.h>
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#include "sample_util.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include "ithread.h"
|
|
||||||
#include "upnp.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
/* Do not #include <unistd.h> */
|
|
||||||
#else
|
|
||||||
#include <unistd.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
//Color constants
|
|
||||||
#define MAX_COLOR 10
|
|
||||||
#define MIN_COLOR 1
|
|
||||||
|
|
||||||
//Brightness constants
|
|
||||||
#define MAX_BRIGHTNESS 10
|
|
||||||
#define MIN_BRIGHTNESS 1
|
|
||||||
|
|
||||||
//Power constants
|
|
||||||
#define POWER_ON 1
|
|
||||||
#define POWER_OFF 0
|
|
||||||
|
|
||||||
//Tint constants
|
|
||||||
#define MAX_TINT 10
|
|
||||||
#define MIN_TINT 1
|
|
||||||
|
|
||||||
//Volume constants
|
|
||||||
#define MAX_VOLUME 10
|
|
||||||
#define MIN_VOLUME 1
|
|
||||||
|
|
||||||
//Contrast constants
|
|
||||||
#define MAX_CONTRAST 10
|
|
||||||
#define MIN_CONTRAST 1
|
|
||||||
|
|
||||||
//Channel constants
|
|
||||||
#define MAX_CHANNEL 100
|
|
||||||
#define MIN_CHANNEL 1
|
|
||||||
|
|
||||||
//Number of services.
|
|
||||||
#define TV_SERVICE_SERVCOUNT 2
|
|
||||||
|
|
||||||
//Index of control service
|
|
||||||
#define TV_SERVICE_CONTROL 0
|
|
||||||
|
|
||||||
//Index of picture service
|
|
||||||
#define TV_SERVICE_PICTURE 1
|
|
||||||
|
|
||||||
//Number of control variables
|
|
||||||
#define TV_CONTROL_VARCOUNT 3
|
|
||||||
|
|
||||||
//Index of power variable
|
|
||||||
#define TV_CONTROL_POWER 0
|
|
||||||
|
|
||||||
//Index of channel variable
|
|
||||||
#define TV_CONTROL_CHANNEL 1
|
|
||||||
|
|
||||||
//Index of volume variable
|
|
||||||
#define TV_CONTROL_VOLUME 2
|
|
||||||
|
|
||||||
//Number of picture variables
|
|
||||||
#define TV_PICTURE_VARCOUNT 4
|
|
||||||
|
|
||||||
//Index of color variable
|
|
||||||
#define TV_PICTURE_COLOR 0
|
|
||||||
|
|
||||||
//Index of tint variable
|
|
||||||
#define TV_PICTURE_TINT 1
|
|
||||||
|
|
||||||
//Index of contrast variable
|
|
||||||
#define TV_PICTURE_CONTRAST 2
|
|
||||||
|
|
||||||
//Index of brightness variable
|
|
||||||
#define TV_PICTURE_BRIGHTNESS 3
|
|
||||||
|
|
||||||
//Max value length
|
|
||||||
#define TV_MAX_VAL_LEN 5
|
|
||||||
|
|
||||||
//Max actions
|
|
||||||
#define TV_MAXACTIONS 12
|
|
||||||
|
|
||||||
/* This should be the maximum VARCOUNT from above */
|
|
||||||
#define TV_MAXVARS TV_PICTURE_VARCOUNT
|
|
||||||
|
|
||||||
|
|
||||||
extern char TvDeviceType[];
|
|
||||||
|
|
||||||
extern char *TvServiceType[];
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* upnp_action
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Prototype for all actions. For each action that a service
|
|
||||||
* implements, there is a corresponding function with this prototype.
|
|
||||||
* Pointers to these functions, along with action names, are stored
|
|
||||||
* in the service table. When an action request comes in the action
|
|
||||||
* name is matched, and the appropriate function is called.
|
|
||||||
* Each function returns UPNP_E_SUCCESS, on success, and a nonzero
|
|
||||||
* error code on failure.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * request - document of action request
|
|
||||||
* IXML_Document **out - action result
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
typedef int (*upnp_action) (IXML_Document *request, IXML_Document **out, char **errorString);
|
|
||||||
|
|
||||||
/* Structure for storing Tv Service
|
|
||||||
identifiers and state table */
|
|
||||||
struct TvService {
|
|
||||||
|
|
||||||
char UDN[NAME_SIZE]; /* Universally Unique Device Name */
|
|
||||||
char ServiceId[NAME_SIZE];
|
|
||||||
char ServiceType[NAME_SIZE];
|
|
||||||
char *VariableName[TV_MAXVARS];
|
|
||||||
char *VariableStrVal[TV_MAXVARS];
|
|
||||||
char *ActionNames[TV_MAXACTIONS];
|
|
||||||
upnp_action actions[TV_MAXACTIONS];
|
|
||||||
unsigned int VariableCount;
|
|
||||||
};
|
|
||||||
|
|
||||||
//Array of service structures
|
|
||||||
extern struct TvService tv_service_table[];
|
|
||||||
|
|
||||||
//Device handle returned from sdk
|
|
||||||
extern UpnpDevice_Handle device_handle;
|
|
||||||
|
|
||||||
|
|
||||||
/* Mutex for protecting the global state table data
|
|
||||||
in a multi-threaded, asynchronous environment.
|
|
||||||
All functions should lock this mutex before reading
|
|
||||||
or writing the state table data. */
|
|
||||||
extern ithread_mutex_t TVDevMutex;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* SetActionTable
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Initializes the action table for the specified service.
|
|
||||||
* Note that
|
|
||||||
* knowledge of the service description is
|
|
||||||
* assumed. Action names are hardcoded.
|
|
||||||
* Parameters:
|
|
||||||
* int serviceType - one of TV_SERVICE_CONTROL or, TV_SERVICE_PICTURE
|
|
||||||
* struct TvService *out - service containing action table to set.
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int SetActionTable(int serviceType, struct TvService *out);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceStateTableInit
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Initialize the device state table for
|
|
||||||
* this TvDevice, pulling identifier info
|
|
||||||
* from the description Document. Note that
|
|
||||||
* knowledge of the service description is
|
|
||||||
* assumed. State table variables and default
|
|
||||||
* values are currently hardcoded in this file
|
|
||||||
* rather than being read from service description
|
|
||||||
* documents.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* DescDocURL -- The description document URL
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceStateTableInit(char*);
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceHandleSubscriptionRequest
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Called during a subscription request callback. If the
|
|
||||||
* subscription request is for this device and either its
|
|
||||||
* control service or picture service, then accept it.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* sr_event -- The subscription request event structure
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceHandleSubscriptionRequest(const UpnpSubscriptionRequest *);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceHandleGetVarRequest
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Called during a get variable request callback. If the
|
|
||||||
* request is for this device and either its control service
|
|
||||||
* or picture service, then respond with the variable value.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* cgv_event -- The control get variable request event structure
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceHandleGetVarRequest(UpnpStateVarRequest *);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceHandleActionRequest
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Called during an action request callback. If the
|
|
||||||
* request is for this device and either its control service
|
|
||||||
* or picture service, then perform the action and respond.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* ca_event -- The control action request event structure
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceHandleActionRequest(UpnpActionRequest *);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceCallbackEventHandler
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* The callback handler registered with the SDK while registering
|
|
||||||
* root device. Dispatches the request to the appropriate procedure
|
|
||||||
* based on the value of EventType. The four requests handled by the
|
|
||||||
* device are:
|
|
||||||
* 1) Event Subscription requests.
|
|
||||||
* 2) Get Variable requests.
|
|
||||||
* 3) Action requests.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* EventType -- The type of callback event
|
|
||||||
* Event -- Data structure containing event data
|
|
||||||
* Cookie -- Optional data specified during callback registration
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceCallbackEventHandler(Upnp_EventType, void*, void*);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceSetServiceTableVar
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Update the TvDevice service state table, and notify all subscribed
|
|
||||||
* control points of the updated state. Note that since this function
|
|
||||||
* blocks on the mutex TVDevMutex, to avoid a hang this function should
|
|
||||||
* not be called within any other function that currently has this mutex
|
|
||||||
* locked.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* service -- The service number (TV_SERVICE_CONTROL or TV_SERVICE_PICTURE)
|
|
||||||
* variable -- The variable number (TV_CONTROL_POWER, TV_CONTROL_CHANNEL,
|
|
||||||
* TV_CONTROL_VOLUME, TV_PICTURE_COLOR, TV_PICTURE_TINT,
|
|
||||||
* TV_PICTURE_CONTRAST, or TV_PICTURE_BRIGHTNESS)
|
|
||||||
* value -- The string representation of the new value
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceSetServiceTableVar(unsigned int, unsigned int, char*);
|
|
||||||
|
|
||||||
//Control Service Actions
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDevicePowerOn
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Turn the power on.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - document of action request
|
|
||||||
* IXML_Document **out - action result
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDevicePowerOn(IN IXML_Document * in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDevicePowerOff
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Turn the power off.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - document of action request
|
|
||||||
* IXML_Document **out - action result
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDevicePowerOff(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceSetChannel
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Change the channel, update the TvDevice control service
|
|
||||||
* state table, and notify all subscribed control points of the
|
|
||||||
* updated state.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceSetChannel(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceIncreaseChannel
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Increase the channel.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceIncreaseChannel(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceDecreaseChannel
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Decrease the channel.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceDecreaseChannel(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceSetVolume
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Change the volume, update the TvDevice control service
|
|
||||||
* state table, and notify all subscribed control points of the
|
|
||||||
* updated state.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceSetVolume(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceIncreaseVolume
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Increase the volume.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceIncreaseVolume(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceDecreaseVolume
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Decrease the volume.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceDecreaseVolume(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
|
|
||||||
//Picture Service Actions
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceSetColor
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Change the color, update the TvDevice picture service
|
|
||||||
* state table, and notify all subscribed control points of the
|
|
||||||
* updated state.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceSetColor(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceIncreaseColor
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Increase the color.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceIncreaseColor(IN IXML_Document * in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceDecreaseColor
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Decrease the color.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceDecreaseColor(IN IXML_Document * in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceSetTint
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Change the tint, update the TvDevice picture service
|
|
||||||
* state table, and notify all subscribed control points of the
|
|
||||||
* updated state.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceSetTint(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceIncreaseTint
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Increase tint.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceIncreaseTint(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceDecreaseTint
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Decrease tint.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceDecreaseTint(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
/*****************************************************************************
|
|
||||||
* TvDeviceSetContrast
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Change the contrast, update the TvDevice picture service
|
|
||||||
* state table, and notify all subscribed control points of the
|
|
||||||
* updated state.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
|
||||||
int TvDeviceSetContrast(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceIncreaseContrast
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
*
|
|
||||||
* Increase the contrast.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceIncreaseContrast(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceDecreaseContrast
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Decrease the contrast.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceDecreaseContrast(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceSetBrightness
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Change the brightness, update the TvDevice picture service
|
|
||||||
* state table, and notify all subscribed control points of the
|
|
||||||
* updated state.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* brightness -- The brightness value to change to.
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceSetBrightness(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceIncreaseBrightness
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Increase brightness.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
*
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceIncreaseBrightness(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* TvDeviceDecreaseBrightness
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Decrease brightnesss.
|
|
||||||
*
|
|
||||||
* Parameters:
|
|
||||||
* IXML_Document * in - action request document
|
|
||||||
* IXML_Document **out - action result document
|
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
|
||||||
*
|
|
||||||
*****************************************************************************/
|
|
||||||
int TvDeviceDecreaseBrightness(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
|
||||||
|
|
||||||
int TvDeviceStart(char * ip_address, unsigned short port,char * desc_doc_name,
|
|
||||||
char *web_dir_path, print_string pfun);
|
|
||||||
int TvDeviceStop();
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,40 +1,37 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#include "sample_util.h"
|
|
||||||
#include "upnp_tv_ctrlpt.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include "sample_util.h"
|
||||||
|
#include "upnp_tv_ctrlpt.h"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -127,72 +124,108 @@ TvCtrlPointPrintLongHelp( void )
|
|||||||
SampleUtil_Print( "* TV Control Point Help Info *" );
|
SampleUtil_Print( "* TV Control Point Help Info *" );
|
||||||
SampleUtil_Print( "******************************" );
|
SampleUtil_Print( "******************************" );
|
||||||
SampleUtil_Print( "" );
|
SampleUtil_Print( "" );
|
||||||
SampleUtil_Print( "This sample control point application automatically searches" );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( "for and subscribes to the services of television device emulator" );
|
( "This sample control point application automatically searches" );
|
||||||
SampleUtil_Print( "devices, described in the tvdevicedesc.xml description document." );
|
SampleUtil_Print
|
||||||
|
( "for and subscribes to the services of television device emulator" );
|
||||||
|
SampleUtil_Print
|
||||||
|
( "devices, described in the tvdevicedesc.xml description document." );
|
||||||
SampleUtil_Print( "" );
|
SampleUtil_Print( "" );
|
||||||
SampleUtil_Print( "Commands:" );
|
SampleUtil_Print( "Commands:" );
|
||||||
SampleUtil_Print( " Help" );
|
SampleUtil_Print( " Help" );
|
||||||
SampleUtil_Print( " Print this help info." );
|
SampleUtil_Print( " Print this help info." );
|
||||||
SampleUtil_Print( " ListDev" );
|
SampleUtil_Print( " ListDev" );
|
||||||
SampleUtil_Print( " Print the current list of TV Device Emulators that this" );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( " control point is aware of. Each device is preceded by a" );
|
( " Print the current list of TV Device Emulators that this" );
|
||||||
SampleUtil_Print( " device number which corresponds to the devnum argument of" );
|
SampleUtil_Print
|
||||||
|
( " control point is aware of. Each device is preceded by a" );
|
||||||
|
SampleUtil_Print
|
||||||
|
( " device number which corresponds to the devnum argument of" );
|
||||||
SampleUtil_Print( " commands listed below." );
|
SampleUtil_Print( " commands listed below." );
|
||||||
SampleUtil_Print( " Refresh" );
|
SampleUtil_Print( " Refresh" );
|
||||||
SampleUtil_Print( " Delete all of the devices from the device list and issue new" );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( " search request to rebuild the list from scratch." );
|
( " Delete all of the devices from the device list and issue new" );
|
||||||
|
SampleUtil_Print
|
||||||
|
( " search request to rebuild the list from scratch." );
|
||||||
SampleUtil_Print( " PrintDev <devnum>" );
|
SampleUtil_Print( " PrintDev <devnum>" );
|
||||||
SampleUtil_Print( " Print the state table for the device <devnum>." );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( " e.g., 'PrintDev 1' prints the state table for the first" );
|
( " Print the state table for the device <devnum>." );
|
||||||
|
SampleUtil_Print
|
||||||
|
( " e.g., 'PrintDev 1' prints the state table for the first" );
|
||||||
SampleUtil_Print( " device in the device list." );
|
SampleUtil_Print( " device in the device list." );
|
||||||
SampleUtil_Print( " PowerOn <devnum>" );
|
SampleUtil_Print( " PowerOn <devnum>" );
|
||||||
SampleUtil_Print( " Sends the PowerOn action to the Control Service of" );
|
SampleUtil_Print
|
||||||
|
( " Sends the PowerOn action to the Control Service of" );
|
||||||
SampleUtil_Print( " device <devnum>." );
|
SampleUtil_Print( " device <devnum>." );
|
||||||
SampleUtil_Print( " PowerOff <devnum>" );
|
SampleUtil_Print( " PowerOff <devnum>" );
|
||||||
SampleUtil_Print( " Sends the PowerOff action to the Control Service of" );
|
SampleUtil_Print
|
||||||
|
( " Sends the PowerOff action to the Control Service of" );
|
||||||
SampleUtil_Print( " device <devnum>." );
|
SampleUtil_Print( " device <devnum>." );
|
||||||
SampleUtil_Print( " SetChannel <devnum> <channel>" );
|
SampleUtil_Print( " SetChannel <devnum> <channel>" );
|
||||||
SampleUtil_Print( " Sends the SetChannel action to the Control Service of" );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( " device <devnum>, requesting the channel to be changed" );
|
( " Sends the SetChannel action to the Control Service of" );
|
||||||
|
SampleUtil_Print
|
||||||
|
( " device <devnum>, requesting the channel to be changed" );
|
||||||
SampleUtil_Print( " to <channel>." );
|
SampleUtil_Print( " to <channel>." );
|
||||||
SampleUtil_Print( " SetVolume <devnum> <volume>" );
|
SampleUtil_Print( " SetVolume <devnum> <volume>" );
|
||||||
SampleUtil_Print( " Sends the SetVolume action to the Control Service of" );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( " device <devnum>, requesting the volume to be changed" );
|
( " Sends the SetVolume action to the Control Service of" );
|
||||||
|
SampleUtil_Print
|
||||||
|
( " device <devnum>, requesting the volume to be changed" );
|
||||||
SampleUtil_Print( " to <volume>." );
|
SampleUtil_Print( " to <volume>." );
|
||||||
SampleUtil_Print( " SetColor <devnum> <color>" );
|
SampleUtil_Print( " SetColor <devnum> <color>" );
|
||||||
SampleUtil_Print( " Sends the SetColor action to the Control Service of" );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( " device <devnum>, requesting the color to be changed" );
|
( " Sends the SetColor action to the Control Service of" );
|
||||||
|
SampleUtil_Print
|
||||||
|
( " device <devnum>, requesting the color to be changed" );
|
||||||
SampleUtil_Print( " to <color>." );
|
SampleUtil_Print( " to <color>." );
|
||||||
SampleUtil_Print( " SetTint <devnum> <tint>" );
|
SampleUtil_Print( " SetTint <devnum> <tint>" );
|
||||||
SampleUtil_Print( " Sends the SetTint action to the Control Service of" );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( " device <devnum>, requesting the tint to be changed" );
|
( " Sends the SetTint action to the Control Service of" );
|
||||||
|
SampleUtil_Print
|
||||||
|
( " device <devnum>, requesting the tint to be changed" );
|
||||||
SampleUtil_Print( " to <tint>." );
|
SampleUtil_Print( " to <tint>." );
|
||||||
SampleUtil_Print( " SetContrast <devnum> <contrast>" );
|
SampleUtil_Print( " SetContrast <devnum> <contrast>" );
|
||||||
SampleUtil_Print( " Sends the SetContrast action to the Control Service of" );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( " device <devnum>, requesting the contrast to be changed" );
|
( " Sends the SetContrast action to the Control Service of" );
|
||||||
|
SampleUtil_Print
|
||||||
|
( " device <devnum>, requesting the contrast to be changed" );
|
||||||
SampleUtil_Print( " to <contrast>." );
|
SampleUtil_Print( " to <contrast>." );
|
||||||
SampleUtil_Print( " SetBrightness <devnum> <brightness>" );
|
SampleUtil_Print( " SetBrightness <devnum> <brightness>" );
|
||||||
SampleUtil_Print( " Sends the SetBrightness action to the Control Service of" );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( " device <devnum>, requesting the brightness to be changed" );
|
( " Sends the SetBrightness action to the Control Service of" );
|
||||||
|
SampleUtil_Print
|
||||||
|
( " device <devnum>, requesting the brightness to be changed" );
|
||||||
SampleUtil_Print( " to <brightness>." );
|
SampleUtil_Print( " to <brightness>." );
|
||||||
SampleUtil_Print( " CtrlAction <devnum> <action>" );
|
SampleUtil_Print( " CtrlAction <devnum> <action>" );
|
||||||
SampleUtil_Print( " Sends an action request specified by the string <action>" );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( " to the Control Service of device <devnum>. This command" );
|
( " Sends an action request specified by the string <action>" );
|
||||||
SampleUtil_Print( " only works for actions that have no arguments." );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( " (e.g., \"CtrlAction 1 IncreaseChannel\")" );
|
( " to the Control Service of device <devnum>. This command" );
|
||||||
|
SampleUtil_Print
|
||||||
|
( " only works for actions that have no arguments." );
|
||||||
|
SampleUtil_Print
|
||||||
|
( " (e.g., \"CtrlAction 1 IncreaseChannel\")" );
|
||||||
SampleUtil_Print( " PictAction <devnum> <action>" );
|
SampleUtil_Print( " PictAction <devnum> <action>" );
|
||||||
SampleUtil_Print( " Sends an action request specified by the string <action>" );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( " to the Picture Service of device <devnum>. This command" );
|
( " Sends an action request specified by the string <action>" );
|
||||||
SampleUtil_Print( " only works for actions that have no arguments." );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( " (e.g., \"PictAction 1 DecreaseContrast\")" );
|
( " to the Picture Service of device <devnum>. This command" );
|
||||||
|
SampleUtil_Print
|
||||||
|
( " only works for actions that have no arguments." );
|
||||||
|
SampleUtil_Print
|
||||||
|
( " (e.g., \"PictAction 1 DecreaseContrast\")" );
|
||||||
SampleUtil_Print( " CtrlGetVar <devnum> <varname>" );
|
SampleUtil_Print( " CtrlGetVar <devnum> <varname>" );
|
||||||
SampleUtil_Print( " Requests the value of a variable specified by the string <varname>" );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( " from the Control Service of device <devnum>." );
|
( " Requests the value of a variable specified by the string <varname>" );
|
||||||
|
SampleUtil_Print
|
||||||
|
( " from the Control Service of device <devnum>." );
|
||||||
SampleUtil_Print( " (e.g., \"CtrlGetVar 1 Volume\")" );
|
SampleUtil_Print( " (e.g., \"CtrlGetVar 1 Volume\")" );
|
||||||
SampleUtil_Print( " PictGetVar <devnum> <action>" );
|
SampleUtil_Print( " PictGetVar <devnum> <action>" );
|
||||||
SampleUtil_Print( " Requests the value of a variable specified by the string <varname>" );
|
SampleUtil_Print
|
||||||
SampleUtil_Print( " from the Picture Service of device <devnum>." );
|
( " Requests the value of a variable specified by the string <varname>" );
|
||||||
|
SampleUtil_Print
|
||||||
|
( " from the Picture Service of device <devnum>." );
|
||||||
SampleUtil_Print( " (e.g., \"PictGetVar 1 Tint\")" );
|
SampleUtil_Print( " (e.g., \"PictGetVar 1 Tint\")" );
|
||||||
SampleUtil_Print( " Exit" );
|
SampleUtil_Print( " Exit" );
|
||||||
SampleUtil_Print( " Exits the control point application." );
|
SampleUtil_Print( " Exits the control point application." );
|
||||||
@@ -401,29 +434,26 @@ TvCtrlPointProcessCommand( char *cmdline )
|
|||||||
return TV_SUCCESS;
|
return TV_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main( int argc, char **argv )
|
int
|
||||||
|
main( int argc,
|
||||||
|
char **argv )
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
ithread_t cmdloop_thread;
|
ithread_t cmdloop_thread;
|
||||||
#ifdef WIN32
|
|
||||||
#else
|
|
||||||
int sig;
|
int sig;
|
||||||
sigset_t sigs_to_catch;
|
sigset_t sigs_to_catch;
|
||||||
#endif
|
|
||||||
int code;
|
int code;
|
||||||
|
|
||||||
|
|
||||||
rc = TvCtrlPointStart( linux_print, NULL );
|
rc = TvCtrlPointStart( linux_print, NULL );
|
||||||
if( rc != TV_SUCCESS ) {
|
if( rc != TV_SUCCESS ) {
|
||||||
SampleUtil_Print( "Error starting UPnP TV Control Point" );
|
SampleUtil_Print( "Error starting UPnP TV Control Point" );
|
||||||
return rc;
|
exit( rc );
|
||||||
}
|
}
|
||||||
/* start a command loop thread */
|
// start a command loop thread
|
||||||
code = ithread_create( &cmdloop_thread, NULL, TvCtrlPointCommandLoop, NULL );
|
code =
|
||||||
|
ithread_create( &cmdloop_thread, NULL, TvCtrlPointCommandLoop,
|
||||||
|
NULL );
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
ithread_join(cmdloop_thread, NULL);
|
|
||||||
#else
|
|
||||||
/*
|
/*
|
||||||
Catch Ctrl-C and properly shutdown
|
Catch Ctrl-C and properly shutdown
|
||||||
*/
|
*/
|
||||||
@@ -431,11 +461,7 @@ int main( int argc, char **argv )
|
|||||||
sigaddset( &sigs_to_catch, SIGINT );
|
sigaddset( &sigs_to_catch, SIGINT );
|
||||||
sigwait( &sigs_to_catch, &sig );
|
sigwait( &sigs_to_catch, &sig );
|
||||||
|
|
||||||
SampleUtil_Print( "Shutting down on signal %d...\n", sig );
|
SampleUtil_Print( "Shutting down on signal %d...", sig );
|
||||||
#endif
|
|
||||||
|
|
||||||
rc = TvCtrlPointStop( );
|
rc = TvCtrlPointStop( );
|
||||||
|
exit( rc );
|
||||||
return rc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,42 +1,37 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#include "upnp_tv_ctrlpt.h"
|
#include "upnp_tv_ctrlpt.h"
|
||||||
|
|
||||||
|
/*
|
||||||
#include "upnp.h"
|
|
||||||
|
|
||||||
|
|
||||||
/*!
|
|
||||||
Mutex for protecting the global device list
|
Mutex for protecting the global device list
|
||||||
in a multi-threaded, asynchronous environment.
|
in a multi-threaded, asynchronous environment.
|
||||||
All functions should lock this mutex before reading
|
All functions should lock this mutex before reading
|
||||||
@@ -53,7 +48,7 @@ char *TvServiceType[] = {
|
|||||||
};
|
};
|
||||||
char *TvServiceName[] = { "Control", "Picture" };
|
char *TvServiceName[] = { "Control", "Picture" };
|
||||||
|
|
||||||
/*!
|
/*
|
||||||
Global arrays for storing variable names and counts for
|
Global arrays for storing variable names and counts for
|
||||||
TvControl and TvPicture services
|
TvControl and TvPicture services
|
||||||
*/
|
*/
|
||||||
@@ -64,12 +59,12 @@ char *TvVarName[TV_SERVICE_SERVCOUNT][TV_MAXVARS] = {
|
|||||||
char TvVarCount[TV_SERVICE_SERVCOUNT] =
|
char TvVarCount[TV_SERVICE_SERVCOUNT] =
|
||||||
{ TV_CONTROL_VARCOUNT, TV_PICTURE_VARCOUNT };
|
{ TV_CONTROL_VARCOUNT, TV_PICTURE_VARCOUNT };
|
||||||
|
|
||||||
/*!
|
/*
|
||||||
Timeout to request during subscriptions
|
Timeout to request during subscriptions
|
||||||
*/
|
*/
|
||||||
int default_timeout = 1801;
|
int default_timeout = 1801;
|
||||||
|
|
||||||
/*!
|
/*
|
||||||
The first node in the global device list, or NULL if empty
|
The first node in the global device list, or NULL if empty
|
||||||
*/
|
*/
|
||||||
struct TvDeviceNode *GlobalDeviceList = NULL;
|
struct TvDeviceNode *GlobalDeviceList = NULL;
|
||||||
@@ -144,10 +139,10 @@ TvCtrlPointDeleteNode( struct TvDeviceNode *node )
|
|||||||
*
|
*
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
int
|
int
|
||||||
TvCtrlPointRemoveDevice(const char *UDN)
|
TvCtrlPointRemoveDevice( char *UDN )
|
||||||
{
|
{
|
||||||
struct TvDeviceNode *curdevnode;
|
struct TvDeviceNode *curdevnode,
|
||||||
struct TvDeviceNode *prevdevnode;
|
*prevdevnode;
|
||||||
|
|
||||||
ithread_mutex_lock( &DeviceListMutex );
|
ithread_mutex_lock( &DeviceListMutex );
|
||||||
|
|
||||||
@@ -674,7 +669,7 @@ TvCtrlPointPrintDevice( int devnum )
|
|||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
void
|
void
|
||||||
TvCtrlPointAddDevice( IXML_Document * DescDoc,
|
TvCtrlPointAddDevice( IXML_Document * DescDoc,
|
||||||
const char *location,
|
char *location,
|
||||||
int expires )
|
int expires )
|
||||||
{
|
{
|
||||||
char *deviceType = NULL;
|
char *deviceType = NULL;
|
||||||
@@ -687,19 +682,20 @@ TvCtrlPointAddDevice( IXML_Document *DescDoc,
|
|||||||
char *eventURL[TV_SERVICE_SERVCOUNT] = { NULL, NULL };
|
char *eventURL[TV_SERVICE_SERVCOUNT] = { NULL, NULL };
|
||||||
char *controlURL[TV_SERVICE_SERVCOUNT] = { NULL, NULL };
|
char *controlURL[TV_SERVICE_SERVCOUNT] = { NULL, NULL };
|
||||||
Upnp_SID eventSID[TV_SERVICE_SERVCOUNT];
|
Upnp_SID eventSID[TV_SERVICE_SERVCOUNT];
|
||||||
int TimeOut[TV_SERVICE_SERVCOUNT] = {
|
int TimeOut[TV_SERVICE_SERVCOUNT] =
|
||||||
default_timeout,
|
{ default_timeout, default_timeout };
|
||||||
default_timeout };
|
|
||||||
struct TvDeviceNode *deviceNode;
|
struct TvDeviceNode *deviceNode;
|
||||||
struct TvDeviceNode *tmpdevnode;
|
struct TvDeviceNode *tmpdevnode;
|
||||||
int ret = 1;
|
int ret = 1;
|
||||||
int found = 0;
|
int found = 0;
|
||||||
int service;
|
int service,
|
||||||
int var;
|
var;
|
||||||
|
|
||||||
ithread_mutex_lock( &DeviceListMutex );
|
ithread_mutex_lock( &DeviceListMutex );
|
||||||
|
|
||||||
/* Read key elements from description document */
|
/*
|
||||||
|
Read key elements from description document
|
||||||
|
*/
|
||||||
UDN = SampleUtil_GetFirstDocumentItem( DescDoc, "UDN" );
|
UDN = SampleUtil_GetFirstDocumentItem( DescDoc, "UDN" );
|
||||||
deviceType = SampleUtil_GetFirstDocumentItem( DescDoc, "deviceType" );
|
deviceType = SampleUtil_GetFirstDocumentItem( DescDoc, "deviceType" );
|
||||||
friendlyName =
|
friendlyName =
|
||||||
@@ -707,8 +703,9 @@ TvCtrlPointAddDevice( IXML_Document *DescDoc,
|
|||||||
baseURL = SampleUtil_GetFirstDocumentItem( DescDoc, "URLBase" );
|
baseURL = SampleUtil_GetFirstDocumentItem( DescDoc, "URLBase" );
|
||||||
relURL = SampleUtil_GetFirstDocumentItem( DescDoc, "presentationURL" );
|
relURL = SampleUtil_GetFirstDocumentItem( DescDoc, "presentationURL" );
|
||||||
|
|
||||||
ret = UpnpResolveURL(
|
ret =
|
||||||
( baseURL ? baseURL : location ), relURL, presURL);
|
UpnpResolveURL( ( baseURL ? baseURL : location ), relURL,
|
||||||
|
presURL );
|
||||||
|
|
||||||
if( UPNP_E_SUCCESS != ret )
|
if( UPNP_E_SUCCESS != ret )
|
||||||
SampleUtil_Print( "Error generating presURL from %s + %s", baseURL,
|
SampleUtil_Print( "Error generating presURL from %s + %s", baseURL,
|
||||||
@@ -942,31 +939,27 @@ TvStateUpdate( char *UDN,
|
|||||||
* changes -- The DOM document representing the changes
|
* changes -- The DOM document representing the changes
|
||||||
*
|
*
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
void TvCtrlPointHandleEvent(
|
void
|
||||||
const UpnpString *sid,
|
TvCtrlPointHandleEvent( Upnp_SID sid,
|
||||||
int evntkey,
|
int evntkey,
|
||||||
IXML_Document * changes )
|
IXML_Document * changes )
|
||||||
{
|
{
|
||||||
struct TvDeviceNode *tmpdevnode;
|
struct TvDeviceNode *tmpdevnode;
|
||||||
int service;
|
int service;
|
||||||
const char *aux_sid = NULL;
|
|
||||||
|
|
||||||
ithread_mutex_lock( &DeviceListMutex );
|
ithread_mutex_lock( &DeviceListMutex );
|
||||||
|
|
||||||
tmpdevnode = GlobalDeviceList;
|
tmpdevnode = GlobalDeviceList;
|
||||||
while( tmpdevnode ) {
|
while( tmpdevnode ) {
|
||||||
for (service = 0; service < TV_SERVICE_SERVCOUNT; ++service) {
|
for( service = 0; service < TV_SERVICE_SERVCOUNT; service++ ) {
|
||||||
aux_sid = UpnpString_get_String(sid);
|
if( strcmp( tmpdevnode->device.TvService[service].SID, sid ) ==
|
||||||
if (strcmp(tmpdevnode->device.TvService[service].SID, aux_sid) == 0) {
|
0 ) {
|
||||||
SampleUtil_Print( "Received Tv %s Event: %d for SID %s",
|
SampleUtil_Print( "Received Tv %s Event: %d for SID %s",
|
||||||
TvServiceName[service],
|
TvServiceName[service], evntkey, sid );
|
||||||
evntkey,
|
|
||||||
aux_sid);
|
TvStateUpdate( tmpdevnode->device.UDN, service, changes,
|
||||||
TvStateUpdate(
|
( char ** )&tmpdevnode->device.
|
||||||
tmpdevnode->device.UDN,
|
TvService[service].VariableStrVal );
|
||||||
service,
|
|
||||||
changes,
|
|
||||||
(char **)&tmpdevnode->device.TvService[service].VariableStrVal);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -990,9 +983,9 @@ void TvCtrlPointHandleEvent(
|
|||||||
* timeout -- The new timeout for the subscription
|
* timeout -- The new timeout for the subscription
|
||||||
*
|
*
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
void TvCtrlPointHandleSubscribeUpdate(
|
void
|
||||||
const char *eventURL,
|
TvCtrlPointHandleSubscribeUpdate( char *eventURL,
|
||||||
const Upnp_SID sid,
|
Upnp_SID sid,
|
||||||
int timeout )
|
int timeout )
|
||||||
{
|
{
|
||||||
struct TvDeviceNode *tmpdevnode;
|
struct TvDeviceNode *tmpdevnode;
|
||||||
@@ -1022,9 +1015,9 @@ void TvCtrlPointHandleSubscribeUpdate(
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
TvCtrlPointHandleGetVar( const char *controlURL,
|
TvCtrlPointHandleGetVar( char *controlURL,
|
||||||
const char *varName,
|
char *varName,
|
||||||
const DOMString varValue )
|
DOMString varValue )
|
||||||
{
|
{
|
||||||
|
|
||||||
struct TvDeviceNode *tmpdevnode;
|
struct TvDeviceNode *tmpdevnode;
|
||||||
@@ -1035,9 +1028,12 @@ TvCtrlPointHandleGetVar( const char *controlURL,
|
|||||||
tmpdevnode = GlobalDeviceList;
|
tmpdevnode = GlobalDeviceList;
|
||||||
while( tmpdevnode ) {
|
while( tmpdevnode ) {
|
||||||
for( service = 0; service < TV_SERVICE_SERVCOUNT; service++ ) {
|
for( service = 0; service < TV_SERVICE_SERVCOUNT; service++ ) {
|
||||||
if (strcmp(tmpdevnode->device.TvService[service].ControlURL, controlURL ) == 0 ) {
|
if( strcmp
|
||||||
SampleUtil_StateUpdate(
|
( tmpdevnode->device.TvService[service].ControlURL,
|
||||||
varName, varValue, tmpdevnode->device.UDN, GET_VAR_COMPLETE );
|
controlURL ) == 0 ) {
|
||||||
|
SampleUtil_StateUpdate( varName, varValue,
|
||||||
|
tmpdevnode->device.UDN,
|
||||||
|
GET_VAR_COMPLETE );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1061,60 +1057,69 @@ TvCtrlPointHandleGetVar( const char *controlURL,
|
|||||||
* Cookie -- Optional data specified during callback registration
|
* Cookie -- Optional data specified during callback registration
|
||||||
*
|
*
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
int TvCtrlPointCallbackEventHandler(Upnp_EventType EventType, void *Event, void *Cookie)
|
int
|
||||||
|
TvCtrlPointCallbackEventHandler( Upnp_EventType EventType,
|
||||||
|
void *Event,
|
||||||
|
void *Cookie )
|
||||||
{
|
{
|
||||||
int errCode = 0;
|
|
||||||
|
|
||||||
SampleUtil_PrintEvent( EventType, Event );
|
SampleUtil_PrintEvent( EventType, Event );
|
||||||
|
|
||||||
switch ( EventType ) {
|
switch ( EventType ) {
|
||||||
/* SSDP Stuff */
|
/*
|
||||||
|
SSDP Stuff
|
||||||
|
*/
|
||||||
case UPNP_DISCOVERY_ADVERTISEMENT_ALIVE:
|
case UPNP_DISCOVERY_ADVERTISEMENT_ALIVE:
|
||||||
case UPNP_DISCOVERY_SEARCH_RESULT: {
|
case UPNP_DISCOVERY_SEARCH_RESULT:
|
||||||
UpnpDiscovery *d_event = (UpnpDiscovery *)Event;
|
{
|
||||||
|
struct Upnp_Discovery *d_event =
|
||||||
|
( struct Upnp_Discovery * )Event;
|
||||||
IXML_Document *DescDoc = NULL;
|
IXML_Document *DescDoc = NULL;
|
||||||
const char *location = NULL;
|
int ret;
|
||||||
int errCode = UpnpDiscovery_get_ErrCode(d_event);
|
|
||||||
if (errCode != UPNP_E_SUCCESS) {
|
if( d_event->ErrCode != UPNP_E_SUCCESS ) {
|
||||||
SampleUtil_Print(
|
SampleUtil_Print( "Error in Discovery Callback -- %d",
|
||||||
"Error in Discovery Callback -- %d", errCode);
|
d_event->ErrCode );
|
||||||
}
|
}
|
||||||
|
|
||||||
location = UpnpString_get_String(UpnpDiscovery_get_Location(d_event));
|
if( ( ret =
|
||||||
errCode = UpnpDownloadXmlDoc(location, &DescDoc);
|
UpnpDownloadXmlDoc( d_event->Location,
|
||||||
if (errCode != UPNP_E_SUCCESS) {
|
&DescDoc ) ) !=
|
||||||
SampleUtil_Print(
|
UPNP_E_SUCCESS ) {
|
||||||
"Error obtaining device description from %s -- error = %d",
|
SampleUtil_Print
|
||||||
location, errCode);
|
( "Error obtaining device description from %s -- error = %d",
|
||||||
|
d_event->Location, ret );
|
||||||
} else {
|
} else {
|
||||||
TvCtrlPointAddDevice(
|
TvCtrlPointAddDevice( DescDoc, d_event->Location,
|
||||||
DescDoc, location, UpnpDiscovery_get_Expires(d_event));
|
d_event->Expires );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( DescDoc ) {
|
if( DescDoc )
|
||||||
ixmlDocument_free( DescDoc );
|
ixmlDocument_free( DescDoc );
|
||||||
}
|
|
||||||
|
|
||||||
TvCtrlPointPrintList( );
|
TvCtrlPointPrintList( );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case UPNP_DISCOVERY_SEARCH_TIMEOUT:
|
case UPNP_DISCOVERY_SEARCH_TIMEOUT:
|
||||||
/* Nothing to do here... */
|
/*
|
||||||
|
Nothing to do here...
|
||||||
|
*/
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE: {
|
case UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE:
|
||||||
UpnpDiscovery *d_event = (UpnpDiscovery *)Event;
|
{
|
||||||
int errCode = UpnpDiscovery_get_ErrCode(d_event);
|
struct Upnp_Discovery *d_event =
|
||||||
const char *deviceId = UpnpString_get_String(
|
( struct Upnp_Discovery * )Event;
|
||||||
UpnpDiscovery_get_DeviceID(d_event));
|
|
||||||
|
|
||||||
if (errCode != UPNP_E_SUCCESS) {
|
if( d_event->ErrCode != UPNP_E_SUCCESS ) {
|
||||||
SampleUtil_Print(
|
SampleUtil_Print
|
||||||
"Error in Discovery ByeBye Callback -- %d", errCode);
|
( "Error in Discovery ByeBye Callback -- %d",
|
||||||
|
d_event->ErrCode );
|
||||||
}
|
}
|
||||||
|
|
||||||
SampleUtil_Print("Received ByeBye for Device: %s", deviceId);
|
SampleUtil_Print( "Received ByeBye for Device: %s",
|
||||||
TvCtrlPointRemoveDevice(deviceId);
|
d_event->DeviceId );
|
||||||
|
TvCtrlPointRemoveDevice( d_event->DeviceId );
|
||||||
|
|
||||||
SampleUtil_Print( "After byebye:" );
|
SampleUtil_Print( "After byebye:" );
|
||||||
TvCtrlPointPrintList( );
|
TvCtrlPointPrintList( );
|
||||||
@@ -1122,92 +1127,109 @@ int TvCtrlPointCallbackEventHandler(Upnp_EventType EventType, void *Event, void
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* SOAP Stuff */
|
/*
|
||||||
case UPNP_CONTROL_ACTION_COMPLETE: {
|
SOAP Stuff
|
||||||
UpnpActionComplete *a_event = (UpnpActionComplete *)Event;
|
*/
|
||||||
int errCode = UpnpActionComplete_get_ErrCode(a_event);
|
case UPNP_CONTROL_ACTION_COMPLETE:
|
||||||
if (errCode != UPNP_E_SUCCESS) {
|
{
|
||||||
SampleUtil_Print(
|
struct Upnp_Action_Complete *a_event =
|
||||||
"Error in Action Complete Callback -- %d",
|
( struct Upnp_Action_Complete * )Event;
|
||||||
errCode);
|
|
||||||
|
if( a_event->ErrCode != UPNP_E_SUCCESS ) {
|
||||||
|
SampleUtil_Print
|
||||||
|
( "Error in Action Complete Callback -- %d",
|
||||||
|
a_event->ErrCode );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* No need for any processing here, just print out results.
|
/*
|
||||||
* Service state table updates are handled by events. */
|
No need for any processing here, just print out results. Service state
|
||||||
|
table updates are handled by events.
|
||||||
|
*/
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case UPNP_CONTROL_GET_VAR_COMPLETE: {
|
case UPNP_CONTROL_GET_VAR_COMPLETE:
|
||||||
UpnpStateVarComplete *sv_event = (UpnpStateVarComplete *)Event;
|
{
|
||||||
int errCode = UpnpStateVarComplete_get_ErrCode(sv_event);
|
struct Upnp_State_Var_Complete *sv_event =
|
||||||
if (errCode != UPNP_E_SUCCESS) {
|
( struct Upnp_State_Var_Complete * )Event;
|
||||||
SampleUtil_Print(
|
|
||||||
"Error in Get Var Complete Callback -- %d",
|
if( sv_event->ErrCode != UPNP_E_SUCCESS ) {
|
||||||
errCode );
|
SampleUtil_Print
|
||||||
|
( "Error in Get Var Complete Callback -- %d",
|
||||||
|
sv_event->ErrCode );
|
||||||
} else {
|
} else {
|
||||||
TvCtrlPointHandleGetVar(
|
TvCtrlPointHandleGetVar( sv_event->CtrlUrl,
|
||||||
UpnpString_get_String(UpnpStateVarComplete_get_CtrlUrl(sv_event)),
|
sv_event->StateVarName,
|
||||||
UpnpString_get_String(UpnpStateVarComplete_get_StateVarName(sv_event)),
|
sv_event->CurrentVal );
|
||||||
UpnpStateVarComplete_get_CurrentVal(sv_event) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* GENA Stuff */
|
/*
|
||||||
case UPNP_EVENT_RECEIVED: {
|
GENA Stuff
|
||||||
UpnpEvent *e_event = (UpnpEvent *)Event;
|
*/
|
||||||
TvCtrlPointHandleEvent(
|
case UPNP_EVENT_RECEIVED:
|
||||||
UpnpEvent_get_SID(e_event),
|
{
|
||||||
UpnpEvent_get_EventKey(e_event),
|
struct Upnp_Event *e_event = ( struct Upnp_Event * )Event;
|
||||||
UpnpEvent_get_ChangedVariables(e_event));
|
|
||||||
|
TvCtrlPointHandleEvent( e_event->Sid, e_event->EventKey,
|
||||||
|
e_event->ChangedVariables );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case UPNP_EVENT_SUBSCRIBE_COMPLETE:
|
case UPNP_EVENT_SUBSCRIBE_COMPLETE:
|
||||||
case UPNP_EVENT_UNSUBSCRIBE_COMPLETE:
|
case UPNP_EVENT_UNSUBSCRIBE_COMPLETE:
|
||||||
case UPNP_EVENT_RENEWAL_COMPLETE: {
|
case UPNP_EVENT_RENEWAL_COMPLETE:
|
||||||
UpnpEventSubscribe *es_event = (UpnpEventSubscribe *)Event;
|
{
|
||||||
errCode = UpnpEventSubscribe_get_ErrCode(es_event);
|
struct Upnp_Event_Subscribe *es_event =
|
||||||
if (errCode != UPNP_E_SUCCESS) {
|
( struct Upnp_Event_Subscribe * )Event;
|
||||||
SampleUtil_Print(
|
|
||||||
"Error in Event Subscribe Callback -- %d",
|
if( es_event->ErrCode != UPNP_E_SUCCESS ) {
|
||||||
errCode);
|
SampleUtil_Print
|
||||||
|
( "Error in Event Subscribe Callback -- %d",
|
||||||
|
es_event->ErrCode );
|
||||||
} else {
|
} else {
|
||||||
TvCtrlPointHandleSubscribeUpdate(
|
TvCtrlPointHandleSubscribeUpdate( es_event->
|
||||||
UpnpString_get_String(UpnpEventSubscribe_get_PublisherUrl(es_event)),
|
PublisherUrl,
|
||||||
UpnpString_get_String(UpnpEventSubscribe_get_SID(es_event)),
|
es_event->Sid,
|
||||||
UpnpEventSubscribe_get_TimeOut(es_event));
|
es_event->TimeOut );
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case UPNP_EVENT_AUTORENEWAL_FAILED:
|
case UPNP_EVENT_AUTORENEWAL_FAILED:
|
||||||
case UPNP_EVENT_SUBSCRIPTION_EXPIRED: {
|
case UPNP_EVENT_SUBSCRIPTION_EXPIRED:
|
||||||
UpnpEventSubscribe *es_event = (UpnpEventSubscribe *)Event;
|
{
|
||||||
int TimeOut = default_timeout;
|
int TimeOut = default_timeout;
|
||||||
Upnp_SID newSID;
|
Upnp_SID newSID;
|
||||||
|
int ret;
|
||||||
|
|
||||||
errCode = UpnpSubscribe(
|
struct Upnp_Event_Subscribe *es_event =
|
||||||
ctrlpt_handle,
|
( struct Upnp_Event_Subscribe * )Event;
|
||||||
UpnpString_get_String(UpnpEventSubscribe_get_PublisherUrl(es_event)),
|
|
||||||
&TimeOut,
|
ret =
|
||||||
|
UpnpSubscribe( ctrlpt_handle, es_event->PublisherUrl,
|
||||||
|
&TimeOut, newSID );
|
||||||
|
|
||||||
|
if( ret == UPNP_E_SUCCESS ) {
|
||||||
|
SampleUtil_Print( "Subscribed to EventURL with SID=%s",
|
||||||
newSID );
|
newSID );
|
||||||
|
TvCtrlPointHandleSubscribeUpdate( es_event->
|
||||||
if (errCode == UPNP_E_SUCCESS) {
|
PublisherUrl, newSID,
|
||||||
SampleUtil_Print("Subscribed to EventURL with SID=%s", newSID);
|
|
||||||
TvCtrlPointHandleSubscribeUpdate(
|
|
||||||
UpnpString_get_String(UpnpEventSubscribe_get_PublisherUrl(es_event)),
|
|
||||||
newSID,
|
|
||||||
TimeOut );
|
TimeOut );
|
||||||
} else {
|
} else {
|
||||||
SampleUtil_Print("Error Subscribing to EventURL -- %d", errCode);
|
SampleUtil_Print
|
||||||
|
( "Error Subscribing to EventURL -- %d", ret );
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ignore these cases, since this is not a device */
|
/*
|
||||||
|
ignore these cases, since this is not a device
|
||||||
|
*/
|
||||||
case UPNP_EVENT_SUBSCRIPTION_REQUEST:
|
case UPNP_EVENT_SUBSCRIPTION_REQUEST:
|
||||||
case UPNP_CONTROL_GET_VAR_REQUEST:
|
case UPNP_CONTROL_GET_VAR_REQUEST:
|
||||||
case UPNP_CONTROL_ACTION_REQUEST:
|
case UPNP_CONTROL_ACTION_REQUEST:
|
||||||
@@ -1298,12 +1320,12 @@ TvCtrlPointVerifyTimeouts( int incr )
|
|||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
static int TvCtrlPointTimerLoopRun = 1;
|
void *
|
||||||
void *TvCtrlPointTimerLoop(void *args)
|
TvCtrlPointTimerLoop( void *args )
|
||||||
{
|
{
|
||||||
int incr = 30; // how often to verify the timeouts, in seconds
|
int incr = 30; // how often to verify the timeouts, in seconds
|
||||||
|
|
||||||
while (TvCtrlPointTimerLoopRun) {
|
while( 1 ) {
|
||||||
isleep( incr );
|
isleep( incr );
|
||||||
TvCtrlPointVerifyTimeouts( incr );
|
TvCtrlPointVerifyTimeouts( incr );
|
||||||
}
|
}
|
||||||
@@ -1326,11 +1348,13 @@ void *TvCtrlPointTimerLoop(void *args)
|
|||||||
* TV_SUCCESS if everything went well, else TV_ERROR
|
* TV_SUCCESS if everything went well, else TV_ERROR
|
||||||
*
|
*
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
int TvCtrlPointStart(print_string printFunctionPtr, state_update updateFunctionPtr)
|
int
|
||||||
|
TvCtrlPointStart( print_string printFunctionPtr,
|
||||||
|
state_update updateFunctionPtr )
|
||||||
{
|
{
|
||||||
ithread_t timer_thread;
|
ithread_t timer_thread;
|
||||||
int rc;
|
int rc;
|
||||||
unsigned short port = 0;
|
short int port = 0;
|
||||||
char *ip_address = NULL;
|
char *ip_address = NULL;
|
||||||
|
|
||||||
SampleUtil_Initialize( printFunctionPtr );
|
SampleUtil_Initialize( printFunctionPtr );
|
||||||
@@ -1338,36 +1362,28 @@ int TvCtrlPointStart(print_string printFunctionPtr, state_update updateFunctionP
|
|||||||
|
|
||||||
ithread_mutex_init( &DeviceListMutex, 0 );
|
ithread_mutex_init( &DeviceListMutex, 0 );
|
||||||
|
|
||||||
SampleUtil_Print(
|
SampleUtil_Print( "Intializing UPnP with ipaddress=%s port=%d",
|
||||||
"Initializing UPnP Sdk with\n"
|
|
||||||
"\tipaddress = %s port = %u\n",
|
|
||||||
ip_address, port );
|
ip_address, port );
|
||||||
|
|
||||||
rc = UpnpInit( ip_address, port );
|
rc = UpnpInit( ip_address, port );
|
||||||
if (rc != UPNP_E_SUCCESS) {
|
if( UPNP_E_SUCCESS != rc ) {
|
||||||
SampleUtil_Print( "WinCEStart: UpnpInit() Error: %d", rc );
|
SampleUtil_Print( "WinCEStart: UpnpInit() Error: %d", rc );
|
||||||
UpnpFinish( );
|
UpnpFinish( );
|
||||||
return TV_ERROR;
|
return TV_ERROR;
|
||||||
}
|
}
|
||||||
if (!ip_address) {
|
|
||||||
ip_address = UpnpGetServerIpAddress();
|
|
||||||
}
|
|
||||||
if (!port) {
|
|
||||||
port = UpnpGetServerPort();
|
|
||||||
}
|
|
||||||
|
|
||||||
SampleUtil_Print(
|
if( NULL == ip_address )
|
||||||
"UPnP Initialized\n"
|
ip_address = UpnpGetServerIpAddress( );
|
||||||
"\tipaddress= %s port = %u\n",
|
if( 0 == port )
|
||||||
ip_address, port);
|
port = UpnpGetServerPort( );
|
||||||
|
|
||||||
|
SampleUtil_Print( "UPnP Initialized (%s:%d)", ip_address, port );
|
||||||
|
|
||||||
SampleUtil_Print( "Registering Control Point" );
|
SampleUtil_Print( "Registering Control Point" );
|
||||||
rc = UpnpRegisterClient( TvCtrlPointCallbackEventHandler,
|
rc = UpnpRegisterClient( TvCtrlPointCallbackEventHandler,
|
||||||
&ctrlpt_handle, &ctrlpt_handle );
|
&ctrlpt_handle, &ctrlpt_handle );
|
||||||
if (rc != UPNP_E_SUCCESS) {
|
if( UPNP_E_SUCCESS != rc ) {
|
||||||
SampleUtil_Print( "Error registering CP: %d", rc );
|
SampleUtil_Print( "Error registering CP: %d", rc );
|
||||||
UpnpFinish( );
|
UpnpFinish( );
|
||||||
|
|
||||||
return TV_ERROR;
|
return TV_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1375,16 +1391,15 @@ int TvCtrlPointStart(print_string printFunctionPtr, state_update updateFunctionP
|
|||||||
|
|
||||||
TvCtrlPointRefresh( );
|
TvCtrlPointRefresh( );
|
||||||
|
|
||||||
/* start a timer thread */
|
// start a timer thread
|
||||||
ithread_create( &timer_thread, NULL, TvCtrlPointTimerLoop, NULL );
|
ithread_create( &timer_thread, NULL, TvCtrlPointTimerLoop, NULL );
|
||||||
ithread_detach(timer_thread);
|
|
||||||
|
|
||||||
return TV_SUCCESS;
|
return TV_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
int TvCtrlPointStop(void)
|
int
|
||||||
|
TvCtrlPointStop( void )
|
||||||
{
|
{
|
||||||
TvCtrlPointTimerLoopRun = 0;
|
|
||||||
TvCtrlPointRemoveAll( );
|
TvCtrlPointRemoveAll( );
|
||||||
UpnpUnRegisterClient( ctrlpt_handle );
|
UpnpUnRegisterClient( ctrlpt_handle );
|
||||||
UpnpFinish( );
|
UpnpFinish( );
|
||||||
@@ -1392,4 +1407,3 @@ int TvCtrlPointStop(void)
|
|||||||
|
|
||||||
return TV_SUCCESS;
|
return TV_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,65 +1,53 @@
|
|||||||
/**************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
**************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#ifndef UPNP_TV_CTRLPT_H
|
#ifndef UPNP_TV_CTRLPT_H
|
||||||
#define UPNP_TV_CTRLPT_H
|
#define UPNP_TV_CTRLPT_H
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
#include "sample_util.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include "ithread.h"
|
#include "ithread.h"
|
||||||
#include "upnp.h"
|
#include <unistd.h>
|
||||||
#include "upnptools.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include <signal.h>
|
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <signal.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "upnp.h"
|
||||||
#ifdef WIN32
|
#include "upnptools.h"
|
||||||
/* Do not #include <unistd.h> */
|
#include "sample_util.h"
|
||||||
#else
|
|
||||||
#include <unistd.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#define TV_SERVICE_SERVCOUNT 2
|
#define TV_SERVICE_SERVCOUNT 2
|
||||||
#define TV_SERVICE_CONTROL 0
|
#define TV_SERVICE_CONTROL 0
|
||||||
@@ -120,11 +108,11 @@ extern ithread_mutex_t DeviceListMutex;
|
|||||||
|
|
||||||
extern UpnpClient_Handle ctrlpt_handle;
|
extern UpnpClient_Handle ctrlpt_handle;
|
||||||
|
|
||||||
void TvCtrlPointPrintHelp();
|
void TvCtrlPointPrintHelp( void );
|
||||||
int TvCtrlPointDeleteNode(struct TvDeviceNode*);
|
int TvCtrlPointDeleteNode(struct TvDeviceNode*);
|
||||||
int TvCtrlPointRemoveDevice(const char *);
|
int TvCtrlPointRemoveDevice(char*);
|
||||||
int TvCtrlPointRemoveAll();
|
int TvCtrlPointRemoveAll( void );
|
||||||
int TvCtrlPointRefresh();
|
int TvCtrlPointRefresh( void );
|
||||||
|
|
||||||
|
|
||||||
int TvCtrlPointSendAction(int, int, char *, char **, char **, int);
|
int TvCtrlPointSendAction(int, int, char *, char **, char **, int);
|
||||||
@@ -150,11 +138,11 @@ int TvCtrlPointGetBrightness(int);
|
|||||||
int TvCtrlPointGetDevice(int, struct TvDeviceNode **);
|
int TvCtrlPointGetDevice(int, struct TvDeviceNode **);
|
||||||
int TvCtrlPointPrintList( void );
|
int TvCtrlPointPrintList( void );
|
||||||
int TvCtrlPointPrintDevice(int);
|
int TvCtrlPointPrintDevice(int);
|
||||||
void TvCtrlPointAddDevice(IXML_Document *, const char *, int);
|
void TvCtrlPointAddDevice (IXML_Document *, char *, int);
|
||||||
void TvCtrlPointHandleGetVar(const char *, const char *, const DOMString);
|
void TvCtrlPointHandleGetVar(char *,char *,DOMString);
|
||||||
void TvStateUpdate(char*,int, IXML_Document * , char **);
|
void TvStateUpdate(char*,int, IXML_Document * , char **);
|
||||||
void TvCtrlPointHandleEvent(const UpnpString *, int, IXML_Document *);
|
void TvCtrlPointHandleEvent(Upnp_SID, int, IXML_Document *);
|
||||||
void TvCtrlPointHandleSubscribeUpdate(const char *, const Upnp_SID, int);
|
void TvCtrlPointHandleSubscribeUpdate(char *, Upnp_SID, int);
|
||||||
int TvCtrlPointCallbackEventHandler(Upnp_EventType, void *, void *);
|
int TvCtrlPointCallbackEventHandler(Upnp_EventType, void *, void *);
|
||||||
void TvCtrlPointVerifyTimeouts(int);
|
void TvCtrlPointVerifyTimeouts(int);
|
||||||
void TvCtrlPointPrintCommands( void );
|
void TvCtrlPointPrintCommands( void );
|
||||||
|
|||||||
@@ -1,41 +1,37 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#include "sample_util.h"
|
|
||||||
#include "upnp_tv_device.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include "sample_util.h"
|
||||||
|
#include "upnp_tv_device.h"
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* linux_print
|
* linux_print
|
||||||
@@ -121,22 +117,21 @@ TvDeviceCommandLoop( void *args )
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int main( IN int argc, IN char **argv )
|
int
|
||||||
|
main( IN int argc,
|
||||||
|
IN char **argv )
|
||||||
{
|
{
|
||||||
|
|
||||||
unsigned int portTemp = 0;
|
unsigned int portTemp = 0;
|
||||||
char *ip_address = NULL,
|
char *ip_address = NULL,
|
||||||
*desc_doc_name = NULL,
|
*desc_doc_name = NULL,
|
||||||
*web_dir_path = NULL;
|
*web_dir_path = NULL;
|
||||||
int rc;
|
|
||||||
ithread_t cmdloop_thread;
|
ithread_t cmdloop_thread;
|
||||||
#ifdef WIN32
|
|
||||||
#else
|
|
||||||
int sig;
|
|
||||||
sigset_t sigs_to_catch;
|
|
||||||
#endif
|
|
||||||
int code;
|
int code;
|
||||||
unsigned int port = 0;
|
unsigned int port = 0;
|
||||||
|
int sig;
|
||||||
|
sigset_t sigs_to_catch;
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
SampleUtil_Initialize( linux_print );
|
SampleUtil_Initialize( linux_print );
|
||||||
@@ -168,20 +163,21 @@ int main( IN int argc, IN char **argv )
|
|||||||
( "\tweb_dir_path: Filesystem path where web files "
|
( "\tweb_dir_path: Filesystem path where web files "
|
||||||
"related to the device are stored\n" );
|
"related to the device are stored\n" );
|
||||||
SampleUtil_Print( "\t\te.g.: /upnp/sample/tvdevice/web\n" );
|
SampleUtil_Print( "\t\te.g.: /upnp/sample/tvdevice/web\n" );
|
||||||
return 1;
|
exit( 1 );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
port = ( unsigned short )portTemp;
|
port = ( unsigned short )portTemp;
|
||||||
|
|
||||||
TvDeviceStart( ip_address, port, desc_doc_name, web_dir_path, linux_print );
|
TvDeviceStart( ip_address, port, desc_doc_name, web_dir_path,
|
||||||
|
linux_print );
|
||||||
|
|
||||||
/* start a command loop thread */
|
/*
|
||||||
code = ithread_create( &cmdloop_thread, NULL, TvDeviceCommandLoop, NULL );
|
start a command loop thread
|
||||||
|
*/
|
||||||
|
code = ithread_create( &cmdloop_thread, NULL, TvDeviceCommandLoop,
|
||||||
|
NULL );
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
ithread_join(cmdloop_thread, NULL);
|
|
||||||
#else
|
|
||||||
/*
|
/*
|
||||||
Catch Ctrl-C and properly shutdown
|
Catch Ctrl-C and properly shutdown
|
||||||
*/
|
*/
|
||||||
@@ -190,9 +186,6 @@ int main( IN int argc, IN char **argv )
|
|||||||
sigwait( &sigs_to_catch, &sig );
|
sigwait( &sigs_to_catch, &sig );
|
||||||
|
|
||||||
SampleUtil_Print( "Shutting down on signal %d...\n", sig );
|
SampleUtil_Print( "Shutting down on signal %d...\n", sig );
|
||||||
#endif
|
TvDeviceStop( );
|
||||||
rc = TvDeviceStop();
|
exit( 0 );
|
||||||
|
|
||||||
return rc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,47 +1,40 @@
|
|||||||
/*******************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
******************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#include "upnp_tv_device.h"
|
#include "upnp_tv_device.h"
|
||||||
|
|
||||||
|
|
||||||
#include <assert.h>
|
|
||||||
|
|
||||||
|
|
||||||
#define DEFAULT_WEB_DIR "./web"
|
#define DEFAULT_WEB_DIR "./web"
|
||||||
|
|
||||||
|
|
||||||
#define DESC_URL_SIZE 200
|
#define DESC_URL_SIZE 200
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Device type for tv device
|
Device type for tv device
|
||||||
*/
|
*/
|
||||||
@@ -187,6 +180,7 @@ SetServiceTable( IN int serviceType,
|
|||||||
}
|
}
|
||||||
|
|
||||||
return SetActionTable( serviceType, out );
|
return SetActionTable( serviceType, out );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -257,6 +251,7 @@ SetActionTable( IN int serviceType,
|
|||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -373,68 +368,61 @@ TvDeviceStateTableInit( IN char *DescDocURL )
|
|||||||
* sr_event -- The subscription request event structure
|
* sr_event -- The subscription request event structure
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceHandleSubscriptionRequest(IN const UpnpSubscriptionRequest *sr_event)
|
int
|
||||||
|
TvDeviceHandleSubscriptionRequest( IN struct Upnp_Subscription_Request
|
||||||
|
*sr_event )
|
||||||
{
|
{
|
||||||
unsigned int i = 0;
|
unsigned int i = 0; //,j=0;
|
||||||
//unsigned int j = 0;
|
|
||||||
int cmp1 = 0;
|
|
||||||
int cmp2 = 0;
|
|
||||||
const char *l_serviceId = NULL;
|
|
||||||
const char *l_udn = NULL;
|
|
||||||
const char *l_sid = NULL;
|
|
||||||
// IXML_Document *PropSet=NULL;
|
// IXML_Document *PropSet=NULL;
|
||||||
|
|
||||||
//lock state mutex
|
//lock state mutex
|
||||||
ithread_mutex_lock( &TVDevMutex );
|
ithread_mutex_lock( &TVDevMutex );
|
||||||
|
|
||||||
l_serviceId = UpnpString_get_String(UpnpSubscriptionRequest_get_ServiceId(sr_event));
|
for( i = 0; i < TV_SERVICE_SERVCOUNT; i++ ) {
|
||||||
l_udn = UpnpString_get_String(UpnpSubscriptionRequest_get_UDN(sr_event));
|
if( ( strcmp( sr_event->UDN, tv_service_table[i].UDN ) == 0 ) &&
|
||||||
l_sid = UpnpString_get_String(UpnpSubscriptionRequest_get_SID(sr_event));
|
( strcmp( sr_event->ServiceId, tv_service_table[i].ServiceId )
|
||||||
for (i = 0; i < TV_SERVICE_SERVCOUNT; ++i) {
|
== 0 ) ) {
|
||||||
cmp1 = strcmp(l_udn, tv_service_table[i].UDN);
|
|
||||||
cmp2 = strcmp(l_serviceId, tv_service_table[i].ServiceId);
|
/*
|
||||||
if (cmp1 == 0 && cmp2 == 0) {
|
|
||||||
#if 0
|
|
||||||
PropSet = NULL;
|
PropSet = NULL;
|
||||||
|
|
||||||
for (j = 0; j< tv_service_table[i].VariableCount; ++j) {
|
for (j=0; j< tv_service_table[i].VariableCount; j++)
|
||||||
|
{
|
||||||
//add each variable to the property set
|
//add each variable to the property set
|
||||||
//for initial state dump
|
//for initial state dump
|
||||||
UpnpAddToPropertySet(
|
UpnpAddToPropertySet(&PropSet,
|
||||||
&PropSet,
|
|
||||||
tv_service_table[i].VariableName[j],
|
tv_service_table[i].VariableName[j],
|
||||||
tv_service_table[i].VariableStrVal[j]);
|
tv_service_table[i].VariableStrVal[j]);
|
||||||
}
|
}
|
||||||
|
|
||||||
//dump initial state
|
//dump initial state
|
||||||
UpnpAcceptSubscriptionExt(
|
UpnpAcceptSubscriptionExt(device_handle, sr_event->UDN,
|
||||||
device_handle,
|
sr_event->ServiceId,
|
||||||
l_udn,
|
PropSet,sr_event->Sid);
|
||||||
l_serviceId,
|
|
||||||
PropSet,
|
|
||||||
l_sid);
|
|
||||||
//free document
|
//free document
|
||||||
Document_free(PropSet);
|
Document_free(PropSet);
|
||||||
#endif
|
|
||||||
UpnpAcceptSubscription(
|
*/
|
||||||
device_handle,
|
|
||||||
l_udn,
|
UpnpAcceptSubscription( device_handle,
|
||||||
l_serviceId,
|
sr_event->UDN,
|
||||||
|
sr_event->ServiceId,
|
||||||
( const char ** )tv_service_table[i].
|
( const char ** )tv_service_table[i].
|
||||||
VariableName,
|
VariableName,
|
||||||
( const char ** )tv_service_table[i].
|
( const char ** )tv_service_table[i].
|
||||||
VariableStrVal,
|
VariableStrVal,
|
||||||
tv_service_table[i].VariableCount,
|
tv_service_table[i].VariableCount,
|
||||||
l_sid);
|
sr_event->Sid );
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ithread_mutex_unlock( &TVDevMutex );
|
ithread_mutex_unlock( &TVDevMutex );
|
||||||
|
|
||||||
return 1;
|
return ( 1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceHandleGetVarRequest
|
* TvDeviceHandleGetVarRequest
|
||||||
*
|
*
|
||||||
@@ -448,32 +436,31 @@ int TvDeviceHandleSubscriptionRequest(IN const UpnpSubscriptionRequest *sr_event
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceHandleGetVarRequest( INOUT UpnpStateVarRequest *cgv_event )
|
TvDeviceHandleGetVarRequest( INOUT struct Upnp_State_Var_Request
|
||||||
|
*cgv_event )
|
||||||
{
|
{
|
||||||
unsigned int i = 0;
|
unsigned int i = 0,
|
||||||
unsigned int j = 0;
|
j = 0;
|
||||||
int getvar_succeeded = 0;
|
int getvar_succeeded = 0;
|
||||||
|
|
||||||
UpnpStateVarRequest_set_CurrentVal(cgv_event, NULL);
|
cgv_event->CurrentVal = NULL;
|
||||||
|
|
||||||
ithread_mutex_lock( &TVDevMutex );
|
ithread_mutex_lock( &TVDevMutex );
|
||||||
|
|
||||||
for( i = 0; i < TV_SERVICE_SERVCOUNT; i++ ) {
|
for( i = 0; i < TV_SERVICE_SERVCOUNT; i++ ) {
|
||||||
//check udn and service id
|
//check udn and service id
|
||||||
const char *devUDN =
|
if( ( strcmp( cgv_event->DevUDN, tv_service_table[i].UDN ) == 0 )
|
||||||
UpnpString_get_String(UpnpStateVarRequest_get_DevUDN(cgv_event));
|
&&
|
||||||
const char *serviceID =
|
( strcmp( cgv_event->ServiceID, tv_service_table[i].ServiceId )
|
||||||
UpnpString_get_String(UpnpStateVarRequest_get_ServiceID(cgv_event));
|
== 0 ) ) {
|
||||||
if( ( strcmp( devUDN, tv_service_table[i].UDN ) == 0 ) &&
|
|
||||||
( strcmp( serviceID, tv_service_table[i].ServiceId ) == 0 ) ) {
|
|
||||||
//check variable name
|
//check variable name
|
||||||
for( j = 0; j < tv_service_table[i].VariableCount; j++ ) {
|
for( j = 0; j < tv_service_table[i].VariableCount; j++ ) {
|
||||||
const char *stateVarName =
|
if( strcmp( cgv_event->StateVarName,
|
||||||
UpnpString_get_String(UpnpStateVarRequest_get_StateVarName(cgv_event));
|
tv_service_table[i].VariableName[j] ) == 0 ) {
|
||||||
if( strcmp( stateVarName, tv_service_table[i].VariableName[j] ) == 0 ) {
|
|
||||||
getvar_succeeded = 1;
|
getvar_succeeded = 1;
|
||||||
UpnpStateVarRequest_set_CurrentVal(cgv_event,
|
cgv_event->CurrentVal =
|
||||||
tv_service_table[i].VariableStrVal[j] );
|
ixmlCloneDOMString( tv_service_table[i].
|
||||||
|
VariableStrVal[j] );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -481,19 +468,19 @@ TvDeviceHandleGetVarRequest( INOUT UpnpStateVarRequest *cgv_event )
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( getvar_succeeded ) {
|
if( getvar_succeeded ) {
|
||||||
UpnpStateVarRequest_set_ErrCode(cgv_event, UPNP_E_SUCCESS);
|
cgv_event->ErrCode = UPNP_E_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
SampleUtil_Print(
|
SampleUtil_Print
|
||||||
"Error in UPNP_CONTROL_GET_VAR_REQUEST callback:\n"
|
( "Error in UPNP_CONTROL_GET_VAR_REQUEST callback:\n" );
|
||||||
" Unknown variable name = %s\n",
|
SampleUtil_Print( " Unknown variable name = %s\n",
|
||||||
UpnpString_get_String(UpnpStateVarRequest_get_StateVarName(cgv_event)) );
|
cgv_event->StateVarName );
|
||||||
UpnpStateVarRequest_set_ErrCode(cgv_event, 404);
|
cgv_event->ErrCode = 404;
|
||||||
UpnpStateVarRequest_strcpy_ErrStr(cgv_event, "Invalid Variable" );
|
strcpy( cgv_event->ErrStr, "Invalid Variable" );
|
||||||
}
|
}
|
||||||
|
|
||||||
ithread_mutex_unlock( &TVDevMutex );
|
ithread_mutex_unlock( &TVDevMutex );
|
||||||
|
|
||||||
return UpnpStateVarRequest_get_ErrCode(cgv_event) == UPNP_E_SUCCESS;
|
return ( cgv_event->ErrCode == UPNP_E_SUCCESS );
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -509,8 +496,9 @@ TvDeviceHandleGetVarRequest( INOUT UpnpStateVarRequest *cgv_event )
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceHandleActionRequest( INOUT UpnpActionRequest *ca_event )
|
TvDeviceHandleActionRequest( INOUT struct Upnp_Action_Request *ca_event )
|
||||||
{
|
{
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Defaults if action not found
|
Defaults if action not found
|
||||||
*/
|
*/
|
||||||
@@ -519,38 +507,51 @@ TvDeviceHandleActionRequest( INOUT UpnpActionRequest *ca_event )
|
|||||||
int service = -1;
|
int service = -1;
|
||||||
int retCode = 0;
|
int retCode = 0;
|
||||||
char *errorString = NULL;
|
char *errorString = NULL;
|
||||||
const char *devUDN = NULL;
|
|
||||||
const char *serviceID = NULL;
|
|
||||||
const char *actionName = NULL;
|
|
||||||
IXML_Document *actionResult = NULL;
|
|
||||||
|
|
||||||
UpnpActionRequest_set_ErrCode(ca_event, 0);
|
ca_event->ErrCode = 0;
|
||||||
UpnpActionRequest_set_ActionResult(ca_event, NULL);
|
ca_event->ActionResult = NULL;
|
||||||
|
|
||||||
devUDN = UpnpString_get_String(UpnpActionRequest_get_DevUDN( ca_event));
|
if( ( strcmp( ca_event->DevUDN,
|
||||||
serviceID = UpnpString_get_String(UpnpActionRequest_get_ServiceID( ca_event));
|
tv_service_table[TV_SERVICE_CONTROL].UDN ) == 0 ) &&
|
||||||
actionName = UpnpString_get_String(UpnpActionRequest_get_ActionName(ca_event));
|
( strcmp
|
||||||
if( ( strcmp( devUDN, tv_service_table[TV_SERVICE_CONTROL].UDN ) == 0 ) &&
|
( ca_event->ServiceID,
|
||||||
( strcmp( serviceID, tv_service_table[TV_SERVICE_CONTROL].ServiceId ) == 0 ) ) {
|
tv_service_table[TV_SERVICE_CONTROL].ServiceId ) == 0 ) ) {
|
||||||
/* Request for action in the TvDevice Control Service */
|
/*
|
||||||
|
Request for action in the TvDevice Control Service
|
||||||
|
*/
|
||||||
service = TV_SERVICE_CONTROL;
|
service = TV_SERVICE_CONTROL;
|
||||||
} else if( ( strcmp( devUDN, tv_service_table[TV_SERVICE_PICTURE].UDN ) == 0 ) &&
|
} else if( ( strcmp( ca_event->DevUDN,
|
||||||
( strcmp( serviceID, tv_service_table[TV_SERVICE_PICTURE].ServiceId ) == 0 ) ) {
|
tv_service_table[TV_SERVICE_PICTURE].UDN ) == 0 )
|
||||||
/* Request for action in the TvDevice Picture Service */
|
&&
|
||||||
|
( strcmp
|
||||||
|
( ca_event->ServiceID,
|
||||||
|
tv_service_table[TV_SERVICE_PICTURE].ServiceId ) ==
|
||||||
|
0 ) ) {
|
||||||
|
/*
|
||||||
|
Request for action in the TvDevice Picture Service
|
||||||
|
*/
|
||||||
service = TV_SERVICE_PICTURE;
|
service = TV_SERVICE_PICTURE;
|
||||||
}
|
}
|
||||||
/* Find and call appropriate procedure based on action name
|
//Find and call appropriate procedure based on action name
|
||||||
* Each action name has an associated procedure stored in the
|
//Each action name has an associated procedure stored in the
|
||||||
* service table. These are set at initialization. */
|
//service table. These are set at initialization.
|
||||||
for( i = 0; i < TV_MAXACTIONS && tv_service_table[service].ActionNames[i] != NULL; i++ ) {
|
|
||||||
if( !strcmp( actionName, tv_service_table[service].ActionNames[i] ) ) {
|
for( i = 0; ( ( i < TV_MAXACTIONS ) &&
|
||||||
if( ( !strcmp( tv_service_table[TV_SERVICE_CONTROL].VariableStrVal[TV_CONTROL_POWER], "1" ) ) ||
|
( tv_service_table[service].ActionNames[i] != NULL ) );
|
||||||
( !strcmp( actionName, "PowerOn" ) ) ) {
|
i++ ) {
|
||||||
retCode = tv_service_table[service].actions[i](
|
|
||||||
UpnpActionRequest_get_ActionRequest(ca_event),
|
if( !strcmp( ca_event->ActionName,
|
||||||
&actionResult,
|
tv_service_table[service].ActionNames[i] ) ) {
|
||||||
|
|
||||||
|
if( ( !strcmp( tv_service_table[TV_SERVICE_CONTROL].
|
||||||
|
VariableStrVal[TV_CONTROL_POWER], "1" ) )
|
||||||
|
|| ( !strcmp( ca_event->ActionName, "PowerOn" ) ) ) {
|
||||||
|
retCode =
|
||||||
|
tv_service_table[service].actions[i] ( ca_event->
|
||||||
|
ActionRequest,
|
||||||
|
&ca_event->
|
||||||
|
ActionResult,
|
||||||
&errorString );
|
&errorString );
|
||||||
UpnpActionRequest_set_ActionResult(ca_event, actionResult);
|
|
||||||
} else {
|
} else {
|
||||||
errorString = "Power is Off";
|
errorString = "Power is Off";
|
||||||
retCode = UPNP_E_INTERNAL_ERROR;
|
retCode = UPNP_E_INTERNAL_ERROR;
|
||||||
@@ -561,25 +562,25 @@ TvDeviceHandleActionRequest( INOUT UpnpActionRequest *ca_event )
|
|||||||
}
|
}
|
||||||
|
|
||||||
if( !action_found ) {
|
if( !action_found ) {
|
||||||
UpnpActionRequest_set_ActionResult(ca_event, NULL);
|
ca_event->ActionResult = NULL;
|
||||||
UpnpActionRequest_strcpy_ErrStr(ca_event, "Invalid Action" );
|
strcpy( ca_event->ErrStr, "Invalid Action" );
|
||||||
UpnpActionRequest_set_ErrCode(ca_event, 401);
|
ca_event->ErrCode = 401;
|
||||||
} else {
|
} else {
|
||||||
if( retCode == UPNP_E_SUCCESS ) {
|
if( retCode == UPNP_E_SUCCESS ) {
|
||||||
UpnpActionRequest_set_ErrCode(ca_event, UPNP_E_SUCCESS);
|
ca_event->ErrCode = UPNP_E_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
//copy the error string
|
//copy the error string
|
||||||
UpnpActionRequest_strcpy_ErrStr(ca_event, errorString );
|
strcpy( ca_event->ErrStr, errorString );
|
||||||
switch ( retCode ) {
|
switch ( retCode ) {
|
||||||
case UPNP_E_INVALID_PARAM:
|
case UPNP_E_INVALID_PARAM:
|
||||||
{
|
{
|
||||||
UpnpActionRequest_set_ErrCode(ca_event, 402);
|
ca_event->ErrCode = 402;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case UPNP_E_INTERNAL_ERROR:
|
case UPNP_E_INTERNAL_ERROR:
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
UpnpActionRequest_set_ErrCode(ca_event, 501);
|
ca_event->ErrCode = 501;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -587,7 +588,7 @@ TvDeviceHandleActionRequest( INOUT UpnpActionRequest *ca_event )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return UpnpActionRequest_get_ErrCode(ca_event);
|
return ( ca_event->ErrCode );
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -650,6 +651,7 @@ TvDeviceSetServiceTableVar( IN unsigned int service,
|
|||||||
ithread_mutex_unlock( &TVDevMutex );
|
ithread_mutex_unlock( &TVDevMutex );
|
||||||
|
|
||||||
return ( 1 );
|
return ( 1 );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -672,7 +674,7 @@ TvDeviceSetPower( IN int on )
|
|||||||
|
|
||||||
if( on != POWER_ON && on != POWER_OFF ) {
|
if( on != POWER_ON && on != POWER_OFF ) {
|
||||||
SampleUtil_Print( "error: can't set power to value %d\n", on );
|
SampleUtil_Print( "error: can't set power to value %d\n", on );
|
||||||
return 0;
|
return ( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -683,7 +685,7 @@ TvDeviceSetPower( IN int on )
|
|||||||
ret = TvDeviceSetServiceTableVar( TV_SERVICE_CONTROL, TV_CONTROL_POWER,
|
ret = TvDeviceSetServiceTableVar( TV_SERVICE_CONTROL, TV_CONTROL_POWER,
|
||||||
value );
|
value );
|
||||||
|
|
||||||
return ret;
|
return ( ret );
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -700,7 +702,9 @@ TvDeviceSetPower( IN int on )
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDevicePowerOn( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDevicePowerOn( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
( *out ) = NULL;
|
( *out ) = NULL;
|
||||||
( *errorString ) = NULL;
|
( *errorString ) = NULL;
|
||||||
@@ -720,6 +724,7 @@ TvDevicePowerOn( IN IXML_Document *in, OUT IXML_Document **out, OUT char **error
|
|||||||
( *errorString ) = "Internal Error";
|
( *errorString ) = "Internal Error";
|
||||||
return UPNP_E_INTERNAL_ERROR;
|
return UPNP_E_INTERNAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -776,8 +781,11 @@ TvDevicePowerOff( IN IXML_Document * in,
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceSetChannel( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceSetChannel( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
|
|
||||||
char *value = NULL;
|
char *value = NULL;
|
||||||
|
|
||||||
int channel = 0;
|
int channel = 0;
|
||||||
@@ -822,6 +830,7 @@ TvDeviceSetChannel( IN IXML_Document *in, OUT IXML_Document **out, OUT char **er
|
|||||||
( *errorString ) = "Internal Error";
|
( *errorString ) = "Internal Error";
|
||||||
return UPNP_E_INTERNAL_ERROR;
|
return UPNP_E_INTERNAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -839,10 +848,13 @@ TvDeviceSetChannel( IN IXML_Document *in, OUT IXML_Document **out, OUT char **er
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
IncrementChannel( IN int incr, IN IXML_Document * in, OUT IXML_Document **out, OUT char **errorString )
|
IncrementChannel( IN int incr,
|
||||||
|
IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
int curchannel;
|
int curchannel,
|
||||||
int newchannel;
|
newchannel;
|
||||||
|
|
||||||
char *actionName = NULL;
|
char *actionName = NULL;
|
||||||
char value[TV_MAX_VAL_LEN];
|
char value[TV_MAX_VAL_LEN];
|
||||||
@@ -904,9 +916,12 @@ IncrementChannel( IN int incr, IN IXML_Document * in, OUT IXML_Document **out, O
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceDecreaseChannel( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceDecreaseChannel( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
return IncrementChannel( -1, in, out, errorString );
|
return IncrementChannel( -1, in, out, errorString );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -923,9 +938,12 @@ TvDeviceDecreaseChannel( IN IXML_Document *in, OUT IXML_Document **out, OUT char
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceIncreaseChannel( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceIncreaseChannel( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
return IncrementChannel( 1, in, out, errorString );
|
return IncrementChannel( 1, in, out, errorString );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -944,9 +962,13 @@ TvDeviceIncreaseChannel( IN IXML_Document *in, OUT IXML_Document **out, OUT char
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceSetVolume( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceSetVolume( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
|
|
||||||
char *value = NULL;
|
char *value = NULL;
|
||||||
|
|
||||||
int volume = 0;
|
int volume = 0;
|
||||||
|
|
||||||
( *out ) = NULL;
|
( *out ) = NULL;
|
||||||
@@ -987,6 +1009,7 @@ TvDeviceSetVolume( IN IXML_Document *in, OUT IXML_Document **out, OUT char **err
|
|||||||
( *errorString ) = "Internal Error";
|
( *errorString ) = "Internal Error";
|
||||||
return UPNP_E_INTERNAL_ERROR;
|
return UPNP_E_INTERNAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -1005,7 +1028,10 @@ TvDeviceSetVolume( IN IXML_Document *in, OUT IXML_Document **out, OUT char **err
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
IncrementVolume( IN int incr, IN IXML_Document *in,OUT IXML_Document **out, OUT char **errorString )
|
IncrementVolume( IN int incr,
|
||||||
|
IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
int curvolume,
|
int curvolume,
|
||||||
newvolume;
|
newvolume;
|
||||||
@@ -1042,7 +1068,8 @@ IncrementVolume( IN int incr, IN IXML_Document *in,OUT IXML_Document **out, OUT
|
|||||||
TV_CONTROL_VOLUME, value ) ) {
|
TV_CONTROL_VOLUME, value ) ) {
|
||||||
if( UpnpAddToActionResponse( out, actionName,
|
if( UpnpAddToActionResponse( out, actionName,
|
||||||
TvServiceType[TV_SERVICE_CONTROL],
|
TvServiceType[TV_SERVICE_CONTROL],
|
||||||
"Volume", value ) != UPNP_E_SUCCESS ) {
|
"Volume", value ) != UPNP_E_SUCCESS )
|
||||||
|
{
|
||||||
( *out ) = NULL;
|
( *out ) = NULL;
|
||||||
( *errorString ) = "Internal Error";
|
( *errorString ) = "Internal Error";
|
||||||
return UPNP_E_INTERNAL_ERROR;
|
return UPNP_E_INTERNAL_ERROR;
|
||||||
@@ -1052,6 +1079,7 @@ IncrementVolume( IN int incr, IN IXML_Document *in,OUT IXML_Document **out, OUT
|
|||||||
( *errorString ) = "Internal Error";
|
( *errorString ) = "Internal Error";
|
||||||
return UPNP_E_INTERNAL_ERROR;
|
return UPNP_E_INTERNAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -1068,9 +1096,13 @@ IncrementVolume( IN int incr, IN IXML_Document *in,OUT IXML_Document **out, OUT
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceIncreaseVolume( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceIncreaseVolume( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
|
|
||||||
return IncrementVolume( 1, in, out, errorString );
|
return IncrementVolume( 1, in, out, errorString );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -1087,9 +1119,13 @@ TvDeviceIncreaseVolume( IN IXML_Document *in, OUT IXML_Document **out, OUT char
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceDecreaseVolume( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceDecreaseVolume( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
|
|
||||||
return IncrementVolume( -1, in, out, errorString );
|
return IncrementVolume( -1, in, out, errorString );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -1108,9 +1144,13 @@ TvDeviceDecreaseVolume( IN IXML_Document *in, OUT IXML_Document **out, OUT char
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceSetColor( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceSetColor( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
|
|
||||||
char *value = NULL;
|
char *value = NULL;
|
||||||
|
|
||||||
int color = 0;
|
int color = 0;
|
||||||
|
|
||||||
( *out ) = NULL;
|
( *out ) = NULL;
|
||||||
@@ -1150,6 +1190,7 @@ TvDeviceSetColor( IN IXML_Document *in, OUT IXML_Document **out, OUT char **erro
|
|||||||
( *errorString ) = "Internal Error";
|
( *errorString ) = "Internal Error";
|
||||||
return UPNP_E_INTERNAL_ERROR;
|
return UPNP_E_INTERNAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -1166,11 +1207,16 @@ TvDeviceSetColor( IN IXML_Document *in, OUT IXML_Document **out, OUT char **erro
|
|||||||
* IXML_Document **out - action result document
|
* IXML_Document **out - action result document
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
int
|
int
|
||||||
IncrementColor( IN int incr, IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
IncrementColor( IN int incr,
|
||||||
|
IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
int curcolor;
|
int curcolor,
|
||||||
int newcolor;
|
newcolor;
|
||||||
|
|
||||||
char *actionName;
|
char *actionName;
|
||||||
char value[TV_MAX_VAL_LEN];
|
char value[TV_MAX_VAL_LEN];
|
||||||
|
|
||||||
@@ -1228,8 +1274,11 @@ IncrementColor( IN int incr, IN IXML_Document *in, OUT IXML_Document **out, OUT
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceDecreaseColor( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceDecreaseColor( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
|
|
||||||
return IncrementColor( -1, in, out, errorString );
|
return IncrementColor( -1, in, out, errorString );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1246,8 +1295,11 @@ TvDeviceDecreaseColor( IN IXML_Document *in, OUT IXML_Document **out, OUT char *
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceIncreaseColor( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceIncreaseColor( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
|
|
||||||
return IncrementColor( 1, in, out, errorString );
|
return IncrementColor( 1, in, out, errorString );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1267,9 +1319,13 @@ TvDeviceIncreaseColor( IN IXML_Document *in, OUT IXML_Document **out, OUT char *
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceSetTint( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceSetTint( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
|
|
||||||
char *value = NULL;
|
char *value = NULL;
|
||||||
|
|
||||||
int tint = -1;
|
int tint = -1;
|
||||||
|
|
||||||
( *out ) = NULL;
|
( *out ) = NULL;
|
||||||
@@ -1328,10 +1384,14 @@ TvDeviceSetTint( IN IXML_Document *in, OUT IXML_Document **out, OUT char **error
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
IncrementTint( IN int incr, IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
IncrementTint( IN int incr,
|
||||||
|
IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
int curtint;
|
int curtint,
|
||||||
int newtint;
|
newtint;
|
||||||
|
|
||||||
char *actionName = NULL;
|
char *actionName = NULL;
|
||||||
char value[TV_MAX_VAL_LEN];
|
char value[TV_MAX_VAL_LEN];
|
||||||
|
|
||||||
@@ -1374,6 +1434,7 @@ IncrementTint( IN int incr, IN IXML_Document *in, OUT IXML_Document **out, OUT c
|
|||||||
( *errorString ) = "Internal Error";
|
( *errorString ) = "Internal Error";
|
||||||
return UPNP_E_INTERNAL_ERROR;
|
return UPNP_E_INTERNAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -1390,8 +1451,11 @@ IncrementTint( IN int incr, IN IXML_Document *in, OUT IXML_Document **out, OUT c
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceIncreaseTint( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceIncreaseTint( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
|
|
||||||
return IncrementTint( 1, in, out, errorString );
|
return IncrementTint( 1, in, out, errorString );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1409,8 +1473,11 @@ TvDeviceIncreaseTint( IN IXML_Document *in, OUT IXML_Document **out, OUT char **
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceDecreaseTint( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceDecreaseTint( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
|
|
||||||
return IncrementTint( -1, in, out, errorString );
|
return IncrementTint( -1, in, out, errorString );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1430,8 +1497,11 @@ TvDeviceDecreaseTint( IN IXML_Document *in, OUT IXML_Document **out, OUT char **
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceSetContrast( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceSetContrast( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
|
|
||||||
char *value = NULL;
|
char *value = NULL;
|
||||||
int contrast = -1;
|
int contrast = -1;
|
||||||
|
|
||||||
@@ -1492,10 +1562,14 @@ TvDeviceSetContrast( IN IXML_Document *in, OUT IXML_Document **out, OUT char **e
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
IncrementContrast( IN int incr, IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
IncrementContrast( IN int incr,
|
||||||
|
IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
int curcontrast;
|
int curcontrast,
|
||||||
int newcontrast;
|
newcontrast;
|
||||||
|
|
||||||
char *actionName = NULL;
|
char *actionName = NULL;
|
||||||
char value[TV_MAX_VAL_LEN];
|
char value[TV_MAX_VAL_LEN];
|
||||||
|
|
||||||
@@ -1557,8 +1631,11 @@ IncrementContrast( IN int incr, IN IXML_Document *in, OUT IXML_Document **out, O
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceIncreaseContrast( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceIncreaseContrast( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
|
|
||||||
return IncrementContrast( 1, in, out, errorString );
|
return IncrementContrast( 1, in, out, errorString );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1576,7 +1653,9 @@ TvDeviceIncreaseContrast( IN IXML_Document *in, OUT IXML_Document **out, OUT cha
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceDecreaseContrast( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceDecreaseContrast( IXML_Document * in,
|
||||||
|
IXML_Document ** out,
|
||||||
|
char **errorString )
|
||||||
{
|
{
|
||||||
return IncrementContrast( -1, in, out, errorString );
|
return IncrementContrast( -1, in, out, errorString );
|
||||||
}
|
}
|
||||||
@@ -1594,8 +1673,11 @@ TvDeviceDecreaseContrast( IN IXML_Document *in, OUT IXML_Document **out, OUT cha
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceSetBrightness( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceSetBrightness( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
|
|
||||||
char *value = NULL;
|
char *value = NULL;
|
||||||
int brightness = -1;
|
int brightness = -1;
|
||||||
|
|
||||||
@@ -1638,6 +1720,7 @@ TvDeviceSetBrightness( IN IXML_Document *in, OUT IXML_Document **out, OUT char *
|
|||||||
( *errorString ) = "Internal Error";
|
( *errorString ) = "Internal Error";
|
||||||
return UPNP_E_INTERNAL_ERROR;
|
return UPNP_E_INTERNAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -1655,10 +1738,13 @@ TvDeviceSetBrightness( IN IXML_Document *in, OUT IXML_Document **out, OUT char *
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
IncrementBrightness( IN int incr, IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
IncrementBrightness( IN int incr,
|
||||||
|
IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
int curbrightness;
|
int curbrightness,
|
||||||
int newbrightness;
|
newbrightness;
|
||||||
char *actionName = NULL;
|
char *actionName = NULL;
|
||||||
char value[TV_MAX_VAL_LEN];
|
char value[TV_MAX_VAL_LEN];
|
||||||
|
|
||||||
@@ -1719,7 +1805,9 @@ IncrementBrightness( IN int incr, IN IXML_Document *in, OUT IXML_Document **out,
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceIncreaseBrightness( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceIncreaseBrightness( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
return IncrementBrightness( 1, in, out, errorString );
|
return IncrementBrightness( 1, in, out, errorString );
|
||||||
}
|
}
|
||||||
@@ -1737,7 +1825,9 @@ TvDeviceIncreaseBrightness( IN IXML_Document *in, OUT IXML_Document **out, OUT c
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceDecreaseBrightness( IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString )
|
TvDeviceDecreaseBrightness( IN IXML_Document * in,
|
||||||
|
OUT IXML_Document ** out,
|
||||||
|
OUT char **errorString )
|
||||||
{
|
{
|
||||||
return IncrementBrightness( -1, in, out, errorString );
|
return IncrementBrightness( -1, in, out, errorString );
|
||||||
}
|
}
|
||||||
@@ -1761,19 +1851,29 @@ TvDeviceDecreaseBrightness( IN IXML_Document *in, OUT IXML_Document **out, OUT c
|
|||||||
* Cookie -- Optional data specified during callback registration
|
* Cookie -- Optional data specified during callback registration
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceCallbackEventHandler(Upnp_EventType EventType, void *Event, void *Cookie)
|
int
|
||||||
|
TvDeviceCallbackEventHandler( Upnp_EventType EventType,
|
||||||
|
void *Event,
|
||||||
|
void *Cookie )
|
||||||
{
|
{
|
||||||
|
|
||||||
switch ( EventType ) {
|
switch ( EventType ) {
|
||||||
|
|
||||||
case UPNP_EVENT_SUBSCRIPTION_REQUEST:
|
case UPNP_EVENT_SUBSCRIPTION_REQUEST:
|
||||||
TvDeviceHandleSubscriptionRequest((UpnpSubscriptionRequest *)Event);
|
|
||||||
|
TvDeviceHandleSubscriptionRequest( ( struct
|
||||||
|
Upnp_Subscription_Request
|
||||||
|
* )Event );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UPNP_CONTROL_GET_VAR_REQUEST:
|
case UPNP_CONTROL_GET_VAR_REQUEST:
|
||||||
TvDeviceHandleGetVarRequest( (UpnpStateVarRequest *)Event );
|
TvDeviceHandleGetVarRequest( ( struct Upnp_State_Var_Request
|
||||||
|
* )Event );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case UPNP_CONTROL_ACTION_REQUEST:
|
case UPNP_CONTROL_ACTION_REQUEST:
|
||||||
TvDeviceHandleActionRequest( (UpnpActionRequest *)Event );
|
TvDeviceHandleActionRequest( ( struct Upnp_Action_Request * )
|
||||||
|
Event );
|
||||||
break;
|
break;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1792,14 +1892,17 @@ int TvDeviceCallbackEventHandler(Upnp_EventType EventType, void *Event, void *Co
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
SampleUtil_Print( "Error in TvDeviceCallbackEventHandler: unknown event type %d\n",
|
SampleUtil_Print
|
||||||
|
( "Error in TvDeviceCallbackEventHandler: unknown event type %d\n",
|
||||||
EventType );
|
EventType );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Print a summary of the event received */
|
/*
|
||||||
|
Print a summary of the event received
|
||||||
|
*/
|
||||||
SampleUtil_PrintEvent( EventType, Event );
|
SampleUtil_PrintEvent( EventType, Event );
|
||||||
|
|
||||||
return 0;
|
return ( 0 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -1812,13 +1915,12 @@ int TvDeviceCallbackEventHandler(Upnp_EventType EventType, void *Event, void *Co
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int
|
int
|
||||||
TvDeviceStop(void)
|
TvDeviceStop( )
|
||||||
{
|
{
|
||||||
UpnpUnRegisterRootDevice( device_handle );
|
UpnpUnRegisterRootDevice( device_handle );
|
||||||
UpnpFinish( );
|
UpnpFinish( );
|
||||||
SampleUtil_Finish( );
|
SampleUtil_Finish( );
|
||||||
ithread_mutex_destroy( &TVDevMutex );
|
ithread_mutex_destroy( &TVDevMutex );
|
||||||
|
|
||||||
return UPNP_E_SUCCESS;
|
return UPNP_E_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1851,83 +1953,81 @@ TvDeviceStart( char *ip_address,
|
|||||||
print_string pfun )
|
print_string pfun )
|
||||||
{
|
{
|
||||||
int ret = UPNP_E_SUCCESS;
|
int ret = UPNP_E_SUCCESS;
|
||||||
|
|
||||||
char desc_doc_url[DESC_URL_SIZE];
|
char desc_doc_url[DESC_URL_SIZE];
|
||||||
|
|
||||||
ithread_mutex_init( &TVDevMutex, NULL );
|
ithread_mutex_init( &TVDevMutex, NULL );
|
||||||
|
|
||||||
SampleUtil_Initialize( pfun );
|
SampleUtil_Initialize( pfun );
|
||||||
|
|
||||||
SampleUtil_Print(
|
SampleUtil_Print
|
||||||
"Initializing UPnP Sdk with\n"
|
( "Initializing UPnP Sdk with \n \t ipaddress = %s port = %d\n",
|
||||||
"\tipaddress = %s port = %u\n",
|
|
||||||
ip_address, port );
|
ip_address, port );
|
||||||
|
|
||||||
ret = UpnpInit( ip_address, port );
|
if( ( ret = UpnpInit( ip_address, port ) ) != UPNP_E_SUCCESS ) {
|
||||||
if( ret != UPNP_E_SUCCESS ) {
|
|
||||||
SampleUtil_Print( "Error with UpnpInit -- %d\n", ret );
|
SampleUtil_Print( "Error with UpnpInit -- %d\n", ret );
|
||||||
UpnpFinish( );
|
UpnpFinish( );
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( ip_address == NULL ) {
|
||||||
ip_address = UpnpGetServerIpAddress( );
|
ip_address = UpnpGetServerIpAddress( );
|
||||||
port = UpnpGetServerPort();
|
}
|
||||||
|
|
||||||
SampleUtil_Print(
|
if( port == 0 ) {
|
||||||
"UPnP Initialized\n"
|
port = UpnpGetServerPort( );
|
||||||
"\tipaddress= %s port = %u\n",
|
}
|
||||||
|
|
||||||
|
SampleUtil_Print( "UPnP Initialized\n \t ipaddress= %s port = %d\n",
|
||||||
ip_address, port );
|
ip_address, port );
|
||||||
|
|
||||||
if( desc_doc_name == NULL ) {
|
if( desc_doc_name == NULL )
|
||||||
desc_doc_name = "tvdevicedesc.xml";
|
desc_doc_name = "tvdevicedesc.xml";
|
||||||
}
|
|
||||||
|
|
||||||
if( web_dir_path == NULL ) {
|
if( web_dir_path == NULL )
|
||||||
web_dir_path = DEFAULT_WEB_DIR;
|
web_dir_path = DEFAULT_WEB_DIR;
|
||||||
}
|
|
||||||
|
|
||||||
snprintf( desc_doc_url, DESC_URL_SIZE, "http://%s:%d/%s", ip_address,
|
snprintf( desc_doc_url, DESC_URL_SIZE, "http://%s:%d/%s", ip_address,
|
||||||
port, desc_doc_name );
|
port, desc_doc_name );
|
||||||
|
|
||||||
SampleUtil_Print( "Specifying the webserver root directory -- %s\n",
|
SampleUtil_Print( "Specifying the webserver root directory -- %s\n",
|
||||||
web_dir_path );
|
web_dir_path );
|
||||||
ret = UpnpSetWebServerRootDir( web_dir_path );
|
if( ( ret =
|
||||||
if( ret != UPNP_E_SUCCESS ) {
|
UpnpSetWebServerRootDir( web_dir_path ) ) != UPNP_E_SUCCESS ) {
|
||||||
SampleUtil_Print( "Error specifying webserver root directory -- %s: %d\n",
|
SampleUtil_Print
|
||||||
|
( "Error specifying webserver root directory -- %s: %d\n",
|
||||||
web_dir_path, ret );
|
web_dir_path, ret );
|
||||||
UpnpFinish( );
|
UpnpFinish( );
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
SampleUtil_Print(
|
SampleUtil_Print
|
||||||
"Registering the RootDevice\n"
|
( "Registering the RootDevice\n\t with desc_doc_url: %s\n",
|
||||||
"\t with desc_doc_url: %s\n",
|
|
||||||
desc_doc_url );
|
desc_doc_url );
|
||||||
|
|
||||||
ret = UpnpRegisterRootDevice( desc_doc_url, TvDeviceCallbackEventHandler,
|
if( ( ret = UpnpRegisterRootDevice( desc_doc_url,
|
||||||
&device_handle, &device_handle );
|
TvDeviceCallbackEventHandler,
|
||||||
if( ret != UPNP_E_SUCCESS ) {
|
&device_handle, &device_handle ) )
|
||||||
|
!= UPNP_E_SUCCESS ) {
|
||||||
SampleUtil_Print( "Error registering the rootdevice : %d\n", ret );
|
SampleUtil_Print( "Error registering the rootdevice : %d\n", ret );
|
||||||
UpnpFinish( );
|
UpnpFinish( );
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
} else {
|
} else {
|
||||||
SampleUtil_Print(
|
SampleUtil_Print( "RootDevice Registered\n" );
|
||||||
"RootDevice Registered\n"
|
|
||||||
"Initializing State Table\n");
|
SampleUtil_Print( "Initializing State Table\n" );
|
||||||
TvDeviceStateTableInit( desc_doc_url );
|
TvDeviceStateTableInit( desc_doc_url );
|
||||||
SampleUtil_Print( "State Table Initialized\n" );
|
SampleUtil_Print( "State Table Initialized\n" );
|
||||||
ret = UpnpSendAdvertisement( device_handle, default_advr_expire );
|
|
||||||
if( ret != UPNP_E_SUCCESS ) {
|
if( ( ret =
|
||||||
|
UpnpSendAdvertisement( device_handle, default_advr_expire ) )
|
||||||
|
!= UPNP_E_SUCCESS ) {
|
||||||
SampleUtil_Print( "Error sending advertisements : %d\n", ret );
|
SampleUtil_Print( "Error sending advertisements : %d\n", ret );
|
||||||
UpnpFinish( );
|
UpnpFinish( );
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
SampleUtil_Print( "Advertisements Sent\n" );
|
SampleUtil_Print( "Advertisements Sent\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
return UPNP_E_SUCCESS;
|
return UPNP_E_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,65 +1,50 @@
|
|||||||
/**************************************************************************
|
///////////////////////////////////////////////////////////////////////////
|
||||||
*
|
//
|
||||||
* Copyright (c) 2000-2003 Intel Corporation
|
// Copyright (c) 2000-2003 Intel Corporation
|
||||||
* All rights reserved.
|
// All rights reserved.
|
||||||
*
|
//
|
||||||
* Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
* modification, are permitted provided that the following conditions are met:
|
// modification, are permitted provided that the following conditions are met:
|
||||||
*
|
//
|
||||||
* - Redistributions of source code must retain the above copyright notice,
|
// * Redistributions of source code must retain the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer.
|
// this list of conditions and the following disclaimer.
|
||||||
* - Redistributions in binary form must reproduce the above copyright notice,
|
// * Redistributions in binary form must reproduce the above copyright notice,
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
// this list of conditions and the following disclaimer in the documentation
|
||||||
* and/or other materials provided with the distribution.
|
// and/or other materials provided with the distribution.
|
||||||
* - Neither name of Intel Corporation nor the names of its contributors
|
// * Neither name of Intel Corporation nor the names of its contributors
|
||||||
* may be used to endorse or promote products derived from this software
|
// may be used to endorse or promote products derived from this software
|
||||||
* without specific prior written permission.
|
// without specific prior written permission.
|
||||||
*
|
//
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
//
|
||||||
**************************************************************************/
|
///////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
#ifndef UPNP_TV_DEVICE_H
|
#ifndef UPNP_TV_DEVICE_H
|
||||||
#define UPNP_TV_DEVICE_H
|
#define UPNP_TV_DEVICE_H
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#include "sample_util.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include "ithread.h"
|
#include "ithread.h"
|
||||||
#include "upnp.h"
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef WIN32
|
|
||||||
/* Do not #include <unistd.h> */
|
|
||||||
#else
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#include <string.h>
|
||||||
|
#include "upnp.h"
|
||||||
|
#include "sample_util.h"
|
||||||
|
|
||||||
//Color constants
|
//Color constants
|
||||||
#define MAX_COLOR 10
|
#define MAX_COLOR 10
|
||||||
@@ -161,7 +146,8 @@ extern char *TvServiceType[];
|
|||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
|
|
||||||
typedef int (*upnp_action) (IXML_Document *request, IXML_Document **out, char **errorString);
|
typedef int (*upnp_action) (IXML_Document *request, IXML_Document **out,
|
||||||
|
char **errorString);
|
||||||
|
|
||||||
/* Structure for storing Tv Service
|
/* Structure for storing Tv Service
|
||||||
identifiers and state table */
|
identifiers and state table */
|
||||||
@@ -239,7 +225,7 @@ int TvDeviceStateTableInit(char*);
|
|||||||
* sr_event -- The subscription request event structure
|
* sr_event -- The subscription request event structure
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceHandleSubscriptionRequest(const UpnpSubscriptionRequest *);
|
int TvDeviceHandleSubscriptionRequest(struct Upnp_Subscription_Request *);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceHandleGetVarRequest
|
* TvDeviceHandleGetVarRequest
|
||||||
@@ -253,7 +239,7 @@ int TvDeviceHandleSubscriptionRequest(const UpnpSubscriptionRequest *);
|
|||||||
* cgv_event -- The control get variable request event structure
|
* cgv_event -- The control get variable request event structure
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceHandleGetVarRequest(UpnpStateVarRequest *);
|
int TvDeviceHandleGetVarRequest(struct Upnp_State_Var_Request *);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceHandleActionRequest
|
* TvDeviceHandleActionRequest
|
||||||
@@ -267,7 +253,7 @@ int TvDeviceHandleGetVarRequest(UpnpStateVarRequest *);
|
|||||||
* ca_event -- The control action request event structure
|
* ca_event -- The control action request event structure
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceHandleActionRequest(UpnpActionRequest *);
|
int TvDeviceHandleActionRequest(struct Upnp_Action_Request *);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceCallbackEventHandler
|
* TvDeviceCallbackEventHandler
|
||||||
@@ -325,7 +311,8 @@ int TvDeviceSetServiceTableVar(unsigned int, unsigned int, char*);
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDevicePowerOn(IN IXML_Document * in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDevicePowerOn(IN IXML_Document * in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDevicePowerOff
|
* TvDevicePowerOff
|
||||||
@@ -340,7 +327,8 @@ int TvDevicePowerOn(IN IXML_Document * in, OUT IXML_Document **out, OUT char **e
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDevicePowerOff(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDevicePowerOff(IN IXML_Document *in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceSetChannel
|
* TvDeviceSetChannel
|
||||||
@@ -357,7 +345,8 @@ int TvDevicePowerOff(IN IXML_Document *in, OUT IXML_Document **out, OUT char **e
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceSetChannel(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceSetChannel(IN IXML_Document *in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceIncreaseChannel
|
* TvDeviceIncreaseChannel
|
||||||
@@ -372,7 +361,8 @@ int TvDeviceSetChannel(IN IXML_Document *in, OUT IXML_Document **out, OUT char *
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceIncreaseChannel(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceIncreaseChannel(IN IXML_Document *in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceDecreaseChannel
|
* TvDeviceDecreaseChannel
|
||||||
*
|
*
|
||||||
@@ -386,7 +376,8 @@ int TvDeviceIncreaseChannel(IN IXML_Document *in, OUT IXML_Document **out, OUT c
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceDecreaseChannel(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceDecreaseChannel(IN IXML_Document *in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceSetVolume
|
* TvDeviceSetVolume
|
||||||
*
|
*
|
||||||
@@ -402,7 +393,8 @@ int TvDeviceDecreaseChannel(IN IXML_Document *in, OUT IXML_Document **out, OUT c
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceSetVolume(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceSetVolume(IN IXML_Document *in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceIncreaseVolume
|
* TvDeviceIncreaseVolume
|
||||||
@@ -417,7 +409,8 @@ int TvDeviceSetVolume(IN IXML_Document *in, OUT IXML_Document **out, OUT char **
|
|||||||
* IXML_Document **out - action result document
|
* IXML_Document **out - action result document
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceIncreaseVolume(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceIncreaseVolume(IN IXML_Document *in, OUT IXML_Document**out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -433,7 +426,8 @@ int TvDeviceIncreaseVolume(IN IXML_Document *in, OUT IXML_Document **out, OUT ch
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceDecreaseVolume(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceDecreaseVolume(IN IXML_Document *in, OUT IXML_Document**out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
|
|
||||||
//Picture Service Actions
|
//Picture Service Actions
|
||||||
@@ -453,7 +447,8 @@ int TvDeviceDecreaseVolume(IN IXML_Document *in, OUT IXML_Document **out, OUT ch
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceSetColor(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceSetColor(IN IXML_Document *in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
@@ -468,7 +463,8 @@ int TvDeviceSetColor(IN IXML_Document *in, OUT IXML_Document **out, OUT char **e
|
|||||||
* IXML_Document **out - action result document
|
* IXML_Document **out - action result document
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceIncreaseColor(IN IXML_Document * in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceIncreaseColor(IN IXML_Document * in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceDecreaseColor
|
* TvDeviceDecreaseColor
|
||||||
@@ -482,7 +478,8 @@ int TvDeviceIncreaseColor(IN IXML_Document * in, OUT IXML_Document **out, OUT ch
|
|||||||
* IXML_Document **out - action result document
|
* IXML_Document **out - action result document
|
||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceDecreaseColor(IN IXML_Document * in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceDecreaseColor(IN IXML_Document * in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceSetTint
|
* TvDeviceSetTint
|
||||||
@@ -499,7 +496,8 @@ int TvDeviceDecreaseColor(IN IXML_Document * in, OUT IXML_Document **out, OUT ch
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceSetTint(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceSetTint(IN IXML_Document *in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceIncreaseTint
|
* TvDeviceIncreaseTint
|
||||||
@@ -514,7 +512,8 @@ int TvDeviceSetTint(IN IXML_Document *in, OUT IXML_Document **out, OUT char **er
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceIncreaseTint(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceIncreaseTint(IN IXML_Document *in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceDecreaseTint
|
* TvDeviceDecreaseTint
|
||||||
@@ -529,7 +528,8 @@ int TvDeviceIncreaseTint(IN IXML_Document *in, OUT IXML_Document **out, OUT char
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceDecreaseTint(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceDecreaseTint(IN IXML_Document *in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* TvDeviceSetContrast
|
* TvDeviceSetContrast
|
||||||
@@ -546,7 +546,8 @@ int TvDeviceDecreaseTint(IN IXML_Document *in, OUT IXML_Document **out, OUT char
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
int TvDeviceSetContrast(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceSetContrast(IN IXML_Document *in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceIncreaseContrast
|
* TvDeviceIncreaseContrast
|
||||||
@@ -562,7 +563,8 @@ int TvDeviceSetContrast(IN IXML_Document *in, OUT IXML_Document **out, OUT char
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceIncreaseContrast(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceIncreaseContrast(IN IXML_Document *in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceDecreaseContrast
|
* TvDeviceDecreaseContrast
|
||||||
*
|
*
|
||||||
@@ -576,7 +578,8 @@ int TvDeviceIncreaseContrast(IN IXML_Document *in, OUT IXML_Document **out, OUT
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceDecreaseContrast(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceDecreaseContrast(IN IXML_Document *in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceSetBrightness
|
* TvDeviceSetBrightness
|
||||||
@@ -590,7 +593,8 @@ int TvDeviceDecreaseContrast(IN IXML_Document *in, OUT IXML_Document **out, OUT
|
|||||||
* brightness -- The brightness value to change to.
|
* brightness -- The brightness value to change to.
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceSetBrightness(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceSetBrightness(IN IXML_Document *in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceIncreaseBrightness
|
* TvDeviceIncreaseBrightness
|
||||||
@@ -605,7 +609,8 @@ int TvDeviceSetBrightness(IN IXML_Document *in, OUT IXML_Document **out, OUT cha
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceIncreaseBrightness(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceIncreaseBrightness(IN IXML_Document *in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TvDeviceDecreaseBrightness
|
* TvDeviceDecreaseBrightness
|
||||||
@@ -619,11 +624,12 @@ int TvDeviceIncreaseBrightness(IN IXML_Document *in, OUT IXML_Document **out, OU
|
|||||||
* char **errorString - errorString (in case action was unsuccessful)
|
* char **errorString - errorString (in case action was unsuccessful)
|
||||||
*
|
*
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
int TvDeviceDecreaseBrightness(IN IXML_Document *in, OUT IXML_Document **out, OUT char **errorString);
|
int TvDeviceDecreaseBrightness(IN IXML_Document *in, OUT IXML_Document **out,
|
||||||
|
OUT char **errorString);
|
||||||
|
|
||||||
int TvDeviceStart(char * ip_address, unsigned short port,char * desc_doc_name,
|
int TvDeviceStart(char * ip_address, unsigned short port,char * desc_doc_name,
|
||||||
char *web_dir_path, print_string pfun);
|
char *web_dir_path, print_string pfun);
|
||||||
int TvDeviceStop(void);
|
int TvDeviceStop();
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
</specVersion>
|
</specVersion>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<actionList>
|
<actionList>
|
||||||
|
|
||||||
<action>
|
<action>
|
||||||
@@ -37,12 +38,6 @@
|
|||||||
<name>SetChannel</name>
|
<name>SetChannel</name>
|
||||||
<argumentList>
|
<argumentList>
|
||||||
|
|
||||||
<argument>
|
|
||||||
<name>Channel</name>
|
|
||||||
<relatedStateVariable>Channel</relatedStateVariable>
|
|
||||||
<direction>in</direction>
|
|
||||||
</argument>
|
|
||||||
|
|
||||||
<argument>
|
<argument>
|
||||||
<name>NewChannel</name>
|
<name>NewChannel</name>
|
||||||
<retval />
|
<retval />
|
||||||
@@ -50,6 +45,11 @@
|
|||||||
<direction>out</direction>
|
<direction>out</direction>
|
||||||
</argument>
|
</argument>
|
||||||
|
|
||||||
|
<argument>
|
||||||
|
<name>Channel</name>
|
||||||
|
<relatedStateVariable>Channel</relatedStateVariable>
|
||||||
|
<direction>in</direction>
|
||||||
|
</argument>
|
||||||
</argumentList>
|
</argumentList>
|
||||||
</action>
|
</action>
|
||||||
|
|
||||||
@@ -80,11 +80,6 @@
|
|||||||
<action>
|
<action>
|
||||||
<name>SetVolume</name>
|
<name>SetVolume</name>
|
||||||
<argumentList>
|
<argumentList>
|
||||||
<argument>
|
|
||||||
<name>Volume</name>
|
|
||||||
<relatedStateVariable>Volume</relatedStateVariable>
|
|
||||||
<direction>in</direction>
|
|
||||||
</argument>
|
|
||||||
|
|
||||||
<argument>
|
<argument>
|
||||||
<name>NewVolume</name>
|
<name>NewVolume</name>
|
||||||
@@ -92,6 +87,11 @@
|
|||||||
<relatedStateVariable>Volume</relatedStateVariable>
|
<relatedStateVariable>Volume</relatedStateVariable>
|
||||||
<direction>out</direction>
|
<direction>out</direction>
|
||||||
</argument>
|
</argument>
|
||||||
|
<argument>
|
||||||
|
<name>Volume</name>
|
||||||
|
<relatedStateVariable>Volume</relatedStateVariable>
|
||||||
|
<direction>in</direction>
|
||||||
|
</argument>
|
||||||
</argumentList>
|
</argumentList>
|
||||||
</action>
|
</action>
|
||||||
|
|
||||||
@@ -124,6 +124,9 @@
|
|||||||
|
|
||||||
</actionList>
|
</actionList>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<serviceStateTable>
|
<serviceStateTable>
|
||||||
|
|
||||||
<stateVariable sendEvents="yes">
|
<stateVariable sendEvents="yes">
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user