From 7c8bcf3d9c4aef62780f090e963d0a94ff9bdf36 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 5 Mar 2012 23:18:38 -0600
Subject: runit-scripts: lircd run: set protocol and keymap for imon

---
 abs/core/runit-scripts/PKGBUILD                        | 2 +-
 abs/core/runit-scripts/runitscripts/services/lircd/run | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/abs/core/runit-scripts/PKGBUILD b/abs/core/runit-scripts/PKGBUILD
index 448af39..b84f74d 100755
--- a/abs/core/runit-scripts/PKGBUILD
+++ b/abs/core/runit-scripts/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=runit-scripts
 pkgver=2.1.1
-pkgrel=54
+pkgrel=55
 pkgdesc="collection of startup scripts for runit"
 url="http://smarden.org/runit/"
 license="BSD"
diff --git a/abs/core/runit-scripts/runitscripts/services/lircd/run b/abs/core/runit-scripts/runitscripts/services/lircd/run
index c4053c1..93d9585 100755
--- a/abs/core/runit-scripts/runitscripts/services/lircd/run
+++ b/abs/core/runit-scripts/runitscripts/services/lircd/run
@@ -151,6 +151,7 @@ else
             fi
         elif [[ x$Remotetype = ximon* ]]
         then
+            /usr/bin/ir-keytable -c -p lirc -w /etc/rc_keymaps/imon_pad
             LCMD="/usr/sbin/lircd -r -n --driver devinput -d /dev/remotes/SoundGraph --output /var/run/lirc/lircd"
             exec $LCMD >>$LOG 2>>$LOG
         else
-- 
cgit v0.12


From 42b8b3173f9d29f42b77b5a63336b3cb22a9852f Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Fri, 9 Mar 2012 18:17:16 -0600
Subject: LinHES-config: mv_ir.py: add remote.run for specific remote starting
 commands. refs #821

---
 abs/core/LinHES-config/PKGBUILD |  4 ++--
 abs/core/LinHES-config/mv_ir.py | 24 +++++++++++++++++++++---
 2 files changed, 23 insertions(+), 5 deletions(-)

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index 1c26f9b..0c51ef0 100644
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=2.3
-pkgrel=61
+pkgrel=62
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
 depends=('bc' 'libstatgrab'  'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
@@ -125,7 +125,7 @@ md5sums=('64fad755c12f8eb12940e216e403354e'
          '5f3259afe031fda189edae41dd1458f0'
          'dc150c1e2c915a55a616d1af5bb1f6de'
          'b845de3e05c1734cce4b9ac5e8f1baaf'
-         '8f58093cc2bbf92c95e54090cf243117'
+         'e7b94023461c52a692bfa67c647deedd'
          '5e69839659d65ddda35b8a9982dc29e9'
          '62b4ce94277c32f525db5c1480670acd'
          'ec6a9961e4d1b53ec1240c5979efff11'
diff --git a/abs/core/LinHES-config/mv_ir.py b/abs/core/LinHES-config/mv_ir.py
index 0e54f92..a4c3bed 100755
--- a/abs/core/LinHES-config/mv_ir.py
+++ b/abs/core/LinHES-config/mv_ir.py
@@ -44,7 +44,7 @@ def setup_lirc_links(mythhome):
         else:
             logging.debug("    %s/.lircrc already present",mythhome)
     else:
-        logging.debug("    /etc/lircrc does not exisit, can not link it")
+        logging.debug("    /etc/lircrc does not exist, can not link it")
 
 def scrub_modules(filename,module):
     logging.debug("    scrubbing %s from %s",module,filename)
@@ -92,6 +92,8 @@ def setup_ir_remote(Remotetype,templates,mythhome,HostBlasterType):
         mv_common.runcmd(cmd)
         cmd = "mv /etc/lircrc /etc/lircrc-%s" %currenttime
         mv_common.runcmd(cmd)
+        cmd = "mv /etc/remote.run /etc/remote.run-%s" %currenttime
+        mv_common.runcmd(cmd)
 
 
         if os.path.isdir(mythhome+"/remotes/"+Remotetype):
@@ -113,6 +115,14 @@ def setup_ir_remote(Remotetype,templates,mythhome,HostBlasterType):
                     logging.debug("    %s is a dir, skipping",filename)
                     continue
                 include_file("/etc/lircrc",filename)
+            files = mythhome + "/remotes/" + Remotetype + "/remote.run*"
+            logging.debug("    Using %s",files)
+            for filename in glob.glob(files):
+                # Ignore subfolders
+                if os.path.isdir (filename):
+                    logging.debug("    %s is a dir, skipping",filename)
+                    continue
+                include_file("/etc/remote.run",filename)
         else:
             #template dir
             files = templates + "/remotes/" + Remotetype + "/lircd*"
@@ -131,9 +141,17 @@ def setup_ir_remote(Remotetype,templates,mythhome,HostBlasterType):
                     logging.debug("    %s is a dir, skipping",filename)
                     continue
                 include_file("/etc/lircrc",filename)
+            files = templates + "/remotes/" + Remotetype + "/remote.run*"
+            logging.debug("    Using %s",files)
+            for filename in glob.glob(files):
+                # Ignore subfolders
+                if os.path.isdir (filename):
+                    logging.debug("    %s is a dir, skipping",filename)
+                    continue
+                include_file("/etc/remote.run",filename)
 
 
-        cmd =  "chmod 755 /etc/lircrc"
+        cmd =  "chmod 755 /etc/lircrc /etc/remote.run"
         mv_common.runcmd(cmd)
         mv_common.add_service("lircd")
 
@@ -365,4 +383,4 @@ def setup_ir(systemconfig, data_config):
     else:
         logging.debug("    LCD not defined")
     logging.info("__End IR\n")
-    return rc
\ No newline at end of file
+    return rc
-- 
cgit v0.12


From a923391ea01326947663693e8a1099fc8de5a3f3 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 10 Mar 2012 12:24:39 -0600
Subject: runit-scripts: add remotes service. refs #821

---
 abs/core/runit-scripts/PKGBUILD                    |   2 +-
 .../runitscripts/services/remotes/finish           |  21 ++++
 .../runitscripts/services/remotes/run              | 125 +++++++++++++++++++++
 3 files changed, 147 insertions(+), 1 deletion(-)
 create mode 100755 abs/core/runit-scripts/runitscripts/services/remotes/finish
 create mode 100755 abs/core/runit-scripts/runitscripts/services/remotes/run

diff --git a/abs/core/runit-scripts/PKGBUILD b/abs/core/runit-scripts/PKGBUILD
index b84f74d..7e0a71c 100755
--- a/abs/core/runit-scripts/PKGBUILD
+++ b/abs/core/runit-scripts/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=runit-scripts
 pkgver=2.1.1
-pkgrel=55
+pkgrel=56
 pkgdesc="collection of startup scripts for runit"
 url="http://smarden.org/runit/"
 license="BSD"
diff --git a/abs/core/runit-scripts/runitscripts/services/remotes/finish b/abs/core/runit-scripts/runitscripts/services/remotes/finish
new file mode 100755
index 0000000..ac04a33
--- /dev/null
+++ b/abs/core/runit-scripts/runitscripts/services/remotes/finish
@@ -0,0 +1,21 @@
+#!/bin/bash
+export TERM=linux
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /usr/MythVantage/bin/install_functions.sh
+
+killall -9 lircd 2>/dev/null
+rm -f /var/run/lirc*.pid
+[ -e /etc/sv/remotes/.runtime ] || mkdir -p /etc/sv/remotes/.runtime
+touch /etc/sv/remotes/.runtime/`date +%s`
+numfiles=`/usr/bin/file_time_offset.py   -s4 -d/etc/sv/remotes/.runtime `
+if [ $numfiles -gt 3 ]
+then
+	 rm -f /etc/sv/remotes/.runtime/* 2>/dev/null
+	 sv stop remotes
+	 printhl "    remotes is not able to start, disabling it"
+fi
+
+
+
+in_kernel_support "enable"
diff --git a/abs/core/runit-scripts/runitscripts/services/remotes/run b/abs/core/runit-scripts/runitscripts/services/remotes/run
new file mode 100755
index 0000000..d32b09e
--- /dev/null
+++ b/abs/core/runit-scripts/runitscripts/services/remotes/run
@@ -0,0 +1,125 @@
+#!/bin/bash
+
+exec 2>&1
+export TERM=linux
+
+. /etc/rc.conf
+. /etc/rc.d/functions
+. /usr/MythVantage/bin/install_functions.sh
+
+LOG=/tmp/remotes.log
+
+if [ -f $LOG ]
+then
+    rm -f $LOG
+fi
+
+
+
+
+
+#What is done in this file may not be enough to start your specific remote
+#If that is true of your remote place your remote startup commands in:
+# /etc/remotes.sh
+#Anything in that file will be used and the rest of this file is ignored
+
+if [ -f /etc/remotes.sh ]
+then
+    #program must not terminate.
+
+    stat_runit "Starting remotes from /etc/remotes.sh"
+
+    /etc/remotes.sh
+else
+    . /etc/systemconfig
+    stat_runit "Starting remotes"
+
+    [ -e /etc/sv/remotes/.runtime ] || mkdir -p /etc/sv/remotes/.runtime
+    [ -e /var/run/lirc ] || mkdir -p /var/run/lirc
+
+    num_lirc=`ls -la /dev/lirc[0-9] 2>/dev/null |wc -l `
+    num_lirc=$((num_lirc-1))
+
+    serial_port=""
+
+    if [ x$ReceiverType = xSerial ]
+    then
+        serial_port=$ReceiverSerialport
+    elif [ x$HostBlasterType = xSerial ]
+    then
+        serial_port=$HostSerialPort_blasterlirc
+    fi
+
+    if [ -n "$serial_port" ]
+    then
+        #/dev/ttyS0 (COM1), port 0x3f8, irq 4
+        #/dev/ttyS1 (COM2), port 0x2f8, irq 3
+        #/dev/ttyS2 (COM3), port 0x3e8, irq 4
+        #/dev/ttyS3 (COM4), port 0x2e8, irq 3
+
+        case $serial_port in
+        ttyS0)
+               FLAGS="io=0x3f8  irq=4"
+               ;;
+        ttyS1)
+               FLAGS="io=0x2f8  irq=3"
+               ;;
+        ttyS2)
+               FLAGS="io=0x3e8  irq=4"
+               ;;
+        ttyS3)
+               FLAGS="io=0x2e8  irq=3"
+               ;;
+        esac
+        /usr/bin/setserial /dev/$serial_port uart none
+        sleep 0.5
+        /sbin/modprobe lirc_serial $FLAGS
+        sleep 0.5
+    fi
+
+    if [ x$HostBlasterType = xCommandIR -o x$ReceiverType = xCommandIR ]
+    then
+        CMD="/usr/sbin/lircd -r -n  --driver=commandir"
+        printhl "   Using commandir"
+        $CMD >>$LOG 2>>$LOG
+        #echo $CMD
+    elif [ x$HostBlasterType = xiguanaIR-usb -o x$ReceiverType = xiguanaIR-usb ]
+    then
+        sv start igdaemon
+        CMD="/usr/sbin/lircd -r -n  --driver=iguanaIR"
+        printhl "       Using iguanaIR usb"
+        #echo $CMD
+        $CMD >>$LOG 2>>$LOG
+    elif [ x$ReceiverType = "xSiliconDust_HDHR" ]
+    then
+        # if using the SiliconDust_HDHR as an I/R Receiver
+        printhl "   Using SiliconDust on port 5000"
+        CMD="/usr/sbin/lircd -H udp -d 5000 -n"
+        exec $CMD >>$LOG 2>>$LOG
+    else
+        LASTCMD=""
+
+        for i in `seq 1 $num_lirc`
+        do
+            CMD="/usr/sbin/lircd -r -d /dev/lirc$i --output=/var/run/lirc/lircd$i --pidfile=/var/run/lircd$i.pid --listen=876$i"
+            printhl "   Device $i"
+            #echo $CMD
+            $CMD >>$LOG 2>>$LOG
+            LASTCMD="--connect=localhost:876$i   $LASTCMD    "
+        done
+
+        if [ -f /etc/remote.run ]
+        then
+            #program must not terminate.
+
+            stat_runit "Starting remotes from /etc/remote.run"
+
+            /etc/remote.run
+        else
+            in_kernel_support "disable"
+            LCMD="/usr/sbin/lircd -r -n -d /dev/lirc0 --output /var/run/lirc/lircd  $LASTCMD"
+            #echo $LCMD
+            exec $LCMD >>$LOG 2>>$LOG
+        fi
+    fi
+fi
-- 
cgit v0.12


From fa342e88317ed5d6b8db0de7f114392ff4175a31 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 10 Mar 2012 17:12:53 -0600
Subject: LinHES-config: mv_ir.py: change how remote.run is handled. refs #821

---
 abs/core/LinHES-config/PKGBUILD | 4 ++--
 abs/core/LinHES-config/mv_ir.py | 6 ++++--
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index 0c51ef0..f796971 100644
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=2.3
-pkgrel=62
+pkgrel=63
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
 depends=('bc' 'libstatgrab'  'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
@@ -125,7 +125,7 @@ md5sums=('64fad755c12f8eb12940e216e403354e'
          '5f3259afe031fda189edae41dd1458f0'
          'dc150c1e2c915a55a616d1af5bb1f6de'
          'b845de3e05c1734cce4b9ac5e8f1baaf'
-         'e7b94023461c52a692bfa67c647deedd'
+         '03d866e4dc287d13734e35f4ebe15edb'
          '5e69839659d65ddda35b8a9982dc29e9'
          '62b4ce94277c32f525db5c1480670acd'
          'ec6a9961e4d1b53ec1240c5979efff11'
diff --git a/abs/core/LinHES-config/mv_ir.py b/abs/core/LinHES-config/mv_ir.py
index a4c3bed..df6feb5 100755
--- a/abs/core/LinHES-config/mv_ir.py
+++ b/abs/core/LinHES-config/mv_ir.py
@@ -122,7 +122,8 @@ def setup_ir_remote(Remotetype,templates,mythhome,HostBlasterType):
                 if os.path.isdir (filename):
                     logging.debug("    %s is a dir, skipping",filename)
                     continue
-                include_file("/etc/remote.run",filename)
+                cmd = "cp %s /etc/remote.run" %filename
+                mv_common.runcmd(cmd)
         else:
             #template dir
             files = templates + "/remotes/" + Remotetype + "/lircd*"
@@ -148,7 +149,8 @@ def setup_ir_remote(Remotetype,templates,mythhome,HostBlasterType):
                 if os.path.isdir (filename):
                     logging.debug("    %s is a dir, skipping",filename)
                     continue
-                include_file("/etc/remote.run",filename)
+                cmd = "cp %s /etc/remote.run" %filename
+                mv_common.runcmd(cmd)
 
 
         cmd =  "chmod 755 /etc/lircrc /etc/remote.run"
-- 
cgit v0.12


From de5c9f58828088f5c009691b701ed28d75fa9dc6 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 10 Mar 2012 17:26:15 -0600
Subject: system-templates: remotes: add remote.run; add imon-mce; remove
 imon-pad; refs #651 refs #821

---
 abs/core/system-templates/PKGBUILD                 |   2 +-
 .../remotes/Dvico-Dual-Digital4-rev2/remote.run    |   3 +
 .../templates/remotes/dvico/remote.run             |   3 +
 .../templates/remotes/imon-mce/lircd.conf.imon     | 835 +++++++++++++++++++
 .../templates/remotes/imon-mce/lircrc              | 922 +++++++++++++++++++++
 .../templates/remotes/imon-mce/preview.jpg         | Bin 0 -> 35870 bytes
 .../templates/remotes/imon-mce/remote.run          |   4 +
 .../templates/remotes/imon-pad/lircd.conf          |  88 --
 .../templates/remotes/imon-pad/lircrc              | 240 ------
 .../templates/remotes/imon-pad/preview.jpg         | Bin 35870 -> 0 bytes
 .../templates/remotes/imon/remote.run              |   4 +
 11 files changed, 1772 insertions(+), 329 deletions(-)
 create mode 100644 abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/remote.run
 create mode 100644 abs/core/system-templates/templates/remotes/dvico/remote.run
 create mode 100755 abs/core/system-templates/templates/remotes/imon-mce/lircd.conf.imon
 create mode 100755 abs/core/system-templates/templates/remotes/imon-mce/lircrc
 create mode 100644 abs/core/system-templates/templates/remotes/imon-mce/preview.jpg
 create mode 100755 abs/core/system-templates/templates/remotes/imon-mce/remote.run
 delete mode 100644 abs/core/system-templates/templates/remotes/imon-pad/lircd.conf
 delete mode 100644 abs/core/system-templates/templates/remotes/imon-pad/lircrc
 delete mode 100644 abs/core/system-templates/templates/remotes/imon-pad/preview.jpg
 create mode 100755 abs/core/system-templates/templates/remotes/imon/remote.run

diff --git a/abs/core/system-templates/PKGBUILD b/abs/core/system-templates/PKGBUILD
index 4f2a035..8a1df44 100755
--- a/abs/core/system-templates/PKGBUILD
+++ b/abs/core/system-templates/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=system-templates
 pkgver=2.0
-pkgrel=10
+pkgrel=11
 conflicts=( )
 pkgdesc="Templates used for system configuration"
 depends=()
diff --git a/abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/remote.run b/abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/remote.run
new file mode 100644
index 0000000..1168696
--- /dev/null
+++ b/abs/core/system-templates/templates/remotes/Dvico-Dual-Digital4-rev2/remote.run
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+/usr/sbin/lircd -r -n -d /dev/remotes/dvicoDualDigital4 --driver=devinput  --output /var/run/lirc/lircd
diff --git a/abs/core/system-templates/templates/remotes/dvico/remote.run b/abs/core/system-templates/templates/remotes/dvico/remote.run
new file mode 100644
index 0000000..7721acd
--- /dev/null
+++ b/abs/core/system-templates/templates/remotes/dvico/remote.run
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+/usr/sbin/lircd -r -n -d /dev/remotes/dvicoIR --driver=dvico  --output /var/run/lirc/lircd
diff --git a/abs/core/system-templates/templates/remotes/imon-mce/lircd.conf.imon b/abs/core/system-templates/templates/remotes/imon-mce/lircd.conf.imon
new file mode 100755
index 0000000..9b97ab1
--- /dev/null
+++ b/abs/core/system-templates/templates/remotes/imon-mce/lircd.conf.imon
@@ -0,0 +1,835 @@
+# generated by devinput.sh
+
+begin remote
+
+  name  devinput
+  bits           16
+  eps            30
+  aeps          100
+
+  one             0     0
+  zero            0     0
+  pre_data_bits   16
+  pre_data       0x1
+  post_data_bits  32
+  post_data      0x1
+  gap          132799
+  toggle_bit_mask 0x0
+
+      begin codes
+          KEY_0                    0x0200
+          KEY_102ND                0x0056
+          KEY_1                    0x0201
+          KEY_2                    0x0202
+          KEY_3                    0x0203
+          KEY_4                    0x0204
+          KEY_5                    0x0205
+          KEY_6                    0x0206
+          KEY_7                    0x0207
+          KEY_8                    0x0208
+          KEY_9                    0x0209
+          KEY_A                    0x001E
+          KEY_AB                   0x0196
+          KEY_AGAIN                0x0081
+          KEY_ALTERASE             0x00DE
+          KEY_ANGLE                0x0173
+          KEY_APOSTROPHE           0x0028
+          KEY_ARCHIVE              0x0169
+          KEY_AUDIO                0x0188
+          KEY_AUX                  0x0186
+          KEY_B                    0x0030
+          KEY_BACK                 0x009E
+          KEY_BACKSLASH            0x002B
+          KEY_BACKSPACE            0x000E
+          KEY_BASSBOOST            0x00D1
+          KEY_BATTERY              0x00EC
+          KEY_BLUE                 0x0191
+          KEY_BOOKMARKS            0x009C
+          KEY_BREAK                0x019B
+          KEY_BRIGHTNESSDOWN       0x00E0
+          KEY_BRIGHTNESSUP         0x00E1
+          KEY_BRL_DOT1             0x01F1
+          KEY_BRL_DOT2             0x01F2
+          KEY_BRL_DOT3             0x01F3
+          KEY_BRL_DOT4             0x01F4
+          KEY_BRL_DOT5             0x01F5
+          KEY_BRL_DOT6             0x01F6
+          KEY_BRL_DOT7             0x01F7
+          KEY_BRL_DOT8             0x01F8
+          KEY_C                    0x002E
+          KEY_CALC                 0x008C
+          KEY_CALENDAR             0x018D
+          KEY_CAMERA               0x00D4
+          KEY_CANCEL               0x00DF
+          KEY_CAPSLOCK             0x003A
+          KEY_CD                   0x017F
+          KEY_CHANNEL              0x016B
+          KEY_CHANNELDOWN          0x0193
+          KEY_CHANNELUP            0x0192
+          KEY_CHAT                 0x00D8
+          KEY_CLEAR                0x0163
+          KEY_CLOSE                0x00CE
+          KEY_CLOSECD              0x00A0
+          KEY_COFFEE               0x0098
+          KEY_COMMA                0x0033
+          KEY_COMPOSE              0x007F
+          KEY_COMPUTER             0x009D
+          KEY_CONFIG               0x00AB
+          KEY_CONNECT              0x00DA
+          KEY_COPY                 0x0085
+          KEY_CUT                  0x0089
+          KEY_CYCLEWINDOWS         0x009A
+          KEY_D                    0x0020
+          KEY_DEL_EOL              0x01C0
+          KEY_DEL_EOS              0x01C1
+          KEY_DELETE               0x006F
+          KEY_DELETEFILE           0x0092
+          KEY_DEL_LINE             0x01C3
+          KEY_DIGITS               0x019D
+          KEY_DIRECTION            0x0099
+          KEY_DIRECTORY            0x018A
+          KEY_DOCUMENTS            0x00EB
+          KEY_DOT                  0x0034
+          KEY_DOWN                 0x006C
+          KEY_DVD                  0x0185
+          KEY_E                    0x0012
+          KEY_EDIT                 0x00B0
+          KEY_EJECTCD              0x00A1
+          KEY_EJECTCLOSECD         0x00A2
+          KEY_EMAIL                0x00D7
+          KEY_END                  0x006B
+          KEY_ENTER                0x001C
+          KEY_EPG                  0x016D
+          KEY_EQUAL                0x000D
+          KEY_ESC                  0x0001
+          KEY_EXIT                 0x00AE
+          KEY_F10                  0x0044
+          KEY_F11                  0x0057
+          KEY_F12                  0x0058
+          KEY_F13                  0x00B7
+          KEY_F14                  0x00B8
+          KEY_F15                  0x00B9
+          KEY_F1                   0x003B
+          KEY_F16                  0x00BA
+          KEY_F17                  0x00BB
+          KEY_F18                  0x00BC
+          KEY_F19                  0x00BD
+          KEY_F20                  0x00BE
+          KEY_F21                  0x00BF
+          KEY_F22                  0x00C0
+          KEY_F23                  0x00C1
+          KEY_F24                  0x00C2
+          KEY_F2                   0x003C
+          KEY_F                    0x0021
+          KEY_F3                   0x003D
+          KEY_F4                   0x003E
+          KEY_F5                   0x003F
+          KEY_F6                   0x0040
+          KEY_F7                   0x0041
+          KEY_F8                   0x0042
+          KEY_F9                   0x0043
+          KEY_FASTFORWARD          0x00D0
+          KEY_FAVORITES            0x016C
+          KEY_FILE                 0x0090
+          KEY_FINANCE              0x00DB
+          KEY_FIND                 0x0088
+          KEY_FIRST                0x0194
+          KEY_FN                   0x01D0
+          KEY_FN_1                 0x01DE
+          KEY_FN_2                 0x01DF
+          KEY_FN_B                 0x01E4
+          KEY_FN_D                 0x01E0
+          KEY_FN_E                 0x01E1
+          KEY_FN_ESC               0x01D1
+          KEY_FN_F                 0x01E2
+          KEY_FN_F10               0x01DB
+          KEY_FN_F1                0x01D2
+          KEY_FN_F11               0x01DC
+          KEY_FN_F12               0x01DD
+          KEY_FN_F2                0x01D3
+          KEY_FN_F3                0x01D4
+          KEY_FN_F4                0x01D5
+          KEY_FN_F5                0x01D6
+          KEY_FN_F6                0x01D7
+          KEY_FN_F7                0x01D8
+          KEY_FN_F8                0x01D9
+          KEY_FN_F9                0x01DA
+          KEY_FN_S                 0x01E3
+          KEY_FORWARD              0x009F
+          KEY_FORWARDMAIL          0x00E9
+          KEY_FRONT                0x0084
+          KEY_G                    0x0022
+          KEY_GOTO                 0x0162
+          KEY_GRAVE                0x0029
+          KEY_GREEN                0x018F
+          KEY_H                    0x0023
+          KEY_HANGEUL              0x007A
+          KEY_HANJA                0x007B
+          KEY_HELP                 0x008A
+          KEY_HENKAN               0x005C
+          KEY_HIRAGANA             0x005B
+          KEY_HOME                 0x0066
+          KEY_HOMEPAGE             0x00AC
+          KEY_HP                   0x00D3
+          KEY_I                    0x0017
+          KEY_INFO                 0x0166
+          KEY_INSERT               0x006E
+          KEY_INS_LINE             0x01C2
+          KEY_ISO                  0x00AA
+          KEY_J                    0x0024
+          KEY_K                    0x0025
+          KEY_KATAKANA             0x005A
+          KEY_KATAKANAHIRAGANA     0x005D
+          KEY_KBDILLUMDOWN         0x00E5
+          KEY_KBDILLUMTOGGLE       0x00E4
+          KEY_KBDILLUMUP           0x00E6
+          KEY_KEYBOARD             0x0176
+          KEY_KP0                  0x0052
+          KEY_KP1                  0x004F
+          KEY_KP2                  0x0050
+          KEY_KP3                  0x0051
+          KEY_KP4                  0x004B
+          KEY_KP5                  0x004C
+          KEY_KP6                  0x004D
+          KEY_KP7                  0x0047
+          KEY_KP8                  0x0048
+          KEY_KP9                  0x0049
+          KEY_KPASTERISK           0x0037
+          KEY_KPCOMMA              0x0079
+          KEY_KPDOT                0x0053
+          KEY_KPENTER              0x0060
+          KEY_KPEQUAL              0x0075
+          KEY_KPJPCOMMA            0x005F
+          KEY_KPLEFTPAREN          0x00B3
+          KEY_KPMINUS              0x004A
+          KEY_KPPLUS               0x004E
+          KEY_KPPLUSMINUS          0x0076
+          KEY_KPRIGHTPAREN         0x00B4
+          KEY_KPSLASH              0x0062
+          KEY_L                    0x0026
+          KEY_LANGUAGE             0x0170
+          KEY_LAST                 0x0195
+          KEY_LEFT                 0x0069
+          KEY_LEFTALT              0x0038
+          KEY_LEFTBRACE            0x001A
+          KEY_LEFTCTRL             0x001D
+          KEY_LEFTMETA             0x007D
+          KEY_LEFTSHIFT            0x002A
+          KEY_LINEFEED             0x0065
+          KEY_LIST                 0x018B
+          KEY_M                    0x0032
+          KEY_MACRO                0x0070
+          KEY_MAIL                 0x009B
+          KEY_MAX                  0x01FF
+          KEY_MEDIA                0x00E2
+          KEY_MEMO                 0x018C
+          KEY_MENU                 0x008B
+          KEY_MHP                  0x016F
+          KEY_MINUS                0x000C
+          KEY_MODE                 0x0175
+          KEY_MOVE                 0x00AF
+          KEY_MP3                  0x0187
+          KEY_MSDOS                0x0097
+          KEY_MUHENKAN             0x005E
+          KEY_MUTE                 0x0071
+          KEY_N                    0x0031
+          KEY_NEW                  0x00B5
+          KEY_NEXT                 0x0197
+          KEY_NEXTSONG             0x00A3
+          KEY_NUMLOCK              0x0045
+          KEY_O                    0x0018
+          KEY_OK                   0x0160
+          KEY_OPEN                 0x0086
+          KEY_OPTION               0x0165
+          KEY_P                    0x0019
+          KEY_PAGEDOWN             0x006D
+          KEY_PAGEUP               0x0068
+          KEY_PASTE                0x0087
+          KEY_PAUSE                0x0077
+          KEY_PAUSECD              0x00C9
+          KEY_PC                   0x0178
+          KEY_PHONE                0x00A9
+          KEY_PLAY                 0x00CF
+          KEY_PLAYCD               0x00C8
+          KEY_PLAYER               0x0183
+          KEY_PLAYPAUSE            0x00A4
+          KEY_NUMERIC_POUND        0x020B
+          KEY_POWER                0x0074
+          KEY_POWER2               0x0164
+          KEY_PREVIOUS             0x019C
+          KEY_PREVIOUSSONG         0x00A5
+          KEY_PRINT                0x00D2
+          KEY_PROG1                0x0094
+          KEY_PROG2                0x0095
+          KEY_PROG3                0x00CA
+          KEY_PROG4                0x00CB
+          KEY_PROGRAM              0x016A
+          KEY_PROPS                0x0082
+          KEY_PVR                  0x016E
+          KEY_Q                    0x0010
+          KEY_QUESTION             0x00D6
+          KEY_R                    0x0013
+          KEY_RADIO                0x0181
+          KEY_RECORD               0x00A7
+          KEY_RED                  0x018E
+          KEY_REDO                 0x00B6
+          KEY_REFRESH              0x00AD
+          KEY_REPLY                0x00E8
+          KEY_RESERVED             0x0000
+          KEY_RESTART              0x0198
+          KEY_REWIND               0x00A8
+          KEY_RIGHT                0x006A
+          KEY_RIGHTALT             0x0064
+          KEY_RIGHTBRACE           0x001B
+          KEY_RIGHTCTRL            0x0061
+          KEY_RIGHTMETA            0x007E
+          KEY_RIGHTSHIFT           0x0036
+          KEY_RO                   0x0059
+          KEY_S                    0x001F
+          KEY_SAT                  0x017D
+          KEY_SAT2                 0x017E
+          KEY_SAVE                 0x00EA
+          KEY_SCREEN               0x0177
+          KEY_SCROLLDOWN           0x00B2
+          KEY_SCROLLLOCK           0x0046
+          KEY_SCROLLUP             0x00B1
+          KEY_SEARCH               0x00D9
+          KEY_SELECT               0x0161
+          KEY_SEMICOLON            0x0027
+          KEY_SEND                 0x00E7
+          KEY_SENDFILE             0x0091
+          KEY_SETUP                0x008D
+          KEY_SHOP                 0x00DD
+          KEY_SHUFFLE              0x019A
+          KEY_SLASH                0x0035
+          KEY_SLEEP                0x008E
+          KEY_SLOW                 0x0199
+          KEY_SOUND                0x00D5
+          KEY_SPACE                0x0039
+          KEY_SPORT                0x00DC
+          KEY_STOP                 0x0080
+          KEY_STOPCD               0x00A6
+          KEY_SUBTITLE             0x0172
+          KEY_SUSPEND              0x00CD
+          KEY_SWITCHVIDEOMODE      0x00E3
+          KEY_SYSRQ                0x0063
+          KEY_T                    0x0014
+          KEY_TAB                  0x000F
+          KEY_TAPE                 0x0180
+          KEY_TEEN                 0x019E
+          KEY_TEXT                 0x0184
+          KEY_TIME                 0x0167
+          KEY_TITLE                0x0171
+          KEY_TUNER                0x0182
+          KEY_TV                   0x0179
+          KEY_TV2                  0x017A
+          KEY_TWEN                 0x019F
+          KEY_U                    0x0016
+          KEY_UNDO                 0x0083
+          KEY_UNKNOWN              0x00F0
+          KEY_UP                   0x0067
+          KEY_V                    0x002F
+          KEY_VCR                  0x017B
+          KEY_VCR2                 0x017C
+          KEY_VENDOR               0x0168
+          KEY_VIDEO                0x0189
+          KEY_VOLUMEDOWN           0x0072
+          KEY_VOLUMEUP             0x0073
+          KEY_W                    0x0011
+          KEY_WAKEUP               0x008F
+          KEY_WWW                  0x0096
+          KEY_X                    0x002D
+          KEY_XFER                 0x0093
+          KEY_Y                    0x0015
+          KEY_YELLOW               0x0190
+          KEY_YEN                  0x007C
+          KEY_Z                    0x002C
+          KEY_ZENKAKUHANKAKU       0x0055
+          KEY_ZOOM                 0x0174
+          BTN_0                    0x0100
+          BTN_1                    0x0101
+          BTN_2                    0x0102
+          BTN_3                    0x0103
+          BTN_4                    0x0104
+          BTN_5                    0x0105
+          BTN_6                    0x0106
+          BTN_7                    0x0107
+          BTN_8                    0x0108
+          BTN_9                    0x0109
+          BTN_A                    0x0130
+          BTN_B                    0x0131
+          BTN_BACK                 0x0116
+          BTN_BASE                 0x0126
+          BTN_BASE2                0x0127
+          BTN_BASE3                0x0128
+          BTN_BASE4                0x0129
+          BTN_BASE5                0x012A
+          BTN_BASE6                0x012B
+          BTN_C                    0x0132
+          BTN_DEAD                 0x012F
+          BTN_DIGI                 0x0140
+          BTN_EXTRA                0x0114
+          BTN_FORWARD              0x0115
+          BTN_GAMEPAD              0x0130
+          BTN_GEAR_DOWN            0x0150
+          BTN_GEAR_UP              0x0151
+          BTN_JOYSTICK             0x0120
+          BTN_LEFT                 0x0110
+          BTN_MIDDLE               0x0112
+          BTN_MISC                 0x0100
+          BTN_MODE                 0x013C
+          BTN_MOUSE                0x0110
+          BTN_PINKIE               0x0125
+          BTN_RIGHT                0x0111
+          BTN_SELECT               0x013A
+          BTN_SIDE                 0x0113
+          BTN_START                0x013B
+          BTN_STYLUS               0x014B
+          BTN_STYLUS2              0x014C
+          BTN_TASK                 0x0117
+          BTN_THUMB                0x0121
+          BTN_THUMB2               0x0122
+          BTN_THUMBL               0x013D
+          BTN_THUMBR               0x013E
+          BTN_TL                   0x0136
+          BTN_TL2                  0x0138
+          BTN_TOOL_AIRBRUSH        0x0144
+          BTN_TOOL_BRUSH           0x0142
+          BTN_TOOL_DOUBLETAP       0x014D
+          BTN_TOOL_FINGER          0x0145
+          BTN_TOOL_LENS            0x0147
+          BTN_TOOL_MOUSE           0x0146
+          BTN_TOOL_PEN             0x0140
+          BTN_TOOL_PENCIL          0x0143
+          BTN_TOOL_RUBBER          0x0141
+          BTN_TOOL_TRIPLETAP       0x014E
+          BTN_TOP                  0x0123
+          BTN_TOP2                 0x0124
+          BTN_TOUCH                0x014A
+          BTN_TR                   0x0137
+          BTN_TR2                  0x0139
+          BTN_TRIGGER              0x0120
+          BTN_WHEEL                0x0150
+          BTN_X                    0x0133
+          BTN_Y                    0x0134
+          BTN_Z                    0x0135
+      end codes
+
+end remote
+
+# generated by devinput.sh (obsolete 32 bit version)
+begin remote
+
+  name  devinput
+  bits           16
+  eps            30
+  aeps          100
+
+  one             0     0
+  zero            0     0
+  pre_data_bits   16
+  pre_data       0x8001
+  gap          132799
+  toggle_bit_mask 0x0
+
+      begin codes
+          KEY_0                    0x0200
+          KEY_102ND                0x0056
+          KEY_1                    0x0201
+          KEY_2                    0x0202
+          KEY_3                    0x0203
+          KEY_4                    0x0204
+          KEY_5                    0x0205
+          KEY_6                    0x0206
+          KEY_7                    0x0207
+          KEY_8                    0x0208
+          KEY_9                    0x0209
+          KEY_A                    0x001E
+          KEY_AB                   0x0196
+          KEY_AGAIN                0x0081
+          KEY_ALTERASE             0x00DE
+          KEY_ANGLE                0x0173
+          KEY_APOSTROPHE           0x0028
+          KEY_ARCHIVE              0x0169
+          KEY_AUDIO                0x0188
+          KEY_AUX                  0x0186
+          KEY_B                    0x0030
+          KEY_BACK                 0x009E
+          KEY_BACKSLASH            0x002B
+          KEY_BACKSPACE            0x000E
+          KEY_BASSBOOST            0x00D1
+          KEY_BATTERY              0x00EC
+          KEY_BLUE                 0x0191
+          KEY_BOOKMARKS            0x009C
+          KEY_BREAK                0x019B
+          KEY_BRIGHTNESSDOWN       0x00E0
+          KEY_BRIGHTNESSUP         0x00E1
+          KEY_BRL_DOT1             0x01F1
+          KEY_BRL_DOT2             0x01F2
+          KEY_BRL_DOT3             0x01F3
+          KEY_BRL_DOT4             0x01F4
+          KEY_BRL_DOT5             0x01F5
+          KEY_BRL_DOT6             0x01F6
+          KEY_BRL_DOT7             0x01F7
+          KEY_BRL_DOT8             0x01F8
+          KEY_C                    0x002E
+          KEY_CALC                 0x008C
+          KEY_CALENDAR             0x018D
+          KEY_CAMERA               0x00D4
+          KEY_CANCEL               0x00DF
+          KEY_CAPSLOCK             0x003A
+          KEY_CD                   0x017F
+          KEY_CHANNEL              0x016B
+          KEY_CHANNELDOWN          0x0193
+          KEY_CHANNELUP            0x0192
+          KEY_CHAT                 0x00D8
+          KEY_CLEAR                0x0163
+          KEY_CLOSE                0x00CE
+          KEY_CLOSECD              0x00A0
+          KEY_COFFEE               0x0098
+          KEY_COMMA                0x0033
+          KEY_COMPOSE              0x007F
+          KEY_COMPUTER             0x009D
+          KEY_CONFIG               0x00AB
+          KEY_CONNECT              0x00DA
+          KEY_COPY                 0x0085
+          KEY_CUT                  0x0089
+          KEY_CYCLEWINDOWS         0x009A
+          KEY_D                    0x0020
+          KEY_DEL_EOL              0x01C0
+          KEY_DEL_EOS              0x01C1
+          KEY_DELETE               0x006F
+          KEY_DELETEFILE           0x0092
+          KEY_DEL_LINE             0x01C3
+          KEY_DIGITS               0x019D
+          KEY_DIRECTION            0x0099
+          KEY_DIRECTORY            0x018A
+          KEY_DOCUMENTS            0x00EB
+          KEY_DOT                  0x0034
+          KEY_DOWN                 0x006C
+          KEY_DVD                  0x0185
+          KEY_E                    0x0012
+          KEY_EDIT                 0x00B0
+          KEY_EJECTCD              0x00A1
+          KEY_EJECTCLOSECD         0x00A2
+          KEY_EMAIL                0x00D7
+          KEY_END                  0x006B
+          KEY_ENTER                0x001C
+          KEY_EPG                  0x016D
+          KEY_EQUAL                0x000D
+          KEY_ESC                  0x0001
+          KEY_EXIT                 0x00AE
+          KEY_F10                  0x0044
+          KEY_F11                  0x0057
+          KEY_F12                  0x0058
+          KEY_F13                  0x00B7
+          KEY_F14                  0x00B8
+          KEY_F15                  0x00B9
+          KEY_F1                   0x003B
+          KEY_F16                  0x00BA
+          KEY_F17                  0x00BB
+          KEY_F18                  0x00BC
+          KEY_F19                  0x00BD
+          KEY_F20                  0x00BE
+          KEY_F21                  0x00BF
+          KEY_F22                  0x00C0
+          KEY_F23                  0x00C1
+          KEY_F24                  0x00C2
+          KEY_F2                   0x003C
+          KEY_F                    0x0021
+          KEY_F3                   0x003D
+          KEY_F4                   0x003E
+          KEY_F5                   0x003F
+          KEY_F6                   0x0040
+          KEY_F7                   0x0041
+          KEY_F8                   0x0042
+          KEY_F9                   0x0043
+          KEY_FASTFORWARD          0x00D0
+          KEY_FAVORITES            0x016C
+          KEY_FILE                 0x0090
+          KEY_FINANCE              0x00DB
+          KEY_FIND                 0x0088
+          KEY_FIRST                0x0194
+          KEY_FN                   0x01D0
+          KEY_FN_1                 0x01DE
+          KEY_FN_2                 0x01DF
+          KEY_FN_B                 0x01E4
+          KEY_FN_D                 0x01E0
+          KEY_FN_E                 0x01E1
+          KEY_FN_ESC               0x01D1
+          KEY_FN_F                 0x01E2
+          KEY_FN_F10               0x01DB
+          KEY_FN_F1                0x01D2
+          KEY_FN_F11               0x01DC
+          KEY_FN_F12               0x01DD
+          KEY_FN_F2                0x01D3
+          KEY_FN_F3                0x01D4
+          KEY_FN_F4                0x01D5
+          KEY_FN_F5                0x01D6
+          KEY_FN_F6                0x01D7
+          KEY_FN_F7                0x01D8
+          KEY_FN_F8                0x01D9
+          KEY_FN_F9                0x01DA
+          KEY_FN_S                 0x01E3
+          KEY_FORWARD              0x009F
+          KEY_FORWARDMAIL          0x00E9
+          KEY_FRONT                0x0084
+          KEY_G                    0x0022
+          KEY_GOTO                 0x0162
+          KEY_GRAVE                0x0029
+          KEY_GREEN                0x018F
+          KEY_H                    0x0023
+          KEY_HANGEUL              0x007A
+          KEY_HANJA                0x007B
+          KEY_HELP                 0x008A
+          KEY_HENKAN               0x005C
+          KEY_HIRAGANA             0x005B
+          KEY_HOME                 0x0066
+          KEY_HOMEPAGE             0x00AC
+          KEY_HP                   0x00D3
+          KEY_I                    0x0017
+          KEY_INFO                 0x0166
+          KEY_INSERT               0x006E
+          KEY_INS_LINE             0x01C2
+          KEY_ISO                  0x00AA
+          KEY_J                    0x0024
+          KEY_K                    0x0025
+          KEY_KATAKANA             0x005A
+          KEY_KATAKANAHIRAGANA     0x005D
+          KEY_KBDILLUMDOWN         0x00E5
+          KEY_KBDILLUMTOGGLE       0x00E4
+          KEY_KBDILLUMUP           0x00E6
+          KEY_KEYBOARD             0x0176
+          KEY_KP0                  0x0052
+          KEY_KP1                  0x004F
+          KEY_KP2                  0x0050
+          KEY_KP3                  0x0051
+          KEY_KP4                  0x004B
+          KEY_KP5                  0x004C
+          KEY_KP6                  0x004D
+          KEY_KP7                  0x0047
+          KEY_KP8                  0x0048
+          KEY_KP9                  0x0049
+          KEY_KPASTERISK           0x0037
+          KEY_KPCOMMA              0x0079
+          KEY_KPDOT                0x0053
+          KEY_KPENTER              0x0060
+          KEY_KPEQUAL              0x0075
+          KEY_KPJPCOMMA            0x005F
+          KEY_KPLEFTPAREN          0x00B3
+          KEY_KPMINUS              0x004A
+          KEY_KPPLUS               0x004E
+          KEY_KPPLUSMINUS          0x0076
+          KEY_KPRIGHTPAREN         0x00B4
+          KEY_KPSLASH              0x0062
+          KEY_L                    0x0026
+          KEY_LANGUAGE             0x0170
+          KEY_LAST                 0x0195
+          KEY_LEFT                 0x0069
+          KEY_LEFTALT              0x0038
+          KEY_LEFTBRACE            0x001A
+          KEY_LEFTCTRL             0x001D
+          KEY_LEFTMETA             0x007D
+          KEY_LEFTSHIFT            0x002A
+          KEY_LINEFEED             0x0065
+          KEY_LIST                 0x018B
+          KEY_M                    0x0032
+          KEY_MACRO                0x0070
+          KEY_MAIL                 0x009B
+          KEY_MAX                  0x01FF
+          KEY_MEDIA                0x00E2
+          KEY_MEMO                 0x018C
+          KEY_MENU                 0x008B
+          KEY_MHP                  0x016F
+          KEY_MINUS                0x000C
+          KEY_MODE                 0x0175
+          KEY_MOVE                 0x00AF
+          KEY_MP3                  0x0187
+          KEY_MSDOS                0x0097
+          KEY_MUHENKAN             0x005E
+          KEY_MUTE                 0x0071
+          KEY_N                    0x0031
+          KEY_NEW                  0x00B5
+          KEY_NEXT                 0x0197
+          KEY_NEXTSONG             0x00A3
+          KEY_NUMLOCK              0x0045
+          KEY_NUMERIC_POUND        0x020B
+          KEY_O                    0x0018
+          KEY_OK                   0x0160
+          KEY_OPEN                 0x0086
+          KEY_OPTION               0x0165
+          KEY_P                    0x0019
+          KEY_PAGEDOWN             0x006D
+          KEY_PAGEUP               0x0068
+          KEY_PASTE                0x0087
+          KEY_PAUSE                0x0077
+          KEY_PAUSECD              0x00C9
+          KEY_PC                   0x0178
+          KEY_PHONE                0x00A9
+          KEY_PLAY                 0x00CF
+          KEY_PLAYCD               0x00C8
+          KEY_PLAYER               0x0183
+          KEY_PLAYPAUSE            0x00A4
+          KEY_POWER                0x0074
+          KEY_POWER2               0x0164
+          KEY_PREVIOUS             0x019C
+          KEY_PREVIOUSSONG         0x00A5
+          KEY_PRINT                0x00D2
+          KEY_PROG1                0x0094
+          KEY_PROG2                0x0095
+          KEY_PROG3                0x00CA
+          KEY_PROG4                0x00CB
+          KEY_PROGRAM              0x016A
+          KEY_PROPS                0x0082
+          KEY_PVR                  0x016E
+          KEY_Q                    0x0010
+          KEY_QUESTION             0x00D6
+          KEY_R                    0x0013
+          KEY_RADIO                0x0181
+          KEY_RECORD               0x00A7
+          KEY_RED                  0x018E
+          KEY_REDO                 0x00B6
+          KEY_REFRESH              0x00AD
+          KEY_REPLY                0x00E8
+          KEY_RESERVED             0x0000
+          KEY_RESTART              0x0198
+          KEY_REWIND               0x00A8
+          KEY_RIGHT                0x006A
+          KEY_RIGHTALT             0x0064
+          KEY_RIGHTBRACE           0x001B
+          KEY_RIGHTCTRL            0x0061
+          KEY_RIGHTMETA            0x007E
+          KEY_RIGHTSHIFT           0x0036
+          KEY_RO                   0x0059
+          KEY_S                    0x001F
+          KEY_SAT                  0x017D
+          KEY_SAT2                 0x017E
+          KEY_SAVE                 0x00EA
+          KEY_SCREEN               0x0177
+          KEY_SCROLLDOWN           0x00B2
+          KEY_SCROLLLOCK           0x0046
+          KEY_SCROLLUP             0x00B1
+          KEY_SEARCH               0x00D9
+          KEY_SELECT               0x0161
+          KEY_SEMICOLON            0x0027
+          KEY_SEND                 0x00E7
+          KEY_SENDFILE             0x0091
+          KEY_SETUP                0x008D
+          KEY_SHOP                 0x00DD
+          KEY_SHUFFLE              0x019A
+          KEY_SLASH                0x0035
+          KEY_SLEEP                0x008E
+          KEY_SLOW                 0x0199
+          KEY_SOUND                0x00D5
+          KEY_SPACE                0x0039
+          KEY_SPORT                0x00DC
+          KEY_STOP                 0x0080
+          KEY_STOPCD               0x00A6
+          KEY_SUBTITLE             0x0172
+          KEY_SUSPEND              0x00CD
+          KEY_SWITCHVIDEOMODE      0x00E3
+          KEY_SYSRQ                0x0063
+          KEY_T                    0x0014
+          KEY_TAB                  0x000F
+          KEY_TAPE                 0x0180
+          KEY_TEEN                 0x019E
+          KEY_TEXT                 0x0184
+          KEY_TIME                 0x0167
+          KEY_TITLE                0x0171
+          KEY_TUNER                0x0182
+          KEY_TV                   0x0179
+          KEY_TV2                  0x017A
+          KEY_TWEN                 0x019F
+          KEY_U                    0x0016
+          KEY_UNDO                 0x0083
+          KEY_UNKNOWN              0x00F0
+          KEY_UP                   0x0067
+          KEY_V                    0x002F
+          KEY_VCR                  0x017B
+          KEY_VCR2                 0x017C
+          KEY_VENDOR               0x0168
+          KEY_VIDEO                0x0189
+          KEY_VOLUMEDOWN           0x0072
+          KEY_VOLUMEUP             0x0073
+          KEY_W                    0x0011
+          KEY_WAKEUP               0x008F
+          KEY_WWW                  0x0096
+          KEY_X                    0x002D
+          KEY_XFER                 0x0093
+          KEY_Y                    0x0015
+          KEY_YELLOW               0x0190
+          KEY_YEN                  0x007C
+          KEY_Z                    0x002C
+          KEY_ZENKAKUHANKAKU       0x0055
+          KEY_ZOOM                 0x0174
+          BTN_0                    0x0100
+          BTN_1                    0x0101
+          BTN_2                    0x0102
+          BTN_3                    0x0103
+          BTN_4                    0x0104
+          BTN_5                    0x0105
+          BTN_6                    0x0106
+          BTN_7                    0x0107
+          BTN_8                    0x0108
+          BTN_9                    0x0109
+          BTN_A                    0x0130
+          BTN_B                    0x0131
+          BTN_BACK                 0x0116
+          BTN_BASE                 0x0126
+          BTN_BASE2                0x0127
+          BTN_BASE3                0x0128
+          BTN_BASE4                0x0129
+          BTN_BASE5                0x012A
+          BTN_BASE6                0x012B
+          BTN_C                    0x0132
+          BTN_DEAD                 0x012F
+          BTN_DIGI                 0x0140
+          BTN_EXTRA                0x0114
+          BTN_FORWARD              0x0115
+          BTN_GAMEPAD              0x0130
+          BTN_GEAR_DOWN            0x0150
+          BTN_GEAR_UP              0x0151
+          BTN_JOYSTICK             0x0120
+          BTN_LEFT                 0x0110
+          BTN_MIDDLE               0x0112
+          BTN_MISC                 0x0100
+          BTN_MODE                 0x013C
+          BTN_MOUSE                0x0110
+          BTN_PINKIE               0x0125
+          BTN_RIGHT                0x0111
+          BTN_SELECT               0x013A
+          BTN_SIDE                 0x0113
+          BTN_START                0x013B
+          BTN_STYLUS               0x014B
+          BTN_STYLUS2              0x014C
+          BTN_TASK                 0x0117
+          BTN_THUMB                0x0121
+          BTN_THUMB2               0x0122
+          BTN_THUMBL               0x013D
+          BTN_THUMBR               0x013E
+          BTN_TL                   0x0136
+          BTN_TL2                  0x0138
+          BTN_TOOL_AIRBRUSH        0x0144
+          BTN_TOOL_BRUSH           0x0142
+          BTN_TOOL_DOUBLETAP       0x014D
+          BTN_TOOL_FINGER          0x0145
+          BTN_TOOL_LENS            0x0147
+          BTN_TOOL_MOUSE           0x0146
+          BTN_TOOL_PEN             0x0140
+          BTN_TOOL_PENCIL          0x0143
+          BTN_TOOL_RUBBER          0x0141
+          BTN_TOOL_TRIPLETAP       0x014E
+          BTN_TOP                  0x0123
+          BTN_TOP2                 0x0124
+          BTN_TOUCH                0x014A
+          BTN_TR                   0x0137
+          BTN_TR2                  0x0139
+          BTN_TRIGGER              0x0120
+          BTN_WHEEL                0x0150
+          BTN_X                    0x0133
+          BTN_Y                    0x0134
+          BTN_Z                    0x0135
+      end codes
+
+end remote
+
diff --git a/abs/core/system-templates/templates/remotes/imon-mce/lircrc b/abs/core/system-templates/templates/remotes/imon-mce/lircrc
new file mode 100755
index 0000000..f16bfc3
--- /dev/null
+++ b/abs/core/system-templates/templates/remotes/imon-mce/lircrc
@@ -0,0 +1,922 @@
+# /home/mythtv/.mythtv/lircrc
+#
+# Media Center Edition Remote Control and Remote Control Keys on Media Center Keyboard
+########################################################################################
+# For use with the USB MCE ir receiver
+# MythTV LIRC config file for the mceusb2 or lirc_mod_mce module
+
+# Info about lircrc statment
+#begin
+#       prog    = ...     Program controlled, irxevent, irexec, mythtv, mplayer, xine, or others
+#       remote  = ...     mceusb, or what ever you happen to have or want to call it
+#       button  = ...      remote keys names from your lircd.conf file
+#       repeat  = ...     repeat = 2 is fast, repeat = 4 is slower
+#       delay   = ...     delay before repeat, 1 is short, 4 is longer
+#       config  = ...     output key presses to key bindings editor
+#       mode    = ...
+#       flags   = ...
+#end
+
+
+# Updated January 30th 2008 BAK
+# for the Knoppmyth project
+
+######################################################## irexec ####################
+# the lirc irexec program must be running for this section
+
+# Will perform a complete shutdown
+#begin
+#       prog = irexec
+#       button = Power
+#       config =  /usr/bin/sudo halt
+#end
+
+# Teletext = used as power down button
+begin
+       prog = irexec
+       button = KEY_SUBTITLE
+       config =  /usr/bin/sudo halt
+#       config = sudo /sbin/shutdown -h -t 0 now
+end
+
+
+#
+################################################ Mythtv Section ####################
+# MythTV Key Binding Editor     location
+# Mythtv Menu >>Utilities / Setup >>Edit Keys
+# Key Bindings can also be found in Myth Web
+
+# Record
+begin
+       prog = mythtv
+       button = KEY_RECORD
+       config = R
+end
+
+# Stop
+begin
+       prog = mythtv
+       button = KEY_STOP
+       config = Esc
+end
+
+# Pause
+begin
+       prog = mythtv
+       button = KEY_PAUSE
+       config = P
+end
+
+# Rewind (while viewing)
+begin
+       prog = mythtv
+       button = KEY_REWIND
+       repeat = 0
+       delay   = 1
+       config = <
+end
+
+# Fast forward (while viewing)
+begin
+       prog = mythtv
+       button = KEY_FASTFORWARD
+       repeat = 0
+       delay   = 1
+       config = >
+end
+
+# Play
+begin
+       prog = mythtv
+       button = KEY_PLAY
+       config = L
+end
+
+# Skip backward (1 min default)
+begin
+       prog = mythtv
+       button = KEY_PREVIOUS
+       repeat = 4
+       delay   = 4
+       config = PgUp
+end
+
+# Skip forward (1 min default)
+begin
+       prog = mythtv
+       button = KEY_NEXT
+       repeat = 4
+       delay   = 4
+       config = PgDown
+end
+
+#<><><><><><><><><><><> Mythtv Control <><><><>
+
+# Escape/Exit/Back
+begin
+       prog = mythtv
+       button = KEY_EXIT
+       config = Esc
+end
+
+# Bring up OSD info
+begin
+       prog = mythtv
+       button = KEY_INFO
+       config = I
+end
+
+begin
+       prog = mythtv
+       button = KEY_LEFT
+       repeat = 3
+       delay   = 4
+       config = Left
+end
+
+begin
+       prog = mythtv
+       button = KEY_RIGHT
+       repeat = 3
+       delay   = 4
+       config = Right
+end
+
+begin
+       prog = mythtv
+       button = KEY_UP
+       repeat = 3
+       delay   = 4
+       config = Up
+end
+
+begin
+       prog = mythtv
+       button = KEY_DOWN
+       repeat = 3
+       delay   = 4
+       config = Down
+end
+
+# OK/Select
+begin
+       prog = mythtv
+       button = KEY_OK
+       config = Return
+end
+
+# The Start Button is really just a Menu key
+begin
+       prog = mythtv
+       button = KEY_MEDIA
+       config = M
+end
+
+#<><><><><><><><><><><><><><><>
+
+# Volume-Up
+begin
+       prog = mythtv
+       button = KEY_VOLUMEUP
+       repeat = 2
+       config = ]
+end
+
+# Volume-Down
+begin
+       prog = mythtv
+       button = VOLUMEDOWN
+       repeat = 2
+       config = [
+end
+
+# Mute
+begin
+       prog = mythtv
+       button = KEY_MUTE
+       config = |
+end
+
+# Channel Up
+begin
+       prog = mythtv
+       button = KEY_CHANNELUP
+       repeat = 3
+#       delay   = 1
+       config = Up
+end
+
+# Channel Down
+begin
+       prog = mythtv
+       button = CHANNELDOWN
+       config = Down
+       repeat = 3
+#       delay   = 1
+end
+
+# Numbers 0-9 <><><><><><><><><><><>
+
+begin
+       prog = mythtv
+       button = KEY_1
+#       repeat = 2
+       config = 1
+end
+
+begin
+       prog = mythtv
+       button = KEY_2
+#       repeat = 2
+       config = 2
+end
+
+begin
+       prog = mythtv
+       button = KEY_3
+#       repeat = 2
+       config = 3
+end
+
+begin
+       prog = mythtv
+       button = KEY_4
+#       repeat = 2
+       config = 4
+end
+
+begin
+       prog = mythtv
+       button = KEY_5
+#       repeat = 2
+       config = 5
+end
+
+begin
+       prog = mythtv
+       button = KEY_6
+#       repeat = 2
+       config = 6
+end
+
+begin
+       prog = mythtv
+       button = KEY_7
+#       repeat = 2
+       config = 7
+end
+
+begin
+       prog = mythtv
+       button = KEY_8
+#       repeat = 2
+       config = 8
+End
+
+begin
+       prog = mythtv
+       button = KEY_9
+#       repeat = 2
+       config = 9
+end
+
+begin
+       prog = mythtv
+       button = KEY_0
+#       repeat = 2
+       config = 0
+end
+
+# Use Zoom for Aspect Ratio
+begin
+       prog = mythtv
+       button = KEY_ZOOM
+       config = W
+end
+
+#<><><><><><><><><><><><><><><><><><><><>
+# Seek to previous commercial cut point
+# or remove all cut points from the Editing Cutlist
+begin
+       prog = mythtv
+       button = KEY_BLUE
+       config = Q
+end
+
+# Seek to next commercial cut point
+# or add commericial cut points to the Editing Cutlist
+begin
+       prog = mythtv
+       button = KEY_NUMERIC_POUND
+       config = Z
+end
+
+# Brings up the delete box
+begin
+       prog = mythtv
+       button = KEY_DELETE
+       repeat = 0
+       config = D
+end
+
+# Toggle Editing Cutlist on or off
+begin
+       prog = mythtv
+       button = KEY_ENTER
+       repeat = 0
+       config = E
+end
+
+#<><><><><><><><> Additional Remote Commands <><><><><><><><>
+# All buttons in this section must be configured using
+# MythTV's KeyBindings JumpPoints editor.
+# >>> Utilities/ Setup >>> Edit Keys >>> JumpPoints >>>
+
+# Listen to Myth Music
+begin
+       prog = mythtv
+       button = KEY_AUDIO
+       config = Ctrl+T
+end
+
+# at this time connects to MythStreem
+begin
+       prog = mythtv
+       button = KEY_RADIO
+       config = Ctrl+Alt+S
+end
+
+# View Pictures
+begin
+       prog = mythtv
+       button = KEY_CAMERA
+       config = Ctrl+G
+end
+
+# Watch Videos
+begin
+       prog = mythtv
+       button = KEY_VIDEO
+       config = Ctrl+V
+end
+
+# Watch Live TV with Live TV Guide open
+begin
+       prog = mythtv
+       button = KEY_TV
+       config = Ctrl+S
+end
+
+# Watch Live TV
+begin
+       prog = mythtv
+       button = KEY_GREEN
+       config = Ctrl+Alt+L
+end
+
+# Recorded TV Programs
+begin
+       prog = mythtv
+       button = KEY_PVR
+       config = Ctrl+R
+end
+
+# Program Guide
+begin
+       prog = mythtv
+       button = KEY_EPG
+       config = Ctrl+Alt+G
+end
+
+# Play DVD
+# There must be a disk in the DVD drive or it dos nothing
+begin
+       prog = mythtv
+       button = KEY_DVD
+       config = Ctrl+Alt+D
+end
+
+# unused key
+#begin
+#       prog = mythtv
+#       button = Messenger
+#       config = Ctrl+Alt+A
+#end
+
+# <><><><><><><><><><><><><> Teletext Buttons <><><><><><><><><><><>
+
+# Teletext = Show interactive MHEG screens
+#begin
+#       prog = mythtv
+#       button = Teltext
+#       config = F7
+#end
+
+# Red = Red button for interactive screens.
+begin
+       prog = mythtv
+       button = KEY_RED
+       config = F2
+end
+
+# Green = Green button for interactive screens.
+begin
+       prog = mythtv
+       button = KEY_GREEN
+       config = F3
+end
+
+# Yellow = Yellow button for interactive screens.
+begin
+       prog = mythtv
+       button = KEY_YELLOW
+       config = F4
+end
+
+# Blue = Blue button for interactive screens.
+begin
+       prog = mythtv
+       button = KEY_BLUE
+       config = F5
+end
+#
+#
+######################################################################### MPlayer Section #####
+# "mplayer -input keylist" Prints all keys that can be bound to commands.
+# "mplayer -input cmdlist" Prints all commands that can be bound to keys
+# "man mplayer" Prints documentation for MPlayer
+
+# Show OSD
+begin
+       prog = mplayer
+       button = KEY_OK
+       config = osd
+end
+
+# Pause playback
+begin
+       prog = mplayer
+       button = KEY_PAUSE
+       config = pause
+end
+
+# If paused, resume playing
+begin
+       prog = mplayer
+       button = KEY_PLAY
+       config = pause
+end
+
+# Stop playback and exit
+begin
+       prog = mplayer
+       button = KEY_STOP
+       config = q
+end
+
+# Exit playback
+begin
+       prog = mplayer
+       button = KEY_EXIT
+       config = q
+end
+
+# Subtitle 
+begin
+       prog = mplayer
+       button = KEY_TITLE
+       config = sub_visibility
+end
+
+# Subtitle language 
+begin
+       prog = mplayer
+#       button = Language
+       button = KEY_BLUE
+       config = vobsub_lang
+end
+
+# Audio language 
+begin
+       prog = mplayer
+       button = KEY_LANGUAGE
+       config = switch_audio
+end
+
+# Volume-Up
+begin
+       prog = mplayer
+       button = KEY_VOLUMEUP
+       repeat = 2
+       config = volume +1
+end
+
+# Volume-Down
+begin
+       prog = mplayer
+       button = KEY_VOLUMEDOWN
+       repeat = 2
+       config = volume -1
+end
+
+# Mute
+begin
+       prog = mplayer
+       button = KEY_MUTE
+       config = mute
+end
+
+# Seek back 60 seconds
+begin
+       prog = mplayer
+       button = KEY_LEFT
+       repeat = 2
+       config = seek -60
+end
+
+# Seek forward 60 seconds
+begin
+       prog = mplayer
+       button = KEY_RIGHT
+       repeat = 2
+       config = seek +60
+end
+
+# Seek back 10 seconds
+begin
+       prog = mplayer
+       button = KEY_REWIND
+       repeat = 2
+       config = seek -10
+end
+
+# Seek forward 30 seconds
+begin
+       prog = mplayer
+       button = KEY_FASTFORWARD
+       repeat = 2
+       config = seek +30
+end
+
+# Quit
+begin
+       prog = mplayer
+       button = KEY_EXIT
+       config = quit
+end
+
+# Seek forward 10 minutes
+begin
+       prog = mplayer
+       button = KEY_NEXT
+       repeat = 2
+       config = seek +600
+end
+
+# Seek backward 10 minutes
+begin
+       prog = mplayer
+       button = KEY_PREVIOUS
+       repeat = 2
+       config = seek -600
+end
+
+# increase brightness
+begin
+       button = KEY_CHANNELUP
+       prog   = mplayer
+       repeat = 2
+       config = brightness +1
+end
+
+# decrease brightness
+begin
+       button = KEY_CHANNELDOWN
+       prog   = mplayer
+       repeat = 2
+       config = brightness -1
+end
+
+# Toggle full-screen
+#begin
+#       prog = mplayer
+#       button = #???????????????????????????
+#       repeat = 2
+#       config = vo_fullscreen
+#end
+
+
+######################################################################## XINE Section ##########
+
+# For a compleate list of Xine's Lirc Keybindings use comand
+#        xine --keymap=lirc>.lircrc.xine.keybindings
+# This creates a file in current directory called ".lircrc.xine.keybindings"
+# Note: Xine has diferent sets of keybindings for lirc and keyboard
+
+##  01/14/2008
+# xine key bindings.
+# Automatically generated by xine-ui version 0.99.6cvs.
+
+#<><><><><><><><><><> Xine Video Movement <><><><>
+
+# start playback
+begin
+  prog   = xine
+  button = KEY_PLAY
+  config = Play
+end
+
+# playback pause toggle
+begin
+  prog   = xine
+  button = KEY_PAUSE
+  config = Pause
+end
+
+# stop playback
+begin
+  prog   = xine
+  button = KEY_STOP
+  config = Stop
+end
+
+# take a snapshot
+#begin
+#   prog   = xine
+#   button = Record
+#   repeat = 2
+#   config = Snapshot
+#end
+
+begin
+       prog   = xine
+       button = KEY_FASTFORWARD
+       repeat = 2
+#       delay   = 1
+       config = SeekRelative+7
+end
+
+begin
+       prog   = xine
+       button = KEY_REWIND
+       repeat = 2
+#       delay   = 1
+       config = SeekRelative-7
+end
+
+# set position to -60 seconds in current stream
+begin
+       prog   = xine
+       button = KEY_PREVIOUS
+       repeat = 2
+       delay   = 1
+       config = SeekRelative-60
+end
+
+# set position to +60 seconds in current stream
+begin
+       prog   = xine
+       button = KEY_NEXT
+       repeat = 2
+       delay   = 1
+       config = SeekRelative+60
+end
+#<><><><><><><><><><><><>Xine Control<><><><><><><><><>
+
+# quit the program
+begin
+  prog   = xine
+  button = KEY_EXIT
+  config = Quit
+end
+
+#display stream information using OSD
+begin
+  prog   = xine
+  button = KEY_INFO
+  config = OSDStreamInfos
+end
+
+# menu navigate up
+begin
+       prog   = xine
+       button = KEY_UP
+       repeat = 2
+       delay   = 2
+       config = EventUp
+end
+
+# menu navigate down
+begin
+       prog   = xine
+       button = KEY_DOWN
+       repeat = 2
+       delay   = 2
+       config = EventDown
+end
+
+# menu navigate left
+begin
+       prog   = xine
+       button = KEY_LEFT
+       repeat = 2
+       delay   = 2
+       config = EventLeft
+end
+
+# menu navigate right
+begin
+       prog   = xine
+       button = KEY_RIGHT
+       repeat = 2
+       delay   = 2
+       config = EventRight
+end
+
+# menu select
+begin
+       prog   = xine
+       button = KEY_OK
+       config = EventSelect
+end
+
+# jump to Root Menu
+begin
+       prog   = xine
+       button = KEY_MEDIA
+       config = Menu
+end
+
+#<><><><><><><><><><><><><><><><><><><> Xine Volume / Channel <><><><><><><><>
+
+# increment audio volume
+begin
+  prog   = xine
+  button = KEY_VOLUMEUP
+  repeat = 1
+  config = Volume+
+end
+
+# decrement audio volume
+begin
+  prog   = xine
+  button = KEY_VOLUMEDOWN
+  repeat = 1
+  config = Volume-
+end
+
+# audio muting toggle
+begin
+  prog   = xine
+  button = KEY_MUTE
+  config = Mute
+end
+
+# increase brightness by 10
+begin
+  prog   = xine
+  button = KEY_CHANNELUP
+  config = BrightnessControl+
+end
+
+# decrease brightness by 10
+begin
+  prog   = xine
+  button = KEY_CHANNELDOWN
+  config = BrightnessControl-
+end
+
+#<><><><><><><><><><><><><><><><><> Xine Menu <><><><>
+
+# unused key
+#begin
+#   prog   = xine
+#   button = RecordedTV
+#   config = ????????
+#end
+
+# visibility toggle of stream info window
+begin
+  prog   = xine
+  button = KEY_EPG
+  config = SetupShow
+end
+
+# unused key
+#begin
+#   prog   = xine
+#   button = LiveTV
+#   config = ????????
+#end
+
+# jump to Title Menu
+begin
+       prog   = xine
+       button = KEY_DVD
+       config = RootMenu
+end
+
+#<><><><><><><><><><><><><><><><><> Xine Stream Position <><><><>
+
+# set position in current stream
+
+begin
+       prog   = xine
+       button = KEY_0
+       config = SetPosition0%
+end
+
+begin
+  prog   = xine
+  button = KEY_1
+  config = SetPosition10%
+end
+
+begin
+  prog   = xine
+  button = KEY_2
+  config = SetPosition20%
+end
+
+begin
+  prog   = xine
+  button = KEY_3
+  config = SetPosition30%
+end
+
+begin
+  prog   = xine
+  button = KEY_4
+  config = SetPosition40%
+end
+
+begin
+  prog   = xine
+  button = KEY_5
+  config = SetPosition50%
+end
+
+begin
+  prog   = xine
+  button = KEY_6
+  config = SetPosition60%
+end
+
+begin
+  prog   = xine
+  button = KEY_7
+  config = SetPosition70%
+end
+
+begin
+  prog   = xine
+  button = KEY_8
+  config = SetPosition80%
+end
+
+begin
+  prog   = xine
+  button = KEY_9
+  config = SetPosition90%
+end
+
+#<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>
+
+# decrement playback speed (slow motion slowdown)
+begin
+       prog   = xine
+       button = KEY_BLUE
+       config = SpeedSlower
+end
+
+# increment playback speed (slow motion speedup)
+begin
+       prog   = xine
+       button = KEY_NUMERIC_POUND
+       config = SpeedFaster
+end
+
+# reset playback speed
+begin
+       prog   = xine
+       button = KEY_DELETE
+       config = SpeedReset
+end
+
+# unused key
+#begin
+#       prog   = xine
+#       button = clear
+#       config = ?????????
+#end
+
+# set position to -30 seconds in current stream         config = SeekRelative-30
+# set position to +30 seconds in current stream         config = SeekRelative+30
+# eject the current medium                                      config = Eject
+# zoom in                                                       config = ZoomIn
+# zoom out                                                      config = ZoomOut
+# fullscreen toggle                                             config = ToggleFullscreen
+
+##
+# End of xine .
+##
diff --git a/abs/core/system-templates/templates/remotes/imon-mce/preview.jpg b/abs/core/system-templates/templates/remotes/imon-mce/preview.jpg
new file mode 100644
index 0000000..a2e46a3
Binary files /dev/null and b/abs/core/system-templates/templates/remotes/imon-mce/preview.jpg differ
diff --git a/abs/core/system-templates/templates/remotes/imon-mce/remote.run b/abs/core/system-templates/templates/remotes/imon-mce/remote.run
new file mode 100755
index 0000000..b6052db
--- /dev/null
+++ b/abs/core/system-templates/templates/remotes/imon-mce/remote.run
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+/usr/bin/ir-keytable -c -p RC6 -w /etc/rc_keymaps/imon_mce
+/usr/sbin/lircd -r -n --driver devinput -d /dev/remotes/SoundGraph --output /var/run/lirc/lircd
diff --git a/abs/core/system-templates/templates/remotes/imon-pad/lircd.conf b/abs/core/system-templates/templates/remotes/imon-pad/lircd.conf
deleted file mode 100644
index 97bbf4c..0000000
--- a/abs/core/system-templates/templates/remotes/imon-pad/lircd.conf
+++ /dev/null
@@ -1,88 +0,0 @@
-# Please make this file available to others
-# by sending it to <lirc@bartelmus.de>
-#
-# this config file was automatically generated
-# using lirc-0.8.0(imon_pad) on Mon Jan 23 20:22:11 2006
-#
-# contributed by M.Brakemeier
-#
-# brand:                       SoundGraph
-# model no. of remote control: iMON-PAD
-# devices being controlled by this remote:
-#
-
-begin remote
-
-  name     iMON-PAD
-  bits           32
-  eps            30
-  aeps          100
-
-  one             0     0
-  zero            0     0
-  gap          235965
-  min_repeat      1
-  toggle_bit      0
-
-      begin codes
-          AppExit                  0x288195B7
-        Power                    0x289115B7
-          Record                   0x298115B7
-          Play                     0x2A8115B7
-	  Open			   0x29B1d5B7
-          Rewind                   0x2A8195B7
-          Pause                    0x2A9115B7
-          FastForward              0x2B8115B7
-          PrevChapter              0x2B9115B7
-          Stop                     0x2B9715B7
-          NextChapter              0x298195B7
-          Esc                      0x2BB715B7
-          Eject                    0x299395B7
-          AppLauncher              0x29B715B7
-          MultiMon                 0x2AB195B7
-          TaskSwitcher             0x2A9395B7
-          Mute                     0x2B9595B7
-          Vol+                     0x28A395B7
-          Vol-                     0x28A595B7
-          Ch+                      0x289395B7
-          Ch-                      0x288795B7
-          Timer                    0x2B8395B7
-          1                        0x28B595B7
-          2                        0x2BB195B7
-          3                        0x28B195B7
-          4                        0x2A8595B7
-          5                        0x299595B7
-          6                        0x2AA595B7
-          7                        0x2B9395B7
-          8                        0x2A8515B7
-          9                        0x2AA115B7
-          0                        0x2BA595B7
-          ShiftTab                 0x28B515B7
-          Tab                      0x29A115B7
-        Red                      0x2B8515B7 # MyMovie
-        Green                    0x299195B7 # MyMusic
-        Blue                     0x2BA115B7 # MyPhoto
-        Yellow                   0x28A515B7 # MyTV
-          Bookmark                 0x288515B7
-          Thumbnail                0x2AB715B7
-          AspectRatio              0x29A595B7
-          FullScreen               0x2AA395B7
-        Purple                   0x29A295B7 # MyDVD
-          Menu                     0x2BA385B7
-          Caption                  0x298595B7
-          Language                 0x2B8595B7
-          MouseKeyboard            0x299115B7
-          SelectSpace              0x2A9315B7
-          MouseMenu                0x28B715B7
-          MouseRightClick          0x688481B7
-          Enter                    0x28A195B7
-          MouseLeftClick           0x688301B7
-          WindowsKey               0x2B8195B7
-          Backspace                0x28A115B7
-        Mouse_N                  0x690281B7
-        Mouse_S                  0x688291B7
-        Mouse_W                  0x6A8281B7
-        Mouse_E                  0x688A81B7
-      end codes
-
-end remote 
diff --git a/abs/core/system-templates/templates/remotes/imon-pad/lircrc b/abs/core/system-templates/templates/remotes/imon-pad/lircrc
deleted file mode 100644
index 3ad34d8..0000000
--- a/abs/core/system-templates/templates/remotes/imon-pad/lircrc
+++ /dev/null
@@ -1,240 +0,0 @@
-###################################
-# lircrc config as used by Stev391 June 2007
-# Not all of the buttons are configured yet, only the commonly used buttons
-###################################
-
-# Escape
-begin
-    prog = mythtv
-    button = AppExit
-    config = Esc
-    repeat = 3
-end
-
-# Escape Key 2
-begin
-    prog = mythtv
-    button = Esc
-    config = Esc
-end
-
-# Channel Up
-begin
-    prog   = mythtv
-    button = Ch+
-    config = Up
-    repeat = 3
-end
-
-# Channel Down
-begin
-    prog   = mythtv
-    button = Ch-
-    config = Down
-    repeat = 3
-end
-
-# Volume Up
-begin
-    prog = mythtv
-    button = Vol+
-    repeat = 3
-    config = Right
-end
-
-# Volume Down
-begin
-    prog = mythtv
-    button = Vol-
-    repeat = 3
-    config = Left
-end
-
-# Enter/Return
-begin
-    prog   = mythtv
-    button = Enter
-    config = Return
-end
-
-# Menu Button
-begin
-    prog = mythtv
-    button = Menu
-    config = M
-end
-
-# Mute
-begin
-    prog = mythtv
-    button = Mute
-    config = F9  
-end
-
-# Rewind
-begin
-    prog = mythtv
-    button = Rewind
-    config = PgUp  
-end
-
-# Fast Forward
-begin
-    prog = mythtv
-    button = FastForward
-    config = PgDown  
-end
-
-# Play
-begin
-    prog = mythtv
-    button = Play
-    config = P  
-end
-
-# Pause
-begin
-    prog = mythtv
-    button = Pause
-    config = P  
-end
-
-# Record
-begin
-  prog = mythtv
-  button = Record
-  config = R  
-end
-
-# Stop
-begin
-   prog = mythtv
-   button = Stop
-   config = O  
-end
-
-# Previous Track/Chapter
-begin
-   prog = mythtv
-   button = PrevChapter
-   config = Home  
-end
-
-# Next Track/Chapter
-begin
-   prog = mythtv
-   button = NextChapter
-   config = End
-end
-
-# Jump Point to MythVideo
-begin
-   prog = mythtv
-   button = MyMovie
-   config = F12
-end
-
-# Jump Point to MythMusic
-begin
-   prog = mythtv
-   button = MyMusic
-   config = F11
-end
-
-# Jump Point to LiveTV
-begin
-   prog = mythtv
-   button = MyTV
-   config = F10
-end
-
-# Jump Point to Main Menu
-begin
-   prog = mythtv
-   button = Multimon
-   config = F2
-end
-
-# Jump Point to Myth Gallery
-begin
-   prog = mythtv
-   button = MyPhoto
-   config = F3
-end
-
-# Jump Point to Play DVD
-begin
-   prog = mythtv
-   button = MyDVD
-   config = F4
-end
-
-# Display Information
-begin
-   prog = mythtv
-   button = Caption
-   config = I
-end
-
-##############################
-# Numbers
-##############################
-begin
-    prog = mythtv
-    button = 0
-    config = 0  
-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
diff --git a/abs/core/system-templates/templates/remotes/imon-pad/preview.jpg b/abs/core/system-templates/templates/remotes/imon-pad/preview.jpg
deleted file mode 100644
index a2e46a3..0000000
Binary files a/abs/core/system-templates/templates/remotes/imon-pad/preview.jpg and /dev/null differ
diff --git a/abs/core/system-templates/templates/remotes/imon/remote.run b/abs/core/system-templates/templates/remotes/imon/remote.run
new file mode 100755
index 0000000..9d0ab2e
--- /dev/null
+++ b/abs/core/system-templates/templates/remotes/imon/remote.run
@@ -0,0 +1,4 @@
+#!/bin/bash
+
+/usr/bin/ir-keytable -c -p lirc -w /etc/rc_keymaps/imon_pad
+/usr/sbin/lircd -r -n --driver devinput -d /dev/remotes/SoundGraph --output /var/run/lirc/lircd
-- 
cgit v0.12


From fd936e5ece64c337e9ce43bad28db35771d9d124 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 12 Mar 2012 16:21:51 -0500
Subject: ttf-droid: Initial inclusion. Needed for mythcenter* themes

---
 abs/extra/ttf-droid/PKGBUILD          | 22 ++++++++++++++++++++++
 abs/extra/ttf-droid/ttf-droid.install | 15 +++++++++++++++
 2 files changed, 37 insertions(+)
 create mode 100644 abs/extra/ttf-droid/PKGBUILD
 create mode 100644 abs/extra/ttf-droid/ttf-droid.install

diff --git a/abs/extra/ttf-droid/PKGBUILD b/abs/extra/ttf-droid/PKGBUILD
new file mode 100644
index 0000000..2df7e2b
--- /dev/null
+++ b/abs/extra/ttf-droid/PKGBUILD
@@ -0,0 +1,22 @@
+# Maintainer: Jelle van der Waa <jelle@vdwaa.nl>
+# Contributor: Urs Wolfer <uwolfer @ fwo.ch>
+
+pkgname=ttf-droid
+pkgver=20110417
+pkgrel=2
+pkgdesc="A font created by Ascender Corporation for use by the Open Handset Alliance platform, Android."
+arch=('any')
+license=('apache')
+url="http://code.google.com/android/"
+depends=('fontconfig' 'xorg-fonts-encodings' 'xorg-font-utils')
+install=$pkgname.install
+source=('ftp://ftp.archlinux.org/other/community/ttf-droid/ttf-droid.tar.xz')
+md5sums=('f0dffb54269504a0fdb2c4fe394322ee')
+
+package()
+{
+        cd $srcdir/ttf-droid
+        install -d $pkgdir/usr/share/fonts/TTF/ 
+        install -m644 *.ttf $pkgdir/usr/share/fonts/TTF/ 
+}
+
diff --git a/abs/extra/ttf-droid/ttf-droid.install b/abs/extra/ttf-droid/ttf-droid.install
new file mode 100644
index 0000000..7dde94b
--- /dev/null
+++ b/abs/extra/ttf-droid/ttf-droid.install
@@ -0,0 +1,15 @@
+post_install() {
+  echo -n "Updating font cache... "
+  fc-cache -f > /dev/null
+  mkfontscale /usr/share/fonts/TTF
+  mkfontdir /usr/share/fonts/TTF
+  echo "done."
+}
+
+post_upgrade() {
+  post_install $1
+}
+
+post_remove() {
+  post_install $1
+}
-- 
cgit v0.12


From 7219eb2f85b5c61f6708f277b5756db0c9fdb627 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 12 Mar 2012 16:26:10 -0500
Subject: ttf-liberation: Initial inclusion. Needed for mythcenter* themes

---
 abs/extra/ttf-liberation/PKGBUILD    | 31 +++++++++++++++++++++++++++++++
 abs/extra/ttf-liberation/ttf.install | 16 ++++++++++++++++
 2 files changed, 47 insertions(+)
 create mode 100644 abs/extra/ttf-liberation/PKGBUILD
 create mode 100644 abs/extra/ttf-liberation/ttf.install

diff --git a/abs/extra/ttf-liberation/PKGBUILD b/abs/extra/ttf-liberation/PKGBUILD
new file mode 100644
index 0000000..572ae06
--- /dev/null
+++ b/abs/extra/ttf-liberation/PKGBUILD
@@ -0,0 +1,31 @@
+# $Id$
+# Maintainer: Lukas Fleischer <archlinux at cryptocrack dot de>
+# Contributor: Ronald van Haren <ronald.archlinux.org>
+# Contributor: Roman Kyrylych <Roman.Kyrylych@gmail.com>
+# Contributor: Andreas Zwinkau
+# Contributor: rabyte <rabyte__gmail>
+# Contributor: Stefan Husmann < stefan-husmann@t-online.de>
+
+pkgname=ttf-liberation
+pkgver=1.07.1
+pkgrel=2
+pkgdesc='Red Hats Liberation fonts.'
+arch=('any')
+license=('custom' 'GPL2')
+url='https://www.redhat.com/promo/fonts/'
+depends=('fontconfig' 'xorg-fonts-encodings' 'xorg-font-utils')
+makedepends=('fontforge')
+install=ttf.install
+source=("https://fedorahosted.org/releases/l/i/liberation-fonts/liberation-fonts-ttf-$pkgver.tar.gz")
+md5sums=('0be45d54cc5e1c2e3102e32b8c190346')
+
+package() {
+  cd "$srcdir/liberation-fonts-ttf-$pkgver"
+
+  install -d "$pkgdir/usr/share/fonts/TTF/"
+  install -m644 *.ttf "$pkgdir/usr/share/fonts/TTF/"
+
+  # install license
+  install -Dm644 "${srcdir}/liberation-fonts-ttf-${pkgver}/License.txt" \
+    "${pkgdir}/usr/share/licenses/${pkgname}/License.txt"
+}
diff --git a/abs/extra/ttf-liberation/ttf.install b/abs/extra/ttf-liberation/ttf.install
new file mode 100644
index 0000000..7d26d0c
--- /dev/null
+++ b/abs/extra/ttf-liberation/ttf.install
@@ -0,0 +1,16 @@
+post_install() {
+  echo -n "Updating font cache... "
+  fc-cache -f > /dev/null
+  mkfontscale /usr/share/fonts/TTF
+  mkfontdir /usr/share/fonts/TTF
+  echo "done."
+}
+
+post_upgrade() {
+  post_install $1
+}
+
+post_remove() {
+  post_install $1
+}
+
-- 
cgit v0.12


From a719dcc0e56e59bd9a9f105096f78db96dce81dd Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 12 Mar 2012 16:29:19 -0500
Subject: fontforge: Initial inclusion. Dep of ttf-liberation

---
 abs/extra/fontforge/PKGBUILD | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 abs/extra/fontforge/PKGBUILD

diff --git a/abs/extra/fontforge/PKGBUILD b/abs/extra/fontforge/PKGBUILD
new file mode 100644
index 0000000..ff53b21
--- /dev/null
+++ b/abs/extra/fontforge/PKGBUILD
@@ -0,0 +1,40 @@
+# $Id$
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+# Contributor: Eric Belanger <eric@archlinux.org>
+# Contributor: William Rea <sillywilly@gmail.com>
+
+pkgname=fontforge
+pkgver=20120119
+pkgrel=1
+pkgdesc='Outline and bitmap font editor'
+arch=('i686' 'x86_64')
+url='http://fontforge.sourceforge.net/'
+license=('BSD')
+depends=('libxkbui' 'libxi' 'libxml2' 'pango' 'giflib' 'libtiff' 'python2' 'libspiro')
+options=('!libtool' '!makeflags')
+source=("ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.xz")
+sha1sums=('2c363af075e77bf35d21ee1939e3d6ab39a9f80c')
+
+# git clone git://fontforge.git.sourceforge.net/gitroot/fontforge/fontforge; cd fontforge; git archive --prefix=${pkgname}-${pkgver}/ master | xz > ../${pkgname}-${pkgver}.tar.xz
+
+build() {
+	cd "${srcdir}/${pkgname}-${pkgver}"
+	sed -i 's/python /python2 /g' Makefile.dynamic.in
+	./configure \
+		--prefix=/usr \
+		--mandir=/usr/share/man \
+		--enable-type3 \
+		--enable-devicetables \
+		--enable-double \
+		--with-regular-link \
+		--with-python=python2 \
+		--enable-pyextension \
+
+	make
+}
+
+package() {
+	cd "${srcdir}/${pkgname}-${pkgver}"
+	make DESTDIR="${pkgdir}" install
+	install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}
-- 
cgit v0.12


From 3614874a18f4c231f8698faa4225b7c9572b1955 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 12 Mar 2012 16:31:12 -0500
Subject: libspiro: Initial inclusion. Dep of fontforge

---
 abs/extra/libspiro/PKGBUILD | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)
 create mode 100644 abs/extra/libspiro/PKGBUILD

diff --git a/abs/extra/libspiro/PKGBUILD b/abs/extra/libspiro/PKGBUILD
new file mode 100644
index 0000000..4055b66
--- /dev/null
+++ b/abs/extra/libspiro/PKGBUILD
@@ -0,0 +1,25 @@
+# $Id$
+# Contributor: Rémy Oudompheng <oudomphe@clipper.ens.fr>
+# Maintainer: Gaetan Bisson <bisson@archlinux.org>
+
+pkgname=libspiro
+pkgver=20071029
+pkgrel=2
+pkgdesc='Simplifies the drawing of beautiful curves'
+url='http://libspiro.sourceforge.net/'
+license=('GPL')
+options=('!libtool')
+arch=('i686' 'x86_64')
+source=("http://downloads.sourceforge.net/sourceforge/${pkgname}/${pkgname}_src-${pkgver}.tar.bz2")
+sha1sums=('d8b407b835b35289af2914877a4c6000b4fdd382')
+
+build() {
+	cd "${srcdir}/${pkgname}-${pkgver}"
+	./configure --prefix=/usr
+	make
+}
+
+package() {
+	cd "${srcdir}/${pkgname}-${pkgver}"
+	make DESTDIR="${pkgdir}" install
+}
-- 
cgit v0.12


From a26eb8c5c0dd39c49d440a203463c55a05e82180 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Mon, 26 Mar 2012 11:17:25 -0500
Subject: v4l-dvb: fix breakage

our kernel had compressed modules and were conflicting with the uncompressed modules in v4l-dvb. post-install and post-upgrade remove the compressed modules.
---
 abs/core/v4l-dvb/PKGBUILD        | 6 +++---
 abs/core/v4l-dvb/v4l-dvb.install | 8 ++++++++
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/abs/core/v4l-dvb/PKGBUILD b/abs/core/v4l-dvb/PKGBUILD
index 4463335..47a168a 100644
--- a/abs/core/v4l-dvb/PKGBUILD
+++ b/abs/core/v4l-dvb/PKGBUILD
@@ -2,9 +2,9 @@
 
 pkgname=v4l-dvb
 _kernver=`uname -r`
-pkgver=20120113
-pkgrel=2
-pkgdesc="V4L-DVB device drivers (newer than those included in kernel)"
+pkgver=20120326
+pkgrel=1
+pkgdesc="V4L-DVB device drivers (newer than those included in kernel26)"
 arch=('i686' 'x86_64')
 url="http://linuxtv.org/"
 license=('GPL2')
diff --git a/abs/core/v4l-dvb/v4l-dvb.install b/abs/core/v4l-dvb/v4l-dvb.install
index 8fb315c..46e6277 100644
--- a/abs/core/v4l-dvb/v4l-dvb.install
+++ b/abs/core/v4l-dvb/v4l-dvb.install
@@ -1,10 +1,18 @@
 post_install() {
+    echo ">>> Removing duplicate compressed kernel modules"
+    for file in `find /lib/modules -name "*.ko"`; do if [[ -e $file.gz ]]; then rm "$file.gz"; fi; done
     echo ">>> Running depmod..."
     depmod
 }
 
 post_upgrade() {
+    echo ">>> Removing duplicate compressed kernel modules"
+    for file in `find /lib/modules -name "*.ko"`; do if [[ -e $file.gz ]]; then rm "$file.gz"; fi; done
     echo ">>> Running depmod..."
     depmod
 }
 
+post_remove() {
+    echo ">>> v4l-dvb has been removed"
+    echo ">>> kernel26 & linux-firmware should be reinstalled"
+}
-- 
cgit v0.12


From 395a161217c19bace38f8f2cbff13a495d3280f1 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 11:46:04 -0500
Subject: v4l-dvb: add post_remove pkg to reinstall

---
 abs/core/v4l-dvb/PKGBUILD        | 2 +-
 abs/core/v4l-dvb/v4l-dvb.install | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/abs/core/v4l-dvb/PKGBUILD b/abs/core/v4l-dvb/PKGBUILD
index 47a168a..36e4609 100644
--- a/abs/core/v4l-dvb/PKGBUILD
+++ b/abs/core/v4l-dvb/PKGBUILD
@@ -2,7 +2,7 @@
 
 pkgname=v4l-dvb
 _kernver=`uname -r`
-pkgver=20120326
+pkgver=20120407
 pkgrel=1
 pkgdesc="V4L-DVB device drivers (newer than those included in kernel26)"
 arch=('i686' 'x86_64')
diff --git a/abs/core/v4l-dvb/v4l-dvb.install b/abs/core/v4l-dvb/v4l-dvb.install
index 46e6277..ec6382d 100644
--- a/abs/core/v4l-dvb/v4l-dvb.install
+++ b/abs/core/v4l-dvb/v4l-dvb.install
@@ -1,12 +1,12 @@
 post_install() {
-    echo ">>> Removing duplicate compressed kernel modules"
+    echo ">>> Removing duplicate compressed kernel modules..."
     for file in `find /lib/modules -name "*.ko"`; do if [[ -e $file.gz ]]; then rm "$file.gz"; fi; done
     echo ">>> Running depmod..."
     depmod
 }
 
 post_upgrade() {
-    echo ">>> Removing duplicate compressed kernel modules"
+    echo ">>> Removing duplicate compressed kernel modules..."
     for file in `find /lib/modules -name "*.ko"`; do if [[ -e $file.gz ]]; then rm "$file.gz"; fi; done
     echo ">>> Running depmod..."
     depmod
@@ -14,5 +14,5 @@ post_upgrade() {
 
 post_remove() {
     echo ">>> v4l-dvb has been removed"
-    echo ">>> kernel26 & linux-firmware should be reinstalled"
+    echo ">>> kernel26 & dvb-firmware & linux-firmware should be reinstalled"
 }
-- 
cgit v0.12


From c718974fd0e5c20002f933046f4efb2b09f801ce Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 13:11:43 -0500
Subject: LinHES-config: soundconfig.sh: when alsa is loaded remove oss pkg

When oss pkg is installed with alsa selected flashplayer sound doesn't work.
---
 abs/core/LinHES-config/PKGBUILD       | 4 ++--
 abs/core/LinHES-config/soundconfig.sh | 3 +++
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/abs/core/LinHES-config/PKGBUILD b/abs/core/LinHES-config/PKGBUILD
index f796971..de71e5b 100644
--- a/abs/core/LinHES-config/PKGBUILD
+++ b/abs/core/LinHES-config/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-config
 pkgver=2.3
-pkgrel=63
+pkgrel=64
 conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
 pkgdesc="Install and configure your system"
 depends=('bc' 'libstatgrab'  'mysql-python' 'expect' 'curl' 'dnsutils' 'parted'
@@ -112,7 +112,7 @@ md5sums=('64fad755c12f8eb12940e216e403354e'
          '9ae8d79f620c6d19973c55c32a921874'
          '960017a34d9cc78af6298f45aad6eb8e'
          'ecf9e5df20683a769c4a8a8f2d65de85'
-         'eaf845dda830c531649d5840e0584f8e'
+         '6d32a88e76b0a97b0ce67d37ef6394aa'
          '5a1cbcf58855bbd93a5a18e6673aa2e6'
          '6aff504ed5e860adc1b7317cd0780900'
          '55fccb1da0417a896b724f7cfc32dd5a'
diff --git a/abs/core/LinHES-config/soundconfig.sh b/abs/core/LinHES-config/soundconfig.sh
index 5778cee..c268136 100755
--- a/abs/core/LinHES-config/soundconfig.sh
+++ b/abs/core/LinHES-config/soundconfig.sh
@@ -28,6 +28,9 @@ function load_alsa() {
 #    echo "   installing alsa-lib"
     #pacman -Sf --noconfirm  alsa-lib
 
+    echo "   uninstalling oss"
+    pacman -R --noconfirm oss
+
     echo    "triggering udev module load"
     depmod -a
     cd - > /dev/null
-- 
cgit v0.12


From 7c91ecdfa94ccc32d741ba3c6f0d1a373d06f8ec Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 14:02:00 -0500
Subject: flashplugin: update to 11.2.202.228

---
 abs/extra/community/flashplugin/PKGBUILD | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/abs/extra/community/flashplugin/PKGBUILD b/abs/extra/community/flashplugin/PKGBUILD
index 53ded26..92a7caa 100644
--- a/abs/extra/community/flashplugin/PKGBUILD
+++ b/abs/extra/community/flashplugin/PKGBUILD
@@ -1,10 +1,10 @@
-# $Id: PKGBUILD 150281 2012-02-16 09:18:00Z ibiru $
+# $Id$
 # Maintainer : Ionut Biru <ibiru@archlinux.org>
 # Contributor: Andrea Scarpino <andrea@archlinux.org>
 
 pkgname=flashplugin
 _licensefile='PlatformClients_PC_WWEULA_Combined_20100108_1657.pdf'
-pkgver=11.1.102.62
+pkgver=11.2.202.228
 pkgrel=1
 pkgdesc='Adobe Flash Player'
 url='http://get.adobe.com/flashplayer'
@@ -21,14 +21,14 @@ if [ "$CARCH" = "i686" ]; then
     source=("http://fpdownload.macromedia.com/get/flashplayer/pdc/$pkgver/install_flash_player_11_linux.i386.tar.gz"
             "http://www.adobe.com/products/eulas/pdfs/${_licensefile}"
             mms.cfg)
-    md5sums=('c73d490e552e92016d53247a869ce64b'
+    md5sums=('174a9e778a11559d65f66290b16e2088'
              '94ca2aecb409abfe36494d1a7ec7591d'
              'f34aae6279b40e0bd2abfb0d9963d7b8')
 elif [ "$CARCH" = "x86_64" ]; then
     source=("http://fpdownload.macromedia.com/get/flashplayer/pdc/$pkgver/install_flash_player_11_linux.x86_64.tar.gz"
             "http://www.adobe.com/products/eulas/pdfs/${_licensefile}"
             mms.cfg)
-    md5sums=('76be6fe21f68684c19ccee138a42fff9'
+    md5sums=('01e4ddb6e87ea8439f4955e83422f82e'
              '94ca2aecb409abfe36494d1a7ec7591d'
              'f34aae6279b40e0bd2abfb0d9963d7b8')
 fi
@@ -51,6 +51,6 @@ package () {
     install -Dm644 "${_licensefile}" "$pkgdir/usr/share/licenses/$pkgname/LICENSE.pdf"
     install -Dm644 "$srcdir/mms.cfg" "$pkgdir/etc/adobe/mms.cfg"
 }
-md5sums=('c73d490e552e92016d53247a869ce64b'
+md5sums=('174a9e778a11559d65f66290b16e2088'
          '94ca2aecb409abfe36494d1a7ec7591d'
          'f34aae6279b40e0bd2abfb0d9963d7b8')
-- 
cgit v0.12


From be81f661c34084eb2528c61c5775b5e8ead761ad Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 14:16:07 -0500
Subject: linhes-scripts: remove install_hulu.sh; replaced by huludesktop pkg.

---
 abs/core/linhes-scripts/PKGBUILD        |  4 +-
 abs/core/linhes-scripts/install_hulu.sh | 70 ---------------------------------
 2 files changed, 1 insertion(+), 73 deletions(-)
 delete mode 100644 abs/core/linhes-scripts/install_hulu.sh

diff --git a/abs/core/linhes-scripts/PKGBUILD b/abs/core/linhes-scripts/PKGBUILD
index 8b7bb1f..bce9e07 100644
--- a/abs/core/linhes-scripts/PKGBUILD
+++ b/abs/core/linhes-scripts/PKGBUILD
@@ -3,7 +3,7 @@
 
 pkgname=linhes-scripts
 pkgver=7
-pkgrel=29
+pkgrel=30
 pkgdesc="Various scripts that help to make LinHES, LinHES."
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -34,7 +34,6 @@ run-limit-mythcommflag
 linhes_update.sh
 linhes_update2.sh
 linhes_update3.sh
-install_hulu.sh
 update_schema_021_to_022.sh
 upgrade_linhes.sh
 remove_php_mythvideo.sh
@@ -88,7 +87,6 @@ md5sums=('f56985b2d602e11dc1e10d3e7848b2a5'
          '9d077c24d102fa02e4f417d639d8b00a'
          '98979920c30bb48c02d00f6943e9e50e'
          '460861e6d0cf999629b734912eea0acf'
-         'ccca6bdbbd86b203a3eecdbbe363e701'
          '65629302a4d2c3adf88cdf0ebc10d493'
          'ab469714d77f3a29c7dda715e5ab98e0'
          '87b0dc855181f98516acb18a7d551601'
diff --git a/abs/core/linhes-scripts/install_hulu.sh b/abs/core/linhes-scripts/install_hulu.sh
deleted file mode 100644
index 9b06b2e..0000000
--- a/abs/core/linhes-scripts/install_hulu.sh
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/bin/bash
-#install_hulu.sh
-if [ -e /tmp/huludesktop_i386.deb ]
-then
-cd /tmp
-deb2targz huludesktop_i386.deb
-tar -xzvf huludesktop_i386.tar.gz -C /
-else
-echo "Cannot find huludesktop_i386.deb."
-echo "Please download it from http://www.hulu.com/labs/hulu-desktop-linux"
-echo "Then copy (or move) it to /tmp"
-exit
-fi
-if grep -q Hulu /usr/share/mythtv/themes/defaultmenu/is.xml
-then
-echo "Hulu Desktop exist in Online Streams!"
-else
-  mv /usr/share/mythtv/themes/defaultmenu/is.xml /tmp                                           
-  grep -v -e /mythmenu /tmp/is.xml > /tmp/is.xml.tmp                         
-  echo "<!--#Hulu-->" >> /tmp/is.xml.tmp                                     
-  echo "   <button>" >> /tmp/is.xml.tmp                                      
-  echo "     <type>STREAM</type>" >> /tmp/is.xml.tmp                         
-  echo "     <text>Hulu Desktop</text>" >> /tmp/is.xml.tmp                   
-  echo "     <action>EXEC huludesktop</action>" >> /tmp/is.xml.tmp           
-  echo "   </button>" >> /tmp/is.xml.tmp                                     
-  echo "<!--#Hulu-->" >> /tmp/is.xml.tmp                                     
-  echo "" >> /tmp/is.xml.tmp                                                 
-  echo "</mythmenu>" >> /tmp/is.xml.tmp                                      
-  mv /tmp/is.xml.tmp /usr/share/mythtv/themes/defaultmenu/is.xml
-echo "Hulu Desktop has been added to Online Streams!"
-fi
-if [ -e /home/mythtv/.huludesktop ]
-then
-echo "Found existing Hulu configuration file."
-else
-cat >> /home/mythtv/.huludesktop << EOF
-[display]
-fullscreen = TRUE
-width = 1024
-height = 576
-pos_x = 201
-pos_y = 179
-
-[remote]
-lirc_device = /dev/lircd
-lirc_remote_identifier = mceusb
-lirc_release_suffix = _UP
-lirc_repeat_threshold = 10
-button_name_up = Up
-button_name_down = Down
-button_name_left = Left
-button_name_right = Right
-button_name_select = OK
-button_name_menu = Home
-
-[flash]
-flash_location = /usr/lib/mozilla/plugins/libflashplayer.so
-
-[screensaver]
-suspend_script = /usr/bin/xscreensaver-command -deactivate
-resume_script = /usr/bin/xscreensaver-command -activate
-
-[version]
-latest = (null)
-eula_version = 0
-EOF
-chown mythtv.mythtv /home/mythtv/.huludesktop
-fi
-echo "Integration of Hulu Desktop is now complete!"
-echo "Thanks for using LinHES!"
-- 
cgit v0.12


From 671fd3f90521ca4e849b53a3b8439eff82a0631a Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 14:42:02 -0500
Subject: LinHES-system: myth_status.py: limit upcoming recordings to 12

---
 abs/core/LinHES-system/PKGBUILD       | 4 ++--
 abs/core/LinHES-system/myth_status.py | 8 +++++++-
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index 1734865..d53adee 100644
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=2
-pkgrel=37
+pkgrel=38
 arch=('i686')
 MVDIR=$startdir/pkg/usr/LH
 BINDIR=$startdir/pkg/usr/bin
@@ -62,7 +62,7 @@ md5sums=('d6a564f3286590875874573107940908'
          'abe887472a170bd1a8e6da6a7b7e93e4'
          '752488eb8bfb672ce0e4c924f7faf3d1'
          'ba351b92e69bcaf26a9bf80417b09c3c'
-         '60219aab8a177c783d7a658d56683db4'
+         '1d534843cc4e55fe4ce21c3e95e3f766'
          '962a3e9eaba2d1466251b7ab0956705d'
          'd03aedeeeda0f5e9c1eb437411c88477'
          '94ce8f1d5085c0db7b267db8c2e9a3ff'
diff --git a/abs/core/LinHES-system/myth_status.py b/abs/core/LinHES-system/myth_status.py
index 4e44fd5..f8222cb 100644
--- a/abs/core/LinHES-system/myth_status.py
+++ b/abs/core/LinHES-system/myth_status.py
@@ -12,6 +12,7 @@ cursor = db.cursor()
 now = datetime.datetime.now()
 farout=99999999
 next_start_diff=datetime.timedelta(farout)
+num_upcoming=12
 
 def formatTD(td):
     #print td
@@ -68,10 +69,15 @@ for i in a:
 
 
 print ""
-print "Upcoming Recordings:"
+print "Upcoming Recordings (Next %s scheduled):" %(num_upcoming)
 print "--------------------"
 a=be.getUpcomingRecordings()
+r=0
 for i in a:
+    r += 1
+    if r > num_upcoming:
+        break
+
     title_chan="%s (%s)" %(i.title, i.channame)
     print "    %s - %s - %-50s " %(i.starttime,i.hostname, title_chan)
     #start_time=time.strptime(str(i.starttime), "%Y-%m-%d %H:%M:%S")
-- 
cgit v0.12


From 7601ed2cb347fcdfdcbffd76606309f9ca958442 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 15:34:35 -0500
Subject: yajl: Initial inclusion; dep of XBMC 11

---
 abs/extra/community/yajl/PKGBUILD | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)
 create mode 100644 abs/extra/community/yajl/PKGBUILD

diff --git a/abs/extra/community/yajl/PKGBUILD b/abs/extra/community/yajl/PKGBUILD
new file mode 100644
index 0000000..8cd9121
--- /dev/null
+++ b/abs/extra/community/yajl/PKGBUILD
@@ -0,0 +1,33 @@
+# Maintainer: Dave Reisner <d@falconindy.com>
+# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
+# Contributor: Thomas Dziedzic < gostrc at gmail >
+# Contributor: Andrej Gelenberg <andrej.gelenberg@udo.edu>
+
+pkgname=yajl
+pkgver=2.0.4
+pkgrel=1
+pkgdesc='Yet Another JSON Library.'
+arch=('i686' 'x86_64')
+url='http://lloyd.github.com/yajl/'
+license=('ISC')
+makedepends=('cmake')
+source=("$pkgname-$pkgver.tar.gz::https://github.com/lloyd/$pkgname/tarball/$pkgver")
+md5sums=('ee6208e697c43dcccf798ce80d370379')
+
+build() {
+  dirname=$(tar tf "$srcdir/$pkgname-$pkgver.tar.gz" | sed 1q);
+  cd "$dirname"
+
+  cmake -DCMAKE_INSTALL_PREFIX=/usr .
+
+  make
+}
+
+package() {
+  dirname=$(tar tf "$srcdir/$pkgname-$pkgver.tar.gz" | sed 1q);
+  cd "$dirname"
+
+  make DESTDIR="$pkgdir" install
+
+  install -Dm644 COPYING "$pkgdir/usr/share/licenses/${pkgname}/LICENSE"
+}
-- 
cgit v0.12


From 45ebfeee8f3ad79ead06cda29ee2497f010c4e17 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 15:42:22 -0500
Subject: xorg-xdpyinfo: Initial inclusion; dep of XBMC 11

---
 abs/core/xorg-xdpyinfo/PKGBUILD | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)
 create mode 100644 abs/core/xorg-xdpyinfo/PKGBUILD

diff --git a/abs/core/xorg-xdpyinfo/PKGBUILD b/abs/core/xorg-xdpyinfo/PKGBUILD
new file mode 100644
index 0000000..9ee844a
--- /dev/null
+++ b/abs/core/xorg-xdpyinfo/PKGBUILD
@@ -0,0 +1,24 @@
+# $Id$
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=xorg-xdpyinfo
+pkgver=1.3.0
+pkgrel=1
+pkgdesc="Display information utility for X"
+arch=(i686 x86_64)
+url="http://xorg.freedesktop.org/"
+license=('custom')
+depends=('libx11' 'libxext' 'libxtst' 'libxxf86vm' 'libxxf86dga' 'libxrender' 'libxcomposite' 'libxinerama' 'libdmx')
+makedepends=('xorg-util-macros')
+groups=('xorg-apps' 'xorg')
+source=(http://xorg.freedesktop.org/archive/individual/app/xdpyinfo-${pkgver}.tar.bz2)
+sha256sums=('23ee4944a32b5701b4379cb420729eb7a4dde54de2b5b006d4747855efd6d73f')
+
+build() {
+  cd "${srcdir}/xdpyinfo-${pkgver}"
+  ./configure --prefix=/usr
+  make
+  make DESTDIR="${pkgdir}" install
+  install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
+  install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+}
-- 
cgit v0.12


From c8aee53fb3f23036ade52dca03812818c3650146 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 15:45:09 -0500
Subject: libnfs: Initial inclusion; dep of XBMC 11

---
 abs/extra/community/libnfs/PKGBUILD | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 abs/extra/community/libnfs/PKGBUILD

diff --git a/abs/extra/community/libnfs/PKGBUILD b/abs/extra/community/libnfs/PKGBUILD
new file mode 100644
index 0000000..687a416
--- /dev/null
+++ b/abs/extra/community/libnfs/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id$
+# Maintainer: BlackIkeEagle <ike DOT devolder AT gmail DOT com>
+
+pkgname=libnfs
+pkgver=1.3.0
+pkgrel=1
+pkgdesc="client library for accessing NFS shares"
+arch=('i686' 'x86_64')
+url="https://github.com/sahlberg/libnfs"
+license=('GPL')
+depends=('glibc')
+source=("$pkgname-$pkgver.tar.gz::https://github.com/sahlberg/libnfs/tarball/$pkgname-$pkgver")
+_srcfolder=sahlberg-libnfs-47e5a2c
+sha256sums=('0acda3029db699c3978684080843f71d222ad35b30a2ff0d220d144e98854948')
+options=(!libtool)
+
+build() {
+  mv "$_srcfolder" "$pkgname-$pkgver"
+
+  cd "$pkgname-$pkgver"
+
+  autoreconf -vif
+  ./configure --prefix=/usr
+  make
+}
+
+package() {
+  cd "$pkgname-$pkgver"
+  make DESTDIR="$pkgdir" install
+}
-- 
cgit v0.12


From b7fc1ec472258c4c78841c21b76f44d2b1bbd4d4 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 15:51:56 -0500
Subject: afpfs-ng: Initial inclusion; dep of XBMC 11

---
 abs/extra/community/afpfs-ng/01-gcrypt.patch       |   26 +
 abs/extra/community/afpfs-ng/02-pointer.patch      |  280 ++
 abs/extra/community/afpfs-ng/10-fix-errno.patch    |   23 +
 .../community/afpfs-ng/20-build-error-fixes.patch  |  125 +
 .../community/afpfs-ng/21-header-path-fix.patch    |   16 +
 .../community/afpfs-ng/30-include-fixes.patch      |   44 +
 abs/extra/community/afpfs-ng/PKGBUILD              |   66 +
 .../community/afpfs-ng/fix_afpfs-ng_includes.patch | 3082 ++++++++++++++++++++
 8 files changed, 3662 insertions(+)
 create mode 100644 abs/extra/community/afpfs-ng/01-gcrypt.patch
 create mode 100644 abs/extra/community/afpfs-ng/02-pointer.patch
 create mode 100644 abs/extra/community/afpfs-ng/10-fix-errno.patch
 create mode 100644 abs/extra/community/afpfs-ng/20-build-error-fixes.patch
 create mode 100644 abs/extra/community/afpfs-ng/21-header-path-fix.patch
 create mode 100644 abs/extra/community/afpfs-ng/30-include-fixes.patch
 create mode 100644 abs/extra/community/afpfs-ng/PKGBUILD
 create mode 100644 abs/extra/community/afpfs-ng/fix_afpfs-ng_includes.patch

diff --git a/abs/extra/community/afpfs-ng/01-gcrypt.patch b/abs/extra/community/afpfs-ng/01-gcrypt.patch
new file mode 100644
index 0000000..7bcace2
--- /dev/null
+++ b/abs/extra/community/afpfs-ng/01-gcrypt.patch
@@ -0,0 +1,26 @@
+diff -ru afpfs-ng-0.8.1/configure.ac afpfs-ng-0.8.1+iPhone/configure.ac
+--- afpfs-ng-0.8.1/configure.ac	2008-03-08 16:23:12.000000000 +0000
++++ afpfs-ng-0.8.1+iPhone/configure.ac	2010-10-24 05:26:15.000000000 +0000
+@@ -50,21 +50,6 @@
+ 	case $host in
+ 		*-*-darwin*) 
+ 		AC_MSG_CHECKING([for correct gcrypt version])
+-		AC_RUN_IFELSE(
+-			[AC_LANG_PROGRAM([
+-				#include <gcrypt.h>
+-				#include <stdio.h>],[
+-				char*p= GCRYPT_VERSION;
+-				unsigned int vers;
+-				vers=atoi(p)*10000;
+-				p=strchr(p,'.')+1;
+-				vers+=atoi(p)*100;
+-				p=strchr(p,'.')+1;
+-				vers+=atoi(p);
+-				if (vers<10400) return 1;
+-			])],
+-			[AC_MSG_RESULT([yes])],
+-			[AC_MSG_ERROR([version is < 1.4.0])])
+ 		AM_CONDITIONAL(HAVE_LIBGCRYPT, true)
+ 		AC_DEFINE([HAVE_LIBGCRYPT], [1] )
+ 		;;
+
diff --git a/abs/extra/community/afpfs-ng/02-pointer.patch b/abs/extra/community/afpfs-ng/02-pointer.patch
new file mode 100644
index 0000000..80507b5
--- /dev/null
+++ b/abs/extra/community/afpfs-ng/02-pointer.patch
@@ -0,0 +1,280 @@
+diff -up afpfs-ng-0.8.1/cmdline/getstatus.c.pointer afpfs-ng-0.8.1/cmdline/getstatus.c
+--- afpfs-ng-0.8.1/cmdline/getstatus.c.pointer	2011-06-14 17:06:35.000000000 +0200
++++ afpfs-ng-0.8.1/cmdline/getstatus.c	2011-06-14 17:07:25.000000000 +0200
+@@ -1,4 +1,5 @@
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <string.h>
+ #include <pthread.h>
+ 
+diff -up afpfs-ng-0.8.1/fuse/client.c.pointer afpfs-ng-0.8.1/fuse/client.c
+--- afpfs-ng-0.8.1/fuse/client.c.pointer	2008-03-08 03:44:16.000000000 +0100
++++ afpfs-ng-0.8.1/fuse/client.c	2011-06-14 17:02:15.000000000 +0200
+@@ -61,8 +61,9 @@ static int start_afpfsd(void)
+ 			snprintf(filename, PATH_MAX,
+ 				"/usr/local/bin/%s",AFPFSD_FILENAME);
+ 			if (access(filename,X_OK)) {
+-				snprintf(filename, "/usr/bin/%s",
++				snprintf(filename, sizeof(filename), "/usr/bin/%s",
+ 					AFPFSD_FILENAME);
++				filename[sizeof(filename) - 1] = 0;
+ 				if (access(filename,X_OK)) {
+ 					printf("Could not find server (%s)\n",
+ 						filename);
+diff -up afpfs-ng-0.8.1/fuse/fuse_int.c.pointer afpfs-ng-0.8.1/fuse/fuse_int.c
+--- afpfs-ng-0.8.1/fuse/fuse_int.c.pointer	2008-03-02 06:06:24.000000000 +0100
++++ afpfs-ng-0.8.1/fuse/fuse_int.c	2011-06-14 17:02:15.000000000 +0200
+@@ -197,7 +197,7 @@ static int fuse_open(const char *path, s
+ 	ret = ml_open(volume,path,flags,&fp);
+ 
+ 	if (ret==0) 
+-		fi->fh=(void *) fp;
++		fi->fh=(unsigned long) fp;
+ 
+ 	return ret;
+ }
+diff -up afpfs-ng-0.8.1/include/afpfs-ng/afp.h.pointer afpfs-ng-0.8.1/include/afp.h
+--- afpfs-ng-0.8.1/include/afpfs-ng/afp.h.pointer	2008-03-08 17:08:18.000000000 +0100
++++ afpfs-ng-0.8.1/include/afpfs-ng/afp.h	2011-06-14 17:02:15.000000000 +0200
+@@ -370,7 +370,7 @@ int afp_unmount_all_volumes(struct afp_s
+ 
+ int afp_opendt(struct afp_volume *volume, unsigned short * refnum);
+ 
+-int afp_closedt(struct afp_server * server, unsigned short * refnum);
++int afp_closedt(struct afp_server * server, unsigned short refnum);
+ 
+ int afp_getcomment(struct afp_volume *volume, unsigned int did,
+         const char * pathname, struct afp_comment * comment);
+diff -up afpfs-ng-0.8.1/include/afpfs-gn/utils.h.pointer afpfs-ng-0.8.1/include/utils.h
+--- afpfs-ng-0.8.1/include/afpfs-ng/utils.h.pointer	2008-02-18 04:33:58.000000000 +0100
++++ afpfs-ng-0.8.1/include/afpfs-ng/utils.h	2011-06-14 17:02:15.000000000 +0200
+@@ -8,8 +8,8 @@
+ #define hton64(x)       (x)
+ #define ntoh64(x)       (x)
+ #else /* BYTE_ORDER == BIG_ENDIAN */
+-#define hton64(x)       ((u_int64_t) (htonl(((x) >> 32) & 0xffffffffLL)) | \
+-                         (u_int64_t) ((htonl(x) & 0xffffffffLL) << 32))
++#define hton64(x)       ((u_int64_t) (htonl((((unsigned long long)(x)) >> 32) & 0xffffffffLL)) | \
++                         (u_int64_t) ((htonl((unsigned long long)(x)) & 0xffffffffLL) << 32))
+ #define ntoh64(x)       (hton64(x))
+ #endif /* BYTE_ORDER == BIG_ENDIAN */
+ 
+diff -up afpfs-ng-0.8.1/lib/afp_url.c.pointer afpfs-ng-0.8.1/lib/afp_url.c
+--- afpfs-ng-0.8.1/lib/afp_url.c.pointer	2008-03-04 21:16:49.000000000 +0100
++++ afpfs-ng-0.8.1/lib/afp_url.c	2011-06-14 17:02:15.000000000 +0200
+@@ -33,7 +33,7 @@ static int check_port(char * port) 
+ static int check_uamname(const char * uam) 
+ {
+ 	char * p;
+-	for (p=uam;*p;p++) {
++	for (p=(char *)uam;*p;p++) {
+ 		if (*p==' ') continue;
+ 		if ((*p<'A') || (*p>'z')) return -1;
+ 	}
+@@ -188,7 +188,7 @@ int afp_parse_url(struct afp_url * url, 
+ 		return -1;
+ 
+ 	}
+-	if (p==NULL) p=toparse;
++	if (p==NULL) p=(char *)toparse;
+ 
+ 	/* Now split on the first / */
+ 	if (sscanf(p,"%[^/]/%[^$]",
+diff -up afpfs-ng-0.8.1/lib/did.c.pointer afpfs-ng-0.8.1/lib/did.c
+--- afpfs-ng-0.8.1/lib/did.c.pointer	2008-02-18 04:39:17.000000000 +0100
++++ afpfs-ng-0.8.1/lib/did.c	2011-06-14 17:02:15.000000000 +0200
+@@ -226,7 +226,7 @@ int get_dirid(struct afp_volume * volume
+ 
+ 
+ 	/* Go to the end of last known entry */
+-	p=path+(p-copy);
++	p=(char *)path+(p-copy);
+ 	p2=p;
+ 
+ 	while ((p=strchr(p+1,'/'))) {
+diff -up afpfs-ng-0.8.1/lib/dsi.c.pointer afpfs-ng-0.8.1/lib/dsi.c
+--- afpfs-ng-0.8.1/lib/dsi.c.pointer	2008-02-18 04:53:03.000000000 +0100
++++ afpfs-ng-0.8.1/lib/dsi.c	2011-06-14 17:02:15.000000000 +0200
+@@ -474,7 +474,7 @@ void dsi_getstatus_reply(struct afp_serv
+ 	}
+ 	server->flags=ntohs(reply1->flags);
+ 
+-	p=(void *)((unsigned int) server->incoming_buffer + sizeof(*reply1));
++	p=(void *)((unsigned long) server->incoming_buffer + sizeof(*reply1));
+ 	p+=copy_from_pascal(server->server_name,p,AFP_SERVER_NAME_LEN)+1;
+ 
+ 	/* Now work our way through the variable bits */
+@@ -757,7 +757,7 @@ gotenough:
+ 		printf("<<< read() of rest of AFP, %d bytes\n",amount_to_read);
+ 		#endif
+ 		ret = read(server->fd, (void *)
+-		(((unsigned int) server->incoming_buffer)+server->data_read),
++		(((unsigned long) server->incoming_buffer)+server->data_read),
+ 			amount_to_read);
+ 		if (ret<0) return -1;
+ 		if (ret==0) {
+diff -up afpfs-ng-0.8.1/lib/loop.c.pointer afpfs-ng-0.8.1/lib/loop.c
+--- afpfs-ng-0.8.1/lib/loop.c.pointer	2008-02-18 04:40:11.000000000 +0100
++++ afpfs-ng-0.8.1/lib/loop.c	2011-06-14 17:02:15.000000000 +0200
+@@ -25,7 +25,7 @@
+ static unsigned char exit_program=0;
+ 
+ static pthread_t ending_thread;
+-static pthread_t main_thread = NULL;
++static pthread_t main_thread = (pthread_t)NULL;
+ 
+ static int loop_started=0;
+ static pthread_cond_t loop_started_condition;
+diff -up afpfs-ng-0.8.1/lib/lowlevel.c.pointer afpfs-ng-0.8.1/lib/lowlevel.c
+--- afpfs-ng-0.8.1/lib/lowlevel.c.pointer	2008-02-20 02:33:17.000000000 +0100
++++ afpfs-ng-0.8.1/lib/lowlevel.c	2011-06-14 17:02:15.000000000 +0200
+@@ -582,7 +582,7 @@ int ll_getattr(struct afp_volume * volum
+ 	if (volume->server->using_version->av_number>=30)
+ 		stbuf->st_mode |= fp.unixprivs.permissions;
+ 	else
+-		set_nonunix_perms(stbuf,&fp);
++		set_nonunix_perms(&stbuf->st_mode,&fp);
+ 
+ 	stbuf->st_uid=fp.unixprivs.uid;
+ 	stbuf->st_gid=fp.unixprivs.gid;
+diff -up afpfs-ng-0.8.1/lib/midlevel.c.pointer afpfs-ng-0.8.1/lib/midlevel.c
+--- afpfs-ng-0.8.1/lib/midlevel.c.pointer	2008-03-08 17:08:18.000000000 +0100
++++ afpfs-ng-0.8.1/lib/midlevel.c	2011-06-14 17:02:15.000000000 +0200
+@@ -713,7 +713,7 @@ int ml_write(struct afp_volume * volume,
+ {
+ 
+ 	int ret,err=0;
+-	int totalwritten = 0;
++	size_t totalwritten = 0;
+ 	uint64_t sizetowrite, ignored;
+ 	unsigned char flags = 0;
+ 	unsigned int max_packet_size=volume->server->tx_quantum;
+diff -up afpfs-ng-0.8.1/lib/proto_attr.c.pointer afpfs-ng-0.8.1/lib/proto_attr.c
+--- afpfs-ng-0.8.1/lib/proto_attr.c.pointer	2008-01-30 05:37:58.000000000 +0100
++++ afpfs-ng-0.8.1/lib/proto_attr.c	2011-06-14 17:02:15.000000000 +0200
+@@ -166,7 +166,7 @@ int afp_getextattr(struct afp_volume * v
+ 	copy_path(server,p,pathname,strlen(pathname));
+ 	unixpath_to_afppath(server,p);
+ 	p2=p+sizeof_path_header(server)+strlen(pathname);
+-	if (((unsigned int ) p2) & 0x1) p2++;
++	if (((unsigned long) p2) & 0x1) p2++;
+ 	req2=(void *) p2;
+ 
+ 	req2->len=htons(namelen);
+diff -up afpfs-ng-0.8.1/lib/proto_desktop.c.pointer afpfs-ng-0.8.1/lib/proto_desktop.c
+--- afpfs-ng-0.8.1/lib/proto_desktop.c.pointer	2008-02-18 04:44:11.000000000 +0100
++++ afpfs-ng-0.8.1/lib/proto_desktop.c	2011-06-14 17:02:15.000000000 +0200
+@@ -168,7 +168,7 @@ int afp_getcomment_reply(struct afp_serv
+ 	return 0;
+ }
+ 
+-int afp_closedt(struct afp_server * server, unsigned short * refnum) 
++int afp_closedt(struct afp_server * server, unsigned short refnum) 
+ {
+ 	struct {
+ 		struct dsi_header dsi_header __attribute__((__packed__));
+diff -up afpfs-ng-0.8.1/lib/proto_directory.c.pointer afpfs-ng-0.8.1/lib/proto_directory.c
+--- afpfs-ng-0.8.1/lib/proto_directory.c.pointer	2008-02-19 03:39:29.000000000 +0100
++++ afpfs-ng-0.8.1/lib/proto_directory.c	2011-06-14 17:02:15.000000000 +0200
+@@ -248,6 +248,7 @@ int afp_enumerate_reply(struct afp_serve
+ 
+ 	return 0;
+ }
++
+ int afp_enumerateext2_reply(struct afp_server *server, char * buf, unsigned int size, void * other) 
+ {
+ 
+@@ -266,8 +267,7 @@ int afp_enumerateext2_reply(struct afp_s
+ 	char * p = buf + sizeof(*reply);
+ 	int i;
+ 	char  *max=buf+size;
+-	struct afp_file_info * filebase = NULL, *filecur=NULL, *new_file=NULL;
+-	void ** x = other;
++	struct afp_file_info * filebase = NULL, *filecur = NULL, *new_file = NULL, **x = (struct afp_file_info **) other;
+ 
+ 	if (reply->dsi_header.return_code.error_code) {
+ 		return reply->dsi_header.return_code.error_code;
+diff -up afpfs-ng-0.8.1/lib/proto_map.c.pointer afpfs-ng-0.8.1/lib/proto_map.c
+--- afpfs-ng-0.8.1/lib/proto_map.c.pointer	2008-01-30 05:37:59.000000000 +0100
++++ afpfs-ng-0.8.1/lib/proto_map.c	2011-06-14 17:02:15.000000000 +0200
+@@ -122,7 +122,7 @@ int afp_mapid_reply(struct afp_server *s
+ 
+ 	if (reply->header.return_code.error_code!=kFPNoErr) return -1;
+ 
+-	copy_from_pascal_two(name,&reply->name,255);
++	copy_from_pascal_two(name,reply->name,255);
+ 
+ 	return 0;
+ }
+diff -up afpfs-ng-0.8.1/lib/proto_session.c.pointer afpfs-ng-0.8.1/lib/proto_session.c
+--- afpfs-ng-0.8.1/lib/proto_session.c.pointer	2008-02-18 04:46:19.000000000 +0100
++++ afpfs-ng-0.8.1/lib/proto_session.c	2011-06-14 17:02:15.000000000 +0200
+@@ -39,7 +39,7 @@ int afp_getsessiontoken(struct afp_serve
+ 	switch (type) {
+ 	case kLoginWithTimeAndID:
+ 	case kReconnWithTimeAndID: {
+-		uint32_t *p = (void *) (((unsigned int) request)+
++		uint32_t *p = (void *) (((unsigned long) request)+
+ 			sizeof(*request));
+ 
+ 		offset=sizeof(timestamp);
+@@ -63,7 +63,7 @@ int afp_getsessiontoken(struct afp_serve
+ 		goto error;
+ 	}
+ 
+-	data=(void *) (((unsigned int) request)+sizeof(*request)+offset);
++	data=(void *) (((unsigned long) request)+sizeof(*request)+offset);
+ 	request->idlength=htonl(datalen);
+ 	request->pad=0;
+ 	request->type=htons(type);
+@@ -127,7 +127,7 @@ int afp_disconnectoldsession(struct afp_
+ 	if ((request=malloc(sizeof(*request) + AFP_TOKEN_MAX_LEN))==NULL)
+ 		return -1;
+ 
+-	token_data  = request + sizeof(*request);
++	token_data  = (char *)request + sizeof(*request);
+ 
+ 	request->type=htons(type);
+ 
+diff -up afpfs-ng-0.8.1/lib/uams.c.pointer afpfs-ng-0.8.1/lib/uams.c
+--- afpfs-ng-0.8.1/lib/uams.c.pointer	2008-01-04 04:52:44.000000000 +0100
++++ afpfs-ng-0.8.1/lib/uams.c	2011-06-14 17:02:15.000000000 +0200
+@@ -180,7 +180,7 @@ static int cleartxt_login(struct afp_ser
+ 		goto cleartxt_fail;
+ 
+ 	p += copy_to_pascal(p, username) + 1;
+-	if ((int)p & 0x1)
++	if ((long)p & 0x1)
+ 		len--;
+ 	else
+ 		p++;
+@@ -230,7 +230,7 @@ static int cleartxt_passwd(struct afp_se
+ 		goto cleartxt_fail;
+ 
+ 	p += copy_to_pascal(p, username) + 1;
+-	if ((int)p & 0x1)
++	if ((long)p & 0x1)
+ 		len--;
+ 	else
+ 		p++;
+@@ -580,7 +580,7 @@ static int dhx_login(struct afp_server *
+ 	if (ai == NULL)
+ 		goto dhx_noctx_fail;
+ 	d += copy_to_pascal(ai, username) + 1;
+-	if (((int)d) % 2)
++	if (((long)d) % 2)
+ 		d++;
+ 	else
+ 		ai_len--;
+diff -up afpfs-ng-0.8.1/lib/utils.c.pointer afpfs-ng-0.8.1/lib/utils.c
+--- afpfs-ng-0.8.1/lib/utils.c.pointer	2008-02-18 04:53:37.000000000 +0100
++++ afpfs-ng-0.8.1/lib/utils.c	2011-06-14 17:02:15.000000000 +0200
+@@ -196,7 +196,7 @@ int invalid_filename(struct afp_server *
+ 			maxlen=255;
+ 
+ 
+-	p=filename+1;
++	p=(char *)filename+1;
+ 	while ((q=strchr(p,'/'))) {
+ 		if (q>p+maxlen)
+ 			return 1;
diff --git a/abs/extra/community/afpfs-ng/10-fix-errno.patch b/abs/extra/community/afpfs-ng/10-fix-errno.patch
new file mode 100644
index 0000000..ff7ce44
--- /dev/null
+++ b/abs/extra/community/afpfs-ng/10-fix-errno.patch
@@ -0,0 +1,23 @@
+--- afpfs-ng-0.8.1/lib/afp.c	2011-09-04 19:42:42.000000000 +0200
++++ afpfs-ng-0.8.1/lib/afp.c	2011-09-04 19:39:44.000000000 +0200
+@@ -19,7 +19,6 @@
+ #include <sys/time.h>
+ #include <sys/types.h>
+ #include <sys/socket.h>
+-#include <errno.h>
+ 
+ #include <afpfs-ng/afp_protocol.h>
+ #include <afpfs-ng/libafpclient.h>
+--- afpfs-ng-0.8.1/lib/afp_url.c	2011-09-04 19:42:42.000000000 +0200
++++ afpfs-ng-0.8.1/lib/afp_url.c	2011-09-04 19:40:27.000000000 +0200
+@@ -21,7 +21,9 @@
+ 
+ static int check_port(char * port) 
+ {
+-	long long ret = strtol(port,NULL,10);
++	long long ret = 0;
++	errno = 0;
++	ret = strtol(port,NULL,10);
+ 	if ((ret<0) || (ret>32767)) return -1;
+ 	if (errno) {
+ 		printf("port error\n");
diff --git a/abs/extra/community/afpfs-ng/20-build-error-fixes.patch b/abs/extra/community/afpfs-ng/20-build-error-fixes.patch
new file mode 100644
index 0000000..303e264
--- /dev/null
+++ b/abs/extra/community/afpfs-ng/20-build-error-fixes.patch
@@ -0,0 +1,125 @@
+Description: Fix build errors.
+Origin: http://anonscm.debian.org/gitweb/?p=collab-maint/afpfs-ng.git;a=blob;f=debian/patches/build-error-fixes.patch
+
+--- a/lib/afp_url.c
++++ b/lib/afp_url.c
+@@ -233,7 +233,7 @@
+ 		}
+ 	}
+ 
+-	snprintf(url->servername,strlen(p)+1,p);
++	strcpy(url->servername,p);
+ 	if (check_servername(url->servername)) {
+ 			if (verbose) printf("This isn't a valid servername\n");
+ 			return -1;
+@@ -263,7 +263,7 @@
+ 	if ((q=escape_strrchr(p,':',":"))) {
+ 		*q='\0';
+ 		q++;
+-		snprintf(url->password,strlen(q)+1,q);
++		strcpy(url->password,q);
+ 		if (check_password(url->password)) {
+ 			if (verbose) printf("This isn't a valid passwd\n");
+ 			return -1;
+@@ -276,7 +276,7 @@
+ 	if ((q=strstr(p,";AUTH="))) {
+ 		*q='\0';
+ 		q+=6;
+-		snprintf(url->uamname,strlen(q)+1,q);
++		strcpy(url->uamname,q);
+ 		if (check_uamname(url->uamname)) {
+ 			if (verbose) printf("This isn't a valid uamname\n");
+ 			return -1;
+@@ -284,7 +284,7 @@
+ 	}
+ 
+ 	if (strlen(p)>0) {
+-		snprintf(url->username,strlen(p)+1,p);
++		strcpy(url->username,p);
+ 		if (check_username(url->username)) {
+ 			if (verbose) printf("This isn't a valid username\n");
+ 			return -1;;
+@@ -304,12 +304,12 @@
+ 		*q='\0';
+ 		q++;
+ 	}
+-	snprintf(url->volumename,strlen(p)+1,p);
++	strcpy(url->volumename,p);
+ 
+ 
+ 	if (q) {
+ 		url->path[0]='/';
+-		snprintf(url->path+1,strlen(q)+1,q);
++		strcpy(url->path+1,q);
+ 	}
+ 
+ done:
+--- a/fuse/commands.c
++++ b/fuse/commands.c
+@@ -163,8 +163,7 @@
+ 
+ 	if (c) {
+ 		len = strlen(c->client_string);
+-		snprintf(c->client_string+len,
+-			MAX_CLIENT_RESPONSE-len,
++		strcpy(c->client_string+len,
+ 			message);
+ 	} else {
+ 
+@@ -468,7 +467,7 @@
+ 	volume->mapping=req->map;
+ 	afp_detect_mapping(volume);
+ 
+-	snprintf(volume->mountpoint,255,req->mountpoint);
++	strcpy(volume->mountpoint,req->mountpoint);
+ 
+ 	/* Create the new thread and block until we get an answer back */
+ 	{
+--- a/fuse/client.c
++++ b/fuse/client.c
+@@ -547,7 +547,7 @@
+ done:
+ 	memset(toprint,0,MAX_CLIENT_RESPONSE+200);
+ 	snprintf(toprint,MAX_CLIENT_RESPONSE+200,"%s",incoming_buffer+sizeof(*answer));
+-	printf(toprint);
++	printf("%s",toprint);
+ 	return ((struct afp_server_response *) incoming_buffer)->result;
+ 
+ 	return 0;
+--- a/cmdline/cmdline_afp.c
++++ b/cmdline/cmdline_afp.c
+@@ -828,11 +828,11 @@
+ 	char text[40960];
+ 
+ 	afp_status_header(text,&len);
+-	printf(text);
++	printf("%s",text);
+ 
+ 	len=40960;
+ 	afp_status_server(server,text,&len);
+-	printf(text);
++	printf("%s",text);
+ 	return 0;
+ }
+ 
+--- a/cmdline/cmdline_testafp.c
++++ b/cmdline/cmdline_testafp.c
+@@ -26,12 +26,12 @@
+ 	struct afp_url valid_url;
+ 	afp_default_url(&valid_url);
+ 	valid_url.protocol=protocol;
+-	sprintf(valid_url.servername,servername);
+-	sprintf(valid_url.volumename,volumename);
+-	sprintf(valid_url.path,path);
+-	sprintf(valid_url.username,username);
+-	sprintf(valid_url.password,password);
+-	sprintf(valid_url.uamname,uamname);
++	strcpy(valid_url.servername,servername);
++	strcpy(valid_url.volumename,volumename);
++	strcpy(valid_url.path,path);
++	strcpy(valid_url.username,username);
++	strcpy(valid_url.password,password);
++	strcpy(valid_url.uamname,uamname);
+ 	valid_url.port=port;
+ 
+ 	if (afp_url_validate(url_string,&valid_url)) 
diff --git a/abs/extra/community/afpfs-ng/21-header-path-fix.patch b/abs/extra/community/afpfs-ng/21-header-path-fix.patch
new file mode 100644
index 0000000..fe79b1f
--- /dev/null
+++ b/abs/extra/community/afpfs-ng/21-header-path-fix.patch
@@ -0,0 +1,16 @@
+Description: Ensure internal headers are picked instead of system headers.
+Origin: http://anonscm.debian.org/gitweb/?p=collab-maint/afpfs-ng.git;a=blob;f=debian/patches/header-path-fix.patch
+
+--- a/include/afpfs-ng/afp.h
++++ b/include/afpfs-ng/afp.h
+@@ -7,8 +7,8 @@
+ #include <netdb.h>
+ #include <sys/statvfs.h>
+ #include <pwd.h>
+-#include <afpfs-ng/afp_protocol.h>
+-#include <afpfs-ng/libafpclient.h>
++#include "afp_protocol.h"
++#include "libafpclient.h"
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
diff --git a/abs/extra/community/afpfs-ng/30-include-fixes.patch b/abs/extra/community/afpfs-ng/30-include-fixes.patch
new file mode 100644
index 0000000..de4f883
--- /dev/null
+++ b/abs/extra/community/afpfs-ng/30-include-fixes.patch
@@ -0,0 +1,44 @@
+--- a/include/afpfs-ng/dsi.h	2012-02-23 10:02:07.062734160 +0100
++++ b/include/afpfs-ng/dsi.h	2012-02-23 10:09:46.297111254 +0100
+@@ -2,7 +2,7 @@
+ #ifndef __DSI_H_
+ #define __DSI_H_
+ 
+-#include "afpfs-ng/afp.h"
++#include "afp.h"
+ 
+ struct dsi_request
+ {
+--- a/include/afpfs-ng/map_def.h	2012-02-23 10:02:07.062734160 +0100
++++ b/include/afpfs-ng/map_def.h	2012-02-23 10:11:32.769953053 +0100
+@@ -1,7 +1,7 @@
+ #ifndef __MAP_H_
+ #define __MAP_H_
+ 
+-#include "afpfs-ng/afp.h"
++#include "afp.h"
+ 
+ #define AFP_MAPPING_UNKNOWN 0
+ #define AFP_MAPPING_COMMON 1
+--- a/include/afpfs-ng/midlevel.h	2012-02-23 10:02:07.062734160 +0100
++++ b/include/afpfs-ng/midlevel.h	2012-02-23 10:12:40.519943675 +0100
+@@ -2,7 +2,7 @@
+ #define __MIDLEVEL_H_ 
+ 
+ #include <utime.h>
+-#include "afpfs-ng/afp.h"
++#include "afp.h"
+ 
+ int ml_open(struct afp_volume * volume, const char *path, int flags, 
+         struct afp_file_info **newfp);
+--- a/include/afpfs-ng/utils.h	2012-02-23 10:14:42.212332892 +0100
++++ b/include/afpfs-ng/utils.h	2012-02-23 10:14:51.116069525 +0100
+@@ -2,7 +2,7 @@
+ #define __UTILS_H_
+ #include <stdio.h>
+ 
+-#include "afpfs-ng/afp.h"
++#include "afp.h"
+ 
+ #if BYTE_ORDER == BIG_ENDIAN
+ #define hton64(x)       (x)
diff --git a/abs/extra/community/afpfs-ng/PKGBUILD b/abs/extra/community/afpfs-ng/PKGBUILD
new file mode 100644
index 0000000..4538db9
--- /dev/null
+++ b/abs/extra/community/afpfs-ng/PKGBUILD
@@ -0,0 +1,66 @@
+# $Id$
+# Maintainer: BlackIkeEagle <ike DOT devolder AT gmail DOT com>
+# Contributor: slubman <slubman.dndd@laposte.net>
+
+pkgname=afpfs-ng
+pkgver=0.8.1
+pkgrel=5
+pkgdesc="A client for the Apple Filing Protocol (AFP)"
+url="http://alexthepuffin.googlepages.com/"
+license=('GPL')
+depends=('gmp' 'fuse' 'libgcrypt')
+arch=('i686' 'x86_64')
+options=(!libtool)
+source=(
+	"http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2"
+	'fix_afpfs-ng_includes.patch'
+	'01-gcrypt.patch'
+	'02-pointer.patch'
+	'10-fix-errno.patch'
+	'20-build-error-fixes.patch'
+	'21-header-path-fix.patch'
+	'30-include-fixes.patch'
+)
+sha256sums=(
+	'688560de1cde57ab8d9e0ef7dc6436dbf0267fe8884f9014e50ff92b297b01a8'
+	'627d94ab3c1cbc002b18839f514c6fa980b0a25dfc21e8761b389fcd39f32755'
+	'18dc77b064fc02c229e0cfa071a7e31cde6d0243671ebde2f561ebdf09dc38bb'
+	'8537b086c496e776be2a6757325717cb15dee6dcf2aedccebed6b4b2332d3dc1'
+	'0e1c0c0e3a9ff6e55ccbbbc1b4de630c874ff058e2ea94360b7d90e650d04811'
+	'393662da1bcd5d3aba180a2add37d9006e0a487c3bb7bf157a15aa492f4d6a87'
+	'f551ae9debe8ce2c4ed1d7a8bce497801ace995473876a5fefa0443353232477'
+	'71b8f52923cef39f0cccb8fdff610575958fd5dbed66e5aa4413ae6aceeec656'
+)
+
+build() {
+	cd "$pkgname-$pkgver"
+	# apply patches
+	msg2 'fix_afpfs-ng_includes.patch'
+	patch -Np1 -i "$srcdir/fix_afpfs-ng_includes.patch"
+	msg2 '01-gcrypt.patch'
+	patch -Np1 -i "$srcdir/01-gcrypt.patch"
+	msg2 '02-pointer.patch'
+	patch -Np1 -i "$srcdir/02-pointer.patch"
+	msg2 '10-fix-errno.patch'
+	patch -Np1 -i "$srcdir/10-fix-errno.patch"
+	msg2 '20-build-error-fixes.patch'
+	patch -Np1 -i "$srcdir/20-build-error-fixes.patch"
+	msg2 '21-header-path-fix.patch'
+	patch -Np1 -i "$srcdir/21-header-path-fix.patch"
+	msg2 '30-include-fixes.patch'
+	patch -Np1 -i "$srcdir/30-include-fixes.patch"
+
+	./configure --prefix=/usr
+	make
+}
+
+package() {
+	cd "$pkgname-$pkgver"
+	make DESTDIR="$pkgdir" install
+
+	# install headers
+	cd include
+	for header in afpfs-ng/*.h; do
+		install -Dm644 "$header" "$pkgdir/usr/include/$header"
+	done
+}
diff --git a/abs/extra/community/afpfs-ng/fix_afpfs-ng_includes.patch b/abs/extra/community/afpfs-ng/fix_afpfs-ng_includes.patch
new file mode 100644
index 0000000..f507a48
--- /dev/null
+++ b/abs/extra/community/afpfs-ng/fix_afpfs-ng_includes.patch
@@ -0,0 +1,3082 @@
+diff -Naur afpfs-ng-0.8.1/cmdline/cmdline_afp.c afpfs-ng-0.8.1.patch/cmdline/cmdline_afp.c
+--- afpfs-ng-0.8.1/cmdline/cmdline_afp.c	2008-02-19 02:54:19.000000000 +0100
++++ afpfs-ng-0.8.1.patch/cmdline/cmdline_afp.c	2011-09-10 12:13:50.102124369 +0200
+@@ -3,9 +3,9 @@
+ 	
+ */
+ 
+-#include "afp.h"
+-#include "midlevel.h"
+-#include "map_def.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/midlevel.h"
++#include "afpfs-ng/map_def.h"
+ 
+ #include <string.h>
+ #include <stdio.h>
+diff -Naur afpfs-ng-0.8.1/cmdline/cmdline_testafp.c afpfs-ng-0.8.1.patch/cmdline/cmdline_testafp.c
+--- afpfs-ng-0.8.1/cmdline/cmdline_testafp.c	2008-03-04 21:16:50.000000000 +0100
++++ afpfs-ng-0.8.1.patch/cmdline/cmdline_testafp.c	2011-09-10 12:13:50.102124369 +0200
+@@ -3,8 +3,8 @@
+ 	
+ */
+ 
+-#include "afp.h"
+-#include "midlevel.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/midlevel.h"
+ 
+ #include "cmdline_main.h"
+ 
+diff -Naur afpfs-ng-0.8.1/cmdline/getstatus.c afpfs-ng-0.8.1.patch/cmdline/getstatus.c
+--- afpfs-ng-0.8.1/cmdline/getstatus.c	2008-02-18 04:28:09.000000000 +0100
++++ afpfs-ng-0.8.1.patch/cmdline/getstatus.c	2011-09-10 12:13:50.109124463 +0200
+@@ -2,7 +2,7 @@
+ #include <string.h>
+ #include <pthread.h>
+ 
+-#include "afp.h"
++#include "afpfs-ng/afp.h"
+ 
+ static int getstatus(char * address_string, unsigned int port)
+ {
+diff -Naur afpfs-ng-0.8.1/configure.ac afpfs-ng-0.8.1.patch/configure.ac
+--- afpfs-ng-0.8.1/configure.ac	2008-03-08 17:23:12.000000000 +0100
++++ afpfs-ng-0.8.1.patch/configure.ac	2011-09-10 12:13:50.109124463 +0200
+@@ -11,6 +11,7 @@
+ AC_PROG_CC
+ AC_PROG_INSTALL
+ AC_PROG_LIBTOOL
++AM_PROG_CC_C_O
+ 
+ # Checks for libraries.
+ # FIXME: Replace `main' with a function in `-lncurses':
+@@ -105,7 +106,7 @@
+ 
+ 
+ 
+-AC_CONFIG_FILES([lib/Makefile fuse/Makefile cmdline/Makefile Makefile docs/Makefile])
++AC_CONFIG_FILES([lib/Makefile fuse/Makefile cmdline/Makefile Makefile include/Makefile include/afpfs-ng/Makefile docs/Makefile])
+ 
+ AC_OUTPUT
+ 
+diff -Naur afpfs-ng-0.8.1/fuse/client.c afpfs-ng-0.8.1.patch/fuse/client.c
+--- afpfs-ng-0.8.1/fuse/client.c	2008-03-08 03:44:16.000000000 +0100
++++ afpfs-ng-0.8.1.patch/fuse/client.c	2011-09-10 12:13:50.110124477 +0200
+@@ -12,11 +12,11 @@
+ #include <grp.h>
+ 
+ #include "config.h"
+-#include <afp.h>
++#include <afpfs-ng/afp.h>
+ #include "afp_server.h"
+-#include "uams_def.h"
+-#include "map_def.h"
+-#include "libafpclient.h"
++#include "afpfs-ng/uams_def.h"
++#include "afpfs-ng/map_def.h"
++#include "afpfs-ng/libafpclient.h"
+ 
+ #define default_uam "Cleartxt Passwrd"
+ 
+diff -Naur afpfs-ng-0.8.1/fuse/commands.c afpfs-ng-0.8.1.patch/fuse/commands.c
+--- afpfs-ng-0.8.1/fuse/commands.c	2008-03-08 17:06:25.000000000 +0100
++++ afpfs-ng-0.8.1.patch/fuse/commands.c	2011-09-10 12:13:50.110124477 +0200
+@@ -19,15 +19,15 @@
+ #include <getopt.h>
+ #include <signal.h>
+ 
+-#include "afp.h"
+-#include "dsi.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/dsi.h"
+ #include "afp_server.h"
+-#include "utils.h"
++#include "afpfs-ng/utils.h"
+ #include "daemon.h"
+-#include "uams_def.h"
+-#include "codepage.h"
+-#include "libafpclient.h"
+-#include "map_def.h"
++#include "afpfs-ng/uams_def.h"
++#include "afpfs-ng/codepage.h"
++#include "afpfs-ng/libafpclient.h"
++#include "afpfs-ng/map_def.h"
+ #include "fuse_int.h"
+ #include "fuse_error.h"
+ #include "fuse_internal.h"
+diff -Naur afpfs-ng-0.8.1/fuse/daemon.c afpfs-ng-0.8.1.patch/fuse/daemon.c
+--- afpfs-ng-0.8.1/fuse/daemon.c	2008-03-04 18:26:05.000000000 +0100
++++ afpfs-ng-0.8.1.patch/fuse/daemon.c	2011-09-10 12:13:50.110124477 +0200
+@@ -23,11 +23,11 @@
+ #include <signal.h>
+ #include <sys/socket.h>
+ 
+-#include "afp.h"
++#include "afpfs-ng/afp.h"
+ 
+-#include "dsi.h"
++#include "afpfs-ng/dsi.h"
+ #include "afp_server.h"
+-#include "utils.h"
++#include "afpfs-ng/utils.h"
+ #include "daemon.h"
+ #include "commands.h"
+ 
+diff -Naur afpfs-ng-0.8.1/fuse/fuse_error.c afpfs-ng-0.8.1.patch/fuse/fuse_error.c
+--- afpfs-ng-0.8.1/fuse/fuse_error.c	2008-01-18 05:40:10.000000000 +0100
++++ afpfs-ng-0.8.1.patch/fuse/fuse_error.c	2011-09-10 12:13:50.111124491 +0200
+@@ -4,7 +4,7 @@
+ #include <unistd.h>
+ #include <string.h>
+ #include <stdio.h>
+-#include "libafpclient.h"
++#include "afpfs-ng/libafpclient.h"
+ #include "fuse_internal.h"
+ 
+ #define TMP_FILE "/tmp/fuse_stderr"
+diff -Naur afpfs-ng-0.8.1/fuse/fuse_int.c afpfs-ng-0.8.1.patch/fuse/fuse_int.c
+--- afpfs-ng-0.8.1/fuse/fuse_int.c	2008-03-02 06:06:24.000000000 +0100
++++ afpfs-ng-0.8.1.patch/fuse/fuse_int.c	2011-09-10 12:13:50.111124491 +0200
+@@ -18,7 +18,7 @@
+ #define FUSE_USE_VERSION 25
+ 
+ 
+-#include "afp.h"
++#include "afpfs-ng/afp.h"
+ 
+ #include <fuse.h>
+ #include <stdio.h>
+@@ -39,10 +39,10 @@
+ #include <pwd.h>
+ #include <stdarg.h>
+ 
+-#include "dsi.h"
+-#include "afp_protocol.h"
+-#include "codepage.h"
+-#include "midlevel.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/afp_protocol.h"
++#include "afpfs-ng/codepage.h"
++#include "afpfs-ng/midlevel.h"
+ #include "fuse_error.h"
+ 
+ /* Uncomment the following line to enable full debugging: */
+diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/afp.h afpfs-ng-0.8.1.patch/include/afpfs-ng/afp.h
+--- afpfs-ng-0.8.1/include/afpfs-ng/afp.h	1970-01-01 01:00:00.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/afpfs-ng/afp.h	2011-09-10 12:13:50.112124505 +0200
+@@ -0,0 +1,533 @@
++
++#ifndef _AFP_H_
++#define _AFP_H_
++
++#include <arpa/inet.h>
++#include <pthread.h>
++#include <netdb.h>
++#include <sys/statvfs.h>
++#include <pwd.h>
++#include <afpfs-ng/afp_protocol.h>
++#include <afpfs-ng/libafpclient.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <unistd.h>
++#include <netinet/in.h>
++
++
++#define AFPFS_VERSION "0.8.1"
++
++/* This is the maximum AFP version this library supports */
++#define AFP_MAX_SUPPORTED_VERSION 32
++
++/* afp_url is used to pass locations around */
++struct afp_url {
++	enum {TCPIP,AT} protocol;
++	char username[AFP_MAX_USERNAME_LEN];
++	char uamname[50];
++	char password[AFP_MAX_PASSWORD_LEN];
++	char servername[AFP_SERVER_NAME_UTF8_LEN];
++	int port;
++	char volumename[AFP_VOLUME_NAME_UTF8_LEN];
++	char path[AFP_MAX_PATH];
++
++	int requested_version;
++	char zone[AFP_ZONE_LEN]; /* Only used for Appletalk */
++	char volpassword[9];;
++};
++
++struct afp_token {
++	unsigned int length;
++	char data[AFP_TOKEN_MAX_LEN];
++};
++
++#define SERVER_MAX_VERSIONS 10
++#define SERVER_MAX_UAMS 10
++
++struct afp_rx_buffer {
++	unsigned int size;
++	unsigned int maxsize;
++	char * data;
++	int errorcode;
++};
++
++
++struct afp_file_info {
++	unsigned short attributes;
++	unsigned int did;
++	unsigned int creation_date;
++	unsigned int modification_date;
++	unsigned int backup_date;
++	unsigned int fileid;
++	unsigned short offspring;
++	char sync;
++	char finderinfo[32];
++	char name[AFP_MAX_PATH];
++	char basename[AFP_MAX_PATH];
++	char translated_name[AFP_MAX_PATH];
++	struct afp_unixprivs unixprivs;
++	unsigned int accessrights;
++	struct afp_file_info * next;
++	struct afp_file_info * largelist_next;
++	unsigned char isdir;
++	unsigned long long size;
++	unsigned short resourcesize;
++	unsigned int resource;
++	unsigned short forkid;
++	struct afp_icon * icon;
++	int eof;
++};
++
++
++#define VOLUME_EXTRA_FLAGS_VOL_CHMOD_KNOWN 0x1
++#define VOLUME_EXTRA_FLAGS_VOL_CHMOD_BROKEN 0x2
++#define VOLUME_EXTRA_FLAGS_SHOW_APPLEDOUBLE 0x4
++#define VOLUME_EXTRA_FLAGS_VOL_SUPPORTS_UNIX 0x8
++#define VOLUME_EXTRA_FLAGS_NO_LOCKING 0x10
++#define VOLUME_EXTRA_FLAGS_IGNORE_UNIXPRIVS 0x20
++#define VOLUME_EXTRA_FLAGS_READONLY 0x40
++
++#define AFP_VOLUME_UNMOUNTED 0
++#define AFP_VOLUME_MOUNTED 1
++#define AFP_VOLUME_UNMOUNTING 2
++
++struct afp_volume {
++	unsigned short volid;
++	char flags;  /* This is from afpGetSrvrParms */
++	unsigned short attributes; /* This is from VolOpen */
++	unsigned short signature;  /* This is fixed or variable */
++	unsigned int creation_date;
++	unsigned int modification_date;
++	unsigned int backup_date;
++	struct statvfs stat;
++	unsigned char mounted;
++	char mountpoint[255];
++	struct afp_server * server;
++	char volume_name[AFP_VOLUME_NAME_LEN];
++	char volume_name_printable[AFP_VOLUME_NAME_UTF8_LEN];
++	unsigned short dtrefnum;
++	char volpassword[AFP_VOLPASS_LEN];
++	unsigned int extra_flags; /* This is an afpfs-ng specific field */
++
++	/* Our directory ID cache */
++	struct did_cache_entry * did_cache_base;
++	pthread_mutex_t did_cache_mutex;
++
++	/* Our journal of open forks */
++	struct afp_file_info * open_forks;
++	pthread_mutex_t open_forks_mutex;
++
++	/* Used to trigger startup */
++        pthread_cond_t  startup_condition_cond;
++
++	struct {
++		uint64_t hits;
++		uint64_t misses;
++		uint64_t expired;
++		uint64_t force_removed;
++	} did_cache_stats;
++
++	void * priv;  /* This is a private structure for fuse/cmdline, etc */
++	pthread_t thread; /* This is the per-volume thread */
++
++	int mapping;
++
++};
++
++#define SERVER_STATE_CONNECTED 1
++#define SERVER_STATE_DISCONNECTED 2
++
++enum server_type{
++	AFPFS_SERVER_TYPE_UNKNOWN,
++	AFPFS_SERVER_TYPE_NETATALK,
++	AFPFS_SERVER_TYPE_AIRPORT,
++	AFPFS_SERVER_TYPE_MACINTOSH,
++};
++
++#define is_netatalk(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_NETATALK )
++#define is_airport(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_AIRPORT )
++#define is_macintosh(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_MACINTOSH )
++
++
++
++struct afp_versions {
++        char        *av_name;
++        int         av_number;
++};
++extern struct afp_versions afp_versions[];
++
++struct afp_server {
++
++	/* Our buffer sizes */
++	unsigned int tx_quantum;
++	unsigned int rx_quantum;
++
++	unsigned int tx_delay;
++
++	/* Connection information */
++	struct sockaddr_in address;
++	int fd;
++
++	/* Some stats, for information only */
++	struct {
++		uint64_t runt_packets;
++		uint64_t incoming_dsi;
++		uint64_t rx_bytes;
++		uint64_t tx_bytes;
++		uint64_t requests_pending;
++	} stats;
++
++	/* General information */
++	char server_name[AFP_SERVER_NAME_LEN];
++	char server_name_utf8[AFP_SERVER_NAME_UTF8_LEN];
++        char server_name_printable[AFP_SERVER_NAME_UTF8_LEN];
++
++	char machine_type[17];
++	char icon[256];
++	char signature[16];
++	unsigned short flags;
++	int connect_state;
++	enum server_type server_type;
++
++	/* This is the time we connected */
++	time_t connect_time;
++
++	/* UAMs */
++	unsigned int supported_uams;
++	unsigned int using_uam;
++
++	/* Authentication */
++	char username[AFP_MAX_USERNAME_LEN];
++	char password[AFP_MAX_PASSWORD_LEN];
++
++	/* Session */
++	struct afp_token token;
++	char need_resume;
++
++	/* Versions */
++	unsigned char requested_version;
++	unsigned char versions[SERVER_MAX_VERSIONS];
++	struct afp_versions *using_version;
++
++	/* Volumes */
++	unsigned char num_volumes;
++	struct afp_volume * volumes;
++
++	void * dsi;
++	unsigned int exit_flag;
++
++	/* Our DSI request queue */
++	pthread_mutex_t requestid_mutex;
++	pthread_mutex_t request_queue_mutex;
++	unsigned short lastrequestid;
++	unsigned short expectedrequestid;
++	struct dsi_request * command_requests;
++
++
++	char loginmesg[200];
++	char servermesg[200];
++	char path_encoding;
++
++	/* This is the data for the incoming buffer */
++	char * incoming_buffer;
++	int data_read;
++	int bufsize;
++
++	/* And this is for the outgoing queue */
++	pthread_mutex_t send_mutex;
++
++	/* This is for user mapping */
++	struct passwd passwd;
++	unsigned int server_uid, server_gid;
++	int server_gid_valid;
++
++	struct afp_server *next;
++
++	/* These are for DSI attention packets */
++	unsigned int attention_quantum;
++	unsigned int attention_len;
++	char * attention_buffer;
++
++};
++
++struct afp_extattr_info {
++	unsigned int maxsize;
++	unsigned int size;
++	char data[1024];
++};
++struct afp_comment {
++	unsigned int maxsize;
++	unsigned int size;
++	char *data;
++};
++
++struct afp_icon {
++	unsigned int maxsize;
++	unsigned int size;
++	char *data;
++};
++
++#define AFP_DEFAULT_ATTENTION_QUANTUM 1024
++
++void afp_unixpriv_to_stat(struct afp_file_info *fp,
++	struct stat *stat);
++
++int init_uams(void) ;
++
++unsigned int find_uam_by_name(const char * name);
++char * uam_bitmap_to_string(unsigned int bitmap);
++
++
++char * get_uam_names_list(void);
++
++unsigned int default_uams_mask(void);
++
++struct afp_volume * find_volume_by_name(struct afp_server * server,
++        const char * volname);
++
++struct afp_connection_request {
++        unsigned int uam_mask;
++	struct afp_url url;
++};
++
++void afp_default_url(struct afp_url *url);
++int afp_parse_url(struct afp_url * url, const char * toparse, int verbose);
++void afp_print_url(struct afp_url * url);
++int afp_url_validate(char * url_string, struct afp_url * valid_url);
++
++int afp_list_volnames(struct afp_server * server, char * names, int max);
++
++/* User mapping */
++int afp_detect_mapping(struct afp_volume * volume);
++
++/* These are some functions that help with simple status text generation */
++
++int afp_status_header(char * text, int * len);
++int afp_status_server(struct afp_server * s,char * text, int * len);
++
++
++struct afp_server * afp_server_full_connect(void * priv, struct afp_connection_request * req);
++
++void * just_end_it_now(void *other);
++void add_fd_and_signal(int fd);
++void loop_disconnect(struct afp_server *s);
++void afp_wait_for_started_loop(void);
++
++
++struct afp_versions * pick_version(unsigned char *versions,
++	unsigned char requested) ;
++int pick_uam(unsigned int u1, unsigned int u2);
++
++int afp_server_login(struct afp_server *server,
++        char * mesg, unsigned int *l, unsigned int max);
++
++
++int afp_dologin(struct afp_server *server,
++	unsigned int uam, char * username, char * passwd);
++
++void afp_free_server(struct afp_server **server);
++
++struct afp_server * afp_server_init(struct sockaddr_in * address);
++int afp_get_address(void * priv, const char * hostname, unsigned int port,
++	struct sockaddr_in * address);
++
++
++int afp_main_loop(int command_fd);
++int afp_main_quick_startup(pthread_t * thread);
++
++int afp_server_destroy(struct afp_server *s) ;
++int afp_server_reconnect(struct afp_server * s, char * mesg,
++        unsigned int *l, unsigned int max);
++int afp_server_connect(struct afp_server *s, int full);
++
++struct afp_server * afp_server_complete_connection(
++	void * priv,
++	struct afp_server * server,
++	struct sockaddr_in * address, unsigned char * versions,
++	unsigned int uams, char * username, char * password,
++	unsigned int requested_version, unsigned int uam_mask);
++
++int afp_connect_volume(struct afp_volume * volume, struct afp_server * server,
++	char * mesg, unsigned int * l, unsigned int max);
++int something_is_mounted(struct afp_server * server);
++
++int add_cache_entry(struct afp_file_info * file) ;
++struct afp_file_info * get_cache_by_name(char * name);
++struct afp_server * find_server_by_address(struct sockaddr_in * address);
++struct afp_server * find_server_by_signature(char * signature);
++struct afp_server * find_server_by_name(char * name);
++int server_still_valid(struct afp_server * server);
++
++
++struct afp_server * get_server_base(void);
++int afp_server_remove(struct afp_server * server);
++
++int afp_unmount_volume(struct afp_volume * volume);
++int afp_unmount_all_volumes(struct afp_server * server);
++
++#define volume_is_readonly(x) (((x)->attributes&kReadOnly) || \
++	((x)->extra_flags & VOLUME_EXTRA_FLAGS_READONLY))
++
++int afp_opendt(struct afp_volume *volume, unsigned short * refnum);
++
++int afp_closedt(struct afp_server * server, unsigned short * refnum);
++
++int afp_getcomment(struct afp_volume *volume, unsigned int did,
++        const char * pathname, struct afp_comment * comment);
++
++int afp_addcomment(struct afp_volume *volume, unsigned int did,
++        const char * pathname, char * comment,uint64_t *size);
++
++int afp_geticon(struct afp_volume * volume, unsigned int filecreator,
++        unsigned int filetype, unsigned char icontype, 
++	unsigned short length, struct afp_icon * icon);
++
++/* Things you want to do to a server */
++
++int afp_getsrvrmsg(struct afp_server *server, unsigned short messagetype,unsigned char utf8, unsigned char block, char * mesg);
++
++int afp_login(struct afp_server *server, char * uaname,
++        char * userauthinfo, unsigned int userauthinfo_len,
++	struct afp_rx_buffer *rx);
++
++int afp_changepassword(struct afp_server *server, char * uaname,
++        char * userauthinfo, unsigned int userauthinfo_len,
++	struct afp_rx_buffer *rx);
++
++int afp_logincont(struct afp_server *server, unsigned short id,
++        char * userauthinfo, unsigned int userauthinfo_len,
++	struct afp_rx_buffer *rx);
++
++int afp_getsessiontoken(struct afp_server * server, int type,
++        unsigned int timestamp, struct afp_token *outgoing_token,
++        struct afp_token * incoming_token);
++
++int afp_getsrvrparms(struct afp_server *server);
++
++int afp_logout(struct afp_server *server,unsigned char wait);
++
++int afp_mapname(struct afp_server * server, unsigned char subfunction,
++        char * name, unsigned int * id);
++
++int afp_mapid(struct afp_server * server, unsigned char subfunction,
++	unsigned int id, char *name);
++
++int afp_getuserinfo(struct afp_server * server, int thisuser,
++	unsigned int userid, unsigned short bitmap, 
++	unsigned int *newuid, unsigned int *newgid);
++
++int afp_zzzzz(struct afp_server *server);
++
++int afp_volopen(struct afp_volume * volume, 
++		unsigned short bitmap, char * password);
++
++int afp_flush(struct afp_volume * volume);
++
++int afp_getfiledirparms(struct afp_volume *volume, unsigned int did, 
++	unsigned int filebitmap, unsigned int dirbitmap, const char * pathname,
++	struct afp_file_info *fp);
++
++int afp_enumerate(struct afp_volume * volume, 
++	unsigned int dirid, 
++	unsigned int filebitmap, unsigned int dirbitmap, 
++        unsigned short reqcount,
++        unsigned short startindex,
++        char * path,
++	struct afp_file_info ** file_p);
++
++int afp_enumerateext2(struct afp_volume * volume, 
++	unsigned int dirid, 
++	unsigned int filebitmap, unsigned int dirbitmap, 
++        unsigned short reqcount,
++        unsigned long startindex,
++        char * path,
++	struct afp_file_info ** file_p);
++
++int afp_openfork(struct afp_volume * volume,
++        unsigned char forktype,
++        unsigned int dirid,
++        unsigned short accessmode,
++        char * filename, 
++	struct afp_file_info *fp);
++
++int afp_read(struct afp_volume * volume, unsigned short forkid,
++                uint32_t offset,
++                uint32_t count, struct afp_rx_buffer * rx);
++
++int afp_readext(struct afp_volume * volume, unsigned short forkid,
++                uint64_t offset,
++                uint64_t count, struct afp_rx_buffer * rx);
++
++int afp_getvolparms(struct afp_volume * volume, unsigned short bitmap);
++
++
++int afp_createdir(struct afp_volume * volume, unsigned int dirid, const char * pathname, unsigned int *did_p);
++
++int afp_delete(struct afp_volume * volume,
++        unsigned int dirid, char * pathname);
++
++
++int afp_createfile(struct afp_volume * volume, unsigned char flag,
++        unsigned int did, char * pathname);
++
++int afp_write(struct afp_volume * volume, unsigned short forkid,
++        uint32_t offset, uint32_t reqcount,
++        char * data, uint32_t * written);
++
++int afp_writeext(struct afp_volume * volume, unsigned short forkid,
++        uint64_t offset, uint64_t reqcount,
++        char * data, uint64_t * written);
++
++int afp_flushfork(struct afp_volume * volume, unsigned short forkid);
++
++int afp_closefork(struct afp_volume * volume, unsigned short forkid);
++int afp_setfileparms(struct afp_volume * volume,
++        unsigned int dirid, const char * pathname, unsigned short bitmap,
++        struct afp_file_info *fp);
++int afp_setfiledirparms(struct afp_volume * volume, 
++        unsigned int dirid, const char * pathname, unsigned short bitmap,
++        struct afp_file_info *fp);
++
++int afp_setdirparms(struct afp_volume * volume,
++        unsigned int dirid, const char * pathname, unsigned short bitmap,
++        struct afp_file_info *fp);
++
++int afp_volclose(struct afp_volume * volume);
++
++
++int afp_setforkparms(struct afp_volume *volume,
++        unsigned short forkid, unsigned short bitmap, unsigned long len);
++
++int afp_byterangelock(struct afp_volume * volume,
++        unsigned char flag,
++        unsigned short forkid,
++        uint32_t offset,
++        uint32_t len, uint32_t *generated_offset);
++
++int afp_byterangelockext(struct afp_volume * volume,
++        unsigned char flag,
++        unsigned short forkid,
++        uint64_t offset,
++        uint64_t len, uint64_t *generated_offset);
++
++int afp_moveandrename(struct afp_volume *volume,
++	unsigned int src_did,
++	unsigned int dst_did,
++	char * src_path, char * dst_path, char *new_name);
++
++int afp_rename(struct afp_volume * volume,
++        unsigned int dirid,
++        char * path_from, char * path_to);
++
++int afp_listextattr(struct afp_volume * volume,
++        unsigned int dirid, unsigned short bitmap,
++        char * pathname, struct afp_extattr_info * info);
++
++/* This is a currently undocumented command */
++int afp_newcommand76(struct afp_volume * volume, unsigned int dlen, char * data);
++
++/* For debugging */
++char * afp_get_command_name(char code);
++
++
++#endif
+diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/afp_protocol.h afpfs-ng-0.8.1.patch/include/afpfs-ng/afp_protocol.h
+--- afpfs-ng-0.8.1/include/afpfs-ng/afp_protocol.h	1970-01-01 01:00:00.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/afpfs-ng/afp_protocol.h	2011-09-10 12:13:50.112124505 +0200
+@@ -0,0 +1,361 @@
++
++#ifndef _AFP_PROTOCOL_H_
++#define _AFP_PROTOCOL_H_
++
++#include <sys/types.h>
++#include <stddef.h>
++#include <unistd.h>
++#include <stdint.h>
++
++/* This file defines constants for the Apple File Protocol.
++   All page references are from "Apple Filing Protocol Programming" version 3.2.
++   except where noted.
++*/
++
++#define AFP_SERVER_NAME_LEN 33
++#define AFP_SERVER_NAME_UTF8_LEN 255
++#define AFP_VOLUME_NAME_LEN 33
++#define AFP_VOLUME_NAME_UTF8_LEN 33
++#define AFP_SIGNATURE_LEN 16
++#define AFP_MACHINETYPE_LEN 33
++#define AFP_LOGINMESG_LEN 200
++#define AFP_VOLPASS_LEN 8
++#define AFP_HOSTNAME_LEN 255
++/* This is actually just a guess, and only used for appletalk */
++#define AFP_ZONE_LEN 255
++
++#define AFP_SERVER_ICON_LEN 256
++
++
++#define AFP_MAX_USERNAME_LEN 127
++#define AFP_MAX_PASSWORD_LEN 127
++
++
++/* This is the maximum length of any UAM string */
++#define AFP_UAM_LENGTH 24
++
++/* This is the maximum length of any path description */
++#define AFP_MAX_PATH 768
++
++#define AFP_VOL_FLAT 1
++#define AFP_VOL_FIXED 2
++#define AFP_VOL_VARIABLE 3
++
++/* The root directory ID, p.26 */
++
++#define AFP_ROOT_DID 2
++
++/* Path type constants, p.249 */
++
++enum {
++kFPShortName = 1,
++kFPLongName = 2,
++kFPUTF8Name = 3
++};
++
++/* fork types */
++
++#define AFP_FORKTYPE_DATA 0x0
++#define AFP_FORKTYPE_RESOURCE 0x80
++
++/* openfork access modes, from p.196 */
++
++#define AFP_OPENFORK_ALLOWREAD 1
++#define AFP_OPENFORK_ALLOWWRITE 2
++#define AFP_OPENFORK_DENYREAD 0x10
++#define AFP_OPENFORK_DENYWRITE 0x20
++
++/* Message type for getsrvmesg, p. 169*/
++
++typedef enum {
++  AFPMESG_LOGIN = 0,
++  AFPMESG_SERVER = 1
++} afpmessage_t;
++
++/* Message bitmap for getsrvrmsg */
++
++#define AFP_GETSRVRMSG_UTF8 0x2
++#define AFP_GETSRVRMSG_GETMSG 0x1
++
++
++/* Maximum Version length, p.17 */
++#define AFP_MAX_VERSION_LENGTH 16
++
++/* Maximum length of a token, this is undocumented */
++#define AFP_TOKEN_MAX_LEN 256
++
++/* The maximum size of a file for AFP 2 */
++#define AFP_MAX_AFP2_FILESIZE (4294967296)
++
++/* Unix privs, p.240 */
++
++struct afp_unixprivs {
++	uint32_t uid __attribute__((__packed__));
++	uint32_t gid __attribute__((__packed__));
++	uint32_t permissions __attribute__((__packed__));
++	uint32_t ua_permissions __attribute__((__packed__));
++
++};
++
++
++/* AFP Volume attributes bitmap, p.241 */
++
++enum {
++    kReadOnly = 0x01,
++    kHasVolumePassword = 0x02,
++    kSupportsFileIDs = 0x04,
++    kSupportsCatSearch = 0x08,
++    kSupportsBlankAccessPrivs = 0x10,
++    kSupportsUnixPrivs = 0x20,
++    kSupportsUTF8Names = 0x40,
++    kNoNetworkUserIDs = 0x80,
++    kDefaultPrivsFromParent = 0x100,
++    kNoExchangeFiles = 0x200,
++    kSupportsExtAttrs = 0x400,
++    kSupportsACLs=0x800
++};
++
++/* AFP file creation constantes, p.250 */
++enum {
++kFPSoftCreate = 0,
++kFPHardCreate = 0x80
++};
++
++/* AFP Directory attributes, taken from the protocol guide p.236 */
++
++enum {
++    kFPAttributeBit = 0x1,
++    kFPParentDirIDBit = 0x2,
++    kFPCreateDateBit = 0x4,
++    kFPModDateBit = 0x8,
++    kFPBackupDateBit = 0x10,
++    kFPFinderInfoBit = 0x20,
++    kFPLongNameBit = 0x40,
++    kFPShortNameBit = 0x80,
++    kFPNodeIDBit = 0x100,
++    kFPOffspringCountBit = 0x0200,
++    kFPOwnerIDBit = 0x0400,
++    kFPGroupIDBit = 0x0800,
++    kFPAccessRightsBit = 0x1000,
++    kFPProDOSInfoBit = 0x2000, // AFP version 2.2 and earlier
++    kFPUTF8NameBit = 0x2000, // AFP version 3.0 and later
++    kFPUnixPrivsBit = 0x8000 // AFP version 3.0 and later
++};
++
++/* AFP File bitmap, p.238.  These are the ones not in the AFP Directory
++   attributes map. */
++
++enum {
++	kFPDataForkLenBit = 0x0200,
++	kFPRsrcForkLenBit = 0x0400,
++	kFPExtDataForkLenBit = 0x0800, // AFP version 3.0 and later
++	kFPLaunchLimitBit = 0x1000,
++	kFPExtRsrcForkLenBit = 0x4000, // AFP version 3.0 and later
++};
++
++/* AFP Extended Attributes Bitmap, p.238  */
++
++enum {
++	kXAttrNoFollow = 0x1,
++	kXAttrCreate = 0x2,
++	kXAttrREplace=0x4
++};
++
++
++/* AFP function codes */
++enum AFPFunction
++{
++        afpByteRangeLock = 1, afpCloseVol, afpCloseDir, afpCloseFork,
++        afpCopyFile, afpCreateDir, afpCreateFile,
++        afpDelete, afpEnumerate, afpFlush, afpFlushFork,
++        afpGetForkParms = 14, afpGetSrvrInfo, afpGetSrvrParms,
++        afpGetVolParms, afpLogin, afpLoginCont, afpLogout, afpMapID,
++        afpMapName, afpMoveAndRename, afpOpenVol, afpOpenDir, afpOpenFork,
++        afpRead, afpRename, afpSetDirParms, afpSetFileParms,
++        afpSetForkParms, afpSetVolParms, afpWrite, afpGetFileDirParms,
++	afpSetFileDirParms, afpChangePassword,
++        afpGetUserInfo=37,afpGetSrvrMsg = 38,
++	afpOpenDT=48,
++	afpCloseDT=49,
++	afpGetIcon=51, afpGetIconInfo=52,
++	afpAddComment=56, afpRemoveComment=57, afpGetComment=58,
++	afpByteRangeLockExt=59, afpReadExt, afpWriteExt,
++	afpGetAuthMethods=62,
++	afp_LoginExt=63,
++	afpGetSessionToken=64,
++	afpDisconnectOldSession=65,
++	afpEnumerateExt=66,
++	afpCatSearchExt = 67,
++	afpEnumerateExt2 = 68, afpGetExtAttr, afpSetExtAttr, 
++	afpRemoveExtAttr , afpListExtAttrs,
++	afpZzzzz = 122,
++	afpAddIcon=192,
++};
++
++/* AFP Volume bitmap.  Take from 242 of the protocol guide. */
++enum {
++	kFPBadVolPre222Bitmap = 0xFe00,
++	kFPBadVolBitmap = 0xF000,
++	kFPVolAttributeBit = 0x1,
++	kFPVolSignatureBit = 0x2,
++	kFPVolCreateDateBit = 0x4,
++	kFPVolModDateBit = 0x8,
++	kFPVolBackupDateBit = 0x10,
++	kFPVolIDBit = 0x20,
++	kFPVolBytesFreeBit = 0x40,
++	kFPVolBytesTotalBit = 0x80,
++	kFPVolNameBit = 0x100,
++	kFPVolExtBytesFreeBit = 0x200,
++	kFPVolExtBytesTotalBit = 0x400,
++	kFPVolBlockSizeBit = 0x800
++};
++
++/* AFP Attention Codes -- 4 bits */
++#define AFPATTN_SHUTDOWN     (1 << 15)            /* shutdown/disconnect */
++#define AFPATTN_CRASH        (1 << 14)            /* server crashed */
++#define AFPATTN_MESG         (1 << 13)            /* server has message */
++#define AFPATTN_NORECONNECT  (1 << 12)            /* don't reconnect */
++/* server notification */
++#define AFPATTN_NOTIFY       (AFPATTN_MESG | AFPATTN_NORECONNECT) 
++
++/* extended bitmap -- 12 bits. volchanged is only useful w/ a server
++ * notification, and time is only useful for shutdown. */
++#define AFPATTN_VOLCHANGED   (1 << 0)             /* volume has changed */
++#define AFPATTN_TIME(x)      ((x) & 0xfff)        /* time in minutes */
++
++#define kFPNoErr 0
++
++/* AFP result codes, p252 */
++#define kASPSessClosed -1072
++#define kFPAccessDenied -5000
++#define kFPAuthContinue -5001
++#define kFPBadUAM -5002
++#define kFPBadVersNum -5003
++#define kFPBitmapErr -5004
++#define kFPCantMove -5005
++#define kFPDenyConflict -5006
++#define kFPDirNotEmpty -5007
++#define kFPDiskFull -5008
++#define kFPEOFErr -5009
++#define kFPFileBusy -5010
++#define kFPFlatVol -5011
++#define kFPItemNotFound -5012
++#define kFPLockErr -5013
++#define kFPMiscErr -5014
++#define kFPNoMoreLocks -5015
++#define kFPNoServer -5016
++#define kFPObjectExists -5017
++#define kFPObjectNotFound -5018
++#define kFPParamErr -5019
++#define kFPRangeNotLocked -5020
++#define kFPRangeOverlap -5021
++#define kFPSessClosed -5022
++#define kFPUserNotAuth -5023
++#define kFPCallNotSupported -5024
++#define kFPObjectTypeErr -5025
++#define kFPTooManyFilesOpen -5026
++#define kFPServerGoingDown -5027
++#define kFPCantRename -5028
++#define kFPDirNotFound -5029
++#define kFPIconTypeError -5030
++#define kFPVolLocked -5031
++#define kFPObjectLocked -5032
++#define kFPContainsSharedErr -5033
++#define kFPIDNotFound -5034
++#define kFPIDExists -5035
++#define kFPDiffVolErr  -5036
++#define kFPCatalogChanged -5037
++#define kFPSameObjectErr -5038
++#define kFPBadIDErr -5039
++#define kFPPwdSameErr -5040
++#define kFPPwdTooShortErr -5041
++#define kFPPwdExpiredErr -5042
++#define kFPInsideSharedErr -5043
++#define kFPInsideTrashErr -5044
++#define kFPPwdNeedsChangeErr -5045
++#define kFPPwdPolicyErr -5046
++#define kFPDiskQuotaExceeded –5047 
++
++
++
++/* These flags determine to lock or unlock in ByteRangeLock(Ext) */
++
++enum {
++ByteRangeLock_Lock = 0,
++ByteRangeLock_Unlock = 1
++};
++
++/* These flags are used in volopen and getsrvrparm replies, p.171 */
++
++#define HasConfigInfo 0x1
++#define HasPassword 0x80
++
++/* These are the subfunction for kFPMapID, as per p.248 */
++
++enum {
++kUserIDToName = 1,
++kGroupIDToName = 2,
++kUserIDToUTF8Name = 3,
++kGroupIDToUTF8Name = 4,
++kUserUUIDToUTF8Name = 5,
++kGroupUUIDToUTF8Name = 6
++};
++
++
++/* These are the subfunction flags described in the FPMapName command, p.286.
++   Note that this is different than what's described on p. 186. */
++
++enum {
++kNameToUserID = 1,
++kNameToGroupID = 2,
++kUTF8NameToUserID = 3,
++kUTF8NameToGroupID = 4,
++kUTF8NameToUserUUID = 5,
++kUTF8NameToGroupUUID = 6
++};
++
++/* These are bits for FPGetUserInfo, p.173. */
++#define kFPGetUserInfo_USER_ID 1
++#define kFPGetUserInfo_PRI_GROUPID 2
++
++/* Flags for the replies of GetSrvrInfo and DSI GetStatus, p.240 */
++
++enum {
++	kSupportsCopyfile = 0x01,
++	kSupportsChgPwd = 0x02,
++	kDontAllowSavePwd = 0x04,
++	kSupportsSrvrMsg = 0x08,
++	kSrvrSig = 0x10,
++	kSupportsTCP = 0x20,
++	kSupportsSrvrNotify = 0x40,
++	kSupportsReconnect = 0x80,
++	kSupportsDirServices = 0x100,
++	kSupportsUTF8SrvrName = 0x200,
++	kSupportsUUIDs = 0x400,
++	kSupportsSuperClient = 0x8000
++};
++
++
++/* p.247 */
++
++enum {
++	kLoginWithoutID = 0,
++	kLoginWithID = 1,
++	kReconnWithID = 2,
++	kLoginWithTimeAndID = 3,
++	kReconnWithTimeAndID = 4,
++	kRecon1Login = 5,
++	kRecon1ReconnectLogin = 6,
++	kRecon1Refresh = 7, kGetKerberosSessionKey = 8
++};
++
++
++#define AFP_CHMOD_ALLOWED_BITS_22 \
++	(S_IRUSR |S_IWUSR | S_IRGRP | S_IWGRP |S_IROTH | S_IWOTH | S_IFREG )
++
++
++#endif
++
++
++
++
+diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/codepage.h afpfs-ng-0.8.1.patch/include/afpfs-ng/codepage.h
+--- afpfs-ng-0.8.1/include/afpfs-ng/codepage.h	1970-01-01 01:00:00.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/afpfs-ng/codepage.h	2011-09-10 12:13:50.113124518 +0200
+@@ -0,0 +1,11 @@
++#ifndef __CODE_PAGE_H_
++#define __CODE_PAGE_H_
++int convert_utf8dec_to_utf8pre(const char *src, int src_len,
++	char * dest, int dest_len);
++int convert_utf8pre_to_utf8dec(const char * src, int src_len, 
++	char * dest, int dest_len);
++int convert_path_to_unix(char encoding, char * dest, 
++	char * src, int dest_len);
++int convert_path_to_afp(char encoding, char * dest, 
++	char * src, int dest_len);
++#endif
+diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/dsi.h afpfs-ng-0.8.1.patch/include/afpfs-ng/dsi.h
+--- afpfs-ng-0.8.1/include/afpfs-ng/dsi.h	1970-01-01 01:00:00.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/afpfs-ng/dsi.h	2011-09-10 12:13:50.115124544 +0200
+@@ -0,0 +1,33 @@
++
++#ifndef __DSI_H_
++#define __DSI_H_
++
++#include "afpfs-ng/afp.h"
++
++struct dsi_request
++{
++	unsigned short requestid;
++	unsigned char subcommand;
++	void * other;
++	unsigned char wait;
++	pthread_cond_t  condition_cond;
++	struct dsi_request * next;
++	int return_code;
++};
++
++int dsi_receive(struct afp_server * server, void * data, int size);
++int dsi_getstatus(struct afp_server * server);
++
++int dsi_opensession(struct afp_server *server);
++
++int dsi_send(struct afp_server *server, char * msg, int size,int wait,unsigned char subcommand, void ** other);
++struct dsi_session * dsi_create(struct afp_server *server);
++int dsi_restart(struct afp_server *server);
++int dsi_recv(struct afp_server * server);
++
++#define DSI_BLOCK_TIMEOUT -1
++#define DSI_DONT_WAIT 0
++#define DSI_DEFAULT_TIMEOUT 5
++
++
++#endif
+diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/libafpclient.h afpfs-ng-0.8.1.patch/include/afpfs-ng/libafpclient.h
+--- afpfs-ng-0.8.1/include/afpfs-ng/libafpclient.h	1970-01-01 01:00:00.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/afpfs-ng/libafpclient.h	2011-09-10 12:13:50.115124544 +0200
+@@ -0,0 +1,50 @@
++
++#ifndef __CLIENT_H_
++#define __CLIENT_H_
++
++#include <unistd.h>
++#include <syslog.h>
++
++#define MAX_CLIENT_RESPONSE 2048
++
++
++enum loglevels {
++        AFPFSD,
++};
++
++struct afp_server;
++struct afp_volume;
++
++struct libafpclient {
++        int (*unmount_volume) (struct afp_volume * volume);
++	void (*log_for_client)(void * priv,
++        	enum loglevels loglevel, int logtype, const char *message);
++	void (*forced_ending_hook)(void);
++	int (*scan_extra_fds)(int command_fd,fd_set *set, int * max_fd);
++	void (*loop_started)(void);
++} ;
++
++extern struct libafpclient * libafpclient;
++
++void libafpclient_register(struct libafpclient * tmpclient);
++
++
++void signal_main_thread(void);
++
++/* These are logging functions */
++
++#define MAXLOGSIZE 2048
++
++#define LOG_METHOD_SYSLOG 1
++#define LOG_METHOD_STDOUT 2
++
++void set_log_method(int m);
++
++
++void log_for_client(void * priv,
++        enum loglevels loglevel, int logtype, char * message,...);
++
++void stdout_log_for_client(void * priv,
++	enum loglevels loglevel, int logtype, const char *message);
++
++#endif
+diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/Makefile.am afpfs-ng-0.8.1.patch/include/afpfs-ng/Makefile.am
+--- afpfs-ng-0.8.1/include/afpfs-ng/Makefile.am	1970-01-01 01:00:00.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/afpfs-ng/Makefile.am	2011-09-10 12:13:50.115124544 +0200
+@@ -0,0 +1,6 @@
++## Process this file with automake to produce Makefile.in
++
++afpfsincludedir = $(includedir)/afpfs-ng
++
++afpfsinclude_HEADERS = afp.h afp_protocol.h libafpclient.h
++nodist_afpfsinclude_HEADERS =  codepage.h dsi.h  map_def.h midlevel.h uams_def.h utils.h
+diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/map_def.h afpfs-ng-0.8.1.patch/include/afpfs-ng/map_def.h
+--- afpfs-ng-0.8.1/include/afpfs-ng/map_def.h	1970-01-01 01:00:00.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/afpfs-ng/map_def.h	2011-09-10 12:13:50.116124557 +0200
+@@ -0,0 +1,15 @@
++#ifndef __MAP_H_
++#define __MAP_H_
++
++#include "afpfs-ng/afp.h"
++
++#define AFP_MAPPING_UNKNOWN 0
++#define AFP_MAPPING_COMMON 1
++#define AFP_MAPPING_LOGINIDS 2
++#define AFP_MAPPING_NAME 3
++
++unsigned int map_string_to_num(char * name);
++char * get_mapping_name(struct afp_volume * volume);
++
++
++#endif
+diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/midlevel.h afpfs-ng-0.8.1.patch/include/afpfs-ng/midlevel.h
+--- afpfs-ng-0.8.1/include/afpfs-ng/midlevel.h	1970-01-01 01:00:00.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/afpfs-ng/midlevel.h	2011-09-10 12:13:50.116124557 +0200
+@@ -0,0 +1,64 @@
++#ifndef __MIDLEVEL_H_
++#define __MIDLEVEL_H_ 
++
++#include <utime.h>
++#include "afpfs-ng/afp.h"
++
++int ml_open(struct afp_volume * volume, const char *path, int flags, 
++        struct afp_file_info **newfp);
++
++int ml_creat(struct afp_volume * volume, const char *path,mode_t mode);
++
++int ml_readdir(struct afp_volume * volume, 
++	const char *path, 
++	struct afp_file_info **base);
++
++int ml_read(struct afp_volume * volume, const char *path,
++	char *buf, size_t size, off_t offset,
++	struct afp_file_info *fp, int * eof);
++
++int ml_chmod(struct afp_volume * vol, const char * path, mode_t mode);
++
++int ml_unlink(struct afp_volume * vol, const char *path);
++
++int ml_mkdir(struct afp_volume * vol, const char * path, mode_t mode);
++
++int ml_close(struct afp_volume * volume, const char * path,
++        struct afp_file_info * fp);
++
++int ml_getattr(struct afp_volume * volume, const char *path, 
++	struct stat *stbuf);
++
++int ml_write(struct afp_volume * volume, const char * path, 
++	const char *data, size_t size, off_t offset,
++	struct afp_file_info * fp, uid_t uid,
++	gid_t gid);
++
++int ml_readlink(struct afp_volume * vol, const char * path,
++        char *buf, size_t size);
++
++int ml_rmdir(struct afp_volume * vol, const char *path);
++
++int ml_chown(struct afp_volume * vol, const char * path,   
++        uid_t uid, gid_t gid);
++
++int ml_truncate(struct afp_volume * vol, const char * path, off_t offset);
++
++int ml_utime(struct afp_volume * vol, const char * path,
++	struct utimbuf * timebuf);
++
++int ml_symlink(struct afp_volume *vol, const char * path1, const char * path2);
++
++int ml_rename(struct afp_volume * vol,
++	const char * path_from, const char * path_to);
++
++int ml_statfs(struct afp_volume * vol, const char *path, struct statvfs *stat);
++
++void afp_ml_filebase_free(struct afp_file_info **filebase);
++
++int ml_passwd(struct afp_server *server,
++                char * username, char * oldpasswd, char * newpasswd);
++
++
++
++#endif
+diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/uams_def.h afpfs-ng-0.8.1.patch/include/afpfs-ng/uams_def.h
+--- afpfs-ng-0.8.1/include/afpfs-ng/uams_def.h	1970-01-01 01:00:00.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/afpfs-ng/uams_def.h	2011-09-10 12:13:50.116124557 +0200
+@@ -0,0 +1,16 @@
++#ifndef __UAM_DEFS_H_
++#define __UAM_DEFS_H_
++
++#define UAM_NOUSERAUTHENT 0x1
++#define UAM_CLEARTXTPASSWRD 0x2
++#define UAM_RANDNUMEXCHANGE 0x4
++#define UAM_2WAYRANDNUM 0x8
++#define UAM_DHCAST128 0x10
++#define UAM_CLIENTKRB 0x20
++#define UAM_DHX2 0x40
++#define UAM_RECON1 0x80
++
++int uam_string_to_bitmap(char * name);
++char * uam_bitmap_to_string(unsigned int bitmap);
++
++#endif
+diff -Naur afpfs-ng-0.8.1/include/afpfs-ng/utils.h afpfs-ng-0.8.1.patch/include/afpfs-ng/utils.h
+--- afpfs-ng-0.8.1/include/afpfs-ng/utils.h	1970-01-01 01:00:00.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/afpfs-ng/utils.h	2011-09-10 12:13:50.116124557 +0200
+@@ -0,0 +1,43 @@
++#ifndef __UTILS_H_
++#define __UTILS_H_
++#include <stdio.h>
++
++#include "afpfs-ng/afp.h"
++
++#if BYTE_ORDER == BIG_ENDIAN
++#define hton64(x)       (x)
++#define ntoh64(x)       (x)
++#else /* BYTE_ORDER == BIG_ENDIAN */
++#define hton64(x)       ((u_int64_t) (htonl(((x) >> 32) & 0xffffffffLL)) | \
++                         (u_int64_t) ((htonl(x) & 0xffffffffLL) << 32))
++#define ntoh64(x)       (hton64(x))
++#endif /* BYTE_ORDER == BIG_ENDIAN */
++
++#define min(a,b) (((a)<(b)) ? (a) : (b))
++#define max(a,b) (((a)>(b)) ? (a) : (b))
++
++
++
++unsigned char unixpath_to_afppath(
++        struct afp_server * server,
++        char * buf);
++
++unsigned char sizeof_path_header(struct afp_server * server);
++
++
++
++unsigned char copy_from_pascal(char *dest, char *pascal,unsigned int max_len) ;
++unsigned short copy_from_pascal_two(char *dest, char *pascal,unsigned int max_len);
++
++unsigned char copy_to_pascal(char *dest, const char *src);
++unsigned short copy_to_pascal_two(char *dest, const char *src);
++
++void copy_path(struct afp_server * server, char * dest, const char * pathname, unsigned char len);
++
++
++char * create_path(struct afp_server * server, char * pathname, unsigned short * len);
++
++
++int invalid_filename(struct afp_server * server, const char * filename);
++
++#endif
+diff -Naur afpfs-ng-0.8.1/include/afp.h afpfs-ng-0.8.1.patch/include/afp.h
+--- afpfs-ng-0.8.1/include/afp.h	2008-03-08 17:08:18.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/afp.h	1970-01-01 01:00:00.000000000 +0100
+@@ -1,533 +0,0 @@
+-
+-#ifndef _AFP_H_
+-#define _AFP_H_
+-
+-#include <arpa/inet.h>
+-#include <pthread.h>
+-#include <netdb.h>
+-#include <sys/statvfs.h>
+-#include <pwd.h>
+-#include <afp_protocol.h>
+-#include <libafpclient.h>
+-#include <sys/types.h>
+-#include <sys/stat.h>
+-#include <unistd.h>
+-#include <netinet/in.h>
+-
+-
+-#define AFPFS_VERSION "0.8.1"
+-
+-/* This is the maximum AFP version this library supports */
+-#define AFP_MAX_SUPPORTED_VERSION 32
+-
+-/* afp_url is used to pass locations around */
+-struct afp_url {
+-	enum {TCPIP,AT} protocol;
+-	char username[AFP_MAX_USERNAME_LEN];
+-	char uamname[50];
+-	char password[AFP_MAX_PASSWORD_LEN];
+-	char servername[AFP_SERVER_NAME_UTF8_LEN];
+-	int port;
+-	char volumename[AFP_VOLUME_NAME_UTF8_LEN];
+-	char path[AFP_MAX_PATH];
+-
+-	int requested_version;
+-	char zone[AFP_ZONE_LEN]; /* Only used for Appletalk */
+-	char volpassword[9];;
+-};
+-
+-struct afp_token {
+-	unsigned int length;
+-	char data[AFP_TOKEN_MAX_LEN];
+-};
+-
+-#define SERVER_MAX_VERSIONS 10
+-#define SERVER_MAX_UAMS 10
+-
+-struct afp_rx_buffer {
+-	unsigned int size;
+-	unsigned int maxsize;
+-	char * data;
+-	int errorcode;
+-};
+-
+-
+-struct afp_file_info {
+-	unsigned short attributes;
+-	unsigned int did;
+-	unsigned int creation_date;
+-	unsigned int modification_date;
+-	unsigned int backup_date;
+-	unsigned int fileid;
+-	unsigned short offspring;
+-	char sync;
+-	char finderinfo[32];
+-	char name[AFP_MAX_PATH];
+-	char basename[AFP_MAX_PATH];
+-	char translated_name[AFP_MAX_PATH];
+-	struct afp_unixprivs unixprivs;
+-	unsigned int accessrights;
+-	struct afp_file_info * next;
+-	struct afp_file_info * largelist_next;
+-	unsigned char isdir;
+-	unsigned long long size;
+-	unsigned short resourcesize;
+-	unsigned int resource;
+-	unsigned short forkid;
+-	struct afp_icon * icon;
+-	int eof;
+-};
+-
+-
+-#define VOLUME_EXTRA_FLAGS_VOL_CHMOD_KNOWN 0x1
+-#define VOLUME_EXTRA_FLAGS_VOL_CHMOD_BROKEN 0x2
+-#define VOLUME_EXTRA_FLAGS_SHOW_APPLEDOUBLE 0x4
+-#define VOLUME_EXTRA_FLAGS_VOL_SUPPORTS_UNIX 0x8
+-#define VOLUME_EXTRA_FLAGS_NO_LOCKING 0x10
+-#define VOLUME_EXTRA_FLAGS_IGNORE_UNIXPRIVS 0x20
+-#define VOLUME_EXTRA_FLAGS_READONLY 0x40
+-
+-#define AFP_VOLUME_UNMOUNTED 0
+-#define AFP_VOLUME_MOUNTED 1
+-#define AFP_VOLUME_UNMOUNTING 2
+-
+-struct afp_volume {
+-	unsigned short volid;
+-	char flags;  /* This is from afpGetSrvrParms */
+-	unsigned short attributes; /* This is from VolOpen */
+-	unsigned short signature;  /* This is fixed or variable */
+-	unsigned int creation_date;
+-	unsigned int modification_date;
+-	unsigned int backup_date;
+-	struct statvfs stat;
+-	unsigned char mounted;
+-	char mountpoint[255];
+-	struct afp_server * server;
+-	char volume_name[AFP_VOLUME_NAME_LEN];
+-	char volume_name_printable[AFP_VOLUME_NAME_UTF8_LEN];
+-	unsigned short dtrefnum;
+-	char volpassword[AFP_VOLPASS_LEN];
+-	unsigned int extra_flags; /* This is an afpfs-ng specific field */
+-
+-	/* Our directory ID cache */
+-	struct did_cache_entry * did_cache_base;
+-	pthread_mutex_t did_cache_mutex;
+-
+-	/* Our journal of open forks */
+-	struct afp_file_info * open_forks;
+-	pthread_mutex_t open_forks_mutex;
+-
+-	/* Used to trigger startup */
+-        pthread_cond_t  startup_condition_cond;
+-
+-	struct {
+-		uint64_t hits;
+-		uint64_t misses;
+-		uint64_t expired;
+-		uint64_t force_removed;
+-	} did_cache_stats;
+-
+-	void * priv;  /* This is a private structure for fuse/cmdline, etc */
+-	pthread_t thread; /* This is the per-volume thread */
+-
+-	int mapping;
+-
+-};
+-
+-#define SERVER_STATE_CONNECTED 1
+-#define SERVER_STATE_DISCONNECTED 2
+-
+-enum server_type{
+-	AFPFS_SERVER_TYPE_UNKNOWN,
+-	AFPFS_SERVER_TYPE_NETATALK,
+-	AFPFS_SERVER_TYPE_AIRPORT,
+-	AFPFS_SERVER_TYPE_MACINTOSH,
+-};
+-
+-#define is_netatalk(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_NETATALK )
+-#define is_airport(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_AIRPORT )
+-#define is_macintosh(x) ( (x)->machine_type == AFPFS_SERVER_TYPE_MACINTOSH )
+-
+-
+-
+-struct afp_versions {
+-        char        *av_name;
+-        int         av_number;
+-};
+-extern struct afp_versions afp_versions[];
+-
+-struct afp_server {
+-
+-	/* Our buffer sizes */
+-	unsigned int tx_quantum;
+-	unsigned int rx_quantum;
+-
+-	unsigned int tx_delay;
+-
+-	/* Connection information */
+-	struct sockaddr_in address;
+-	int fd;
+-
+-	/* Some stats, for information only */
+-	struct {
+-		uint64_t runt_packets;
+-		uint64_t incoming_dsi;
+-		uint64_t rx_bytes;
+-		uint64_t tx_bytes;
+-		uint64_t requests_pending;
+-	} stats;
+-
+-	/* General information */
+-	char server_name[AFP_SERVER_NAME_LEN];
+-	char server_name_utf8[AFP_SERVER_NAME_UTF8_LEN];
+-        char server_name_printable[AFP_SERVER_NAME_UTF8_LEN];
+-
+-	char machine_type[17];
+-	char icon[256];
+-	char signature[16];
+-	unsigned short flags;
+-	int connect_state;
+-	enum server_type server_type;
+-
+-	/* This is the time we connected */
+-	time_t connect_time;
+-
+-	/* UAMs */
+-	unsigned int supported_uams;
+-	unsigned int using_uam;
+-
+-	/* Authentication */
+-	char username[AFP_MAX_USERNAME_LEN];
+-	char password[AFP_MAX_PASSWORD_LEN];
+-
+-	/* Session */
+-	struct afp_token token;
+-	char need_resume;
+-
+-	/* Versions */
+-	unsigned char requested_version;
+-	unsigned char versions[SERVER_MAX_VERSIONS];
+-	struct afp_versions *using_version;
+-
+-	/* Volumes */
+-	unsigned char num_volumes;
+-	struct afp_volume * volumes;
+-
+-	void * dsi;
+-	unsigned int exit_flag;
+-
+-	/* Our DSI request queue */
+-	pthread_mutex_t requestid_mutex;
+-	pthread_mutex_t request_queue_mutex;
+-	unsigned short lastrequestid;
+-	unsigned short expectedrequestid;
+-	struct dsi_request * command_requests;
+-
+-
+-	char loginmesg[200];
+-	char servermesg[200];
+-	char path_encoding;
+-
+-	/* This is the data for the incoming buffer */
+-	char * incoming_buffer;
+-	int data_read;
+-	int bufsize;
+-
+-	/* And this is for the outgoing queue */
+-	pthread_mutex_t send_mutex;
+-
+-	/* This is for user mapping */
+-	struct passwd passwd;
+-	unsigned int server_uid, server_gid;
+-	int server_gid_valid;
+-
+-	struct afp_server *next;
+-
+-	/* These are for DSI attention packets */
+-	unsigned int attention_quantum;
+-	unsigned int attention_len;
+-	char * attention_buffer;
+-
+-};
+-
+-struct afp_extattr_info {
+-	unsigned int maxsize;
+-	unsigned int size;
+-	char data[1024];
+-};
+-struct afp_comment {
+-	unsigned int maxsize;
+-	unsigned int size;
+-	char *data;
+-};
+-
+-struct afp_icon {
+-	unsigned int maxsize;
+-	unsigned int size;
+-	char *data;
+-};
+-
+-#define AFP_DEFAULT_ATTENTION_QUANTUM 1024
+-
+-void afp_unixpriv_to_stat(struct afp_file_info *fp,
+-	struct stat *stat);
+-
+-int init_uams(void) ;
+-
+-unsigned int find_uam_by_name(const char * name);
+-char * uam_bitmap_to_string(unsigned int bitmap);
+-
+-
+-char * get_uam_names_list(void);
+-
+-unsigned int default_uams_mask(void);
+-
+-struct afp_volume * find_volume_by_name(struct afp_server * server,
+-        const char * volname);
+-
+-struct afp_connection_request {
+-        unsigned int uam_mask;
+-	struct afp_url url;
+-};
+-
+-void afp_default_url(struct afp_url *url);
+-int afp_parse_url(struct afp_url * url, const char * toparse, int verbose);
+-void afp_print_url(struct afp_url * url);
+-int afp_url_validate(char * url_string, struct afp_url * valid_url);
+-
+-int afp_list_volnames(struct afp_server * server, char * names, int max);
+-
+-/* User mapping */
+-int afp_detect_mapping(struct afp_volume * volume);
+-
+-/* These are some functions that help with simple status text generation */
+-
+-int afp_status_header(char * text, int * len);
+-int afp_status_server(struct afp_server * s,char * text, int * len);
+-
+-
+-struct afp_server * afp_server_full_connect(void * priv, struct afp_connection_request * req);
+-
+-void * just_end_it_now(void *other);
+-void add_fd_and_signal(int fd);
+-void loop_disconnect(struct afp_server *s);
+-void afp_wait_for_started_loop(void);
+-
+-
+-struct afp_versions * pick_version(unsigned char *versions,
+-	unsigned char requested) ;
+-int pick_uam(unsigned int u1, unsigned int u2);
+-
+-int afp_server_login(struct afp_server *server,
+-        char * mesg, unsigned int *l, unsigned int max);
+-
+-
+-int afp_dologin(struct afp_server *server,
+-	unsigned int uam, char * username, char * passwd);
+-
+-void afp_free_server(struct afp_server **server);
+-
+-struct afp_server * afp_server_init(struct sockaddr_in * address);
+-int afp_get_address(void * priv, const char * hostname, unsigned int port,
+-	struct sockaddr_in * address);
+-
+-
+-int afp_main_loop(int command_fd);
+-int afp_main_quick_startup(pthread_t * thread);
+-
+-int afp_server_destroy(struct afp_server *s) ;
+-int afp_server_reconnect(struct afp_server * s, char * mesg,
+-        unsigned int *l, unsigned int max);
+-int afp_server_connect(struct afp_server *s, int full);
+-
+-struct afp_server * afp_server_complete_connection(
+-	void * priv,
+-	struct afp_server * server,
+-	struct sockaddr_in * address, unsigned char * versions,
+-	unsigned int uams, char * username, char * password,
+-	unsigned int requested_version, unsigned int uam_mask);
+-
+-int afp_connect_volume(struct afp_volume * volume, struct afp_server * server,
+-	char * mesg, unsigned int * l, unsigned int max);
+-int something_is_mounted(struct afp_server * server);
+-
+-int add_cache_entry(struct afp_file_info * file) ;
+-struct afp_file_info * get_cache_by_name(char * name);
+-struct afp_server * find_server_by_address(struct sockaddr_in * address);
+-struct afp_server * find_server_by_signature(char * signature);
+-struct afp_server * find_server_by_name(char * name);
+-int server_still_valid(struct afp_server * server);
+-
+-
+-struct afp_server * get_server_base(void);
+-int afp_server_remove(struct afp_server * server);
+-
+-int afp_unmount_volume(struct afp_volume * volume);
+-int afp_unmount_all_volumes(struct afp_server * server);
+-
+-#define volume_is_readonly(x) (((x)->attributes&kReadOnly) || \
+-	((x)->extra_flags & VOLUME_EXTRA_FLAGS_READONLY))
+-
+-int afp_opendt(struct afp_volume *volume, unsigned short * refnum);
+-
+-int afp_closedt(struct afp_server * server, unsigned short * refnum);
+-
+-int afp_getcomment(struct afp_volume *volume, unsigned int did,
+-        const char * pathname, struct afp_comment * comment);
+-
+-int afp_addcomment(struct afp_volume *volume, unsigned int did,
+-        const char * pathname, char * comment,uint64_t *size);
+-
+-int afp_geticon(struct afp_volume * volume, unsigned int filecreator,
+-        unsigned int filetype, unsigned char icontype, 
+-	unsigned short length, struct afp_icon * icon);
+-
+-/* Things you want to do to a server */
+-
+-int afp_getsrvrmsg(struct afp_server *server, unsigned short messagetype,unsigned char utf8, unsigned char block, char * mesg);
+-
+-int afp_login(struct afp_server *server, char * uaname,
+-        char * userauthinfo, unsigned int userauthinfo_len,
+-	struct afp_rx_buffer *rx);
+-
+-int afp_changepassword(struct afp_server *server, char * uaname,
+-        char * userauthinfo, unsigned int userauthinfo_len,
+-	struct afp_rx_buffer *rx);
+-
+-int afp_logincont(struct afp_server *server, unsigned short id,
+-        char * userauthinfo, unsigned int userauthinfo_len,
+-	struct afp_rx_buffer *rx);
+-
+-int afp_getsessiontoken(struct afp_server * server, int type,
+-        unsigned int timestamp, struct afp_token *outgoing_token,
+-        struct afp_token * incoming_token);
+-
+-int afp_getsrvrparms(struct afp_server *server);
+-
+-int afp_logout(struct afp_server *server,unsigned char wait);
+-
+-int afp_mapname(struct afp_server * server, unsigned char subfunction,
+-        char * name, unsigned int * id);
+-
+-int afp_mapid(struct afp_server * server, unsigned char subfunction,
+-	unsigned int id, char *name);
+-
+-int afp_getuserinfo(struct afp_server * server, int thisuser,
+-	unsigned int userid, unsigned short bitmap, 
+-	unsigned int *newuid, unsigned int *newgid);
+-
+-int afp_zzzzz(struct afp_server *server);
+-
+-int afp_volopen(struct afp_volume * volume, 
+-		unsigned short bitmap, char * password);
+-
+-int afp_flush(struct afp_volume * volume);
+-
+-int afp_getfiledirparms(struct afp_volume *volume, unsigned int did, 
+-	unsigned int filebitmap, unsigned int dirbitmap, const char * pathname,
+-	struct afp_file_info *fp);
+-
+-int afp_enumerate(struct afp_volume * volume, 
+-	unsigned int dirid, 
+-	unsigned int filebitmap, unsigned int dirbitmap, 
+-        unsigned short reqcount,
+-        unsigned short startindex,
+-        char * path,
+-	struct afp_file_info ** file_p);
+-
+-int afp_enumerateext2(struct afp_volume * volume, 
+-	unsigned int dirid, 
+-	unsigned int filebitmap, unsigned int dirbitmap, 
+-        unsigned short reqcount,
+-        unsigned long startindex,
+-        char * path,
+-	struct afp_file_info ** file_p);
+-
+-int afp_openfork(struct afp_volume * volume,
+-        unsigned char forktype,
+-        unsigned int dirid,
+-        unsigned short accessmode,
+-        char * filename, 
+-	struct afp_file_info *fp);
+-
+-int afp_read(struct afp_volume * volume, unsigned short forkid,
+-                uint32_t offset,
+-                uint32_t count, struct afp_rx_buffer * rx);
+-
+-int afp_readext(struct afp_volume * volume, unsigned short forkid,
+-                uint64_t offset,
+-                uint64_t count, struct afp_rx_buffer * rx);
+-
+-int afp_getvolparms(struct afp_volume * volume, unsigned short bitmap);
+-
+-
+-int afp_createdir(struct afp_volume * volume, unsigned int dirid, const char * pathname, unsigned int *did_p);
+-
+-int afp_delete(struct afp_volume * volume,
+-        unsigned int dirid, char * pathname);
+-
+-
+-int afp_createfile(struct afp_volume * volume, unsigned char flag,
+-        unsigned int did, char * pathname);
+-
+-int afp_write(struct afp_volume * volume, unsigned short forkid,
+-        uint32_t offset, uint32_t reqcount,
+-        char * data, uint32_t * written);
+-
+-int afp_writeext(struct afp_volume * volume, unsigned short forkid,
+-        uint64_t offset, uint64_t reqcount,
+-        char * data, uint64_t * written);
+-
+-int afp_flushfork(struct afp_volume * volume, unsigned short forkid);
+-
+-int afp_closefork(struct afp_volume * volume, unsigned short forkid);
+-int afp_setfileparms(struct afp_volume * volume,
+-        unsigned int dirid, const char * pathname, unsigned short bitmap,
+-        struct afp_file_info *fp);
+-int afp_setfiledirparms(struct afp_volume * volume, 
+-        unsigned int dirid, const char * pathname, unsigned short bitmap,
+-        struct afp_file_info *fp);
+-
+-int afp_setdirparms(struct afp_volume * volume,
+-        unsigned int dirid, const char * pathname, unsigned short bitmap,
+-        struct afp_file_info *fp);
+-
+-int afp_volclose(struct afp_volume * volume);
+-
+-
+-int afp_setforkparms(struct afp_volume *volume,
+-        unsigned short forkid, unsigned short bitmap, unsigned long len);
+-
+-int afp_byterangelock(struct afp_volume * volume,
+-        unsigned char flag,
+-        unsigned short forkid,
+-        uint32_t offset,
+-        uint32_t len, uint32_t *generated_offset);
+-
+-int afp_byterangelockext(struct afp_volume * volume,
+-        unsigned char flag,
+-        unsigned short forkid,
+-        uint64_t offset,
+-        uint64_t len, uint64_t *generated_offset);
+-
+-int afp_moveandrename(struct afp_volume *volume,
+-	unsigned int src_did,
+-	unsigned int dst_did,
+-	char * src_path, char * dst_path, char *new_name);
+-
+-int afp_rename(struct afp_volume * volume,
+-        unsigned int dirid,
+-        char * path_from, char * path_to);
+-
+-int afp_listextattr(struct afp_volume * volume,
+-        unsigned int dirid, unsigned short bitmap,
+-        char * pathname, struct afp_extattr_info * info);
+-
+-/* This is a currently undocumented command */
+-int afp_newcommand76(struct afp_volume * volume, unsigned int dlen, char * data);
+-
+-/* For debugging */
+-char * afp_get_command_name(char code);
+-
+-
+-#endif
+diff -Naur afpfs-ng-0.8.1/include/afp_protocol.h afpfs-ng-0.8.1.patch/include/afp_protocol.h
+--- afpfs-ng-0.8.1/include/afp_protocol.h	2008-02-18 04:33:43.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/afp_protocol.h	1970-01-01 01:00:00.000000000 +0100
+@@ -1,361 +0,0 @@
+-
+-#ifndef _AFP_PROTOCOL_H_
+-#define _AFP_PROTOCOL_H_
+-
+-#include <sys/types.h>
+-#include <stddef.h>
+-#include <unistd.h>
+-#include <stdint.h>
+-
+-/* This file defines constants for the Apple File Protocol.
+-   All page references are from "Apple Filing Protocol Programming" version 3.2.
+-   except where noted.
+-*/
+-
+-#define AFP_SERVER_NAME_LEN 33
+-#define AFP_SERVER_NAME_UTF8_LEN 255
+-#define AFP_VOLUME_NAME_LEN 33
+-#define AFP_VOLUME_NAME_UTF8_LEN 33
+-#define AFP_SIGNATURE_LEN 16
+-#define AFP_MACHINETYPE_LEN 33
+-#define AFP_LOGINMESG_LEN 200
+-#define AFP_VOLPASS_LEN 8
+-#define AFP_HOSTNAME_LEN 255
+-/* This is actually just a guess, and only used for appletalk */
+-#define AFP_ZONE_LEN 255
+-
+-#define AFP_SERVER_ICON_LEN 256
+-
+-
+-#define AFP_MAX_USERNAME_LEN 127
+-#define AFP_MAX_PASSWORD_LEN 127
+-
+-
+-/* This is the maximum length of any UAM string */
+-#define AFP_UAM_LENGTH 24
+-
+-/* This is the maximum length of any path description */
+-#define AFP_MAX_PATH 768
+-
+-#define AFP_VOL_FLAT 1
+-#define AFP_VOL_FIXED 2
+-#define AFP_VOL_VARIABLE 3
+-
+-/* The root directory ID, p.26 */
+-
+-#define AFP_ROOT_DID 2
+-
+-/* Path type constants, p.249 */
+-
+-enum {
+-kFPShortName = 1,
+-kFPLongName = 2,
+-kFPUTF8Name = 3
+-};
+-
+-/* fork types */
+-
+-#define AFP_FORKTYPE_DATA 0x0
+-#define AFP_FORKTYPE_RESOURCE 0x80
+-
+-/* openfork access modes, from p.196 */
+-
+-#define AFP_OPENFORK_ALLOWREAD 1
+-#define AFP_OPENFORK_ALLOWWRITE 2
+-#define AFP_OPENFORK_DENYREAD 0x10
+-#define AFP_OPENFORK_DENYWRITE 0x20
+-
+-/* Message type for getsrvmesg, p. 169*/
+-
+-typedef enum {
+-  AFPMESG_LOGIN = 0,
+-  AFPMESG_SERVER = 1
+-} afpmessage_t;
+-
+-/* Message bitmap for getsrvrmsg */
+-
+-#define AFP_GETSRVRMSG_UTF8 0x2
+-#define AFP_GETSRVRMSG_GETMSG 0x1
+-
+-
+-/* Maximum Version length, p.17 */
+-#define AFP_MAX_VERSION_LENGTH 16
+-
+-/* Maximum length of a token, this is undocumented */
+-#define AFP_TOKEN_MAX_LEN 256
+-
+-/* The maximum size of a file for AFP 2 */
+-#define AFP_MAX_AFP2_FILESIZE (4294967296)
+-
+-/* Unix privs, p.240 */
+-
+-struct afp_unixprivs {
+-	uint32_t uid __attribute__((__packed__));
+-	uint32_t gid __attribute__((__packed__));
+-	uint32_t permissions __attribute__((__packed__));
+-	uint32_t ua_permissions __attribute__((__packed__));
+-
+-};
+-
+-
+-/* AFP Volume attributes bitmap, p.241 */
+-
+-enum {
+-    kReadOnly = 0x01,
+-    kHasVolumePassword = 0x02,
+-    kSupportsFileIDs = 0x04,
+-    kSupportsCatSearch = 0x08,
+-    kSupportsBlankAccessPrivs = 0x10,
+-    kSupportsUnixPrivs = 0x20,
+-    kSupportsUTF8Names = 0x40,
+-    kNoNetworkUserIDs = 0x80,
+-    kDefaultPrivsFromParent = 0x100,
+-    kNoExchangeFiles = 0x200,
+-    kSupportsExtAttrs = 0x400,
+-    kSupportsACLs=0x800
+-};
+-
+-/* AFP file creation constantes, p.250 */
+-enum {
+-kFPSoftCreate = 0,
+-kFPHardCreate = 0x80
+-};
+-
+-/* AFP Directory attributes, taken from the protocol guide p.236 */
+-
+-enum {
+-    kFPAttributeBit = 0x1,
+-    kFPParentDirIDBit = 0x2,
+-    kFPCreateDateBit = 0x4,
+-    kFPModDateBit = 0x8,
+-    kFPBackupDateBit = 0x10,
+-    kFPFinderInfoBit = 0x20,
+-    kFPLongNameBit = 0x40,
+-    kFPShortNameBit = 0x80,
+-    kFPNodeIDBit = 0x100,
+-    kFPOffspringCountBit = 0x0200,
+-    kFPOwnerIDBit = 0x0400,
+-    kFPGroupIDBit = 0x0800,
+-    kFPAccessRightsBit = 0x1000,
+-    kFPProDOSInfoBit = 0x2000, // AFP version 2.2 and earlier
+-    kFPUTF8NameBit = 0x2000, // AFP version 3.0 and later
+-    kFPUnixPrivsBit = 0x8000 // AFP version 3.0 and later
+-};
+-
+-/* AFP File bitmap, p.238.  These are the ones not in the AFP Directory
+-   attributes map. */
+-
+-enum {
+-	kFPDataForkLenBit = 0x0200,
+-	kFPRsrcForkLenBit = 0x0400,
+-	kFPExtDataForkLenBit = 0x0800, // AFP version 3.0 and later
+-	kFPLaunchLimitBit = 0x1000,
+-	kFPExtRsrcForkLenBit = 0x4000, // AFP version 3.0 and later
+-};
+-
+-/* AFP Extended Attributes Bitmap, p.238  */
+-
+-enum {
+-	kXAttrNoFollow = 0x1,
+-	kXAttrCreate = 0x2,
+-	kXAttrREplace=0x4
+-};
+-
+-
+-/* AFP function codes */
+-enum AFPFunction
+-{
+-        afpByteRangeLock = 1, afpCloseVol, afpCloseDir, afpCloseFork,
+-        afpCopyFile, afpCreateDir, afpCreateFile,
+-        afpDelete, afpEnumerate, afpFlush, afpFlushFork,
+-        afpGetForkParms = 14, afpGetSrvrInfo, afpGetSrvrParms,
+-        afpGetVolParms, afpLogin, afpLoginCont, afpLogout, afpMapID,
+-        afpMapName, afpMoveAndRename, afpOpenVol, afpOpenDir, afpOpenFork,
+-        afpRead, afpRename, afpSetDirParms, afpSetFileParms,
+-        afpSetForkParms, afpSetVolParms, afpWrite, afpGetFileDirParms,
+-	afpSetFileDirParms, afpChangePassword,
+-        afpGetUserInfo=37,afpGetSrvrMsg = 38,
+-	afpOpenDT=48,
+-	afpCloseDT=49,
+-	afpGetIcon=51, afpGetIconInfo=52,
+-	afpAddComment=56, afpRemoveComment=57, afpGetComment=58,
+-	afpByteRangeLockExt=59, afpReadExt, afpWriteExt,
+-	afpGetAuthMethods=62,
+-	afp_LoginExt=63,
+-	afpGetSessionToken=64,
+-	afpDisconnectOldSession=65,
+-	afpEnumerateExt=66,
+-	afpCatSearchExt = 67,
+-	afpEnumerateExt2 = 68, afpGetExtAttr, afpSetExtAttr, 
+-	afpRemoveExtAttr , afpListExtAttrs,
+-	afpZzzzz = 122,
+-	afpAddIcon=192,
+-};
+-
+-/* AFP Volume bitmap.  Take from 242 of the protocol guide. */
+-enum {
+-	kFPBadVolPre222Bitmap = 0xFe00,
+-	kFPBadVolBitmap = 0xF000,
+-	kFPVolAttributeBit = 0x1,
+-	kFPVolSignatureBit = 0x2,
+-	kFPVolCreateDateBit = 0x4,
+-	kFPVolModDateBit = 0x8,
+-	kFPVolBackupDateBit = 0x10,
+-	kFPVolIDBit = 0x20,
+-	kFPVolBytesFreeBit = 0x40,
+-	kFPVolBytesTotalBit = 0x80,
+-	kFPVolNameBit = 0x100,
+-	kFPVolExtBytesFreeBit = 0x200,
+-	kFPVolExtBytesTotalBit = 0x400,
+-	kFPVolBlockSizeBit = 0x800
+-};
+-
+-/* AFP Attention Codes -- 4 bits */
+-#define AFPATTN_SHUTDOWN     (1 << 15)            /* shutdown/disconnect */
+-#define AFPATTN_CRASH        (1 << 14)            /* server crashed */
+-#define AFPATTN_MESG         (1 << 13)            /* server has message */
+-#define AFPATTN_NORECONNECT  (1 << 12)            /* don't reconnect */
+-/* server notification */
+-#define AFPATTN_NOTIFY       (AFPATTN_MESG | AFPATTN_NORECONNECT) 
+-
+-/* extended bitmap -- 12 bits. volchanged is only useful w/ a server
+- * notification, and time is only useful for shutdown. */
+-#define AFPATTN_VOLCHANGED   (1 << 0)             /* volume has changed */
+-#define AFPATTN_TIME(x)      ((x) & 0xfff)        /* time in minutes */
+-
+-#define kFPNoErr 0
+-
+-/* AFP result codes, p252 */
+-#define kASPSessClosed -1072
+-#define kFPAccessDenied -5000
+-#define kFPAuthContinue -5001
+-#define kFPBadUAM -5002
+-#define kFPBadVersNum -5003
+-#define kFPBitmapErr -5004
+-#define kFPCantMove -5005
+-#define kFPDenyConflict -5006
+-#define kFPDirNotEmpty -5007
+-#define kFPDiskFull -5008
+-#define kFPEOFErr -5009
+-#define kFPFileBusy -5010
+-#define kFPFlatVol -5011
+-#define kFPItemNotFound -5012
+-#define kFPLockErr -5013
+-#define kFPMiscErr -5014
+-#define kFPNoMoreLocks -5015
+-#define kFPNoServer -5016
+-#define kFPObjectExists -5017
+-#define kFPObjectNotFound -5018
+-#define kFPParamErr -5019
+-#define kFPRangeNotLocked -5020
+-#define kFPRangeOverlap -5021
+-#define kFPSessClosed -5022
+-#define kFPUserNotAuth -5023
+-#define kFPCallNotSupported -5024
+-#define kFPObjectTypeErr -5025
+-#define kFPTooManyFilesOpen -5026
+-#define kFPServerGoingDown -5027
+-#define kFPCantRename -5028
+-#define kFPDirNotFound -5029
+-#define kFPIconTypeError -5030
+-#define kFPVolLocked -5031
+-#define kFPObjectLocked -5032
+-#define kFPContainsSharedErr -5033
+-#define kFPIDNotFound -5034
+-#define kFPIDExists -5035
+-#define kFPDiffVolErr  -5036
+-#define kFPCatalogChanged -5037
+-#define kFPSameObjectErr -5038
+-#define kFPBadIDErr -5039
+-#define kFPPwdSameErr -5040
+-#define kFPPwdTooShortErr -5041
+-#define kFPPwdExpiredErr -5042
+-#define kFPInsideSharedErr -5043
+-#define kFPInsideTrashErr -5044
+-#define kFPPwdNeedsChangeErr -5045
+-#define kFPPwdPolicyErr -5046
+-#define kFPDiskQuotaExceeded –5047 
+-
+-
+-
+-/* These flags determine to lock or unlock in ByteRangeLock(Ext) */
+-
+-enum {
+-ByteRangeLock_Lock = 0,
+-ByteRangeLock_Unlock = 1
+-};
+-
+-/* These flags are used in volopen and getsrvrparm replies, p.171 */
+-
+-#define HasConfigInfo 0x1
+-#define HasPassword 0x80
+-
+-/* These are the subfunction for kFPMapID, as per p.248 */
+-
+-enum {
+-kUserIDToName = 1,
+-kGroupIDToName = 2,
+-kUserIDToUTF8Name = 3,
+-kGroupIDToUTF8Name = 4,
+-kUserUUIDToUTF8Name = 5,
+-kGroupUUIDToUTF8Name = 6
+-};
+-
+-
+-/* These are the subfunction flags described in the FPMapName command, p.286.
+-   Note that this is different than what's described on p. 186. */
+-
+-enum {
+-kNameToUserID = 1,
+-kNameToGroupID = 2,
+-kUTF8NameToUserID = 3,
+-kUTF8NameToGroupID = 4,
+-kUTF8NameToUserUUID = 5,
+-kUTF8NameToGroupUUID = 6
+-};
+-
+-/* These are bits for FPGetUserInfo, p.173. */
+-#define kFPGetUserInfo_USER_ID 1
+-#define kFPGetUserInfo_PRI_GROUPID 2
+-
+-/* Flags for the replies of GetSrvrInfo and DSI GetStatus, p.240 */
+-
+-enum {
+-	kSupportsCopyfile = 0x01,
+-	kSupportsChgPwd = 0x02,
+-	kDontAllowSavePwd = 0x04,
+-	kSupportsSrvrMsg = 0x08,
+-	kSrvrSig = 0x10,
+-	kSupportsTCP = 0x20,
+-	kSupportsSrvrNotify = 0x40,
+-	kSupportsReconnect = 0x80,
+-	kSupportsDirServices = 0x100,
+-	kSupportsUTF8SrvrName = 0x200,
+-	kSupportsUUIDs = 0x400,
+-	kSupportsSuperClient = 0x8000
+-};
+-
+-
+-/* p.247 */
+-
+-enum {
+-	kLoginWithoutID = 0,
+-	kLoginWithID = 1,
+-	kReconnWithID = 2,
+-	kLoginWithTimeAndID = 3,
+-	kReconnWithTimeAndID = 4,
+-	kRecon1Login = 5,
+-	kRecon1ReconnectLogin = 6,
+-	kRecon1Refresh = 7, kGetKerberosSessionKey = 8
+-};
+-
+-
+-#define AFP_CHMOD_ALLOWED_BITS_22 \
+-	(S_IRUSR |S_IWUSR | S_IRGRP | S_IWGRP |S_IROTH | S_IWOTH | S_IFREG )
+-
+-
+-#endif
+-
+-
+-
+-
+diff -Naur afpfs-ng-0.8.1/include/codepage.h afpfs-ng-0.8.1.patch/include/codepage.h
+--- afpfs-ng-0.8.1/include/codepage.h	2007-09-23 16:21:30.000000000 +0200
++++ afpfs-ng-0.8.1.patch/include/codepage.h	1970-01-01 01:00:00.000000000 +0100
+@@ -1,11 +0,0 @@
+-#ifndef __CODE_PAGE_H_
+-#define __CODE_PAGE_H_
+-int convert_utf8dec_to_utf8pre(const char *src, int src_len,
+-	char * dest, int dest_len);
+-int convert_utf8pre_to_utf8dec(const char * src, int src_len, 
+-	char * dest, int dest_len);
+-int convert_path_to_unix(char encoding, char * dest, 
+-	char * src, int dest_len);
+-int convert_path_to_afp(char encoding, char * dest, 
+-	char * src, int dest_len);
+-#endif
+diff -Naur afpfs-ng-0.8.1/include/dsi.h afpfs-ng-0.8.1.patch/include/dsi.h
+--- afpfs-ng-0.8.1/include/dsi.h	2008-02-18 04:33:24.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/dsi.h	1970-01-01 01:00:00.000000000 +0100
+@@ -1,33 +0,0 @@
+-
+-#ifndef __DSI_H_
+-#define __DSI_H_
+-
+-#include "afp.h"
+-
+-struct dsi_request
+-{
+-	unsigned short requestid;
+-	unsigned char subcommand;
+-	void * other;
+-	unsigned char wait;
+-	pthread_cond_t  condition_cond;
+-	struct dsi_request * next;
+-	int return_code;
+-};
+-
+-int dsi_receive(struct afp_server * server, void * data, int size);
+-int dsi_getstatus(struct afp_server * server);
+-
+-int dsi_opensession(struct afp_server *server);
+-
+-int dsi_send(struct afp_server *server, char * msg, int size,int wait,unsigned char subcommand, void ** other);
+-struct dsi_session * dsi_create(struct afp_server *server);
+-int dsi_restart(struct afp_server *server);
+-int dsi_recv(struct afp_server * server);
+-
+-#define DSI_BLOCK_TIMEOUT -1
+-#define DSI_DONT_WAIT 0
+-#define DSI_DEFAULT_TIMEOUT 5
+-
+-
+-#endif
+diff -Naur afpfs-ng-0.8.1/include/libafpclient.h afpfs-ng-0.8.1.patch/include/libafpclient.h
+--- afpfs-ng-0.8.1/include/libafpclient.h	2008-01-30 05:37:59.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/libafpclient.h	1970-01-01 01:00:00.000000000 +0100
+@@ -1,50 +0,0 @@
+-
+-#ifndef __CLIENT_H_
+-#define __CLIENT_H_
+-
+-#include <unistd.h>
+-#include <syslog.h>
+-
+-#define MAX_CLIENT_RESPONSE 2048
+-
+-
+-enum loglevels {
+-        AFPFSD,
+-};
+-
+-struct afp_server;
+-struct afp_volume;
+-
+-struct libafpclient {
+-        int (*unmount_volume) (struct afp_volume * volume);
+-	void (*log_for_client)(void * priv,
+-        	enum loglevels loglevel, int logtype, const char *message);
+-	void (*forced_ending_hook)(void);
+-	int (*scan_extra_fds)(int command_fd,fd_set *set, int * max_fd);
+-	void (*loop_started)(void);
+-} ;
+-
+-extern struct libafpclient * libafpclient;
+-
+-void libafpclient_register(struct libafpclient * tmpclient);
+-
+-
+-void signal_main_thread(void);
+-
+-/* These are logging functions */
+-
+-#define MAXLOGSIZE 2048
+-
+-#define LOG_METHOD_SYSLOG 1
+-#define LOG_METHOD_STDOUT 2
+-
+-void set_log_method(int m);
+-
+-
+-void log_for_client(void * priv,
+-        enum loglevels loglevel, int logtype, char * message,...);
+-
+-void stdout_log_for_client(void * priv,
+-	enum loglevels loglevel, int logtype, const char *message);
+-
+-#endif
+diff -Naur afpfs-ng-0.8.1/include/Makefile.am afpfs-ng-0.8.1.patch/include/Makefile.am
+--- afpfs-ng-0.8.1/include/Makefile.am	1970-01-01 01:00:00.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/Makefile.am	2011-09-10 12:13:50.126124692 +0200
+@@ -0,0 +1,3 @@
++## Process this file with automake to produce Makefile.in
++
++SUBDIRS = afpfs-ng
+diff -Naur afpfs-ng-0.8.1/include/map_def.h afpfs-ng-0.8.1.patch/include/map_def.h
+--- afpfs-ng-0.8.1/include/map_def.h	2008-01-17 05:55:46.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/map_def.h	1970-01-01 01:00:00.000000000 +0100
+@@ -1,15 +0,0 @@
+-#ifndef __MAP_H_
+-#define __MAP_H_
+-
+-#include "afp.h"
+-
+-#define AFP_MAPPING_UNKNOWN 0
+-#define AFP_MAPPING_COMMON 1
+-#define AFP_MAPPING_LOGINIDS 2
+-#define AFP_MAPPING_NAME 3
+-
+-unsigned int map_string_to_num(char * name);
+-char * get_mapping_name(struct afp_volume * volume);
+-
+-
+-#endif
+diff -Naur afpfs-ng-0.8.1/include/midlevel.h afpfs-ng-0.8.1.patch/include/midlevel.h
+--- afpfs-ng-0.8.1/include/midlevel.h	2007-12-24 20:39:25.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/midlevel.h	1970-01-01 01:00:00.000000000 +0100
+@@ -1,64 +0,0 @@
+-#ifndef __MIDLEVEL_H_
+-#define __MIDLEVEL_H_ 
+-
+-#include <utime.h>
+-#include "afp.h"
+-
+-int ml_open(struct afp_volume * volume, const char *path, int flags, 
+-        struct afp_file_info **newfp);
+-
+-int ml_creat(struct afp_volume * volume, const char *path,mode_t mode);
+-
+-int ml_readdir(struct afp_volume * volume, 
+-	const char *path, 
+-	struct afp_file_info **base);
+-
+-int ml_read(struct afp_volume * volume, const char *path,
+-	char *buf, size_t size, off_t offset,
+-	struct afp_file_info *fp, int * eof);
+-
+-int ml_chmod(struct afp_volume * vol, const char * path, mode_t mode);
+-
+-int ml_unlink(struct afp_volume * vol, const char *path);
+-
+-int ml_mkdir(struct afp_volume * vol, const char * path, mode_t mode);
+-
+-int ml_close(struct afp_volume * volume, const char * path,
+-        struct afp_file_info * fp);
+-
+-int ml_getattr(struct afp_volume * volume, const char *path, 
+-	struct stat *stbuf);
+-
+-int ml_write(struct afp_volume * volume, const char * path, 
+-	const char *data, size_t size, off_t offset,
+-	struct afp_file_info * fp, uid_t uid,
+-	gid_t gid);
+-
+-int ml_readlink(struct afp_volume * vol, const char * path,
+-        char *buf, size_t size);
+-
+-int ml_rmdir(struct afp_volume * vol, const char *path);
+-
+-int ml_chown(struct afp_volume * vol, const char * path,   
+-        uid_t uid, gid_t gid);
+-
+-int ml_truncate(struct afp_volume * vol, const char * path, off_t offset);
+-
+-int ml_utime(struct afp_volume * vol, const char * path,
+-	struct utimbuf * timebuf);
+-
+-int ml_symlink(struct afp_volume *vol, const char * path1, const char * path2);
+-
+-int ml_rename(struct afp_volume * vol,
+-	const char * path_from, const char * path_to);
+-
+-int ml_statfs(struct afp_volume * vol, const char *path, struct statvfs *stat);
+-
+-void afp_ml_filebase_free(struct afp_file_info **filebase);
+-
+-int ml_passwd(struct afp_server *server,
+-                char * username, char * oldpasswd, char * newpasswd);
+-
+-
+-
+-#endif
+diff -Naur afpfs-ng-0.8.1/include/uams_def.h afpfs-ng-0.8.1.patch/include/uams_def.h
+--- afpfs-ng-0.8.1/include/uams_def.h	2007-09-07 15:10:51.000000000 +0200
++++ afpfs-ng-0.8.1.patch/include/uams_def.h	1970-01-01 01:00:00.000000000 +0100
+@@ -1,16 +0,0 @@
+-#ifndef __UAM_DEFS_H_
+-#define __UAM_DEFS_H_
+-
+-#define UAM_NOUSERAUTHENT 0x1
+-#define UAM_CLEARTXTPASSWRD 0x2
+-#define UAM_RANDNUMEXCHANGE 0x4
+-#define UAM_2WAYRANDNUM 0x8
+-#define UAM_DHCAST128 0x10
+-#define UAM_CLIENTKRB 0x20
+-#define UAM_DHX2 0x40
+-#define UAM_RECON1 0x80
+-
+-int uam_string_to_bitmap(char * name);
+-char * uam_bitmap_to_string(unsigned int bitmap);
+-
+-#endif
+diff -Naur afpfs-ng-0.8.1/include/utils.h afpfs-ng-0.8.1.patch/include/utils.h
+--- afpfs-ng-0.8.1/include/utils.h	2008-02-18 04:33:58.000000000 +0100
++++ afpfs-ng-0.8.1.patch/include/utils.h	1970-01-01 01:00:00.000000000 +0100
+@@ -1,43 +0,0 @@
+-#ifndef __UTILS_H_
+-#define __UTILS_H_
+-#include <stdio.h>
+-
+-#include "afp.h"
+-
+-#if BYTE_ORDER == BIG_ENDIAN
+-#define hton64(x)       (x)
+-#define ntoh64(x)       (x)
+-#else /* BYTE_ORDER == BIG_ENDIAN */
+-#define hton64(x)       ((u_int64_t) (htonl(((x) >> 32) & 0xffffffffLL)) | \
+-                         (u_int64_t) ((htonl(x) & 0xffffffffLL) << 32))
+-#define ntoh64(x)       (hton64(x))
+-#endif /* BYTE_ORDER == BIG_ENDIAN */
+-
+-#define min(a,b) (((a)<(b)) ? (a) : (b))
+-#define max(a,b) (((a)>(b)) ? (a) : (b))
+-
+-
+-
+-unsigned char unixpath_to_afppath(
+-        struct afp_server * server,
+-        char * buf);
+-
+-unsigned char sizeof_path_header(struct afp_server * server);
+-
+-
+-
+-unsigned char copy_from_pascal(char *dest, char *pascal,unsigned int max_len) ;
+-unsigned short copy_from_pascal_two(char *dest, char *pascal,unsigned int max_len);
+-
+-unsigned char copy_to_pascal(char *dest, const char *src);
+-unsigned short copy_to_pascal_two(char *dest, const char *src);
+-
+-void copy_path(struct afp_server * server, char * dest, const char * pathname, unsigned char len);
+-
+-
+-char * create_path(struct afp_server * server, char * pathname, unsigned short * len);
+-
+-
+-int invalid_filename(struct afp_server * server, const char * filename);
+-
+-#endif
+diff -Naur afpfs-ng-0.8.1/lib/afp.c afpfs-ng-0.8.1.patch/lib/afp.c
+--- afpfs-ng-0.8.1/lib/afp.c	2008-03-08 03:44:16.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/afp.c	2011-09-10 12:13:50.131124759 +0200
+@@ -9,7 +9,7 @@
+ 
+ 
+ 
+-#include "afp.h"
++#include "afpfs-ng/afp.h"
+ #include <config.h>
+ 
+ #include <stdio.h>
+@@ -21,17 +21,17 @@
+ #include <sys/socket.h>
+ #include <errno.h>
+ 
+-#include "afp_protocol.h"
+-#include "libafpclient.h"
++#include "afpfs-ng/afp_protocol.h"
++#include "afpfs-ng/libafpclient.h"
+ #include "server.h"
+-#include "dsi.h"
++#include "afpfs-ng/dsi.h"
+ #include "dsi_protocol.h"
+-#include "utils.h"
++#include "afpfs-ng/utils.h"
+ #include "afp_replies.h"
+ #include "afp_internal.h"
+ #include "did.h"
+ #include "forklist.h"
+-#include "codepage.h"
++#include "afpfs-ng/codepage.h"
+ 
+ struct afp_versions      afp_versions[] = {
+             { "AFPVersion 1.1", 11 },
+diff -Naur afpfs-ng-0.8.1/lib/afp_internal.h afpfs-ng-0.8.1.patch/lib/afp_internal.h
+--- afpfs-ng-0.8.1/lib/afp_internal.h	2007-11-09 05:27:20.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/afp_internal.h	2011-09-10 12:13:50.132124772 +0200
+@@ -1,7 +1,7 @@
+ #ifndef _AFP_INTERNAL_H_
+ #define _AFP_INTERNAL_H_
+ 
+-#include "afp.h"
++#include "afpfs-ng/afp.h"
+ 
+ extern struct afp_versions afp_versions[];
+ 
+diff -Naur afpfs-ng-0.8.1/lib/afp_url.c afpfs-ng-0.8.1.patch/lib/afp_url.c
+--- afpfs-ng-0.8.1/lib/afp_url.c	2008-03-04 21:16:49.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/afp_url.c	2011-09-10 12:13:50.132124772 +0200
+@@ -3,7 +3,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <errno.h>
+-#include "afp.h"
++#include "afpfs-ng/afp.h"
+ 
+ void afp_default_url(struct afp_url *url)
+ {
+diff -Naur afpfs-ng-0.8.1/lib/client.c afpfs-ng-0.8.1.patch/lib/client.c
+--- afpfs-ng-0.8.1/lib/client.c	2008-02-18 04:36:30.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/client.c	2011-09-10 12:13:50.132124772 +0200
+@@ -1,5 +1,5 @@
+-#include <afp.h>
+-#include <libafpclient.h>
++#include <afpfs-ng/afp.h>
++#include <afpfs-ng/libafpclient.h>
+ 
+ 
+ struct libafpclient * libafpclient = NULL;
+diff -Naur afpfs-ng-0.8.1/lib/codepage.c afpfs-ng-0.8.1.patch/lib/codepage.c
+--- afpfs-ng-0.8.1/lib/codepage.c	2008-02-18 04:36:54.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/codepage.c	2011-09-10 12:13:50.133124786 +0200
+@@ -14,8 +14,8 @@
+ 
+ #include <string.h>
+ #include <stdlib.h>
+-#include "afp_protocol.h"
+-#include "utils.h"
++#include "afpfs-ng/afp_protocol.h"
++#include "afpfs-ng/utils.h"
+ #include "unicode.h"
+ 
+ int convert_utf8dec_to_utf8pre(const char *src, int src_len,
+diff -Naur afpfs-ng-0.8.1/lib/connect.c afpfs-ng-0.8.1.patch/lib/connect.c
+--- afpfs-ng-0.8.1/lib/connect.c	2008-02-18 04:38:59.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/connect.c	2011-09-10 12:13:50.133124786 +0200
+@@ -10,13 +10,13 @@
+ #include <string.h>
+ #include <sys/socket.h>
+ 
+-#include "afp.h"
+-#include "dsi.h"
+-#include "utils.h"
+-#include "uams_def.h"
+-#include "codepage.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/utils.h"
++#include "afpfs-ng/uams_def.h"
++#include "afpfs-ng/codepage.h"
+ #include "users.h"
+-#include "libafpclient.h"
++#include "afpfs-ng/libafpclient.h"
+ #include "server.h"
+ 
+ 
+diff -Naur afpfs-ng-0.8.1/lib/did.c afpfs-ng-0.8.1.patch/lib/did.c
+--- afpfs-ng-0.8.1/lib/did.c	2008-02-18 04:39:17.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/did.c	2011-09-10 12:13:50.133124786 +0200
+@@ -9,8 +9,8 @@
+ #include <string.h>
+ #include <stdio.h>
+ 
+-#include "afp.h"
+-#include "afp_protocol.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/afp_protocol.h"
+ 
+ #undef DID_CACHE_DISABLE
+ 
+diff -Naur afpfs-ng-0.8.1/lib/dsi.c afpfs-ng-0.8.1.patch/lib/dsi.c
+--- afpfs-ng-0.8.1/lib/dsi.c	2008-02-18 04:53:03.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/dsi.c	2011-09-10 12:13:50.134124800 +0200
+@@ -19,12 +19,12 @@
+ #include <signal.h>
+ #include <iconv.h>
+ 
+-#include "utils.h"
+-#include "dsi.h"
+-#include "afp.h"
+-#include "uams_def.h"
++#include "afpfs-ng/utils.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/uams_def.h"
+ #include "dsi_protocol.h"
+-#include "libafpclient.h"
++#include "afpfs-ng/libafpclient.h"
+ #include "afp_internal.h"
+ #include "afp_replies.h"
+ 
+diff -Naur afpfs-ng-0.8.1/lib/forklist.c afpfs-ng-0.8.1.patch/lib/forklist.c
+--- afpfs-ng-0.8.1/lib/forklist.c	2008-01-17 05:49:16.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/forklist.c	2011-09-10 12:13:50.135124814 +0200
+@@ -10,7 +10,7 @@
+ */
+ 
+ 
+-#include "afp.h"
++#include "afpfs-ng/afp.h"
+ 
+ #include <stdlib.h>
+ #include <pthread.h>
+diff -Naur afpfs-ng-0.8.1/lib/log.c afpfs-ng-0.8.1.patch/lib/log.c
+--- afpfs-ng-0.8.1/lib/log.c	2008-01-30 05:37:58.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/log.c	2011-09-10 12:13:50.135124814 +0200
+@@ -3,7 +3,7 @@
+ #include <stdarg.h>
+ #include <string.h>
+ #include <stdlib.h>
+-#include "libafpclient.h"
++#include "afpfs-ng/libafpclient.h"
+ 
+ void log_for_client(void * priv,
+ 	enum loglevels loglevel, int logtype, char *format, ...) {
+diff -Naur afpfs-ng-0.8.1/lib/loop.c afpfs-ng-0.8.1.patch/lib/loop.c
+--- afpfs-ng-0.8.1/lib/loop.c	2008-02-18 04:40:11.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/loop.c	2011-09-10 12:13:50.135124814 +0200
+@@ -16,9 +16,9 @@
+ #include <sys/time.h>
+ #include <signal.h>
+ 
+-#include "afp.h"
+-#include "dsi.h"
+-#include "utils.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/utils.h"
+ 
+ #define SIGNAL_TO_USE SIGUSR2
+ 
+diff -Naur afpfs-ng-0.8.1/lib/lowlevel.c afpfs-ng-0.8.1.patch/lib/lowlevel.c
+--- afpfs-ng-0.8.1/lib/lowlevel.c	2008-02-20 02:33:17.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/lowlevel.c	2011-09-10 12:13:50.136124828 +0200
+@@ -19,10 +19,10 @@
+ #else
+ #include <fcntl.h>
+ #endif
+-#include "afp.h"
+-#include "afp_protocol.h"
+-#include "codepage.h"
+-#include "utils.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/afp_protocol.h"
++#include "afpfs-ng/codepage.h"
++#include "afpfs-ng/utils.h"
+ #include "did.h"
+ #include "users.h"
+ 
+diff -Naur afpfs-ng-0.8.1/lib/map_def.c afpfs-ng-0.8.1.patch/lib/map_def.c
+--- afpfs-ng-0.8.1/lib/map_def.c	2007-09-07 15:10:59.000000000 +0200
++++ afpfs-ng-0.8.1.patch/lib/map_def.c	2011-09-10 12:13:50.136124828 +0200
+@@ -1,6 +1,6 @@
+ #include <string.h>
+-#include "afp.h"
+-#include "map_def.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/map_def.h"
+ 
+ static char *afp_map_strings[] = {
+ 	"Unknown",
+diff -Naur afpfs-ng-0.8.1/lib/meta.c afpfs-ng-0.8.1.patch/lib/meta.c
+--- afpfs-ng-0.8.1/lib/meta.c	2008-01-04 04:52:44.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/meta.c	2011-09-10 12:13:50.137124841 +0200
+@@ -17,10 +17,10 @@
+ #include <unistd.h>
+ #include <sys/time.h>
+ 
+-#include "afp.h"
+-#include "dsi.h"
+-#include "afp_protocol.h"
+-#include "utils.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/afp_protocol.h"
++#include "afpfs-ng/utils.h"
+ 
+ 
+ int afp_meta_getattr(const char *path, struct stat *stbuf)
+diff -Naur afpfs-ng-0.8.1/lib/midlevel.c afpfs-ng-0.8.1.patch/lib/midlevel.c
+--- afpfs-ng-0.8.1/lib/midlevel.c	2008-03-08 17:08:18.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/midlevel.c	2011-09-10 12:13:50.160125150 +0200
+@@ -10,7 +10,7 @@
+ */
+ 
+ 
+-#include "afp.h"
++#include "afpfs-ng/afp.h"
+ 
+ #include <sys/stat.h>
+ #include <string.h>
+@@ -28,9 +28,9 @@
+ #include "users.h"
+ #include "did.h"
+ #include "resource.h"
+-#include "utils.h"
+-#include "codepage.h"
+-#include "midlevel.h"
++#include "afpfs-ng/utils.h"
++#include "afpfs-ng/codepage.h"
++#include "afpfs-ng/midlevel.h"
+ #include "afp_internal.h"
+ #include "forklist.h"
+ #include "uams.h"
+diff -Naur afpfs-ng-0.8.1/lib/proto_attr.c afpfs-ng-0.8.1.patch/lib/proto_attr.c
+--- afpfs-ng-0.8.1/lib/proto_attr.c	2008-01-30 05:37:58.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/proto_attr.c	2011-09-10 12:13:50.168125257 +0200
+@@ -7,10 +7,10 @@
+ 
+ #include <string.h>
+ #include <stdlib.h>
+-#include "dsi.h"
+-#include "afp.h"
+-#include "utils.h"
+-#include "afp_protocol.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/utils.h"
++#include "afpfs-ng/afp_protocol.h"
+ #include "dsi_protocol.h"
+ 
+ /* This is a new command, function 76.  There are currently no docs, so this 
+diff -Naur afpfs-ng-0.8.1/lib/proto_desktop.c afpfs-ng-0.8.1.patch/lib/proto_desktop.c
+--- afpfs-ng-0.8.1/lib/proto_desktop.c	2008-02-18 04:44:11.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/proto_desktop.c	2011-09-10 12:13:50.168125257 +0200
+@@ -9,10 +9,10 @@
+ #include <string.h>
+ #include <stdlib.h>
+ 
+-#include "dsi.h"
+-#include "afp.h"
+-#include "utils.h"
+-#include "afp_protocol.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/utils.h"
++#include "afpfs-ng/afp_protocol.h"
+ #include "dsi_protocol.h"
+ 
+ /* closedt, addicon, geticoninfo, addappl, removeappl */
+diff -Naur afpfs-ng-0.8.1/lib/proto_directory.c afpfs-ng-0.8.1.patch/lib/proto_directory.c
+--- afpfs-ng-0.8.1/lib/proto_directory.c	2008-02-19 03:39:29.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/proto_directory.c	2011-09-10 12:13:50.168125257 +0200
+@@ -9,10 +9,10 @@
+ #include <string.h>
+ #include <stdlib.h>
+ 
+-#include "dsi.h"
+-#include "afp.h"
+-#include "utils.h"
+-#include "afp_protocol.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/utils.h"
++#include "afpfs-ng/afp_protocol.h"
+ #include "dsi_protocol.h"
+ #include "afp_replies.h"
+ 
+diff -Naur afpfs-ng-0.8.1/lib/proto_files.c afpfs-ng-0.8.1.patch/lib/proto_files.c
+--- afpfs-ng-0.8.1/lib/proto_files.c	2008-02-18 04:46:18.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/proto_files.c	2011-09-10 12:13:50.169125270 +0200
+@@ -8,11 +8,11 @@
+ 
+ #include <stdlib.h>
+ #include <string.h>
+-#include "dsi.h"
+-#include "afp.h"
+-#include "utils.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/utils.h"
+ #include "dsi_protocol.h"
+-#include "afp_protocol.h"
++#include "afpfs-ng/afp_protocol.h"
+ #include "afp_internal.h"
+ 
+ /* afp_setfileparms, afp_setdirparms and afpsetfiledirparms are all remarkably
+diff -Naur afpfs-ng-0.8.1/lib/proto_fork.c afpfs-ng-0.8.1.patch/lib/proto_fork.c
+--- afpfs-ng-0.8.1/lib/proto_fork.c	2008-01-30 05:37:58.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/proto_fork.c	2011-09-10 12:13:50.169125270 +0200
+@@ -9,11 +9,11 @@
+ #include <stdlib.h>
+ #include <string.h>
+ 
+-#include "dsi.h"
+-#include "afp.h"
+-#include "utils.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/utils.h"
+ #include "dsi_protocol.h"
+-#include "afp_protocol.h"
++#include "afpfs-ng/afp_protocol.h"
+ 
+ int afp_setforkparms(struct afp_volume * volume,
+ 	unsigned short forkid, unsigned short bitmap, unsigned long len)
+diff -Naur afpfs-ng-0.8.1/lib/proto_login.c afpfs-ng-0.8.1.patch/lib/proto_login.c
+--- afpfs-ng-0.8.1/lib/proto_login.c	2008-01-30 05:37:59.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/proto_login.c	2011-09-10 12:13:50.169125270 +0200
+@@ -10,10 +10,10 @@
+ 
+ #include <stdlib.h>
+ #include <string.h>
+-#include "dsi.h"
++#include "afpfs-ng/dsi.h"
+ #include "dsi_protocol.h"
+-#include "afp.h"
+-#include "utils.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/utils.h"
+ #include "afp_internal.h"
+ 
+ 
+diff -Naur afpfs-ng-0.8.1/lib/proto_map.c afpfs-ng-0.8.1.patch/lib/proto_map.c
+--- afpfs-ng-0.8.1/lib/proto_map.c	2008-01-30 05:37:59.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/proto_map.c	2011-09-10 12:13:50.170125283 +0200
+@@ -9,11 +9,11 @@
+ #include <stdlib.h>
+ #include <string.h>
+ 
+-#include "dsi.h"
+-#include "afp.h"
+-#include "utils.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/utils.h"
+ #include "dsi_protocol.h"
+-#include "afp_protocol.h"
++#include "afpfs-ng/afp_protocol.h"
+ 
+ /* This is used to pass the return values back from afp_getuserinfo_reply() */
+ struct uidgid {
+diff -Naur afpfs-ng-0.8.1/lib/proto_replyblock.c afpfs-ng-0.8.1.patch/lib/proto_replyblock.c
+--- afpfs-ng-0.8.1/lib/proto_replyblock.c	2008-02-18 04:46:19.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/proto_replyblock.c	2011-09-10 12:13:50.170125283 +0200
+@@ -6,9 +6,9 @@
+  */
+ 
+ #include <string.h>
+-#include "dsi.h"
+-#include "afp.h"
+-#include "utils.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/utils.h"
+ #include "afp_internal.h"
+ 
+ 
+diff -Naur afpfs-ng-0.8.1/lib/proto_server.c afpfs-ng-0.8.1.patch/lib/proto_server.c
+--- afpfs-ng-0.8.1/lib/proto_server.c	2008-02-19 02:56:21.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/proto_server.c	2011-09-10 12:13:50.170125283 +0200
+@@ -7,12 +7,12 @@
+  */
+ #include <stdlib.h>
+ #include <string.h>
+-#include "dsi.h"
+-#include "afp.h"
+-#include "utils.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/utils.h"
+ #include "dsi_protocol.h"
+-#include "afp_protocol.h"
+-#include "codepage.h"
++#include "afpfs-ng/afp_protocol.h"
++#include "afpfs-ng/codepage.h"
+ #include "afp_internal.h"
+ 
+ int afp_getsrvrparms(struct afp_server *server)
+diff -Naur afpfs-ng-0.8.1/lib/proto_session.c afpfs-ng-0.8.1.patch/lib/proto_session.c
+--- afpfs-ng-0.8.1/lib/proto_session.c	2008-02-18 04:46:19.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/proto_session.c	2011-09-10 12:13:50.170125283 +0200
+@@ -8,10 +8,10 @@
+  */
+ #include <stdlib.h>
+ #include <string.h>
+-#include "dsi.h"
++#include "afpfs-ng/dsi.h"
+ #include "dsi_protocol.h"
+-#include "afp.h"
+-#include "utils.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/utils.h"
+ 
+ int afp_getsessiontoken(struct afp_server * server, int type, 
+ 	unsigned int timestamp, struct afp_token *outgoing_token, 
+diff -Naur afpfs-ng-0.8.1/lib/proto_volume.c afpfs-ng-0.8.1.patch/lib/proto_volume.c
+--- afpfs-ng-0.8.1/lib/proto_volume.c	2008-02-18 04:47:48.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/proto_volume.c	2011-09-10 12:13:50.171125296 +0200
+@@ -8,13 +8,13 @@
+ 
+ #include <string.h>
+ #include <stdlib.h>
+-#include "dsi.h"
+-#include "afp.h"
+-#include "utils.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/utils.h"
+ #include "dsi_protocol.h"
+-#include "afp_protocol.h"
++#include "afpfs-ng/afp_protocol.h"
+ #include "afp_internal.h"
+-#include "codepage.h"
++#include "afpfs-ng/codepage.h"
+ 
+ static int parse_volbitmap_reply(struct afp_server * server, 
+ 		struct afp_volume * tmpvol, 
+diff -Naur afpfs-ng-0.8.1/lib/resource.c afpfs-ng-0.8.1.patch/lib/resource.c
+--- afpfs-ng-0.8.1/lib/resource.c	2008-02-18 04:46:56.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/resource.c	2011-09-10 12:13:50.171125296 +0200
+@@ -3,11 +3,11 @@
+ #include <string.h>
+ #include <errno.h>
+ #include <fcntl.h>
+-#include "afp.h"
++#include "afpfs-ng/afp.h"
+ #include "resource.h"
+ #include "lowlevel.h"
+ #include "did.h"
+-#include "midlevel.h"
++#include "afpfs-ng/midlevel.h"
+ 
+ #define appledouble ".AppleDouble"
+ #define finderinfo_string ".finderinfo"
+diff -Naur afpfs-ng-0.8.1/lib/server.c afpfs-ng-0.8.1.patch/lib/server.c
+--- afpfs-ng-0.8.1/lib/server.c	2008-02-19 02:56:21.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/server.c	2011-09-10 12:13:50.172125310 +0200
+@@ -8,15 +8,15 @@
+ #include <string.h>
+ #include <time.h>
+ 
+-#include "afp.h"
+-#include "dsi.h"
+-#include "utils.h"
+-#include "uams_def.h"
+-#include "codepage.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/utils.h"
++#include "afpfs-ng/uams_def.h"
++#include "afpfs-ng/codepage.h"
+ #include "users.h"
+-#include "libafpclient.h"
++#include "afpfs-ng/libafpclient.h"
+ #include "afp_internal.h"
+-#include "dsi.h"
++#include "afpfs-ng/dsi.h"
+ 
+ 
+ struct afp_server * afp_server_complete_connection(
+diff -Naur afpfs-ng-0.8.1/lib/status.c afpfs-ng-0.8.1.patch/lib/status.c
+--- afpfs-ng-0.8.1/lib/status.c	2008-03-08 17:08:38.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/status.c	2011-09-10 12:13:50.172125310 +0200
+@@ -1,8 +1,8 @@
+ #include <string.h>
+ #include <stdio.h>
+-#include "map_def.h"
+-#include "dsi.h"
+-#include "afp.h"
++#include "afpfs-ng/map_def.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/afp.h"
+ 
+ int afp_status_header(char * text, int * len) 
+ {
+diff -Naur afpfs-ng-0.8.1/lib/uams.c afpfs-ng-0.8.1.patch/lib/uams.c
+--- afpfs-ng-0.8.1/lib/uams.c	2008-01-04 04:52:44.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/uams.c	2011-09-10 12:13:50.173125324 +0200
+@@ -8,10 +8,10 @@
+ 
+ #include <string.h>
+ #include <stdlib.h>
+-#include "dsi.h"
+-#include "afp.h"
+-#include "utils.h"
+-#include "uams_def.h"
++#include "afpfs-ng/dsi.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/utils.h"
++#include "afpfs-ng/uams_def.h"
+ #include "config.h"
+ 
+ #ifdef HAVE_LIBGCRYPT
+diff -Naur afpfs-ng-0.8.1/lib/users.c afpfs-ng-0.8.1.patch/lib/users.c
+--- afpfs-ng-0.8.1/lib/users.c	2008-02-18 04:48:56.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/users.c	2011-09-10 12:13:50.174125338 +0200
+@@ -3,8 +3,8 @@
+ #include <grp.h>
+ #include <string.h>
+ 
+-#include "afp.h"
+-#include "map_def.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/map_def.h"
+ 
+ /* How mapping works
+  *
+diff -Naur afpfs-ng-0.8.1/lib/utils.c afpfs-ng-0.8.1.patch/lib/utils.c
+--- afpfs-ng-0.8.1/lib/utils.c	2008-02-18 04:53:37.000000000 +0100
++++ afpfs-ng-0.8.1.patch/lib/utils.c	2011-09-10 12:13:50.174125338 +0200
+@@ -8,10 +8,10 @@
+ #include <stdio.h>
+ #include <string.h>
+ #include <stdlib.h>
+-#include "afp.h"
+-#include "utils.h"
++#include "afpfs-ng/afp.h"
++#include "afpfs-ng/utils.h"
+ #include "afp_internal.h"
+-#include "afp_protocol.h"
++#include "afpfs-ng/afp_protocol.h"
+ 
+ struct afp_path_header_long {
+ 	unsigned char type;
+diff -Naur afpfs-ng-0.8.1/Makefile.am afpfs-ng-0.8.1.patch/Makefile.am
+--- afpfs-ng-0.8.1/Makefile.am	2008-02-18 04:24:14.000000000 +0100
++++ afpfs-ng-0.8.1.patch/Makefile.am	2011-09-10 12:13:50.176125365 +0200
+@@ -1,5 +1,5 @@
+ if HAVE_LIBFUSE
+-SUBDIRS = lib fuse cmdline docs
++SUBDIRS = lib fuse cmdline include docs
+ else
+-SUBDIRS = lib cmdline docs
++SUBDIRS = lib cmdline include docs
+ endif
-- 
cgit v0.12


From c220cb6807feec7bdc95cd2831ee5e7e3d728177 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 15:54:06 -0500
Subject: libshairport: Initial inclusion; dep of XBMC 11

---
 abs/extra/community/libshairport/PKGBUILD | 33 +++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)
 create mode 100644 abs/extra/community/libshairport/PKGBUILD

diff --git a/abs/extra/community/libshairport/PKGBUILD b/abs/extra/community/libshairport/PKGBUILD
new file mode 100644
index 0000000..293e1cc
--- /dev/null
+++ b/abs/extra/community/libshairport/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id$
+# Maintainer: BlackIkeEagle <ike DOT devolder AT gmail DOT com>
+
+pkgname=libshairport
+_developer='amejia1'
+_version=1.2.1
+_commithash='aeb4987'
+pkgver=${_version}
+pkgrel=2
+pkgdesc="emulates an AirPort Express"
+arch=('i686' 'x86_64')
+url='https://github.com/amejia1/libshairport'
+license=('GPL')
+depends=('openssl' 'libao')
+source=("$pkgname-$pkgver.tar.gz::https://github.com/amejia1/libshairport/tarball/$_commithash")
+sha256sums=('003c65f56123a7cb090b2d7249f0facbef668f7db6048f4b458713892a6911ca')
+options=(!libtool)
+
+_srcfolder=$_developer-$pkgname-$_commithash
+
+build() {
+  mv "$_srcfolder" "$pkgname-$pkgver"
+
+  cd "$pkgname-$pkgver"
+  autoreconf -vif
+  ./configure --prefix=/usr
+  make
+}
+
+package() {
+  cd "$pkgname-$pkgver"
+  make DESTDIR="$pkgdir" install
+}
-- 
cgit v0.12


From facd9e282bbe154047eb9efa7294db4b1a2fbe0a Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 15:57:42 -0500
Subject: libcec: Initial inclusion; dep of XBMC 11

---
 abs/extra/community/libcec/PKGBUILD | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 abs/extra/community/libcec/PKGBUILD

diff --git a/abs/extra/community/libcec/PKGBUILD b/abs/extra/community/libcec/PKGBUILD
new file mode 100644
index 0000000..e4b9821
--- /dev/null
+++ b/abs/extra/community/libcec/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id$
+# Maintainer: BlackIkeEagle <ike DOT devolder AT gmail DOT com>
+# Contributor: Philippe Cherel <philippe.cherel@mayenne.org>
+
+pkgname=libcec
+pkgver=1.5.2
+pkgrel=1
+pkgdesc="Pulse-Eight's libcec for the Pulse-Eight USB-CEC adapter"
+arch=('i686' 'x86_64')
+url="https://github.com/Pulse-Eight/libcec"
+license=('GPL')
+depends=('udev')
+source=("$pkgname-$pkgver.tar.gz::https://github.com/Pulse-Eight/libcec/tarball/$pkgname-$pkgver")
+_srcfolder=Pulse-Eight-libcec-00a02d1
+sha256sums=('93990024d01da7c66e2c78ca23919fd83137f6b944a2dc82fb5cc6d58a46742f')
+options=(!libtool)
+
+build() {
+  mv "$_srcfolder" "$pkgname-$pkgver"
+
+  cd "$pkgname-$pkgver"
+  autoreconf -vif
+  ./configure --prefix=/usr
+  make
+}
+
+package() {
+  cd "$pkgname-$pkgver"
+  make DESTDIR="$pkgdir" install
+}
-- 
cgit v0.12


From 9fcaf97deafe261e47a41039f8571896deb6489d Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 16:03:06 -0500
Subject: libimobiledevice: Initial inclusion; dep of upower

---
 abs/extra/libimobiledevice/PKGBUILD                | 33 ++++++++++++++++++++++
 .../libimobiledevice/swig-version-check.patch      | 14 +++++++++
 2 files changed, 47 insertions(+)
 create mode 100644 abs/extra/libimobiledevice/PKGBUILD
 create mode 100644 abs/extra/libimobiledevice/swig-version-check.patch

diff --git a/abs/extra/libimobiledevice/PKGBUILD b/abs/extra/libimobiledevice/PKGBUILD
new file mode 100644
index 0000000..81a8003
--- /dev/null
+++ b/abs/extra/libimobiledevice/PKGBUILD
@@ -0,0 +1,33 @@
+# $Id$
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Gabriel Martinez < reitaka at gmail dot com >
+
+pkgname=libimobiledevice
+pkgver=1.1.1
+pkgrel=3
+pkgdesc="Is a software library that talks the protocols to support iPhone and iPod Touch devices on Linux"
+url="http://libimobiledevice.org/"
+arch=('i686' 'x86_64')
+license=('GPL2' 'LGPL2.1')
+depends=('usbmuxd' 'libplist' 'gnutls' 'libgcrypt')
+makedepends=('python2' 'swig')
+options=('!libtool')
+source=(http://libimobiledevice.org/downloads/$pkgname-$pkgver.tar.bz2
+        swig-version-check.patch)
+md5sums=('cdc13037e822d9ac2e109536701d153a'
+         '8bb215e36fe0e08a72332c108c7842cc')
+
+build() {
+  cd "$pkgname-$pkgver"
+
+  # SWIG version check is wrong (still not fixed upstream)
+  patch -p1 -i ../swig-version-check.patch
+
+  PYTHON=/usr/bin/python2 ./configure --prefix=/usr
+  make
+}
+
+package() {
+  cd "$pkgname-$pkgver"
+  make DESTDIR="$pkgdir" install
+}
diff --git a/abs/extra/libimobiledevice/swig-version-check.patch b/abs/extra/libimobiledevice/swig-version-check.patch
new file mode 100644
index 0000000..c56b095
--- /dev/null
+++ b/abs/extra/libimobiledevice/swig-version-check.patch
@@ -0,0 +1,14 @@
+diff -Nur libimobiledevice-1.0.3.old/configure libimobiledevice-1.0.3/configure
+--- libimobiledevice-1.0.3.old/configure	2010-10-04 07:38:37.000000000 -0700
++++ libimobiledevice-1.0.3/configure	2010-10-08 05:43:05.466686656 -0700
+@@ -3477,9 +3477,7 @@
+                         if test -z "$available_patch" ; then
+                                 available_patch=0
+                         fi
+-                        if test $available_major -ne $required_major \
+-                                -o $available_minor -ne $required_minor \
+-                                -o $available_patch -lt $required_patch ; then
++                        if test $available_major -lt $required_major ; then
+                                 { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: SWIG version >= 1.3.21 is required.  You have $swig_version.  You should look at http://www.swig.org" >&5
+ $as_echo "$as_me: WARNING: SWIG version >= 1.3.21 is required.  You have $swig_version.  You should look at http://www.swig.org" >&2;}
+                                 SWIG=false
-- 
cgit v0.12


From 8c856b1391df73272bf373561410438d91981f46 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 16:04:43 -0500
Subject: libplist: Initial inclusion; dep of libimobiledevice

---
 abs/extra/libplist/PKGBUILD | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100644 abs/extra/libplist/PKGBUILD

diff --git a/abs/extra/libplist/PKGBUILD b/abs/extra/libplist/PKGBUILD
new file mode 100644
index 0000000..3e67eb5
--- /dev/null
+++ b/abs/extra/libplist/PKGBUILD
@@ -0,0 +1,30 @@
+# $Id$
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Gabriel Martinez < reitaka at gmail dot com >
+
+pkgname=libplist
+pkgver=1.8
+pkgrel=2
+pkgdesc="A library to handle Apple Property List format whereas it's binary or XML"
+url="http://libimobiledevice.org/"
+arch=('i686' 'x86_64')
+license=('GPL2' 'LGPL2.1')
+depends=('glib2' 'libxml2' 'python2')
+makedepends=('cmake' 'swig')
+source=(http://www.libimobiledevice.org/downloads/$pkgname-$pkgver.tar.bz2)
+sha256sums=('a418da3880308199b74766deef2a760a9b169b81a868a6a9032f7614e20500ec')
+
+build() {
+  mkdir build
+  cd build
+  cmake ../$pkgname-$pkgver \
+      -DPYTHON_EXECUTABLE=/usr/bin/python2 \
+      -DCMAKE_SKIP_RPATH=ON \
+      -DCMAKE_INSTALL_PREFIX:PATH=/usr
+  make
+}
+
+package() {
+  cd build
+  make DESTDIR="$pkgdir" install
+}
-- 
cgit v0.12


From 0c444b6185e3e5c3a8039d6a938e1bd7a654c63f Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 16:07:21 -0500
Subject: usbmuxd: Initial inclusion; dep of libimobiledevice

---
 abs/extra/usbmuxd/PKGBUILD               | 32 ++++++++++++++++++++++++++++++++
 abs/extra/usbmuxd/usbmuxd-udevuser.patch | 12 ++++++++++++
 abs/extra/usbmuxd/usbmuxd.install        | 19 +++++++++++++++++++
 3 files changed, 63 insertions(+)
 create mode 100644 abs/extra/usbmuxd/PKGBUILD
 create mode 100644 abs/extra/usbmuxd/usbmuxd-udevuser.patch
 create mode 100644 abs/extra/usbmuxd/usbmuxd.install

diff --git a/abs/extra/usbmuxd/PKGBUILD b/abs/extra/usbmuxd/PKGBUILD
new file mode 100644
index 0000000..74a7fb8
--- /dev/null
+++ b/abs/extra/usbmuxd/PKGBUILD
@@ -0,0 +1,32 @@
+# $Id$
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Gabriel Martinez < reitaka at gmail dot com >
+
+pkgname=usbmuxd
+pkgver=1.0.7
+pkgrel=2
+pkgdesc="USB Multiplex Daemon"
+url="http://marcansoft.com/blog/iphonelinux/usbmuxd/"
+arch=('i686' 'x86_64')
+license=('GPL2' 'GPL3' 'LGPL2.1')
+depends=('libusb>=1.0.8')
+makedepends=('cmake')
+install=usbmuxd.install
+source=(http://marcansoft.com/uploads/${pkgname}/${pkgname}-${pkgver}.tar.bz2
+        usbmuxd-udevuser.patch)
+md5sums=('6f431541f3177fa06aa6df9ceecb2da0'
+         '8526f24f4ad16cd6b2a7321c0b59592c')
+
+build() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  patch -Np1 -i "${srcdir}/usbmuxd-udevuser.patch"
+  mkdir build
+  cd build
+  cmake ../ -DCMAKE_INSTALL_PREFIX:PATH=/usr -DLIB_SUFFIX=""
+  make
+}
+
+package() {
+  cd "${srcdir}/${pkgname}-${pkgver}/build"
+  make DESTDIR="${pkgdir}" install
+}
diff --git a/abs/extra/usbmuxd/usbmuxd-udevuser.patch b/abs/extra/usbmuxd/usbmuxd-udevuser.patch
new file mode 100644
index 0000000..51c8f3d
--- /dev/null
+++ b/abs/extra/usbmuxd/usbmuxd-udevuser.patch
@@ -0,0 +1,12 @@
+diff -Nur usbmuxd-1.0.7.orig/udev/85-usbmuxd.rules.in usbmuxd-1.0.7/udev/85-usbmuxd.rules.in
+--- usbmuxd-1.0.7.orig/udev/85-usbmuxd.rules.in	2011-08-04 15:28:32.751579507 +0000
++++ usbmuxd-1.0.7/udev/85-usbmuxd.rules.in	2011-08-04 15:36:20.139265124 +0000
+@@ -1,7 +1,7 @@
+ # usbmuxd (iPhone "Apple Mobile Device" MUXer listening on /var/run/usbmuxd)
+ 
+ # Forces iDevices to the last USB configuration and runs usbmuxd
+-ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="05ac", ATTR{idProduct}=="12[9a][0-9a-f]", ENV{USBMUX_SUPPORTED}="1", ATTR{bConfigurationValue}!="$attr{bNumConfigurations}", ATTR{bConfigurationValue}="$attr{bNumConfigurations}", RUN+="@CMAKE_INSTALL_PREFIX@/sbin/usbmuxd -u -U usbmux"
++ACTION=="add", SUBSYSTEM=="usb", OWNER="usbmux", ATTR{idVendor}=="05ac", ATTR{idProduct}=="12[9a][0-9a-f]", ENV{USBMUX_SUPPORTED}="1", ATTR{bConfigurationValue}!="$attr{bNumConfigurations}", ATTR{bConfigurationValue}="$attr{bNumConfigurations}", RUN+="@CMAKE_INSTALL_PREFIX@/sbin/usbmuxd -u -U usbmux"
+ 
+ # Exit usbmuxd when the last device is removed
+ ACTION=="remove", SUBSYSTEM=="usb", ENV{PRODUCT}=="5ac/12[9a][0-9a-f]/*", ENV{INTERFACE}=="255/*", RUN+="@CMAKE_INSTALL_PREFIX@/sbin/usbmuxd -x"
diff --git a/abs/extra/usbmuxd/usbmuxd.install b/abs/extra/usbmuxd/usbmuxd.install
new file mode 100644
index 0000000..1a48596
--- /dev/null
+++ b/abs/extra/usbmuxd/usbmuxd.install
@@ -0,0 +1,19 @@
+post_install() {
+    groupadd -g 140 usbmux &>/dev/null
+    useradd -c 'usbmux user' -u 140 -g usbmux -d / -s /sbin/nologin usbmux &>/dev/null
+    passwd -l usbmux &>/dev/null
+}
+
+post_upgrade() {
+    getent group usbmux >/dev/null 2>&1 || groupadd -g 140 usbmux &>/dev/null
+    getent passwd usbmux >/dev/null 2>&1 || useradd -c 'usbmux user' -u 140 -g usbmux -d / -s /sbin/nologin usbmux &>/dev/null
+}
+
+post_remove() {
+    if getent passwd usbmux >/dev/null 2>&1; then
+        userdel usbmux
+    fi
+    if getent group usbmux >/dev/null 2>&1; then
+        groupdel usbmux
+    fi
+}
-- 
cgit v0.12


From dd8c8322c76e6671f17c512de1ca9abb305f70f0 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 17:54:18 -0500
Subject: usbmuxd: fix version number detection

---
 abs/extra/usbmuxd/PKGBUILD               |  9 ++++++---
 abs/extra/usbmuxd/__changelog            |  1 +
 abs/extra/usbmuxd/usbmuxd-describe.patch | 20 ++++++++++++++++++++
 3 files changed, 27 insertions(+), 3 deletions(-)
 create mode 100644 abs/extra/usbmuxd/__changelog
 create mode 100644 abs/extra/usbmuxd/usbmuxd-describe.patch

diff --git a/abs/extra/usbmuxd/PKGBUILD b/abs/extra/usbmuxd/PKGBUILD
index 74a7fb8..758cb66 100644
--- a/abs/extra/usbmuxd/PKGBUILD
+++ b/abs/extra/usbmuxd/PKGBUILD
@@ -13,13 +13,13 @@ depends=('libusb>=1.0.8')
 makedepends=('cmake')
 install=usbmuxd.install
 source=(http://marcansoft.com/uploads/${pkgname}/${pkgname}-${pkgver}.tar.bz2
-        usbmuxd-udevuser.patch)
-md5sums=('6f431541f3177fa06aa6df9ceecb2da0'
-         '8526f24f4ad16cd6b2a7321c0b59592c')
+        usbmuxd-udevuser.patch
+        usbmuxd-describe.patch)
 
 build() {
   cd "${srcdir}/${pkgname}-${pkgver}"
   patch -Np1 -i "${srcdir}/usbmuxd-udevuser.patch"
+  patch -Np1 -i "${srcdir}/usbmuxd-describe.patch"
   mkdir build
   cd build
   cmake ../ -DCMAKE_INSTALL_PREFIX:PATH=/usr -DLIB_SUFFIX=""
@@ -30,3 +30,6 @@ package() {
   cd "${srcdir}/${pkgname}-${pkgver}/build"
   make DESTDIR="${pkgdir}" install
 }
+md5sums=('6f431541f3177fa06aa6df9ceecb2da0'
+         '8526f24f4ad16cd6b2a7321c0b59592c'
+         'bac157d6e01e1e0d56750f73850b96fb')
diff --git a/abs/extra/usbmuxd/__changelog b/abs/extra/usbmuxd/__changelog
new file mode 100644
index 0000000..7b30556
--- /dev/null
+++ b/abs/extra/usbmuxd/__changelog
@@ -0,0 +1 @@
+- added usbmuxd-describe.patch so version number is correctly detected
diff --git a/abs/extra/usbmuxd/usbmuxd-describe.patch b/abs/extra/usbmuxd/usbmuxd-describe.patch
new file mode 100644
index 0000000..3023235
--- /dev/null
+++ b/abs/extra/usbmuxd/usbmuxd-describe.patch
@@ -0,0 +1,20 @@
+--- usbmuxd-1.0.7/Modules/describe.sh.orig	2012-04-07 22:37:03.218203610 +0000
++++ usbmuxd-1.0.7/Modules/describe.sh	2012-04-07 22:37:22.979010437 +0000
+@@ -1,17 +1,8 @@
+ #!/bin/bash
+ 
+-# Check for git and a git repo.
+-if head=`git rev-parse --verify HEAD 2>/dev/null`; then
+-	/bin/echo -n `git describe`
+-
+-	# Are there uncommitted changes?
+-	git update-index --refresh --unmerged > /dev/null
+-	git diff-index --quiet HEAD || /bin/echo -n -dirty
+-else
+ # Check for version tag
+ 	if [ -e version.tag ]; then
+ 		/bin/echo -n `cat version.tag`
+ 	fi
+-fi
+ 
+ echo
-- 
cgit v0.12


From 3385e6b2a4240139d0043eace69696c409971c56 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 17:57:34 -0500
Subject: upower: Initial inclusion; dep of XBMC 11

---
 abs/extra/upower/PKGBUILD | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)
 create mode 100644 abs/extra/upower/PKGBUILD

diff --git a/abs/extra/upower/PKGBUILD b/abs/extra/upower/PKGBUILD
new file mode 100644
index 0000000..370f483
--- /dev/null
+++ b/abs/extra/upower/PKGBUILD
@@ -0,0 +1,27 @@
+# $Id$
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+
+pkgname=upower
+pkgver=0.9.15
+pkgrel=2
+pkgdesc="Abstraction for enumerating power devices, listening to device events and querying history and statistics"
+arch=('i686' 'x86_64')
+url="http://upower.freedesktop.org"
+license=('GPL')
+depends=('udev' 'libusb' 'polkit' 'pm-utils' 'dbus-glib' 'libimobiledevice')
+makedepends=('intltool' 'docbook-xsl' 'gobject-introspection')
+options=('!libtool')
+source=($url/releases/$pkgname-$pkgver.tar.xz)
+sha256sums=('d5941480f32dcee47401b3f650485c71f70e7eb0d92537bf4b62410248a6238c')
+
+build() {
+  cd "$srcdir/$pkgname-$pkgver"
+  ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
+      --libexecdir=/usr/lib/upower --disable-static
+  make
+}
+
+package() {
+  cd "$srcdir/$pkgname-$pkgver"
+  make DESTDIR="$pkgdir" install
+}
-- 
cgit v0.12


From 9802c031439149b785c603be240294b915fe8bad Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 20:06:58 -0500
Subject: xbmc: update to v11

---
 abs/extra/xbmc/PKGBUILD     | 123 ++++++++++++++++++++------------------------
 abs/extra/xbmc/xbmc.install |   4 +-
 2 files changed, 58 insertions(+), 69 deletions(-)

diff --git a/abs/extra/xbmc/PKGBUILD b/abs/extra/xbmc/PKGBUILD
index 252e312..8206a42 100644
--- a/abs/extra/xbmc/PKGBUILD
+++ b/abs/extra/xbmc/PKGBUILD
@@ -1,95 +1,93 @@
-# $Id: PKGBUILD 48068 2011-05-27 21:25:39Z schuay $
+# $Id$
 # Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
 # Contributor: Brad Fanella <bradfanella@archlinux.us>
 # Contributor: [vEX] <niechift.dot.vex.at.gmail.dot.com>
 # Contributor: Zeqadious <zeqadious.at.gmail.dot.com>
-# Contributor: BlackEagle < ike DOT devolder AT herecura DOT be >
+# Contributor: BlackIkeEagle < ike DOT devolder AT gmail DOT com >
 
 _prefix=/usr
 
 pkgname=xbmc
-pkgver=10.1
-pkgrel=4
+pkgver=11.0
+pkgrel=2
 pkgdesc="A software media player and entertainment hub for digital media"
 arch=('i686' 'x86_64')
 url="http://xbmc.org"
 license=('GPL' 'custom')
-depends=('bzip2' 'curl' 'enca' 'faac' 'faad2' 'fontconfig' 'fribidi'
-        'glew' 'jasper' 'libcdio' 'libgl' 'libmad' 'libmms'
-        'libmpeg2' 'libmysqlclient' 'libsamplerate' 'libxinerama'
-        'libxrandr' 'libxtst' 'lzo2' 'sdl_image' 'sdl_mixer'
-        'smbclient' 'wavpack' 'mesa-demos' 'xorg-utils' 'libmicrohttpd'
-        'libssh' 'libva' 'libmodplug' 'rtmpdump'
-        'sqlite3')
-makedepends=('boost' 'cmake' 'gperf' 'nasm' 'libvdpau' 'unzip' 'zip')
-optdepends=('lirc: remote controller support'
-        'unrar: access compressed files without unpacking them'
-        'udisks: automount external drives'
-        'upower: used to trigger suspend functionality'
-        'libvdpau: for nvidia hardware acceleration'
-        'lcms'
-        'tk')
-install=("${pkgname}.install")
-source=("http://mirrors.xbmc.org/releases/source/xbmc-$pkgver.tar.gz"
-        'FEH.sh'
-        'snapstream_remote.patch')
+depends=('hicolor-icon-theme' 'fribidi' 'lzo2' 'smbclient' 'libtiff' 'libva' 'libpng' 'libcdio' 'yajl' 'libmysqlclient' 'libjpeg' 'libsamplerate' 'glew' 'libssh' 'libmicrohttpd' 'libxrandr' 'sdl_mixer' 'sdl_image' 'python2' 'libass' 'libmpeg2' 'libmad' 'libmodplug' 'jasper' 'rtmpdump' 'unzip' 'mesa-demos' 'xorg-xdpyinfo' 'libbluray' 'libnfs' 'afpfs-ng' 'libshairport' 'avahi' 'bluez')
+makedepends=('boost' 'cmake' 'gperf' 'nasm' 'libxinerama' 'zip' 'vdpau-video' 'libcec' 'udisks' 'upower' 'bluez')
+optdepends=(
+  'libcec: support for Pulse-Eight USB-CEC adapter'
+  'vdpau-video: accelerated video playback for nvidia cards'
+  'xvba-video: accelerated video playback for amd cards'
+  'lirc: remote controller support'
+  'udisks: automount external drives'
+  'upower: used to trigger suspend functionality'
+  'unrar: access compressed files without unpacking them'
+)
+install="${pkgname}.install"
+source=("http://mirrors.xbmc.org/releases/source/xbmc-$pkgver.tar.gz")
+sha256sums=('1fe5d310c16138f26e2b13bc545604e95f48ace6c8636f23e77da402cd7b0b19')
 
 build() {
   cd "${srcdir}/xbmc-$pkgver"
 
-  # Patch to add Snapstream Firelfy remote
-  patch -Np1 -i ${srcdir}/snapstream_remote.patch || return 1
+  # fix lsb_release dependency
+  sed -i -e 's:/usr/bin/lsb_release -d:cat /etc/arch-release:' xbmc/utils/SystemInfo.cpp
 
-  # remove "--as-needed" from LDFLAGS, since it causes
-  # undefined symbols at runtime:
-  # /usr/lib/xbmc/system/players/dvdplayer/avcodec-52-i486-linux.so:
-  #  undefined symbol: NeAACDecOpen
-  unset LDFLAGS; LDFLAGS="-Wl,--hash-style=gnu"
-
-  # fix linking issue with gcc 4.5, see git 6ea61fce78q
-  sed -i 's: --soname,: -Wl,--soname,:' \
-    xbmc/cores/dvdplayer/Codecs/{,libdvd/}Makefile.in
-
-  msg "Bootstrapping XBMC"
+  # Bootstrapping XBMC
   ./bootstrap
 
-  msg "Configuring XBMC"
-  ./configure --prefix=${_prefix} \
+  # Configuring XBMC
+  export PYTHON_VERSION=2  # external python v2
+  ./configure --prefix=$_prefix --exec-prefix=$_prefix \
+    --enable-debug \
+    --enable-optimizations \
+    --enable-gl \
+    --enable-sdl \
+    --enable-vaapi \
     --enable-vdpau \
+    --enable-xvba \
+    --enable-joystick \
+    --enable-xrandr \
+    --enable-rsxs \
+    --enable-projectm \
+    --enable-x11 \
+    --enable-rtmp \
+    --enable-samba \
+    --enable-nfs \
+    --enable-afpclient \
+    --enable-airplay \
+    --enable-airtunes \
+    --enable-ffmpeg-libvorbis \
+    --enable-dvdcss \
     --disable-hal \
-    --disable-avahi \
+    --enable-avahi \
+    --enable-webserver \
+    --enable-optical-drive \
+    --enable-libbluray \
+    --enable-texturepacker \
+    --enable-udev \
+    --enable-libusb \
+    --enable-libcec \
     --enable-external-libraries \
-    --disable-external-liba52 \
-    --disable-external-libdts \
-    --disable-external-ffmpeg \
-    --enable-rtmp \
-    --disable-external-python \
-    --disable-debug
-
+    --disable-external-ffmpeg
   # Now (finally) build
-  msg "Running make"
   make
-  make -C lib/addons/script.module.pil
-  make -C lib/addons/script.module.pysqlite
 }
 
 package() {
   cd "${srcdir}/xbmc-$pkgver"
-  msg "Running make install"
-  make prefix="${pkgdir}${_prefix}" install
+  # Running make install
+  make DESTDIR="${pkgdir}" install
 
-  # Replace FEH.py with FEH.sh (and thus remove external python dependency)
-  install -D -m 0755 "${srcdir}/FEH.sh" "${pkgdir}${_prefix}/share/xbmc/FEH.sh"
-  sed -i -e 's/^python \(.*\)FEH.py \(.*\)$/\1FEH.sh \2/' "${pkgdir}${_prefix}/bin/xbmc"
+  # run feh with python2
+  sed -i -e 's/python/python2/g' ${pkgdir}${_prefix}/bin/xbmc
 
   # lsb_release fix
   sed -i -e 's/which lsb_release &> \/dev\/null/\[ -f \/etc\/arch-release ]/g' "${pkgdir}${_prefix}/bin/xbmc"
   sed -i -e "s/lsb_release -a 2> \/dev\/null | sed -e 's\/\^\/    \/'/cat \/etc\/arch-release/g" "${pkgdir}${_prefix}/bin/xbmc"
 
-  # .desktop files
-  install -D -m 0644 "${srcdir}/xbmc-$pkgver/tools/Linux/xbmc.desktop" "${pkgdir}${_prefix}/share/applications/xbmc.desktop"
-  install -D -m 0644 "${srcdir}/xbmc-$pkgver/tools/Linux/xbmc-48x48.png" "${pkgdir}${_prefix}/share/pixmaps/xbmc.png"
-
   # Tools
   install -D -m 0755 "${srcdir}/xbmc-$pkgver/xbmc-xrandr" "${pkgdir}${_prefix}/share/xbmc/xbmc-xrandr"
   install -D -m 0755 "${srcdir}/xbmc-$pkgver/tools/TexturePacker/TexturePacker" "${pkgdir}${_prefix}/share/xbmc/"
@@ -99,14 +97,5 @@ package() {
   for licensef in LICENSE.GPL copying.txt; do
     mv "${pkgdir}${_prefix}/share/doc/xbmc/${licensef}" "${pkgdir}${_prefix}/share/licenses/${pkgname}"
   done
-
-  # cleanup some stuff
-  msg "Cleanup unneeded files"
-  rm -rf "${pkgdir}/usr/share/xsessions"
-  rm -f "${pkgdir}/usr/share/xbmc/FEH.py"
-  rm -f "${pkgdir}/usr/share/icons/hicolor/icon-theme.cache"
 }
 # vim:set ts=2 sw=2 et:
-md5sums=('391398126cb86a4f6fbd0b7037997d84'
-         '7127c0336f91ff48e408e2d1078fe8eb'
-         'ae41945febf6906761589ddad33c0205')
diff --git a/abs/extra/xbmc/xbmc.install b/abs/extra/xbmc/xbmc.install
index 6c58697..7823fb7 100644
--- a/abs/extra/xbmc/xbmc.install
+++ b/abs/extra/xbmc/xbmc.install
@@ -5,7 +5,7 @@ post_install() {
   echo "   <button>" >> /tmp/library.xml.tmp
   echo "     <type>MENU_XBMC</type>" >> /tmp/library.xml.tmp
   echo "     <text>Launch XBMC</text>" >> /tmp/library.xml.tmp
-  echo "     <action>EXEC /usr/bin/xbmc</action>" >> /tmp/library.xml.tmp 
+  echo "     <action>EXEC /usr/bin/xbmc --lircdev /var/run/lirc/lircd</action>" >> /tmp/library.xml.tmp 
   echo "   </button>" >> /tmp/library.xml.tmp
   echo "<!--#XBMC-->" >> /tmp/library.xml.tmp
   echo "" >> /tmp/library.xml.tmp
@@ -38,7 +38,7 @@ post_upgrade() {
   echo "   <button>" >> /tmp/library.xml.tmp
   echo "     <type>MENU_XBMC</type>" >> /tmp/library.xml.tmp
   echo "     <text>Launch XBMC</text>" >> /tmp/library.xml.tmp
-  echo "     <action>EXEC /usr/bin/xbmc</action>" >> /tmp/library.xml.tmp 
+  echo "     <action>EXEC /usr/bin/xbmc --lircdev /var/run/lirc/lircd</action>" >> /tmp/library.xml.tmp 
   echo "   </button>" >> /tmp/library.xml.tmp
   echo "<!--#XBMC-->" >> /tmp/library.xml.tmp
   echo "" >> /tmp/library.xml.tmp
-- 
cgit v0.12


From ee01e37d0775a4720f2a6d0e093507bef1c3f266 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sat, 7 Apr 2012 20:50:13 -0500
Subject: bluez: update to 4.99

needed to fix compile error with xbmc 11
---
 abs/extra/bluez/PKGBUILD         | 68 +++++++++++++++++++++++-----------------
 abs/extra/bluez/__changelog      |  5 +++
 abs/extra/bluez/bluetooth.conf.d |  5 +--
 3 files changed, 45 insertions(+), 33 deletions(-)

diff --git a/abs/extra/bluez/PKGBUILD b/abs/extra/bluez/PKGBUILD
index 4090fdc..c1f675a 100644
--- a/abs/extra/bluez/PKGBUILD
+++ b/abs/extra/bluez/PKGBUILD
@@ -1,20 +1,23 @@
-# Maintainer: Geoffroy Carrier <geoffroy@archlinux.org>
+# $Id$
+# Maintainer: Tom Gundersen <teg@jklm.no>
+# Contributor: Andrea Scarpino <andrea@archlinux.org>
+# Contributor: Geoffroy Carrier <geoffroy@archlinux.org>
+
 pkgname=bluez
-pkgver=4.98
+pkgver=4.99
 pkgrel=2
 pkgdesc="Libraries and tools for the Bluetooth protocol stack"
 url="http://www.bluez.org/"
 arch=('i686' 'x86_64')
 license=('GPL2')
-depends=('dbus-core')
-makedepends=('gstreamer0.10-base' 'libusb-compat' 'libnl' 'libsndfile')
+depends=('dbus-core' 'python2' 'udev')
+makedepends=('gstreamer0.10-base' 'libusb-compat' 'libsndfile')
 optdepends=("gstreamer0.10-base: bluetooth GStreamer support"
-	"alsa-lib: Audio bluetooth devices support"
-	"dbus-python: to run bluez-simple-agent"
-	"pygobject: to run bluez-simple-agent"
-	"libusb-compat: USB adapters support"
-	"cups: CUPS backend"
-	"libnl: netlink plugin")
+            "alsa-lib: Audio bluetooth devices support"
+            "dbus-python: to run bluez-simple-agent"
+            "pygobject: to run bluez-simple-agent"
+            "libusb-compat: USB adapters support"
+            "cups: CUPS backend")
 conflicts=('bluez-libs' 'bluez-utils')
 provides=('bluez-libs' 'bluez-utils')
 replaces=('bluez-libs' 'bluez-utils')
@@ -22,15 +25,11 @@ options=('!libtool')
 backup=(etc/bluetooth/{main,rfcomm,audio,network,input,serial}.conf
         'etc/conf.d/bluetooth' 'etc/dbus-1/system.d/bluetooth.conf')
 install='bluez.install'
-source=("http://www.kernel.org/pub/linux/bluetooth/$pkgname-$pkgver.tar.bz2"
-        'bluez-4.98_audio-streaming.patch'
+source=("http://www.kernel.org/pub/linux/bluetooth/${pkgname}-${pkgver}.tar.bz2"
         'bluetooth.conf.d')
 
 build() {
-  cd "$srcdir/$pkgname-$pkgver"
-
-  # Add directive that allows audio streaming
-  patch -Np1 -i ${srcdir}/bluez-4.98_audio-streaming.patch || return 1
+  cd "${srcdir}/${pkgname}-${pkgver}"
 
   ./configure --prefix=/usr \
     --sysconfdir=/etc \
@@ -42,32 +41,43 @@ build() {
     --enable-tools \
     --enable-bccmd \
     --enable-dfutool \
+    --enable-hid2hci \
     --enable-hidd \
     --enable-pand \
     --enable-dund \
-    --disable-cups || return 1
-
-  make || return 1
+    --disable-cups \
+    --enable-wiimote \
+    --disable-test
+  make
 }
 
 package() {
-  cd "$srcdir/$pkgname-$pkgver"
-  make DESTDIR="$pkgdir" install || return 1
+  cd ${srcdir}/${pkgname}-${pkgver}
+  make DESTDIR=${pkgdir} install
 
+#  install -Dm755 ${srcdir}/rc.bluetooth ${pkgdir}/etc/rc.d/bluetooth
+  
   install -d ${pkgdir}/etc/bluetooth
   install -m644 network/network.conf \
                 input/input.conf \
                 audio/audio.conf \
                 serial/serial.conf \
     ${pkgdir}/etc/bluetooth/
-
-  install -D -m644 "$srcdir/bluetooth.conf.d" \
-                   "$pkgdir/etc/conf.d/bluetooth" || return 1
   
-  install -Dm755 test/simple-agent ${pkgdir}/usr/bin/bluez-simple-agent
+  install -Dm644 ${srcdir}/bluetooth.conf.d \
+    ${pkgdir}/etc/conf.d/bluetooth
+
+  # FS#27630
+  install -Dm755 test/simple-agent "${pkgdir}"/usr/bin/bluez-simple-agent
+  install -Dm755 test/test-device "${pkgdir}"/usr/bin/bluez-test-device
+  install -Dm755 test/test-input "${pkgdir}"/usr/bin/bluez-test-input
   sed -i 's#/usr/bin/python#/usr/bin/python2#' \
-         ${pkgdir}/usr/bin/bluez-simple-agent
+    "${pkgdir}"/usr/bin/bluez-simple-agent \
+    "${pkgdir}"/usr/bin/bluez-test-device \
+    "${pkgdir}"/usr/bin/bluez-test-input
+
+  # http://mailman.archlinux.org/pipermail/arch-general/2011-April/019787.html
+#  rm "${pkgdir}"/usr/lib/udev/rules.d/97-bluetooth.rules
 }
-md5sums=('4aca8a0929250212e9a75fb60dd75b05'
-         'da4ec22ee1a5c3e84d5d934440167526'
-         'd12be5b494525bb1ba6eac5c3983dd3e')
+md5sums=('2387053eb5a7b02f37df4871df022a02'
+         '7412982b440f29fa7f76a41a87fef985')
diff --git a/abs/extra/bluez/__changelog b/abs/extra/bluez/__changelog
index 124d0eb..1c3b324 100644
--- a/abs/extra/bluez/__changelog
+++ b/abs/extra/bluez/__changelog
@@ -9,3 +9,8 @@ own run scripts.  Of particular interest is rfcomm and hid2hci utilities.
 They are not daemons and I added "/sbin/sv <executable> down ." in their
 respective run files.  All based on this thread:
 http://article.gmane.org/gmane.comp.sysutils.supervision.general/1585/
+
+2012-04-07
+- remove rc.bluetooth as we use runit
+- disable-cups
+- comment out removal of udev line
diff --git a/abs/extra/bluez/bluetooth.conf.d b/abs/extra/bluez/bluetooth.conf.d
index 8f25ef4..1c1e025 100644
--- a/abs/extra/bluez/bluetooth.conf.d
+++ b/abs/extra/bluez/bluetooth.conf.d
@@ -5,9 +5,6 @@
 # Run the bluetoothd daemon (default: true)
 #DAEMON_ENABLE="false"
 
-# Run hid2hci (default: false)
-#HID2HCI_ENABLE="true"
-
 # Run the sdp daemon (default: false)
 # If this is disabled, hcid's internal sdp daemon will be used
 #SDPD_ENABLE="true"
@@ -28,6 +25,6 @@
 #RFCOMM_CONFIG="/etc/bluetooth/rfcomm.conf"
 
 # Options for hidd, dund and pand (default: none)
-#HIDD_OPTIONS=""
+HIDD_OPTIONS="--server"
 #DUND_OPTIONS=""
 #PAND_OPTIONS=""
-- 
cgit v0.12


From ef73af8420b849b6dc74fb33b04e8303622d4a31 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Sun, 8 Apr 2012 00:17:14 -0500
Subject: rtmpdump: update to 2.4

---
 abs/extra/rtmpdump/PKGBUILD | 39 ++++++++++++++++-----------------------
 1 file changed, 16 insertions(+), 23 deletions(-)

diff --git a/abs/extra/rtmpdump/PKGBUILD b/abs/extra/rtmpdump/PKGBUILD
index ee3c007..03263a4 100644
--- a/abs/extra/rtmpdump/PKGBUILD
+++ b/abs/extra/rtmpdump/PKGBUILD
@@ -1,34 +1,27 @@
-# Maintainer: xduugu
+# $Id$
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Contributor: xduugu
 # Contributor: Elis Hughes <elishughes@googlemail.com>
+
 pkgname=rtmpdump
-pkgver=2.3
-pkgrel=2
-pkgdesc="A tool to download rtmp:// and rtmpe:// streams"
+pkgver=2.4
+pkgrel=1
+pkgdesc="A tool to download rtmp streams"
 arch=('i686' 'x86_64')
 url="http://rtmpdump.mplayerhq.hu/"
-license=('LGPL')
+license=('GPL2' 'LGPL2.1')
 depends=('openssl')
-source=(
-        http://mirrors.kernel.org/gentoo/distfiles/$pkgname-$pkgver.tgz
-        # Upstream is not accessible from Vodafone/Germany
-        #http://rtmpdump.mplayerhq.hu/download/$pkgname-$pkgver.tgz
-)
-md5sums=('eb961f31cd55f0acf5aad1a7b900ef59')
-sha256sums=('ef38b7a99d82ce6912063d21063aeaf28185341b3df486e24bffce5354224b2c')
-
-#if [[ ! -e "$SRCDEST/${source[0]##*/}" ]]; then
-	#cd "$SRCDEST"
-	#download_file "$(get_downloadclient "$(get_url "${source[0]}")")" "$(get_url "${source[0]}")" "$(get_filename "${source[0]}")" \
-	#|| download_file "$(get_downloadclient "$(get_url "${source[1]}")")" "$(get_url "${source[1]}")" "$(get_filename "${source[1]}")"
-	#cd "$OLDPWD"
-#fi
+#source=(http://rtmpdump.mplayerhq.hu/download/${pkgname}-${pkgver}.tgz)
+source=(ftp://ftp.archlinux.org/other/${pkgname}/${pkgname}-${pkgver}.tar.xz)
+sha256sums=('2c3b76d46d56180176ef099b8ad50a1608bef1dac35d8cb0b21ceac31b5c0656')
 
 build() {
-  cd "$srcdir/$pkgname-$pkgver"
-  sed -i 's/^install_so.0:.*/& install_base/' librtmp/Makefile
+  cd "${srcdir}/${pkgname}-${pkgver}"  
+  make
 }
 
 package() {
-  cd "$srcdir/$pkgname-$pkgver"
-  make prefix=/usr MANDIR="$pkgdir/usr/share/man" DESTDIR="$pkgdir" install
+  cd "${srcdir}/${pkgname}-${pkgver}"
+  install -d -m755 "${pkgdir}/usr/lib"
+  make prefix=/usr mandir=/usr/share/man DESTDIR="${pkgdir}" install
 }
-- 
cgit v0.12


From f32a0b1f9c4ebcae37cab8d8ffc5b90b55a63a73 Mon Sep 17 00:00:00 2001
From: Cecil <knoppmyth@gmail.com>
Date: Sun, 8 Apr 2012 21:45:11 -0700
Subject: crystalhd-git:Bumped version to 20111227.

---
 abs/extra/crystalhd-git/PKGBUILD | 28 ++++++++++++++++++----------
 1 file changed, 18 insertions(+), 10 deletions(-)

diff --git a/abs/extra/crystalhd-git/PKGBUILD b/abs/extra/crystalhd-git/PKGBUILD
index 538c0ae..a7b3e7f 100644
--- a/abs/extra/crystalhd-git/PKGBUILD
+++ b/abs/extra/crystalhd-git/PKGBUILD
@@ -2,24 +2,24 @@
 # Maintainer: Petteri Tolonen <petteri.tolonen[at]gmail.com>
 
 pkgname=crystalhd-git
-pkgver=`date +%Y%m%d`
+pkgver=20111227
 pkgrel=1
-pkgdesc="Broadcom Crystal HD kernel module from git.wilsonet.com"
+pkgdesc="Broadcom CrystalHD kernel module"
 arch=('i686' 'x86_64')
-url="http://git.wilsonet.com/crystalhd.git/"
+url="http://linuxtv.org/git/jarod/crystalhd.git"
 license=('GPL2')
-depends=()
-makedepends=('autoconf' 'kernel26-headers>=2.6.32.9' 'make' 'git')
-conflicts=('crystalhd')
+depends=('libcrystalhd-git')
+makedepends=('autoconf' 'make' 'git')
 install='crystalhd-git.install'
-_gitroot='git://git.wilsonet.com/crystalhd.git'
+conflicts=('crystalhd')
+_gitroot='git://linuxtv.org/jarod/crystalhd.git'
 _gitname='crystalhd'
 
 build() {
 
     cd $startdir/src
 
-    msg "Connecting to git.wilsonet.com GIT server...."
+    msg "Connecting to the GIT server...."
 
     if [ -d $startdir/src/$_gitname ] ; then
         cd $_gitname && git pull origin
@@ -33,12 +33,20 @@ build() {
 
     autoconf
     ./configure --prefix=/usr
-    make KDIR=/lib/modules/2.6.34-LinHES/build || return 1
+    sed -i 's/'-Werror'/''/g' Makefile 
+
+    if ! grep -q "<linux/delay.h>" $srcdir/crystalhd/driver/linux/crystalhd_flea_ddr.c
+    then
+    sed -i '26i #include <linux/delay.h>' $srcdir/crystalhd/driver/linux/crystalhd_flea_ddr.c
+    fi
+
+    make || return 1
+    
     mkdir -p $pkgdir/etc/udev/rules.d
     mkdir -p $pkgdir/lib/modules/$(uname -r)/kernel/drivers/video/broadcom
 
     cp -f 20-crystalhd.rules $pkgdir/etc/udev/rules.d/
     install -d $pkgdir/lib/modules/$(uname -r)/kernel/drivers/video/broadcom
     install -m 0644 crystalhd.ko $pkgdir/lib/modules/$(uname -r)/kernel/drivers/video/broadcom
-
 }
+md5sums=()
-- 
cgit v0.12


From 14ebe3bed5bf6ed74f10d6b872f9f04ca61cf82d Mon Sep 17 00:00:00 2001
From: Cecil <knoppmyth@gmail.com>
Date: Sun, 8 Apr 2012 21:46:05 -0700
Subject: libcrystalhd-git:Bumped version to 20120408.

---
 abs/extra/libcrystalhd-git/PKGBUILD | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/abs/extra/libcrystalhd-git/PKGBUILD b/abs/extra/libcrystalhd-git/PKGBUILD
index 94c7be8..c0bf7d1 100644
--- a/abs/extra/libcrystalhd-git/PKGBUILD
+++ b/abs/extra/libcrystalhd-git/PKGBUILD
@@ -10,7 +10,7 @@ depends=('gcc-libs')
 makedepends=('git' 'make')
 conflicts=('libcrystalhd')
 
-_gitroot='git://git.wilsonet.com/crystalhd.git'
+_gitroot='git://linuxtv.org/jarod/crystalhd.git'
 _gitname='crystalhd'
 
 build() {
-- 
cgit v0.12


From 2de3f3299650b470102086bf8344959599df8cf7 Mon Sep 17 00:00:00 2001
From: Cecil <knoppmyth@gmail.com>
Date: Sun, 8 Apr 2012 21:47:12 -0700
Subject: xmbc:Initial inclusion of Eden to LinHES. Added patch so RTMP support
 compiles w/o issue. Disabled Crystal HD support.

---
 abs/extra/xbmc/PKGBUILD     | 11 +++++++----
 abs/extra/xbmc/xbmc11.patch | 15 +++++++++++++++
 2 files changed, 22 insertions(+), 4 deletions(-)
 create mode 100644 abs/extra/xbmc/xbmc11.patch

diff --git a/abs/extra/xbmc/PKGBUILD b/abs/extra/xbmc/PKGBUILD
index 8206a42..def2927 100644
--- a/abs/extra/xbmc/PKGBUILD
+++ b/abs/extra/xbmc/PKGBUILD
@@ -9,7 +9,7 @@ _prefix=/usr
 
 pkgname=xbmc
 pkgver=11.0
-pkgrel=2
+pkgrel=3
 pkgdesc="A software media player and entertainment hub for digital media"
 arch=('i686' 'x86_64')
 url="http://xbmc.org"
@@ -26,11 +26,11 @@ optdepends=(
   'unrar: access compressed files without unpacking them'
 )
 install="${pkgname}.install"
-source=("http://mirrors.xbmc.org/releases/source/xbmc-$pkgver.tar.gz")
-sha256sums=('1fe5d310c16138f26e2b13bc545604e95f48ace6c8636f23e77da402cd7b0b19')
+source=("http://mirrors.xbmc.org/releases/source/xbmc-$pkgver.tar.gz" xbmc11.patch)
 
 build() {
   cd "${srcdir}/xbmc-$pkgver"
+  patch -p1 < ../xbmc11.patch
 
   # fix lsb_release dependency
   sed -i -e 's:/usr/bin/lsb_release -d:cat /etc/arch-release:' xbmc/utils/SystemInfo.cpp
@@ -71,7 +71,8 @@ build() {
     --enable-libusb \
     --enable-libcec \
     --enable-external-libraries \
-    --disable-external-ffmpeg
+    --disable-external-ffmpeg \
+    --disable-crystalhd
   # Now (finally) build
   make
 }
@@ -99,3 +100,5 @@ package() {
   done
 }
 # vim:set ts=2 sw=2 et:
+md5sums=('9e8a26ee25173c7268abea7f1d82d428'
+         '5aa2e21a1f9fea60a2e5bb345e5aefd0')
diff --git a/abs/extra/xbmc/xbmc11.patch b/abs/extra/xbmc/xbmc11.patch
new file mode 100644
index 0000000..fb144d1
--- /dev/null
+++ b/abs/extra/xbmc/xbmc11.patch
@@ -0,0 +1,15 @@
+diff -ruaN xbmc-11.0.orig//xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp xbmc-11.0/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp
+--- xbmc-11.0.orig//xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp	2012-03-21 22:07:50.000000000 +0000
++++ xbmc-11.0/xbmc/cores/dvdplayer/DVDInputStreams/DVDInputStreamRTMP.cpp	2012-04-08 21:04:19.000000000 +0000
+@@ -22,9 +22,9 @@
+ #if (defined HAVE_CONFIG_H) && (!defined WIN32)
+   #include "config.h"
+ #endif
+-#ifdef _WIN32
++//#ifdef _WIN32
+ #include "system.h" // just for HAS_LIBRTMP
+-#endif
++//#endif
+ 
+ #ifdef HAS_LIBRTMP
+ #include "settings/AdvancedSettings.h"
-- 
cgit v0.12


From d0525a9f1df778729f96591e72e0363d26ff47ef Mon Sep 17 00:00:00 2001
From: Cecil <knoppmyth@gmail.com>
Date: Tue, 10 Apr 2012 00:34:10 -0700
Subject: linhes-scripts:Bumped to 7-31. Modified stop_xss.sh to account for
 XBMC.

---
 abs/core/linhes-scripts/PKGBUILD    | 4 ++--
 abs/core/linhes-scripts/stop_xss.sh | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/abs/core/linhes-scripts/PKGBUILD b/abs/core/linhes-scripts/PKGBUILD
index bce9e07..0be8d93 100644
--- a/abs/core/linhes-scripts/PKGBUILD
+++ b/abs/core/linhes-scripts/PKGBUILD
@@ -3,7 +3,7 @@
 
 pkgname=linhes-scripts
 pkgver=7
-pkgrel=30
+pkgrel=31
 pkgdesc="Various scripts that help to make LinHES, LinHES."
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -101,4 +101,4 @@ md5sums=('f56985b2d602e11dc1e10d3e7848b2a5'
          '4b8671376fad6d76874508434d42fbfd'
          'd8838461af9d446a1fd7e7883fdc75d1'
          'cc9cdabcdfc969c2829b58c0e513488c'
-         'cb16a30491c4352eb0eee11c2bca91f9')
+         'acb72dfeda6f957bfdf4113a04fb91c0')
diff --git a/abs/core/linhes-scripts/stop_xss.sh b/abs/core/linhes-scripts/stop_xss.sh
index c600795..9d3772e 100644
--- a/abs/core/linhes-scripts/stop_xss.sh
+++ b/abs/core/linhes-scripts/stop_xss.sh
@@ -3,7 +3,7 @@
 while [ 1=1 ];
 do
 
-    if [ "$(pidof chromium)" -o "$(pidof huludesktop)" ]
+    if [ "$(pidof chromium)" -o "$(pidof huludesktop)" -o "$(pidof xbmc.bin)"]
     then
     xscreensaver-command -deactivate
     fi
-- 
cgit v0.12


From bc096e5878149993d838bb57b957a6e0734563a7 Mon Sep 17 00:00:00 2001
From: Cecil <knoppmyth@gmail.com>
Date: Tue, 10 Apr 2012 00:35:36 -0700
Subject: xbmc:Bumped to 11.0-4. Added xbmc.sh which stops XScreensaver.
 Modified menu entry to call xbmc.sh.

---
 abs/extra/xbmc/PKGBUILD     | 12 ++++++++----
 abs/extra/xbmc/xbmc.install |  4 ++--
 abs/extra/xbmc/xbmc.sh      |  7 +++++++
 3 files changed, 17 insertions(+), 6 deletions(-)
 create mode 100644 abs/extra/xbmc/xbmc.sh

diff --git a/abs/extra/xbmc/PKGBUILD b/abs/extra/xbmc/PKGBUILD
index def2927..49166cc 100644
--- a/abs/extra/xbmc/PKGBUILD
+++ b/abs/extra/xbmc/PKGBUILD
@@ -9,12 +9,12 @@ _prefix=/usr
 
 pkgname=xbmc
 pkgver=11.0
-pkgrel=3
+pkgrel=4
 pkgdesc="A software media player and entertainment hub for digital media"
 arch=('i686' 'x86_64')
 url="http://xbmc.org"
 license=('GPL' 'custom')
-depends=('hicolor-icon-theme' 'fribidi' 'lzo2' 'smbclient' 'libtiff' 'libva' 'libpng' 'libcdio' 'yajl' 'libmysqlclient' 'libjpeg' 'libsamplerate' 'glew' 'libssh' 'libmicrohttpd' 'libxrandr' 'sdl_mixer' 'sdl_image' 'python2' 'libass' 'libmpeg2' 'libmad' 'libmodplug' 'jasper' 'rtmpdump' 'unzip' 'mesa-demos' 'xorg-xdpyinfo' 'libbluray' 'libnfs' 'afpfs-ng' 'libshairport' 'avahi' 'bluez')
+depends=('hicolor-icon-theme' 'fribidi' 'lzo2' 'smbclient' 'libtiff' 'libva' 'libpng' 'libcdio' 'yajl' 'libmysqlclient' 'libjpeg' 'libsamplerate' 'glew' 'libssh' 'libmicrohttpd' 'libxrandr' 'sdl_mixer' 'sdl_image' 'python2' 'libass' 'libmpeg2' 'libmad' 'libmodplug' 'jasper' 'rtmpdump' 'unzip' 'mesa-demos' 'xorg-xdpyinfo' 'libbluray' 'libnfs' 'afpfs-ng' 'libshairport' 'avahi' 'bluez' 'linhes-scripts>=7-31')
 makedepends=('boost' 'cmake' 'gperf' 'nasm' 'libxinerama' 'zip' 'vdpau-video' 'libcec' 'udisks' 'upower' 'bluez')
 optdepends=(
   'libcec: support for Pulse-Eight USB-CEC adapter'
@@ -26,7 +26,7 @@ optdepends=(
   'unrar: access compressed files without unpacking them'
 )
 install="${pkgname}.install"
-source=("http://mirrors.xbmc.org/releases/source/xbmc-$pkgver.tar.gz" xbmc11.patch)
+source=("http://mirrors.xbmc.org/releases/source/xbmc-$pkgver.tar.gz" 'xbmc11.patch' 'xbmc.sh')
 
 build() {
   cd "${srcdir}/xbmc-$pkgver"
@@ -98,7 +98,11 @@ package() {
   for licensef in LICENSE.GPL copying.txt; do
     mv "${pkgdir}${_prefix}/share/doc/xbmc/${licensef}" "${pkgdir}${_prefix}/share/licenses/${pkgname}"
   done
+
+  mkdir -p ${pkgdir}/usr/LH/bin
+  install -D -m 0755 ${srcdir}/xbmc.sh ${pkgdir}/usr/LH/bin
 }
 # vim:set ts=2 sw=2 et:
 md5sums=('9e8a26ee25173c7268abea7f1d82d428'
-         '5aa2e21a1f9fea60a2e5bb345e5aefd0')
+         '5aa2e21a1f9fea60a2e5bb345e5aefd0'
+         'f30d9a68daedd28482813ee40134f243')
diff --git a/abs/extra/xbmc/xbmc.install b/abs/extra/xbmc/xbmc.install
index 7823fb7..2964449 100644
--- a/abs/extra/xbmc/xbmc.install
+++ b/abs/extra/xbmc/xbmc.install
@@ -5,7 +5,7 @@ post_install() {
   echo "   <button>" >> /tmp/library.xml.tmp
   echo "     <type>MENU_XBMC</type>" >> /tmp/library.xml.tmp
   echo "     <text>Launch XBMC</text>" >> /tmp/library.xml.tmp
-  echo "     <action>EXEC /usr/bin/xbmc --lircdev /var/run/lirc/lircd</action>" >> /tmp/library.xml.tmp 
+  echo "     <action>EXEC /usrLH//bin/xbmc.sh</action>" >> /tmp/library.xml.tmp 
   echo "   </button>" >> /tmp/library.xml.tmp
   echo "<!--#XBMC-->" >> /tmp/library.xml.tmp
   echo "" >> /tmp/library.xml.tmp
@@ -38,7 +38,7 @@ post_upgrade() {
   echo "   <button>" >> /tmp/library.xml.tmp
   echo "     <type>MENU_XBMC</type>" >> /tmp/library.xml.tmp
   echo "     <text>Launch XBMC</text>" >> /tmp/library.xml.tmp
-  echo "     <action>EXEC /usr/bin/xbmc --lircdev /var/run/lirc/lircd</action>" >> /tmp/library.xml.tmp 
+  echo "     <action>EXEC /usr/LH/bin/xbmc.sh</action>" >> /tmp/library.xml.tmp 
   echo "   </button>" >> /tmp/library.xml.tmp
   echo "<!--#XBMC-->" >> /tmp/library.xml.tmp
   echo "" >> /tmp/library.xml.tmp
diff --git a/abs/extra/xbmc/xbmc.sh b/abs/extra/xbmc/xbmc.sh
new file mode 100644
index 0000000..a27f0f1
--- /dev/null
+++ b/abs/extra/xbmc/xbmc.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+#Stop XScreensaver
+stop_xss.sh &
+#Launch XBMC
+/usr/bin/xbmc --lircdev /var/run/lirc/lircd
+#Once XBMC exits, kill stop xss
+killall stop_xss.sh
-- 
cgit v0.12


From 8cac1d536373ce714e4c90542c3756b09be7d455 Mon Sep 17 00:00:00 2001
From: Cecil <knoppmyth@gmail.com>
Date: Tue, 10 Apr 2012 15:14:51 -0700
Subject: huludesktop:Bumped to 0.2-4. Fixed path for lircd.

---
 abs/extra/huludesktop/PKGBUILD    | 4 ++--
 abs/extra/huludesktop/huludesktop | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/abs/extra/huludesktop/PKGBUILD b/abs/extra/huludesktop/PKGBUILD
index 58cd1ca..c9ced62 100644
--- a/abs/extra/huludesktop/PKGBUILD
+++ b/abs/extra/huludesktop/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=huludesktop
 pkgver=0.2
-pkgrel=3
+pkgrel=4
 pkgdesc="Hulu Desktop for Linux"
 arch=(i686)
 url="http://www.hulu.com/labs/hulu-desktop-linux"
@@ -21,5 +21,5 @@ build() {
     install -D -m755 huludesktop.sh ${pkgdir}/usr/LH/bin
 }
 md5sums=('d9b27d1837ab86526100964e80c3cdd1'
-         'fc6048cc2a6ee3b90808e0b757f0fc9b'
+         '935d923b90abaa4b1838a5e6b23e704e'
          '8f7dbf19d6168bc3a5b0c1da1c878693')
diff --git a/abs/extra/huludesktop/huludesktop b/abs/extra/huludesktop/huludesktop
index c3ae870..c3fc9a5 100644
--- a/abs/extra/huludesktop/huludesktop
+++ b/abs/extra/huludesktop/huludesktop
@@ -6,7 +6,7 @@ pos_x = 201
 pos_y = 179
 
 [remote]
-lirc_device = /dev/lircd
+lirc_device = /var/run/lirc/lircd
 lirc_remote_identifier = mceusb
 lirc_release_suffix = _UP
 lirc_repeat_threshold = 10
-- 
cgit v0.12


From eb9ce9a0ac072df0931dc9cec6f96a7f01d06a6f Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 12 Apr 2012 17:13:23 -0500
Subject: linhes-scripts: add diskspace.sh and cron job to warn user about low
 disk space on /.

---
 abs/core/linhes-scripts/PKGBUILD     | 10 ++++-
 abs/core/linhes-scripts/diskspace    |  2 +
 abs/core/linhes-scripts/diskspace.sh | 81 ++++++++++++++++++++++++++++++++++++
 3 files changed, 91 insertions(+), 2 deletions(-)
 create mode 100755 abs/core/linhes-scripts/diskspace
 create mode 100755 abs/core/linhes-scripts/diskspace.sh

diff --git a/abs/core/linhes-scripts/PKGBUILD b/abs/core/linhes-scripts/PKGBUILD
index 0be8d93..bc4052d 100644
--- a/abs/core/linhes-scripts/PKGBUILD
+++ b/abs/core/linhes-scripts/PKGBUILD
@@ -3,7 +3,7 @@
 
 pkgname=linhes-scripts
 pkgver=7
-pkgrel=31
+pkgrel=32
 pkgdesc="Various scripts that help to make LinHES, LinHES."
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -49,6 +49,8 @@ upgrade_linhes_script.sh
 find_orphans.py
 acl_fix_fstab.py 
 stop_xss.sh
+diskspace
+diskspace.sh
 )
 
 build() {
@@ -63,6 +65,8 @@ build() {
   cp run-limit-mythcommflag ${pkgdir}/etc/sv/limit-mythcommflag/run
   mkdir -p ${pkgdir}/etc/logrotate.d/
   cp pause_mythcommflag ${pkgdir}/etc/logrotate.d/
+  mkdir -p ${pkgdir}/etc/cron.tenminutes/
+  cp diskspace ${pkgdir}/etc/cron.tenminutes/
 }
 md5sums=('f56985b2d602e11dc1e10d3e7848b2a5'
          '10ad1a4da669adccd01e0be6e5e4a3ed'
@@ -101,4 +105,6 @@ md5sums=('f56985b2d602e11dc1e10d3e7848b2a5'
          '4b8671376fad6d76874508434d42fbfd'
          'd8838461af9d446a1fd7e7883fdc75d1'
          'cc9cdabcdfc969c2829b58c0e513488c'
-         'acb72dfeda6f957bfdf4113a04fb91c0')
+         'acb72dfeda6f957bfdf4113a04fb91c0'
+         '84492954db16740f949d795b74383189'
+         '68e3e87571f3b0fa4a48a10df50dc220')
diff --git a/abs/core/linhes-scripts/diskspace b/abs/core/linhes-scripts/diskspace
new file mode 100755
index 0000000..ab3c91b
--- /dev/null
+++ b/abs/core/linhes-scripts/diskspace
@@ -0,0 +1,2 @@
+#!/bin/bash
+/usr/bin/nice -n19 /usr/LH/bin/diskspace.sh -osd
diff --git a/abs/core/linhes-scripts/diskspace.sh b/abs/core/linhes-scripts/diskspace.sh
new file mode 100755
index 0000000..2173c6e
--- /dev/null
+++ b/abs/core/linhes-scripts/diskspace.sh
@@ -0,0 +1,81 @@
+#!/bin/sh
+### Monitor free disk space
+# Display alert if the free percentage of space is >= $ALERT
+
+#
+# Static Config Variables
+#
+ALERT=90                        # free space percentage to trigger an alert
+
+#
+# Static Binary Paths
+#
+DF='/bin/df'
+GREP='/bin/grep'
+AWK='/bin/awk'
+CUT='/bin/cut'
+HOSTNAME='/bin/hostname'
+DATE='/bin/date'
+OSD_CAT='/usr/bin/osd_cat'
+export DISPLAY=:0.0
+#
+# Static System Variables
+#
+THIS_HOST=`${HOSTNAME}`
+
+#
+# Check CLI Options
+#
+VERBOSE=false
+OSD=false
+for ARG in "$@" ; do
+        case $ARG in
+        "-v")
+                VERBOSE=true
+                ;;
+        "-osd")
+                OSD=true
+                ;;
+        esac
+done
+
+#----------------------------------------------------------------------------
+. /etc/osd_cat.cfg || {
+    color=yellow
+    outline=2
+    outlinecolour=black
+    shadow=0
+    shadowcolour=black
+    font="-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*"
+}
+#----------------------------------------------------------------------------
+
+[ $VERBOSE = true ] && echo "Checking free disk space on ${THIS_HOST}"
+[ $VERBOSE = true ] && echo "Threshold for warning is ${ALERT}%"
+[ $VERBOSE = true ] && echo "------------------------------------------------------------------"
+
+# Dynamic Variables
+#DATE_STR=`${DATE} "+%d-%B-%y @ %H%Mhrs"`
+
+# Call df to find the used percentages. Grep for only local disks (not remote mounts like nfs or smb)
+# Pipe the output to awk to get the needed columns, then start a while loop to process each line.
+$DF -HPl | $GREP -E "^/dev/" | $AWK '{ print $5 " " $6 " " $1 }' | while read OUTPUT ; do
+    USED_PCENT=$(echo ${OUTPUT} | $AWK '{ print $1}' | $CUT -d'%' -f1  )    # Used space as a percentage
+    PARTITION=$(echo ${OUTPUT} | $AWK '{ print $2 }' )                      # Mount Point (eg, /home)
+    DEVICE=$(echo ${OUTPUT} | $AWK '{ print $3 }' )                         # Device (eg, /dev/sda1 or LABEL or UUID)
+    if [ $VERBOSE = true ] ; then
+        echo -e "Checking device ${DEVICE} which is mounted to ${PARTITION} \t${USED_PCENT}% used"
+    fi
+    if [ ${USED_PCENT} -ge $ALERT ]; then
+        if [ $VERBOSE = true ] ; then
+            echo "WARNING: ${PARTITION} (${DEVICE}) is ${USED_PCENT}% full on ${THIS_HOST}."
+        else
+            echo "WARNING: ${PARTITION} (${DEVICE}) is ${USED_PCENT}% full on ${THIS_HOST}." #|
+            if [ $OSD = true ] && [ ${PARTITION} = / ]; then
+                echo "WARNING: The root (${PARTITION}) partition is ${USED_PCENT}% full on ${THIS_HOST}." | $OSD_CAT --pos=top --offset=40 --align=center --delay=10 --color=$color --outline=$outline --outlinecolour=$outlinecolour --shadow=$shadow --shadowcolour=$shadowcolour --font=$font &
+            fi
+        fi
+    fi
+done
+
+exit 0
-- 
cgit v0.12


From de3a3fdbe9f392b0d6c017e325025aaf44d70a23 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 12 Apr 2012 17:22:58 -0500
Subject: LinHES-system: myth_status.py: add call to diskspace.sh to warn user
 of full disks.

---
 abs/core/LinHES-system/PKGBUILD       | 4 ++--
 abs/core/LinHES-system/myth_status.py | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index d53adee..d2fb0f8 100644
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=2
-pkgrel=38
+pkgrel=39
 arch=('i686')
 MVDIR=$startdir/pkg/usr/LH
 BINDIR=$startdir/pkg/usr/bin
@@ -62,7 +62,7 @@ md5sums=('d6a564f3286590875874573107940908'
          'abe887472a170bd1a8e6da6a7b7e93e4'
          '752488eb8bfb672ce0e4c924f7faf3d1'
          'ba351b92e69bcaf26a9bf80417b09c3c'
-         '1d534843cc4e55fe4ce21c3e95e3f766'
+         'b41b08ea923d94b90d22f92e291ad9ee'
          '962a3e9eaba2d1466251b7ab0956705d'
          'd03aedeeeda0f5e9c1eb437411c88477'
          '94ce8f1d5085c0db7b267db8c2e9a3ff'
diff --git a/abs/core/LinHES-system/myth_status.py b/abs/core/LinHES-system/myth_status.py
index f8222cb..53d64d9 100644
--- a/abs/core/LinHES-system/myth_status.py
+++ b/abs/core/LinHES-system/myth_status.py
@@ -1,6 +1,6 @@
 #!/usr/bin/python2
 from MythTV import MythBE,MythDB,MythLog
-import datetime,time,sys
+import datetime,time,sys,subprocess
 try:
     be=MythBE()
     db = MythDB()
@@ -107,5 +107,5 @@ else:
     ur=formatTD(next_start_diff)
 print "The next recording starts in:\n     %s" %(ur)
 print ""
-
-
+subprocess.call("/usr/LH/bin/diskspace.sh",shell=True)
+print ""
-- 
cgit v0.12


From fadd791ceddc196e958e9a108f26532a0a2d1170 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 12 Apr 2012 19:09:26 -0500
Subject: LinHES-system: firstboot.sh: add fix_lirc_socket; closes #822

---
 abs/core/LinHES-system/PKGBUILD     |  4 ++--
 abs/core/LinHES-system/firstboot.sh | 21 +++++++++++++++++++++
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index d2fb0f8..607bda1 100644
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=2
-pkgrel=39
+pkgrel=40
 arch=('i686')
 MVDIR=$startdir/pkg/usr/LH
 BINDIR=$startdir/pkg/usr/bin
@@ -55,7 +55,7 @@ md5sums=('d6a564f3286590875874573107940908'
          'd1f27cb422010077c841376526fe46ea'
          '2ef9f945e034119f77d9b6beb17e4fa5'
          '5c96527397a35519d72c78d6e3c8dbea'
-         '18a884a73344ff6eb74f63b49745e0f5'
+         '5e67a8b7ff57ec32d668bce7aab0aa6d'
          'dc3eef2a624754e16805d72bbe488b67'
          'dc0be354ce77ba2b89868fc29b942c43'
          '542e670e78d117657f93141e9689f54d'
diff --git a/abs/core/LinHES-system/firstboot.sh b/abs/core/LinHES-system/firstboot.sh
index 7e2f603..8e3dc57 100755
--- a/abs/core/LinHES-system/firstboot.sh
+++ b/abs/core/LinHES-system/firstboot.sh
@@ -23,6 +23,26 @@ function try_smolt {
 
 }
 
+function fix_lirc_socket {
+  . /etc/systemconfig
+
+  # Fix LircSocket in mythtv database
+  SOCKET=`mysql -u mythtv -pmythtv -B --skip-column-names -h "${dbhost}" -D mythconverg -e \
+         "SELECT data FROM settings WHERE value = 'LircSocket' AND hostname = '${hostname}';"`
+    if [ "${SOCKET}" != "/var/run/lirc/lircd" ]; then
+      mysql -u mythtv -pmythtv -B --skip-column-names -h "${dbhost}" -D mythconverg -e \
+      "UPDATE settings SET data = '/var/run/lirc/lircd' WHERE value = 'LircSocket' AND hostname = '${hostname}';"
+    else
+      echo ">>>"
+      echo ">>> ATTENTION! ATTENTION! ATTENTION!"
+      echo ">>> Unable to connect the the MySQL database to make needed"
+      echo ">>> changes to the LIRC socket."
+      echo ">>> LIRC now uses /var/run/lirc/lircd and /dev/lirc is now"
+      echo ">>> obsolete. Update your MythTV settings to reflect this."
+      echo ">>>"
+    fi
+}
+
 
 if [ ! -e /tmp/debug ]
 then
@@ -35,6 +55,7 @@ then
 				fb_status=4
 				while [ $fb_status != 0 ]
 				do
+                    fix_lirc_socket
 					try_smolt
 					if [ $fb_status != 0  ]
 					then
-- 
cgit v0.12


From 502a19b42d9df3fb3c3e521a37eebd20f9fbd984 Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Thu, 12 Apr 2012 19:35:27 -0500
Subject: LinHES-system & linhes-scripts: move diskspace to LinHES-system

---
 abs/core/LinHES-system/PKGBUILD      | 17 +++++---
 abs/core/LinHES-system/diskspace     |  2 +
 abs/core/LinHES-system/diskspace.sh  | 81 ++++++++++++++++++++++++++++++++++++
 abs/core/linhes-scripts/PKGBUILD     | 10 +----
 abs/core/linhes-scripts/diskspace    |  2 -
 abs/core/linhes-scripts/diskspace.sh | 81 ------------------------------------
 6 files changed, 96 insertions(+), 97 deletions(-)
 create mode 100755 abs/core/LinHES-system/diskspace
 create mode 100755 abs/core/LinHES-system/diskspace.sh
 delete mode 100755 abs/core/linhes-scripts/diskspace
 delete mode 100755 abs/core/linhes-scripts/diskspace.sh

diff --git a/abs/core/LinHES-system/PKGBUILD b/abs/core/LinHES-system/PKGBUILD
index 607bda1..f8baeaf 100644
--- a/abs/core/LinHES-system/PKGBUILD
+++ b/abs/core/LinHES-system/PKGBUILD
@@ -1,6 +1,6 @@
 pkgname=LinHES-system
 pkgver=2
-pkgrel=40
+pkgrel=41
 arch=('i686')
 MVDIR=$startdir/pkg/usr/LH
 BINDIR=$startdir/pkg/usr/bin
@@ -11,7 +11,7 @@ backup=(etc/modprobe.d/alsa-base)
 binfiles="LinHES-start optimize_mythdb.py
  myth_mtc.py myth_mtc.sh LinHES-run
  firstboot.sh load-modules-mythvantage.sh
- unclutter-toggle.sh tvterm.sh smolt.cron
+ unclutter-toggle.sh tvterm.sh
  mythfrontend-start set_windowmanager.sh
  myth_status.py myth_status.sh
  xmsg.py install_supplemental_service.sh
@@ -19,9 +19,11 @@ binfiles="LinHES-start optimize_mythdb.py
  lh_system_restore_job
  lh_system_host_update
  lh_system_all_host_update
- add_storage.py"
+ add_storage.py
+ diskspace.sh"
 
-source=(LinHES-session LinHES-profile.sh $binfiles alsa-base myth_mtc.lr)
+source=(LinHES-session LinHES-profile.sh $binfiles alsa-base myth_mtc.lr 
+ diskspace smolt.cron)
 
 build() {
         cd $startdir/src
@@ -45,6 +47,7 @@ build() {
 
         install -m644 -D $startdir/src/alsa-base $startdir/pkg/etc/modprobe.d/alsa-base.conf
         install -m755 -D $startdir/src/smolt.cron $startdir/pkg/etc/cron.weekly/smolt.cron
+        install -m755 -D $startdir/src/diskspace $startdir/pkg/etc/cron.tenminutes/diskspace
         mkdir $startdir/pkg/etc/logrotate.d
         cp $startdir/myth_mtc.lr $startdir/pkg/etc/logrotate.d
 }
@@ -59,7 +62,6 @@ md5sums=('d6a564f3286590875874573107940908'
          'dc3eef2a624754e16805d72bbe488b67'
          'dc0be354ce77ba2b89868fc29b942c43'
          '542e670e78d117657f93141e9689f54d'
-         'abe887472a170bd1a8e6da6a7b7e93e4'
          '752488eb8bfb672ce0e4c924f7faf3d1'
          'ba351b92e69bcaf26a9bf80417b09c3c'
          'b41b08ea923d94b90d22f92e291ad9ee'
@@ -71,5 +73,8 @@ md5sums=('d6a564f3286590875874573107940908'
          '859a80ddb4c234506379c605114c1343'
          '47e093e8cfe4b5b96602358e1f540832'
          '6faeba0aeb38e772121f751cabda8683'
+         '68e3e87571f3b0fa4a48a10df50dc220'
          'eb879fee9603a05d5420d4ce8ed9e450'
-         'f1870a9522c79e6b248fcbf81dec3280')
+         'f1870a9522c79e6b248fcbf81dec3280'
+         '84492954db16740f949d795b74383189'
+         'abe887472a170bd1a8e6da6a7b7e93e4')
diff --git a/abs/core/LinHES-system/diskspace b/abs/core/LinHES-system/diskspace
new file mode 100755
index 0000000..ab3c91b
--- /dev/null
+++ b/abs/core/LinHES-system/diskspace
@@ -0,0 +1,2 @@
+#!/bin/bash
+/usr/bin/nice -n19 /usr/LH/bin/diskspace.sh -osd
diff --git a/abs/core/LinHES-system/diskspace.sh b/abs/core/LinHES-system/diskspace.sh
new file mode 100755
index 0000000..2173c6e
--- /dev/null
+++ b/abs/core/LinHES-system/diskspace.sh
@@ -0,0 +1,81 @@
+#!/bin/sh
+### Monitor free disk space
+# Display alert if the free percentage of space is >= $ALERT
+
+#
+# Static Config Variables
+#
+ALERT=90                        # free space percentage to trigger an alert
+
+#
+# Static Binary Paths
+#
+DF='/bin/df'
+GREP='/bin/grep'
+AWK='/bin/awk'
+CUT='/bin/cut'
+HOSTNAME='/bin/hostname'
+DATE='/bin/date'
+OSD_CAT='/usr/bin/osd_cat'
+export DISPLAY=:0.0
+#
+# Static System Variables
+#
+THIS_HOST=`${HOSTNAME}`
+
+#
+# Check CLI Options
+#
+VERBOSE=false
+OSD=false
+for ARG in "$@" ; do
+        case $ARG in
+        "-v")
+                VERBOSE=true
+                ;;
+        "-osd")
+                OSD=true
+                ;;
+        esac
+done
+
+#----------------------------------------------------------------------------
+. /etc/osd_cat.cfg || {
+    color=yellow
+    outline=2
+    outlinecolour=black
+    shadow=0
+    shadowcolour=black
+    font="-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*"
+}
+#----------------------------------------------------------------------------
+
+[ $VERBOSE = true ] && echo "Checking free disk space on ${THIS_HOST}"
+[ $VERBOSE = true ] && echo "Threshold for warning is ${ALERT}%"
+[ $VERBOSE = true ] && echo "------------------------------------------------------------------"
+
+# Dynamic Variables
+#DATE_STR=`${DATE} "+%d-%B-%y @ %H%Mhrs"`
+
+# Call df to find the used percentages. Grep for only local disks (not remote mounts like nfs or smb)
+# Pipe the output to awk to get the needed columns, then start a while loop to process each line.
+$DF -HPl | $GREP -E "^/dev/" | $AWK '{ print $5 " " $6 " " $1 }' | while read OUTPUT ; do
+    USED_PCENT=$(echo ${OUTPUT} | $AWK '{ print $1}' | $CUT -d'%' -f1  )    # Used space as a percentage
+    PARTITION=$(echo ${OUTPUT} | $AWK '{ print $2 }' )                      # Mount Point (eg, /home)
+    DEVICE=$(echo ${OUTPUT} | $AWK '{ print $3 }' )                         # Device (eg, /dev/sda1 or LABEL or UUID)
+    if [ $VERBOSE = true ] ; then
+        echo -e "Checking device ${DEVICE} which is mounted to ${PARTITION} \t${USED_PCENT}% used"
+    fi
+    if [ ${USED_PCENT} -ge $ALERT ]; then
+        if [ $VERBOSE = true ] ; then
+            echo "WARNING: ${PARTITION} (${DEVICE}) is ${USED_PCENT}% full on ${THIS_HOST}."
+        else
+            echo "WARNING: ${PARTITION} (${DEVICE}) is ${USED_PCENT}% full on ${THIS_HOST}." #|
+            if [ $OSD = true ] && [ ${PARTITION} = / ]; then
+                echo "WARNING: The root (${PARTITION}) partition is ${USED_PCENT}% full on ${THIS_HOST}." | $OSD_CAT --pos=top --offset=40 --align=center --delay=10 --color=$color --outline=$outline --outlinecolour=$outlinecolour --shadow=$shadow --shadowcolour=$shadowcolour --font=$font &
+            fi
+        fi
+    fi
+done
+
+exit 0
diff --git a/abs/core/linhes-scripts/PKGBUILD b/abs/core/linhes-scripts/PKGBUILD
index bc4052d..68a02ef 100644
--- a/abs/core/linhes-scripts/PKGBUILD
+++ b/abs/core/linhes-scripts/PKGBUILD
@@ -3,7 +3,7 @@
 
 pkgname=linhes-scripts
 pkgver=7
-pkgrel=32
+pkgrel=33
 pkgdesc="Various scripts that help to make LinHES, LinHES."
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -49,8 +49,6 @@ upgrade_linhes_script.sh
 find_orphans.py
 acl_fix_fstab.py 
 stop_xss.sh
-diskspace
-diskspace.sh
 )
 
 build() {
@@ -65,8 +63,6 @@ build() {
   cp run-limit-mythcommflag ${pkgdir}/etc/sv/limit-mythcommflag/run
   mkdir -p ${pkgdir}/etc/logrotate.d/
   cp pause_mythcommflag ${pkgdir}/etc/logrotate.d/
-  mkdir -p ${pkgdir}/etc/cron.tenminutes/
-  cp diskspace ${pkgdir}/etc/cron.tenminutes/
 }
 md5sums=('f56985b2d602e11dc1e10d3e7848b2a5'
          '10ad1a4da669adccd01e0be6e5e4a3ed'
@@ -105,6 +101,4 @@ md5sums=('f56985b2d602e11dc1e10d3e7848b2a5'
          '4b8671376fad6d76874508434d42fbfd'
          'd8838461af9d446a1fd7e7883fdc75d1'
          'cc9cdabcdfc969c2829b58c0e513488c'
-         'acb72dfeda6f957bfdf4113a04fb91c0'
-         '84492954db16740f949d795b74383189'
-         '68e3e87571f3b0fa4a48a10df50dc220')
+         'acb72dfeda6f957bfdf4113a04fb91c0')
diff --git a/abs/core/linhes-scripts/diskspace b/abs/core/linhes-scripts/diskspace
deleted file mode 100755
index ab3c91b..0000000
--- a/abs/core/linhes-scripts/diskspace
+++ /dev/null
@@ -1,2 +0,0 @@
-#!/bin/bash
-/usr/bin/nice -n19 /usr/LH/bin/diskspace.sh -osd
diff --git a/abs/core/linhes-scripts/diskspace.sh b/abs/core/linhes-scripts/diskspace.sh
deleted file mode 100755
index 2173c6e..0000000
--- a/abs/core/linhes-scripts/diskspace.sh
+++ /dev/null
@@ -1,81 +0,0 @@
-#!/bin/sh
-### Monitor free disk space
-# Display alert if the free percentage of space is >= $ALERT
-
-#
-# Static Config Variables
-#
-ALERT=90                        # free space percentage to trigger an alert
-
-#
-# Static Binary Paths
-#
-DF='/bin/df'
-GREP='/bin/grep'
-AWK='/bin/awk'
-CUT='/bin/cut'
-HOSTNAME='/bin/hostname'
-DATE='/bin/date'
-OSD_CAT='/usr/bin/osd_cat'
-export DISPLAY=:0.0
-#
-# Static System Variables
-#
-THIS_HOST=`${HOSTNAME}`
-
-#
-# Check CLI Options
-#
-VERBOSE=false
-OSD=false
-for ARG in "$@" ; do
-        case $ARG in
-        "-v")
-                VERBOSE=true
-                ;;
-        "-osd")
-                OSD=true
-                ;;
-        esac
-done
-
-#----------------------------------------------------------------------------
-. /etc/osd_cat.cfg || {
-    color=yellow
-    outline=2
-    outlinecolour=black
-    shadow=0
-    shadowcolour=black
-    font="-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*"
-}
-#----------------------------------------------------------------------------
-
-[ $VERBOSE = true ] && echo "Checking free disk space on ${THIS_HOST}"
-[ $VERBOSE = true ] && echo "Threshold for warning is ${ALERT}%"
-[ $VERBOSE = true ] && echo "------------------------------------------------------------------"
-
-# Dynamic Variables
-#DATE_STR=`${DATE} "+%d-%B-%y @ %H%Mhrs"`
-
-# Call df to find the used percentages. Grep for only local disks (not remote mounts like nfs or smb)
-# Pipe the output to awk to get the needed columns, then start a while loop to process each line.
-$DF -HPl | $GREP -E "^/dev/" | $AWK '{ print $5 " " $6 " " $1 }' | while read OUTPUT ; do
-    USED_PCENT=$(echo ${OUTPUT} | $AWK '{ print $1}' | $CUT -d'%' -f1  )    # Used space as a percentage
-    PARTITION=$(echo ${OUTPUT} | $AWK '{ print $2 }' )                      # Mount Point (eg, /home)
-    DEVICE=$(echo ${OUTPUT} | $AWK '{ print $3 }' )                         # Device (eg, /dev/sda1 or LABEL or UUID)
-    if [ $VERBOSE = true ] ; then
-        echo -e "Checking device ${DEVICE} which is mounted to ${PARTITION} \t${USED_PCENT}% used"
-    fi
-    if [ ${USED_PCENT} -ge $ALERT ]; then
-        if [ $VERBOSE = true ] ; then
-            echo "WARNING: ${PARTITION} (${DEVICE}) is ${USED_PCENT}% full on ${THIS_HOST}."
-        else
-            echo "WARNING: ${PARTITION} (${DEVICE}) is ${USED_PCENT}% full on ${THIS_HOST}." #|
-            if [ $OSD = true ] && [ ${PARTITION} = / ]; then
-                echo "WARNING: The root (${PARTITION}) partition is ${USED_PCENT}% full on ${THIS_HOST}." | $OSD_CAT --pos=top --offset=40 --align=center --delay=10 --color=$color --outline=$outline --outlinecolour=$outlinecolour --shadow=$shadow --shadowcolour=$shadowcolour --font=$font &
-            fi
-        fi
-    fi
-done
-
-exit 0
-- 
cgit v0.12