[svn r915] updated to use libupnp trunk
authorrenatofilho
Fri Feb 01 22:17:33 2008 +0000 (2008-02-01)
branchtrunk
changeset 909847da7267234
parent 908 46205cce5b8e
child 910 d20c167cc988
[svn r915] updated to use libupnp
gmyth-upnp/INSTALL
gmyth-upnp/Makefile.am
gmyth-upnp/autogen.sh
gmyth-upnp/common/Makefile.am
gmyth-upnp/common/autogen-helper.sh
gmyth-upnp/configure.ac
gmyth-upnp/m4/AUTHORS
gmyth-upnp/m4/COPYING
gmyth-upnp/m4/ChangeLog
gmyth-upnp/m4/INSTALL
gmyth-upnp/m4/Makefile.am
gmyth-upnp/m4/NEWS
gmyth-upnp/m4/README
gmyth-upnp/m4/ac_doxygen.m4
gmyth-upnp/m4/as-compiler-flag.m4
gmyth-upnp/m4/as-expand.m4
gmyth-upnp/m4/as-version.m4
gmyth-upnp/m4/configure.ac
gmyth-upnp/src/Makefile.am
gmyth-upnp/src/gmyth_upnp.c
gmyth-upnp/src/gmyth_upnp.h
gmyth-upnp/test/Makefile.am
gmyth-upnp/test/main.c
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/gmyth-upnp/INSTALL	Fri Feb 01 22:17:33 2008 +0000
     1.3 @@ -0,0 +1,236 @@
     1.4 +Installation Instructions
     1.5 +*************************
     1.6 +
     1.7 +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
     1.8 +Software Foundation, Inc.
     1.9 +
    1.10 +This file is free documentation; the Free Software Foundation gives
    1.11 +unlimited permission to copy, distribute and modify it.
    1.12 +
    1.13 +Basic Installation
    1.14 +==================
    1.15 +
    1.16 +These are generic installation instructions.
    1.17 +
    1.18 +   The `configure' shell script attempts to guess correct values for
    1.19 +various system-dependent variables used during compilation.  It uses
    1.20 +those values to create a `Makefile' in each directory of the package.
    1.21 +It may also create one or more `.h' files containing system-dependent
    1.22 +definitions.  Finally, it creates a shell script `config.status' that
    1.23 +you can run in the future to recreate the current configuration, and a
    1.24 +file `config.log' containing compiler output (useful mainly for
    1.25 +debugging `configure').
    1.26 +
    1.27 +   It can also use an optional file (typically called `config.cache'
    1.28 +and enabled with `--cache-file=config.cache' or simply `-C') that saves
    1.29 +the results of its tests to speed up reconfiguring.  (Caching is
    1.30 +disabled by default to prevent problems with accidental use of stale
    1.31 +cache files.)
    1.32 +
    1.33 +   If you need to do unusual things to compile the package, please try
    1.34 +to figure out how `configure' could check whether to do them, and mail
    1.35 +diffs or instructions to the address given in the `README' so they can
    1.36 +be considered for the next release.  If you are using the cache, and at
    1.37 +some point `config.cache' contains results you don't want to keep, you
    1.38 +may remove or edit it.
    1.39 +
    1.40 +   The file `configure.ac' (or `configure.in') is used to create
    1.41 +`configure' by a program called `autoconf'.  You only need
    1.42 +`configure.ac' if you want to change it or regenerate `configure' using
    1.43 +a newer version of `autoconf'.
    1.44 +
    1.45 +The simplest way to compile this package is:
    1.46 +
    1.47 +  1. `cd' to the directory containing the package's source code and type
    1.48 +     `./configure' to configure the package for your system.  If you're
    1.49 +     using `csh' on an old version of System V, you might need to type
    1.50 +     `sh ./configure' instead to prevent `csh' from trying to execute
    1.51 +     `configure' itself.
    1.52 +
    1.53 +     Running `configure' takes awhile.  While running, it prints some
    1.54 +     messages telling which features it is checking for.
    1.55 +
    1.56 +  2. Type `make' to compile the package.
    1.57 +
    1.58 +  3. Optionally, type `make check' to run any self-tests that come with
    1.59 +     the package.
    1.60 +
    1.61 +  4. Type `make install' to install the programs and any data files and
    1.62 +     documentation.
    1.63 +
    1.64 +  5. You can remove the program binaries and object files from the
    1.65 +     source code directory by typing `make clean'.  To also remove the
    1.66 +     files that `configure' created (so you can compile the package for
    1.67 +     a different kind of computer), type `make distclean'.  There is
    1.68 +     also a `make maintainer-clean' target, but that is intended mainly
    1.69 +     for the package's developers.  If you use it, you may have to get
    1.70 +     all sorts of other programs in order to regenerate files that came
    1.71 +     with the distribution.
    1.72 +
    1.73 +Compilers and Options
    1.74 +=====================
    1.75 +
    1.76 +Some systems require unusual options for compilation or linking that the
    1.77 +`configure' script does not know about.  Run `./configure --help' for
    1.78 +details on some of the pertinent environment variables.
    1.79 +
    1.80 +   You can give `configure' initial values for configuration parameters
    1.81 +by setting variables in the command line or in the environment.  Here
    1.82 +is an example:
    1.83 +
    1.84 +     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
    1.85 +
    1.86 +   *Note Defining Variables::, for more details.
    1.87 +
    1.88 +Compiling For Multiple Architectures
    1.89 +====================================
    1.90 +
    1.91 +You can compile the package for more than one kind of computer at the
    1.92 +same time, by placing the object files for each architecture in their
    1.93 +own directory.  To do this, you must use a version of `make' that
    1.94 +supports the `VPATH' variable, such as GNU `make'.  `cd' to the
    1.95 +directory where you want the object files and executables to go and run
    1.96 +the `configure' script.  `configure' automatically checks for the
    1.97 +source code in the directory that `configure' is in and in `..'.
    1.98 +
    1.99 +   If you have to use a `make' that does not support the `VPATH'
   1.100 +variable, you have to compile the package for one architecture at a
   1.101 +time in the source code directory.  After you have installed the
   1.102 +package for one architecture, use `make distclean' before reconfiguring
   1.103 +for another architecture.
   1.104 +
   1.105 +Installation Names
   1.106 +==================
   1.107 +
   1.108 +By default, `make install' installs the package's commands under
   1.109 +`/usr/local/bin', include files under `/usr/local/include', etc.  You
   1.110 +can specify an installation prefix other than `/usr/local' by giving
   1.111 +`configure' the option `--prefix=PREFIX'.
   1.112 +
   1.113 +   You can specify separate installation prefixes for
   1.114 +architecture-specific files and architecture-independent files.  If you
   1.115 +pass the option `--exec-prefix=PREFIX' to `configure', the package uses
   1.116 +PREFIX as the prefix for installing programs and libraries.
   1.117 +Documentation and other data files still use the regular prefix.
   1.118 +
   1.119 +   In addition, if you use an unusual directory layout you can give
   1.120 +options like `--bindir=DIR' to specify different values for particular
   1.121 +kinds of files.  Run `configure --help' for a list of the directories
   1.122 +you can set and what kinds of files go in them.
   1.123 +
   1.124 +   If the package supports it, you can cause programs to be installed
   1.125 +with an extra prefix or suffix on their names by giving `configure' the
   1.126 +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
   1.127 +
   1.128 +Optional Features
   1.129 +=================
   1.130 +
   1.131 +Some packages pay attention to `--enable-FEATURE' options to
   1.132 +`configure', where FEATURE indicates an optional part of the package.
   1.133 +They may also pay attention to `--with-PACKAGE' options, where PACKAGE
   1.134 +is something like `gnu-as' or `x' (for the X Window System).  The
   1.135 +`README' should mention any `--enable-' and `--with-' options that the
   1.136 +package recognizes.
   1.137 +
   1.138 +   For packages that use the X Window System, `configure' can usually
   1.139 +find the X include and library files automatically, but if it doesn't,
   1.140 +you can use the `configure' options `--x-includes=DIR' and
   1.141 +`--x-libraries=DIR' to specify their locations.
   1.142 +
   1.143 +Specifying the System Type
   1.144 +==========================
   1.145 +
   1.146 +There may be some features `configure' cannot figure out automatically,
   1.147 +but needs to determine by the type of machine the package will run on.
   1.148 +Usually, assuming the package is built to be run on the _same_
   1.149 +architectures, `configure' can figure that out, but if it prints a
   1.150 +message saying it cannot guess the machine type, give it the
   1.151 +`--build=TYPE' option.  TYPE can either be a short name for the system
   1.152 +type, such as `sun4', or a canonical name which has the form:
   1.153 +
   1.154 +     CPU-COMPANY-SYSTEM
   1.155 +
   1.156 +where SYSTEM can have one of these forms:
   1.157 +
   1.158 +     OS KERNEL-OS
   1.159 +
   1.160 +   See the file `config.sub' for the possible values of each field.  If
   1.161 +`config.sub' isn't included in this package, then this package doesn't
   1.162 +need to know the machine type.
   1.163 +
   1.164 +   If you are _building_ compiler tools for cross-compiling, you should
   1.165 +use the option `--target=TYPE' to select the type of system they will
   1.166 +produce code for.
   1.167 +
   1.168 +   If you want to _use_ a cross compiler, that generates code for a
   1.169 +platform different from the build platform, you should specify the
   1.170 +"host" platform (i.e., that on which the generated programs will
   1.171 +eventually be run) with `--host=TYPE'.
   1.172 +
   1.173 +Sharing Defaults
   1.174 +================
   1.175 +
   1.176 +If you want to set default values for `configure' scripts to share, you
   1.177 +can create a site shell script called `config.site' that gives default
   1.178 +values for variables like `CC', `cache_file', and `prefix'.
   1.179 +`configure' looks for `PREFIX/share/config.site' if it exists, then
   1.180 +`PREFIX/etc/config.site' if it exists.  Or, you can set the
   1.181 +`CONFIG_SITE' environment variable to the location of the site script.
   1.182 +A warning: not all `configure' scripts look for a site script.
   1.183 +
   1.184 +Defining Variables
   1.185 +==================
   1.186 +
   1.187 +Variables not defined in a site shell script can be set in the
   1.188 +environment passed to `configure'.  However, some packages may run
   1.189 +configure again during the build, and the customized values of these
   1.190 +variables may be lost.  In order to avoid this problem, you should set
   1.191 +them in the `configure' command line, using `VAR=value'.  For example:
   1.192 +
   1.193 +     ./configure CC=/usr/local2/bin/gcc
   1.194 +
   1.195 +causes the specified `gcc' to be used as the C compiler (unless it is
   1.196 +overridden in the site shell script).  Here is a another example:
   1.197 +
   1.198 +     /bin/bash ./configure CONFIG_SHELL=/bin/bash
   1.199 +
   1.200 +Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
   1.201 +configuration-related scripts to be executed by `/bin/bash'.
   1.202 +
   1.203 +`configure' Invocation
   1.204 +======================
   1.205 +
   1.206 +`configure' recognizes the following options to control how it operates.
   1.207 +
   1.208 +`--help'
   1.209 +`-h'
   1.210 +     Print a summary of the options to `configure', and exit.
   1.211 +
   1.212 +`--version'
   1.213 +`-V'
   1.214 +     Print the version of Autoconf used to generate the `configure'
   1.215 +     script, and exit.
   1.216 +
   1.217 +`--cache-file=FILE'
   1.218 +     Enable the cache: use and save the results of the tests in FILE,
   1.219 +     traditionally `config.cache'.  FILE defaults to `/dev/null' to
   1.220 +     disable caching.
   1.221 +
   1.222 +`--config-cache'
   1.223 +`-C'
   1.224 +     Alias for `--cache-file=config.cache'.
   1.225 +
   1.226 +`--quiet'
   1.227 +`--silent'
   1.228 +`-q'
   1.229 +     Do not print messages saying which checks are being made.  To
   1.230 +     suppress all normal output, redirect it to `/dev/null' (any error
   1.231 +     messages will still be shown).
   1.232 +
   1.233 +`--srcdir=DIR'
   1.234 +     Look for the package's source code in directory DIR.  Usually
   1.235 +     `configure' can determine that directory automatically.
   1.236 +
   1.237 +`configure' also accepts some other, not widely useful, options.  Run
   1.238 +`configure --help' for more details.
   1.239 +
     2.1 --- a/gmyth-upnp/Makefile.am	Fri Feb 01 19:22:17 2008 +0000
     2.2 +++ b/gmyth-upnp/Makefile.am	Fri Feb 01 22:17:33 2008 +0000
     2.3 @@ -1,4 +1,4 @@
     2.4 -SUBDIRS= src
     2.5 +SUBDIRS= src test
     2.6  
     2.7  ### all of the standard pc files we need to generate
     2.8  pcfiles = gmyth-upnp.pc
     2.9 @@ -12,8 +12,6 @@
    2.10  pkgconfigdir = $(libdir)/pkgconfig
    2.11  pkgconfig_DATA = $(pcfiles)
    2.12  
    2.13 -include aminclude.am
    2.14 -
    2.15  EXTRA_DIST =                            \
    2.16          autogen.sh                      \
    2.17          gmyth-upnp.pc.in		\
     3.1 --- a/gmyth-upnp/autogen.sh	Fri Feb 01 19:22:17 2008 +0000
     3.2 +++ b/gmyth-upnp/autogen.sh	Fri Feb 01 22:17:33 2008 +0000
     3.3 @@ -1,102 +1,21 @@
     3.4  #!/bin/sh
     3.5  # Run this to generate all the initial makefiles, etc.
     3.6  
     3.7 -DIE=0
     3.8 -package=gmyth-upnp
     3.9 -srcfile=configure.ac
    3.10 +srcdir=`dirname $0`
    3.11 +test -z "$srcdir" && srcdir=.
    3.12  
    3.13 -# a quick cvs co if necessary to alleviate the pain - may remove this
    3.14 -# when developers get a clue ;)
    3.15 -if test ! -d common; 
    3.16 -then 
    3.17 -  echo "+ getting common/ from svn"
    3.18 - svn co common 
    3.19 -fi
    3.20 +PKG_NAME="mtv"
    3.21  
    3.22 -# source helper functions
    3.23 -if test ! -f common/autogen-helper.sh;
    3.24 -then
    3.25 -  echo There is something wrong with your source tree.
    3.26 -  echo You are missing common/autogen-helper.sh
    3.27 -  exit 1
    3.28 -fi
    3.29 -. common/autogen-helper.sh
    3.30 -
    3.31 -CONFIGURE_DEF_OPT='--enable-maintainer-mode'
    3.32 -# uncomment below to disable the UPnP features
    3.33 -#CONFIGURE_DEF_OPT+=' --disable-upnp'
    3.34 -CONFIGURE_EXT_OPT="$@"
    3.35 -
    3.36 -autogen_options 
    3.37 -
    3.38 -echo -n "+ check for build tools"
    3.39 -if test ! -z "$NOCHECK"; then echo " skipped"; else  echo; fi
    3.40 -version_check "autoconf" "$AUTOCONF autoconf autoconf-2.54 autoconf-2.53" \
    3.41 -              "ftp://ftp.gnu.org/pub/gnu/autoconf/" 2 53 || DIE=1
    3.42 -version_check "automake" "$AUTOMAKE automake automake-1.9 automake-1.8 automake-1.7 automake-1.6" \
    3.43 -              "ftp://ftp.gnu.org/pub/gnu/automake/" 1 6 || DIE=1
    3.44 -version_check "libtoolize" "$LIBTOOLIZE libtoolize" \
    3.45 -              "ftp://ftp.gnu.org/pub/gnu/libtool/" 1 5 0 || DIE=1
    3.46 -version_check "pkg-config" "" \
    3.47 -              "http://www.freedesktop.org/software/pkgconfig" 0 8 0 || DIE=1
    3.48 -
    3.49 -die_check $DIE
    3.50 -
    3.51 -aclocal_check || DIE=1
    3.52 -autoheader_check || DIE=1
    3.53 -
    3.54 -die_check $DIE
    3.55 -
    3.56 -# if no arguments specified then this will be printed
    3.57 -if test -z "$*"; then
    3.58 -  echo "+ checking for autogen.sh options"
    3.59 -  echo "  This autogen script will automatically run ./configure as:"
    3.60 -  echo "  ./configure $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT"
    3.61 -  echo "  To pass any additional options, please specify them on the $0"
    3.62 -  echo "  command line."
    3.63 -fi
    3.64 -
    3.65 -toplevel_check $srcfile
    3.66 -
    3.67 -tool_run "$aclocal" "-I m4 $ACLOCAL_FLAGS"
    3.68 -tool_run "$libtoolize" "--copy --force"
    3.69 -tool_run "$autoheader"
    3.70 -
    3.71 -# touch the stamp-h.in build stamp so we don't re-run autoheader in maintainer mode -- wingo
    3.72 -echo timestamp > stamp-h.in 2> /dev/null
    3.73 -
    3.74 -tool_run "$autoconf"
    3.75 -tool_run "$automake" "-a -c"
    3.76 -
    3.77 -# if enable exists, add an -enable option for each of the lines in that file
    3.78 -if test -f enable; then
    3.79 -  for a in `cat enable`; do
    3.80 -    CONFIGURE_FILE_OPT="--enable-$a"
    3.81 -  done
    3.82 -fi
    3.83 -
    3.84 -# if disable exists, add an -disable option for each of the lines in that file
    3.85 -if test -f disable; then
    3.86 -  for a in `cat disable`; do
    3.87 -    CONFIGURE_FILE_OPT="$CONFIGURE_FILE_OPT --disable-$a"
    3.88 -  done
    3.89 -fi
    3.90 -
    3.91 -test -n "$NOCONFIGURE" && {
    3.92 -  echo "+ skipping configure stage for package $package, as requested."
    3.93 -  echo "+ autogen.sh done."
    3.94 -  exit 0
    3.95 +(test -f $srcdir/configure.ac) || {
    3.96 +    echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
    3.97 +    echo " top-level $PKG_NAME directory"
    3.98 +    exit 1
    3.99  }
   3.100  
   3.101 -echo "+ running configure ... "
   3.102 -test ! -z "$CONFIGURE_DEF_OPT" && echo "  ./configure default flags: $CONFIGURE_DEF_OPT"
   3.103 -test ! -z "$CONFIGURE_EXT_OPT" && echo "  ./configure external flags: $CONFIGURE_EXT_OPT"
   3.104 -test ! -z "$CONFIGURE_FILE_OPT" && echo "  ./configure enable/disable flags: $CONFIGURE_FILE_OPT"
   3.105 -echo
   3.106 -
   3.107 -./configure $CONFIGURE_DEF_OPT $CONFIGURE_EXT_OPT $CONFIGURE_FILE_OPT || {
   3.108 -        echo "  configure failed"
   3.109 -        exit 1
   3.110 +which gnome-autogen.sh || {
   3.111 +	echo "You need to install gnome-common from the GNOME CVS"
   3.112 +	exit 1
   3.113  }
   3.114  
   3.115 -echo "Now type 'make' to compile $package."
   3.116 +ACLOCAL_FLAGS="$ACLOCAL_FLAGS"
   3.117 +REQUIRED_AUTOMAKE_VERSION=1.7 USE_GNOME2_MACROS=1 USE_COMMON_DOC_BUILD=yes . gnome-autogen.sh
     4.1 --- a/gmyth-upnp/common/Makefile.am	Fri Feb 01 19:22:17 2008 +0000
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,1 +0,0 @@
     4.4 -EXTRA_DIST = autogen-helper.sh
     5.1 --- a/gmyth-upnp/common/autogen-helper.sh	Fri Feb 01 19:22:17 2008 +0000
     5.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.3 @@ -1,302 +0,0 @@
     5.4 -# a silly hack that generates autoregen.sh but it's handy
     5.5 -echo "#!/bin/sh" > autoregen.sh
     5.6 -echo "./autogen.sh $@ \$@" >> autoregen.sh
     5.7 -chmod +x autoregen.sh
     5.8 -
     5.9 -# helper functions for autogen.sh
    5.10 -
    5.11 -debug ()
    5.12 -# print out a debug message if DEBUG is a defined variable
    5.13 -{
    5.14 -  if test ! -z "$DEBUG"
    5.15 -  then
    5.16 -    echo "DEBUG: $1"
    5.17 -  fi
    5.18 -}
    5.19 -
    5.20 -version_check ()
    5.21 -# check the version of a package
    5.22 -# first argument : package name (executable)
    5.23 -# second argument : optional path where to look for it instead
    5.24 -# third argument : source download url
    5.25 -# rest of arguments : major, minor, micro version
    5.26 -# all consecutive ones : suggestions for binaries to use
    5.27 -# (if not specified in second argument)
    5.28 -{
    5.29 -  PACKAGE=$1
    5.30 -  PKG_PATH=$2
    5.31 -  URL=$3
    5.32 -  MAJOR=$4
    5.33 -  MINOR=$5
    5.34 -  MICRO=$6
    5.35 -
    5.36 -  # for backwards compatibility, we let PKG_PATH=PACKAGE when PKG_PATH null
    5.37 -  if test -z "$PKG_PATH"; then PKG_PATH=$PACKAGE; fi
    5.38 -  debug "major $MAJOR minor $MINOR micro $MICRO"
    5.39 -  VERSION=$MAJOR
    5.40 -  if test ! -z "$MINOR"; then VERSION=$VERSION.$MINOR; else MINOR=0; fi
    5.41 -  if test ! -z "$MICRO"; then VERSION=$VERSION.$MICRO; else MICRO=0; fi
    5.42 -
    5.43 -  debug "major $MAJOR minor $MINOR micro $MICRO"
    5.44 -  
    5.45 -  for SUGGESTION in $PKG_PATH; do 
    5.46 -    COMMAND="$SUGGESTION"
    5.47 -
    5.48 -    # don't check if asked not to
    5.49 -    test -z "$NOCHECK" && {
    5.50 -      echo -n "  checking for $COMMAND >= $VERSION ... "
    5.51 -    } || {
    5.52 -      # we set a var with the same name as the package, but stripped of
    5.53 -      # unwanted chars
    5.54 -      VAR=`echo $PACKAGE | sed 's/-//g'`
    5.55 -      debug "setting $VAR"
    5.56 -      eval $VAR="$COMMAND"
    5.57 -      return 0
    5.58 -    }
    5.59 -
    5.60 -    debug "checking version with $COMMAND"
    5.61 -    ($COMMAND --version) < /dev/null > /dev/null 2>&1 || 
    5.62 -    {
    5.63 -      echo "not found."
    5.64 -      continue
    5.65 -    }
    5.66 -    # strip everything that's not a digit, then use cut to get the first field
    5.67 -    pkg_version=`$COMMAND --version|head -n 1|sed 's/^[^0-9]*//'|cut -d' ' -f1`
    5.68 -    debug "pkg_version $pkg_version"
    5.69 -    # remove any non-digit characters from the version numbers to permit numeric
    5.70 -    # comparison
    5.71 -    pkg_major=`echo $pkg_version | cut -d. -f1 | sed s/[a-zA-Z\-].*//g`
    5.72 -    pkg_minor=`echo $pkg_version | cut -d. -f2 | sed s/[a-zA-Z\-].*//g`
    5.73 -    pkg_micro=`echo $pkg_version | cut -d. -f3 | sed s/[a-zA-Z\-].*//g`
    5.74 -    test -z "$pkg_major" && pkg_major=0
    5.75 -    test -z "$pkg_minor" && pkg_minor=0
    5.76 -    test -z "$pkg_micro" && pkg_micro=0
    5.77 -    debug "found major $pkg_major minor $pkg_minor micro $pkg_micro"
    5.78 -
    5.79 -    #start checking the version
    5.80 -    debug "version check"
    5.81 -
    5.82 -    # reset check
    5.83 -    WRONG=
    5.84 -
    5.85 -    if [ ! "$pkg_major" -gt "$MAJOR" ]; then
    5.86 -      debug "major: $pkg_major <= $MAJOR"
    5.87 -      if [ "$pkg_major" -lt "$MAJOR" ]; then
    5.88 -        debug "major: $pkg_major < $MAJOR"
    5.89 -        WRONG=1
    5.90 -      elif [ ! "$pkg_minor" -gt "$MINOR" ]; then
    5.91 -        debug "minor: $pkg_minor <= $MINOR"
    5.92 -        if [ "$pkg_minor" -lt "$MINOR" ]; then
    5.93 -          debug "minor: $pkg_minor < $MINOR"
    5.94 -          WRONG=1
    5.95 -        elif [ "$pkg_micro" -lt "$MICRO" ]; then
    5.96 -          debug "micro: $pkg_micro < $MICRO"
    5.97 -	  WRONG=1
    5.98 -        fi
    5.99 -      fi
   5.100 -    fi
   5.101 -
   5.102 -    if test ! -z "$WRONG"; then
   5.103 -      echo "found $pkg_version, not ok !"
   5.104 -      continue
   5.105 -    else
   5.106 -      echo "found $pkg_version, ok."
   5.107 -      # we set a var with the same name as the package, but stripped of
   5.108 -      # unwanted chars
   5.109 -      VAR=`echo $PACKAGE | sed 's/-//g'`
   5.110 -      debug "setting $VAR"
   5.111 -      eval $VAR="$COMMAND"
   5.112 -      return 0
   5.113 -    fi
   5.114 -  done
   5.115 -
   5.116 -  echo "not found !"
   5.117 -  echo "You must have $PACKAGE installed to compile $package."
   5.118 -  echo "Download the appropriate package for your distribution,"
   5.119 -  echo "or get the source tarball at $URL"
   5.120 -  return 1;
   5.121 -}
   5.122 -
   5.123 -aclocal_check ()
   5.124 -{
   5.125 -  # normally aclocal is part of automake
   5.126 -  # so we expect it to be in the same place as automake
   5.127 -  # so if a different automake is supplied, we need to adapt as well
   5.128 -  # so how's about replacing automake with aclocal in the set var,
   5.129 -  # and saving that in $aclocal ?
   5.130 -  # note, this will fail if the actual automake isn't called automake*
   5.131 -  # or if part of the path before it contains it
   5.132 -  if [ -z "$automake" ]; then
   5.133 -    echo "Error: no automake variable set !"
   5.134 -    return 1
   5.135 -  else
   5.136 -    aclocal=`echo $automake | sed s/automake/aclocal/`
   5.137 -    debug "aclocal: $aclocal"
   5.138 -    if [ "$aclocal" != "aclocal" ];
   5.139 -    then
   5.140 -      CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-aclocal=$aclocal"
   5.141 -    fi
   5.142 -    if [ ! -x `which $aclocal` ]; then
   5.143 -      echo "Error: cannot execute $aclocal !"
   5.144 -      return 1
   5.145 -    fi
   5.146 -  fi
   5.147 -}
   5.148 -
   5.149 -autoheader_check ()
   5.150 -{
   5.151 -  # same here - autoheader is part of autoconf
   5.152 -  # use the same voodoo
   5.153 -  if [ -z "$autoconf" ]; then
   5.154 -    echo "Error: no autoconf variable set !"
   5.155 -    return 1
   5.156 -  else
   5.157 -    autoheader=`echo $autoconf | sed s/autoconf/autoheader/`
   5.158 -    debug "autoheader: $autoheader"
   5.159 -    if [ "$autoheader" != "autoheader" ];
   5.160 -    then
   5.161 -      CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoheader=$autoheader"
   5.162 -    fi
   5.163 -    if [ ! -x `which $autoheader` ]; then
   5.164 -      echo "Error: cannot execute $autoheader !"
   5.165 -      return 1
   5.166 -    fi
   5.167 -  fi
   5.168 -
   5.169 -}
   5.170 -
   5.171 -autoconf_2_52d_check ()
   5.172 -{
   5.173 -  # autoconf 2.52d has a weird issue involving a yes:no error
   5.174 -  # so don't allow it's use
   5.175 -  test -z "$NOCHECK" && {
   5.176 -    ac_version=`$autoconf --version|head -n 1|sed 's/^[a-zA-Z\.\ ()]*//;s/ .*$//'`
   5.177 -    if test "$ac_version" = "2.52d"; then
   5.178 -      echo "autoconf 2.52d has an issue with our current build."
   5.179 -      echo "We don't know who's to blame however.  So until we do, get a"
   5.180 -      echo "regular version.  RPM's of a working version are on the gstreamer site."
   5.181 -      exit 1
   5.182 -    fi
   5.183 -  }
   5.184 -  return 0
   5.185 -}
   5.186 -
   5.187 -die_check ()
   5.188 -{
   5.189 -  # call with $DIE
   5.190 -  # if set to 1, we need to print something helpful then die
   5.191 -  DIE=$1
   5.192 -  if test "x$DIE" = "x1";
   5.193 -  then
   5.194 -    echo
   5.195 -    echo "- Please get the right tools before proceeding."
   5.196 -    echo "- Alternatively, if you're sure we're wrong, run with --nocheck."
   5.197 -    exit 1
   5.198 -  fi
   5.199 -}
   5.200 -
   5.201 -autogen_options ()
   5.202 -{
   5.203 -  if test "x$1" = "x"; then
   5.204 -    return 0
   5.205 -  fi
   5.206 -
   5.207 -  while test "x$1" != "x" ; do
   5.208 -    optarg=`expr "x$1" : 'x[^=]*=\(.*\)'`
   5.209 -    case "$1" in
   5.210 -      --noconfigure)
   5.211 -          NOCONFIGURE=defined
   5.212 -	  AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --noconfigure"
   5.213 -          echo "+ configure run disabled"
   5.214 -          shift
   5.215 -          ;;
   5.216 -      --nocheck)
   5.217 -	  AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --nocheck"
   5.218 -          NOCHECK=defined
   5.219 -          echo "+ autotools version check disabled"
   5.220 -          shift
   5.221 -          ;;
   5.222 -      --debug)
   5.223 -          DEBUG=defined
   5.224 -	  AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --debug"
   5.225 -          echo "+ debug output enabled"
   5.226 -          shift
   5.227 -          ;;
   5.228 -      --prefix=*)
   5.229 -	  CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT --prefix=$optarg"
   5.230 -	  echo "+ passing --prefix=$optarg to configure"
   5.231 -          shift
   5.232 -          ;;
   5.233 -      --prefix)
   5.234 -	  shift
   5.235 -	  echo "DEBUG: $1"
   5.236 -	  CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT --prefix=$1"
   5.237 -	  echo "+ passing --prefix=$1 to configure"
   5.238 -          shift
   5.239 -          ;;
   5.240 -      -h|--help)
   5.241 -          echo "autogen.sh (autogen options) -- (configure options)"
   5.242 -          echo "autogen.sh help options: "
   5.243 -          echo " --noconfigure            don't run the configure script"
   5.244 -          echo " --nocheck                don't do version checks"
   5.245 -          echo " --debug                  debug the autogen process"
   5.246 -	  echo " --prefix		  will be passed on to configure"
   5.247 -          echo
   5.248 -          echo " --with-autoconf PATH     use autoconf in PATH"
   5.249 -          echo " --with-automake PATH     use automake in PATH"
   5.250 -          echo
   5.251 -          echo "to pass options to configure, put them as arguments after -- "
   5.252 -	  exit 1
   5.253 -          ;;
   5.254 -      --with-automake=*)
   5.255 -          AUTOMAKE=$optarg
   5.256 -          echo "+ using alternate automake in $optarg"
   5.257 -	  CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-automake=$AUTOMAKE"
   5.258 -          shift
   5.259 -          ;;
   5.260 -      --with-autoconf=*)
   5.261 -          AUTOCONF=$optarg
   5.262 -          echo "+ using alternate autoconf in $optarg"
   5.263 -	  CONFIGURE_DEF_OPT="$CONFIGURE_DEF_OPT --with-autoconf=$AUTOCONF"
   5.264 -          shift
   5.265 -          ;;
   5.266 -      --disable*|--enable*|--with*)
   5.267 -          echo "+ passing option $1 to configure"
   5.268 -	  CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $1"
   5.269 -          shift
   5.270 -          ;;
   5.271 -       --) shift ; break ;;
   5.272 -      *) echo "- ignoring unknown autogen.sh argument $1"; shift ;;
   5.273 -    esac
   5.274 -  done
   5.275 -
   5.276 -  for arg do CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $arg"; done
   5.277 -  if test ! -z "$CONFIGURE_EXT_OPT"
   5.278 -  then
   5.279 -    echo "+ options passed to configure: $CONFIGURE_EXT_OPT"
   5.280 -  fi
   5.281 -}
   5.282 -
   5.283 -toplevel_check ()
   5.284 -{
   5.285 -  srcfile=$1
   5.286 -  test -f $srcfile || {
   5.287 -        echo "You must run this script in the top-level $package directory"
   5.288 -        exit 1
   5.289 -  }
   5.290 -}
   5.291 -
   5.292 -
   5.293 -tool_run ()
   5.294 -{
   5.295 -  tool=$1
   5.296 -  options=$2
   5.297 -  run_if_fail=$3
   5.298 -  echo "+ running $tool $options..."
   5.299 -  $tool $options || {
   5.300 -    echo
   5.301 -    echo $tool failed
   5.302 -    eval $run_if_fail
   5.303 -    exit 1
   5.304 -  }
   5.305 -}
     6.1 --- a/gmyth-upnp/configure.ac	Fri Feb 01 19:22:17 2008 +0000
     6.2 +++ b/gmyth-upnp/configure.ac	Fri Feb 01 22:17:33 2008 +0000
     6.3 @@ -3,17 +3,11 @@
     6.4  
     6.5  AC_PREREQ(2.50)
     6.6  
     6.7 -AC_INIT([gmyth-upnp],[0.1])
     6.8 +AC_INIT([gmyth-upnp],[0.7])
     6.9  
    6.10  AC_CONFIG_SRCDIR([src/gmyth_upnp.c])
    6.11  AC_CONFIG_HEADER(config.h)
    6.12  
    6.13 -dnl when going to/from release please set the nano (fourth number) right !
    6.14 -dnl releases only do Wall, SVN and prerelease does Werror too
    6.15 -AS_VERSION(gmyth-upnp, GMYTH_UPNP, 0, 1, 0, 3, GMYTH_UPNP_SVN="no", GMYTH_UPNP_SVN="yes")
    6.16 -GMYTH_UPNP_MAJORMINOR=$GMYTH_UPNP_MAJOR_VERSION.$GMYTH_UPNP_MINOR_VERSION
    6.17 -AC_SUBST(GMYTH_UPNP_MAJORMINOR)
    6.18 -
    6.19  dnl AM_MAINTAINER_MODE provides the option to enable maintainer mode
    6.20  AM_MAINTAINER_MODE
    6.21  dnl make aclocal work in maintainer mode
    6.22 @@ -26,17 +20,6 @@
    6.23  AC_PROG_CC
    6.24  AC_PROG_LIBTOOL
    6.25  
    6.26 -dnl Generate doxygen documentation
    6.27 -DX_HTML_FEATURE(ON)
    6.28 -DX_CHM_FEATURE(OFF)
    6.29 -DX_CHI_FEATURE(OFF)
    6.30 -DX_MAN_FEATURE(OFF)
    6.31 -DX_RTF_FEATURE(OFF)
    6.32 -DX_XML_FEATURE(OFF)
    6.33 -DX_PDF_FEATURE(OFF)
    6.34 -DX_PS_FEATURE(OFF)
    6.35 -DX_INIT_DOXYGEN(gmyth-upnp, doxygen.cfg, docs)
    6.36 -
    6.37  # Checks for libraries.
    6.38  
    6.39  # Check for pkgconfig
    6.40 @@ -120,12 +103,12 @@
    6.41  AC_SUBST(GOBJECT_CFLAGS)
    6.42  AC_SUBST(GOBJECT_LIBS)
    6.43  
    6.44 -## Check for gmyth-0.1
    6.45 -PKG_CHECK_MODULES(LIBGMYTH, gmyth-0.1, HAVE_LIBGMYTH=yes,HAVE_LIBGMYTH=no)
    6.46 +## Check for gmyth-0.7
    6.47 +PKG_CHECK_MODULES(LIBGMYTH, gmyth >= 0.7, HAVE_LIBGMYTH=yes,HAVE_LIBGMYTH=no)
    6.48  
    6.49 -# Give error and exit if we don't have gmyth-0.1
    6.50 +# Give error and exit if we don't have gmyth-0.7
    6.51  if test "x$HAVE_LIBGMYTH" = "xno"; then
    6.52 -  AC_MSG_ERROR([you need gmyth-0.1 installed])
    6.53 +  AC_MSG_ERROR([you need gmyth  installed])
    6.54  fi
    6.55  
    6.56  # make LIBXML_CFLAGS and LIBXML_LIBS available
    6.57 @@ -133,28 +116,24 @@
    6.58  AC_SUBST(LIBGMYTH_LIBS)
    6.59  
    6.60  dnl ========== Check for Cyberlink UPnP Libraries
    6.61 -PKG_CHECK_MODULES(CYBERLINK, clinkc,
    6.62 -          HAVE_CYBERLINK=yes, HAVE_CYBERLINK=no)
    6.63 +PKG_CHECK_MODULES(LIBUPNP, libupnp, HAVE_LIBUPNP=yes, HAVE_LIBUPNP=no)
    6.64  
    6.65 -if test "x$HAVE_CYBERLINK" = "xno"; then
    6.66 -  AC_MSG_ERROR([you need clinkc installed])
    6.67 +if test "x$HAVE_LIBUPNP" = "xno"; then
    6.68 +  AC_MSG_ERROR([you need libupnp installed])
    6.69  fi
    6.70  
    6.71 -dnl make CYBERLINK_CFLAGS and CYBERLINK_LIBS available
    6.72 -AC_SUBST(CYBERLINK_CFLAGS)
    6.73 -AC_SUBST(CYBERLINK_LIBS)
    6.74 -
    6.75 -#dnl Enable gtk-doc
    6.76 -#GTK_DOC_CHECK(1.4)
    6.77 +AC_SUBST(LIBUPNP_CFLAGS)
    6.78 +AC_SUBST(LIBIPNP_LIBS)
    6.79  
    6.80  AC_OUTPUT([
    6.81  Makefile
    6.82  src/Makefile
    6.83 +test/Makefile
    6.84  gmyth-upnp.pc])
    6.85  
    6.86  if test "x$enable_debug" != "xno"; then
    6.87      AC_MSG_NOTICE([Debug: Enabled])
    6.88  else
    6.89      AC_MSG_NOTICE([Debug: Disabled])
    6.90 -fi          
    6.91 +fi
    6.92  
     7.1 --- a/gmyth-upnp/m4/AUTHORS	Fri Feb 01 19:22:17 2008 +0000
     7.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.3 @@ -1,4 +0,0 @@
     7.4 -Alexsandro Jose Virginio dos Santos <alexsandro.santos@indt.org.br>
     7.5 -Hallyson Luiz de Morais Melo <hallyson.melo@indt.org.br>
     7.6 -Leonardo Sobral Cunha <leonardo.cunha@indt.org.br>
     7.7 -Rosfran Lins Borges <rosfran.borges@indt.org.br>
     8.1 --- a/gmyth-upnp/m4/COPYING	Fri Feb 01 19:22:17 2008 +0000
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,504 +0,0 @@
     8.4 -		  GNU LESSER GENERAL PUBLIC LICENSE
     8.5 -		       Version 2.1, February 1999
     8.6 -
     8.7 - Copyright (C) 1991, 1999 Free Software Foundation, Inc.
     8.8 -     51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     8.9 - Everyone is permitted to copy and distribute verbatim copies
    8.10 - of this license document, but changing it is not allowed.
    8.11 -
    8.12 -[This is the first released version of the Lesser GPL.  It also counts
    8.13 - as the successor of the GNU Library Public License, version 2, hence
    8.14 - the version number 2.1.]
    8.15 -
    8.16 -			    Preamble
    8.17 -
    8.18 -  The licenses for most software are designed to take away your
    8.19 -freedom to share and change it.  By contrast, the GNU General Public
    8.20 -Licenses are intended to guarantee your freedom to share and change
    8.21 -free software--to make sure the software is free for all its users.
    8.22 -
    8.23 -  This license, the Lesser General Public License, applies to some
    8.24 -specially designated software packages--typically libraries--of the
    8.25 -Free Software Foundation and other authors who decide to use it.  You
    8.26 -can use it too, but we suggest you first think carefully about whether
    8.27 -this license or the ordinary General Public License is the better
    8.28 -strategy to use in any particular case, based on the explanations below.
    8.29 -
    8.30 -  When we speak of free software, we are referring to freedom of use,
    8.31 -not price.  Our General Public Licenses are designed to make sure that
    8.32 -you have the freedom to distribute copies of free software (and charge
    8.33 -for this service if you wish); that you receive source code or can get
    8.34 -it if you want it; that you can change the software and use pieces of
    8.35 -it in new free programs; and that you are informed that you can do
    8.36 -these things.
    8.37 -
    8.38 -  To protect your rights, we need to make restrictions that forbid
    8.39 -distributors to deny you these rights or to ask you to surrender these
    8.40 -rights.  These restrictions translate to certain responsibilities for
    8.41 -you if you distribute copies of the library or if you modify it.
    8.42 -
    8.43 -  For example, if you distribute copies of the library, whether gratis
    8.44 -or for a fee, you must give the recipients all the rights that we gave
    8.45 -you.  You must make sure that they, too, receive or can get the source
    8.46 -code.  If you link other code with the library, you must provide
    8.47 -complete object files to the recipients, so that they can relink them
    8.48 -with the library after making changes to the library and recompiling
    8.49 -it.  And you must show them these terms so they know their rights.
    8.50 -
    8.51 -  We protect your rights with a two-step method: (1) we copyright the
    8.52 -library, and (2) we offer you this license, which gives you legal
    8.53 -permission to copy, distribute and/or modify the library.
    8.54 -
    8.55 -  To protect each distributor, we want to make it very clear that
    8.56 -there is no warranty for the free library.  Also, if the library is
    8.57 -modified by someone else and passed on, the recipients should know
    8.58 -that what they have is not the original version, so that the original
    8.59 -author's reputation will not be affected by problems that might be
    8.60 -introduced by others.
    8.61 -
    8.62 -  Finally, software patents pose a constant threat to the existence of
    8.63 -any free program.  We wish to make sure that a company cannot
    8.64 -effectively restrict the users of a free program by obtaining a
    8.65 -restrictive license from a patent holder.  Therefore, we insist that
    8.66 -any patent license obtained for a version of the library must be
    8.67 -consistent with the full freedom of use specified in this license.
    8.68 -
    8.69 -  Most GNU software, including some libraries, is covered by the
    8.70 -ordinary GNU General Public License.  This license, the GNU Lesser
    8.71 -General Public License, applies to certain designated libraries, and
    8.72 -is quite different from the ordinary General Public License.  We use
    8.73 -this license for certain libraries in order to permit linking those
    8.74 -libraries into non-free programs.
    8.75 -
    8.76 -  When a program is linked with a library, whether statically or using
    8.77 -a shared library, the combination of the two is legally speaking a
    8.78 -combined work, a derivative of the original library.  The ordinary
    8.79 -General Public License therefore permits such linking only if the
    8.80 -entire combination fits its criteria of freedom.  The Lesser General
    8.81 -Public License permits more lax criteria for linking other code with
    8.82 -the library.
    8.83 -
    8.84 -  We call this license the "Lesser" General Public License because it
    8.85 -does Less to protect the user's freedom than the ordinary General
    8.86 -Public License.  It also provides other free software developers Less
    8.87 -of an advantage over competing non-free programs.  These disadvantages
    8.88 -are the reason we use the ordinary General Public License for many
    8.89 -libraries.  However, the Lesser license provides advantages in certain
    8.90 -special circumstances.
    8.91 -
    8.92 -  For example, on rare occasions, there may be a special need to
    8.93 -encourage the widest possible use of a certain library, so that it becomes
    8.94 -a de-facto standard.  To achieve this, non-free programs must be
    8.95 -allowed to use the library.  A more frequent case is that a free
    8.96 -library does the same job as widely used non-free libraries.  In this
    8.97 -case, there is little to gain by limiting the free library to free
    8.98 -software only, so we use the Lesser General Public License.
    8.99 -
   8.100 -  In other cases, permission to use a particular library in non-free
   8.101 -programs enables a greater number of people to use a large body of
   8.102 -free software.  For example, permission to use the GNU C Library in
   8.103 -non-free programs enables many more people to use the whole GNU
   8.104 -operating system, as well as its variant, the GNU/Linux operating
   8.105 -system.
   8.106 -
   8.107 -  Although the Lesser General Public License is Less protective of the
   8.108 -users' freedom, it does ensure that the user of a program that is
   8.109 -linked with the Library has the freedom and the wherewithal to run
   8.110 -that program using a modified version of the Library.
   8.111 -
   8.112 -  The precise terms and conditions for copying, distribution and
   8.113 -modification follow.  Pay close attention to the difference between a
   8.114 -"work based on the library" and a "work that uses the library".  The
   8.115 -former contains code derived from the library, whereas the latter must
   8.116 -be combined with the library in order to run.
   8.117 -
   8.118 -		  GNU LESSER GENERAL PUBLIC LICENSE
   8.119 -   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
   8.120 -
   8.121 -  0. This License Agreement applies to any software library or other
   8.122 -program which contains a notice placed by the copyright holder or
   8.123 -other authorized party saying it may be distributed under the terms of
   8.124 -this Lesser General Public License (also called "this License").
   8.125 -Each licensee is addressed as "you".
   8.126 -
   8.127 -  A "library" means a collection of software functions and/or data
   8.128 -prepared so as to be conveniently linked with application programs
   8.129 -(which use some of those functions and data) to form executables.
   8.130 -
   8.131 -  The "Library", below, refers to any such software library or work
   8.132 -which has been distributed under these terms.  A "work based on the
   8.133 -Library" means either the Library or any derivative work under
   8.134 -copyright law: that is to say, a work containing the Library or a
   8.135 -portion of it, either verbatim or with modifications and/or translated
   8.136 -straightforwardly into another language.  (Hereinafter, translation is
   8.137 -included without limitation in the term "modification".)
   8.138 -
   8.139 -  "Source code" for a work means the preferred form of the work for
   8.140 -making modifications to it.  For a library, complete source code means
   8.141 -all the source code for all modules it contains, plus any associated
   8.142 -interface definition files, plus the scripts used to control compilation
   8.143 -and installation of the library.
   8.144 -
   8.145 -  Activities other than copying, distribution and modification are not
   8.146 -covered by this License; they are outside its scope.  The act of
   8.147 -running a program using the Library is not restricted, and output from
   8.148 -such a program is covered only if its contents constitute a work based
   8.149 -on the Library (independent of the use of the Library in a tool for
   8.150 -writing it).  Whether that is true depends on what the Library does
   8.151 -and what the program that uses the Library does.
   8.152 -  
   8.153 -  1. You may copy and distribute verbatim copies of the Library's
   8.154 -complete source code as you receive it, in any medium, provided that
   8.155 -you conspicuously and appropriately publish on each copy an
   8.156 -appropriate copyright notice and disclaimer of warranty; keep intact
   8.157 -all the notices that refer to this License and to the absence of any
   8.158 -warranty; and distribute a copy of this License along with the
   8.159 -Library.
   8.160 -
   8.161 -  You may charge a fee for the physical act of transferring a copy,
   8.162 -and you may at your option offer warranty protection in exchange for a
   8.163 -fee.
   8.164 -
   8.165 -  2. You may modify your copy or copies of the Library or any portion
   8.166 -of it, thus forming a work based on the Library, and copy and
   8.167 -distribute such modifications or work under the terms of Section 1
   8.168 -above, provided that you also meet all of these conditions:
   8.169 -
   8.170 -    a) The modified work must itself be a software library.
   8.171 -
   8.172 -    b) You must cause the files modified to carry prominent notices
   8.173 -    stating that you changed the files and the date of any change.
   8.174 -
   8.175 -    c) You must cause the whole of the work to be licensed at no
   8.176 -    charge to all third parties under the terms of this License.
   8.177 -
   8.178 -    d) If a facility in the modified Library refers to a function or a
   8.179 -    table of data to be supplied by an application program that uses
   8.180 -    the facility, other than as an argument passed when the facility
   8.181 -    is invoked, then you must make a good faith effort to ensure that,
   8.182 -    in the event an application does not supply such function or
   8.183 -    table, the facility still operates, and performs whatever part of
   8.184 -    its purpose remains meaningful.
   8.185 -
   8.186 -    (For example, a function in a library to compute square roots has
   8.187 -    a purpose that is entirely well-defined independent of the
   8.188 -    application.  Therefore, Subsection 2d requires that any
   8.189 -    application-supplied function or table used by this function must
   8.190 -    be optional: if the application does not supply it, the square
   8.191 -    root function must still compute square roots.)
   8.192 -
   8.193 -These requirements apply to the modified work as a whole.  If
   8.194 -identifiable sections of that work are not derived from the Library,
   8.195 -and can be reasonably considered independent and separate works in
   8.196 -themselves, then this License, and its terms, do not apply to those
   8.197 -sections when you distribute them as separate works.  But when you
   8.198 -distribute the same sections as part of a whole which is a work based
   8.199 -on the Library, the distribution of the whole must be on the terms of
   8.200 -this License, whose permissions for other licensees extend to the
   8.201 -entire whole, and thus to each and every part regardless of who wrote
   8.202 -it.
   8.203 -
   8.204 -Thus, it is not the intent of this section to claim rights or contest
   8.205 -your rights to work written entirely by you; rather, the intent is to
   8.206 -exercise the right to control the distribution of derivative or
   8.207 -collective works based on the Library.
   8.208 -
   8.209 -In addition, mere aggregation of another work not based on the Library
   8.210 -with the Library (or with a work based on the Library) on a volume of
   8.211 -a storage or distribution medium does not bring the other work under
   8.212 -the scope of this License.
   8.213 -
   8.214 -  3. You may opt to apply the terms of the ordinary GNU General Public
   8.215 -License instead of this License to a given copy of the Library.  To do
   8.216 -this, you must alter all the notices that refer to this License, so
   8.217 -that they refer to the ordinary GNU General Public License, version 2,
   8.218 -instead of to this License.  (If a newer version than version 2 of the
   8.219 -ordinary GNU General Public License has appeared, then you can specify
   8.220 -that version instead if you wish.)  Do not make any other change in
   8.221 -these notices.
   8.222 -
   8.223 -  Once this change is made in a given copy, it is irreversible for
   8.224 -that copy, so the ordinary GNU General Public License applies to all
   8.225 -subsequent copies and derivative works made from that copy.
   8.226 -
   8.227 -  This option is useful when you wish to copy part of the code of
   8.228 -the Library into a program that is not a library.
   8.229 -
   8.230 -  4. You may copy and distribute the Library (or a portion or
   8.231 -derivative of it, under Section 2) in object code or executable form
   8.232 -under the terms of Sections 1 and 2 above provided that you accompany
   8.233 -it with the complete corresponding machine-readable source code, which
   8.234 -must be distributed under the terms of Sections 1 and 2 above on a
   8.235 -medium customarily used for software interchange.
   8.236 -
   8.237 -  If distribution of object code is made by offering access to copy
   8.238 -from a designated place, then offering equivalent access to copy the
   8.239 -source code from the same place satisfies the requirement to
   8.240 -distribute the source code, even though third parties are not
   8.241 -compelled to copy the source along with the object code.
   8.242 -
   8.243 -  5. A program that contains no derivative of any portion of the
   8.244 -Library, but is designed to work with the Library by being compiled or
   8.245 -linked with it, is called a "work that uses the Library".  Such a
   8.246 -work, in isolation, is not a derivative work of the Library, and
   8.247 -therefore falls outside the scope of this License.
   8.248 -
   8.249 -  However, linking a "work that uses the Library" with the Library
   8.250 -creates an executable that is a derivative of the Library (because it
   8.251 -contains portions of the Library), rather than a "work that uses the
   8.252 -library".  The executable is therefore covered by this License.
   8.253 -Section 6 states terms for distribution of such executables.
   8.254 -
   8.255 -  When a "work that uses the Library" uses material from a header file
   8.256 -that is part of the Library, the object code for the work may be a
   8.257 -derivative work of the Library even though the source code is not.
   8.258 -Whether this is true is especially significant if the work can be
   8.259 -linked without the Library, or if the work is itself a library.  The
   8.260 -threshold for this to be true is not precisely defined by law.
   8.261 -
   8.262 -  If such an object file uses only numerical parameters, data
   8.263 -structure layouts and accessors, and small macros and small inline
   8.264 -functions (ten lines or less in length), then the use of the object
   8.265 -file is unrestricted, regardless of whether it is legally a derivative
   8.266 -work.  (Executables containing this object code plus portions of the
   8.267 -Library will still fall under Section 6.)
   8.268 -
   8.269 -  Otherwise, if the work is a derivative of the Library, you may
   8.270 -distribute the object code for the work under the terms of Section 6.
   8.271 -Any executables containing that work also fall under Section 6,
   8.272 -whether or not they are linked directly with the Library itself.
   8.273 -
   8.274 -  6. As an exception to the Sections above, you may also combine or
   8.275 -link a "work that uses the Library" with the Library to produce a
   8.276 -work containing portions of the Library, and distribute that work
   8.277 -under terms of your choice, provided that the terms permit
   8.278 -modification of the work for the customer's own use and reverse
   8.279 -engineering for debugging such modifications.
   8.280 -
   8.281 -  You must give prominent notice with each copy of the work that the
   8.282 -Library is used in it and that the Library and its use are covered by
   8.283 -this License.  You must supply a copy of this License.  If the work
   8.284 -during execution displays copyright notices, you must include the
   8.285 -copyright notice for the Library among them, as well as a reference
   8.286 -directing the user to the copy of this License.  Also, you must do one
   8.287 -of these things:
   8.288 -
   8.289 -    a) Accompany the work with the complete corresponding
   8.290 -    machine-readable source code for the Library including whatever
   8.291 -    changes were used in the work (which must be distributed under
   8.292 -    Sections 1 and 2 above); and, if the work is an executable linked
   8.293 -    with the Library, with the complete machine-readable "work that
   8.294 -    uses the Library", as object code and/or source code, so that the
   8.295 -    user can modify the Library and then relink to produce a modified
   8.296 -    executable containing the modified Library.  (It is understood
   8.297 -    that the user who changes the contents of definitions files in the
   8.298 -    Library will not necessarily be able to recompile the application
   8.299 -    to use the modified definitions.)
   8.300 -
   8.301 -    b) Use a suitable shared library mechanism for linking with the
   8.302 -    Library.  A suitable mechanism is one that (1) uses at run time a
   8.303 -    copy of the library already present on the user's computer system,
   8.304 -    rather than copying library functions into the executable, and (2)
   8.305 -    will operate properly with a modified version of the library, if
   8.306 -    the user installs one, as long as the modified version is
   8.307 -    interface-compatible with the version that the work was made with.
   8.308 -
   8.309 -    c) Accompany the work with a written offer, valid for at
   8.310 -    least three years, to give the same user the materials
   8.311 -    specified in Subsection 6a, above, for a charge no more
   8.312 -    than the cost of performing this distribution.
   8.313 -
   8.314 -    d) If distribution of the work is made by offering access to copy
   8.315 -    from a designated place, offer equivalent access to copy the above
   8.316 -    specified materials from the same place.
   8.317 -
   8.318 -    e) Verify that the user has already received a copy of these
   8.319 -    materials or that you have already sent this user a copy.
   8.320 -
   8.321 -  For an executable, the required form of the "work that uses the
   8.322 -Library" must include any data and utility programs needed for
   8.323 -reproducing the executable from it.  However, as a special exception,
   8.324 -the materials to be distributed need not include anything that is
   8.325 -normally distributed (in either source or binary form) with the major
   8.326 -components (compiler, kernel, and so on) of the operating system on
   8.327 -which the executable runs, unless that component itself accompanies
   8.328 -the executable.
   8.329 -
   8.330 -  It may happen that this requirement contradicts the license
   8.331 -restrictions of other proprietary libraries that do not normally
   8.332 -accompany the operating system.  Such a contradiction means you cannot
   8.333 -use both them and the Library together in an executable that you
   8.334 -distribute.
   8.335 -
   8.336 -  7. You may place library facilities that are a work based on the
   8.337 -Library side-by-side in a single library together with other library
   8.338 -facilities not covered by this License, and distribute such a combined
   8.339 -library, provided that the separate distribution of the work based on
   8.340 -the Library and of the other library facilities is otherwise
   8.341 -permitted, and provided that you do these two things:
   8.342 -
   8.343 -    a) Accompany the combined library with a copy of the same work
   8.344 -    based on the Library, uncombined with any other library
   8.345 -    facilities.  This must be distributed under the terms of the
   8.346 -    Sections above.
   8.347 -
   8.348 -    b) Give prominent notice with the combined library of the fact
   8.349 -    that part of it is a work based on the Library, and explaining
   8.350 -    where to find the accompanying uncombined form of the same work.
   8.351 -
   8.352 -  8. You may not copy, modify, sublicense, link with, or distribute
   8.353 -the Library except as expressly provided under this License.  Any
   8.354 -attempt otherwise to copy, modify, sublicense, link with, or
   8.355 -distribute the Library is void, and will automatically terminate your
   8.356 -rights under this License.  However, parties who have received copies,
   8.357 -or rights, from you under this License will not have their licenses
   8.358 -terminated so long as such parties remain in full compliance.
   8.359 -
   8.360 -  9. You are not required to accept this License, since you have not
   8.361 -signed it.  However, nothing else grants you permission to modify or
   8.362 -distribute the Library or its derivative works.  These actions are
   8.363 -prohibited by law if you do not accept this License.  Therefore, by
   8.364 -modifying or distributing the Library (or any work based on the
   8.365 -Library), you indicate your acceptance of this License to do so, and
   8.366 -all its terms and conditions for copying, distributing or modifying
   8.367 -the Library or works based on it.
   8.368 -
   8.369 -  10. Each time you redistribute the Library (or any work based on the
   8.370 -Library), the recipient automatically receives a license from the
   8.371 -original licensor to copy, distribute, link with or modify the Library
   8.372 -subject to these terms and conditions.  You may not impose any further
   8.373 -restrictions on the recipients' exercise of the rights granted herein.
   8.374 -You are not responsible for enforcing compliance by third parties with
   8.375 -this License.
   8.376 -
   8.377 -  11. If, as a consequence of a court judgment or allegation of patent
   8.378 -infringement or for any other reason (not limited to patent issues),
   8.379 -conditions are imposed on you (whether by court order, agreement or
   8.380 -otherwise) that contradict the conditions of this License, they do not
   8.381 -excuse you from the conditions of this License.  If you cannot
   8.382 -distribute so as to satisfy simultaneously your obligations under this
   8.383 -License and any other pertinent obligations, then as a consequence you
   8.384 -may not distribute the Library at all.  For example, if a patent
   8.385 -license would not permit royalty-free redistribution of the Library by
   8.386 -all those who receive copies directly or indirectly through you, then
   8.387 -the only way you could satisfy both it and this License would be to
   8.388 -refrain entirely from distribution of the Library.
   8.389 -
   8.390 -If any portion of this section is held invalid or unenforceable under any
   8.391 -particular circumstance, the balance of the section is intended to apply,
   8.392 -and the section as a whole is intended to apply in other circumstances.
   8.393 -
   8.394 -It is not the purpose of this section to induce you to infringe any
   8.395 -patents or other property right claims or to contest validity of any
   8.396 -such claims; this section has the sole purpose of protecting the
   8.397 -integrity of the free software distribution system which is
   8.398 -implemented by public license practices.  Many people have made
   8.399 -generous contributions to the wide range of software distributed
   8.400 -through that system in reliance on consistent application of that
   8.401 -system; it is up to the author/donor to decide if he or she is willing
   8.402 -to distribute software through any other system and a licensee cannot
   8.403 -impose that choice.
   8.404 -
   8.405 -This section is intended to make thoroughly clear what is believed to
   8.406 -be a consequence of the rest of this License.
   8.407 -
   8.408 -  12. If the distribution and/or use of the Library is restricted in
   8.409 -certain countries either by patents or by copyrighted interfaces, the
   8.410 -original copyright holder who places the Library under this License may add
   8.411 -an explicit geographical distribution limitation excluding those countries,
   8.412 -so that distribution is permitted only in or among countries not thus
   8.413 -excluded.  In such case, this License incorporates the limitation as if
   8.414 -written in the body of this License.
   8.415 -
   8.416 -  13. The Free Software Foundation may publish revised and/or new
   8.417 -versions of the Lesser General Public License from time to time.
   8.418 -Such new versions will be similar in spirit to the present version,
   8.419 -but may differ in detail to address new problems or concerns.
   8.420 -
   8.421 -Each version is given a distinguishing version number.  If the Library
   8.422 -specifies a version number of this License which applies to it and
   8.423 -"any later version", you have the option of following the terms and
   8.424 -conditions either of that version or of any later version published by
   8.425 -the Free Software Foundation.  If the Library does not specify a
   8.426 -license version number, you may choose any version ever published by
   8.427 -the Free Software Foundation.
   8.428 -
   8.429 -  14. If you wish to incorporate parts of the Library into other free
   8.430 -programs whose distribution conditions are incompatible with these,
   8.431 -write to the author to ask for permission.  For software which is
   8.432 -copyrighted by the Free Software Foundation, write to the Free
   8.433 -Software Foundation; we sometimes make exceptions for this.  Our
   8.434 -decision will be guided by the two goals of preserving the free status
   8.435 -of all derivatives of our free software and of promoting the sharing
   8.436 -and reuse of software generally.
   8.437 -
   8.438 -			    NO WARRANTY
   8.439 -
   8.440 -  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
   8.441 -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
   8.442 -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
   8.443 -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
   8.444 -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
   8.445 -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   8.446 -PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
   8.447 -LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
   8.448 -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
   8.449 -
   8.450 -  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
   8.451 -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
   8.452 -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
   8.453 -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
   8.454 -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
   8.455 -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
   8.456 -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
   8.457 -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
   8.458 -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
   8.459 -DAMAGES.
   8.460 -
   8.461 -		     END OF TERMS AND CONDITIONS
   8.462 -
   8.463 -           How to Apply These Terms to Your New Libraries
   8.464 -
   8.465 -  If you develop a new library, and you want it to be of the greatest
   8.466 -possible use to the public, we recommend making it free software that
   8.467 -everyone can redistribute and change.  You can do so by permitting
   8.468 -redistribution under these terms (or, alternatively, under the terms of the
   8.469 -ordinary General Public License).
   8.470 -
   8.471 -  To apply these terms, attach the following notices to the library.  It is
   8.472 -safest to attach them to the start of each source file to most effectively
   8.473 -convey the exclusion of warranty; and each file should have at least the
   8.474 -"copyright" line and a pointer to where the full notice is found.
   8.475 -
   8.476 -    <one line to give the library's name and a brief idea of what it does.>
   8.477 -    Copyright (C) <year>  <name of author>
   8.478 -
   8.479 -    This library is free software; you can redistribute it and/or
   8.480 -    modify it under the terms of the GNU Lesser General Public
   8.481 -    License as published by the Free Software Foundation; either
   8.482 -    version 2.1 of the License, or (at your option) any later version.
   8.483 -
   8.484 -    This library is distributed in the hope that it will be useful,
   8.485 -    but WITHOUT ANY WARRANTY; without even the implied warranty of
   8.486 -    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   8.487 -    Lesser General Public License for more details.
   8.488 -
   8.489 -    You should have received a copy of the GNU Lesser General Public
   8.490 -    License along with this library; if not, write to the Free Software
   8.491 -    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
   8.492 -
   8.493 -Also add information on how to contact you by electronic and paper mail.
   8.494 -
   8.495 -You should also get your employer (if you work as a programmer) or your
   8.496 -school, if any, to sign a "copyright disclaimer" for the library, if
   8.497 -necessary.  Here is a sample; alter the names:
   8.498 -
   8.499 -  Yoyodyne, Inc., hereby disclaims all copyright interest in the
   8.500 -  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
   8.501 -
   8.502 -  <signature of Ty Coon>, 1 April 1990
   8.503 -  Ty Coon, President of Vice
   8.504 -
   8.505 -That's all there is to it!
   8.506 -
   8.507 -
     9.1 --- a/gmyth-upnp/m4/ChangeLog	Fri Feb 01 19:22:17 2008 +0000
     9.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.3 @@ -1,24 +0,0 @@
     9.4 -2006-08-17 Rosfran Borges <rosfran.borges@indt.org.br>
     9.5 -	* Added the correct gstreamer-base package (GSTBASE) at the configure.ac; 
     9.6 -	GSTBASE_CFLAGS and GSTBASE_LIBS variables had the same values from
     9.7 -	the GST_CFLAGS/GST_LIBS.
     9.8 -
     9.9 -2006-08-16 Rosfran Borges <rosfran.borges@indt.org.br>
    9.10 -	* Fixed some installation issues, regarding lib-installing to the
    9.11 -	correct directory, and copying the header files to the destination
    9.12 -	dir (make install).
    9.13 -	* Put 'pkg-config' resource to the Maemo Myth library. The name of the
    9.14 -	PKG-CONFIG resource is 'maemo-myth', plus the minor and major version.
    9.15 -	Actually, the version is '0.1', so the library config file is:  
    9.16 -	'maemo-myth-0.1.pc'. You can type: 'pkg-config --cflags --libs 
    9.17 -	maemo-myth-0.1'.
    9.18 -	* Many adjustments in the automake/autoconf configuration files
    9.19 -	(configure.ac, Makefile.am) - some autotools misusage fixed.
    9.20 -	* Added the MythURI structure, and the URI parsing utility functions
    9.21 -	(missing in the GLib).
    9.22 -	* Some functions were exported (myth_socket, mmyth_context), that's 
    9.23 -	why many ther modules need to use them.
    9.24 -	* Fixed some library dependencies.
    9.25 -	* Prepared to be used inside the GStreamer (linking with the MythTV
    9.26 -	plug-in).
    9.27 -
    10.1 --- a/gmyth-upnp/m4/INSTALL	Fri Feb 01 19:22:17 2008 +0000
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,236 +0,0 @@
    10.4 -Installation Instructions
    10.5 -*************************
    10.6 -
    10.7 -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
    10.8 -Software Foundation, Inc.
    10.9 -
   10.10 -This file is free documentation; the Free Software Foundation gives
   10.11 -unlimited permission to copy, distribute and modify it.
   10.12 -
   10.13 -Basic Installation
   10.14 -==================
   10.15 -
   10.16 -These are generic installation instructions.
   10.17 -
   10.18 -   The `configure' shell script attempts to guess correct values for
   10.19 -various system-dependent variables used during compilation.  It uses
   10.20 -those values to create a `Makefile' in each directory of the package.
   10.21 -It may also create one or more `.h' files containing system-dependent
   10.22 -definitions.  Finally, it creates a shell script `config.status' that
   10.23 -you can run in the future to recreate the current configuration, and a
   10.24 -file `config.log' containing compiler output (useful mainly for
   10.25 -debugging `configure').
   10.26 -
   10.27 -   It can also use an optional file (typically called `config.cache'
   10.28 -and enabled with `--cache-file=config.cache' or simply `-C') that saves
   10.29 -the results of its tests to speed up reconfiguring.  (Caching is
   10.30 -disabled by default to prevent problems with accidental use of stale
   10.31 -cache files.)
   10.32 -
   10.33 -   If you need to do unusual things to compile the package, please try
   10.34 -to figure out how `configure' could check whether to do them, and mail
   10.35 -diffs or instructions to the address given in the `README' so they can
   10.36 -be considered for the next release.  If you are using the cache, and at
   10.37 -some point `config.cache' contains results you don't want to keep, you
   10.38 -may remove or edit it.
   10.39 -
   10.40 -   The file `configure.ac' (or `configure.in') is used to create
   10.41 -`configure' by a program called `autoconf'.  You only need
   10.42 -`configure.ac' if you want to change it or regenerate `configure' using
   10.43 -a newer version of `autoconf'.
   10.44 -
   10.45 -The simplest way to compile this package is:
   10.46 -
   10.47 -  1. `cd' to the directory containing the package's source code and type
   10.48 -     `./configure' to configure the package for your system.  If you're
   10.49 -     using `csh' on an old version of System V, you might need to type
   10.50 -     `sh ./configure' instead to prevent `csh' from trying to execute
   10.51 -     `configure' itself.
   10.52 -
   10.53 -     Running `configure' takes awhile.  While running, it prints some
   10.54 -     messages telling which features it is checking for.
   10.55 -
   10.56 -  2. Type `make' to compile the package.
   10.57 -
   10.58 -  3. Optionally, type `make check' to run any self-tests that come with
   10.59 -     the package.
   10.60 -
   10.61 -  4. Type `make install' to install the programs and any data files and
   10.62 -     documentation.
   10.63 -
   10.64 -  5. You can remove the program binaries and object files from the
   10.65 -     source code directory by typing `make clean'.  To also remove the
   10.66 -     files that `configure' created (so you can compile the package for
   10.67 -     a different kind of computer), type `make distclean'.  There is
   10.68 -     also a `make maintainer-clean' target, but that is intended mainly
   10.69 -     for the package's developers.  If you use it, you may have to get
   10.70 -     all sorts of other programs in order to regenerate files that came
   10.71 -     with the distribution.
   10.72 -
   10.73 -Compilers and Options
   10.74 -=====================
   10.75 -
   10.76 -Some systems require unusual options for compilation or linking that the
   10.77 -`configure' script does not know about.  Run `./configure --help' for
   10.78 -details on some of the pertinent environment variables.
   10.79 -
   10.80 -   You can give `configure' initial values for configuration parameters
   10.81 -by setting variables in the command line or in the environment.  Here
   10.82 -is an example:
   10.83 -
   10.84 -     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
   10.85 -
   10.86 -   *Note Defining Variables::, for more details.
   10.87 -
   10.88 -Compiling For Multiple Architectures
   10.89 -====================================
   10.90 -
   10.91 -You can compile the package for more than one kind of computer at the
   10.92 -same time, by placing the object files for each architecture in their
   10.93 -own directory.  To do this, you must use a version of `make' that
   10.94 -supports the `VPATH' variable, such as GNU `make'.  `cd' to the
   10.95 -directory where you want the object files and executables to go and run
   10.96 -the `configure' script.  `configure' automatically checks for the
   10.97 -source code in the directory that `configure' is in and in `..'.
   10.98 -
   10.99 -   If you have to use a `make' that does not support the `VPATH'
  10.100 -variable, you have to compile the package for one architecture at a
  10.101 -time in the source code directory.  After you have installed the
  10.102 -package for one architecture, use `make distclean' before reconfiguring
  10.103 -for another architecture.
  10.104 -
  10.105 -Installation Names
  10.106 -==================
  10.107 -
  10.108 -By default, `make install' installs the package's commands under
  10.109 -`/usr/local/bin', include files under `/usr/local/include', etc.  You
  10.110 -can specify an installation prefix other than `/usr/local' by giving
  10.111 -`configure' the option `--prefix=PREFIX'.
  10.112 -
  10.113 -   You can specify separate installation prefixes for
  10.114 -architecture-specific files and architecture-independent files.  If you
  10.115 -pass the option `--exec-prefix=PREFIX' to `configure', the package uses
  10.116 -PREFIX as the prefix for installing programs and libraries.
  10.117 -Documentation and other data files still use the regular prefix.
  10.118 -
  10.119 -   In addition, if you use an unusual directory layout you can give
  10.120 -options like `--bindir=DIR' to specify different values for particular
  10.121 -kinds of files.  Run `configure --help' for a list of the directories
  10.122 -you can set and what kinds of files go in them.
  10.123 -
  10.124 -   If the package supports it, you can cause programs to be installed
  10.125 -with an extra prefix or suffix on their names by giving `configure' the
  10.126 -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
  10.127 -
  10.128 -Optional Features
  10.129 -=================
  10.130 -
  10.131 -Some packages pay attention to `--enable-FEATURE' options to
  10.132 -`configure', where FEATURE indicates an optional part of the package.
  10.133 -They may also pay attention to `--with-PACKAGE' options, where PACKAGE
  10.134 -is something like `gnu-as' or `x' (for the X Window System).  The
  10.135 -`README' should mention any `--enable-' and `--with-' options that the
  10.136 -package recognizes.
  10.137 -
  10.138 -   For packages that use the X Window System, `configure' can usually
  10.139 -find the X include and library files automatically, but if it doesn't,
  10.140 -you can use the `configure' options `--x-includes=DIR' and
  10.141 -`--x-libraries=DIR' to specify their locations.
  10.142 -
  10.143 -Specifying the System Type
  10.144 -==========================
  10.145 -
  10.146 -There may be some features `configure' cannot figure out automatically,
  10.147 -but needs to determine by the type of machine the package will run on.
  10.148 -Usually, assuming the package is built to be run on the _same_
  10.149 -architectures, `configure' can figure that out, but if it prints a
  10.150 -message saying it cannot guess the machine type, give it the
  10.151 -`--build=TYPE' option.  TYPE can either be a short name for the system
  10.152 -type, such as `sun4', or a canonical name which has the form:
  10.153 -
  10.154 -     CPU-COMPANY-SYSTEM
  10.155 -
  10.156 -where SYSTEM can have one of these forms:
  10.157 -
  10.158 -     OS KERNEL-OS
  10.159 -
  10.160 -   See the file `config.sub' for the possible values of each field.  If
  10.161 -`config.sub' isn't included in this package, then this package doesn't
  10.162 -need to know the machine type.
  10.163 -
  10.164 -   If you are _building_ compiler tools for cross-compiling, you should
  10.165 -use the option `--target=TYPE' to select the type of system they will
  10.166 -produce code for.
  10.167 -
  10.168 -   If you want to _use_ a cross compiler, that generates code for a
  10.169 -platform different from the build platform, you should specify the
  10.170 -"host" platform (i.e., that on which the generated programs will
  10.171 -eventually be run) with `--host=TYPE'.
  10.172 -
  10.173 -Sharing Defaults
  10.174 -================
  10.175 -
  10.176 -If you want to set default values for `configure' scripts to share, you
  10.177 -can create a site shell script called `config.site' that gives default
  10.178 -values for variables like `CC', `cache_file', and `prefix'.
  10.179 -`configure' looks for `PREFIX/share/config.site' if it exists, then
  10.180 -`PREFIX/etc/config.site' if it exists.  Or, you can set the
  10.181 -`CONFIG_SITE' environment variable to the location of the site script.
  10.182 -A warning: not all `configure' scripts look for a site script.
  10.183 -
  10.184 -Defining Variables
  10.185 -==================
  10.186 -
  10.187 -Variables not defined in a site shell script can be set in the
  10.188 -environment passed to `configure'.  However, some packages may run
  10.189 -configure again during the build, and the customized values of these
  10.190 -variables may be lost.  In order to avoid this problem, you should set
  10.191 -them in the `configure' command line, using `VAR=value'.  For example:
  10.192 -
  10.193 -     ./configure CC=/usr/local2/bin/gcc
  10.194 -
  10.195 -causes the specified `gcc' to be used as the C compiler (unless it is
  10.196 -overridden in the site shell script).  Here is a another example:
  10.197 -
  10.198 -     /bin/bash ./configure CONFIG_SHELL=/bin/bash
  10.199 -
  10.200 -Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
  10.201 -configuration-related scripts to be executed by `/bin/bash'.
  10.202 -
  10.203 -`configure' Invocation
  10.204 -======================
  10.205 -
  10.206 -`configure' recognizes the following options to control how it operates.
  10.207 -
  10.208 -`--help'
  10.209 -`-h'
  10.210 -     Print a summary of the options to `configure', and exit.
  10.211 -
  10.212 -`--version'
  10.213 -`-V'
  10.214 -     Print the version of Autoconf used to generate the `configure'
  10.215 -     script, and exit.
  10.216 -
  10.217 -`--cache-file=FILE'
  10.218 -     Enable the cache: use and save the results of the tests in FILE,
  10.219 -     traditionally `config.cache'.  FILE defaults to `/dev/null' to
  10.220 -     disable caching.
  10.221 -
  10.222 -`--config-cache'
  10.223 -`-C'
  10.224 -     Alias for `--cache-file=config.cache'.
  10.225 -
  10.226 -`--quiet'
  10.227 -`--silent'
  10.228 -`-q'
  10.229 -     Do not print messages saying which checks are being made.  To
  10.230 -     suppress all normal output, redirect it to `/dev/null' (any error
  10.231 -     messages will still be shown).
  10.232 -
  10.233 -`--srcdir=DIR'
  10.234 -     Look for the package's source code in directory DIR.  Usually
  10.235 -     `configure' can determine that directory automatically.
  10.236 -
  10.237 -`configure' also accepts some other, not widely useful, options.  Run
  10.238 -`configure --help' for more details.
  10.239 -
    11.1 --- a/gmyth-upnp/m4/Makefile.am	Fri Feb 01 19:22:17 2008 +0000
    11.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.3 @@ -1,10 +0,0 @@
    11.4 -SUBDIRS= src pixmaps
    11.5 -
    11.6 -include aminclude.am
    11.7 -
    11.8 -EXTRA_DIST =                            \
    11.9 -        autogen.sh                      \
   11.10 -        AUTHORS                         \
   11.11 -        COPYING                         \
   11.12 -        README
   11.13 -
    12.1 --- a/gmyth-upnp/m4/ac_doxygen.m4	Fri Feb 01 19:22:17 2008 +0000
    12.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.3 @@ -1,312 +0,0 @@
    12.4 -# This file is part of Autoconf.                       -*- Autoconf -*-
    12.5 -
    12.6 -# Copyright (C) 2004 Oren Ben-Kiki
    12.7 -# This file is distributed under the same terms as the Autoconf macro files.
    12.8 -
    12.9 -# Generate automatic documentation using Doxygen. Works in concert with the
   12.10 -# aminclude.m4 file and a compatible doxygen configuration file. Defines the
   12.11 -# following public macros:
   12.12 -#
   12.13 -# DX_???_FEATURE(ON|OFF) - control the default setting fo a Doxygen feature.
   12.14 -# Supported features are 'DOXYGEN' itself, 'DOT' for generating graphics,
   12.15 -# 'HTML' for plain HTML, 'CHM' for compressed HTML help (for MS users), 'CHI'
   12.16 -# for generating a seperate .chi file by the .chm file, and 'MAN', 'RTF',
   12.17 -# 'XML', 'PDF' and 'PS' for the appropriate output formats. The environment
   12.18 -# variable DOXYGEN_PAPER_SIZE may be specified to override the default 'a4wide'
   12.19 -# paper size.
   12.20 -#
   12.21 -# By default, HTML, PDF and PS documentation is generated as this seems to be
   12.22 -# the most popular and portable combination. MAN pages created by Doxygen are
   12.23 -# usually problematic, though by picking an appropriate subset and doing some
   12.24 -# massaging they might be better than nothing. CHM and RTF are specific for MS
   12.25 -# (note that you can't generate both HTML and CHM at the same time). The XML is
   12.26 -# rather useless unless you apply specialized post-processing to it.
   12.27 -#
   12.28 -# The macro mainly controls the default state of the feature. The use can
   12.29 -# override the default by specifying --enable or --disable. The macros ensure
   12.30 -# that contradictory flags are not given (e.g., --enable-doxygen-html and
   12.31 -# --enable-doxygen-chm, --enable-doxygen-anything with --disable-doxygen, etc.)
   12.32 -# Finally, each feature will be automatically disabled (with a warning) if the
   12.33 -# required programs are missing.
   12.34 -#
   12.35 -# Once all the feature defaults have been specified, call DX_INIT_DOXYGEN with
   12.36 -# the following parameters: a one-word name for the project for use as a
   12.37 -# filename base etc., an optional configuration file name (the default is
   12.38 -# 'Doxyfile', the same as Doxygen's default), and an optional output directory
   12.39 -# name (the default is 'doxygen-doc').
   12.40 -
   12.41 -## ----------##
   12.42 -## Defaults. ##
   12.43 -## ----------##
   12.44 -
   12.45 -DX_ENV=""
   12.46 -AC_DEFUN([DX_FEATURE_doc],  ON)
   12.47 -AC_DEFUN([DX_FEATURE_dot],  ON)
   12.48 -AC_DEFUN([DX_FEATURE_man],  OFF)
   12.49 -AC_DEFUN([DX_FEATURE_html], ON)
   12.50 -AC_DEFUN([DX_FEATURE_chm],  OFF)
   12.51 -AC_DEFUN([DX_FEATURE_chi],  OFF)
   12.52 -AC_DEFUN([DX_FEATURE_rtf],  OFF)
   12.53 -AC_DEFUN([DX_FEATURE_xml],  OFF)
   12.54 -AC_DEFUN([DX_FEATURE_pdf],  ON)
   12.55 -AC_DEFUN([DX_FEATURE_ps],   ON)
   12.56 -
   12.57 -## --------------- ##
   12.58 -## Private macros. ##
   12.59 -## --------------- ##
   12.60 -
   12.61 -# DX_ENV_APPEND(VARIABLE, VALUE)
   12.62 -# ------------------------------
   12.63 -# Append VARIABLE="VALUE" to DX_ENV for invoking doxygen.
   12.64 -AC_DEFUN([DX_ENV_APPEND], [AC_SUBST([DX_ENV], ["$DX_ENV $1='$2'"])])
   12.65 -
   12.66 -# DX_DIRNAME_EXPR
   12.67 -# ---------------
   12.68 -# Expand into a shell expression prints the directory part of a path.
   12.69 -AC_DEFUN([DX_DIRNAME_EXPR],
   12.70 -         [[expr ".$1" : '\(\.\)[^/]*$' \| "x$1" : 'x\(.*\)/[^/]*$']])
   12.71 -
   12.72 -# DX_IF_FEATURE(FEATURE, IF-ON, IF-OFF)
   12.73 -# -------------------------------------
   12.74 -# Expands according to the M4 (static) status of the feature.
   12.75 -AC_DEFUN([DX_IF_FEATURE], [ifelse(DX_FEATURE_$1, ON, [$2], [$3])])
   12.76 -
   12.77 -# DX_REQUIRE_PROG(VARIABLE, PROGRAM)
   12.78 -# ----------------------------------
   12.79 -# Require the specified program to be found for the DX_CURRENT_FEATURE to work.
   12.80 -AC_DEFUN([DX_REQUIRE_PROG], [
   12.81 -AC_PATH_TOOL([$1], [$2])
   12.82 -if test "$DX_FLAG_[]DX_CURRENT_FEATURE$$1" = 1; then
   12.83 -    AC_MSG_WARN([$2 not found - will not DX_CURRENT_DESCRIPTION])
   12.84 -    AC_SUBST([DX_FLAG_[]DX_CURRENT_FEATURE], 0)
   12.85 -fi
   12.86 -])
   12.87 -
   12.88 -# DX_TEST_FEATURE(FEATURE)
   12.89 -# ------------------------
   12.90 -# Expand to a shell expression testing whether the feature is active.
   12.91 -AC_DEFUN([DX_TEST_FEATURE], [test "$DX_FLAG_$1" = 1])
   12.92 -
   12.93 -# DX_CHECK_DEPEND(REQUIRED_FEATURE, REQUIRED_STATE)
   12.94 -# -------------------------------------------------
   12.95 -# Verify that a required features has the right state before trying to turn on
   12.96 -# the DX_CURRENT_FEATURE.
   12.97 -AC_DEFUN([DX_CHECK_DEPEND], [
   12.98 -test "$DX_FLAG_$1" = "$2" \
   12.99 -|| AC_MSG_ERROR([doxygen-DX_CURRENT_FEATURE ifelse([$2], 1,
  12.100 -                            requires, contradicts) doxygen-DX_CURRENT_FEATURE])
  12.101 -])
  12.102 -
  12.103 -# DX_CLEAR_DEPEND(FEATURE, REQUIRED_FEATURE, REQUIRED_STATE)
  12.104 -# ----------------------------------------------------------
  12.105 -# Turn off the DX_CURRENT_FEATURE if the required feature is off.
  12.106 -AC_DEFUN([DX_CLEAR_DEPEND], [
  12.107 -test "$DX_FLAG_$1" = "$2" || AC_SUBST([DX_FLAG_[]DX_CURRENT_FEATURE], 0)
  12.108 -])
  12.109 -
  12.110 -# DX_FEATURE_ARG(FEATURE, DESCRIPTION,
  12.111 -#                CHECK_DEPEND, CLEAR_DEPEND,
  12.112 -#                REQUIRE, DO-IF-ON, DO-IF-OFF)
  12.113 -# --------------------------------------------
  12.114 -# Parse the command-line option controlling a feature. CHECK_DEPEND is called
  12.115 -# if the user explicitly turns the feature on (and invokes DX_CHECK_DEPEND),
  12.116 -# otherwise CLEAR_DEPEND is called to turn off the default state if a required
  12.117 -# feature is disabled (using DX_CLEAR_DEPEND). REQUIRE performs additional
  12.118 -# requirement tests (DX_REQUIRE_PROG). Finally, an automake flag is set and
  12.119 -# DO-IF-ON or DO-IF-OFF are called according to the final state of the feature.
  12.120 -AC_DEFUN([DX_ARG_ABLE], [
  12.121 -    AC_DEFUN([DX_CURRENT_FEATURE], [$1])
  12.122 -    AC_DEFUN([DX_CURRENT_DESCRIPTION], [$2])
  12.123 -    AC_ARG_ENABLE(doxygen-$1,
  12.124 -                  [AS_HELP_STRING(DX_IF_FEATURE([$1], [--disable-doxygen-$1],
  12.125 -                                                      [--enable-doxygen-$1]),
  12.126 -                                  DX_IF_FEATURE([$1], [don't $2], [$2]))],
  12.127 -                  [
  12.128 -case "$enableval" in
  12.129 -#(
  12.130 -y|Y|yes|Yes|YES)
  12.131 -    AC_SUBST([DX_FLAG_$1], 1)
  12.132 -    $3
  12.133 -;; #(
  12.134 -n|N|no|No|NO)
  12.135 -    AC_SUBST([DX_FLAG_$1], 0)
  12.136 -;; #(
  12.137 -*)
  12.138 -    AC_MSG_ERROR([invalid value '$enableval' given to doxygen-$1])
  12.139 -;;
  12.140 -esac
  12.141 -], [
  12.142 -AC_SUBST([DX_FLAG_$1], [DX_IF_FEATURE([$1], 1, 0)])
  12.143 -$4
  12.144 -])
  12.145 -if DX_TEST_FEATURE([$1]); then
  12.146 -    $5
  12.147 -    :
  12.148 -fi
  12.149 -if DX_TEST_FEATURE([$1]); then
  12.150 -    AM_CONDITIONAL(DX_COND_$1, :)
  12.151 -    $6
  12.152 -    :
  12.153 -else
  12.154 -    AM_CONDITIONAL(DX_COND_$1, false)
  12.155 -    $7
  12.156 -    :
  12.157 -fi
  12.158 -])
  12.159 -
  12.160 -## -------------- ##
  12.161 -## Public macros. ##
  12.162 -## -------------- ##
  12.163 -
  12.164 -# DX_XXX_FEATURE(DEFAULT_STATE)
  12.165 -# -----------------------------
  12.166 -AC_DEFUN([DX_DOXYGEN_FEATURE], [AC_DEFUN([DX_FEATURE_doc],  [$1])])
  12.167 -AC_DEFUN([DX_MAN_FEATURE],     [AC_DEFUN([DX_FEATURE_man],  [$1])])
  12.168 -AC_DEFUN([DX_HTML_FEATURE],    [AC_DEFUN([DX_FEATURE_html], [$1])])
  12.169 -AC_DEFUN([DX_CHM_FEATURE],     [AC_DEFUN([DX_FEATURE_chm],  [$1])])
  12.170 -AC_DEFUN([DX_CHI_FEATURE],     [AC_DEFUN([DX_FEATURE_chi],  [$1])])
  12.171 -AC_DEFUN([DX_RTF_FEATURE],     [AC_DEFUN([DX_FEATURE_rtf],  [$1])])
  12.172 -AC_DEFUN([DX_XML_FEATURE],     [AC_DEFUN([DX_FEATURE_xml],  [$1])])
  12.173 -AC_DEFUN([DX_XML_FEATURE],     [AC_DEFUN([DX_FEATURE_xml],  [$1])])
  12.174 -AC_DEFUN([DX_PDF_FEATURE],     [AC_DEFUN([DX_FEATURE_pdf],  [$1])])
  12.175 -AC_DEFUN([DX_PS_FEATURE],      [AC_DEFUN([DX_FEATURE_ps],   [$1])])
  12.176 -
  12.177 -# DX_INIT_DOXYGEN(PROJECT, [CONFIG-FILE], [OUTPUT-DOC-DIR])
  12.178 -# ---------------------------------------------------------
  12.179 -# PROJECT also serves as the base name for the documentation files.
  12.180 -# The default CONFIG-FILE is "Doxyfile" and OUTPUT-DOC-DIR is "doxygen-doc".
  12.181 -AC_DEFUN([DX_INIT_DOXYGEN], [
  12.182 -
  12.183 -# Files:
  12.184 -AC_SUBST([DX_PROJECT], [$1])
  12.185 -AC_SUBST([DX_CONFIG], [ifelse([$2], [], Doxyfile, [$2])])
  12.186 -AC_SUBST([DX_DOCDIR], [ifelse([$3], [], doxygen-doc, [$3])])
  12.187 -
  12.188 -# Environment variables used inside doxygen.cfg:
  12.189 -DX_ENV_APPEND(SRCDIR, $srcdir)
  12.190 -DX_ENV_APPEND(PROJECT, $DX_PROJECT)
  12.191 -DX_ENV_APPEND(DOCDIR, $DX_DOCDIR)
  12.192 -DX_ENV_APPEND(VERSION, $PACKAGE_VERSION)
  12.193 -
  12.194 -# Doxygen itself:
  12.195 -DX_ARG_ABLE(doc, [generate any doxygen documentation],
  12.196 -            [],
  12.197 -            [],
  12.198 -            [DX_REQUIRE_PROG([DX_DOXYGEN], doxygen)
  12.199 -             DX_REQUIRE_PROG([DX_PERL], perl)],
  12.200 -            [DX_ENV_APPEND(PERL_PATH, $DX_PERL)])
  12.201 -
  12.202 -# Dot for graphics:
  12.203 -DX_ARG_ABLE(dot, [generate graphics for doxygen documentation],
  12.204 -            [DX_CHECK_DEPEND(doc, 1)],
  12.205 -            [DX_CLEAR_DEPEND(doc, 1)],
  12.206 -            [DX_REQUIRE_PROG([DX_DOT], dot)],
  12.207 -            [DX_ENV_APPEND(HAVE_DOT, YES)
  12.208 -             DX_ENV_APPEND(DOT_PATH, [`DX_DIRNAME_EXPR($DX_DOT)`])],
  12.209 -            [DX_ENV_APPEND(HAVE_DOT, NO)])
  12.210 -
  12.211 -# Man pages generation:
  12.212 -DX_ARG_ABLE(man, [generate doxygen manual pages],
  12.213 -            [DX_CHECK_DEPEND(doc, 1)],
  12.214 -            [DX_CLEAR_DEPEND(doc, 1)],
  12.215 -            [],
  12.216 -            [DX_ENV_APPEND(GENERATE_MAN, YES)],
  12.217 -            [DX_ENV_APPEND(GENERATE_MAN, NO)])
  12.218 -
  12.219 -# RTF file generation:
  12.220 -DX_ARG_ABLE(rtf, [generate doxygen RTF documentation],
  12.221 -            [DX_CHECK_DEPEND(doc, 1)],
  12.222 -            [DX_CLEAR_DEPEND(doc, 1)],
  12.223 -            [],
  12.224 -            [DX_ENV_APPEND(GENERATE_RTF, YES)],
  12.225 -            [DX_ENV_APPEND(GENERATE_RTF, NO)])
  12.226 -
  12.227 -# XML file generation:
  12.228 -DX_ARG_ABLE(xml, [generate doxygen XML documentation],
  12.229 -            [DX_CHECK_DEPEND(doc, 1)],
  12.230 -            [DX_CLEAR_DEPEND(doc, 1)],
  12.231 -            [],
  12.232 -            [DX_ENV_APPEND(GENERATE_XML, YES)],
  12.233 -            [DX_ENV_APPEND(GENERATE_XML, NO)])
  12.234 -
  12.235 -# (Compressed) HTML help generation:
  12.236 -DX_ARG_ABLE(chm, [generate doxygen compressed HTML help documentation],
  12.237 -            [DX_CHECK_DEPEND(doc, 1)],
  12.238 -            [DX_CLEAR_DEPEND(doc, 1)],
  12.239 -            [DX_REQUIRE_PROG([DX_HHC], hhc)],
  12.240 -            [DX_ENV_APPEND(HHC_PATH, $DX_HHC)
  12.241 -             DX_ENV_APPEND(GENERATE_HTML, YES)
  12.242 -             DX_ENV_APPEND(GENERATE_HTMLHELP, YES)],
  12.243 -            [DX_ENV_APPEND(GENERATE_HTMLHELP, NO)])
  12.244 -
  12.245 -# Seperate CHI file generation.
  12.246 -DX_ARG_ABLE(chi, [generate doxygen seperate compressed HTML help index file],
  12.247 -            [DX_CHECK_DEPEND(chm, 1)],
  12.248 -            [DX_CLEAR_DEPEND(chm, 1)],
  12.249 -            [],
  12.250 -            [DX_ENV_APPEND(GENERATE_CHI, YES)],
  12.251 -            [DX_ENV_APPEND(GENERATE_CHI, NO)])
  12.252 -
  12.253 -# Plain HTML pages generation:
  12.254 -DX_ARG_ABLE(html, [generate doxygen plain HTML documentation],
  12.255 -            [DX_CHECK_DEPEND(doc, 1) DX_CHECK_DEPEND(chm, 0)],
  12.256 -            [DX_CLEAR_DEPEND(doc, 1) DX_CLEAR_DEPEND(chm, 0)],
  12.257 -            [],
  12.258 -            [DX_ENV_APPEND(GENERATE_HTML, YES)],
  12.259 -            [DX_TEST_FEATURE(chm) || DX_ENV_APPEND(GENERATE_HTML, NO)])
  12.260 -
  12.261 -# PostScript file generation:
  12.262 -DX_ARG_ABLE(ps, [generate doxygen PostScript documentation],
  12.263 -            [DX_CHECK_DEPEND(doc, 1)],
  12.264 -            [DX_CLEAR_DEPEND(doc, 1)],
  12.265 -            [DX_REQUIRE_PROG([DX_LATEX], latex)
  12.266 -             DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
  12.267 -             DX_REQUIRE_PROG([DX_DVIPS], dvips)
  12.268 -             DX_REQUIRE_PROG([DX_EGREP], egrep)])
  12.269 -
  12.270 -# PDF file generation:
  12.271 -DX_ARG_ABLE(pdf, [generate doxygen PDF documentation],
  12.272 -            [DX_CHECK_DEPEND(doc, 1)],
  12.273 -            [DX_CLEAR_DEPEND(doc, 1)],
  12.274 -            [DX_REQUIRE_PROG([DX_PDFLATEX], pdflatex)
  12.275 -             DX_REQUIRE_PROG([DX_MAKEINDEX], makeindex)
  12.276 -             DX_REQUIRE_PROG([DX_EGREP], egrep)])
  12.277 -
  12.278 -# LaTeX generation for PS and/or PDF:
  12.279 -if DX_TEST_FEATURE(ps) || DX_TEST_FEATURE(pdf); then
  12.280 -    AM_CONDITIONAL(DX_COND_latex, :)
  12.281 -    DX_ENV_APPEND(GENERATE_LATEX, YES)
  12.282 -else
  12.283 -    AM_CONDITIONAL(DX_COND_latex, false)
  12.284 -    DX_ENV_APPEND(GENERATE_LATEX, NO)
  12.285 -fi
  12.286 -
  12.287 -# Paper size for PS and/or PDF:
  12.288 -AC_ARG_VAR(DOXYGEN_PAPER_SIZE,
  12.289 -           [a4wide (default), a4, letter, legal or executive])
  12.290 -case "$DOXYGEN_PAPER_SIZE" in
  12.291 -#(
  12.292 -"")
  12.293 -    AC_SUBST(DOXYGEN_PAPER_SIZE, "")
  12.294 -;; #(
  12.295 -a4wide|a4|letter|legal|executive)
  12.296 -    DX_ENV_APPEND(PAPER_SIZE, $DOXYGEN_PAPER_SIZE)
  12.297 -;; #(
  12.298 -*)
  12.299 -    AC_MSG_ERROR([unknown DOXYGEN_PAPER_SIZE='$DOXYGEN_PAPER_SIZE'])
  12.300 -;;
  12.301 -esac
  12.302 -
  12.303 -#For debugging:
  12.304 -#echo DX_FLAG_doc=$DX_FLAG_doc
  12.305 -#echo DX_FLAG_dot=$DX_FLAG_dot
  12.306 -#echo DX_FLAG_man=$DX_FLAG_man
  12.307 -#echo DX_FLAG_html=$DX_FLAG_html
  12.308 -#echo DX_FLAG_chm=$DX_FLAG_chm
  12.309 -#echo DX_FLAG_chi=$DX_FLAG_chi
  12.310 -#echo DX_FLAG_rtf=$DX_FLAG_rtf
  12.311 -#echo DX_FLAG_xml=$DX_FLAG_xml
  12.312 -#echo DX_FLAG_pdf=$DX_FLAG_pdf
  12.313 -#echo DX_FLAG_ps=$DX_FLAG_ps
  12.314 -#echo DX_ENV=$DX_ENV
  12.315 -])
    13.1 --- a/gmyth-upnp/m4/as-compiler-flag.m4	Fri Feb 01 19:22:17 2008 +0000
    13.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.3 @@ -1,33 +0,0 @@
    13.4 -dnl as-compiler-flag.m4 0.1.0
    13.5 -
    13.6 -dnl autostars m4 macro for detection of compiler flags
    13.7 -
    13.8 -dnl David Schleef <ds@schleef.org>
    13.9 -
   13.10 -dnl $Id: as-compiler-flag.m4,v 1.1.1.1 2005/08/26 00:42:44 andrunko Exp $
   13.11 -
   13.12 -dnl AS_COMPILER_FLAG(CFLAGS, ACTION-IF-ACCEPTED, [ACTION-IF-NOT-ACCEPTED])
   13.13 -dnl Tries to compile with the given CFLAGS.
   13.14 -dnl Runs ACTION-IF-ACCEPTED if the compiler can compile with the flags,
   13.15 -dnl and ACTION-IF-NOT-ACCEPTED otherwise.
   13.16 -
   13.17 -AC_DEFUN([AS_COMPILER_FLAG],
   13.18 -[
   13.19 -  AC_MSG_CHECKING([to see if compiler understands $1])
   13.20 -
   13.21 -  save_CFLAGS="$CFLAGS"
   13.22 -  CFLAGS="$CFLAGS $1"
   13.23 -
   13.24 -  AC_TRY_COMPILE([ ], [], [flag_ok=yes], [flag_ok=no])
   13.25 -  CFLAGS="$save_CFLAGS"
   13.26 -
   13.27 -  if test "X$flag_ok" = Xyes ; then
   13.28 -    $2
   13.29 -    true
   13.30 -  else
   13.31 -    $3
   13.32 -    true
   13.33 -  fi
   13.34 -  AC_MSG_RESULT([$flag_ok])
   13.35 -])
   13.36 -
    14.1 --- a/gmyth-upnp/m4/as-expand.m4	Fri Feb 01 19:22:17 2008 +0000
    14.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.3 @@ -1,40 +0,0 @@
    14.4 -dnl AS_AC_EXPAND(VAR, CONFIGURE_VAR)
    14.5 -dnl
    14.6 -dnl example
    14.7 -dnl AS_AC_EXPAND(SYSCONFDIR, $sysconfdir)
    14.8 -dnl will set SYSCONFDIR to /usr/local/etc if prefix=/usr/local
    14.9 -
   14.10 -AC_DEFUN([AS_AC_EXPAND],
   14.11 -[
   14.12 -  EXP_VAR=[$1]
   14.13 -  FROM_VAR=[$2]
   14.14 -
   14.15 -  dnl first expand prefix and exec_prefix if necessary
   14.16 -  prefix_save=$prefix
   14.17 -  exec_prefix_save=$exec_prefix
   14.18 -
   14.19 -  dnl if no prefix given, then use /usr/local, the default prefix
   14.20 -  if test "x$prefix" = "xNONE"; then
   14.21 -    prefix=$ac_default_prefix
   14.22 -  fi
   14.23 -  dnl if no exec_prefix given, then use prefix
   14.24 -  if test "x$exec_prefix" = "xNONE"; then
   14.25 -    exec_prefix=$prefix
   14.26 -  fi
   14.27 -
   14.28 -  full_var="$FROM_VAR"
   14.29 -  dnl loop until it doesn't change anymore
   14.30 -  while true; do
   14.31 -    new_full_var="`eval echo $full_var`"
   14.32 -    if test "x$new_full_var"="x$full_var"; then break; fi
   14.33 -    full_var=$new_full_var
   14.34 -  done
   14.35 -
   14.36 -  dnl clean up
   14.37 -  full_var=$new_full_var
   14.38 -  AC_SUBST([$1], "$full_var")
   14.39 -
   14.40 -  dnl restore prefix and exec_prefix
   14.41 -  prefix=$prefix_save
   14.42 -  exec_prefix=$exec_prefix_save
   14.43 -])
    15.1 --- a/gmyth-upnp/m4/as-version.m4	Fri Feb 01 19:22:17 2008 +0000
    15.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.3 @@ -1,59 +0,0 @@
    15.4 -dnl version.m4 0.0.5
    15.5 -dnl autostars m4 macro for versioning
    15.6 -dnl thomas@apestaart.org
    15.7 -dnl
    15.8 -dnl AS_VERSION(PACKAGE, PREFIX, MAJOR, MINOR, MICRO, NANO, ACTION_IF_NO_NANO, ACTION_IF_NANO)
    15.9 -dnl example
   15.10 -dnl AS_VERSION(gstreamer, GST_VERSION, 0, 3, 2,)
   15.11 -dnl for a 0.3.2 release version
   15.12 -dnl
   15.13 -dnl this macro
   15.14 -dnl - defines [$PREFIX]_MAJOR, MINOR and MICRO
   15.15 -dnl - if NANO is empty, then we're in release mode, else in cvs/dev mode
   15.16 -dnl - defines [$PREFIX], VERSION, and [$PREFIX]_RELEASE
   15.17 -dnl - executes the relevant action
   15.18 -dnl - AC_SUBST's PACKAGE, VERSION, [$PREFIX] and [$PREFIX]_RELEASE
   15.19 -dnl   as well as the little ones
   15.20 -dnl - doesn't call AM_INIT_AUTOMAKE anymore because it prevents
   15.21 -dnl   maintainer mode from running ok
   15.22 -dnl
   15.23 -dnl don't forget to put #undef [$2] and [$2]_RELEASE in acconfig.h
   15.24 -
   15.25 -AC_DEFUN([AS_VERSION],
   15.26 -[
   15.27 -  PACKAGE=[$1]
   15.28 -  [$2]_MAJOR_VERSION=[$3]
   15.29 -  [$2]_MINOR_VERSION=[$4]
   15.30 -  [$2]_MICRO_VERSION=[$5]
   15.31 -  NANO=[$6]
   15.32 -  [$2]_NANO_VERSION=$NANO
   15.33 -  if test "x$NANO" = "x" || test "x$NANO" = "x0";
   15.34 -  then
   15.35 -      AC_MSG_NOTICE(configuring [$1] for release)
   15.36 -      VERSION=[$3].[$4].[$5]
   15.37 -      [$2]_RELEASE=1
   15.38 -      dnl execute action
   15.39 -      ifelse([$7], , :, [$7])
   15.40 -  else
   15.41 -      AC_MSG_NOTICE(configuring [$1] for development with nano $NANO)
   15.42 -      VERSION=[$3].[$4].[$5].$NANO
   15.43 -      [$2]_RELEASE=`date +%Y%m%d_%H%M%S`
   15.44 -      dnl execute action
   15.45 -      ifelse([$8], , :, [$8])
   15.46 -  fi
   15.47 -
   15.48 -  [$2]_VERSION=$VERSION
   15.49 -  AC_DEFINE_UNQUOTED([$2]_VERSION, "$[$2]_VERSION", [Define the version])
   15.50 -  AC_SUBST([$2]_VERSION)
   15.51 -  
   15.52 -  AC_SUBST([$2]_RELEASE)
   15.53 -
   15.54 -  AC_SUBST([$2]_MAJOR_VERSION)
   15.55 -  AC_SUBST([$2]_MINOR_VERSION)
   15.56 -  AC_SUBST([$2]_MICRO_VERSION)
   15.57 -  AC_SUBST([$2]_NANO_VERSION)
   15.58 -  AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Define the package name])
   15.59 -  AC_SUBST(PACKAGE)
   15.60 -  AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Define the version])
   15.61 -  AC_SUBST(VERSION)
   15.62 -])
    16.1 --- a/gmyth-upnp/m4/configure.ac	Fri Feb 01 19:22:17 2008 +0000
    16.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.3 @@ -1,234 +0,0 @@
    16.4 -#                                               -*- Autoconf -*-
    16.5 -# Process this file with autoconf to produce a configure script.
    16.6 -
    16.7 -AC_PREREQ(2.50)
    16.8 -
    16.9 -AC_INIT([gmyth],[0.1])
   16.10 -
   16.11 -dnl AC_CONFIG_SRCDIR([src/mmyth_main.c])
   16.12 -AC_CONFIG_HEADER(config.h)
   16.13 -
   16.14 -dnl when going to/from release please set the nano (fourth number) right !
   16.15 -dnl releases only do Wall, SVN and prerelease does Werror too
   16.16 -AS_VERSION(gmyth, GMYTH, 0, 1, 0, 3, GMYTH_SVN="no", GMYTH_SVN="yes")
   16.17 -
   16.18 -GMYTH_MAJORMINOR=$GMYTH_MAJOR_VERSION.$GMYTH_MINOR_VERSION
   16.19 -
   16.20 -AC_SUBST(GMYTH_MAJORMINOR)
   16.21 -
   16.22 -dnl AM_MAINTAINER_MODE provides the option to enable maintainer mode
   16.23 -AM_MAINTAINER_MODE
   16.24 -dnl make aclocal work in maintainer mode
   16.25 -AC_SUBST(ACLOCAL_AMFLAGS, "-I m4")
   16.26 -
   16.27 -# Checks for programs.
   16.28 -# check for tools
   16.29 -# Make sure CFLAGS is defined to stop AC_PROC_CC adding -g
   16.30 -CFLAGS="$CFLAGS -Wall"
   16.31 -AC_PROG_CC
   16.32 -AC_PROG_LIBTOOL
   16.33 -
   16.34 -dnl Generate doxygen documentation
   16.35 -DX_HTML_FEATURE(ON)
   16.36 -DX_CHM_FEATURE(OFF)
   16.37 -DX_CHI_FEATURE(OFF)
   16.38 -DX_MAN_FEATURE(OFF)
   16.39 -DX_RTF_FEATURE(OFF)
   16.40 -DX_XML_FEATURE(OFF)
   16.41 -DX_PDF_FEATURE(OFF)
   16.42 -DX_PS_FEATURE(OFF)
   16.43 -DX_INIT_DOXYGEN(gmyth, doxygen.cfg, docs)
   16.44 -
   16.45 -
   16.46 -# Checks for libraries.
   16.47 -
   16.48 -# Checks for header files.
   16.49 -AC_HEADER_STDC
   16.50 -AC_CHECK_HEADERS([fcntl.h stdint.h stdlib.h string.h sys/ioctl.h sys/socket.h unistd.h])
   16.51 -
   16.52 -# Checks for typedefs, structures, and compiler characteristics.
   16.53 -AC_C_CONST
   16.54 -AC_TYPE_PID_T
   16.55 -AC_STRUCT_TM
   16.56 -
   16.57 -# Checks for library functions.
   16.58 -AC_FUNC_FORK
   16.59 -AC_PROG_GCC_TRADITIONAL
   16.60 -AC_FUNC_MALLOC
   16.61 -AC_FUNC_MKTIME
   16.62 -AC_FUNC_VPRINTF
   16.63 -AC_CHECK_FUNCS([memset socket stime strstr strtoul])
   16.64 -
   16.65 -AM_INIT_AUTOMAKE($PACKAGE, $VERSION)
   16.66 -
   16.67 -# Checks required packages
   16.68 -
   16.69 -dnl Test if --disable-debug given
   16.70 -AC_ARG_ENABLE(debug,
   16.71 -	[AC_HELP_STRING([--disable-debug], [disable debugging mode])],
   16.72 -	enable_debug="$enableval",
   16.73 -	enable_debug=yes)
   16.74 -
   16.75 -if test "x$enable_debug" = "xyes" ; then
   16.76 -      CFLAGS="$CFLAGS -g"
   16.77 -else
   16.78 -      AC_DEFINE( NDEBUG, 1, [disable debug messages] )
   16.79 -      CFLAGS="$CFLAGS -O2 -DG_DISABLE_CHECKS -DNDEBUG"
   16.80 -fi          
   16.81 -
   16.82 -AM_CONDITIONAL( NDEBUG, test "x$enable_debug" = "xyes" )
   16.83 -
   16.84 -# Check for pkgconfig
   16.85 -AC_CHECK_PROG(HAVE_PKGCONFIG, pkg-config, yes, no)
   16.86 -# Give error and exit if we don't have pkgconfig
   16.87 -if test "x$HAVE_PKGCONFIG" = "xno"; then
   16.88 -  AC_MSG_ERROR(you need to have pkgconfig installed !)
   16.89 -fi
   16.90 -
   16.91 -# Check for Glib2.0
   16.92 -PKG_CHECK_MODULES(GLIB, glib-2.0, HAVE_GLIB=yes,HAVE_GLIB=no)
   16.93 -
   16.94 -# Give error and exit if we don't have glib
   16.95 -if test "x$HAVE_GLIB" = "xno"; then
   16.96 -  AC_MSG_ERROR(you need glib-2.0 installed)
   16.97 -fi
   16.98 -
   16.99 -# make GLIB_CFLAGS and GLIB_LIBS available
  16.100 -AC_SUBST(GLIB_CFLAGS)
  16.101 -AC_SUBST(GLIB_LIBS)
  16.102 -
  16.103 -# Check for GObject2.0
  16.104 -PKG_CHECK_MODULES(GOBJECT,
  16.105 -  gobject-2.0,
  16.106 -  HAVE_GOBJECT=yes, HAVE_GOBJECT=no)
  16.107 -
  16.108 -# Give error and exit if we don't have gobject
  16.109 -if test "x$HAVE_GOBJECT" = "xno"; then
  16.110 -  AC_MSG_ERROR(you need gobject-2.0 installed)
  16.111 -fi
  16.112 -
  16.113 -# make GOBJECT_CFLAGS and GOBJECT_LIBS available
  16.114 -AC_SUBST(GOBJECT_CFLAGS)
  16.115 -AC_SUBST(GOBJECT_LIBS)
  16.116 -
  16.117 -# Check for GTK+-2.0
  16.118 -PKG_CHECK_MODULES(GTK, gtk+-2.0, HAVE_GTK=yes,HAVE_GTK=no)
  16.119 -
  16.120 -# Give error and exit if we don't have gtk
  16.121 -if test "x$HAVE_GTK" = "xyes"; then
  16.122 -  AC_DEFINE(WITH_GTK, 1, [build with GTK+ related stuff])
  16.123 -  dnl AC_MSG_ERROR(you need gtk+-2.0 installed)
  16.124 -else
  16.125 -  AC_MSG_RESULT(no)
  16.126 -fi
  16.127 -
  16.128 -AM_CONDITIONAL(WITH_GTK, test "x$HAVE_GTK" = "xyes" )
  16.129 -
  16.130 -# make GTK_CFLAGS and GTK_LIBS available
  16.131 -AC_SUBST(GTK_CFLAGS)
  16.132 -AC_SUBST(GTK_LIBS)
  16.133 -
  16.134 -dnl ========== Check for Hildon Libraries
  16.135 -PKG_CHECK_MODULES(HILDON,
  16.136 -  hildon-lgpl libosso hildon-status-bar-lib libhildonmenu hildon-base-lib hildon-control-panel hildon-libs,
  16.137 -  HAVE_HILDON=yes, HAVE_HILDON=no)
  16.138 -
  16.139 -if test "x$HAVE_HILDON" = "xyes"; then
  16.140 -  AC_DEFINE(MAEMO_PLATFORM, 1, [build with hildon libs])
  16.141 -  HILDON_CFLAGS="$HILDON_CFLAGS -DMAEMO_PLATFORM=1"
  16.142 -else
  16.143 -  AC_MSG_RESULT(no)
  16.144 -fi
  16.145 -
  16.146 -AM_CONDITIONAL(MAEMO_PLATFORM, test "x$HAVE_HILDON" = "xyes")
  16.147 -
  16.148 -dnl make HILDON_CFLAGS and HILDON_LIBS available
  16.149 -AC_SUBST(HILDON_CFLAGS)
  16.150 -AC_SUBST(HILDON_LIBS)
  16.151 -
  16.152 -# Check for libxml-2.0
  16.153 -PKG_CHECK_MODULES(LIBXML, libxml-2.0, HAVE_LIBXML=yes,HAVE_LIBXML=no)
  16.154 -
  16.155 -# Give error and exit if we don't have libxml
  16.156 -if test "x$HAVE_LIBXML" = "xno"; then
  16.157 -  AC_MSG_ERROR(you need libxml-2.0 installed)
  16.158 -fi
  16.159 -
  16.160 -# make LIBXML_CFLAGS and LIBXML_LIBS available
  16.161 -AC_SUBST(LIBXML_CFLAGS)
  16.162 -AC_SUBST(LIBXML_LIBS)
  16.163 -
  16.164 -
  16.165 -# check for gstreamer development files
  16.166 -GST_REQUIRED=0.10
  16.167 -GST_MAJORMINOR=0.10
  16.168 -PKG_CHECK_MODULES(GST, \
  16.169 -  gstreamer-$GST_MAJORMINOR >= $GST_REQUIRED,
  16.170 -  HAVE_GST=yes, HAVE_GST=no)
  16.171 -
  16.172 -# Give error and exit if we don't have gstreamer
  16.173 -if test "x$HAVE_GST" = "xno"; then
  16.174 -  AC_MSG_ERROR(you need gstreamer development packages installed !)
  16.175 -fi
  16.176 -
  16.177 -# make GST_CFLAGS and GST_LIBS available
  16.178 -AC_SUBST(GST_CFLAGS)
  16.179 -AC_SUBST(GST_LIBS)
  16.180 -
  16.181 -# check for gstreamer-base plugins (xoverlay interface)
  16.182 -GSTBASE_REQUIRED=0.10
  16.183 -GSTBASE_MAJORMINOR=0.10
  16.184 -PKG_CHECK_MODULES(GSTBASE, \
  16.185 -  gstreamer-base-$GSTBASE_MAJORMINOR >= $GSTBASE_REQUIRED,
  16.186 -  HAVE_GSTBASE=yes, HAVE_GSTBASE=no)
  16.187 -
  16.188 -# Give error and exit if we don't have gstreamer base libraries
  16.189 -if test "x$HAVE_GSTBASE" = "xno"; then
  16.190 -  AC_MSG_ERROR(you need gstreamer base development packages installed !)
  16.191 -fi
  16.192 -
  16.193 -# make GSTBASE_CFLAGS and GSTBASE_LIBS available
  16.194 -AC_SUBST(GSTBASE_CFLAGS)
  16.195 -AC_SUBST(GSTBASE_LIBS)
  16.196 -
  16.197 -
  16.198 -# make GST_MAJORMINOR available in Makefile.am
  16.199 -AC_SUBST(GST_MAJORMINOR)
  16.200 -
  16.201 -#
  16.202 -# mysql libraries
  16.203 -#
  16.204 -AC_CHECK_PROG(MYSQL_CFLAGS,mysql_config,`mysql_config --cflags`)
  16.205 -if test -z "$MYSQL_CFLAGS"; then 
  16.206 -        AC_MSG_ERROR([Could not find mysql_config script. Make sure the mysql client libraries are installed])
  16.207 -fi
  16.208 -AC_SUBST(MYSQL_CFLAGS)
  16.209 -
  16.210 -
  16.211 -AC_CHECK_PROG(MYSQL_LIBS,mysql_config,`mysql_config --libs`)
  16.212 -if test -z "$MYSQL_LIBS"; then 
  16.213 -        AC_MSG_ERROR([Could not find mysql_config script. Make sure the mysql client libraries are installed])
  16.214 -fi
  16.215 -AC_SUBST(MYSQL_LIBS)
  16.216 -
  16.217 -## Check for gmyth-0.1
  16.218 -
  16.219 -PKG_CHECK_MODULES(LIBGMYTH, gmyth-0.1, HAVE_LIBGMYTH=yes,HAVE_LIBGMYTH=no)
  16.220 -
  16.221 -# Give error and exit if we don't have gmyth-0.1
  16.222 -if test "x$HAVE_LIBGMYTH" = "xno"; then
  16.223 -  AC_MSG_ERROR(you need gmyth-0.1 installed)
  16.224 -fi
  16.225 -
  16.226 -# make LIBXML_CFLAGS and LIBXML_LIBS available
  16.227 -AC_SUBST(LIBGMYTH_CFLAGS)
  16.228 -AC_SUBST(LIBGMYTH_LIBS)
  16.229 -
  16.230 -#dnl Enable gtk-doc
  16.231 -#GTK_DOC_CHECK(1.4)
  16.232 -
  16.233 -
  16.234 -AC_CONFIG_FILES([Makefile
  16.235 -                src/Makefile
  16.236 -                pixmaps/Makefile])
  16.237 -AC_OUTPUT
    17.1 --- a/gmyth-upnp/src/Makefile.am	Fri Feb 01 19:22:17 2008 +0000
    17.2 +++ b/gmyth-upnp/src/Makefile.am	Fri Feb 01 22:17:33 2008 +0000
    17.3 @@ -27,12 +27,12 @@
    17.4  libgmythupnp_la_CFLAGS = 			\
    17.5  	-DDATADIR=\"$(pkgdatadir)\" 	\
    17.6  	$(LIBGMYTH_CFLAGS)			\
    17.7 -	$(CYBERLINK_CFLAGS)
    17.8 +	$(LIBUPNP_CFLAGS)
    17.9  
   17.10  libgmythupnp_la_LDFLAGS = 			\
   17.11  	-export-dynamic 		\
   17.12  	$(LIBGMYTH_LIBS) 			\
   17.13 -	$(CYBERLINK_LIBS)
   17.14 +	$(LIBUPNP_LIBS)
   17.15  
   17.16  libgmythupnp_includedir = 			\
   17.17  	$(pkgincludedir)
    18.1 --- a/gmyth-upnp/src/gmyth_upnp.c	Fri Feb 01 19:22:17 2008 +0000
    18.2 +++ b/gmyth-upnp/src/gmyth_upnp.c	Fri Feb 01 22:17:33 2008 +0000
    18.3 @@ -30,64 +30,69 @@
    18.4  #endif
    18.5  
    18.6  #include "gmyth_upnp.h"
    18.7 -#include "gmyth_upnp_marshal.h"
    18.8  
    18.9 -#include <arpa/inet.h>
   18.10 -#include <sys/types.h>
   18.11 -#include <sys/socket.h>
   18.12 -#include <netdb.h>
   18.13 -#include <errno.h>
   18.14 -#include <stdlib.h>
   18.15 +#include <gmyth/gmyth.h>
   18.16 +#include <upnp/upnp.h>
   18.17 +#include <string.h>
   18.18  
   18.19 -#include <gmyth/gmyth_backendinfo.h>
   18.20 -#include <gmyth/gmyth_socket.h>
   18.21 -#include <gmyth/gmyth_uri.h>
   18.22 -#include <gmyth/gmyth_debug.h>
   18.23  
   18.24 -/*
   18.25 - * Maximum number of searches in the synchronized search 
   18.26 - */
   18.27 -#define GMYTH_UPNP_MAX_SEARCHS		10
   18.28 +#define UPNP_SEARCH_TIMEOUT 5
   18.29 +#define UPNP_SERVICE_FILTER  "urn:schemas-mythtv-org:service:MythTv:1"
   18.30 +#define SERVER_ID           "MythTV AV Media Server"
   18.31 +
   18.32 +typedef struct _GMythUPnPPrivate GMythUPnPPrivate;
   18.33 +typedef struct _GMythUPnPIdleData GMythUPnPIdleData;
   18.34  
   18.35  #define GMYTH_UPNP_GET_PRIVATE(obj) \
   18.36      (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GMYTH_UPNP_TYPE, GMythUPnPPrivate))
   18.37  
   18.38 +enum
   18.39 +{
   18.40 +    DEVICE_FOUND,
   18.41 +    DEVICE_LOST,
   18.42 +    LAST_SIGNAL
   18.43 +};
   18.44 +
   18.45 +struct _GMythUPnPIdleData
   18.46 +{
   18.47 +    GMythUPnP *parent;
   18.48 +    GMythBackendInfo *server;
   18.49 +};
   18.50 +
   18.51  struct _GMythUPnPPrivate {
   18.52 -    GHashTable     *mythtv_servers;
   18.53 +    GHashTable     *servers;
   18.54      GMythUPnPDeviceStatus last_status;
   18.55      gboolean        upnp_dev_found;
   18.56      gchar          *udn;
   18.57      GMutex         *mutex;
   18.58 +    gint            idle_count;
   18.59 +
   18.60 +    /* upnp */
   18.61 +    UpnpClient_Handle client_id;
   18.62  };
   18.63  
   18.64 -static void     gmyth_upnp_class_init(GMythUPnPClass * klass);
   18.65 -static void     gmyth_upnp_init(GMythUPnP * object);
   18.66 +static void     gmyth_upnp_class_init   (GMythUPnPClass* klass);
   18.67 +static void     gmyth_upnp_init         (GMythUPnP* object);
   18.68 +static void     gmyth_upnp_dispose      (GObject* object);
   18.69 +static void     gmyth_upnp_finalize     (GObject* object);
   18.70 +static GObject* gmyth_upnp_constructor  (GType type,
   18.71 +                                         guint n_construct_params,
   18.72 +                                         GObjectConstructParam *construct_params);
   18.73  
   18.74 -static void     gmyth_upnp_dispose(GObject * object);
   18.75 -static void     gmyth_upnp_finalize(GObject * object);
   18.76  
   18.77 -static void     _mythtv_device_found(GMythUPnP * gmyth_upnp,
   18.78 -                                     GMythUPnPDeviceStatus status,
   18.79 -                                     gchar * dev);
   18.80 -static void     _clinkc_mythtv_device_found(gchar * udn,
   18.81 -                                            GMythUPnPDeviceStatus status);
   18.82 +static int      _upnp_event_handler     (Upnp_EventType e_type,
   18.83 +                                         void* e,
   18.84 +                                         void* data);
   18.85  
   18.86 -static gboolean gmyth_upnp_initialize(GMythUPnP * gmyth_upnp,
   18.87 -                                      GMythBackendInfo *
   18.88 -                                      gmyth_backend_info,
   18.89 -                                      GMythUPnPDeviceListener listener);
   18.90  
   18.91 -static gboolean gmyth_upnp_got_mythtv_service(CgUpnpControlPoint *
   18.92 -                                              controlPt, gchar ** udn,
   18.93 -                                              GHashTable **
   18.94 -                                              mythtv_servers_lst);
   18.95 +static int signals[LAST_SIGNAL] = {0};
   18.96  
   18.97 -G_DEFINE_TYPE(GMythUPnP, gmyth_upnp, G_TYPE_OBJECT)
   18.98 +static GMythUPnP *singleton = NULL;
   18.99  
  18.100 -    static GMythUPnP *gmyth_upnp_static = NULL;
  18.101 +G_DEFINE_TYPE(GMythUPnP, gmyth_upnp, G_TYPE_OBJECT);
  18.102  
  18.103 -    static void
  18.104 -                    gmyth_upnp_class_init(GMythUPnPClass * klass)
  18.105 +static void
  18.106 +gmyth_upnp_class_init(GMythUPnPClass * klass)
  18.107  {
  18.108      GObjectClass   *gobject_class;
  18.109      GMythUPnPClass *gupnp_class;
  18.110 @@ -97,347 +102,354 @@
  18.111  
  18.112      gobject_class->dispose = gmyth_upnp_dispose;
  18.113      gobject_class->finalize = gmyth_upnp_finalize;
  18.114 +    gobject_class->constructor = gmyth_upnp_constructor;
  18.115  
  18.116 -    g_type_class_add_private(gobject_class, sizeof(GMythUPnPPrivate));
  18.117 +    g_type_class_add_private (gobject_class, sizeof(GMythUPnPPrivate));
  18.118  
  18.119 -    gupnp_class->device_found_handler = _mythtv_device_found;
  18.120  
  18.121 -    gupnp_class->device_found_handler_signal_id =
  18.122 -        g_signal_new("device-found",
  18.123 -                     G_TYPE_FROM_CLASS(gupnp_class),
  18.124 -                     G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE |
  18.125 -                     G_SIGNAL_NO_HOOKS, 0, NULL, NULL,
  18.126 -                     gmyth_upnp_marshal_VOID__INT_STRING, G_TYPE_NONE, 2,
  18.127 -                     G_TYPE_INT, G_TYPE_STRING);
  18.128 +
  18.129 +    signals[DEVICE_FOUND] = g_signal_new("device-found",
  18.130 +                                         G_TYPE_FROM_CLASS(gupnp_class),
  18.131 +                                         G_SIGNAL_RUN_LAST,
  18.132 +                                         0, NULL, NULL,
  18.133 +                                         g_cclosure_marshal_VOID__OBJECT,
  18.134 +                                         G_TYPE_NONE, 1,
  18.135 +                                         GMYTH_BACKEND_INFO_TYPE);
  18.136 +
  18.137 +    signals[DEVICE_LOST] = g_signal_new("device-lost",
  18.138 +                                         G_TYPE_FROM_CLASS(gupnp_class),
  18.139 +                                         G_SIGNAL_RUN_LAST,
  18.140 +                                         0, NULL, NULL,
  18.141 +                                         g_cclosure_marshal_VOID__OBJECT,
  18.142 +                                         G_TYPE_NONE, 1,
  18.143 +                                         GMYTH_BACKEND_INFO_TYPE);
  18.144  
  18.145  }
  18.146  
  18.147  static void
  18.148 -gmyth_upnp_init(GMythUPnP * gmyth_upnp)
  18.149 +gmyth_upnp_init(GMythUPnP* self)
  18.150  {
  18.151 +    gint ret;
  18.152 +    GMythUPnPPrivate *priv;
  18.153  
  18.154 -    gmyth_upnp->backend_info = NULL;
  18.155 +    priv = GMYTH_UPNP_GET_PRIVATE (self);
  18.156  
  18.157 -    gmyth_upnp->control_point = NULL;
  18.158 +    priv->mutex = g_mutex_new ();
  18.159 +    priv->servers = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
  18.160  
  18.161 -    gmyth_upnp->priv = GMYTH_UPNP_GET_PRIVATE(gmyth_upnp);
  18.162 -    gmyth_upnp->priv->mutex = g_mutex_new();
  18.163 -    gmyth_upnp->priv->upnp_dev_found = FALSE;
  18.164 +    /* initalize upnp client */
  18.165 +    ret = UpnpInit (NULL, 0);
  18.166 +    if (ret != UPNP_E_SUCCESS)
  18.167 +        g_warning ("Fail to inilialize upnp SDK: %d", ret);
  18.168 +    else
  18.169 +    {
  18.170 +        ret = UpnpRegisterClient (_upnp_event_handler,
  18.171 +                                  &priv->client_id, &priv->client_id);
  18.172  
  18.173 -    g_signal_connect(G_OBJECT(gmyth_upnp), "device-found",
  18.174 -                     (GCallback) (GMYTH_UPNP_GET_CLASS(gmyth_upnp)->
  18.175 -                                  device_found_handler), NULL);
  18.176 -
  18.177 -    gmyth_upnp_static = gmyth_upnp;
  18.178 -
  18.179 +        if (ret != UPNP_E_SUCCESS)
  18.180 +            g_warning ("Fail to start upnp client: %d", ret);
  18.181 +    }
  18.182  }
  18.183  
  18.184 -/** Creates a new instance of GMythUPnP.
  18.185 - * 
  18.186 - * @return a new instance of GMythUPnP. 
  18.187 - */
  18.188 -GMythUPnP      *
  18.189 -gmyth_upnp_new(GMythBackendInfo * gmyth_backend_info,
  18.190 -               GMythUPnPDeviceListener handler)
  18.191 +static GObject*
  18.192 +gmyth_upnp_constructor (GType type,
  18.193 +                        guint n_construct_params,
  18.194 +                        GObjectConstructParam *construct_params)
  18.195  {
  18.196 -    GMythUPnP      *gmyth_upnp =
  18.197 -        GMYTH_UPNP(g_object_new(GMYTH_UPNP_TYPE, NULL));
  18.198 +    GObject *object;
  18.199  
  18.200 -    g_object_ref(gmyth_backend_info);
  18.201 +    if (!singleton)
  18.202 +    {
  18.203 +        object = G_OBJECT_CLASS (gmyth_upnp_parent_class)->constructor (type,
  18.204 +                                                             n_construct_params,
  18.205 +                                                             construct_params);
  18.206  
  18.207 -    gmyth_upnp->backend_info = gmyth_backend_info;
  18.208 +        singleton = GMYTH_UPNP (object);
  18.209 +    }
  18.210 +    else
  18.211 +        object = g_object_ref (G_OBJECT (singleton));
  18.212  
  18.213 -    if (!gmyth_upnp_initialize(gmyth_upnp, gmyth_backend_info, handler)) {
  18.214 -        gmyth_debug("Error initializing the GMythUPnP!!!");
  18.215 -    }
  18.216 -
  18.217 -    return gmyth_upnp;
  18.218 +    return object;
  18.219  }
  18.220  
  18.221  static void
  18.222  gmyth_upnp_dispose(GObject * object)
  18.223  {
  18.224 -    GMythUPnP      *gmyth_upnp = GMYTH_UPNP(object);
  18.225 -
  18.226 -    if (gmyth_upnp->control_point != NULL) {
  18.227 -        cg_upnp_controlpoint_stop(gmyth_upnp->control_point);
  18.228 -        cg_upnp_controlpoint_delete(gmyth_upnp->control_point);
  18.229 -        gmyth_upnp->control_point = NULL;
  18.230 -    }
  18.231 -
  18.232 -    if (gmyth_upnp->priv->mythtv_servers != NULL) {
  18.233 -        g_hash_table_destroy(gmyth_upnp->priv->mythtv_servers);
  18.234 -        gmyth_upnp->priv->mythtv_servers = NULL;
  18.235 -    }
  18.236 -
  18.237 -    if (gmyth_upnp->backend_info != NULL) {
  18.238 -        g_object_unref(gmyth_upnp->backend_info);
  18.239 -        gmyth_upnp->backend_info = NULL;
  18.240 -    }
  18.241 -
  18.242 +    /* finalize upnp client */
  18.243 +    UpnpFinish ();
  18.244      G_OBJECT_CLASS(gmyth_upnp_parent_class)->dispose(object);
  18.245  }
  18.246  
  18.247  static void
  18.248  gmyth_upnp_finalize(GObject * object)
  18.249  {
  18.250 -    g_signal_handlers_destroy(object);
  18.251 -
  18.252      G_OBJECT_CLASS(gmyth_upnp_parent_class)->finalize(object);
  18.253 +    singleton = NULL;
  18.254  }
  18.255  
  18.256 -gchar          *
  18.257 -gmyth_upnp_device_status_to_string(GMythUPnPDeviceStatus status)
  18.258 +
  18.259 +GMythUPnP*
  18.260 +gmyth_upnp_get_instance (void)
  18.261  {
  18.262 -    if (status == CgUpnpDeviceStatusAdded)
  18.263 -        return "Added";
  18.264 -    else if (status == CgUpnpDeviceStatusUpdated)
  18.265 -        return "Updated";
  18.266 -    else if (status == CgUpnpDeviceStatusInvalid)
  18.267 -        return "Invalid";
  18.268 -    else if (status == CgUpnpDeviceStatusRemoved)
  18.269 -        return "Removed";
  18.270 -
  18.271 -    return "";
  18.272 +    return GMYTH_UPNP(g_object_new(GMYTH_UPNP_TYPE, NULL));
  18.273  }
  18.274  
  18.275 -/**
  18.276 - * GObject's signal handler
  18.277 - */
  18.278 -static void
  18.279 -_mythtv_device_found(GMythUPnP * gmyth_upnp, GMythUPnPDeviceStatus status,
  18.280 -                     gchar * udn)
  18.281 +
  18.282 +void
  18.283 +gmyth_upnp_search (GMythUPnP *self)
  18.284  {
  18.285 -    g_debug("Device: [status = %s, UDN = %s]\n",
  18.286 -            gmyth_upnp_device_status_to_string(status), udn);
  18.287 +    int ret;
  18.288 +    GMythUPnPPrivate *priv;
  18.289 +
  18.290 +    priv = GMYTH_UPNP_GET_PRIVATE (self);
  18.291 +
  18.292 +    ret = UpnpSearchAsync (priv->client_id,
  18.293 +                           UPNP_SEARCH_TIMEOUT,
  18.294 +                           UPNP_SERVICE_FILTER,
  18.295 +                           NULL);
  18.296 +
  18.297 +    if (ret != UPNP_E_SUCCESS)
  18.298 +        g_warning ("Fail to start upnp listener: %d", ret);
  18.299  }
  18.300  
  18.301 -/**
  18.302 - * GObject's signal handler
  18.303 - */
  18.304 -static void
  18.305 -_clinkc_mythtv_device_found(gchar * udn, GMythUPnPDeviceStatus status)
  18.306 +static gboolean
  18.307 +_idle_emit_device_found_signal (gpointer data)
  18.308  {
  18.309 -    if (gmyth_upnp_static != NULL && udn != NULL)
  18.310 -        g_signal_emit(gmyth_upnp_static, GMYTH_UPNP_GET_CLASS(gmyth_upnp_static)->device_found_handler_signal_id, 0,    /* details 
  18.311 -                                                                                                                         */
  18.312 -                      status, udn);
  18.313 +    GMythUPnPPrivate *priv;
  18.314 +    GMythUPnPIdleData *idle_data;
  18.315 +
  18.316 +    idle_data = (GMythUPnPIdleData *) data;
  18.317 +    priv = GMYTH_UPNP_GET_PRIVATE (idle_data->parent);
  18.318 +
  18.319 +    g_signal_emit (idle_data->parent, signals[DEVICE_FOUND], 0, idle_data->server);
  18.320 +
  18.321 +    g_object_unref (idle_data->server);
  18.322 +    g_free (idle_data);
  18.323 +    priv->idle_count--;
  18.324 +
  18.325 +    return FALSE;
  18.326  }
  18.327  
  18.328 -/**
  18.329 - * Create a control point and start it.
  18.330 - */
  18.331 -static          gboolean
  18.332 -gmyth_upnp_initialize(GMythUPnP * gmyth_upnp,
  18.333 -                      GMythBackendInfo * gmyth_backend_info,
  18.334 -                      GMythUPnPDeviceListener device_found_handler)
  18.335 +static gboolean
  18.336 +_idle_emit_device_lost_signal (gpointer data)
  18.337  {
  18.338 -    gboolean        ret = TRUE;
  18.339 +    GMythUPnPPrivate *priv;
  18.340 +    GMythUPnPIdleData *idle_data;
  18.341  
  18.342 -    g_return_val_if_fail(gmyth_backend_info != NULL, FALSE);
  18.343 +    idle_data = (GMythUPnPIdleData *) data;
  18.344 +    priv = GMYTH_UPNP_GET_PRIVATE (idle_data->parent);
  18.345  
  18.346 -    /*
  18.347 -     * Create the cybergarage control point 
  18.348 -     */
  18.349 -    gmyth_upnp->control_point = cg_upnp_controlpoint_new();
  18.350 +    g_signal_emit (idle_data->parent, signals[DEVICE_LOST], 0, idle_data->server);
  18.351  
  18.352 -    if (device_found_handler != NULL) {
  18.353 -        GMYTH_UPNP_GET_CLASS(gmyth_upnp)->device_found_handler =
  18.354 -            device_found_handler;
  18.355 +    g_object_unref (idle_data->server);
  18.356 +    g_free (idle_data);
  18.357 +    priv->idle_count--;
  18.358  
  18.359 -        cg_upnp_controlpoint_setdevicelistener(gmyth_upnp->control_point,
  18.360 -                                               _clinkc_mythtv_device_found);
  18.361 +    return FALSE;
  18.362 +}
  18.363 +
  18.364 +static char*
  18.365 +_xml_get_first_document_item (IXML_Document * doc,
  18.366 +                              const gchar *item )
  18.367 +{
  18.368 +    IXML_NodeList *node_list = NULL;
  18.369 +    IXML_Node *text_node = NULL;
  18.370 +    IXML_Node *tmp_node = NULL;
  18.371 +
  18.372 +    gchar *ret = NULL;
  18.373 +
  18.374 +    node_list = ixmlDocument_getElementsByTagName (doc,
  18.375 +                                                  (char *) item);
  18.376 +
  18.377 +    if (node_list)
  18.378 +    {
  18.379 +        if ((tmp_node = ixmlNodeList_item (node_list, 0))) 
  18.380 +        {
  18.381 +            text_node = ixmlNode_getFirstChild (tmp_node);
  18.382 +
  18.383 +            ret = strdup (ixmlNode_getNodeValue (text_node));
  18.384 +        }
  18.385      }
  18.386  
  18.387 -    /*
  18.388 -     * Start the control point 
  18.389 -     */
  18.390 -    if (cg_upnp_controlpoint_start(gmyth_upnp->control_point) == FALSE) {
  18.391 -        gmyth_debug("Unable to start UPnP control point!!!");
  18.392 -        ret = FALSE;
  18.393 -        goto done;
  18.394 -    } else {
  18.395 -        gmyth_debug("Control point started.");
  18.396 -    }
  18.397 -
  18.398 -  done:
  18.399 +    if (node_list)
  18.400 +        ixmlNodeList_free (node_list);
  18.401  
  18.402      return ret;
  18.403  }
  18.404  
  18.405 +
  18.406  static void
  18.407 -_gmyth_foreach_key_value(gchar * udn, gchar * dev,
  18.408 -                         GList * upnp_servers_list)
  18.409 +_append_mythtv_server_from_loation (GMythUPnP *self,
  18.410 +                                    const gchar *uuid,
  18.411 +                                    const gchar *location)
  18.412  {
  18.413 -    GMythUPnPDevice *gmyth_upnp = g_malloc0(sizeof(GMythUPnPDevice));
  18.414 +    GMythUPnPPrivate *priv;
  18.415 +    gchar *base_url;
  18.416 +    gchar *end;
  18.417  
  18.418 -    GMythURI       *uri = NULL;
  18.419 -    gmyth_upnp->uri = (gchar *) (dev);
  18.420 -    uri = gmyth_uri_new_with_value(gmyth_upnp->uri);
  18.421 +    priv = GMYTH_UPNP_GET_PRIVATE (self);
  18.422  
  18.423 -    gmyth_upnp->host = gmyth_uri_get_host(uri);
  18.424 -    gmyth_upnp->port = gmyth_uri_get_port(uri);
  18.425 -    gmyth_upnp->protocol = gmyth_uri_get_protocol(uri);
  18.426 +    base_url = g_strdup (location);
  18.427 +    end = g_strrstr (base_url, "/");
  18.428 +    if (end)
  18.429 +    {
  18.430 +        gint ret;
  18.431 +        IXML_Document *desc_doc;
  18.432 +        gchar *info_url;
  18.433  
  18.434 -    gmyth_debug("MythTV UPnP service [ %s, %d ].", gmyth_upnp->host,
  18.435 -                gmyth_upnp->port);
  18.436 +        end[0] = '\0';
  18.437 +        info_url = g_strconcat (base_url,
  18.438 +                                "Myth/GetConnectionInfo",
  18.439 +                                NULL);
  18.440 +        g_free (base_url);
  18.441 +        desc_doc = NULL;
  18.442 +        ret = UpnpDownloadXmlDoc (info_url, &desc_doc);
  18.443 +        if (ret != UPNP_E_SUCCESS)
  18.444 +        {
  18.445 +            g_warning ("Error obtaining device desc: %d", ret);
  18.446 +        }
  18.447 +        else
  18.448 +        {
  18.449 +            GMythBackendInfo *info;
  18.450 +            GMythUPnPIdleData *idle_data;
  18.451  
  18.452 -    upnp_servers_list = g_list_append(upnp_servers_list, gmyth_upnp);
  18.453 +            info = gmyth_backend_info_new_full (
  18.454 +                _xml_get_first_document_item (desc_doc, "Host"),
  18.455 +                _xml_get_first_document_item (desc_doc, "UserName"),
  18.456 +                _xml_get_first_document_item (desc_doc, "Password"),
  18.457 +                _xml_get_first_document_item (desc_doc, "Name"),
  18.458 +                // Current mythtv version not export port number
  18.459 +                6543);
  18.460  
  18.461 -    if (uri != NULL) {
  18.462 -        g_object_unref(uri);
  18.463 -        uri = NULL;
  18.464 +            if (desc_doc)
  18.465 +                ixmlDocument_free (desc_doc);
  18.466 +
  18.467 +            g_mutex_lock (priv->mutex);
  18.468 +            g_hash_table_insert (priv->servers, 
  18.469 +                                 g_strdup (uuid),
  18.470 +                                 g_object_ref (info));
  18.471 +            g_mutex_unlock (priv->mutex);
  18.472 +            g_debug ("info url: %s", info_url);
  18.473 +            g_free (info_url);
  18.474 +
  18.475 +            idle_data = g_new0 (GMythUPnPIdleData, 1);
  18.476 +            idle_data->parent = self;
  18.477 +            idle_data->server = g_object_ref (info);
  18.478 +
  18.479 +            priv->idle_count++;
  18.480 +            g_idle_add (_idle_emit_device_found_signal, idle_data);
  18.481 +        }
  18.482      }
  18.483 +}
  18.484 +
  18.485 +static void
  18.486 +_remove_mythtv_server (GMythUPnP *self,
  18.487 +                       const gchar *uuid)
  18.488 +{
  18.489 +    GMythUPnPPrivate *priv;
  18.490 +    GMythBackendInfo *info;
  18.491 +
  18.492 +    priv = GMYTH_UPNP_GET_PRIVATE (self);
  18.493 +
  18.494 +    g_mutex_lock (priv->mutex);
  18.495 +    info = g_hash_table_lookup (priv->servers, uuid);
  18.496 +    if (info)
  18.497 +    {
  18.498 +        GMythUPnPIdleData *idle_data;
  18.499 +
  18.500 +        idle_data = g_new0 (GMythUPnPIdleData, 1);
  18.501 +        idle_data->parent = self;
  18.502 +        idle_data->server = g_object_ref (info);
  18.503 +
  18.504 +        g_hash_table_remove (priv->servers, uuid);
  18.505 +
  18.506 +        priv->idle_count++;
  18.507 +        g_idle_add (_idle_emit_device_lost_signal, idle_data);
  18.508 +    }
  18.509 +    g_mutex_unlock (priv->mutex);
  18.510  
  18.511  }
  18.512  
  18.513 -GList          *
  18.514 -gmyth_upnp_do_search_sync(GMythUPnP * gmyth_upnp)
  18.515 +static GMythBackendInfo*
  18.516 +_find_service_by_uuid (GMythUPnP *self,
  18.517 +                      const gchar *uuid)
  18.518  {
  18.519 -    GList          *upnp_servers_list = NULL;
  18.520 -    guint           iter_count = GMYTH_UPNP_MAX_SEARCHS;
  18.521 -    /*
  18.522 -     * gmyth_upnp->priv = GMYTH_UPNP_GET_PRIVATE( gmyth_upnp ); 
  18.523 -     */
  18.524 +    GMythUPnPPrivate *priv;
  18.525 +    GMythBackendInfo *info;
  18.526  
  18.527 -    while (gmyth_upnp->priv->upnp_dev_found == FALSE && (--iter_count > 0)) {
  18.528 +    priv = GMYTH_UPNP_GET_PRIVATE (self);
  18.529 +    info = NULL;
  18.530  
  18.531 -        gmyth_debug
  18.532 -            ("UPnP MythTV Client control point is searching MythTV AV Device server...\n");
  18.533 +    g_mutex_lock (priv->mutex);
  18.534 +    info = g_hash_table_lookup (priv->servers, uuid);
  18.535 +    g_mutex_unlock (priv->mutex);
  18.536  
  18.537 -        if (gmyth_upnp->control_point != NULL)
  18.538 -            cg_upnp_controlpoint_search(gmyth_upnp->control_point,
  18.539 -                                        "urn:schemas-upnp-org:service:ContentDirectory:1");
  18.540 -
  18.541 -        /*
  18.542 -         * just to avoid clinkc pthread concurrency faults 
  18.543 -         */
  18.544 -        cg_wait(1000);
  18.545 -
  18.546 -        /*
  18.547 -         * discover if it was found 
  18.548 -         */
  18.549 -        gmyth_upnp->priv->upnp_dev_found =
  18.550 -            gmyth_upnp_got_mythtv_service(gmyth_upnp->control_point,
  18.551 -                                          &gmyth_upnp->priv->udn,
  18.552 -                                          &gmyth_upnp->priv->
  18.553 -                                          mythtv_servers);
  18.554 -
  18.555 -    }                           /* while */
  18.556 -
  18.557 -    if (gmyth_upnp->priv->upnp_dev_found) {
  18.558 -
  18.559 -        gmyth_debug("Found UPnP MythTV AV Device...\n");
  18.560 -
  18.561 -        g_hash_table_foreach(gmyth_upnp->priv->mythtv_servers,
  18.562 -                             (GHFunc) _gmyth_foreach_key_value,
  18.563 -                             upnp_servers_list);
  18.564 -
  18.565 -    }
  18.566 -    /*
  18.567 -     * if - found UPnP device 
  18.568 -     */
  18.569 -    return upnp_servers_list;
  18.570 +    return info;
  18.571  }
  18.572  
  18.573 -/** 
  18.574 - * Checks if got the MythTV service in the Control Point's device list.
  18.575 - */
  18.576 -static          gboolean
  18.577 -gmyth_upnp_got_mythtv_service(CgUpnpControlPoint * controlPt, gchar ** udn,
  18.578 -                              GHashTable ** mythtv_servers_lst)
  18.579 +static int
  18.580 +_upnp_event_handler (Upnp_EventType e_type,
  18.581 +                     void* e,
  18.582 +                     void* data)
  18.583  {
  18.584 +    g_return_val_if_fail (singleton != NULL, 0);
  18.585  
  18.586 -    g_return_val_if_fail(mythtv_servers_lst != NULL, FALSE);
  18.587 -    g_return_val_if_fail(controlPt != NULL, FALSE);
  18.588 +    switch (e_type)
  18.589 +    {
  18.590 +        case UPNP_DISCOVERY_ADVERTISEMENT_ALIVE:
  18.591 +        case UPNP_DISCOVERY_SEARCH_RESULT:
  18.592 +        {
  18.593 +            struct Upnp_Discovery *d_event;
  18.594  
  18.595 -    *mythtv_servers_lst = g_hash_table_new(g_str_hash, g_str_equal);
  18.596 +            d_event = (struct Upnp_Discovery *) e;
  18.597  
  18.598 -    const gchar    *mythtvFriendlyName = "Myth";
  18.599 -    /*
  18.600 -     * begin assertion about the size of discovered devices 
  18.601 -     */
  18.602 -    gint            numDevices =
  18.603 -        cg_upnp_controlpoint_getndevices(controlPt);
  18.604 -    gint            cntDevs = 0;
  18.605 -    CgUpnpDevice   *childDev;
  18.606 -    gchar          *devName = NULL,
  18.607 -        *dev_url = NULL;
  18.608 -    gboolean        upnp_dev_found = FALSE;
  18.609 +            g_debug ("TYPE: %s", d_event->ServiceType);
  18.610  
  18.611 -    gmyth_debug("UPnP MythTV AV Device list size = %d\n", numDevices);
  18.612 +            if (strcmp (d_event->ServiceType, UPNP_SERVICE_FILTER) != 0)
  18.613 +            {
  18.614 +                g_debug ("invalid device : %s", d_event->DeviceId);
  18.615 +                break;
  18.616 +            }
  18.617  
  18.618 -    for (childDev = cg_upnp_controlpoint_getdevices(controlPt);
  18.619 -         childDev != NULL; childDev = cg_upnp_device_next(childDev)) {
  18.620 -        devName = cg_upnp_device_getfriendlyname(childDev);
  18.621 -        dev_url = cg_upnp_device_getlocationfromssdppacket(childDev);
  18.622 -        gmyth_debug
  18.623 -            ("Device's friendly name = %s, and  device's URL = %s\n",
  18.624 -             devName, dev_url);
  18.625 -        if ((g_strstr_len(devName, strlen(devName), mythtvFriendlyName) !=
  18.626 -             NULL) == TRUE) {
  18.627 -            upnp_dev_found = TRUE;
  18.628 -            /*
  18.629 -             * stores the last UDN number ID 
  18.630 -             */
  18.631 -            *udn = cg_upnp_device_getudn(childDev);
  18.632 -            /*
  18.633 -             *mythtv_servers_lst = g_list_append( *mythtv_servers_lst, dev_url );  */
  18.634 -            g_hash_table_insert(*mythtv_servers_lst, (gpointer) * udn,
  18.635 -                                (gpointer) dev_url);
  18.636 +
  18.637 +            if (d_event->ErrCode != UPNP_E_SUCCESS)
  18.638 +            {
  18.639 +                g_warning ("Error in Discovery: %d", d_event->ErrCode);
  18.640 +                break;
  18.641 +            }
  18.642 +
  18.643 +            if (_find_service_by_uuid (GMYTH_UPNP (singleton), d_event->DeviceId) == NULL)
  18.644 +                _append_mythtv_server_from_loation (singleton,
  18.645 +                                                    d_event->DeviceId,
  18.646 +                                                    d_event->Location);
  18.647 +
  18.648 +
  18.649 +            break;
  18.650          }
  18.651 -        ++cntDevs;
  18.652 +        case UPNP_DISCOVERY_ADVERTISEMENT_BYEBYE:
  18.653 +        {
  18.654 +            GMythUPnPPrivate *priv;
  18.655 +            struct Upnp_Discovery *d_event;
  18.656 +
  18.657 +            d_event = (struct Upnp_Discovery *) e;
  18.658 +            if (d_event->ErrCode != UPNP_E_SUCCESS)
  18.659 +            {
  18.660 +                g_warning ("Error in Discovery: %d", d_event->ErrCode);
  18.661 +                break;
  18.662 +            }
  18.663 +
  18.664 +            priv = GMYTH_UPNP_GET_PRIVATE (singleton);
  18.665 +            _remove_mythtv_server (singleton,
  18.666 +                                   d_event->DeviceId);
  18.667 +
  18.668 +            break;
  18.669 +
  18.670 +        }
  18.671 +        default:
  18.672 +            g_debug ("No handle event: %d", e_type);
  18.673 +            break;
  18.674      }
  18.675  
  18.676 -    if (upnp_dev_found == TRUE) {
  18.677 -        gmyth_debug
  18.678 -            ("MythTV AV Device found, from a total of %d devices.\n",
  18.679 -             cntDevs);
  18.680 -    } else if (numDevices == cntDevs) {
  18.681 -        gmyth_debug
  18.682 -            ("MythTV AV Device not found, from a total of %d devices.\n",
  18.683 -             cntDevs);
  18.684 -    } else {
  18.685 -        gmyth_debug
  18.686 -            ("Control Point's MythTV AV Device count is wrong: iterated over %d devices, but there are %d registered devices.\n",
  18.687 -             cntDevs, numDevices);
  18.688 -    }
  18.689 -
  18.690 -    return upnp_dev_found;
  18.691 -
  18.692 +    return 0;
  18.693  }
  18.694  
  18.695 -/** Gets the UPnP AV devices server's list associated to this upnp.
  18.696 - * 
  18.697 - * @return The GHashTable* containing all the URI values for each recognized UPnP device,
  18.698 - * 			or NULL if it couldn't recognize any MythTV AV device.
  18.699 - */
  18.700 -GHashTable     *
  18.701 -gmyth_upnp_get_servers(GMythUPnP * gmyth_upnp)
  18.702 -{
  18.703 -
  18.704 -    if (NULL == gmyth_upnp || NULL == gmyth_upnp->priv->mythtv_servers) {
  18.705 -        gmyth_debug("[%s] GMythUPnP has no MythTV servers recognized.\n",
  18.706 -                    __FUNCTION__);
  18.707 -        return NULL;
  18.708 -    }
  18.709 -
  18.710 -    return gmyth_upnp->priv->mythtv_servers;
  18.711 -}
  18.712 -
  18.713 -/** Gets the GMythBackendInfo object associated to this upnp.
  18.714 - * 
  18.715 - * @return The GMythBackendInfo object currently valid or NULL if the settings
  18.716 - * were not opened.
  18.717 - */
  18.718 -GMythBackendInfo *
  18.719 -gmyth_upnp_get_backend_info(GMythUPnP * gmyth_upnp)
  18.720 -{
  18.721 -
  18.722 -    if (NULL == gmyth_upnp || NULL == gmyth_upnp->backend_info) {
  18.723 -        gmyth_debug("[%s] GMythUPnP not initialized\n", __FUNCTION__);
  18.724 -        return NULL;
  18.725 -    }
  18.726 -
  18.727 -    return gmyth_upnp->backend_info;
  18.728 -}
    19.1 --- a/gmyth-upnp/src/gmyth_upnp.h	Fri Feb 01 19:22:17 2008 +0000
    19.2 +++ b/gmyth-upnp/src/gmyth_upnp.h	Fri Feb 01 22:17:33 2008 +0000
    19.3 @@ -35,7 +35,6 @@
    19.4  #include <stdio.h>
    19.5  #include <string.h>
    19.6  
    19.7 -#include <cybergarage/upnp/cupnp.h>
    19.8  #include <gmyth/gmyth_backendinfo.h>
    19.9  
   19.10  G_BEGIN_DECLS
   19.11 @@ -47,7 +46,7 @@
   19.12  #define GMYTH_UPNP_GET_CLASS(obj)     (G_TYPE_INSTANCE_GET_CLASS ((obj), GMYTH_UPNP_TYPE, GMythUPnPClass))
   19.13  typedef struct _GMythUPnP GMythUPnP;
   19.14  typedef struct _GMythUPnPClass GMythUPnPClass;
   19.15 -typedef struct _GMythUPnPPrivate GMythUPnPPrivate;
   19.16 +typedef struct _GMythUPnPDevice GMythUPnPDevice;
   19.17  
   19.18  /****************************************
   19.19  * Data Type
   19.20 @@ -59,59 +58,25 @@
   19.21      GMYTH_UPNP_DEVICE_REMOVED
   19.22  } GMythUPnPDeviceStatus;
   19.23  
   19.24 -typedef void    (*GMythUPnPDeviceListener) (GMythUPnP * gmyth_upnp,
   19.25 -                                            GMythUPnPDeviceStatus status,
   19.26 -                                            gchar * dev);
   19.27 +struct _GMythUPnPDevice {
   19.28 +    gchar  *uri;
   19.29 +    gchar  *host;
   19.30 +    gint   port;
   19.31 +    gchar  *protocol;
   19.32 +};
   19.33 +
   19.34  
   19.35  struct _GMythUPnPClass {
   19.36      GObjectClass    parent_class;
   19.37 -
   19.38 -    /*
   19.39 -     * callbacks 
   19.40 -     */
   19.41 -    guint           device_found_handler_signal_id;
   19.42 -
   19.43 -    GMythUPnPDeviceListener device_found_handler;
   19.44 -
   19.45 -    /*
   19.46 -     * no one for now 
   19.47 -     */
   19.48  };
   19.49  
   19.50 -struct _GMythUPnPDevice {
   19.51 -    gchar          *uri;
   19.52 -    gchar          *host;
   19.53 -    gint            port;
   19.54 -    gchar          *protocol;
   19.55 +struct _GMythUPnP {
   19.56 +    GObject         parent;
   19.57  };
   19.58  
   19.59 -typedef struct _GMythUPnPDevice GMythUPnPDevice;
   19.60 -
   19.61 -struct _GMythUPnP {
   19.62 -
   19.63 -    GObject         parent;
   19.64 -    GMythUPnPPrivate *priv;
   19.65 -
   19.66 -
   19.67 -    CgUpnpControlPoint *control_point;
   19.68 -
   19.69 -    gchar          *udn;
   19.70 -
   19.71 -    GMythBackendInfo *backend_info;
   19.72 -
   19.73 -    gboolean        upnp_dev_found;
   19.74 -};
   19.75 -
   19.76 -GType           gmyth_upnp_get_type(void);
   19.77 -GMythUPnP      *gmyth_upnp_new(GMythBackendInfo * gmyth_backend_info,
   19.78 -                               GMythUPnPDeviceListener handler);
   19.79 -
   19.80 -GList          *gmyth_upnp_do_search_sync(GMythUPnP * gmyth_upnp);
   19.81 -
   19.82 -GMythBackendInfo *gmyth_upnp_get_backend_info(GMythUPnP * gmyth_upnp);
   19.83 -
   19.84 -gchar          *gmyth_upnp_device_status_to_string(GMythUPnPDeviceStatus
   19.85 -                                                   status);
   19.86 +GType               gmyth_upnp_get_type         (void);
   19.87 +GMythUPnP*          gmyth_upnp_get_instance     (void);
   19.88 +void                gmyth_upnp_search           (GMythUPnP * gmyth_upnp);
   19.89  
   19.90  G_END_DECLS
   19.91  #endif                          /* _GMYTH_UPNP_H_ */
    20.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.2 +++ b/gmyth-upnp/test/Makefile.am	Fri Feb 01 22:17:33 2008 +0000
    20.3 @@ -0,0 +1,18 @@
    20.4 +LDADD = \
    20.5 +	$(GLIB_LIBS) \
    20.6 +	$(LIBUPNP_LIBS) \
    20.7 +	$(top_srcdir)/src/.libs/libgmythupnp.la
    20.8 +
    20.9 +INCLUDES = \
   20.10 +	-I$(top_srcdir)/src \
   20.11 +	$(GLIB_CFLAGS) \
   20.12 +	$(GOBJECT_CFLAGS) \
   20.13 +	$(LIBUPNP_CFLAGS)
   20.14 +
   20.15 +bin_PROGRAMS = \
   20.16 +	test
   20.17 +
   20.18 +test_SOURCES = \
   20.19 +	main.c
   20.20 +
   20.21 +CLEANFILES = $(BUILT_SOURCES)
    21.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.2 +++ b/gmyth-upnp/test/main.c	Fri Feb 01 22:17:33 2008 +0000
    21.3 @@ -0,0 +1,49 @@
    21.4 +#include <glib.h>
    21.5 +
    21.6 +#include "gmyth_upnp.h"
    21.7 +
    21.8 +static void
    21.9 +_device_found_cb (GMythUPnP *upnp,
   21.10 +                  GMythBackendInfo *info,
   21.11 +                  gpointer data)
   21.12 +{
   21.13 +    g_debug ("BACKEND FOUND: %s", info->hostname);
   21.14 +}
   21.15 +
   21.16 +static void
   21.17 +_device_lost_cb (GMythUPnP *upnp,
   21.18 +                  GMythBackendInfo *info,
   21.19 +                  gpointer data)
   21.20 +{
   21.21 +    g_debug ("BACKEND LOST: %s", info->hostname);
   21.22 +}
   21.23 +
   21.24 +
   21.25 +
   21.26 +int main (int argc, char** argv)
   21.27 +{
   21.28 +    GMythUPnP *o;
   21.29 +    GMainLoop *loop;
   21.30 +
   21.31 +    g_type_init ();
   21.32 +    g_thread_init (NULL);
   21.33 +
   21.34 +    o = gmyth_upnp_get_instance ();
   21.35 +    g_signal_connect (o,
   21.36 +                      "device-found",
   21.37 +                       G_CALLBACK (_device_found_cb),
   21.38 +                       NULL);
   21.39 +    g_signal_connect (o,
   21.40 +                      "device-lost",
   21.41 +                       G_CALLBACK (_device_lost_cb),
   21.42 +                       NULL);
   21.43 +
   21.44 +
   21.45 +    gmyth_upnp_search (o);
   21.46 +
   21.47 +    loop = g_main_loop_new (NULL, FALSE);
   21.48 +    g_main_loop_run (loop);
   21.49 +    g_object_unref (o);
   21.50 +
   21.51 +    return 0;
   21.52 +}