From d4be7b0a8bfe01b81dce9db9475f74454116ec3a Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Wed, 3 Dec 2008 13:34:40 -0600
Subject: make workgroup the default for smb. Also changed the templates to
 match linhes layout.

---
 abs/core-testing/LinHES-config/PKGBUILD                       | 2 +-
 abs/core-testing/LinHES-config/templates/samba/smb.conf.home  | 2 +-
 abs/core-testing/LinHES-config/templates/samba/smb.conf.media | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD
index 706dc4c..075c061 100755
--- a/abs/core-testing/LinHES-config/PKGBUILD
+++ b/abs/core-testing/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=1.0
-pkgrel=60
+pkgrel=63
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev )
 pkgdesc="Install and configure your system"
 depends=(bc libstatgrab  mysql-python expect curl dnsutils parted sg3_utils nmbscan )
diff --git a/abs/core-testing/LinHES-config/templates/samba/smb.conf.home b/abs/core-testing/LinHES-config/templates/samba/smb.conf.home
index b850a7d..c0f3136 100755
--- a/abs/core-testing/LinHES-config/templates/samba/smb.conf.home
+++ b/abs/core-testing/LinHES-config/templates/samba/smb.conf.home
@@ -1,5 +1,5 @@
 [home]
-   path = /data/home/mythtv/
+   path = /home/mythtv/
    public = yes
    only guest = yes
    writeable  = yes
diff --git a/abs/core-testing/LinHES-config/templates/samba/smb.conf.media b/abs/core-testing/LinHES-config/templates/samba/smb.conf.media
index 6a4ec91..3526933 100755
--- a/abs/core-testing/LinHES-config/templates/samba/smb.conf.media
+++ b/abs/core-testing/LinHES-config/templates/samba/smb.conf.media
@@ -1,5 +1,5 @@
 [media]
-   path = /data/media
+   path = /myth
    public = yes
    only guest = yes
    writeable  = yes
-- 
cgit v0.12


From 39b7f8d9aae573403092951a83a08afe206a557b Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Thu, 4 Dec 2008 09:06:22 -0600
Subject: update vi and add gvim

---
 abs/core-testing/vi/PKGBUILD            |  2 +-
 abs/extra-testing/gvim/PKGBUILD         | 83 +++++++++++++++++++++++++++++++++
 abs/extra-testing/gvim/fetch_patches.sh | 60 ++++++++++++++++++++++++
 abs/extra-testing/gvim/gvim.desktop     | 42 +++++++++++++++++
 abs/extra-testing/gvim/gvim.install     | 24 ++++++++++
 abs/extra-testing/vim/PKGBUILD          |  2 +-
 6 files changed, 211 insertions(+), 2 deletions(-)
 create mode 100644 abs/extra-testing/gvim/PKGBUILD
 create mode 100644 abs/extra-testing/gvim/fetch_patches.sh
 create mode 100644 abs/extra-testing/gvim/gvim.desktop
 create mode 100644 abs/extra-testing/gvim/gvim.install

diff --git a/abs/core-testing/vi/PKGBUILD b/abs/core-testing/vi/PKGBUILD
index 3bfc4db..5d6d984 100644
--- a/abs/core-testing/vi/PKGBUILD
+++ b/abs/core-testing/vi/PKGBUILD
@@ -3,7 +3,7 @@
 
 pkgname=vi
 _srcver=7.2
-_patchlevel=30
+_patchlevel=65
 pkgver=${_srcver}.${_patchlevel}
 pkgrel=1
 pkgdesc="a highly configurable, improved version of the vi text editor (basic version)"
diff --git a/abs/extra-testing/gvim/PKGBUILD b/abs/extra-testing/gvim/PKGBUILD
new file mode 100644
index 0000000..9e165bd
--- /dev/null
+++ b/abs/extra-testing/gvim/PKGBUILD
@@ -0,0 +1,83 @@
+# $Id: PKGBUILD 17439 2008-10-29 19:05:16Z tobias $
+# Maintainer: tobias [ tobias at archlinux org ]
+
+pkgname=gvim
+_srcver=7.2
+_patchlevel=65
+pkgver=${_srcver}.${_patchlevel}
+pkgrel=1
+pkgdesc="the vim text editor with advanced features enabled, such as a gui mode"
+arch=(i686 x86_64)
+license=('custom:vim')
+url="http://www.vim.org"
+depends=("vim>=${pkgver}" 'perl' 'python' 'acl' 'libxt' 'gtk2' )
+makedepends=('pkgconfig')
+backup=(etc/gvimrc)
+conflicts=('gvim-devel')
+provides=('gvim-devel')
+install=${pkgname}.install
+source=(ftp://ftp.vim.org/pub/vim/unix/vim-${_srcver}.tar.bz2 \
+        ftp://ftp.vim.org/pub/vim/extra/vim-${_srcver}-extra.tar.gz \
+        ftp://ftp.vim.org/pub/vim/extra/vim-${_srcver}-lang.tar.gz \
+        ${pkgname}.desktop fetch_patches.sh)
+md5sums=('f0901284b338e448bfd79ccca0041254' '35e04482f07c57221c9a751aaa3b8dac' \
+         'd8884786979e0e520c112faf2e176f05' '2be104c0372dd6dae19cb7968c03cd4f' \
+         'a3b03cd44b8ed78a99850d4cbfaafe55')
+
+build()
+{
+  # patch party
+  # pull in patches from vim.org (or the src cache alternatively)
+  . ${startdir}/src/fetch_patches.sh
+  get_patches || return 1
+  cd ${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//")
+   # define the place for the global (g)vimrc file (set to /etc/vimrc)
+  sed -i 's|^.*\(#define SYS_.*VIMRC_FILE.*"\) .*$|\1|' src/feature.h
+  ./configure --prefix=/usr --localstatedir=/var/lib/vim --mandir=/usr/share/man \
+    --with-compiledby=ArchLinux --with-features=big \
+    --with-x=yes --disable-gpm --with-x=yes --enable-gui=gtk2 \
+    --with-global-runtime=/usr/share/vim --with-vim-name=gvim \
+    --enable-multibyte --enable-cscope \
+    --enable-perlinterp --enable-pythoninterp 
+  make || return 1
+  # install everything first ...
+  make VIMRCLOC=/etc DESTDIR=${startdir}/pkg VIMRTDIR= install
+
+   # ... and clean up what vim already has for us
+   # move the binary and fix the (g)* related symlinks
+  find ${startdir}/pkg/usr/bin -type l 2> /dev/null | while read symlink; do
+    rm ${symlink}
+  done
+  cd ${startdir}/pkg/usr/bin
+  rm -f gvimtutor xxd
+  ln -s gvim evim
+  ln -s gvim egview
+  ln -s gvim gview
+  ln -s gvim gvimdiff
+  ln -s gvim rgview
+  ln -s gvim rgvim
+
+   # delete the manpages/symlinks provided by vi package
+  find ${startdir}/pkg/usr/share/man -type d -name 'man1' 2> /dev/null | \
+   while read mandir; do
+    cd ${mandir}
+    rm -f *.1
+    ln -s evi.1.gz evim.1.gz
+    ln -s vi.1.gz egview.1.gz
+    ln -s vi.1.gz gview.1.gz
+    ln -s vi.1.gz gvim.1.gz
+    ln -s vimdiff.1.gz gvimdiff.1.gz
+    ln -s vi.1.gz rgvim.1.gz
+    ln -s vi.1.gz rgview.1.gz
+  done
+
+  install -Dm644 ${startdir}/pkg/usr/share/vim/gvimrc_example.vim \
+    ${startdir}/pkg/etc/gvimrc
+   # clean all settings and controls -  served by vi package
+  rm -rf ${startdir}/pkg/usr/share/vim
+   # freedesktop links
+  install -D -m644 ${startdir}/src/${pkgname}.desktop \
+    ${startdir}/pkg/usr/share/applications/gvim.desktop
+  install -D -m644 ${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//")/runtime/vim48x48.png \
+    ${startdir}/pkg/usr/share/pixmaps/gvim.png
+}
diff --git a/abs/extra-testing/gvim/fetch_patches.sh b/abs/extra-testing/gvim/fetch_patches.sh
new file mode 100644
index 0000000..03e16e2
--- /dev/null
+++ b/abs/extra-testing/gvim/fetch_patches.sh
@@ -0,0 +1,60 @@
+# the external logic for pulling in patches
+
+get_patches() {
+  _patchdir=${startdir}/src/patches
+  cd ${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//")
+  if [ -d ${_patchdir} ]; then
+    rm -rf ${_patchdir}
+    echo -e "\tremove patches from old build"
+  fi
+  mkdir ${_patchdir} && cd ${_patchdir}
+  _rpath=ftp://ftp.vim.org/pub/vim/patches/${_srcver}
+
+  # change IFS to loop line-by-line
+  _OLDIFS=$IFS
+  IFS="
+"
+  echo -e "\tfetching checksumfile for patches"
+  wget ${_rpath}/MD5SUMS >/dev/null 2>&1
+
+  downloads=0
+  for _line in $(/bin/cat MD5SUMS); do
+    downloads=$((${downloads} + 1))
+    _md5=$(echo $_line | cut -d ' ' -f1)
+    _file=$(echo $_line | cut -d ' ' -f3)
+    if [ -f ${SRCDEST}/vim-${_srcver}/${_file} ]; then
+      echo -e "\thaving patch file:${_file}"
+      cp ${SRCDEST}/vim-${_srcver}/${_file} ./
+    else
+      echo -n -e "\t... fetching patch file: ${_file} ..."
+      wget ${_rpath}/${_file} >/dev/null 2>&1
+      if [ -w ${SRCDEST} ]; then
+        if [ ! -d ${SRCDEST}/vim-${_srcver} ]; then
+          mkdir -p ${SRCDEST}/vim-${_srcver}
+        fi
+        cp ${_file} ${SRCDEST}/vim-${_srcver}/
+        echo " done!"
+      fi
+    fi
+
+    if [ $(echo "${_md5}  ${_file}" | md5sum --status -c -) ]; then
+      echo ${_file} md5sums do not match
+      return 1
+    fi
+  done
+
+  ########
+
+  if [ ${downloads} != ${_patchlevel} ]; then
+    echo -e "Number of patches does not match the patchlevel!\nEdit the PKGBUILD accordingly!"
+    return 1
+  fi
+  IFS=$_OLDIFS
+  rm MD5SUMS
+  cd ${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//")
+  for _patch in $(/bin/ls ${_patchdir}); do
+    patch -Np0 -i ${_patchdir}/${_patch} || return 1
+  done
+  rm -rf ${_patchdir}
+  return 0
+}
diff --git a/abs/extra-testing/gvim/gvim.desktop b/abs/extra-testing/gvim/gvim.desktop
new file mode 100644
index 0000000..8c99660
--- /dev/null
+++ b/abs/extra-testing/gvim/gvim.desktop
@@ -0,0 +1,42 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Name=gVim
+Name[eo]=VIM-fasado
+Name[sv]=gVim
+Name[xx]=xx
+Comment=GTK2 enhanced vim text editor
+Comment[ar]=محرر نصوص
+Comment[bg]=Текст Редактор
+Comment[de]=Texteditor
+Comment[el]=Διορθωτής Κειμένου
+Comment[eo]=Tekstredaktilo
+Comment[et]=Tekstiredaktor
+Comment[eu]=Testu Editorea
+Comment[fi]=Tekstieditori
+Comment[he]=עורך טקסט
+Comment[is]=Textaritill
+Comment[ja]=テキストエディタ
+Comment[lt]=Teksto redaktorius
+Comment[mt]=Editur tat-test
+Comment[pt_BR]=Editor de Texto
+Comment[ro]=Editor de text
+Comment[ru]=редактор
+Comment[sk]=Textový editor
+Comment[sl]=Urejevalnik besedil
+Comment[ta]=¯¨Ã ¦¾¡ÌôÀ¡Ç÷
+Comment[tr]=Metin Düzenleyici
+Comment[uk]=Редактор текстів
+Comment[vi]=Trình soạn văn bản
+Comment[xx]=xx
+Comment[zh_CN]=文本编辑器
+Comment[zh_TW]=文字編輯器
+GenericName=Text Editor
+Type=Application
+TryExec=gvim
+Exec=gvim
+Icon=gvim
+Terminal=false
+X-MultipleArgs=false
+Categories=GTK;Application;Utility;TextEditor;
+MimeType=application/mathml+xml;application/xhtml+xml;application/x-perl;application/x-python;application/x-shellscript;audio/x-mpegurl;audio/x-scpls;image/svg+xml;message/news;message/rfc822;text/calendar;text/css;text/english;text/html;text/mrml;text/plain;text/rdf;text/rss;text/rtf;text/sgml;text/vnd.wap.wml;text/x-adasrc;text/x-bibtex;text/x-chdr;text/x-c++hdr;text/x-csrc;text/x-c++src;text/x-c;text/x-objc;text/x-csv;text/x-diff;text/x-java;text/x-katefilelist;text/x-latex;text/x-log;text/x-lyx;text/x-makefile;text/xmcd;text/xml;text/x-moc;text/x-mswinurl;text/x-objcsrc;text/x-pascal;text/x-perl;text/x-php;text/x-php-source;text/x-python;text/x-tcl;text/x-tex;text/x-vcalendar;text/x-vcard;text/x-xslfo;text/x-xslt;
diff --git a/abs/extra-testing/gvim/gvim.install b/abs/extra-testing/gvim/gvim.install
new file mode 100644
index 0000000..f49c345
--- /dev/null
+++ b/abs/extra-testing/gvim/gvim.install
@@ -0,0 +1,24 @@
+post_install() {
+  echo "Updating desktop and mime database..."
+  update-desktop-database -q
+  echo -n "Updating vim help tags..."
+  usr/bin/vim --noplugins -u NONE -U NONE \
+    --cmd ":helptags usr/share/vim/doc" --cmd ":q" > /dev/null 2>&1
+  echo "done."
+}
+
+post_upgrade() {
+  post_install $1
+}
+
+post_remove() {
+  echo -n "Updating desktop and mime database..."
+  update-desktop-database
+  echo "done."
+}
+
+op=$1
+shift
+[ "$(type -t "$op")" = "function" ] && $op "$@"
+
+# vim:set ts=2 sw=2 et ft=sh:
diff --git a/abs/extra-testing/vim/PKGBUILD b/abs/extra-testing/vim/PKGBUILD
index b54c9ba..d0355fc 100644
--- a/abs/extra-testing/vim/PKGBUILD
+++ b/abs/extra-testing/vim/PKGBUILD
@@ -3,7 +3,7 @@
 
 pkgname=vim
 _srcver=7.2
-_patchlevel=30
+_patchlevel=65
 pkgver=${_srcver}.${_patchlevel}
 pkgrel=1.5
 pkgdesc="a highly configurable, improved version of the vi text editor"
-- 
cgit v0.12


From 46cf7f52515f3c0dd412f94118839082d24fde53 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Thu, 4 Dec 2008 15:19:55 -0600
Subject: Don't eject the cd if VMWARE is used or if the boot device is not a
 CD drive. Also introduce a 10 second timer before retracting the CD. REF
 FS#30

---
 abs/core-testing/linhes-live/PKGBUILD             |  2 +-
 abs/core-testing/linhes-live/etc/live-shutdown    | 45 +++++++++++++++++++----
 abs/core-testing/linhes-live/etc/rc.shutdown-live |  2 +-
 3 files changed, 40 insertions(+), 9 deletions(-)

diff --git a/abs/core-testing/linhes-live/PKGBUILD b/abs/core-testing/linhes-live/PKGBUILD
index 2052781..158d141 100644
--- a/abs/core-testing/linhes-live/PKGBUILD
+++ b/abs/core-testing/linhes-live/PKGBUILD
@@ -2,7 +2,7 @@
 # 2008.09.25
 pkgname=linhes-live
 pkgver=5.3.3
-pkgrel=6
+pkgrel=11
 
 pkgdesc="LinHes compulsory components for the Live System."
 url="http://KnoppMyth.net"
diff --git a/abs/core-testing/linhes-live/etc/live-shutdown b/abs/core-testing/linhes-live/etc/live-shutdown
index 459d4f2..3df4802 100644
--- a/abs/core-testing/linhes-live/etc/live-shutdown
+++ b/abs/core-testing/linhes-live/etc/live-shutdown
@@ -37,13 +37,44 @@ f_swapoff ()
 
 f_remountro ()
 {
-    if [ -n "${ejectdev}" ]; then
-        echo "Ejecting live CD"
-        eject ${ejectdev}
-        echo "========================================"
-        echo "It's safe to switch the computer off now"
-        echo -ne "Press Enter to continue"
-        read junk
+    bootdev=`cat /.livesys/bootdevice`
+    bootdev=`basename $bootdev`
+    for i in `ls -H /dev/cd/*`
+    do
+        cdrom=`basename $i|cut -d- -f2`
+        if [ x$cdrom = x$bootdev ]
+        then
+            ejectdev=$cdrom
+        fi
+        break
+    done
+    lspci |grep -q VMware
+    if [ !   $? = 0 ]
+    then
+        if [ -n "${ejectdev}" ]
+        then
+            echo "Ejecting CD"
+            eject ${ejectdev}
+            echo "========================================"
+            echo "Tray will retract after 10 seconds"
+            for timer in `seq -w 10 -1 0`
+            do
+                #echo -n  $timer '\x08'
+                echo -ne   "\t"$timer '\010\010\010\010'
+                sleep 1
+            done
+            echo
+            echo "========================================"
+            eject -t ${ejectdev}
+            echo
+            echo "It's safe to switch the computer off now"
+            #echo -ne "Press Enter to continue"
+            #read junk
+        else
+            echo "Boot device is not a cdrom, no need to eject"
+        fi
+    else
+        echo "VMWARE detected, not ejecting the CD"
     fi
 }
 #Preloads these commands so we can eject the CD.
diff --git a/abs/core-testing/linhes-live/etc/rc.shutdown-live b/abs/core-testing/linhes-live/etc/rc.shutdown-live
index 896bae2..79eae47 100755
--- a/abs/core-testing/linhes-live/etc/rc.shutdown-live
+++ b/abs/core-testing/linhes-live/etc/rc.shutdown-live
@@ -150,7 +150,7 @@ fi
 #F Remount / ro
 f_remountro
 #Eject the CD
-eject
+
 # Power off or reboot
 if [ "$RUNLEVEL" = "0" ]; then
     printsep
-- 
cgit v0.12


From 79ddaba300b4887c9610732c1e2aac7361cbcee5 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Thu, 4 Dec 2008 15:30:00 -0600
Subject: remove some debugging statements

---
 abs/core-testing/sysvinit/PKGBUILD        | 2 +-
 abs/core-testing/sysvinit/halt-init.patch | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/abs/core-testing/sysvinit/PKGBUILD b/abs/core-testing/sysvinit/PKGBUILD
index 2a32da9..6fbb3cd 100644
--- a/abs/core-testing/sysvinit/PKGBUILD
+++ b/abs/core-testing/sysvinit/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=sysvinit
 pkgver=2.86
-pkgrel=11
+pkgrel=12
 pkgdesc="Linux System V Init"
 arch=(i686 x86_64)
 license=('GPL')
diff --git a/abs/core-testing/sysvinit/halt-init.patch b/abs/core-testing/sysvinit/halt-init.patch
index 3c61e0f..88eb0ce 100644
--- a/abs/core-testing/sysvinit/halt-init.patch
+++ b/abs/core-testing/sysvinit/halt-init.patch
@@ -7,8 +7,8 @@
 +	if (!strcmp(progname, "reboot.init")) do_reboot = 1;
 +	if (!strcmp(progname, "poweroff.init")) do_poweroff = 1;
 +
-+	fprintf(stderr, "%d: do_reboot \n ", do_reboot);
-+	fprintf(stderr, "%d: do_poweroff \n ", do_poweroff);
++	//fprintf(stderr, "%d: do_reboot \n ", do_reboot);
++	//fprintf(stderr, "%d: do_poweroff \n ", do_poweroff);
 +	//fprintf(stderr, "%s: \n", progname);
 +	//do_nothing = 1;
 +
-- 
cgit v0.12


From 2a27ce5cb2650c001e276a7c44efb445d00fc2c6 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Thu, 4 Dec 2008 17:53:04 -0600
Subject: nvidia beta drivers

---
 .../nvidia-beta/NVIDIA_kernel-169.12-2286310.diff  | 637 +++++++++++++++++++++
 abs/core-testing/nvidia-beta/PKGBUILD              |  39 ++
 abs/core-testing/nvidia-beta/nvidia.install        |  22 +
 abs/core-testing/nvidia-utils-beta/PKGBUILD        |  69 +++
 abs/core-testing/nvidia-utils-beta/nvidia.install  |  40 ++
 .../nvidia-utils-beta/supported-cards.txt          | 292 ++++++++++
 6 files changed, 1099 insertions(+)
 create mode 100644 abs/core-testing/nvidia-beta/NVIDIA_kernel-169.12-2286310.diff
 create mode 100644 abs/core-testing/nvidia-beta/PKGBUILD
 create mode 100644 abs/core-testing/nvidia-beta/nvidia.install
 create mode 100644 abs/core-testing/nvidia-utils-beta/PKGBUILD
 create mode 100644 abs/core-testing/nvidia-utils-beta/nvidia.install
 create mode 100644 abs/core-testing/nvidia-utils-beta/supported-cards.txt

diff --git a/abs/core-testing/nvidia-beta/NVIDIA_kernel-169.12-2286310.diff b/abs/core-testing/nvidia-beta/NVIDIA_kernel-169.12-2286310.diff
new file mode 100644
index 0000000..e511cfb
--- /dev/null
+++ b/abs/core-testing/nvidia-beta/NVIDIA_kernel-169.12-2286310.diff
@@ -0,0 +1,637 @@
+diff -ru usr/src/nv/Makefile.kbuild usr/src/nv.2286310/Makefile.kbuild
+--- usr/src/nv/Makefile.kbuild	2008-03-16 14:13:10.000000000 -0700
++++ usr/src/nv.2286310/Makefile.kbuild	2008-03-16 14:37:47.204131496 -0700
+@@ -177,6 +177,7 @@
+ 	vmap \
+ 	signal_struct \
+ 	agp_backend_acquire \
++	set_pages_uc \
+ 	change_page_attr \
+ 	pci_get_class \
+ 	sysctl_max_map_count \
+diff -ru usr/src/nv/conftest.sh usr/src/nv.2286310/conftest.sh
+--- usr/src/nv/conftest.sh	2008-03-16 14:13:10.000000000 -0700
++++ usr/src/nv.2286310/conftest.sh	2008-03-16 14:37:47.204131496 -0700
+@@ -100,6 +100,32 @@
+             fi
+         ;;
+ 
++        set_pages_uc)
++            #
++            # Determine if the set_pages_uc() function is present.
++            #
++            echo "#include <linux/autoconf.h>
++            #include <asm/cacheflush.h>
++            void conftest_set_pages_uc(void) {
++                set_pages_uc();
++            }" > conftest$$.c
++
++            $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1
++            rm -f conftest$$.c
++
++            if [ -f conftest$$.o ]; then
++                rm -f conftest$$.o
++                echo "#undef NV_SET_PAGES_UC_PRESENT" >> conftest.h
++                return
++            else
++                echo "#ifdef NV_CHANGE_PAGE_ATTR_PRESENT" >> conftest.h
++                echo "#undef NV_CHANGE_PAGE_ATTR_PRESENT" >> conftest.h
++                echo "#endif"                             >> conftest.h
++                echo "#define NV_SET_PAGES_UC_PRESENT"    >> conftest.h
++                return
++            fi
++        ;;
++
+         change_page_attr)
+             #
+             # Determine if the change_page_attr() function is
+@@ -124,7 +150,9 @@
+                 rm -f conftest$$.o
+                 return
+             else
++                echo "#ifndef NV_SET_PAGES_UC_PRESENT"     >> conftest.h
+                 echo "#define NV_CHANGE_PAGE_ATTR_PRESENT" >> conftest.h
++                echo "#endif"                              >> conftest.h
+                 return
+             fi
+         ;;
+@@ -524,6 +552,8 @@
+                 return
+             fi
+ 
++            rm -f conftest$$.o
++
+             echo "#include <linux/autoconf.h>
+             #include <linux/interrupt.h>
+             irq_handler_t conftest_isr;
+diff -ru usr/src/nv/nv-linux.h usr/src/nv.2286310/nv-linux.h
+--- usr/src/nv/nv-linux.h	2008-03-16 14:13:10.000000000 -0700
++++ usr/src/nv.2286310/nv-linux.h	2008-03-16 14:37:47.204131496 -0700
+@@ -871,9 +871,10 @@
+ 
+ #define NV_PGD_OFFSET(address, kernel, mm)              \
+    ({                                                   \
++        struct mm_struct *__mm = (mm);                  \
+         pgd_t *__pgd;                                   \
+         if (!kernel)                                    \
+-            __pgd = pgd_offset(mm, address);            \
++            __pgd = pgd_offset(__mm, address);          \
+         else                                            \
+             __pgd = pgd_offset_k(address);              \
+         __pgd;                                          \
+@@ -1208,21 +1209,24 @@
+             nv_check_pci_config_space(nv, cb);                      \
+     }
+ 
++extern int nv_update_memory_types;
++
+ /*
+- * a BUG() is triggered on early 2.6 x86_64 kernels. the underlying
+- * problem actually exists on many architectures and kernels, but
+- * these are the only kernels that check the condition and trigger
+- * a BUG(). note that this is a problem of the core kernel, not an
+- * nvidia bug (and can still be triggered by agpgart). let's avoid
+- * change_page_attr on those kernels.
++ * Using change_page_attr() on early Linux/x86-64 2.6 kernels may
++ * result in a BUG() being triggered. The underlying problem
++ * actually exists on multiple architectures and kernels, but only
++ * the above check for the condition and trigger a BUG().
++ *
++ * Note that this is a due to a bug in the Linux kernel, not an
++ * NVIDIA driver bug (it can also be triggered by AGPGART).
++ *
++ * We therefore need to determine at runtime if change_page_attr()
++ * can be used safely on these kernels.
+  */
+-#if defined(NV_CHANGE_PAGE_ATTR_PRESENT)
+-extern int nv_use_cpa;
+-
+-#if defined(NVCPU_X86_64) && !defined(KERNEL_2_4) && \
+-         (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 11))
+-#define NV_CHANGE_PAGE_ATTR_BUG_PRESENT 1
+-#endif
++#if defined(NV_CHANGE_PAGE_ATTR_PRESENT) && defined(NVCPU_X86_64) && \
++  !defined(KERNEL_2_4) && \
++  (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 11))
++#define NV_CHANGE_PAGE_ATTR_BUG_PRESENT
+ #endif
+ 
+ #if defined(NVCPU_X86) || defined(NVCPU_X86_64)
+@@ -1234,7 +1238,7 @@
+  *
+  * We need to be careful to mask out _PAGE_NX when the host system
+  * doesn't support this feature or when it's disabled: the kernel
+- * may not do this in its implementation of the  change_page_attr()
++ * may not do this in its implementation of the change_page_attr()
+  * interface.
+  */
+ #ifndef X86_FEATURE_NX
+diff -ru usr/src/nv/nv-reg.h usr/src/nv.2286310/nv-reg.h
+--- usr/src/nv/nv-reg.h	2008-03-16 14:13:10.000000000 -0700
++++ usr/src/nv.2286310/nv-reg.h	2008-03-16 14:37:47.204131496 -0700
+@@ -391,34 +391,36 @@
+ #define NV_REG_REMAP_LIMIT NV_REG_STRING(__NV_REMAP_LIMIT)
+ 
+ /*
+- * Option: UseCPA
++ * Option: UpdateMemoryTypes
+  *
+  * Description:
+  *
+- * Many kernels have a broken implementation of change_page_attr that leads
+- * to cache aliasing problems. x86_64 kernels between 2.6.0 and 2.6.10 will
+- * force a kernel BUG_ON() when this condition is encountered. For this
+- * reason, the NVIDIA driver is very careful about not using the CPA kernel
+- * interface on these kernels.
+- *
+- * Some distributions have backported this fix to kernel versions that fall
+- * within this version range. The NVIDIA driver attempts to automatically
+- * detect these fixes and reenable usage of the change_page_attr interface.
+- *
+- * Due to the serious nature of the problems that can arise from this, the
+- * NVIDIA driver implements a manual registry key to force usage of this API
+- * to be enabled or disabled. This registry key can be used to force usage
+- * of the API on a known fixed kernel if the NVIDIA driver fails to detect
+- * the kernel as fixed. This registry key can also be used to disable usage
+- * of the API on a bad kernel that is misdetected as a fixed kernel.
+- *
+- * The default value is '-1' (use NVIDIA driver default logic)
+- * A value of '0' will forcibly disable change_page_attr calls.
+- * A value of '1' will forcibly enable change_page_attr calls.
++ * Many kernels have broken implementations of the change_page_attr()
++ * kernel interface that may cause cache aliasing problems. Linux/x86-64
++ * kernels between 2.6.0 and 2.6.10 may prompt kernel BUG()s due to
++ * improper accounting in the interface's large page management code, for
++ * example. For this reason, the NVIDIA Linux driver is very careful about
++ * not using the change_page_attr() kernel interface on these kernels.
++ *
++ * Due to the serious nature of the problems that can arise from bugs in
++ * the change_page_attr(), set_pages_{uc,wb}() and other kernel interfaces
++ * used to modify memory types, the NVIDIA driver implements a manual
++ * registry key override to allow forcibly enabling or disabling use of
++ * these APIs.
++ *
++ * Possible values:
++ *
++ * ~0 = use the NVIDIA driver's default logic (default)
++ *  0 = enable use of change_page_attr(), etc.
++ *  1 = disable use of change_page_attr(), etc.
++ *
++ * By default, the NVIDIA driver will attempt to auto-detect if it can
++ * safely use the change_page_attr() and other kernel interfaces to modify
++ * the memory types of kernel mappings.
+  */
+ 
+-#define __NV_USE_CPA UseCPA
+-#define NV_REG_USE_CPA NV_REG_STRING(__NV_USE_CPA)
++#define __NV_UPDATE_MEMORY_TYPES UpdateMemoryTypes
++#define NV_REG_UPDATE_MEMORY_TYPES NV_REG_STRING(__NV_UPDATE_MEMORY_TYPES)
+ 
+ /*
+  * Option: RegistryDwords
+@@ -490,7 +492,7 @@
+ NV_DEFINE_REG_ENTRY(__NV_DEVICE_FILE_GID, 0);
+ NV_DEFINE_REG_ENTRY(__NV_DEVICE_FILE_MODE, 0666);
+ NV_DEFINE_REG_ENTRY(__NV_REMAP_LIMIT, 0);
+-NV_DEFINE_REG_ENTRY(__NV_USE_CPA, -1);
++NV_DEFINE_REG_ENTRY(__NV_UPDATE_MEMORY_TYPES, ~0);
+ NV_DEFINE_REG_ENTRY(__NV_USE_VBIOS, 1);
+ NV_DEFINE_REG_ENTRY(__NV_RM_EDGE_INTR_CHECK, 1);
+ 
+@@ -535,7 +537,7 @@
+     NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_DEVICE_FILE_GID),
+     NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_DEVICE_FILE_MODE),
+     NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_REMAP_LIMIT),
+-    NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_USE_CPA),
++    NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_UPDATE_MEMORY_TYPES),
+     NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_USE_VBIOS),
+     NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_RM_EDGE_INTR_CHECK),
+     {NULL, NULL, NULL}
+diff -ru usr/src/nv/nv-vm.c usr/src/nv.2286310/nv-vm.c
+--- usr/src/nv/nv-vm.c	2008-03-16 14:13:09.000000000 -0700
++++ usr/src/nv.2286310/nv-vm.c	2008-03-16 14:37:47.204131496 -0700
+@@ -43,42 +43,40 @@
+ }
+ #endif
+ 
+-/*
+- * AMD Athlon processors expose a subtle bug in the Linux
+- * kernel, that may lead to AGP memory corruption. Recent
+- * kernel versions had a workaround for this problem, but
+- * 2.4.20 is the first kernel to address it properly. The
+- * page_attr API provides the means to solve the problem. 
+- */
+-
+ static inline void nv_set_page_attrib_uncached(nv_pte_t *page_ptr)
+ {
+-#if defined(NV_CHANGE_PAGE_ATTR_PRESENT)
+-    if (nv_use_cpa)
++    if (nv_update_memory_types)
+     {
+-        struct page *page = virt_to_page(__va(page_ptr->phys_addr));
++#if defined(NV_SET_PAGES_UC_PRESENT)
++        struct page *page = NV_GET_PAGE_STRUCT(page_ptr->phys_addr);
++        set_pages_uc(page, 1);
++#elif defined(NV_CHANGE_PAGE_ATTR_PRESENT)
++        struct page *page = NV_GET_PAGE_STRUCT(page_ptr->phys_addr);
+         pgprot_t prot = PAGE_KERNEL_NOCACHE;
+ #if defined(NVCPU_X86) || defined(NVCPU_X86_64)
+         pgprot_val(prot) &= __nv_supported_pte_mask;
+ #endif
+         change_page_attr(page, 1, prot);
+-    }
+ #endif
++    }
+ }
+ 
+ static inline void nv_set_page_attrib_cached(nv_pte_t *page_ptr)
+ {
+-#if defined(NV_CHANGE_PAGE_ATTR_PRESENT)
+-    if (nv_use_cpa)
++    if (nv_update_memory_types)
+     {
+-        struct page *page = virt_to_page(__va(page_ptr->phys_addr));
++#if defined(NV_SET_PAGES_UC_PRESENT)
++        struct page *page = NV_GET_PAGE_STRUCT(page_ptr->phys_addr);
++        set_pages_wb(page, 1);
++#elif defined(NV_CHANGE_PAGE_ATTR_PRESENT)
++        struct page *page = NV_GET_PAGE_STRUCT(page_ptr->phys_addr);
+         pgprot_t prot = PAGE_KERNEL;
+ #if defined(NVCPU_X86) || defined(NVCPU_X86_64)
+         pgprot_val(prot) &= __nv_supported_pte_mask;
+ #endif
+         change_page_attr(page, 1, prot);
++#endif
+     }
+-#endif /* NV_CHANGE_PAGE_ATTR_PRESENT */
+ }
+ 
+ static inline void nv_lock_page(nv_pte_t *page_ptr)
+@@ -360,7 +358,8 @@
+ #if defined(NV_CPA_NEEDS_FLUSHING)
+     nv_execute_on_all_cpus(cache_flush, NULL);
+ #endif
+-#if defined (NVCPU_X86) || defined (NVCPU_X86_64)
++#if (defined(NVCPU_X86) || defined(NVCPU_X86_64)) && \
++  defined(NV_CHANGE_PAGE_ATTR_PRESENT)
+     global_flush_tlb();
+ #endif
+     nv_ext_flush_caches(); // handle other platform flushes if present
+@@ -662,7 +661,7 @@
+ 
+         address = (unsigned long)virt_addr + i * PAGE_SIZE; 
+ 
+-        pgd = NV_PGD_OFFSET(address, 1, &init_mm);
++        pgd = NV_PGD_OFFSET(address, 1, NULL);
+         if (!NV_PGD_PRESENT(pgd))
+             goto failed;
+ 
+diff -ru usr/src/nv/nv.c usr/src/nv.2286310/nv.c
+--- usr/src/nv/nv.c	2008-03-16 14:13:09.000000000 -0700
++++ usr/src/nv.2286310/nv.c	2008-03-16 14:37:47.208131723 -0700
+@@ -15,6 +15,7 @@
+ #include "nv_compiler.h"
+ #include "os-agp.h"
+ #include "nv-vm.h"
++#include "nv-reg.h"
+ 
+ #ifdef MODULE_ALIAS_CHARDEV_MAJOR
+ MODULE_ALIAS_CHARDEV_MAJOR(NV_MAJOR_DEVICE_NUMBER);
+@@ -116,10 +117,7 @@
+ unsigned int nv_remap_limit;
+ #endif
+ 
+-#if defined(NV_CHANGE_PAGE_ATTR_PRESENT)
+-int nv_use_cpa = 1;
+-#endif
+-
++int nv_update_memory_types = 1;
+ static int nv_mmconfig_failure_detected = 0;
+ 
+ static void *nv_pte_t_cache = NULL;
+@@ -1030,30 +1028,26 @@
+ #endif /* defined(NV_BUILD_NV_PAT_SUPPORT) */
+ }
+ 
+-
+ #if defined(NV_CHANGE_PAGE_ATTR_BUG_PRESENT)
+-
+-/* nv_verify_cpa_interface - determine if the change_page_attr bug is fixed
+- * in this kernel.
++/*
++ * nv_verify_cpa_interface() - determine if the change_page_attr() large page
++ * management accounting bug known to exist in early Linux/x86-64 kernels
++ * is present in this kernel.
+  *
+- * there's really not a good way to determine if change_page_attr is fixed.
+- * we can't really use cpa on 2.6 x86_64 kernels < 2.6.11, as if we run into
+- * the accounting bug, the kernel will throw a BUG. this isn't 100% accurate,
+- * as it doesn't throw a bug until we try to restore the caching attributes
+- * of the page. so if we can track down a 4M allocation, we can mark it
+- * uncached and see if the accounting was done correctly.
+- * 
+- * this is a little ugly, but the most accurate approach to determining if
+- * this kernel is good.
++ * There's really no good way to determine if change_page_attr() is working
++ * correctly. We can't reliably use change_page_attr() on Linux/x86-64 2.6
++ * kernels < 2.6.11: if we run into the accounting bug, the Linux kernel will
++ * trigger a BUG() if we attempt to restore the WB memory type of a page
++ * originally part of a large page.
+  *
+- * why do we even bother? some distributions have back-ported the cpa fix to
+- * kernels < 2.6.11. we want to use change_page_attr to avoid random corruption
+- * and hangs, but need to make sure it's safe to do so.
++ * So if we can successfully allocate such a page, change its memory type to
++ * UC and check if the accounting was done correctly, we can determine if
++ * the change_page_attr() interface can be used safely.
+  *
+- * return values:
+- *    0 - test passed, interface works
+- *    1 - test failed, status unclear
+- *   -1 - test failed, interface broken
++ * Return values:
++ *    0 - test passed, the change_page_attr() interface works
++ *    1 - test failed, the status is unclear
++ *   -1 - test failed, the change_page_attr() interface is broken
+  */
+ 
+ static inline pte_t *check_large_page(unsigned long vaddr)
+@@ -1061,7 +1055,7 @@
+     pgd_t *pgd = NULL;
+     pmd_t *pmd = NULL;
+ 
+-    pgd = NV_PGD_OFFSET(vaddr, 1, &init_mm);
++    pgd = NV_PGD_OFFSET(vaddr, 1, NULL);
+     if (!NV_PGD_PRESENT(pgd))
+         return NULL;
+ 
+@@ -1171,20 +1165,29 @@
+ 
+     return 1;
+ }
+-
+ #endif /* defined(NV_CHANGE_PAGE_ATTR_BUG_PRESENT) */
+ 
+-
+-// verify that the kernel's mapping matches the requested type 
+-// this is to protect against accidental cache aliasing problems
++/*
++ * nv_verify_page_mappings() - verify that the kernel mapping of the specified
++ * page matches the specified type. This is to help detect bugs in the Linux
++ * kernel's change_page_attr() interface, early.
++ *
++ * This function relies on the ability to perform kernel virtul address to PFN
++ * translations and therefore on 'init_mm'. Unfortunately, the latter is no
++ * longer exported in recent Linux/x86 2.6 kernels. The export was removed at
++ * roughtly the same time as the set_pages_{uc,wb}() change_page_attr()
++ * replacement interfaces were introduced; hopefully, it will be sufficient to
++ * check for their presence.
++ */
+ int nv_verify_page_mappings(
+     nv_pte_t *page_ptr,
+     unsigned int cachetype
+ )
+ {
++#if defined(NV_CHANGE_PAGE_ATTR_PRESENT) || \
++    (defined(NV_SET_PAGES_UC_PRESENT) && !defined(NVCPU_X86))
+     unsigned long retval = -1;
+ #if defined(NVCPU_X86) || defined(NVCPU_X86_64)
+-    struct mm_struct *mm;
+     pgd_t *pgd = NULL;
+     pmd_t *pmd = NULL;
+     pte_t *pte = NULL;
+@@ -1192,15 +1195,12 @@
+     unsigned long address;
+     static int count = 0;
+ 
+-#if defined(NV_CHANGE_PAGE_ATTR_PRESENT)
+-    if (!nv_use_cpa)
++    if (!nv_update_memory_types)
+         return 0;
+-#endif
+ 
+     address = (unsigned long)__va(page_ptr->phys_addr);
+-    mm = &init_mm; // always a kernel page
+ 
+-    pgd = NV_PGD_OFFSET(address, 1, mm);
++    pgd = NV_PGD_OFFSET(address, 1, NULL);
+     if (!NV_PGD_PRESENT(pgd))
+     {
+         nv_printf(NV_DBG_ERRORS, "NVRM: pgd not present for addr 0x%lx\n", address);
+@@ -1266,8 +1266,11 @@
+     }
+ 
+ failed:
+-#endif
++#endif /* defined(NVCPU_X86) || defined(NVCPU_X86_64) */
+     return retval;
++#else
++    return 0;
++#endif
+ }
+ 
+ #if defined(NV_BUILD_NV_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU)
+@@ -1313,7 +1316,7 @@
+ static int __init nvidia_init_module(void)
+ {
+     int rc;
+-    U032 i, count;
++    U032 i, count, data;
+     nv_state_t *nv = NV_STATE_PTR(&nv_ctl_device);
+     nv_stack_t *sp = NULL;
+ 
+@@ -1485,43 +1488,42 @@
+     /* create /proc/driver/nvidia */
+     nvos_proc_create();
+ 
+-#if defined(NV_CHANGE_PAGE_ATTR_PRESENT)
++    /*
++     * Give users an opportunity to disable the driver's use of
++     * the change_page_attr() and set_pages_{uc,wb}() kernel
++     * interfaces.
++     */
++    rc = rm_read_registry_dword(sp, nv,
++            "NVreg", NV_REG_UPDATE_MEMORY_TYPES, &data);
++    if ((rc == 0) && ((int)data != ~0))
+     {
+-        int data;
+-
+-        // allow the user to override us with a registry key
+-        rc = rm_read_registry_dword(sp, nv, "NVreg", "UseCPA", &data);
+-        if ((rc == 0) && (data != -1))
+-        {
+-            nv_use_cpa = data;
+-        }
++        nv_update_memory_types = data;
++    }
+ #if defined(NV_CHANGE_PAGE_ATTR_BUG_PRESENT)
+-        else
++    /*
++     * Unless we explicitely detect that the change_page_attr()
++     * inteface is fixed, disable usage of the interface on
++     * this kernel. Notify the user of this problem using the
++     * driver's /proc warnings interface (read by the installer
++     * and the bug report script).
++     */
++    else
++    {
++        rc = nv_verify_cpa_interface();
++        if (rc < 0)
+         {
+-            /*
+-             * Unless we explicitely detect that the change_page_attr()
+-             * inteface is fixed, disable usage of the interface on
+-             * this kernel. Notify the user of this problem using the
+-             * driver's /proc warnings interface (read by the installer
+-             * and the bug report script).
+-             */
+-            rc = nv_verify_cpa_interface();
+-            if (rc < 0)
+-            {
+-                nv_prints(NV_DBG_ERRORS, __cpgattr_warning);
+-                nvos_proc_add_warning_file("change_page_attr", __cpgattr_warning);
+-                nv_use_cpa = 0;
+-            }
+-            else if (rc != 0)
+-            {
+-                nv_prints(NV_DBG_ERRORS, __cpgattr_warning_2);
+-                nvos_proc_add_warning_file("change_page_attr", __cpgattr_warning_2);
+-                nv_use_cpa = 0;
+-            }
++            nv_prints(NV_DBG_ERRORS, __cpgattr_warning);
++            nvos_proc_add_warning_file("change_page_attr", __cpgattr_warning);
++            nv_update_memory_types = 0;
++        }
++        else if (rc != 0)
++        {
++            nv_prints(NV_DBG_ERRORS, __cpgattr_warning_2);
++            nvos_proc_add_warning_file("change_page_attr", __cpgattr_warning_2);
++            nv_update_memory_types = 0;
+         }
+-#endif
+     }
+-#endif
++#endif /* defined(NV_CHANGE_PAGE_ATTR_BUG_PRESENT) */
+ 
+ #if defined(NVCPU_X86_64) && defined(CONFIG_IA32_EMULATION) && !defined(HAVE_COMPAT_IOCTL)
+     /* Register ioctl()'s for 32-bit clients */
+@@ -3482,8 +3484,21 @@
+     pte_t *pte = NULL;
+     NvU64 retval;
+ 
+-    mm = (kern) ? &init_mm : current->mm;
+-    if (!kern) down_read(&current->mm->mmap_sem);
++    if (!kern)
++    {
++        mm = current->mm;
++        down_read(&mm->mmap_sem);
++    }
++    else
++    {
++#if defined(NV_SET_PAGES_UC_PRESENT) && defined(NVCPU_X86)
++        /* nv_printf(NV_DBG_ERRORS,
++            "NVRM: can't translate KVA in nv_get_phys_address()!\n"); */
++        return 0;
++#else
++        mm = NULL;
++#endif
++    }
+ 
+     pgd = NV_PGD_OFFSET(address, kern, mm);
+     if (!NV_PGD_PRESENT(pgd))
+@@ -3504,22 +3519,24 @@
+     retval &= ~_PAGE_NX;
+ #endif
+ 
+-    if (!kern) up_read(&current->mm->mmap_sem);
++    if (!kern)
++        up_read(&mm->mmap_sem);
+     return retval;
+ 
+ failed:
+-    if (!kern) up_read(&current->mm->mmap_sem);
++    if (!kern)
++        up_read(&mm->mmap_sem);
+     return 0;
+ }
+ 
+ NvU64 NV_API_CALL nv_get_kern_phys_address(NvU64 address)
+ {
+-    // make sure this address is a kernel pointer
++    /* make sure this address is a kernel virtual address */
+ #if defined(DEBUG) && !defined(CONFIG_X86_4G)
+     if (address < PAGE_OFFSET)
+     {
+         nv_printf(NV_DBG_WARNINGS,
+-            "NVRM: user address passed to get_kern_phys_address: 0x%lx\n",
++            "NVRM: user address passed to get_kern_phys_address: 0x%llx!\n",
+             address);
+         return 0;
+     }
+@@ -3534,12 +3551,12 @@
+ 
+ NvU64 NV_API_CALL nv_get_kern_user_address(NvU64 address)
+ {
+-    // make sure this address is not a kernel pointer
++    /* make sure this address is not a kernel virtual address */
+ #if defined(DEBUG) && !defined(CONFIG_X86_4G)
+     if (address >= PAGE_OFFSET)
+     {
+         nv_printf(NV_DBG_WARNINGS,
+-            "NVRM: kernel address passed to get_user_phys_address: 0x%lx\n",
++            "NVRM: kernel address passed to get_user_phys_address: 0x%llx!\n",
+             address);
+         return 0;
+     }
+@@ -4316,16 +4333,12 @@
+     return -1;
+ }
+ 
+-int NV_API_CALL nv_no_incoherent_mappings
+-(
+-    void
+-)
++int NV_API_CALL nv_no_incoherent_mappings(void)
+ {
+     if(nv_ext_no_incoherent_mappings() == 1)
+         return 1;
+-
+-#if defined(NV_CHANGE_PAGE_ATTR_PRESENT)
+-    return 1;
++#if defined(NV_CHANGE_PAGE_ATTR_PRESENT) || defined(NV_SET_PAGES_UC_PRESENT)
++    return (nv_update_memory_types);
+ #else
+     return 0;
+ #endif
+diff -ru usr/src/nv/os-interface.c usr/src/nv.2286310/os-interface.c
+--- usr/src/nv/os-interface.c	2008-03-16 14:13:09.000000000 -0700
++++ usr/src/nv.2286310/os-interface.c	2008-03-16 14:37:47.208131723 -0700
+@@ -1198,6 +1198,18 @@
+ {
+     void *vaddr;
+ 
++    if (start == 0)
++    {
++        if (mode != NV_MEMORY_CACHED)
++        {
++            nv_printf(NV_DBG_ERRORS,
++                "NVRM: os_map_kernel_space: won't map address 0x%0llx UC!\n", start);
++            return NULL;
++        }
++        else
++            return (void *)PAGE_OFFSET;
++    }
++
+     if (!NV_MAY_SLEEP())
+     {
+         nv_printf(NV_DBG_ERRORS,
+@@ -1230,6 +1242,9 @@
+     NvU64 size_bytes
+ )
+ {
++    if (addr == (void *)PAGE_OFFSET)
++        return;
++
+     NV_IOUNMAP(addr, size_bytes);
+ }
+ 
diff --git a/abs/core-testing/nvidia-beta/PKGBUILD b/abs/core-testing/nvidia-beta/PKGBUILD
new file mode 100644
index 0000000..4f2171b
--- /dev/null
+++ b/abs/core-testing/nvidia-beta/PKGBUILD
@@ -0,0 +1,39 @@
+# $Id: PKGBUILD 8443 2008-08-11 05:11:22Z tpowa $
+# Maintainer : Thomas Baechler <thomas@archlinux.org>
+
+pkgname=nvidia-beta
+pkgver=180.06
+_kernver='2.6.26-ARCH'
+pkgrel=3
+pkgdesc="NVIDIA drivers for kernel26."
+arch=('i686' 'x86_64')
+[ "$CARCH" = "i686"   ] && ARCH=x86
+[ "$CARCH" = "x86_64" ] && ARCH=x86_64
+url="http://www.nvidia.com/"
+depends=('kernel26>=2.6.26.2-1' 'kernel26<2.6.27' 'nvidia-utils-beta')
+conflicts=('nvida' 'nvidia-96xx' 'nvidia-71xx' 'nvidia-legacy')
+license=('custom')
+install=nvidia.install
+source=(http://us.download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg1.run)
+
+[ "$CARCH" = "x86_64" ] && md5sums=('8675e4ca65033b343c8c77b2ce82e71d')
+
+build()
+{
+  # Extract
+  cd $startdir/src/
+  sh NVIDIA-Linux-$ARCH-${pkgver}-pkg1.run --extract-only
+  cd NVIDIA-Linux-$ARCH-${pkgver}-pkg1
+  
+  # Any extra patches are applied in here...
+
+  cd usr/src/nv/
+  ln -s Makefile.kbuild Makefile
+  make SYSSRC=/lib/modules/${_kernver}/build module || return 1
+  
+  # install kernel module
+  mkdir -p $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/video/
+  install -m644 nvidia.ko $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/video/
+
+  sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" $startdir/*.install
+}
diff --git a/abs/core-testing/nvidia-beta/nvidia.install b/abs/core-testing/nvidia-beta/nvidia.install
new file mode 100644
index 0000000..dbbec39
--- /dev/null
+++ b/abs/core-testing/nvidia-beta/nvidia.install
@@ -0,0 +1,22 @@
+# arg 1:  the new package version
+post_install() {
+  KERNEL_VERSION='2.6.26-ARCH'
+  depmod -v $KERNEL_VERSION  > /dev/null 2>&1		 
+}
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+post_upgrade() {
+  post_install $1
+  rmmod nvidia || echo 'In order to use the new nvidia module, exit Xserver and unload it manually.'
+}
+
+# arg 1:  the old package version
+post_remove() {
+  KERNEL_VERSION='2.6.26-ARCH'
+  depmod -v $KERNEL_VERSION	 > /dev/null 2>&1	 
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/core-testing/nvidia-utils-beta/PKGBUILD b/abs/core-testing/nvidia-utils-beta/PKGBUILD
new file mode 100644
index 0000000..47b434f
--- /dev/null
+++ b/abs/core-testing/nvidia-utils-beta/PKGBUILD
@@ -0,0 +1,69 @@
+# $Id: PKGBUILD 7914 2008-08-05 08:01:00Z tpowa $
+# Maintainer: Thomas Baechler <thomas@archlinux.org>
+# Contributor: James Rayner <iphitus@gmail.com>
+
+pkgname=nvidia-utils-beta
+pkgver=180.06
+pkgrel=5
+pkgdesc="NVIDIA drivers utilities and libraries."
+arch=('i686' 'x86_64')
+[ "$CARCH" = "i686"   ] && ARCH=x86 	 
+[ "$CARCH" = "x86_64" ] && ARCH=x86_64
+url="http://www.nvidia.com/"
+depends=('xorg-server')
+conflicts=('libgl' 'libgl-dri' 'ati-fglrx-utils' 'nvidia-legacy-utils' \
+           'nvidia-71xx-utils' 'nvidia-96xx-utils' 'nvidia-utils' )
+provides=('libgl')
+license=('custom')
+install=nvidia.install
+source=(http://us.download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg1.run \
+        supported-cards.txt)
+
+[ "$CARCH" = "x86_64" ] && md5sums=('8675e4ca65033b343c8c77b2ce82e71d'
+                        	    'bf8d68d66757096c3ab17653230bf2a8')
+
+options=(docs !strip)
+
+build()
+{
+  # override nvida install routine and do it the long way.
+  cd $startdir/src/
+  sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg1.run --extract-only
+  cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg1/usr/
+
+  mkdir -p $startdir/pkg/usr/{lib,bin,share/applications,share/pixmaps,man/man1}
+  mkdir -p $startdir/pkg/usr/lib/xorg/modules/{extensions,drivers}
+  mkdir -p $startdir/pkg/usr/share/licenses/nvidia/
+  
+  install lib/{libGLcore,libGL,libnvidia-cfg,libcuda,tls/libnvidia-tls}.so.${pkgver} \
+       $startdir/pkg/usr/lib/ || return 1
+  install -m644 share/man/man1/* $startdir/pkg/usr/man/man1/ || return 1
+  rm $startdir/pkg/usr/man/man1/nvidia-installer.1.gz || return 1
+  install X11R6/lib/libXv* $startdir/pkg/usr/lib/ || return 1
+  install -m644 share/applications/nvidia-settings.desktop $startdir/pkg/usr/share/applications/ || return 1
+  # fix nvidia .desktop file
+  sed -e 's:__UTILS_PATH__:/usr/bin:' -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' -i $startdir/pkg/usr/share/applications/nvidia-settings.desktop
+  install -m644 share/pixmaps/nvidia-settings.png $startdir/pkg/usr/share/pixmaps/ || return 1
+  #install X11R6/lib/modules/libnvidia-wfb.so.$pkgver $startdir/pkg/usr/lib/xorg/modules || return 1
+  install X11R6/lib/modules/drivers/nvidia_drv.so $startdir/pkg/usr/lib/xorg/modules/drivers || return 1
+  install X11R6/lib/modules/extensions/libglx.so.$pkgver $startdir/pkg/usr/lib/xorg/modules/extensions || return 1
+  install -m755 bin/nvidia-{settings,xconfig,bug-report.sh} $startdir/pkg/usr/bin/ || return 1
+  cd $startdir/pkg/usr/lib/
+  ln -s libGL.so.$pkgver libGL.so || return 1
+  ln -s libGL.so.$pkgver libGL.so.1 || return 1
+  ln -s libGLcore.so.$pkgver libGLcore.so.1 || return 1
+  ln -s libnvidia-cfg.so.$pkgver libnvidia-cfg.so.1 || return 1
+  ln -s libnvidia-tls.so.$pkgver libnvidia-tls.so.1 || return 1
+  ln -s libcuda.so.$pkgver libcuda.so.1 || return 1
+  ln -s libXvMCNVIDIA.so.$pkgver libXvMCNVIDIA_dynamic.so.1 || return 1
+  cd $startdir/pkg/usr/lib/xorg/modules/extensions
+  ln -s libglx.so.$pkgver libglx.so || return 1
+
+  install -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg1/LICENSE $startdir/pkg/usr/share/licenses/nvidia/ || return 1
+  ln -s nvidia $startdir/pkg/usr/share/licenses/nvidia-utils || return 1
+  install -D -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg1/usr/share/doc/README.txt $startdir/pkg/usr/share/doc/nvidia/README || return 1
+  install -D -m644 $startdir/src/supported-cards.txt $startdir/pkg/usr/share/doc/nvidia/supported-cards.txt || return 1
+  
+  find $startdir/pkg/usr -type d -exec chmod 755 {} \;
+  # phew :)
+}
diff --git a/abs/core-testing/nvidia-utils-beta/nvidia.install b/abs/core-testing/nvidia-utils-beta/nvidia.install
new file mode 100644
index 0000000..7d46ed6
--- /dev/null
+++ b/abs/core-testing/nvidia-utils-beta/nvidia.install
@@ -0,0 +1,40 @@
+# arg 1:  the new package version
+post_install() {
+
+  echo -------------------------------
+  echo By using this package you accept the NVIDIA license, 
+  echo which has been installed in /usr/share/licenses/nvidia/LICENSE
+  echo If you do not accept this license, you must remove the package immediately.
+  echo Dont forget to update your /etc/X11/xorg.conf
+  echo In order to use nvidia-settings, you need to install the 'gtk2' package.
+  echo In order to use nvidia-xconfig, you need to install the 'pkgconfig' package.
+  echo -------------------------------
+  echo nvidia 9746 drops support for Geforce 3 and 4 cards
+  echo If you have such a card, install the nvidia-96xx, nvidia-96xx-utils,
+  echo nvidia-96xx-ck, nvidia-96xx-beyond, nvidia-96xx-suspend2 packages
+  echo For a list of supported cards, see /usr/share/doc/nvidia/supported-cards.txt
+  echo -------------------------------
+
+  #echo ":: Updating symlinks to use built-in libwfb"
+  #ln -sf /usr/lib/xorg/modules/libnvidia-wfb.so.* \
+  #       /usr/lib/xorg/modules/libwfb.so 
+}
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+post_upgrade() {
+  post_install $1
+  echo ":: Updating symlinks to use xorg-server libwfb"
+  ln -sf /usr/lib/xorg/modules/libwfb.so.* \
+         /usr/lib/xorg/modules/libwfb.so
+}
+
+post_remove() {
+  echo ":: Updating symlinks to use xorg-server libwfb"
+  ln -sf /usr/lib/xorg/modules/libwfb.so.* \
+         /usr/lib/xorg/modules/libwfb.so
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/core-testing/nvidia-utils-beta/supported-cards.txt b/abs/core-testing/nvidia-utils-beta/supported-cards.txt
new file mode 100644
index 0000000..ce4c3d4
--- /dev/null
+++ b/abs/core-testing/nvidia-utils-beta/supported-cards.txt
@@ -0,0 +1,292 @@
+Archlinux currently manages three branches of the NVIDIA binary driver:
+
+nvidia (latest nvidia release)
+nvidia-96xx (96xx legacy branch)
+nvidia-71xx (71xx legacy branch)
+
+This excerpt from the NVIDIA 100.14.09 README lists the supported devices
+for each of those:
+
+______________________________________________________________________________
+
+Appendix A. Supported NVIDIA GPU Products
+______________________________________________________________________________
+
+For the most complete and accurate listing of supported GPUs, please see the
+Supported Products List, available from the NVIDIA Linux x86 Graphics Driver
+download page. Please go to http://www.nvidia.com/object/unix.html, follow the
+Archive link under the Linux x86 heading, follow the link for the 100.14.09
+driver, and then go to the Supported Products List.
+
+
+A1. NVIDIA GEFORCE GPUS
+
+
+    NVIDIA GPU product                    Device PCI ID
+    ----------------------------------    ----------------------------------
+    GeForce 6800 Ultra                    0x0040
+    GeForce 6800                          0x0041
+    GeForce 6800 LE                       0x0042
+    GeForce 6800 XE                       0x0043
+    GeForce 6800 XT                       0x0044
+    GeForce 6800 GT                       0x0045
+    GeForce 6800 GT                       0x0046
+    GeForce 6800 GS                       0x0047
+    GeForce 6800 XT                       0x0048
+    GeForce 7800 GTX                      0x0090
+    GeForce 7800 GTX                      0x0091
+    GeForce 7800 GTX                      0x0092
+    GeForce 7800 GS                       0x0093
+    GeForce 7800 SLI                      0x0095
+    GeForce Go 7800                       0x0098
+    GeForce Go 7800 GTX                   0x0099
+    GeForce 6800 GS                       0x00C0
+    GeForce 6800                          0x00C1
+    GeForce 6800 LE                       0x00C2
+    GeForce 6800 XT                       0x00C3
+    GeForce Go 6800                       0x00C8
+    GeForce Go 6800 Ultra                 0x00C9
+    GeForce 6800 Ultra/GeForce 6800       0x00F0
+    GeForce 6600 GT                       0x00F1
+    GeForce 6600                          0x00F2
+    GeForce 6200                          0x00F3
+    GeForce 6600 LE                       0x00F4
+    GeForce 7800 GS                       0x00F5
+    GeForce 6800 GS/XT                    0x00F6
+    GeForce 6800 Ultra                    0x00F9
+    GeForce PCX 5750                      0x00FA
+    GeForce PCX 5900                      0x00FB
+    GeForce PCX 5300                      0x00FC
+    GeForce PCX 4300                      0x00FF
+    GeForce 6600 GT                       0x0140
+    GeForce 6600                          0x0141
+    GeForce 6600 LE                       0x0142
+    GeForce 6600 VE                       0x0143
+    GeForce Go 6600                       0x0144
+    GeForce 6610 XL                       0x0145
+    GeForce Go 6600 TE/6200 TE            0x0146
+    GeForce 6700 XL                       0x0147
+    GeForce Go 6600                       0x0148
+    GeForce Go 6600 GT                    0x0149
+    GeForce 6200                          0x014F
+    GeForce 6500                          0x0160
+    GeForce 6200 TurboCache(TM)           0x0161
+    GeForce 6200SE TurboCache(TM)         0x0162
+    GeForce 6200 LE                       0x0163
+    GeForce Go 6200                       0x0164
+    GeForce Go 6400                       0x0166
+    GeForce Go 6200                       0x0167
+    GeForce Go 6400                       0x0168
+    GeForce 6250                          0x0169
+    GeForce 7100 GS                       0x016A
+    GeForce 8800 GTX                      0x0191
+    GeForce 8800 GTS                      0x0193
+    GeForce 8800 Ultra                    0x0194
+    GeForce 7350 LE                       0x01D0
+    GeForce 7300 LE                       0x01D1
+    GeForce 7300 SE/7200 GS               0x01D3
+    GeForce Go 7200                       0x01D6
+    GeForce Go 7300                       0x01D7
+    GeForce Go 7400                       0x01D8
+    GeForce 7500 LE                       0x01DD
+    GeForce 7300 GS                       0x01DF
+    GeForce 6800                          0x0211
+    GeForce 6800 LE                       0x0212
+    GeForce 6800 GT                       0x0215
+    GeForce 6800 XT                       0x0218
+    GeForce 6200                          0x0221
+    GeForce 6200 A-LE                     0x0222
+    GeForce 6150                          0x0240
+    GeForce 6150 LE                       0x0241
+    GeForce 6100                          0x0242
+    GeForce Go 6150                       0x0244
+    GeForce Go 6100                       0x0247
+    GeForce 7900 GTX                      0x0290
+    GeForce 7900 GT/GTO                   0x0291
+    GeForce 7900 GS                       0x0292
+    GeForce 7950 GX2                      0x0293
+    GeForce 7950 GX2                      0x0294
+    GeForce 7950 GT                       0x0295
+    GeForce Go 7950 GTX                   0x0297
+    GeForce Go 7900 GS                    0x0298
+    GeForce Go 7900 GTX                   0x0299
+    GeForce 7600 GT/Unknown GPU           0x02E0
+    GeForce 7600 GS                       0x02E1
+    GeForce FX 5800 Ultra                 0x0301
+    GeForce FX 5800                       0x0302
+    GeForce FX 5600 Ultra                 0x0311
+    GeForce FX 5600                       0x0312
+    GeForce FX 5600XT                     0x0314
+    GeForce FX Go5600                     0x031A
+    GeForce FX Go5650                     0x031B
+    GeForce FX 5200                       0x0320
+    GeForce FX 5200 Ultra                 0x0321
+    GeForce FX 5200                       0x0322
+    GeForce FX 5200LE                     0x0323
+    GeForce FX Go5200                     0x0324
+    GeForce FX Go5250                     0x0325
+    GeForce FX 5500                       0x0326
+    GeForce FX 5100                       0x0327
+    GeForce FX Go5200 32M/64M             0x0328
+    GeForce FX Go53xx                     0x032C
+    GeForce FX Go5100                     0x032D
+    GeForce FX 5900 Ultra                 0x0330
+    GeForce FX 5900                       0x0331
+    GeForce FX 5900XT                     0x0332
+    GeForce FX 5950 Ultra                 0x0333
+    GeForce FX 5900ZT                     0x0334
+    GeForce FX 5700 Ultra                 0x0341
+    GeForce FX 5700                       0x0342
+    GeForce FX 5700LE                     0x0343
+    GeForce FX 5700VE                     0x0344
+    GeForce FX Go5700                     0x0347
+    GeForce FX Go5700                     0x0348
+    GeForce 7650 GS                       0x0390
+    GeForce 7600 GT                       0x0391
+    GeForce 7600 GS                       0x0392
+    GeForce 7300 GT                       0x0393
+    GeForce 7600 LE                       0x0394
+    GeForce 7300 GT                       0x0395
+    GeForce Go 7600                       0x0398
+    GeForce 6150SE nForce 430             0x03D0
+    GeForce 6100 nForce 405               0x03D1
+    GeForce 6100 nForce 400               0x03D2
+    GeForce 6100 nForce 420               0x03D5
+    GeForce 8600 GTS                      0x0400
+    GeForce 8600 GT                       0x0402
+    GeForce 8600M GT                      0x0407
+    GeForce 8500 GT                       0x0421
+    GeForce 8400 GS                       0x0422
+    GeForce 8300 GS                       0x0423
+    GeForce 8600M GS                      0x0425
+    GeForce 8400M GT                      0x0426
+    GeForce 8400M GS                      0x0427
+    GeForce 8400M G                       0x0428
+
+
+
+A2. NVIDIA QUADRO GPUS
+
+
+    NVIDIA GPU product                                        Device PCI ID
+    ------------------------------------------------------    ---------------
+    Quadro FX 4000                                            0x004E
+    Quadro FX 4500                                            0x009D
+    Quadro FX Go1400                                          0x00CC
+    Quadro FX 3450/4000 SDI                                   0x00CD
+    Quadro FX 1400                                            0x00CE
+    Quadro FX 4400/Quadro FX 3400                             0x00F8
+    Quadro FX 330                                             0x00FC
+    Quadro NVS 280 PCI-E/Quadro FX 330                        0x00FD
+    Quadro FX 1300                                            0x00FE
+    Quadro NVS 440                                            0x014A
+    Quadro FX 540M/Quadro FX 540M                             0x014C
+    Quadro FX 550                                             0x014D
+    Quadro FX 540                                             0x014E
+    Quadro NVS 285                                            0x0165
+    Quadro FX 5600                                            0x019D
+    Quadro FX 4600                                            0x019E
+    Quadro NVS 110M                                           0x01D7
+    Quadro NVS 110M                                           0x01DA
+    Quadro NVS 120M                                           0x01DB
+    Quadro FX 350M                                            0x01DC
+    Quadro FX 350                                             0x01DE
+    Quadro NVS 210S / NVIDIA GeForce 6150LE                   0x0245
+    Quadro FX 2500M                                           0x029A
+    Quadro FX 1500M                                           0x029B
+    Quadro FX 5500                                            0x029C
+    Quadro FX 3500                                            0x029D
+    Quadro FX 1500                                            0x029E
+    Quadro FX 4500 X2                                         0x029F
+    Quadro FX 2000                                            0x0308
+    Quadro FX 1000                                            0x0309
+    Quadro FX Go700                                           0x031C
+    Quadro NVS 55/280 PCI                                     0x032A
+    Quadro FX 500/FX 600                                      0x032B
+    Quadro FX 3000                                            0x0338
+    Quadro FX 700                                             0x033F
+    Quadro FX Go1000                                          0x034C
+    Quadro FX 1100                                            0x034E
+    Quadro FX 560                                             0x039E
+    Quadro NVS 320M                                           0x040B
+    Quadro FX 570M                                            0x040C
+    Quadro FX 1600M                                           0x040D
+    Quadro NVS 140M                                           0x0429
+    Quadro NVS 130M                                           0x042A
+    Quadro NVS 135M                                           0x042B
+    Quadro FX 360M                                            0x042D
+
+
+Below are the legacy GPUs that are no longer supported in the unified driver.
+These GPUs will continue to be maintained through the special legacy NVIDIA
+GPU driver releases.
+
+The 1.0-96xx driver supports the following set of GPUs:
+
+
+    NVIDIA GPU product                    Device PCI ID
+    ----------------------------------    ----------------------------------
+    GeForce2 MX/MX 400                    0x0110
+    GeForce2 MX 100/200                   0x0111
+    GeForce2 Go                           0x0112
+    Quadro2 MXR/EX/Go                     0x0113
+    GeForce4 MX 460                       0x0170
+    GeForce4 MX 440                       0x0171
+    GeForce4 MX 420                       0x0172
+    GeForce4 MX 440-SE                    0x0173
+    GeForce4 440 Go                       0x0174
+    GeForce4 420 Go                       0x0175
+    GeForce4 420 Go 32M                   0x0176
+    GeForce4 460 Go                       0x0177
+    Quadro4 550 XGL                       0x0178
+    GeForce4 440 Go 64M                   0x0179
+    Quadro NVS 400                        0x017A
+    Quadro4 500 GoGL                      0x017C
+    GeForce4 410 Go 16M                   0x017D
+    GeForce4 MX 440 with AGP8X            0x0181
+    GeForce4 MX 440SE with AGP8X          0x0182
+    GeForce4 MX 420 with AGP8X            0x0183
+    GeForce4 MX 4000                      0x0185
+    Quadro4 580 XGL                       0x0188
+    Quadro NVS 280 SD                     0x018A
+    Quadro4 380 XGL                       0x018B
+    Quadro NVS 50 PCI                     0x018C
+    GeForce2 Integrated GPU               0x01A0
+    GeForce4 MX Integrated GPU            0x01F0
+    GeForce3                              0x0200
+    GeForce3 Ti 200                       0x0201
+    GeForce3 Ti 500                       0x0202
+    Quadro DCC                            0x0203
+    GeForce4 Ti 4600                      0x0250
+    GeForce4 Ti 4400                      0x0251
+    GeForce4 Ti 4200                      0x0253
+    Quadro4 900 XGL                       0x0258
+    Quadro4 750 XGL                       0x0259
+    Quadro4 700 XGL                       0x025B
+    GeForce4 Ti 4800                      0x0280
+    GeForce4 Ti 4200 with AGP8X           0x0281
+    GeForce4 Ti 4800 SE                   0x0282
+    GeForce4 4200 Go                      0x0286
+    Quadro4 980 XGL                       0x0288
+    Quadro4 780 XGL                       0x0289
+    Quadro4 700 GoGL                      0x028C
+
+
+The 1.0-71xx driver supports the following set of GPUs:
+
+
+    NVIDIA GPU product                    Device PCI ID
+    ----------------------------------    ----------------------------------
+    RIVA TNT                              0x0020
+    RIVA TNT2/TNT2 Pro                    0x0028
+    RIVA TNT2 Ultra                       0x0029
+    Vanta/Vanta LT                        0x002C
+    RIVA TNT2 Model 64/Model 64 Pro       0x002D
+    Aladdin TNT2                          0x00A0
+    GeForce 256                           0x0100
+    GeForce DDR                           0x0101
+    Quadro                                0x0103
+    GeForce2 GTS/GeForce2 Pro             0x0150
+    GeForce2 Ti                           0x0151
+    GeForce2 Ultra                        0x0152
+    Quadro2 Pro                           0x0153
-- 
cgit v0.12


From e2267985e694d71802f8eab1a972c73cd7134e01 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Thu, 4 Dec 2008 18:49:16 -0600
Subject: install the new headers

---
 abs/core-testing/nvidia-utils-beta/PKGBUILD | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/abs/core-testing/nvidia-utils-beta/PKGBUILD b/abs/core-testing/nvidia-utils-beta/PKGBUILD
index 47b434f..956ae3b 100644
--- a/abs/core-testing/nvidia-utils-beta/PKGBUILD
+++ b/abs/core-testing/nvidia-utils-beta/PKGBUILD
@@ -4,7 +4,7 @@
 
 pkgname=nvidia-utils-beta
 pkgver=180.06
-pkgrel=5
+pkgrel=10
 pkgdesc="NVIDIA drivers utilities and libraries."
 arch=('i686' 'x86_64')
 [ "$CARCH" = "i686"   ] && ARCH=x86 	 
@@ -31,10 +31,11 @@ build()
   sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg1.run --extract-only
   cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg1/usr/
 
-  mkdir -p $startdir/pkg/usr/{lib,bin,share/applications,share/pixmaps,man/man1}
+  mkdir -p $startdir/pkg/usr/{include/cuda,include/vdpau,lib,bin,share/applications,share/pixmaps,man/man1}
   mkdir -p $startdir/pkg/usr/lib/xorg/modules/{extensions,drivers}
   mkdir -p $startdir/pkg/usr/share/licenses/nvidia/
-  
+  cp -rp  include/cuda/* $startdir/pkg/usr/include/cuda || return 1
+  cp -rp  include/vdpau/* $startdir/pkg/usr/include/vdpau || return 1
   install lib/{libGLcore,libGL,libnvidia-cfg,libcuda,tls/libnvidia-tls}.so.${pkgver} \
        $startdir/pkg/usr/lib/ || return 1
   install -m644 share/man/man1/* $startdir/pkg/usr/man/man1/ || return 1
-- 
cgit v0.12


From bb56c3fdc679c5c0f893da54047950ef3f593160 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Thu, 4 Dec 2008 19:36:14 -0600
Subject: use the beta pkg from AUR

---
 abs/core-testing/nvidia-beta/PKGBUILD       | 41 ++++++++++++++-------------
 abs/core-testing/nvidia-utils-beta/PKGBUILD | 43 ++++++++++++++---------------
 abs/core-testing/nvidia/PKGBUILD            |  2 +-
 3 files changed, 41 insertions(+), 45 deletions(-)

diff --git a/abs/core-testing/nvidia-beta/PKGBUILD b/abs/core-testing/nvidia-beta/PKGBUILD
index 4f2171b..e822996 100644
--- a/abs/core-testing/nvidia-beta/PKGBUILD
+++ b/abs/core-testing/nvidia-beta/PKGBUILD
@@ -1,39 +1,38 @@
-# $Id: PKGBUILD 8443 2008-08-11 05:11:22Z tpowa $
-# Maintainer : Thomas Baechler <thomas@archlinux.org>
-
 pkgname=nvidia-beta
-pkgver=180.06
+pkgver=180.11
 _kernver='2.6.26-ARCH'
-pkgrel=3
-pkgdesc="NVIDIA drivers for kernel26."
-arch=('i686' 'x86_64')
-[ "$CARCH" = "i686"   ] && ARCH=x86
-[ "$CARCH" = "x86_64" ] && ARCH=x86_64
-url="http://www.nvidia.com/"
-depends=('kernel26>=2.6.26.2-1' 'kernel26<2.6.27' 'nvidia-utils-beta')
-conflicts=('nvida' 'nvidia-96xx' 'nvidia-71xx' 'nvidia-legacy')
-license=('custom')
-install=nvidia.install
-source=(http://us.download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg1.run)
-
-[ "$CARCH" = "x86_64" ] && md5sums=('8675e4ca65033b343c8c77b2ce82e71d')
+pkgrel=2
+pkgdesc="NVIDIA beta drivers for kernel26" 
+arch=('i686' 'x86_64') 
+[ "$CARCH" = "i686" ] && ARCH=x86 && NV=0 
+[ "$CARCH" = "x86_64" ] && ARCH=x86_64 && NV=0 
+provides=('nvidia')
+url="http://www.nvidia.com/" 
+depends=('kernel26' 'nvidia-utils-beta') 
+conflicts=('nvidia' 'nvidia-96xx' 'nvidia-71xx' 'nvidia-legacy') 
+license=('custom') 
+install=nvidia.install 
+source=(ftp://download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg${NV}.run) 
+md5sums=('759a1aa16073616e3104f461dffbeded')
+[ "$CARCH" = "x86_64" ] && md5sums=('3c7a1bb6c9e55a8df0ec4e396e9187b2')
 
 build()
 {
   # Extract
+  echo ${_kernver}
   cd $startdir/src/
-  sh NVIDIA-Linux-$ARCH-${pkgver}-pkg1.run --extract-only
-  cd NVIDIA-Linux-$ARCH-${pkgver}-pkg1
+  sh NVIDIA-Linux-$ARCH-${pkgver}-pkg${NV}.run --extract-only
+  cd NVIDIA-Linux-$ARCH-${pkgver}-pkg${NV}
   
   # Any extra patches are applied in here...
 
   cd usr/src/nv/
   ln -s Makefile.kbuild Makefile
-  make SYSSRC=/lib/modules/${_kernver}/build module || return 1
+  make SYSSRC=/lib/modules/${_kernver}/build module 
   
   # install kernel module
   mkdir -p $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/video/
   install -m644 nvidia.ko $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/video/
 
   sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" $startdir/*.install
-}
+}
\ No newline at end of file
diff --git a/abs/core-testing/nvidia-utils-beta/PKGBUILD b/abs/core-testing/nvidia-utils-beta/PKGBUILD
index 956ae3b..e0dd0df 100644
--- a/abs/core-testing/nvidia-utils-beta/PKGBUILD
+++ b/abs/core-testing/nvidia-utils-beta/PKGBUILD
@@ -1,37 +1,35 @@
-# $Id: PKGBUILD 7914 2008-08-05 08:01:00Z tpowa $
-# Maintainer: Thomas Baechler <thomas@archlinux.org>
-# Contributor: James Rayner <iphitus@gmail.com>
-
 pkgname=nvidia-utils-beta
-pkgver=180.06
-pkgrel=10
-pkgdesc="NVIDIA drivers utilities and libraries."
+pkgver=180.11
+pkgrel=1
+pkgdesc="NVIDIA beta drivers utilities and libraries."
+provides=('nvidia-utils' 'libgl')
 arch=('i686' 'x86_64')
-[ "$CARCH" = "i686"   ] && ARCH=x86 	 
-[ "$CARCH" = "x86_64" ] && ARCH=x86_64
+[ "$CARCH" = "i686"   ] && ARCH=x86 && NV=0
+[ "$CARCH" = "x86_64" ] && ARCH=x86_64 && NV=0
 url="http://www.nvidia.com/"
 depends=('xorg-server')
 conflicts=('libgl' 'libgl-dri' 'ati-fglrx-utils' 'nvidia-legacy-utils' \
-           'nvidia-71xx-utils' 'nvidia-96xx-utils' 'nvidia-utils' )
-provides=('libgl')
+           'nvidia-71xx-utils' 'nvidia-96xx-utils')
 license=('custom')
 install=nvidia.install
-source=(http://us.download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg1.run \
-        supported-cards.txt)
-
-[ "$CARCH" = "x86_64" ] && md5sums=('8675e4ca65033b343c8c77b2ce82e71d'
-                        	    'bf8d68d66757096c3ab17653230bf2a8')
+source=(ftp://download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}.run \
+        supported-cards.txt) 
 
+         
+[ "$CARCH" = "x86_64" ] && md5sums=('3c7a1bb6c9e55a8df0ec4e396e9187b2'
+         '5b5835bdb1508a57591b812c109a2679')
+         
+                  
 options=(docs !strip)
 
 build()
 {
   # override nvida install routine and do it the long way.
   cd $startdir/src/
-  sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg1.run --extract-only
-  cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg1/usr/
-
+  sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}.run --extract-only
+  cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}/usr/
   mkdir -p $startdir/pkg/usr/{include/cuda,include/vdpau,lib,bin,share/applications,share/pixmaps,man/man1}
+#  mkdir -p $startdir/pkg/usr/{lib,bin,share/applications,share/pixmaps,man/man1}
   mkdir -p $startdir/pkg/usr/lib/xorg/modules/{extensions,drivers}
   mkdir -p $startdir/pkg/usr/share/licenses/nvidia/
   cp -rp  include/cuda/* $startdir/pkg/usr/include/cuda || return 1
@@ -45,7 +43,7 @@ build()
   # fix nvidia .desktop file
   sed -e 's:__UTILS_PATH__:/usr/bin:' -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' -i $startdir/pkg/usr/share/applications/nvidia-settings.desktop
   install -m644 share/pixmaps/nvidia-settings.png $startdir/pkg/usr/share/pixmaps/ || return 1
-  #install X11R6/lib/modules/libnvidia-wfb.so.$pkgver $startdir/pkg/usr/lib/xorg/modules || return 1
+  install X11R6/lib/modules/libnvidia-wfb.so.$pkgver $startdir/pkg/usr/lib/xorg/modules || return 1
   install X11R6/lib/modules/drivers/nvidia_drv.so $startdir/pkg/usr/lib/xorg/modules/drivers || return 1
   install X11R6/lib/modules/extensions/libglx.so.$pkgver $startdir/pkg/usr/lib/xorg/modules/extensions || return 1
   install -m755 bin/nvidia-{settings,xconfig,bug-report.sh} $startdir/pkg/usr/bin/ || return 1
@@ -60,11 +58,10 @@ build()
   cd $startdir/pkg/usr/lib/xorg/modules/extensions
   ln -s libglx.so.$pkgver libglx.so || return 1
 
-  install -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg1/LICENSE $startdir/pkg/usr/share/licenses/nvidia/ || return 1
+  install -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}/LICENSE $startdir/pkg/usr/share/licenses/nvidia/ || return 1
   ln -s nvidia $startdir/pkg/usr/share/licenses/nvidia-utils || return 1
-  install -D -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg1/usr/share/doc/README.txt $startdir/pkg/usr/share/doc/nvidia/README || return 1
+  install -D -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}/usr/share/doc/README.txt $startdir/pkg/usr/share/doc/nvidia/README || return 1
   install -D -m644 $startdir/src/supported-cards.txt $startdir/pkg/usr/share/doc/nvidia/supported-cards.txt || return 1
   
   find $startdir/pkg/usr -type d -exec chmod 755 {} \;
-  # phew :)
 }
diff --git a/abs/core-testing/nvidia/PKGBUILD b/abs/core-testing/nvidia/PKGBUILD
index b1af8b5..0814d77 100644
--- a/abs/core-testing/nvidia/PKGBUILD
+++ b/abs/core-testing/nvidia/PKGBUILD
@@ -4,7 +4,7 @@
 pkgname=nvidia
 pkgver=173.14.12
 _kernver='2.6.26-ARCH'
-pkgrel=3
+pkgrel=4
 pkgdesc="NVIDIA drivers for kernel26."
 arch=('i686' 'x86_64')
 [ "$CARCH" = "i686"   ] && ARCH=x86
-- 
cgit v0.12


From 9c63001e5eb322bf73aed1541884027f422ff480 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Fri, 5 Dec 2008 12:06:28 -0600
Subject: preload seq command.

---
 abs/core-testing/linhes-live/PKGBUILD          | 2 +-
 abs/core-testing/linhes-live/etc/live-shutdown | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/abs/core-testing/linhes-live/PKGBUILD b/abs/core-testing/linhes-live/PKGBUILD
index 158d141..f718e22 100644
--- a/abs/core-testing/linhes-live/PKGBUILD
+++ b/abs/core-testing/linhes-live/PKGBUILD
@@ -2,7 +2,7 @@
 # 2008.09.25
 pkgname=linhes-live
 pkgver=5.3.3
-pkgrel=11
+pkgrel=12
 
 pkgdesc="LinHes compulsory components for the Live System."
 url="http://KnoppMyth.net"
diff --git a/abs/core-testing/linhes-live/etc/live-shutdown b/abs/core-testing/linhes-live/etc/live-shutdown
index 3df4802..6e12d22 100644
--- a/abs/core-testing/linhes-live/etc/live-shutdown
+++ b/abs/core-testing/linhes-live/etc/live-shutdown
@@ -79,6 +79,7 @@ f_remountro ()
 }
 #Preloads these commands so we can eject the CD.
 #
+seq --help >/dev/null 2>&1
 eject --help >/dev/null 2>&1
 halt --help >/dev/null 2>&1
 poweroff --help >/dev/null 2>&1
-- 
cgit v0.12


From 0cc1080dee0c081423deffca0884193011ea399b Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Fri, 5 Dec 2008 13:17:48 -0600
Subject: add better error checking for the init scripts ncidd/xvfb/evrouter

---
 abs/core-testing/LinHES-config/PKGBUILD                    |   2 +-
 abs/core-testing/LinHES-config/systemconfig.sh             |   8 ++++++++
 abs/core-testing/runit-scripts/PKGBUILD                    |   2 +-
 .../runit-scripts/runitscripts/services/evrouter/finish    |  10 ++++++++--
 .../runit-scripts/runitscripts/services/evrouter/run       |  12 ++++++++++--
 .../runit-scripts/runitscripts/services/ncid/finish        |   9 +++++++++
 .../runit-scripts/runitscripts/services/ncid/run           |  11 +++++++++--
 .../runit-scripts/runitscripts/services/ncidd/finish       |   9 +++++++++
 .../runit-scripts/runitscripts/services/ncidd/run          |   6 +++++-
 abs/mv-core/MythVantage-config/systemconfig.sh             |   7 ++++++-
 .../runit-scripts-mv/runitscripts/services/evrouter/finish |  10 ++++++++--
 .../runit-scripts-mv/runitscripts/services/evrouter/run    |  12 ++++++++++--
 .../runitscripts/services/evrouter/supervise/lock          |   0
 .../runitscripts/services/evrouter/supervise/pid           |   0
 .../runitscripts/services/evrouter/supervise/stat          |   1 -
 .../runitscripts/services/evrouter/supervise/status        | Bin 20 -> 0 bytes
 .../runit-scripts-mv/runitscripts/services/ncid/finish     |   9 +++++++++
 .../runit-scripts-mv/runitscripts/services/ncid/run        |  11 +++++++++--
 .../runit-scripts-mv/runitscripts/services/ncidd/finish    |   9 +++++++++
 .../runit-scripts-mv/runitscripts/services/ncidd/run       |   6 +++++-
 20 files changed, 116 insertions(+), 18 deletions(-)
 create mode 100644 abs/core-testing/runit-scripts/runitscripts/services/ncid/finish
 create mode 100644 abs/core-testing/runit-scripts/runitscripts/services/ncidd/finish
 delete mode 100644 abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/lock
 delete mode 100644 abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/pid
 delete mode 100644 abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/stat
 delete mode 100644 abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/status
 create mode 100644 abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/finish
 create mode 100644 abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/finish

diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD
index 075c061..144d96e 100755
--- a/abs/core-testing/LinHES-config/PKGBUILD
+++ b/abs/core-testing/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=1.0
-pkgrel=63
+pkgrel=65
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev )
 pkgdesc="Install and configure your system"
 depends=(bc libstatgrab  mysql-python expect curl dnsutils parted sg3_utils nmbscan )
diff --git a/abs/core-testing/LinHES-config/systemconfig.sh b/abs/core-testing/LinHES-config/systemconfig.sh
index 6c72b92..90405a7 100755
--- a/abs/core-testing/LinHES-config/systemconfig.sh
+++ b/abs/core-testing/LinHES-config/systemconfig.sh
@@ -658,6 +658,14 @@ then
            ser_remove="ncid $ser_remove"
  fi
 
+
+if [ x$UseEvrouter = x1 ]
+then
+           ser_install="evrouter Xvfb $ser_install"
+  else
+           ser_remove="evrouter $ser_remove"
+fi
+
 #Setting the default, just to avoid the or statement..
 #if [ x$UseHobbit = x ]
 #then
diff --git a/abs/core-testing/runit-scripts/PKGBUILD b/abs/core-testing/runit-scripts/PKGBUILD
index 3792572..6df1bae 100755
--- a/abs/core-testing/runit-scripts/PKGBUILD
+++ b/abs/core-testing/runit-scripts/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=runit-scripts
 pkgver=1.8.0
-pkgrel=15
+pkgrel=18
 pkgdesc="collection of startup scripts for runit"
 url="http://smarden.org/runit/"
 license="BSD"
diff --git a/abs/core-testing/runit-scripts/runitscripts/services/evrouter/finish b/abs/core-testing/runit-scripts/runitscripts/services/evrouter/finish
index 0dd33de..5ebda4c 100755
--- a/abs/core-testing/runit-scripts/runitscripts/services/evrouter/finish
+++ b/abs/core-testing/runit-scripts/runitscripts/services/evrouter/finish
@@ -1,4 +1,10 @@
 #!/bin/bash
 . /etc/profile
-DISPLAY=localhost:50 evrouter -q 
-rm -rf /tmp/.evrouter*
+which evrouter >/dev/null 2>/dev/null
+if [ $? = 0 ]
+then
+	DISPLAY=localhost:50 evrouter -q 
+	rm -rf /tmp/.evrouter*
+else
+	sv down evrouter
+fi
\ No newline at end of file
diff --git a/abs/core-testing/runit-scripts/runitscripts/services/evrouter/run b/abs/core-testing/runit-scripts/runitscripts/services/evrouter/run
index 1d7389a..5697f6f 100755
--- a/abs/core-testing/runit-scripts/runitscripts/services/evrouter/run
+++ b/abs/core-testing/runit-scripts/runitscripts/services/evrouter/run
@@ -1,5 +1,13 @@
 #!/bin/bash
 . /etc/profile
-sv start Xvfb
-su mythtv -c "DISPLAY=localhost:50 evrouter -c /etc/evrouter.cfg -f /dev/input/event*"
+which evrouter >/dev/null 2>/dev/null
+if [ $? = 0 ]
+then
+	ps -ef |grep -v grep|grep -q "Xvfb :50"
+	if [ ! $?  = 0 ]
+	then
+		sv start Xvfb
+	fi
+	su mythtv -c "DISPLAY=localhost:50 evrouter -c /etc/evrouter.cfg -f /dev/input/event*"
+fi
 
diff --git a/abs/core-testing/runit-scripts/runitscripts/services/ncid/finish b/abs/core-testing/runit-scripts/runitscripts/services/ncid/finish
new file mode 100644
index 0000000..953a4a1
--- /dev/null
+++ b/abs/core-testing/runit-scripts/runitscripts/services/ncid/finish
@@ -0,0 +1,9 @@
+#!/bin/bash
+exec 2>&1
+which ncid 2>/dev/null >/dev/null
+if [ ! $?  = 0 ]
+then
+	sv down ncid
+fi
+
+
diff --git a/abs/core-testing/runit-scripts/runitscripts/services/ncid/run b/abs/core-testing/runit-scripts/runitscripts/services/ncid/run
index 8a90707..7dbc8ba 100755
--- a/abs/core-testing/runit-scripts/runitscripts/services/ncid/run
+++ b/abs/core-testing/runit-scripts/runitscripts/services/ncid/run
@@ -1,5 +1,12 @@
 #!/bin/sh
 exec 2>&1
-sv start ncidd
-exec /usr/bin/ncid --no-gui --all  --call-prog --program /usr/bin/ncid.py 127.0.0.1 3333
+which ncid 2>/dev/null >/dev/null
+if [ $? = 0 ]
+then
+	if [ -f /var/service/ncidd/run ]
+	then
+		sv start ncidd
+	fi
+	exec /usr/bin/ncid --no-gui --all  --call-prog --program /usr/bin/ncid.py 127.0.0.1 3333
+fi
 
diff --git a/abs/core-testing/runit-scripts/runitscripts/services/ncidd/finish b/abs/core-testing/runit-scripts/runitscripts/services/ncidd/finish
new file mode 100644
index 0000000..ab39d39
--- /dev/null
+++ b/abs/core-testing/runit-scripts/runitscripts/services/ncidd/finish
@@ -0,0 +1,9 @@
+#!/bin/bash
+exec 2>&1
+which ncidd 2>/dev/null >/dev/null
+if [ ! $?  = 0 ]
+then
+	sv down ncid
+fi
+
+
diff --git a/abs/core-testing/runit-scripts/runitscripts/services/ncidd/run b/abs/core-testing/runit-scripts/runitscripts/services/ncidd/run
index 6b032db..f1c710a 100755
--- a/abs/core-testing/runit-scripts/runitscripts/services/ncidd/run
+++ b/abs/core-testing/runit-scripts/runitscripts/services/ncidd/run
@@ -1,3 +1,7 @@
 #!/bin/sh
 exec 2>&1
-exec /usr/sbin/ncidd -D 2>&1 
+which ncidd > /dev/null 2>/dev/null
+if [ $? = 0 ]
+then
+	exec /usr/sbin/ncidd -D 2>&1 
+fi
diff --git a/abs/mv-core/MythVantage-config/systemconfig.sh b/abs/mv-core/MythVantage-config/systemconfig.sh
index a038286..3fbf9b1 100755
--- a/abs/mv-core/MythVantage-config/systemconfig.sh
+++ b/abs/mv-core/MythVantage-config/systemconfig.sh
@@ -639,7 +639,12 @@ then
            ser_daemon_remove="ncidd ncid $ser_daemon_remove"
            ser_remove="ncid $ser_remove"
  fi
-
+if [ x$UseEvrouter = x1 ]
+then
+           ser_install="evrouter Xvfb $ser_install"
+  else
+           ser_remove="evrouter $ser_remove"
+fi
 #Setting the default, just to avoid the or statement..
 if [ x$UseHobbit = x ]
 then
diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/finish b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/finish
index 0dd33de..5ebda4c 100755
--- a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/finish
+++ b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/finish
@@ -1,4 +1,10 @@
 #!/bin/bash
 . /etc/profile
-DISPLAY=localhost:50 evrouter -q 
-rm -rf /tmp/.evrouter*
+which evrouter >/dev/null 2>/dev/null
+if [ $? = 0 ]
+then
+	DISPLAY=localhost:50 evrouter -q 
+	rm -rf /tmp/.evrouter*
+else
+	sv down evrouter
+fi
\ No newline at end of file
diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/run b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/run
index 1d7389a..5697f6f 100755
--- a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/run
+++ b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/run
@@ -1,5 +1,13 @@
 #!/bin/bash
 . /etc/profile
-sv start Xvfb
-su mythtv -c "DISPLAY=localhost:50 evrouter -c /etc/evrouter.cfg -f /dev/input/event*"
+which evrouter >/dev/null 2>/dev/null
+if [ $? = 0 ]
+then
+	ps -ef |grep -v grep|grep -q "Xvfb :50"
+	if [ ! $?  = 0 ]
+	then
+		sv start Xvfb
+	fi
+	su mythtv -c "DISPLAY=localhost:50 evrouter -c /etc/evrouter.cfg -f /dev/input/event*"
+fi
 
diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/lock b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/lock
deleted file mode 100644
index e69de29..0000000
diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/pid b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/pid
deleted file mode 100644
index e69de29..0000000
diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/stat b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/stat
deleted file mode 100644
index eb0e904..0000000
--- a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/stat
+++ /dev/null
@@ -1 +0,0 @@
-down
diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/status b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/status
deleted file mode 100644
index 742989c..0000000
Binary files a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/status and /dev/null differ
diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/finish b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/finish
new file mode 100644
index 0000000..953a4a1
--- /dev/null
+++ b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/finish
@@ -0,0 +1,9 @@
+#!/bin/bash
+exec 2>&1
+which ncid 2>/dev/null >/dev/null
+if [ ! $?  = 0 ]
+then
+	sv down ncid
+fi
+
+
diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/run b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/run
index 8a90707..7dbc8ba 100755
--- a/abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/run
+++ b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/run
@@ -1,5 +1,12 @@
 #!/bin/sh
 exec 2>&1
-sv start ncidd
-exec /usr/bin/ncid --no-gui --all  --call-prog --program /usr/bin/ncid.py 127.0.0.1 3333
+which ncid 2>/dev/null >/dev/null
+if [ $? = 0 ]
+then
+	if [ -f /var/service/ncidd/run ]
+	then
+		sv start ncidd
+	fi
+	exec /usr/bin/ncid --no-gui --all  --call-prog --program /usr/bin/ncid.py 127.0.0.1 3333
+fi
 
diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/finish b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/finish
new file mode 100644
index 0000000..ab39d39
--- /dev/null
+++ b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/finish
@@ -0,0 +1,9 @@
+#!/bin/bash
+exec 2>&1
+which ncidd 2>/dev/null >/dev/null
+if [ ! $?  = 0 ]
+then
+	sv down ncid
+fi
+
+
diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/run b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/run
index 6b032db..f1c710a 100755
--- a/abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/run
+++ b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/run
@@ -1,3 +1,7 @@
 #!/bin/sh
 exec 2>&1
-exec /usr/sbin/ncidd -D 2>&1 
+which ncidd > /dev/null 2>/dev/null
+if [ $? = 0 ]
+then
+	exec /usr/sbin/ncidd -D 2>&1 
+fi
-- 
cgit v0.12


From 3211a5b7d8ddb4c7871f844036c366108ee57ef3 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Sat, 6 Dec 2008 18:10:17 -0600
Subject: adding i2c-tools and read-edid

---
 abs/core-testing/read-edid-2.0.0.tar.gz    | Bin 0 -> 82282 bytes
 abs/extra-testing/i2c-tools/Makefile.patch |  19 +++++++++++++++++++
 abs/extra-testing/i2c-tools/PKGBUILD       |  21 +++++++++++++++++++++
 abs/extra-testing/read-edid/PKGBUILD       |  20 ++++++++++++++++++++
 4 files changed, 60 insertions(+)
 create mode 100644 abs/core-testing/read-edid-2.0.0.tar.gz
 create mode 100644 abs/extra-testing/i2c-tools/Makefile.patch
 create mode 100644 abs/extra-testing/i2c-tools/PKGBUILD
 create mode 100644 abs/extra-testing/read-edid/PKGBUILD

diff --git a/abs/core-testing/read-edid-2.0.0.tar.gz b/abs/core-testing/read-edid-2.0.0.tar.gz
new file mode 100644
index 0000000..9160c9d
Binary files /dev/null and b/abs/core-testing/read-edid-2.0.0.tar.gz differ
diff --git a/abs/extra-testing/i2c-tools/Makefile.patch b/abs/extra-testing/i2c-tools/Makefile.patch
new file mode 100644
index 0000000..f90fa14
--- /dev/null
+++ b/abs/extra-testing/i2c-tools/Makefile.patch
@@ -0,0 +1,19 @@
+--- Makefile.orig	2007-11-01 18:54:57.000000000 +0100
++++ Makefile	2008-09-24 14:46:54.000000000 +0200
+@@ -5,7 +5,7 @@
+ # Licensed under the GNU General Public License.
+ 
+ DESTDIR	=
+-prefix	= /usr/local
++prefix	= /usr
+ bindir	= $(prefix)/bin
+ sbindir	= $(prefix)/sbin
+ mandir	= $(prefix)/share/man
+@@ -32,6 +32,6 @@
+ all:
+ 
+ include eeprom/Module.mk
+-include include/Module.mk
++#include include/Module.mk
+ include stub/Module.mk
+ include tools/Module.mk
diff --git a/abs/extra-testing/i2c-tools/PKGBUILD b/abs/extra-testing/i2c-tools/PKGBUILD
new file mode 100644
index 0000000..db1700d
--- /dev/null
+++ b/abs/extra-testing/i2c-tools/PKGBUILD
@@ -0,0 +1,21 @@
+# Contributor: DonVla <donvla@users.sourceforge.net>
+
+pkgname=i2c-tools
+pkgver=3.0.2
+pkgrel=1
+pkgdesc="Heterogeneous set of I2C tools for Linux that used to be part of lm-sensors"
+arch=('i686' 'x86_64')
+url="http://www.lm-sensors.org/wiki/I2CTools"
+license=('GPL')
+depends=('lm_sensors' 'perl' 'read-edid')
+options=(strip)
+source=(http://dl.lm-sensors.org/$pkgname/releases/$pkgname-$pkgver.tar.bz2 Makefile.patch)
+md5sums=('b546345ac19db56719dea6b8199f11e0' '49d17834f9d7e68407ec46785e47bb94')
+
+build() {
+  cd "$srcdir/$pkgname-$pkgver"
+  patch -p0 < $startdir/Makefile.patch
+  make || return 1
+  make DESTDIR="$pkgdir" install
+}
+# vim:set ts=2 sw=2 et:
diff --git a/abs/extra-testing/read-edid/PKGBUILD b/abs/extra-testing/read-edid/PKGBUILD
new file mode 100644
index 0000000..6e6b0b3
--- /dev/null
+++ b/abs/extra-testing/read-edid/PKGBUILD
@@ -0,0 +1,20 @@
+# Contributor: Mateusz Herych <heniekk@gmail.com>
+
+pkgname=read-edid
+pkgver=2.0.0
+pkgrel=2
+pkgdesc="Program that can get information from a pnp monitor"
+arch=('i686' 'x86_64')
+url="http://www.polypux.org/projects/read-edid/"
+license=('GPL')
+depends=('libx86')
+source=(http://www.polypux.org/projects/read-edid/read-edid-$pkgver.tar.gz)
+md5sums=('586e7fa1167773b27f4e505edc93274b')
+
+build() {
+	cd $startdir/src/$pkgname-$pkgver
+	./configure --prefix=/usr
+	make || return 1
+	make DESTDIR=$startdir/pkg install || return 1
+
+}
-- 
cgit v0.12


From 2ce20c77e0e643b5d60ef0dff4d689bb5a05f656 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Sat, 6 Dec 2008 18:39:49 -0600
Subject: Add support for Autodetection of Hauppauge pvr-250 receivers.  This
 should work but I don't have a pvr-250 receiver anymore so can't fully test
 it.

If PVR-250 is found then the old Hauppauge remote is assumed to be in use.

Detection first checks for USB receivers, if no receiver is found it then checks for Hauppauge receivers.
First found remote wins, so if a USB receiver is found the Hauppauge detection is never run.

Oddly enough I never wanted to use a Hauppauage receiver again, but somehow I spent most of the adding support for it.
---
 abs/core-testing/LinHES-config/PKGBUILD            |    2 +-
 .../LinHES-config/install_functions.sh             |   37 +-
 abs/core-testing/LinHES-config/systemconfig.sh     |   19 +-
 .../LinHES-config/templates/modules/lirc_i2c.conf  |    2 +
 .../templates/remotes/hauppauge-grey/lircd.conf    |  199 +++
 .../templates/remotes/hauppauge-grey/lircrc        |  505 ++++++++
 .../templates/remotes/hauppauge-grey/preview.jpg   |  Bin 0 -> 45763 bytes
 .../LinHES-config/templates/remotes/i2c.id         |    5 +
 abs/core-testing/LinHES-system/PKGBUILD            |    4 +-
 .../LinHES-system/load-modules-mythvantage.sh      |   32 +
 abs/core-testing/runit-scripts/PKGBUILD            |    2 +-
 abs/core-testing/runit-scripts/runitscripts/1      |    2 +-
 .../runit-scripts/runitscripts/services/lircd/run  |    4 +-
 .../MythVantage-config/install_functions.sh        |   23 +
 abs/mv-core/MythVantage-config/systemconfig.sh     | 1318 ++++++++++----------
 .../templates/modules/lirc_i2c.conf                |    2 +
 .../MythVantage-config/templates/remotes/i2c.id    |    5 +
 .../runitscripts/services/lircd/run                |    6 +-
 18 files changed, 1494 insertions(+), 673 deletions(-)
 create mode 100644 abs/core-testing/LinHES-config/templates/modules/lirc_i2c.conf
 create mode 100644 abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircd.conf
 create mode 100644 abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircrc
 create mode 100644 abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/preview.jpg
 create mode 100644 abs/core-testing/LinHES-config/templates/remotes/i2c.id
 create mode 100755 abs/core-testing/LinHES-system/load-modules-mythvantage.sh
 create mode 100644 abs/mv-core/MythVantage-config/templates/modules/lirc_i2c.conf
 create mode 100644 abs/mv-core/MythVantage-config/templates/remotes/i2c.id

diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD
index 144d96e..07ccda7 100755
--- a/abs/core-testing/LinHES-config/PKGBUILD
+++ b/abs/core-testing/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=1.0
-pkgrel=65
+pkgrel=84
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev )
 pkgdesc="Install and configure your system"
 depends=(bc libstatgrab  mysql-python expect curl dnsutils parted sg3_utils nmbscan )
diff --git a/abs/core-testing/LinHES-config/install_functions.sh b/abs/core-testing/LinHES-config/install_functions.sh
index 3e7f8f8..d976dbb 100755
--- a/abs/core-testing/LinHES-config/install_functions.sh
+++ b/abs/core-testing/LinHES-config/install_functions.sh
@@ -35,7 +35,7 @@ update_db_settings Theme "$pick"
 
 
 function setupremote {
-    [ -e $BASE/etc/lircd.conf ] && mv -f $BASE/etc/lircd.conf $BASE/etc/lircd.conf.`date +%Y-%m-%d-%H-%M` 
+    [ -e $BASE/etc/lircd.conf ] && mv -f $BASE/etc/lircd.conf $BASE/etc/lircd.conf.`date +%Y-%m-%d-%H-%M`
     if [ -d $TEMPLATES/remotes/$Remotetype ]
     then
             cd $TEMPLATES/remotes/$Remotetype
@@ -50,16 +50,40 @@ function setupremote {
 	    echo "Starting with support for $Remotetype"
 	    if [ x$Remotetype = "xdvico" ]
 	    then
-	            /usr/sbin/lircd  -d /dev/usb/hiddev0 
+	            /usr/sbin/lircd  -d /dev/usb/hiddev0
 	    else
 	            /usr/sbin/lircd  -d /dev/lirc0
 	    fi
 	    [ -e /root/.mythtv ] ||  mkdir /root/.mythtv 2>/dev/null
-            ln -s /etc/lircrc /root/.mythtv/lircrc 2>/dev/null
+        ln -s /etc/lircrc /root/.mythtv/lircrc 2>/dev/null
+    else
+        echo "Couldn't open directory $TEMPLATES/remotes/$Remotetype"
     fi
 }
 
+function scan_for_hpg_receiver() {
+echo "Scanning for Hauppauge receiver"
+for hpgid in `lspci -nm  -d4444: |cut -d" " -f6-  |tr -d '"'|tr " " :`
+do
+    line=`grep $hpgid $TEMPLATES/remotes/i2c.id`
+    if [ $? = 0 ]
+    then
+        modprobe lirc_i2c
+        FoundReceiverType=`echo "$line"|cut -d"|" -f2`
+        Remotetype=`echo "$line"|cut -d"|" -f4`
+        statusline=`echo "$line"|cut -d"|" -f2,4`
+        echo "Found $statusline , $Remotetype"
+        update_db_settings  HostReceiverType $FoundReceiverType
+        setupremote
+        break
+    fi
+
+done
+}
+
+
 function scan_for_usb_remote () {
+found_remote=1
 echo "Scanning for usb receiver/remote"
 while read line
 do
@@ -68,11 +92,16 @@ do
     if [ $? = 0 ]
     then
         Remotetype=`echo "$line"|cut -d"|" -f2`
-        echo "found $Remotetype"
+        echo "Found $Remotetype"
         setupremote
+        found_remote=0
         break
     fi
 done <$BASE/$TEMPLATES/remotes/receiver_usb.id
+if [ $found_remote = 1 ]
+then
+    scan_for_hpg_receiver
+fi
 }
 
 function rest_of_network () {
diff --git a/abs/core-testing/LinHES-config/systemconfig.sh b/abs/core-testing/LinHES-config/systemconfig.sh
index 90405a7..05dfd89 100755
--- a/abs/core-testing/LinHES-config/systemconfig.sh
+++ b/abs/core-testing/LinHES-config/systemconfig.sh
@@ -163,13 +163,20 @@ function setupreceiver {
     Serial) echo "setup serial lirc"
             sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage
             echo "lirc_serial   #lirc" >> ${BASE}/etc/modules.mythvantage
-            /usr/bin/load-modules-mythvantage.sh
+            load-modules-mythvantage.sh
             ;;
     Usb-imon) echo "setup receiver-usb-imon"
               sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage
               echo "lirc_imon     #lirc" >> ${BASE}/etc/modules.mythvantage
-              /usr/bin/load-modules-mythvantage.sh
+              load-modules-mythvantage.sh
               ;;
+   Hauppauge) echo "setup hauppauge reciever (lirc_i2c)"
+              sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage
+              echo "lirc_i2c   #lirc" >> ${BASE}/etc/modules.mythvantage
+              cp $TEMPLATES/modules/lirc_i2c.conf ${BASE}/etc/modprobe.d/lirc_i2c.conf
+              rmmod lirc_i2c 2>/dev/null
+              load-modules-mythvantage.sh
+             ;;
            *)   sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage
               ;;
     esac
@@ -272,7 +279,7 @@ function setupLCD {
             ;;
     xno_lcd) echo "disabling lcd"
             sv down lcdd
-            /usr/bin/load-modules-mythvantage.sh  UNLOAD LCD
+            load-modules-mythvantage.sh  UNLOAD LCD
             sed -i -e '/.*#LCD/d' ${BASE}/etc/modules.mythvantage
             daemon_remove="lcdd $daemon_remove"
             ;;
@@ -292,7 +299,7 @@ function setupLCD {
                 cp -f $TEMPLATES/LCD/$LCDtype/LCDd.conf /etc
                # install="lcdproc $install"
                 daemon_add="lcdd $daemon_add"
-                /usr/bin/load-modules-mythvantage.sh
+                load-modules-mythvantage.sh
                 RESTART_FE="true"
                 RESTART_LCD="true"
             fi
@@ -1277,6 +1284,6 @@ case $SystemType in
             ;;
 esac
 echo $MVRELEASE > /etc/os_myth_release
-echo "systemtype=$smoltsystem" > /data/home/mythtv/.mythtv/smolt.info
-echo "remote=$Remotetype" >> /data/home/mythtv/.mythtv/smolt.info
+echo "systemtype=$smoltsystem" > /home/mythtv/.mythtv/smolt.info 2>/dev/null
+echo "remote=$Remotetype" >> /home/mythtv/.mythtv/smolt.info 2>/dev/null
 
diff --git a/abs/core-testing/LinHES-config/templates/modules/lirc_i2c.conf b/abs/core-testing/LinHES-config/templates/modules/lirc_i2c.conf
new file mode 100644
index 0000000..7b99f78
--- /dev/null
+++ b/abs/core-testing/LinHES-config/templates/modules/lirc_i2c.conf
@@ -0,0 +1,2 @@
+alias char-major-61 lirc_i2c
+options lirc_i2c debug=0 minor=3	
diff --git a/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircd.conf b/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircd.conf
new file mode 100644
index 0000000..c0849ef
--- /dev/null
+++ b/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircd.conf
@@ -0,0 +1,199 @@
+#
+# this config file was automatically generated
+# using lirc-0.5.5pre8 on Sun Apr 18 11:43:45 1999
+#
+# contributed by Jens Leuschner <leuschner@gmx.net>
+#
+# brand:             Hauppauge
+# model:             
+# supported devices: WinTV primo; WinTV pci; WinTV radio
+#
+# This config file will work with both homebrew receivers and 
+# original Hauppauge TV cards !!!
+#
+
+begin remote
+
+  name  Hauppauge
+  bits           13
+  flags SHIFT_ENC
+  eps            30
+  aeps          100
+
+  one           950   830
+  zero          950   830
+  plead         960
+  gap          89584
+  repeat_bit      2
+
+      begin codes
+          TV                       0x000000000000100F
+          RADIO                    0x000000000000100C
+          FULL_SCREEN              0x000000000000102E
+          CH+                      0x0000000000001020
+          CH-                      0x0000000000001021
+          VOL-                     0x0000000000001011
+          VOL+                     0x0000000000001010
+          MUTE                     0x000000000000100D
+          SOURCE                   0x0000000000001022
+          1                        0x0000000000001001
+          2                        0x0000000000001002
+          3                        0x0000000000001003
+          4                        0x0000000000001004
+          5                        0x0000000000001005
+          6                        0x0000000000001006
+          7                        0x0000000000001007
+          8                        0x0000000000001008
+          9                        0x0000000000001009
+          0                        0x0000000000001000
+          RESERVED                 0x000000000000101E
+          MINIMIZE                 0x0000000000001026
+      end codes
+
+end remote
+
+
+#
+# this config file was automatically generated
+# using lirc-0.6.6(animax) on Tue Apr 15 19:50:27 2003
+#
+# contributed by 
+#
+# brand: 				Hauppauge
+# model no. of remote control: 
+# devices being controlled by this remote: PVR 2/350
+#
+
+begin remote
+
+  name  hauppauge_pvr
+  bits           13
+  flags RC5|CONST_LENGTH
+  eps            30
+  aeps          100
+
+  one           969   811
+  zero          969   811
+  plead        1097
+  gap          114605
+  toggle_bit      2
+
+
+      begin codes
+          Power                    0x00000000000017FD
+          Go                       0x00000000000017FB
+          1                        0x00000000000017C1
+          2                        0x00000000000017C2
+          3                        0x00000000000017C3
+          4                        0x00000000000017C4
+          5                        0x00000000000017C5
+          6                        0x00000000000017C6
+          7                        0x00000000000017C7
+          8                        0x00000000000017C8
+          9                        0x00000000000017C9
+          Back/Exit                0x00000000000017DF
+          0                        0x00000000000017C0
+          Menu                     0x00000000000017CD
+          Red                      0x00000000000017CB
+          Green                    0x00000000000017EE
+          Yellow                   0x00000000000017F8
+          Blue                     0x00000000000017E9
+          Ch+                      0x00000000000017E0
+          Ch-                      0x00000000000017E1
+          Vol-                     0x00000000000017D1
+          Vol+                     0x00000000000017D0
+          Ok                       0x00000000000017E5
+          Mute                     0x00000000000017CF
+          Blank                    0x00000000000017CC
+          Full                     0x00000000000017FC
+          Rewind                   0x00000000000017F2
+          Play                     0x00000000000017F5
+          Forward                  0x00000000000017F4
+          Record                   0x00000000000017F7
+          Stop                     0x00000000000017F6
+          Pause                    0x00000000000017F0
+          Replay                   0x00000000000017E4
+          Skip                     0x00000000000017DE
+      end codes
+
+end remote
+
+
+#
+# this config file was automatically generated
+# using lirc-0.7.0(any) on Sun Nov 28 20:25:09 2004
+#
+# contributed by 
+#
+# brand:   Hauppauge 350
+# Created: G.J. Werler (The Netherlands)
+# Project: Mythtv Fedora Pundit-R www.mythtvportal.com
+# Date:    2004/11/28
+# model no. of remote control: Hauppauge A415-HPG
+# devices being controlled by this remote: PVR-350
+#
+
+begin remote
+
+  name  Hauppauge_350
+  bits           13
+  flags RC5|CONST_LENGTH
+  eps            30
+  aeps          100
+
+  one           969   811
+  zero          969   811
+  plead        1097
+  gap          114605
+  toggle_bit      2
+
+
+      begin codes
+          Go                       0x00000000000017BB
+          Power                    0x00000000000017BD
+          TV                       0x000000000000179C
+          Videos                   0x0000000000001798
+          Music                    0x0000000000001799
+          Pictures                 0x000000000000179A
+          Guide                    0x000000000000179B
+          Radio                    0x000000000000178C
+          Up                       0x0000000000001794
+          Left                     0x0000000000001796
+          Right                    0x0000000000001797
+          Down                     0x0000000000001795
+          OK                       0x00000000000017A5
+          Back/Exit                0x000000000000179F
+          Menu/i                   0x000000000000178D
+          Vol+                     0x0000000000001790
+          Vol-                     0x0000000000001791
+          Prev.Ch                  0x0000000000001792
+          Mute                     0x000000000000178F
+          Ch+                      0x00000000000017A0
+          Ch-                      0x00000000000017A1
+          Record                   0x00000000000017B7
+          Stop                     0x00000000000017B6
+          Rewind                   0x00000000000017B2
+          Play                     0x00000000000017B5
+          Forward                  0x00000000000017B4
+          Replay/SkipBackward      0x00000000000017A4
+          Pause                    0x00000000000017B0
+          SkipForward              0x000000000000179E
+          1                        0x0000000000001781
+          2                        0x0000000000001782
+          3                        0x0000000000001783
+          4                        0x0000000000001784
+          5                        0x0000000000001785
+          6                        0x0000000000001786
+          7                        0x0000000000001787
+          8                        0x0000000000001788
+          9                        0x0000000000001789
+          Asterix                  0x000000000000178A
+          0                        0x0000000000001780
+          #                        0x000000000000178E
+          Red                      0x000000000000178B
+          Green                    0x00000000000017AE
+          Yellow                   0x00000000000017B8
+          Blue                     0x00000000000017A9
+      end codes
+
+end remote
diff --git a/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircrc b/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircrc
new file mode 100644
index 0000000..2f1e514
--- /dev/null
+++ b/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircrc
@@ -0,0 +1,505 @@
+# lircrc.example.HauppaugeGrey-nativelirc
+# 2003-09-17, Robert Kulagowski
+# mailto:rkulagow@rocketmail.com
+# Save this file in ~/.mythtv/lircrc
+
+begin
+    prog = mythtv
+    button = Power
+    config = Esc
+end
+
+begin
+    prog = mythtv
+    button = Go
+# Swap the PiP windows
+    config = N
+end
+
+begin
+    prog = mythtv
+    button = 1
+    config = 1
+end
+
+begin
+    prog = mythtv
+    button = 2
+    config = 2
+end
+
+begin
+    prog = mythtv
+    button = 3
+    config = 3
+end
+
+begin
+    prog = mythtv
+    button = 4
+    config = 4
+end
+
+begin
+    prog = mythtv
+    button = 5
+    config = 5
+end
+
+begin
+    prog = mythtv
+    button = 6
+    config = 6
+end
+
+begin
+    prog = mythtv
+    button = 7
+    config = 7
+end
+
+begin
+    prog = mythtv
+    button = 8
+    config = 8
+end
+
+begin
+    prog = mythtv
+    button = 9
+    config = 9
+end
+
+begin
+    prog = mythtv
+    button = Back/Exit
+    config = Esc
+end
+
+begin
+    prog = mythtv
+    button = 0
+    config = 0
+end
+
+begin
+    prog = mythtv
+    button = Menu
+    config = M
+end
+
+# Below are keys used with the Hauppauge Grey remote
+
+begin
+   prog = mythtv
+# This is the Red key
+# We'll use it for "Delete"
+   button = Red
+   config = D
+end
+
+begin
+   prog = mythtv
+# This is the Green key
+# We'll use it for "Information"
+   button = Green
+   config = I
+end
+
+# Note the "repeat = " strings in the volume and channel.
+# This means that if you hold down the key, every nth instance will be
+# passed.  This depends on your system, so you may want to increase or
+# decrease this and see what happens.  repeat = 1 is probably too
+# fast.
+
+begin
+  prog = mythtv
+# This is the Yellow key
+# Use it as a volume key
+  button = Yellow
+  repeat = 3
+  config = F10
+end
+
+begin
+  prog = mythtv
+# This is the Blue key
+# Use it as a volume key
+  button = Blue
+  repeat = 3
+  config = F11
+end
+
+begin
+    prog = mythtv
+    button = Ch+
+# This is the "up" on the central diamond
+    repeat = 3
+    config = Up
+end
+
+begin
+    prog = mythtv
+    button = Ch-
+# This is the "down" on the central diamond
+    repeat = 3
+    config = Down
+end
+
+begin
+    prog = mythtv
+    button = Vol-
+# This is the "left" on the central diamond
+    repeat = 3
+    config = Left
+end
+
+begin
+    prog = mythtv
+    button = Vol+
+# This is the "right" on the central diamond
+    repeat = 3
+    config = Right
+end
+
+begin
+    prog = mythtv
+# Middle button on the diamond
+    button = Ok
+    config = Return
+end
+
+begin
+    prog = mythtv
+    button = Mute
+    config = F9
+end
+
+begin
+   prog = mythtv
+# Change focus for PiP (to change channel in the other window)
+   button = Blank
+   config = B
+end
+
+begin
+   prog = mythtv
+# Toggle PiP on/off
+   button = Full
+   config = V
+end
+
+begin
+    prog = mythtv
+    button = Rewind
+    config = Left
+end
+
+begin
+    prog = mythtv
+    button = Play
+    config = P
+end
+
+begin
+    prog = mythtv
+    button = Forward
+    config = Right
+end
+
+begin
+  prog = mythtv
+  button = Record
+  config = R
+end
+
+begin
+   prog = mythtv
+# Teletext
+   button = Stop
+   config = T
+end
+
+begin
+    prog = mythtv
+    button = Pause
+    config = P
+end
+
+begin
+   prog = mythtv
+   button = Replay
+# Use for backwards commercial skip
+    config = Q
+end
+
+begin
+   prog = mythtv
+   button = Skip
+# Use for forward commercial skip
+    config = Z
+end
+
+#MPlayer
+begin
+   prog = mplayer
+   button = Power
+   config = quit
+end
+
+begin
+   prog = mplayer
+   button = Menu
+   config = osd
+end
+
+begin
+   prog = mplayer
+   button = Rewind
+   config = seek -10
+   repeat = 1
+end
+
+begin
+   prog = mplayer
+   button = Forward
+   config = seek +10
+   repeat = 1
+end
+
+begin
+   prog = mplayer
+   button = Replay
+   config = seek -60
+   repeat = 1
+end
+
+begin
+   prog = mplayer
+   button = Skip
+   config = seek +60
+   repeat = 1
+end
+
+begin
+    prog = mplayer
+    button = Pause
+    config = pause
+end
+
+begin
+    prog = mplayer
+    button = Play
+    config = pause
+end
+
+begin
+   prog = mplayer
+   button = Back/Exit
+   config = quit
+end
+
+begin
+   prog = mplayer
+   button = Vol+
+   config = volume +1
+   repeat = 1
+end
+
+begin
+   prog = mplayer
+   button = Vol-
+   config = volume -1
+   repeat = 1
+end
+
+begin
+   prog = mplayer
+   button = Mute
+   config = mute
+end
+##XINE
+
+ begin
+ prog = xine
+ button = Play
+ repeat = 3
+ config = Play
+ end
+
+ begin
+ prog = xine
+ button = Stop
+ repeat = 3
+ config = Stop
+ end
+
+ begin
+ prog = xine
+ button = Back/Exit
+ config = Quit
+ end
+
+ begin
+ prog = xine
+ button = Pause
+ repeat = 3
+ config = Pause
+ end
+
+ begin
+ prog = xine
+ button = Ch+
+ repeat = 4
+ config = EventUp
+ end
+
+ begin
+ prog = xine
+ button = Ch-
+ repeat = 4
+ config = EventDown
+ end
+
+ begin
+ prog = xine
+ button = Vol-
+ repeat = 4
+ config = EventLeft
+ end
+
+ begin
+ prog = xine
+ button = Vol+
+ repeat = 4
+ config = EventRight
+ end
+
+ begin
+ prog = xine
+ button = Ok
+ repeat = 0
+ config = EventSelect
+ end
+
+ begin
+ prog = xine
+ button = Menu
+ repeat = 0
+ config = Menu
+ end
+
+ #vol down
+ begin
+ prog = xine
+ button = Yellow
+ repeat = 1
+ config = Volume-
+ end
+
+ #vol up
+ begin
+ prog = xine
+ button = Red
+ repeat = 1
+ config = Volume+
+ end
+
+ begin
+ prog = xine
+ button = Forward
+ repeat = 2
+ config = SeekRelative+30
+ end
+
+ begin
+ prog = xine
+ button = Rewind
+ repeat = 2
+ config = SeekRelative-30
+ end
+
+ #ch up
+ begin
+ prog = xine
+ button = Green
+ repeat = 1
+ config = SeekRelative+60
+ end
+
+ #ch down
+ begin
+ prog = xine
+ button = Blue
+ repeat = 1
+ config = SeekRelative-60
+ end
+
+ #sleep
+ begin
+ prog = xine
+ button = Go
+ repeat = 1
+ config = ZoomIn
+ end
+
+ #display
+ begin
+ prog = xine
+ button = Skip
+ repeat = 1
+ config = ZoomOut
+ end
+
+ #skip chapter forward
+ begin
+ prog = xine
+ button = Skip
+ repeat = 1
+ config = EventNext
+ end
+
+ #skip chapter backward
+ begin
+ prog = xine
+ button = Replay
+ repeat = 1
+ config = EventPrior
+ end
+
+ begin
+ prog = lircnav
+ button = Vol-
+ config = page_down
+ end
+
+ begin
+ prog = lircnav
+ button = Vol+
+ config = page_up
+ end
+
+ begin
+ prog = lircnav
+ button = Ch+
+ config = up
+ end
+
+ begin
+ prog = lircnav
+ button = Ch-
+ config = down
+ end
+
+ begin
+ prog = lircnav
+ button = Ok
+ config = select
+ end
+
+ begin
+ prog = lircnav
+ button = Power
+ config = quit
+ end
+
diff --git a/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/preview.jpg b/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/preview.jpg
new file mode 100644
index 0000000..a40a1e8
Binary files /dev/null and b/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/preview.jpg differ
diff --git a/abs/core-testing/LinHES-config/templates/remotes/i2c.id b/abs/core-testing/LinHES-config/templates/remotes/i2c.id
new file mode 100644
index 0000000..50e89e9
--- /dev/null
+++ b/abs/core-testing/LinHES-config/templates/remotes/i2c.id
@@ -0,0 +1,5 @@
+0070:4000|Hauppauge|WinTV PVR 250|hauppauge-grey
+0070:4009|Hauppauge|WinTV PVR 250|hauppauge-grey
+0070:4801|Hauppauge|WinTV PVR 250|hauppauge-grey
+0070:4803|Hauppauge|WinTV PVR 250|hauppauge-grey
+0070:0003|Hauppauge|WinTV PVR 250|hauppauge-grey
\ No newline at end of file
diff --git a/abs/core-testing/LinHES-system/PKGBUILD b/abs/core-testing/LinHES-system/PKGBUILD
index 6403dbd..cad31f3 100644
--- a/abs/core-testing/LinHES-system/PKGBUILD
+++ b/abs/core-testing/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=1.0
-pkgrel=14
+pkgrel=17
 arch=('i686')
 MVDIR=$startdir/pkg/usr/LH
 BINDIR=$startdir/pkg/usr/bin
@@ -8,7 +8,7 @@ install=LinHES.install
 pkgdesc="scripts and things related to having a automated system"
 depends=()
 
-binfiles="LinHES-start optimize_mythdb.py myth_mtc.py myth_mtc.sh LinHES-run firstboot.sh"
+binfiles="LinHES-start optimize_mythdb.py myth_mtc.py myth_mtc.sh LinHES-run firstboot.sh load-modules-mythvantage.sh"
 
 source=(LinHES-session LinHES-profile.sh $binfiles)
 
diff --git a/abs/core-testing/LinHES-system/load-modules-mythvantage.sh b/abs/core-testing/LinHES-system/load-modules-mythvantage.sh
new file mode 100755
index 0000000..8382a29
--- /dev/null
+++ b/abs/core-testing/LinHES-system/load-modules-mythvantage.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+#/usr/bin/load-modules-mythvantage.sh  UNLOAD LCD
+. /etc/systemconfig
+
+case $1 in
+UNLOAD|unload )
+            MODULELIST=`grep /etc/modules.mythvantage $2`
+            for i in $MODULELIST
+            do
+                /sbin/rmmod $i
+            done
+
+            ;;
+
+   *)   echo "- Loading MythVantage-modules"
+        #try to load the cx88 modules
+        if [ ! x$SystemType = xFrontend_only ]
+        then
+        	/sbin/modprobe cx88-dvb 2>/dev/null
+        fi
+
+        if [ -f /etc/modules.mythvantage ]
+        then
+	       while read line
+	       do
+                module=`echo $line |cut -d# -f1`
+	           /sbin/modprobe $module
+
+	       done < /etc/modules.mythvantage
+        fi
+esac
+
diff --git a/abs/core-testing/runit-scripts/PKGBUILD b/abs/core-testing/runit-scripts/PKGBUILD
index 6df1bae..cc00956 100755
--- a/abs/core-testing/runit-scripts/PKGBUILD
+++ b/abs/core-testing/runit-scripts/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=runit-scripts
 pkgver=1.8.0
-pkgrel=18
+pkgrel=21
 pkgdesc="collection of startup scripts for runit"
 url="http://smarden.org/runit/"
 license="BSD"
diff --git a/abs/core-testing/runit-scripts/runitscripts/1 b/abs/core-testing/runit-scripts/runitscripts/1
index 748930f..b9ff184 100755
--- a/abs/core-testing/runit-scripts/runitscripts/1
+++ b/abs/core-testing/runit-scripts/runitscripts/1
@@ -2,7 +2,7 @@
 /etc/rc.sysinit
 hostname `cat /etc/hostname`
 /sbin/sysctl -p 2>/dev/null >/dev/null
-#/usr/bin/load-modules-mythvantage.sh
+/usr/LH/bin/load-modules-mythvantage.sh
 rm /etc/dhcpc/dhcpcd*.pid  2>/dev/null
 rm -f /etc/sv/frontend/.runtime/* 2>/dev/null
 rm -f /etc/runit/reboot 2>/dev/null
diff --git a/abs/core-testing/runit-scripts/runitscripts/services/lircd/run b/abs/core-testing/runit-scripts/runitscripts/services/lircd/run
index 9908256..ceda8db 100755
--- a/abs/core-testing/runit-scripts/runitscripts/services/lircd/run
+++ b/abs/core-testing/runit-scripts/runitscripts/services/lircd/run
@@ -33,7 +33,9 @@ case $ReceiverType in
 	Usb-imon)
 		DEVICE=/dev/lirc_imon	
 	;;
-
+    Hauppauge)
+        DEVICE=/dev/lirc3
+        ;;
 	*) 
 
 		DEVICE=`ls  /dev/lirc[0-9] 2>/dev/null |sort |sed '/./,$!d'|head -n 1 `
diff --git a/abs/mv-core/MythVantage-config/install_functions.sh b/abs/mv-core/MythVantage-config/install_functions.sh
index 84f9c94..1d217e9 100755
--- a/abs/mv-core/MythVantage-config/install_functions.sh
+++ b/abs/mv-core/MythVantage-config/install_functions.sh
@@ -49,9 +49,31 @@ function setupremote {
             /usr/sbin/lircd  -d /dev/lirc0
         mkdir /root/.mythtv
         ln -s /etc/lircrc /root/.mythtv/lircrc
+     else
+        echo "Couldn't open directory $TEMPLATES/remotes/$Remotetype"
     fi
 }
 
+function scan_for_hpg_receiver() {
+echo "Scanning for Hauppauge receiver"
+for hpgid in `lspci -nm  -d4444: |cut -d" " -f6-  |tr -d '"'|tr " " :`
+do
+    line=`grep $hpgid $TEMPLATES/remotes/i2c.id`
+    if [ $? = 0 ]
+    then
+        modprobe lirc_i2c
+        FoundReceiverType=`echo "$line"|cut -d"|" -f2`
+        Remotetype=`echo "$line"|cut -d"|" -f4`
+        statusline=`echo "$line"|cut -d"|" -f2,4`
+        echo "Found $statusline , $Remotetype"
+        update_db_settings  HostReceiverType $FoundReceiverType
+        setupremote
+        break
+    fi
+
+done
+}
+
 function scan_for_usb_remote () {
 echo "Scanning for usb receiver/remote"
 while read line
@@ -67,6 +89,7 @@ do
         break
     fi
 done <$BASE/$TEMPLATES/remotes/receiver_usb.id
+scan_for_hpg_receiver
 }
 
 function rest_of_network () {
diff --git a/abs/mv-core/MythVantage-config/systemconfig.sh b/abs/mv-core/MythVantage-config/systemconfig.sh
index 3fbf9b1..4885f5a 100755
--- a/abs/mv-core/MythVantage-config/systemconfig.sh
+++ b/abs/mv-core/MythVantage-config/systemconfig.sh
@@ -21,23 +21,23 @@ postfix=`cat ${BASE}/usr/local/share/mythtv/.releasetype`
 PKGBLACKLIST=$BASE/etc/blacklist.package
 
 if [ x$1 = x"Mysql_only" ]
-    then
-	rm -f /tmp/mysql.txt
-        sed -e "s/^DBHostName=.*$/DBHostName=$2/" $TEMPLATES/mysql.txt > /tmp/mysql.txt
-        exit 0
-    fi
+then
+    rm -f /tmp/mysql.txt
+    sed -e "s/^DBHostName=.*$/DBHostName=$2/" $TEMPLATES/mysql.txt > /tmp/mysql.txt
+    exit 0
+fi
 
 
 if [ -f /etc/systemconfig ]
 then
-	. /etc/systemconfig
-setup_MYTH_vars
-TEMPNET="Hostip"$default_interface
-echo $TEMPNET
-eval MYTHIP=\$${TEMPNET}
+    . /etc/systemconfig
+    setup_MYTH_vars
+    TEMPNET="Hostip"$default_interface
+    echo $TEMPNET
+    eval MYTHIP=\$${TEMPNET}
 else
-	echo "could not find /etc/systemconfig"
-	exit 1
+    echo "could not find /etc/systemconfig"
+    exit 1
 fi
 
 
@@ -47,60 +47,60 @@ fi
 
 function setupmysql  {
 #setup mysql.txt to find the database servers
-        if [ $SystemType = "Master_backend" ]
-        then
-            if [ $MYTHDHCP = 0 ]
-            then
-                #this grabs eth0, as that is all thats supported.
-#                dbhost=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1`
-                dbhost=`ifconfig  | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'`
-                sed -e "s/^dbhost=.*$/dbhost=\"$dbhost\"/" /etc/systemconfig >/tmp/systemconfig.old
-                cp /tmp/systemconfig.old ${BASE}/etc/systemconfig
-                ##logic to change master_serverip and backend_serverip  in db
-                ${BASE}${MV_ROOT}/bin/restore_default_settings.sh  -c BECONFIG -s master -a $dbhost
-            else
+if [ $SystemType = "Master_backend" ]
+then
+    if [ $MYTHDHCP = 0 ]
+    then
+        #this grabs eth0, as that is all thats supported.
+        #                dbhost=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1`
+        dbhost=`ifconfig  | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'`
+        sed -e "s/^dbhost=.*$/dbhost=\"$dbhost\"/" /etc/systemconfig >/tmp/systemconfig.old
+        cp /tmp/systemconfig.old ${BASE}/etc/systemconfig
+        ##logic to change master_serverip and backend_serverip  in db
+        ${BASE}${MV_ROOT}/bin/restore_default_settings.sh  -c BECONFIG -s master -a $dbhost
+    else
 
-                dbhost=$MYTHIP
-                sed -e "s/^dbhost=.*$/dbhost=\"$dbhost\"/" /etc/systemconfig >/tmp/systemconfig.old
-                cp /tmp/systemconfig.old ${BASE}/etc/systemconfig
-                #logic to change dbhost in db
-                ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s master -a $dbhost
-            fi
-        fi
+        dbhost=$MYTHIP
+        sed -e "s/^dbhost=.*$/dbhost=\"$dbhost\"/" /etc/systemconfig >/tmp/systemconfig.old
+        cp /tmp/systemconfig.old ${BASE}/etc/systemconfig
+        #logic to change dbhost in db
+        ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s master -a $dbhost
+    fi
+fi
 
-        if [ $SystemType = "Slave_backend" ]
-        then
-            if [ $MYTHDHCP = 0 ]
-            then
-                #this grabs eth0, as that is all thats supported.
-                #slavehost=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1`
-                slavehost=`ifconfig  | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'`
-                ##logic to change backend_serverip in db
-                ${BASE}${MV_ROOT}/bin/restore_default_settings.sh  -c BECONFIG -s slave  -a $slavehost
-            else
-                slavehost=$MYTHIP
+if [ $SystemType = "Slave_backend" ]
+then
+    if [ $MYTHDHCP = 0 ]
+    then
+        #this grabs eth0, as that is all thats supported.
+        #slavehost=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1`
+        slavehost=`ifconfig  | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'`
+        ##logic to change backend_serverip in db
+        ${BASE}${MV_ROOT}/bin/restore_default_settings.sh  -c BECONFIG -s slave  -a $slavehost
+    else
+        slavehost=$MYTHIP
 
-                #logic to change backend_serverif in db
-                ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s slave  -a $slavehost
-            fi
-        fi
+        #logic to change backend_serverif in db
+        ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s slave  -a $slavehost
+    fi
+fi
 
-        MYSQLTXT=${BASE}/usr/local/share/mythtv/mysql.txt
-        if [ $SystemType = "Standalone" ]
-        then
-            sed -e "s/^DBHostName=.*$/DBHostName="localhost"/" $TEMPLATES/mysql.txt > $MYSQLTXT
-        else
-            sed -e "s/^DBHostName=.*$/DBHostName=$dbhost/" $TEMPLATES/mysql.txt > $MYSQLTXT
-        fi
-        rm ${BASE}/data/home/mythtv/.mythtv/mysql.txt
-        rm ${BASE}${MV_ROOT}/bin/mythtv/.mythtv/mysql.txt
-        if [ -f ${BASE}/data/home/mythtv/templates/mysql.txt ]
-        then
-            cp ${BASE}/data/home/mythtv/templates/mysql.txt $MYSQLTXT
-        fi
+MYSQLTXT=${BASE}/usr/local/share/mythtv/mysql.txt
+if [ $SystemType = "Standalone" ]
+then
+    sed -e "s/^DBHostName=.*$/DBHostName="localhost"/" $TEMPLATES/mysql.txt > $MYSQLTXT
+else
+    sed -e "s/^DBHostName=.*$/DBHostName=$dbhost/" $TEMPLATES/mysql.txt > $MYSQLTXT
+fi
+rm ${BASE}/data/home/mythtv/.mythtv/mysql.txt
+rm ${BASE}${MV_ROOT}/bin/mythtv/.mythtv/mysql.txt
+if [ -f ${BASE}/data/home/mythtv/templates/mysql.txt ]
+then
+    cp ${BASE}/data/home/mythtv/templates/mysql.txt $MYSQLTXT
+fi
 
-        chmod 755 $MYSQLTXT
-        chown mythtv $MYSQLTXT
+chmod 755 $MYSQLTXT
+chown mythtv $MYSQLTXT
 
 }
 
@@ -111,28 +111,28 @@ status=$?
 
 
 
-    if [ $SystemType = "Standalone" ]
-         then
-            sed -ie "s/^#skip-networking/skip-networking/g" $BASE/$MFILE
-            if [ $status = 0 ]
-            then
-                sudo sv restart mysql
-	        echo "restarting mysql with   no network"
-            fi
+if [ $SystemType = "Standalone" ]
+then
+    sed -ie "s/^#skip-networking/skip-networking/g" $BASE/$MFILE
+    if [ $status = 0 ]
+    then
+        sudo sv restart mysql
+        echo "restarting mysql with   no network"
+    fi
 
-        fi
+fi
 
-    if [ $SystemType = "Master_backend" ]
+if [ $SystemType = "Master_backend" ]
+then
+    sed -ie "s/^skip-networking/#skip-networking/g" $BASE/$MFILE
+    if [ $status = 1 ]
     then
-          sed -ie "s/^skip-networking/#skip-networking/g" $BASE/$MFILE
-            if [ $status = 1 ]
-            then
-                sudo sv restart mysql
-		        echo "restarting mysql with network"
-            fi
-
+        sudo sv restart mysql
+        echo "restarting mysql with network"
     fi
 
+fi
+
 
 }
 
@@ -146,102 +146,110 @@ fi
 rm ${BASE}/etc/localtime
 echo $timezone
 ln -s "/usr/share/zoneinfo/$timezone"  ${BASE}/etc/localtime
-        sed -e "s~^TIMEZONE=.*$~TIMEZONE=\"${timezone}\"~" ${BASE}/etc/rc.conf > $TEMPLATES/rc.conf
+sed -e "s~^TIMEZONE=.*$~TIMEZONE=\"${timezone}\"~" ${BASE}/etc/rc.conf > $TEMPLATES/rc.conf
 
-       # echo CLOCK="UTC" > ${BASE}/etc/conf.dclock
-       # echo CLOCK_SYSTOCH="yes" >> ${BASE}/etc/conf.d/clock
-       # echo TIMEZONE="$timezone" >> ${BASE}/etc/conf.d/clock
+# echo CLOCK="UTC" > ${BASE}/etc/conf.dclock
+# echo CLOCK_SYSTOCH="yes" >> ${BASE}/etc/conf.d/clock
+# echo TIMEZONE="$timezone" >> ${BASE}/etc/conf.d/clock
 cp $TEMPLATES/rc.conf /etc/rc.conf
 
 }
 
 
 function setupreceiver {
-   case $ReceiverType in
+case $ReceiverType in
     tinker) echo "do nothing"
-            ;;
+    ;;
     Serial) echo "setup serial lirc"
-            sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage
-            echo "lirc_serial   #lirc" >> ${BASE}/etc/modules.mythvantage
-            /usr/bin/load-modules-mythvantage.sh
-            ;;
+    sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage
+    echo "lirc_serial   #lirc" >> ${BASE}/etc/modules.mythvantage
+    /usr/bin/load-modules-mythvantage.sh
+    ;;
     Usb-imon) echo "setup receiver-usb-imon"
-              sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage
-              echo "lirc_imon     #lirc" >> ${BASE}/etc/modules.mythvantage
-              /usr/bin/load-modules-mythvantage.sh
-              ;;
-           *)   sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage
-              ;;
-    esac
+    sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage
+    echo "lirc_imon     #lirc" >> ${BASE}/etc/modules.mythvantage
+    /usr/bin/load-modules-mythvantage.sh
+    ;;
+    Hauppauge) echo "setup hauppauge reciever (lirc_i2c)"
+    sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage
+    echo "lirc_i2c   #lirc" >> ${BASE}/etc/modules.mythvantage
+    cp $TEMPLATES/modules/lirc_i2c.conf ${BASE}/etc/modprobe.d/lirc_i2c.conf
+    rmmod lirc_i2c 2>/dev/null
+    load-modules-mythvantage.sh
+    ;;
+
+    *)   sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage
+    ;;
+esac
 
 
 }
 
 function setupremote {
-     case $Remotetype in
-        no_remote) echo "No remote selected"
-                daemon_remove="lircd $daemon_remove"
-                ;;
-        tinker) echo "Remote in tinker mode"
-                ;;
-            *)  echo "Setup remote"
-                mv ${BASE}/etc/lircd.conf ${BASE}/etc/lircd.conf.`date +%Y-%m-%d-%H-%M`
-                cd $TEMPLATES/remotes/$Remotetype
-                for i in lircd*
-                do
-                        cat $i >> ${BASE}/etc/lircd.conf
-                done
-                cp lircrc ${BASE}/etc/lircrc
-                if [ -f $TEMPLATES/LCD/$LCDtype/lircrc ]
-                then
-                    cat $TEMPLATES/LCD/$LCDtype/lircrc >> /etc/lircrc
-                    cat $TEMPLATES/LCD/$LCDtype/lircd.conf >> /etc/lircd.conf
-                fi
-                if [ -f $TEMPLATES/transmit/$Blastertype/lircd.conf ]
-                then
-                    cat $TEMPLATES/transmit/$Blastertype/lircd.conf  >> ${BASE}/etc/lircd.conf
-                fi
-                chmod 755 /etc/lircrc
-                daemon_add="lircd $daemon_add"
-                sv hup lircd
-                ;;
+case $Remotetype in
+    no_remote) echo "No remote selected"
+    daemon_remove="lircd $daemon_remove"
+    ;;
+    tinker) echo "Remote in tinker mode"
+    ;;
+    *)  echo "Setup remote"
+    mv ${BASE}/etc/lircd.conf ${BASE}/etc/lircd.conf.`date +%Y-%m-%d-%H-%M`
+    cd $TEMPLATES/remotes/$Remotetype
+    for i in lircd*
+    do
+        cat $i >> ${BASE}/etc/lircd.conf
+    done
+    cp lircrc ${BASE}/etc/lircrc
+    if [ -f $TEMPLATES/LCD/$LCDtype/lircrc ]
+    then
+        cat $TEMPLATES/LCD/$LCDtype/lircrc >> /etc/lircrc
+        cat $TEMPLATES/LCD/$LCDtype/lircd.conf >> /etc/lircd.conf
+    fi
+    if [ -f $TEMPLATES/transmit/$Blastertype/lircd.conf ]
+    then
+        cat $TEMPLATES/transmit/$Blastertype/lircd.conf  >> ${BASE}/etc/lircd.conf
+    fi
+    chmod 755 /etc/lircrc
+    daemon_add="lircd $daemon_add"
+    sv hup lircd
+    ;;
 esac
 
 }
 
 function setupblaster {
-        #cd $TEMPLATES/transmit/$Blastertype
-        #for i in lircd*
-        #do
-         #       cat lircd.conf  >> ${BASE}/etc/lircd.conf
-        #done
-      #  REMOTE_NAME${BASE}/usr/bin/change_chan.sh=`grep name lircd.conf* |awk -F" " ' { print $2 } '`
-         sed -e "s/^REMOTE_NAME=.*$/REMOTE_NAME=${Blastertype} /" $TEMPLATES/change_chan.sh > ${BASE}/usr/bin/change_chan.sh
-          chmod 755 ${BASE}/usr/bin/change_chan.sh
-        #channel change script change
-        setupremote
+#cd $TEMPLATES/transmit/$Blastertype
+#for i in lircd*
+#do
+#       cat lircd.conf  >> ${BASE}/etc/lircd.conf
+#done
+#  REMOTE_NAME${BASE}/usr/bin/change_chan.sh=`grep name lircd.conf* |awk -F" " ' { print $2 } '`
+sed -e "s/^REMOTE_NAME=.*$/REMOTE_NAME=${Blastertype} /" $TEMPLATES/change_chan.sh > ${BASE}/usr/bin/change_chan.sh
+chmod 755 ${BASE}/usr/bin/change_chan.sh
+#channel change script change
+setupremote
 
 }
 
 function setupevrouter {
-    if [  x$UseEvrouter  = x1 ]
-    then
-        case x$EvrouterConfig in
-            xtinker )
-                    echo "do nothing for evrouter"
-                    ;;
-                x ) echo "empty evrouter"
-                    ;;
-                * ) echo "setup evrouter for $EvrouterConfig "
-                    cp $TEMPLATES/evrouter/$EvrouterConfig /etc/evrouter.cfg
-                    daemon_add="evrouter Xvfb $daemon_remove"
-
-                    ;;
-        esac
-    else
+if [  x$UseEvrouter  = x1 ]
+then
+    case x$EvrouterConfig in
+        xtinker )
+        echo "do nothing for evrouter"
+        ;;
+        x ) echo "empty evrouter"
+        ;;
+        * ) echo "setup evrouter for $EvrouterConfig "
+        cp $TEMPLATES/evrouter/$EvrouterConfig /etc/evrouter.cfg
+        daemon_add="evrouter Xvfb $daemon_remove"
+
+        ;;
+    esac
+else
     # disable evrouter
     daemon_remove="evrouter Xvfb $daemon_remove"
-    fi
+fi
 
 
 
@@ -249,64 +257,64 @@ function setupevrouter {
 }
 
 function setupLCD {
-   case x$LCDtype in
+case x$LCDtype in
     xtinker) echo "do nothing"
-            ;;
+    ;;
     xno_lcd) echo "disabling lcd"
-            sv down lcdd
-            /usr/bin/load-modules-mythvantage.sh  UNLOAD LCD
-            sed -i -e '/.*#LCD/d' ${BASE}/etc/modules.mythvantage
-            daemon_remove="lcdd $daemon_remove"
-            ;;
-        x) echo "empty lcd" ;;
+    sv down lcdd
+    /usr/bin/load-modules-mythvantage.sh  UNLOAD LCD
+    sed -i -e '/.*#LCD/d' ${BASE}/etc/modules.mythvantage
+    daemon_remove="lcdd $daemon_remove"
+    ;;
+    x) echo "empty lcd" ;;
 
-         *) echo "setup lcd"
-            if [ -f $TEMPLATES/LCD/$LCDtype/modules  ]
-            then
-              sed -i -e '/.*#LCD/d' ${BASE}/etc/modules.mythvantage
-              cat $TEMPLATES/LCD/$LCDtype/modules >> ${BASE}/etc/modules.mythvantage
-              #should also modprobe
-            fi
+    *) echo "setup lcd"
+    if [ -f $TEMPLATES/LCD/$LCDtype/modules  ]
+    then
+        sed -i -e '/.*#LCD/d' ${BASE}/etc/modules.mythvantage
+        cat $TEMPLATES/LCD/$LCDtype/modules >> ${BASE}/etc/modules.mythvantage
+        #should also modprobe
+    fi
 
 
-            if [ -f $TEMPLATES/LCD/$LCDtype/LCDd.conf ]
-            then
-                cp -f $TEMPLATES/LCD/$LCDtype/LCDd.conf /etc
-               # install="lcdproc $install"
-                daemon_add="lcdd $daemon_add"
-                /usr/bin/load-modules-mythvantage.sh
-                RESTART_FE="true"
-                RESTART_LCD="true"
-            fi
-            #check if lirc capable,if so then call setupremote
-            if [ -f $TEMPLATES/LCD/$LCDtype/lircrc ]
-            then
-                setupremote
-            fi
-            ;;
-    esac
+    if [ -f $TEMPLATES/LCD/$LCDtype/LCDd.conf ]
+    then
+        cp -f $TEMPLATES/LCD/$LCDtype/LCDd.conf /etc
+        # install="lcdproc $install"
+        daemon_add="lcdd $daemon_add"
+        /usr/bin/load-modules-mythvantage.sh
+        RESTART_FE="true"
+        RESTART_LCD="true"
+    fi
+    #check if lirc capable,if so then call setupremote
+    if [ -f $TEMPLATES/LCD/$LCDtype/lircrc ]
+    then
+        setupremote
+    fi
+    ;;
+esac
 
 }
 
 
 
 function scrubnfs {
-	   cp /etc/fstab $TEMPLATES/fstab.conf.template
-       grep -v nfs   $TEMPLATES/fstab.conf.template > ${BASE}/etc/fstab
+cp /etc/fstab $TEMPLATES/fstab.conf.template
+grep -v nfs   $TEMPLATES/fstab.conf.template > ${BASE}/etc/fstab
    }
 
-function setupfstab () {
-#    	setupfstab $NFSserver $NFSshare $NFSmount
-         echo "$1 $2  nfs" >> ${BASE}/etc/fstab
-         if [ ! -e "$2" ]
-         then
-           mkdir -p "$2"
-           chown mythtv:mythtv "$2"
-         fi
-         if [ x$DCONFIG = x  ]
-         then
-            mount $2 &
-        fi
+   function setupfstab () {
+   #    	setupfstab $NFSserver $NFSshare $NFSmount
+   echo "$1 $2  nfs" >> ${BASE}/etc/fstab
+   if [ ! -e "$2" ]
+   then
+       mkdir -p "$2"
+       chown mythtv:mythtv "$2"
+   fi
+   if [ x$DCONFIG = x  ]
+   then
+       mount $2 &
+   fi
 
 }
 
@@ -316,8 +324,8 @@ function setupncidclient
 }
 
 function setupnciddaemon {
-    cp -f /etc/ncid/ncidd.conf $TEMPLATES/ncidd.conf.template
-    sed -e "s/.*set ttyport.*$/set ttyport =  \/dev\/$nciddSerialPort /" $TEMPLATES/ncidd.conf.template >${BASE}/etc/ncid/ncidd.conf
+cp -f /etc/ncid/ncidd.conf $TEMPLATES/ncidd.conf.template
+sed -e "s/.*set ttyport.*$/set ttyport =  \/dev\/$nciddSerialPort /" $TEMPLATES/ncidd.conf.template >${BASE}/etc/ncid/ncidd.conf
 
 }
 
@@ -337,18 +345,18 @@ restrict 10.0.0.0 mask 255.0.00 nomodify
 
 #servers to sync with
 EOF
-        #this is used for backend or standlone types
-        if [ $1 = "1" ]
-                then
-                        echo "server ntp1.cs.wisc.edu" >> ${BASE}/etc/ntp.conf
-                        echo "server ntp3.sf-bay.org"  >> ${BASE}/etc/ntp.conf
-                        echo "restrict ntp1.cs.wisc.edu noquery nomodify" >> ${BASE}/etc/ntp.conf
-                        echo "restrict ntp3.sf-bay.org noquery nomodify" >> ${BASE}/etc/ntp.conf
+#this is used for backend or standlone types
+if [ $1 = "1" ]
+then
+    echo "server ntp1.cs.wisc.edu" >> ${BASE}/etc/ntp.conf
+    echo "server ntp3.sf-bay.org"  >> ${BASE}/etc/ntp.conf
+    echo "restrict ntp1.cs.wisc.edu noquery nomodify" >> ${BASE}/etc/ntp.conf
+    echo "restrict ntp3.sf-bay.org noquery nomodify" >> ${BASE}/etc/ntp.conf
 
-                else
-                        echo "server $dbhost" >> ${BASE}/etc/ntp.conf
-                        echo "restrict $dbhost noquery nomodify" >> ${BASE}/etc/ntp.conf
-                fi
+else
+    echo "server $dbhost" >> ${BASE}/etc/ntp.conf
+    echo "restrict $dbhost noquery nomodify" >> ${BASE}/etc/ntp.conf
+fi
 
 
 }
@@ -360,19 +368,19 @@ pkglistremove=""
 #default enabled
 for i in mythcontrols mythgallery mythmovietime mythmusic mythsmolt mythvideo
 do
-eval pkgvalue=\$${i}
+    eval pkgvalue=\$${i}
 
-if [ x$pkgvalue = x ]
- then
-     pkglistinstall="$pkglistinstall $i$postfix"
-     else
-     if [ x$pkgvalue = x1 ]
-     then
-         pkglistinstall="$pkglistinstall $i$postfix"
-     else
-         pkglistremove="$pkglistremove $i$postfix"
-     fi
- fi
+    if [ x$pkgvalue = x ]
+    then
+        pkglistinstall="$pkglistinstall $i$postfix"
+    else
+        if [ x$pkgvalue = x1 ]
+        then
+            pkglistinstall="$pkglistinstall $i$postfix"
+        else
+            pkglistremove="$pkglistremove $i$postfix"
+        fi
+    fi
 
 
 
@@ -381,38 +389,38 @@ done
 
 
 #default disabled
- for i in mythphone mytharchive mythbrowser mythnews mythgame mythflix mythweather
- do
-eval pkgvalue=\$${i}
-
-if [ x$pkgvalue = x ]
- then
-     pkglistremove="$pkglistremove $i$postfix"
-     else
-     if [ x$pkgvalue = x1 ]
-     then
-         pkglistinstall="$pkglistinstall $i$postfix"
-     else
-         pkglistremove="$pkglistremove $i$postfix"
-     fi
- fi
- done
+for i in mythphone mytharchive mythbrowser mythnews mythgame mythflix mythweather
+do
+    eval pkgvalue=\$${i}
+
+    if [ x$pkgvalue = x ]
+    then
+        pkglistremove="$pkglistremove $i$postfix"
+    else
+        if [ x$pkgvalue = x1 ]
+        then
+            pkglistinstall="$pkglistinstall $i$postfix"
+        else
+            pkglistremove="$pkglistremove $i$postfix"
+        fi
+    fi
+done
 install="$pkglistinstall $install"
 remove="$pkglistremove $remove"
 
 }
 function LCDcheck () {
- case x$LCDtype in
+case x$LCDtype in
     xtinker) echo "do nothing lcd "
-            ;;
+    ;;
     xno_lcd) echo "no  lcd "
-                       ;;
+    ;;
     xxosd) install="xosd lcdproc $install"
-            ;;
-        x) echo "lcd empty "
-        ;;
- *)
-     install="lcdproc $install"
+    ;;
+    x) echo "lcd empty "
+    ;;
+    *)
+    install="lcdproc $install"
     ;;
 esac
 }
@@ -427,164 +435,164 @@ if [ ! -f $PKGBLACKLIST ]
 then
     touch $PKGBLACKLIST
 fi
-    for i in $remove
-    do
+for i in $remove
+do
     echo "-----------$i --------------"
     grep -q $i $PKGBLACKLIST
     if [ $? = 1 ]
     then
         pacman -Q $i 2>/dev/null
         #VAR=`pacman -Q $i  2>&1 `
-            if [ $? = 0 ]
+        if [ $? = 0 ]
+        then
+            if [ $i = "mythweb$postfix" ]
             then
-                    if [ $i = "mythweb$postfix" ]
-                    then
-                    pacman --noconfirm -R mythweb$postfix
-                    echo removed $i
-                    else
-                    pacman --noconfirm -Rs $i
-                    echo removed $i
-                    fi
+                pacman --noconfirm -R mythweb$postfix
+                echo removed $i
+            else
+                pacman --noconfirm -Rs $i
+                echo removed $i
             fi
+        fi
     else
         echo "$i is black listed"
     fi
-    done
- # fi
+done
+# fi
 
-    for i in $install
-    do
+for i in $install
+do
     echo "-----------$i --------------"
     grep -q $i $PKGBLACKLIST
     if [ $? = 1 ]
     then
-            pacman -Q $i 2>/dev/null
-            #VAR=`pacman -Q $i  2>&1 `
-  #            echo $VAR |grep -vq error:
+        pacman -Q $i 2>/dev/null
+        #VAR=`pacman -Q $i  2>&1 `
+        #            echo $VAR |grep -vq error:
 
-            if [ ! $? = 0 ]
-            then
-                    pacman --noconfirm -Sf $i
-                    echo installed $i
-	    else
-		    echo "$i already installed"
-            fi
+        if [ ! $? = 0 ]
+        then
+            pacman --noconfirm -Sf $i
+            echo installed $i
+        else
+            echo "$i already installed"
+        fi
     else
-      echo "$i is black listed"
+        echo "$i is black listed"
     fi
-    done
+done
 }
 
 function daemons {
 echo "Daemons on boot"
 
-     for i in $daemon_remove
-     do
-    	   sv check $i 1>/dev/null
-            status=$?
-	   if [ $status -eq 0 ]
-	   then
-		sv down $i
-	   fi
-	        remove_service.sh $i
-     done
+for i in $daemon_remove
+do
+    sv check $i 1>/dev/null
+    status=$?
+    if [ $status -eq 0 ]
+    then
+        sv down $i
+    fi
+    remove_service.sh $i
+done
 
 
-    for i in $daemon_add
-    do
-        sv check $i 1>/dev/null
-        status=$?
-        add_service.sh $i
-
-		if [ $status -eq 0 ]
-		then
-                    case $i in
-                        mysql*) sv hup $i
-                                        ;;
-                        mythback*) sv hup $i
-                                        ;;
-                        lirc* ) sv hup $i
-                                        ;;
-                        frontend) sv check frontend 1>/dev/null
-                                        ;;
-
-                        smbd ) sv hup $i
-                                        ;;
-                        nmbd ) sv hup $i
-                                        ;;
-                        evrouter) sv restart $i
-                                    ;;
-                    *)     sv down $i
-                            sleep 1
-                            sv up $i
-                        ;;
-	           esac
-                 fi
-
-        done
+for i in $daemon_add
+do
+    sv check $i 1>/dev/null
+    status=$?
+    add_service.sh $i
+
+    if [ $status -eq 0 ]
+    then
+        case $i in
+            mysql*) sv hup $i
+            ;;
+            mythback*) sv hup $i
+            ;;
+            lirc* ) sv hup $i
+            ;;
+            frontend) sv check frontend 1>/dev/null
+            ;;
+
+            smbd ) sv hup $i
+            ;;
+            nmbd ) sv hup $i
+            ;;
+            evrouter) sv restart $i
+            ;;
+            *)     sv down $i
+            sleep 1
+            sv up $i
+            ;;
+        esac
+    fi
+
+done
 
 }
 
 
 function services
 {
-ser_install=""
-ser_daemon_add=""
-ser_remove=""
-ser_daemon_remove=""
-if [ x$UseEvrouter = x1 ]
-then
-    ser_daemon_add="evrouter Xvfb $ser_daemon_add"
-else
-    ser_daemon_remove="evrouter Xvfb $ser_remove"
-fi
+    ser_install=""
+    ser_daemon_add=""
+    ser_remove=""
+    ser_daemon_remove=""
+    if [ x$UseEvrouter = x1 ]
+    then
+        ser_daemon_add="evrouter Xvfb $ser_daemon_add"
+    else
+        ser_daemon_remove="evrouter Xvfb $ser_remove"
+    fi
 
-if [ x$RunDHCP = x1 ]
-then
-           ser_daemon_add="dnsmasq  $ser_daemon_add"
-           ser_install="dnsmasq mvpmc  $ser_install"
+    if [ x$RunDHCP = x1 ]
+    then
+        ser_daemon_add="dnsmasq  $ser_daemon_add"
+        ser_install="dnsmasq mvpmc  $ser_install"
 
-else
-           ser_daemon_remove="dnsmasq  $ser_daemon_remove"
-           ser_remove="dnsmasq mvpmc  $ser_remove"
-fi
+    else
+        ser_daemon_remove="dnsmasq  $ser_daemon_remove"
+        ser_remove="dnsmasq mvpmc  $ser_remove"
+    fi
 
-if [ x$RunFrontend = x1 ]
-then
-           ser_daemon_add="frontend hal ghosd  $ser_daemon_add"
-           ser_install="ghosd $ser_install"
-           showX=true
- else
-           ser_daemon_remove="frontend hal  $ser_daemon_remove"
-           ser_remove="$ser_remove"
- fi
-
-if [ x$UseMythWEB = x1 ]
-then
-            ser_install="lighttpd  mythweb$postfix $ser_install"
-            ser_daemon_add="lighttpd $ser_daemon_add"
- else
-           ser_remove="mythweb$postfix $ser_remove"
-           ser_daemon_remove="$ser_daemon_remove"
- fi
-
-#samba
-if [ x$UseSamba = x1 ]
-then
+    if [ x$RunFrontend = x1 ]
+    then
+        ser_daemon_add="frontend hal ghosd  $ser_daemon_add"
+        ser_install="ghosd $ser_install"
+        showX=true
+    else
+        ser_daemon_remove="frontend hal  $ser_daemon_remove"
+        ser_remove="$ser_remove"
+    fi
+
+    if [ x$UseMythWEB = x1 ]
+    then
+        ser_install="lighttpd  mythweb$postfix $ser_install"
+        ser_daemon_add="lighttpd $ser_daemon_add"
+    else
+        ser_remove="mythweb$postfix $ser_remove"
+        ser_daemon_remove="$ser_daemon_remove"
+    fi
+
+    #samba
+    if [ x$UseSamba = x1 ]
+    then
         ser_install="samba $ser_install"
         ser_daemon_add="nmbd smbd $ser_daemon_add "
         if [ x$Samba_mediareadonly = x1 ]
-            then
-                smreadonly="no"
-                else
-                smreadonly="yes"
+        then
+            smreadonly="no"
+        else
+            smreadonly="yes"
         fi
 
         if [ x$Samba_homereadonly = x1 ]
-            then
-                shreadonly="no"
-                else
-                shreadonly="yes"
+        then
+            shreadonly="no"
+        else
+            shreadonly="yes"
         fi
 
         if [ ! -d ${BASE}/etc/samba ]
@@ -597,7 +605,7 @@ then
             install -D -m755  ${BASE}/data/home/mythtv/templates/smb.conf   ${BASE}/etc/samba/smb.conf
         else
             sed -e "s/^.*workgroup =.*$/ workgroup = $Samba_domain/g " \
-                -e "s/^.*server string = .*$/ server string = $hostname/g" $TEMPLATES/samba/smb.conf.template > ${BASE}/etc/samba/smb.conf
+            -e "s/^.*server string = .*$/ server string = $hostname/g" $TEMPLATES/samba/smb.conf.template > ${BASE}/etc/samba/smb.conf
 
             if [ x$Samba_media = "x1" ]
             then
@@ -613,62 +621,62 @@ then
             fi
 
         fi
-else
+    else
         ser_remove="samba $ser_remove"
         ser_install="smbclient $ser_install"
         ser_daemon_remove="smbd nmbd  $ser_daemon_remove"
-fi
+    fi
 
 
-if [ x$UseNFS = x1 ]
-then
-      ser_install="nfs-utils portmap $ser_install"
-      ser_daemon_add="nfsd nfslock portmap $ser_daemon_add"
-       sed -e "s/REPLACEME/*/g" $TEMPLATES/exports.template > ${BASE}/etc/exports
+    if [ x$UseNFS = x1 ]
+    then
+        ser_install="nfs-utils portmap $ser_install"
+        ser_daemon_add="nfsd nfslock portmap $ser_daemon_add"
+        sed -e "s/REPLACEME/*/g" $TEMPLATES/exports.template > ${BASE}/etc/exports
 
-else
-      ser_remove="$ser_remove"
-      ser_daemon_remove="nfsd nfslock  $ser_daemon_remove"
-fi
+    else
+        ser_remove="$ser_remove"
+        ser_daemon_remove="nfsd nfslock  $ser_daemon_remove"
+    fi
 
-if [ x$Runncidd = x1 ]
-then
-           ser_daemon_add="ncidd ncid $ser_daemon_add"
-           ser_install="ncid $ser_install"
-  else
-           ser_daemon_remove="ncidd ncid $ser_daemon_remove"
-           ser_remove="ncid $ser_remove"
- fi
-if [ x$UseEvrouter = x1 ]
-then
-           ser_install="evrouter Xvfb $ser_install"
-  else
-           ser_remove="evrouter $ser_remove"
-fi
-#Setting the default, just to avoid the or statement..
-if [ x$UseHobbit = x ]
-then
-    UseHobbit=1
-fi
+    if [ x$Runncidd = x1 ]
+    then
+        ser_daemon_add="ncidd ncid $ser_daemon_add"
+        ser_install="ncid $ser_install"
+    else
+        ser_daemon_remove="ncidd ncid $ser_daemon_remove"
+        ser_remove="ncid $ser_remove"
+    fi
+    if [ x$UseEvrouter = x1 ]
+    then
+        ser_install="evrouter Xvfb $ser_install"
+    else
+        ser_remove="evrouter $ser_remove"
+    fi
+    #Setting the default, just to avoid the or statement..
+    if [ x$UseHobbit = x ]
+    then
+        UseHobbit=1
+    fi
 
-if [ x$UseHobbit = x1 ]
-then
-    case $SystemType in
-        Standalone|Master_backend )
-           ser_daemon_add="hobbit $ser_daemon_add"
-           ser_install="hobbitserver $ser_install"
-        ;;
+    if [ x$UseHobbit = x1 ]
+    then
+        case $SystemType in
+            Standalone|Master_backend )
+            ser_daemon_add="hobbit $ser_daemon_add"
+            ser_install="hobbitserver $ser_install"
+            ;;
 
-        *)   ser_daemon_add="hobbit-client $ser_daemon_add"
-              ser_install="hobbit-client $ser_install"
-        ;;
+            *)   ser_daemon_add="hobbit-client $ser_daemon_add"
+            ser_install="hobbit-client $ser_install"
+            ;;
         esac
-else
-           ser_daemon_remove="hobbit hobbit-client $ser_daemon_remove"
-           ser_remove="hobbit-client hobbitserver $ser_remove"
-            rm -f /data/srv/httpd/htdocs/hobbit/index.html
+    else
+        ser_daemon_remove="hobbit hobbit-client $ser_daemon_remove"
+        ser_remove="hobbit-client hobbitserver $ser_remove"
+        rm -f /data/srv/httpd/htdocs/hobbit/index.html
 
- fi
+    fi
 
 
 
@@ -705,42 +713,42 @@ fi
 function setuppacman () {
 #setup link to httpd dir
 echo "Configuring pacman"
-  if [ ! x$1 = x ]
+if [ ! x$1 = x ]
+then
+    ln -s ${BASE}/data/var ${BASE}/data/srv/httpd/htdocs/repo
+    echo "creating the link for the pacman repo mirror"
+fi
+
+for i in mv-core mv-core-testing mv-extra mv-extra-testing
+do
+    echo "[$i]"  > ${BASE}/etc/pacman.d/$i
+    #add mirror if needed
+    if [ x$PKG_MIRROR = x1 ]
     then
-        ln -s ${BASE}/data/var ${BASE}/data/srv/httpd/htdocs/repo
-        echo "creating the link for the pacman repo mirror"
+        echo " Server = http://$dbhost/repo/$i " >> ${BASE}/etc/pacman.d/$i
     fi
+    #add user templates
+    USERTEMPLATES="/data/home/mythtv/templates"
+    if [ -f $USERTEMPLATES/sources/$i ]
+    then
+        echo "Adding user  $i"
+        cat $USERTEMPLATES/sources/$i  >> ${BASE}/etc/pacman.d/$i
+    fi
+    cat $TEMPLATES/sources/$i  >> ${BASE}/etc/pacman.d/$i
+    echo "setting local mirror to $dbhost for $i "
+done
 
-    for i in mv-core mv-core-testing mv-extra mv-extra-testing
-    do
-        echo "[$i]"  > ${BASE}/etc/pacman.d/$i
-        #add mirror if needed
-        if [ x$PKG_MIRROR = x1 ]
-        then
-            echo " Server = http://$dbhost/repo/$i " >> ${BASE}/etc/pacman.d/$i
-        fi
-        #add user templates
-        USERTEMPLATES="/data/home/mythtv/templates"
-        if [ -f $USERTEMPLATES/sources/$i ]
-        then
-             echo "Adding user  $i"
-            cat $USERTEMPLATES/sources/$i  >> ${BASE}/etc/pacman.d/$i
-        fi
-        cat $TEMPLATES/sources/$i  >> ${BASE}/etc/pacman.d/$i
-        echo "setting local mirror to $dbhost for $i "
-    done
-
-     #sed -e "s/REPLACEME/$dbhost/g"  $TEMPLATES/sources/svc_pkg > /etc/pacman.d/svc_pkg
+#sed -e "s/REPLACEME/$dbhost/g"  $TEMPLATES/sources/svc_pkg > /etc/pacman.d/svc_pkg
 
 
 }
 
 
 function setupzipcode () {
-    if [ ! x$zipcode = x ]
-    then
-        ${MV_ROOT}/bin/restore_default_settings.sh -c ZIP  -z $zipcode
-    fi
+if [ ! x$zipcode = x ]
+then
+    ${MV_ROOT}/bin/restore_default_settings.sh -c ZIP  -z $zipcode
+fi
 }
 
 function process_nfsmap () {
@@ -759,58 +767,58 @@ then
         fi
     fi
 else
-        mv -f /tmp/nfsmap /tmp/nfsmap.old
-        wget -O /tmp/nfsmap http://$1:1337/templates/nfsmap
-        if [ $? = 0 ]
-        then
-            NFSMAP="/tmp/nfsmap"
-        fi
+    mv -f /tmp/nfsmap /tmp/nfsmap.old
+    wget -O /tmp/nfsmap http://$1:1337/templates/nfsmap
+    if [ $? = 0 ]
+    then
+        NFSMAP="/tmp/nfsmap"
+    fi
 fi
 
-    if [ -f $NFSMAP ]
-    then
-        #read in file
-        while read line
-        do
-            NFSserver=`echo "$line"|cut -d" " -f1`
-            NFSmount=`echo "$line"|cut  -d" " -f2`
-            setupfstab $NFSserver $NFSmount
-        done <$NFSMAP
-    else
-        echo "couldn't find nfsmap"
+if [ -f $NFSMAP ]
+then
+    #read in file
+    while read line
+    do
+        NFSserver=`echo "$line"|cut -d" " -f1`
+        NFSmount=`echo "$line"|cut  -d" " -f2`
+        setupfstab $NFSserver $NFSmount
+    done <$NFSMAP
+else
+    echo "couldn't find nfsmap"
 
-    fi
+fi
 }
 
 function setupcnfs () {
-     scrubnfs
-        if [ $HaveCentralNFS = "yes" ]
-	then
-            case x$NFSserver in
-                xfile:nfsmap )
-                                process_nfsmap noip
-                                ;;
-               *:nfsmap )
-                                nfsmapip=`echo "$NFSserver" | cut -d: -f1 `
-                                process_nfsmap $nfsmapip
-                                ;;
-                *)  setupfstab $NFSserver $NFSmount
-                esac
-
-	    #if [ ! x"$NFSserver" = "xfile:nfsmap" ]
-            #then
-            #    setupfstab $NFSserver $NFSmount
-            #else
-            #    process_nfsmap
-            #fi
-        else
-            echo "fe_nfs"
-            #if no central nfs found, then use the mbe.
-            if [ $SystemType = "Frontend_only" ]
-            then
-                setupfstab ${dbhost}:/data/media /data/media
-            fi
-	fi
+scrubnfs
+if [ $HaveCentralNFS = "yes" ]
+then
+    case x$NFSserver in
+        xfile:nfsmap )
+        process_nfsmap noip
+        ;;
+        *:nfsmap )
+        nfsmapip=`echo "$NFSserver" | cut -d: -f1 `
+        process_nfsmap $nfsmapip
+        ;;
+        *)  setupfstab $NFSserver $NFSmount
+    esac
+
+    #if [ ! x"$NFSserver" = "xfile:nfsmap" ]
+    #then
+    #    setupfstab $NFSserver $NFSmount
+    #else
+    #    process_nfsmap
+    #fi
+else
+    echo "fe_nfs"
+    #if no central nfs found, then use the mbe.
+    if [ $SystemType = "Frontend_only" ]
+    then
+        setupfstab ${dbhost}:/data/media /data/media
+    fi
+fi
 
 }
 
@@ -866,32 +874,32 @@ if [ x$RunDHCP = x1   ]
 then
     echo "DNSMASQ setup"
 
-#set default route to my GW
-COMMAND="%s/^dhcp-option=3.*$/dhcp-option=3,${route}/"
-ex ${BASE}/etc/dnsmasq.conf <<EOF
-:$COMMAND
-:wq
-EOF
-
-#setup dns to my ip
-COMMAND="%s/^dhcp-option=6.*$/dhcp-option=6,${MYTHIP}/"
-ex ${BASE}/etc/dnsmasq.conf <<EOF
-:$COMMAND
-:wq
-EOF
-
-
-#change nfsroot to my ip
-COMMAND="%s/nfsroot=.*:/nfsroot=${MYTHIP}:/"
-ex ${BASE}/data/srv/tftp/pxelinux.cfg/default <<EOF
-:$COMMAND
-:wq
-EOF
-
-#add 127.0.0.1 to /etc/resolv.conf
-        echo "search lan" > ${BASE}/etc/resolv.conf
-        echo "nameserver 127.0.0.1" >> ${BASE}/etc/resolv.conf
-        echo "nameserver $nameserver" >> ${BASE}/etc/resolv.conf
+    #set default route to my GW
+    COMMAND="%s/^dhcp-option=3.*$/dhcp-option=3,${route}/"
+    ex ${BASE}/etc/dnsmasq.conf <<EOF
+    :$COMMAND
+    :wq
+    EOF
+
+    #setup dns to my ip
+    COMMAND="%s/^dhcp-option=6.*$/dhcp-option=6,${MYTHIP}/"
+    ex ${BASE}/etc/dnsmasq.conf <<EOF
+    :$COMMAND
+    :wq
+    EOF
+
+
+    #change nfsroot to my ip
+    COMMAND="%s/nfsroot=.*:/nfsroot=${MYTHIP}:/"
+    ex ${BASE}/data/srv/tftp/pxelinux.cfg/default <<EOF
+    :$COMMAND
+    :wq
+    EOF
+
+    #add 127.0.0.1 to /etc/resolv.conf
+    echo "search lan" > ${BASE}/etc/resolv.conf
+    echo "nameserver 127.0.0.1" >> ${BASE}/etc/resolv.conf
+    echo "nameserver $nameserver" >> ${BASE}/etc/resolv.conf
 fi
 
 #setup dongle.config
@@ -908,23 +916,23 @@ EOF
 }
 
 function reloadfe(){
-   PID=`ps -ef |grep mythfrontend|grep -v grep |awk  '{print $2 }'`
-   /usr/bin/backend_control.sh  clearcache  behost $dbhost
-   if [ x$RESTART_LCD = xtrue ]
-   then
+PID=`ps -ef |grep mythfrontend|grep -v grep |awk  '{print $2 }'`
+/usr/bin/backend_control.sh  clearcache  behost $dbhost
+if [ x$RESTART_LCD = xtrue ]
+then
     killall -9 mythlcdserver
-   fi
-   kill -s USR1 $PID
+fi
+kill -s USR1 $PID
 
 }
 
 
 function setup_db (){
 
-            install="mysql avahli"
-            daemon_add="mysql"
-            packages
-            daemons
+install="mysql avahli"
+daemon_add="mysql"
+packages
+daemons
 status=1
 mysqlstatus=1
 while [ ! $status = 0  ]
@@ -935,7 +943,7 @@ do
     mysqlstatus=$?
     if [ $mysqlstatus = 0 ]
     then
-   	mysql -e "show databases;"
+        mysql -e "show databases;"
         showstatus=$?
         if [ $showstatus = 0 ]
         then
@@ -949,13 +957,13 @@ do
             #update database to allow user jobs on this host.
             $MV_ROOT/bin/restore_default_settings.sh  -c  USERJOBALLOW
             $MV_ROOT/bin/restore_default_settings.sh  -c  ACCESSCONTROL
-	   if [ -d /data/srv/mysql/mythconverg ]
-	   then
-	    pacman --noconfirm -R webcalendar
-            pacman --noconfirm --nodeps  -S webcalendar
-	    status=0
-	   fi
-   	fi
+            if [ -d /data/srv/mysql/mythconverg ]
+            then
+                pacman --noconfirm -R webcalendar
+                pacman --noconfirm --nodeps  -S webcalendar
+                status=0
+            fi
+        fi
     fi
 done
 }
@@ -970,45 +978,45 @@ hosttypechange="false"
 
 
 for i in  $LIST
-  do
-   echo $i
-   case $i in
-	   misc) showmisc="true"
-	   	;;
-	  sleep) showsleep="true"
-		;;
-	  hostype) showhost="true"
-                      showX="true"
-	  	;;
-         hostypec) hosttypechange="true"
-                ;;
-	 advanced) showadvanced="true"
-                      #showhost="true"
-		;;
-	audio) showaudio="true"
-		;;
-	network) shownetwork="true"
-		;;
-    advancedX)  showX="true"
-      ;;
-    restartfe)  killall -9 mythfrontend
-                    killall -9 mythwelcome
-                    exit 0
-    ;;
-    reloadfe)  reloadfe
-            ;;
+do
+    echo $i
+    case $i in
+        misc) showmisc="true"
+        ;;
+        sleep) showsleep="true"
+        ;;
+        hostype) showhost="true"
+        showX="true"
+        ;;
+        hostypec) hosttypechange="true"
+        ;;
+        advanced) showadvanced="true"
+        #showhost="true"
+        ;;
+        audio) showaudio="true"
+        ;;
+        network) shownetwork="true"
+        ;;
+        advancedX)  showX="true"
+        ;;
+        restartfe)  killall -9 mythfrontend
+        killall -9 mythwelcome
+        exit 0
+        ;;
+        reloadfe)  reloadfe
+        ;;
 
-    this_is_install) MV_NEW_INSTALL="true"
-		;;
-    NETINSTALL) RESTART_NETWORK="false"
-                NET_INSTALL="true"
+        this_is_install) MV_NEW_INSTALL="true"
+        ;;
+        NETINSTALL) RESTART_NETWORK="false"
+        NET_INSTALL="true"
 
-	esac
-  done
+    esac
+done
 
 if [ x$MV_NEW_INSTALL = xtrue ]
 then
-	hosttypechange="false"
+    hosttypechange="false"
 fi
 
 
@@ -1037,96 +1045,96 @@ then
     setup_network
     vnc_check
     if [   x$USEVNC = x1  ]
-        then
-            echo "reloading network"
-            ${BASE}/etc/net/scripts/network.init reload
-        else
-            echo "netboot/vnc, will not restart network"
-        fi
+    then
+        echo "reloading network"
+        ${BASE}/etc/net/scripts/network.init reload
+    else
+        echo "netboot/vnc, will not restart network"
+    fi
 fi
 
 
 if [ x$showhost = "xtrue" ]
 then
-case $SystemType in
-    Standalone)
-            setupntp 1
-            services
-            if [ x$hosttypechange = "xtrue" ]
-            then
-             setup_db
-            fi
-            if [ -f   ${BASE}/etc/avahi/services/mysql.service     ]
-            then
-                        rm -f ${BASE}/etc/avahi/services/mysql.service
-                        sudo sv restart avahi
-            fi
+    case $SystemType in
+        Standalone)
+        setupntp 1
+        services
+        if [ x$hosttypechange = "xtrue" ]
+        then
+            setup_db
+        fi
+        if [ -f   ${BASE}/etc/avahi/services/mysql.service     ]
+        then
+            rm -f ${BASE}/etc/avahi/services/mysql.service
+            sudo sv restart avahi
+        fi
 
-            install="lighttpd mysql mythdb-initial  avahli  myth2ipod mythtv-status  portmap local-website webcalendar  php $ser_install"
-            remove="none $ser_remove"
+        install="lighttpd mysql mythdb-initial  avahli  myth2ipod mythtv-status  portmap local-website webcalendar  php $ser_install"
+        remove="none $ser_remove"
 
-            daemon_add="lighttpd mysql  mythbackend  avahi portmap $ser_daemon_add"
-            daemon_remove="none $ser_daemon_remove"
+        daemon_add="lighttpd mysql  mythbackend  avahi portmap $ser_daemon_add"
+        daemon_remove="none $ser_daemon_remove"
 
-    ;;
-   Master_backend)
-            setupntp 1
-            services
+        ;;
+        Master_backend)
+        setupntp 1
+        services
 
-            if [  !  -f   ${BASE}/etc/avahi/services/mysql.service     ]
-            then
-                        mkdir  ${BASE}/etc/avahi/services
-                        cp $TEMPLATES/mysql.service  ${BASE}/etc/avahi/services/mysql.service
-                        sudo sv restart  avahi
-            fi
+        if [  !  -f   ${BASE}/etc/avahi/services/mysql.service     ]
+        then
+            mkdir  ${BASE}/etc/avahi/services
+            cp $TEMPLATES/mysql.service  ${BASE}/etc/avahi/services/mysql.service
+            sudo sv restart  avahi
+        fi
 
-            install="lighttpd  local-website mysql  mythdb-initial webcalendar   php avahi portmap myth2ipod mythtv-status func $ser_install  "
-            remove="$ser_remove"
+        install="lighttpd  local-website mysql  mythdb-initial webcalendar   php avahi portmap myth2ipod mythtv-status func $ser_install  "
+        remove="$ser_remove"
 
-            daemon_add="lighttpd mysql mythbackend  avahi   portmap certmaster $ser_daemon_add"
-            daemon_remove="$ser_daemon_remove"
-    ;;
-    Slave_backend)
-            setupntp 0
-            services
-            if [ x$hosttypechange = "xtrue" ]
-            then
-             setup_db
-            fi
-            if [    -f   ${BASE}/etc/avahi/services/mysql.service     ]
-            then
-                        rm -f ${BASE}/etc/avahi/services/mysql.service
-                        sudo sv restart  avahi
-            fi
+        daemon_add="lighttpd mysql mythbackend  avahi   portmap certmaster $ser_daemon_add"
+        daemon_remove="$ser_daemon_remove"
+        ;;
+        Slave_backend)
+        setupntp 0
+        services
+        if [ x$hosttypechange = "xtrue" ]
+        then
+            setup_db
+        fi
+        if [    -f   ${BASE}/etc/avahi/services/mysql.service     ]
+        then
+            rm -f ${BASE}/etc/avahi/services/mysql.service
+            sudo sv restart  avahi
+        fi
 
-            #cp $TEMPLATES/mysql.service  ${BASE}/etc/avahi/services/mysql.service
-            install="mysql  avahi func $ser_install  "
-            remove=" $ser_remove"
+        #cp $TEMPLATES/mysql.service  ${BASE}/etc/avahi/services/mysql.service
+        install="mysql  avahi func $ser_install  "
+        remove=" $ser_remove"
 
-            daemon_add="mythbackend avahi portmap  mythtv-status  funcd $ser_daemon_add"
-            daemon_remove="$ser_daemon_remove"
-    ;;
-    Frontend_only)
+        daemon_add="mythbackend avahi portmap  mythtv-status  funcd $ser_daemon_add"
+        daemon_remove="$ser_daemon_remove"
+        ;;
+        Frontend_only)
         #Add values for services
         setupntp 0
         services
         if [  -f   ${BASE}/etc/avahi/services/mysql.service     ]
-            then
-                        rm -f ${BASE}/etc/avahi/services/mysql.service
-                        sudo sv restart  avahi
-            fi
+        then
+            rm -f ${BASE}/etc/avahi/services/mysql.service
+            sudo sv restart  avahi
+        fi
 
         install="libmysqlclient mysql-clients portmap avahi func  $ser_install"
         remove="mysql local-website lighttpd php mythweb$postfix $ser_remove"
 
         daemon_add="avahi portmap funcd $ser_daemon_add "
         daemon_remove="mysql lighttpd  mythbackend  $ser_daemon_remove"
-   ;;
+        ;;
 
 
-esac
-setupSyslog
-setupfuncminion
+    esac
+    setupSyslog
+    setupfuncminion
 fi
 
 #apply these to ALL types
@@ -1149,7 +1157,7 @@ fi
 
 if [ x$showaudio = "xtrue" ]
 then
-	#setupsoundtype
+    #setupsoundtype
     if [ ! x$Audiotype = xtinker  ]
     then
         ${MV_ROOT}/bin/soundconfig.sh -t real -i $Audiotype -d $SoundDevice
@@ -1163,15 +1171,15 @@ packages
 
 if [ x$showmisc = "xtrue" ]
 then
-	setupzipcode
-	settimezone
+    setupzipcode
+    settimezone
     setupcnfs
 fi
 
 #sleep
 if [ x$showsleep = "xtrue" ]
 then
-	setupsleep
+    setupsleep
 fi
 
 if [ x$showX = "xtrue" ]
@@ -1195,10 +1203,10 @@ then
         if [ x$SystemType = xMaster_backend ]
         then
             setuppacman link
-            else
+        else
             setuppacman
         fi
-     fi
+    fi
     setupncidclient
     setupnciddaemon
     setupbootsplash
@@ -1227,34 +1235,34 @@ fi
 
 case $SystemType in
     Standalone)  smoltsystem=6
-                     MVRELEASE="$MVRELEASE  (Standalone)"
-                    ;;
-   Master_backend)
-            if [ x$RunFrontend = x1 ]
-            then
-                smoltsystem=2
-                MVRELEASE="$MVRELEASE  (MBE with Frontend)"
-            else
-                smoltsystem=1
-                MVRELEASE="$MVRELEASE  (MBE)"
-            fi
-            ;;
-   Slave_backend)
-            if [ x$RunFrontend = x1 ]
-            then
-                smoltsystem=5
-                MVRELEASE="$MVRELEASE  (SLAVE  with Frontend)"
-            else
-                smoltsystem=5
-                MVRELEASE="$MVRELEASE  (SLAVE)"
-            fi
-            ;;
-     Frontend_only)
-          smoltsystem=3
-          MVRELEASE="$MVRELEASE  ( Frontend only)"
-            ;;
+    MVRELEASE="$MVRELEASE  (Standalone)"
+    ;;
+    Master_backend)
+    if [ x$RunFrontend = x1 ]
+    then
+        smoltsystem=2
+        MVRELEASE="$MVRELEASE  (MBE with Frontend)"
+    else
+        smoltsystem=1
+        MVRELEASE="$MVRELEASE  (MBE)"
+    fi
+    ;;
+    Slave_backend)
+    if [ x$RunFrontend = x1 ]
+    then
+        smoltsystem=5
+        MVRELEASE="$MVRELEASE  (SLAVE  with Frontend)"
+    else
+        smoltsystem=5
+        MVRELEASE="$MVRELEASE  (SLAVE)"
+    fi
+    ;;
+    Frontend_only)
+    smoltsystem=3
+    MVRELEASE="$MVRELEASE  ( Frontend only)"
+    ;;
 esac
 echo $MVRELEASE > /etc/os_myth_release
-echo "systemtype=$smoltsystem" > /data/home/mythtv/.mythtv/smolt.info
-echo "remote=$Remotetype" >> /data/home/mythtv/.mythtv/smolt.info
+echo "systemtype=$smoltsystem" > /data/home/mythtv/.mythtv/smolt.info 2>/dev/null
+echo "remote=$Remotetype" >> /data/home/mythtv/.mythtv/smolt.info 2>/dev/null
 
diff --git a/abs/mv-core/MythVantage-config/templates/modules/lirc_i2c.conf b/abs/mv-core/MythVantage-config/templates/modules/lirc_i2c.conf
new file mode 100644
index 0000000..7b99f78
--- /dev/null
+++ b/abs/mv-core/MythVantage-config/templates/modules/lirc_i2c.conf
@@ -0,0 +1,2 @@
+alias char-major-61 lirc_i2c
+options lirc_i2c debug=0 minor=3	
diff --git a/abs/mv-core/MythVantage-config/templates/remotes/i2c.id b/abs/mv-core/MythVantage-config/templates/remotes/i2c.id
new file mode 100644
index 0000000..50e89e9
--- /dev/null
+++ b/abs/mv-core/MythVantage-config/templates/remotes/i2c.id
@@ -0,0 +1,5 @@
+0070:4000|Hauppauge|WinTV PVR 250|hauppauge-grey
+0070:4009|Hauppauge|WinTV PVR 250|hauppauge-grey
+0070:4801|Hauppauge|WinTV PVR 250|hauppauge-grey
+0070:4803|Hauppauge|WinTV PVR 250|hauppauge-grey
+0070:0003|Hauppauge|WinTV PVR 250|hauppauge-grey
\ No newline at end of file
diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/lircd/run b/abs/mv-core/runit-scripts-mv/runitscripts/services/lircd/run
index 0adfdc1..ceda8db 100755
--- a/abs/mv-core/runit-scripts-mv/runitscripts/services/lircd/run
+++ b/abs/mv-core/runit-scripts-mv/runitscripts/services/lircd/run
@@ -7,7 +7,7 @@ run_lircd2=false
 function dvico_detect {
 
 
-  if [ x$Remotetype = "dvico" ]
+  if [ x$Remotetype = "xdvico" ]
   then
                 DEVICE="/dev/usb/hiddev0"
   fi
@@ -33,7 +33,9 @@ case $ReceiverType in
 	Usb-imon)
 		DEVICE=/dev/lirc_imon	
 	;;
-
+    Hauppauge)
+        DEVICE=/dev/lirc3
+        ;;
 	*) 
 
 		DEVICE=`ls  /dev/lirc[0-9] 2>/dev/null |sort |sed '/./,$!d'|head -n 1 `
-- 
cgit v0.12


From f7db724accbaa234c839a7147e79e1cef47c6772 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Sun, 7 Dec 2008 12:40:53 -0600
Subject: bump version to 6.00.04

---
 abs/core-testing/LinHES-config/LinHES-release | 2 +-
 abs/core-testing/LinHES-config/PKGBUILD       | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/abs/core-testing/LinHES-config/LinHES-release b/abs/core-testing/LinHES-config/LinHES-release
index cb5516d..0e9e72b 100644
--- a/abs/core-testing/LinHES-config/LinHES-release
+++ b/abs/core-testing/LinHES-config/LinHES-release
@@ -1 +1 @@
-LinHES R6.00.03 
+LinHES R6.00.04 
diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD
index 07ccda7..f9d2aae 100755
--- a/abs/core-testing/LinHES-config/PKGBUILD
+++ b/abs/core-testing/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=1.0
-pkgrel=84
+pkgrel=85
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev )
 pkgdesc="Install and configure your system"
 depends=(bc libstatgrab  mysql-python expect curl dnsutils parted sg3_utils nmbscan )
-- 
cgit v0.12


From 8203006cf9ee68a8e33e30d48ea6b396d1a7b7e4 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 9 Dec 2008 15:15:29 -0600
Subject: Initial checkin for mythtv-trunk builds

---
 .../DeviceReadBuffer-polltimeout.2.patch           | 219 +++++++
 abs/core-testing/mythtv/trunk/mythtv-svn/PKGBUILD  |  78 +++
 .../mythtv/trunk/mythtv-svn/aacdecoder.cpp.patch   |  12 +
 .../trunk/mythtv-svn/hdpvr-v4lchannel-tweak.patch  | 139 +++++
 .../trunk/mythtv-svn/menu-xml/HOST_SETTINGS.xml    |  87 +++
 .../mythtv/trunk/mythtv-svn/menu-xml/is.xml        |  33 ++
 .../mythtv/trunk/mythtv-svn/menu-xml/knoppmyth.xml |  55 ++
 .../trunk/mythtv-svn/menu-xml/library.xml.patch    |  13 +
 .../trunk/mythtv-svn/menu-xml/mainmenu.xml.patch   |  16 +
 .../mythtv/trunk/mythtv-svn/menu-xml/motion.xml    |  20 +
 .../mythtv-svn/menu-xml/optical_menu.xml.patch     |  15 +
 .../mythtv/trunk/mythtv-svn/menu-xml/setup.xml     | 111 ++++
 .../trunk/mythtv-svn/menu-xml/siriusmenu.xml       | 419 +++++++++++++
 .../mythtv/trunk/mythtv-svn/menu-xml/xmmenu.xml    | 574 ++++++++++++++++++
 .../trunk/mythtv-svn/mpegrecorder-hdpvr-v1.1.patch | 658 +++++++++++++++++++++
 abs/core-testing/mythtv/trunk/mythtv-svn/myth.sh   |   4 +
 .../mythtv/trunk/mythtv-svn/mythbackend            |  37 ++
 .../mythtv/trunk/mythtv-svn/mythbackend.sh         | 117 ++++
 .../trunk/mythtv-svn/mythcommflag-avidemux.2.patch | 179 ++++++
 .../mythtv/trunk/mythtv-svn/mythtv.install         |  55 ++
 .../patches/DeviceReadBuffer-polltimeout.2.patch   | 219 +++++++
 .../trunk/mythtv-svn/patches/aacdecoder.cpp.patch  |  12 +
 .../patches/hdpvr-v4lchannel-tweak.patch           | 139 +++++
 .../patches/mpegrecorder-hdpvr-v1.1.patch          | 658 +++++++++++++++++++++
 .../patches/mythcommflag-avidemux.2.patch          | 179 ++++++
 .../mythtv/trunk/mythtv-svn/smolt_jump.patch       |  30 +
 .../trunk/mythtv-svn/svn_main_menu_popup.patch     | 211 +++++++
 27 files changed, 4289 insertions(+)
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/DeviceReadBuffer-polltimeout.2.patch
 create mode 100755 abs/core-testing/mythtv/trunk/mythtv-svn/PKGBUILD
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/aacdecoder.cpp.patch
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/hdpvr-v4lchannel-tweak.patch
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/HOST_SETTINGS.xml
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/is.xml
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/knoppmyth.xml
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/library.xml.patch
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/mainmenu.xml.patch
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/motion.xml
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/optical_menu.xml.patch
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/setup.xml
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/siriusmenu.xml
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/xmmenu.xml
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/mpegrecorder-hdpvr-v1.1.patch
 create mode 100755 abs/core-testing/mythtv/trunk/mythtv-svn/myth.sh
 create mode 100755 abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend
 create mode 100755 abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend.sh
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/mythcommflag-avidemux.2.patch
 create mode 100755 abs/core-testing/mythtv/trunk/mythtv-svn/mythtv.install
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/patches/DeviceReadBuffer-polltimeout.2.patch
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/patches/aacdecoder.cpp.patch
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/patches/hdpvr-v4lchannel-tweak.patch
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/patches/mpegrecorder-hdpvr-v1.1.patch
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/patches/mythcommflag-avidemux.2.patch
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/smolt_jump.patch
 create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/svn_main_menu_popup.patch

diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/DeviceReadBuffer-polltimeout.2.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/DeviceReadBuffer-polltimeout.2.patch
new file mode 100644
index 0000000..5bb713f
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/DeviceReadBuffer-polltimeout.2.patch
@@ -0,0 +1,219 @@
+Index: libs/libmythtv/DeviceReadBuffer.h
+===================================================================
+--- libs/libmythtv/DeviceReadBuffer.h	(revision 18515)
++++ libs/libmythtv/DeviceReadBuffer.h	(working copy)
+@@ -59,7 +59,7 @@
+     void IncrReadPointer(uint len);
+ 
+     bool HandlePausing(void);
+-    bool Poll(void) const;
++    bool Poll(void);
+     uint WaitForUnused(uint bytes_needed) const;
+     uint WaitForUsed  (uint bytes_needed) const;
+ 
+Index: libs/libmythtv/DeviceReadBuffer.cpp
+===================================================================
+--- libs/libmythtv/DeviceReadBuffer.cpp	(revision 18515)
++++ libs/libmythtv/DeviceReadBuffer.cpp	(working copy)
+@@ -90,9 +90,14 @@
+ 
+ void DeviceReadBuffer::Start(void)
+ {
+-    lock.lock();
+-    bool was_running = running;
+-    lock.unlock();
++    bool was_running;
++
++    {
++        QMutexLocker locker(&lock);
++        was_running = running;
++        error = false;
++    }
++
+     if (was_running)
+     {
+         VERBOSE(VB_IMPORTANT, LOC_ERR + "Start(): Already running.");
+@@ -104,6 +109,8 @@
+     {
+         VERBOSE(VB_IMPORTANT,
+                 LOC_ERR + QString("Start(): pthread_create failed.") + ENO);
++
++        QMutexLocker locker(&lock);
+         error = true;
+     }
+ }
+@@ -118,21 +125,25 @@
+     used          = 0;
+     readPtr       = buffer;
+     writePtr      = buffer;
++
++    error         = false;
+ }
+ 
+ void DeviceReadBuffer::Stop(void)
+ {
+     bool was_running = IsRunning();
+-    lock.lock();
+-    run = false;
+-    lock.unlock();
+ 
+     if (!was_running)
+     {
+-        VERBOSE(VB_IMPORTANT, LOC_ERR + "Stop(): Not running.");
++        VERBOSE(VB_IMPORTANT, LOC + "Stop(): Not running.");
+         return;
+     }
+ 
++    {
++        QMutexLocker locker(&lock);
++        run = false;
++    }
++
+     pthread_join(thread, NULL);
+ }
+ 
+@@ -229,10 +240,11 @@
+ {
+     uint      errcnt = 0;
+ 
+-    lock.lock();
+-    run     = true;
+-    running = true;
+-    lock.unlock();
++    {
++        QMutexLocker locker(&lock);
++        run     = true;
++        running = true;
++    }
+ 
+     while (run)
+     {
+@@ -248,6 +260,15 @@
+         if (using_poll && !Poll())
+             continue;
+ 
++        {
++            QMutexLocker locker(&lock);
++            if (error)
++            {
++                VERBOSE(VB_RECORD, LOC + "fill_ringbuffer: error state");
++                break;
++            }
++        }
++
+         // Limit read size for faster return from read
+         size_t read_size =
+             min(dev_read_size, (size_t) WaitForUnused(TSPacket::SIZE));
+@@ -268,9 +289,10 @@
+         }
+     }
+ 
+-    lock.lock();
+-    running = false;
+-    lock.unlock();
++    {
++        QMutexLocker locker(&lock);
++        running = false;
++    }
+ }
+ 
+ bool DeviceReadBuffer::HandlePausing(void)
+@@ -293,7 +315,7 @@
+     return true;
+ }
+ 
+-bool DeviceReadBuffer::Poll(void) const
++bool DeviceReadBuffer::Poll(void)
+ {
+ #ifdef USING_MINGW
+ #warning mingw DeviceReadBuffer::Poll
+@@ -302,31 +324,53 @@
+     return false;
+ #else
+     bool retval = true;
+-    while (true)
++    uint timeout_cnt = 0;
++
++    for (;;)
+     {
+         struct pollfd polls;
+         polls.fd      = _stream_fd;
+         polls.events  = POLLIN;
+         polls.revents = 0;
+ 
+-        int ret = poll(&polls, 1 /*number of polls*/, 10 /*msec*/);
+-        if (IsPauseRequested() || !IsOpen() || !run)
++        int ret = poll(&polls, 1 /*number of polls*/, 250 /*msec*/);
++
++        if (polls.revents & (POLLERR | POLLHUP | POLLNVAL))
+         {
++            VERBOSE(VB_IMPORTANT, LOC + "poll error");
++            error = true;
++            return true;
++        }
++
++        if (!run || !IsOpen() || IsPauseRequested())
++        {
+             retval = false;
+             break; // are we supposed to pause, stop, etc.
+         }
+ 
+         if (ret > 0)
+             break; // we have data to read :)
+-        if ((-1 == ret) && (EOVERFLOW == errno))
+-            break; // we have an error to handle
+-
+-        if ((-1 == ret) && ((EAGAIN == errno) || (EINTR  == errno)))
+-            continue; // errors that tell you to try again
+-        if (ret == 0)
+-            continue; // timed out, try again
+-
+-        usleep(2500);
++        if (ret < 0)
++        {
++            if ((EOVERFLOW == errno))
++                break; // we have an error to handle
++            if ((EAGAIN == errno) || (EINTR  == errno))
++                continue; // errors that tell you to try again
++            usleep(2500);
++        }
++        else //  ret == 0
++        {
++            if (++timeout_cnt > 9)
++            {
++                VERBOSE(VB_RECORD, LOC_ERR + "Poll giving up");
++                QMutexLocker locker(&lock);
++                error = true;
++                return true;
++            }
++            if (timeout_cnt % 2)
++                VERBOSE(VB_RECORD, LOC_ERR + QString("Poll timeout (%1)")
++                        .arg(timeout_cnt));
++        }
+     }
+     return retval;
+ #endif //!USING_MINGW
+@@ -360,9 +404,9 @@
+ 
+         if (++errcnt > 5)
+         {
+-            lock.lock();
++            QMutexLocker locker(&lock);
++            VERBOSE(VB_RECORD, LOC + "Too many errors.");
+             error = true;
+-            lock.unlock();
+             return false;
+         }
+ 
+@@ -376,10 +420,8 @@
+             VERBOSE(VB_IMPORTANT, LOC +
+                     QString("End-Of-File? fd(%1)").arg(_stream_fd));
+ 
+-            lock.lock();
++            QMutexLocker locker(&lock);
+             eof = true;
+-            lock.unlock();
+-
+             return false;
+         }
+         usleep(500);
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/PKGBUILD b/abs/core-testing/mythtv/trunk/mythtv-svn/PKGBUILD
new file mode 100755
index 0000000..b5dc31d
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/PKGBUILD
@@ -0,0 +1,78 @@
+pkgname=mythtv-svn
+pkgver=19295
+pkgrel=1
+pkgdesc="A personal video recorder for Linux"
+url="http://www.mythtv.org"
+license="GPL"
+depends=('lame' 'libmysqlclient' 'alsa-lib'  'wget' 'qt' 'x-server' 'freetype2' 'libmpeg2' 'libxml2' 'libraw1394' 'lirc' 'perl-date-manip' 'libavc1394' 'libdc1394' 'libiec61883')
+makedepends=('subversion')
+conflicts=(mythtv)
+replaces=()
+backup=()
+options=(!strip)
+MAKEFLAGS="-j6"
+install='mythtv.install'
+
+patchs=('DeviceReadBuffer-polltimeout.2.patch' 'hdpvr-v4lchannel-tweak.patch' 'mpegrecorder-hdpvr-v1.1.patch' 'mythcommflag-avidemux.2.patch')
+source=('mythbackend' 'myth.sh'  'smolt_jump.patch' 'svn_main_menu_popup.patch' `echo ${patchs[@]:0}` )
+arch=('i686')
+md5sums=()
+
+
+
+_svntrunk=http://cvs.mythtv.org/svn/trunk/mythtv
+_svnmod=mythtv
+
+build() {
+
+    svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+    cd $startdir/src/mythtv
+    echo "--------------------------applying patches----------------------------------------------------"
+	patch -Np0 -i  $startdir/src/smolt_jump.patch #|| return 1
+	patch -Np0 -i  $startdir/src/svn_main_menu_popup.patch #||return 1
+
+    for i in `echo ${patchs[@]:0} `
+    do
+        echo applying $i
+        echo "------------"
+        patch -Np0  -i ${startdir}/src/$i  #|| return 1
+    done
+    echo "--------------------------done   applying patches----------------------------------------------------"
+    sed -i -e "s/\`(svnversion \$\${SVNTREEDIR} 2>\/dev\/null) || echo Unknown\`/$pkgver/" version.pro
+    make distclean
+    ./configure --prefix=/usr --enable-xvmc --enable-xvmc-pro --enable-opengl-vsync --enable-dvb --enable-firewire --compile-type=release --with-bindings=perl --disable-audio-arts --disable-xrandr 
+    . /etc/profile
+    make
+    make INSTALL_ROOT=$startdir/pkg install
+    
+  #Patch the xml LinHES style
+  cp -r $startdir/menu-xml/*.xml $startdir/pkg/usr/share/mythtv
+  cd $startdir/pkg/usr/share/mythtv
+  patch -p0 < $startdir/menu-xml/mainmenu.xml.patch
+  patch -p0 < $startdir/menu-xml/optical_menu.xml.patch
+  patch -p0 < $startdir/menu-xml/library.xml.patch
+    
+    #   mkdir -p $startdir/pkg/usr/share/mythtv/contrib
+    #   mkdir -p $startdir/pkg/etc/rc.d
+    #   mkdir -p $startdir/pkg/var/log/mythtv
+    #   mkdir -p $startdir/pkg/etc/profile.d
+    #   install -m0755 ../myth.sh $startdir/pkg/etc/profile.d/
+    
+    # install contrib
+    #   mkdir -p $startdir/pkg/usr/local/share/mythtv/contrib || return 1
+    #   cp -rp contrib/* $startdir/pkg/usr/local/share/mythtv/contrib
+    #   echo "-release-fixes"   >  $startdir/pkg/usr/local/share/mythtv/.releasetype   
+    # install -m0755 themes/*.ttf $startdir/pkg/usr/local/share/mythtv/themes/
+    
+    
+    #   mkdir -p $startdir/pkg/usr/lib/
+    #   mv $startdir/pkg/usr/local/lib/perl5 $startdir/pkg/usr/lib/perl5
+    #  cd $startdir/src/mythtv/contrib
+    #  gcc -Wall -o firewire_tester firewire_tester.c -liec61883 -lraw1394
+    # install -m0755 firewire_tester $startdir/pkg/usr/local/bin/firewire_tester
+    #install -m0755  $startdir/pkg/usr/local/share/mythtv/contrib/optimize_mythdb.pl  $startdir/pkg/usr/local/bin/optimize_mythdb.pl 
+    #    cp $startdir/src/myth.find_orphans.pl $startdir/pkg/usr/local/share/mythtv/contrib/myth.find_orphans.pl
+    # install -m0755  $startdir/pkg/usr/local/share/mythtv/contrib/myth.find_orphans.pl  $startdir/pkg/usr/local/bin/myth.find_orphans.pl
+    
+
+}
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/aacdecoder.cpp.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/aacdecoder.cpp.patch
new file mode 100644
index 0000000..8796eb4
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/aacdecoder.cpp.patch
@@ -0,0 +1,12 @@
+--- mythmusic/mythmusic/aacdecoder.cpp.orig	2008-11-19 12:51:48.000000000 -0500
++++ mythmusic/mythmusic/aacdecoder.cpp	2008-11-19 12:52:42.000000000 -0500
+@@ -17,6 +17,9 @@
+ #define FAAD_MODIFIED
+ #endif
+ 
++// LinHES need this undefined
++#undef FAAD_MODIFIED
++
+ // ANSI C headers
+ #include <cstdlib>
+ 
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/hdpvr-v4lchannel-tweak.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/hdpvr-v4lchannel-tweak.patch
new file mode 100644
index 0000000..3535310
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/hdpvr-v4lchannel-tweak.patch
@@ -0,0 +1,139 @@
+Index: libs/libmythtv/v4lchannel.h
+===================================================================
+--- libs/libmythtv/v4lchannel.h	(revision 18874)
++++ libs/libmythtv/v4lchannel.h	(working copy)
+@@ -103,6 +103,8 @@
+     VidModV4L2  videomode_v4l2; ///< Current video mode if 'usingv4l2' is true
+ 
+     int         defaultFreqTable;
++    int         prev_inputNumV4L;
++    v4l2_std_id prev_vid_mode;
+ };
+ 
+ #endif
+Index: libs/libmythtv/v4lchannel.cpp
+===================================================================
+--- libs/libmythtv/v4lchannel.cpp	(revision 18874)
++++ libs/libmythtv/v4lchannel.cpp	(working copy)
+@@ -40,7 +40,8 @@
+       device_name(QString::null),   driver_name(QString::null),
+       curList(NULL),                totalChannels(0),
+       currentFormat(""),            is_dtv(false),
+-      usingv4l2(false),             defaultFreqTable(1)
++      usingv4l2(false),             defaultFreqTable(1),
++      prev_inputNumV4L(-1),         prev_vid_mode(-1)
+ {
+ }
+ 
+@@ -795,62 +796,75 @@
+     {
+         VERBOSE(VB_CHANNEL, LOC + msg + "(v4l v2)");
+ 
+-        int ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L);
++	int ioctlval;
++	bool streamingDisabled = false;
++	int  streamType = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ 
+-        // ConvertX (wis-go7007) requires streaming to be disabled
+-        // before an input switch, do this if initial switch failed.
+-        bool streamingDisabled = false;
+-        int  streamType = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+-        if ((ioctlval < 0) && (errno == EBUSY))
++        if (prev_inputNumV4L != inputNumV4L)
+         {
+-            ioctlval = ioctl(videofd, VIDIOC_STREAMOFF, &streamType);
++            ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L);
++
++            // ConvertX (wis-go7007) requires streaming to be disabled
++            // before an input switch, do this if initial switch failed.
++            if ((ioctlval < 0) && (errno == EBUSY))
++            {
++                ioctlval = ioctl(videofd, VIDIOC_STREAMOFF, &streamType);
++                if (ioctlval < 0)
++                {
++                    VERBOSE(VB_IMPORTANT, LOC_ERR + msg +
++                            "\n\t\t\twhile disabling streaming (v4l v2)" + ENO);
++
++                    ok = false;
++                    ioctlval = 0;
++                }
++                else
++                {
++                    streamingDisabled = true;
++
++                    // Resend the input switch ioctl.
++                    ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L);
++                }
++            }
++
+             if (ioctlval < 0)
+             {
+                 VERBOSE(VB_IMPORTANT, LOC_ERR + msg +
+-                        "\n\t\t\twhile disabling streaming (v4l v2)" + ENO);
++                        "\n\t\t\twhile setting input (v4l v2)" + ENO);
+ 
+                 ok = false;
+-                ioctlval = 0;
+             }
+-            else
+-            {
+-                streamingDisabled = true;
+ 
+-                // Resend the input switch ioctl.
+-                ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L);
+-            }
++            prev_inputNumV4L = inputNumV4L;
+         }
+ 
+-        if (ioctlval < 0)
+-        {
+-            VERBOSE(VB_IMPORTANT, LOC_ERR + msg +
+-                    "\n\t\t\twhile setting input (v4l v2)" + ENO);
+-
+-            ok = false;
+-        }
+-
+         v4l2_std_id vid_mode = format_to_mode(newFmt, 2);
+-        ioctlval = ioctl(videofd, VIDIOC_S_STD, &vid_mode);
+-        if (ioctlval < 0)
+-        {
+-            VERBOSE(VB_IMPORTANT, LOC_ERR + msg +
+-                    "\n\t\t\twhile setting format (v4l v2)" + ENO);
+ 
+-            ok = false;
+-        }
+-
+-        // ConvertX (wis-go7007) requires streaming to be disabled
+-        // before an input switch, here we try to re-enable streaming.
+-        if (streamingDisabled)
++        if (prev_vid_mode != vid_mode)
+         {
+-            ioctlval = ioctl(videofd, VIDIOC_STREAMON, &streamType);
++            ioctlval = ioctl(videofd, VIDIOC_S_STD, &vid_mode);
+             if (ioctlval < 0)
+             {
+                 VERBOSE(VB_IMPORTANT, LOC_ERR + msg +
+-                        "\n\t\t\twhile reenabling streaming (v4l v2)" + ENO);
++                        "\n\t\t\twhile setting format (v4l v2)" + ENO);
+ 
+                 ok = false;
+             }
++
++            // ConvertX (wis-go7007) requires streaming to be disabled
++            // before an input switch, here we try to re-enable streaming.
++            if (streamingDisabled)
++            {
++                ioctlval = ioctl(videofd, VIDIOC_STREAMON, &streamType);
++                if (ioctlval < 0)
++                {
++                    VERBOSE(VB_IMPORTANT, LOC_ERR + msg +
++                            "\n\t\t\twhile reenabling streaming (v4l v2)" +
++                            ENO);
++
++                    ok = false;
++                }
++            }
++            prev_vid_mode = vid_mode;
+         }
+     }
+ 
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/HOST_SETTINGS.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/HOST_SETTINGS.xml
new file mode 100644
index 0000000..f257920
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/HOST_SETTINGS.xml
@@ -0,0 +1,87 @@
+<mythmenu name="HOST_SETTINGS">
+
+   <button>
+       <type>MV_NETWORK_SETUP_MENU</type>
+      <text>Network Settings</text>
+      <action>EXEC  mythinstall -s network </action>
+   </button>
+
+   <button>
+       <type>MV_SYSTEM_SETUP_MENU</type>
+      <text>System type</text>
+        <action>EXEC  mythinstall -s hostype </action>
+   </button>
+
+   <button>
+       <type>MV_MISC_SETUP_MENU</type>
+      <text>Misc Settings</text>
+       <action>EXEC  mythinstall -s misc </action>
+   </button>
+
+   <button>
+       <type>MV_SOFTWARE_MENU</type>
+      <text>Software</text>
+       <action>EXEC  mythinstall -s  plugins </action>
+   </button>
+
+   <button>
+      <type>MV_SHUTDOWN_SETUP_MENU</type>
+      <text>Shutdown settings</text>
+        <action>EXEC  mythinstall -s sleep </action>
+   </button>
+
+
+<button>
+   <type>MV_ADVANCED_X_SETUP_MENU</type>
+    <text>Display</text>
+    <action>EXEC  mythinstall -s advancedX</action>
+</button>
+
+<button>
+   <type>MV_ADVANCED_SETUP_MENU</type>
+    <text>Advanced settings</text>
+    <action>EXEC  mythinstall -s advanced</action>
+</button>
+
+
+<button>
+       <type>MV_AUDIO_SETUP_MENU</type>
+       <text>Audio settings</text>
+        <action>EXEC  mythinstall -s sound </action>
+</button>
+
+
+<button>
+       <type>MV_ACCESS_SETUP_MENU</type>
+       <text>Access</text>
+       <action>EXEC  mythinstall -s accesscontrol </action>
+</button>
+
+<button>
+       <type>MV_USER_SETUP_MENU</type>
+       <text>Password </text>
+       <action>EXEC  mythinstall -s user </action>
+</button>
+
+<button>
+       <type>MV_WEBACCESS_SETUP_MENU</type>
+       <text>Web security</text>
+       <action>EXEC  mythinstall -s webuser </action>
+</button>
+
+
+
+
+   <!--
+   <button>
+       <type>SETUP_MENU</type>
+       <text>Settings profile manager</text>
+        <action>EXEC  mythinstall -t </action>
+
+   </button>
+   -->
+
+
+
+
+</mythmenu>
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/is.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/is.xml
new file mode 100644
index 0000000..65935cf
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/is.xml
@@ -0,0 +1,33 @@
+<mythmenu name="Internet Steams">
+   <button>
+     <type>MOVIETIMES</type>
+     <text>Apple Trailers</text>
+     <action>MENU appletrailer.xml</action>
+   </button>
+
+   <button>
+     <type>STREAM</type>
+     <text>MythStream</text>
+     <action>PLUGIN mythstream</action>
+     <depends>mythstream</depends>
+    </button>
+
+   <button>
+     <type>STREAM</type>
+     <text>Miro Player</text>
+     <action>EXEC /usr/bin/democracyplayer</action>
+   </button>
+
+   <button>
+     <type>KnoppMyth</type>
+     <text>Sirius Satellite Radio</text>
+     <action>MENU siriusmenu.xml</action>
+   </button>
+
+   <button>
+     <type>KnoppMyth</type>
+     <text>XM Satellite Radio</text>
+     <action>MENU xmmenu.xml</action>
+   </button>
+
+</mythmenu>
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/knoppmyth.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/knoppmyth.xml
new file mode 100644
index 0000000..8aa6134
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/knoppmyth.xml
@@ -0,0 +1,55 @@
+<mythmenu name="KnoppMyth">
+
+   <button>
+     <type>BACKUP</type>
+     <text>Backup KnoppMyth</text>
+     <action>MENU mythbackup.xml</action>
+   </button>
+
+   <button>
+     <type>RESTORE</type>
+     <text>Restore KnoppMyth</text>
+     <action>MENU mythrestore.xml</action>
+   </button>
+   
+   <button>
+     <type>Motion</type>
+     <text>Motion</text>
+     <action>MENU motion.xml</action>
+   </button>
+<!--
+   <button>
+     <type>POWER</type>
+     <text>Power Off </text>
+     <action>EXEC /usr/bin/sudo halt</action>
+   </button>
+   
+   <button>
+     <type>POWER</type>
+     <text>Reboot</text>
+     <action>EXEC /usr/bin/sudo reboot</action>
+   </button>
+
+   <button>
+     <type>VERSION</type>
+     <text>Version</text>
+     <action>EXEC /usr/local/bin/ver.sh</action>
+   </button>
+-->
+
+   <button>
+       <type>MV_SETUP_MENU</type>
+       <text>MythVantage Settings</text>
+       <action>MENU HOST_SETTINGS.xml</action>
+
+   </button>
+<!--
+   <button>
+       <type>MV_TEMPLATE</type>
+       <text>Settings profile manager</text>
+        <action>EXEC  mythinstall -t </action>
+
+   </button>
+-->
+</mythmenu>
+
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/library.xml.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/library.xml.patch
new file mode 100644
index 0000000..ef08f0c
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/library.xml.patch
@@ -0,0 +1,13 @@
+--- library.xml.orig	2008-11-13 11:26:10.000000000 -0500
++++ library.xml	2008-11-19 11:55:55.000000000 -0500
+@@ -120,9 +120,7 @@
+    <button>
+      <type>STREAM</type>
+      <text>Play Online Streams</text>
+-     <text lang="HE">נגן מדיה מכוונת</text>
+-     <action>PLUGIN mythstream</action>
+-     <depends>mythstream</depends>
++     <action>MENU is.xml</action>
+    </button>
+ 
+    <button>
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/mainmenu.xml.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/mainmenu.xml.patch
new file mode 100644
index 0000000..f4f57f1
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/mainmenu.xml.patch
@@ -0,0 +1,16 @@
+--- mainmenu.xml.orig	2008-11-13 11:26:10.000000000 -0500
++++ mainmenu.xml	2008-11-19 12:01:57.000000000 -0500
+@@ -188,6 +188,13 @@
+      <action>MENU util_menu.xml</action>
+    </button>
+ 
++
++   <button>
++     <type>MENU_UTILITIES_SETUP</type>
++     <text>Service Menu</text>
++     <action>MENU knoppmyth.xml</action>
++   </button>
++
+    <!-- <button>
+      <type>SHUTDOWN</type>
+      <text>Shutdown</text>
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/motion.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/motion.xml
new file mode 100644
index 0000000..23ebfe2
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/motion.xml
@@ -0,0 +1,20 @@
+<mythmenu name="Motion">
+
+   <button>
+     <type>MOTION</type>
+     <text>Start Motion</text>
+     <action>EXEC sudo /etc/init.d/motion start</action>
+   </button>
+
+   <button>
+     <type>MOTION</type>
+     <text>Stop Motion</text>
+     <action>EXEC sudo /etc/init.d/motion stop</action>
+   </button>
+   
+   <button>
+     <type>MOTION</type>
+     <text>Clear Motion</text>
+     <action>EXEC /usr/local/bin/cm.sh</action>
+   </button>
+</mythmenu>
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/optical_menu.xml.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/optical_menu.xml.patch
new file mode 100644
index 0000000..7e016a5
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/optical_menu.xml.patch
@@ -0,0 +1,15 @@
+--- optical_menu.xml.orig	2008-11-19 11:52:44.000000000 -0500
++++ optical_menu.xml	2008-11-19 12:32:19.000000000 -0500
+@@ -129,6 +129,12 @@
+    </button>
+ 
+    <button>
++      <type>DVD_RIP</type>
++      <text>Import video files from DVD</text>
++      <action>EXEC /usr/local/bin/importfiles.sh</action>
++   </button>
++
++   <button>
+       <type>EJECT</type>
+       <text>Eject media</text>
+       <text lang="IT">Espelli Media</text>
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/setup.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/setup.xml
new file mode 100644
index 0000000..f56bb6f
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/setup.xml
@@ -0,0 +1,111 @@
+<mythmenu name="MAIN">
+
+   <button>
+     <type>SETUP_GENERAL</type>
+     <text>1. General</text>
+     <text lang="IT">1. Generale</text>
+     <text lang="PT">1. Geral</text>
+     <text lang="SV">1. Generellt</text>
+     <text lang="JA">1. 一般</text>
+     <text lang="DE">1. Allgemeines</text>
+     <text lang="FI">1. Yleiset</text>
+     <text lang="FR">1. Général</text>
+     <text lang="SI">1. Splošno</text>
+     <text lang="ET">1. Üldine</text>
+     <text lang="NB">1 Generelt</text>
+     <text lang="DK">1. Generelt</text>
+     <text lang="ES">1. General</text>
+     <text lang="CZ">1. Obecný</text>
+     <text lang="RU">1. Общие</text>
+     <action>GENERAL</action>
+   </button>
+
+   <button>
+     <type>SETUP_CAPTURE_CARDS</type>
+     <text>2. Capture cards</text>
+     <text lang="IT">2. Schede di Acquisizione</text>
+     <text lang="PT">2. Placas de Captura</text>
+     <text lang="SV">2. TV-kort</text>
+     <text lang="JA">2. キャプチャカード</text>
+     <text lang="DE">2. TV-Karten</text>
+     <text lang="FI">2. TV-kortit</text>
+     <text lang="FR">2. Cartes d'acquisition</text>
+     <text lang="SI">2. Kartice za zajem</text>
+     <text lang="ET">2. TV-kaardid</text>
+     <text lang="NB">2 TV-kort</text>
+     <text lang="DK">2. TV-kort</text>
+     <text lang="ES">2. Capturadoras</text>
+     <text lang="CZ">2. Zachytávací karty</text>
+     <text lang="RU">2. Карты захвата</text>
+     <action>CAPTURE CARDS</action>
+   </button>
+
+   <button>
+     <type>SETUP_VIDEO_SOURCES</type>
+     <text>3. Video sources</text>
+     <text lang="IT">3. Fonte Video</text>
+     <text lang="PT">3. Fontes de Vídeo</text>
+     <text lang="SV">3. Videokällor</text>
+     <text lang="JA">3. ビデオソース</text>
+     <text lang="DE">3. Videoquellen</text>
+     <text lang="FI">3. Kuvanlähteet</text>
+     <text lang="FR">3. Sources vidéo</text>
+     <text lang="SI">3. Video viri</text>
+     <text lang="ET">3. Videosisendid</text>
+     <text lang="NB">3 Videokilder</text>
+     <text lang="DK">3. Videokilder</text>
+     <text lang="ES">3. Fuentes de Vídeo</text>
+     <text lang="CZ">3. Zdroje obrazu</text>
+     <text lang="RU">3. Видео источники</text>
+     <action>VIDEO SOURCES</action>
+   </button>
+
+   <button>
+     <type>SETUP_INPUT_CONNECTIONS</type>
+     <text>4. Input connections</text>
+     <text lang="IT">4. Connessioni di Ingresso</text>
+     <text lang="PT">4. Ligações de Entrada</text>
+     <text lang="SV">4. Anslutningar</text>
+     <text lang="JA">4. 入力とソースの接続</text>
+     <text lang="DE">4. Verknüpfungen</text>
+     <text lang="FI">4. Sisääntuloasetukset</text>
+     <text lang="FR">4. Entrées Vidéos</text>
+     <text lang="SI">4. Vhodne povezave</text>
+     <text lang="ET">4. Sisendite ühendused</text>
+     <text lang="NB">4 Inndata</text>
+     <text lang="DK">4. Indgange</text>
+     <text lang="ES">4. Conexiones</text>
+     <text lang="CZ">4. Připojení vstupů</text>
+     <text lang="RU">4. Соединение входов</text>
+     <action>CARD INPUTS</action>
+   </button>
+
+   <button>
+     <type>SETUP_CHANNEL_EDITOR</type>
+     <text>5. Channel Editor</text>
+     <text lang="IT">5. Modifica Canali</text>
+     <text lang="SV">5. Kanaleditor</text>
+     <text lang="JA">5. チャンネル設定</text>
+     <text lang="DE">5. Sender bearbeiten</text>
+     <text lang="FI">5. Kanavanviritys</text>
+     <text lang="FR">5. Editeur de chaînes</text>
+     <text lang="SI">5. Urejanje kanalov</text>
+     <text lang="ET">5. Kanaliredaktor</text>
+     <text lang="NB">5 Kanalredigerer</text>
+     <text lang="DK">5. Kanal opsætning</text>
+     <text lang="ES">5. Editor Canales</text>
+     <text lang="CZ">5. Editor kanálů</text>
+     <text lang="RU">5. Редактор каналов</text>
+     <action>CHANNEL EDITOR</action>
+   </button>
+
+   <button>
+     <type>SETUP_STORAGE_GROUPS</type>
+     <text>6. Storage Directories</text>
+     <text lang="IT">6. Cartelle</text>
+     <text lang="FI">Tallennusryhmät</text>
+     <text lang="SV">Lagringsgrupper</text>
+     <action>STORAGE GROUPS</action>
+   </button>
+
+</mythmenu>
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/siriusmenu.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/siriusmenu.xml
new file mode 100644
index 0000000..e317b36
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/siriusmenu.xml
@@ -0,0 +1,419 @@
+<mythmenu name="SIRIUS">
+   <button>
+      <type>MUSIC</type>
+      <text>Sirius Hits 1</text>
+      <action>EXEC /usr/bin/cliSipie siriushits1</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>StarLite</text>
+      <action>EXEC /usr/bin/cliSipie starlite</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Sirius Love</text>
+      <action>EXEC /usr/bin/cliSipie siriuslove</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Movin EZ</text>
+      <action>EXEC /usr/bin/cliSipie movineasy</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Sirius Gold</text>
+      <action>EXEC /usr/bin/cliSipie siriusgold</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>'60s Vibrations</text>
+      <action>EXEC /usr/bin/cliSipie 60svibrations</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Totally '70s</text>
+      <action>EXEC /usr/bin/cliSipie totally70s</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Big '80s</text>
+      <action>EXEC /usr/bin/cliSipie big80s</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>ThePulse</text>
+      <action>EXEC /usr/bin/cliSipie thepulse</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Bridge</text>
+      <action>EXEC /usr/bin/cliSipie thebridge</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>BBC Radio 1</text>
+      <action>EXEC /usr/bin/cliSipie bbcradio1</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Super Shuffle</text>
+      <action>EXEC /usr/bin/cliSipie supershuffle</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Elvis Radio</text>
+      <action>EXEC /usr/bin/cliSipie elvisradio</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Classic Vinyl</text>
+      <action>EXEC /usr/bin/cliSipie classicvinyl</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Classic Rewind</text>
+      <action>EXEC /usr/bin/cliSipie classicrewind</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>TheVault</text>
+      <action>EXEC /usr/bin/cliSipie thevault</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Jam_ON</text>
+      <action>EXEC /usr/bin/cliSipie jamon</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Spectrum</text>
+      <action>EXEC /usr/bin/cliSipie thespectrum</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>BuzzSaw</text>
+      <action>EXEC /usr/bin/cliSipie buzzsaw</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Octane</text>
+      <action>EXEC /usr/bin/cliSipie octane</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Alt Nation</text>
+      <action>EXEC /usr/bin/cliSipie altnation</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>1st Wave</text>
+      <action>EXEC /usr/bin/cliSipie firstwave</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Hair Nation</text>
+      <action>EXEC /usr/bin/cliSipie hairnation</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>'90s Alternative</text>
+      <action>EXEC /usr/bin/cliSipie 90salternative</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Garage</text>
+      <action>EXEC /usr/bin/cliSipie undergroundgarage</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Left of Center</text>
+      <action>EXEC /usr/bin/cliSipie leftofcenter</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Hard Attack</text>
+      <action>EXEC /usr/bin/cliSipie hardattack</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Faction</text>
+      <action>EXEC /usr/bin/cliSipie faction</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Punk</text>
+      <action>EXEC /usr/bin/cliSipie punk</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>The Coffee House</text>
+      <action>EXEC /usr/bin/cliSipie coffeehouse</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Margaritaville</text>
+      <action>EXEC /usr/bin/cliSipie radiomargaritaville</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Sirius Disorder</text>
+      <action>EXEC /usr/bin/cliSipie siriusdisorder</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Reggae</text>
+      <action>EXEC /usr/bin/cliSipie reggaerhythms</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Area 33</text>
+      <action>EXEC /usr/bin/cliSipie area33</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Boombox</text>
+      <action>EXEC /usr/bin/cliSipie boombox</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Chill</text>
+      <action>EXEC /usr/bin/cliSipie chill</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>The Beat</text>
+      <action>EXEC /usr/bin/cliSipie thebeat</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Strobe</text>
+      <action>EXEC /usr/bin/cliSipie thestrobe</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Hip-Hop Nation</text>
+      <action>EXEC /usr/bin/cliSipie hiphopnation</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>BackSpin</text>
+      <action>EXEC /usr/bin/cliSipie backspin</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Shade 45</text>
+      <action>EXEC /usr/bin/cliSipie shade45</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Hot Jamz</text>
+      <action>EXEC /usr/bin/cliSipie hotjamz</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Heart  &amp; Soul</text>
+      <action>EXEC /usr/bin/cliSipie heartandsoul</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>SoulTown</text>
+      <action>EXEC /usr/bin/cliSipie soultown</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>New Country</text>
+      <action>EXEC /usr/bin/cliSipie newcountry</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Prime Country</text>
+      <action>EXEC /usr/bin/cliSipie primecountry</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Roadhouse</text>
+      <action>EXEC /usr/bin/cliSipie theroadhouse</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Outlaw Country</text>
+      <action>EXEC /usr/bin/cliSipie outlawcountry</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Bluegrass</text>
+      <action>EXEC /usr/bin/cliSipie bluegrass</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Spirit</text>
+      <action>EXEC /usr/bin/cliSipie spirit</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Praise</text>
+      <action>EXEC /usr/bin/cliSipie praise</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Planet Jazz</text>
+      <action>EXEC /usr/bin/cliSipie planetjazz</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>JazzCafe</text>
+      <action>EXEC /usr/bin/cliSipie jazzcafe</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>PureJazz</text>
+      <action>EXEC /usr/bin/cliSipie purejazz</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Spa 73</text>
+      <action>EXEC /usr/bin/cliSipie spa73</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Blues</text>
+      <action>EXEC /usr/bin/cliSipie siriusblues</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Siriusly Sinatra</text>
+      <action>EXEC /usr/bin/cliSipie siriuslysinatra</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Broadway's Best</text>
+      <action>EXEC /usr/bin/cliSipie broadwaysbest</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Symphony Hall</text>
+      <action>EXEC /usr/bin/cliSipie symphonyhall</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Met Opera Radio</text>
+      <action>EXEC /usr/bin/cliSipie metropolitanopera</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Sirius Pops</text>
+      <action>EXEC /usr/bin/cliSipie siriuspops</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Universo Latino</text>
+      <action>EXEC /usr/bin/cliSipie universolatino</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Rumbon</text>
+      <action>EXEC /usr/bin/cliSipie rumbon</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Martha Stewart</text>
+      <action>EXEC /usr/bin/cliSipie marthastewartlivingradio</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Sirius Stars</text>
+      <action>EXEC /usr/bin/cliSipie siriusstars</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>OutQ Gay Radio</text>
+      <action>EXEC /usr/bin/cliSipie siriusoutq</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Patriot</text>
+      <action>EXEC /usr/bin/cliSipie siriuspatriot</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Left</text>
+      <action>EXEC /usr/bin/cliSipie siriusleft</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>CNN</text>
+      <action>EXEC /usr/bin/cliSipie cnn</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>wrn</text>
+      <action>EXEC /usr/bin/cliSipie wrn</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Blue Collar Comedy</text>
+      <action>EXEC /usr/bin/cliSipie bluecollarcomedy</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Raw Dog Comedy</text>
+      <action>EXEC /usr/bin/cliSipie rawdog</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Laugh Break Comedy</text>
+      <action>EXEC /usr/bin/cliSipie laughbreak</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>thefoxxhole</text>
+      <action>EXEC /usr/bin/cliSipie thefoxxhole</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>lime</text>
+      <action>EXEC /usr/bin/cliSipie lime</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Kids Stuff</text>
+      <action>EXEC /usr/bin/cliSipie kidsstuff</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Catholic Channel</text>
+      <action>EXEC /usr/bin/cliSipie thecatholicchannel</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>EWTN</text>
+      <action>EXEC /usr/bin/cliSipie ewtnglobal</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>christiantalk</text>
+      <action>EXEC /usr/bin/cliSipie christiantalk</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Sirius NFL Radio</text>
+      <action>EXEC /usr/bin/cliSipie siriusnflradio</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Maxim Radio</text>
+      <action>EXEC /usr/bin/cliSipie maximradio</action>
+   </button>
+   <button>
+      <type>MUSIC</type>
+      <text>Cosmo Radio</text>
+      <action>EXEC /usr/bin/cliSipie cosmopolitanradio</action>
+   </button>
+   <button>
+     <type>TV_DELETE</type>
+     <text>Stop Listening</text>
+     <action>EXEC /usr/bin/sipie_kill</action>
+  </button>
+
+</mythmenu>
+
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/xmmenu.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/xmmenu.xml
new file mode 100644
index 0000000..6b26d11
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/xmmenu.xml
@@ -0,0 +1,574 @@
+<!-- Current as of April 25, 2007 -->
+<mythmenu name="XM">
+
+	<button>
+		<type>MUSIC</type>
+		<text>The '40s</text>
+		<action>EXEC /usr/bin/xamp kill 4</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The '50s</text>
+		<action>EXEC /usr/bin/xamp kill 5</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The '60s</text>
+		<action>EXEC /usr/bin/xamp kill 6</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The '70s</text>
+		<action>EXEC /usr/bin/xamp kill 7</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The '80s</text>
+		<action>EXEC /usr/bin/xamp kill 8</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The '90s</text>
+		<action>EXEC /usr/bin/xamp kill 9</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>America</text>
+		<action>EXEC /usr/bin/xamp kill 10</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>X Country</text>
+		<action>EXEC /usr/bin/xamp kill 12</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Willie's Place</text>
+		<action>EXEC /usr/bin/xamp kill 13</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Bluegrass Junction</text>
+		<action>EXEC /usr/bin/xamp kill 14</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Village</text>
+		<action>EXEC /usr/bin/xamp kill 15</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Highway 16</text>
+		<action>EXEC /usr/bin/xamp kill 16</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>US Country</text>
+		<action>EXEC /usr/bin/xamp kill 17</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>20 on 20</text>
+		<action>EXEC /usr/bin/xamp kill 20</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Heart</text>
+		<action>EXEC /usr/bin/xamp kill 23</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Blend</text>
+		<action>EXEC /usr/bin/xamp kill 25</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Flight 26</text>
+		<action>EXEC /usr/bin/xamp kill 26</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Cinemagic</text>
+		<action>EXEC /usr/bin/xamp kill 27</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>On Broadway</text>
+		<action>EXEC /usr/bin/xamp kill 28</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>U-Pop</text>
+		<action>EXEC /usr/bin/xamp kill 29</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Hitlist</text>
+		<action>EXEC /usr/bin/xamp kill 30</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Torch</text>
+		<action>EXEC /usr/bin/xamp kill 31</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Message</text>
+		<action>EXEC /usr/bin/xamp kill 32</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Spirit</text>
+		<action>EXEC /usr/bin/xamp kill 33</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>enLighten</text>
+		<action>EXEC /usr/bin/xamp kill 34</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Deep Tracks</text>
+		<action>EXEC /usr/bin/xamp kill 40</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Boneyard</text>
+		<action>EXEC /usr/bin/xamp kill 41</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Liquid Metal</text>
+		<action>EXEC /usr/bin/xamp kill 42</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XMU</text>
+		<action>EXEC /usr/bin/xamp kill 43</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Fred</text>
+		<action>EXEC /usr/bin/xamp kill 44</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Cafe</text>
+		<action>EXEC /usr/bin/xamp kill 45</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Top Tracks</text>
+		<action>EXEC /usr/bin/xamp kill 46</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Ethel</text>
+		<action>EXEC /usr/bin/xamp kill 47</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Squizz</text>
+		<action>EXEC /usr/bin/xamp kill 48</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Big Tracks</text>
+		<action>EXEC /usr/bin/xamp kill 49</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Loft</text>
+		<action>EXEC /usr/bin/xamp kill 50</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Music Lab</text>
+		<action>EXEC /usr/bin/xamp kill 51</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Verge</text>
+		<action>EXEC /usr/bin/xamp kill 52</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Fungus</text>
+		<action>EXEC /usr/bin/xamp kill 53</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Lucy</text>
+		<action>EXEC /usr/bin/xamp kill 54</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Soul Street</text>
+		<action>EXEC /usr/bin/xamp kill 60</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Flow</text>
+		<action>EXEC /usr/bin/xamp kill 61</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Suite 62</text>
+		<action>EXEC /usr/bin/xamp kill 62</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Groove</text>
+		<action>EXEC /usr/bin/xamp kill 64</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Rhyme</text>
+		<action>EXEC /usr/bin/xamp kill 65</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>RAW</text>
+		<action>EXEC /usr/bin/xamp kill 66</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The City</text>
+		<action>EXEC /usr/bin/xamp kill 67</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Heat</text>
+		<action>EXEC /usr/bin/xamp kill 68</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Real Jazz</text>
+		<action>EXEC /usr/bin/xamp kill 70</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Watercolors</text>
+		<action>EXEC /usr/bin/xamp kill 71</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Beyond Jazz</text>
+		<action>EXEC /usr/bin/xamp kill 72</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>High Standards</text>
+		<action>EXEC /usr/bin/xamp kill 73</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Bluesville</text>
+		<action>EXEC /usr/bin/xamp kill 74</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Hear Music</text>
+		<action>EXEC /usr/bin/xamp kill 75</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Fine Tuning</text>
+		<action>EXEC /usr/bin/xamp kill 76</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Audio Visions</text>
+		<action>EXEC /usr/bin/xamp kill 77</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Escape</text>
+		<action>EXEC /usr/bin/xamp kill 78</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>On The Rocks</text>
+		<action>EXEC /usr/bin/xamp kill 79</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Move</text>
+		<action>EXEC /usr/bin/xamp kill 80</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>BPM</text>
+		<action>EXEC /usr/bin/xamp kill 81</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The System</text>
+		<action>EXEC /usr/bin/xamp kill 82</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Chrome</text>
+		<action>EXEC /usr/bin/xamp kill 83</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM-Chill</text>
+		<action>EXEC /usr/bin/xamp kill 84</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Fuego</text>
+		<action>EXEC /usr/bin/xamp kill 90</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Viva</text>
+		<action>EXEC /usr/bin/xamp kill 91</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Aguila</text>
+		<action>EXEC /usr/bin/xamp kill 92</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Caliente</text>
+		<action>EXEC /usr/bin/xamp kill 94</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Luna</text>
+		<action>EXEC /usr/bin/xamp kill 95</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Air Musique</text>
+		<action>EXEC /usr/bin/xamp kill 100</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Joint</text>
+		<action>EXEC /usr/bin/xamp kill 101</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Sur La Route</text>
+		<action>EXEC /usr/bin/xamp kill 102</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>World Zone</text>
+		<action>EXEC /usr/bin/xamp kill 103</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Ngoma</text>
+		<action>EXEC /usr/bin/xamp kill 104</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Classics</text>
+		<action>EXEC /usr/bin/xamp kill 110</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Vox</text>
+		<action>EXEC /usr/bin/xamp kill 112</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Pops</text>
+		<action>EXEC /usr/bin/xamp kill 113</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Kids</text>
+		<action>EXEC /usr/bin/xamp kill 116</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Bob Edwards Show</text>
+		<action>EXEC /usr/bin/xamp kill 133</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>XM Comedy</text>
+		<action>EXEC /usr/bin/xamp kill 150</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Laugh USA</text>
+		<action>EXEC /usr/bin/xamp kill 151</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Special X</text>
+		<action>EXEC /usr/bin/xamp kill 154</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Agenda</text>
+		<action>EXEC /usr/bin/xamp kill 134</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Oprah and Friends</text>
+		<action>EXEC /usr/bin/xamp kill 156</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>The Virus</text>
+		<action>EXEC /usr/bin/xamp kill 202</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>1 Hit Wonders</text>
+		<action>EXEC /usr/bin/xamp kill 300</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Metalcore</text>
+		<action>EXEC /usr/bin/xamp kill 301</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>New Indie First</text>
+		<action>EXEC /usr/bin/xamp kill 302</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Late Night Mix</text>
+		<action>EXEC /usr/bin/xamp kill 303</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Sessions@AOL</text>
+		<action>EXEC /usr/bin/xamp kill 304</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>Shuffle</text>
+		<action>EXEC /usr/bin/xamp kill 305</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>New Rock First</text>
+		<action>EXEC /usr/bin/xamp kill 306</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>New Country First</text>
+		<action>EXEC /usr/bin/xamp kill 307</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>New Hip Hop First</text>
+		<action>EXEC /usr/bin/xamp kill 308</action>
+	</button>
+
+	<button>
+		<type>MUSIC</type>
+		<text>New Pop First</text>
+		<action>EXEC /usr/bin/xamp kill 309</action>
+	</button>
+
+	<button>
+		<type>TV_DELETE</type>
+		<text>Stop Listening</text>
+		<action>EXEC /usr/bin/xamp kill</action>
+	</button>
+
+</mythmenu>
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/mpegrecorder-hdpvr-v1.1.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/mpegrecorder-hdpvr-v1.1.patch
new file mode 100644
index 0000000..f292b7f
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/mpegrecorder-hdpvr-v1.1.patch
@@ -0,0 +1,658 @@
+Index: libs/libmythtv/mpegrecorder.h
+===================================================================
+--- libs/libmythtv/mpegrecorder.h	(revision 19056)
++++ libs/libmythtv/mpegrecorder.h	(working copy)
+@@ -80,11 +80,13 @@
+     uint GetFilteredAudioLayer(void) const;
+     uint GetFilteredAudioBitRate(uint audio_layer) const;
+ 
++    void RestartEncoding(void);
+     bool StartEncoding(int fd);
+     bool StopEncoding(int fd);
+ 
+     void ResetForNewFile(void);
+ 
++    bool WaitFor_HDPVR(void);
+     void HandleResolutionChanges(void);
+ 
+     inline bool CheckCC(uint pid, uint cc);
+@@ -104,7 +106,6 @@
+     // State
+     bool recording;
+     bool encoding;
+-    bool needs_resolution;
+     mutable QMutex start_stop_encoding_lock;
+     QMutex recording_wait_lock;
+     QWaitCondition recording_wait;
+@@ -113,7 +114,7 @@
+     bool cleartimeonpause;
+ 
+     // Encoding info
+-    int width, height;
++    uint width, height;
+     int bitrate, maxbitrate, streamtype, aspectratio;
+     int audtype, audsamplerate, audbitratel1, audbitratel2, audbitratel3;
+     int audvolume;
+Index: libs/libmythtv/mpegrecorder.cpp
+===================================================================
+--- libs/libmythtv/mpegrecorder.cpp	(revision 19056)
++++ libs/libmythtv/mpegrecorder.cpp	(working copy)
+@@ -19,6 +19,7 @@
+ #include <sys/stat.h>
+ #include <sys/ioctl.h>
+ #include <sys/time.h>
++#include <sys/poll.h>
+ 
+ // avlib headers
+ extern "C" {
+@@ -86,7 +87,7 @@
+     requires_special_pause(false),
+     // State
+     recording(false),         encoding(false),
+-    needs_resolution(false),  start_stop_encoding_lock(QMutex::Recursive),
++    start_stop_encoding_lock(QMutex::Recursive),
+     recording_wait_lock(),    recording_wait(),
+     // Pausing state
+     cleartimeonpause(false),
+@@ -487,13 +488,21 @@
+ 
+ bool MpegRecorder::SetFormat(int chanfd)
+ {
++    uint   idx;
+     struct v4l2_format vfmt;
+     bzero(&vfmt, sizeof(vfmt));
+ 
+     vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ 
+-    if (ioctl(chanfd, VIDIOC_G_FMT, &vfmt) < 0)
++    for (idx = 0; idx < 20; ++idx)
+     {
++        if (ioctl(chanfd, VIDIOC_G_FMT, &vfmt) == 0)
++            break;
++        usleep(100 * 1000);
++    }
++
++    if (idx == 10)
++    {
+         VERBOSE(VB_IMPORTANT, LOC_ERR + "Error getting format" + ENO);
+         return false;
+     }
+@@ -501,8 +510,15 @@
+     vfmt.fmt.pix.width = width;
+     vfmt.fmt.pix.height = height;
+ 
+-    if (ioctl(chanfd, VIDIOC_S_FMT, &vfmt) < 0)
++    for (idx = 0; idx < 20; ++idx)
+     {
++        if (ioctl(chanfd, VIDIOC_S_FMT, &vfmt) == 0)
++            break;
++        usleep(100 * 1000);
++    }
++
++    if (idx == 20)
++    {
+         VERBOSE(VB_IMPORTANT, LOC_ERR + "Error setting format" + ENO);
+         return false;
+     }
+@@ -513,10 +529,19 @@
+ /// Set audio language mode
+ bool MpegRecorder::SetLanguageMode(int chanfd)
+ {
++    uint   idx;
+     struct v4l2_tuner vt;
+     bzero(&vt, sizeof(struct v4l2_tuner));
+-    if (ioctl(chanfd, VIDIOC_G_TUNER, &vt) < 0)
++
++    for (idx = 0; idx < 20; ++idx)
+     {
++        if (ioctl(chanfd, VIDIOC_G_TUNER, &vt) == 0)
++            break;
++        usleep(100 * 1000);
++    }
++
++    if (idx == 20)
++    {
+         VERBOSE(VB_IMPORTANT, LOC_WARN + "Unable to get audio mode" + ENO);
+         return false;
+     }
+@@ -549,8 +574,15 @@
+         success = false;
+     }
+ 
+-    if (ioctl(chanfd, VIDIOC_S_TUNER, &vt) < 0)
++    for (idx = 0; idx < 20; ++idx)
+     {
++        if (ioctl(chanfd, VIDIOC_S_TUNER, &vt) == 0)
++            break;
++        usleep(100 * 1000);
++    }
++
++    if (idx == 20)
++    {
+         VERBOSE(VB_IMPORTANT, LOC_WARN + "Unable to set audio mode" + ENO);
+         success = false;
+     }
+@@ -561,10 +593,19 @@
+ bool MpegRecorder::SetRecordingVolume(int chanfd)
+ {
+     // Get volume min/max values
++    uint   idx;
+     struct v4l2_queryctrl qctrl;
+     qctrl.id = V4L2_CID_AUDIO_VOLUME;
+-    if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) < 0)
++
++    for (idx = 0; idx < 20; ++idx)
+     {
++        if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) == 0)
++            break;
++        usleep(100 * 1000);
++    }
++
++    if (idx == 20)
++    {
+         VERBOSE(VB_IMPORTANT, LOC_WARN +
+                 "Unable to get recording volume parameters(max/min)" + ENO +
+                 "\n\t\t\tusing default range [0,65535].");
+@@ -582,8 +623,15 @@
+     ctrl.id = V4L2_CID_AUDIO_VOLUME;
+     ctrl.value = ctrl_volume;
+ 
+-    if (ioctl(chanfd, VIDIOC_S_CTRL, &ctrl) < 0)
++    for (idx = 0; idx < 20; ++idx)
+     {
++        if (ioctl(chanfd, VIDIOC_S_CTRL, &ctrl) == 0)
++            break;
++        usleep(100 * 1000);
++    }
++
++    if (idx == 20)
++    {
+         VERBOSE(VB_IMPORTANT, LOC_WARN +
+                 "Unable to set recording volume" + ENO + "\n\t\t\t" +
+                 "If you are using an AverMedia M179 card this is normal.");
+@@ -765,6 +813,7 @@
+ 
+     for (uint i = 0; i < ext_ctrls.size(); i++)
+     {
++        uint   idx;
+         struct v4l2_ext_controls ctrls;
+         bzero(&ctrls, sizeof(struct v4l2_ext_controls));
+ 
+@@ -774,8 +823,15 @@
+         ctrls.count       = 1;
+         ctrls.controls    = &ext_ctrls[i];
+             
+-        if (ioctl(fd, VIDIOC_S_EXT_CTRLS, &ctrls) < 0)
++        for (idx = 0; idx < 20; ++idx)
+         {
++            if (ioctl(fd, VIDIOC_S_EXT_CTRLS, &ctrls) == 0)
++                break;
++            usleep(100 * 1000);
++        }
++
++        if (idx == 20)
++        {
+             QMutexLocker locker(&control_description_lock);
+             VERBOSE(VB_IMPORTANT, QString("mpegrecorder.cpp:set_ctrls(): ") +
+                     QString("Could not set %1 to %2")
+@@ -814,6 +870,30 @@
+     {
+         maxbitrate = high_mpeg4peakbitrate;
+         bitrate    = high_mpeg4avgbitrate;
++
++        // query supported audio codecs and prefer AC3
++        uint   idx;
++        struct v4l2_queryctrl qctrl;
++        qctrl.id = V4L2_CID_MPEG_AUDIO_ENCODING;
++
++        for (idx = 0; idx < 20; ++idx)
++        {
++            if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) == 0)
++                break;
++            usleep(100 * 1000);
++        }
++
++        if (idx == 20)
++        {
++            VERBOSE(VB_IMPORTANT, LOC_WARN +
++                    "Unable to get supported audio codecs." + ENO);
++        }
++        else
++        {
++            if (qctrl.minimum != qctrl.maximum)
++                add_ext_ctrl(ext_ctrls, V4L2_CID_MPEG_AUDIO_ENCODING,
++                             qctrl.maximum);
++        }
+     }
+     maxbitrate = std::max(maxbitrate, bitrate);
+ 
+@@ -837,19 +917,36 @@
+     int audioinput = audiodevice.toUInt(&ok);
+     if (ok)
+     {
++        uint   idx;
+         struct v4l2_audio ain;
+         bzero(&ain, sizeof(ain));
+         ain.index = audioinput;
+-        if (ioctl(chanfd, VIDIOC_ENUMAUDIO, &ain) < 0)
++
++        for (idx = 0; idx < 20; ++idx)
+         {
++            if (ioctl(chanfd, VIDIOC_ENUMAUDIO, &ain) == 0)
++                break;
++            usleep(100 * 1000);
++        }
++
++        if (idx == 20)
++        {
+             VERBOSE(VB_IMPORTANT, LOC_WARN +
+                     "Unable to get audio input.");
+         }
+         else
+         {
+             ain.index = audioinput;
+-            if (ioctl(chanfd, VIDIOC_S_AUDIO, &ain) < 0)
++
++            for (idx = 0; idx < 20; ++idx)
+             {
++                if (ioctl(chanfd, VIDIOC_S_AUDIO, &ain) == 0)
++                    break;
++                usleep(100 * 1000);
++            }
++
++            if (idx == 20)
++            {
+                 VERBOSE(VB_IMPORTANT, LOC_WARN +
+                         "Unable to set audio input.");
+             }
+@@ -1036,17 +1133,26 @@
+     if (deviceIsMpegFile)
+         elapsedTimer.start();
+     else if (_device_read_buffer)
+-        _device_read_buffer->Start();
++    {
++        VERBOSE(VB_RECORD, LOC + "Initial startup of recorder");
+ 
+-    needs_resolution = (driver == "hdpvr");
++        if (StartEncoding(readfd))
++            _device_read_buffer->Start();
++        else
++        {
++            VERBOSE(VB_IMPORTANT, LOC_ERR + "Failed to start recording");
++            recording = false;
++            QMutexLocker locker(&recording_wait_lock);
++            recording_wait.wakeAll();
++            _error = true;
++        }
++    }
+ 
+     QByteArray vdevice = videodevice.toAscii();
+     while (encoding && !_error)
+     {
+         if (PauseAndWait(100))
+             continue;
+-
+-        HandleResolutionChanges();
+         
+         if (deviceIsMpegFile)
+         {
+@@ -1090,35 +1196,7 @@
+             {
+                 VERBOSE(VB_IMPORTANT, LOC_ERR + "Device error detected");
+ 
+-                _device_read_buffer->Stop();
+-
+-                QMutexLocker locker(&start_stop_encoding_lock);
+-
+-                StopEncoding(readfd);
+-
+-                // Make sure the next things in the file are a PAT & PMT
+-                if (_stream_data->PATSingleProgram() &&
+-                    _stream_data->PMTSingleProgram())
+-                {
+-                    bool tmp = _wait_for_keyframe_option;
+-                    _wait_for_keyframe_option = false;
+-                    HandleSingleProgramPAT(_stream_data->PATSingleProgram());
+-                    HandleSingleProgramPMT(_stream_data->PMTSingleProgram());
+-                    _wait_for_keyframe_option = tmp;
+-                }
+-
+-                if (StartEncoding(readfd))
+-                {
+-                    _device_read_buffer->Start();
+-                }
+-                else
+-                {
+-                    if (0 != close(readfd))
+-                        VERBOSE(VB_IMPORTANT, LOC_ERR + "Close error" + ENO);
+-                    
+-                    // Force card to be reopened on next iteration..
+-                    readfd = -1;
+-                }
++                RestartEncoding();
+             }
+             else if (_device_read_buffer->IsEOF())
+             {
+@@ -1216,6 +1294,8 @@
+         }
+     }
+ 
++    VERBOSE(VB_RECORD, LOC + "StartRecording finishing up");
++
+     if (_device_read_buffer)
+     {
+         if (_device_read_buffer->IsRunning())
+@@ -1224,6 +1304,7 @@
+         delete _device_read_buffer;
+         _device_read_buffer = NULL;
+     }
++
+     StopEncoding(readfd);
+ 
+     FinishRecording();
+@@ -1373,52 +1454,95 @@
+ 
+         if (!paused)
+         {
++            VERBOSE(VB_RECORD, LOC + "PauseAndWait pause");
++
++            // Some drivers require streaming to be disabled before
++            // an input switch and other channel format setting.
++            if (requires_special_pause)
++                StopEncoding(readfd);
++
+             if (_device_read_buffer)
+             {
+                 QMutex drb_lock;
+                 drb_lock.lock();
+-
+                 _device_read_buffer->SetRequestPause(true);
+-
+                 pauseWait.wait(&drb_lock, timeout);
+             }
+             else
+-            {
+-                paused = true;
+                 pauseWait.wakeAll();
+-            }
+ 
+-            // Some drivers require streaming to be disabled before
+-            // an input switch and other channel format setting.
+-            if (requires_special_pause)
+-                StopEncoding(readfd);
+-
++            paused = true;
+             if (tvrec)
+                 tvrec->RecorderPaused();
+         }
+ 
+         unpauseWait.wait(&waitlock, timeout);
+     }
+-    if (!request_pause)
++
++    if (!request_pause && paused)
+     {
+-        if (paused)
++        VERBOSE(VB_RECORD, LOC + "PauseAndWait unpause");
++
++        if (driver == "hdpvr")
+         {
+-            // Some drivers require streaming to be disabled before
+-            // an input switch and other channel format setting.
+-            if (requires_special_pause)
+-                StartEncoding(readfd);
++            m_h264_parser.Reset();
++            _wait_for_keyframe_option = true;
++            _seen_sps = false;
+ 
+-            if (_device_read_buffer)
+-                _device_read_buffer->SetRequestPause(false);
++            // Sleep any less than 1.5 seconds, and the HD-PVR will
++            // return the old resolution, when the resolution is changing.
++            usleep(1500 * 1000);
++        }
+ 
+-            if (_stream_data)
+-                _stream_data->Reset(_stream_data->DesiredProgram());
+-        }
++        // Some drivers require streaming to be disabled before
++        // an input switch and other channel format setting.
++        if (requires_special_pause)
++            StartEncoding(readfd);
++        
++        if (_device_read_buffer)
++            _device_read_buffer->SetRequestPause(false);
++        
++        if (_stream_data)
++            _stream_data->Reset(_stream_data->DesiredProgram());
++
+         paused = false;
+     }
++
+     return paused;
+ }
+ 
++void MpegRecorder::RestartEncoding(void)
++{
++    VERBOSE(VB_RECORD, LOC + "RestartEncoding");
++
++    _device_read_buffer->Stop();
++    
++    QMutexLocker locker(&start_stop_encoding_lock);
++    
++    StopEncoding(readfd);
++    
++    // Make sure the next things in the file are a PAT & PMT
++    if (_stream_data->PATSingleProgram() &&
++        _stream_data->PMTSingleProgram())
++    {
++        _wait_for_keyframe_option = false;
++        HandleSingleProgramPAT(_stream_data->PATSingleProgram());
++        HandleSingleProgramPMT(_stream_data->PMTSingleProgram());
++    }
++    
++    if (StartEncoding(readfd))
++    {
++        _device_read_buffer->Start();
++    }
++    else
++    {
++        if (0 != close(readfd))
++            VERBOSE(VB_IMPORTANT, LOC_ERR + "Close error" + ENO);
++        
++        readfd = -1;
++    }
++}
++
+ bool MpegRecorder::StartEncoding(int fd)
+ {
+     QMutexLocker locker(&start_stop_encoding_lock);
+@@ -1427,13 +1551,22 @@
+     memset(&command, 0, sizeof(struct v4l2_encoder_cmd));
+     command.cmd = V4L2_ENC_CMD_START;
+ 
++    if (driver == "hdpvr")
++        HandleResolutionChanges();
++
+     VERBOSE(VB_RECORD, LOC + "StartEncoding");
+-    needs_resolution = (driver == "hdpvr");
+ 
+-    for (int idx = 0; idx < 10; ++idx)
++    for (int idx = 0; idx < 20; ++idx)
+     {
+         if (ioctl(fd, VIDIOC_ENCODER_CMD, &command) == 0)
+         {
++            if (driver == "hdpvr")
++            {
++                m_h264_parser.Reset();
++                _wait_for_keyframe_option = true;
++                _seen_sps = false;
++            }
++
+             VERBOSE(VB_RECORD, LOC + "Encoding started");
+             return true;
+         }
+@@ -1444,7 +1577,7 @@
+             return false;
+         }
+ 
+-        usleep(250 * 1000);
++        usleep(100 * 1000);
+     }
+ 
+     VERBOSE(VB_IMPORTANT, LOC_ERR + "StartEncoding - giving up" + ENO);
+@@ -1461,9 +1594,8 @@
+ 
+     VERBOSE(VB_RECORD, LOC + "StopEncoding");
+ 
+-    for (int idx = 0; idx < 10; ++idx)
++    for (int idx = 0; idx < 20; ++idx)
+     {
+-
+         if (ioctl(fd, VIDIOC_ENCODER_CMD, &command) == 0)
+         {
+             VERBOSE(VB_RECORD, LOC + "Encoding stopped");
+@@ -1476,7 +1608,7 @@
+             return false;
+         }
+ 
+-        usleep(250 * 1000);
++        usleep(100 * 1000);
+     }
+ 
+     VERBOSE(VB_IMPORTANT, LOC_ERR + "StopEncoding - giving up" + ENO);
+@@ -1544,7 +1676,7 @@
+ void MpegRecorder::HandleSingleProgramPMT(ProgramMapTable *pmt)
+ {
+     if (!pmt)
+-{
++    {
+         return;
+     }
+ 
+@@ -1564,27 +1696,89 @@
+         DTVRecorder::BufferedWrite(*(reinterpret_cast<TSPacket*>(&buf[i])));
+ }
+ 
++bool MpegRecorder::WaitFor_HDPVR(void)
++{
++    // After a resolution change, it can take the HD-PVR a few
++    // seconds before it is usable again.
++
++    // Tell it to start encoding, then wait for it to actually feed us
++    // some data.
++    QMutexLocker locker(&start_stop_encoding_lock);
++
++    struct v4l2_encoder_cmd command;
++    struct pollfd polls;
++    int    idx;
++
++    memset(&command, 0, sizeof(struct v4l2_encoder_cmd));
++    command.cmd = V4L2_ENC_CMD_START;
++
++    for (idx = 0; idx < 20; ++idx)
++    {
++        if (ioctl(readfd, VIDIOC_ENCODER_CMD, &command) == 0)
++            break;
++        usleep(100 * 1000);
++    }
++
++    if (idx == 20)
++        return false;
++
++    polls.fd      = readfd;
++    polls.events  = POLLIN;
++    polls.revents = 0;
++
++    for (idx = 0; idx < 10; ++idx)
++    {
++        if (poll(&polls, 1, 250) > 0)
++            break;
++    }
++
++    if (idx == 10)
++        return false;
++
++    // HD-PVR should now be "ready"
++    command.cmd = V4L2_ENC_CMD_STOP;
++
++    for (idx = 0; idx < 20; ++idx)
++    {
++        if (ioctl(readfd, VIDIOC_ENCODER_CMD, &command) == 0)
++            return true;
++        usleep(100 * 1000);
++    }
++
++    return false;
++}
++
+ void MpegRecorder::HandleResolutionChanges(void)
+ {
+-    if (!needs_resolution)
+-        return;
+-
+     VERBOSE(VB_RECORD, LOC + "Checking Resolution");
+     struct v4l2_format vfmt;
+     memset(&vfmt, 0, sizeof(vfmt));
+     vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+             
++    if (driver == "hdpvr")
++        WaitFor_HDPVR();
++
++    uint idx;
+     uint pix = 0;
++
++    for (idx = 0; idx < 20; ++idx)
++    {
+     if (0 == ioctl(chanfd, VIDIOC_G_FMT, &vfmt))
+     {
+         VERBOSE(VB_RECORD, LOC + QString("Got Resolution %1x%2")
+                 .arg(vfmt.fmt.pix.width).arg(vfmt.fmt.pix.height));
+         pix = vfmt.fmt.pix.width * vfmt.fmt.pix.height;
+-        needs_resolution = false;
++            break;
++        }
++        // Typically takes 0.9 seconds after a resolution change
++        usleep(100 * 1000);
+     }
+ 
+     if (!pix)
++    {
++        VERBOSE(VB_RECORD, LOC + "Giving up detecting resolution");
+         return; // nothing to do, we don't have a resolution yet
++    }
+ 
+     int old_max = maxbitrate, old_avg = bitrate;
+     if (pix <= 768*568)
+@@ -1609,13 +1803,14 @@
+         if (old_max == old_avg)
+         {
+             VERBOSE(VB_RECORD, LOC +
+-                    QString("Old bitrate %1 CBR").arg(old_avg));
++                    QString("Old bitrate %1 CBR for %2x%3")
++                    .arg(old_avg).arg(width).arg(height));
+         }
+         else
+         {
+             VERBOSE(VB_RECORD, LOC +
+-                    QString("Old bitrate %1/%2 VBR")
+-                    .arg(old_avg).arg(old_max));
++                    QString("Old bitrate %1/%2 VBR for %3x%4")
++                    .arg(old_avg).arg(old_max).arg(width).arg(height));
+         }
+ 
+         if (maxbitrate == bitrate)
+@@ -1642,12 +1837,6 @@
+                      maxbitrate * 1000);
+ 
+         set_ctrls(readfd, ext_ctrls);
++
+     }
+-
+-    // Restart streaming. Shouldn't be needed? seems to be with current driver.
+-    QMutexLocker locker(&start_stop_encoding_lock);
+-    StopEncoding(readfd);
+-    StartEncoding(readfd);
+-
+-    needs_resolution = false;
+ }
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/myth.sh b/abs/core-testing/mythtv/trunk/mythtv-svn/myth.sh
new file mode 100755
index 0000000..fb7122c
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/myth.sh
@@ -0,0 +1,4 @@
+export PATH=$PATH:/usr/local/bin
+# set core file size to 0
+ulimit -c 0
+export MALLOC_CHECK_=0
\ No newline at end of file
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend b/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend
new file mode 100755
index 0000000..f96c6b7
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+
+PID=`pidof -o %PPID /usr/bin/mythbackend`
+case "$1" in
+  start)
+    stat_busy "Starting MythTV Backend"
+    [ ! -e /var/run/mysqld.pid ] && echo -n "mysqld not started" && stat_fail && exit
+    [ -z "$PID" ] && /usr/local/bin/mythbackend -d -l /var/log/mythbackend.log -v quiet
+    if [ $? -gt 0 ]; then
+      stat_fail
+    else
+      echo $PID > /var/run/mythbackend.pid
+      add_daemon mythbackend
+      stat_done
+    fi
+    ;;
+  stop)
+    stat_busy "Stopping MythTV Backend"
+    [ ! -z "$PID" ]  && kill $PID &>/dev/null
+    if [ $? -gt 0 ]; then
+      stat_fail
+    else
+      rm_daemon mythbackend
+      stat_done
+    fi
+    ;;
+  restart)
+    $0 stop
+    $0 start
+    ;;
+  *)
+    echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend.sh b/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend.sh
new file mode 100755
index 0000000..e7a7b70
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend.sh
@@ -0,0 +1,117 @@
+#!/bin/bash
+#
+#	/etc/rc.d/init.d/mythbackend
+#
+# Starts the mythbackend as a daemon
+#
+# chkconfig: 345 90 10
+# description: Starts the mythbackend process as a daemon after the XWindows \
+#              system is started, in runlevel 5. This allows scheduled \
+#              recordings to occur without manual intervention.
+# processname: mythbackend
+
+# Copyright (c) by Michael Thomson <linux at m-thomson dot net>
+# With thanks to Stu Tomlinson <stu at nosnilmot dot com>
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2 of the License, or
+#  (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software
+#  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+
+# Default values to use if none are supplied in the config file.
+# User who should start the mythbackend processes
+MBE_USER="root"
+# Directory holding the mythbackend binary
+MBE_LOCATION="/usr/local/bin/"
+# Name of mythbackend binary
+MBE_PROG="mythbackend"
+# Full path to mythbackend log file
+MBE_LOGFILE="/var/log/mythtv/mythbackend.log"
+
+# Source function library.
+. /etc/init.d/functions
+
+# Source config file if available
+if [ -f "/etc/sysconfig/mythbackend" ]; then
+  . /etc/sysconfig/mythbackend
+fi
+
+test -x ${MBE_LOCATION}${MBE_PROG} || exit 0
+
+RETVAL=0
+
+#
+#	See how we were called.
+#
+
+start() {
+	# Check if mythbackend is already running
+	if [ ! -f /var/lock/subsys/${MBE_PROG} ]; then
+	    echo -n "Starting ${MBE_PROG}: "
+	    # /usr/local/bin/mythbackend -d -l /some/log/file
+	    #daemon --user ${MBE_USER} ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE}
+	    ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE}
+	    RETVAL=$?
+	    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/${MBE_PROG}
+	    echo
+	fi
+	return $RETVAL
+}
+
+stop() {
+	echo -n "Stopping ${MBE_PROG}: "
+	killproc ${MBE_LOCATION}${MBE_PROG}
+	RETVAL=$?
+	[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/${MBE_PROG}
+	echo
+        return $RETVAL
+}
+
+
+restart() {
+	stop
+	start
+}	
+
+reload() {
+	restart
+}	
+
+status_at() {
+ 	status ${MBE_LOCATION}${MBE_PROG}
+}
+
+case "$1" in
+start)
+	start
+	;;
+stop)
+	stop
+	;;
+reload|restart)
+	restart
+	;;
+condrestart)
+	if [ -f /var/lock/subsys/${MBE_PROG} ]; then
+	    restart
+	fi
+	;;
+status)
+	status_at
+	;;
+*)
+	echo "Usage: $0 {start|stop|restart|condrestart|status}"
+	exit 1
+esac
+
+exit $?
+exit $RETVAL
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/mythcommflag-avidemux.2.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/mythcommflag-avidemux.2.patch
new file mode 100644
index 0000000..d26645f
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/mythcommflag-avidemux.2.patch
@@ -0,0 +1,179 @@
+Index: programs/mythcommflag/main.cpp
+===================================================================
+--- programs/mythcommflag/main.cpp	(revision 18596)
++++ programs/mythcommflag/main.cpp	(working copy)
+@@ -300,6 +300,132 @@
+     return COMMFLAG_EXIT_NO_ERROR_WITH_NO_BREAKS;
+ }
+ 
++int GetAviDemux(QString list, QString chanid, QString starttime, const QString &outputfilename)
++{
++    QMap<long long, int> cutlist;
++    QMap<long long, int>::Iterator it;
++    QString result;
++    int startValue = 0;
++    long long myTotalFrames;
++    long long myFrameRate;
++
++    ProgramInfo *pginfo =
++        ProgramInfo::GetProgramFromRecorded(chanid, starttime);
++
++    NuppelVideoPlayer* nvp = new NuppelVideoPlayer("avidemux_export", pginfo);
++
++    myFrameRate = (long long)(nvp->GetFrameRate() * 1000);
++    myTotalFrames = 1000000; //nvp->GetTotalFrameCount();
++
++    if (!pginfo)
++    {
++        VERBOSE(VB_IMPORTANT,
++                QString("No program data exists for channel %1 at %2")
++                .arg(chanid).arg(starttime));
++        return COMMFLAG_BUGGY_EXIT_NO_CHAN_DATA;
++    }
++
++    QString filename = pginfo->GetPlaybackURL(TRUE);
++
++    if (list == "cutlist")
++        pginfo->GetCutList(cutlist);
++    else
++        pginfo->GetCommBreakList(cutlist);
++
++// Formatting of output data
++
++    for (it = cutlist.begin(); it != cutlist.end(); ++it)
++    {
++        if ((it.key() == 0) && (startValue == 0)) // Cutlist starts on first frame,
++            {
++            ++it;
++            startValue = it.key();
++            }
++
++        if ((it.key() != 0) && (startValue == 0)) // Cutlist starts on non-first frame
++            {
++            result += QString("app.addSegment(0,0,%1);").arg(it.key());  
++            startValue = it.key();
++            }
++        else
++           {
++            if  ((*it == MARK_COMM_END) && (startValue != 0) ||
++                (*it == MARK_CUT_END) && (startValue != 0))
++                {
++                 if (result != "")
++                       result += "\n";
++                       startValue = it.key();
++                       result += QString("app.addSegment(0,%1,").arg(it.key()); // Value is a start value
++                }
++            else  
++                {
++                    result += QString("%1);").arg(it.key() - startValue); // Value is an end value
++                }
++           }
++   }
++
++if (it.key() != myTotalFrames)
++    {
++        result += QString("%1);").arg(myTotalFrames);
++    }
++
++// Governs the file output:
++
++    QString tmp = "";
++    ostream *out = &cout;
++
++    if (outputfilename != "-"){
++        QByteArray tmp = outputfilename.toLocal8Bit();
++        out = new fstream(tmp.constData(), ios::app | ios::out );
++        }
++
++    if (outputfilename == ""){
++        VERBOSE(VB_IMPORTANT,
++           QString("Error: AVIDemux output requires the use of the --outputfile option."));
++           return COMMFLAG_EXIT_INVALID_CMDLINE;
++        }
++
++        tmp = QString("//AD  <- Needed to identify//\n"
++                        "//--automatically built--\n"
++                        "//--Project:\n\n"
++                        "var app = new Avidemux();\n\n"
++                        "//** Video **\n"
++                        "// 01 videos source\n" 
++                        "app.load(\"%1\");\n\n"
++                        "app.clearSegments();\n\n"
++                        "%2\n"
++                        "app.markerA=0;\n"
++                        "app.markerB=%3;\n"
++                        "app.rebuildIndex();\n\n"
++                        "//** Postproc **\n"
++                        "app.video.setPostProc(3,3,0);\n\n"
++                        "app.video.setFps1000(%4);\n\n"
++                        "//** Filters **\n\n"
++                        "//** Video Codec conf **\n"
++                        "app.video.codec(\"Copy\",\"CQ=4\",\"0 \");\n\n"
++                        "//** Audio **\n"
++                        "app.audio.reset();\n"
++                        "app.audio.codec(\"copy\",128,0,\"\");\n"
++                        "app.audio.normalizeMode=0;\n"
++                        "app.audio.normalizeValue=0;\n"
++                        "app.audio.delay=0;\n"
++                        "app.audio.mixer(\"NONE\");\n"
++                        "app.setContainer(\"AVI\");\n"
++                        "setSuccess(1);\n"
++                        "//app.Exit();\n\n"
++                        "//End of script\n").arg(filename).arg(result).arg(myTotalFrames).arg(myFrameRate).toLocal8Bit().constData();
++
++        const QByteArray tmp2 = tmp.toLocal8Bit();
++        *out << tmp2.constData() << endl;
++
++        VERBOSE(VB_IMPORTANT,
++                QString("AVIDemux Project generated for %1 at %2 with filename %3.")
++                .arg(chanid).arg(starttime).arg(outputfilename));
++
++    return COMMFLAG_EXIT_NO_ERROR_WITH_NO_BREAKS;
++}
++
++
+ void streamOutCommercialBreakList(
+     ostream &output, const QMap<long long, int> &commercialBreakList)
+ {
+@@ -811,6 +937,8 @@
+     bool clearCutlist = false;
+     bool getCutlist = false;
+     bool getSkipList = false;
++    bool getAviDemuxCutlist = false;
++    bool getAviDemuxSkiplist = false;
+     QString newCutList = QString::null;
+     QMap<QString, QString> settingsOverride;
+ 
+@@ -960,6 +1088,10 @@
+             getCutlist = true;
+         else if (!strcmp(a.argv()[argpos], "--getskiplist"))
+             getSkipList = true;
++        else if (!strcmp(a.argv()[argpos], "--getcutlist-avidemux"))
++            getAviDemuxCutlist = true;
++        else if (!strcmp(a.argv()[argpos], "--getskiplist-avidemux"))
++            getAviDemuxSkiplist = true;
+         else if (!strcmp(a.argv()[argpos], "--setcutlist"))
+             newCutList = (a.argv()[++argpos]);
+         else if (!strcmp(a.argv()[argpos], "-j"))
+@@ -1111,6 +1243,8 @@
+                     "                             #-#[,#-#]...  (ie, 1-100,1520-3012,4091-5094\n"
+                     "--getcutlist                 Display the current cutlist\n"
+                     "--getskiplist                Display the current Commercial Skip list\n"
++                    "--getcutlist-avidemux        Export cutlist as AVIDemux Project File\n"
++                    "--getskiplist-avidemux       Export skiplist as AVIDemux Project File\n"
+                     "-v or --verbose debug-level  Use '-v help' for level info\n"
+                     "--queue                      Insert flagging job into the JobQueue rather than\n"
+                     "                             running flagging in the foreground\n"
+@@ -1223,6 +1357,12 @@
+     if (!newCutList.isNull())
+         return SetCutList(chanid, starttime, newCutList);
+ 
++    if (getAviDemuxCutlist)
++        return GetAviDemux("cutlist", chanid, starttime, outputfilename);
++
++    if (getAviDemuxSkiplist)
++        return GetAviDemux("commflag", chanid, starttime, outputfilename);
++
+     if (getCutlist)
+         return GetMarkupList("cutlist", chanid, starttime);
+ 
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/mythtv.install b/abs/core-testing/mythtv/trunk/mythtv-svn/mythtv.install
new file mode 100755
index 0000000..513852a
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/mythtv.install
@@ -0,0 +1,55 @@
+
+# arg 1:  the new package version
+pre_install () {
+        echo "backing up the database"
+                dbver=`pacman -Q mythtv-svn | awk  ' { print $2 } '`
+        if [ ! -e /data/databases_backup ]
+        then
+                mkdir -p /data/database_backup
+        fi
+        mysqldump -u mythtv -pmythtv mythconverg -c > /data/database_backup/${dbver}.dump.sql
+}
+
+post_install() {
+  	mkdir -p /data/home
+        /usr/sbin/useradd -G users,video,audio,optical -m -d /data/home/mythtv mythtv
+        /usr/sbin/usermod -G users,video,audio,optical mythtv
+#        mkdir /var/log/mythtv
+#        chown -R mythtv:users /var/log/mythtv
+        dbver=`pacman -Q mythtv-svn | awk  ' { print $2 } '`
+        if [ ! -e /data/database_backup ]
+        then
+                mkdir -p /data/database_backup
+        fi
+	chown mythtv:nobody /data/database_backup
+	chmod g+s  /data/database_backup
+        
+	mysqldump -u mythtv -pmythtv mythconverg -c > /data/database_backup/${dbver}.dump.sql
+
+
+}
+pre_upgrade () {
+ pre_install
+}
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+post_upgrade() {
+  post_install
+
+  /bin/true
+}
+
+# arg 1:  the old package version
+pre_remove() {
+  /bin/true
+}
+
+# arg 1:  the old package version
+post_remove() {
+/bint/true
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/DeviceReadBuffer-polltimeout.2.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/DeviceReadBuffer-polltimeout.2.patch
new file mode 100644
index 0000000..5bb713f
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/DeviceReadBuffer-polltimeout.2.patch
@@ -0,0 +1,219 @@
+Index: libs/libmythtv/DeviceReadBuffer.h
+===================================================================
+--- libs/libmythtv/DeviceReadBuffer.h	(revision 18515)
++++ libs/libmythtv/DeviceReadBuffer.h	(working copy)
+@@ -59,7 +59,7 @@
+     void IncrReadPointer(uint len);
+ 
+     bool HandlePausing(void);
+-    bool Poll(void) const;
++    bool Poll(void);
+     uint WaitForUnused(uint bytes_needed) const;
+     uint WaitForUsed  (uint bytes_needed) const;
+ 
+Index: libs/libmythtv/DeviceReadBuffer.cpp
+===================================================================
+--- libs/libmythtv/DeviceReadBuffer.cpp	(revision 18515)
++++ libs/libmythtv/DeviceReadBuffer.cpp	(working copy)
+@@ -90,9 +90,14 @@
+ 
+ void DeviceReadBuffer::Start(void)
+ {
+-    lock.lock();
+-    bool was_running = running;
+-    lock.unlock();
++    bool was_running;
++
++    {
++        QMutexLocker locker(&lock);
++        was_running = running;
++        error = false;
++    }
++
+     if (was_running)
+     {
+         VERBOSE(VB_IMPORTANT, LOC_ERR + "Start(): Already running.");
+@@ -104,6 +109,8 @@
+     {
+         VERBOSE(VB_IMPORTANT,
+                 LOC_ERR + QString("Start(): pthread_create failed.") + ENO);
++
++        QMutexLocker locker(&lock);
+         error = true;
+     }
+ }
+@@ -118,21 +125,25 @@
+     used          = 0;
+     readPtr       = buffer;
+     writePtr      = buffer;
++
++    error         = false;
+ }
+ 
+ void DeviceReadBuffer::Stop(void)
+ {
+     bool was_running = IsRunning();
+-    lock.lock();
+-    run = false;
+-    lock.unlock();
+ 
+     if (!was_running)
+     {
+-        VERBOSE(VB_IMPORTANT, LOC_ERR + "Stop(): Not running.");
++        VERBOSE(VB_IMPORTANT, LOC + "Stop(): Not running.");
+         return;
+     }
+ 
++    {
++        QMutexLocker locker(&lock);
++        run = false;
++    }
++
+     pthread_join(thread, NULL);
+ }
+ 
+@@ -229,10 +240,11 @@
+ {
+     uint      errcnt = 0;
+ 
+-    lock.lock();
+-    run     = true;
+-    running = true;
+-    lock.unlock();
++    {
++        QMutexLocker locker(&lock);
++        run     = true;
++        running = true;
++    }
+ 
+     while (run)
+     {
+@@ -248,6 +260,15 @@
+         if (using_poll && !Poll())
+             continue;
+ 
++        {
++            QMutexLocker locker(&lock);
++            if (error)
++            {
++                VERBOSE(VB_RECORD, LOC + "fill_ringbuffer: error state");
++                break;
++            }
++        }
++
+         // Limit read size for faster return from read
+         size_t read_size =
+             min(dev_read_size, (size_t) WaitForUnused(TSPacket::SIZE));
+@@ -268,9 +289,10 @@
+         }
+     }
+ 
+-    lock.lock();
+-    running = false;
+-    lock.unlock();
++    {
++        QMutexLocker locker(&lock);
++        running = false;
++    }
+ }
+ 
+ bool DeviceReadBuffer::HandlePausing(void)
+@@ -293,7 +315,7 @@
+     return true;
+ }
+ 
+-bool DeviceReadBuffer::Poll(void) const
++bool DeviceReadBuffer::Poll(void)
+ {
+ #ifdef USING_MINGW
+ #warning mingw DeviceReadBuffer::Poll
+@@ -302,31 +324,53 @@
+     return false;
+ #else
+     bool retval = true;
+-    while (true)
++    uint timeout_cnt = 0;
++
++    for (;;)
+     {
+         struct pollfd polls;
+         polls.fd      = _stream_fd;
+         polls.events  = POLLIN;
+         polls.revents = 0;
+ 
+-        int ret = poll(&polls, 1 /*number of polls*/, 10 /*msec*/);
+-        if (IsPauseRequested() || !IsOpen() || !run)
++        int ret = poll(&polls, 1 /*number of polls*/, 250 /*msec*/);
++
++        if (polls.revents & (POLLERR | POLLHUP | POLLNVAL))
+         {
++            VERBOSE(VB_IMPORTANT, LOC + "poll error");
++            error = true;
++            return true;
++        }
++
++        if (!run || !IsOpen() || IsPauseRequested())
++        {
+             retval = false;
+             break; // are we supposed to pause, stop, etc.
+         }
+ 
+         if (ret > 0)
+             break; // we have data to read :)
+-        if ((-1 == ret) && (EOVERFLOW == errno))
+-            break; // we have an error to handle
+-
+-        if ((-1 == ret) && ((EAGAIN == errno) || (EINTR  == errno)))
+-            continue; // errors that tell you to try again
+-        if (ret == 0)
+-            continue; // timed out, try again
+-
+-        usleep(2500);
++        if (ret < 0)
++        {
++            if ((EOVERFLOW == errno))
++                break; // we have an error to handle
++            if ((EAGAIN == errno) || (EINTR  == errno))
++                continue; // errors that tell you to try again
++            usleep(2500);
++        }
++        else //  ret == 0
++        {
++            if (++timeout_cnt > 9)
++            {
++                VERBOSE(VB_RECORD, LOC_ERR + "Poll giving up");
++                QMutexLocker locker(&lock);
++                error = true;
++                return true;
++            }
++            if (timeout_cnt % 2)
++                VERBOSE(VB_RECORD, LOC_ERR + QString("Poll timeout (%1)")
++                        .arg(timeout_cnt));
++        }
+     }
+     return retval;
+ #endif //!USING_MINGW
+@@ -360,9 +404,9 @@
+ 
+         if (++errcnt > 5)
+         {
+-            lock.lock();
++            QMutexLocker locker(&lock);
++            VERBOSE(VB_RECORD, LOC + "Too many errors.");
+             error = true;
+-            lock.unlock();
+             return false;
+         }
+ 
+@@ -376,10 +420,8 @@
+             VERBOSE(VB_IMPORTANT, LOC +
+                     QString("End-Of-File? fd(%1)").arg(_stream_fd));
+ 
+-            lock.lock();
++            QMutexLocker locker(&lock);
+             eof = true;
+-            lock.unlock();
+-
+             return false;
+         }
+         usleep(500);
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/aacdecoder.cpp.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/aacdecoder.cpp.patch
new file mode 100644
index 0000000..8796eb4
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/aacdecoder.cpp.patch
@@ -0,0 +1,12 @@
+--- mythmusic/mythmusic/aacdecoder.cpp.orig	2008-11-19 12:51:48.000000000 -0500
++++ mythmusic/mythmusic/aacdecoder.cpp	2008-11-19 12:52:42.000000000 -0500
+@@ -17,6 +17,9 @@
+ #define FAAD_MODIFIED
+ #endif
+ 
++// LinHES need this undefined
++#undef FAAD_MODIFIED
++
+ // ANSI C headers
+ #include <cstdlib>
+ 
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/hdpvr-v4lchannel-tweak.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/hdpvr-v4lchannel-tweak.patch
new file mode 100644
index 0000000..3535310
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/hdpvr-v4lchannel-tweak.patch
@@ -0,0 +1,139 @@
+Index: libs/libmythtv/v4lchannel.h
+===================================================================
+--- libs/libmythtv/v4lchannel.h	(revision 18874)
++++ libs/libmythtv/v4lchannel.h	(working copy)
+@@ -103,6 +103,8 @@
+     VidModV4L2  videomode_v4l2; ///< Current video mode if 'usingv4l2' is true
+ 
+     int         defaultFreqTable;
++    int         prev_inputNumV4L;
++    v4l2_std_id prev_vid_mode;
+ };
+ 
+ #endif
+Index: libs/libmythtv/v4lchannel.cpp
+===================================================================
+--- libs/libmythtv/v4lchannel.cpp	(revision 18874)
++++ libs/libmythtv/v4lchannel.cpp	(working copy)
+@@ -40,7 +40,8 @@
+       device_name(QString::null),   driver_name(QString::null),
+       curList(NULL),                totalChannels(0),
+       currentFormat(""),            is_dtv(false),
+-      usingv4l2(false),             defaultFreqTable(1)
++      usingv4l2(false),             defaultFreqTable(1),
++      prev_inputNumV4L(-1),         prev_vid_mode(-1)
+ {
+ }
+ 
+@@ -795,62 +796,75 @@
+     {
+         VERBOSE(VB_CHANNEL, LOC + msg + "(v4l v2)");
+ 
+-        int ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L);
++	int ioctlval;
++	bool streamingDisabled = false;
++	int  streamType = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ 
+-        // ConvertX (wis-go7007) requires streaming to be disabled
+-        // before an input switch, do this if initial switch failed.
+-        bool streamingDisabled = false;
+-        int  streamType = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+-        if ((ioctlval < 0) && (errno == EBUSY))
++        if (prev_inputNumV4L != inputNumV4L)
+         {
+-            ioctlval = ioctl(videofd, VIDIOC_STREAMOFF, &streamType);
++            ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L);
++
++            // ConvertX (wis-go7007) requires streaming to be disabled
++            // before an input switch, do this if initial switch failed.
++            if ((ioctlval < 0) && (errno == EBUSY))
++            {
++                ioctlval = ioctl(videofd, VIDIOC_STREAMOFF, &streamType);
++                if (ioctlval < 0)
++                {
++                    VERBOSE(VB_IMPORTANT, LOC_ERR + msg +
++                            "\n\t\t\twhile disabling streaming (v4l v2)" + ENO);
++
++                    ok = false;
++                    ioctlval = 0;
++                }
++                else
++                {
++                    streamingDisabled = true;
++
++                    // Resend the input switch ioctl.
++                    ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L);
++                }
++            }
++
+             if (ioctlval < 0)
+             {
+                 VERBOSE(VB_IMPORTANT, LOC_ERR + msg +
+-                        "\n\t\t\twhile disabling streaming (v4l v2)" + ENO);
++                        "\n\t\t\twhile setting input (v4l v2)" + ENO);
+ 
+                 ok = false;
+-                ioctlval = 0;
+             }
+-            else
+-            {
+-                streamingDisabled = true;
+ 
+-                // Resend the input switch ioctl.
+-                ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L);
+-            }
++            prev_inputNumV4L = inputNumV4L;
+         }
+ 
+-        if (ioctlval < 0)
+-        {
+-            VERBOSE(VB_IMPORTANT, LOC_ERR + msg +
+-                    "\n\t\t\twhile setting input (v4l v2)" + ENO);
+-
+-            ok = false;
+-        }
+-
+         v4l2_std_id vid_mode = format_to_mode(newFmt, 2);
+-        ioctlval = ioctl(videofd, VIDIOC_S_STD, &vid_mode);
+-        if (ioctlval < 0)
+-        {
+-            VERBOSE(VB_IMPORTANT, LOC_ERR + msg +
+-                    "\n\t\t\twhile setting format (v4l v2)" + ENO);
+ 
+-            ok = false;
+-        }
+-
+-        // ConvertX (wis-go7007) requires streaming to be disabled
+-        // before an input switch, here we try to re-enable streaming.
+-        if (streamingDisabled)
++        if (prev_vid_mode != vid_mode)
+         {
+-            ioctlval = ioctl(videofd, VIDIOC_STREAMON, &streamType);
++            ioctlval = ioctl(videofd, VIDIOC_S_STD, &vid_mode);
+             if (ioctlval < 0)
+             {
+                 VERBOSE(VB_IMPORTANT, LOC_ERR + msg +
+-                        "\n\t\t\twhile reenabling streaming (v4l v2)" + ENO);
++                        "\n\t\t\twhile setting format (v4l v2)" + ENO);
+ 
+                 ok = false;
+             }
++
++            // ConvertX (wis-go7007) requires streaming to be disabled
++            // before an input switch, here we try to re-enable streaming.
++            if (streamingDisabled)
++            {
++                ioctlval = ioctl(videofd, VIDIOC_STREAMON, &streamType);
++                if (ioctlval < 0)
++                {
++                    VERBOSE(VB_IMPORTANT, LOC_ERR + msg +
++                            "\n\t\t\twhile reenabling streaming (v4l v2)" +
++                            ENO);
++
++                    ok = false;
++                }
++            }
++            prev_vid_mode = vid_mode;
+         }
+     }
+ 
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mpegrecorder-hdpvr-v1.1.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mpegrecorder-hdpvr-v1.1.patch
new file mode 100644
index 0000000..f292b7f
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mpegrecorder-hdpvr-v1.1.patch
@@ -0,0 +1,658 @@
+Index: libs/libmythtv/mpegrecorder.h
+===================================================================
+--- libs/libmythtv/mpegrecorder.h	(revision 19056)
++++ libs/libmythtv/mpegrecorder.h	(working copy)
+@@ -80,11 +80,13 @@
+     uint GetFilteredAudioLayer(void) const;
+     uint GetFilteredAudioBitRate(uint audio_layer) const;
+ 
++    void RestartEncoding(void);
+     bool StartEncoding(int fd);
+     bool StopEncoding(int fd);
+ 
+     void ResetForNewFile(void);
+ 
++    bool WaitFor_HDPVR(void);
+     void HandleResolutionChanges(void);
+ 
+     inline bool CheckCC(uint pid, uint cc);
+@@ -104,7 +106,6 @@
+     // State
+     bool recording;
+     bool encoding;
+-    bool needs_resolution;
+     mutable QMutex start_stop_encoding_lock;
+     QMutex recording_wait_lock;
+     QWaitCondition recording_wait;
+@@ -113,7 +114,7 @@
+     bool cleartimeonpause;
+ 
+     // Encoding info
+-    int width, height;
++    uint width, height;
+     int bitrate, maxbitrate, streamtype, aspectratio;
+     int audtype, audsamplerate, audbitratel1, audbitratel2, audbitratel3;
+     int audvolume;
+Index: libs/libmythtv/mpegrecorder.cpp
+===================================================================
+--- libs/libmythtv/mpegrecorder.cpp	(revision 19056)
++++ libs/libmythtv/mpegrecorder.cpp	(working copy)
+@@ -19,6 +19,7 @@
+ #include <sys/stat.h>
+ #include <sys/ioctl.h>
+ #include <sys/time.h>
++#include <sys/poll.h>
+ 
+ // avlib headers
+ extern "C" {
+@@ -86,7 +87,7 @@
+     requires_special_pause(false),
+     // State
+     recording(false),         encoding(false),
+-    needs_resolution(false),  start_stop_encoding_lock(QMutex::Recursive),
++    start_stop_encoding_lock(QMutex::Recursive),
+     recording_wait_lock(),    recording_wait(),
+     // Pausing state
+     cleartimeonpause(false),
+@@ -487,13 +488,21 @@
+ 
+ bool MpegRecorder::SetFormat(int chanfd)
+ {
++    uint   idx;
+     struct v4l2_format vfmt;
+     bzero(&vfmt, sizeof(vfmt));
+ 
+     vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+ 
+-    if (ioctl(chanfd, VIDIOC_G_FMT, &vfmt) < 0)
++    for (idx = 0; idx < 20; ++idx)
+     {
++        if (ioctl(chanfd, VIDIOC_G_FMT, &vfmt) == 0)
++            break;
++        usleep(100 * 1000);
++    }
++
++    if (idx == 10)
++    {
+         VERBOSE(VB_IMPORTANT, LOC_ERR + "Error getting format" + ENO);
+         return false;
+     }
+@@ -501,8 +510,15 @@
+     vfmt.fmt.pix.width = width;
+     vfmt.fmt.pix.height = height;
+ 
+-    if (ioctl(chanfd, VIDIOC_S_FMT, &vfmt) < 0)
++    for (idx = 0; idx < 20; ++idx)
+     {
++        if (ioctl(chanfd, VIDIOC_S_FMT, &vfmt) == 0)
++            break;
++        usleep(100 * 1000);
++    }
++
++    if (idx == 20)
++    {
+         VERBOSE(VB_IMPORTANT, LOC_ERR + "Error setting format" + ENO);
+         return false;
+     }
+@@ -513,10 +529,19 @@
+ /// Set audio language mode
+ bool MpegRecorder::SetLanguageMode(int chanfd)
+ {
++    uint   idx;
+     struct v4l2_tuner vt;
+     bzero(&vt, sizeof(struct v4l2_tuner));
+-    if (ioctl(chanfd, VIDIOC_G_TUNER, &vt) < 0)
++
++    for (idx = 0; idx < 20; ++idx)
+     {
++        if (ioctl(chanfd, VIDIOC_G_TUNER, &vt) == 0)
++            break;
++        usleep(100 * 1000);
++    }
++
++    if (idx == 20)
++    {
+         VERBOSE(VB_IMPORTANT, LOC_WARN + "Unable to get audio mode" + ENO);
+         return false;
+     }
+@@ -549,8 +574,15 @@
+         success = false;
+     }
+ 
+-    if (ioctl(chanfd, VIDIOC_S_TUNER, &vt) < 0)
++    for (idx = 0; idx < 20; ++idx)
+     {
++        if (ioctl(chanfd, VIDIOC_S_TUNER, &vt) == 0)
++            break;
++        usleep(100 * 1000);
++    }
++
++    if (idx == 20)
++    {
+         VERBOSE(VB_IMPORTANT, LOC_WARN + "Unable to set audio mode" + ENO);
+         success = false;
+     }
+@@ -561,10 +593,19 @@
+ bool MpegRecorder::SetRecordingVolume(int chanfd)
+ {
+     // Get volume min/max values
++    uint   idx;
+     struct v4l2_queryctrl qctrl;
+     qctrl.id = V4L2_CID_AUDIO_VOLUME;
+-    if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) < 0)
++
++    for (idx = 0; idx < 20; ++idx)
+     {
++        if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) == 0)
++            break;
++        usleep(100 * 1000);
++    }
++
++    if (idx == 20)
++    {
+         VERBOSE(VB_IMPORTANT, LOC_WARN +
+                 "Unable to get recording volume parameters(max/min)" + ENO +
+                 "\n\t\t\tusing default range [0,65535].");
+@@ -582,8 +623,15 @@
+     ctrl.id = V4L2_CID_AUDIO_VOLUME;
+     ctrl.value = ctrl_volume;
+ 
+-    if (ioctl(chanfd, VIDIOC_S_CTRL, &ctrl) < 0)
++    for (idx = 0; idx < 20; ++idx)
+     {
++        if (ioctl(chanfd, VIDIOC_S_CTRL, &ctrl) == 0)
++            break;
++        usleep(100 * 1000);
++    }
++
++    if (idx == 20)
++    {
+         VERBOSE(VB_IMPORTANT, LOC_WARN +
+                 "Unable to set recording volume" + ENO + "\n\t\t\t" +
+                 "If you are using an AverMedia M179 card this is normal.");
+@@ -765,6 +813,7 @@
+ 
+     for (uint i = 0; i < ext_ctrls.size(); i++)
+     {
++        uint   idx;
+         struct v4l2_ext_controls ctrls;
+         bzero(&ctrls, sizeof(struct v4l2_ext_controls));
+ 
+@@ -774,8 +823,15 @@
+         ctrls.count       = 1;
+         ctrls.controls    = &ext_ctrls[i];
+             
+-        if (ioctl(fd, VIDIOC_S_EXT_CTRLS, &ctrls) < 0)
++        for (idx = 0; idx < 20; ++idx)
+         {
++            if (ioctl(fd, VIDIOC_S_EXT_CTRLS, &ctrls) == 0)
++                break;
++            usleep(100 * 1000);
++        }
++
++        if (idx == 20)
++        {
+             QMutexLocker locker(&control_description_lock);
+             VERBOSE(VB_IMPORTANT, QString("mpegrecorder.cpp:set_ctrls(): ") +
+                     QString("Could not set %1 to %2")
+@@ -814,6 +870,30 @@
+     {
+         maxbitrate = high_mpeg4peakbitrate;
+         bitrate    = high_mpeg4avgbitrate;
++
++        // query supported audio codecs and prefer AC3
++        uint   idx;
++        struct v4l2_queryctrl qctrl;
++        qctrl.id = V4L2_CID_MPEG_AUDIO_ENCODING;
++
++        for (idx = 0; idx < 20; ++idx)
++        {
++            if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) == 0)
++                break;
++            usleep(100 * 1000);
++        }
++
++        if (idx == 20)
++        {
++            VERBOSE(VB_IMPORTANT, LOC_WARN +
++                    "Unable to get supported audio codecs." + ENO);
++        }
++        else
++        {
++            if (qctrl.minimum != qctrl.maximum)
++                add_ext_ctrl(ext_ctrls, V4L2_CID_MPEG_AUDIO_ENCODING,
++                             qctrl.maximum);
++        }
+     }
+     maxbitrate = std::max(maxbitrate, bitrate);
+ 
+@@ -837,19 +917,36 @@
+     int audioinput = audiodevice.toUInt(&ok);
+     if (ok)
+     {
++        uint   idx;
+         struct v4l2_audio ain;
+         bzero(&ain, sizeof(ain));
+         ain.index = audioinput;
+-        if (ioctl(chanfd, VIDIOC_ENUMAUDIO, &ain) < 0)
++
++        for (idx = 0; idx < 20; ++idx)
+         {
++            if (ioctl(chanfd, VIDIOC_ENUMAUDIO, &ain) == 0)
++                break;
++            usleep(100 * 1000);
++        }
++
++        if (idx == 20)
++        {
+             VERBOSE(VB_IMPORTANT, LOC_WARN +
+                     "Unable to get audio input.");
+         }
+         else
+         {
+             ain.index = audioinput;
+-            if (ioctl(chanfd, VIDIOC_S_AUDIO, &ain) < 0)
++
++            for (idx = 0; idx < 20; ++idx)
+             {
++                if (ioctl(chanfd, VIDIOC_S_AUDIO, &ain) == 0)
++                    break;
++                usleep(100 * 1000);
++            }
++
++            if (idx == 20)
++            {
+                 VERBOSE(VB_IMPORTANT, LOC_WARN +
+                         "Unable to set audio input.");
+             }
+@@ -1036,17 +1133,26 @@
+     if (deviceIsMpegFile)
+         elapsedTimer.start();
+     else if (_device_read_buffer)
+-        _device_read_buffer->Start();
++    {
++        VERBOSE(VB_RECORD, LOC + "Initial startup of recorder");
+ 
+-    needs_resolution = (driver == "hdpvr");
++        if (StartEncoding(readfd))
++            _device_read_buffer->Start();
++        else
++        {
++            VERBOSE(VB_IMPORTANT, LOC_ERR + "Failed to start recording");
++            recording = false;
++            QMutexLocker locker(&recording_wait_lock);
++            recording_wait.wakeAll();
++            _error = true;
++        }
++    }
+ 
+     QByteArray vdevice = videodevice.toAscii();
+     while (encoding && !_error)
+     {
+         if (PauseAndWait(100))
+             continue;
+-
+-        HandleResolutionChanges();
+         
+         if (deviceIsMpegFile)
+         {
+@@ -1090,35 +1196,7 @@
+             {
+                 VERBOSE(VB_IMPORTANT, LOC_ERR + "Device error detected");
+ 
+-                _device_read_buffer->Stop();
+-
+-                QMutexLocker locker(&start_stop_encoding_lock);
+-
+-                StopEncoding(readfd);
+-
+-                // Make sure the next things in the file are a PAT & PMT
+-                if (_stream_data->PATSingleProgram() &&
+-                    _stream_data->PMTSingleProgram())
+-                {
+-                    bool tmp = _wait_for_keyframe_option;
+-                    _wait_for_keyframe_option = false;
+-                    HandleSingleProgramPAT(_stream_data->PATSingleProgram());
+-                    HandleSingleProgramPMT(_stream_data->PMTSingleProgram());
+-                    _wait_for_keyframe_option = tmp;
+-                }
+-
+-                if (StartEncoding(readfd))
+-                {
+-                    _device_read_buffer->Start();
+-                }
+-                else
+-                {
+-                    if (0 != close(readfd))
+-                        VERBOSE(VB_IMPORTANT, LOC_ERR + "Close error" + ENO);
+-                    
+-                    // Force card to be reopened on next iteration..
+-                    readfd = -1;
+-                }
++                RestartEncoding();
+             }
+             else if (_device_read_buffer->IsEOF())
+             {
+@@ -1216,6 +1294,8 @@
+         }
+     }
+ 
++    VERBOSE(VB_RECORD, LOC + "StartRecording finishing up");
++
+     if (_device_read_buffer)
+     {
+         if (_device_read_buffer->IsRunning())
+@@ -1224,6 +1304,7 @@
+         delete _device_read_buffer;
+         _device_read_buffer = NULL;
+     }
++
+     StopEncoding(readfd);
+ 
+     FinishRecording();
+@@ -1373,52 +1454,95 @@
+ 
+         if (!paused)
+         {
++            VERBOSE(VB_RECORD, LOC + "PauseAndWait pause");
++
++            // Some drivers require streaming to be disabled before
++            // an input switch and other channel format setting.
++            if (requires_special_pause)
++                StopEncoding(readfd);
++
+             if (_device_read_buffer)
+             {
+                 QMutex drb_lock;
+                 drb_lock.lock();
+-
+                 _device_read_buffer->SetRequestPause(true);
+-
+                 pauseWait.wait(&drb_lock, timeout);
+             }
+             else
+-            {
+-                paused = true;
+                 pauseWait.wakeAll();
+-            }
+ 
+-            // Some drivers require streaming to be disabled before
+-            // an input switch and other channel format setting.
+-            if (requires_special_pause)
+-                StopEncoding(readfd);
+-
++            paused = true;
+             if (tvrec)
+                 tvrec->RecorderPaused();
+         }
+ 
+         unpauseWait.wait(&waitlock, timeout);
+     }
+-    if (!request_pause)
++
++    if (!request_pause && paused)
+     {
+-        if (paused)
++        VERBOSE(VB_RECORD, LOC + "PauseAndWait unpause");
++
++        if (driver == "hdpvr")
+         {
+-            // Some drivers require streaming to be disabled before
+-            // an input switch and other channel format setting.
+-            if (requires_special_pause)
+-                StartEncoding(readfd);
++            m_h264_parser.Reset();
++            _wait_for_keyframe_option = true;
++            _seen_sps = false;
+ 
+-            if (_device_read_buffer)
+-                _device_read_buffer->SetRequestPause(false);
++            // Sleep any less than 1.5 seconds, and the HD-PVR will
++            // return the old resolution, when the resolution is changing.
++            usleep(1500 * 1000);
++        }
+ 
+-            if (_stream_data)
+-                _stream_data->Reset(_stream_data->DesiredProgram());
+-        }
++        // Some drivers require streaming to be disabled before
++        // an input switch and other channel format setting.
++        if (requires_special_pause)
++            StartEncoding(readfd);
++        
++        if (_device_read_buffer)
++            _device_read_buffer->SetRequestPause(false);
++        
++        if (_stream_data)
++            _stream_data->Reset(_stream_data->DesiredProgram());
++
+         paused = false;
+     }
++
+     return paused;
+ }
+ 
++void MpegRecorder::RestartEncoding(void)
++{
++    VERBOSE(VB_RECORD, LOC + "RestartEncoding");
++
++    _device_read_buffer->Stop();
++    
++    QMutexLocker locker(&start_stop_encoding_lock);
++    
++    StopEncoding(readfd);
++    
++    // Make sure the next things in the file are a PAT & PMT
++    if (_stream_data->PATSingleProgram() &&
++        _stream_data->PMTSingleProgram())
++    {
++        _wait_for_keyframe_option = false;
++        HandleSingleProgramPAT(_stream_data->PATSingleProgram());
++        HandleSingleProgramPMT(_stream_data->PMTSingleProgram());
++    }
++    
++    if (StartEncoding(readfd))
++    {
++        _device_read_buffer->Start();
++    }
++    else
++    {
++        if (0 != close(readfd))
++            VERBOSE(VB_IMPORTANT, LOC_ERR + "Close error" + ENO);
++        
++        readfd = -1;
++    }
++}
++
+ bool MpegRecorder::StartEncoding(int fd)
+ {
+     QMutexLocker locker(&start_stop_encoding_lock);
+@@ -1427,13 +1551,22 @@
+     memset(&command, 0, sizeof(struct v4l2_encoder_cmd));
+     command.cmd = V4L2_ENC_CMD_START;
+ 
++    if (driver == "hdpvr")
++        HandleResolutionChanges();
++
+     VERBOSE(VB_RECORD, LOC + "StartEncoding");
+-    needs_resolution = (driver == "hdpvr");
+ 
+-    for (int idx = 0; idx < 10; ++idx)
++    for (int idx = 0; idx < 20; ++idx)
+     {
+         if (ioctl(fd, VIDIOC_ENCODER_CMD, &command) == 0)
+         {
++            if (driver == "hdpvr")
++            {
++                m_h264_parser.Reset();
++                _wait_for_keyframe_option = true;
++                _seen_sps = false;
++            }
++
+             VERBOSE(VB_RECORD, LOC + "Encoding started");
+             return true;
+         }
+@@ -1444,7 +1577,7 @@
+             return false;
+         }
+ 
+-        usleep(250 * 1000);
++        usleep(100 * 1000);
+     }
+ 
+     VERBOSE(VB_IMPORTANT, LOC_ERR + "StartEncoding - giving up" + ENO);
+@@ -1461,9 +1594,8 @@
+ 
+     VERBOSE(VB_RECORD, LOC + "StopEncoding");
+ 
+-    for (int idx = 0; idx < 10; ++idx)
++    for (int idx = 0; idx < 20; ++idx)
+     {
+-
+         if (ioctl(fd, VIDIOC_ENCODER_CMD, &command) == 0)
+         {
+             VERBOSE(VB_RECORD, LOC + "Encoding stopped");
+@@ -1476,7 +1608,7 @@
+             return false;
+         }
+ 
+-        usleep(250 * 1000);
++        usleep(100 * 1000);
+     }
+ 
+     VERBOSE(VB_IMPORTANT, LOC_ERR + "StopEncoding - giving up" + ENO);
+@@ -1544,7 +1676,7 @@
+ void MpegRecorder::HandleSingleProgramPMT(ProgramMapTable *pmt)
+ {
+     if (!pmt)
+-{
++    {
+         return;
+     }
+ 
+@@ -1564,27 +1696,89 @@
+         DTVRecorder::BufferedWrite(*(reinterpret_cast<TSPacket*>(&buf[i])));
+ }
+ 
++bool MpegRecorder::WaitFor_HDPVR(void)
++{
++    // After a resolution change, it can take the HD-PVR a few
++    // seconds before it is usable again.
++
++    // Tell it to start encoding, then wait for it to actually feed us
++    // some data.
++    QMutexLocker locker(&start_stop_encoding_lock);
++
++    struct v4l2_encoder_cmd command;
++    struct pollfd polls;
++    int    idx;
++
++    memset(&command, 0, sizeof(struct v4l2_encoder_cmd));
++    command.cmd = V4L2_ENC_CMD_START;
++
++    for (idx = 0; idx < 20; ++idx)
++    {
++        if (ioctl(readfd, VIDIOC_ENCODER_CMD, &command) == 0)
++            break;
++        usleep(100 * 1000);
++    }
++
++    if (idx == 20)
++        return false;
++
++    polls.fd      = readfd;
++    polls.events  = POLLIN;
++    polls.revents = 0;
++
++    for (idx = 0; idx < 10; ++idx)
++    {
++        if (poll(&polls, 1, 250) > 0)
++            break;
++    }
++
++    if (idx == 10)
++        return false;
++
++    // HD-PVR should now be "ready"
++    command.cmd = V4L2_ENC_CMD_STOP;
++
++    for (idx = 0; idx < 20; ++idx)
++    {
++        if (ioctl(readfd, VIDIOC_ENCODER_CMD, &command) == 0)
++            return true;
++        usleep(100 * 1000);
++    }
++
++    return false;
++}
++
+ void MpegRecorder::HandleResolutionChanges(void)
+ {
+-    if (!needs_resolution)
+-        return;
+-
+     VERBOSE(VB_RECORD, LOC + "Checking Resolution");
+     struct v4l2_format vfmt;
+     memset(&vfmt, 0, sizeof(vfmt));
+     vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
+             
++    if (driver == "hdpvr")
++        WaitFor_HDPVR();
++
++    uint idx;
+     uint pix = 0;
++
++    for (idx = 0; idx < 20; ++idx)
++    {
+     if (0 == ioctl(chanfd, VIDIOC_G_FMT, &vfmt))
+     {
+         VERBOSE(VB_RECORD, LOC + QString("Got Resolution %1x%2")
+                 .arg(vfmt.fmt.pix.width).arg(vfmt.fmt.pix.height));
+         pix = vfmt.fmt.pix.width * vfmt.fmt.pix.height;
+-        needs_resolution = false;
++            break;
++        }
++        // Typically takes 0.9 seconds after a resolution change
++        usleep(100 * 1000);
+     }
+ 
+     if (!pix)
++    {
++        VERBOSE(VB_RECORD, LOC + "Giving up detecting resolution");
+         return; // nothing to do, we don't have a resolution yet
++    }
+ 
+     int old_max = maxbitrate, old_avg = bitrate;
+     if (pix <= 768*568)
+@@ -1609,13 +1803,14 @@
+         if (old_max == old_avg)
+         {
+             VERBOSE(VB_RECORD, LOC +
+-                    QString("Old bitrate %1 CBR").arg(old_avg));
++                    QString("Old bitrate %1 CBR for %2x%3")
++                    .arg(old_avg).arg(width).arg(height));
+         }
+         else
+         {
+             VERBOSE(VB_RECORD, LOC +
+-                    QString("Old bitrate %1/%2 VBR")
+-                    .arg(old_avg).arg(old_max));
++                    QString("Old bitrate %1/%2 VBR for %3x%4")
++                    .arg(old_avg).arg(old_max).arg(width).arg(height));
+         }
+ 
+         if (maxbitrate == bitrate)
+@@ -1642,12 +1837,6 @@
+                      maxbitrate * 1000);
+ 
+         set_ctrls(readfd, ext_ctrls);
++
+     }
+-
+-    // Restart streaming. Shouldn't be needed? seems to be with current driver.
+-    QMutexLocker locker(&start_stop_encoding_lock);
+-    StopEncoding(readfd);
+-    StartEncoding(readfd);
+-
+-    needs_resolution = false;
+ }
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mythcommflag-avidemux.2.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mythcommflag-avidemux.2.patch
new file mode 100644
index 0000000..d26645f
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mythcommflag-avidemux.2.patch
@@ -0,0 +1,179 @@
+Index: programs/mythcommflag/main.cpp
+===================================================================
+--- programs/mythcommflag/main.cpp	(revision 18596)
++++ programs/mythcommflag/main.cpp	(working copy)
+@@ -300,6 +300,132 @@
+     return COMMFLAG_EXIT_NO_ERROR_WITH_NO_BREAKS;
+ }
+ 
++int GetAviDemux(QString list, QString chanid, QString starttime, const QString &outputfilename)
++{
++    QMap<long long, int> cutlist;
++    QMap<long long, int>::Iterator it;
++    QString result;
++    int startValue = 0;
++    long long myTotalFrames;
++    long long myFrameRate;
++
++    ProgramInfo *pginfo =
++        ProgramInfo::GetProgramFromRecorded(chanid, starttime);
++
++    NuppelVideoPlayer* nvp = new NuppelVideoPlayer("avidemux_export", pginfo);
++
++    myFrameRate = (long long)(nvp->GetFrameRate() * 1000);
++    myTotalFrames = 1000000; //nvp->GetTotalFrameCount();
++
++    if (!pginfo)
++    {
++        VERBOSE(VB_IMPORTANT,
++                QString("No program data exists for channel %1 at %2")
++                .arg(chanid).arg(starttime));
++        return COMMFLAG_BUGGY_EXIT_NO_CHAN_DATA;
++    }
++
++    QString filename = pginfo->GetPlaybackURL(TRUE);
++
++    if (list == "cutlist")
++        pginfo->GetCutList(cutlist);
++    else
++        pginfo->GetCommBreakList(cutlist);
++
++// Formatting of output data
++
++    for (it = cutlist.begin(); it != cutlist.end(); ++it)
++    {
++        if ((it.key() == 0) && (startValue == 0)) // Cutlist starts on first frame,
++            {
++            ++it;
++            startValue = it.key();
++            }
++
++        if ((it.key() != 0) && (startValue == 0)) // Cutlist starts on non-first frame
++            {
++            result += QString("app.addSegment(0,0,%1);").arg(it.key());  
++            startValue = it.key();
++            }
++        else
++           {
++            if  ((*it == MARK_COMM_END) && (startValue != 0) ||
++                (*it == MARK_CUT_END) && (startValue != 0))
++                {
++                 if (result != "")
++                       result += "\n";
++                       startValue = it.key();
++                       result += QString("app.addSegment(0,%1,").arg(it.key()); // Value is a start value
++                }
++            else  
++                {
++                    result += QString("%1);").arg(it.key() - startValue); // Value is an end value
++                }
++           }
++   }
++
++if (it.key() != myTotalFrames)
++    {
++        result += QString("%1);").arg(myTotalFrames);
++    }
++
++// Governs the file output:
++
++    QString tmp = "";
++    ostream *out = &cout;
++
++    if (outputfilename != "-"){
++        QByteArray tmp = outputfilename.toLocal8Bit();
++        out = new fstream(tmp.constData(), ios::app | ios::out );
++        }
++
++    if (outputfilename == ""){
++        VERBOSE(VB_IMPORTANT,
++           QString("Error: AVIDemux output requires the use of the --outputfile option."));
++           return COMMFLAG_EXIT_INVALID_CMDLINE;
++        }
++
++        tmp = QString("//AD  <- Needed to identify//\n"
++                        "//--automatically built--\n"
++                        "//--Project:\n\n"
++                        "var app = new Avidemux();\n\n"
++                        "//** Video **\n"
++                        "// 01 videos source\n" 
++                        "app.load(\"%1\");\n\n"
++                        "app.clearSegments();\n\n"
++                        "%2\n"
++                        "app.markerA=0;\n"
++                        "app.markerB=%3;\n"
++                        "app.rebuildIndex();\n\n"
++                        "//** Postproc **\n"
++                        "app.video.setPostProc(3,3,0);\n\n"
++                        "app.video.setFps1000(%4);\n\n"
++                        "//** Filters **\n\n"
++                        "//** Video Codec conf **\n"
++                        "app.video.codec(\"Copy\",\"CQ=4\",\"0 \");\n\n"
++                        "//** Audio **\n"
++                        "app.audio.reset();\n"
++                        "app.audio.codec(\"copy\",128,0,\"\");\n"
++                        "app.audio.normalizeMode=0;\n"
++                        "app.audio.normalizeValue=0;\n"
++                        "app.audio.delay=0;\n"
++                        "app.audio.mixer(\"NONE\");\n"
++                        "app.setContainer(\"AVI\");\n"
++                        "setSuccess(1);\n"
++                        "//app.Exit();\n\n"
++                        "//End of script\n").arg(filename).arg(result).arg(myTotalFrames).arg(myFrameRate).toLocal8Bit().constData();
++
++        const QByteArray tmp2 = tmp.toLocal8Bit();
++        *out << tmp2.constData() << endl;
++
++        VERBOSE(VB_IMPORTANT,
++                QString("AVIDemux Project generated for %1 at %2 with filename %3.")
++                .arg(chanid).arg(starttime).arg(outputfilename));
++
++    return COMMFLAG_EXIT_NO_ERROR_WITH_NO_BREAKS;
++}
++
++
+ void streamOutCommercialBreakList(
+     ostream &output, const QMap<long long, int> &commercialBreakList)
+ {
+@@ -811,6 +937,8 @@
+     bool clearCutlist = false;
+     bool getCutlist = false;
+     bool getSkipList = false;
++    bool getAviDemuxCutlist = false;
++    bool getAviDemuxSkiplist = false;
+     QString newCutList = QString::null;
+     QMap<QString, QString> settingsOverride;
+ 
+@@ -960,6 +1088,10 @@
+             getCutlist = true;
+         else if (!strcmp(a.argv()[argpos], "--getskiplist"))
+             getSkipList = true;
++        else if (!strcmp(a.argv()[argpos], "--getcutlist-avidemux"))
++            getAviDemuxCutlist = true;
++        else if (!strcmp(a.argv()[argpos], "--getskiplist-avidemux"))
++            getAviDemuxSkiplist = true;
+         else if (!strcmp(a.argv()[argpos], "--setcutlist"))
+             newCutList = (a.argv()[++argpos]);
+         else if (!strcmp(a.argv()[argpos], "-j"))
+@@ -1111,6 +1243,8 @@
+                     "                             #-#[,#-#]...  (ie, 1-100,1520-3012,4091-5094\n"
+                     "--getcutlist                 Display the current cutlist\n"
+                     "--getskiplist                Display the current Commercial Skip list\n"
++                    "--getcutlist-avidemux        Export cutlist as AVIDemux Project File\n"
++                    "--getskiplist-avidemux       Export skiplist as AVIDemux Project File\n"
+                     "-v or --verbose debug-level  Use '-v help' for level info\n"
+                     "--queue                      Insert flagging job into the JobQueue rather than\n"
+                     "                             running flagging in the foreground\n"
+@@ -1223,6 +1357,12 @@
+     if (!newCutList.isNull())
+         return SetCutList(chanid, starttime, newCutList);
+ 
++    if (getAviDemuxCutlist)
++        return GetAviDemux("cutlist", chanid, starttime, outputfilename);
++
++    if (getAviDemuxSkiplist)
++        return GetAviDemux("commflag", chanid, starttime, outputfilename);
++
+     if (getCutlist)
+         return GetMarkupList("cutlist", chanid, starttime);
+ 
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/smolt_jump.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/smolt_jump.patch
new file mode 100644
index 0000000..0fc452a
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/smolt_jump.patch
@@ -0,0 +1,30 @@
+Index: programs/mythfrontend/networkcontrol.cpp
+===================================================================
+--- programs/mythfrontend/networkcontrol.cpp	(revision 19291)
++++ programs/mythfrontend/networkcontrol.cpp	(working copy)
+@@ -83,6 +83,7 @@
+     jumpMap["zoneminderliveview"]    = "ZoneMinder Live View";
+     jumpMap["zoneminderevents"]      = "ZoneMinder Events";
+     jumpMap["snapshot"]              = "ScreenShot";
++    jumpMap["mythsmolt"]             = "MythSmolt";
+ 
+     // These jump point names match the (lowercased) locations from gContext
+     jumpMap["channelrecpriority"]    = "Channel Recording Priorities";
+@@ -191,7 +192,7 @@
+     pthread_create(&command_thread, NULL, CommandThread, this);
+ 
+     gContext->addListener(this);
+-    
++
+     connect(this, SIGNAL(newConnection()), this, SLOT(newConnection()));
+ }
+ 
+@@ -307,7 +308,7 @@
+         cs = new QTextStream(s);
+         cs->setCodec("UTF-8");
+     }
+-    
++
+     if (client)
+     {
+         closedOldConn = true;
diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/svn_main_menu_popup.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/svn_main_menu_popup.patch
new file mode 100644
index 0000000..5556683
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-svn/svn_main_menu_popup.patch
@@ -0,0 +1,211 @@
+Index: libs/libmythui/myththemedmenu.h
+===================================================================
+--- libs/libmythui/myththemedmenu.h	(revision 19291)
++++ libs/libmythui/myththemedmenu.h	(working copy)
+@@ -2,6 +2,7 @@
+ #define MYTHTHEMEDMENU_H_
+ 
+ #include "mythscreentype.h"
++#include "mythdialogbox.h"
+ #include "mythuistatetype.h"
+ #include "mythuibuttonlist.h"
+ #include "xmlparsebase.h"
+@@ -77,6 +78,11 @@
+     void ReloadExitKey(void);
+     virtual void aboutToShow(void);
+ 
++    void doMenu();
++    void aboutScreen();
++    MythDialogBox *m_menuPopup;
++    void customEvent(QEvent *event);
++
+   protected:
+     virtual bool keyPressEvent(QKeyEvent *e);
+ 
+Index: libs/libmythui/myththemedmenu.cpp
+===================================================================
+--- libs/libmythui/myththemedmenu.cpp	(revision 19291)
++++ libs/libmythui/myththemedmenu.cpp	(working copy)
+@@ -32,6 +32,7 @@
+     m_callbackdata = NULL;
+ 
+     m_killable = false;
++
+ }
+ 
+ MythThemedMenuState::~MythThemedMenuState()
+@@ -95,7 +96,7 @@
+     m_exitModifier = -1;
+     m_menumode = "";
+     m_buttonList = NULL;
+-
++    m_menuPopup = NULL;
+     if (!m_state)
+     {
+         m_state = new MythThemedMenuState(parent, "themedmenustate");
+@@ -271,6 +272,10 @@
+                 m_wantpop = true;
+             }
+         }
++        else if (action == "MENU")
++        {
++            doMenu();
++        }
+         else
+             handled = false;
+     }
+@@ -292,6 +297,154 @@
+     updateLCD();
+ }
+ 
++void MythThemedMenu::doMenu()
++{
++
++    if (m_menuPopup)
++        return;
++    int allowsd =  GetMythDB()->GetNumSetting("AllowQuitShutdown");
++    int override_menu = GetMythDB()->GetNumSetting("OverRideExitMenu");
++    QString label = "System Menu";
++    MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
++    m_menuPopup = new MythDialogBox(label, mainStack, "menuPopup");
++    if (m_menuPopup->Create())
++        mainStack->AddScreen(m_menuPopup);
++    if ( override_menu == 0 )
++    {
++        if ( allowsd != 0 && allowsd !=4  )
++        {
++            m_menuPopup->SetReturnEvent(this,"popmenu_exit");
++            m_menuPopup->AddButton("Shutdown");
++            m_menuPopup->AddButton("Reboot");
++        }
++        else
++        {
++            m_menuPopup->SetReturnEvent(this,"popmenu_noexit");
++        }
++    }
++    if ( override_menu == 5 )
++    { // reboot
++        m_menuPopup->SetReturnEvent(this,"popmenu_reboot");
++        m_menuPopup->AddButton("Reboot");
++    }
++    else if ( override_menu == 2 || override_menu == 4 )
++    { // shutdown
++            m_menuPopup->SetReturnEvent(this,"popmenu_shutdown");
++            m_menuPopup->AddButton("Shutdown");
++    }
++    else if ( override_menu == 3 || override_menu == 6 )
++    { //    both
++        m_menuPopup->SetReturnEvent(this,"popmenu_exit");
++        m_menuPopup->AddButton("Shutdown");
++        m_menuPopup->AddButton("Reboot");
++    }
++    else
++    {
++        m_menuPopup->SetReturnEvent(this,"popmenu_noexit");
++    }
++
++    m_menuPopup->AddButton("About");
++    m_menuPopup->AddButton("Cancel");
++
++}
++void MythThemedMenu::aboutScreen()
++{
++
++    extern const char *myth_source_version;
++    extern const char *myth_source_path;
++    QString distro_line;
++    distro_line="";
++
++    QFile file("/etc/os_myth_release");
++    if ( file.open(QFile::ReadOnly))
++    {
++        QTextStream t( &file );        // use a text stream
++        distro_line = t.readLine();
++        file.close();
++    }
++
++    QString label = "";
++    label.append(QObject::tr("Revision: ") + myth_source_version   + "  \n  Branch:" +  myth_source_path  + "\n" + distro_line );
++
++    MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack();
++    m_menuPopup = new MythDialogBox(label, mainStack, "About");
++    if (m_menuPopup->Create())
++        mainStack->AddScreen(m_menuPopup);
++
++    m_menuPopup->SetReturnEvent(this,"About");
++    m_menuPopup->AddButton("OK!");
++
++}
++
++void MythThemedMenu::customEvent(QEvent *event)
++{
++    if (event->type() == kMythDialogBoxCompletionEventType)
++    {
++        DialogCompletionEvent *dce =
++                dynamic_cast<DialogCompletionEvent*>(event);
++        QString resultid= dce->GetId();
++        int buttonnum  = dce->GetResult();
++        QString halt_cmd=GetMythDB()->GetSetting("HaltCommand");
++        QString reboot_cmd=GetMythDB()->GetSetting("RebootCommand");
++
++        if (resultid == "popmenu_exit")
++        {
++            if (buttonnum == 0)
++            {
++                if (!halt_cmd.isEmpty() )
++                    system(halt_cmd.toAscii());
++            }
++
++            if (buttonnum == 1)
++            {
++                if (!reboot_cmd.isEmpty() )
++                    system(reboot_cmd.toAscii());
++            }
++
++            if (buttonnum == 2)
++            {
++                aboutScreen();
++            }
++        }
++
++        if (resultid == "popmenu_noexit")
++        {
++            if (buttonnum == 0)
++                aboutScreen();
++        }
++
++        if (resultid == "popmenu_reboot")
++        {
++            if (buttonnum == 0)
++            {
++                if (!reboot_cmd.isEmpty() )
++                    system(reboot_cmd.toAscii());
++            }
++
++            if (buttonnum == 1)
++            {
++                aboutScreen();
++            }
++        }
++
++        if (resultid == "popmenu_shutdown")
++        {
++            if (buttonnum == 0)
++            {
++                if (!halt_cmd.isEmpty() )
++                    system(halt_cmd.toAscii());
++            }
++
++            if (buttonnum == 1)
++            {
++                aboutScreen();
++            }
++        }
++
++        m_menuPopup = NULL;
++    }
++}
++
+ /** \brief Parses the element's tags and set the ThemeButton's type,
+  *         text, depends, and action, then adds the button.
+  *
-- 
cgit v0.12


From f77e676cfc7f6919fa6a4145180899afd4ad1fd6 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Tue, 9 Dec 2008 19:41:05 -0600
Subject: Connect various pieces to dd password protection to /mythweb.
 Disabled by default.

---
 abs/core-testing/LinHES-config/PKGBUILD        |  2 +-
 abs/core-testing/LinHES-config/myth_user_call  | 14 +++++++++++---
 abs/core-testing/LinHES-config/systemconfig.sh | 18 ++++++++++++++++--
 abs/core-testing/lighttpd/PKGBUILD             |  7 ++++---
 abs/core-testing/lighttpd/_changelog           |  1 +
 abs/core-testing/lighttpd/auth-inc.conf        | 12 ++++++++++++
 abs/core-testing/lighttpd/lighttpd.conf        | 12 ++++++------
 abs/core-testing/lighttpd/lighttpd.install     | 18 ++++--------------
 abs/mv-core/MythVantage-config/myth_user_call  | 14 +++++++++++---
 abs/mv-core/MythVantage-config/systemconfig.sh | 14 ++++++++++++++
 10 files changed, 80 insertions(+), 32 deletions(-)
 create mode 100644 abs/core-testing/lighttpd/auth-inc.conf

diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD
index f9d2aae..d35dfbb 100755
--- a/abs/core-testing/LinHES-config/PKGBUILD
+++ b/abs/core-testing/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=1.0
-pkgrel=85
+pkgrel=89
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev )
 pkgdesc="Install and configure your system"
 depends=(bc libstatgrab  mysql-python expect curl dnsutils parted sg3_utils nmbscan )
diff --git a/abs/core-testing/LinHES-config/myth_user_call b/abs/core-testing/LinHES-config/myth_user_call
index d95e468..0f899df 100644
--- a/abs/core-testing/LinHES-config/myth_user_call
+++ b/abs/core-testing/LinHES-config/myth_user_call
@@ -1,4 +1,4 @@
-#!/bin/bash
+GGGGGGGGG#!/bin/bash
 #Wrapper script to manage USERNAME accounts + web security
 # myth_USERNAME_all -c add -u USERNAME
 # myth_USERNAME_all -c delete -u USERNAME
@@ -63,7 +63,14 @@ function pass_change() {
 
 
 function web_security {
-    echo "this is just a stub"
+
+    grep -q ${USERNAME}: /etc/lighttpd/lighttpd.user
+    if [ $? = 0 ]
+    then
+            #delete user
+            sed -i "/${USERNAME}\:/d"  /etc/lighttpd/lighttpd.user
+    fi
+    echo "${USERNAME}:${PASSWORD}" >> /etc/lighttpd/lighttpd.user
 
 }
 
@@ -155,7 +162,8 @@ case $OPERATION in
             then
                 print_help
             fi
-            echo "adding webUSERNAME $USERNAME with $PASS"
+            echo "adding webUSERNAME $USERNAME with pass $PASSWORD"
+	    web_security
             ;;
     *)  print_help
         ;;
diff --git a/abs/core-testing/LinHES-config/systemconfig.sh b/abs/core-testing/LinHES-config/systemconfig.sh
index 05dfd89..f2f20a0 100755
--- a/abs/core-testing/LinHES-config/systemconfig.sh
+++ b/abs/core-testing/LinHES-config/systemconfig.sh
@@ -217,7 +217,7 @@ function setupremote {
 			if [ ! -d /home/mythtv/.mythtv ]
 			then
 				mkdir /home/mythtv/.mythtv
-				chown mythtv:mythtv /home/mythtv/.mythtv	
+				chown mythtv:mythtv /home/mythtv/.mythtv
 			fi
 
 			ln -s /etc/lircrc /home/mythtv/.mythtv/lircrc 2> /dev/null
@@ -227,7 +227,7 @@ function setupremote {
 
 			ln -s /etc/lircrc /home/mythtv/.lircrc 2> /dev/null
 		fi
-		
+
 
                 ;;
 esac
@@ -988,6 +988,18 @@ do
 done
 }
 
+function setup_web_auth {
+    if [ x$UseMythWEB_auth = x1 ]
+    then
+        #enable auth
+        sed -ie "s/^.*include.*auth-inc.conf.*$/include \"\/etc\/lighttpd\/auth-inc.conf\"/g" /etc/lighttpd/lighttpd.conf
+    else
+         #disable auth
+        sed -ie "s/^.*include.*auth-inc.conf.*$/#include \"\/etc\/lighttpd\/auth-inc.conf\"/g" /etc/lighttpd/lighttpd.conf
+    fi
+    sudo sv restart lighttpd
+
+}
 
 #----------------------------------------------------MAIN PROGRAM-------------------------------------------
 #misc,sleep,hostype,advanced,audio
@@ -1019,6 +1031,8 @@ for i in  $LIST
 		;;
     advancedX)  showX="true"
       ;;
+      webuser)  setup_web_auth
+      ;;
     restartfe)  killall -9 mythfrontend
                     killall -9 mythwelcome
                     exit 0
diff --git a/abs/core-testing/lighttpd/PKGBUILD b/abs/core-testing/lighttpd/PKGBUILD
index 0b42db7..db98bc4 100644
--- a/abs/core-testing/lighttpd/PKGBUILD
+++ b/abs/core-testing/lighttpd/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=lighttpd
 pkgver=1.4.20
-pkgrel=6
+pkgrel=12
 pkgdesc='a secure, fast, compliant and very flexible web-server'
 license=('custom')
 arch=('i686' 'x86_64')
@@ -15,11 +15,11 @@ optdepends=('libxml2: mod_webdav' \
             'sqlite3: mod_webdav' \
             'gdbm: mod_trigger_b4_dl' \
             )
-backup=('etc/lighttpd/lighttpd.conf' 'etc/logrotate.d/lighttpd')
+backup=('etc/lighttpd/lighttpd.conf' 'etc/logrotate.d/lighttpd' 'etc/lighttpd/auth-inc.conf')
 options=('!libtool' 'emptydirs')
 install='lighttpd.install'
 source=("http://www.lighttpd.net/download/lighttpd-${pkgver}.tar.bz2" \
-        'lighttpd.rc.d' 'lighttpd.logrotate.d' lighttpd.conf)
+        'lighttpd.rc.d' 'lighttpd.logrotate.d' lighttpd.conf auth-inc.conf)
 
 md5sums=('ed6ee0bb714f393219a32768d86984d8'
          'bd690eee0d9e51857448770a151023b0'
@@ -64,6 +64,7 @@ build() {
 	#    -e 's|/usr/local/bin/php-cgi|/usr/bin/php-cgi|' \
 	#    -i ${pkgdir}/etc/lighttpd/lighttpd.conf || return 1
 	install -D -m644 $startdir/src/lighttpd.conf $pkgdir/etc/lighttpd/lighttpd.conf
+	install -D -m644 $startdir/src/auth-inc.conf $pkgdir/etc/lighttpd/auth-inc.conf
 	install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING
 }
 
diff --git a/abs/core-testing/lighttpd/_changelog b/abs/core-testing/lighttpd/_changelog
index 202ea2f..439f42d 100644
--- a/abs/core-testing/lighttpd/_changelog
+++ b/abs/core-testing/lighttpd/_changelog
@@ -1 +1,2 @@
 changed docroot to /data/srv/
+modified auth to require valid user (include auth-inc.conf)
diff --git a/abs/core-testing/lighttpd/auth-inc.conf b/abs/core-testing/lighttpd/auth-inc.conf
new file mode 100644
index 0000000..21c4c55
--- /dev/null
+++ b/abs/core-testing/lighttpd/auth-inc.conf
@@ -0,0 +1,12 @@
+auth.backend               = "plain"
+auth.backend.plain.userfile = "/etc/lighttpd/lighttpd.user"
+
+
+auth.require               = ( "/mythweb" =>
+                               (
+                                 "method"  => "basic",
+                                 "realm"   => "MythWeb",
+                                 "require" => "valid-user"
+                               )
+			)                                   
+
diff --git a/abs/core-testing/lighttpd/lighttpd.conf b/abs/core-testing/lighttpd/lighttpd.conf
index efcd219..e2c60da 100644
--- a/abs/core-testing/lighttpd/lighttpd.conf
+++ b/abs/core-testing/lighttpd/lighttpd.conf
@@ -18,7 +18,7 @@ server.modules              = (
                                 "mod_access",
 #                               "mod_cml",
 #                               "mod_trigger_b4_dl",
-#                               "mod_auth",
+                               "mod_auth",
 #                               "mod_status",
                                "mod_setenv",
                                "mod_fastcgi",
@@ -263,12 +263,12 @@ cgi.assign                 = ( ".pl"  => "/usr/bin/perl",
 #auth.backend.ldap.base-dn  = "dc=my-domain,dc=com"
 #auth.backend.ldap.filter   = "(uid=$)"
 
-#auth.require               = ( "/server-status" =>
+#auth.require               = ( "/mythweb =>
 #                               (
-#                                 "method"  => "digest",
+#                                 "method"  => "plain",
 #                                 "realm"   => "download archiv",
-#                                 "require" => "user=jan"
-#                               ),
+#                                 "require" => "valid-user"
+#                               )
 #                               "/server-config" =>
 #                               (
 #                                 "method"  => "digest",
@@ -337,7 +337,7 @@ cgi.assign                 = ( ".pl"  => "/usr/bin/perl",
 #index-file.names += (foo + ".php")
 
 #### include
-#include /etc/lighttpd/lighttpd-inc.conf
+#include "/etc/lighttpd/auth-inc.conf"
 ## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf"
 #include "lighttpd-inc.conf"
 
diff --git a/abs/core-testing/lighttpd/lighttpd.install b/abs/core-testing/lighttpd/lighttpd.install
index 9d98d41..bf4c132 100644
--- a/abs/core-testing/lighttpd/lighttpd.install
+++ b/abs/core-testing/lighttpd/lighttpd.install
@@ -1,16 +1,6 @@
+pre_upgrade() {
+    mv /etc/lighttpd/lighttpd.conf  /etc/lighttpd/lighttpd.conf.old
+}
 post_upgrade() {
-	if [ $(vercmp '1.4.19-1' $2) -ge 0 ]; then
-	echo '
-	==> New default DocumentRoot
-
-	lighttpd uses /srv/http as default DocumentRoot.
-	You can still use your current DocumentRoot
-
-	==> New default user and group
-
-	Instead of "nobody" lighttpd runs as user/group "http" by default now. You might
-	want to adjust your lighttpd.conf according to this change. But you can still
-	run lighttpd as nobody.
-	'
-	fi
+    touch /etc/lighttpd/lighttpd.user
 }
diff --git a/abs/mv-core/MythVantage-config/myth_user_call b/abs/mv-core/MythVantage-config/myth_user_call
index d95e468..0f899df 100644
--- a/abs/mv-core/MythVantage-config/myth_user_call
+++ b/abs/mv-core/MythVantage-config/myth_user_call
@@ -1,4 +1,4 @@
-#!/bin/bash
+GGGGGGGGG#!/bin/bash
 #Wrapper script to manage USERNAME accounts + web security
 # myth_USERNAME_all -c add -u USERNAME
 # myth_USERNAME_all -c delete -u USERNAME
@@ -63,7 +63,14 @@ function pass_change() {
 
 
 function web_security {
-    echo "this is just a stub"
+
+    grep -q ${USERNAME}: /etc/lighttpd/lighttpd.user
+    if [ $? = 0 ]
+    then
+            #delete user
+            sed -i "/${USERNAME}\:/d"  /etc/lighttpd/lighttpd.user
+    fi
+    echo "${USERNAME}:${PASSWORD}" >> /etc/lighttpd/lighttpd.user
 
 }
 
@@ -155,7 +162,8 @@ case $OPERATION in
             then
                 print_help
             fi
-            echo "adding webUSERNAME $USERNAME with $PASS"
+            echo "adding webUSERNAME $USERNAME with pass $PASSWORD"
+	    web_security
             ;;
     *)  print_help
         ;;
diff --git a/abs/mv-core/MythVantage-config/systemconfig.sh b/abs/mv-core/MythVantage-config/systemconfig.sh
index 4885f5a..6971e8f 100755
--- a/abs/mv-core/MythVantage-config/systemconfig.sh
+++ b/abs/mv-core/MythVantage-config/systemconfig.sh
@@ -968,6 +968,18 @@ do
 done
 }
 
+function setup_web_auth {
+    if [ x$UseMythWEB_auth = x1 ]
+    then
+        #enable auth
+        sed -ie "s/^.*include.*auth-inc.conf.*$/include \"\/etc\/lighttpd\/auth-inc.conf\"/g" /etc/lighttpd/lighttpd.conf
+    else
+         #disable auth
+        sed -ie "s/^.*include.*auth-inc.conf.*$/#include \"\/etc\/lighttpd\/auth-inc.conf\"/g" /etc/lighttpd/lighttpd.conf
+    fi
+    sudo sv restart lighttpd
+
+}
 
 #----------------------------------------------------MAIN PROGRAM-------------------------------------------
 #misc,sleep,hostype,advanced,audio
@@ -999,6 +1011,8 @@ do
         ;;
         advancedX)  showX="true"
         ;;
+	webuser)  setup_web_auth
+        ;;
         restartfe)  killall -9 mythfrontend
         killall -9 mythwelcome
         exit 0
-- 
cgit v0.12


From 5c7e37256f1a112f238d7d68ee5336ef78360ab7 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Wed, 10 Dec 2008 14:40:56 -0600
Subject: Add wireless extensions for eth0 and eth1

---
 abs/core-testing/LinHES-config/PKGBUILD         |  2 +-
 abs/core-testing/LinHES-config/networkconfig.sh | 34 +++++++++++---------
 abs/mv-core/MythVantage-config/networkconfig.sh | 41 ++++++++++++-------------
 3 files changed, 40 insertions(+), 37 deletions(-)

diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD
index d35dfbb..d9f7f20 100755
--- a/abs/core-testing/LinHES-config/PKGBUILD
+++ b/abs/core-testing/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=1.0
-pkgrel=89
+pkgrel=93
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev )
 pkgdesc="Install and configure your system"
 depends=(bc libstatgrab  mysql-python expect curl dnsutils parted sg3_utils nmbscan )
diff --git a/abs/core-testing/LinHES-config/networkconfig.sh b/abs/core-testing/LinHES-config/networkconfig.sh
index 61a7405..9ad2d4e 100644
--- a/abs/core-testing/LinHES-config/networkconfig.sh
+++ b/abs/core-testing/LinHES-config/networkconfig.sh
@@ -6,7 +6,7 @@ ETCNETDIR=$BASE/etc/net/ifaces
 
 
 
-function kill_dhcp () 
+function kill_dhcp ()
 {
 for i in ${BASE}/etc/dhcpc/dhcpcd-*.pid
 do
@@ -19,12 +19,12 @@ do
     if [ x$1 = xflush ]
     then
         for ifdev in eth0 wlan0 eth1 wlan1
-        do 
+        do
            echo ${i} |grep $ifdev
            status=$?
            if [ $status = 1 ]
            then
-             ip address flush $ifdev   
+             ip address flush $ifdev
            fi
         done
     fi
@@ -65,7 +65,7 @@ function setup_interfaces() {
   TEMPNET=Hostnetmask$1
   eval netmask=\$${TEMPNET}
   netmask=`echo "$netmask" | cut -d " " -f1`
-  
+
   TEMPNET=HostActive$1
   eval isactive=\$${TEMPNET}
 
@@ -78,24 +78,28 @@ function setup_interfaces() {
   TEMPNET=HostGW$1
   eval GW=\$${TEMPNET}
 
+  TEMPNET=HOST_iswireless$1
+  eval wireless=\$${TEMPNET}
+
+
 
 
-  if [ $1 = wlan0 -o  $1 = wlan1 ]
+  if [ x$wireless = x1  ]
   then
     IS_WIRELESS=TRUE
     TEMPNET=HostESSID$1
     eval ESSID=\$${TEMPNET}
-    
+
     TEMPNET="HostKey"$1
     eval KEY=\$${TEMPNET}
-    
+
     TEMPNET=HostUseEncryption$1
     eval ENCRYPT=\$${TEMPNET}
   fi
-  
+
 
   echo "Setup $1 in progress, wireless: $IS_WIRELESS"
-    
+
     if [ ! -d $ETCNETDIR/$1 ]
     then
         mkdir -p $ETCNETDIR/$1
@@ -110,7 +114,7 @@ function setup_interfaces() {
     then
             echo "setting $1 to inactive"
             sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options
-            
+
     else
             echo "setting $1 to active"
             sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options
@@ -126,7 +130,7 @@ function setup_interfaces() {
             then
                 echo "key $KEY" >>  $ETCNETDIR/$1/iwconfig
             fi
-            
+
     else
             echo "disabling wireless"
             sed -i -e 's/^CONFIG_WIRLESS=.*$/CONFIG_WIRLESS=no/g' $ETCNETDIR/$1/options
@@ -139,7 +143,7 @@ function setup_interfaces() {
     then
             echo using dhcp
             sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=dhcp/g' $ETCNETDIR/$1/options
-            
+
     else
         echo "using static ip"
         sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=static/g' $ETCNETDIR/$1/options
@@ -160,7 +164,7 @@ if [ x$MYTHDHCP =  x1 ]
                  echo "nameserver 127.0.0.1" >> ${BASE}/etc/resolv.conf
  fi
 
-for i in eth0 eth1 wlan0 wlan1 
+for i in eth0 eth1 wlan0 wlan1
 do
     CURRENTIF="HostActive"$i
     eval IFSTATE=\$${CURRENTIF}
@@ -219,11 +223,11 @@ function setup_MYTH_vars {
     TEMPMYTH="Hostip"$default_interface
     #echo $TEMPMYTH
     eval MYTHIP=\$${TEMPMYTH}
-    
+
     TEMPMYTH="HostUSEDHCP"$default_interface
     eval MYTHDHCP=\$${TEMPMYTH}
 
-    
+
 
 }
 
diff --git a/abs/mv-core/MythVantage-config/networkconfig.sh b/abs/mv-core/MythVantage-config/networkconfig.sh
index 999ccb0..9ad2d4e 100644
--- a/abs/mv-core/MythVantage-config/networkconfig.sh
+++ b/abs/mv-core/MythVantage-config/networkconfig.sh
@@ -78,9 +78,13 @@ function setup_interfaces() {
   TEMPNET=HostGW$1
   eval GW=\$${TEMPNET}
 
+  TEMPNET=HOST_iswireless$1
+  eval wireless=\$${TEMPNET}
 
 
-  if [ $1 = wlan0 -o  $1 = wlan1 ]
+
+
+  if [ x$wireless = x1  ]
   then
     IS_WIRELESS=TRUE
     TEMPNET=HostESSID$1
@@ -193,30 +197,25 @@ kill_dhcp
 }
 
 function vnc_check() {
-    if [ x$RESTART_NETWORK = xfalse ]
+    CMDLINE=$(cat /proc/cmdline)
+    echo $CMDLINE |grep -q vnc
+    USEVNC=$?
+    echo $CMDLINE |grep -q nfsroot
+     NETBOOT=$?
+    echo $USEVNC
+    if [ !  x$USEVNC = x0  ]
     then
-        echo "netboot install or image creating, will not restart network"
-        USEVNC=0
-    else
-        CMDLINE=$(cat /proc/cmdline)
-        echo $CMDLINE |grep -q vnc
-        USEVNC=$?
-        echo $CMDLINE |grep -q nfsroot
-        NETBOOT=$?
-        echo $USEVNC
-        if [ !  x$USEVNC = x0  ]
+        echo "not using vnc"
+        if [ !  x$NETBOOT = x0  ]
         then
-            echo "not using vnc"
-            if [ !  x$NETBOOT = x0  ]
-            then
-                echo "not using netboot"
-            else
-                echo "using netboot"
-                USEVNC=0
-            fi
+            echo "not using netboot"
         else
-            echo " using vnc"
+            echo "using netboot"
+            USEVNC=0
         fi
+
+    else
+        echo " using vnc"
     fi
 }
 
-- 
cgit v0.12


From 79975a551625d4968919055a571c305f05162022 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Wed, 10 Dec 2008 15:45:08 -0600
Subject: Use route -n  instead of route.

Relates to FS#51
---
 abs/core-testing/LinHES-config/PKGBUILD         |  2 +-
 abs/core-testing/LinHES-config/install_proxy.sh | 11 +++++++++--
 abs/core-testing/LinHES-config/myth_user_call   |  2 +-
 abs/mv-core/MythVantage-config/myth_user_call   |  2 +-
 4 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD
index d9f7f20..2a8ad77 100755
--- a/abs/core-testing/LinHES-config/PKGBUILD
+++ b/abs/core-testing/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=1.0
-pkgrel=93
+pkgrel=96
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev )
 pkgdesc="Install and configure your system"
 depends=(bc libstatgrab  mysql-python expect curl dnsutils parted sg3_utils nmbscan )
diff --git a/abs/core-testing/LinHES-config/install_proxy.sh b/abs/core-testing/LinHES-config/install_proxy.sh
index f106b50..e6b0976 100755
--- a/abs/core-testing/LinHES-config/install_proxy.sh
+++ b/abs/core-testing/LinHES-config/install_proxy.sh
@@ -436,6 +436,8 @@ echo "-----------------------------------------------------------------------3--
 
                                 check_self)
                                             myipdefault=`ifconfig  | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'`
+                                            echo "network check myself"
+                                            ifconfig 
                                             ping -c 1 $myipdefault
                                                     if [ ! $? = 0 ]
                                                     then
@@ -445,7 +447,10 @@ echo "-----------------------------------------------------------------------3--
                                 ;;
                                 check_gw)
                                             #check gateway
-                                            mygwdefault=`/sbin/route |grep $default_interface|grep UG|awk '{ print $2}'`
+                                            echo "network check gateway"
+                                            /sbin/route -n 
+                                            mygwdefault=`/sbin/route -n  |grep $default_interface|grep UG|awk '{ print $2}'`
+                                            echo "Default gateway seems to be $mygwdefault"
 					                        if  [ !  x$mygwdefault = x ]
 					                        then
 	                                            ping -c 1 $mygwdefault
@@ -457,6 +462,7 @@ echo "-----------------------------------------------------------------------3--
                                 ;;
                                 check_ns)
                                             #check nameserver
+                                                    echo " network check nameserver"
                                                     mydns=`cat /etc/resolv.conf|grep nameserver|head -1|awk '{ print $2}'`
                                                     ping -c 1 $mydns
                                                     if [ ! $? = 0 ]
@@ -465,6 +471,7 @@ echo "-----------------------------------------------------------------------3--
                                                     fi
                                 ;;
                                 check_names)
+                                            echo "network check resolve names"
                                             host google.com
                                             if [ ! $? = 0 ]
                                             then
@@ -474,7 +481,7 @@ echo "-----------------------------------------------------------------------3--
                                 host_names)
                                             #if host is found, then check to see if it's online
                                             #if not online, assume it's ok to use this hostname
-
+                                            echo "network check my hostname $hostname"
                                             hout=`host $hostname`
                                             status=$?
                                             #found host, now grab the ip
diff --git a/abs/core-testing/LinHES-config/myth_user_call b/abs/core-testing/LinHES-config/myth_user_call
index 0f899df..0479895 100644
--- a/abs/core-testing/LinHES-config/myth_user_call
+++ b/abs/core-testing/LinHES-config/myth_user_call
@@ -1,4 +1,4 @@
-GGGGGGGGG#!/bin/bash
+#!/bin/bash
 #Wrapper script to manage USERNAME accounts + web security
 # myth_USERNAME_all -c add -u USERNAME
 # myth_USERNAME_all -c delete -u USERNAME
diff --git a/abs/mv-core/MythVantage-config/myth_user_call b/abs/mv-core/MythVantage-config/myth_user_call
index 0f899df..0479895 100644
--- a/abs/mv-core/MythVantage-config/myth_user_call
+++ b/abs/mv-core/MythVantage-config/myth_user_call
@@ -1,4 +1,4 @@
-GGGGGGGGG#!/bin/bash
+#!/bin/bash
 #Wrapper script to manage USERNAME accounts + web security
 # myth_USERNAME_all -c add -u USERNAME
 # myth_USERNAME_all -c delete -u USERNAME
-- 
cgit v0.12


From 81a5d9fb48a4b6a348336644c153bd1bf8456957 Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Wed, 10 Dec 2008 16:03:27 -0600
Subject: initial checkin for svn plugins.

---
 .../mythtv/trunk/mythtv-themes/PKGBUILD            |  36 +++
 .../mythtv/trunk/plugins/mytharchive/PKGBUILD      |  41 +++
 .../mythtv/trunk/plugins/mythbrowser/PKGBUILD      |  35 +++
 .../mythtv/trunk/plugins/mythcontrols/PKGBUILD     |  35 +++
 .../mythtv/trunk/plugins/mythflix/PKGBUILD         |  34 +++
 .../mythtv/trunk/plugins/mythgallery/PKGBUILD      |  36 +++
 .../mythtv/trunk/plugins/mythgame/PKGBUILD         |  36 +++
 .../mythtv/trunk/plugins/mythmovietime/PKGBUILD    |  36 +++
 .../mythtv/trunk/plugins/mythmusic/PKGBUILD        |  41 +++
 .../trunk/plugins/mythmusic/music_flac.patch       | 293 ++++++++++++++++++
 .../mythtv/trunk/plugins/mythnews/PKGBUILD         |  34 +++
 .../mythtv/trunk/plugins/mythphone/PKGBUILD        |  42 +++
 .../mythtv/trunk/plugins/mythvideo/PKGBUILD        |  36 +++
 .../mythtv/trunk/plugins/mythweather/PKGBUILD      |  35 +++
 .../mythtv/trunk/plugins/mythweb/PKGBUILD          |  35 +++
 .../mythtv/trunk/plugins/mythweb/dblogininit.inc   |   6 +
 .../mythtv/trunk/plugins/mythweb/mythweb.install   |  37 +++
 .../trunk/plugins/mythweb/mythweblighttpd.patch    |  13 +
 .../trunk/plugins/mythweb/xris/dblogininit.inc     |   6 +
 .../trunk/plugins/mythweb/xris/lighttpd.conf       | 332 +++++++++++++++++++++
 .../plugins/mythweb/xris/mythweblighttpd.patch     |  16 +
 21 files changed, 1215 insertions(+)
 create mode 100755 abs/core-testing/mythtv/trunk/mythtv-themes/PKGBUILD
 create mode 100644 abs/core-testing/mythtv/trunk/plugins/mytharchive/PKGBUILD
 create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythbrowser/PKGBUILD
 create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythcontrols/PKGBUILD
 create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythflix/PKGBUILD
 create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythgallery/PKGBUILD
 create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythgame/PKGBUILD
 create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythmovietime/PKGBUILD
 create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythmusic/PKGBUILD
 create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythmusic/music_flac.patch
 create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythnews/PKGBUILD
 create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythphone/PKGBUILD
 create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythvideo/PKGBUILD
 create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythweather/PKGBUILD
 create mode 100755 abs/core-testing/mythtv/trunk/plugins/mythweb/PKGBUILD
 create mode 100755 abs/core-testing/mythtv/trunk/plugins/mythweb/dblogininit.inc
 create mode 100755 abs/core-testing/mythtv/trunk/plugins/mythweb/mythweb.install
 create mode 100755 abs/core-testing/mythtv/trunk/plugins/mythweb/mythweblighttpd.patch
 create mode 100755 abs/core-testing/mythtv/trunk/plugins/mythweb/xris/dblogininit.inc
 create mode 100755 abs/core-testing/mythtv/trunk/plugins/mythweb/xris/lighttpd.conf
 create mode 100755 abs/core-testing/mythtv/trunk/plugins/mythweb/xris/mythweblighttpd.patch

diff --git a/abs/core-testing/mythtv/trunk/mythtv-themes/PKGBUILD b/abs/core-testing/mythtv/trunk/mythtv-themes/PKGBUILD
new file mode 100755
index 0000000..8cd0d04
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/mythtv-themes/PKGBUILD
@@ -0,0 +1,36 @@
+pkgname=mythv-themes-svn
+pkgver=15924                           
+pkgrel=4
+pkgdesc="themes for mythtv" 
+url="http://www.mythtv.org" 
+license="GPL" 
+depends=( ) 
+#makedepends=('sqlite3' 'sed') 
+conflicts=() 
+replaces=() 
+backup=() 
+#install='mythtv.install' 
+source=() 
+arch=('i686')
+md5sums=() 
+_svntrunk=http://cvs.mythtv.org/svn/trunk/myththemes
+_svnmod=myththemes
+
+build() { 
+echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+#svn co http://cvs.mythtv.org/svn/trunk/mythtv
+#svn co http://cvs.mythtv.org/svn/trunk/mythplugins
+#svn co http://cvs.mythtv.org/svn/trunk/myththemes
+cd $startdir/src/myththemes
+   make distclean
+    ./configure  
+    #./configure --disable-all --enable-mythweather --enable-fftw --disable-aac  
+   make  || return 1
+   make INSTALL_ROOT=$startdir/pkg install
+#   cd $startdir/src/$pkgname
+#   cd mythmovietime
+#   make || return 1
+#   make INSTALL_ROOT=$startdir/pkg install
+
+}
diff --git a/abs/core-testing/mythtv/trunk/plugins/mytharchive/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mytharchive/PKGBUILD
new file mode 100644
index 0000000..4d3e179
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mytharchive/PKGBUILD
@@ -0,0 +1,41 @@
+pkgname=mytharchive-svn
+pkgver=16153
+pkgrel=3
+pkgdesc="MythTV plugin that lets you create DVDs from or archive your recorded shows."
+arch=('i686')
+url="http://www.mythtv.org"
+license=('GPL')
+depends=('mythtv-svn' 'libxmu' 'mysql-python' 'pil' 'dvdauthor')
+source=()
+conflicts=('mythtv-plugins-svn')
+groups=('mythtv-all-plugins-svn')
+_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+   	PLUGIN=mytharchive
+   	cd $startdir/src/
+   	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+   	cd $startdir/src/mythplugins
+
+   	PLUGIN=mytharchive
+   	grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro
+	if [ $? != 0 ]
+	then
+		echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+		msg "appending program lib"
+	fi
+	msg "Correcting configure    kde3 to kde"
+	 sed -i 's#kde3#kde#' configure || return 1
+	make distclean
+   	./configure  --enable-opengl --disable-all   --enable-create-archive --enable-create-dvd --enable-mytharchive || return 1
+	qmake mythplugins.pro || return 1
+	make qmake || return 1
+	msg "Correcting Makefile    kde3 to kde"
+	sed -i 's#kde3#kde#' ./mytharchive/mytharchive/Makefile || return 1
+   	make -j 2 || return 1
+	make INSTALL_ROOT=$startdir/pkg install
+}
+
+
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythbrowser/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythbrowser/PKGBUILD
new file mode 100644
index 0000000..4c57cf0
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythbrowser/PKGBUILD
@@ -0,0 +1,35 @@
+
+pkgname=mythbrowser-svn
+pkgver=16153
+pkgrel=2
+pkgdesc="Mini web browser for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-svn' 'wget' 'libxvmc' 'kdelibs')
+conflicts=('mythtv-plugins-svn')
+groups=('mythtv-all-plugins-svn')
+license="GPL"
+source=()
+_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+build() {
+   cd $startdir/src/
+	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+   cd $startdir/src/mythplugins
+   pwd
+   PLUGIN=mythbrowser
+   grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro
+   if [ $? != 0 ]
+   then
+	   	echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+			msg "appending program lib"
+		fi
+	make distclean
+   ./configure  --enable-opengl --disable-all --enable-mythbrowser || return 1
+ #  sed -i 's#kde3#kde#' ./mythbrowser/mythbrowser/Makefile || return 1
+   make || return 1
+
+   make INSTALL_ROOT=$startdir/pkg install
+}
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythcontrols/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythcontrols/PKGBUILD
new file mode 100644
index 0000000..f4d6da6
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythcontrols/PKGBUILD
@@ -0,0 +1,35 @@
+pkgname=mythcontrols-svn
+pkgver=16153
+pkgrel=5
+pkgdesc="Experimental controls for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv'-svn)
+conflicts=('mythtv-plugins-svn')
+groups=('mythtv-all-plugins-svn')
+license="GPL"
+source=()
+_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+	cd $startdir/src/
+	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+	cd $startdir/src/mythplugins
+PLUGIN=mythcontrols
+grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro
+if [ $? != 0 ]
+then
+		echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+			msg "appending program lib"
+		fi
+	make distclean
+   ./configure  --disable-all --enable-opengl --enable-mythcontrols
+
+   make -j 2 || return 1
+
+   make INSTALL_ROOT=$startdir/pkg install
+}
+
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythflix/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythflix/PKGBUILD
new file mode 100644
index 0000000..9e8c92e
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythflix/PKGBUILD
@@ -0,0 +1,34 @@
+pkgname=mythflix-svn
+pkgver=16153
+pkgrel=2
+pkgdesc="Netflix access plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-svn')
+conflicts=('mythtv-plugins-svn')
+groups=('mythtv-all-plugins-svn')
+license="GPL"
+source=()
+_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+	cd $startdir/src/
+	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+	cd $startdir/src/mythplugins
+	PLUGIN=mythflix
+	grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro
+	if [ $? != 0 ]
+	then
+			echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+				msg "appending program lib"
+			fi
+	make distclean
+   ./configure  --disable-all --enable-opengl --enable-mythflix 
+
+   make -j 2 || return 1
+
+   make INSTALL_ROOT=$startdir/pkg install
+}
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythgallery/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythgallery/PKGBUILD
new file mode 100644
index 0000000..52fb732
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythgallery/PKGBUILD
@@ -0,0 +1,36 @@
+pkgname=mythgallery-svn
+pkgver=16153
+pkgrel=3
+pkgdesc="Image gallery plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-svn' 'libexif' 'libtiff')
+conflicts=('mythtv-plugins-svn')
+groups=('mythtv-all-plugins-svn')
+license="GPL"
+source=()
+_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+	cd $startdir/src/
+	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+	cd $startdir/src/mythplugins
+	export QMAKESPEC='linux-g++'
+	PLUGIN=mythgallery
+	grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro
+	if [ $? != 0 ]
+	then
+			echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+				msg "appending program lib"
+			fi
+	make distclean
+   ./configure  --disable-all --enable-opengl --enable-mythgallery --enable-exif
+
+   make -j 2 || return 1
+
+   make INSTALL_ROOT=$startdir/pkg install
+}
+
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythgame/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythgame/PKGBUILD
new file mode 100644
index 0000000..8c4257f
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythgame/PKGBUILD
@@ -0,0 +1,36 @@
+pkgname=mythgame-svn
+pkgver=16153
+pkgrel=4
+pkgdesc="Emulation plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-svn' 'zlib')
+conflicts=('mythtv-plugins-svn')
+groups=('mythtv-all-plugins-svn')
+license="GPL"
+source=()
+_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+	cd $startdir/src/
+	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+	cd $startdir/src/mythplugins
+PLUGIN=mythgame
+grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro
+if [ $? != 0 ]
+then
+		echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+		msg	 "appending program lib"
+		fi
+	export QMAKESPEC='linux-g++'
+	make distclean
+   ./configure  --disable-all --enable-opengl --enable-mythgame 
+
+   make -j 2 || return 1
+
+   make INSTALL_ROOT=$startdir/pkg install
+}
+
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythmovietime/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythmovietime/PKGBUILD
new file mode 100644
index 0000000..f83cdbf
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythmovietime/PKGBUILD
@@ -0,0 +1,36 @@
+pkgname=mythmovietime-svn
+pkgver=16153
+pkgrel=6
+pkgdesc="Emulation plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-svn' 'zlib')
+conflicts=('mythtv-plugins-svn')
+groups=('mythtv-all-plugins-svn')
+license="GPL"
+source=()
+_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+	cd $startdir/src/
+	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+	cd $startdir/src/mythplugins
+PLUGIN=mythmovietime
+grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro
+if [ $? != 0 ]
+then
+		echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+			msg "appending program lib"
+		fi
+	export QMAKESPEC='linux-g++'
+	make distclean
+   ./configure  --disable-all --enable-mythmovies 
+
+   make -j 2 || return 1
+
+   make INSTALL_ROOT=$startdir/pkg install
+}
+
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythmusic/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythmusic/PKGBUILD
new file mode 100644
index 0000000..28cbe82
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythmusic/PKGBUILD
@@ -0,0 +1,41 @@
+
+
+pkgname=mythmusic-svn
+pkgver=16153
+pkgrel=9
+pkgdesc="Music playing plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686' 'x86_64')
+#depends=('mythtv-svn' 'libid3tag' 'libmad' 'libvorbis' 'flac>=1.1.4' 'libcdaudio' \
+#         'cdparanoia' 'fftw2' 'sdl' 'faad2' 'lame' )
+
+  depends=('mythtv-svn ' 'libid3tag' 'flac>=1.1.4 ' 'a52dec' 'libcdaudio' 'libcddb' 'libdvdread' 'libid3tag' 'libmad' 'libogg'  'libtheora' 'libvorbis' 'taglib' 'libvisual' 'cdparanoia'   'sdl' 'faad2' 'lame' 'fftw2double')
+
+conflicts=('mythtv-plugins-svn')
+groups=('mythtv-all-plugins-svn')
+license="GPL"
+source=()
+_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+	cd $startdir/src/
+	make distclean
+	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+	cd $startdir/src/mythplugins
+PLUGIN=mythmusic
+grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro
+if [ $? != 0 ]
+then
+		echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+			msg "appending program lib"
+		fi
+
+#   ./configure  --disable-all --enable-mythmusic  
+
+   make  || return 1
+
+   make INSTALL_ROOT=$startdir/pkg install
+}
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythmusic/music_flac.patch b/abs/core-testing/mythtv/trunk/plugins/mythmusic/music_flac.patch
new file mode 100644
index 0000000..b152249
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythmusic/music_flac.patch
@@ -0,0 +1,293 @@
+--- flacdecoder.cpp.old	2007-03-11 18:14:37.000000000 -0400
++++ flacdecoder.cpp	2007-03-11 18:15:34.000000000 -0400
+@@ -17,7 +17,7 @@
+ 
+ #include <qtimer.h>
+ 
+-static FLAC__SeekableStreamDecoderReadStatus flacread(const FLAC__SeekableStreamDecoder *decoder, FLAC__byte bufferp[], unsigned *bytes, void *client_data)
++static FLAC__StreamDecoderReadStatus flacread(const FLAC__StreamDecoder *decoder, FLAC__byte bufferp[], unsigned *bytes, void *client_data)
+ {
+     decoder = decoder;
+ 
+@@ -26,27 +26,27 @@
+ 
+     if (len == -1)
+     {
+-        return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR;
++        return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM;
+     }
+    
+     *bytes = len;
+-    return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK;
++    return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE;
+ }
+ 
+-static FLAC__SeekableStreamDecoderSeekStatus flacseek(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) 
++static FLAC__StreamDecoderSeekStatus flacseek(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) 
+ {
+     decoder = decoder;
+     FlacDecoder *dflac = (FlacDecoder *)client_data;
+ 
+     if (!dflac->input()->isDirectAccess())
+-        return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR;
++        return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR;
+ 
+     if (dflac->input()->at(absolute_byte_offset))
+-        return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK;
+-    return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR;
++        return FLAC__STREAM_DECODER_SEEK_STATUS_OK;
++    return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR;
+ }
+ 
+-static FLAC__SeekableStreamDecoderTellStatus flactell(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
++static FLAC__StreamDecoderTellStatus flactell(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data)
+ {
+     decoder = decoder;
+     FlacDecoder *dflac = (FlacDecoder *)client_data;
+@@ -54,20 +54,20 @@
+     long t = dflac->input()->at();
+     *absolute_byte_offset = t;
+ 
+-    return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK;
++    return FLAC__STREAM_DECODER_TELL_STATUS_OK;
+ }
+ 
+-static FLAC__SeekableStreamDecoderLengthStatus flaclength(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data)
++static FLAC__StreamDecoderLengthStatus flaclength(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data)
+ {
+     decoder = decoder;
+ 
+     FlacDecoder *dflac = (FlacDecoder *)client_data;
+ 
+     *stream_length = dflac->input()->size();
+-    return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK;
++    return FLAC__STREAM_DECODER_LENGTH_STATUS_OK;
+ }
+ 
+-static FLAC__bool flaceof(const FLAC__SeekableStreamDecoder *decoder, void *client_data)
++static FLAC__bool flaceof(const FLAC__StreamDecoder *decoder, void *client_data)
+ {
+     decoder = decoder;
+ 
+@@ -76,7 +76,7 @@
+     return dflac->input()->atEnd();
+ }
+ 
+-static FLAC__StreamDecoderWriteStatus flacwrite(const FLAC__SeekableStreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
++static FLAC__StreamDecoderWriteStatus flacwrite(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data)
+ {
+     decoder = decoder;
+ 
+@@ -132,7 +132,7 @@
+     }
+ }
+ 
+-static void flacmetadata(const FLAC__SeekableStreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
++static void flacmetadata(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data)
+ {
+     decoder = decoder;
+ 
+@@ -156,11 +156,11 @@
+     }
+ }
+ 
+-static void flacerror(const FLAC__SeekableStreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
++static void flacerror(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data)
+ {
+     decoder = decoder;
+ 
+-    FLAC__FileDecoder *file_decoder = (FLAC__FileDecoder *)client_data;
++    FLAC__StreamDecoder *file_decoder = (FLAC__StreamDecoder *)client_data;
+ 
+     file_decoder = file_decoder;
+     status = status;
+@@ -262,17 +262,8 @@
+         }
+     }
+ 
+-    decoder = FLAC__seekable_stream_decoder_new();
+-    FLAC__seekable_stream_decoder_set_md5_checking(decoder, false);
+-    FLAC__seekable_stream_decoder_set_read_callback(decoder, flacread);
+-    FLAC__seekable_stream_decoder_set_seek_callback(decoder, flacseek);
+-    FLAC__seekable_stream_decoder_set_tell_callback(decoder, flactell);
+-    FLAC__seekable_stream_decoder_set_length_callback(decoder, flaclength);
+-    FLAC__seekable_stream_decoder_set_eof_callback(decoder, flaceof);
+-    FLAC__seekable_stream_decoder_set_write_callback(decoder, flacwrite);
+-    FLAC__seekable_stream_decoder_set_metadata_callback(decoder, flacmetadata);
+-    FLAC__seekable_stream_decoder_set_error_callback(decoder, flacerror);
+-    FLAC__seekable_stream_decoder_set_client_data(decoder, this);
++    decoder = FLAC__stream_decoder_new();
++    FLAC__stream_decoder_set_md5_checking(decoder, false);
+ 
+     freq = 0;
+     bitrate = 0;
+@@ -281,8 +272,17 @@
+     totalTime = 0; 
+     totalTime = totalTime < 0 ? 0 : totalTime;
+ 
+-    FLAC__seekable_stream_decoder_init(decoder);
+-    FLAC__seekable_stream_decoder_process_until_end_of_metadata(decoder);
++    FLAC__stream_decoder_init_stream(decoder,
++                                     flacread,
++                                     flacseek,
++                                     flactell,
++                                     flaclength,
++                                     flaceof,
++                                     flacwrite,
++                                     flacmetadata,
++                                     flacerror,
++                                     this);
++    FLAC__stream_decoder_process_until_end_of_metadata(decoder);
+ 
+     inited = TRUE;
+     return TRUE;
+@@ -295,8 +295,8 @@
+ 
+ void FlacDecoder::deinit()
+ {
+-    FLAC__seekable_stream_decoder_finish(decoder);
+-    FLAC__seekable_stream_decoder_delete(decoder);
++    FLAC__stream_decoder_finish(decoder);
++    FLAC__stream_decoder_delete(decoder);
+ 
+     if (input()->isOpen())
+         input()->close();
+@@ -330,7 +330,7 @@
+     }
+ 
+     bool flacok = true;
+-    FLAC__SeekableStreamDecoderState decoderstate;
++    FLAC__StreamDecoderState decoderstate;
+ 
+     while (! done && ! finish) {
+         lock();
+@@ -340,12 +340,12 @@
+             FLAC__uint64 sample = (FLAC__uint64)(seekTime * 44100.0);
+             if (sample > totalsamples - 50)
+                 sample = totalsamples - 50;
+-            FLAC__seekable_stream_decoder_seek_absolute(decoder, sample);
++            FLAC__stream_decoder_seek_absolute(decoder, sample);
+             seekTime = -1.0;
+         }
+ 
+-        flacok = FLAC__seekable_stream_decoder_process_single(decoder);
+-        decoderstate = FLAC__seekable_stream_decoder_get_state(decoder);
++        flacok = FLAC__stream_decoder_process_single(decoder);
++        decoderstate = FLAC__stream_decoder_get_state(decoder);
+ 
+         if (decoderstate == 0 || decoderstate == 1)
+         {
+--- flacdecoder.h.old	2007-03-11 18:14:37.000000000 -0400
++++ flacdecoder.h	2007-03-11 18:14:12.000000000 -0400
+@@ -35,7 +35,7 @@
+     char *output_buf;
+     ulong output_bytes, output_at;
+ 
+-    FLAC__SeekableStreamDecoder *decoder;
++    FLAC__StreamDecoder *decoder;
+ 
+     unsigned int bks;
+     bool done, finish;
+--- flacencoder.cpp.old	2007-03-11 18:14:37.000000000 -0400
++++ flacencoder.cpp	2007-03-11 18:14:12.000000000 -0400
+@@ -9,7 +9,7 @@
+ #include "flacencoder.h"
+ #include "metaioflacvorbiscomment.h"
+ 
+-#include <FLAC/file_encoder.h>
++#include <FLAC/stream_encoder.h>
+ #include <FLAC/assert.h>
+ #include <mythtv/mythcontext.h>
+ 
+@@ -29,32 +29,32 @@
+     int rice_parameter_search_dist = 0;
+     int max_lpc_order = 8;
+ 
+-    encoder = FLAC__file_encoder_new();
++    encoder = FLAC__stream_encoder_new();
+ 
+-    FLAC__file_encoder_set_streamable_subset(encoder, true);
+-    FLAC__file_encoder_set_do_mid_side_stereo(encoder, do_mid_side);
+-    FLAC__file_encoder_set_loose_mid_side_stereo(encoder, loose_mid_side);
+-    FLAC__file_encoder_set_channels(encoder, NUM_CHANNELS);
+-    FLAC__file_encoder_set_bits_per_sample(encoder, 16);
+-    FLAC__file_encoder_set_sample_rate(encoder, 44100);
+-    FLAC__file_encoder_set_blocksize(encoder, blocksize);
+-    FLAC__file_encoder_set_max_lpc_order(encoder, max_lpc_order);
+-    FLAC__file_encoder_set_qlp_coeff_precision(encoder, qlp_coeff_precision);
+-    FLAC__file_encoder_set_do_qlp_coeff_prec_search(encoder, false);
+-    FLAC__file_encoder_set_do_escape_coding(encoder, do_escape_coding);
+-    FLAC__file_encoder_set_do_exhaustive_model_search(encoder, 
++    FLAC__stream_encoder_set_streamable_subset(encoder, true);
++    FLAC__stream_encoder_set_do_mid_side_stereo(encoder, do_mid_side);
++    FLAC__stream_encoder_set_loose_mid_side_stereo(encoder, loose_mid_side);
++    FLAC__stream_encoder_set_channels(encoder, NUM_CHANNELS);
++    FLAC__stream_encoder_set_bits_per_sample(encoder, 16);
++    FLAC__stream_encoder_set_sample_rate(encoder, 44100);
++    FLAC__stream_encoder_set_blocksize(encoder, blocksize);
++    FLAC__stream_encoder_set_max_lpc_order(encoder, max_lpc_order);
++    FLAC__stream_encoder_set_qlp_coeff_precision(encoder, qlp_coeff_precision);
++    FLAC__stream_encoder_set_do_qlp_coeff_prec_search(encoder, false);
++    FLAC__stream_encoder_set_do_escape_coding(encoder, do_escape_coding);
++    FLAC__stream_encoder_set_do_exhaustive_model_search(encoder, 
+                                                     do_exhaustive_model_search);
+-    FLAC__file_encoder_set_min_residual_partition_order(encoder, 
++    FLAC__stream_encoder_set_min_residual_partition_order(encoder, 
+                                                   min_residual_partition_order);
+-    FLAC__file_encoder_set_max_residual_partition_order(encoder, 
++    FLAC__stream_encoder_set_max_residual_partition_order(encoder, 
+                                                   max_residual_partition_order);
+-    FLAC__file_encoder_set_rice_parameter_search_dist(encoder, 
++    FLAC__stream_encoder_set_rice_parameter_search_dist(encoder, 
+                                                     rice_parameter_search_dist);
+ 
+-    FLAC__file_encoder_set_filename(encoder, outfile.local8Bit());
++    
+ 
+-    int ret = FLAC__file_encoder_init(encoder);
+-    if (ret != FLAC__FILE_ENCODER_OK)
++    int ret = FLAC__stream_encoder_init_file(encoder, outfile.local8Bit(), NULL, NULL);
++    if (ret != FLAC__STREAM_ENCODER_OK)
+     {
+         VERBOSE(VB_GENERAL, QString("Error initializing FLAC encoder."
+                                     " Got return code: %1").arg(ret));
+@@ -70,8 +70,8 @@
+ 
+     if (encoder)
+     {
+-        FLAC__file_encoder_finish(encoder);
+-        FLAC__file_encoder_delete(encoder);
++        FLAC__stream_encoder_finish(encoder);
++        FLAC__stream_encoder_delete(encoder);
+     }
+ 
+     if (metadata)
+@@ -102,7 +102,7 @@
+ 
+         if(sampleindex == MAX_SAMPLES || (length == 0 && sampleindex > 0) ) 
+         {
+-            if (!FLAC__file_encoder_process(encoder,
++            if (!FLAC__stream_encoder_process(encoder,
+                                             (const FLAC__int32 * const *) input,
+                                             sampleindex))
+             {
+--- flacencoder.h.old	2007-03-11 18:14:37.000000000 -0400
++++ flacencoder.h	2007-03-11 18:14:12.000000000 -0400
+@@ -4,7 +4,7 @@
+ #include <qstring.h>
+ 
+ #define HAVE_INTTYPES_H
+-#include <FLAC/file_encoder.h>
++#include <FLAC/stream_encoder.h>
+ 
+ #include "encoder.h"
+ 
+@@ -21,7 +21,7 @@
+     int addSamples(int16_t *bytes, unsigned int len);
+ 
+   private:
+-    FLAC__FileEncoder *encoder;
++    FLAC__StreamEncoder *encoder;
+     unsigned int sampleindex;
+     FLAC__int32 inputin[NUM_CHANNELS][MAX_SAMPLES];
+     FLAC__int32 *input[NUM_CHANNELS];
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythnews/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythnews/PKGBUILD
new file mode 100644
index 0000000..4dafc20
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythnews/PKGBUILD
@@ -0,0 +1,34 @@
+pkgname=mythnews-svn
+pkgver=16153
+pkgrel=4
+pkgdesc="News checking plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-svn')
+conflicts=('mythtv-plugins-svn')
+groups=('mythtv-all-plugins-svn')
+license="GPL"
+source=()
+_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+build() {
+	cd $startdir/src/
+	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+	cd $startdir/src/mythplugins
+	PLUGIN=mythnews
+	grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro
+	if [ $? != 0 ]
+	then
+			echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+				msg "appending program lib"
+			fi
+	make distclean
+   ./configure --disable-all --enable-mythnews
+
+   make -j 2 || return 1
+
+   make INSTALL_ROOT=$startdir/pkg install
+}
+md5sums=('2a9fbf45ae58a3a35857ce8d7c4d12db')
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythphone/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythphone/PKGBUILD
new file mode 100644
index 0000000..f6bf3ec
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythphone/PKGBUILD
@@ -0,0 +1,42 @@
+pkgname=mythphone-svn
+pkgver=16153
+pkgrel=3
+pkgdesc="Plugin that allows phone calls to be made to MythTv"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-svn')
+conflicts=('mythtv-plugins-svn')
+groups=('mythtv-all-plugins-svn')
+license="GPL"
+source=()
+_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+	cd $startdir/src/
+	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+	cd $startdir/src/mythplugins
+	make distclean
+	PLUGIN=mythphone
+	grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro
+	if [ $? != 0 ]
+	then
+		echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+		msg  "appending program lib"
+	fi
+	
+	msg "Correcting configure    kde3 to kde"
+   	sed -i 's#kde3#kde#' configure || return 1
+   	./configure  --enable-opengl --disable-all --enable-mythphone || return 1
+	qmake mythplugins.pro || return 1
+	make qmake || return 1
+	
+	msg "Correcting Makefile    kde3 to kde"
+ 	sed -i 's#kde3#kde#' ./mythphone/mythphone/Makefile || return 1
+   	
+	make -j 2 || return 1
+	make INSTALL_ROOT=$startdir/pkg install
+}
+
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythvideo/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythvideo/PKGBUILD
new file mode 100644
index 0000000..4087034
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythvideo/PKGBUILD
@@ -0,0 +1,36 @@
+pkgname=mythvideo-svn
+pkgver=16153
+pkgrel=2
+pkgdesc="Video playback and browsing plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-svn'  'perlxml' 'perl-libwww' 'perl-uri' 'perl-xml-simple' 'ffmpeg')
+license="GPL"
+conflicts=('mythtv-plugins-svn')
+groups=('mythtv-all-plugins-svn')
+
+source=()
+_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+	cd $startdir/src/
+	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+	cd $startdir/src/mythplugins
+  	make distclean 
+	PLUGIN=mythvideo
+	grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro
+	if [ $? != 0 ]
+	then
+			echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+				msg "appending program lib"
+			fi
+   ./configure  --disable-all --enable-mythvideo  --enable-transcode  
+
+   make -j 2 || return 1
+
+   make INSTALL_ROOT=$startdir/pkg install
+}
+md5sums=('2a9fbf45ae58a3a35857ce8d7c4d12db')
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweather/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythweather/PKGBUILD
new file mode 100644
index 0000000..98542b9
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythweather/PKGBUILD
@@ -0,0 +1,35 @@
+pkgname=mythweather-svn
+pkgver=16153
+pkgrel=6
+pkgdesc="Weather checking plugin for MythTV"
+url="http://www.mythtv.org"
+arch=('i686')
+depends=('mythtv-svn' 'wget' 'perl-xml-sax' 'perl-soap-lite' 'perl-image-size'  'imagemagick')
+conflicts=('mythtv-plugins-svn')
+groups=('mythtv-all-plugins-svn')
+license="GPL"
+source=()
+_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+	cd $startdir/src/
+	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+	cd $startdir/src/mythplugins
+	make distclean
+	PLUGIN=mythweather
+	grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro
+	if [ $? != 0 ]
+	then
+			echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro
+				msg "appending program lib"
+			fi
+   ./configure  --enable-opengl --disable-all --enable-mythweather
+ 
+   make -j 2 || return 1
+
+   make INSTALL_ROOT=$startdir/pkg install
+}
+md5sums=('2a9fbf45ae58a3a35857ce8d7c4d12db')
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweb/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythweb/PKGBUILD
new file mode 100755
index 0000000..52eb059
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythweb/PKGBUILD
@@ -0,0 +1,35 @@
+pkgname=mythweb-svn
+pkgver=16153
+pkgrel=20
+pkgdesc="mythweb" 
+url="http://www.mythtv.org" 
+license="GPL" 
+arch=('i686')
+depends=(php fcgi libmysqlclient ) 
+conflicts=('mythweb' 'mythweb-fixes') 
+replaces=() 
+backup=() 
+install='mythweb.install' 
+source=(mythweblighttpd.patch dblogininit.inc ) 
+md5sums=() 
+_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+build() { 
+echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+#svn co http://cvs.mythtv.org/svn/trunk/mythtv
+#svn co http://cvs.mythtv.org/svn/trunk/mythplugins
+#svn co http://cvs.mythtv.org/svn/trunk/myththemes
+cd $startdir/src/mythplugins
+
+#take care of fing mythweb
+mkdir -p $startdir/pkg/data/srv/httpd/htdocs/
+cp -rp mythweb $startdir/pkg/data/srv/httpd/htdocs/
+cp -f $startdir/src/dblogininit.inc $startdir/pkg/data/srv/httpd/htdocs/mythweb/includes/
+cd  $startdir/pkg/data/srv/httpd/htdocs/mythweb/includes
+patch -p0 < $startdir/src/mythweblighttpd.patch
+
+chown -R nobody:nobody $startdir/pkg/data/srv/httpd/htdocs/mythweb
+chmod -R  775 $startdir/pkg/data/srv/httpd/htdocs/mythweb
+}
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweb/dblogininit.inc b/abs/core-testing/mythtv/trunk/plugins/mythweb/dblogininit.inc
new file mode 100755
index 0000000..c5395c5
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythweb/dblogininit.inc
@@ -0,0 +1,6 @@
+<?
+ $_SERVER["db_server"] = "localhost";
+ $_SERVER["db_name"] = "mythconverg";
+ $_SERVER["db_login"] = "mythtv";
+ $_SERVER["db_password"] = "mythtv";
+?>
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweb/mythweb.install b/abs/core-testing/mythtv/trunk/plugins/mythweb/mythweb.install
new file mode 100755
index 0000000..9162d98
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythweb/mythweb.install
@@ -0,0 +1,37 @@
+
+# arg 1:  the new package version
+pre_install () {
+/bin/true
+}
+
+post_install() {
+	cp /etc/lighttpd/lighttpd.conf /tmp
+	sed -e "s/# .*  \"mod_fastcgi\",/\"mod_fastcgi\"\,/g" /tmp/lighttpd.conf > /etc/lighttpd/lighttpd.conf
+ 
+
+}
+pre_upgrade () {
+ pre_install
+}
+
+# arg 1:  the new package version
+# arg 2:  the old package version
+post_upgrade() {
+  post_install
+
+  /bin/true
+}
+
+# arg 1:  the old package version
+pre_remove() {
+  /bin/true
+}
+
+# arg 1:  the old package version
+post_remove() {
+/bint/true
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweb/mythweblighttpd.patch b/abs/core-testing/mythtv/trunk/plugins/mythweb/mythweblighttpd.patch
new file mode 100755
index 0000000..6403a88
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythweb/mythweblighttpd.patch
@@ -0,0 +1,13 @@
+--- database.php.orig	2007-12-31 21:25:30.000000000 +0000
++++ database.php	2007-12-31 21:25:50.000000000 +0000
+@@ -18,6 +18,10 @@
+         custom_error("Please install the MySQL libraries for PHP.\n"
+                     .'The package is usually called something like php-mysql.');
+     }
++     if (empty($_SERVER['db_server']) || empty($_SERVER['db_name']) || empty($_SERVER['db_login'])) {
++	      require_once 'dblogininit.inc';
++	      }
++	
+ 
+ // No database connection info defined?
+     if (empty($_SERVER['db_server']) || empty($_SERVER['db_name']) || empty($_SERVER['db_login'])) {
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/dblogininit.inc b/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/dblogininit.inc
new file mode 100755
index 0000000..c5395c5
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/dblogininit.inc
@@ -0,0 +1,6 @@
+<?
+ $_SERVER["db_server"] = "localhost";
+ $_SERVER["db_name"] = "mythconverg";
+ $_SERVER["db_login"] = "mythtv";
+ $_SERVER["db_password"] = "mythtv";
+?>
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/lighttpd.conf b/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/lighttpd.conf
new file mode 100755
index 0000000..ff4e7dd
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/lighttpd.conf
@@ -0,0 +1,332 @@
+# lighttpd configuration file
+
+############ Options you really have to take care of ####################
+
+## modules to load
+# at least mod_access and mod_accesslog should be loaded
+# all other module should only be loaded if really neccesary
+# - saves some time
+# - saves memory
+server.modules              = (
+                                "mod_rewrite",
+#                               "mod_redirect",
+#                               "mod_alias",
+                                "mod_access",
+#                               "mod_cml",
+#                               "mod_trigger_b4_dl",
+#                               "mod_auth",
+                                "mod_status",
+                                "mod_setenv",
+#fast_cgi needs to be enabled for mythweb, as all mythweb requests are passed to php-cgi.
+				"mod_fastcgi",
+#                               "mod_proxy",
+#                               "mod_simple_vhost",
+#                               "mod_evhost",
+#                               "mod_userdir",
+                                "mod_cgi",
+#                               "mod_compress",
+#                               "mod_ssi",
+#                               "mod_usertrack",
+#                               "mod_expire",
+#                               "mod_secdownload",
+#                               "mod_rrdtool",
+                                "mod_accesslog" )
+
+## a static document-root, for virtual-hosting take look at the
+## server.virtual-* options
+server.document-root        = "/data/srv/httpd/htdocs"
+
+## where to send error-messages to
+server.errorlog             = "/var/log/lighttpd/error.log"
+
+# files to check for if .../ is requested
+index-file.names            = ( "index.php", "index.html",
+                                "index.htm", "default.htm","mythweb.php")
+
+# mimetype mapping
+mimetype.assign             = (
+  ".pdf"          =>      "application/pdf",
+  ".sig"          =>      "application/pgp-signature",
+  ".spl"          =>      "application/futuresplash",
+  ".class"        =>      "application/octet-stream",
+  ".ps"           =>      "application/postscript",
+  ".torrent"      =>      "application/x-bittorrent",
+  ".dvi"          =>      "application/x-dvi",
+  ".gz"           =>      "application/x-gzip",
+  ".pac"          =>      "application/x-ns-proxy-autoconfig",
+  ".swf"          =>      "application/x-shockwave-flash",
+  ".tar.gz"       =>      "application/x-tgz",
+  ".tgz"          =>      "application/x-tgz",
+  ".tar"          =>      "application/x-tar",
+  ".zip"          =>      "application/zip",
+  ".mp3"          =>      "audio/mpeg",
+  ".m3u"          =>      "audio/x-mpegurl",
+  ".wma"          =>      "audio/x-ms-wma",
+  ".wax"          =>      "audio/x-ms-wax",
+  ".ogg"          =>      "application/ogg",
+  ".wav"          =>      "audio/x-wav",
+  ".gif"          =>      "image/gif",
+  ".jpg"          =>      "image/jpeg",
+  ".jpeg"         =>      "image/jpeg",
+  ".png"          =>      "image/png",
+  ".xbm"          =>      "image/x-xbitmap",
+  ".xpm"          =>      "image/x-xpixmap",
+  ".xwd"          =>      "image/x-xwindowdump",
+  ".css"          =>      "text/css",
+  ".html"         =>      "text/html",
+  ".htm"          =>      "text/html",
+  ".js"           =>      "text/javascript",
+  ".asc"          =>      "text/plain",
+  ".c"            =>      "text/plain",
+  ".cpp"          =>      "text/plain",
+  ".log"          =>      "text/plain",
+  ".conf"         =>      "text/plain",
+  ".text"         =>      "text/plain",
+  ".txt"          =>      "text/plain",
+  ".dtd"          =>      "text/xml",
+  ".xml"          =>      "text/xml",
+  ".mpeg"         =>      "video/mpeg",
+  ".mpg"          =>      "video/mpeg",
+  ".mov"          =>      "video/quicktime",
+  ".qt"           =>      "video/quicktime",
+  ".avi"          =>      "video/x-msvideo",
+  ".asf"          =>      "video/x-ms-asf",
+  ".asx"          =>      "video/x-ms-asf",
+  ".wmv"          =>      "video/x-ms-wmv",
+  ".bz2"          =>      "application/x-bzip",
+  ".tbz"          =>      "application/x-bzip-compressed-tar",
+  ".tar.bz2"      =>      "application/x-bzip-compressed-tar",
+  ".nuv"	  =>	  "video/nuppelvideo"
+ )
+
+
+# Use the "Content-Type" extended attribute to obtain mime type if possible
+mimetype.use-xattr        = "enable"
+
+
+## send a different Server: header
+## be nice and keep it at lighttpd
+#server.tag                 = "lighttpd"
+
+#### accesslog module
+accesslog.filename          = "/var/log/lighttpd/access.log"
+
+## deny access the file-extensions
+#
+# ~    is for backupfiles from vi, emacs, joe, ...
+# .inc is often used for code includes which should in general not be part
+#      of the document-root
+url.access-deny             = ( "~", ".inc" )
+
+$HTTP["url"] =~ "\.pdf$" {
+  server.range-requests = "disable"
+}
+
+######### Options that are good to be but not neccesary to be changed #######
+
+## bind to port (default: 80)
+#server.port                = 80
+
+## bind to localhost (default: all interfaces)
+#server.bind                = "grisu.home.kneschke.de"
+
+## error-handler for status 404
+#server.error-handler-404   = "/error-handler.html"
+#server.error-handler-404   = "/error-handler.php"
+
+## to help the rc.scripts
+server.pid-file            = "/var/run/lighttpd.pid"
+
+
+###### virtual hosts
+##
+##  If you want name-based virtual hosting add the next three settings and load
+##  mod_simple_vhost
+##
+## document-root =
+##   virtual-server-root + virtual-server-default-host + virtual-server-docroot
+## or
+##   virtual-server-root + http-host + virtual-server-docroot
+##
+#simple-vhost.server-root   = "/home/lighttpd/vhosts/"
+#simple-vhost.default-host  = "lighttpd.localhost"
+#simple-vhost.document-root = "/pages/"
+##
+## Format: <errorfile-prefix><status-code>.html
+## -> ..../status-404.html for 'File not found'
+#server.errorfile-prefix    = "/home/weigon/projects/lighttpd/doc/status-"
+
+## virtual directory listings
+#server.dir-listing         = "enable"
+
+## enable debugging
+#debug.log-request-header   = "enable"
+#debug.log-response-header  = "enable"
+#debug.log-request-handling = "enable"
+#debug.log-file-not-found   = "enable"
+
+### only root can use these options
+#
+# chroot() to directory (default: no chroot() )
+#server.chroot              = "/"
+
+## change uid to <uid> (default: don't care)
+server.username             = "nobody"
+
+## change uid to <uid> (default: don't care)
+server.groupname            = "nobody"
+
+#### compress module
+#compress.cache-dir         = "/home/lighttpd/cache/"
+#compress.filetype          = ("text/plain", "text/html")
+
+#### proxy module
+## read proxy.txt for more info
+#proxy.server               = ( ".php" =>
+#                               ( "localhost" =>
+#                                 (
+#                                   "host" => "192.168.0.101",
+#                                   "port" => 80
+#                                 )
+#                               )
+#                             )
+
+
+
+
+## fastcgi module
+## read fastcgi.txt for more info
+## adjust the value of bin-path for your system.  
+## If you intend to process alot of requests at the same time, increase
+##  the value of min-procs and max-procs
+
+fastcgi.server = ( ".php" =>
+ ( "localhost" =>
+   (
+     "socket" => "/tmp/php-fastcgi.socket",
+     "bin-path" => "/usr/bin/php-cgi",
+     "min-procs" => 0,
+     "max-procs" => 1,
+     "max-load-per-proc" => 1,
+     "idle-timeout" => 10,
+     # Fix PATH_INFO for PHP scripts that rely on it (like Wordpress and mythweb).
+      "broken-scriptfilename" => "enable"
+    )
+ )
+)
+
+
+#the rewrite rule for mythweb.
+#This assumes that mythweb is installed at document.root/mythweb
+
+ url.rewrite = (
+   "^/mythweb(/tv.*|/music.*|/video.*|/weather.*|/settings.*|/status.*|/backend_log.*)$" =>   "mythweb/mythweb.php/$1"
+ )
+
+
+#### CGI module
+cgi.assign                 = ( ".pl"  => "/usr/bin/perl")
+
+
+
+#### SSL engine
+#$SERVER["socket"] == "0.0.0.0:443" {
+#  ssl.engine                  = "enable"
+#  ssl.pemfile                 = "/home/lighttpd/ssl/server.pem"
+#  server.errorlog             = "/var/log/lighttpd/error-ssl.log"
+#  accesslog.filename          = "/var/log/lighttpd/access-ssl.log"
+#  server.document-root        = "/home/lighttpd/html-ssl"
+#}
+
+
+
+#### status module
+status.status-url          = "/server-status"
+status.config-url          = "/server-config"
+
+#### auth module
+## read authentication.txt for more info
+#auth.backend               = "plain"
+#auth.backend.plain.userfile = "lighttpd.user"
+#auth.backend.plain.groupfile = "lighttpd.group"
+
+#auth.backend.ldap.hostname = "localhost"
+#auth.backend.ldap.base-dn  = "dc=my-domain,dc=com"
+#auth.backend.ldap.filter   = "(uid=$)"
+#auth.require               = ( "/server-status" =>
+#                               (
+#                                 "method"  => "digest",
+#                                 "realm"   => "download archiv",
+#                                 "require" => "user=jan"
+#                               ),
+#                               "/server-info" =>
+#                               (
+#                                 "method"  => "digest",
+#                                 "realm"   => "download archiv",
+#                                 "require" => "valid-user"
+#                               )
+#                             )
+
+#### url handling modules (rewrite, redirect, access)
+#url.rewrite                = ( "^/$"             => "/server-status" )
+#url.redirect               = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )
+
+#
+# define a pattern for the host url finding
+# %% => % sign
+# %0 => domain name + tld
+# %1 => tld
+# %2 => domain name without tld
+# %3 => subdomain 1 name
+# %4 => subdomain 2 name
+#
+#evhost.path-pattern        = "/home/storage/dev/www/%3/htdocs/"
+
+#### expire module
+#expire.url                 = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")
+
+#### ssi
+#ssi.extension              = ( ".shtml" )
+
+#### rrdtool
+#rrdtool.binary             = "/usr/bin/rrdtool"
+#rrdtool.db-name            = "/var/www/lighttpd.rrd"
+
+#### setenv
+#setenv.add-request-header  = ( "TRAV_ENV" => "mysql://user@host/db" )
+#setenv.add-response-header = ( "X-Secret-Message" => "42" )
+## for mod_trigger_b4_dl
+# trigger-before-download.gdbm-filename = "/home/weigon/testbase/trigger.db"
+# trigger-before-download.memcache-hosts = ( "127.0.0.1:11211" )
+# trigger-before-download.trigger-url = "^/trigger/"
+# trigger-before-download.download-url = "^/download/"
+# trigger-before-download.deny-url = "http://127.0.0.1/index.html"
+# trigger-before-download.trigger-timeout = 10
+
+## for mod_cml
+## don't forget to add index.cml to server.indexfiles
+# cml.extension               = ".cml"
+# cml.memcache-hosts          = ( "127.0.0.1:11211" )
+
+#### variable usage:
+## variable name without "." is auto prefixed by "var." and becomes "var.bar"
+#bar = 1
+#var.mystring = "foo"
+
+## integer add
+#bar += 1
+## string concat, with integer cast as string, result: "www.foo1.com"
+#server.name = "www." + mystring + var.bar + ".com"
+## array merge
+#index-file.names = (foo + ".php") + index-file.names
+#index-file.names += (foo + ".php")
+
+#### include
+#include /etc/lighttpd/lighttpd-inc.conf
+## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf"
+#include "lighttpd-inc.conf"
+
+#### include_shell
+#include_shell "echo var.a=1"
+## the above is same as:
+#var.a=1
diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/mythweblighttpd.patch b/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/mythweblighttpd.patch
new file mode 100755
index 0000000..bebc93e
--- /dev/null
+++ b/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/mythweblighttpd.patch
@@ -0,0 +1,16 @@
+--- init.php.orig	2006-11-23 21:37:13.000000000 +0000
++++ init.php	2006-11-23 21:40:04.000000000 +0000
+@@ -75,7 +75,12 @@
+         custom_error("Please install the MySQL libraries for PHP.\n"
+                     .'The package is usually called something like php-mysql.');
+     }
+-
++    
++    
++// No database connection info defined?
++    if (empty($_SERVER['db_server']) || empty($_SERVER['db_name']) || empty($_SERVER['db_login'])) {
++    require_once 'dblogininit.inc';
++    }
+ // No database connection info defined?
+     if (empty($_SERVER['db_server']) || empty($_SERVER['db_name']) || empty($_SERVER['db_login'])) {
+         tailored_error('db_vars_error');
-- 
cgit v0.12


From 42129857874c470c65d3b1dcb4bf42945a98dcfa Mon Sep 17 00:00:00 2001
From: James Meyer <james.meyer@operamail.com>
Date: Wed, 10 Dec 2008 18:49:40 -0600
Subject: Fix interfaces not being disabled when they are in fact disabled in
 the gui. ref FS#58

---
 abs/core-testing/LinHES-config/PKGBUILD         |  2 +-
 abs/core-testing/LinHES-config/networkconfig.sh | 52 ++++++++++++++++++------
 abs/core-testing/LinHES-config/systemconfig.sh  |  1 +
 abs/mv-core/MythVantage-config/networkconfig.sh | 53 ++++++++++++++++++-------
 abs/mv-core/MythVantage-config/systemconfig.sh  |  1 +
 5 files changed, 81 insertions(+), 28 deletions(-)

diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD
index 2a8ad77..543d182 100755
--- a/abs/core-testing/LinHES-config/PKGBUILD
+++ b/abs/core-testing/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=1.0
-pkgrel=96
+pkgrel=103
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev )
 pkgdesc="Install and configure your system"
 depends=(bc libstatgrab  mysql-python expect curl dnsutils parted sg3_utils nmbscan )
diff --git a/abs/core-testing/LinHES-config/networkconfig.sh b/abs/core-testing/LinHES-config/networkconfig.sh
index 9ad2d4e..23e3774 100644
--- a/abs/core-testing/LinHES-config/networkconfig.sh
+++ b/abs/core-testing/LinHES-config/networkconfig.sh
@@ -43,6 +43,22 @@ fi
 
 }
 
+function change_iface_state () {
+    if [  x$2 =  xenabled ]
+    then
+            echo "setting $1 to active"
+            sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options
+            sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' $ETCNETDIR/$1/options
+    else
+            echo "setting $1 to inactive"
+            sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options
+            sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' $ETCNETDIR/$1/options
+            /sbin/ifconfig $1 down
+            ip address flush $1
+    fi
+
+}
+
 function setup_interfaces() {
   local IS_WIRELESS
   local ip
@@ -110,14 +126,17 @@ function setup_interfaces() {
         cp -f  $TEMPLATES/etcnet/eth/options $ETCNETDIR/$1/options
     fi
 
-    if [ x$isactive =  x0 ]
+    if [  x$isactive =  x1 ]
     then
-            echo "setting $1 to inactive"
-            sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options
-
+            change_iface_state $1 enabled
+            #echo "setting $1 to active"
+            #sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options
+            #sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' $ETCNETDIR/$1/options
     else
-            echo "setting $1 to active"
-            sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options
+            change_iface_state $1 disabled
+            #echo "setting $1 to inactive"
+            #sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options
+            #sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' $ETCNETDIR/$1/options
     fi
 
     if [ x$IS_WIRELESS =  xTRUE ]
@@ -139,7 +158,7 @@ function setup_interfaces() {
 
 
 
-    if [ $UseDHCP = 0 ]
+    if [ x$UseDHCP = x0 ]
     then
             echo using dhcp
             sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=dhcp/g' $ETCNETDIR/$1/options
@@ -168,11 +187,16 @@ for i in eth0 eth1 wlan0 wlan1
 do
     CURRENTIF="HostActive"$i
     eval IFSTATE=\$${CURRENTIF}
+    echo $IFSTATE "---"
+        echo $i
     if [ x$IFSTATE = x1 ]
     then
         setup_interfaces $i
+    else
+        change_iface_state $i disabled
     fi
 done
+
 }
 
 function setup_hostname {
@@ -233,23 +257,25 @@ function setup_MYTH_vars {
 
 
 
-function setup_network {
-    setup_MYTH_vars
-    setup_hostname
-    find_active
-}
 
 function start_network {
 if [ ! $USEVNC = 0 ]
 then
+    /etc/net/scripts/network.init reload
     /etc/net/scripts/network.init restart
-
 else
     echo "VNC/NETBOOT in use, will NOT restart network"
 fi
 
 }
 
+function setup_network {
+    setup_MYTH_vars
+    setup_hostname
+    find_active
+}
+
+
 function stop_network {
 if [ ! $USEVNC = 0 ]
 then
diff --git a/abs/core-testing/LinHES-config/systemconfig.sh b/abs/core-testing/LinHES-config/systemconfig.sh
index f2f20a0..3aac497 100755
--- a/abs/core-testing/LinHES-config/systemconfig.sh
+++ b/abs/core-testing/LinHES-config/systemconfig.sh
@@ -1081,6 +1081,7 @@ then
         then
             echo "loading network"
             ${BASE}/etc/net/scripts/network.init reload
+            ${BASE}/etc/net/scripts/network.init restart
         else
             echo "netboot, will not start network"
         fi
diff --git a/abs/mv-core/MythVantage-config/networkconfig.sh b/abs/mv-core/MythVantage-config/networkconfig.sh
index 9ad2d4e..b4ffd5c 100644
--- a/abs/mv-core/MythVantage-config/networkconfig.sh
+++ b/abs/mv-core/MythVantage-config/networkconfig.sh
@@ -43,6 +43,22 @@ fi
 
 }
 
+function change_iface_state () {
+    if [  x$2 =  xenabled ]
+    then
+            echo "setting $1 to active"
+            sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options
+            sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' $ETCNETDIR/$1/options
+    else
+            echo "setting $1 to inactive"
+            sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options
+            sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' $ETCNETDIR/$1/options
+            /sbin/ifconfig $1 down
+            ip address flush $1
+    fi
+
+}
+
 function setup_interfaces() {
   local IS_WIRELESS
   local ip
@@ -110,14 +126,17 @@ function setup_interfaces() {
         cp -f  $TEMPLATES/etcnet/eth/options $ETCNETDIR/$1/options
     fi
 
-    if [ x$isactive =  x0 ]
+    if [  x$isactive =  x1 ]
     then
-            echo "setting $1 to inactive"
-            sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options
-
+            change_iface_state $1 enabled
+            #echo "setting $1 to active"
+            #sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options
+            #sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' $ETCNETDIR/$1/options
     else
-            echo "setting $1 to active"
-            sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options
+            change_iface_state $1 disabled
+            #echo "setting $1 to inactive"
+            #sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options
+            #sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' $ETCNETDIR/$1/options
     fi
 
     if [ x$IS_WIRELESS =  xTRUE ]
@@ -139,7 +158,7 @@ function setup_interfaces() {
 
 
 
-    if [ $UseDHCP = 0 ]
+    if [ x$UseDHCP = x0 ]
     then
             echo using dhcp
             sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=dhcp/g' $ETCNETDIR/$1/options
@@ -168,11 +187,16 @@ for i in eth0 eth1 wlan0 wlan1
 do
     CURRENTIF="HostActive"$i
     eval IFSTATE=\$${CURRENTIF}
+    echo $IFSTATE "---"
+        echo $i
     if [ x$IFSTATE = x1 ]
     then
         setup_interfaces $i
+    else
+        change_iface_state $i disabled
     fi
 done
+
 }
 
 function setup_hostname {
@@ -233,23 +257,24 @@ function setup_MYTH_vars {
 
 
 
-function setup_network {
-    setup_MYTH_vars
-    setup_hostname
-    find_active
-}
 
 function start_network {
 if [ ! $USEVNC = 0 ]
 then
-    /etc/net/scripts/network.init restart
-
+    /etc/net/scripts/network.init reload
 else
     echo "VNC/NETBOOT in use, will NOT restart network"
 fi
 
 }
 
+function setup_network {
+    setup_MYTH_vars
+    setup_hostname
+    find_active
+}
+
+
 function stop_network {
 if [ ! $USEVNC = 0 ]
 then
diff --git a/abs/mv-core/MythVantage-config/systemconfig.sh b/abs/mv-core/MythVantage-config/systemconfig.sh
index 6971e8f..5884b69 100755
--- a/abs/mv-core/MythVantage-config/systemconfig.sh
+++ b/abs/mv-core/MythVantage-config/systemconfig.sh
@@ -1062,6 +1062,7 @@ then
     then
         echo "reloading network"
         ${BASE}/etc/net/scripts/network.init reload
+        ${BASE}/etc/net/scripts/network.init restart
     else
         echo "netboot/vnc, will not restart network"
     fi
-- 
cgit v0.12

