aboutsummaryrefslogtreecommitdiffstats
path: root/packages/tuxbox
diff options
context:
space:
mode:
authorghost <andreas.monzner@multimedia-labs.de>2008-11-04 23:02:38 +0100
committerghost <andreas.monzner@multimedia-labs.de>2008-11-04 23:02:38 +0100
commit3b1df23ab76f8eed08df29d7fbe5b05026fa2de2 (patch)
treeb79ae9a9da3d60cfc1484ad77d68bb5e09752f73 /packages/tuxbox
parentd7ff3b24ab175ccb1473b5f6244f94af8c56acab (diff)
downloadopenembedded-3b1df23ab76f8eed08df29d7fbe5b05026fa2de2.tar.gz
Add Tuxcom for 32bpp Framebuffer
Diffstat (limited to 'packages/tuxbox')
-rw-r--r--packages/tuxbox/tuxbox-tuxcom-32bpp.bb48
-rw-r--r--packages/tuxbox/tuxbox-tuxcom-32bpp/32bpp.diff922
-rw-r--r--packages/tuxbox/tuxbox-tuxcom-32bpp/add_advanced_rc.diff83
-rw-r--r--packages/tuxbox/tuxbox-tuxcom-32bpp/add_e2_plugin.diff66
-rw-r--r--packages/tuxbox/tuxbox-tuxcom-32bpp/add_font.diffbin0 -> 67589 bytes
-rw-r--r--packages/tuxbox/tuxbox-tuxcom-32bpp/makefiles.diff499
6 files changed, 1618 insertions, 0 deletions
diff --git a/packages/tuxbox/tuxbox-tuxcom-32bpp.bb b/packages/tuxbox/tuxbox-tuxcom-32bpp.bb
new file mode 100644
index 0000000000..77dd3a6cbb
--- /dev/null
+++ b/packages/tuxbox/tuxbox-tuxcom-32bpp.bb
@@ -0,0 +1,48 @@
+DEPENDS = "freetype"
+DESCRIPTION = "TuxCom for dreambox 8000/32bit framebuffer"
+MAINTAINER = "Sven Karschewski <seddi@i-have-a-dreambox.com>"
+
+SRC_URI = "cvs://anoncvs@cvs.tuxbox.org/cvs/tuxbox;module=apps/tuxbox/plugins/tuxcom;method=ext \
+ file://makefiles.diff;patch=1;pnum=1 \
+ file://add_font.diff;patch=1;pnum=1 \
+ file://32bpp.diff;patch=1;pnum=1 \
+ file://add_e2_plugin.diff;patch=1;pnum=1 \
+ file://add_advanced_rc.diff;patch=1;pnum=1"
+
+SRCDATE = "20060123"
+PV = "0.0+cvs${SRCDATE}"
+PR = "r0"
+
+PACKAGES = "${PN}-dbg ${PN}"
+
+S = "${WORKDIR}/tuxcom"
+
+CFLAGS_append = " -DHAVE_DREAMBOX_HARDWARE -DDREAMBOX"
+
+inherit autotools pkgconfig
+
+bindir = "/usr/bin"
+sbindir = "/usr/sbin"
+
+EXTRA_OECONF = "--with-target=native"
+
+do_configure_prepend() {
+ touch ${S}/python/__init__.py
+}
+
+do_install() {
+ install -d ${D}/etc/tuxcom
+ install -d ${D}/usr/plugins
+ install -d ${D}/usr/share/fonts
+ install -d ${D}/usr/lib/enigma2/python/Plugins/Extensions/Tuxcom
+
+ install -m 0755 ${S}/tuxcom ${D}/usr/plugins/tuxcom
+ install -m 0644 ${S}/tuxcom.cfg ${D}/etc/tuxcom/tuxcom.cfg
+ install -m 0644 ${S}/font/pakenham.ttf ${D}/usr/share/fonts/pakenham.ttf
+ install -m 0644 ${S}/python/__init__.py ${D}/usr/lib/enigma2/python/Plugins/Extensions/Tuxcom/__init__.py
+ install -m 0644 ${S}/python/plugin.py ${D}/usr/lib/enigma2/python/Plugins/Extensions/Tuxcom/plugin.py
+}
+
+FILES_${PN}-dbg ="/usr/plugins/.debug"
+FILES_${PN} = "/etc/tuxcom/tuxcom.cfg /usr/plugins/tuxcom /usr/share/fonts/pakenham.ttf /usr/lib/enigma2/python/Plugins/Extensions/Tuxcom/__init__.py \
+ /usr/lib/enigma2/python/Plugins/Extensions/Tuxcom/plugin.py"
diff --git a/packages/tuxbox/tuxbox-tuxcom-32bpp/32bpp.diff b/packages/tuxbox/tuxbox-tuxcom-32bpp/32bpp.diff
new file mode 100644
index 0000000000..54bb4dec3d
--- /dev/null
+++ b/packages/tuxbox/tuxbox-tuxcom-32bpp/32bpp.diff
@@ -0,0 +1,922 @@
+diff -u tuxcom_cvs/tuxcom.c tuxcom/tuxcom.c
+--- tuxcom_cvs/tuxcom.c 2008-11-03 13:15:00.000000000 +0100
++++ tuxcom/tuxcom.c 2006-06-29 23:44:21.000000000 +0200
+@@ -27,7 +27,7 @@
+ * GetRCCode (Code from Tuxmail)
+ ******************************************************************************/
+
+-#ifndef HAVE_DREAMBOX_HARDWARE
++
+
+ int GetRCCode(int mode)
+ {
+@@ -63,9 +63,9 @@
+ case KEY_GREEN: rccode = RC_GREEN; break;
+ case KEY_YELLOW: rccode = RC_YELLOW; break;
+ case KEY_BLUE: rccode = RC_BLUE; break;
+- case KEY_HELP: rccode = RC_HELP; break;
+- case KEY_SETUP: rccode = RC_DBOX; break;
+- case KEY_HOME: rccode = RC_HOME; break;
++ case KEY_INFO: rccode = RC_HELP; break;
++ case KEY_MENU: rccode = RC_DBOX; break;
++ case KEY_EXIT: rccode = RC_HOME; break;
+ case KEY_POWER: rccode = RC_STANDBY; break;
+ default:
+ if( ev.code > 0x7F )
+@@ -118,176 +118,94 @@
+ }
+ }
+
+- rccode = -1;
+- usleep(1000000/100);
+- return 0;
+-}
+-
+-#else
+-
+-int GetRCCode(int mode)
+-{
+- static int count = 0;
+- //get code
+- static unsigned short LastKey = -1;
+- static char LastKBCode = 0x00;
+- rccode = -1;
+- int bytesavail = 0;
+- int bytesread = read(rc, &rccode, 2);
+- unsigned short tmprc;
+- kbcode = 0;
+-
+- if (bytesread == 2)
+- {
+- if (read(rc, &tmprc, 2) == 2)
+- {
+- if (rccode == tmprc && count >= 0)
+- count++;
+- }
+- }
+-
+-
+- // Tastaturabfrage
+- ioctl(kb, FIONREAD, &bytesavail);
+- if (bytesavail>0)
+- {
+- char tch[100];
+- if (bytesavail > 99) bytesavail = 99;
+- read(kb,tch,bytesavail);
+- tch[bytesavail] = 0x00;
+- kbcode = tch[0];
+- LastKBCode = kbcode;
+- if (bytesavail == 1 && kbcode == 0x1b) { LastKey = RC_HOME ; rccode = -1 ; count = -1; return 1;} // ESC-Taste
+- if (bytesavail == 1 && kbcode == '\n') { LastKey = RC_OK ; rccode = -1 ; count = -1; return 1;} // Enter-Taste
+- if (bytesavail == 1 && kbcode == '+' ) { LastKey = RC_PLUS ; rccode = -1 ; count = -1; return 1;}
+- if (bytesavail == 1 && kbcode == '-' ) { LastKey = RC_MINUS; rccode = -1 ; count = -1; return 1;}
+- if (bytesavail >= 3 && tch[0] == 0x1b && tch[1] == 0x5b)
+- {
+- if (tch[2] == 0x41 ) { kbcode = LastKBCode = 0x00; rccode = RC_UP ; LastKey = rccode; count = -1; return 1; }// Cursortasten
+- if (tch[2] == 0x42 ) { kbcode = LastKBCode = 0x00; rccode = RC_DOWN ; LastKey = rccode; count = -1; return 1; }// Cursortasten
+- if (tch[2] == 0x43 ) { kbcode = LastKBCode = 0x00; rccode = RC_RIGHT ; LastKey = rccode; count = -1; return 1; }// Cursortasten
+- if (tch[2] == 0x44 ) { kbcode = LastKBCode = 0x00; rccode = RC_LEFT ; LastKey = rccode; count = -1; return 1; }// Cursortasten
+- if (tch[2] == 0x33 && tch[3] == 0x7e) { kbcode = LastKBCode = 0x00; rccode = RC_MINUS ; LastKey = rccode; count = -1; return 1; }// entf-Taste
+- if (tch[2] == 0x32 && tch[3] == 0x7e) { kbcode = LastKBCode = 0x00; rccode = RC_PLUS ; LastKey = rccode; count = -1; return 1; }// einf-Taste
+- if (tch[2] == 0x35 && tch[3] == 0x7e) { kbcode = LastKBCode = 0x00; rccode = RC_PLUS ; LastKey = rccode; count = -1; return 1; }// PgUp-Taste
+- if (tch[2] == 0x36 && tch[3] == 0x7e) { kbcode = LastKBCode = 0x00; rccode = RC_MINUS ; LastKey = rccode; count = -1; return 1; }// PgDn-Taste
+- if (tch[2] == 0x5b && tch[3] == 0x45) { kbcode = LastKBCode = 0x00; rccode = RC_RED ; LastKey = rccode; count = -1; return 1; }// F5-Taste
+- if (tch[2] == 0x31 && tch[3] == 0x37 && tch[4] == 0x7e) { kbcode = LastKBCode = 0x00; rccode = RC_GREEN ; LastKey = rccode; count = -1; return 1; }// F6-Taste
+- if (tch[2] == 0x31 && tch[3] == 0x38 && tch[4] == 0x7e) { kbcode = LastKBCode = 0x00; rccode = RC_YELLOW ; LastKey = rccode; count = -1; return 1; }// F7-Taste
+- if (tch[2] == 0x31 && tch[3] == 0x39 && tch[4] == 0x7e) { kbcode = LastKBCode = 0x00; rccode = RC_BLUE ; LastKey = rccode; count = -1; return 1; }// F8-Taste
+- if (tch[2] == 0x32 && tch[3] == 0x30 && tch[4] == 0x7e) { kbcode = LastKBCode = 0x00; rccode = RC_DBOX ; LastKey = rccode; count = -1; return 1; }// F9-Taste
+- if (tch[2] == 0x32 && tch[3] == 0x31 && tch[4] == 0x7e) { kbcode = LastKBCode = 0x00; rccode = RC_HELP ; LastKey = rccode; count = -1; return 1; }// F10-Taste
+- if (tch[2] == 0x32 && tch[3] == 0x33 && tch[4] == 0x7e) { kbcode = LastKBCode = 0x00; rccode = RC_MUTE ; LastKey = rccode; count = -1; return 1; }// F11-Taste
+- }
+- if (mode == RC_EDIT)
+- {
+-/*
+- char tmsg[100];
+- int i;
+- sprintf(tmsg,"KeyboardCode:avail:%d, char:%c, rccode:%x ",bytesavail,(kbcode == 0x00 ? '*' : kbcode ),rccode);
+- for (i = 0; i < bytesavail; i++) sprintf(tmsg,"%s%x",tmsg,tch[i]);
+- MessageBox(tmsg,"",NOBUTTON);
+-*/
+- LastKey = rccode;
+- count = -1;
+- switch (rccode)
+- {
+- case KEY_0:
+- case KEY_1:
+- case KEY_2:
+- case KEY_3:
+- case KEY_4:
+- case KEY_5:
+- case KEY_6:
+- case KEY_7:
+- case KEY_8:
+- case KEY_9:
+- // SMS-Style verhindern
+- rccode = -1;
+- break;
+- }
+- return 1;
+- }
+- else if (bytesread <= 0)
+- {
+- if (kbcode == '0') { kbcode = 0x00;rccode = RC_0 ; LastKey = rccode; return 1;}
+- if (kbcode == '1') { kbcode = 0x00;rccode = RC_1 ; LastKey = rccode; return 1;}
+- if (kbcode == '2') { kbcode = 0x00;rccode = RC_2 ; LastKey = rccode; return 1;}
+- if (kbcode == '3') { kbcode = 0x00;rccode = RC_3 ; LastKey = rccode; return 1;}
+- if (kbcode == '4') { kbcode = 0x00;rccode = RC_4 ; LastKey = rccode; return 1;}
+- if (kbcode == '5') { kbcode = 0x00;rccode = RC_5 ; LastKey = rccode; return 1;}
+- if (kbcode == '6') { kbcode = 0x00;rccode = RC_6 ; LastKey = rccode; return 1;}
+- if (kbcode == '7') { kbcode = 0x00;rccode = RC_7 ; LastKey = rccode; return 1;}
+- if (kbcode == '8') { kbcode = 0x00;rccode = RC_8 ; LastKey = rccode; return 1;}
+- if (kbcode == '9') { kbcode = 0x00;rccode = RC_9 ; LastKey = rccode; return 1;}
+- }
+- }
+- if (bytesread == 2)
++ count=0;
++ if(read(kb, &ev, sizeof(ev)) == sizeof(ev))
+ {
+- if (rccode == LastKey && LastKBCode != 0x00 && LastKBCode == kbcode)
+- {
+- return 1;
+- }
+- LastKBCode = 0x00;
+- if (rccode == LastKey)
++ if(ev.value)
+ {
+- if (count < REPEAT_TIMER)
++ if(ev.code == rc_last_key)
+ {
+- if (count >= 0)
++ if (count < REPEAT_TIMER)
++ {
+ count++;
+- rccode = -1;
+- return 1;
++ rccode = -1;
++ return 1;
++ }
+ }
+- }
+- else
+- count = 0;
+- LastKey = rccode;
+- if ((rccode & 0xFF00) == 0x5C00)
+- {
+- kbcode = 0;
+- switch(rccode)
++ else
++ count = 0;
++ rc_last_key = ev.code;
++ switch(ev.code)
+ {
+ case KEY_UP: rccode = RC_UP; break;
+ case KEY_DOWN: rccode = RC_DOWN; break;
+ case KEY_LEFT: rccode = RC_LEFT; break;
+ case KEY_RIGHT: rccode = RC_RIGHT; break;
+ case KEY_OK: rccode = RC_OK; break;
+- case KEY_0: rccode = RC_0; break;
+- case KEY_1: rccode = RC_1; break;
+- case KEY_2: rccode = RC_2; break;
+- case KEY_3: rccode = RC_3; break;
+- case KEY_4: rccode = RC_4; break;
+- case KEY_5: rccode = RC_5; break;
+- case KEY_6: rccode = RC_6; break;
+- case KEY_7: rccode = RC_7; break;
+- case KEY_8: rccode = RC_8; break;
+- case KEY_9: rccode = RC_9; break;
+ case KEY_RED: rccode = RC_RED; break;
+ case KEY_GREEN: rccode = RC_GREEN; break;
+ case KEY_YELLOW: rccode = RC_YELLOW; break;
+ case KEY_BLUE: rccode = RC_BLUE; break;
+- case KEY_VOLUMEUP: rccode = RC_PLUS; break;
+- case KEY_VOLUMEDOWN:rccode = RC_MINUS; break;
+- case KEY_MUTE: rccode = RC_MUTE; break;
+- case KEY_HELP: rccode = RC_HELP; break;
+- case KEY_SETUP: rccode = RC_DBOX; break;
+- case KEY_HOME: rccode = RC_HOME; break;
++ case KEY_INFO: rccode = RC_HELP; break;
++ case KEY_MENU: rccode = RC_DBOX; break;
++ case KEY_EXIT: rccode = RC_HOME; break;
+ case KEY_POWER: rccode = RC_STANDBY; break;
++ default:
++ if( ev.code > 0x7F )
++ {
++ rccode = 0;
++ if( ev.code == 0x110 )
++ {
++ rccode = RC_ON;
++ }
++ }
++ else
++ {
++ rccode = rctable[ev.code & 0x7F];
++ }
++ if( rc_last_code == RC_LSHIFT )
++ {
++ if( ev.code <= 0x56 ) //(sizeof(rcshifttable)/sizeof(int)-1)
++ {
++ rccode = rcshifttable[ev.code];
++ }
++ }
++ else if( rc_last_code == RC_ALTGR )
++ {
++ if( ev.code <= 0x56 ) //(sizeof(rcaltgrtable)/sizeof(int)-1)
++ {
++ rccode = rcaltgrtable[ev.code];
++ }
++ }
++ else if( rc_last_code == RC_ALT )
++ {
++ if((ev.code >=2) && ( ev.code <= 11 ))
++ {
++ rccode = (ev.code-1) | 0x0200;
++ }
++ }
++// if( !rccode )
++ {
++// rccode = -1;
++ }
++
+ }
++ rc_last_code = rccode;
+ return 1;
+ }
+ else
+ {
+- rccode &= 0x003F;
++ rccode = -1;
++ rc_last_key = KEY_RESERVED;
++ rc_last_code = KEY_RESERVED;
+ }
+- return 0;
+ }
+
+ rccode = -1;
+ usleep(1000000/100);
+ return 0;
+ }
+-#endif
++
+
+ /******************************************************************************
+ * MyFaceRequester
+@@ -316,6 +234,8 @@
+ FT_Vector kerning;
+ FT_Error error;
+
++ currentchar=currentchar & 0xFF;
++
+ if (currentchar == '\r') // display \r in windows edited files
+ {
+ if(color != -1)
+@@ -331,19 +251,15 @@
+ }
+ //load char
+
+- if(!(glyphindex = FT_Get_Char_Index(face, currentchar)))
++ if(!(glyphindex = FT_Get_Char_Index(face, (int)currentchar)))
+ {
+ printf("TuxCom <FT_Get_Char_Index for Char \"%c\" failed\n", (int)currentchar);
+ return 0;
+ }
+
+
+-#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0
++
+ if((error = FTC_SBit_Cache_Lookup(cache, &desc, glyphindex, &sbit)))
+-#else
+- FTC_Node anode;
+- if((error = FTC_SBitCache_Lookup(cache, &desc, glyphindex, &sbit, &anode)))
+-#endif
+ {
+ printf("TuxCom <FTC_SBitCache_Lookup for Char \"%c\" failed with Errorcode 0x%.2X>\n", (int)currentchar, error);
+ return 0;
+@@ -376,7 +292,7 @@
+ {
+ if(pitch*8 + 7-bit >= sbit->width) break; /* render needed bits only */
+
+- if((sbit->buffer[row * sbit->pitch + pitch]) & 1<<bit) *(lbb + StartX + sx + sbit->left + kerning.x + x + var_screeninfo.xres*(StartY + sy - sbit->top + y)) = color;
++ if((sbit->buffer[row * sbit->pitch + pitch]) & 1<<bit) memcpy(lbb + StartX*4 + sx*4 + (sbit->left + kerning.x + x)*4 + fix_screeninfo.line_length*(StartY + sy - sbit->top + y),bgra[color],4);
+
+ x++;
+ }
+@@ -481,38 +397,36 @@
+ void RenderBox(int sx, int sy, int ex, int ey, int mode, int color)
+ {
+ int loop;
++ int tx;
+ if(mode == FILL)
+ {
+ for(; sy <= ey; sy++)
+ {
+- memset(lbb + StartX + sx + var_screeninfo.xres*(StartY + sy), color, ex-sx + 1);
++ for(tx=0; tx <= (ex-sx); tx++)
++ {
++ memcpy(lbb + StartX*4 + sx*4 + (tx*4) + fix_screeninfo.line_length*(StartY + sy),bgra[color],4);
++ }
+ }
+ }
+ else
+ {
+- //hor lines
+-
+- for(loop = sx; loop <= ex; loop++)
+- {
+- *(lbb + StartX+loop + var_screeninfo.xres*(sy+StartY)) = color;
+- *(lbb + StartX+loop + var_screeninfo.xres*(sy+1+StartY)) = color;
+-
+- *(lbb + StartX+loop + var_screeninfo.xres*(ey-1+StartY)) = color;
+- *(lbb + StartX+loop + var_screeninfo.xres*(ey+StartY)) = color;
+- }
+-
+- //ver lines
+-
+- for(loop = sy; loop <= ey; loop++)
+- {
+- *(lbb + StartX+sx + var_screeninfo.xres*(loop+StartY)) = color;
+- *(lbb + StartX+sx+1 + var_screeninfo.xres*(loop+StartY)) = color;
+-
+- *(lbb + StartX+ex-1 + var_screeninfo.xres*(loop+StartY)) = color;
+- *(lbb + StartX+ex + var_screeninfo.xres*(loop+StartY)) = color;
+- }
++ for(loop = sx; loop <= ex; loop++)
++ {
++ memcpy(lbb + StartX*4+loop*4 + fix_screeninfo.line_length*(sy+StartY), bgra[color], 4);
++ memcpy(lbb + StartX*4+loop*4 + fix_screeninfo.line_length*(sy+1+StartY), bgra[color], 4);
++ memcpy(lbb + StartX*4+loop*4 + fix_screeninfo.line_length*(ey-1+StartY), bgra[color], 4);
++ memcpy(lbb + StartX*4+loop*4 + fix_screeninfo.line_length*(ey+StartY), bgra[color], 4);
++ }
++ for(loop = sy; loop <= ey; loop++)
++ {
++ memcpy(lbb + StartX*4+sx*4 + fix_screeninfo.line_length*(loop+StartY), bgra[color], 4);
++ memcpy(lbb + StartX*4+(sx+1)*4 + fix_screeninfo.line_length*(loop+StartY), bgra[color], 4);
++ memcpy(lbb + StartX*4+(ex-1)*4 + fix_screeninfo.line_length*(loop+StartY), bgra[color], 4);
++ memcpy(lbb + StartX*4+ex*4 + fix_screeninfo.line_length*(loop+StartY), bgra[color], 4);
++ }
+ }
+ }
++
+ void SetLanguage()
+ {
+ if (langselect == BTN_AUTO)
+@@ -540,7 +454,7 @@
+ * plugin_exec *
+ ******************************************************************************/
+
+-void plugin_exec(PluginParam *par)
++int main()
+ {
+ FT_Error error;
+
+@@ -552,9 +466,67 @@
+ //get params
+
+
+- fb = rc = sx = ex = sy = ey = -1;
++ kb = fb = rc = sx = ex = sy = ey = -1;
++
++ /* open Framebuffer */
++ fb=open("/dev/fb/0", O_RDWR);
++
++ /* open Remote Control */
++ int cnt=0;
++ while(1)
++ {
++ struct stat s;
++ char tmp[128];
++ sprintf(tmp, "/dev/input/event%d", cnt);
++ if (stat(tmp, &s))
++ break;
++ /* open Remote Control */
++ if ((rc=open(tmp, O_RDONLY)) == -1)
++ {
++ perror("TuxCom <open remote control>");
++ return 0;
++ }
++ if (ioctl(rc, EVIOCGNAME(128), tmp) < 0)
++ perror("EVIOCGNAME failed");
++ if (strstr(tmp, "remote control"))
++ break;
++ close(rc);
++ rc=-1;
++ ++cnt;
++ }
++ fcntl(rc, F_SETFL, fcntl(rc, F_GETFL) | O_EXCL | O_NONBLOCK);
++
++ /* open dream ir keyboard */
++ cnt=0;
++ while(1)
++ {
++ struct stat s;
++ char tmp[128];
++ sprintf(tmp, "/dev/input/event%d", cnt);
++ if (stat(tmp, &s))
++ break;
++ /* open keyboard */
++ if ((kb=open(tmp, O_RDONLY)) == -1)
++ {
++ perror("TuxCom <open ir keyboard>");
++ return 0;
++ }
++ if (ioctl(kb, EVIOCGNAME(128), tmp) < 0)
++ perror("EVIOCGNAME failed");
++ if (strstr(tmp, "dreambox ir keyboard"))
++ break;
++ close(kb);
++ kb=-1;
++ ++cnt;
++ }
++ fcntl(kb, F_SETFL, fcntl(kb, F_GETFL) | O_EXCL | O_NONBLOCK);
++
++ sx = 50;
++ ex = 670;
++ sy = 50;
++ ey = 526;
+
+- for(; par; par = par->next)
++/* for(; par; par = par->next)
+ {
+ if (!strcmp(par->id, P_ID_FBUFFER)) fb = atoi(par->val);
+ else if (!strcmp(par->id, P_ID_RCINPUT)) rc = atoi(par->val);
+@@ -563,9 +535,7 @@
+ else if (!strcmp(par->id, P_ID_OFF_Y)) sy = atoi(par->val);
+ else if (!strcmp(par->id, P_ID_END_Y)) ey = atoi(par->val);
+ }
+-#ifdef HAVE_DREAMBOX_HARDWARE
+- kb=open("/dev/vc/0", O_RDONLY);
+-#endif
++*/
+
+ if(fb == -1 || rc == -1 || sx == -1 || ex == -1 || sy == -1 || ey == -1)
+ {
+@@ -643,17 +613,14 @@
+
+ use_kerning = FT_HAS_KERNING(face);
+
+-#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0
++
+ desc.image_type = ftc_image_mono;
+-#else
+- desc.flags = FT_LOAD_MONOCHROME;
+-#endif
+
+
+
+ //init backbuffer
+
+- if(!(lbb = malloc(var_screeninfo.xres*var_screeninfo.yres)))
++ if(!(lbb = malloc(fix_screeninfo.line_length*var_screeninfo.yres)))
+ {
+ printf("TuxCom <allocating of Backbuffer failed>\n");
+ FTC_Manager_Done(manager);
+@@ -661,11 +628,11 @@
+ munmap(lfb, fix_screeninfo.smem_len);
+ return;
+ }
+- memset(lbb, 0, var_screeninfo.xres*var_screeninfo.yres);
++ memset(lbb, 0, fix_screeninfo.line_length*var_screeninfo.yres);
+ RenderBox(0,0,var_screeninfo.xres,var_screeninfo.yres,FILL,BLACK);
+
+ //open avs
+- if((avs = open(AVS, O_RDWR)) == -1)
++/* if((avs = open(AVS, O_RDWR)) == -1)
+ {
+ printf("TuxCom <open AVS>");
+ return;
+@@ -678,7 +645,7 @@
+ printf("TuxCom <open SAA>");
+ return;
+ }
+-
++*/
+
+
+ //init data
+@@ -723,19 +690,15 @@
+
+ SetLanguage();
+
+- ioctl(saa, SAAIOGWSS, &saa_old);
+- ioctl(saa, SAAIOSWSS, &saamodes[screenmode]);
++// ioctl(saa, SAAIOGWSS, &saa_old);
++// ioctl(saa, SAAIOSWSS, &saamodes[screenmode]);
+ // setup screen
+ RenderFrame(LEFTFRAME);
+ RenderFrame(RIGHTFRAME);
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+ printf("TuxCom init successful\n");
+
+-#ifdef HAVE_DREAMBOX_HARDWARE
+- fcntl(rc, F_SETFL, O_NONBLOCK);
+-#else
+- fcntl(rc, F_SETFL, fcntl(rc, F_GETFL) &~ O_NONBLOCK);
+-#endif
++// fcntl(rc, F_SETFL, fcntl(rc, F_GETFL) &~ O_NONBLOCK);
+
+ int dosave = autosave;
+ int firstentry = 1;
+@@ -762,20 +725,11 @@
+ if (strcmp(szP,szPass) != 0) break;
+ RenderFrame(LEFTFRAME);
+ RenderFrame(RIGHTFRAME);
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+ }
+ }
+ firstentry = 0;
+
+-#ifdef HAVE_DREAMBOX_HARDWARE
+- if (kbcode != 0)
+- {
+- if (kbcode == 0x09) // tab
+- {
+- rccode = (curframe == 1 ? RC_LEFT : RC_RIGHT);
+- }
+- }
+-#endif
+ switch(rccode)
+ {
+ case RC_HELP:
+@@ -1332,7 +1286,7 @@
+ finfo[curframe].first = finfo[curframe].selected - framerows+1;
+ RenderFrame(LEFTFRAME);
+ RenderFrame(RIGHTFRAME);
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+
+ }while(rccode != RC_HOME);
+
+@@ -1348,12 +1302,14 @@
+ munmap(lfb, fix_screeninfo.smem_len);
+
+ //restore videoformat
+- ioctl(avs, AVSIOSSCARTPIN8, &fnc_old);
+- ioctl(saa, SAAIOSWSS, &saa_old);
+- close(avs);
+- close(saa);
+-
+- fcntl(rc, F_SETFL, O_NONBLOCK);
++// ioctl(avs, AVSIOSSCARTPIN8, &fnc_old);
++// ioctl(saa, SAAIOSWSS, &saa_old);
++// close(avs);
++// close(saa);
++
++// fcntl(rc, F_SETFL, O_NONBLOCK);
++ close(rc);
++ close(kb);
+
+ ClearEntries (LEFTFRAME );
+ ClearEntries (RIGHTFRAME);
+@@ -1361,9 +1317,6 @@
+ ClearMarker (RIGHTFRAME);
+ ClearZipEntries(LEFTFRAME );
+ ClearZipEntries(RIGHTFRAME);
+-#ifdef HAVE_DREAMBOX_HARDWARE
+- if (kb != -1) close(kb);
+-#endif
+ return;
+ }
+
+@@ -1415,7 +1368,7 @@
+ RenderString(colorline[colortool[i]*NUM_LANG+language], (viewx/COLORBUTTONS) *i , viewy- FONT_OFFSET_BIG , viewx/COLORBUTTONS, CENTER, SMALL , (i == 2 ? BLACK : WHITE));
+ }
+ if (refresh == YES)
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+
+ }
+
+@@ -1701,7 +1654,7 @@
+
+ RenderBox(viewx/2 + 2* BORDERSIZE , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 + 2* BORDERSIZE +BUTTONWIDTH ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == 1 ? WHITE : GREEN));
+ RenderBox(viewx/2 + 2* BORDERSIZE +1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 + 2* BORDERSIZE +BUTTONWIDTH -1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, (sel == 1 ? WHITE : GREEN));
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+ break;
+ case 2:
+ RenderBox(viewx/2 - 4* BORDERSIZE - BUTTONWIDTH - BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 - 4* BORDERSIZE - BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == 0 ? WHITE : RED ));
+@@ -1712,7 +1665,7 @@
+
+ RenderBox(viewx/2 + 4* BORDERSIZE + BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 + 4* BORDERSIZE +BUTTONWIDTH + BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == 2 ? BLACK : YELLOW ));
+ RenderBox(viewx/2 + 4* BORDERSIZE + BUTTONWIDTH/2 +1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 + 4* BORDERSIZE +BUTTONWIDTH + BUTTONWIDTH/2-1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, (sel == 2 ? BLACK : YELLOW ));
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+ break;
+ case 4:
+ RenderBox(viewx/2 - 4* BORDERSIZE - BUTTONWIDTH - BUTTONWIDTH/2 , viewy-(viewy-he)/2 - 4*BORDERSIZE - 2*BUTTONHEIGHT , viewx/2 - 4* BORDERSIZE - BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 4* BORDERSIZE - BUTTONHEIGHT , GRID, (sel == 0 ? WHITE : RED ));
+@@ -1729,7 +1682,7 @@
+
+ RenderBox(viewx/2 + 2* BORDERSIZE , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 + 4* BORDERSIZE +BUTTONWIDTH + BUTTONWIDTH/2 ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == 4 ? WHITE : BLUE2 ));
+ RenderBox(viewx/2 + 2* BORDERSIZE +1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 + 4* BORDERSIZE +BUTTONWIDTH + BUTTONWIDTH/2-1,viewy-(viewy-he)/2- 2* BORDERSIZE -1, GRID, (sel == 4 ? WHITE : BLUE2 ));
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+ break;
+ }
+ drawsel = 0;
+@@ -1812,7 +1765,7 @@
+ RenderBox((viewx-BUTTONWIDTH)/2 , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT, viewx - (viewx-BUTTONWIDTH)/2,viewy-(viewy-he)/2 - 2*BORDERSIZE , GRID, WHITE);
+ break;
+ }
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+ }
+
+ /******************************************************************************
+@@ -1953,7 +1906,7 @@
+ RenderBox(viewx/2 - 2* BORDERSIZE -BUTTONWIDTH+1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 - 2* BORDERSIZE -1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, (sel == YES ? WHITE : RED ));
+ RenderBox(viewx/2 + 2* BORDERSIZE , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 + 2* BORDERSIZE +BUTTONWIDTH ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == NO ? WHITE : GREEN));
+ RenderBox(viewx/2 + 2* BORDERSIZE +1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 + 2* BORDERSIZE +BUTTONWIDTH-1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, (sel == NO ? WHITE : GREEN));
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+ drawsel = 0;
+ }
+
+@@ -2097,7 +2050,7 @@
+ RenderBox(viewx/2 - 2* BORDERSIZE -BUTTONWIDTH+1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 - 2* BORDERSIZE -1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, (sel == YES ? WHITE : RED ));
+ RenderBox(viewx/2 + 2* BORDERSIZE , viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT , viewx/2 + 2* BORDERSIZE +BUTTONWIDTH ,viewy-(viewy-he)/2- 2* BORDERSIZE , GRID, (sel == NO ? WHITE : GREEN));
+ RenderBox(viewx/2 + 2* BORDERSIZE +1, viewy-(viewy-he)/2 - 2*BORDERSIZE - BUTTONHEIGHT+1, viewx/2 + 2* BORDERSIZE +BUTTONWIDTH-1,viewy-(viewy-he)/2- 2* BORDERSIZE-1, GRID, (sel == NO ? WHITE : GREEN));
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+ drawsel = 0;
+ }
+ if (end == YES)
+@@ -2156,7 +2109,7 @@
+ }
+ RenderString(szEntry,(viewx-wi)/2+ BORDERSIZE , (viewy-he)/2 + BORDERSIZE + (i+1)*FONTHEIGHT_BIG-FONT_OFFSET , wi, CENTER, BIG, WHITE);
+ }
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+ int drawsel = 0;
+ do{
+ GetRCCode(RC_NORMAL);
+@@ -2175,8 +2128,8 @@
+ return;
+ case 2:
+ screenmode = 1-screenmode;
+- ioctl(avs, AVSIOSSCARTPIN8, &fncmodes[screenmode]);
+- ioctl(saa, SAAIOSWSS, &saamodes[screenmode]);
++ //ioctl(avs, AVSIOSSCARTPIN8, &fncmodes[screenmode]);
++ //ioctl(saa, SAAIOSWSS, &saamodes[screenmode]);
+ return;
+ case 3:
+ SetPassword();
+@@ -2275,7 +2228,7 @@
+ }
+ RenderString(szEntry,(viewx-wi)/2+ BORDERSIZE , (viewy-he)/2 + BORDERSIZE + (i+1)*FONTHEIGHT_BIG-FONT_OFFSET , wi, CENTER, BIG, WHITE);
+ }
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+ drawsel = 0;
+ }
+ }while(1);
+@@ -2372,7 +2325,7 @@
+ colortool[3] = (pass == NO ? ACTION_INSTEXT : ACTION_NOACTION);
+ RenderMenuLine(-1, EDIT);
+
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+
+ do{
+ while (GetRCCode(RC_EDIT) == 0);
+@@ -2688,7 +2641,7 @@
+ colortool[3] = ACTION_NOACTION;
+ }
+ RenderMenuLine(-1, EDIT);
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+ }while(1);
+
+ rccode = -1;
+@@ -3741,7 +3694,7 @@
+ p = p1+1;
+ }
+ pStop = p;
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+ while (GetRCCode(RC_NORMAL) == 0);
+ switch (rccode)
+ {
+@@ -4160,7 +4113,7 @@
+ }
+ RenderBox( viewx/6 +3*BORDERSIZE, BORDERSIZE+FONTHEIGHT_BIG , viewx/6 + 4*BORDERSIZE, viewy-MENUSIZE , FILL, WHITE);
+ RenderBox( viewx/3 -2*BORDERSIZE, BORDERSIZE+FONTHEIGHT_BIG , viewx/3 - BORDERSIZE, viewy-MENUSIZE , FILL, WHITE);
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+ while (GetRCCode(RC_NORMAL) == 0);
+ switch (rccode)
+ {
+@@ -4666,7 +4619,7 @@
+
+ if (row > framerows - 2)
+ {
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+ while (1)
+ {
+ GetRCCode(RC_NORMAL);
+@@ -4687,7 +4640,7 @@
+ }
+ if (row>0)
+ {
+- memcpy(lfb, lbb, var_screeninfo.xres*var_screeninfo.yres);
++ memcpy(lfb, lbb, fix_screeninfo.line_length*var_screeninfo.yres);
+ while (1)
+ {
+ GetRCCode(RC_NORMAL);
+@@ -4773,10 +4726,10 @@
+ finfo[LEFTFRAME].sort = SORT_UP;
+ finfo[RIGHTFRAME].sort = SORT_UP;
+
+- fp = fopen( CONFIGDIR "/tuxcom.conf", "r" );
++ fp = fopen( "/etc/tuxbox/tuxcom.conf", "r" );
+ if ( !fp )
+ {
+- printf("tuxcom: could not open " CONFIGDIR "/tuxcom.conf !!!\n");
++ printf("tuxcom: could not open /etc/tuxbox/tuxcom.conf !!!\n");
+ }
+ else
+ {
+@@ -4890,10 +4843,10 @@
+ FILE *fp;
+
+
+- fp = fopen( CONFIGDIR "/tuxcom.conf", "w" );
++ fp = fopen( "/etc/tuxbox/tuxcom.conf", "w" );
+ if ( !fp )
+ {
+- printf("tuxcom: could not open " CONFIGDIR "/tuxcom.conf !!!\n");
++ printf("tuxcom: could not open /etc/tuxbox/tuxcom.conf !!!\n");
+ }
+ else
+ {
+diff -u tuxcom_cvs/tuxcom.h tuxcom/tuxcom.h
+--- tuxcom_cvs/tuxcom.h 2008-11-03 13:15:00.000000000 +0100
++++ tuxcom/tuxcom.h 2006-06-29 23:44:25.000000000 +0200
+@@ -22,7 +22,7 @@
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA
+ */
+
+-#include <config.h>
++//#include <config.h>
+ #include <errno.h>
+ #include <locale.h>
+ #include <fcntl.h>
+@@ -37,10 +37,10 @@
+ #include <sys/mman.h>
+ #include <sys/dir.h>
+ #include <sys/stat.h>
+-#include <plugin.h>
++//#include <plugin.h>
+
+-#include <dbox/avs_core.h>
+-#include <dbox/saa7126_core.h>
++//#include <dbox/avs_core.h>
++//#include <dbox/saa7126_core.h>
+
+ #include <netinet/in.h>
+ #include <netdb.h>
+@@ -53,12 +53,10 @@
+ #include FT_CACHE_SMALL_BITMAPS_H
+
+
+-#ifndef HAVE_DREAMBOX_HARDWARE
+ #include <linux/input.h>
+-#endif
+
+-#define AVS "/dev/dbox/avs0"
+-#define SAA "/dev/dbox/saa0"
++//#define AVS "/dev/dbox/avs0"
++//#define SAA "/dev/dbox/saa0"
+
+ #define MENUROWS 10
+ #define MENUITEMS 10
+@@ -80,64 +78,6 @@
+ #define MSG_VERSION "Tuxbox Commander Version 1.13\n"
+ #define MSG_COPYRIGHT "© dbluelle 2004-2005"
+
+-#ifdef HAVE_DREAMBOX_HARDWARE
+-
+-//rc codes
+-#define KEY_0 0x5C00
+-#define KEY_1 0x5C01
+-#define KEY_2 0x5C02
+-#define KEY_3 0x5C03
+-#define KEY_4 0x5C04
+-#define KEY_5 0x5C05
+-#define KEY_6 0x5C06
+-#define KEY_7 0x5C07
+-#define KEY_8 0x5C08
+-#define KEY_9 0x5C09
+-#define KEY_POWER 0x5C0C
+-#define KEY_UP 0x5C0E
+-#define KEY_DOWN 0x5C0F
+-#define KEY_VOLUMEUP 0x5C16
+-#define KEY_VOLUMEDOWN 0x5C17
+-#define KEY_HOME 0x5C20
+-#define KEY_SETUP 0x5C27
+-#define KEY_MUTE 0x5C28
+-#define KEY_RED 0x5C2D
+-#define KEY_RIGHT 0x5C2E
+-#define KEY_LEFT 0x5C2F
+-#define KEY_OK 0x5C30
+-#define KEY_BLUE 0x5C3B
+-#define KEY_YELLOW 0x5C52
+-#define KEY_GREEN 0x5C55
+-#define KEY_HELP 0x5C82
+-
+-#define RC_0 0x00
+-#define RC_1 0x01
+-#define RC_2 0x02
+-#define RC_3 0x03
+-#define RC_4 0x04
+-#define RC_5 0x05
+-#define RC_6 0x06
+-#define RC_7 0x07
+-#define RC_8 0x08
+-#define RC_9 0x09
+-#define RC_RIGHT 0x0A
+-#define RC_LEFT 0x0B
+-#define RC_UP 0x0C
+-#define RC_DOWN 0x0D
+-#define RC_OK 0x0E
+-#define RC_MUTE 0x0F
+-#define RC_STANDBY 0x10
+-#define RC_GREEN 0x11
+-#define RC_YELLOW 0x12
+-#define RC_RED 0x13
+-#define RC_BLUE 0x14
+-#define RC_PLUS 0x15
+-#define RC_MINUS 0x16
+-#define RC_HELP 0x17
+-#define RC_DBOX 0x18
+-#define RC_HOME 0x1F
+-
+-#else
+ // rc codes
+ #define RC_0 '0'
+ #define RC_1 '1'
+@@ -247,12 +187,13 @@
+ #define KBC_PAGEDOWN 0x0C
+ #define KBC_RETURN 0x0D
+
+-#endif
++
+
+
+ //freetype stuff
+
+-#define FONT FONTDIR "/pakenham.ttf"
++//#define FONT "/usr/share/fonts/md_khmurabi_10.ttf"
++#define FONT "/usr/share/fonts/pakenham.ttf"
+ // if font is not in usual place, we look here:
+ #define FONT2 "/var/tuxbox/config/enigma/fonts/pakenham.ttf"
+
+@@ -265,11 +206,7 @@
+ FTC_Manager manager;
+ FTC_SBitCache cache;
+ FTC_SBit sbit;
+-#if FREETYPE_MAJOR == 2 && FREETYPE_MINOR == 0
+ FTC_Image_Desc desc;
+-#else
+-FTC_ImageTypeRec desc;
+-#endif
+ FT_Face face;
+ FT_UInt prev_glyphindex;
+ FT_Bool use_kerning;
+@@ -296,6 +233,14 @@
+ struct fb_fix_screeninfo fix_screeninfo;
+ struct fb_var_screeninfo var_screeninfo;
+
++unsigned char bgra[][4] = {
++"\x00\x00\x00\x00", "\xFF\xFF\xFF\xFF", "\x00\x00\x00\xFF", "\x80\x00\x00\xFF",
++"\xFF\x80\x00\xFF", "\x00\xC0\xFF\xFF", "\x00\xD0\x00\xFF", "\x00\xE8\xE8\xFF",
++"\x00\x00\xFF\xFF", "\xB0\xB0\xB0\xFF", "\x00\xFF\x00\xFF", "\x50\x50\x50\xFF",
++"\x80\x00\x00\xC0", "\x50\x50\x50\xC0", "\xFF\x40\x00\xFf" };
++
++
++
+ unsigned short rd[] = {0xFF<<8, 0x00<<8, 0x00<<8, 0x00<<8, 0xFF<<8, 0x00<<8, 0xE8<<8, 0xFF<<8, 0xb0<<8, 0x00<<8, 0x50<<8, 0x00<<8, 0x50<<8, 0x00<<8};
+ unsigned short gn[] = {0xFF<<8, 0x00<<8, 0x00<<8, 0x80<<8, 0xC0<<8, 0xd0<<8, 0xE8<<8, 0x00<<8, 0xb0<<8, 0xff<<8, 0x50<<8, 0x00<<8, 0x50<<8, 0x40<<8};
+ unsigned short bl[] = {0xFF<<8, 0x00<<8, 0x80<<8, 0xFF<<8, 0x00<<8, 0x00<<8, 0x00<<8, 0x00<<8, 0xb0<<8, 0x00<<8, 0x50<<8, 0x80<<8, 0x50<<8, 0xff<<8};
+@@ -306,9 +251,7 @@
+ int trans_map [] = {BLUE1,BLUE_TRANSP,TRANSP};
+ int trans_map_mark[] = {GRAY2,GRAY_TRANSP,GRAY_TRANSP};
+
+-#ifndef HAVE_DREAMBOX_HARDWARE
+ struct input_event ev;
+-#endif
+
+ unsigned short rccode;
+ char kbcode;
+@@ -338,8 +281,8 @@
+ char szPass[20];
+ long commandsize;
+
+-int fncmodes[] = {AVS_FNCOUT_EXT43, AVS_FNCOUT_EXT169};
+-int saamodes[] = {SAA_WSS_43F, SAA_WSS_169F};
++//int fncmodes[] = {AVS_FNCOUT_EXT43, AVS_FNCOUT_EXT169};
++//int saamodes[] = {SAA_WSS_43F, SAA_WSS_169F};
+
+ FILE *conf;
+ int language, langselect, autosave;
diff --git a/packages/tuxbox/tuxbox-tuxcom-32bpp/add_advanced_rc.diff b/packages/tuxbox/tuxbox-tuxcom-32bpp/add_advanced_rc.diff
new file mode 100644
index 0000000000..62f589f77e
--- /dev/null
+++ b/packages/tuxbox/tuxbox-tuxcom-32bpp/add_advanced_rc.diff
@@ -0,0 +1,83 @@
+--- tuxcom/tuxcom.c 2006-06-29 23:44:21.000000000 +0200
++++ tuxcom/tuxcom.c 2008-10-22 22:34:16.000000000 +0200
+@@ -36,7 +36,8 @@
+ struct input_event ev;
+ static __u16 rc_last_key = KEY_RESERVED;
+ static __u16 rc_last_code = KEY_RESERVED;
+- if(read(rc, &ev, sizeof(ev)) == sizeof(ev))
++ if ((read(rc[0], &ev, sizeof(ev)) == sizeof(ev)) ||
++ (rc[1] != -1 && read(rc[1], &ev, sizeof(ev)) == sizeof(ev)))
+ {
+ if(ev.value)
+ {
+@@ -466,14 +467,16 @@
+ //get params
+
+
+- kb = fb = rc = sx = ex = sy = ey = -1;
++ kb = fb = sx = ex = sy = ey = -1;
+
+ /* open Framebuffer */
+ fb=open("/dev/fb/0", O_RDWR);
+
+ /* open Remote Control */
+- int cnt=0;
+- while(1)
++ int cnt=0, rc_num=0;
++ rc[0]=rc[1]=-1;
++
++ while(rc_num < 2)
+ {
+ struct stat s;
+ char tmp[128];
+@@ -481,20 +484,20 @@
+ if (stat(tmp, &s))
+ break;
+ /* open Remote Control */
+- if ((rc=open(tmp, O_RDONLY)) == -1)
++ if ((rc[rc_num]=open(tmp, O_RDONLY | O_EXCL | O_NONBLOCK)) == -1)
+ {
+ perror("TuxCom <open remote control>");
+ return 0;
+ }
+- if (ioctl(rc, EVIOCGNAME(128), tmp) < 0)
++ if (ioctl(rc[rc_num], EVIOCGNAME(128), tmp) < 0)
+ perror("EVIOCGNAME failed");
+- if (strstr(tmp, "remote control"))
+- break;
+- close(rc);
+- rc=-1;
++ if (!strstr(tmp, "remote control"))
++ close(rc[rc_num]);
++ else
++ ++rc_num;
+ ++cnt;
+ }
+- fcntl(rc, F_SETFL, fcntl(rc, F_GETFL) | O_EXCL | O_NONBLOCK);
++// fcntl(rc, F_SETFL, fcntl(rc, F_GETFL) | O_EXCL | O_NONBLOCK);
+
+ /* open dream ir keyboard */
+ cnt=0;
+@@ -1308,7 +1311,10 @@
+ // close(saa);
+
+ // fcntl(rc, F_SETFL, O_NONBLOCK);
+- close(rc);
++ if (rc[0] != -1)
++ close(rc[0]);
++ if (rc[1] != -1)
++ close(rc[1]);
+ close(kb);
+
+ ClearEntries (LEFTFRAME );
+--- tuxcom/tuxcom.h 2006-06-29 23:44:25.000000000 +0200
++++ tuxcom/tuxcom.h 2008-10-22 22:29:15.000000000 +0200
+@@ -259,7 +259,7 @@
+ //some data
+
+ int avs, saa, fnc_old, saa_old, screenmode;
+-int rc, fb, kb;
++int rc[2], fb, kb;
+ int sx, ex, sy, ey;
+ int PosX, PosY, StartX, StartY, FrameWidth, NameWidth, SizeWidth;
+ int curframe, cursort, curvisibility;
diff --git a/packages/tuxbox/tuxbox-tuxcom-32bpp/add_e2_plugin.diff b/packages/tuxbox/tuxbox-tuxcom-32bpp/add_e2_plugin.diff
new file mode 100644
index 0000000000..5f7a08e7af
--- /dev/null
+++ b/packages/tuxbox/tuxbox-tuxcom-32bpp/add_e2_plugin.diff
@@ -0,0 +1,66 @@
+diff -Naur tuxcom_cvs/configure.ac tuxcom/configure.ac
+--- tuxcom/configure.ac 2008-11-03 14:19:50.000000000 +0100
++++ tuxcom/configure.ac 2008-11-03 14:20:00.329914467 +0100
+@@ -16,3 +16,4 @@
+
+ AC_OUTPUT(Makefile)
+ AC_OUTPUT(font/Makefile)
++AC_OUTPUT(python/Makefile)
+--- tuxcom/Makefile.am 2008-11-03 14:18:28.000000000 +0100
++++ tuxcom/Makefile.am 2008-11-03 14:18:52.353917804 +0100
+@@ -1,6 +1,6 @@
+ INCLUDES = -I$(top_srcdir)/include
+
+-SUBDIRS = font
++SUBDIRS = font python
+
+ bin_PROGRAMS = tuxcom
+
+diff -Naur tuxcom_cvs/python/Makefile.am tuxcom/python/Makefile.am
+--- tuxcom_cvs/python/Makefile.am 1970-01-01 01:00:00.000000000 +0100
++++ tuxcom/python/Makefile.am 2008-11-03 13:56:54.425916639 +0100
+@@ -0,0 +1,5 @@
++installdir = $(LIBDIR)/enigma2/python/Plugins/Extensions/Tuxcom
++
++install_DATA = \
++ plugin.py \
++ __init__.py
+diff -Naur tuxcom_cvs/python/plugin.py tuxcom/python/plugin.py
+--- tuxcom_cvs/python/plugin.py 1970-01-01 01:00:00.000000000 +0100
++++ tuxcom/python/plugin.py 2008-11-03 14:22:15.705918505 +0100
+@@ -0,0 +1,35 @@
++from enigma import *
++from Screens.Screen import Screen
++from Plugins.Plugin import PluginDescriptor
++
++class TuxComStarter(Screen):
++ skin = """
++ <screen position="1,1" size="1,1" title="TuxCom" >
++ </screen>"""
++
++ def __init__(self, session, args = None):
++ self.skin = TuxComStarter.skin
++ Screen.__init__(self, session)
++ self.container=eConsoleAppContainer()
++ self.container.appClosed.append(self.finished)
++ self.runapp()
++
++ def runapp(self):
++ eDBoxLCD.getInstance().lock()
++ eRCInput.getInstance().lock()
++ fbClass.getInstance().lock()
++ if self.container.execute("/usr/plugins/tuxcom"):
++ self.finished(-1)
++
++ def finished(self,retval):
++ fbClass.getInstance().unlock()
++ eRCInput.getInstance().unlock()
++ eDBoxLCD.getInstance().unlock()
++ self.close()
++
++def main(session, **kwargs):
++ session.open(TuxComStarter)
++
++def Plugins(**kwargs):
++ return PluginDescriptor(name="TuxCom", description="TuxBox Commander", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main)
++
diff --git a/packages/tuxbox/tuxbox-tuxcom-32bpp/add_font.diff b/packages/tuxbox/tuxbox-tuxcom-32bpp/add_font.diff
new file mode 100644
index 0000000000..b04e441dd0
--- /dev/null
+++ b/packages/tuxbox/tuxbox-tuxcom-32bpp/add_font.diff
Binary files differ
diff --git a/packages/tuxbox/tuxbox-tuxcom-32bpp/makefiles.diff b/packages/tuxbox/tuxbox-tuxcom-32bpp/makefiles.diff
new file mode 100644
index 0000000000..40524cf7a1
--- /dev/null
+++ b/packages/tuxbox/tuxbox-tuxcom-32bpp/makefiles.diff
@@ -0,0 +1,499 @@
+--- tuxcom_cvs/Makefile.am 2008-11-03 15:29:58.993914127 +0100
++++ tuxcom/Makefile.am 2008-11-03 15:32:42.677915776 +0100
+@@ -1,22 +1,15 @@
++INCLUDES = -I$(top_srcdir)/include
+
+-AM_CPPFLAGS = \
+- @FREETYPE_CFLAGS@ \
+- -I$(top_srcdir)/include
++SUBDIRS = font
+
+-noinst_LTLIBRARIES = tuxcom.la
++bin_PROGRAMS = tuxcom
+
+-#tuxcom_la_CFLAGS = -DDREAMBOX
++tuxcom_SOURCES = tuxcom.c
+
+-tuxcom_la_SOURCES = tuxcom.c
++tuxcom_LDADD = @FREETYPE_LIBS@
+
+-tuxcom_la_LIBADD = \
+- @FREETYPE_LIBS@
+-
++install_DATA = tuxcom.cfg
+
+-tuxcom_la_LDFLAGS = -rpath $(PLUGINDIR) -module -avoid-version
++AM_CFLAGS=$(CFLAGS) @FREETYPE_CFLAGS@
+
+-install-exec-local:
+- install -d $(DESTDIR)$(PLUGINDIR)
+- install -d $(DESTDIR)$(CONFIGDIR)
+- $(LIBTOOL) --mode=install install tuxcom.la $(DESTDIR)$(PLUGINDIR)
+- install -m 0644 $(srcdir)/tuxcom.cfg $(DESTDIR)$(PLUGINDIR)
++installdir = $(CONFIGDIR)/tuxcom
+--- tuxcom_cvs/acinclude.m4 1970-01-01 01:00:00.000000000 +0100
++++ tuxcom/acinclude.m4 2006-03-04 02:45:15.000000000 +0100
+@@ -0,0 +1,434 @@
++AC_DEFUN(TUXBOX_APPS,[
++AM_CONFIG_HEADER(config.h)
++AM_MAINTAINER_MODE
++
++INSTALL="$INSTALL -p"
++
++AC_GNU_SOURCE
++AC_SYS_LARGEFILE
++
++AC_ARG_WITH(target,
++ [ --with-target=TARGET target for compilation [[native,cdk]]],
++ [TARGET="$withval"],[TARGET="native"])
++
++AC_ARG_WITH(targetprefix,
++ [ --with-targetprefix=PATH prefix relative to target root (only applicable in cdk mode)],
++ [targetprefix="$withval"],[targetprefix="NONE"])
++
++AC_ARG_WITH(debug,
++ [ --without-debug disable debugging code],
++ [DEBUG="$withval"],[DEBUG="yes"])
++
++if test "$DEBUG" = "yes"; then
++ DEBUG_CFLAGS="-g3 -ggdb"
++ AC_DEFINE(DEBUG,1,[Enable debug messages])
++fi
++
++AC_MSG_CHECKING(target)
++
++if test "$TARGET" = "native"; then
++ AC_MSG_RESULT(native)
++
++ if test "$CFLAGS" = "" -a "$CXXFLAGS" = ""; then
++ CFLAGS="-Wall -O2 -pipe $DEBUG_CFLAGS"
++ CXXFLAGS="-Wall -O2 -pipe $DEBUG_CFLAGS"
++ fi
++ if test "$prefix" = "NONE"; then
++ prefix=/usr/local
++ fi
++ targetprefix=$prefix
++elif test "$TARGET" = "cdk"; then
++ AC_MSG_RESULT(cdk)
++
++ if test "$CC" = "" -a "$CXX" = ""; then
++ CC=powerpc-tuxbox-linux-gnu-gcc CXX=powerpc-tuxbox-linux-gnu-g++
++ fi
++ if test "$CFLAGS" = "" -a "$CXXFLAGS" = ""; then
++ CFLAGS="-Wall -Os -mcpu=823 -pipe $DEBUG_CFLAGS"
++ CXXFLAGS="-Wall -Os -mcpu=823 -pipe $DEBUG_CFLAGS"
++ fi
++ if test "$prefix" = "NONE"; then
++ AC_MSG_ERROR(invalid prefix, you need to specify one in cdk mode)
++ fi
++ if test "$targetprefix" = "NONE"; then
++ targetprefix=""
++ fi
++ if test "$host_alias" = ""; then
++ cross_compiling=yes
++ host_alias=powerpc-tuxbox-linux-gnu
++ fi
++else
++ AC_MSG_RESULT(none)
++ AC_MSG_ERROR([invalid target $TARGET, choose on from native,cdk]);
++fi
++
++AC_CANONICAL_BUILD
++AC_CANONICAL_HOST
++
++check_path () {
++ return $(perl -e "if(\"$1\"=~m#^/usr/(local/)?bin#){print \"0\"}else{print \"1\";}")
++}
++
++])
++
++AC_DEFUN(TUXBOX_APPS_DIRECTORY_ONE,[
++AC_ARG_WITH($1,[ $6$7 [[PREFIX$4$5]]],[
++ _$2=$withval
++ if test "$TARGET" = "cdk"; then
++ $2=`eval echo "${targetprefix}$withval"`
++ else
++ $2=$withval
++ fi
++],[
++ $2="\${$3}$5"
++ if test "$TARGET" = "cdk"; then
++ _$2=`eval echo "${target$3}$5"`
++ else
++ _$2=`eval echo "${$3}$5"`
++ fi
++])
++
++dnl automake <= 1.6 don't support this
++dnl AC_SUBST($2)
++AC_DEFINE_UNQUOTED($2,"$_$2",$7)
++])
++
++AC_DEFUN(TUXBOX_APPS_DIRECTORY,[
++AC_REQUIRE([TUXBOX_APPS])
++
++if test "$TARGET" = "cdk"; then
++ datadir="\${prefix}/share"
++ tuxboxdatadir="\${prefix}/share/tuxbox"
++ zoneinfodir="\${datadir}/zoneinfo"
++ sysconfdir="\${prefix}/etc"
++ localstatedir="\${prefix}/var"
++ localedir="\${prefix}/var"
++ libdir="\${prefix}/lib"
++ targetdatadir="\${targetprefix}/share"
++ targetsysconfdir="\${targetprefix}/etc"
++ targetlocalstatedir="\${targetprefix}/var"
++ targetlibdir="\${targetprefix}/lib"
++fi
++
++TUXBOX_APPS_DIRECTORY_ONE(configdir,CONFIGDIR,sysconfdir,/etc,,
++ [--with-configdir=PATH ],[where to find the config files])
++
++TUXBOX_APPS_DIRECTORY_ONE(datadir,DATADIR,datadir,/share,,
++ [--with-datadir=PATH ],[where to find data])
++
++TUXBOX_APPS_DIRECTORY_ONE(localedir,LOCALEDIR,datadir,/share,/locale,
++ [--with-localedir=PATH ],[where to find locales])
++
++TUXBOX_APPS_DIRECTORY_ONE(fontdir,FONTDIR,datadir,/share,/fonts,
++ [--with-fontdir=PATH ],[where to find the fonts])
++
++TUXBOX_APPS_DIRECTORY_ONE(gamesdir,GAMESDIR,localstatedir,/var,/tuxbox/games,
++ [--with-gamesdir=PATH ],[where games data is stored])
++
++TUXBOX_APPS_DIRECTORY_ONE(libdir,LIBDIR,libdir,/lib,,
++ [--with-libdir=PATH ],[where to find the internal libs])
++
++TUXBOX_APPS_DIRECTORY_ONE(plugindir,PLUGINDIR,libdir,/lib,/tuxbox/plugins,
++ [--with-plugindir=PATH ],[where to find the plugins])
++
++TUXBOX_APPS_DIRECTORY_ONE(tuxboxdatadir,TUXBOXDATADIR,datadir,/share,,
++ [--with-tuxboxdatadir=PATH],[where to find tuxbox data])
++
++TUXBOX_APPS_DIRECTORY_ONE(zoneinfodir,ZONEINFODIR,datadir,/share,/zoneinfo,
++ [--with-zoneinfodir=PATH ],[where to find zoneinfo db])
++])
++
++dnl automake <= 1.6 needs this specifications
++AC_SUBST(CONFIGDIR)
++AC_SUBST(DATADIR)
++AC_SUBST(ZONEINFODIR)
++AC_SUBST(FONTDIR)
++AC_SUBST(GAMESDIR)
++AC_SUBST(LIBDIR)
++AC_SUBST(LOCALEDIR)
++AC_SUBST(PLUGINDIR)
++AC_SUBST(TUXBOXDATADIR)
++dnl end workaround
++
++AC_DEFUN(TUXBOX_APPS_ENDIAN,[
++AC_CHECK_HEADERS(endian.h)
++AC_C_BIGENDIAN
++])
++
++AC_DEFUN(TUXBOX_APPS_DRIVER,[
++#AC_ARG_WITH(driver,
++# [ --with-driver=PATH path for driver sources [[NONE]]],
++# [DRIVER="$withval"],[DRIVER=""])
++#
++#if test -d "$DRIVER/include"; then
++# AC_DEFINE(HAVE_DBOX2_DRIVER,1,[Define to 1 if you have the dbox2 driver sources])
++#else
++# AC_MSG_ERROR([can't find driver sources])
++#fi
++
++#AC_SUBST(DRIVER)
++
++#CPPFLAGS="$CPPFLAGS -I$DRIVER/include"
++])
++
++AC_DEFUN([TUXBOX_APPS_DVB],[
++AC_ARG_WITH(dvbincludes,
++ [ --with-dvbincludes=PATH path for dvb includes [[NONE]]],
++ [DVBINCLUDES="$withval"],[DVBINCLUDES=""])
++
++if test "$DVBINCLUDES"; then
++ CPPFLAGS="$CPPFLAGS -I$DVBINCLUDES"
++fi
++
++AC_CHECK_HEADERS(ost/dmx.h,[
++ DVB_API_VERSION=1
++ AC_MSG_NOTICE([found dvb version 1])
++])
++
++if test -z "$DVB_API_VERSION"; then
++AC_CHECK_HEADERS(linux/dvb/version.h,[
++ AC_LANG_PREPROC_REQUIRE()
++ AC_REQUIRE([AC_PROG_EGREP])
++ AC_LANG_CONFTEST([AC_LANG_SOURCE([[
++#include <linux/dvb/version.h>
++version DVB_API_VERSION
++ ]])])
++ DVB_API_VERSION=`(eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD | $EGREP "^version" | sed "s,version\ ,,"`
++ rm -f conftest*
++
++ AC_MSG_NOTICE([found dvb version $DVB_API_VERSION])
++])
++fi
++
++if test "$DVB_API_VERSION"; then
++ AC_DEFINE(HAVE_DVB,1,[Define to 1 if you have the dvb includes])
++ AC_DEFINE_UNQUOTED(HAVE_DVB_API_VERSION,$DVB_API_VERSION,[Define to the version of the dvb api])
++else
++ AC_MSG_ERROR([can't find dvb headers])
++fi
++])
++
++AC_DEFUN(_TUXBOX_APPS_LIB_CONFIG,[
++AC_PATH_PROG($1_CONFIG,$2,no)
++if test "$$1_CONFIG" != "no"; then
++ if test "$TARGET" = "cdk" && check_path "$$1_CONFIG"; then
++ AC_MSG_$3([could not find a suitable version of $2]);
++ else
++ $1_CFLAGS=$($$1_CONFIG --cflags)
++ $1_LIBS=$($$1_CONFIG --libs)
++ fi
++fi
++
++AC_SUBST($1_CFLAGS)
++AC_SUBST($1_LIBS)
++])
++
++AC_DEFUN(TUXBOX_APPS_LIB_CONFIG,[
++_TUXBOX_APPS_LIB_CONFIG($1,$2,ERROR)
++if test "$$1_CONFIG" = "no"; then
++ AC_MSG_ERROR([could not find $2]);
++fi
++])
++
++AC_DEFUN(TUXBOX_APPS_LIB_CONFIG_CHECK,[
++_TUXBOX_APPS_LIB_CONFIG($1,$2,WARN)
++])
++
++AC_DEFUN(TUXBOX_APPS_PKGCONFIG,[
++AC_PATH_PROG(PKG_CONFIG, pkg-config,no)
++if test "$PKG_CONFIG" = "no" ; then
++ AC_MSG_ERROR([could not find pkg-config]);
++fi
++])
++
++AC_DEFUN(_TUXBOX_APPS_LIB_PKGCONFIG,[
++PKG_CHECK_MODULES($1,$2)
++AC_SUBST($1_CFLAGS)
++AC_SUBST($1_LIBS)
++])
++
++AC_DEFUN(TUXBOX_APPS_LIB_PKGCONFIG,[
++_TUXBOX_APPS_LIB_PKGCONFIG($1,$2)
++if test -z "$$1_CFLAGS" ; then
++ AC_MSG_ERROR([could not find package $2]);
++fi
++])
++
++AC_DEFUN(TUXBOX_APPS_LIB_PKGCONFIG_CHECK,[
++_TUXBOX_APPS_LIB_PKGCONFIG($1,$2)
++])
++
++AC_DEFUN(_TUXBOX_APPS_LIB_SYMBOL,[
++AC_CHECK_LIB($2,$3,HAVE_$1="yes",HAVE_$1="no")
++if test "$HAVE_$1" = "yes"; then
++ $1_LIBS=-l$2
++fi
++
++AC_SUBST($1_LIBS)
++])
++
++AC_DEFUN(TUXBOX_APPS_LIB_SYMBOL,[
++_TUXBOX_APPS_LIB_SYMBOL($1,$2,$3,ERROR)
++if test "$HAVE_$1" = "no"; then
++ AC_MSG_ERROR([could not find $2]);
++fi
++])
++
++AC_DEFUN(TUXBOX_APPS_LIB_CONFIG_SYMBOL,[
++_TUXBOX_APPS_LIB_SYMBOL($1,$2,$3,WARN)
++])
++
++AC_DEFUN(TUXBOX_APPS_GETTEXT,[
++AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
++ [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
++ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
++ :)
++AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
++
++AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
++ [$ac_dir/$ac_word --omit-header --copyright-holder= /dev/null >/dev/null 2>&1 &&
++ (if $ac_dir/$ac_word --omit-header --copyright-holder= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
++ :)
++
++AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,[$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1],:)
++
++AC_MSG_CHECKING([whether NLS is requested])
++AC_ARG_ENABLE(nls,
++ [ --disable-nls do not use Native Language Support],
++ USE_NLS=$enableval, USE_NLS=yes)
++AC_MSG_RESULT($USE_NLS)
++AC_SUBST(USE_NLS)
++
++if test "$USE_NLS" = "yes"; then
++ AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,[
++ AC_TRY_LINK([
++ #include <libintl.h>
++ #ifndef __GNU_GETTEXT_SUPPORTED_REVISION
++ #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
++ #endif
++ extern int _nl_msg_cat_cntr;
++ extern int *_nl_domain_bindings;
++ ],[
++ bindtextdomain ("", "");
++ return (int) gettext ("") + _nl_msg_cat_cntr + *_nl_domain_bindings;
++ ], gt_cv_func_gnugettext_libc=yes, gt_cv_func_gnugettext_libc=no
++ )]
++ )
++
++ if test "$gt_cv_func_gnugettext_libc" = "yes"; then
++ AC_DEFINE(ENABLE_NLS, 1, [Define to 1 if translation of program messages to the user's native language is requested.])
++ gt_use_preinstalled_gnugettext=yes
++ else
++ USE_NLS=no
++ fi
++fi
++
++if test -f "$srcdir/po/LINGUAS"; then
++ ALL_LINGUAS=$(sed -e "/^#/d" "$srcdir/po/LINGUAS")
++fi
++
++POFILES=
++GMOFILES=
++UPDATEPOFILES=
++DUMMYPOFILES=
++for lang in $ALL_LINGUAS; do
++ POFILES="$POFILES $srcdirpre$lang.po"
++ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
++ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
++ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
++done
++INST_LINGUAS=
++if test -n "$ALL_LINGUAS"; then
++ for presentlang in $ALL_LINGUAS; do
++ useit=no
++ if test -n "$LINGUAS"; then
++ desiredlanguages="$LINGUAS"
++ else
++ desiredlanguages="$ALL_LINGUAS"
++ fi
++ for desiredlang in $desiredlanguages; do
++ case "$desiredlang" in
++ "$presentlang"*) useit=yes;;
++ esac
++ done
++ if test $useit = yes; then
++ INST_LINGUAS="$INST_LINGUAS $presentlang"
++ fi
++ done
++fi
++CATALOGS=
++if test -n "$INST_LINGUAS"; then
++ for lang in $INST_LINGUAS; do
++ CATALOGS="$CATALOGS $lang.gmo"
++ done
++fi
++AC_SUBST(POFILES)
++AC_SUBST(GMOFILES)
++AC_SUBST(UPDATEPOFILES)
++AC_SUBST(DUMMYPOFILES)
++AC_SUBST(CATALOGS)
++])
++
++dnl backward compatiblity
++AC_DEFUN([AC_GNU_SOURCE],
++[AH_VERBATIM([_GNU_SOURCE],
++[/* Enable GNU extensions on systems that have them. */
++#ifndef _GNU_SOURCE
++# undef _GNU_SOURCE
++#endif])dnl
++AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl
++AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
++AC_DEFINE([_GNU_SOURCE])
++])
++
++AC_DEFUN([AC_PROG_EGREP],
++[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
++ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
++ then ac_cv_prog_egrep='grep -E'
++ else ac_cv_prog_egrep='egrep'
++ fi])
++ EGREP=$ac_cv_prog_egrep
++ AC_SUBST([EGREP])
++])
++
++AC_DEFUN([AC_PYTHON_DEVEL],[
++ #
++ # should allow for checking of python version here...
++ #
++ AC_REQUIRE([AM_PATH_PYTHON])
++
++ # Check for Python include path
++ AC_MSG_CHECKING([for Python include path])
++ python_path=`echo $PYTHON | sed "s,/bin.*$,,"`
++ for i in "$python_path/include/python$PYTHON_VERSION/" "$python_path/include/python/" "$python_path/" ; do
++ python_path=`find $i -type f -name Python.h -print | sed "1q"`
++ if test -n "$python_path" ; then
++ break
++ fi
++ done
++ python_path=`echo $python_path | sed "s,/Python.h$,,"`
++ AC_MSG_RESULT([$python_path])
++ if test -z "$python_path" ; then
++ AC_MSG_ERROR([cannot find Python include path])
++ fi
++ AC_SUBST([PYTHON_CPPFLAGS],[-I$python_path])
++
++ # Check for Python library path
++ AC_MSG_CHECKING([for Python library path])
++ python_path=`echo $PYTHON | sed "s,/bin.*$,,"`
++ for i in "$python_path/lib/python$PYTHON_VERSION/config/" "$python_path/lib/python$PYTHON_VERSION/" "$python_path/lib/python/config/" "$python_path/lib/python/" "$python_path/" ; do
++ python_path=`find $i -type f -name libpython$PYTHON_VERSION.* -print | sed "1q"`
++ if test -n "$python_path" ; then
++ break
++ fi
++ done
++ python_path=`echo $python_path | sed "s,/libpython.*$,,"`
++ AC_MSG_RESULT([$python_path])
++ if test -z "$python_path" ; then
++ AC_MSG_ERROR([cannot find Python library path])
++ fi
++ AC_SUBST([PYTHON_LDFLAGS],["-L$python_path -lpython$PYTHON_VERSION"])
++ #
++ python_site=`echo $python_path | sed "s/config/site-packages/"`
++ AC_SUBST([PYTHON_SITE_PKG],[$python_site])
++])
+--- tuxcom_cvs/configure.ac 1970-01-01 01:00:00.000000000 +0100
++++ tuxcom/configure.ac 2008-11-03 14:05:20.449916344 +0100
+@@ -0,0 +1,18 @@
++# -*- Autoconf -*-
++# Process this file with autoconf to produce a configure script.
++
++AC_INIT(tuxbox-tuxcom-32bpp,1.13)
++AM_INIT_AUTOMAKE(tuxbox-tuxcom-32bpp,1.13)
++
++TUXBOX_APPS
++TUXBOX_APPS_DIRECTORY
++TUXBOX_APPS_DVB
++
++# Checks for programs.
++AC_PROG_CXX
++AC_PROG_CC
++
++TUXBOX_APPS_LIB_CONFIG(FREETYPE,freetype-config)
++
++AC_OUTPUT(Makefile)
++AC_OUTPUT(font/Makefile)
+diff -Naur tuxcom_cvs/font/Makefile.am tuxcom/font/Makefile.am
+--- tuxcom_cvs/font/Makefile.am 1970-01-01 01:00:00.000000000 +0100
++++ tuxcom/font/Makefile.am 2008-11-03 13:56:11.917916738 +0100
+@@ -0,0 +1,4 @@
++installdir = $(FONTDIR)
++
++install_DATA = \
++ pakenham.ttf