update base pkgs..
authorChang.H.S <jhs@dev3>
Tue, 27 Nov 2012 07:48:34 +0000 (16:48 +0900)
committerChang.H.S <jhs@dev3>
Tue, 27 Nov 2012 08:21:28 +0000 (17:21 +0900)
96 files changed:
meta-openvuplus/classes/git-project.bbclass [new file with mode: 0644]
meta-openvuplus/classes/opendreambox-git.bbclass [new file with mode: 0644]
meta-openvuplus/dreambox-keymaps/dreambox-keymaps.bb [new file with mode: 0644]
meta-openvuplus/dreambox-keymaps/dreambox-keymaps/GPL-1.0 [new file with mode: 0644]
meta-openvuplus/dreambox-keymaps/dreambox-keymaps/dream-de.info [new file with mode: 0644]
meta-openvuplus/dreambox-keymaps/dreambox-keymaps/dream-de.kmap [new file with mode: 0644]
meta-openvuplus/dreambox-keymaps/dreambox-keymaps/eng.info [new file with mode: 0644]
meta-openvuplus/dreambox-keymaps/dreambox-keymaps/eng.kmap [new file with mode: 0644]
meta-openvuplus/recipes-base/hddtemp/hddtemp/hddtemp-no-nls-support.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/hddtemp/hddtemp_0.3-beta15.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/joe/joe_3.7.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/mc/mc-4.8.1/optional-extfs-dir.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/mc/mc-4.8.1/optional-hints.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/mc/mc-4.8.1/optional-sfs-ini.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/mc/mc-4.8.1/optional-syntax-file.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/mc/mc_4.8.1.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-base/mtd/mtd-utils-1.4.9/disable-ubi.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/mtd/mtd-utils_1.4.9.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-base/ncdu/ncdu_1.8.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/ppp/ppp_2.4.5.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba-3.0.37/0001-s3-schannel-client-Push-the-domain-and-netbios-name-.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba-3.0.37/configure.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba-3.0.37/kernel-oplocks.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba-3.0.37/samba-3.0-CVE-2012-0870.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba-3.0.37/samba-3.0.37-CVE-2012-1182.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba-3.0.37/uclibc-strlcpy-strlcat.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba/01samba-kill [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba/01samba-start [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba/config-lfs.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba/init [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba/quota.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba/smb.conf [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba/tdb.pc [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba/volatiles.03_samba [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba_3.0.37.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/samba/samba_3.0.37.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-base/smartmontools/smartmontools.inc [new file with mode: 0644]
meta-openvuplus/recipes-base/smartmontools/smartmontools_5.42.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/tasks/task-vuplus-base.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/tasks/task-vuplus-base.inc [new file with mode: 0644]
meta-openvuplus/recipes-base/timezones/files/GPL-1.0 [new file with mode: 0644]
meta-openvuplus/recipes-base/timezones/files/zoneinfo.tar.bz2 [new file with mode: 0644]
meta-openvuplus/recipes-base/timezones/timezones-alternative.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxbox/tuxbox-common_0.1.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/32bpp.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/add_e2_plugin.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/add_font.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/fix_smstext.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/largefile.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/makefiles.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/support_newer_freetype.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/32bpp.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/acinclude.m4 [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/allow_different_demux.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/ignorelibs.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/libz.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/resize_framebuffer.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/videodev2.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/32bpp.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/add_advanced_rc.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/add_new_default_conf.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/allow_different_demux.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/makefiles.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/nonblocking.diff [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/plugin.py [new file with mode: 0644]
meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/vuplus/tuxtxt_vuplus.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/usbtunerhelper/usbtunerhelper.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/usbtunerhelper/usbtunerhelper/GPL-2.0 [new file with mode: 0644]
meta-openvuplus/recipes-base/usbtunerhelper/usbtunerhelper/usbtunerhelper.sh [new file with mode: 0644]
meta-openvuplus/recipes-base/vsftpd/vsftpd/01-builddefs.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/vsftpd/vsftpd/02-config.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/vsftpd/vsftpd/03-db-doc.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/vsftpd/vsftpd/04-link-local.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/vsftpd/vsftpd/05-whitespaces.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/vsftpd/vsftpd/06-greedy.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/vsftpd/vsftpd/07-utf8.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/vsftpd/vsftpd/08-manpage.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/vsftpd/vsftpd/09-s390.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/vsftpd/vsftpd/10-remote-dos.patch [new file with mode: 0644]
meta-openvuplus/recipes-base/vsftpd/vsftpd/vsftpd.conf [new file with mode: 0644]
meta-openvuplus/recipes-base/vsftpd/vsftpd/vsftpd.socket [new file with mode: 0644]
meta-openvuplus/recipes-base/vsftpd/vsftpd/vsftpd.xinetd.in [new file with mode: 0644]
meta-openvuplus/recipes-base/vsftpd/vsftpd/vsftpd@.service [new file with mode: 0644]
meta-openvuplus/recipes-base/vsftpd/vsftpd_2.3.5.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/vuplus-vucamd/vuplus-vucamd.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/vuplus-vucamd/vuplus-vucamd/Proprietary [new file with mode: 0644]
meta-openvuplus/recipes-base/vuplus-vucamd/vuplus-vucamd/vucamd [new file with mode: 0755]
meta-openvuplus/recipes-base/vuplus-vucamd/vuplus-vucamd/vucamd.sh [new file with mode: 0644]
meta-openvuplus/recipes-base/zeroconf/zeroconf_0.9.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-vuplus/tasks/task-vuplus-base.bb [new file with mode: 0644]
meta-openvuplus/recipes-vuplus/tasks/task-vuplus-base.inc [new file with mode: 0644]
meta-openvuplus/smartmontools/smartmontools.inc [new file with mode: 0644]
meta-openvuplus/smartmontools/smartmontools_5.42.bb [new file with mode: 0644]

diff --git a/meta-openvuplus/classes/git-project.bbclass b/meta-openvuplus/classes/git-project.bbclass
new file mode 100644 (file)
index 0000000..57c1331
--- /dev/null
@@ -0,0 +1,7 @@
+S = "${WORKDIR}/git"
+
+inherit gitpkgv
+
+RECIPE_PV := "${PV}"
+PV = "${RECIPE_PV}+git${SRCPV}"
+PKGV = "${RECIPE_PV}+git${GITPKGV}"
diff --git a/meta-openvuplus/classes/opendreambox-git.bbclass b/meta-openvuplus/classes/opendreambox-git.bbclass
new file mode 100644 (file)
index 0000000..ac25009
--- /dev/null
@@ -0,0 +1,5 @@
+OPENDREAMBOX_PROJECT ?= "${BPN}"
+
+SRC_URI += "git://git.opendreambox.org/git/${OPENDREAMBOX_PROJECT}.git;protocol=git"
+
+inherit git-project
diff --git a/meta-openvuplus/dreambox-keymaps/dreambox-keymaps.bb b/meta-openvuplus/dreambox-keymaps/dreambox-keymaps.bb
new file mode 100644 (file)
index 0000000..4ab2603
--- /dev/null
@@ -0,0 +1,18 @@
+DESCRIPTION = "Dreambox Keyboard Keymap files"
+LICENSE = "GPL"
+LIC_FILES_CHKSUM = "file://${THISDIR}/${PN}/GPL-1.0;md5=e9e36a9de734199567a4d769498f743d"
+MAINTAINER = "Felix Domke <tmbinc@elitedvb.net>"
+
+SRC_URI = "file://dream-de.info file://dream-de.kmap file://eng.info file://eng.kmap"
+
+PR = "r1"
+
+FILES_${PN} = "/"
+PACKAGE_ARCH = "all"
+
+do_install() {
+       install -d ${D}/usr/share/keymaps
+       for x in dream-de.info dream-de.kmap eng.info eng.kmap; do
+               install -m 0644 ${WORKDIR}/$x ${D}/usr/share/keymaps/$x
+       done
+}
diff --git a/meta-openvuplus/dreambox-keymaps/dreambox-keymaps/GPL-1.0 b/meta-openvuplus/dreambox-keymaps/dreambox-keymaps/GPL-1.0
new file mode 100644 (file)
index 0000000..9d4ef93
--- /dev/null
@@ -0,0 +1,252 @@
+
+GNU General Public License, version 1
+
+                    GNU GENERAL PUBLIC LICENSE
+                     Version 1, February 1989
+
+ Copyright (C) 1989 Free Software Foundation, Inc.
+                    51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The license agreements of most software companies try to keep users
+at the mercy of those companies.  By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  The
+General Public License applies to the Free Software Foundation`s
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must tell them their rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author`s protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors` reputations.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License.  The
+"Program", below, refers to any such program or work, and a "work based
+on the Program" means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications.  Each
+licensee is addressed as "you".
+
+  1. You may copy and distribute verbatim copies of the Program`s source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program.  You may charge a fee for the physical act of
+transferring a copy.
+
+  2. You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
+    a) cause the modified files to carry prominent notices stating that
+    you changed the files and the date of any change; and
+
+    b) cause the whole of any work that you distribute or publish, that
+    in whole or in part contains the Program or any part thereof, either
+    with or without modifications, to be licensed at no charge to all
+    third parties under the terms of this General Public License (except
+    that you may choose to grant warranty protection to some or all
+    third parties, at your option).
+
+    c) If the modified program normally reads commands interactively when
+    run, you must cause it, when started running for such interactive use
+    in the simplest and most usual way, to print or display an
+    announcement including an appropriate copyright notice and a notice
+    that there is no warranty (or else, saying that you provide a
+    warranty) and that users may redistribute the program under these
+    conditions, and telling the user how to view a copy of this General
+    Public License.
+
+    d) You may charge a fee for the physical act of transferring a
+    copy, and you may at your option offer warranty protection in
+    exchange for a fee.
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
+  3. You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
+    a) accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of
+    Paragraphs 1 and 2 above; or,
+
+    b) accompany it with a written offer, valid for at least three
+    years, to give any third party free (except for a nominal charge
+    for the cost of distribution) a complete machine-readable copy of the
+    corresponding source code, to be distributed under the terms of
+    Paragraphs 1 and 2 above; or,
+
+    c) accompany it with the information you received as to where the
+    corresponding source code may be obtained.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form alone.)
+
+Source code for a work means the preferred form of the work for making
+modifications to it.  For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
+  4. You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License.  However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
+  5. By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions.  You may not impose any further restrictions on the
+recipients` exercise of the rights granted herein.
+
+  7. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of the license which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
+  8. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+        Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to humanity, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+  To do so, attach the following notices to the program.  It is safest to
+attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program`s name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 1, or (at your option)
+    any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19xx name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w`.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c` for details.
+
+The hypothetical commands `show w` and `show c` should show the
+appropriate parts of the General Public License.  Of course, the
+commands you use may be called something other than `show w` and `show
+c`; they could even be mouse-clicks or menu items--whatever suits your
+program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  program `Gnomovision` (a program to direct compilers to make passes
+  at assemblers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+That`s all there is to it!
+
diff --git a/meta-openvuplus/dreambox-keymaps/dreambox-keymaps/dream-de.info b/meta-openvuplus/dreambox-keymaps/dreambox-keymaps/dream-de.info
new file mode 100644 (file)
index 0000000..d7f5b07
--- /dev/null
@@ -0,0 +1,2 @@
+kmap=dream-de.kmap
+name=Dreambox Keyboard Deutsch
diff --git a/meta-openvuplus/dreambox-keymaps/dreambox-keymaps/dream-de.kmap b/meta-openvuplus/dreambox-keymaps/dreambox-keymaps/dream-de.kmap
new file mode 100644 (file)
index 0000000..693317a
Binary files /dev/null and b/meta-openvuplus/dreambox-keymaps/dreambox-keymaps/dream-de.kmap differ
diff --git a/meta-openvuplus/dreambox-keymaps/dreambox-keymaps/eng.info b/meta-openvuplus/dreambox-keymaps/dreambox-keymaps/eng.info
new file mode 100644 (file)
index 0000000..d73372c
--- /dev/null
@@ -0,0 +1,2 @@
+kmap=eng.kmap
+name=Keyboard English
diff --git a/meta-openvuplus/dreambox-keymaps/dreambox-keymaps/eng.kmap b/meta-openvuplus/dreambox-keymaps/dreambox-keymaps/eng.kmap
new file mode 100644 (file)
index 0000000..15a722f
Binary files /dev/null and b/meta-openvuplus/dreambox-keymaps/dreambox-keymaps/eng.kmap differ
diff --git a/meta-openvuplus/recipes-base/hddtemp/hddtemp/hddtemp-no-nls-support.patch b/meta-openvuplus/recipes-base/hddtemp/hddtemp/hddtemp-no-nls-support.patch
new file mode 100644 (file)
index 0000000..8f6b9c3
--- /dev/null
@@ -0,0 +1,66 @@
+diff -ru hddtemp-0.3-beta15.orig/configure.in hddtemp-0.3-beta15/configure.in
+--- hddtemp-0.3-beta15.orig/configure.in       2005-10-17 20:14:19.000000000 +0100
++++ hddtemp-0.3-beta15/configure.in    2008-06-27 00:00:46.000000000 +0100
+@@ -17,6 +17,7 @@
+ # append the host alias to the tools for cross compiling
+ AC_HEADER_STDC
+ AC_CHECK_HEADERS(fcntl.h)
++AC_CHECK_HEADERS(iconv.h)
+ AC_CHECK_HEADERS(netinet/in.h)
+ AC_CHECK_TYPE(in_addr_t, ,[AC_DEFINE_UNQUOTED([in_addr_t], [uint32_t], [Define to 'uint32_t' if <netinet/in.h> does not define.])], [#include <netinet/in.h>])
+@@ -29,6 +30,8 @@
+ AM_GNU_GETTEXT
+ #AM_GNU_GETTEXT([external])
++AC_CHECK_FUNCS([bindtextdomain textdomain iconv])
++
+ dnl reasonable guesses for where stuff is installed
+ dnl if we don't do that now, the config.h will use ${prefix}
+ dnl for DEFAULT_DATABASE_PATH.
+diff -ru hddtemp-0.3-beta15.orig/src/hddtemp.c hddtemp-0.3-beta15/src/hddtemp.c
+--- hddtemp-0.3-beta15.orig/src/hddtemp.c      2006-04-19 03:37:35.000000000 +0100
++++ hddtemp-0.3-beta15/src/hddtemp.c   2008-06-26 23:59:40.000000000 +0100
+@@ -276,8 +276,12 @@
+   backtrace_sigbus();
+   setlocale (LC_ALL, "");
++#ifdef HAVE_BINDTEXTDOMAIN
+   bindtextdomain (PACKAGE, LOCALEDIR);
++#endif
++#ifdef HAVE_TEXTDOMAIN
+   textdomain (PACKAGE);
++#endif
+   
+   show_db = debug = numeric = quiet = wakeup = af_hint = syslog_interval = 0;
+   unit = DEFAULT;
+diff -ru hddtemp-0.3-beta15.orig/src/utf8.c hddtemp-0.3-beta15/src/utf8.c
+--- hddtemp-0.3-beta15.orig/src/utf8.c 2006-04-19 03:37:02.000000000 +0100
++++ hddtemp-0.3-beta15/src/utf8.c      2008-06-27 00:02:15.000000000 +0100
+@@ -23,7 +23,9 @@
+ // Standard includes
+ #include <stdlib.h>
++#ifdef HAVE_ICONV_H
+ #include <iconv.h>
++#endif
+ #include <langinfo.h>
+ #include <locale.h>
+ #include <string.h>
+@@ -34,6 +36,7 @@
+ static char *iconv_from_utf8_to_locale(const char *string, const char* fallback_string)
+ {
++#ifdef HAVE_ICONV
+   const size_t buffer_inc = 80;       // Increment buffer size in 80 bytes step
+   const char *charset;
+   iconv_t cd;
+@@ -93,6 +96,8 @@
+   if (dest_buffer != NULL)
+     free(dest_buffer);                // free buffer
+   free(src_buffer);                   // free string
++#endif
++
+   return strdup(fallback_string);     // and return fallback string
+ }
diff --git a/meta-openvuplus/recipes-base/hddtemp/hddtemp_0.3-beta15.bb b/meta-openvuplus/recipes-base/hddtemp/hddtemp_0.3-beta15.bb
new file mode 100644 (file)
index 0000000..8ef9a2c
--- /dev/null
@@ -0,0 +1,22 @@
+SUMMARY = "Hard disk temperature monitor daemon"
+SECTION = "console/network"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://GPL-2;md5=eb723b61539feef013de476e68b5c50a"
+PR = "r1"
+
+SRC_URI = "http://download.savannah.nongnu.org/releases/${PN}/${PN}-${PV}.tar.bz2;name=tar \
+           http://download.savannah.nongnu.org/releases/${PN}/hddtemp.db;name=db \
+          file://hddtemp-no-nls-support.patch"
+SRC_URI[tar.md5sum] = "8b829339e1ae9df701684ec239021bb8"
+SRC_URI[tar.sha256sum] = "618541584054093d53be8a2d9e81c97174f30f00af91cb8700a97e442d79ef5b"
+SRC_URI[db.md5sum] = "5321858f8c028d4b1a91a8a5f951f2f8"
+SRC_URI[db.sha256sum] = "8b19e70228214562eb10a46bd73b6ea8601e996f2d6527907b560d35b33f5240"
+
+inherit autotools gettext
+
+FILES_${PN} += "/usr/share/misc/hddtemp.db"
+
+do_install_append() {
+       install -d ${D}/usr/share/misc/
+       install -m 0644 ${WORKDIR}/hddtemp.db ${D}/usr/share/misc/hddtemp.db
+}
diff --git a/meta-openvuplus/recipes-base/joe/joe_3.7.bb b/meta-openvuplus/recipes-base/joe/joe_3.7.bb
new file mode 100644 (file)
index 0000000..436fd07
--- /dev/null
@@ -0,0 +1,14 @@
+SUMMARY = "Console text editor with good functionality, good choice for vi-haters."
+HOMEPAGE = "http://joe-editor.sourceforge.net/"
+SECTION = "console/utils"
+LICENSE = "GPL-1.0"
+LIC_FILES_CHKSUM = "file://COPYING;md5=da10ed7cf8038981c580e11c1d3e8fb6"
+PR = "r2"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/joe-editor/joe-${PV}.tar.gz"
+SRC_URI[md5sum] = "66de1b073e869ba12abbfcde3885c577"
+SRC_URI[sha256sum] = "cae456e1ad5a8c1d3c94920a3416c2347277739b260e3494d3bc0f2b9b73106f"
+
+inherit autotools
+
+RDEPENDS_${PN} = "ncurses-terminfo"
diff --git a/meta-openvuplus/recipes-base/mc/mc-4.8.1/optional-extfs-dir.patch b/meta-openvuplus/recipes-base/mc/mc-4.8.1/optional-extfs-dir.patch
new file mode 100644 (file)
index 0000000..aebb31e
--- /dev/null
@@ -0,0 +1,18 @@
+Upstream-Status: Inappropriate [Configuration]
+
+Don't show "Warning: cannot open /usr/libexec/mc/extfs.d directory",
+because it's packaged separately.
+
+Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
+
+--- mc-4.8.1/src/vfs/extfs/extfs.c.orig        2012-05-10 15:50:04.633833530 +0200
++++ mc-4.8.1/src/vfs/extfs/extfs.c     2012-05-10 15:50:20.349833289 +0200
+@@ -1558,8 +1558,6 @@
+      * appear on screen. */
+     if (dir == NULL)
+     {
+-        if (!silent)
+-            fprintf (stderr, _("Warning: cannot open %s directory\n"), dirname);
+         g_free (dirname);
+         return FALSE;
+     }
diff --git a/meta-openvuplus/recipes-base/mc/mc-4.8.1/optional-hints.patch b/meta-openvuplus/recipes-base/mc/mc-4.8.1/optional-hints.patch
new file mode 100644 (file)
index 0000000..a0ccdcd
--- /dev/null
@@ -0,0 +1,17 @@
+Upstream-Status: Pending
+
+Fixes a text drawing issue if hints are unavailable.
+
+Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
+
+--- mc-4.8.1/src/filemanager/midnight.c.orig   2012-05-10 15:30:56.645804130 +0200
++++ mc-4.8.1/src/filemanager/midnight.c        2012-05-10 15:31:27.601804920 +0200
+@@ -1587,7 +1587,7 @@
+     {
+         char text[BUF_SMALL];
+-        g_snprintf (text, sizeof (text), _("GNU Midnight Commander %s\n"), VERSION);
++        g_snprintf (text, sizeof (text), _("GNU Midnight Commander %s"), VERSION);
+         set_hintbar (text);
+     }
+ }
diff --git a/meta-openvuplus/recipes-base/mc/mc-4.8.1/optional-sfs-ini.patch b/meta-openvuplus/recipes-base/mc/mc-4.8.1/optional-sfs-ini.patch
new file mode 100644 (file)
index 0000000..fd5afd3
--- /dev/null
@@ -0,0 +1,17 @@
+Upstream-Status: Inappropriate [Configuration]
+
+Don't show "sfs_init(): Warning: file /etc/mc/sfs.ini not found",
+because it's packaged separately.
+
+Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
+
+--- mc-4.8.1/src/vfs/sfs/sfs.c.orig    2012-05-10 15:48:05.405830465 +0200
++++ mc-4.8.1/src/vfs/sfs/sfs.c 2012-05-10 15:48:24.389830919 +0200
+@@ -419,7 +419,6 @@
+     if (cfg == NULL)
+     {
+-        fprintf (stderr, _("%s: Warning: file %s not found\n"), "sfs_init()", mc_sfsini);
+         g_free (mc_sfsini);
+         return 0;
+     }
diff --git a/meta-openvuplus/recipes-base/mc/mc-4.8.1/optional-syntax-file.patch b/meta-openvuplus/recipes-base/mc/mc-4.8.1/optional-syntax-file.patch
new file mode 100644 (file)
index 0000000..ee0ee46
--- /dev/null
@@ -0,0 +1,18 @@
+Upstream-Status: Inappropriate [Configuration]
+
+Don't show an error message if the syntax file can't
+be opened, because it's packaged separately.
+
+Signed-off-by: Andreas Oberritter <obi@opendreambox.org>
+
+--- mc-4.8.1/src/editor/syntax.c.orig  2011-12-12 10:15:38.000000000 +0100
++++ mc-4.8.1/src/editor/syntax.c       2012-05-10 15:07:56.517768788 +0200
+@@ -1522,8 +1522,6 @@
+     if (r == -1)
+     {
+         edit_free_syntax_rules (edit);
+-        message (D_ERROR, _("Load syntax file"),
+-                 _("Cannot open file %s\n%s"), f, unix_error_string (errno));
+     }
+     else if (r != 0)
+     {
diff --git a/meta-openvuplus/recipes-base/mc/mc_4.8.1.bbappend b/meta-openvuplus/recipes-base/mc/mc_4.8.1.bbappend
new file mode 100644 (file)
index 0000000..73b41c6
--- /dev/null
@@ -0,0 +1,26 @@
+PR .= "-vuplus0"
+
+SRC_URI += "file://optional-extfs-dir.patch \
+            file://optional-hints.patch \
+            file://optional-sfs-ini.patch \
+            file://optional-syntax-file.patch"
+
+PACKAGES += "${PN}-full"
+
+RDEPENDS_${PN} = ""
+RDEPENDS_${PN}-full = "ncurses-terminfo"
+
+RSUGGESTS_${PN} = "${PN}-full"
+
+FILES_${PN} = " \
+        ${bindir}/* \
+        ${sysconfdir}/mc/filehighlight.ini \
+        ${sysconfdir}/mc/*.ext \
+        ${sysconfdir}/mc/*.keymap \
+        ${sysconfdir}/mc/*.menu \
+        ${datadir}/${BPN}/mc.* \
+        ${datadir}/${BPN}/skins/default.ini \
+"
+FILES_${PN}-full = "${libexecdir}/* ${sysconfdir} ${datadir}/${BPN}"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${P}:"
diff --git a/meta-openvuplus/recipes-base/mtd/mtd-utils-1.4.9/disable-ubi.patch b/meta-openvuplus/recipes-base/mtd/mtd-utils-1.4.9/disable-ubi.patch
new file mode 100644 (file)
index 0000000..d9384d9
--- /dev/null
@@ -0,0 +1,19 @@
+--- mtd-utils-1.4.9.org/Makefile       2012-04-02 11:41:10.339446661 +0200
++++ mtd-utils-1.4.9/Makefile   2012-04-02 11:40:33.659447111 +0200
+@@ -30,13 +30,13 @@
+       ubidetach ubinize ubiformat ubirename mtdinfo ubirsvol
+ BINS = $(MTD_BINS)
+-BINS += mkfs.ubifs/mkfs.ubifs
+-BINS += $(addprefix ubi-utils/,$(UBI_BINS))
++#BINS += mkfs.ubifs/mkfs.ubifs
++#BINS += $(addprefix ubi-utils/,$(UBI_BINS))
+ SCRIPTS = flash_eraseall
+ TARGETS = $(BINS)
+ TARGETS += lib/libmtd.a
+-TARGETS += ubi-utils/libubi.a
++#TARGETS += ubi-utils/libubi.a
+ OBJDEPS = $(BUILDDIR)/include/version.h
diff --git a/meta-openvuplus/recipes-base/mtd/mtd-utils_1.4.9.bbappend b/meta-openvuplus/recipes-base/mtd/mtd-utils_1.4.9.bbappend
new file mode 100644 (file)
index 0000000..6eb3342
--- /dev/null
@@ -0,0 +1,7 @@
+PR .= "-vuplus0"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${P}:"
+
+DREAMBOX_KERNEL_VERSION = "3.2"
+
+SRC_URI += "${@base_version_less_or_equal('DREAMBOX_KERNEL_VERSION', '2.6.18', 'file://disable-ubi.patch', '', d)}"
diff --git a/meta-openvuplus/recipes-base/ncdu/ncdu_1.8.bb b/meta-openvuplus/recipes-base/ncdu/ncdu_1.8.bb
new file mode 100644 (file)
index 0000000..75e0641
--- /dev/null
@@ -0,0 +1,11 @@
+SUMMARY = "NCurses Disk Usage"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=321d4ec4e1e7746028446d003a975868"
+DEPENDS = "ncurses"
+PR = "r1"
+
+SRC_URI = "http://dev.yorhel.nl/download/ncdu-${PV}.tar.gz"
+SRC_URI[md5sum] = "94d7a821f8a0d7ba8ef3dd926226f7d5"
+SRC_URI[sha256sum] = "42aaf0418c05e725b39b220166a9c604a9c54c0fbf7692c9c119b36d0ed5d099"
+
+inherit autotools
diff --git a/meta-openvuplus/recipes-base/ppp/ppp_2.4.5.bbappend b/meta-openvuplus/recipes-base/ppp/ppp_2.4.5.bbappend
new file mode 100644 (file)
index 0000000..e6587d2
--- /dev/null
@@ -0,0 +1,8 @@
+PR .= "-vuplus0"
+
+do_install_append() {
+       rm ${D}/${sysconfdir}/ppp/options
+       rm ${D}/${sysconfdir}/ppp/pap-secrets
+}
+
+CONFFILES_${PN} = "${sysconfdir}/ppp/chap-secrets"
diff --git a/meta-openvuplus/recipes-base/samba/samba-3.0.37/0001-s3-schannel-client-Push-the-domain-and-netbios-name-.patch b/meta-openvuplus/recipes-base/samba/samba-3.0.37/0001-s3-schannel-client-Push-the-domain-and-netbios-name-.patch
new file mode 100644 (file)
index 0000000..832ce9d
--- /dev/null
@@ -0,0 +1,31 @@
+From 51aaf9c6812430975dcd2cf9a632eb8d241ec41e Mon Sep 17 00:00:00 2001
+From: Andrew Bartlett <abartlet@samba.org>
+Date: Thu, 3 Jun 2010 09:35:31 +1000
+Subject: [PATCH] s3:schannel client Push the domain and netbios name into the DOS charset
+
+If the netbios name is not just ASCII, then we have to get it into the
+right character set.
+
+Andrew Bartlett
+---
+ source/rpc_parse/parse_rpc.c |    4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git source/rpc_parse/parse_rpc.c source/rpc_parse/parse_rpc.c
+index 2d166c7..7b4b8e8 100644
+--- source/rpc_parse/parse_rpc.c
++++ source/rpc_parse/parse_rpc.c
+@@ -786,8 +786,8 @@ void init_rpc_auth_schannel_neg(RPC_AUTH_SCHANNEL_NEG *neg,
+ {
+       neg->type1 = 0;
+       neg->type2 = 0x3;
+-      fstrcpy(neg->domain, domain);
+-      fstrcpy(neg->myname, myname);
++      push_ascii_fstring(neg->domain, domain);
++      push_ascii_fstring(neg->myname, myname);
+ }
+ /*******************************************************************
+-- 
+1.7.0.1
+
diff --git a/meta-openvuplus/recipes-base/samba/samba-3.0.37/configure.patch b/meta-openvuplus/recipes-base/samba/samba-3.0.37/configure.patch
new file mode 100644 (file)
index 0000000..ddcb9e9
--- /dev/null
@@ -0,0 +1,213 @@
+diff -urN source.old//aclocal.m4 source//aclocal.m4
+--- source.old//aclocal.m4     2008-08-25 22:09:21.000000000 +0100
++++ source//aclocal.m4 2008-11-23 17:44:58.050646210 +0000
+@@ -1,5 +1,5 @@
+ dnl test whether dirent has a d_off member
+-AC_DEFUN(AC_DIRENT_D_OFF,
++AC_DEFUN([AC_DIRENT_D_OFF],
+ [AC_CACHE_CHECK([for d_off in dirent], ac_cv_dirent_d_off,
+ [AC_TRY_COMPILE([
+ #include <unistd.h>
+@@ -13,7 +13,7 @@
+ dnl Mark specified module as shared
+ dnl SMB_MODULE(name,static_files,shared_files,subsystem,whatif-static,whatif-shared)
+-AC_DEFUN(SMB_MODULE,
++AC_DEFUN([SMB_MODULE],
+ [
+       AC_MSG_CHECKING([how to build $1])
+       if test "$[MODULE_][$1]"; then
+@@ -44,7 +44,7 @@
+       fi
+ ])
+-AC_DEFUN(SMB_SUBSYSTEM,
++AC_DEFUN([SMB_SUBSYSTEM],
+ [
+       AC_SUBST($1_STATIC)
+       AC_SUBST($1_MODULES)
+@@ -229,7 +229,7 @@
+ dnl Define an AC_DEFINE with ifndef guard.
+ dnl AC_N_DEFINE(VARIABLE [, VALUE])
+-define(AC_N_DEFINE,
++define([AC_N_DEFINE],
+ [cat >> confdefs.h <<\EOF
+ [#ifndef] $1
+ [#define] $1 ifelse($#, 2, [$2], $#, 3, [$2], 1)
+@@ -239,14 +239,14 @@
+ dnl Add an #include
+ dnl AC_ADD_INCLUDE(VARIABLE)
+-define(AC_ADD_INCLUDE,
++define([AC_ADD_INCLUDE],
+ [cat >> confdefs.h <<\EOF
+ [#include] $1
+ EOF
+ ])
+ dnl Copied from libtool.m4
+-AC_DEFUN(AC_PROG_LD_GNU,
++AC_DEFUN([AC_PROG_LD_GNU],
+ [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], ac_cv_prog_gnu_ld,
+ [# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+ if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+@@ -257,7 +257,7 @@
+ ])
+ dnl Removes -I/usr/include/? from given variable
+-AC_DEFUN(CFLAGS_REMOVE_USR_INCLUDE,[
++AC_DEFUN([CFLAGS_REMOVE_USR_INCLUDE],[
+   ac_new_flags=""
+   for i in [$]$1; do
+     case [$]i in
+@@ -270,7 +270,7 @@
+ dnl Removes '-L/usr/lib[/]', '-Wl,-rpath,/usr/lib[/]'
+ dnl and '-Wl,-rpath -Wl,/usr/lib[/]' from given variable
+-AC_DEFUN(LIB_REMOVE_USR_LIB,[
++AC_DEFUN([LIB_REMOVE_USR_LIB],[
+   ac_new_flags=""
+   l=""
+   for i in [$]$1; do
+@@ -301,7 +301,7 @@
+ dnl From Bruno Haible.
+-AC_DEFUN(jm_ICONV,
++AC_DEFUN([jm_ICONV],
+ [
+   dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
+   dnl those with the standalone portable libiconv installed).
+@@ -387,7 +387,7 @@
+   fi
+ ])
+-AC_DEFUN(rjs_CHARSET,[
++AC_DEFUN([rjs_CHARSET],[
+   dnl Find out if we can convert from $1 to UCS2-LE
+   AC_MSG_CHECKING([can we convert from $1 to UCS2-LE?])
+   AC_TRY_RUN([
+@@ -405,7 +405,7 @@
+ dnl CFLAGS_ADD_DIR(CFLAGS, $INCDIR)
+ dnl This function doesn't add -I/usr/include into CFLAGS
+-AC_DEFUN(CFLAGS_ADD_DIR,[
++AC_DEFUN([CFLAGS_ADD_DIR],[
+ if test "$2" != "/usr/include" ; then
+     $1="$$1 -I$2"
+ fi
+@@ -413,7 +413,7 @@
+ dnl LIB_ADD_DIR(LDFLAGS, $LIBDIR)
+ dnl This function doesn't add -L/usr/lib into LDFLAGS
+-AC_DEFUN(LIB_ADD_DIR,[
++AC_DEFUN([LIB_ADD_DIR],[
+ if test "$2" != "/usr/lib" ; then
+     $1="$$1 -L$2"
+ fi
+@@ -486,7 +486,7 @@
+ dnl AC_TRY_RUN_STRICT(PROGRAM,CFLAGS,CPPFLAGS,LDFLAGS,
+ dnl           [ACTION-IF-TRUE],[ACTION-IF-FALSE],
+ dnl           [ACTION-IF-CROSS-COMPILING = RUNTIME-ERROR])
+-AC_DEFUN( [AC_TRY_RUN_STRICT],
++AC_DEFUN([AC_TRY_RUN_STRICT],
+ [
+       old_CFLAGS="$CFLAGS";
+       CFLAGS="$2";
+diff -urN source.old//configure.in source//configure.in
+--- source.old//configure.in   2008-08-25 22:09:21.000000000 +0100
++++ source//configure.in       2008-11-23 17:22:17.108791515 +0000
+@@ -1402,7 +1402,7 @@
+ #endif
+        exit(0);
+ }
+-], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no])
++], [linux_getgrouplist_ok=yes], [linux_getgrouplist_ok=no], [linux_getgrouplist_ok=cross])
+        if test x"$linux_getgrouplist_ok" = x"yes"; then
+           AC_DEFINE(HAVE_GETGROUPLIST, 1, [Have good getgrouplist])
+        fi
+diff -urN source.old//lib/replace/libreplace.m4 source//lib/replace/libreplace.m4
+--- source.old//lib/replace/libreplace.m4      2008-08-25 22:09:21.000000000 +0100
++++ source//lib/replace/libreplace.m4  2008-11-23 17:54:27.942153096 +0000
+@@ -1,4 +1,4 @@
+-AC_DEFUN_ONCE(AC_LIBREPLACE_LOCATION_CHECKS,
++AC_DEFUN_ONCE([AC_LIBREPLACE_LOCATION_CHECKS],
+ [
+ echo "LIBREPLACE_LOCATION_CHECKS: START"
+@@ -27,7 +27,7 @@
+ ]) dnl end AC_LIBREPLACE_LOCATION_CHECKS
+-AC_DEFUN_ONCE(AC_LIBREPLACE_BROKEN_CHECKS,
++AC_DEFUN_ONCE([AC_LIBREPLACE_BROKEN_CHECKS],
+ [
+ echo "LIBREPLACE_BROKEN_CHECKS: START"
+@@ -325,25 +325,25 @@
+       AC_DEFINE(HAVE_VOLATILE, 1, [Whether the C compiler understands volatile])
+ fi
+-m4_include(system/config.m4)
++m4_include(lib/replace/system/config.m4)
+-m4_include(dlfcn.m4)
+-m4_include(getpass.m4)
+-m4_include(strptime.m4)
+-m4_include(win32.m4)
+-m4_include(timegm.m4)
+-m4_include(repdir.m4)
++m4_include(lib/replace/dlfcn.m4)
++m4_include(lib/replace/getpass.m4)
++m4_include(lib/replace/strptime.m4)
++m4_include(lib/replace/win32.m4)
++m4_include(lib/replace/timegm.m4)
++m4_include(lib/replace/repdir.m4)
+ AC_CHECK_FUNCS([syslog memset memcpy],,[AC_MSG_ERROR([Required function not found])])
+ echo "LIBREPLACE_BROKEN_CHECKS: END"
+ ]) dnl end AC_LIBREPLACE_BROKEN_CHECKS
+-AC_DEFUN_ONCE(AC__LIBREPLACE_ALL_CHECKS_START,
++AC_DEFUN_ONCE([AC__LIBREPLACE_ALL_CHECKS_START],
+ [
+ #LIBREPLACE_ALL_CHECKS: START"
+ ])
+-AC_DEFUN_ONCE(AC__LIBREPLACE_ALL_CHECKS_END,
++AC_DEFUN_ONCE([AC__LIBREPLACE_ALL_CHECKS_END],
+ [
+ #LIBREPLACE_ALL_CHECKS: END"
+ ])
+@@ -356,6 +356,6 @@
+ AC__LIBREPLACE_ALL_CHECKS_END
+ ])
+-m4_include(libreplace_cc.m4)
+-m4_include(libreplace_macros.m4)
+-m4_include(autoconf-2.60.m4)
++m4_include(lib/replace/libreplace_cc.m4)
++m4_include(lib/replace/libreplace_macros.m4)
++m4_include(lib/replace/autoconf-2.60.m4)
+diff -urN source.old//lib/replace/libreplace_macros.m4 source//lib/replace/libreplace_macros.m4
+--- source.old//lib/replace/libreplace_macros.m4       2008-08-25 22:09:21.000000000 +0100
++++ source//lib/replace/libreplace_macros.m4   2008-11-23 17:31:08.269791372 +0000
+@@ -76,7 +76,7 @@
+ ])
+ dnl AC_PROG_CC_FLAG(flag)
+-AC_DEFUN(AC_PROG_CC_FLAG,
++AC_DEFUN([AC_PROG_CC_FLAG],
+ [AC_CACHE_CHECK(whether ${CC-cc} accepts -$1, ac_cv_prog_cc_$1,
+ [echo 'void f(){}' > conftest.c
+ if test -z "`${CC-cc} -$1 -c conftest.c 2>&1`"; then
+@@ -103,7 +103,7 @@
+ dnl see if a declaration exists for a function or variable
+ dnl defines HAVE_function_DECL if it exists
+ dnl AC_HAVE_DECL(var, includes)
+-AC_DEFUN(AC_HAVE_DECL,
++AC_DEFUN([AC_HAVE_DECL],
+ [
+  AC_CACHE_CHECK([for $1 declaration],ac_cv_have_$1_decl,[
+     AC_TRY_COMPILE([$2],[int i = (int)$1],
diff --git a/meta-openvuplus/recipes-base/samba/samba-3.0.37/kernel-oplocks.patch b/meta-openvuplus/recipes-base/samba/samba-3.0.37/kernel-oplocks.patch
new file mode 100644 (file)
index 0000000..bee0f1d
--- /dev/null
@@ -0,0 +1,20 @@
+Linux oplock support is conditional on HAVE_KERNEL_OPLOCKS_LINUX,
+not plain old LINUX.
+
+http://websvn.samba.org/cgi-bin/viewcvs.cgi?rev=23962&view=rev
+--- source/modules/vfs_default.c.orig  2010-09-06 17:37:48.256826182 +0200
++++ source/modules/vfs_default.c       2010-09-06 17:38:25.300843377 +0200
+@@ -813,10 +813,11 @@
+       START_PROFILE(syscall_linux_setlease);
+-#ifdef LINUX
++#ifdef HAVE_KERNEL_OPLOCKS_LINUX
+       /* first set the signal handler */
+-      if(linux_set_lease_sighandler(fd) == -1)
++      if(linux_set_lease_sighandler(fd) == -1) {
+               return -1;
++      }
+       result = linux_setlease(fd, leasetype);
+ #else
diff --git a/meta-openvuplus/recipes-base/samba/samba-3.0.37/samba-3.0-CVE-2012-0870.patch b/meta-openvuplus/recipes-base/samba/samba-3.0.37/samba-3.0-CVE-2012-0870.patch
new file mode 100644 (file)
index 0000000..4144a9e
--- /dev/null
@@ -0,0 +1,91 @@
+From f781c9c693462b89b60a3662d2a1224c9387a725 Mon Sep 17 00:00:00 2001
+From: Volker Lendecke <vl@samba.org>
+Date: Fri, 10 Feb 2012 08:10:39 +0100
+Subject: [PATCH 1/2] v3-3: AndX offsets are increasing strictly monotonically
+
+---
+ source/smbd/process.c |   10 +++++++++-
+ 1 files changed, 9 insertions(+), 1 deletions(-)
+
+diff --git source/smbd/process.c source/smbd/process.c
+index e861e16..f64e1ce 100644
+--- source/smbd/process.c
++++ source/smbd/process.c
+@@ -1160,7 +1160,7 @@ int chain_reply(char *inbuf,char *outbuf,int size,int bufsize)
+       static char *orig_inbuf;
+       static char *orig_outbuf;
+       int smb_com1, smb_com2 = CVAL(inbuf,smb_vwv0);
+-      unsigned smb_off2 = SVAL(inbuf,smb_vwv1);
++      static unsigned smb_off2;
+       char *inbuf2, *outbuf2;
+       int outsize2;
+       int new_size;
+@@ -1178,8 +1178,16 @@ int chain_reply(char *inbuf,char *outbuf,int size,int bufsize)
+               /* this is the first part of the chain */
+               orig_inbuf = inbuf;
+               orig_outbuf = outbuf;
++              smb_off2 = 0;
+       }
++      if (SVAL(inbuf,smb_vwv1) <= smb_off2) {
++              DEBUG(1, ("AndX offset not increasing\n"));
++              SCVAL(outbuf, smb_vwv0, 0xFF);
++              return outsize;
++      }
++      smb_off2 = SVAL(inbuf, smb_vwv1);
++
+       /*
+        * The original Win95 redirector dies on a reply to
+        * a lockingX and read chain unless the chain reply is
+-- 
+1.7.3.4
+
+
+From 009bb0be7383777a650a3bc6af1c0d3ab7476ebc Mon Sep 17 00:00:00 2001
+From: Volker Lendecke <vl@samba.org>
+Date: Fri, 10 Feb 2012 08:39:33 +0100
+Subject: [PATCH 2/2] v3-0-test: Port back some packet consistency checks
+
+---
+ source/smbd/process.c |   18 ++++++++++++++++++
+ 1 files changed, 18 insertions(+), 0 deletions(-)
+
+diff --git source/smbd/process.c source/smbd/process.c
+index f64e1ce..8aabef8 100644
+--- source/smbd/process.c
++++ source/smbd/process.c
+@@ -1025,6 +1025,7 @@ static int construct_reply(char *inbuf,char *outbuf,int size,int bufsize)
+       int outsize = 0;
+       int msg_type = CVAL(inbuf,0);
+       uint16_t mid = SVAL(inbuf, smb_mid);
++      uint8_t wct = CVAL(inbuf, smb_wct);
+       chain_size = 0;
+       file_chain_reset();
+@@ -1033,6 +1034,23 @@ static int construct_reply(char *inbuf,char *outbuf,int size,int bufsize)
+       if (msg_type != 0)
+               return(reply_special(inbuf,outbuf));  
++      /* Ensure we have at least wct words and 2 bytes of bcc. */
++      if (smb_size + wct*2 > size) {
++              DEBUG(0,("init_smb_request: invalid wct number %u (size %u)\n",
++                      (unsigned int)wct,
++                      (unsigned int)size));
++              exit_server_cleanly("Invalid SMB request");
++      }
++      /* Ensure bcc is correct. */
++      if (((uint8 *)smb_buf(inbuf)) + smb_buflen(inbuf) > inbuf + size) {
++              DEBUG(0,("init_smb_request: invalid bcc number %u "
++                      "(wct = %u, size %u)\n",
++                      (unsigned int)smb_buflen(inbuf),
++                      (unsigned int)wct,
++                      (unsigned int)size));
++              exit_server_cleanly("Invalid SMB request");
++      }
++
+       construct_reply_common(inbuf, outbuf);
+       outsize = switch_message(type,inbuf,outbuf,size,bufsize);
+-- 
+1.7.3.4
+
diff --git a/meta-openvuplus/recipes-base/samba/samba-3.0.37/samba-3.0.37-CVE-2012-1182.patch b/meta-openvuplus/recipes-base/samba/samba-3.0.37/samba-3.0.37-CVE-2012-1182.patch
new file mode 100644 (file)
index 0000000..bbe38e4
--- /dev/null
@@ -0,0 +1,59 @@
+From e11637c2c89c2d38963311416c34a4767b19e175 Mon Sep 17 00:00:00 2001
+From: Stefan Metzmacher <metze@samba.org>
+Date: Sat, 17 Mar 2012 01:22:27 +0100
+Subject: [PATCH] s3:librpc/gen_ndr: fix array checks (bug #8815 / CVE-2012-1182)
+
+An Anonymous researcher working with HP's Zero Day Initiative program
+has found this and notified us.
+
+metze
+---
+ source/librpc/gen_ndr/ndr_wkssvc.c |   12 ++++++------
+ 1 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git source/librpc/gen_ndr/ndr_wkssvc.c source/librpc/gen_ndr/ndr_wkssvc.c
+index 2af3587..07cf1a1 100644
+--- source/librpc/gen_ndr/ndr_wkssvc.c
++++ source/librpc/gen_ndr/ndr_wkssvc.c
+@@ -1385,10 +1385,10 @@ NTSTATUS ndr_pull_USER_INFO_0_CONTAINER(struct ndr_pull *ndr, int ndr_flags, str
+                       NDR_PULL_ALLOC_N(ndr, r->user0, ndr_get_array_size(ndr, &r->user0));
+                       _mem_save_user0_1 = NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, r->user0, 0);
+-                      for (cntr_user0_1 = 0; cntr_user0_1 < r->entries_read; cntr_user0_1++) {
++                      for (cntr_user0_1 = 0; cntr_user0_1 < ndr_get_array_size(ndr, &r->user0); cntr_user0_1++) {
+                               NDR_CHECK(ndr_pull_USER_INFO_0(ndr, NDR_SCALARS, &r->user0[cntr_user0_1]));
+                       }
+-                      for (cntr_user0_1 = 0; cntr_user0_1 < r->entries_read; cntr_user0_1++) {
++                      for (cntr_user0_1 = 0; cntr_user0_1 < ndr_get_array_size(ndr, &r->user0); cntr_user0_1++) {
+                               NDR_CHECK(ndr_pull_USER_INFO_0(ndr, NDR_BUFFERS, &r->user0[cntr_user0_1]));
+                       }
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user0_1, 0);
+@@ -1631,10 +1631,10 @@ NTSTATUS ndr_pull_USER_INFO_1_CONTAINER(struct ndr_pull *ndr, int ndr_flags, str
+                       NDR_PULL_ALLOC_N(ndr, r->user1, ndr_get_array_size(ndr, &r->user1));
+                       _mem_save_user1_1 = NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, r->user1, 0);
+-                      for (cntr_user1_1 = 0; cntr_user1_1 < r->entries_read; cntr_user1_1++) {
++                      for (cntr_user1_1 = 0; cntr_user1_1 < ndr_get_array_size(ndr, &r->user1); cntr_user1_1++) {
+                               NDR_CHECK(ndr_pull_USER_INFO_1(ndr, NDR_SCALARS, &r->user1[cntr_user1_1]));
+                       }
+-                      for (cntr_user1_1 = 0; cntr_user1_1 < r->entries_read; cntr_user1_1++) {
++                      for (cntr_user1_1 = 0; cntr_user1_1 < ndr_get_array_size(ndr, &r->user1); cntr_user1_1++) {
+                               NDR_CHECK(ndr_pull_USER_INFO_1(ndr, NDR_BUFFERS, &r->user1[cntr_user1_1]));
+                       }
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user1_1, 0);
+@@ -1953,10 +1953,10 @@ NTSTATUS ndr_pull_wkssvc_NetWkstaTransportCtr0(struct ndr_pull *ndr, int ndr_fla
+                       NDR_PULL_ALLOC_N(ndr, r->array, ndr_get_array_size(ndr, &r->array));
+                       _mem_save_array_1 = NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, r->array, 0);
+-                      for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
++                      for (cntr_array_1 = 0; cntr_array_1 < ndr_get_array_size(ndr, &r->array); cntr_array_1++) {
+                               NDR_CHECK(ndr_pull_wkssvc_NetWkstaTransportInfo0(ndr, NDR_SCALARS, &r->array[cntr_array_1]));
+                       }
+-                      for (cntr_array_1 = 0; cntr_array_1 < r->count; cntr_array_1++) {
++                      for (cntr_array_1 = 0; cntr_array_1 < ndr_get_array_size(ndr, &r->array); cntr_array_1++) {
+                               NDR_CHECK(ndr_pull_wkssvc_NetWkstaTransportInfo0(ndr, NDR_BUFFERS, &r->array[cntr_array_1]));
+                       }
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_array_1, 0);
+-- 
+1.7.4.1
+
diff --git a/meta-openvuplus/recipes-base/samba/samba-3.0.37/uclibc-strlcpy-strlcat.patch b/meta-openvuplus/recipes-base/samba/samba-3.0.37/uclibc-strlcpy-strlcat.patch
new file mode 100644 (file)
index 0000000..b10a1b1
--- /dev/null
@@ -0,0 +1,46 @@
+diff --git source.old/client/mount.cifs.c source/client/mount.cifs.c
+index 3b56e5f..b7a76c6 100644
+--- source.old/client/mount.cifs.c
++++ source/client/mount.cifs.c
+@@ -56,6 +56,10 @@
+  #endif /* _SAMBA_BUILD_ */
+ #endif /* MOUNT_CIFS_VENDOR_SUFFIX */
++#ifdef _SAMBA_BUILD_
++#include "include/config.h"
++#endif
++
+ #ifndef MS_MOVE 
+ #define MS_MOVE 8192 
+ #endif 
+@@ -94,6 +98,8 @@ char * prefixpath = NULL;
+ /* like strncpy but does not 0 fill the buffer and always null
+  *    terminates. bufsize is the size of the destination buffer */
++
++#ifndef HAVE_STRLCPY
+ static size_t strlcpy(char *d, const char *s, size_t bufsize)
+ {
+       size_t len = strlen(s);
+@@ -104,10 +110,13 @@ static size_t strlcpy(char *d, const char *s, size_t bufsize)
+       d[len] = 0;
+       return ret;
+ }
++#endif
+ /* like strncat but does not 0 fill the buffer and always null
+  *    terminates. bufsize is the length of the buffer, which should
+  *       be one more than the maximum resulting string length */
++
++#ifndef HAVE_STRLCAT
+ static size_t strlcat(char *d, const char *s, size_t bufsize)
+ {
+       size_t len1 = strlen(d);
+@@ -126,6 +135,7 @@ static size_t strlcat(char *d, const char *s, size_t bufsize)
+       }
+       return ret;
+ }
++#endif
+ /* BB finish BB
+
diff --git a/meta-openvuplus/recipes-base/samba/samba/01samba-kill b/meta-openvuplus/recipes-base/samba/samba/01samba-kill
new file mode 100644 (file)
index 0000000..41f7781
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+killall -9 smbd
+rm -rf /var/log/log.smbd
+killall -9 nmbd
+rm -rf /var/log/log.nmbd
diff --git a/meta-openvuplus/recipes-base/samba/samba/01samba-start b/meta-openvuplus/recipes-base/samba/samba/01samba-start
new file mode 100644 (file)
index 0000000..ce397ad
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+nmbd -D
+smbd -D
diff --git a/meta-openvuplus/recipes-base/samba/samba/config-lfs.patch b/meta-openvuplus/recipes-base/samba/samba/config-lfs.patch
new file mode 100644 (file)
index 0000000..b37ed69
--- /dev/null
@@ -0,0 +1,47 @@
+Cache the check for Linux LFS support, so it can be prepopulated from 
+the site cache for configure variables for cross-compiling.  Without this,
+samba gets the idea that it can use dirent64 and friends without defining
+the flags it needs to get it, such as _GNU_SOURCE and _LARGEFILE64_SOURCE.
+
+Symptoms of getting the configuration wrong on cross-compile inculde
+warnings such as
+
+  smbd/trans2.c: In function `get_lanman2_dir_entry':
+  smbd/trans2.c:1065: warning: right shift count >= width of type
+
+and errors like
+
+  smbd/vfs.c:630: error: dereferencing pointer to incomplete type
+
+(when trying to dereference dirent64.)
+
+--- source/configure.in.orig   2005-05-29 14:46:18.000000000 -0700
++++ source/configure.in        2005-05-29 14:51:57.000000000 -0700
+@@ -588,7 +588,7 @@
+ # Tests for linux LFS support. Need kernel 2.4 and glibc2.2 or greater support.
+ #
+     *linux*)
+-        AC_MSG_CHECKING([for LFS support])
++       AC_CACHE_CHECK([for LFS support], samba_cv_LINUX_LFS_SUPPORT,[
+         old_CPPFLAGS="$CPPFLAGS"
+         CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
+        AC_TRY_RUN([
+@@ -627,15 +627,14 @@
+        exit(1);
+ #endif
+ }
+-], [LINUX_LFS_SUPPORT=yes], [LINUX_LFS_SUPPORT=no], [LINUX_LFS_SUPPORT=cross])
+-      CPPFLAGS="$old_CPPFLAGS"
+-      if test x$LINUX_LFS_SUPPORT = xyes ; then
++], [samba_cv_LINUX_LFS_SUPPORT=yes], [samba_cv_LINUX_LFS_SUPPORT=no], [samba_cv_LINUX_LFS_SUPPORT=cross])
++      CPPFLAGS="$old_CPPFLAGS"])
++      if test x"$samba_cv_LINUX_LFS_SUPPORT" = x"yes" ; then
+               CPPFLAGS="-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE $CPPFLAGS"
+               AC_DEFINE(_LARGEFILE64_SOURCE, 1, [Whether to enable large file support])
+               AC_DEFINE(_FILE_OFFSET_BITS, 64, [File offset bits])
+               AC_DEFINE(_GNU_SOURCE, 1, [Whether to use GNU libc extensions])
+       fi
+-      AC_MSG_RESULT([$LINUX_LFS_SUPPORT])
+       ;;
+ #
diff --git a/meta-openvuplus/recipes-base/samba/samba/init b/meta-openvuplus/recipes-base/samba/samba/init
new file mode 100644 (file)
index 0000000..cb57b17
--- /dev/null
@@ -0,0 +1,58 @@
+#! /bin/sh 
+#
+# This is an init script for openembedded
+# Copy it to /etc/init.d/samba and type
+# > update-rc.d samba defaults 60
+#
+
+
+smbd=/usr/sbin/smbd
+test -x "$smbd" || exit 0
+nmbd=/usr/sbin/nmbd
+test -x "$nmbd" || exit 0
+
+
+case "$1" in
+  start)
+    echo -n "Starting Samba: smbd"
+    start-stop-daemon --start --quiet --exec $smbd
+    echo -n " nmbd"
+    start-stop-daemon --start --quiet --exec $nmbd
+    echo "."
+    ;;
+  stop)
+    echo -n "Stopping Samba: smbd"
+    start-stop-daemon --stop --quiet --pidfile /var/run/smbd.pid
+    echo -n " nmbd"
+    start-stop-daemon --stop --quiet --pidfile /var/run/nmbd.pid
+    echo "."
+    ;;
+  reload|force-reload)
+    start-stop-daemon --stop --quiet --signal 1 --exec $smbd
+    start-stop-daemon --stop --quiet --signal 1 --exec $nmbd
+    ;;
+  restart)
+    echo -n "Stopping Samba: smbd"
+    start-stop-daemon --stop --quiet --pidfile /var/run/smbd.pid
+    echo -n " nmbd"
+    start-stop-daemon --stop --quiet --pidfile /var/run/nmbd.pid
+    echo ""
+    echo -n "Waiting for samba processes to die off"
+    for i in 1 2 3 ;
+    do
+        sleep 1
+        echo -n "."
+    done
+    echo ""
+    echo -n "Starting Samba: smbd"
+    start-stop-daemon --start --quiet --exec $smbd
+    echo -n " nmbd"
+    start-stop-daemon --start --quiet --exec $nmbd
+    echo "."
+    ;;
+  *)
+    echo "Usage: /etc/init.d/samba {start|stop|reload|restart|force-reload}"
+    exit 1
+esac
+
+exit 0
\ No newline at end of file
diff --git a/meta-openvuplus/recipes-base/samba/samba/quota.patch b/meta-openvuplus/recipes-base/samba/samba/quota.patch
new file mode 100644 (file)
index 0000000..6f42ff8
--- /dev/null
@@ -0,0 +1,11 @@
+--- lib/sysquotas_4A.c.old     2005-07-03 17:16:00.000000000 +0200
++++ lib/sysquotas_4A.c 2005-07-03 17:10:09.000000000 +0200
+@@ -28,6 +28,8 @@
+ /* long quotactl(int cmd, char *special, qid_t id, caddr_t addr) */
+ /* this is used by: HPUX,IRIX */
++ #define _LINUX_QUOTA_VERSION 1
++
+ #ifdef HAVE_SYS_TYPES_H
+ #include <sys/types.h>
+ #endif
diff --git a/meta-openvuplus/recipes-base/samba/samba/smb.conf b/meta-openvuplus/recipes-base/samba/samba/smb.conf
new file mode 100644 (file)
index 0000000..83ac00d
--- /dev/null
@@ -0,0 +1,29 @@
+[global]
+   load printers = no
+   guest account = root
+   log file = /tmp/smb.log
+   log level = 1
+   security = share
+   server string = Dreambox %h network services
+   workgroup = Dream
+   netbios name = %h
+   case sensitive=yes
+   preserve case=yes
+   short preserve case=yes
+   socket options = TCP_NODELAY
+   preferred master = no ;(These stop the machine being master browser, which means that it doesn't waste time there.)
+   oplocks = no
+
+[Configuration]
+  comment = Configuration files - take care!
+  path = /var
+  read only = no
+  public = yes
+  guest ok = yes
+
+[Harddisk]
+  comment = The harddisk
+  path = /media/hdd
+  read only = no
+  public = yes
+  guest ok = yes
diff --git a/meta-openvuplus/recipes-base/samba/samba/tdb.pc b/meta-openvuplus/recipes-base/samba/samba/tdb.pc
new file mode 100644 (file)
index 0000000..6307a20
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=/usr
+exec_prefix=/usr
+libdir=/usr/lib
+includedir=/usr/include
+
+Name: tdb
+Description: A trivial database
+Version: 1.1.2
+Libs: -L${libdir} -ltdb
+Cflags: -I${includedir} 
+URL: http://tdb.samba.org/
diff --git a/meta-openvuplus/recipes-base/samba/samba/volatiles.03_samba b/meta-openvuplus/recipes-base/samba/samba/volatiles.03_samba
new file mode 100644 (file)
index 0000000..469bc9e
--- /dev/null
@@ -0,0 +1,2 @@
+# <type> <owner> <group> <mode> <path> <linksource>
+d root root 0755 /var/log/samba none
diff --git a/meta-openvuplus/recipes-base/samba/samba_3.0.37.bb b/meta-openvuplus/recipes-base/samba/samba_3.0.37.bb
new file mode 100644 (file)
index 0000000..eb05c71
--- /dev/null
@@ -0,0 +1,20 @@
+require recipes-connectivity/samba/samba.inc
+require recipes-connectivity/samba/samba-basic.inc
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://../COPYING;md5=8ca43cbc842c2336e835926c2166c28b"
+PR = "r2"
+
+SRC_URI += "file://configure.patch \
+            file://kernel-oplocks.patch \
+            file://0001-s3-schannel-client-Push-the-domain-and-netbios-name-.patch \
+            file://samba-3.0-CVE-2012-0870.patch \
+            file://samba-3.0.37-CVE-2012-1182.patch"
+SRC_URI_append_linux-uclibc        = "file://uclibc-strlcpy-strlcat.patch"
+SRC_URI_append_linux-uclibceabi = "file://uclibc-strlcpy-strlcat.patch"
+
+EXTRA_OECONF += "\
+       SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes \
+       "
+
+SRC_URI[md5sum] = "11ed2bfef4090bd5736b194b43f67289"
+SRC_URI[sha256sum] = "bb67c0e13d4ccbd84b9200c8739393fdd9b3145b5aad216934dc670f0fcea266"
diff --git a/meta-openvuplus/recipes-base/samba/samba_3.0.37.bbappend b/meta-openvuplus/recipes-base/samba/samba_3.0.37.bbappend
new file mode 100644 (file)
index 0000000..c6512c2
--- /dev/null
@@ -0,0 +1,31 @@
+PR .= "-vuplus0"
+
+SRC_URI += " \
+       file://01samba-kill \
+       file://01samba-start \
+"
+
+PACKAGES =+ "smbfs smbfs-doc sambaserver libpopt libtalloc"
+
+FILES_smbfs = "${bindir}/smbmount ${bindir}/smbumount ${bindir}/smbmnt ${base_sbindir}/mount.smbfs ${base_sbindir}/mount.smb"
+FILES_smbfs-doc = "${mandir}/man8/smbmount.8 ${mandir}/man8/smbumount.8 ${mandir}/man8/smbmnt.8"
+FILES_sambaserver = "${sbindir}/smbd ${sbindir}/nmbd ${libdir}/charset/*.so ${libdir}/*.dat \
+       ${sysconfdir}/samba/smb.conf ${sysconfdir}/samba/private \
+       ${sysconfdir}/network/if-up.d/01samba-start ${sysconfdir}/network/if-down.d/01samba-kill"
+FILES_libpopt = "${libdir}/libpopt.so.*"
+FILES_libtalloc = "${libdir}/libtalloc.so.*"
+
+CONFFILES_${PN} = ""
+CONFFILES_sambaserver = "${sysconfdir}/samba/smb.conf"
+
+do_install_prepend() {
+       install -c -m 644 ${WORKDIR}/smb.conf ../examples/smb.conf.default
+}
+
+do_install_append() {
+       install -d ${D}${sysconfdir}/samba/private
+       install -d ${D}${sysconfdir}/network/if-down.d
+       install -m 0755 ${WORKDIR}/01samba-kill ${D}${sysconfdir}/network/if-down.d
+       install -d ${D}${sysconfdir}/network/if-up.d
+       install -m 0755 ${WORKDIR}/01samba-start ${D}${sysconfdir}/network/if-up.d
+}
diff --git a/meta-openvuplus/recipes-base/smartmontools/smartmontools.inc b/meta-openvuplus/recipes-base/smartmontools/smartmontools.inc
new file mode 100644 (file)
index 0000000..c1ded3a
--- /dev/null
@@ -0,0 +1,10 @@
+SECTION = "console/utils"
+SUMMARY = "Control and monitor storage systems using S.M.A.R.T."
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=94d55d512a9ba36caa9b7df079bae19f"
+INC_PR = "r1"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/smartmontools/smartmontools-${PV}.tar.gz"
+S = "${WORKDIR}/smartmontools-${PV}"
+
+inherit autotools
diff --git a/meta-openvuplus/recipes-base/smartmontools/smartmontools_5.42.bb b/meta-openvuplus/recipes-base/smartmontools/smartmontools_5.42.bb
new file mode 100644 (file)
index 0000000..98ebb37
--- /dev/null
@@ -0,0 +1,6 @@
+PR = "${INC_PR}.0"
+
+SRC_URI[md5sum] = "4460bf9a79a1252ff5c00ba52cf76b2a"
+SRC_URI[sha256sum] = "b664d11e814e114ce3a32a4fa918c9e649c684e2897c007b2a8b92574decc374"
+
+require smartmontools.inc
diff --git a/meta-openvuplus/recipes-base/tasks/task-vuplus-base.bb b/meta-openvuplus/recipes-base/tasks/task-vuplus-base.bb
new file mode 100644 (file)
index 0000000..248b97d
--- /dev/null
@@ -0,0 +1,8 @@
+PR = "${INC_PR}.0"
+
+RDEPENDS_${PN} = " \
+  dropbear-xinetd \
+  vsftpd-xinetd \
+"
+
+require task-vuplus-base.inc
diff --git a/meta-openvuplus/recipes-base/tasks/task-vuplus-base.inc b/meta-openvuplus/recipes-base/tasks/task-vuplus-base.inc
new file mode 100644 (file)
index 0000000..3f27c99
--- /dev/null
@@ -0,0 +1,76 @@
+SUMMARY = "Vuplus: Base Task for Vuplus."
+SECTION = "vuplus/base"
+LICENSE = "CLOSED"
+INC_PR = "r0"
+
+inherit task
+
+VUPLUS_BASE_ESSENTIAL = "\
+  autofs \
+  vuplus-compat \
+  dreambox-keymaps \
+  e2fsprogs-e2fsck \
+  e2fsprogs-mke2fs \
+  fakelocale \
+  opkg \
+  timezones-alternative \
+  tuxbox-common \
+  util-linux-sfdisk \
+  vsftpd \
+  mtd-utils \
+  hdparm \
+  usbtunerhelper \
+  ${VUPLUS_FIRMWARE_DVB} \
+"
+
+VUPLUS_FIRMWARE_DVB = " \
+  firmware-dvb-af9005 \
+  firmware-dvb-fe-af9013 \
+  firmware-dvb-usb-af9015 \
+  firmware-dvb-usb-af9035 \
+  firmware-dvb-usb-avertv-a800 \
+  firmware-dvb-usb-dib0700 \
+  firmware-dvb-usb-dibusb \
+  firmware-dvb-usb-digitv \
+  firmware-dvb-usb-nova-t-usb2 \
+  firmware-dvb-usb-sms1xxx-nova-dvbt \
+  firmware-dvb-usb-sms1xxx-hcw-dvbt \
+  firmware-dvb-usb-ttusb-budget \
+  firmware-dvb-usb-umt-010 \
+  firmware-dvb-usb-xc5000 \
+  firmware-dvb-usb-wt220u-zl0353 \
+  firmware-drxd-a2 \
+"
+
+# chang : use xinetd instead of netkit-base.
+# chang : mkfs-ubifs and mkfs-jffs2 are included in mtd-utils.
+
+VUPLUS_BASE_RECOMMENDS = "\
+  dropbear \
+  vuplus-vucamd \
+  sambaserver \
+  openvpn \
+  zeroconf \
+"
+
+#VUPLUS_BASE_RECOMMENDS_append_vuuno = " vuplus-fpga-update"
+#VUPLUS_BASE_RECOMMENDS_append_vuultimo = " vuplus-fpga-update"
+
+VUPLUS_BASE_OPTIONAL_RECOMMENDS = "\
+  hddtemp \
+  joe \
+  mc \
+  ncdu \
+  ppp \
+  smartmontools \
+  avahi-daemon \
+"
+
+RDEPENDS_${PN} += "\
+        ${VUPLUS_BASE_ESSENTIAL} \
+"
+
+RRECOMMENDS_${PN} += "\
+        ${VUPLUS_BASE_RECOMMENDS} \
+        ${VUPLUS_BASE_OPTIONAL_RECOMMENDS} \
+"
diff --git a/meta-openvuplus/recipes-base/timezones/files/GPL-1.0 b/meta-openvuplus/recipes-base/timezones/files/GPL-1.0
new file mode 100644 (file)
index 0000000..9d4ef93
--- /dev/null
@@ -0,0 +1,252 @@
+
+GNU General Public License, version 1
+
+                    GNU GENERAL PUBLIC LICENSE
+                     Version 1, February 1989
+
+ Copyright (C) 1989 Free Software Foundation, Inc.
+                    51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The license agreements of most software companies try to keep users
+at the mercy of those companies.  By contrast, our General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  The
+General Public License applies to the Free Software Foundation`s
+software and to any other program whose authors commit to using it.
+You can use it for your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Specifically, the General Public License is designed to make
+sure that you have the freedom to give away or sell copies of free
+software, that you receive source code or can get it if you want it,
+that you can change the software or use pieces of it in new free
+programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of a such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must tell them their rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author`s protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors` reputations.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any program or other work which
+contains a notice placed by the copyright holder saying it may be
+distributed under the terms of this General Public License.  The
+"Program", below, refers to any such program or work, and a "work based
+on the Program" means either the Program or any work containing the
+Program or a portion of it, either verbatim or with modifications.  Each
+licensee is addressed as "you".
+
+  1. You may copy and distribute verbatim copies of the Program`s source
+code as you receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice and
+disclaimer of warranty; keep intact all the notices that refer to this
+General Public License and to the absence of any warranty; and give any
+other recipients of the Program a copy of this General Public License
+along with the Program.  You may charge a fee for the physical act of
+transferring a copy.
+
+  2. You may modify your copy or copies of the Program or any portion of
+it, and copy and distribute such modifications under the terms of Paragraph
+1 above, provided that you also do the following:
+
+    a) cause the modified files to carry prominent notices stating that
+    you changed the files and the date of any change; and
+
+    b) cause the whole of any work that you distribute or publish, that
+    in whole or in part contains the Program or any part thereof, either
+    with or without modifications, to be licensed at no charge to all
+    third parties under the terms of this General Public License (except
+    that you may choose to grant warranty protection to some or all
+    third parties, at your option).
+
+    c) If the modified program normally reads commands interactively when
+    run, you must cause it, when started running for such interactive use
+    in the simplest and most usual way, to print or display an
+    announcement including an appropriate copyright notice and a notice
+    that there is no warranty (or else, saying that you provide a
+    warranty) and that users may redistribute the program under these
+    conditions, and telling the user how to view a copy of this General
+    Public License.
+
+    d) You may charge a fee for the physical act of transferring a
+    copy, and you may at your option offer warranty protection in
+    exchange for a fee.
+
+Mere aggregation of another independent work with the Program (or its
+derivative) on a volume of a storage or distribution medium does not bring
+the other work under the scope of these terms.
+
+  3. You may copy and distribute the Program (or a portion or derivative of
+it, under Paragraph 2) in object code or executable form under the terms of
+Paragraphs 1 and 2 above provided that you also do one of the following:
+
+    a) accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of
+    Paragraphs 1 and 2 above; or,
+
+    b) accompany it with a written offer, valid for at least three
+    years, to give any third party free (except for a nominal charge
+    for the cost of distribution) a complete machine-readable copy of the
+    corresponding source code, to be distributed under the terms of
+    Paragraphs 1 and 2 above; or,
+
+    c) accompany it with the information you received as to where the
+    corresponding source code may be obtained.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form alone.)
+
+Source code for a work means the preferred form of the work for making
+modifications to it.  For an executable file, complete source code means
+all the source code for all modules it contains; but, as a special
+exception, it need not include source code for modules which are standard
+libraries that accompany the operating system on which the executable
+file runs, or for standard header files or definitions files that
+accompany that operating system.
+
+  4. You may not copy, modify, sublicense, distribute or transfer the
+Program except as expressly provided under this General Public License.
+Any attempt otherwise to copy, modify, sublicense, distribute or transfer
+the Program is void, and will automatically terminate your rights to use
+the Program under this License.  However, parties who have received
+copies, or rights to use copies, from you under this General Public
+License will not have their licenses terminated so long as such parties
+remain in full compliance.
+
+  5. By copying, distributing or modifying the Program (or any work based
+on the Program) you indicate your acceptance of this license to do so,
+and all its terms and conditions.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the original
+licensor to copy, distribute or modify the Program subject to these
+terms and conditions.  You may not impose any further restrictions on the
+recipients` exercise of the rights granted herein.
+
+  7. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of the license which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+the license, you may choose any version ever published by the Free Software
+Foundation.
+
+  8. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                            NO WARRANTY
+
+  9. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  10. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+        Appendix: How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to humanity, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+  To do so, attach the following notices to the program.  It is safest to
+attach them to the start of each source file to most effectively convey
+the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program`s name and a brief idea of what it does.>
+    Copyright (C) 19yy  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 1, or (at your option)
+    any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) 19xx name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w`.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c` for details.
+
+The hypothetical commands `show w` and `show c` should show the
+appropriate parts of the General Public License.  Of course, the
+commands you use may be called something other than `show w` and `show
+c`; they could even be mouse-clicks or menu items--whatever suits your
+program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  program `Gnomovision` (a program to direct compilers to make passes
+  at assemblers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+That`s all there is to it!
+
diff --git a/meta-openvuplus/recipes-base/timezones/files/zoneinfo.tar.bz2 b/meta-openvuplus/recipes-base/timezones/files/zoneinfo.tar.bz2
new file mode 100644 (file)
index 0000000..19fa928
Binary files /dev/null and b/meta-openvuplus/recipes-base/timezones/files/zoneinfo.tar.bz2 differ
diff --git a/meta-openvuplus/recipes-base/timezones/timezones-alternative.bb b/meta-openvuplus/recipes-base/timezones/timezones-alternative.bb
new file mode 100644 (file)
index 0000000..0fb50f3
--- /dev/null
@@ -0,0 +1,25 @@
+DESCRIPTION = "Timezone data, alternative"
+SECTION = "base"
+PRIORITY = "optional"
+MAINTAINER = "Felix Domke <tmbinc@elitedvb.net>"
+LICENSE = "GPL"
+LIC_FILES_CHKSUM = "file://${THISDIR}/files/GPL-1.0;md5=e9e36a9de734199567a4d769498f743d"
+
+PV = "2008i"
+PR = "r0"
+
+SRC_URI = "file://zoneinfo.tar.bz2"
+S = "${WORKDIR}/zoneinfo"
+
+FILES_${PN} = "usr/share/zoneinfo/[A-Z]*"
+PACKAGE_ARCH = "all"
+
+do_install() {
+       install -d ${D}/usr/share/zoneinfo/
+       
+       for file in ${S}/*
+       do
+               [ -f $file ] && install -m 644 "$file" ${D}/usr/share/zoneinfo/
+       done;
+       true;
+}
diff --git a/meta-openvuplus/recipes-base/tuxbox/tuxbox-common_0.1.bb b/meta-openvuplus/recipes-base/tuxbox/tuxbox-common_0.1.bb
new file mode 100644 (file)
index 0000000..b3d6998
--- /dev/null
@@ -0,0 +1,18 @@
+SUMMARY = "Tuxbox common files"
+LICENSE = "CLOSED"
+SRCREV = "77ff3efbac5eb01c2fc914ba8fb99374d0970ff5"
+PR = "r1"
+
+inherit opendreambox-git
+
+do_install() {
+        install -d ${D}${sysconfdir}
+        install -d ${D}${sysconfdir}/tuxbox
+        install -m 0644 timezone.xml ${D}${sysconfdir}
+        install -m 0644 satellites.xml ${D}${sysconfdir}/tuxbox
+        install -m 0644 terrestrial.xml ${D}${sysconfdir}/tuxbox
+}
+
+FILES_${PN} = "${sysconfdir}"
+
+OPENDREAMBOX_PROJECT = "obi/enigma2-xml-data"
diff --git a/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp.bb b/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp.bb
new file mode 100644 (file)
index 0000000..cd08ee9
--- /dev/null
@@ -0,0 +1,32 @@
+SUMMARY = "TuxCom for 800/7025/8000/32bit framebuffer HD Autosize"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://tuxcom.c;endline=23;md5=33c69eb2b4a436ea9e00355b66c21dd9"
+DEPENDS = "freetype"
+RDEPENDS_${PN} = "enigma2"
+SRCDATE = "20070410"
+PV = "1.16+cvs${SRCDATE}"
+PR = "r0"
+
+SRC_URI = "cvs://anoncvs@cvs.tuxbox.org/cvs/tuxbox;module=apps/tuxbox/plugins/tuxcom;method=ext \
+        file://makefiles.diff \
+        file://add_font.diff \
+        file://32bpp.diff \
+        file://add_e2_plugin.diff \
+        file://largefile.diff \
+        file://support_newer_freetype.diff \
+        file://fix_smstext.diff \
+"
+
+S = "${WORKDIR}/tuxcom"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-target=native"
+
+do_configure_prepend() {
+        touch ${S}/python/__init__.py
+}
+
+FILES_${PN} = "${bindir}/tuxcom ${libdir}/enigma2 /etc/tuxcom ${datadir}/fonts/pakenham.ttf"
+
+CPPFLAGS += "-DHAVE_DREAMBOX_HARDWARE -DDREAMBOX"
diff --git a/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/32bpp.diff b/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/32bpp.diff
new file mode 100644 (file)
index 0000000..474df99
--- /dev/null
@@ -0,0 +1,1136 @@
+diff -Naur tuxcom.ori/tuxcom.c tuxcom/tuxcom.c
+--- tuxcom.ori/tuxcom.c        2009-01-06 00:12:19.000000000 +0100
++++ tuxcom/tuxcom.c    2009-01-05 21:10:35.000000000 +0100
+@@ -27,7 +27,7 @@
+  * GetRCCode  (Code from Tuxmail)
+  ******************************************************************************/
+-#ifndef HAVE_DREAMBOX_HARDWARE
++
+ int GetRCCode(int mode)
+ {
+@@ -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)
+               {
+@@ -63,9 +64,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 +119,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 +235,8 @@
+       FT_Vector kerning;
+       FT_Error error;
++      currentchar=currentchar & 0xFF;
++
+       if (currentchar == '\r') // display \r in windows edited files
+       {
+               if(color != -1)
+@@ -331,19 +252,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 +293,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 +398,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 +455,7 @@
+  * plugin_exec                                                                *
+  ******************************************************************************/
+-void plugin_exec(PluginParam *par)
++int main()
+ {
+       FT_Error error;
+@@ -552,9 +467,69 @@
+       //get params
+-      fb = rc = sx = ex = sy = ey = -1;
++      kb = fb = sx = ex = sy = ey = -1;
+-      for(; par; par = par->next)
++      /* open Framebuffer */
++      fb=open("/dev/fb0", O_RDWR);
++
++      /* open Remote Control */
++      int cnt=0, rc_num=0;
++      rc[0]=rc[1]=-1;
++      
++      while(rc_num < 2)
++      {
++              struct stat s;
++              char tmp[128];
++              sprintf(tmp, "/dev/input/event%d", cnt);
++              if (stat(tmp, &s))
++                      break;
++              /* open Remote Control */
++              if ((rc[rc_num]=open(tmp, O_RDONLY | O_EXCL | O_NONBLOCK)) == -1)
++              {
++                      perror("TuxCom <open remote control>");
++                      return 0;
++              }
++              if (ioctl(rc[rc_num], EVIOCGNAME(128), tmp) < 0)
++                      perror("EVIOCGNAME failed");
++              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);
++
++      /* 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)
+       {
+               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 +538,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)
+       {
+@@ -574,18 +547,27 @@
+       }
+       //init framebuffer
+-      if(ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1)
++
++      if(ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1)
+       {
+-              printf("TuxCom <FBIOGET_FSCREENINFO failed>\n");
++              printf("TuxCom <FBIOGET_VSCREENINFO failed>\n");
+               return;
+       }
+-      if(ioctl(fb, FBIOGET_VSCREENINFO, &var_screeninfo) == -1)
++      if (var_screeninfo.xres != 720)
+       {
+-              printf("TuxCom <FBIOGET_VSCREENINFO failed>\n");
++          printf("TuxCom <set Autosize\n");
++          ex = var_screeninfo.xres - 50;
++          ey = var_screeninfo.yres - 50;
++      }
++
++      if(ioctl(fb, FBIOGET_FSCREENINFO, &fix_screeninfo) == -1)
++      {
++              printf("TuxCom <FBIOGET_FSCREENINFO failed>\n");
+               return;
+       }
++
+       if(ioctl(fb, FBIOPUTCMAP, &colormap) == -1)
+       {
+               printf("TuxCom <FBIOPUTCMAP failed>\n");
+@@ -643,17 +625,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(3*fix_screeninfo.line_length*var_screeninfo.yres)))
+       {
+               printf("TuxCom <allocating of Backbuffer failed>\n");
+               FTC_Manager_Done(manager);
+@@ -661,11 +640,11 @@
+               munmap(lfb, fix_screeninfo.smem_len);
+               return;
+       }
+-      memset(lbb, 0, var_screeninfo.xres*var_screeninfo.yres);
++      memset(lbb, 0, 3*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 +657,7 @@
+               printf("TuxCom <open SAA>");
+               return;
+       }
+-
++*/
+       //init data
+@@ -687,8 +666,8 @@
+       curvisibility = 0;
+       singleview = 0;
+       textuppercase = 0;
+-      screenmode=0;
+       filesize_in_byte = BTN_NO; // show human readable filesize
++      screenmode=0;
+       langselect = BTN_AUTO; // automatic
+       autosave = BTN_ASK; // ask on exit
+@@ -725,22 +704,18 @@
+       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");
+       // lock keyboard-conversions, this is done by the plugin itself
+       fclose(fopen(KBLCKFILE,"w"));
+-#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;
+@@ -767,20 +742,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:
+@@ -868,13 +834,13 @@
+                                                       break;
+                                               }
+                                               else
+-                                              {                                                       
++                                              {
+                                                       char scriptfile[FILENAME_MAX];
+                                                       char* expos = strrchr(pfe->name,'.');
+                                                       if (expos && strlen(expos) > 0)
+                                                       {
+                                                               struct stat st;
+-                                                              sprintf(scriptfile,"%s%s%s",CONFIGDIR, "/tuxcom/",expos+1);
++                                                              sprintf(scriptfile,"%s%s%s","/etc/tuxbox/",expos+1);
+                                                               if (lstat(scriptfile,&st) != -1)
+                                                               {
+                                                                       char szCmd[4000];
+@@ -1361,7 +1327,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);
+@@ -1380,12 +1346,17 @@
+       unlink(KBLCKFILE);
+       //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);
++      if (rc[0] != -1)
++                      close(rc[0]);
++      if (rc[1] != -1)
++                      close(rc[1]);
++      close(kb);
+       ClearEntries   (LEFTFRAME );
+       ClearEntries   (RIGHTFRAME);
+@@ -1393,9 +1364,6 @@
+       ClearMarker    (RIGHTFRAME);
+       ClearZipEntries(LEFTFRAME );
+       ClearZipEntries(RIGHTFRAME);
+-#ifdef HAVE_DREAMBOX_HARDWARE
+-      if (kb != -1) close(kb);
+-#endif
+       return;
+ }
+@@ -1447,7 +1415,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);
+ }
+@@ -1458,7 +1426,7 @@
+ void RenderFrame(int frame)
+ {
+-      if (singleview && curframe != frame)
++         if (singleview && curframe != frame)
+               return;
+       int row = 0;
+@@ -1742,7 +1710,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  ));
+@@ -1753,7 +1721,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    ));
+@@ -1770,7 +1738,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;
+@@ -1853,7 +1821,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);
+ }
+ /******************************************************************************
+@@ -1882,15 +1850,9 @@
+       RenderBox((viewx-wi)/2 , (viewy-he) /2, viewx-(viewx-wi)/2, viewy-(viewy-he)/2, GRID, WHITE);
+       RenderString(pfe->name,(viewx-wi)/2+  2* BORDERSIZE , (viewy-he)/2 + 2*BORDERSIZE + FONTHEIGHT_BIG-FONT_OFFSET , wi, CENTER, BIG, WHITE);
+-      char sizeString[200];
+-      GetSizeString(sizeString,pfe->fentry.st_size,1);
+-      sprintf(sizeString,"%s byte(s)",sizeString);
+-
+-      RenderString(sizeString,(viewx-wi)/2+  2* BORDERSIZE , (viewy-he)/2 + 2*BORDERSIZE + 2*FONTHEIGHT_BIG-FONT_OFFSET , wi, CENTER, BIG, WHITE);
+-
+-      RenderString(info[INFO_ACCESSED*NUM_LANG+language],(viewx-wi)/2+ 3* BORDERSIZE , (viewy-he)/2 + 6*BORDERSIZE + (3)*FONTHEIGHT_BIG-FONT_OFFSET , wi, LEFT, BIG, WHITE);
+-      RenderString(info[INFO_MODIFIED*NUM_LANG+language],(viewx-wi)/2+ 3* BORDERSIZE , (viewy-he)/2 + 6*BORDERSIZE + (4)*FONTHEIGHT_BIG-FONT_OFFSET , wi, LEFT, BIG, WHITE);
+-      RenderString(info[INFO_CREATED *NUM_LANG+language],(viewx-wi)/2+ 3* BORDERSIZE , (viewy-he)/2 + 6*BORDERSIZE + (5)*FONTHEIGHT_BIG-FONT_OFFSET , wi, LEFT, BIG, WHITE);
++      RenderString(info[INFO_ACCESSED*NUM_LANG+language],(viewx-wi)/2+ 3* BORDERSIZE , (viewy-he)/2 + 6*BORDERSIZE + (2)*FONTHEIGHT_BIG-FONT_OFFSET , wi, LEFT, BIG, WHITE);
++      RenderString(info[INFO_MODIFIED*NUM_LANG+language],(viewx-wi)/2+ 3* BORDERSIZE , (viewy-he)/2 + 6*BORDERSIZE + (3)*FONTHEIGHT_BIG-FONT_OFFSET , wi, LEFT, BIG, WHITE);
++      RenderString(info[INFO_CREATED *NUM_LANG+language],(viewx-wi)/2+ 3* BORDERSIZE , (viewy-he)/2 + 6*BORDERSIZE + (4)*FONTHEIGHT_BIG-FONT_OFFSET , wi, LEFT, BIG, WHITE);
+       char tm[100];
+       strftime(tm,100,info[INFO_DATETIME *NUM_LANG+language],localtime(&pfe->fentry.st_atime));
+       RenderString(tm,viewx/2- 2* BORDERSIZE , (viewy-he)/2 + 6*BORDERSIZE + (3)*FONTHEIGHT_BIG-FONT_OFFSET , wi/2, RIGHT, BIG, WHITE);
+@@ -2000,7 +1962,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;
+               }
+@@ -2041,7 +2003,7 @@
+                               continue;
+                       *p=0;
+                       p++;
+-                      p1=strchr(p,'\r'); // für Windows-Nutzer: '\r' überlesen
++                      p1=strchr(p,'\r'); // für Windows-Nutzer: '\r' überlesen
+                       if (p1 != NULL) *p1 = 0x00;
+                       if      ( !strcmp(line,"host") ) strcpy(entries[0], p);
+                       else if ( !strcmp(line,"port") ) strcpy(entries[1], p);
+@@ -2144,7 +2106,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)
+@@ -2195,10 +2157,10 @@
+                               sprintf(szEntry,mainmenu[i*NUM_LANG+language],mbox[filesize_in_byte*NUM_LANG+language]);
+                               break;
+                       case 5: // set language
+-                              sprintf(szEntry,mainmenu[i*NUM_LANG+language],mbox[langselect      *NUM_LANG+language]);
++                              sprintf(szEntry,mainmenu[i*NUM_LANG+language],mbox[langselect*NUM_LANG+language]);
+                               break;
+                       case 6: // save settings
+-                              sprintf(szEntry,mainmenu[i*NUM_LANG+language],mbox[autosave        *NUM_LANG+language]);
++                              sprintf(szEntry,mainmenu[i*NUM_LANG+language],mbox[autosave  *NUM_LANG+language]);
+                               break;
+                       default:
+                               strcpy(szEntry,mainmenu[i*NUM_LANG+language]);
+@@ -2206,7 +2168,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);
+@@ -2225,8 +2187,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();
+@@ -2342,7 +2304,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);
+@@ -2439,7 +2401,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);
+@@ -2755,7 +2717,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;
+@@ -3808,7 +3770,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)
+                       {
+@@ -4227,7 +4189,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)
+                       {
+@@ -4470,7 +4432,7 @@
+                               continue;
+                       *p=0;
+                       p++;
+-                      p1=strchr(p,'\r'); // für Windows-Nutzer: '\r' überlesen
++                      p1=strchr(p,'\r'); // für Windows-Nutzer: '\r' überlesen
+                       if (p1 != NULL) *p1 = 0x00;
+                       if      ( !strcmp(line,"host") ) strcpy(finfo[curframe].ftphost, p);
+                       else if ( !strcmp(line,"port") ) finfo[curframe].ftpport = atoi(p);
+@@ -4733,7 +4695,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);
+@@ -4754,7 +4716,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);
+@@ -4812,7 +4774,7 @@
+       if (filesize_in_byte == BTN_NO && !forcebytes)
+       {               
+-              if (size >= (unsigned long long)1024*1024*1024) // we use "real" GigaBytes ;)
++              if (size >= (unsigned long long )1024*1024*1024) // we use "real" GigaBytes ;)
+               {
+                       sprintf(sizeString,"%.2f GB",((double)size)/(double)(1024*1024*1024));
+                       return;
+@@ -4827,7 +4789,7 @@
+       {
+               sprintf(sizeString,".%03lu%s",(unsigned long)(tmp % (unsigned long long)1000), sztmp);
+               strcpy(sztmp,sizeString);
+-              tmp /= (unsigned long long)1000;
++              tmp /= (unsigned long long )1000;
+       }
+       sprintf(sizeString,"%lu%s",(unsigned long)tmp,sztmp);
+@@ -4852,10 +4814,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
+       {
+@@ -4979,10 +4941,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 -Naur tuxcom.ori/tuxcom.h tuxcom/tuxcom.h
+--- tuxcom.ori/tuxcom.h        2009-01-06 00:12:19.000000000 +0100
++++ tuxcom/tuxcom.h    2009-01-05 18:31:06.000000000 +0100
+@@ -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,16 +53,14 @@
+ #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
+-#define MENUSIZE       59
++#define MENUSIZE       63
+ #define MINBOX        380
+ #define BUTTONWIDTH   114
+ #define BUTTONHEIGHT  30
+@@ -72,72 +70,15 @@
+ #define RIGHTFRAME   1
+ #define DEFAULT_PATH "/"
+-#define charset " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789#!$%&?*()@\\/=<>+-_,.;:"
++#define charset " aäbcdefghijklmnoöpqrstuüvwxyzAÄBCDEFGHIJKLMNOÖPQRSTUÜVWXYZ0123456789#!$%&?*()@\\/=<>+-_,.;:¤^°][}{'`µ|"
++#define _FILE_OFFSET_BITS 64
+ #define FILEBUFFER_SIZE (100 * 1024) // Edit files up to 100k
+ #define FTPBUFFER_SIZE  (200 * 1024) // FTP Download Buffer size
+-#define MSG_VERSION    "Tuxbox Commander Version 1.16"
++#define MSG_VERSION    "Tuxbox Commander E2 Ver. 1.16\n"
+ #define MSG_COPYRIGHT  "© dbluelle 2004-2007"
+-#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'
+@@ -225,7 +166,7 @@
+ int rcaltgrtable[] =
+ {
+    0x00, RC_ESC, 0x00, '²', '³', 0x00, 0x00, 0x00, '{', '[', ']', '}', '\\', 0x00, 0x00, 0x00,
+-   '@',  0x00, '\80', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, '~', RC_RET1, RC_STRG, 0x00, 0x00,
++   '@',  0x00, '¤', 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, '~', RC_RET1, RC_STRG, 0x00, 0x00,
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, RC_LSHIFT, 0x00, 0x00, 0x00, 0x00, 0x00,
+    0x00,  0x00, 'µ', 0x00, 0x00, 0x00, RC_RSHIFT, 0x00, RC_ALT, 0x20, RC_CAPSLOCK,RC_F1,RC_F2,RC_F3,RC_F4,RC_F5,
+    RC_F6,RC_F7,RC_F8,RC_F9,RC_F10,RC_NUM,RC_ROLLEN,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+@@ -247,13 +188,13 @@
+ #define KBC_PAGEDOWN  0x0C
+ #define KBC_RETURN    0x0D
+-#endif
+ #define KBLCKFILE "/tmp/keyboard.lck"                                                                         //! file to lock keyboard-conversion
+ //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"
+@@ -266,11 +207,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;
+@@ -297,6 +234,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};
+@@ -307,9 +252,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;
+@@ -317,7 +260,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, singleview;
+@@ -339,8 +282,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, filesize_in_byte;
+@@ -466,13 +409,13 @@
+ char *numberchars[] = {  "0#!$%&?*()@\\",
+                                "1/=<>+-_,.;:" ,
+-                               "abc2",
+-                               "def3",
++                               "aäbc2",
++                               "de¤f3",
+                                "ghi4",
+                                "jkl5",
+-                               "mno6",
++                               "mnoö6",
+                                "pqrs7",
+-                               "tuv8",
++                               "tuüv8",
+                                "wxyz9" };
+ char *info[]   = { "(select 'hidden' to copy in background)"               ,"('versteckt' wählen zum Kopieren im Hintergrund)"              ,"(Seleziona 'nascosto' per copiare in background)"              ,"(välj 'gömd' för att kopiera i bakgrunden)"        ,"(Seleccionar 'Escondido' para copiar em background)"  ,
+@@ -599,7 +542,7 @@
+                      "toggle 16:9 mode"                   , "16:9-Modus setzen"                         ,"Passa a modalità 16:9"                     ,"växla 16:9 läge"                     ,"Mudar para 16:9"                    ,
+                      "set password"                       , "Passwort setzen"                           ,"Imposta password"                          ,"sätt lösenord"                       ,"Por password"                       ,
+                      "show filesizes in byte <%s>"        , "Dateigrössen in Byte anzeigen <%s>"        ,"show filesizes in byte <%s>"               ,"show filesizes in byte <%s>"         ,"show filesizes in byte <%s>"        ,
+-                     "language/Sprache/Lingua/Språk: <%s>", "Sprache/language/Lingua/Språk: <%s>"       ,"Lingua/language/Sprache/Språk: <%s>"       ,"Lingua/language/Sprache/Språk: <%s>" ,"Lingua/language/Sprache/Språk: <%s>",
++                     "Language/Sprache/Lingua/Språk: <%s>", "Sprache/Language/Lingua/Språk: <%s>"       ,"Lingua/Language/Sprache/Språk: <%s>"       ,"Lingua/Language/Sprache/Språk: <%s>" ,"Lingua/Language/Sprache/Språk: <%s>",
+                      "save settings on exit: <%s>"        , "Einstellungen beim Beenden speichern: <%s>","Salvare le impostazioni in uscita: <%s>"   ,"spara inställningar vid avslut: <%s>","Gravar e sair: <%s>"                ,
+                      "save settings now"                  , "Einstellungen jetzt speichern"             ,"Salvare le impostazioni adesso"            ,"spara inställningar nu"              ,"Gravar configuracoes agora"         };
diff --git a/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/add_e2_plugin.diff b/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/add_e2_plugin.diff
new file mode 100644 (file)
index 0000000..d01e7a8
--- /dev/null
@@ -0,0 +1,48 @@
+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/bin/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/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/add_font.diff b/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/add_font.diff
new file mode 100644 (file)
index 0000000..b04e441
Binary files /dev/null and b/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/add_font.diff differ
diff --git a/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/fix_smstext.diff b/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/fix_smstext.diff
new file mode 100644 (file)
index 0000000..ec0610a
--- /dev/null
@@ -0,0 +1,48 @@
+diff -Naur tuxcom/tuxcom.c tuxcom.smstxt/tuxcom.c
+--- tuxcom/tuxcom.c    2009-01-07 17:03:26.000000000 +0100
++++ tuxcom.smstxt/tuxcom.c     2009-01-09 19:17:00.000000000 +0100
+@@ -2611,11 +2611,11 @@
+                                                       }
+                                               }
+                                               prev_key = rccode;
+-                                              pch = strchr(numberchars[rccode],tolower(szdst[pos]));
+-                                              if (pch == NULL) szdst[pos] = (textuppercase == 0 ? numberchars[rccode][0] : toupper(numberchars[rccode][0]));
++                                              pch = strchr(numberchars[rccode-48],tolower(szdst[pos]));
++                                              if (pch == NULL) szdst[pos] = (textuppercase == 0 ? numberchars[rccode-48][0] : toupper(numberchars[rccode-48][0]));
+                                               else
+                                               {
+-                                                      if (pch == &(numberchars[rccode][strlen(numberchars[rccode])-1])) szdst[pos] = (textuppercase == 0 ? numberchars[rccode][0]: toupper(numberchars[rccode][0]));
++                                                      if (pch == &(numberchars[rccode-48][strlen(numberchars[rccode-48])-1])) szdst[pos] = (textuppercase == 0 ? numberchars[rccode-48][0]: toupper(numberchars[rccode-48][0]));
+                                                       else szdst[pos] = (textuppercase == 0 ? *((char*)pch+1) : toupper(*((char*)pch+1)));
+                                               }
+                                       }
+diff -Naur tuxcom/tuxcom.h tuxcom.smstxt/tuxcom.h
+--- tuxcom/tuxcom.h    2009-01-07 17:03:26.000000000 +0100
++++ tuxcom.smstxt/tuxcom.h     2009-01-09 19:17:00.000000000 +0100
+@@ -80,16 +80,16 @@
+ #define MSG_COPYRIGHT  "© dbluelle 2004-2007"
+ // rc codes
+-#define       RC_0                    '0'
+-#define       RC_1                    '1'
+-#define       RC_2                    '2'
+-#define       RC_3                    '3'
+-#define       RC_4                    '4'
+-#define       RC_5                    '5'
+-#define       RC_6                    '6'
+-#define       RC_7                    '7'
+-#define       RC_8                    '8'
+-#define       RC_9                    '9'
++#define       RC_0                    0x30
++#define       RC_1                    0x31
++#define       RC_2                    0x32
++#define       RC_3                    0x33
++#define       RC_4                    0x34
++#define       RC_5                    0x35
++#define       RC_6                    0x36
++#define       RC_7                    0x37
++#define       RC_8                    0x38
++#define       RC_9                    0x39
+ #define       RC_RIGHT        0x0191
+ #define       RC_LEFT         0x0192
diff --git a/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/largefile.diff b/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/largefile.diff
new file mode 100644 (file)
index 0000000..5fdcbab
--- /dev/null
@@ -0,0 +1,11 @@
+diff -Naur tuxcom.ori/Makefile.am tuxcom/Makefile.am
+--- tuxcom.ori/Makefile.am     2009-01-06 00:29:24.000000000 +0100
++++ tuxcom/Makefile.am 2009-01-06 00:28:58.000000000 +0100
+@@ -10,6 +10,6 @@
+ install_DATA = tuxcom.cfg
+-AM_CFLAGS=$(CFLAGS) @FREETYPE_CFLAGS@
++AM_CFLAGS=$(CFLAGS) @FREETYPE_CFLAGS@ -D_FILE_OFFSET_BITS=64
+ installdir = $(CONFIGDIR)/tuxcom
diff --git a/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/makefiles.diff b/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/makefiles.diff
new file mode 100644 (file)
index 0000000..b22f2fd
--- /dev/null
@@ -0,0 +1,505 @@
+diff -Naur tuxcom.ori/Makefile.am tuxcom/Makefile.am
+--- tuxcom.ori/Makefile.am     2009-01-06 00:12:19.000000000 +0100
++++ tuxcom/Makefile.am 2008-12-28 18:33:12.000000000 +0100
+@@ -1,24 +1,15 @@
++INCLUDES = -I$(top_srcdir)/include
+-AM_CPPFLAGS =  \
+-      @FREETYPE_CFLAGS@ \
+-      -I$(top_srcdir)/include
++SUBDIRS = font python
+-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)
+-      install -d $(DESTDIR)$(CONFIGDIR)/tuxcom
+-      $(LIBTOOL) --mode=install install tuxcom.la $(DESTDIR)$(PLUGINDIR) 
+-      install -m 0644 $(srcdir)/tuxcom.cfg $(DESTDIR)$(PLUGINDIR)
+-      install -m 0755 $(srcdir)/mp3 $(DESTDIR)$(CONFIGDIR)/tuxcom
++installdir = $(CONFIGDIR)/tuxcom
+diff -Naur tuxcom.ori/acinclude.m4 tuxcom/acinclude.m4
+--- tuxcom.ori/acinclude.m4    1970-01-01 01:00:00.000000000 +0100
++++ tuxcom/acinclude.m4        2008-12-28 18:33:11.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])
++])
+diff -Naur tuxcom.ori/configure.ac tuxcom/configure.ac
+--- tuxcom.ori/configure.ac    1970-01-01 01:00:00.000000000 +0100
++++ tuxcom/configure.ac        2008-12-28 18:33:12.000000000 +0100
+@@ -0,0 +1,19 @@
++#                                               -*- 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)
++AC_OUTPUT(python/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
diff --git a/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/support_newer_freetype.diff b/meta-openvuplus/recipes-base/tuxcom/tuxbox-tuxcom-32bpp/support_newer_freetype.diff
new file mode 100644 (file)
index 0000000..5ed9eca
--- /dev/null
@@ -0,0 +1,78 @@
+diff -Naur tuxcom/tuxcom.c tuxcom.freetype/tuxcom.c
+--- tuxcom/tuxcom.c    2009-01-06 01:21:26.000000000 +0100
++++ tuxcom.freetype/tuxcom.c   2009-01-07 13:21:16.000000000 +0100
+@@ -322,9 +322,15 @@
+               switch (size)
+               {
++#if ((defined(FREETYPE_MAJOR)) && (((FREETYPE_MAJOR == 2) && (((FREETYPE_MINOR == 1) && (FREETYPE_PATCH >= 9)) || (FREETYPE_MINOR > 1))) || (FREETYPE_MAJOR > 2)))
++                      case VERY_SMALL: desc.width = desc.height = FONTHEIGHT_VERY_SMALL; break;
++                      case SMALL     : desc.width = desc.height = FONTHEIGHT_SMALL     ; break;
++                      case BIG       : desc.width = desc.height = FONTHEIGHT_BIG       ; break;
++#else
+                       case VERY_SMALL: desc.font.pix_width = desc.font.pix_height = FONTHEIGHT_VERY_SMALL; break;
+                       case SMALL     : desc.font.pix_width = desc.font.pix_height = FONTHEIGHT_SMALL     ; break;
+                   case BIG       : desc.font.pix_width = desc.font.pix_height = FONTHEIGHT_BIG       ; break;
++#endif
+               }
+       //reset kerning
+@@ -354,9 +360,15 @@
+               switch (size)
+               {
++#if ((defined(FREETYPE_MAJOR)) && (((FREETYPE_MAJOR == 2) && (((FREETYPE_MINOR == 1) && (FREETYPE_PATCH >= 9)) || (FREETYPE_MINOR > 1))) || (FREETYPE_MAJOR > 2)))
++                      case VERY_SMALL: desc.width = desc.height = FONTHEIGHT_VERY_SMALL; break;
++                      case SMALL     : desc.width = desc.height = FONTHEIGHT_SMALL     ; break;
++                      case BIG       : desc.width = desc.height = FONTHEIGHT_BIG       ; break;
++#else
+                       case VERY_SMALL: desc.font.pix_width = desc.font.pix_height = FONTHEIGHT_VERY_SMALL; break;
+                       case SMALL     : desc.font.pix_width = desc.font.pix_height = FONTHEIGHT_SMALL     ; break;
+                   case BIG       : desc.font.pix_width = desc.font.pix_height = FONTHEIGHT_BIG       ; break;
++#endif
+               }
+       //set alignment
+@@ -617,17 +629,26 @@
+                       return;
+               }
+               else
++#if ((defined(FREETYPE_MAJOR)) && (((FREETYPE_MAJOR == 2) && (((FREETYPE_MINOR == 1) && (FREETYPE_PATCH >= 9)) || (FREETYPE_MINOR > 1))) || (FREETYPE_MAJOR > 2)))
++                      desc.face_id = FONT2;
++#else
+                       desc.font.face_id = FONT2;
++#endif
+       }
+       else
++#if ((defined(FREETYPE_MAJOR)) && (((FREETYPE_MAJOR == 2) && (((FREETYPE_MINOR == 1) && (FREETYPE_PATCH >= 9)) || (FREETYPE_MINOR > 1))) || (FREETYPE_MAJOR > 2)))
++              desc.face_id = FONT;
++#else
+               desc.font.face_id = FONT;
+-
++#endif
+       use_kerning = FT_HAS_KERNING(face);
+-
++#if ((defined(FREETYPE_MAJOR)) && (((FREETYPE_MAJOR == 2) && (((FREETYPE_MINOR == 1) && (FREETYPE_PATCH >= 9)) || (FREETYPE_MINOR > 1))) || (FREETYPE_MAJOR > 2)))
++      desc.flags = FT_LOAD_MONOCHROME;
++#else
+       desc.image_type = ftc_image_mono;
+-
++#endif
+       //init backbuffer
+diff -Naur tuxcom/tuxcom.h tuxcom.freetype/tuxcom.h
+--- tuxcom/tuxcom.h    2009-01-06 01:21:26.000000000 +0100
++++ tuxcom.freetype/tuxcom.h   2009-01-07 13:21:16.000000000 +0100
+@@ -192,6 +192,9 @@
+ //freetype stuff
++#if ((defined(FREETYPE_MAJOR)) && (((FREETYPE_MAJOR == 2) && (((FREETYPE_MINOR == 1) && (FREETYPE_PATCH >= 9)) || (FREETYPE_MINOR > 1))) || (FREETYPE_MAJOR > 2)))
++typedef FTC_ImageTypeRec FTC_Image_Desc;
++#endif
+ //#define FONT "/usr/share/fonts/md_khmurabi_10.ttf"
+ #define FONT "/usr/share/fonts/pakenham.ttf"
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt.bb b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt.bb
new file mode 100644 (file)
index 0000000..8aa881e
--- /dev/null
@@ -0,0 +1,28 @@
+SUMMARY = "tuxbox libtuxtxt"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://libtuxtxt/libtuxtxt.c;endline=19;md5=75fd12b0664044ec3b3182337e21e98f"
+DEPENDS = "dreambox-dvbincludes libpng freetype"
+SRCDATE = "20090130"
+PV = "0.0+cvs${SRCDATE}"
+PR = "r1"
+
+SRC_URI = "cvs://anoncvs@cvs.tuxbox.org/cvs/tuxbox;module=apps/tuxbox/libs;method=ext \
+        file://acinclude.m4 \
+        file://ignorelibs.patch \
+        file://32bpp.diff \
+        file://resize_framebuffer.diff \
+        file://allow_different_demux.diff \
+        file://videodev2.patch \
+        file://libz.patch \
+"
+
+S = "${WORKDIR}/libs"
+
+inherit autotools pkgconfig
+
+do_configure_prepend() {
+        install ${WORKDIR}/acinclude.m4 ${S}/acinclude.m4
+        sed -i -e s:@LIBTUXBOX_LIBS@::g ${S}/libtuxtxt/tuxbox-tuxtxt.pc.in
+}
+
+CPPFLAGS += "-DHAVE_DREAMBOX_HARDWARE -DDREAMBOX"
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/32bpp.diff b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/32bpp.diff
new file mode 100644 (file)
index 0000000..3c6c11c
--- /dev/null
@@ -0,0 +1,738 @@
+diff -Naur libs-org/libtuxtxt/libtuxtxt.c libs/libtuxtxt/libtuxtxt.c
+--- libs-org/libtuxtxt/libtuxtxt.c     2010-03-06 10:51:52.000000000 +0100
++++ libs/libtuxtxt/libtuxtxt.c 2010-03-06 10:55:25.000000000 +0100
+@@ -7,6 +7,15 @@
+  *    Info entnommen aus videotext-0.6.19991029,                              *
+  *    Copyright (c) 1994-96 Martin Buck  <martin-2.buck@student.uni-ulm.de>   *
+  *                                                                            *
++ *              ported 2006 to Dreambox 7025 / 32Bit framebuffer              *
++ *                   by Seddi <seddi@i-have-a-dreambox.com>                   *
++ *                                                                            *
++ *              ported 32Bit framebuffer to Tuxtxt v1.99 (2008)               *
++ *                      by the PLi team (Sat-Turner)                          *
++ *                                                                            *
++ *              ported to 20090130                                            *
++ *                      by the PLi team (pieterg)                             *
++ *                                                                            *
+  ******************************************************************************/
+ #ifdef DEBUG
+diff -Naur libs-org/libtuxtxt/tuxtxt_common.h libs/libtuxtxt/tuxtxt_common.h
+--- libs-org/libtuxtxt/tuxtxt_common.h 2010-03-06 10:51:52.000000000 +0100
++++ libs/libtuxtxt/tuxtxt_common.h     2010-03-06 10:56:26.000000000 +0100
+@@ -627,6 +627,19 @@
+       aG3_70, aG3_71, aG3_72, aG3_73, aG3_74, aG3_75, aG3_76, aG3_77, aG3_78, aG3_79, aG3_7a, aG3_7b, aG3_7c, aG3_7d, aG3_7e
+ };
++/* 32bit colortable */
++unsigned char bgra[][4] = {
++"\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF",
++"\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF",
++"\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF",
++"\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF",
++"\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF",
++"\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF",
++"\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF",
++"\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xFF",
++"\0\0\0\xFF", "\0\0\0\xFF", "\0\0\0\xC0", "\0\0\0\x00",
++"\0\0\0\x33" };
++
+ tuxtxt_cache_struct tuxtxt_cache;
+ static pthread_mutex_t tuxtxt_cache_lock = PTHREAD_MUTEX_INITIALIZER;
+ int tuxtxt_get_zipsize(int p,int sp)
+@@ -3294,14 +3307,21 @@
+ void tuxtxt_FillRect(unsigned char *lfb, int xres, int x, int y, int w, int h, int color)
+ {
+       if (!lfb) return;
+-      unsigned char *p = lfb + x + y * xres;
++      unsigned char *p = lfb + x*4 + y * xres;
++      unsigned char linebuf[w*4];
++      int xtmp;
+       if (w > 0)
++      {
++              for (xtmp=0; xtmp<w; xtmp++)
++                      memcpy(linebuf+xtmp*4,bgra[color],4);
++
+               for ( ; h > 0 ; h--)
+               {
+-                      memset(p, color, w);
++                      memcpy(p,linebuf,w*4);
+                       p += xres;
+               }
++      }
+ }
+ void tuxtxt_RenderDRCS(int xres,
+@@ -3311,7 +3331,7 @@
+       unsigned char fgcolor, unsigned char bgcolor)
+ {
+       if (d == NULL) return;
+-      int bit, x, y;
++      int bit, x, y, ltmp;
+       unsigned char *ay = ax + 13; /* array[0..10] of y-offsets for each pixel */
+       for (y = 0; y < 10; y++) /* 10*2 bytes a 6 pixels per char definition */
+@@ -3335,9 +3355,21 @@
+                       for (i = 0; i < h; i++)
+                       {
+                               if (ax[x+1] > ax[x])
+-                                      memset(d + ax[x], f1, ax[x+1] - ax[x]);
++                              {
++//                                    memset(d + ax[x], f1, ax[x+1] - ax[x]);
++                                      for (ltmp=0 ; ltmp < (ax[x+1]-ax[x]); ltmp++)
++                                      {
++                                              memcpy(d + ax[x]*4 +ltmp*4,bgra[f1],4);
++                                      }
++                              }
+                               if (ax[x+7] > ax[x+6])
+-                                      memset(d + ax[x+6], f2, ax[x+7] - ax[x+6]); /* 2nd byte 6 pixels to the right */
++                              {
++//                                    memset(d + ax[x+6], f2, ax[x+7] - ax[x+6]); /* 2nd byte 6 pixels to the right */
++                                      for (ltmp=0 ; ltmp < (ax[x+7]-ax[x+6]); ltmp++)
++                                      {
++                                              memcpy(d + ax[x+6]*4 +ltmp*4,bgra[f2],4);
++                                      }
++                              }
+                               d += xres;
+                       }
+                       d -= h * xres;
+@@ -3350,20 +3382,26 @@
+ void tuxtxt_DrawVLine(unsigned char *lfb, int xres, int x, int y, int l, int color)
+ {
+       if (!lfb) return;
+-      unsigned char *p = lfb + x + y * xres;
++      unsigned char *p = lfb + 4*x + y * xres;
+       for ( ; l > 0 ; l--)
+       {
+-              *p = color;
++              memcpy(p,bgra[color],4);
+               p += xres;
+       }
+ }
+ void tuxtxt_DrawHLine(unsigned char* lfb,int xres,int x, int y, int l, int color)
+ {
++      int ltmp;
+       if (!lfb) return;
+       if (l > 0)
+-              memset(lfb + x + y * xres, color, l);
++      {
++              for (ltmp=0; ltmp < l; ltmp++)
++              {
++                      memcpy(lfb + x*4 + ltmp*4 + y * xres, bgra[color], 4);
++              }
++      }
+ }
+ void tuxtxt_FillRectMosaicSeparated(unsigned char *lfb, int xres,int x, int y, int w, int h, int fgcolor, int bgcolor, int set)
+@@ -3378,48 +3416,54 @@
+ void tuxtxt_FillTrapez(unsigned char *lfb, int xres,int x0, int y0, int l0, int xoffset1, int h, int l1, int color)
+ {
+-      unsigned char *p = lfb + x0 + y0 * xres;
++      unsigned char *p = lfb + x0*4 + y0 * xres;
+       int xoffset, l;
+       int yoffset;
++      int ltmp;
+       for (yoffset = 0; yoffset < h; yoffset++)
+       {
+               l = l0 + ((l1-l0) * yoffset + h/2) / h;
+               xoffset = (xoffset1 * yoffset + h/2) / h;
+               if (l > 0)
+-                      memset(p + xoffset, color, l);
++              {
++                      for (ltmp=0; ltmp < l; ltmp++)
++                      {
++                              memcpy(p + xoffset*4 +ltmp*4, bgra[color], 4);
++                      }
++              }
+               p += xres;
+       }
+ }
+ void tuxtxt_FlipHorz(unsigned char *lfb, int xres,int x, int y, int w, int h)
+ {
+-      unsigned char buf[w];
+-      unsigned char *p = lfb + x + y * xres;
++      unsigned char buf[w*4];
++      unsigned char *p = lfb + x*4 + y * xres;
+       int w1,h1;
+       for (h1 = 0 ; h1 < h ; h1++)
+       {
+-              memcpy(buf,p,w);
++              memcpy(buf,p,w*4);
+               for (w1 = 0 ; w1 < w ; w1++)
+               {
+-                      *(p+w1) = buf[w-(w1+1)];
++                      memcpy(p+w1*4,buf+((w-w1)*4)-4,4);
+               }
+               p += xres;
+       }
+ }
+ void tuxtxt_FlipVert(unsigned char *lfb, int xres,int x, int y, int w, int h)
+ {
+-      unsigned char buf[w];
+-      unsigned char *p = lfb + x + y * xres, *p1, *p2;
++      unsigned char buf[w*4];
++      unsigned char *p = lfb + x*4 + y * xres, *p1, *p2;
+       int h1;
+       for (h1 = 0 ; h1 < h/2 ; h1++)
+       {
+               p1 = (p+(h1*xres));
+               p2 = (p+(h-(h1+1))*xres);
+-              memcpy(buf,p1,w);
+-              memcpy(p1,p2,w);
+-              memcpy(p2,buf,w);
++              memcpy(buf,p1,w*4);
++              memcpy(p1,p2,w*4);
++              memcpy(p2,buf,w*4);
+       }
+ }
+@@ -3683,7 +3727,7 @@
+                               if (lfb) 
+                               {
+                                       int x,y,f,c;
+-                                      unsigned char* p = lfb + *pPosX + PosY* xres;
++                                      unsigned char* p = lfb + (*pPosX)*4 + PosY* xres;
+                                       for (y=0; y<fontheight;y++)
+                                       {
+                                               for (f=0; f<factor; f++)
+@@ -3691,7 +3735,7 @@
+                                                       for (x=0; x<curfontwidth*xfactor;x++)
+                                                       {
+                                                               c = (y&4 ? (x/3)&1 :((x+3)/3)&1);
+-                                                              *(p+x) = (c ? fgcolor : bgcolor);
++                                                              memcpy((p+x*4),bgra[(c ? fgcolor : bgcolor)],4);
+                                                       }
+                                                       p += xres;
+                                               }
+@@ -3729,7 +3773,7 @@
+                       }
+                       axdrcs[12] = curfontwidth; /* adjust last x-offset according to position, FIXME: double width */
+                       tuxtxt_RenderDRCS(xres,p,
+-                                                lfb + *pPosX + PosY * xres,
++                                                lfb + (*pPosX)*4 + PosY * xres,
+                                                 axdrcs, fgcolor, bgcolor);
+               }
+               else
+@@ -3996,12 +4040,12 @@
+ void tuxtxt_FillBorder(tstRenderInfo* renderinfo, int color)
+ {
+       int ys =  renderinfo->var_screeninfo.yres-renderinfo->var_screeninfo.yoffset;
+-      tuxtxt_FillRect(renderinfo->lfb,renderinfo->var_screeninfo.xres,0     , ys                     ,renderinfo->StartX      ,renderinfo->var_screeninfo.yres                       ,color);
+-      tuxtxt_FillRect(renderinfo->lfb,renderinfo->var_screeninfo.xres,renderinfo->StartX, ys                     ,renderinfo->displaywidth,renderinfo->StartY                                    ,color);
+-      tuxtxt_FillRect(renderinfo->lfb,renderinfo->var_screeninfo.xres,renderinfo->StartX, ys+renderinfo->StartY+25*renderinfo->fontheight,renderinfo->displaywidth,renderinfo->var_screeninfo.yres-(renderinfo->StartY+25*renderinfo->fontheight),color);
++      tuxtxt_FillRect(renderinfo->lfb,renderinfo->fix_screeninfo.line_length,0     , ys                     ,renderinfo->StartX      ,renderinfo->var_screeninfo.yres                       ,color);
++      tuxtxt_FillRect(renderinfo->lfb,renderinfo->fix_screeninfo.line_length,renderinfo->StartX, ys                     ,renderinfo->displaywidth,renderinfo->StartY                                    ,color);
++      tuxtxt_FillRect(renderinfo->lfb,renderinfo->fix_screeninfo.line_length,renderinfo->StartX, ys+renderinfo->StartY+25*renderinfo->fontheight,renderinfo->displaywidth,renderinfo->var_screeninfo.yres-(renderinfo->StartY+25*renderinfo->fontheight),color);
+       if (renderinfo->screenmode == 0 )
+-              tuxtxt_FillRect(renderinfo->lfb,renderinfo->var_screeninfo.xres,renderinfo->StartX+renderinfo->displaywidth, ys,renderinfo->var_screeninfo.xres-(renderinfo->StartX+renderinfo->displaywidth),renderinfo->var_screeninfo.yres   ,color);
++              tuxtxt_FillRect(renderinfo->lfb,renderinfo->fix_screeninfo.line_length,renderinfo->StartX+renderinfo->displaywidth, ys,renderinfo->var_screeninfo.xres-(renderinfo->StartX+renderinfo->displaywidth),renderinfo->var_screeninfo.yres   ,color);
+ }
+@@ -4037,12 +4081,12 @@
+ }
+ void tuxtxt_ClearBB(tstRenderInfo* renderinfo,int color)
+ {
+-      memset(renderinfo->lfb + (renderinfo->var_screeninfo.yres-renderinfo->var_screeninfo.yoffset )*renderinfo->var_screeninfo.xres, color, renderinfo->var_screeninfo.xres*renderinfo->var_screeninfo.yres);
++      tuxtxt_FillRect(renderinfo->lfb,renderinfo->fix_screeninfo.line_length,0, renderinfo->var_screeninfo.yres - renderinfo->var_screeninfo.yoffset, renderinfo->var_screeninfo.xres, renderinfo->var_screeninfo.yres, color);
+ }
+ void tuxtxt_ClearFB(tstRenderInfo* renderinfo,int color)
+ {
+-      memset(renderinfo->lfb + renderinfo->var_screeninfo.xres*renderinfo->var_screeninfo.yoffset, color, renderinfo->var_screeninfo.xres*renderinfo->var_screeninfo.yres);
++      tuxtxt_FillRect(renderinfo->lfb,renderinfo->fix_screeninfo.line_length,0, renderinfo->var_screeninfo.yoffset, renderinfo->var_screeninfo.xres, renderinfo->var_screeninfo.yres, color);
+ }
+ int  tuxtxt_GetCurFontWidth(tstRenderInfo* renderinfo)
+@@ -4079,7 +4123,7 @@
+       renderinfo->PosX += t;
+       int curfontwidth2 = tuxtxt_GetCurFontWidth(renderinfo);
+       renderinfo->PosX -= t;
+-      int alphachar = tuxtxt_RenderChar(renderinfo->lfb+(yoffset+renderinfo->StartY)*renderinfo->var_screeninfo.xres,  renderinfo->var_screeninfo.xres,Char, &renderinfo->PosX, renderinfo->PosY-renderinfo->StartY, Attribute, zoom, curfontwidth, curfontwidth2, renderinfo->fontheight, renderinfo->transpmode,renderinfo->axdrcs, renderinfo->ascender);
++      int alphachar = tuxtxt_RenderChar(renderinfo->lfb+(yoffset+renderinfo->StartY)*renderinfo->fix_screeninfo.line_length, renderinfo->fix_screeninfo.line_length, Char, &renderinfo->PosX, renderinfo->PosY-renderinfo->StartY, Attribute, zoom, curfontwidth, curfontwidth2, renderinfo->fontheight, renderinfo->transpmode,renderinfo->axdrcs, renderinfo->ascender);
+       if (alphachar <= 0) return;
+       if (zoom && Attribute->doubleh)
+@@ -4112,7 +4156,7 @@
+ #if TUXTXT_DEBUG
+               printf("TuxTxt <FT_Get_Char_Index for Char %x \"%c\" failed\n", alphachar, alphachar);
+ #endif
+-              tuxtxt_FillRect(renderinfo->lfb,renderinfo->var_screeninfo.xres,renderinfo->PosX, renderinfo->PosY + yoffset, curfontwidth, factor*renderinfo->fontheight, bgcolor);
++              tuxtxt_FillRect(renderinfo->lfb,renderinfo->fix_screeninfo.line_length,renderinfo->PosX, renderinfo->PosY + yoffset, curfontwidth, factor*renderinfo->fontheight, bgcolor);
+               renderinfo->PosX += curfontwidth;
+               return;
+       }
+@@ -4127,7 +4171,7 @@
+               printf("TuxTxt <FTC_SBitCache_Lookup: 0x%x> c%x a%x g%x w%d h%d x%d y%d\n",
+                                error, alphachar, Attribute, glyph, curfontwidth, renderinfo->fontheight, renderinfo->PosX, renderinfo->PosY);
+ #endif
+-              tuxtxt_FillRect(renderinfo->lfb,renderinfo->var_screeninfo.xres,renderinfo->PosX, renderinfo->PosY + yoffset, curfontwidth, renderinfo->fontheight, bgcolor);
++              tuxtxt_FillRect(renderinfo->lfb,renderinfo->fix_screeninfo.line_length,renderinfo->PosX, renderinfo->PosY + yoffset, curfontwidth, renderinfo->fontheight, bgcolor);
+               renderinfo->PosX += curfontwidth;
+               return;
+       }
+@@ -4188,13 +4232,13 @@
+                   Row = 0;
+               }
+               else            
+-                  tuxtxt_FillRect(renderinfo->lfb,renderinfo->var_screeninfo.xres,renderinfo->PosX, renderinfo->PosY + yoffset, curfontwidth, Row, bgcolor); /* fill upper margin */
++                              tuxtxt_FillRect(renderinfo->lfb,renderinfo->fix_screeninfo.line_length,renderinfo->PosX, renderinfo->PosY + yoffset, curfontwidth, Row, bgcolor); /* fill upper margin */
+               if (renderinfo->ascender - renderinfo->sbit->top + renderinfo->TTFShiftY + he > renderinfo->fontheight)
+                       he = renderinfo->fontheight - renderinfo->ascender + renderinfo->sbit->top - renderinfo->TTFShiftY; /* limit char height to defined/calculated fontheight */
+               if (he < 0) he = renderinfo->fontheight;
+-              p = renderinfo->lfb + renderinfo->PosX + (yoffset + renderinfo->PosY + Row) * renderinfo->var_screeninfo.xres; /* running pointer into framebuffer */
++              p = renderinfo->lfb + renderinfo->PosX*4 + (yoffset + renderinfo->PosY + Row) * renderinfo->fix_screeninfo.line_length; /* running pointer into framebuffer */
+               for (Row = he; Row; Row--) /* row counts up, but down may be a little faster :) */
+               {
+                       int pixtodo = (renderinfo->usettf ? renderinfo->sbit->width : curfontwidth);
+@@ -4203,8 +4247,8 @@
+                       for (Bit = xfactor * (renderinfo->sbit->left + renderinfo->TTFShiftX); Bit > 0; Bit--) /* fill left margin */
+                       {
+                               for (f = factor-1; f >= 0; f--)
+-                                      *(p + f*renderinfo->var_screeninfo.xres) = bgcolor;
+-                              p++;
++                                      memcpy((p + f*renderinfo->fix_screeninfo.line_length),bgra[bgcolor],4);/*bgcolor*/
++                              p+=4;
+                               if (!renderinfo->usettf)
+                                       pixtodo--;
+                       }
+@@ -4224,14 +4268,14 @@
+                                               color = bgcolor;
+                                       for (f = factor-1; f >= 0; f--)
+-                                              *(p + f*renderinfo->var_screeninfo.xres) = color;
+-                                      p++;
++                                              memcpy((p + f*renderinfo->fix_screeninfo.line_length),bgra[color],4);
++                                      p+=4;
+                                       if (xfactor > 1) /* double width */
+                                       {
+                                               for (f = factor-1; f >= 0; f--)
+-                                                      *(p + f*renderinfo->var_screeninfo.xres) = color;
+-                                              p++;
++                                                      memcpy((p + f*renderinfo->fix_screeninfo.line_length),bgra[color],4);
++                                              p+=4;
+                                               if (!renderinfo->usettf)
+                                                       pixtodo--;
+                                       }
+@@ -4242,17 +4286,17 @@
+                                 Bit > 0; Bit--) /* fill rest of char width */
+                       {
+                               for (f = factor-1; f >= 0; f--)
+-                                      *(p + f*renderinfo->var_screeninfo.xres) = bgcolor;
+-                              p++;
++                                      memcpy((p + f*renderinfo->fix_screeninfo.line_length),bgra[bgcolor],4);
++                              p+=4;
+                       }
+-                      p = pstart + factor*renderinfo->var_screeninfo.xres;
++                      p = pstart + factor*renderinfo->fix_screeninfo.line_length;
+               }
+               Row = renderinfo->ascender - renderinfo->sbit->top + he + renderinfo->TTFShiftY;
+-              tuxtxt_FillRect(renderinfo->lfb,renderinfo->var_screeninfo.xres,renderinfo->PosX, renderinfo->PosY + yoffset + Row*factor, curfontwidth, (renderinfo->fontheight - Row) * factor, bgcolor); /* fill lower margin */
++              tuxtxt_FillRect(renderinfo->lfb,renderinfo->fix_screeninfo.line_length,renderinfo->PosX, renderinfo->PosY + yoffset + Row*factor, curfontwidth, (renderinfo->fontheight - Row) * factor, bgcolor); /* fill lower margin */
+               if (Attribute->underline)
+-                      tuxtxt_FillRect(renderinfo->lfb,renderinfo->var_screeninfo.xres,renderinfo->PosX, renderinfo->PosY + yoffset + (renderinfo->fontheight-2)* factor, curfontwidth,2*factor, fgcolor); /* underline char */
++                      tuxtxt_FillRect(renderinfo->lfb,renderinfo->fix_screeninfo.line_length,renderinfo->PosX, renderinfo->PosY + yoffset + (renderinfo->fontheight-2)* factor, curfontwidth,2*factor, fgcolor); /* underline char */
+               renderinfo->PosX += curfontwidth;
+               renderinfo->TTFShiftY = backupTTFshiftY; // restore TTFShiftY
+@@ -4300,9 +4344,8 @@
+ void tuxtxt_SwitchScreenMode(tstRenderInfo* renderinfo,int newscreenmode)
+ {
+-#if HAVE_DVB_API_VERSION >= 3
+       struct v4l2_format format;
+-#endif
++
+       /* reset transparency mode */
+       if (renderinfo->transpmode)
+               renderinfo->transpmode = 0;
+@@ -4370,42 +4413,53 @@
+               tuxtxt_setfontwidth(renderinfo,fw);
+-#if HAVE_DVB_API_VERSION < 3
+-              avia_pig_hide(renderinfo->pig);
+-              avia_pig_set_pos(renderinfo->pig, tx, ty);
+-              avia_pig_set_size(renderinfo->pig, tw, th);
+-              avia_pig_set_stack(renderinfo->pig, 2);
+-              avia_pig_show(renderinfo->pig);
+-#else
+-              int sm = 0;
+-              ioctl(renderinfo->pig, VIDIOC_OVERLAY, &sm);
+-              sm = 1;
+-              ioctl(renderinfo->pig, VIDIOC_G_FMT, &format);
+-              format.type = V4L2_BUF_TYPE_VIDEO_OVERLAY;
+-              format.fmt.win.w.left   = tx;
+-              format.fmt.win.w.top    = ty;
+-              format.fmt.win.w.width  = tw;
+-              format.fmt.win.w.height = th;
+-              ioctl(renderinfo->pig, VIDIOC_S_FMT, &format);
+-              ioctl(renderinfo->pig, VIDIOC_OVERLAY, &sm);
+-#endif
+-              ioctl(renderinfo->avs, AVSIOSSCARTPIN8, &fncmodes[renderinfo->screen_mode2]);
+-              ioctl(renderinfo->saa, SAAIOSWSS, &saamodes[renderinfo->screen_mode2]);
++              // Video picture scale/pos for e2
++              int i;
++              for (i=0; i<4; ++i)
++              {
++                      char *targets[]={"left", "top", "width", "height"};
++                      char filename[128];
++                      snprintf(filename, 128, "/proc/stb/vmpeg/%d/dst_%s", 0, targets[i]);
++                      FILE *f = fopen(filename, "w");
++                      if (!f)
++                              break;
++                      int val = 0;
++                      switch (i)
++                      {
++                      case 0: val = tx; break;
++                      case 1: val = ty; break;
++                      case 2: val = tw; break;
++                      case 3: val = th; break;
++                      }
++                      fprintf(f, "%08x\n", val);
++                      fclose(f);
++              }
++              
++              writeproc("/proc/stb/avs/0/sb", fncmodes[renderinfo->screen_mode2]);
++              writeproc("/proc/stb/denc/0/wss", saamodes[renderinfo->screen_mode2]);
+       }
+       else /* not split */
+       {
+-#if HAVE_DVB_API_VERSION < 3
+-              avia_pig_hide(renderinfo->pig);
+-#else
+-              ioctl(renderinfo->pig, VIDIOC_OVERLAY, &renderinfo->screenmode);
+-#endif
++              // Video picture scale/pos for e2
++              int i;
++              for (i=0; i<4; ++i)
++              {
++                      char *targets[]={"left", "top", "width", "height"};
++                      char filename[128];
++                      snprintf(filename, 128, "/proc/stb/vmpeg/%d/dst_%s", 0, targets[i]);
++                      FILE *f = fopen(filename, "w");
++                      if (!f)
++                              break;
++                      fprintf(f, "%08x\n", 0);
++                      fclose(f);
++              }
+               tuxtxt_setfontwidth(renderinfo,renderinfo->fontwidth_normal);
+               renderinfo->displaywidth= (renderinfo->ex-renderinfo->sx);
+               renderinfo->StartX = renderinfo->sx; //+ (ex-sx - 40*fontwidth) / 2; /* center screen */
+-              ioctl(renderinfo->avs, AVSIOSSCARTPIN8, &fncmodes[renderinfo->screen_mode1]);
+-              ioctl(renderinfo->saa, SAAIOSWSS, &saamodes[renderinfo->screen_mode1]);
++              writeproc("/proc/stb/avs/0/sb", fncmodes[renderinfo->screen_mode1]);
++              writeproc("/proc/stb/denc/0/wss", saamodes[renderinfo->screen_mode1]);
+       }
+ }
+@@ -4431,7 +4485,7 @@
+       if (renderinfo->boxed)
+       {
+               renderinfo->PosX = renderinfo->StartX + column*width;
+-              tuxtxt_FillRect(renderinfo->lfb,renderinfo->var_screeninfo.xres,renderinfo->PosX, renderinfo->PosY+yoffset, renderinfo->displaywidth, renderinfo->fontheight, tuxtxt_color_transp);
++              tuxtxt_FillRect(renderinfo->lfb,renderinfo->fix_screeninfo.line_length,renderinfo->PosX, renderinfo->PosY+yoffset, renderinfo->displaywidth, renderinfo->fontheight, tuxtxt_color_transp);
+               return;
+       }
+@@ -4442,7 +4496,7 @@
+               if (l > 9) /* smaller font, if no space for one half space at front and end */
+                       tuxtxt_setfontwidth(renderinfo,oldfontwidth * 10 / (l+1));
+-              tuxtxt_FillRect(renderinfo->lfb,renderinfo->var_screeninfo.xres,renderinfo->PosX, renderinfo->PosY+yoffset, width+(renderinfo->displaywidth%4), renderinfo->fontheight, tuxtxt_atrtable[ATR_L250 + column].bg);
++              tuxtxt_FillRect(renderinfo->lfb,renderinfo->fix_screeninfo.line_length,renderinfo->PosX, renderinfo->PosY+yoffset, width+(renderinfo->displaywidth%4), renderinfo->fontheight, tuxtxt_atrtable[ATR_L250 + column].bg);
+               renderinfo->PosX += ((width) - (l*renderinfo->fontwidth+l*renderinfo->fontwidth/abx))/2; /* center */
+               for (p = tuxtxt_cache.adip[linkpage]; *p; p++)
+                       tuxtxt_RenderCharBB(renderinfo,*p, &tuxtxt_atrtable[ATR_L250 + column]);
+@@ -4451,7 +4505,7 @@
+       else /* display number */
+       {
+               renderinfo->PosX = renderinfo->StartX + column*width;
+-              tuxtxt_FillRect(renderinfo->lfb,renderinfo->var_screeninfo.xres,renderinfo->PosX, renderinfo->PosY+yoffset, renderinfo->displaywidth+renderinfo->sx-renderinfo->PosX, renderinfo->fontheight, tuxtxt_atrtable[ATR_L250 + column].bg);
++              tuxtxt_FillRect(renderinfo->lfb,renderinfo->fix_screeninfo.line_length,renderinfo->PosX, renderinfo->PosY+yoffset, renderinfo->displaywidth+renderinfo->sx-renderinfo->PosX, renderinfo->fontheight, tuxtxt_atrtable[ATR_L250 + column].bg);
+               if (linkpage < tuxtxt_cache.page)
+               {
+                       line[6] = '<';
+@@ -4620,7 +4674,7 @@
+ void tuxtxt_CopyBB2FB(tstRenderInfo* renderinfo)
+ {
+       unsigned char *src, *dst, *topsrc;
+-      int fillcolor, i, screenwidth;
++      int fillcolor, i, screenwidth, swtmp;
+       /* line 25 */
+       if (!renderinfo->pagecatching)
+@@ -4636,8 +4690,8 @@
+               if (ioctl(renderinfo->fb, FBIOPAN_DISPLAY, &renderinfo->var_screeninfo) == -1)
+                       perror("TuxTxt <FBIOPAN_DISPLAY>");
+-              if (renderinfo->StartX > 0 && *renderinfo->lfb != *(renderinfo->lfb + renderinfo->var_screeninfo.xres * renderinfo->var_screeninfo.yres)) /* adapt background of backbuffer if changed */
+-                      tuxtxt_FillBorder(renderinfo,*(renderinfo->lfb + renderinfo->var_screeninfo.xres * renderinfo->var_screeninfo.yoffset));
++              if (renderinfo->StartX > 0 && *renderinfo->lfb != *(renderinfo->lfb + renderinfo->fix_screeninfo.line_length * renderinfo->var_screeninfo.yres)) /* adapt background of backbuffer if changed */
++                      tuxtxt_FillBorder(renderinfo,*(renderinfo->lfb + renderinfo->fix_screeninfo.line_length * renderinfo->var_screeninfo.yoffset));
+ //                     ClearBB(*(lfb + renderinfo->var_screeninfo.xres * renderinfo->var_screeninfo.yoffset));
+               if (renderinfo->clearbbcolor >= 0)
+@@ -4648,18 +4702,18 @@
+               return;
+       }
+-      src = dst = topsrc = renderinfo->lfb + renderinfo->StartY*renderinfo->var_screeninfo.xres;
++      src = dst = topsrc = renderinfo->lfb + renderinfo->StartY*renderinfo->fix_screeninfo.line_length;
+       if (renderinfo->var_screeninfo.yoffset)
+-              dst += renderinfo->var_screeninfo.xres * renderinfo->var_screeninfo.yres;
++              dst += renderinfo->fix_screeninfo.line_length * renderinfo->var_screeninfo.yres;
+       else
+       {
+-              src += renderinfo->var_screeninfo.xres * renderinfo->var_screeninfo.yres;
+-              topsrc += renderinfo->var_screeninfo.xres * renderinfo->var_screeninfo.yres;
++              src += renderinfo->fix_screeninfo.line_length * renderinfo->var_screeninfo.yres;
++              topsrc += renderinfo->fix_screeninfo.line_length * renderinfo->var_screeninfo.yres;
+       }
+       if (!renderinfo->pagecatching )
+-              memcpy(dst+(24*renderinfo->fontheight)*renderinfo->var_screeninfo.xres, src + (24*renderinfo->fontheight)*renderinfo->var_screeninfo.xres, renderinfo->var_screeninfo.xres*renderinfo->fontheight); /* copy line25 in normal height */
++              memcpy(dst+(24*renderinfo->fontheight)*renderinfo->fix_screeninfo.line_length, src + (24*renderinfo->fontheight)*renderinfo->fix_screeninfo.line_length, renderinfo->fix_screeninfo.line_length*renderinfo->fontheight); /* copy line25 in normal height */
+       if (renderinfo->transpmode)
+               fillcolor = tuxtxt_color_transp;
+@@ -4667,94 +4721,81 @@
+               fillcolor = tuxtxt_cache.FullScrColor;
+       if (renderinfo->zoommode == 2)
+-              src += 12*renderinfo->fontheight*renderinfo->var_screeninfo.xres;
++              src += 12*renderinfo->fontheight*renderinfo->fix_screeninfo.line_length;
+       if (renderinfo->screenmode == 1) /* copy topmenu in normal height (since PIG also keeps dimensions) */
+       {
+               unsigned char *topdst = dst;
+-              screenwidth = TV43STARTX;
++              screenwidth = (TV43STARTX) * 4;
+               topsrc += screenwidth;
+               topdst += screenwidth;
+               for (i=0; i < 24*renderinfo->fontheight; i++)
+               {
+                       memcpy(topdst, topsrc,renderinfo->ex-screenwidth);
+-                      topdst += renderinfo->var_screeninfo.xres;
+-                      topsrc += renderinfo->var_screeninfo.xres;
++                      topdst += renderinfo->fix_screeninfo.line_length;
++                      topsrc += renderinfo->fix_screeninfo.line_length;
+               }
+       }
+       else if (renderinfo->screenmode == 2)
+-              screenwidth = TV169FULLSTARTX;
++              screenwidth = (TV169FULLSTARTX) * 4;
+       else
+-              screenwidth = renderinfo->var_screeninfo.xres;
++              screenwidth = renderinfo->fix_screeninfo.line_length;
+       for (i = renderinfo->StartY; i>0;i--)
+       {
+-              memset(dst - i*renderinfo->var_screeninfo.xres, fillcolor, screenwidth);
++              for (swtmp=0; swtmp<screenwidth/4; swtmp++)
++              {
++                      memcpy(dst - i*renderinfo->fix_screeninfo.line_length+swtmp*4, bgra[fillcolor], 4);
++              }
+       }
+       for (i = 12*renderinfo->fontheight; i; i--)
+       {
+               memcpy(dst, src, screenwidth);
+-              dst += renderinfo->var_screeninfo.xres;
++              dst += renderinfo->fix_screeninfo.line_length;
+               memcpy(dst, src, screenwidth);
+-              dst += renderinfo->var_screeninfo.xres;
+-              src += renderinfo->var_screeninfo.xres;
++              dst += renderinfo->fix_screeninfo.line_length;
++              src += renderinfo->fix_screeninfo.line_length;
+       }
+ //    if (!pagecatching )
+ //            memcpy(dst, lfb + (StartY+24*fontheight)*renderinfo->var_screeninfo.xres, renderinfo->var_screeninfo.xres*fontheight); /* copy line25 in normal height */
+-      for (i = renderinfo->var_screeninfo.yres - renderinfo->StartY - 25*renderinfo->fontheight; i >= 0;i--)
+-      {
+-              memset(dst + renderinfo->var_screeninfo.xres*(renderinfo->fontheight+i), fillcolor, screenwidth);
+-      }
++      dst -= renderinfo->fix_screeninfo.line_length;
++
++      unsigned char linebuf[screenwidth];
++      for (swtmp=0; swtmp < screenwidth/4;swtmp++)
++              memcpy(linebuf+swtmp*4, bgra[fillcolor], 4);
++      for (i = renderinfo->var_screeninfo.yres - renderinfo->StartY - 25 * renderinfo->fontheight; i >= 0;i--)
++              memcpy(dst + renderinfo->fix_screeninfo.line_length*(renderinfo->fontheight+i), linebuf, screenwidth);
+ }
+ void tuxtxt_setcolors(tstRenderInfo* renderinfo,unsigned short *pcolormap, int offset, int number)
+ {
+-      struct fb_cmap colormap_0 = {0, tuxtxt_color_SIZECOLTABLE, renderinfo->rd0, renderinfo->gn0, renderinfo->bl0, renderinfo->tr0};
+-      int i, changed=0;
++      int i,trans_tmp;
+       int j = offset; /* index in global color table */
+-      unsigned short t = renderinfo->tr0[tuxtxt_color_transp2];
+-      renderinfo->tr0[tuxtxt_color_transp2] = (renderinfo->trans_mode+7)<<11 | 0x7FF;
+-#ifndef HAVE_DREAMBOX_HARDWARE
+-      /* "correct" semi-transparent for Nokia (GTX only allows 2(?) levels of transparency) */
+-      if (tuxbox_get_vendor() == TUXBOX_VENDOR_NOKIA)
+-              renderinfo->tr0[tuxtxt_color_transp2] = 0xFFFF;
+-#endif
+-      if (t != renderinfo->tr0[tuxtxt_color_transp2]) changed = 1;
++      trans_tmp=25-renderinfo->trans_mode;
++
++      bgra[tuxtxt_color_transp2][3]=((trans_tmp+7)<<11 | 0x7FF)>>8;
++
+       for (i = 0; i < number; i++)
+       {
+-              int r = (pcolormap[i] << 12) & 0xf000;
+-              int g = (pcolormap[i] <<  8) & 0xf000;
+-              int b = (pcolormap[i] <<  4) & 0xf000;
+-
++              int r = (pcolormap[i] << 12 & 0xF000) >> 8;
++              int g = (pcolormap[i] << 8 & 0xF000) >> 8;
++              int b = (pcolormap[i] << 4 & 0xF000) >> 8;
+               r = (r * (0x3f+(renderinfo->color_mode<<3))) >> 8;
+               g = (g * (0x3f+(renderinfo->color_mode<<3))) >> 8;
+               b = (b * (0x3f+(renderinfo->color_mode<<3))) >> 8;
+-              if (renderinfo->rd0[j] != r)
+-              {
+-                      renderinfo->rd0[j] = r;
+-                      changed = 1;
+-              }
+-              if (renderinfo->gn0[j] != g)
+-              {
+-                      renderinfo->gn0[j] = g;
+-                      changed = 1;
+-              }
+-              if (renderinfo->bl0[j] != b)
+-              {
+-                      renderinfo->bl0[j] = b;
+-                      changed = 1;
+-              }
++
++              bgra[j][2]=r;
++              bgra[j][1]=g;
++              bgra[j][0]=b;
++
+               j++;
+       }
+-      if (changed)
+-              if (ioctl(renderinfo->fb, FBIOPUTCMAP, &colormap_0) == -1)
+-                      perror("TuxTxt <FBIOPUTCMAP>");
+ }
+ /******************************************************************************
+@@ -4968,11 +5009,11 @@
+                       for (row = 0; row < DRCSROWS; row++)
+                               for (col = 0; col < DRCSCOLS; col++)
+-                                      tuxtxt_RenderDRCS(renderinfo->var_screeninfo.xres,
++                                      tuxtxt_RenderDRCS(renderinfo->fix_screeninfo.line_length,
+                                               renderinfo->page_char + 20 * (DRCSCOLS * row + col + 2),
+                                               renderinfo->lfb
+-                                              + (renderinfo->StartY + renderinfo->fontheight + DRCSYSPC * row + renderinfo->var_screeninfo.yres - renderinfo->var_screeninfo.yoffset) * renderinfo->var_screeninfo.xres
+-                                              + renderinfo->StartX + DRCSXSPC * col,
++                                              + (renderinfo->StartY + renderinfo->fontheight + DRCSYSPC * row + renderinfo->var_screeninfo.yres - renderinfo->var_screeninfo.yoffset) * renderinfo->fix_screeninfo.line_length
++                                                        + (renderinfo->StartX + DRCSXSPC * col)*4,
+                                               ax, tuxtxt_color_white, tuxtxt_color_black);
+                       memset(renderinfo->page_char + 40, 0xff, 24*40); /* don't render any char below row 0 */
+@@ -5062,13 +5103,13 @@
+                               renderinfo->pageinfo = p;
+                               renderinfo->boxed = p->boxed;
+                       }
++                      if (tuxtxt_cache.colortable) /* as late as possible to shorten the time the old page is displayed with the new colors */
++                              tuxtxt_setcolors(renderinfo,tuxtxt_cache.colortable, 16, 16); /* set colors for CLUTs 2+3 */
+                       if (renderinfo->boxed || renderinfo->transpmode)
+ //                            tuxtxt_cache.FullScrColor = tuxtxt_color_transp;
+                               tuxtxt_FillBorder(renderinfo,tuxtxt_color_transp);
+                       else
+                               tuxtxt_FillBorder(renderinfo,tuxtxt_cache.FullScrColor);
+-                      if (tuxtxt_cache.colortable) /* as late as possible to shorten the time the old page is displayed with the new colors */
+-                              tuxtxt_setcolors(renderinfo,tuxtxt_cache.colortable, 16, 16); /* set colors for CLUTs 2+3 */
+               }
+               else
+                       startrow = 1;
+@@ -5408,39 +5449,6 @@
+               renderinfo->page_atrb[i].doublew = 0;
+               renderinfo->page_atrb[i].IgnoreAtBlackBgSubst = 0;
+       }
+-      if (setTVFormat)
+-      {
+-              /* open avs */
+-              if ((renderinfo->avs = open(AVS, O_RDWR)) == -1)
+-              {
+-                      perror("TuxTxt <open AVS>");
+-                      FTC_Manager_Done(renderinfo->manager);
+-                      FT_Done_FreeType(renderinfo->library);
+-                      return 0;
+-              }
+-
+-              ioctl(renderinfo->avs, AVSIOGSCARTPIN8, &renderinfo->fnc_old);
+-              ioctl(renderinfo->avs, AVSIOSSCARTPIN8, &fncmodes[renderinfo->screen_mode1]);
+-              /* open saa */
+-              if ((renderinfo->saa = open(SAA, O_RDWR)) == -1)
+-              {
+-                      perror("TuxTxt <open SAA>");
+-                      FTC_Manager_Done(renderinfo->manager);
+-                      FT_Done_FreeType(renderinfo->library);
+-                      return 0;
+-              }
+-      
+-              ioctl(renderinfo->saa, SAAIOGWSS, &renderinfo->saa_old);
+-              ioctl(renderinfo->saa, SAAIOSWSS, &saamodes[renderinfo->screen_mode1]);
+-      }
+-      /* open pig */
+-      if ((renderinfo->pig = open(PIG, O_RDWR)) == -1)
+-      {
+-              perror("TuxTxt <open PIG>");
+-              FTC_Manager_Done(renderinfo->manager);
+-              FT_Done_FreeType(renderinfo->library);
+-              return 0;
+-      }
+       return 1;       
+ }
+ /******************************************************************************
+@@ -5489,7 +5497,7 @@
+               FT_Done_FreeType(renderinfo->library);
+       renderinfo->manager = 0;
+       renderinfo->library = 0;
+-      tuxtxt_ClearFB(renderinfo,renderinfo->previousbackcolor);
++      memset(renderinfo->lfb, 0, renderinfo->fix_screeninfo.smem_len);
+       /* unmap framebuffer */
+       munmap(renderinfo->lfb, renderinfo->fix_screeninfo.smem_len);
+       printf("[TTX] Rendering ended\n");
+diff -Naur libs-org/libtuxtxt/tuxtxt_def.h libs/libtuxtxt/tuxtxt_def.h
+--- libs-org/libtuxtxt/tuxtxt_def.h    2010-03-06 10:51:52.000000000 +0100
++++ libs/libtuxtxt/tuxtxt_def.h        2010-03-06 10:55:25.000000000 +0100
+@@ -72,8 +72,10 @@
+ #define hold_mosaic         0x1E
+ #define release_mosaic      0x1F
+-const int fncmodes[] = {AVS_FNCOUT_EXT43, AVS_FNCOUT_EXT169};
+-const int saamodes[] = {SAA_WSS_43F, SAA_WSS_169F};
++extern unsigned char bgra[][4];
++
++const char * fncmodes[] = {"12", "6"};
++const char * saamodes[] = {"4:3_full_format", "16:9_full_format"};
+ typedef enum /* object type */
+ {
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/acinclude.m4 b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/acinclude.m4
new file mode 100644 (file)
index 0000000..3c26669
--- /dev/null
@@ -0,0 +1,385 @@
+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"
+       sysconfdir="\${prefix}/etc"
+       localstatedir="\${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,/tuxbox,
+       [--with-configdir=PATH   ],[where to find the config files])
+
+TUXBOX_APPS_DIRECTORY_ONE(datadir,DATADIR,datadir,/share,/tuxbox,
+       [--with-datadir=PATH     ],[where to find data])
+
+TUXBOX_APPS_DIRECTORY_ONE(fontdir,FONTDIR,datadir,/share,/fonts,
+       [--with-fontdir=PATH     ],[where to find the fonts])
+
+TUXBOX_APPS_DIRECTORY_ONE(gamesdir,GAMESDIR,localstatedir,/etc,/tuxbox/games,
+       [--with-gamesdir=PATH    ],[where games data is stored])
+
+TUXBOX_APPS_DIRECTORY_ONE(libdir,LIBDIR,libdir,/lib,/tuxbox,
+       [--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(ucodedir,UCODEDIR,localstatedir,/var,/tuxbox/ucodes,
+       [--with-ucodedir=PATH    ],[where to find the ucodes])
+])
+
+dnl automake <= 1.6 needs this specifications
+AC_SUBST(CONFIGDIR)
+AC_SUBST(DATADIR)
+AC_SUBST(FONTDIR)
+AC_SUBST(GAMESDIR)
+AC_SUBST(LIBDIR)
+AC_SUBST(PLUGINDIR)
+AC_SUBST(UCODEDIR)
+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 "$DRIVER"; then
+       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"
+fi
+])
+
+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,[
+AC_REQUIRE([TUXBOX_APPS_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])
+])
+
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/allow_different_demux.diff b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/allow_different_demux.diff
new file mode 100644 (file)
index 0000000..d5aac5b
--- /dev/null
@@ -0,0 +1,95 @@
+diff -u libs/libtuxtxt_orig/libtuxtxt.c libs/libtuxtxt/libtuxtxt.c
+--- libs/libtuxtxt_orig/libtuxtxt.c    2009-01-29 21:21:08.000000000 +0100
++++ libs/libtuxtxt/libtuxtxt.c 2009-01-29 21:26:49.000000000 +0100
+@@ -65,6 +65,13 @@
+       tuxtxt_cache.thread_id = 0;
+       tuxtxt_cache.dmx = -1;
+       pthread_mutex_unlock(&tuxtxt_control_lock);
++
++#if HAVE_DVB_API_VERSION < 3
++      strcpy(tuxtxt_cache.demux, "/dev/dvb/card0/demux0");
++#else
++      strcpy(tuxtxt_cache.demux, "/dev/dvb/adapter0/demux0");
++#endif
++
+       return 1;//tuxtxt_init_demuxer();
+ }
+@@ -82,7 +89,7 @@
+       pthread_mutex_unlock(&tuxtxt_control_lock);
+       return res;
+ }
+-int tuxtxt_start(int tpid)
++int tuxtxt_start(int tpid, int demux)
+ {
+       int ret = 1;
+       pthread_mutex_lock(&tuxtxt_control_lock);
+@@ -92,10 +99,26 @@
+               tuxtxt_clear_cache();
+               tuxtxt_cache.page = 0x100;
+               tuxtxt_cache.vtxtpid = tpid;
++              if (demux >= 0)
++              {
++#if HAVE_DVB_API_VERSION < 3
++                      snprintf(tuxtxt_cache.demux, 64, "/dev/dvb/card0/demux%d", demux);
++#else
++                      snprintf(tuxtxt_cache.demux, 64, "/dev/dvb/adapter0/demux%d", demux);
++#endif
++              }
+               ret = tuxtxt_start_thread();
+       }
+       else if (!tuxtxt_cache.thread_starting && !tuxtxt_cache.receiving)
+       {
++              if (demux >= 0)
++              {
++#if HAVE_DVB_API_VERSION < 3
++                      snprintf(tuxtxt_cache.demux, 64, "/dev/dvb/card0/demux%d", demux);
++#else
++                      snprintf(tuxtxt_cache.demux, 64, "/dev/dvb/adapter0/demux%d", demux);
++#endif
++              }
+               ret = tuxtxt_start_thread();
+       }
+       pthread_mutex_unlock(&tuxtxt_control_lock);
+diff -u libs/libtuxtxt_orig/tuxtxt_common.h libs/libtuxtxt/tuxtxt_common.h
+--- libs/libtuxtxt_orig/tuxtxt_common.h        2009-01-29 21:24:32.000000000 +0100
++++ libs/libtuxtxt/tuxtxt_common.h     2009-01-29 21:26:49.000000000 +0100
+@@ -1751,9 +1751,9 @@
+       if (tuxtxt_cache.dmx != -1)
+       {
+               ioctl(tuxtxt_cache.dmx, DMX_STOP);
+-//        close(tuxtxt_cache.dmx);
+-      }
+-//    tuxtxt_cache.dmx = -1;
++              close(tuxtxt_cache.dmx);
++      }
++      tuxtxt_cache.dmx = -1;
+ #if 1//DEBUG
+       printf("TuxTxt stopped service %x\n", tuxtxt_cache.vtxtpid);
+ #endif
+diff -u libs/libtuxtxt_orig/tuxtxt_def.h libs/libtuxtxt/tuxtxt_def.h
+--- libs/libtuxtxt_orig/tuxtxt_def.h   2009-01-29 21:19:23.000000000 +0100
++++ libs/libtuxtxt/tuxtxt_def.h        2009-01-29 21:26:49.000000000 +0100
+@@ -19,12 +19,12 @@
+  #define pes_type pesType
+  #define dmx_sct_filter_params dmxSctFilterParams
+  #include <ost/dmx.h>
+- #define DMX "/dev/dvb/card0/demux0"
+ #else
+  #include <linux/dvb/dmx.h>
+- #define DMX "/dev/dvb/adapter0/demux0"
+ #endif
++#define DMX tuxtxt_cache.demux
++
+ #include <ft2build.h>
+ #include FT_FREETYPE_H
+ #include FT_CACHE_H
+@@ -325,6 +325,7 @@
+       short flofpages[0x900][FLOFSIZE];
+       unsigned char adip[0x900][13];
+       unsigned char subpagetable[0x900];
++      char demux[64];
+       int dmx;
+       int vtxtpid;
+       int cached_pages, page, subpage, pageupdate,page_receiving, current_page[9], current_subpage[9];
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/ignorelibs.patch b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/ignorelibs.patch
new file mode 100644 (file)
index 0000000..11253b0
--- /dev/null
@@ -0,0 +1,11 @@
+--- ~/Makefile.am~     2005-06-26 17:19:00.000000000 +0200
++++ ~/Makefile.am      2008-09-03 19:59:00.000000000 +0200
+@@ -1,8 +1,5 @@
+ AUTOMAKE_OPTIONS = gnu
+ SUBDIRS = \
+-      libavs \
+-      liblcddisplay \
+-      liblircdclient \
+       libtuxtxt
+       
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/libz.patch b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/libz.patch
new file mode 100644 (file)
index 0000000..6b74a28
--- /dev/null
@@ -0,0 +1,10 @@
+--- libs/libtuxtxt/Makefile.am 2012-02-17 00:44:38.933059300 +0100
++++ libs/libtuxtxt/Makefile.am 2012-02-17 01:31:00.077032773 +0100
+@@ -4,6 +4,7 @@
+ pkginclude_HEADERS = tuxtxt_def.h tuxtxt_common.h
+ libtuxtxt_la_SOURCES = libtuxtxt.c
++libtuxtxt_la_LIBADD = -lz
+ AM_CPPFLAGS = \
+       @FREETYPE_CFLAGS@
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/resize_framebuffer.diff b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/resize_framebuffer.diff
new file mode 100644 (file)
index 0000000..a5f6007
--- /dev/null
@@ -0,0 +1,48 @@
+diff -u libs/libtuxtxt_orig/tuxtxt_common.h libs/libtuxtxt/tuxtxt_common.h
+--- libs/libtuxtxt_orig/tuxtxt_common.h        2009-01-29 21:19:23.000000000 +0100
++++ libs/libtuxtxt/tuxtxt_common.h     2009-01-29 21:24:32.000000000 +0100
+@@ -5375,15 +5375,6 @@
+                        ymosaic[0], ymosaic[1], ymosaic[2], renderinfo->StartX, renderinfo->StartY, renderinfo->ascender);
+ #endif
+-      /* get fixed screeninfo */
+-      if (ioctl(renderinfo->fb, FBIOGET_FSCREENINFO, &renderinfo->fix_screeninfo) == -1)
+-      {
+-              perror("TuxTxt <FBIOGET_FSCREENINFO>");
+-              FTC_Manager_Done(renderinfo->manager);
+-              FT_Done_FreeType(renderinfo->library);
+-              return 0;
+-      }
+-
+       /* get variable screeninfo */
+       if (ioctl(renderinfo->fb, FBIOGET_VSCREENINFO, &renderinfo->var_screeninfo) == -1)
+       {
+@@ -5393,6 +5384,12 @@
+               return 0;
+       }
++      /* change to PAL resolution */
++      if (renderinfo->var_screeninfo.xres != 720) 
++      {
++              renderinfo->var_screeninfo.xres_virtual = renderinfo->var_screeninfo.xres = 720;
++              renderinfo->var_screeninfo.yres_virtual = renderinfo->var_screeninfo.yres = 576;
++      }
+       /* set variable screeninfo for double buffering */
+       renderinfo->var_screeninfo.yres_virtual = 2*renderinfo->var_screeninfo.yres;
+@@ -5407,6 +5404,15 @@
+               return 0;
+       }
++      /* get fixed screeninfo */
++      if (ioctl(renderinfo->fb, FBIOGET_FSCREENINFO, &renderinfo->fix_screeninfo) == -1)
++      {
++              perror("TuxTxt <FBIOGET_FSCREENINFO>");
++              FTC_Manager_Done(renderinfo->manager);
++              FT_Done_FreeType(renderinfo->library);
++              return 0;
++      }
++
+ #if TUXTXT_DEBUG
+       if (ioctl(fb, FBIOGET_VSCREENINFO, &renderinfo->var_screeninfo) == -1)
+       {
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/videodev2.patch b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-libtuxtxt/videodev2.patch
new file mode 100644 (file)
index 0000000..5b94e96
--- /dev/null
@@ -0,0 +1,11 @@
+--- libs/libtuxtxt/tuxtxt_common.h.orig        2012-02-10 22:37:29.736849856 +0100
++++ libs/libtuxtxt/tuxtxt_common.h     2012-02-10 22:38:01.344849000 +0100
+@@ -25,7 +25,7 @@
+ #include <dbox/avia_gt_pig.h>
+ #else
+ #include <linux/input.h>
+-#include <linux/videodev.h>
++#include <linux/videodev2.h>
+ #endif
+ const char *ObjectSource[] =
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp.bb b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp.bb
new file mode 100644 (file)
index 0000000..891abc7
--- /dev/null
@@ -0,0 +1,32 @@
+SUMMARY = "tuxbox tuxtxt for 32bit framebuffer"
+LICENSE = "Proprietary"
+LIC_FILES_CHKSUM = "file://tuxtxt.c;endline=19;md5=4f3fd30feb71f556493f38c7a8b3ca4d"
+DEPENDS = "freetype tuxbox-libtuxtxt"
+RDEPENDS_${PN} = "enigma2"
+SRCDATE = "20090130"
+PV = "0.0+cvs${SRCDATE}"
+PR = "r5"
+
+SRC_URI = "cvs://anoncvs@cvs.tuxbox.org/cvs/tuxbox;module=apps/tuxbox/plugins/tuxtxt;method=ext \
+        file://makefiles.diff \
+        file://nonblocking.diff \
+        file://32bpp.diff \
+        file://add_new_default_conf.diff \
+        file://add_advanced_rc.diff \
+        file://allow_different_demux.diff \
+        file://plugin.py \
+       file://tuxtxt_vuplus.patch;patch=1;pnum=1 \
+"
+
+S = "${WORKDIR}/tuxtxt"
+
+inherit autotools
+
+do_configure_prepend() {
+        touch ${S}/python/__init__.py
+        install -m 0644 ${WORKDIR}/plugin.py ${S}/python
+}
+
+FILES_${PN} += "${datadir}/fonts/tuxtxt.otb ${libdir}/enigma2 /etc/tuxtxt"
+
+CPPFLAGS += "-DHAVE_DREAMBOX_HARDWARE -DDREAMBOX -I${STAGING_INCDIR}/tuxbox/tuxtxt"
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/32bpp.diff b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/32bpp.diff
new file mode 100644 (file)
index 0000000..76bbebd
--- /dev/null
@@ -0,0 +1,388 @@
+diff -u tuxtxt_orig/tuxtxt.c tuxtxt/tuxtxt.c
+--- tuxtxt_orig/tuxtxt.c       2009-01-29 21:36:31.000000000 +0100
++++ tuxtxt/tuxtxt.c    2009-01-29 21:38:42.000000000 +0100
+@@ -7,12 +7,43 @@
+  *                       and DBLuelle <dbluelle@blau-weissoedingen.de>        *
+  *    russian and arabic support by Leonid Protasov <Lprot@mail.ru>         *
+  *                                                                            *
++ *              ported 2006 to Dreambox 7025 / 32Bit framebuffer              *
++ *                   by Seddi <seddi@i-have-a-dreambox.com>                   *
++ *                                                                            *
++ *              ported 32Bit framebuffer to Tuxtxt v1.99 (2008)               *
++ *                      by the PLi team (Sat-Turner)                          *
++ *                                                                            *
++ *              ported to 20090130                                            *
++ *                      by the PLi team (pieterg)                             *
++ *                                                                            *
+  ******************************************************************************/
+ #include "tuxtxt.h"
++static char saved_wss[32];
++static char saved_pin8[32];
++
++void readproc(const char* source, char *dest)
++{
++      FILE *f=fopen(source, "rt");
++      if(f)
++      {
++              fgets(dest, 255, f);
++              fclose(f);
++      }
++}
++
++void writeproc(const char* dest, const char *value)
++{
++      FILE *f=fopen(dest, "w");
++      if (f)
++      {
++              fwrite(value, strlen(value), 1, f);
++              fclose(f);
++      }
++}
+ int getIndexOfPageInHotlist()
+ {
+@@ -137,10 +168,11 @@
+  * plugin_exec                                                                *
+  ******************************************************************************/
+-void plugin_exec(PluginParam *par)
++int main(int argc, char **argv)
+ {
+       char cvs_revision[] = "$Revision: 1.108 $";
++      int cnt=0;
+ #if !TUXTXT_CFG_STANDALONE
+       int initialized = tuxtxt_init();
+       if ( initialized )
+@@ -150,31 +182,71 @@
+       /* show versioninfo */
+       sscanf(cvs_revision, "%*s %s", versioninfo);
+       printf("TuxTxt %s\n", versioninfo);
++      printf("for 32bpp framebuffer\n");
+       tuxtxt_SetRenderingDefaults(&renderinfo);
+       /* get params */
+       tuxtxt_cache.vtxtpid = renderinfo.fb = lcd = rc = renderinfo.sx = renderinfo.ex = renderinfo.sy = renderinfo.ey = -1;
++      if (argc==1)
++      {
++              printf("\nUSAGE: tuxtxt vtpid\n");
++              printf("No PID given, so scanning for PIDs ...\n\n");
++              tuxtxt_cache.vtxtpid=0;
++      }
++      else 
++      {
++              tuxtxt_cache.vtxtpid = atoi(argv[1]);
++      }
++
++      /* open Framebuffer */
++      if ((renderinfo.fb=open("/dev/fb0", O_RDWR)) == -1)
++      {
++              perror("TuxTxt <open /dev/fb0>");
++              return 0;
++      }
++      rc=-1;
++      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("TuxTxt <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;
++      }
++
++      if (rc == -1)
++      {
++              printf("couldnt find correct input device!!!\n");
++              return -1;
++      }
+-      for (; par; par = par->next)
++      /* open LCD  */
++      if ((lcd=open("/dev/dbox/lcd0", O_RDWR)) == -1)
+       {
+-              if (!strcmp(par->id, P_ID_VTXTPID))
+-                      tuxtxt_cache.vtxtpid = atoi(par->val);
+-              else if (!strcmp(par->id, P_ID_FBUFFER))
+-                      renderinfo.fb = atoi(par->val);
+-              else if (!strcmp(par->id, P_ID_LCD))
+-                      lcd = atoi(par->val);
+-              else if (!strcmp(par->id, P_ID_RCINPUT))
+-                      rc = atoi(par->val);
+-              else if (!strcmp(par->id, P_ID_OFF_X))
+-                      renderinfo.sx = atoi(par->val);
+-              else if (!strcmp(par->id, P_ID_END_X))
+-                      renderinfo.ex = atoi(par->val);
+-              else if (!strcmp(par->id, P_ID_OFF_Y))
+-                      renderinfo.sy = atoi(par->val);
+-              else if (!strcmp(par->id, P_ID_END_Y))
+-                      renderinfo.ey = atoi(par->val);
++              perror("TuxTxt <open /dev/dbox/lcd0>");
++              return 0;
+       }
++      renderinfo.previousbackcolor = tuxtxt_color_transp;
++      renderinfo.zoommode = 0;
++      renderinfo.sx = 80;
++      renderinfo.ex = 620;
++      renderinfo.sy = 30;
++      renderinfo.ey = 555;
++
+       if (tuxtxt_cache.vtxtpid == -1 || renderinfo.fb == -1 || rc == -1 || renderinfo.sx == -1 || renderinfo.ex == -1 || renderinfo.sy == -1 || renderinfo.ey == -1)
+       {
+               printf("TuxTxt <Invalid Param(s)>\n");
+@@ -242,6 +314,7 @@
+                                       int vendor = 3; /* values unknown, rely on requested values */
+ #endif
++#if 0
+                                       if (vendor < 3) /* scart-parameters only known for 3 dboxes, FIXME: order must be like in info.h */
+                                       {
+                                               for (i = 0; i < 6; i++) /* FIXME: FBLK seems to cause troubles */
+@@ -274,6 +347,7 @@
+                                                               perror("TuxTxt <ioctl(avs)>");
+                                               }
+                                       }
++#endif
+                                       continue; /* otherwise ignore exit key */
+                               }
+                               default:
+@@ -487,6 +561,14 @@
+                               dumpl25 = ival & 1;
+                       else if (1 == sscanf(line, "UseTTF %i", &ival))
+                               renderinfo.usettf = ival & 1;
++                      else if (1 == sscanf(line, "StartX %i", &ival))
++                              renderinfo.sx = ival;
++                      else if (1 == sscanf(line, "EndX %i", &ival))
++                              renderinfo.ex = ival;
++                      else if (1 == sscanf(line, "StartY %i", &ival))
++                              renderinfo.sy = ival;
++                      else if (1 == sscanf(line, "EndY %i", &ival))
++                              renderinfo.ey = ival;
+               }
+               fclose(conf);
+       }
+@@ -534,6 +616,12 @@
+ #endif
++      readproc("/proc/stb/denc/0/wss", saved_wss);
++      writeproc("/proc/stb/denc/0/wss", saamodes[renderinfo.screen_mode1]);
++
++      readproc("/proc/stb/avs/0/sb", saved_pin8);
++      writeproc("/proc/stb/avs/0/sb", fncmodes[renderinfo.screen_mode1]);
++
+       /* setup rc */
+       ioctl(rc, RC_IOCTL_BCODES, 1);
+@@ -568,8 +656,6 @@
+       if (tuxtxt_cache.dmx != -1)
+           close(tuxtxt_cache.dmx);
+       tuxtxt_cache.dmx = -1;
+-#else
+-      tuxtxt_stop();
+ #endif
+       if (restoreaudio)
+@@ -579,6 +665,7 @@
+ #else
+               int vendor = 3; /* values unknown, rely on requested values */
+ #endif
++#if 0
+               if (vendor < 3) /* scart-parameters only known for 3 dboxes, FIXME: order must be like in info.h */
+               {
+                       for (i = 1; i < 6; i += 2) /* restore dvb audio */
+@@ -588,9 +675,17 @@
+                                       perror("TuxTxt <ioctl(avs)>");
+                       }
+               }
++#endif
+       }
++      /* close lcd */
++      close(lcd);
++      
++      /* close rc */
++      close(rc);
++      lcd = rc = -1;
++ 
+       if (hotlistchanged)
+               savehotlist();
+@@ -623,10 +718,20 @@
+                       fprintf(conf, "ShowLevel2p5 %d\n", renderinfo.showl25);
+                       fprintf(conf, "DumpLevel2p5 %d\n", dumpl25);
+                       fprintf(conf, "UseTTF %d\n", renderinfo.usettf);
++                      fprintf(conf, "StartX %d\n", renderinfo.sx);
++                      fprintf(conf, "EndX %d\n", renderinfo.ex);
++                      fprintf(conf, "StartY %d\n", renderinfo.sy);
++                      fprintf(conf, "EndY %d\n", renderinfo.ey);
+                       fclose(conf);
+               }
+       }
+       tuxtxt_EndRendering(&renderinfo);
++
++      /* close framebuffer */
++      close(renderinfo.fb);
++
++      writeproc("/proc/stb/avs/0/sb", saved_pin8);
++      writeproc("/proc/stb/denc/0/wss", saved_wss);
+ }
+ /******************************************************************************
+  * GetTeletextPIDs                                                           *
+@@ -1308,6 +1413,7 @@
+                                       memset(&menu[Menu_Width*MenuLine[M_COL] + 3+renderinfo.color_mode  ], 0x20,24-renderinfo.color_mode);
+                                       Menu_HighlightLine(menu, MenuLine[menuitem], 1);
+                                       tuxtxt_setcolors(&renderinfo,(unsigned short *)tuxtxt_defaultcolors, 0, tuxtxt_color_SIZECOLTABLE);
++                                      Menu_Init(menu, current_pid, menuitem, hotindex);
+                                       break;
+                               case M_TRA:
+                                       saveconfig = 1;
+@@ -1319,6 +1425,7 @@
+                                       memset(&menu[Menu_Width*MenuLine[M_TRA] + 3+renderinfo.trans_mode  ], 0x20,24-renderinfo.trans_mode);
+                                       Menu_HighlightLine(menu, MenuLine[menuitem], 1);
+                                       tuxtxt_setcolors(&renderinfo,(unsigned short *)tuxtxt_defaultcolors, 0, tuxtxt_color_SIZECOLTABLE);
++                                      Menu_Init(menu, current_pid, menuitem, hotindex);
+                                       break;
+                               case M_PID:
+                               {
+@@ -1421,6 +1528,7 @@
+                                       memset(&menu[Menu_Width*MenuLine[M_COL] + 3+renderinfo.color_mode  ], 0x20,24-renderinfo.color_mode);
+                                       Menu_HighlightLine(menu, MenuLine[menuitem], 1);
+                                       tuxtxt_setcolors(&renderinfo,(unsigned short *)tuxtxt_defaultcolors, 0, tuxtxt_color_SIZECOLTABLE);
++                                      Menu_Init(menu, current_pid, menuitem, hotindex);
+                                       break;
+                               case M_TRA:
+                                       saveconfig = 1;
+@@ -1432,6 +1540,7 @@
+                                       memset(&menu[Menu_Width*MenuLine[M_TRA] + 3+renderinfo.trans_mode  ], 0x20,24-renderinfo.trans_mode);
+                                       Menu_HighlightLine(menu, MenuLine[menuitem], 1);
+                                       tuxtxt_setcolors(&renderinfo,(unsigned short *)tuxtxt_defaultcolors, 0, tuxtxt_color_SIZECOLTABLE);
++                                      Menu_Init(menu, current_pid, menuitem, hotindex);
+                                       break;
+                               case M_PID:
+                                       if (!getpidsdone)
+@@ -1731,8 +1840,8 @@
+                                       memcpy(&menu[Menu_Width*MenuLine[M_SC1] + Menu_Width - 5], &configonoff[menulanguage][renderinfo.screen_mode1  ? 3 : 0], 3);
+                                       Menu_HighlightLine(menu, MenuLine[menuitem], 1);
+-                                      ioctl(renderinfo.avs, AVSIOSSCARTPIN8, &fncmodes[renderinfo.screen_mode1]);
+-                                      ioctl(renderinfo.saa, SAAIOSWSS, &saamodes[renderinfo.screen_mode1]);
++                                      writeproc("/proc/stb/avs/0/sb", fncmodes[renderinfo.screen_mode1]);
++                                      writeproc("/proc/stb/denc/0/wss", saamodes[renderinfo.screen_mode1]);
+                                       break;
+@@ -1857,7 +1966,8 @@
+       }
+       /* generate pagenumber */
+-      temp_page |= Number << renderinfo.inputcounter*4;
++      if (renderinfo.inputcounter >= 0)
++              temp_page |= Number << renderinfo.inputcounter*4;
+       renderinfo.inputcounter--;
+@@ -2318,8 +2428,8 @@
+       else if (renderinfo.transpmode == 1) /* semi-transparent BG with FG text */
+       {
+               /* restore videoformat */
+-              ioctl(renderinfo.avs, AVSIOSSCARTPIN8, &renderinfo.fnc_old);
+-              ioctl(renderinfo.saa, SAAIOSWSS, &renderinfo.saa_old);
++              writeproc("/proc/stb/avs/0/sb", saved_pin8);
++              writeproc("/proc/stb/denc/0/wss", saved_wss);
+               tuxtxt_ClearBB(&renderinfo,tuxtxt_color_transp);
+               tuxtxt_cache.pageupdate = 1;
+@@ -2327,8 +2437,8 @@
+       else /* TV mode */
+       {
+               /* restore videoformat */
+-              ioctl(renderinfo.avs, AVSIOSSCARTPIN8, &renderinfo.fnc_old);
+-              ioctl(renderinfo.saa, SAAIOSWSS, &renderinfo.saa_old);
++              writeproc("/proc/stb/avs/0/sb", saved_pin8);
++              writeproc("/proc/stb/denc/0/wss", saved_wss);
+               tuxtxt_ClearFB(&renderinfo,tuxtxt_color_transp);
+               renderinfo.clearbbcolor = tuxtxt_cache.FullScrColor;
+@@ -2765,8 +2875,8 @@
+                               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_MENU:          RCCode = RC_DBOX;       break;
++                              case KEY_EXIT:          RCCode = RC_HOME;       break;
+                               case KEY_POWER:         RCCode = RC_STANDBY;    break;
+                               }
+                               return 1;
+@@ -2794,10 +2904,3 @@
+       return 0;
+ }
+-/* Local Variables: */
+-/* indent-tabs-mode:t */
+-/* tab-width:3 */
+-/* c-basic-offset:3 */
+-/* comment-column:0 */
+-/* fill-column:120 */
+-/* End: */
+diff -u tuxtxt_orig/tuxtxt.h tuxtxt/tuxtxt.h
+--- tuxtxt_orig/tuxtxt.h       2008-12-26 19:41:28.000000000 +0100
++++ tuxtxt/tuxtxt.h    2009-01-29 21:38:18.000000000 +0100
+@@ -1,3 +1,6 @@
++#ifndef __tuxtxt_h__
++#define __tuxtxt_h__
++
+ /******************************************************************************
+  *                      <<< TuxTxt - Teletext Plugin >>>                      *
+  *                                                                            *
+@@ -7,7 +10,16 @@
+  *                       and DBLuelle <dbluelle@blau-weissoedingen.de>        *
+  *    russian and arabic support by Leonid Protasov <Lprot@mail.ru>         *
+  *                                                                            *
+- ******************************************************************************/
++ *              ported 2006 to Dreambox 7025 / 32Bit framebuffer              *
++ *                   by Seddi <seddi@i-have-a-dreambox.com>                   *
++ *                                                                            *
++ *              ported 32Bit framebuffer to Tuxtxt v1.99 (2008)               *
++ *                      by the PLi team (Sat-Turner)                          *
++ *                                                                            *
++ *              ported to 1.106 (2008)                                        *
++ *                      by the PLi team (pieterg)                             *
++ *                                                                            *
++******************************************************************************/
+ #define TUXTXT_CFG_STANDALONE 0  // 1:plugin only 0:use library
+ #define TUXTXT_DEBUG 0
+@@ -37,7 +49,6 @@
+ #include <sys/mman.h>
+ #include <dbox/fp.h>
+-#include <plugin.h>
+ #include <dbox/lcd-ks0713.h>
+@@ -1091,3 +1102,5 @@
+ /* comment-column:0 */
+ /* fill-column:120 */
+ /* End: */
++
++#endif
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/add_advanced_rc.diff b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/add_advanced_rc.diff
new file mode 100644 (file)
index 0000000..1ebef99
--- /dev/null
@@ -0,0 +1,161 @@
+diff -u tuxtxt_orig/tuxtxt.c tuxtxt/tuxtxt.c
+--- tuxtxt_orig/tuxtxt.c       2009-01-29 21:38:42.000000000 +0100
++++ tuxtxt/tuxtxt.c    2009-01-29 21:44:29.000000000 +0100
+@@ -173,6 +173,7 @@
+       char cvs_revision[] = "$Revision: 1.108 $";
+       int cnt=0;
++      int rc_num = 0;
+ #if !TUXTXT_CFG_STANDALONE
+       int initialized = tuxtxt_init();
+       if ( initialized )
+@@ -186,7 +187,7 @@
+       tuxtxt_SetRenderingDefaults(&renderinfo);
+       /* get params */
+-      tuxtxt_cache.vtxtpid = renderinfo.fb = lcd = rc = renderinfo.sx = renderinfo.ex = renderinfo.sy = renderinfo.ey = -1;
++      tuxtxt_cache.vtxtpid = renderinfo.fb = lcd = renderinfo.sx = renderinfo.ex = renderinfo.sy = renderinfo.ey = -1;
+       if (argc==1)
+       {
+               printf("\nUSAGE: tuxtxt vtpid\n");
+@@ -204,8 +205,8 @@
+               perror("TuxTxt <open /dev/fb/0>");
+               return 0;
+       }
+-      rc=-1;
+-      while(1)
++      rc[0] = rc[1] =-1;
++      while(rc_num < 2)
+       {
+               struct stat s;
+               char tmp[128];
+@@ -213,23 +214,26 @@
+               if (stat(tmp, &s))
+                       break;
+               /* open Remote Control */
+-              if ((rc=open(tmp, O_RDONLY)) == -1)
++              if ((rc[rc_num]=open(tmp, O_RDONLY)) == -1)
+               {
+                       perror("TuxTxt <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]);
++                      rc[rc_num] = -1;
++              }
++              else
++                      ++rc_num;
+               ++cnt;
+       }
+-      if (rc == -1)
++      if (rc[0] == -1)
+       {
+-              printf("couldnt find correct input device!!!\n");
++              printf("couldnt find usable input device!!!\n");
+               return -1;
+       }
+@@ -247,7 +251,7 @@
+       renderinfo.sy = 30;
+       renderinfo.ey = 555;
+-      if (tuxtxt_cache.vtxtpid == -1 || renderinfo.fb == -1 || rc == -1 || renderinfo.sx == -1 || renderinfo.ex == -1 || renderinfo.sy == -1 || renderinfo.ey == -1)
++      if (tuxtxt_cache.vtxtpid == -1 || renderinfo.fb == -1 || renderinfo.sx == -1 || renderinfo.ex == -1 || renderinfo.sy == -1 || renderinfo.ey == -1)
+       {
+               printf("TuxTxt <Invalid Param(s)>\n");
+               return;
+@@ -623,7 +627,8 @@
+       writeproc("/proc/stb/avs/0/sb", fncmodes[renderinfo.screen_mode1]);
+       /* setup rc */
+-      ioctl(rc, RC_IOCTL_BCODES, 1);
++      if (rc[0] >= 0) ioctl(rc[0], RC_IOCTL_BCODES, 1);
++      if (rc[1] >= 0) ioctl(rc[1], RC_IOCTL_BCODES, 1);
+@@ -682,9 +687,12 @@
+       close(lcd);
+       
+       /* close rc */
+-      close(rc);
++      if (rc[0] >= 0)
++              close(rc[0]);
++      if (rc[1] >= 0)
++              close(rc[1]);
+-      lcd = rc = -1;
++      lcd = rc[0] = rc[1] = -1;
+  
+       if (hotlistchanged)
+               savehotlist();
+@@ -2819,20 +2827,28 @@
+       timeout.tv_sec = 0;
+       timeout.tv_usec = 100000;
+       /* get code */
+-      if (rc >= 0)
++      if (rc[0] >= 0)
++      {
++              FD_SET(rc[0], &rset);
++              if (rc[0] > maxfd)
++              {
++                      maxfd = rc[0];
++              }
++      }
++      if (rc[1] >= 0)
+       {
+-              FD_SET(rc, &rset);
+-              if (rc > maxfd)
++              FD_SET(rc[1], &rset);
++              if (rc[1] > maxfd)
+               {
+-                      maxfd = rc;
++                      maxfd = rc[1];
+               }
+       }
+       if (select(maxfd + 1, &rset, NULL, NULL, &timeout) > 0)
+       {
+-              if (rc >= 0 && FD_ISSET(rc, &rset))
++              if (rc[0] >= 0 && FD_ISSET(rc[0], &rset))
+               {
+ #if HAVE_DVB_API_VERSION < 3
+-                      read(rc, &RCCode, 2);
++                      read(rc[0], &RCCode, 2);
+               }
+               if (RCCode != LastKey)
+               {
+@@ -2842,7 +2858,11 @@
+                       {
+                               switch (RCCode)
+ #else
+-                      read(rc, &ev, sizeof(ev));
++                      read(rc[0], &ev, sizeof(ev));
++              }
++              else if (rc[1] >= 0 && FD_ISSET(rc[1], &rset))
++              {
++                      read(rc[1], &ev, sizeof(ev));
+               }
+               if (ev.value)
+               {
+Only in tuxtxt_orig/: tuxtxt.c.orig
+diff -u tuxtxt_orig/tuxtxt.h tuxtxt/tuxtxt.h
+--- tuxtxt_orig/tuxtxt.h       2009-01-29 21:38:18.000000000 +0100
++++ tuxtxt/tuxtxt.h    2009-01-29 21:44:29.000000000 +0100
+@@ -209,7 +209,7 @@
+ int hotlist[10];
+ int maxhotlist;
+-int rc, lcd;
++int rc[2], lcd;
+ int lastpage;
+ int savedscreenmode;
+ char dumpl25;
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/add_new_default_conf.diff b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/add_new_default_conf.diff
new file mode 100644 (file)
index 0000000..3cb476d
--- /dev/null
@@ -0,0 +1,36 @@
+diff -Naur tuxtxt_org/tuxtxt2.conf tuxtxt_32bpp/tuxtxt2.conf
+--- tuxtxt/tuxtxt2.conf        1970-01-01 01:00:00.000000000 +0100
++++ tuxtxt/tuxtxt2.conf        2006-03-10 22:07:15.000000000 +0100
+@@ -0,0 +1,23 @@
++ScreenMode16x9Normal 1
++ScreenMode16x9Divided 1
++Brightness 16
++MenuLanguage 1
++AutoNational 1
++NationalSubset 5
++SwapUpDown 0
++ShowHexPages 0
++Transparency 0xA
++TTFWidthFactor16 28
++TTFHeightFactor16 16
++TTFShiftX 0
++TTFShiftY 0
++Screenmode 0
++ShowFLOF 1
++Show39 1
++ShowLevel2p5 1
++DumpLevel2p5 0
++UseTTF 0
++StartX 50
++EndX 670
++StartY 30
++EndY 555
+diff -Naur tuxtxt_org/tuxtxt.conf tuxtxt_32bpp/tuxtxt.conf
+--- tuxtxt/tuxtxt.conf 2006-03-10 22:13:26.000000000 +0100
++++ tuxtxt/tuxtxt.conf 1970-01-01 01:00:00.000000000 +0100
+@@ -1,5 +0,0 @@
+-ScreenMode16x9Normal 0
+-ScreenMode16x9Divided 0
+-ColorDimmed 1
+-AutoNational 1
+-NationalSubset 4
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/allow_different_demux.diff b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/allow_different_demux.diff
new file mode 100644 (file)
index 0000000..b2881f7
--- /dev/null
@@ -0,0 +1,77 @@
+--- tuxtxt-org/tuxtxt.c        2010-02-10 20:48:39.000000000 +0100
++++ tuxtxt/tuxtxt.c    2010-02-10 20:52:39.000000000 +0100
+@@ -172,6 +172,7 @@
+ {
+       char cvs_revision[] = "$Revision: 1.108 $";
++      int demux = 0;
+       int cnt=0;
+       int rc_num = 0;
+ #if !TUXTXT_CFG_STANDALONE
+@@ -187,18 +188,31 @@
+       tuxtxt_SetRenderingDefaults(&renderinfo);
+       /* get params */
+-      tuxtxt_cache.vtxtpid = renderinfo.fb = lcd = renderinfo.sx = renderinfo.ex = renderinfo.sy = renderinfo.ey = -1;
++      tuxtxt_cache.vtxtpid = 0;
++      renderinfo.fb = lcd = renderinfo.sx = renderinfo.ex = renderinfo.sy = renderinfo.ey = -1;
+       if (argc==1)
+       {
+-              printf("\nUSAGE: tuxtxt vtpid\n");
+-              printf("No PID given, so scanning for PIDs ...\n\n");
+-              tuxtxt_cache.vtxtpid=0;
++              printf("\nUSAGE: tuxtxt [demux] [vtpid]\n");
++              printf("No Demux and PID given, so using demux0 and scanning for PIDs ...\n\n");
+       }
+-      else 
++      else
+       {
+-              tuxtxt_cache.vtxtpid = atoi(argv[1]);
++              demux = atoi(argv[1]);
++              if (argc > 2)
++                      tuxtxt_cache.vtxtpid = atoi(argv[2]);
++              else
++              {
++                      printf("\nUSAGE: tuxtxt [demux] [vtpid]\n");
++                      printf("No PID given, so scanning for PIDs ...\n\n");
++              }
+       }
++#if HAVE_DVB_API_VERSION < 3
++      snprintf(tuxtxt_cache.demux, 64, "/dev/dvb/card0/demux%d", demux);
++#else
++      snprintf(tuxtxt_cache.demux, 64, "/dev/dvb/adapter0/demux%d", demux);
++#endif
++
+       /* open Framebuffer */
+       if ((renderinfo.fb=open("/dev/fb/0", O_RDWR)) == -1)
+       {
+@@ -616,7 +630,7 @@
+       tuxtxt_init_demuxer();
+       tuxtxt_start_thread();
+ #else
+-      tuxtxt_start(tuxtxt_cache.vtxtpid);
++      tuxtxt_start(tuxtxt_cache.vtxtpid, -1);
+ #endif
+@@ -1821,7 +1835,7 @@
+                                                               tuxtxt_cache.vtxtpid = pid_table[current_pid].vtxt_pid;
+                                                               tuxtxt_start_thread();
+ #else
+-                                                              tuxtxt_start(pid_table[current_pid].vtxt_pid);
++                                                              tuxtxt_start(pid_table[current_pid].vtxt_pid, -1);
+ #endif
+                                                       }
+ //                                                    tuxtxt_cache.pageupdate = 1;
+--- tuxtxt-org/tuxtxt.h        2010-02-10 20:48:39.000000000 +0100
++++ tuxtxt/tuxtxt.h    2010-02-10 20:49:07.000000000 +0100
+@@ -63,7 +63,7 @@
+ extern tstPageAttr tuxtxt_atrtable[];
+ extern int tuxtxt_init();
+ extern void tuxtxt_close();
+-extern int  tuxtxt_start(int tpid);  // Start caching
++extern int  tuxtxt_start(int tpid, int demux);  // Start caching
+ extern int  tuxtxt_stop(); // Stop caching
+ extern void tuxtxt_next_dec(int *i); /* skip to next decimal */
+ extern void tuxtxt_prev_dec(int *i); /* counting down */
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/makefiles.diff b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/makefiles.diff
new file mode 100644 (file)
index 0000000..da3b517
--- /dev/null
@@ -0,0 +1,548 @@
+diff -Naur tuxtxt_org/AUTHORS tuxtxt/AUTHORS
+--- tuxtxt_org/AUTHORS 1970-01-01 01:00:00.000000000 +0100
++++ tuxtxt/AUTHORS     2006-12-28 12:08:57.000000000 +0100
+@@ -0,0 +1,25 @@
++In order of appearance in cvs:
++------------------------------------------------
++Felix Domke           <tmbinc@berlios.de>
++Andreas Oberritter    <obi@berlios.de>
++Steffen Hehn          <mcclean@berlios.de>
++Andreas Monzner               <ghostrider@berlios.de>
++Florian Roks          <trh@berlios.de>
++Ronny Strutz          <tripledes@berlios.de>
++Bastian Blank         <waldi@berlios.de>
++Henning Heinold               <woglinde@berlios.de>
++Rainer Scherg         <rasc@berlios.de>
++Steffen Buehl         <shadow@berlios.de>
++Wolfram Joost         <wjoost@berlios.de>
++Thomas Herold         <dertom@berlios.de>
++Stefan Pluecken               <thedoc@berlios.de>
++Florian Schirmer      <jolt@berlios.de>
++Christoph Ketzler     <chkdesign@berlios.de>
++Bernhard Roth         <bernroth@berlios.de>
++Roland Meier          <RolandMeier@Siemens.com>
++DBLuelle              <dbluelle@blau-weissoedingend.de>
++
++
++Also many thanks to everyone who supported development
++without having cvs write access
++
+diff -Naur tuxtxt_org/Makefile.am tuxtxt/Makefile.am
+--- tuxtxt_org/Makefile.am     2006-12-28 12:10:01.000000000 +0100
++++ tuxtxt/Makefile.am 2006-12-28 12:10:27.000000000 +0100
+@@ -1,37 +1,18 @@
+-SUBDIRS = font 
++installdir = $(CONFIGDIR)/tuxtxt
+-if BOXTYPE_DREAMBOX
+-AM_CPPFLAGS = \
+-      @FREETYPE_CFLAGS@ \
+-      -I$(top_srcdir)/include \
+-      -I$(includedir)/tuxbox/tuxtxt 
++SUBDIRS = font python
+-tuxtxt_la_LIBADD = \
+-      @FREETYPE_LIBS@ \
+-      @TUXTXT_LIBS@
+-else
+ AM_CPPFLAGS = \
+-      @TUXBOX_CFLAGS@ \
+       @FREETYPE_CFLAGS@ \
++      -funsigned-char \
+       -I$(top_srcdir)/include \
+-      -I$(includedir)/tuxbox/tuxtxt 
++      -I$(prefix)/$(includedir)/tuxbox/tuxtxt 
+-tuxtxt_la_LIBADD = \
+-      @TUXBOX_LIBS@  \
++bin_PROGRAMS = tuxtxt
++tuxtxt_LDADD = -lpthread -lz \
+       @FREETYPE_LIBS@ \
+-      @TUXTXT_LIBS@ 
+-endif
+-
+-noinst_LTLIBRARIES = tuxtxt.la
+-
+-tuxtxt_la_SOURCES = tuxtxt.c
++      @TUXTXT_LIBS@
+-tuxtxt_la_LDFLAGS = -rpath $(PLUGINDIR) -module -avoid-version
++tuxtxt_SOURCES = tuxtxt.c
+-install-exec-local:
+-      install -d $(DESTDIR)$(PLUGINDIR)
+-      install -d $(DESTDIR)$(CONFIGDIR)
+-      install -d $(DESTDIR)$(CONFIGDIR)/tuxtxt
+-      $(LIBTOOL) --mode=install install tuxtxt.la $(DESTDIR)$(PLUGINDIR)
+-      install -m 0644 $(srcdir)/tuxtxt.cfg $(DESTDIR)$(PLUGINDIR)
+-      install -m 0644 $(srcdir)/tuxtxt.conf $(DESTDIR)$(CONFIGDIR)/tuxtxt
++install_DATA = tuxtxt2.conf
+diff -Naur tuxtxt_org/acinclude.m4 tuxtxt/acinclude.m4
+--- tuxtxt_org/acinclude.m4    1970-01-01 01:00:00.000000000 +0100
++++ tuxtxt/acinclude.m4        2006-12-28 12:08:57.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])
++])
+diff -Naur tuxtxt_org/configure.ac tuxtxt/configure.ac
+--- tuxtxt_org/configure.ac    1970-01-01 01:00:00.000000000 +0100
++++ tuxtxt/configure.ac        2006-12-28 12:08:58.000000000 +0100
+@@ -0,0 +1,18 @@
++AC_INIT(tuxbox-tuxtxt-32bpp,1.96)
++AM_INIT_AUTOMAKE(tuxbox-tuxtxt-32bpp,1.96)
++
++TUXBOX_APPS
++TUXBOX_APPS_DIRECTORY
++TUXBOX_APPS_DVB
++TUXBOX_APPS_DRIVER
++
++# Checks for programs.
++AC_PROG_CC
++AM_PATH_PYTHON
++
++TUXBOX_APPS_LIB_CONFIG(FREETYPE,freetype-config)
++TUXBOX_APPS_LIB_PKGCONFIG(TUXTXT,tuxbox-tuxtxt)
++
++AC_OUTPUT(Makefile)
++AC_OUTPUT(font/Makefile)
++AC_OUTPUT(python/Makefile)
+diff -Naur tuxtxt_32bpp/python/Makefile.am tuxtxt/python/Makefile.am
+--- tuxtxt/python/Makefile.am  1970-01-01 01:00:00.000000000 +0100
++++ tuxtxt/python/Makefile.am  2006-03-10 21:43:45.000000000 +0100
+@@ -0,0 +1,5 @@
++installdir = $(LIBDIR)/enigma2/python/Plugins/Extensions/Tuxtxt
++
++install_PYTHON = \
++      plugin.py \
++      __init__.py
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/nonblocking.diff b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/nonblocking.diff
new file mode 100644 (file)
index 0000000..6867e6c
--- /dev/null
@@ -0,0 +1,142 @@
+diff -u tuxtxt_orig/tuxtxt.c tuxtxt/tuxtxt.c
+--- tuxtxt_orig/tuxtxt.c       2008-12-26 19:41:28.000000000 +0100
++++ tuxtxt/tuxtxt.c    2009-01-29 21:36:31.000000000 +0100
+@@ -535,7 +535,6 @@
+       /* setup rc */
+-      fcntl(rc, F_SETFL, O_NONBLOCK);
+       ioctl(rc, RC_IOCTL_BCODES, 1);
+@@ -1214,7 +1213,7 @@
+ void ConfigMenu(int Init)
+ {
+-      int val, menuitem = M_Start;
++      int menuitem = M_Start;
+       int current_pid = 0;
+       int hotindex;
+       int oldscreenmode;
+@@ -1257,10 +1256,6 @@
+       renderinfo.clearbbcolor = tuxtxt_color_black;
+       Menu_Init(menu, current_pid, menuitem, hotindex);
+-      /* set blocking mode */
+-      val = fcntl(rc, F_GETFL);
+-      fcntl(rc, F_SETFL, val &~ O_NONBLOCK);
+-
+       /* loop */
+       do {
+               if (GetRCCode() == 1)
+@@ -1721,7 +1716,6 @@
+                                               current_service = current_pid;
+ //                                            RenderMessage(ShowServiceName);
+-                                              fcntl(rc, F_SETFL, O_NONBLOCK);
+                                               RCCode = -1;
+                                               if (oldscreenmode)
+                                                       tuxtxt_SwitchScreenMode(&renderinfo,oldscreenmode); /* restore divided screen */
+@@ -1792,8 +1786,6 @@
+               UpdateLCD(); /* update number of cached pages */
+       } while ((RCCode != RC_HOME) && (RCCode != RC_DBOX) && (RCCode != RC_MUTE));
+-      /* reset to nonblocking mode */
+-      fcntl(rc, F_SETFL, O_NONBLOCK);
+       tuxtxt_cache.pageupdate = 1;
+       RCCode = -1;
+       if (oldscreenmode)
+@@ -2013,7 +2005,7 @@
+ void PageCatching()
+ {
+       int active_national_subset=tuxtxt_cache.national_subset;
+-      int val, byte;
++      int byte;
+       int oldzoommode = renderinfo.zoommode;
+       renderinfo.pagecatching = 1;
+@@ -2046,10 +2038,6 @@
+               return;
+       }
+-      /* set blocking mode */
+-      val = fcntl(rc, F_GETFL);
+-      fcntl(rc, F_SETFL, val &~ O_NONBLOCK);
+-
+       /* loop */
+       do {
+               GetRCCode();
+@@ -2088,7 +2076,6 @@
+               case RC_HOME:
+               case RC_HELP:
+               case RC_MUTE:
+-                      fcntl(rc, F_SETFL, O_NONBLOCK);
+                       tuxtxt_cache.pageupdate = 1;
+                       renderinfo.pagecatching = 0;
+                       RCCode = -1;
+@@ -2112,9 +2099,6 @@
+               tuxtxt_cache.subpage = subp;
+       else
+               tuxtxt_cache.subpage = 0;
+-
+-      /* reset to nonblocking mode */
+-      fcntl(rc, F_SETFL, O_NONBLOCK);
+ }
+ /******************************************************************************
+@@ -2712,16 +2696,34 @@
+ int GetRCCode()
+ {
++      int maxfd = 0;
++      fd_set rset;
++      struct timeval timeout;
+ #if HAVE_DVB_API_VERSION < 3
+       static unsigned short LastKey = -1;
+ #else
+       struct input_event ev;
+       static __u16 rc_last_key = KEY_RESERVED;
+ #endif
++      FD_ZERO(&rset);
++      timeout.tv_sec = 0;
++      timeout.tv_usec = 100000;
+       /* get code */
+-#if HAVE_DVB_API_VERSION < 3
+-      if (read(rc, &RCCode, 2) == 2)
++      if (rc >= 0)
++      {
++              FD_SET(rc, &rset);
++              if (rc > maxfd)
++              {
++                      maxfd = rc;
++              }
++      }
++      if (select(maxfd + 1, &rset, NULL, NULL, &timeout) > 0)
+       {
++              if (rc >= 0 && FD_ISSET(rc, &rset))
++              {
++#if HAVE_DVB_API_VERSION < 3
++                      read(rc, &RCCode, 2);
++              }
+               if (RCCode != LastKey)
+               {
+                       LastKey = RCCode;
+@@ -2730,8 +2732,8 @@
+                       {
+                               switch (RCCode)
+ #else
+-      if (read(rc, &ev, sizeof(ev)) == sizeof(ev))
+-      {
++                      read(rc, &ev, sizeof(ev));
++              }
+               if (ev.value)
+               {
+                       if (ev.code != rc_last_key)
+@@ -2789,7 +2791,6 @@
+       }
+       RCCode = -1;
+-      usleep(1000000/100);
+       return 0;
+ }
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/plugin.py b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/plugin.py
new file mode 100644 (file)
index 0000000..dad428b
--- /dev/null
@@ -0,0 +1,60 @@
+from enigma import eConsoleAppContainer, iServiceInformation, fbClass, eRCInput, eDBoxLCD, getDesktop
+from Screens.Screen import Screen
+from Plugins.Plugin import PluginDescriptor
+from os import symlink, mkdir, remove, rmdir, path
+
+class ShellStarter(Screen):
+       skin = """
+               <screen position="1,1" size="1,1" title="TuxTXT" >
+                </screen>"""
+       faked_lcd = False
+
+       def __init__(self, session, args = None):
+               self.skin = ShellStarter.skin
+               Screen.__init__(self, session)
+               self.container=eConsoleAppContainer()
+               self.container.appClosed.append(self.finished)
+               self.runapp()
+
+       def runapp(self):
+               service = self.session.nav.getCurrentService()
+               info = service and service.info()
+               txtpid = info and "%d" %(info.getInfo(iServiceInformation.sTXTPID)) or ""
+
+               stream = service and service.stream()
+               demux = stream and stream.getStreamingData()
+               demux = demux and demux.get("demux", -1)
+               demux = demux > -1 and "%d" %(demux) or ""
+
+               eDBoxLCD.getInstance().lock()
+               eRCInput.getInstance().lock()
+               fbClass.getInstance().lock()
+
+               self.faked_lcd = not path.exists("/dev/dbox")
+               if self.faked_lcd:
+                       mkdir("/dev/dbox")
+                       symlink("/dev/null", "/dev/dbox/lcd0")
+
+               if self.container.execute("/usr/bin/tuxtxt " + demux + " " + txtpid):
+                       self.finished(-1)
+
+       def finished(self,retval):
+               fbClass.getInstance().unlock()
+               eRCInput.getInstance().unlock()
+               eDBoxLCD.getInstance().unlock()
+
+               if self.faked_lcd:
+                       remove("/dev/dbox/lcd0")
+                       rmdir("/dev/dbox")
+
+               #force redraw
+               dsk = getDesktop(0)
+               dsk.resize(dsk.size())
+
+               self.close()
+
+def main(session, **kwargs):
+       session.open(ShellStarter)
+
+def Plugins(**kwargs):
+       return PluginDescriptor(name="TuxTXT", description="Videotext", where = PluginDescriptor.WHERE_TELETEXT, fnc=main)
diff --git a/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/vuplus/tuxtxt_vuplus.patch b/meta-openvuplus/recipes-base/tuxtxt/tuxbox-tuxtxt-32bpp/vuplus/tuxtxt_vuplus.patch
new file mode 100644 (file)
index 0000000..4c2a950
--- /dev/null
@@ -0,0 +1,12 @@
+--- tuxtxt_org/tuxtxt.c        2010-04-01 13:18:13.000000000 +0900
++++ tuxtxt/tuxtxt.c    2010-04-01 13:21:57.000000000 +0900
+@@ -2664,7 +2664,8 @@
+       static int init_lcd = 1, old_cached_pages = -1, old_page = -1, old_subpage = -1, old_subpage_max = -1, old_hintmode = -1;
+       int  x, y, subpage_max = 0, update_lcd = 0;
+-      if (lcd == -1) return; // for Dreamboxes without LCD-Display (5xxx)
++//    if (lcd == -1) 
++              return; // for Dreamboxes without LCD-Display (5xxx)
+       /* init or update lcd */
+       if (init_lcd)
+       {
diff --git a/meta-openvuplus/recipes-base/usbtunerhelper/usbtunerhelper.bb b/meta-openvuplus/recipes-base/usbtunerhelper/usbtunerhelper.bb
new file mode 100644 (file)
index 0000000..dbbf4d5
--- /dev/null
@@ -0,0 +1,23 @@
+DESCIPTION = "helper tool to use usb dvb frontends"
+MAINTAINER = "PLi team"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${THISDIR}/${PN}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+
+PV = "1.0+git${SRCPV}"
+PR = "r1"
+SRC_REV = ""
+
+SRC_URI = "git://openpli.git.sourceforge.net/gitroot/openpli/vtuner;protocol=git;tag=${SRC_REV} \
+       file://${PN}.sh "
+
+S = "${WORKDIR}/git"
+
+inherit autotools update-rc.d
+
+INITSCRIPT_NAME = "${PN}"
+INITSCRIPT_PARAMS = "defaults"
+
+do_install_append() {
+       install -d ${D}/etc/init.d
+       install -m 0755 ${WORKDIR}/${PN}.sh ${D}/etc/init.d/${PN}
+}
diff --git a/meta-openvuplus/recipes-base/usbtunerhelper/usbtunerhelper/GPL-2.0 b/meta-openvuplus/recipes-base/usbtunerhelper/usbtunerhelper/GPL-2.0
new file mode 100644 (file)
index 0000000..7f5abbc
--- /dev/null
@@ -0,0 +1,132 @@
+
+GNU GENERAL PUBLIC LICENSE
+
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.  
+51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+
+Everyone is permitted to copy and distribute verbatim copies
+of this license document, but changing it is not allowed.
+Preamble
+
+The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation`s software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.
+
+We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.
+
+Also, for each author`s protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors` reputations.
+
+Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone`s free use or not licensed at all.
+
+The precise terms and conditions for copying, distribution and modification follow.
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.
+
+1. You may copy and distribute verbatim copies of the Program`s source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.
+
+2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
+
+a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
+b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
+c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)
+These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.
+
+3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
+
+a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
+c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)
+The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
+
+If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.
+
+4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
+
+5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
+
+6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients` exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
+
+7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.
+
+This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.
+
+8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
+
+9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.
+
+10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
+
+NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
+
+To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
+
+one line to give the program`s name and an idea of what it does.
+Copyright (C) yyyy  name of author
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
+
+Gnomovision version 69, Copyright (C) year name of author
+Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
+type `show w`.  This is free software, and you are welcome
+to redistribute it under certain conditions; type `show c` 
+for details.
+The hypothetical commands `show w` and `show c` should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w` and `show c`; they could even be mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:
+
+Yoyodyne, Inc., hereby disclaims all copyright
+interest in the program `Gnomovision`
+(which makes passes at compilers) written 
+by James Hacker.
+
+signature of Ty Coon, 1 April 1989
+Ty Coon, President of Vice
+This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License.
+
diff --git a/meta-openvuplus/recipes-base/usbtunerhelper/usbtunerhelper/usbtunerhelper.sh b/meta-openvuplus/recipes-base/usbtunerhelper/usbtunerhelper/usbtunerhelper.sh
new file mode 100644 (file)
index 0000000..424cf3d
--- /dev/null
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+if ! [ -x /usr/bin/usbtunerhelper ]; then
+       exit 0
+fi
+
+case "$1" in
+       start)
+               start-stop-daemon -S -x /usr/bin/usbtunerhelper
+               ;;
+       stop)
+               start-stop-daemon -K -x /usr/bin/usbtunerhelper
+               ;;
+       restart|reload)
+               $0 stop
+               $0 start
+               ;;
+       *)
+               echo "Usage: $0 {start|stop|restart}"
+               exit 1
+               ;;
+esac
+
+exit 0
diff --git a/meta-openvuplus/recipes-base/vsftpd/vsftpd/01-builddefs.patch b/meta-openvuplus/recipes-base/vsftpd/vsftpd/01-builddefs.patch
new file mode 100644 (file)
index 0000000..a757d99
--- /dev/null
@@ -0,0 +1,18 @@
+Author: Daniel Jacobowitz <dan@debian.org>
+Description: Build with tcpwrapper and SSL support.
+
+diff -Naurp vsftpd.orig/builddefs.h vsftpd/builddefs.h
+--- vsftpd.orig/builddefs.h    2009-01-31 00:02:36.000000000 +0000
++++ vsftpd/builddefs.h 2009-01-31 00:26:34.000000000 +0000
+@@ -1,9 +1,9 @@
+ #ifndef VSF_BUILDDEFS_H
+ #define VSF_BUILDDEFS_H
+-#undef VSF_BUILD_TCPWRAPPERS
++#define VSF_BUILD_TCPWRAPPERS 1
+ #define VSF_BUILD_PAM
+-#undef VSF_BUILD_SSL
++#define VSF_BUILD_SSL
+ #endif /* VSF_BUILDDEFS_H */
diff --git a/meta-openvuplus/recipes-base/vsftpd/vsftpd/02-config.patch b/meta-openvuplus/recipes-base/vsftpd/vsftpd/02-config.patch
new file mode 100644 (file)
index 0000000..6d7965d
--- /dev/null
@@ -0,0 +1,120 @@
+Author: Daniel Jacobowitz <dan@debian.org>
+Description: Set default configuration.
+
+diff -Naurp vsftpd.orig/tunables.c vsftpd/tunables.c
+--- vsftpd.orig/tunables.c     2009-07-15 22:08:27.000000000 +0200
++++ vsftpd/tunables.c  2009-11-06 13:33:34.000000000 +0100
+@@ -246,7 +246,7 @@ tunables_load_defaults()
+   /* -rw------- */
+   tunable_chown_upload_mode = 0600;
+-  install_str_setting("/usr/share/empty", &tunable_secure_chroot_dir);
++  install_str_setting("/var/run/vsftpd/empty", &tunable_secure_chroot_dir);
+   install_str_setting("ftp", &tunable_ftp_username);
+   install_str_setting("root", &tunable_chown_username);
+   install_str_setting("/var/log/xferlog", &tunable_xferlog_file);
+@@ -256,7 +256,7 @@ tunables_load_defaults()
+   install_str_setting(0, &tunable_ftpd_banner);
+   install_str_setting("/etc/vsftpd.banned_emails", &tunable_banned_email_file);
+   install_str_setting("/etc/vsftpd.chroot_list", &tunable_chroot_list_file);
+-  install_str_setting("ftp", &tunable_pam_service_name);
++  install_str_setting("vsftpd", &tunable_pam_service_name);
+   install_str_setting("ftp", &tunable_guest_username);
+   install_str_setting("/etc/vsftpd.user_list", &tunable_userlist_file);
+   install_str_setting(0, &tunable_anon_root);
+diff -Naurp vsftpd.orig/vsftpd.conf vsftpd/vsftpd.conf
+--- vsftpd.orig/vsftpd.conf    2009-11-06 08:41:11.000000000 +0100
++++ vsftpd/vsftpd.conf 2009-11-06 13:35:37.000000000 +0100
+@@ -8,6 +8,17 @@
+ # Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
+ # capabilities.
+ #
++#
++# Run standalone?  vsftpd can run either from an inetd or as a standalone
++# daemon started from an initscript.
++listen=YES
++#
++# Run standalone with IPv6?
++# Like the listen parameter, except vsftpd will listen on an IPv6 socket
++# instead of an IPv4 one. This parameter and the listen parameter are mutually
++# exclusive.
++#listen_ipv6=YES
++#
+ # Allow anonymous FTP? (Beware - allowed by default if you comment this out).
+ anonymous_enable=YES
+ #
+@@ -34,6 +45,12 @@ anonymous_enable=YES
+ # go into a certain directory.
+ dirmessage_enable=YES
+ #
++# If enabled, vsftpd will display directory listings with the time
++# in  your  local  time  zone.  The default is to display GMT. The
++# times returned by the MDTM FTP command are also affected by this
++# option.
++use_localtime=YES
++#
+ # Activate logging of uploads/downloads.
+ xferlog_enable=YES
+ #
+@@ -89,6 +106,11 @@ connect_from_port_20=YES
+ # (default follows)
+ #banned_email_file=/etc/vsftpd.banned_emails
+ #
++# You may restrict local users to their home directories.  See the FAQ for
++# the possible risks in this before using chroot_local_user or
++# chroot_list_enable below.
++#chroot_local_user=YES
++#
+ # You may specify an explicit list of local users to chroot() to their home
+ # directory. If chroot_local_user is YES, then this list becomes a list of
+ # users to NOT chroot().
+@@ -103,12 +125,20 @@ connect_from_port_20=YES
+ # the presence of the "-R" option, so there is a strong case for enabling it.
+ #ls_recurse_enable=YES
+ #
+-# When "listen" directive is enabled, vsftpd runs in standalone mode and
+-# listens on IPv4 sockets. This directive cannot be used in conjunction
+-# with the listen_ipv6 directive.
+-listen=YES
++# Customization
+ #
+-# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
+-# sockets, you must run two copies of vsftpd with two configuration files.
+-# Make sure, that one of the listen options is commented !!
+-#listen_ipv6=YES
++# Some of vsftpd's settings don't fit the filesystem layout by
++# default.
++#
++# This option should be the name of a directory which is empty.  Also, the
++# directory should not be writable by the ftp user. This directory is used
++# as a secure chroot() jail at times vsftpd does not require filesystem
++# access.
++secure_chroot_dir=/var/run/vsftpd/empty
++#
++# This string is the name of the PAM service vsftpd will use.
++pam_service_name=vsftpd
++#
++# This option specifies the location of the RSA certificate to use for SSL
++# encrypted connections.
++rsa_cert_file=/etc/ssl/private/vsftpd.pem
+diff -Naurp vsftpd.orig/vsftpd.conf.5 vsftpd/vsftpd.conf.5
+--- vsftpd.orig/vsftpd.conf.5  2009-11-06 08:41:11.000000000 +0100
++++ vsftpd/vsftpd.conf.5       2009-11-06 13:37:10.000000000 +0100
+@@ -940,7 +940,7 @@ Default: nobody
+ .B pam_service_name
+ This string is the name of the PAM service vsftpd will use.
+-Default: ftp
++Default: vsftpd
+ .TP
+ .B pasv_address
+ Use this option to override the IP address that vsftpd will advertise in
+@@ -969,7 +969,7 @@ This option should be the name of a dire
+ directory should not be writable by the ftp user. This directory is used
+ as a secure chroot() jail at times vsftpd does not require filesystem access.
+-Default: /usr/share/empty
++Default: /var/run/vsftpd/empty
+ .TP
+ .B ssl_ciphers
+ This option can be used to select which SSL ciphers vsftpd will allow for
diff --git a/meta-openvuplus/recipes-base/vsftpd/vsftpd/03-db-doc.patch b/meta-openvuplus/recipes-base/vsftpd/vsftpd/03-db-doc.patch
new file mode 100644 (file)
index 0000000..d544ef0
--- /dev/null
@@ -0,0 +1,19 @@
+Author: shaul Karl <shaulkarl@yahoo.com>
+Description:
+ A short explanation how to find out the right db version (Closes: #478282).
+
+diff -Naurp vsftpd.orig/EXAMPLE/VIRTUAL_USERS/README vsftpd/EXAMPLE/VIRTUAL_USERS/README
+--- vsftpd.orig/EXAMPLE/VIRTUAL_USERS/README   2009-01-31 00:02:36.000000000 +0000
++++ vsftpd/EXAMPLE/VIRTUAL_USERS/README        2009-01-31 01:38:11.000000000 +0000
+@@ -21,7 +21,10 @@ NOTE: Many systems have multiple version
+ need to use e.g. db3_load for correct operation. This is known to affect
+ some Debian systems. The core issue is that pam_userdb expects its login
+ database to be a specific db version (often db3, whereas db4 may be installed
+-on your system).
++on your system). You might check ahead what specific db version you'll need
++by looking at the dependcies of the pam module. Some methods to do that is to
++run ldd on the pam_userdb.so or look at the dependencies of the package with
++the pam modules.
+ This will create /etc/vsftpd_login.db. Obviously, you may want to make sure
+ the permissions are restricted:
diff --git a/meta-openvuplus/recipes-base/vsftpd/vsftpd/04-link-local.patch b/meta-openvuplus/recipes-base/vsftpd/vsftpd/04-link-local.patch
new file mode 100644 (file)
index 0000000..53b3735
--- /dev/null
@@ -0,0 +1,91 @@
+Author: Michael Stapelberg <michael@stapelberg.de>
+Description:
+ vsftpd does not accept IPv6 scope identifier in listen_address6
+ (Closes: #544993).
+ .
+ When specifying a link-local address, you need a scope identifier (tha name of
+ the index usually), thus you cannot use the following:
+ listen_address6=fe80::21f:16ff:fe06:3aab
+ but you have to use:
+ listen_address6=fe80::21f:16ff:fe06:3aab%eth0
+ so that it is clear on which interface this link-local address should be used.
+ .
+ Unfortunately, vsftpd does not correctly parse the address mentioned above and
+ thus fails to be useful in link-local-only environments.
+ .
+ This patch fixes it.
+
+diff -Naurp vsftpd.orig/standalone.c vsftpd/standalone.c
+--- vsftpd.orig/standalone.c   2009-10-02 14:15:18.000000000 +0200
++++ vsftpd/standalone.c        2009-10-17 17:10:02.000000000 +0200
+@@ -7,6 +7,8 @@
+  * Code to listen on the network and launch children servants.
+  */
++#include <net/if.h>
++
+ #include "standalone.h"
+ #include "parseconf.h"
+@@ -111,8 +113,17 @@ vsf_standalone_main(void)
+     else
+     {
+       struct mystr addr_str = INIT_MYSTR;
++      struct mystr scope_id = INIT_MYSTR;
+       const unsigned char* p_raw_addr;
++      unsigned int if_index = 0;
++
++      /* See if we got a scope id */
+       str_alloc_text(&addr_str, tunable_listen_address6);
++      str_split_char(&addr_str, &scope_id, '%');
++      if (str_getlen(&scope_id) > 0) {
++        if_index = if_nametoindex(str_getbuf(&scope_id));
++        str_free(&scope_id);
++      }
+       p_raw_addr = vsf_sysutil_parse_ipv6(&addr_str);
+       str_free(&addr_str);
+       if (!p_raw_addr)
+@@ -120,6 +131,7 @@ vsf_standalone_main(void)
+         die2("bad listen_address6: ", tunable_listen_address6);
+       }
+       vsf_sysutil_sockaddr_set_ipv6addr(p_sockaddr, p_raw_addr);
++      vsf_sysutil_sockaddr_set_ipv6scope(p_sockaddr, if_index);
+     }
+     retval = vsf_sysutil_bind(listen_sock, p_sockaddr);
+     vsf_sysutil_free(p_sockaddr);
+diff -Naurp vsftpd.orig/sysutil.c vsftpd/sysutil.c
+--- vsftpd.orig/sysutil.c      2009-10-02 14:15:18.000000000 +0200
++++ vsftpd/sysutil.c   2009-10-17 17:10:02.000000000 +0200
+@@ -2039,6 +2039,19 @@ vsf_sysutil_sockaddr_set_ipv6addr(struct
+   }
+ }
++int
++vsf_sysutil_sockaddr_get_ipv6scope(struct vsf_sysutil_sockaddr* p_sockptr)
++{
++  return p_sockptr->u.u_sockaddr_in6.sin6_scope_id;
++}
++
++void
++vsf_sysutil_sockaddr_set_ipv6scope(struct vsf_sysutil_sockaddr* p_sockptr,
++                                  const int scope_id)
++{
++  p_sockptr->u.u_sockaddr_in6.sin6_scope_id = scope_id;
++}
++
+ const void*
+ vsf_sysutil_sockaddr_ipv6_v4(const struct vsf_sysutil_sockaddr* p_addr)
+ {
+diff -Naurp vsftpd.orig/sysutil.h vsftpd/sysutil.h
+--- vsftpd.orig/sysutil.h      2009-10-02 14:15:18.000000000 +0200
++++ vsftpd/sysutil.h   2009-10-17 17:10:02.000000000 +0200
+@@ -228,6 +228,9 @@ void vsf_sysutil_sockaddr_set_ipv4addr(s
+                                        const unsigned char* p_raw);
+ void vsf_sysutil_sockaddr_set_ipv6addr(struct vsf_sysutil_sockaddr* p_sockptr,
+                                        const unsigned char* p_raw);
++void vsf_sysutil_sockaddr_set_ipv6scope(struct vsf_sysutil_sockaddr* p_sockptr,
++                                      const int scope_id);
++int vsf_sysutil_sockaddr_get_ipv6scope(struct vsf_sysutil_sockaddr* p_sockptr);
+ void vsf_sysutil_sockaddr_set_any(struct vsf_sysutil_sockaddr* p_sockaddr);
+ unsigned short vsf_sysutil_sockaddr_get_port(
+     const struct vsf_sysutil_sockaddr* p_sockptr);
diff --git a/meta-openvuplus/recipes-base/vsftpd/vsftpd/05-whitespaces.patch b/meta-openvuplus/recipes-base/vsftpd/vsftpd/05-whitespaces.patch
new file mode 100644 (file)
index 0000000..569ce38
--- /dev/null
@@ -0,0 +1,81 @@
+Author: Jiri Skala <jskala@redhat.com>
+Description: trim white spaces from option values (Closes: #419857, #536803).
+
+diff -Naurp vsftpd.orig/parseconf.c vsftpd/parseconf.c
+--- vsftpd.orig/parseconf.c    2009-10-02 14:15:18.000000000 +0200
++++ vsftpd/parseconf.c 2009-10-18 11:28:31.000000000 +0200
+@@ -275,7 +275,7 @@ vsf_parseconf_load_setting(const char* p
+         }
+         else
+         {
+-          *p_curr_setting = str_strdup(&s_value_str);
++          *p_curr_setting = str_strdup_trimmed(&s_value_str);
+         }
+         return;
+       }
+diff -Naurp vsftpd.orig/str.c vsftpd/str.c
+--- vsftpd.orig/str.c  2009-10-02 14:15:18.000000000 +0200
++++ vsftpd/str.c       2009-10-18 11:28:31.000000000 +0200
+@@ -89,6 +89,18 @@ str_strdup(const struct mystr* p_str)
+   return vsf_sysutil_strdup(str_getbuf(p_str));
+ }
++const char*
++str_strdup_trimmed(const struct mystr* p_str)
++{
++  const char* p_trimmed = str_getbuf(p_str);
++  int h, t, newlen;
++
++  for (h = 0; h < (int)str_getlen(p_str) && vsf_sysutil_isspace(p_trimmed[h]); h++) ;
++  for (t = str_getlen(p_str) - 1; t >= 0 && vsf_sysutil_isspace(p_trimmed[t]); t--) ;
++  newlen = t - h + 1;
++  return newlen ? vsf_sysutil_strndup(p_trimmed+h, (unsigned int)newlen) : 0L;
++}
++
+ void
+ str_alloc_alt_term(struct mystr* p_str, const char* p_src, char term)
+ {
+diff -Naurp vsftpd.orig/str.h vsftpd/str.h
+--- vsftpd.orig/str.h  2009-10-02 14:15:18.000000000 +0200
++++ vsftpd/str.h       2009-10-18 11:28:31.000000000 +0200
+@@ -31,6 +31,7 @@ void str_alloc_ulong(struct mystr* p_str
+ void str_alloc_filesize_t(struct mystr* p_str, filesize_t the_filesize);
+ void str_copy(struct mystr* p_dest, const struct mystr* p_src);
+ const char* str_strdup(const struct mystr* p_str);
++const char* str_strdup_trimmed(const struct mystr* p_str);
+ void str_empty(struct mystr* p_str);
+ void str_free(struct mystr* p_str);
+ void str_trunc(struct mystr* p_str, unsigned int trunc_len);
+diff -Naurp vsftpd.orig/sysutil.c vsftpd/sysutil.c
+--- vsftpd.orig/sysutil.c      2009-10-02 14:15:18.000000000 +0200
++++ vsftpd/sysutil.c   2009-10-18 11:28:31.000000000 +0200
+@@ -1033,6 +1033,18 @@ vsf_sysutil_strdup(const char* p_str)
+   return strdup(p_str);
+ }
++char*
++vsf_sysutil_strndup(const char* p_str, unsigned int p_len)
++{
++  char *new = (char *)malloc(p_len+1);
++
++  if (new == NULL)
++    return NULL;
++
++  new[p_len]='\0';
++  return (char *)memcpy(new, p_str, p_len);
++}
++
+ void
+ vsf_sysutil_memclr(void* p_dest, unsigned int size)
+ {
+diff -Naurp vsftpd.orig/sysutil.h vsftpd/sysutil.h
+--- vsftpd.orig/sysutil.h      2009-10-02 14:15:18.000000000 +0200
++++ vsftpd/sysutil.h   2009-10-18 11:28:31.000000000 +0200
+@@ -186,6 +186,7 @@ int vsf_sysutil_wait_get_exitcode(
+ /* Various string functions */
+ unsigned int vsf_sysutil_strlen(const char* p_text);
+ char* vsf_sysutil_strdup(const char* p_str);
++char* vsf_sysutil_strndup(const char* p_str, unsigned int p_len);
+ void vsf_sysutil_memclr(void* p_dest, unsigned int size);
+ void vsf_sysutil_memcpy(void* p_dest, const void* p_src,
+                         const unsigned int size);
diff --git a/meta-openvuplus/recipes-base/vsftpd/vsftpd/06-greedy.patch b/meta-openvuplus/recipes-base/vsftpd/vsftpd/06-greedy.patch
new file mode 100644 (file)
index 0000000..ff73c9c
--- /dev/null
@@ -0,0