task-vuplus-enigma2
authorChang.H.S <jhs@dev3>
Tue, 27 Nov 2012 09:52:36 +0000 (18:52 +0900)
committerChang.H.S <jhs@dev3>
Tue, 27 Nov 2012 09:52:36 +0000 (18:52 +0900)
608 files changed:
meta-openvuplus/classes/schwerkraft-git.bbclass [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/files/Marvell-Licence.txt [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-drxd-a2.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-af9005.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-fe-af9013.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-af9015.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-af9035.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-avertv-a800.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-dib0700.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-dibusb.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-digitv.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-ec168.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-nova-t-usb2.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-sms1xxx-hcw-dvbt.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-sms1xxx-nova-dvbt.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-ttusb-budget.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-umt-010.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-wt220u-zl0353.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-xc5000.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-htc9271.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-rt2561.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-rt3070.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/firmware-rtl8721u.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/linux-firmware.inc [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/marvell-gspi-fw/9.70.3-p37.tar.gz [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/marvell-gspi-fw_9.70.3-p37.bb [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/marvell-sdio-fw/9.70.3-p37.tar.gz [new file with mode: 0644]
meta-openvuplus/recipes-base/firmwares/marvell-sdio-fw_9.70.3-p37.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/aio-grab/aio-grab/aio-grab_vuplus.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/aio-grab/aio-grab_0.8.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/aio-grab/aio-grab_0.8.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/Makefile.in.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/cdparanoia-III-10.2-privatefix.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/configure.in.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/fixes10.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/interface_Makefile.in.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/paranoia_Makefile.in.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia_svn.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dreambox-dvbincludes/dreambox-dvbincludes.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dreambox-dvbincludes/dreambox-dvbincludes_1.1.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/01peerdns [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/01peerdns-remove [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/dial.modem [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/disconnect.modem [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/dm800/options [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/options [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/pap-secrets [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts_0.1.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dvbtools/dvb-apps-1.1.1/update-to-tip.diff [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dvbtools/dvb-apps-1.1.1/update-to-trunk.diff [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dvbtools/dvb-apps_1.1.1.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dvbtools/dvbstream_cvs.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dvbtools/dvbtune_cvs.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/dvbtools/wscan_20101204.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-defaultservices.bb [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-defaultservices/lamedb.130 [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-defaultservices/lamedb.192 [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-defaultservices/lamedb.282 [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-defaultservices/sat130.info [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-defaultservices/sat192.info [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-defaultservices/sat282.info [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-plugins.bb [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-plugins/vuplus/dreamboxweb.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-plugins/vuplus/dreamboxwebtv.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-plugins/vuplus/enigma2_plugins_20110810.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-plugins/vuplus/enigma2_plugins_ac3lipsync_dolby.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-plugins/vuplus/enigma2_plugins_autoresolution_fix.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-plugins/vuplus/enigma2_plugins_dependency.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-plugins/vuplus/enigma2_plugins_mytube_entry_vuplus.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-plugins/vuplus/enigma2_plugins_mytube_tpm.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-plugins/vuplus/enigma2_plugins_mytube_vuplus.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-plugins/vuplus/enigma2_plugins_webinterface_tpm.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-plugins/vuplus/favicon.ico [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-skins.bb [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-streamproxy.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-streamproxy/streamproxy.socket [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-streamproxy/streamproxy.xinetd.in [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2-streamproxy/streamproxy@.service [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/arrowdown.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/arrowleft.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/arrowright.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/arrowup.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/b_b.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/b_bl.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/b_br.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/b_l.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/b_r.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/b_t.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/b_tl.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/b_tr.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/bar_ber.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/bar_snr.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/bg_list.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/bg_main.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/bg_setup_600.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/bg_setup_650.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/border_epg.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/border_eventinfo.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/border_info.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/border_menu.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/border_menu_300.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/border_menu_350.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/border_menu_a.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/border_menu_c.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/border_multiepg.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/bottombar.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_130x23px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_170x23px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_230x23px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_230x27px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_250x32px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_290x23px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_360x23px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_360x32px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_380x23px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_400x23px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_440x23px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_450x32px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_480x23px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_500x23px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_520x23px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_520x27px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_550x27px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Selected_bar_560x23px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/Thumbs.db [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/blue.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/blue_pressed.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/button_blue.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/button_blue_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/button_green.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/button_green_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/button_red.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/button_red_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/button_yellow.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/button_yellow_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/green-big.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/green.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_0.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_1.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_2.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_3.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_4.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_5.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_6.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_7.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_8.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_9.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_blue.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_green.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_info.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_menu.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_red.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_text.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/key_yellow.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/red-big.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/red.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/singlelineList_left_arrow.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/singlelineList_right_arrow.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/singlelineList_selected_23p.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/singlelineList_selected_23px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/singlelineList_selected_39p.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/singlelineList_selected_39px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/singlelineList_selected_43p.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/singlelineList_selected_48p.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/singlelineList_selected_48px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/singlelineList_selected_72p.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/singlelineList_selected_72px.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/buttons/yellow.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/Thumbs.db [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/ad.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/ae.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/cz.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/de.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/dk.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/en.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/es.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/fi.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/fr.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/gr.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/hr.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/hu.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/is.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/it.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/lt.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/missing.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/nl.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/no.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/pl.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/pt.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/ro.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/ru.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/se.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/si.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/countries/tr.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/div-h.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/div-v.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/epg_more.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/epg_next.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/epg_now.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/expandable-plugins.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/expanded-plugins.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/Thumbs.db [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/clock.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/dish.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/dish_scan.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/dmm_logo.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/epgclock.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/epgclock_add.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/epgclock_post.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/epgclock_pre.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/epgclock_prepost.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/folder.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/ico_mp_forward.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/ico_mp_pause.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/ico_mp_play.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/ico_mp_rewind.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/ico_mp_stop.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_channelselection_radio.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_channelselection_tv.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_crypt.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_crypt_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_dolby.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_dolby_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_epg.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_event.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_format.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_format_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_mainmenu.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_media.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_note.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_rec.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_rec_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_recorded.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_timerlist.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_txt.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_txt_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_txt_x.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icon_view.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icons_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icons_off_1.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/icons_off_X.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/input_error.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/input_info.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/input_question.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/lock.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/lock_error.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/lock_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/lock_on.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/marker.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/mp_buttons.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/plugin.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/rass_logo.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/rass_page1.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/rass_page2.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/rass_page3.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/rass_page4.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/record.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/redx.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/repeat_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/repeat_on.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/scan-c.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/scan-s.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/scan-t.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/icons/selectioncross.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/info-bg.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/info-bg_mp.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/mediaplayer_bg.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/menu/Thumbs.db [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/menu/dvd_player.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/menu/information.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/menu/media_player.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/menu/plugins.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/menu/scart.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/menu/setup.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/menu/shutdown.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/menu/subtitles.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/menu/timer.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/mute.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/nim_active.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/no_coverArt.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/output.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/pal.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/picon_default.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/position_arrow.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/position_pointer.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/position_pointer_580.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/prev.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/progress_bg.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/progress_big.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/progress_medium.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/progress_recording.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/progress_small.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/rc.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/rcold.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/screws.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/screws_mp.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/scroll.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/singlelineList_selected_23p.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/sleeptimer.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/spinner/Thumbs.db [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/spinner/wait1.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/spinner/wait2.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/spinner/wait3.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/spinner/wait4.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/timeline-now.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/timeline.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/unhandled-key.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/verticalline-plugins.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/vkey_backspace.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/vkey_bg.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/vkey_clr.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/vkey_esc.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/vkey_icon.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/vkey_left.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/vkey_ok.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/vkey_right.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/vkey_sel.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/vkey_shift.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/vkey_shift_sel.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/vkey_space.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/vkey_text.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/volume.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/volume_box.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/750S/wizard.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/MyriadPro-Regular.otf [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/MyriadPro-Semibold.otf [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/MyriadPro-SemiboldIt.otf [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/Bg_EPG_list.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/Bg_EPG_view.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/Bg_List.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/Bg_Media.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/Bg_Media_info.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/Bg_Subtitle.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/Bg_divideline.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/Solo_Menu_bg520.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/Statusbar_white.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/arrowdown.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/arrowleft.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/arrowright.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/arrowup.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/b_b.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/b_bl.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/b_br.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/b_l.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/b_r.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/b_t.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/b_tl.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/b_tr.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/bar_ber.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/bar_snr.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/bg.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/border_eventinfo.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/border_info.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/border_menu.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/FocusBar_H36.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/FocusBar_H42.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/FocusBar_H45.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/blue.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/button_bluekey.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/button_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/green.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/key_0.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/key_1.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/key_2.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/key_3.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/key_4.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/key_5.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/key_6.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/key_7.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/key_8.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/key_9.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/key_text.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/red.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/buttons/yellow.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/ad.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/ae.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/cz.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/de.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/dk.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/ee.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/en.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/es.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/fi.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/fr.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/gr.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/hr.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/hu.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/is.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/it.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/lt.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/lv.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/missing.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/nl.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/no.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/pl.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/pt.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/ro.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/ru.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/se.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/si.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/sk.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/tr.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/ua.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/x-fy.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/countries/yu.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/div-h.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/div-v.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/epg_more.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/epg_next.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/epg_now.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/Mediaplayerbar_gray.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/Mediaplayerbar_purple.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/clock.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/dish.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/dish_scan.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/ico_Chlist_title.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/ico_Radio_title.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/ico_folder.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/ico_noreplay.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/ico_player.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/ico_replay.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/icon_crypt.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/icon_crypt_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/icon_dolby.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/icon_dolby_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/icon_event.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/icon_format.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/icon_format_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/icon_rec.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/icon_rec_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/icon_txt.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/icon_txt_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/icon_view.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/icons_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/input_error.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/input_info.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/input_question.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/lock.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/lock_error.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/lock_off.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/lock_on.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/mp_buttons.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/mp_wb_buttons.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/plugin.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/rass_logo.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/record.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/redx.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/scan-c.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/scan-s.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/icons/scan-t.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/info-bg.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_EPG_title.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_Plugin_All_title.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_menu_Info.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_menu_Media.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_menu_Plugin.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_menu_Setup.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_menu_Standby.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_menu_Subtitles.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_menu_Timer.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_title_Info.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_title_MENU.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_title_Media.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_title_Plugin.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_title_Pluginall.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_title_Setup.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_title_Standby.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_title_Subtitles.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_title_Timer.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/menu/ico_title_media-info.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/mp_wb_background.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/mute.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/no_coverArt.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/position_arrow.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/prev.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/progress_bg.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/progress_big.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/progress_medium.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/progress_small.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/rc.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/rc_wb_desc.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/rcold.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/sleeptimer.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/timeline-now.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/timeline.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/unhandled-key.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/vkey_backspace.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/vkey_bg.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/vkey_clr.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/vkey_esc.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/vkey_icon.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/vkey_left.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/vkey_ok.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/vkey_right.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/vkey_sel.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/vkey_shift.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/vkey_shift_sel.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/vkey_space.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/vkey_text.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/volume_background.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/volume_up.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/Vu_HD/wizard.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/analog.ttf [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/enigma2_vuplus_addlibpythondeps.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/enigma2_vuplus_mediaplayer.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/enigma2_vuplus_mediaplayer_subtitle.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/enigma2_vuplus_mediaplayer_unpause.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/enigma2_vuplus_misc.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/enigma2_vuplus_networksetup.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/enigma2_vuplus_remove_dreambox_enigma.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/enigma2_vuplus_skin.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/enigma2_vuplus_textvfd.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/enigma2_vuplus_vfd.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/enigma2_vuplus_vfd_mode.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/number_key/key_0.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/number_key/key_1.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/number_key/key_2.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/number_key/key_3.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/number_key/key_4.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/number_key/key_5.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/number_key/key_6.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/number_key/key_7.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/number_key/key_8.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/number_key/key_9.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/skin_user.xml [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/vfd_icons/vfd_icon_crypt.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/vfd_icons/vfd_icon_dolby.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/vfd_icons/vfd_icon_format.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/vfd_icons/vfd_icon_rec.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/enigma2/enigma2/vfd_icons/vfd_icon_txt.png [new file with mode: 0755]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugin-dvbmediasink_0.10.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugins-bad-0.10.23/0001-mpegtsdemux-fix-bd-streamtype-detection.diff.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugins-bad-0.10.23/0002-add-indexing-capabilities-to-generate-a-SPN-PTS-map-.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugins-bad-0.10.23/0003-mpegpsdemux_speedup.diff.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugins-bad-0.10.23/orc.m4-fix-location-of-orcc-when-cross-compiling.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugins-bad_0.10.23.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugins-base-0.10.36/orc.m4-fix-location-of-orcc-when-cross-compiling.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugins-base_0.10.36.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugins-good-0.10.31/audioparser-raise-ranks.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugins-good-0.10.31/orc.m4-fix-location-of-orcc-when-cross-compiling.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugins-good_0.10.31.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugins-ugly-0.10.19/dvdsubdec-addproperty-singlebuffer.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugins-ugly-0.10.19/fix-opencore-amr-1.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugins-ugly-0.10.19/fix-opencore-amr-2.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugins-ugly-0.10.19/orc.m4-fix-location-of-orcc-when-cross-compiling.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/gstreamer/gst-plugins-ugly_0.10.19.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libav/libav_0.7.4.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libdreamdvd/libdreamdvd_0.9.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libdvbsi++/libdvbsi++_0.3.6.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libdvdnav/libdvdnav/0001-dvdnavmini.pc-link-against-libdvdnavmini.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libdvdnav/libdvdnav_svn.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libdvdread/libdvdread_svn.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libsigc++-1.2/libsigc++-1.2-1.2.5/autofoo.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libsigc++-1.2/libsigc++-1.2-1.2.5/fix-install.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libsigc++-1.2/libsigc++-1.2-1.2.5/pkgconfig.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libsigc++-1.2/libsigc++-1.2-1.2.5/to_1.2.7.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libsigc++-1.2/libsigc++-1.2_1.2.5.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libungif/libungif-native_4.1.3.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libungif/libungif_4.1.3.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libxmlccwrap/files/disable_libxslt.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libxmlccwrap/files/dont_build_unneeded.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libxmlccwrap/files/fix_assignment_operator.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/libxmlccwrap/libxmlccwrap_0.0.12.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/opencore-amr/opencore-amr_0.1.3.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/opkg/opkg-collateral.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/opkg/opkg-collateral/dest [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/opkg/opkg/0001-Fixed-opkg-losing-auto_installed-flag-on-upgrading.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/opkg/opkg/0002-Don-t-mark-Conflicts-as-Depends.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/opkg/opkg/0003-Statically-link-libopkg-and-libbb.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/opkg/opkg/0004-Makefile.am-remove-g-and-O-compiler-flags.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/opkg/opkg/0005-pkg_depends-remove-unused-variables-to-fix-compiler-.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/opkg/opkg/0006-pkg_hash_fetch_conflicts-fix-possible-segfaults.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/opkg/opkg/0007-pkg_hash_fetch_conflicts-move-iteration-over-conflic.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/opkg/opkg/0008-pkg_hash_fetch_conflicts-take-into-account-conflicts.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/opkg/opkg/0009-Revert-Add-Recommended-packages-to-the-depended_upon.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/opkg/opkg/0010-opkg_remove-auto-delete-.pyo-files.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/opkg/opkg_svn.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python-coherence_git.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python-daap/python-daap.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python-daap_0.7.1.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python-daap_0.7.1.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python-flickrapi_1.4.2.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python-gdata_2.0.14.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python-mutagen/patch.diff [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python-mutagen_1.18.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python-native_2.7.2.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python-pycrypto/no-usr-include.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python-pycrypto_2.5.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python-transmissionrpc_hg.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python-twisted_12.0.0.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python-wifi_0.5.0.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python/ctypes-error-handling-fix.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python/fix_pthread_site.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python/no-ldconfig.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python/some_configure_fixes.patch [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/python/python_2.7.2.bbappend [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/rt2870sta/files/RT2870STA.dat [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/rt2870sta/rt2870sta_1.0.0.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/rt73-firmware/rt73-firmware_1.8.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/showiframe/showiframe_1.8.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/swig/swig_2.0.4.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/tasks/task-vuplus-enigma2.bb [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/tasks/task-vuplus-enigma2.inc [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/timezones/files/GPL-1.0 [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/timezones/files/zoneinfo.tar.bz2 [new file with mode: 0644]
meta-openvuplus/recipes-enigma2/timezones/timezones-alternative.bb [new file with mode: 0644]

diff --git a/meta-openvuplus/classes/schwerkraft-git.bbclass b/meta-openvuplus/classes/schwerkraft-git.bbclass
new file mode 100644 (file)
index 0000000..312a8e1
--- /dev/null
@@ -0,0 +1,5 @@
+SCHWERKRAFT_PROJECT ?= "${BPN}"
+
+SRC_URI += "git://schwerkraft.elitedvb.net/${SCHWERKRAFT_PROJECT}/${SCHWERKRAFT_PROJECT}.git;protocol=git"
+
+inherit git-project
diff --git a/meta-openvuplus/recipes-base/firmwares/files/Marvell-Licence.txt b/meta-openvuplus/recipes-base/firmwares/files/Marvell-Licence.txt
new file mode 100644 (file)
index 0000000..87035b0
--- /dev/null
@@ -0,0 +1,40 @@
+FIRMWARE LICENSE TERMS*
+
+Copyright (c) Marvell International Ltd.
+
+All rights reserved.
+
+Redistribution. Redistribution and use in binary form, without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions must reproduce the above copyright notice and the following
+  disclaimer in the documentation and/or other materials provided with the
+  distribution.
+
+* Neither the name of Marvell International Ltd. nor the names of its suppliers
+  may be used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+* No reverse engineering, decompilation, or disassembly of this software is
+  permitted.
+
+Limited patent license. Marvell International Ltd. grants a world-wide,
+royalty-free, non-exclusive license under patents it now or hereafter owns or
+controls to make, have made, use, import, offer to sell and sell ("Utilize")
+this software, but solely to the extent that any such patent is necessary to
+Utilize the software alone, or in combination with an operating system licensed
+under an approved Open Source license as listed by the Open Source Initiative
+at http://opensource.org/licenses. The patent license shall not apply to any
+other combinations which include this software. No hardware per se is licensed
+hereunder.
+
+DISCLAIMER. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-drxd-a2.bb b/meta-openvuplus/recipes-base/firmwares/firmware-drxd-a2.bb
new file mode 100644 (file)
index 0000000..1d02c51
--- /dev/null
@@ -0,0 +1,9 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 drxd-a2-1.1.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-af9005.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-af9005.bb
new file mode 100644 (file)
index 0000000..004fd4a
--- /dev/null
@@ -0,0 +1,9 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 af9005.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-fe-af9013.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-fe-af9013.bb
new file mode 100644 (file)
index 0000000..03916f5
--- /dev/null
@@ -0,0 +1,9 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 dvb-fe-af9013.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-af9015.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-af9015.bb
new file mode 100644 (file)
index 0000000..0079bd2
--- /dev/null
@@ -0,0 +1,9 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 dvb-usb-af9015.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-af9035.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-af9035.bb
new file mode 100644 (file)
index 0000000..7097f6d
--- /dev/null
@@ -0,0 +1,9 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 dvb-usb-af9035-01.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-avertv-a800.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-avertv-a800.bb
new file mode 100644 (file)
index 0000000..193c763
--- /dev/null
@@ -0,0 +1,9 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 dvb-usb-avertv-a800-02.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-dib0700.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-dib0700.bb
new file mode 100644 (file)
index 0000000..431bc48
--- /dev/null
@@ -0,0 +1,12 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 dvb-usb-dib0700-01.fw ${D}/${base_libdir}/firmware/
+        install -m 0644 dvb-usb-dib0700-03-pre1.fw ${D}/${base_libdir}/firmware/
+        install -m 0644 dvb-usb-dib0700-1.10.fw ${D}/${base_libdir}/firmware/
+        install -m 0644 dvb-usb-dib0700-1.20.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-dibusb.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-dibusb.bb
new file mode 100644 (file)
index 0000000..5298eb3
--- /dev/null
@@ -0,0 +1,11 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 dvb-usb-dibusb-6.0.0.8.fw ${D}/${base_libdir}/firmware/
+        install -m 0644 dvb-usb-dibusb-an2235-01.fw ${D}/${base_libdir}/firmware/
+        install -m 0644 dvb-usb-dibusb-5.0.0.11.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-digitv.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-digitv.bb
new file mode 100644 (file)
index 0000000..570241e
--- /dev/null
@@ -0,0 +1,9 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 dvb-usb-digitv-02.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-ec168.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-ec168.bb
new file mode 100644 (file)
index 0000000..7a6c1d4
--- /dev/null
@@ -0,0 +1,9 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 dvb-usb-ec168.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-nova-t-usb2.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-nova-t-usb2.bb
new file mode 100644 (file)
index 0000000..bd5a261
--- /dev/null
@@ -0,0 +1,10 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 dvb-usb-nova-t-usb2-01.fw ${D}/${base_libdir}/firmware/
+        install -m 0644 dvb-usb-nova-t-usb2-02.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-sms1xxx-hcw-dvbt.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-sms1xxx-hcw-dvbt.bb
new file mode 100644 (file)
index 0000000..221497a
--- /dev/null
@@ -0,0 +1,11 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 sms1xxx-hcw-55xxx-dvbt-01.fw ${D}/${base_libdir}/firmware/
+        install -m 0644 sms1xxx-hcw-55xxx-dvbt-02.fw ${D}/${base_libdir}/firmware/
+        install -m 0644 sms1xxx-hcw-55xxx-dvbt-03.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-sms1xxx-nova-dvbt.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-sms1xxx-nova-dvbt.bb
new file mode 100644 (file)
index 0000000..aeaf2a0
--- /dev/null
@@ -0,0 +1,10 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 sms1xxx-nova-a-dvbt-01.fw ${D}/${base_libdir}/firmware/
+        install -m 0644 sms1xxx-nova-b-dvbt-01.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-ttusb-budget.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-ttusb-budget.bb
new file mode 100644 (file)
index 0000000..62292cc
--- /dev/null
@@ -0,0 +1,9 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware/ttusb-budget/
+        install -m 0644 ttusb-budget/dspbootcode.bin ${D}/${base_libdir}/firmware/ttusb-budget/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-umt-010.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-umt-010.bb
new file mode 100644 (file)
index 0000000..d53b9db
--- /dev/null
@@ -0,0 +1,9 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 dvb-usb-umt-010-02.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-wt220u-zl0353.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-wt220u-zl0353.bb
new file mode 100644 (file)
index 0000000..1eebc64
--- /dev/null
@@ -0,0 +1,9 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 dvb-usb-wt220u-zl0353-01.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-xc5000.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb-xc5000.bb
new file mode 100644 (file)
index 0000000..67a4b19
--- /dev/null
@@ -0,0 +1,10 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 dvb-fe-xc5000-1.1.fw ${D}/${base_libdir}/firmware/
+        install -m 0644 dvb-fe-xc5000-1.6.114.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb.bb b/meta-openvuplus/recipes-base/firmwares/firmware-dvb-usb.bb
new file mode 100644 (file)
index 0000000..25e68b6
--- /dev/null
@@ -0,0 +1,13 @@
+
+require linux-firmware.inc
+
+PR = "r1"
+
+DESCRIPTION = "Temporary Firmware collections"
+
+SRCREV = "13f0b6bda7b567d29c747196aa65ad82b18651ca"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 *.fw rt2870.bin ${D}${base_libdir}/firmware
+}
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-htc9271.bb b/meta-openvuplus/recipes-base/firmwares/firmware-htc9271.bb
new file mode 100644 (file)
index 0000000..359057b
--- /dev/null
@@ -0,0 +1,9 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 htc_9271.fw ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-rt2561.bb b/meta-openvuplus/recipes-base/firmwares/firmware-rt2561.bb
new file mode 100644 (file)
index 0000000..6418604
--- /dev/null
@@ -0,0 +1,9 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 rt2561.bin ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-rt3070.bb b/meta-openvuplus/recipes-base/firmwares/firmware-rt3070.bb
new file mode 100644 (file)
index 0000000..a9357c0
--- /dev/null
@@ -0,0 +1,10 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware
+        install -m 0644 rt2870.bin ${D}/${base_libdir}/firmware/
+        install -m 0644 rt3070.bin ${D}/${base_libdir}/firmware/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/firmware-rtl8721u.bb b/meta-openvuplus/recipes-base/firmwares/firmware-rtl8721u.bb
new file mode 100644 (file)
index 0000000..1cae3f9
--- /dev/null
@@ -0,0 +1,9 @@
+require linux-firmware.inc
+
+SRCREV = "46c66487a85cd05a4acbd5eb4828f72783d1be4c"
+
+do_install() {
+        install -d ${D}${base_libdir}/firmware/rtlwifi
+        install -m 0644 rtlwifi/rtl8712u.bin ${D}/${base_libdir}/firmware/rtlwifi/
+}
+
diff --git a/meta-openvuplus/recipes-base/firmwares/linux-firmware.inc b/meta-openvuplus/recipes-base/firmwares/linux-firmware.inc
new file mode 100644 (file)
index 0000000..4c23ccf
--- /dev/null
@@ -0,0 +1,11 @@
+LICENSE = "CLOSED"
+
+SRC_URI = "git://github.com/mdamt/linux-firmware.git;protocol=git"
+SRC_URI = "git://github.com/BjornLee/linux-firmware.git;protocol=git"
+
+S = "${WORKDIR}/git"
+
+PACKAGES = "${PN}"
+FILES_${PN} += "${base_libdir}/firmware"
+
+PACKAGE_ARCH = "all"
diff --git a/meta-openvuplus/recipes-base/firmwares/marvell-gspi-fw/9.70.3-p37.tar.gz b/meta-openvuplus/recipes-base/firmwares/marvell-gspi-fw/9.70.3-p37.tar.gz
new file mode 100644 (file)
index 0000000..c7bf768
Binary files /dev/null and b/meta-openvuplus/recipes-base/firmwares/marvell-gspi-fw/9.70.3-p37.tar.gz differ
diff --git a/meta-openvuplus/recipes-base/firmwares/marvell-gspi-fw_9.70.3-p37.bb b/meta-openvuplus/recipes-base/firmwares/marvell-gspi-fw_9.70.3-p37.bb
new file mode 100644 (file)
index 0000000..9fdfd6f
--- /dev/null
@@ -0,0 +1,20 @@
+DESCRIPTION = "Firmware for Marvel 8686 gspi wifi chipset"
+LICENSE = "closed"
+
+SRC_URI = "file://${PV}.tar.gz \
+           file://Marvell-Licence.txt"
+
+S = "${WORKDIR}/${PV}/FwImage"
+
+do_install() {
+
+       install -d ${D}${base_libdir}/firmware
+       install -m 0644 gspi8686.bin helper_gspi.bin ${D}${base_libdir}/firmware
+       install -m 0644 ${WORKDIR}/Marvell-Licence.txt ${D}${base_libdir}/firmware
+       ln -s helper_gspi.bin ${D}${base_libdir}/firmware/gspi8686_hlp.bin
+}
+
+PACKAGES = "${PN}"
+FILES_${PN} += "${base_libdir}/firmware"
+
+PACKAGE_ARCH = "all"
diff --git a/meta-openvuplus/recipes-base/firmwares/marvell-sdio-fw/9.70.3-p37.tar.gz b/meta-openvuplus/recipes-base/firmwares/marvell-sdio-fw/9.70.3-p37.tar.gz
new file mode 100644 (file)
index 0000000..3efd73f
Binary files /dev/null and b/meta-openvuplus/recipes-base/firmwares/marvell-sdio-fw/9.70.3-p37.tar.gz differ
diff --git a/meta-openvuplus/recipes-base/firmwares/marvell-sdio-fw_9.70.3-p37.bb b/meta-openvuplus/recipes-base/firmwares/marvell-sdio-fw_9.70.3-p37.bb
new file mode 100644 (file)
index 0000000..181b2ba
--- /dev/null
@@ -0,0 +1,19 @@
+DESCRIPTION = "Firmware for Marvel 8686 gspi wifi chipset"
+LICENSE = "closed"
+
+SRC_URI = "file://${PV}.tar.gz \
+           file://Marvell-Licence.txt"
+
+S = "${WORKDIR}/${PV}/FwImage"
+
+do_install() {
+
+       install -d ${D}${base_libdir}/firmware
+       install -m 0644 sd8686.bin sd8686_helper.bin ${D}${base_libdir}/firmware
+       install -m 0644 ${WORKDIR}/Marvell-Licence.txt ${D}${base_libdir}/firmware
+}
+
+PACKAGES = "${PN}"
+FILES_${PN} += "${base_libdir}/firmware"
+
+PACKAGE_ARCH = "all"
diff --git a/meta-openvuplus/recipes-enigma2/aio-grab/aio-grab/aio-grab_vuplus.patch b/meta-openvuplus/recipes-enigma2/aio-grab/aio-grab/aio-grab_vuplus.patch
new file mode 100644 (file)
index 0000000..1459e22
--- /dev/null
@@ -0,0 +1,94 @@
+diff --git a/main.c b/main.c
+index 190ff5f..08298e9 100644
+--- a/main.c
++++ b/main.c
+@@ -101,8 +101,8 @@ static void combine(unsigned char *output,
+                   const unsigned char *video, const unsigned char *osd,
+                   unsigned int xres, unsigned int yres);
+-enum {UNKNOWN,PALLAS,VULCAN,XILLEON,BRCM7401,BRCM7400,BRCM7405};
+-static const char *stb_name[]={"unknown","Pallas","Vulcan","Xilleon","Brcm7401","Brcm7400","Brcm7405"};
++enum {UNKNOWN,PALLAS,VULCAN,XILLEON,BRCM7401,BRCM7400,BRCM7405,BRCM7335,BRCM7325};
++static const char *stb_name[]={"unknown","Pallas","Vulcan","Xilleon","Brcm7401","Brcm7400","Brcm7405","Brcm7335","Brcm7325"};
+ static int stb_type=UNKNOWN;
+ static const char *file_getline(const char *filename)
+@@ -221,6 +221,22 @@ int main(int argc, char **argv) {
+                        !strcmp(line, "dm800se") ||
+                        !strcmp(line, "dm7020hd"))
+                       stb_type = BRCM7405;
++
++              // CPU Detection. idea from pl
++              if (line != NULL)
++                      free(line);
++              line = file_getline("/proc/stb/info/chipset");
++              if(line)
++              {
++                      if (!strcmp(line, "7335"))
++                              stb_type = BRCM7335;
++                      else if (!strcmp(line, "7325"))
++                              stb_type = BRCM7325;
++                      else if (!strcmp(line, "7405"))
++                              stb_type = BRCM7405;
++              }
++              free(line);
++              
+       } else if (strstr(line, "xilleonfb")) {
+               stb_type = XILLEON;
+       } else if (strstr(line, "Pallas FB")) {
+@@ -564,7 +580,7 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
+               return false;
+       }
+-      if (stb_type == BRCM7401 || stb_type == BRCM7400 || stb_type == BRCM7405)
++      if (stb_type == BRCM7401 || stb_type == BRCM7400 || stb_type == BRCM7405 || stb_type == BRCM7335 || stb_type == BRCM7325)
+       {
+               // grab brcm7401 pic from decoder memory
+               unsigned char *memory = mmap(0, 100, PROT_READ, MAP_SHARED, mem_fd, 0x10100000);
+@@ -609,7 +625,7 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
+               assert(chroma);
+               // grabbing luma & chroma plane from the decoder memory
+-              if (stb_type == BRCM7401 || stb_type == BRCM7405) {
++              if (stb_type == BRCM7401 || stb_type == BRCM7405 || stb_type == BRCM7325) {
+                       // on dm800/dm500hd we have direct access to the decoder memory
+                       memory = mmap(0, offset + stride*(ofs2+64), PROT_READ, MAP_SHARED, mem_fd, adr);
+                       if (memory == MAP_FAILED) {
+@@ -620,7 +636,7 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
+                       usleep(50000);  // we try to get a full picture, its not possible to get a sync from the decoder so we use a delay
+                                       // and hope we get a good timing. dont ask me why, but every DM800 i tested so far produced a good
+                                       // result with a 50ms delay
+-              } else if (stb_type == BRCM7400) { 
++              } else if (stb_type == BRCM7400 || stb_type == BRCM7335) {
+                       // on dm8000 we have to use dma, so dont change anything here until you really know what you are doing !
+                       
+                       unsigned int i = 0;
+@@ -640,6 +656,7 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
+                       volatile unsigned long *mem_dma;
+                       mem_dma = mmap(0, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, mem_fd, 0x10c02000);
++                      mem_dma = mmap(0, 0x1000, PROT_READ|PROT_WRITE, MAP_SHARED, mem_fd, (stb_type==BRCM7400)? 0x10c02000:0x10c01000);
+                       if (mem_dma == MAP_FAILED) {
+                               perror("mmap");
+                               return false;
+@@ -676,7 +693,7 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
+               unsigned int chr_luma_stride = 0x40;
+               unsigned int sw;
+-              if (stb_type == BRCM7405)
++              if (stb_type == BRCM7405 || stb_type == BRCM7325)
+                       chr_luma_stride *= 2;
+               xsub=chr_luma_stride;
+@@ -711,9 +728,9 @@ static bool getvideo(unsigned char *video, unsigned int *xres, unsigned int *yre
+                       }
+               }
+-              if (stb_type == BRCM7401 || stb_type == BRCM7405)
++              if (stb_type == BRCM7401 || stb_type == BRCM7405 || stb_type == BRCM7325)
+                       munmap(memory, offset + stride * (ofs2 + 64));
+-              else if (stb_type == BRCM7400) {
++              else if (stb_type == BRCM7400 || stb_type == BRCM7335) {
+                       memory -= 0x1000;
+                       munmap(memory, DMA_BLOCKSIZE + 0x1000);
+               }
diff --git a/meta-openvuplus/recipes-enigma2/aio-grab/aio-grab_0.8.bb b/meta-openvuplus/recipes-enigma2/aio-grab/aio-grab_0.8.bb
new file mode 100644 (file)
index 0000000..bc89b2d
--- /dev/null
@@ -0,0 +1,7 @@
+SUMMARY = "Screen grabber for Dreambox Set-Top-Boxes"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=94d55d512a9ba36caa9b7df079bae19f"
+SRCREV = "8394e1ba98c73d7c56d3235ef16cce253dc597cd"
+PR = "r1"
+
+inherit autotools schwerkraft-git
diff --git a/meta-openvuplus/recipes-enigma2/aio-grab/aio-grab_0.8.bbappend b/meta-openvuplus/recipes-enigma2/aio-grab/aio-grab_0.8.bbappend
new file mode 100644 (file)
index 0000000..9199d4a
--- /dev/null
@@ -0,0 +1,8 @@
+PR .= "-vuplus0"
+
+SRC_URI += " \
+        file://aio-grab_vuplus.patch;patch=1;pnum=1 \
+"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
diff --git a/meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/Makefile.in.patch b/meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/Makefile.in.patch
new file mode 100644 (file)
index 0000000..40cf4ad
--- /dev/null
@@ -0,0 +1,13 @@
+--- cdparanoia-III-10.2/Makefile.in.orig       2009-01-27 23:32:15.000000000 +0100
++++ cdparanoia-III-10.2/Makefile.in    2009-01-27 23:32:53.000000000 +0100
+@@ -87,8 +87,9 @@
+               $(LIBDIR)/libcdda_paranoia.so
+ cdparanoia:   $(OFILES) $(LIBDEP)
+-              $(LD) $(CFLAGS) $(LDFLAGS) $(OFILES) \
++              $(LD) $(CFLAGS) \
+               -L$(PWD)/paranoia -L$(PWD)/interface \
++              $(LDFLAGS) $(OFILES) \
+               -o cdparanoia $(LIBS)
+ .c.o:
diff --git a/meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/cdparanoia-III-10.2-privatefix.patch b/meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/cdparanoia-III-10.2-privatefix.patch
new file mode 100644 (file)
index 0000000..55f39b2
--- /dev/null
@@ -0,0 +1,561 @@
+diff -ru cdparanoia-III-10.2/interface/cdda_interface.h cdparanoia-III-10.2-mod/interface/cdda_interface.h
+--- cdparanoia-III-10.2/interface/cdda_interface.h     2008-09-11 11:43:52.000000000 +0100
++++ cdparanoia-III-10.2-mod/interface/cdda_interface.h 2009-09-08 16:08:37.000000000 +0100
+@@ -84,7 +84,7 @@
+   int is_atapi;
+   int is_mmc;
+-  cdda_private_data_t *private;
++  cdda_private_data_t *impl;
+   void         *reserved;
+   unsigned char inqbytes[4];
+diff -ru cdparanoia-III-10.2/interface/cooked_interface.c cdparanoia-III-10.2-mod/interface/cooked_interface.c
+--- cdparanoia-III-10.2/interface/cooked_interface.c   2008-08-26 10:55:22.000000000 +0100
++++ cdparanoia-III-10.2-mod/interface/cooked_interface.c       2009-09-08 16:09:35.000000000 +0100
+@@ -13,13 +13,13 @@
+ static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){
+   struct timespec tv1;
+   struct timespec tv2;
+-  int ret1=clock_gettime(d->private->clock,&tv1);
++  int ret1=clock_gettime(d->impl->clock,&tv1);
+   int ret2=ioctl(fd, command,arg);
+-  int ret3=clock_gettime(d->private->clock,&tv2);
++  int ret3=clock_gettime(d->impl->clock,&tv2);
+   if(ret1<0 || ret3<0){
+-    d->private->last_milliseconds=-1;
++    d->impl->last_milliseconds=-1;
+   }else{
+-    d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
++    d->impl->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
+   }
+   return ret2;
+ }
+diff -ru cdparanoia-III-10.2/interface/interface.c cdparanoia-III-10.2-mod/interface/interface.c
+--- cdparanoia-III-10.2/interface/interface.c  2008-09-11 11:43:52.000000000 +0100
++++ cdparanoia-III-10.2-mod/interface/interface.c      2009-09-08 16:09:50.000000000 +0100
+@@ -39,9 +39,9 @@
+     if(d->drive_model)free(d->drive_model);
+     if(d->cdda_fd!=-1)close(d->cdda_fd);
+     if(d->ioctl_fd!=-1 && d->ioctl_fd!=d->cdda_fd)close(d->ioctl_fd);
+-    if(d->private){
+-      if(d->private->sg_hd)free(d->private->sg_hd);
+-      free(d->private);
++    if(d->impl){
++      if(d->impl->sg_hd)free(d->impl->sg_hd);
++      free(d->impl);
+     }
+     free(d);
+@@ -127,7 +127,7 @@
+       }
+       }       
+     }
+-    if(ms)*ms=d->private->last_milliseconds;
++    if(ms)*ms=d->impl->last_milliseconds;
+     return(sectors);
+   }
+   
+diff -ru cdparanoia-III-10.2/interface/scan_devices.c cdparanoia-III-10.2-mod/interface/scan_devices.c
+--- cdparanoia-III-10.2/interface/scan_devices.c       2008-08-26 10:55:22.000000000 +0100
++++ cdparanoia-III-10.2-mod/interface/scan_devices.c   2009-09-08 16:09:17.000000000 +0100
+@@ -264,11 +264,11 @@
+   d->interface=COOKED_IOCTL;
+   d->bigendianp=-1; /* We don't know yet... */
+   d->nsectors=-1;
+-  d->private=calloc(1,sizeof(*d->private));
++  d->impl=calloc(1,sizeof(*d->impl));
+   {
+     /* goddamnit */
+     struct timespec tv;
+-    d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
++    d->impl->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
+   }
+   idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",description);
+   return(d);
+@@ -674,15 +674,15 @@
+   d->bigendianp=-1; /* We don't know yet... */
+   d->nsectors=-1;
+   d->messagedest = messagedest;
+-  d->private=calloc(1,sizeof(*d->private));
++  d->impl=calloc(1,sizeof(*d->impl));
+   {
+     /* goddamnit */
+     struct timespec tv;
+-    d->private->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
++    d->impl->clock=(clock_gettime(CLOCK_MONOTONIC,&tv)<0?CLOCK_REALTIME:CLOCK_MONOTONIC);
+   }
+   if(use_sgio){
+     d->interface=SGIO_SCSI;
+-    d->private->sg_buffer=(unsigned char *)(d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE));
++    d->impl->sg_buffer=(unsigned char *)(d->impl->sg_hd=malloc(MAX_BIG_BUFF_SIZE));
+     g_fd=d->cdda_fd=dup(d->ioctl_fd);
+   }else{
+     version=verify_SG_version(d,messagedest,messages);
+@@ -696,8 +696,8 @@
+     }
+     /* malloc our big buffer for scsi commands */
+-    d->private->sg_hd=malloc(MAX_BIG_BUFF_SIZE);
+-    d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF;
++    d->impl->sg_hd=malloc(MAX_BIG_BUFF_SIZE);
++    d->impl->sg_buffer=((unsigned char *)d->impl->sg_hd)+SG_OFF;
+   }
+   {
+@@ -772,9 +772,9 @@
+   if(i_fd!=-1)close(i_fd);
+   if(g_fd!=-1)close(g_fd);
+   if(d){
+-    if(d->private){
+-      if(d->private->sg_hd)free(d->private->sg_hd);
+-      free(d->private);
++    if(d->impl){
++      if(d->impl->sg_hd)free(d->impl->sg_hd);
++      free(d->impl);
+     }
+     free(d);
+   }
+@@ -821,7 +821,7 @@
+   d->interface=TEST_INTERFACE;
+   d->bigendianp=-1; /* We don't know yet... */
+   d->nsectors=-1;
+-  d->private=calloc(1,sizeof(*d->private));
++  d->impl=calloc(1,sizeof(*d->impl));
+   d->drive_model=copystring("File based test interface");
+   idmessage(messagedest,messages,"\t\tCDROM sensed: %s\n",d->drive_model);
+   
+diff -ru cdparanoia-III-10.2/interface/scsi_interface.c cdparanoia-III-10.2-mod/interface/scsi_interface.c
+--- cdparanoia-III-10.2/interface/scsi_interface.c     2008-09-11 21:33:30.000000000 +0100
++++ cdparanoia-III-10.2-mod/interface/scsi_interface.c 2009-09-08 16:10:30.000000000 +0100
+@@ -15,13 +15,13 @@
+ static int timed_ioctl(cdrom_drive *d, int fd, int command, void *arg){
+   struct timespec tv1;
+   struct timespec tv2;
+-  int ret1=clock_gettime(d->private->clock,&tv1);
++  int ret1=clock_gettime(d->impl->clock,&tv1);
+   int ret2=ioctl(fd, command,arg);
+-  int ret3=clock_gettime(d->private->clock,&tv2);
++  int ret3=clock_gettime(d->impl->clock,&tv2);
+   if(ret1<0 || ret3<0){
+-    d->private->last_milliseconds=-1;
++    d->impl->last_milliseconds=-1;
+   }else{
+-    d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
++    d->impl->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000. + (tv2.tv_nsec-tv1.tv_nsec)/1000000.;
+   }
+   return ret2;
+ }
+@@ -96,7 +96,7 @@
+ static void clear_garbage(cdrom_drive *d){
+   fd_set fdset;
+   struct timeval tv;
+-  struct sg_header *sg_hd=d->private->sg_hd;
++  struct sg_header *sg_hd=d->impl->sg_hd;
+   int flag=0;
+   /* clear out any possibly preexisting garbage */
+@@ -185,7 +185,7 @@
+   struct timespec tv2;
+   int tret1,tret2;
+   int status = 0;
+-  struct sg_header *sg_hd=d->private->sg_hd;
++  struct sg_header *sg_hd=d->impl->sg_hd;
+   long writebytes=SG_OFF+cmd_len+in_size;
+   /* generic scsi device services */
+@@ -195,7 +195,7 @@
+   memset(sg_hd,0,sizeof(sg_hd)); 
+   memset(sense_buffer,0,SG_MAX_SENSE); 
+-  memcpy(d->private->sg_buffer,cmd,cmd_len+in_size);
++  memcpy(d->impl->sg_buffer,cmd,cmd_len+in_size);
+   sg_hd->twelve_byte = cmd_len == 12;
+   sg_hd->result = 0;
+   sg_hd->reply_len = SG_OFF + out_size;
+@@ -209,7 +209,7 @@
+      tell if the command failed.  Scared yet? */
+   if(bytecheck && out_size>in_size){
+-    memset(d->private->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size); 
++    memset(d->impl->sg_buffer+cmd_len+in_size,bytefill,out_size-in_size); 
+     /* the size does not remove cmd_len due to the way the kernel
+        driver copies buffers */
+     writebytes+=(out_size-in_size);
+@@ -243,7 +243,7 @@
+   }
+   sigprocmask (SIG_BLOCK, &(d->sigset), NULL );
+-  tret1=clock_gettime(d->private->clock,&tv1);  
++  tret1=clock_gettime(d->impl->clock,&tv1);  
+   errno=0;
+   status = write(d->cdda_fd, sg_hd, writebytes );
+@@ -289,7 +289,7 @@
+     }
+   }
+-  tret2=clock_gettime(d->private->clock,&tv2);  
++  tret2=clock_gettime(d->impl->clock,&tv2);  
+   errno=0;
+   status = read(d->cdda_fd, sg_hd, SG_OFF + out_size);
+   sigprocmask ( SIG_UNBLOCK, &(d->sigset), NULL );
+@@ -313,7 +313,7 @@
+   if(bytecheck && in_size+cmd_len<out_size){
+     long i,flag=0;
+     for(i=in_size;i<out_size;i++)
+-      if(d->private->sg_buffer[i]!=bytefill){
++      if(d->impl->sg_buffer[i]!=bytefill){
+       flag=1;
+       break;
+       }
+@@ -326,9 +326,9 @@
+   errno=0;
+   if(tret1<0 || tret2<0){
+-    d->private->last_milliseconds=-1;
++    d->impl->last_milliseconds=-1;
+   }else{
+-    d->private->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000;
++    d->impl->last_milliseconds = (tv2.tv_sec-tv1.tv_sec)*1000 + (tv2.tv_nsec-tv1.tv_nsec)/1000000;
+   }
+   return(0);
+ }
+@@ -347,7 +347,7 @@
+   memset(&hdr,0,sizeof(hdr));
+   memset(sense,0,sizeof(sense));
+-  memcpy(d->private->sg_buffer,cmd+cmd_len,in_size);
++  memcpy(d->impl->sg_buffer,cmd+cmd_len,in_size);
+   hdr.cmdp = cmd;
+   hdr.cmd_len = cmd_len;
+@@ -355,7 +355,7 @@
+   hdr.mx_sb_len = SG_MAX_SENSE;
+   hdr.timeout = 50000;
+   hdr.interface_id = 'S';
+-  hdr.dxferp =  d->private->sg_buffer;
++  hdr.dxferp =  d->impl->sg_buffer;
+   hdr.flags = SG_FLAG_DIRECT_IO;  /* direct IO if we can get it */
+   /* scary buffer fill hack */
+@@ -400,7 +400,7 @@
+   if(bytecheck && in_size<out_size){
+     long i,flag=0;
+     for(i=in_size;i<out_size;i++)
+-      if(d->private->sg_buffer[i]!=bytefill){
++      if(d->impl->sg_buffer[i]!=bytefill){
+       flag=1;
+       break;
+       }
+@@ -412,7 +412,7 @@
+   }
+   /* Can't rely on .duration because we can't be certain kernel has HZ set to something useful */
+-  /* d->private->last_milliseconds = hdr.duration; */
++  /* d->impl->last_milliseconds = hdr.duration; */
+   errno = 0;
+   return 0;
+@@ -445,9 +445,9 @@
+   handle_scsi_cmd(d, cmd, 6, 0, 56, 0,0, sense);
+-  key = d->private->sg_buffer[2] & 0xf;
+-  ASC = d->private->sg_buffer[12];
+-  ASCQ = d->private->sg_buffer[13];
++  key = d->impl->sg_buffer[2] & 0xf;
++  ASC = d->impl->sg_buffer[12];
++  ASCQ = d->impl->sg_buffer[13];
+   
+   if(key == 2 && ASC == 4 && ASCQ == 1) return 0;
+   return 1;
+@@ -492,7 +492,7 @@
+   if (handle_scsi_cmd (d, cmd, 10, 0, size+4,'\377',1,sense)) return(1);
+   {
+-    unsigned char *b=d->private->sg_buffer;
++    unsigned char *b=d->impl->sg_buffer;
+     if(b[0])return(1); /* Handles only up to 256 bytes */
+     if(b[6])return(1); /* Handles only up to 256 bytes */
+@@ -604,8 +604,8 @@
+ static unsigned int get_orig_sectorsize(cdrom_drive *d){
+   if(mode_sense(d,12,0x01))return(-1);
+-  d->orgdens = d->private->sg_buffer[4];
+-  return(d->orgsize = ((int)(d->private->sg_buffer[10])<<8)+d->private->sg_buffer[11]);
++  d->orgdens = d->impl->sg_buffer[4];
++  return(d->orgsize = ((int)(d->impl->sg_buffer[10])<<8)+d->impl->sg_buffer[11]);
+ }
+ /* switch CDROM scsi drives to given sector size  */
+@@ -664,8 +664,8 @@
+     return(-4);
+   }
+-  first=d->private->sg_buffer[2];
+-  last=d->private->sg_buffer[3];
++  first=d->impl->sg_buffer[2];
++  last=d->impl->sg_buffer[3];
+   tracks=last-first+1;
+   if (last > MAXTRK || first > MAXTRK || last<0 || first<0) {
+@@ -683,7 +683,7 @@
+       return(-5);
+     }
+     {
+-      scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4);
++      scsi_TOC *toc=(scsi_TOC *)(d->impl->sg_buffer+4);
+       d->disc_toc[i-first].bFlags=toc->bFlags;
+       d->disc_toc[i-first].bTrack=i;
+@@ -704,7 +704,7 @@
+     return(-2);
+   }
+   {
+-    scsi_TOC *toc=(scsi_TOC *)(d->private->sg_buffer+4);
++    scsi_TOC *toc=(scsi_TOC *)(d->impl->sg_buffer+4);
+     
+     d->disc_toc[i-first].bFlags=toc->bFlags;
+     d->disc_toc[i-first].bTrack=0xAA;
+@@ -738,7 +738,7 @@
+   }
+   /* copy to our structure and convert start sector */
+-  tracks = d->private->sg_buffer[1];
++  tracks = d->impl->sg_buffer[1];
+   if (tracks > MAXTRK) {
+     cderror(d,"003: CDROM reporting illegal number of tracks\n");
+     return(-3);
+@@ -754,33 +754,33 @@
+       return(-5);
+     }
+     
+-    d->disc_toc[i].bFlags = d->private->sg_buffer[10];
++    d->disc_toc[i].bFlags = d->impl->sg_buffer[10];
+     d->disc_toc[i].bTrack = i + 1;
+     d->disc_toc[i].dwStartSector= d->adjust_ssize * 
+-      (((signed char)(d->private->sg_buffer[2])<<24) | 
+-       (d->private->sg_buffer[3]<<16)|
+-       (d->private->sg_buffer[4]<<8)|
+-       (d->private->sg_buffer[5]));
++      (((signed char)(d->impl->sg_buffer[2])<<24) | 
++       (d->impl->sg_buffer[3]<<16)|
++       (d->impl->sg_buffer[4]<<8)|
++       (d->impl->sg_buffer[5]));
+   }
+   d->disc_toc[i].bFlags = 0;
+   d->disc_toc[i].bTrack = i + 1;
+-  memcpy (&foo, d->private->sg_buffer+2, 4);
+-  memcpy (&bar, d->private->sg_buffer+6, 4);
++  memcpy (&foo, d->impl->sg_buffer+2, 4);
++  memcpy (&bar, d->impl->sg_buffer+6, 4);
+   d->disc_toc[i].dwStartSector = d->adjust_ssize * (be32_to_cpu(foo) +
+                                                   be32_to_cpu(bar));
+   d->disc_toc[i].dwStartSector= d->adjust_ssize * 
+-    ((((signed char)(d->private->sg_buffer[2])<<24) | 
+-      (d->private->sg_buffer[3]<<16)|
+-      (d->private->sg_buffer[4]<<8)|
+-      (d->private->sg_buffer[5]))+
++    ((((signed char)(d->impl->sg_buffer[2])<<24) | 
++      (d->impl->sg_buffer[3]<<16)|
++      (d->impl->sg_buffer[4]<<8)|
++      (d->impl->sg_buffer[5]))+
+      
+-     ((((signed char)(d->private->sg_buffer[6])<<24) | 
+-       (d->private->sg_buffer[7]<<16)|
+-       (d->private->sg_buffer[8]<<8)|
+-       (d->private->sg_buffer[9]))));
++     ((((signed char)(d->impl->sg_buffer[6])<<24) | 
++       (d->impl->sg_buffer[7]<<16)|
++       (d->impl->sg_buffer[8]<<8)|
++       (d->impl->sg_buffer[9]))));
+   d->cd_extra = FixupTOC(d,tracks+1);
+@@ -817,7 +817,7 @@
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -836,7 +836,7 @@
+   cmd[9] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -854,7 +854,7 @@
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -872,7 +872,7 @@
+   cmd[9] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -890,7 +890,7 @@
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,10,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -908,7 +908,7 @@
+   cmd[9] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -922,7 +922,7 @@
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -936,7 +936,7 @@
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -950,7 +950,7 @@
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -964,7 +964,7 @@
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -978,7 +978,7 @@
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -992,7 +992,7 @@
+   cmd[8] = sectors;
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -1026,7 +1026,7 @@
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -1039,7 +1039,7 @@
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -1052,7 +1052,7 @@
+   
+   if((ret=handle_scsi_cmd(d,cmd,12,0,sectors * CD_FRAMESIZE_RAW,'\177',1,sense)))
+     return(ret);
+-  if(p)memcpy(p,d->private->sg_buffer,sectors*CD_FRAMESIZE_RAW);
++  if(p)memcpy(p,d->impl->sg_buffer,sectors*CD_FRAMESIZE_RAW);
+   return(0);
+ }
+@@ -1275,7 +1275,7 @@
+ static int count_2352_bytes(cdrom_drive *d){
+   long i;
+   for(i=2351;i>=0;i--)
+-    if(d->private->sg_buffer[i]!=(unsigned char)'\177')
++    if(d->impl->sg_buffer[i]!=(unsigned char)'\177')
+       return(((i+3)>>2)<<2);
+   return(0);
+@@ -1284,7 +1284,7 @@
+ static int verify_nonzero(cdrom_drive *d){
+   long i,flag=0;
+   for(i=0;i<2352;i++)
+-    if(d->private->sg_buffer[i]!=0){
++    if(d->impl->sg_buffer[i]!=0){
+       flag=1;
+       break;
+     }
+@@ -1625,7 +1625,7 @@
+   d->is_mmc=0;
+   if(mode_sense(d,22,0x2A)==0){
+   
+-    b=d->private->sg_buffer;
++    b=d->impl->sg_buffer;
+     b+=b[3]+4;
+     
+     if((b[0]&0x3F)==0x2A){
+@@ -1673,7 +1673,7 @@
+     cderror(d,"008: Unable to identify CDROM model\n");
+     return(NULL);
+   }
+-  return (d->private->sg_buffer);
++  return (d->impl->sg_buffer);
+ }
+ int scsi_init_drive(cdrom_drive *d){
+@@ -1742,8 +1742,8 @@
+   check_cache(d);
+   d->error_retry=1;
+-  d->private->sg_hd=realloc(d->private->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128);
+-  d->private->sg_buffer=((unsigned char *)d->private->sg_hd)+SG_OFF;
++  d->impl->sg_hd=realloc(d->impl->sg_hd,d->nsectors*CD_FRAMESIZE_RAW + SG_OFF + 128);
++  d->impl->sg_buffer=((unsigned char *)d->impl->sg_hd)+SG_OFF;
+   d->report_all=1;
+   return(0);
+ }
diff --git a/meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/configure.in.patch b/meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/configure.in.patch
new file mode 100644 (file)
index 0000000..2ca2516
--- /dev/null
@@ -0,0 +1,13 @@
+--- cdparanoia-III-10.2.old/configure.in       2009-12-02 22:44:37.000000000 +0100
++++ cdparanoia-III-10.2/configure.in   2009-12-02 22:45:04.000000000 +0100
+@@ -5,9 +5,7 @@
+ AC_CANONICAL_HOST
+-if test -z "$CC"; then
+-      AC_PROG_CC      
+-fi
++AC_PROG_CC    
+ AC_PROG_RANLIB
+ AC_CHECK_PROG(AR,ar,ar)
+ AC_CHECK_PROG(INSTALL,install,install)
diff --git a/meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/fixes10.patch b/meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/fixes10.patch
new file mode 100644 (file)
index 0000000..414ff39
--- /dev/null
@@ -0,0 +1,25 @@
+--- cdparanoia-III-alpha9.8/configure.in       2000-03-26 00:33:22.000000000 -0700
++++ cdparanoia-III-alpha9.8.new/configure.in   2004-12-23 16:34:04.072846728 -0700
+@@ -1,7 +1,7 @@
+ AC_INIT(interface/interface.c)
+-cp $srcdir/configure.guess $srcdir/config.guess
+-cp $srcdir/configure.sub $srcdir/config.sub
++#cp $srcdir/configure.guess $srcdir/config.guess
++#cp $srcdir/configure.sub $srcdir/config.sub
+ AC_CANONICAL_HOST
+--- cdparanoia-III-alpha9.8/interface/scan_devices.c   2001-03-25 22:44:01.000000000 -0700
++++ cdparanoia-III-alpha9.8.new/interface/scan_devices.c       2004-12-23 16:38:47.128815680 -0700
+@@ -19,6 +19,10 @@
+ #include "common_interface.h"
+ #include "utils.h"
++#ifndef PATH_MAX
++#define PATH_MAX 4096
++#endif
++
+ #define MAX_DEV_LEN 20 /* Safe because strings only come from below */
+ /* must be absolute paths! */
+ static char *scsi_cdrom_prefixes[]={
diff --git a/meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/interface_Makefile.in.patch b/meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/interface_Makefile.in.patch
new file mode 100644 (file)
index 0000000..4dbd2bb
--- /dev/null
@@ -0,0 +1,11 @@
+--- cdparanoia-III-10.2/interface/Makefile.in.orig     2009-01-27 23:52:42.000000000 +0100
++++ cdparanoia-III-10.2/interface/Makefile.in  2009-01-27 23:53:27.000000000 +0100
+@@ -46,7 +46,7 @@
+       $(RANLIB) libcdda_interface.a
+ libcdda_interface.so:         $(OFILES)       
+-      $(CC) -fpic -shared -o libcdda_interface.so.0.$(VERSION) -Wl,-soname -Wl,libcdda_interface.so.0 $(OFILES) $(LIBS)
++      $(CC) -fpic -shared -o libcdda_interface.so.0.$(VERSION) $(LDFLAGS) -Wl,-soname -Wl,libcdda_interface.so.0 $(OFILES) $(LIBS)
+       [ -e libcdda_interface.so.0 ] || ln -s libcdda_interface.so.0.$(VERSION) libcdda_interface.so.0
+       [ -e libcdda_interface.so ] || ln -s libcdda_interface.so.0.$(VERSION) libcdda_interface.so
diff --git a/meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/paranoia_Makefile.in.patch b/meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia/paranoia_Makefile.in.patch
new file mode 100644 (file)
index 0000000..962a43a
--- /dev/null
@@ -0,0 +1,11 @@
+--- cdparanoia-III-10.2/paranoia/Makefile.in.orig      2009-01-27 23:54:45.000000000 +0100
++++ cdparanoia-III-10.2/paranoia/Makefile.in   2009-01-27 23:55:05.000000000 +0100
+@@ -44,7 +44,7 @@
+       $(RANLIB) libcdda_paranoia.a
+ libcdda_paranoia.so:  $(OFILES)       
+-      $(CC) -fpic -shared -o libcdda_paranoia.so.0.$(VERSION) -Wl,-soname -Wl,libcdda_paranoia.so.0 $(OFILES) -L ../interface -lcdda_interface
++      $(CC) -fpic -shared -o libcdda_paranoia.so.0.$(VERSION) $(LDFLAGS) -Wl,-soname -Wl,libcdda_paranoia.so.0 $(OFILES) -L ../interface -lcdda_interface
+       [ -e libcdda_paranoia.so.0 ] || ln -s libcdda_paranoia.so.0.$(VERSION) libcdda_paranoia.so.0
+       [ -e libcdda_paranoia.so ] || ln -s libcdda_paranoia.so.0.$(VERSION) libcdda_paranoia.so
diff --git a/meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia_svn.bb b/meta-openvuplus/recipes-enigma2/cdparanoia/cdparanoia_svn.bb
new file mode 100644 (file)
index 0000000..b88c74b
--- /dev/null
@@ -0,0 +1,43 @@
+# Copyright (C) 2005, Advanced Micro Devices, Inc.  All Rights Reserved
+SUMMARY = "audio extraction tool for sampling CDs"
+HOMEPAGE = "http://xiph.org/paranoia/"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING-GPL;md5=1ed9d357695b2e3ef099df37fed63d96 \
+                    file://COPYING-LGPL;md5=d370feaa1c9edcdbd29ca27ea3d2304d"
+SECTION = "multimedia"
+SRCREV = "17289"
+PV = "10.2+svnr${SRCPV}"
+PR = "r1"
+
+SRC_URI = "svn://svn.xiph.org/trunk;module=cdparanoia;proto=http \
+        file://fixes10.patch \
+        file://Makefile.in.patch \
+        file://interface_Makefile.in.patch \
+        file://paranoia_Makefile.in.patch \
+        file://configure.in.patch"
+
+S = "${WORKDIR}/cdparanoia"
+
+PARALLEL_MAKE = ""
+
+inherit autotools pkgconfig
+
+PACKAGES += "libcdparanoia libcdparanoia-dev libcdparanoia-static"
+
+LICENSE_libcdparanoia = "LGPLv2.1"
+LICENSE_libcdparanoia-dev = "LGPLv2.1"
+LICENSE_libcdparanoia-static = "LGPLv2.1"
+
+FILES_${PN} = "${bindir}/*"
+FILES_${PN}-dev = ""
+FILES_${PN}-static = ""
+FILES_libcdparanoia = "${libdir}/lib*${SOLIBS}"
+FILES_libcdparanoia-dev = "${includedir} ${libdir}/lib*${SOLIBSDEV} ${libdir}/pkgconfig"
+FILES_libcdparanoia-static = "${libdir}/*.a"
+
+do_install() {
+       oe_runmake BINDIR="${D}${bindir}" MANDIR="${D}${datadir}/man/" \
+                  INCLUDEDIR="${D}${includedir}" LIBDIR="${D}${libdir}" \
+                  PKGCONFIGDIR="${D}${libdir}/pkgconfig" \
+                  install
+}
diff --git a/meta-openvuplus/recipes-enigma2/dreambox-dvbincludes/dreambox-dvbincludes.bb b/meta-openvuplus/recipes-enigma2/dreambox-dvbincludes/dreambox-dvbincludes.bb
new file mode 100644 (file)
index 0000000..7f5188a
--- /dev/null
@@ -0,0 +1,34 @@
+SUMMARY = "This package provides dbox2/dreambox \
+compatible header files for the API to the drivers."
+
+MAINTAINER = "Felix Domke <tmbinc@elitedvb.net>"
+
+PV="1"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://dbox/avs_core.h;beginline=1;endline=21;md5=b2ab401756a0768647ae13acb2e325ab"
+
+SRC_URI = "http://sources.dreamboxupdate.com/snapshots/include2.tar.gz"
+SRC_URI[md5sum] = "9d236095a88d7ce9f3bf0503ee5237d6"
+SRC_URI[sha256sum] = "739bc35bccdb1e4c6e14b77ab86808354eb6fd75434d3bd6236f3b3346805e02"
+
+S = "${WORKDIR}/include"
+
+ALLOW_EMPTY_dreambox-dvbincludes = "1"
+
+INPUT_FILES = "input_fake.h ci/ci.h  dbox/avia_gt_pig.h dbox/avs_core.h \
+       dbox/event.h dbox/fp.h dbox/info.h dbox/lcd.h dbox/saa7126_core.h \
+       dbox/lcd-ks0713.h dbox/fb.h \
+       dreambox/dreaminfo.h \
+       tuxbox/hardware_dbox2.h tuxbox/hardware_dreambox.h tuxbox/hardware_pci.h \
+       tuxbox/info.h tuxbox/info_dbox2.h tuxbox/kernel.h"
+
+do_install() {
+       install -d ${STAGING_INCDIR}/ci
+       install -d ${STAGING_INCDIR}/dbox
+       install -d ${STAGING_INCDIR}/dreambox
+       install -d ${STAGING_INCDIR}/tuxbox
+       for f in ${INPUT_FILES}; do
+               install -m 0644 ${S}/$f ${STAGING_INCDIR}/$f
+       done;
+}
+
diff --git a/meta-openvuplus/recipes-enigma2/dreambox-dvbincludes/dreambox-dvbincludes_1.1.bb b/meta-openvuplus/recipes-enigma2/dreambox-dvbincludes/dreambox-dvbincludes_1.1.bb
new file mode 100644 (file)
index 0000000..bb2a4a2
--- /dev/null
@@ -0,0 +1,26 @@
+SUMMARY = "dbox2/dreambox compatible header files"
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://dbox/avs_core.h;beginline=1;endline=21;md5=b2ab401756a0768647ae13acb2e325ab"
+PR = "r1"
+
+SRC_URI = "http://sources.dreamboxupdate.com/snapshots/include2.tar.gz"
+SRC_URI[md5sum] = "9d236095a88d7ce9f3bf0503ee5237d6"
+SRC_URI[sha256sum] = "739bc35bccdb1e4c6e14b77ab86808354eb6fd75434d3bd6236f3b3346805e02"
+
+S = "${WORKDIR}/include"
+
+# avs_core.h and saa7126_core.h are obsolete, but
+# libtuxtxt currently doesn't compile without them.
+INPUT_FILES = " \
+       dbox/fp.h \
+       dbox/lcd-ks0713.h \
+       dbox/avs_core.h \
+       dbox/saa7126_core.h \
+"
+
+do_install() {
+       install -d ${D}${includedir}/dbox
+       for f in ${INPUT_FILES}; do
+               install -m 0644 $f ${D}${includedir}/$f
+       done
+}
diff --git a/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/01peerdns b/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/01peerdns
new file mode 100644 (file)
index 0000000..5ee1ebd
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+mv /etc/resolv.conf /etc/resolv.conf-back
+ln -s /var/run/ppp/resolv.conf /etc/resolv.conf
diff --git a/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/01peerdns-remove b/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/01peerdns-remove
new file mode 100644 (file)
index 0000000..f0ea5a5
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+if [ -f /etc/resolv.conf-back ];  then
+               rm /etc/resolv.conf
+               mv /etc/resolv.conf-back /etc/resolv.conf
+fi
diff --git a/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/dial.modem b/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/dial.modem
new file mode 100644 (file)
index 0000000..c099b6e
--- /dev/null
@@ -0,0 +1,20 @@
+#!/bin/sh
+#
+# This script is used to dial a modem using a specific
+# number.
+#
+
+if [ $# -lt 1 ]
+then
+  echo "$0: no phone number given." >&2
+  exit -1
+fi
+
+PHONENUM=$1
+
+chat -v \
+ABORT "N" \
+ABORT "n"  \
+'' 'ATZ' \
+'O' "ATDT${PHONENUM}" \
+'c' 
diff --git a/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/disconnect.modem b/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/disconnect.modem
new file mode 100644 (file)
index 0000000..ef0cc50
--- /dev/null
@@ -0,0 +1,10 @@
+#!/bin/sh
+#
+#
+# This script is used to disconnect the modem.
+#
+# It assumes the modem will respond back to a
+# command state by the "+++" sequence.
+#
+
+chat "" "\d\d+\p+\p+\c" '' "\d\dATH0"
diff --git a/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/dm800/options b/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/dm800/options
new file mode 100644 (file)
index 0000000..25b3144
--- /dev/null
@@ -0,0 +1,18 @@
+/dev/ttyS1 2400
+
+nocrtscts
+nocdtrcts
+local
+
+lock
+defaultroute
+usepeerdns
+asyncmap 0
+mtu 552
+mru 552
+user arcor
+
+#hangup script
+disconnect /etc/ppp/disconnect.modem
+#dial script
+connect "/etc/ppp/dial.modem 01920793"
diff --git a/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/options b/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/options
new file mode 100644 (file)
index 0000000..746ee81
--- /dev/null
@@ -0,0 +1,18 @@
+/dev/ttyS1 2400
+
+crtscts
+nocdtrcts
+local
+
+lock
+defaultroute
+usepeerdns
+asyncmap 0
+mtu 552
+mru 552
+user arcor
+
+#hangup script
+disconnect /etc/ppp/disconnect.modem
+#dial script
+connect "/etc/ppp/dial.modem 01920793"
diff --git a/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/pap-secrets b/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts/pap-secrets
new file mode 100644 (file)
index 0000000..7825deb
--- /dev/null
@@ -0,0 +1,3 @@
+# Secrets for authentication using PAP
+# client       server  secret                  IP addresses
+arcor * internet
diff --git a/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts_0.1.bb b/meta-openvuplus/recipes-enigma2/dreambox-modem-ppp-scripts/dreambox-modem-ppp-scripts_0.1.bb
new file mode 100644 (file)
index 0000000..859ab5c
--- /dev/null
@@ -0,0 +1,25 @@
+SUMMARY = "ppp scripts for dreambox builtin modem"
+SECTION = "base"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${OPENDREAMBOX_BASE}/LICENSE;md5=0a5ec7423edaca24547634f416478834"
+PR = "r2"
+
+S = "${WORKDIR}"
+
+SRC_URI = "file://options file://pap-secrets file://dial.modem \
+       file://disconnect.modem file://01peerdns file://01peerdns-remove"
+
+do_install() {
+       install -d ${D}/etc/ppp
+       for i in dial.modem disconnect.modem; do
+               install -m 0755 ${S}/$i ${D}/etc/ppp/
+       done
+       for i in options pap-secrets; do
+               install -m 0644 ${S}/$i ${D}/etc/ppp/
+       done
+       install -d ${D}/etc/ppp/ip-up.d
+       install -m 0755 ${S}/01peerdns ${D}/etc/ppp/ip-up.d
+       install -d ${D}/etc/ppp/ip-down.d
+       install -m 0755 ${S}/01peerdns-remove ${D}/etc/ppp/ip-down.d
+}
+
diff --git a/meta-openvuplus/recipes-enigma2/dvbtools/dvb-apps-1.1.1/update-to-tip.diff b/meta-openvuplus/recipes-enigma2/dvbtools/dvb-apps-1.1.1/update-to-tip.diff
new file mode 100644 (file)
index 0000000..b91a750
--- /dev/null
@@ -0,0 +1,37589 @@
+Update to:
+
+changeset 1406:c87abbb20491 tip
+
+update scan file for fr-Reims
+submitted by sylvestre.cartier gmail.com
+author Christoph Pfister <pfister@linuxtv.org>
+date   Sun Nov 28 21:24:42 2010 +0100 (3 weeks ago)
+parents        ce1c094b9636
+
+Make.rules                                 |    2 
+ README                                     |    7 
+ a/util/scan/dvb-t/be-Brussels              |    5 
+ a/util/scan/dvb-t/be-Libramont             |   10 
+ a/util/scan/dvb-t/be-Schoten               |    3 
+ a/util/scan/dvb-t/be-St_Pieters_Leeuw      |    3 
+ a/util/scan/dvb-t/be-Tournai               |    3 
+ a/util/scan/dvb-t/cz-Brno                  |   10 
+ a/util/scan/dvb-t/cz-Domazlice             |    3 
+ a/util/scan/dvb-t/cz-Klet                  |    4 
+ a/util/scan/dvb-t/cz-Ostrava               |    3 
+ a/util/scan/dvb-t/cz-Plzen                 |    8 
+ a/util/scan/dvb-t/cz-Praha                 |    7 
+ a/util/scan/dvb-t/fr-Lille                 |   30 
+ a/util/scan/dvb-t/fr-LilleT2               |   13 
+ a/util/scan/dvb-t/hr-Zagreb                |    3 
+ b/util/alevt/COPYRIGHT                     |  297 +
+ b/util/alevt/ChangeLog                     |  535 ++
+ b/util/alevt/EXPORT.HOWTO                  |   84 
+ b/util/alevt/Makefile                      |  130 
+ b/util/alevt/README                        |   72 
+ b/util/alevt/README.OLD                    |   78 
+ b/util/alevt/ReadmeGR                      |   28 
+ b/util/alevt/TODO                          |   12 
+ b/util/alevt/alevt-cap.1                   |   53 
+ b/util/alevt/alevt-cap.c                   |  280 +
+ b/util/alevt/alevt-date.1                  |   41 
+ b/util/alevt/alevt-date.c                  |  225 +
+ b/util/alevt/alevt.1                       |   60 
+ b/util/alevt/alevt.desktop                 |    9 
+ b/util/alevt/bdf2xbm.c                     |  212 +
+ b/util/alevt/cache.c                       |  229 +
+ b/util/alevt/cache.h                       |   41 
+ b/util/alevt/dllist.h                      |   55 
+ b/util/alevt/exp-gfx.c                     |  258 +
+ b/util/alevt/exp-html.c                    |  299 +
+ b/util/alevt/exp-txt.c                     |  226 +
+ b/util/alevt/export.c                      |  364 +
+ b/util/alevt/export.h                      |   66 
+ b/util/alevt/fdset.c                       |   97 
+ b/util/alevt/fdset.h                       |   28 
+ b/util/alevt/font.c                        |    5 
+ b/util/alevt/font.h                        |   19 
+ b/util/alevt/hamm.c                        |  229 +
+ b/util/alevt/hamm.h                        |    7 
+ b/util/alevt/help.c                        |   83 
+ b/util/alevt/help.h                        |    8 
+ b/util/alevt/icon.xbm                      |   17 
+ b/util/alevt/lang.c                        |  393 +
+ b/util/alevt/lang.h                        |   28 
+ b/util/alevt/main.c                        |  221 +
+ b/util/alevt/misc.c                        |   66 
+ b/util/alevt/misc.h                        |   32 
+ b/util/alevt/os.h                          |    7 
+ b/util/alevt/search.c                      |  127 
+ b/util/alevt/search.h                      |   16 
+ b/util/alevt/ui.c                          |  721 +++
+ b/util/alevt/ui.h                          |   35 
+ b/util/alevt/vbi.c                         |  942 ++++
+ b/util/alevt/vbi.h                         |   47 
+ b/util/alevt/vt.h                          |   62 
+ b/util/alevt/vt900.out                     |   29 
+ b/util/alevt/vt901.out                     |   29 
+ b/util/alevt/vt902.out                     |   29 
+ b/util/alevt/vt903.out                     |   29 
+ b/util/alevt/vt904.out                     |   29 
+ b/util/alevt/vt905.out                     |   29 
+ b/util/alevt/vt906.out                     |   29 
+ b/util/alevt/vt907.out                     |   29 
+ b/util/alevt/vt908.out                     |   29 
+ b/util/alevt/vt909.out                     |   29 
+ b/util/alevt/vt910.out                     |   29 
+ b/util/alevt/vt911.out                     |   29 
+ b/util/alevt/vt912.out                     |   29 
+ b/util/alevt/vt913.out                     |   29 
+ b/util/alevt/vt914.out                     |   29 
+ b/util/alevt/vt915.out                     |   29 
+ b/util/alevt/vtxt-iso8859-7.bdf            | 5768 ++++++++++++++++++++++++++++
+ b/util/alevt/vtxt-koi8.bdf                 | 5906 +++++++++++++++++++++++++++++
+ b/util/alevt/vtxt-latin-1.bdf              | 5906 +++++++++++++++++++++++++++++
+ b/util/alevt/vtxt-latin-2.bdf              | 5906 +++++++++++++++++++++++++++++
+ b/util/alevt/xio.c                         | 1156 +++++
+ b/util/alevt/xio.h                         |   80 
+ b/util/gotox/Makefile                      |   17 
+ b/util/gotox/gotox.c                       |  145 
+ b/util/scan/dvb-c/at-Kabel-Braunau         |   26 
+ b/util/scan/dvb-c/at-Kabelsignal           |   38 
+ b/util/scan/dvb-c/de-komro-Rosenheim       |   30 
+ b/util/scan/dvb-c/fi-Oulu                  |   19 
+ b/util/scan/dvb-c/hu-Digikabel             |   21 
+ b/util/scan/dvb-c/nl-REKAM-CAIW_Gouda      |    4 
+ b/util/scan/dvb-s/Agila2_C-146.0E          |   60 
+ b/util/scan/dvb-s/Apstar6_C-134.0E         |   15 
+ b/util/scan/dvb-s/AsiaSat2_C-100.5E        |   51 
+ b/util/scan/dvb-s/Asiasat4_C-122.2E        |   27 
+ b/util/scan/dvb-s/Astra-23.5E              |   66 
+ b/util/scan/dvb-s/Atlantic-Bird-3-5.0W     |    4 
+ b/util/scan/dvb-s/Chinastar1_C-87.5E       |   15 
+ b/util/scan/dvb-s/Insat2E_C-83.0E          |   93 
+ b/util/scan/dvb-s/Insat3A_C-93.5E          |   66 
+ b/util/scan/dvb-s/Insat4A_C-83.0E          |   93 
+ b/util/scan/dvb-s/Insat4B_C-93.5E          |   51 
+ b/util/scan/dvb-s/Intelsat8_C-166.0E       |   39 
+ b/util/scan/dvb-s/JCSat3A_C-128.0E         |   18 
+ b/util/scan/dvb-s/Measat3_C-91.5E          |   54 
+ b/util/scan/dvb-s/PalapaC2_C-113.0E        |   39 
+ b/util/scan/dvb-s/ST1_C-80.0E              |   27 
+ b/util/scan/dvb-s/Telkom1_C-108.0E         |   48 
+ b/util/scan/dvb-s/Telstar10_C-76.5E        |   63 
+ b/util/scan/dvb-s/Telstar18_C-138.0E       |   18 
+ b/util/scan/dvb-s/Thaicom1A_C-120.0E       |   24 
+ b/util/scan/dvb-s/Thaicom2_C-78.5E         |   33 
+ b/util/scan/dvb-s/Thaicom5_C-78.5E         |   69 
+ b/util/scan/dvb-s/Vinasat1_C-132.0E        |   12 
+ b/util/scan/dvb-t/au-AdelaideFoothills     |   12 
+ b/util/scan/dvb-t/au-Ballarat              |   12 
+ b/util/scan/dvb-t/au-Bendigo               |   41 
+ b/util/scan/dvb-t/au-Devonport             |   19 
+ b/util/scan/dvb-t/au-FraserCoast-Bundaberg |   12 
+ b/util/scan/dvb-t/au-Goulburn-Rocky_Hill   |   19 
+ b/util/scan/dvb-t/au-Hervey_Bay-Ghost_Hill |   16 
+ b/util/scan/dvb-t/au-Sutherland            |   20 
+ b/util/scan/dvb-t/be-All                   |    8 
+ b/util/scan/dvb-t/ch-Geneva                |   16 
+ b/util/scan/dvb-t/cz-All                   |   41 
+ b/util/scan/dvb-t/es-BaixoMinho            |   16 
+ b/util/scan/dvb-t/es-Granada               |    8 
+ b/util/scan/dvb-t/es-Pamplona              |    9 
+ b/util/scan/dvb-t/es-SC_Tenerife           |   18 
+ b/util/scan/dvb-t/es-Vitoria-Gasteiz       |    8 
+ b/util/scan/dvb-t/fi-Smedsbole             |   13 
+ b/util/scan/dvb-t/fr-Lille-Bouvigny        |   26 
+ b/util/scan/dvb-t/fr-Rochefort-sur-mer     |   14 
+ b/util/scan/dvb-t/hr-All                   |   30 
+ b/util/scan/dvb-t/hu-Budapest              |    8 
+ b/util/scan/dvb-t/hu-Debrecen              |    8 
+ b/util/scan/dvb-t/hu-Gyor                  |    8 
+ b/util/scan/dvb-t/hu-Kabhegy               |    8 
+ b/util/scan/dvb-t/hu-Kekes                 |    8 
+ b/util/scan/dvb-t/hu-Kiskoros              |    8 
+ b/util/scan/dvb-t/hu-Nagykanizsa-Ujudvar   |    8 
+ b/util/scan/dvb-t/hu-Pecs                  |    8 
+ b/util/scan/dvb-t/hu-Szeged                |    8 
+ b/util/scan/dvb-t/hu-Szentes               |    8 
+ b/util/scan/dvb-t/hu-Tokaj                 |    8 
+ b/util/scan/dvb-t/hu-Uzd                   |    8 
+ b/util/scan/dvb-t/hu-Vasvar-Hegyhatsal     |    8 
+ b/util/scan/dvb-t/il-All                   |    5 
+ b/util/scan/dvb-t/ir-Tehran                |    4 
+ b/util/scan/dvb-t/it-Montevergine          |   18 
+ b/util/scan/dvb-t/lt-All                   |   39 
+ b/util/scan/dvb-t/ro-Bucharest             |    5 
+ b/util/scan/dvb-t/si-Ljubljana             |    5 
+ b/util/scan/dvb-t/sk-Bardejov              |   11 
+ b/util/scan/dvb-t/sk-Michalovce            |   11 
+ b/util/scan/dvb-t/sk-Namestovo             |   11 
+ b/util/scan/dvb-t/sk-Poprad                |   11 
+ b/util/scan/dvb-t/sk-RimavskaSobota        |   11 
+ b/util/scan/dvb-t/sk-Trencin               |   12 
+ b/util/scan/dvb-t/sk-VelkyKrtis            |   11 
+ b/util/scan/dvb-t/sk-Zilina                |   11 
+ b/util/scan/dvb-t/vn-Thaibinh              |    5 
+ b/util/szap/util.c                         |  126 
+ b/util/szap/util.h                         |   24 
+ lib/libdvben50221/en50221_stdcam_llci.c    |   19 
+ lib/libdvbsec/dvbsec_api.c                 |   17 
+ test/Makefile                              |    1 
+ test/README                                |    2 
+ test/test_video.c                          |   53 
+ util/Makefile                              |    1 
+ util/femon/femon.c                         |   57 
+ util/scan/dvb-c/at-KarrerNet               |   18 
+ util/scan/dvb-c/de-Primacom                |    5 
+ util/scan/dvb-c/de-Unitymedia              |   17 
+ util/scan/dvb-c/fi-Turku                   |    8 
+ util/scan/dvb-c/se-comhem                  |   22 
+ util/scan/dvb-s/AsiaSat3S_C-105.5E         |  164 
+ util/scan/dvb-t/au-Adelaide                |    2 
+ util/scan/dvb-t/au-Brisbane                |    2 
+ util/scan/dvb-t/au-SunshineCoast           |    2 
+ util/scan/dvb-t/ch-All                     |    1 
+ util/scan/dvb-t/de-Baden-Wuerttemberg      |   23 
+ util/scan/dvb-t/de-Bayern                  |   56 
+ util/scan/dvb-t/de-Berlin                  |   13 
+ util/scan/dvb-t/de-Brandenburg             |    4 
+ util/scan/dvb-t/de-Bremen                  |    8 
+ util/scan/dvb-t/de-Hamburg                 |   20 
+ util/scan/dvb-t/de-Hessen                  |   26 
+ util/scan/dvb-t/de-Mecklenburg-Vorpommern  |   10 
+ util/scan/dvb-t/de-Niedersachsen           |   33 
+ util/scan/dvb-t/de-Nordrhein-Westfalen     |   16 
+ util/scan/dvb-t/de-Rheinland-Pfalz         |   10 
+ util/scan/dvb-t/de-Saarland                |    6 
+ util/scan/dvb-t/de-Sachsen                 |   14 
+ util/scan/dvb-t/de-Sachsen-Anhalt          |    8 
+ util/scan/dvb-t/de-Schleswig-Holstein      |   26 
+ util/scan/dvb-t/de-Thueringen              |    8 
+ util/scan/dvb-t/dk-All                     |   16 
+ util/scan/dvb-t/es-Albacete                |   20 
+ util/scan/dvb-t/es-Alfabia                 |    3 
+ util/scan/dvb-t/es-Collserola              |   16 
+ util/scan/dvb-t/es-Las_Palmas              |   22 
+ util/scan/dvb-t/es-Sevilla                 |   17 
+ util/scan/dvb-t/fr-Boulogne                |   17 
+ util/scan/dvb-t/fr-Brest                   |   10 
+ util/scan/dvb-t/fr-Chambery                |   42 
+ util/scan/dvb-t/fr-Laval                   |   12 
+ util/scan/dvb-t/fr-Montbeliard             |   28 
+ util/scan/dvb-t/fr-Nantes                  |   13 
+ util/scan/dvb-t/fr-Poitiers                |   12 
+ util/scan/dvb-t/fr-Reims                   |   18 
+ util/scan/dvb-t/fr-Tours                   |   32 
+ util/scan/dvb-t/gr-Athens                  |    2 
+ util/scan/dvb-t/is-Reykjavik               |   42 
+ util/scan/dvb-t/it-Milano                  |   38 
+ util/scan/dvb-t/se-Horby_Sallerup          |    2 
+ util/scan/dvb-t/se-Ornskoldsvik_As         |    1 
+ util/scan/dvb-t/se-Skelleftea              |    1 
+ util/scan/dvb-t/sk-BanskaBystrica          |    9 
+ util/scan/dvb-t/sk-Bratislava              |    9 
+ util/scan/dvb-t/sk-Kosice                  |    9 
+ util/scan/dvb-t/uk-Aberdare                |   17 
+ util/scan/dvb-t/uk-Redruth                 |   13 
+ util/scan/dvb-t/uk-StocklandHill           |   15 
+ util/scan/dvb-t/uk-Storeton                |   15 
+ util/scan/dvb-t/uk-WinterHill              |   18 
+ util/scan/scan.c                           |   11 
+ util/szap/Makefile                         |    2 
+ util/szap/azap.c                           |   27 
+ util/szap/czap.c                           |   91 
+ util/szap/szap.c                           |   97 
+ util/szap/tzap.c                           |   73 
+ 232 files changed, 34875 insertions(+), 778 deletions(-)
+diff -r af23d23c278b Make.rules
+--- a/Make.rules       Sat Jun 20 16:47:55 2009 +0200
++++ b/Make.rules       Tue Dec 21 12:13:28 2010 +0100
+@@ -35,7 +35,7 @@
+ sharedir   ?= $(prefix)/share
+ ifneq ($(DESTDIR),)
+-DESTDIR = $(DESTDIR)/
++DESTDIR := $(DESTDIR)/
+ endif
+ ifeq ($(V),1)
+diff -r af23d23c278b README
+--- a/README   Sat Jun 20 16:47:55 2009 +0200
++++ b/README   Tue Dec 21 12:13:28 2010 +0100
+@@ -15,6 +15,8 @@
+ util/dvbtraffic       - Monitor traffic on a digital device.
+ util/femon    - Monitor the tuning on a digital TV device.
+ util/zap      - *Just* tunes a digital device - really intended for developers.
++util/gotox    - Simple Rotor control utility
++util/alevt    - Teletext capture and display utility
+ Hardware Specific Utilities:
+ util/av7110_loadkeys  - Load remote keys into an av7110 based card
+@@ -36,5 +38,10 @@
+ files as they are contained in the linuxtv-dvb-1.? release
+ and the 2.6.x Linux kernel.
++AleVT is not compiled by the main Makefile, because it depends on external
++libraries which might not be available in your system (see util/alevt/README for
++details). If you have the required libraries, to compile AleVT go to util/alevt/
++and type "make".
++
+ Johannes Stezenbach <js@convergence.de>
+ Andrew de Quincey <adq_dvb@lidskialf.net>
+diff -r af23d23c278b lib/libdvben50221/en50221_stdcam_llci.c
+--- a/lib/libdvben50221/en50221_stdcam_llci.c  Sat Jun 20 16:47:55 2009 +0200
++++ b/lib/libdvben50221/en50221_stdcam_llci.c  Tue Dec 21 12:13:28 2010 +0100
+@@ -374,14 +374,21 @@
+               } else if (resource_id == EN50221_APP_MMI_RESOURCEID) {
+                       llci->stdcam.mmi_session_number = session_number;
+               }
++              break;
++      case S_SCALLBACK_REASON_CLOSE:
++              if (resource_id == EN50221_APP_MMI_RESOURCEID) {
++                      llci->stdcam.mmi_session_number = -1;
++              } else if (resource_id == EN50221_APP_DATETIME_RESOURCEID) {
++                      llci->datetime_session_number = -1;
++              } else if (resource_id == EN50221_APP_AI_RESOURCEID) {
++                      llci->stdcam.ai_session_number = -1;
++              } else if (resource_id == EN50221_APP_CA_RESOURCEID) {
++                      llci->stdcam.ca_session_number = -1;
++              } else if (resource_id == EN50221_APP_MMI_RESOURCEID) {
++                      llci->stdcam.mmi_session_number = -1;
++              }
+               break;
+-    case S_SCALLBACK_REASON_CLOSE:
+-        if (resource_id == EN50221_APP_MMI_RESOURCEID) {
+-            llci->stdcam.mmi_session_number = -1;
+-        }
+-
+-        break;
+       }
+       return 0;
+ }
+diff -r af23d23c278b lib/libdvbsec/dvbsec_api.c
+--- a/lib/libdvbsec/dvbsec_api.c       Sat Jun 20 16:47:55 2009 +0200
++++ b/lib/libdvbsec/dvbsec_api.c       Tue Dec 21 12:13:28 2010 +0100
+@@ -537,19 +537,12 @@
+       }
+       // generate the command
+-      if (integer < -256) {
+-              return -EINVAL;
+-      } else if (integer < 0) {
+-              integer = -integer;
+-              data[3] = 0xf0;
+-      } else if (integer < 256) {
+-              data[3] = 0x00;
+-      } else if (integer < 512) {
+-              integer -= 256;
+-              data[3] = 0x10;
+-      } else {
+-              return -EINVAL;
++      if (integer < 0.0) {
++              data[3] = 0xD0;  // West is a negative angle value
++      } else if (integer >= 0.0) {
++              data[3] = 0xE0;  // East is a positive angle value
+       }
++      integer = abs(integer);
+       data[3] |= ((integer / 16) & 0x0f);
+       integer = integer % 16;
+       data[4] |= ((integer & 0x0f) << 4) | fraction;
+diff -r af23d23c278b test/Makefile
+--- a/test/Makefile    Sat Jun 20 16:47:55 2009 +0200
++++ b/test/Makefile    Tue Dec 21 12:13:28 2010 +0100
+@@ -18,6 +18,7 @@
+            test_stillimage \
+            test_tt         \
+            test_vevent     \
++           test_video      \
+          evtest          \
+          video           \
+          szap2
+diff -r af23d23c278b test/README
+--- a/test/README      Sat Jun 20 16:47:55 2009 +0200
++++ b/test/README      Tue Dec 21 12:13:28 2010 +0100
+@@ -47,4 +47,4 @@
+ test_dvr      :
+ test_front    :
+ test_switch   :
+-test_video    :
++test_video    : Play video-only file on /dev/dvb/adapter0/video0
+diff -r af23d23c278b test/test_video.c
+--- a/test/test_video.c        Sat Jun 20 16:47:55 2009 +0200
++++ b/test/test_video.c        Tue Dec 21 12:13:28 2010 +0100
+@@ -23,6 +23,7 @@
+ #include <sys/ioctl.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <stdint.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+@@ -31,8 +32,7 @@
+ #include <unistd.h>
+ #include <linux/dvb/dmx.h>
+-#include <linux/dvb/frontend_old.h>
+-#include <linux/dvb/sec.h>
++#include <linux/dvb/frontend.h>
+ #include <linux/dvb/video.h>
+ #include <sys/poll.h>
+@@ -100,7 +100,7 @@
+-int videoSetBlank(int fd, boolean state)
++int videoSetBlank(int fd, int state)
+ {
+       int ans;
+@@ -138,72 +138,72 @@
+ int videoGetStatus(int fd)
+ {
+-      struct video_status stat;
++      struct video_status vstat;
+       int ans;
+-      if ((ans = ioctl(fd,VIDEO_GET_STATUS, &stat)) < 0) {
++      if ((ans = ioctl(fd,VIDEO_GET_STATUS, &vstat)) < 0) {
+               perror("VIDEO GET STATUS: ");
+               return -1;
+       }
+       printf("Video Status:\n");
+       printf("  Blank State          : %s\n",
+-             (stat.video_blank ? "BLANK" : "STILL"));
++             (vstat.video_blank ? "BLANK" : "STILL"));
+       printf("  Play State           : ");
+-      switch ((int)stat.play_state){
++      switch ((int)vstat.play_state){
+       case VIDEO_STOPPED:
+-              printf("STOPPED (%d)\n",stat.play_state);
++              printf("STOPPED (%d)\n",vstat.play_state);
+               break;
+       case VIDEO_PLAYING:
+-              printf("PLAYING (%d)\n",stat.play_state);
++              printf("PLAYING (%d)\n",vstat.play_state);
+               break;
+       case VIDEO_FREEZED:
+-              printf("FREEZED (%d)\n",stat.play_state);
++              printf("FREEZED (%d)\n",vstat.play_state);
+               break;
+       default:
+-              printf("unknown (%d)\n",stat.play_state);
++              printf("unknown (%d)\n",vstat.play_state);
+               break;
+       }
+       printf("  Stream Source        : ");
+-      switch((int)stat.stream_source){
++      switch((int)vstat.stream_source){
+       case VIDEO_SOURCE_DEMUX:
+-              printf("DEMUX (%d)\n",stat.stream_source);
++              printf("DEMUX (%d)\n",vstat.stream_source);
+               break;
+       case VIDEO_SOURCE_MEMORY:
+-              printf("MEMORY (%d)\n",stat.stream_source);
++              printf("MEMORY (%d)\n",vstat.stream_source);
+               break;
+       default:
+-              printf("unknown (%d)\n",stat.stream_source);
++              printf("unknown (%d)\n",vstat.stream_source);
+               break;
+       }
+       printf("  Format (Aspect Ratio): ");
+-      switch((int)stat.video_format){
++      switch((int)vstat.video_format){
+       case VIDEO_FORMAT_4_3:
+-              printf("4:3 (%d)\n",stat.video_format);
++              printf("4:3 (%d)\n",vstat.video_format);
+               break;
+       case VIDEO_FORMAT_16_9:
+-              printf("16:9 (%d)\n",stat.video_format);
++              printf("16:9 (%d)\n",vstat.video_format);
+               break;
+       default:
+-              printf("unknown (%d)\n",stat.video_format);
++              printf("unknown (%d)\n",vstat.video_format);
+               break;
+       }
+       printf("  Display Format       : ");
+-      switch((int)stat.display_format){
++      switch((int)vstat.display_format){
+       case VIDEO_PAN_SCAN:
+-              printf("Pan&Scan (%d)\n",stat.display_format);
++              printf("Pan&Scan (%d)\n",vstat.display_format);
+               break;
+       case VIDEO_LETTER_BOX:
+-              printf("Letterbox (%d)\n",stat.display_format);
++              printf("Letterbox (%d)\n",vstat.display_format);
+               break;
+       case VIDEO_CENTER_CUT_OUT:
+-              printf("Center cutout (%d)\n",stat.display_format);
++              printf("Center cutout (%d)\n",vstat.display_format);
+               break;
+       default:
+-              printf("unknown (%d)\n",stat.display_format);
++              printf("unknown (%d)\n",vstat.display_format);
+               break;
+       }
+       return 0;
+@@ -230,7 +230,6 @@
+       int written;
+       struct pollfd pfd[NFD];
+       int stopped = 0;
+-      int ch;
+       pfd[0].fd = STDIN_FILENO;
+       pfd[0].events = POLLIN;
+@@ -327,7 +326,7 @@
+       videoPlay(fd);
+ }
+-main(int argc, char **argv)
++int main(int argc, char **argv)
+ {
+       int fd;
+       int filefd;
+@@ -338,7 +337,7 @@
+               perror("File open:");
+               return -1;
+       }
+-      if ((fd = open("/dev/ost/video1",O_RDWR|O_NONBLOCK)) < 0){
++      if ((fd = open("/dev/dvb/adapter0/video0",O_RDWR|O_NONBLOCK)) < 0){
+               perror("VIDEO DEVICE: ");
+               return -1;
+       }
+diff -r af23d23c278b util/Makefile
+--- a/util/Makefile    Sat Jun 20 16:47:55 2009 +0200
++++ b/util/Makefile    Tue Dec 21 12:13:28 2010 +0100
+@@ -16,4 +16,5 @@
+       $(MAKE) -C szap $@
+       $(MAKE) -C ttusb_dec_reset $@
+       $(MAKE) -C gnutv $@
++      $(MAKE) -C gotox $@
+       $(MAKE) -C zap $@
+diff -r af23d23c278b util/alevt/COPYRIGHT
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/COPYRIGHT     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,297 @@
++This message applies to all files within the archive:
++
++    Copyright (C) 1998,1999,2000 Edgar Toernig (froese@gmx.de)
++    All rights reserved.
++
++    This program is free software; you can redistribute it and/or modify
++    it under the terms of the GNU General Public License Version 2 as
++    published by the Free Software Foundation.
++
++    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.
++
++
++And here's the GNU GPL V2:
++
++                  GNU GENERAL PUBLIC LICENSE
++                     Version 2, June 1991
++
++ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
++                          675 Mass Ave, Cambridge, MA 02139, 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 Library 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.
++
++                  GNU GENERAL PUBLIC LICENSE
++   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
+diff -r af23d23c278b util/alevt/ChangeLog
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/ChangeLog     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,535 @@
++Thu Feb 11 22:05:00 MET 2010  (1.7.0)
++
++    - redesigned version:
++    - outfile, new starting methods, libzvbi implementation
++    - lots of bug fixes, all patches available in the Internet applied
++    - extensive code cleanup
++
++Mon Dec  3 03:11:07 MET 2007  (1.6.2)
++
++    - compilation fixes for newer gcc
++    - makefile tweaks (man vs share/man, /usr/X11R6 vs /usr, etc)
++    - default device changed to /dev/vbi0
++    - adapt to current v4l2 api
++    - some minor fixes collected during the past years
++
++    This is a build-time update to conform to newer compilers and
++    system environments.  If you have a running AleVT there's no
++    reason to update.  The only real fix is in the html-exporter
++    which was producing broken html (missing double-quotes).
++
++Thu Jan 23 01:53:10 MET 2003
++
++    - Fixed a bug in contrib/cap-all.c (fdset_init before vbi_open)
++    - Expaned cap-all.c to show how to save in two formats simultaneously.
++
++Tue Aug 20 05:22:16 MEST 2002 (1.6.1)
++
++    - Removed the bttv-warning from the help pages ;-)
++
++Mon Jul 23 18:34:32 MEST 2001
++
++    - Fixed bug in ui.c - found by <pawel@sakowski.eu.org>.
++    - When clicking on page numbers accept sub-page numbers too.
++
++Sat Dec 23 15:12:11 MET 2000
++
++    - Fixed 'double height last line' bug in export.c reported by
++      <Matthias.Kleinmann@urz.uni-heidelberg.de>
++
++Thu Oct 12 02:19:31 MEST 2000
++
++    - The &nbsp; fix was wrong.  Removed it.
++
++Wed Oct 11 19:41:38 MEST 2000 (1.6.0)
++
++    - Some documentation tweaks.
++    - Release.  Made it 1.6 because of V4l2 API.
++
++Thu Sep 21 21:07:12 MEST 2000
++
++    - Removed old bttv-only decoder.  Only the v4l2-based stays.
++      If the device does not support v4l2, default parameters
++      appropriate for the bttv-driver are taken.
++    - Subpage cycling (up/down and 2nd wheel) stays in the current
++      page.
++
++Sat Sep 16 23:52:12 MEST 2000
++
++    - Experimental v4l2 interface added.
++    - Finetune defaults to 1 now.  Works best for me.  Tell me
++      if you don't like it.
++    - Russian patch still not added :-/
++    - Fixed the bug in xio.c that Ben Smithurst
++      <ben@scientia.demon.co.uk> found.
++    - Added the dual-wheel-mouse patch from Holger Fitzner.
++
++Tue May 30 03:09:24 MEST 2000
++
++    - As Matto Fransen <matto@matto.nl> reported: the ; after &nbsp
++      in exp-html is missing.  fixed that.
++
++Tue May  9 20:21:52 MEST 2000
++
++    - Removed the -oldbttv/-newbttv options.  If your driver has
++      a buffer size different from that in the current bttv you
++      either have to support the VBISIZE ioctl or change the source.
++      (Tried to implement an autodetect by non-blocking reads but
++      that confuses the driver that much that it no longers gives
++      reasonable data.)
++    - Added a compression option to the png export filter and
++      changed the default compression level to the lib's default.
++      The prev default of 9 was way to slow.
++
++Wed May  3 19:18:55 MEST 2000
++
++    - Added a smaller font.  Made out of the neep9 font from
++      the really great jmk-fonts (http://www.pobox.com/~jmknoble).
++
++Sat Apr 29 02:36:41 MEST 2000
++
++    - Fixed SEGV in export.c:adjust.
++    - Fixed a possible buffer overrun in exp-txt.c
++
++Thu Nov  4 21:18:52 MET 1999  (1.5.1)
++
++    - Added os.h.  That way alevt compiles right out of the
++      box on all BSD systems (I hope *g*).
++    - Fixed the DST bug in alevt-date.
++    - Put vtwiz.pl in contrib, a perl/tk/set-tv script to
++      launch alevt written by Joern Borgert.
++
++Tue Oct 26 23:55:09 MEST 1999 (1.5.1-pre1)
++
++    - Added timeout option to alevt-cap.
++    - Use install instead of cp in the Makefile.
++    - Added -I/usr/local/include and -L/usr/local/lib
++      in the Makefile.
++    - Changed #ifdef FREEBSD to #ifdef BSD.
++    - exchanged contrib/paul-export.patch with
++      paul.fmt_page.c (a replacement for export.c:fmt_page())
++      and paul.fmt_page.patch (the same in form of a
++      patch file).
++    - Some doc corrections.
++
++Thu Oct 14 02:49:48 MEST 1999
++
++    - Added FREEBSD patches.
++
++Fri Oct  8 23:36:45 MEST 1999 (1.5.0)
++
++    - Updated the documentation.
++
++    So, what's new since 1.4.9 (nearly 4 months ago)?
++    Two major things: full latin-2 support and export
++    filters for alevt-cap and alevt itself.
++
++    For the latin-2 support page enhancement packets
++    have to be decoded and some latin-1 pages may
++    benefit from that, too.  Note: if you select
++    latin-2 everything is latin-2, even cut'n paste.
++    (new cmdline option -charset latin-1|2)
++
++    The export filters allow saving pages in different
++    formats.  At the moment there's ascii (with and with-
++    out color), html, png, and ppm.  The png filter
++    requires libpng.  If you don't have it (or don't want
++    png support) just remove the WITH_PNG from the
++    Makefile.  To save the currently displayed page just
++    press 's'.  See alevt-cap(1) for the format string.
++
++    Preview: 1.5.1 will have the FreeBSD patches and
++    any bug fixes.  (But not more *g*).
++
++Fri Oct  8 02:06:35 MEST 1999 (1.5.0-pre4)
++
++    Finally I could get away from my Playstation and
++    work a little bit on alevt *g*
++
++    - Tried to change alevt-date with freebsd patches from
++      Thomas Runge <runge@rostock.zgdv.de>.  They do not
++      have the timezone and daylight variables.  But I do
++      not have tm_gmtoff.  So it's commented out for the
++      moment.
++    - Made font.[ch] so that only one copy of the fonts is
++      in the executable when including export modules
++      (exp-gfx.c uses them).  Had to tweak the makefile.
++    - Added 's' for saving pages to files.  Prompts for
++      a format string and a filename and saves the
++      currently displayed page.
++      (Formerly, 's' and 'S' were aliases for '/' and '?'
++      (searching))
++    - Found a bug in export.c regarding double height lines.
++    - Added a patch to the contrib dir to pass the URL you
++      click on to netscape.
++
++    The documentation updates are still missing.  That's
++    the last thing to do for 1.5.0.  But that's so boring...
++
++Fri Aug 20 21:28:18 MEST 1999
++
++    Back from holidays and time for alevt...
++
++    - Added html, png, and ppm export modules from Paul.
++    - Fixed the return status for export_output.
++    - Tweaked the makefile for libpng support.
++    - Added the export howto to the contrib dir.
++    - Added Paul's fmt_page routine to contrib as a patch
++      to export.c
++    - Added "-format help" to list all output formats and
++      its options.
++
++    Still to do: update man page of alevt-cap, add export
++    to alevt, add erc to alevt-cap.
++
++    Oh, btw, alevt is running on FreeBSD with the bt848
++    driver from Roger Hardiman <roger@cs.strath.ac.uk> *g*.
++    I wonder if it's possible to port his driver to linux.
++    Maybe it runs better then bttv... (I still get reports
++    with stuck xawtvs ...)
++
++Mon Jul 19 01:15:50 MEST 1999 (1.5.0-pre3)
++
++    - Added export modules.  It's gotten much to complex.
++
++    A lot of things still to do:  add other formats [Paul?],
++    add documentation, add format-help, add export to alevt,
++    add erc to alevt-cap, ...
++
++Mon Jul 12 00:09:03 MEST 1999
++
++    - Added an incomplete 20x24 font to the contrib dir.
++
++Tue Jun 29 00:46:03 MEST 1999 (1.5.0-pre2)
++
++    - Added lanugage tables from Radoslaw.
++    - Added new latin-2 font from Radoslaw.
++    - Fixed a bug with hold graphics.  There's still one bug
++      on CNN's page 100 (has to do with set-after behaviour of
++      color select in hold graphics mode).  The last line of the
++      earth should be blue-blue-green not blue-green-green.
++      AleVT always uses set-at behaviour.  Afaik, this combination
++      (hold + set-after) is the only way to see the difference
++      between set-at and set-after.  Set-after will blow up the
++      code so I will leave it as it is.
++    - vbi now collects all pkt26 and enhances the page before
++      it is passed on.  Seem's to work.
++
++Tue Jun 22 22:13:45 MEST 1999 (1.5.0-pre1)
++
++    - Fixed hamm24.  And, it should be fast now *g*
++    - Moved the language conversion parts to lang.c
++    - Added additional lang_chars for use with the latin-2 charset.
++    - Added -charset latin-1/2 option.
++    - Added pkt x/26 decoding.  ... and noticed, that these packets
++      are sent between line 0 and 1.  FUCK.  Now I have to save
++      all x/26 until the page is complete.  But not today... :-(
++
++      Things are getting more and more uglier.  The right thing
++      to do would be to make a big font with all possible chars
++      (including cyrillic, arabic, smoothed graphics, ...).
++      That would mean to make each char in vtp->data 16 bit.  
++      And then add an attribute word for each char so that the
++      enhanced attributes work, too.  Searching and cut & paste
++      would be more complicated...  but the worst, the pages
++      will be much bigger (4 times larger).  Really bad for
++      the cache and god knows for what else...
++      Is it worth all the trouble???  I don't need that!
++
++Tue Jun 15 01:25:40 MEST 1999
++
++    - Changed .specs file again.  I previously changed alevt.spec
++      instead of alevt.spec.in :-(
++
++Mon Jun 14 23:45:48 MEST 1999 (1.4.9)
++
++    - Made a very simple capture program (alevt-cap).  Just collects
++      the given pages and writes them to disk in ASCII.
++      I will only accept bug reports/fixes, no enhancement requests 
++      at the moment *g*
++      (I can't believe it; I even wrote a man page...)
++    - Changed the subpage delimiter on the command line from '/' to '.'
++      The old one ('/') is still accepted.  (Reason: alevt-cap uses
++      the page number as part of the filename and a / is inconvenient.
++      And I already wanted to let you enter subpages with the keypad
++      and the '.' would be a nice key for that.)
++    - Tweaked the .specs file...  (Btw, alevt-date and alevt-cap should
++      not be installed in the X11 tree.)
++
++Thu Jun 10 22:13:40 MEST 1999
++
++    - moved the hamming decoding and associated table to hamm.c
++    - played with pkt26 to support polish stations.  not finished.
++
++Tue Jun  8 21:00:42 MEST 1999
++
++    - Added -[no]bell option.  And the 'b' key.
++    - Replaced all xio_bell calls with appropriate status messages.
++
++Sat Jun  5 00:42:19 MEST 1999 (1.4.8)
++
++    - Shit.  Just after the release I found a bug.  The header line
++      isn't updated as it should :-(  (Just affects parallel mode
++      transmission, so no new version, yet.)
++    - Created mailing list.  Either go to http://alevt.listbot.com/
++      or write mail to alevt-subscribe@listbot.com.
++    - Added bttv-patch to the contrib dir for those who don't want
++      to wait for bttv-0.6.5.
++
++Fri Jun  4 17:19:41 MEST 1999 (1.4.7)
++
++    - Added autodetection of VBIBUF_SIZE (only with newer bttv, 0.6.5).
++    - Forgot to close vbi_fd in vbi_close :-/
++    - Made ERC on by default.  If the page has no errors it
++      costs nothing and if it has you'll turn it on anyway.
++    - Changed parameters of EV_HEADER.
++    - Removed XAWTV_HACKS.
++    - Updated some docu.
++    - Modified the contrib samples to reflect previous API changes.
++
++Fri May 28 20:16:44 MEST 1999
++
++    - Added status messages.
++    - Added EV_TIMER event.
++    - Added channel change detection (only with newer bttv, 0.6.5).
++      Sends EV_RESET event.  The XAWTV_HACKS can be removed *phww*.
++      Now the cache is automatically cleared if you switch to a
++      new channel.  It even works with a SAT receiver connected to
++      Video-In.
++
++Thu May 27 23:54:32 MEST 1999 (1.4.6 unofficial)
++
++    - Cache reset didn't reset npages and hi_subno.
++    - Added XAWTV_HACKS, that is: alevt scans for a window with
++      the _XAWTV_STATION property and registers for property changes.
++      Result: when switching channels in xawtv, the cache is cleared.
++      (This is just an ugly hack.  Xawtv must already be running
++      when alevt is started.  If you quit and restart xawtv, it no
++      longer works.  There's no method to detect if the monitored
++      xawtv is really the one controlling our /dev/vbi, etc...)
++      Added on request of Paul Ortyl <ortylp@key.net.pl>.
++    - Added error reduction circuit.  It's part of the cache.
++      Errors in a new page are replaced by characters/lines from
++      an already cached (older) page.  May be toggled by pressing
++      'e' (editor is now on 'E').  It's not enabled by default
++      because it takes some CPU time.  Idea by Paul Ortyl.
++    - TODO: clean up.  document new features.  add status messages.
++
++Sun May 23 19:13:07 MEST 1999 (1.4.5)
++
++    - New spec file from Karsten Hopp <karsten.hopp@delix.de>
++    - Changed it even further *g*
++    - Fixed a bug with graphics selection of double height lines.
++    - Documented the -oldbttv option in the man page.  Now it's in
++      every page.  This should finally halve the mails I get.
++      (For the other halve I have to write alevt-capture *g*)
++
++Sat May  8 02:41:21 MEST 1999
++
++    - Ehhh, changed u32 typedef from unsigned long to unsigned int.
++      Same for s32.  The Alpha's longs are 64 bits.
++      Thanks to Sdruddin Rejeb <rejeb@dpmail.epfl.ch>.
++      (There's something strange with this in the X libs.  They are
++      sometimes very lazy about ints and longs.  Someone with an
++      Alpha should check the cut & paste, both, text and graphics
++      selections.)
++
++Thu Apr 29 22:38:37 MEST 1999
++
++    - Updated contrib/t1.c
++    - Added ':' as a subpage delimiter for clicking (2:7 is the same as 2/7)
++
++Mon Apr 19 19:40:09 MEST 1999
++
++    - Switched the scrolling direction of the wheel
++
++Mon Mar 29 01:23:06 MEST 1999 (1.4.4)
++
++    - fixed DST bug in alevt-date
++    - added crude latin-2 support.  'make FONT=latin-2' should be enough.
++      (found the stuff on the website http://www.penguin.cz/~marvin/ of
++      Daniel Smolik <smolikdan@email.cz>.  I don't know if he is the one
++      who made the font).
++
++Wed Mar 17 20:53:59 MET 1999
++
++    - added timeout to alevt-date
++
++Fri Feb 19 18:22:53 MET 1999  (1.4.3>
++
++    - Makefile changes.
++
++Fri Jan 29 18:01:27 MET 1999
++    
++    - fixed bug in dllist.h.  dl_insert_first(h, dl_remove(n)) was only
++      working due to gcc implementation details.
++
++Mon Jan 25 18:33:42 MET 1999  (1.4.2)
++
++    - fixed 'clear cache'.  no longer removes the help pages.
++    - made next/prev key/button to skip missing pages.
++    - added support for wheeled mice.  (I heard it's really cool *g*)
++    - problem with subpages > 0xff fixed.
++
++Thu Jan 21 17:31:46 MET 1999  (1.4.1)
++
++    - added man pages from Thomas Schoepf <schoepf@usa.net>.
++    - added rpm-spec file from Mario Mikocevic <mozgy@times.hr>.
++      (looks a little bit odd, but I don't know very much about rpms)
++    - minor option fix in alevt-date (people are really using it!?!)
++
++Tue Jan  5 03:50:08 MET 1999  (1.4.0)
++
++    - should be 1.3.10 but that gives problems with the help pages :-(
++    - fixed varargs for alpha
++    - default is now -newbttv (aka -fuckbttv).  use -oldbttv for v<0.5.20.
++
++Sat Jan  2 21:40:54 MET 1999
++
++    - small patches to alevt-date (-vbi options and tzset fix)
++    - played with pkt8/30.  what a mess.  MTV is 25:13 ahead *g*
++
++Wed Dec 30 19:30:14 MET 1998  (1.3.9)
++
++    - slightly modified the pll (may need further tuning)
++
++Wed Dec 30 05:27:26 MET 1998  (1.3.8)
++
++    - added pll (-finetune auto).  try -debug for status msgs.
++
++Tue Dec 29 05:15:53 MET 1998  (1.3.7)
++
++    - added finetune option (see README)
++    - you may now type -newbttv instead of -fuckbttv *g*
++
++Mon Dec 28 19:36:32 MET 1998  (1.3.6)
++
++    - Makefile: R5 -> R6  :-(
++    - vbi.c now works without cache.c
++    - added alevt-date (set system time from teletext)
++    - bug in option parsing (error reporting)
++
++Thu Dec 17 19:56:16 MET 1998  (1.3.5)
++
++    - added -L/usr/X11R6/lib in Makefile
++    - put some blurb (in german) in contrib.
++
++Thu Dec 17 05:01:34 MET 1998  (1.3.4)
++
++    - added class hints on (invisible) leader window to make docking
++      in wmaker easier.  instant name for leader is "VTLeader" and for
++      the viewing windows "VTPage"
++    - made the icon a little bit smaller
++
++Mon Dec 14 23:05:41 MET 1998  (1.3.3)
++
++    Release 1.3.3
++
++    - added spanish/portuguese charset decoding
++    - added similar looking glyphs for czech
++    - minor changes on the font
++    - middle click on current page number opens new parent window
++    - case dependant search if the pattern begins with a '!'
++    - line editing may be aborted with ^C
++
++Sun Dec 13 17:55:32 MET 1998  (1.3.2)
++
++    - when there were multiple windows of the same page, cycling through
++      the subpages changed all windows.  fixed.
++    - hilight the found text (make it the selection).
++    - slightly modified the hilight colors.
++    - default window size set to 41x25 (looks better).
++    - rewrote the editor.
++
++Sun Dec 13 07:03:10 MET 1998  (1.3.1)
++
++    - fixed one command line option
++    - corrected bug in searching
++
++Sat Dec 12 20:27:03 MET 1998  (1.3.0)
++
++    Release 1.3.0
++
++    - searching is now ready (still need a status line for error msgs).
++    - set SIGPIPE to SIG_DFL.  some shells (KDE) set it to SIG_IGN and then
++      the timer task won't be killed on exit.
++    - updated the help pages.
++    - I'm frustrated!  BTTV_VERSION doesn't work on /dev/vbi.  So no
++      autodetection of driver version.  Added -fuckbttv option instead.
++
++Fri Dec 11 19:36:03 MET 1998  (1.2.5)
++
++    - reworked national charset (lang) handling.  everthing now done in vbi.c.
++      the rest just deals with latin-1.
++    - first version of searching (functional, but dirty.  needs more work.)
++
++Thu Dec 10 20:06:27 MET 1998  (1.2.4)
++
++    - new file edline.c (line editor for the menu line. start for searching...)
++    - blinking cursor
++    - added an 48x48 icon from Ulf Rompe
++    - added pasting into the line editor (insert key).
++    - release ownership of XA_PRIMARY when deselecting selection.
++
++Tue Dec  8 21:26:26 MET 1998  (1.2.3)
++
++    - new file ui.c (most user interface stuff from main.c)
++    - rewrote option parsing
++    - allow specification of child windows on command line. now
++      it's possible to regenerate the complete window layout by
++      the commandline (may be of some use for session management).
++    - some spelling fixes in the help pages from Mark Bryars
++
++Mon Dec  7 16:59:28 MET 1998  (1.2.2)
++
++    - reworked hidden handling in xio.c
++
++Sun Dec  6 19:54:10 MET 1998  (1.2.1)
++
++    - class name changed!  from Alevt to AleVT.
++    - window/icon title shows current page number
++    - changed the icon to a 64 pixel width one.  not nice but ...
++    - added a small mini icon for the title bar. is there a property I can set?
++    - pressing on the CPN puts the page on hold
++    - pressing on the violet * reveals concealed text
++    - added simple menu if no FastText menu is present
++    - allow subpages to be specified on the command line (eg 100/4)
++
++Sat Dec  5 20:59:51 MET 1998  (1.2.0)
++
++    Release 1.2.0
++
++    - finished the help pages.
++    - added command line handling
++    - added user geometry handling in xio.c
++
++Sat Dec  5 02:28:16 MET 1998  (1.1.2)
++
++    - allow magazin 9 (help system)
++    - start box char after a pagenumber selects subpage 1 (hack)
++    - added a crude page editor (just to create the help pages.  not for users.)
++    - started with the online help system (sounds great, hehe)
++
++Tue Dec  1 20:19:53 MET 1998  (1.1.1)
++
++    - added concept of parent and child windows.  now, the middle mouse
++      button changes the contens of the child window.  if there isn't
++      one, it is created.
++    - Middle mouse button on x/y (subpage cycling) selects the previous
++      subpage.  (updating the child with subpages is hairy...)
++
++Sun Nov 29 23:34:18 MET 1998  (1.1.0)
++
++   Release 1.1.0
++
++   - removed most of the recovery for single bad lines (does too much harm)
++   - changed handling of parallel mode transmission (untested.  unused in .de)
++   - added selection (text & graphic!).  try pasting into xpaint :-)
++   - added cache-clear function ('c')
++   - click on x/y selects the next subpage
++   - some minor tweaks
++   - added an icon bitmap.
++
++Wed Nov 24 23:33:34 MET 1998  (1.0.0)
++
++    First Release 1.0.0
+diff -r af23d23c278b util/alevt/EXPORT.HOWTO
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/EXPORT.HOWTO  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,84 @@
++HOW TO IMPLEMENT A NEW EXPORT MODULE:
++
++As an example look at exp-txt.c (it implements two modules which
++are pretty similar).
++
++You have to create one exported structure (struct export_module).
++This structure holds the following data:
++
++1. The name of the format (example: "ascii").
++
++2. The default extension to use for building filenames ("txt").
++
++3. A list of module options. It's a 0 terminated array of char
++pointers, one for each option (similar to argv of main).
++If an option string contains a '=', it is an option that
++requires an argument.  The part after the '=' is ignored at
++the moment.  Later, I want to add help messages that show
++these options strings and then the part after the '=' becomes
++useful.
++If you do not have local options, set this field to 0.
++
++4. The number of bytes for local data in the export structure.
++There you may store data collected during option parsing or
++for whatever you want.
++Don't use global variables for storing this data!  With
++alevt-cap you may give:
++
++alevt-cap -format ascii,color 100  -format ascii 100
++
++to save the page in two different formats.  Using global
++vars would inhibit this.  The data area in struct export
++starts at the 'data' field.  You have to cast it to the
++appropriate type (see the D macro in exp-txt.c).
++If you do not need local data, set this field to 0.
++
++5. An open function (or call it constructor).  It is called
++when your module is needed and it is passed a struct export
++(the instance).  This function may be used to initialize
++the local data in the export struct.
++If all goes well return 0.  Else call export_error (see
++below) and return -1.
++If you do not need an open function, set this field to 0.
++
++6. A close function (or call it destructor).  It is called
++when your module is no longer needed.  If you allocated
++memory in the open func, this is the place to free it.
++If you do not need a close function, set it to 0.
++
++7. An option function.  It is called for each module option
++the user has given.  It is passed an option number (first
++option in the option-array gives 1, ...) and a char pointer
++to the argument for that option (0 if the option does not
++need an arg).  The argument pointer keeps valid until the
++close function is called.
++If all goes well, return 0.  Else call export_error and
++return -1.
++If you gave an option list at point 3 you have to specify
++this function.  Else set it to 0.
++
++8. An output function.  It is called to produce the output.
++It is given the file name to use and a fmt_page pointer.
++The fmt_page contains an interpreted image of the page.
++There are no control chars in it.  It uses the character
++set defined by the two fonts.
++These function may be called consecutive for multiple
++pages.  Don't expect one output for one open/close.
++Return codes as above... (0: ok,  -1: error).
++
++The export_error function:  If one of your functions wants to
++report an error, it has to use the export_error function.
++It's a printf like function to set error messages.  In alevt-cap
++these messages are printed to stderr, in alevt they will be
++shown in the status line (so don't make them too long).
++
++The last step is to add your export_module structure to the
++list of modules in export.c (at the top).
++Please, make sure that this structure is the only exported
++symbol.  All other things should be static.
++
++That's all.  A structure describing your module and 4 functions
++(open, close, option, output) to implement it.  Shouldn't be too
++complicated.
++
++Ciao, ET.
+diff -r af23d23c278b util/alevt/Makefile
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/Makefile      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,130 @@
++VER=1.7.0
++OPT=-O -g -w
++DEFS=-DWITH_PNG
++DEFS+=-DUSE_LIBZVBI
++FONT=vtxt
++MAN_DIR=man
++DESTDIR=
++PREFIX=/usr
++HOSTCC=$(CC)
++CFLAGS=$(OPT) -DVERSION=\"$(VER)\" $(DEFS) -I$(USR_X11R6)/include
++EXPOBJS=export.o exp-txt.o exp-html.o exp-gfx.o font.o
++OBJS=main.o ui.o xio.o fdset.o vbi.o cache.o help.o search.o misc.o hamm.o lang.o $(EXPOBJS)
++TOBJS=alevt-date.o vbi.o fdset.o misc.o hamm.o lang.o
++COBJS=alevt-cap.o vbi.o fdset.o misc.o hamm.o lang.o $(EXPOBJS)
++
++ifneq ($(findstring WITH_PNG,$(DEFS)),)
++EXPLIBS=-lpng -lz -lm
++endif
++
++ifneq ($(findstring USE_LIBZVBI,$(DEFS)),)
++ZVBILIB=-lzvbi -lpthread
++EXPLIBS+=$(ZVBILIB)
++endif
++
++all: alevt alevt-date alevt-cap alevt.1 alevt-date.1 alevt-cap.1
++
++alevt: $(OBJS)
++      $(CC) $(OPT) $(OBJS) -o alevt -L$(PREFIX)/lib -L$(PREFIX)/lib64 -lX11 $(EXPLIBS)
++
++alevt-date: $(TOBJS)
++      $(CC) $(OPT) $(TOBJS) -o alevt-date $(ZVBILIB)
++
++alevt-cap: $(COBJS)
++      $(CC) $(OPT) $(COBJS) -o alevt-cap $(EXPLIBS)
++
++font.o: font1.xbm font2.xbm font3.xbm font4.xbm
++fontsize.h: font1.xbm font2.xbm font3.xbm font4.xbm
++      fgrep -h "#define" font1.xbm font2.xbm font3.xbm font4.xbm >fontsize.h
++
++font1.xbm: bdf2xbm $(FONT)-latin-1.bdf
++      ./bdf2xbm font1 <$(FONT)-latin-1.bdf >font1.xbm
++
++font2.xbm: bdf2xbm $(FONT)-latin-2.bdf
++      ./bdf2xbm font2 <$(FONT)-latin-2.bdf >font2.xbm
++
++font3.xbm: bdf2xbm vtxt-koi8.bdf
++      ./bdf2xbm font3 <vtxt-koi8.bdf >font3.xbm
++
++font4.xbm: bdf2xbm vtxt-iso8859-7.bdf
++      ./bdf2xbm font4 <vtxt-iso8859-7.bdf >font4.xbm
++
++bdf2xbm: bdf2xbm.c
++      $(HOSTCC) bdf2xbm.c -o bdf2xbm
++
++clean:
++      rm -f *.o page*.txt a.out core bdf2xbm font?.xbm fontsize.h
++      rm -f alevt alevt-date alevt-cap
++
++rpm-install: all
++      install -m 0755 alevt        ${RPM_BUILD_ROOT}$(USR_X11R6)/bin
++      install -m 0755 alevt-date   ${RPM_BUILD_ROOT}$(USR_X11R6)/bin
++      install -m 0755 alevt-cap    ${RPM_BUILD_ROOT}$(USR_X11R6)/bin
++      install -m 0644 alevt.1      ${RPM_BUILD_ROOT}$(USR_X11R6)/$(MAN)/man1
++      install -m 0644 alevt-date.1 ${RPM_BUILD_ROOT}$(USR_X11R6)/$(MAN)/man1
++      install -m 0644 alevt-cap.1  ${RPM_BUILD_ROOT}$(USR_X11R6)/$(MAN)/man1
++      install -d 0755 $(RPM_BUILD_ROOT)$(USR_X11R6)/include/X11/pixmaps
++      install -m 0644 alevt.png $(RPM_BUILD_ROOT)$(USR_X11R6)/include/X11/pixmaps
++
++install: all
++      install -m 0755 alevt           $(DESTDIR)$(PREFIX)/bin
++      install -m 0755 alevt-date      $(DESTDIR)$(PREFIX)/bin
++      install -m 0755 alevt-cap       $(DESTDIR)$(PREFIX)/bin
++      install -m 0644 alevt.1         $(DESTDIR)$(PREFIX)/share/man/man1
++      install -m 0644 alevt-date.1    $(DESTDIR)$(PREFIX)/share/man/man1
++      install -m 0644 alevt-cap.1     $(DESTDIR)$(PREFIX)/share/man/man1
++      install -m 0644 alevt.png $(DESTDIR)$(PREFIX)/share/pixmaps
++      install -m 0644 alevt.desktop $(DESTDIR)$(PREFIX)/share/applications
++
++uninstall: clean
++      rm -f /usr/bin/alevt /usr/bin/alevt-cap /usr/bin/alevt-date \
++      /usr/share/pixmaps/alevt.png /usr/share/applications/alevt.desktop \
++      /usr/share/man/man1/alevt.1 /usr/share/man/man1/alevt-cap.1 \
++      /usr/share/man/man1/alevt-date.1
++
++depend:
++      makedepend -Y -- $(CFLAGS_none) -- *.c 2>/dev/null
++
++tar-html: alevt.1 alevt-date.1 alevt-cap.1
++      for i in alevt.1 alevt-date.1 alevt-cap.1 ; do \
++          j=`basename $$i .1` ; \
++          j=`basename $$j .1x` ; \
++          nroff -man $$i | { \
++              echo "<HTML><HEAD><TITLE>AleVT</TITLE></HEAD><BODY>" ; \
++              man2html -bare -uelem U -nodepage ; \
++              echo "</B0DY></HTML>" ; \
++          } | sed -e "s,</B> <B>, ,g" -e "s,</U> <U>, ,g" >~/exit/alevt/$$j.html ;\
++      done
++
++tar: tar-html clean
++      sed s/VERSION/$(VER)/g <alevt.lsm.in >~/exit/alevt/alevt-$(VER).lsm
++      sed s/VERSION/$(VER)/g <alevt.spec.in >alevt.spec
++      cd .. ;\
++          ln -s alevt alevt-$(VER) ;\
++          tar vcfz ~/exit/alevt/alevt-$(VER).tar.gz alevt-$(VER)/* ;\
++          rm alevt-$(VER)
++      cat <CHANGELOG >~/exit/alevt/changes
++
++# DO NOT DELETE
++
++alevt-cap.o: vt.h misc.h fdset.h dllist.h vbi.h cache.h lang.h export.h
++alevt-date.o: os.h vt.h misc.h fdset.h dllist.h vbi.h cache.h lang.h
++cache.o: misc.h dllist.h cache.h vt.h help.h
++exp-gfx.o: lang.h misc.h vt.h export.h font.h fontsize.h
++exp-html.o: lang.h misc.h vt.h export.h
++exp-txt.o: os.h export.h vt.h misc.h
++export.o: vt.h misc.h export.h
++fdset.o: dllist.h misc.h fdset.h
++font.o: font1.xbm font2.xbm font3.xbm font4.xbm
++hamm.o: vt.h misc.h hamm.h
++help.o: vt.h misc.h vt900.out vt901.out vt902.out vt903.out vt904.out vt905.out
++help.o: vt906.out vt907.out vt908.out vt909.out vt910.out vt911.out vt912.out
++lang.o: misc.h vt.h lang.h
++main.o: vt.h misc.h fdset.h dllist.h xio.h vbi.h cache.h lang.h ui.h
++main.o: search.h
++misc.o: misc.h
++search.o: vt.h misc.h cache.h dllist.h search.h
++ui.o: vt.h misc.h xio.h dllist.h vbi.h cache.h lang.h fdset.h
++ui.o: search.h export.h ui.h
++vbi.o: os.h vt.h misc.h vbi.h dllist.h cache.h lang.h fdset.h hamm.h
++xio.o: vt.h misc.h dllist.h xio.h fdset.h lang.h icon.xbm font.h fontsize.h
+diff -r af23d23c278b util/alevt/README
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/README        Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,72 @@
++Hi,
++
++this software is not just a program, it's moreover a legend.
++It is THE protagonist of all videotext applications under Linux.
++
++During the past 10 years the video standards, the APIs, the kernel
++have seen lots of changes.
++But unfortunately this program has NOT seen much maintenance.
++The results of that misfit appearance are:
++
++1. lots of forks flying around in the Internet
++2. lots of patches flying around, some good, some disgusting, some out of time
++3. lots of cruft which is completely outdated or obsolete for other reasons
++
++To handle all that in one big effort I decided to redesign the program
++completely, enlarging its capabilities for DVB-S at the same time.
++
++So here are the changes:
++
++1. Erasure of old help pages and rename / reorganize / update the rest
++-> redesign of the online help system / implying alevt-date and alevt-cap
++
++2. Erasure of old outdated integers, functions, parameters:
++
++- bell, big_buf, debug, display, editor, erc, fine_tune, newbttv,
++- oldbttv
++
++3. Coding style cleanups (no superfluous comments, not more than
++   80 characters per column, no uncommented code.
++
++4. No strange characters in the outfile, latin alphabet in purity instead.
++
++5. Alevt can be started in 4 modes now if you are running it in DVB mode:
++
++- by service id (sid)
++- by teletext pid (ttpid)
++- by channel name
++- without parameter
++
++6. Starting it in DVB mode on the command line it presents you
++a table with human readable values such as sid, teletext pid,
++PMT (Program Map Table), provider name, service name, language, service type.
++This makes it easier for you to start multiple teletext windows
++in multiple console sessions manually.
++
++If working with a script and the option -o (outfile) you can
++also start multiple teletext windows of all channels in a transponder.
++I develop a GUI using TCL / TK 8.5 and Iwidgets 4.01 to do that and other
++tasks graphically (i. e. by mouse click).
++
++7. If you install the program on the command line by typing "make &
++   make install" there is an uninstaller now to revert the installation:
++   "make uninstall".
++
++ENJOY IT!
++
++Uwe Bugla, February 11th, 2010.
++
++External dependencies
++
++AleVT needs some system libraries to be installed in your system.
++They are zlib, libX11, libpng and libzvbi.
++
++Credits go to:
++- Andreas Rottmann from debian.org for compiler fixes and
++  other kinds of investigation.
++- Francesco Lavra for supplying a kernel patch to avoid kernel demux
++  incompatibilities with kernels >= 2.6.32
++- Andy Walls for helpful investigation in kernelspace
++- Edgar Toernig for providing the source version 1.6.2 and doing all the
++  development for the basic versions
++- Tom Zoerner for the implementation of libzvbi
+diff -r af23d23c278b util/alevt/README.OLD
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/README.OLD    Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,78 @@
++Hi,                                           Menden, 21 Sep 2000
++
++    This program decodes and displays Videotext/Teletext from a
++    /dev/vbi device.
++
++
++COMPILE & INSTALL:
++
++    There's nothing to configure.  A simple 'make' is all.
++    If you do not want png support remove the WITH_PNG in
++    the Makefile.  Additionally, if you want a smaller font
++    uncomment the "FONT=neep9" line.
++
++    It gives you 'alevt', 'alevt-date', and 'alevt-cap' and
++    their man pages 'alevt.1x', 'alevt-date.1', and 'alevt-cap.1'.
++
++    You can install them where ever you want (i.e. /usr/local/bin).
++    The programs are self-contained and require no other files.
++
++    NOTE: Be careful with 'make install'.  It's just for me :-)
++
++
++PROBLEMS:
++
++    If you have a lot of decoding errors (lot of these lightning symbols)
++    you may try pressing the 'f' and 'F' key.  This allows fine tuning of
++    the decoder circuit.  There's also a -finetune command line option.
++    This should only be necessary on really bad signals.
++
++    Maybe, I add autotuning later...
++
++    UPDATE: added autotuning.  It's the default.  If you add -debug the
++    the actions of the pll are printed to stdout.
++
++    To get the old (pre finetune) behaviour start it with -finetune 0.
++
++    UPDATE: disabled autotuning *g*  sometimes it's too jumpy...
++
++
++ALEVT-DATE:
++    I added a little tool to set the system time from the videotext
++    time.  The date is not interpreted (not even transmitted on some
++    channels).  So it allows only adjustment of +/-12 hours.
++    The default allowed adjustment is limited to +/-2 hours (use
++    -delta to change).  Without the -set option it just display
++    the date in the format of the date command.  Look at strftime(3)
++    for possible control sequences you may use in the -format option.
++
++
++HACKING:
++
++    If you want to play with the font size, you may resize it with
++    xv (xv font1.xbm).  Just make sure, that its width is a multiple of
++    32 and its height a multiple of 8.  A simple make will create
++    a version of AleTV with the new font.  Warning: a make clean
++    will erase font1.xbm.  The next make will recreate font.xbm from
++    vtxt.bdf.
++
++    AleVT has a built in page editor.  If you start it with -editor
++    you may press 'E' to invoke it.  For the usage you have to consult
++    the sources.  (It's very crude!)
++
++
++TODO: (no specific order)
++
++    - Error correction in alevt-cap
++    - Better language support.  Internal 16-bit charset.
++    - Separated graphics.
++    - Rewrite the whole stuff.  A networked teletext daemon and clients
++      that connect to it for display, capture, cgi, ...
++
++
++NEWER VERSIONS:
++
++    The primary site of AleVT is http://goron.de/~froese
++
++Have fun,
++Edgar Toernig (froese@gmx.de)
+diff -r af23d23c278b util/alevt/ReadmeGR
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/ReadmeGR      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,28 @@
++29-9-2003
++
++ÅëëçíéêÜ ãéá ôï ALEVT 
++Ç ðñïóèÞêç Åëëçíéêþí Ýãéíå ôñïðïðïéþíôáò ôï patch alevt-1.6.3.rus.diff ðïõ âñßóêåôå óôï öÜêåëï
++contrib óôá sources  ôïõ alevt-1.6.3
++
++ÎåêéíÞóôå ôï ðñüãñáììá ìå ôçí ðáñÜìåôñï 
++
++alevt -charset iso8859-7 
++
++ç 
++
++alevt -charset el
++
++ÄïõëåéÝò ðïõ Ý÷ïõí íá ãßíïõí:
++Êáëýôåñïò ó÷åäéáóìüò ôïõ font file vtxt-iso8859-7.bdf 
++ïé Áããëéêïß ÷áñáêôÞñåò ìïéÜæïõí óáí bold óå ó÷Ýóç ìå ôïõò Åëëçíéêïýò êáé õðÜñ÷ïõí 
++êÜðïéá ìéêñÜ ðñïâëçìáôÜêéá ìå ôïõò graphics  (0x01 -0x1f)
++
++¸ëåã÷ïò ãéá ôï áí áðåéêïíßæïíôáé óùóôÜ üëïé ïé ÷áñáêôÞñåò
++
++¼ðïéïò èÝëåé íá âïçèÞóåé ðáñáêáëþ íá ìïõ óôåßëåé ôçò áëëáãÝò ôïõ óôï sl45sms@yahoo.gr
++Áí êÜðïéïò êÜíåé åêôåôáìÝíåò áëëáãÝò ðïõ äåí áöïñïýí ôá ÅëëçíéêÜ èá ðñÝðåé íá ôéò óôåßëåé êáé
++óôïí óõããñáöÝá ôïõ ðñïãñÜììáôïò
++
++ÍåüôåñÜ áñ÷åßá ôïõ ðáñüíôïò èá ìðïñåßôå íá âñßóêåôå óôï  http://go.to/sl45sms/alevt/index.html
++
++ÓêáñâÝëçò Ðáíáãéþôçò
+diff -r af23d23c278b util/alevt/TODO
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/TODO  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,12 @@
++Hi, these are issues that I unfortunately cannot resolve myself:
++
++1. graphical menu written in GKT2, to be used in general connection with
++    the outfile (-o) option.
++
++2. for usage without script and outfile option:
++    DVB monitoring demon helping the program to rewrite the PAT when the
++    external player software has chosen a channel which is part of a
++    new transponder.
++    At the moment alevt hangs when the transponder is changed.
++
++Uwe Bugla, February 11th, 2010.
+diff -r af23d23c278b util/alevt/alevt-cap.1
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt-cap.1   Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,53 @@
++.TH alevt-cap 1 "February 07, 2010"
++.SH NAME
++alevt-cap \- capture teletext windows.
++.SH SYNOPSIS
++.B alevt-cap
++.RI [ options ]
++.br
++.SH DESCRIPTION
++This manual page documents briefly the
++.B alevt-cap
++commands.
++.PP
++\fBalevt-cap\fP is a program to capture teletext pages.
++.SH OPTIONS
++.TP
++.B \-cs -charset <latin-1/2/koi8-r/iso-8859-7>
++character set
++.TP
++.B \-f -format <fmt[,options]>
++format to save
++.TP
++.B \-f help -format help
++lists available storage formats
++.TP
++.B \-h -help
++print this page
++.TP
++.B \-n -name <filename>
++page name to save
++.B \-t -timeout <secs>
++timeout
++.TP
++.B \-s -sid <sid>
++service pid
++.TP
++.B \-t -ttpid <ttpid>
++teletext pid
++.TP
++.B \-v -vbi <vbidev>
++vbi device
++.TP
++Sequence: /dev/vbi; /dev/vbi0; /dev/video0; /dev/dvb/adapter0/demux0
++.TP
++ppp.ss stands for a page number and an optional
++subpage number (example: 123.4).
++.TP
++.SH SEE ALSO
++.BR alevt-date (1) , alevt (1).
++.br
++.SH AUTHOR
++alevt-cap was written by Edgar Toernig <froese@gmx.de>.
++.PP
++This manual page was written by Uwe Bugla <uwe.bugla@gmx.de>.
+diff -r af23d23c278b util/alevt/alevt-cap.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt-cap.c   Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,280 @@
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <locale.h>
++#include <signal.h>
++#include <unistd.h>
++#include "vt.h"
++#include "misc.h"
++#include "fdset.h"
++#include "vbi.h"
++#include "lang.h"
++#include "dllist.h"
++#include "export.h"
++
++static volatile int timed_out = 0;
++static char *channel;
++char *outfile = "";
++u_int16_t sid;
++
++
++struct req
++{
++    struct dl_node node[1];
++    char *name; // file name
++    char *pgno_str; // the pgno as given on the cmdline
++    int pgno, subno; // decoded pgno
++    struct export *export; // export data
++    struct vt_page vtp[1]; // the capture page data
++};
++
++
++static void usage(FILE *fp, int exitval)
++{
++    fprintf(fp, "\nUsage: %s [options] ppp.ss...\n", prgname);
++    fprintf(fp,
++          "\n"
++          "  Valid options:\t\tDefault:\n"
++          "    -cs -charset\t\tlatin-1\n"
++          "    <latin-1/2/koi8-r/iso8859-7>\n"
++          "    -f -format <fmt,options>\tascii\n"
++          "    -f help -format help\n"
++          "    -h -help\n"
++          "    -n -name <filename>\t\tttext-%%s.%%e\n"
++          "    -s -sid <sid>\t\t(none;dvb only)\n"
++          "    -to -timeout <secs>\t\t(none)\n"
++          "    -t -ttpid <ttpid>\t\t(none;dvb only)\n"
++          "    -v -vbi <vbidev>\t\t/dev/vbi\n"
++              "                 \t\t/dev/vbi0\n"
++              "                 \t\t/dev/video0\n"
++              "                 \t\t/dev/dvb/adapter0/demux0\n"
++          "\n"
++          "  ppp.ss stands for a page number and an\n"
++          "  optional subpage number (ie 123.4).\n"
++      );
++    exit(exitval);
++}
++
++
++static void exp_help(FILE *fp)
++{
++    struct export_module **ep;
++    char **cp, c;
++
++    fprintf(fp,
++          "\nSyntax: -format Name[,Options]\n"
++          "\n"
++          "    Name\tExt.\tOptions\n"
++          "    --------------------------------\n"
++      );
++    for (ep = modules; *ep; ep++)
++    {
++      fprintf(fp, "    %-7s\t.%-4s", (*ep)->fmt_name, (*ep)->extension);
++      for (c = '\t', cp = (*ep)->options; cp && *cp; cp++, c = ',')
++          fprintf(fp, "%c%s", c, *cp);
++      fprintf(fp, "\n");
++    }
++    fprintf(fp,
++          "\n"
++          "Common options: reveal,hide\n"
++          "Example: -format ansi,reveal,bg=none\n"
++          "\n"
++      );
++    exit(0);
++}
++
++
++static int arg_pgno(char *p, int *subno)
++{
++    char *end;
++    int pgno;
++
++    *subno = ANY_SUB;
++    if (*p)
++    {
++      pgno = strtol(p, &end, 16);
++      if ((*end == ':' || *end == '/' || *end == '.') && end[1])
++          *subno = strtol(end + 1, &end, 16);
++      if (*end == 0)
++          if (pgno >= 0x100 && pgno <= 0x899)
++              if (*subno == ANY_SUB || (*subno >= 0x00 && *subno <= 0x3f7f))
++                  return pgno;
++    }
++    fatal("%s: invalid page number", p);
++}
++
++
++static int option(int argc, char **argv, int *ind, char **arg)
++{
++    static struct { char *nam, *altnam; int arg; } opts[] = {
++      { "-charset", "-cs", 1 },
++      { "-format", "-f", 1 },
++      { "-help", "-h", 0 },
++      { "-name", "-n", 1 },
++      { "-sid", "-s", 1 },
++      { "-timeout", "-to", 1 },
++      { "-ttpid", "-t", 1 },
++      { "-vbi", "-v", 1 },
++    };
++    int i;
++
++    if (*ind >= argc)
++      return 0;
++
++    *arg = argv[(*ind)++];
++    for (i = 0; i < NELEM(opts); ++i)
++      if (streq(*arg, opts[i].nam) || streq(*arg, opts[i].altnam))
++      {
++          if (opts[i].arg)
++              if (*ind < argc)
++                  *arg = argv[(*ind)++];
++              else
++                  fatal("option %s requires an argument", *arg);
++          return i+1;
++      }
++
++    if (**arg == '-')
++    {
++      fatal("%s: invalid option", *arg);
++      usage(stderr, 2);
++    }
++
++    return -1;
++}
++
++
++static void event(struct dl_head *reqs, struct vt_event *ev)
++{
++    struct req *req, *nxt;
++
++    switch (ev->type)
++    {
++      case EV_PAGE: // new page
++      {
++          struct vt_page *vtp = ev->p1;
++
++          for (req = PTR reqs->first; nxt = PTR req->node->next; req = nxt)
++              if (req->pgno == vtp->pgno)
++                  if (req->subno == ANY_SUB || req->subno == vtp->subno)
++                  {
++                      *req->vtp = *vtp;
++                      dl_insert_last(reqs + 1, dl_remove(req->node));
++          }
++      }
++    }
++}
++
++
++int main(int argc, char **argv)
++{
++    char *vbi_name = NULL;
++    int timeout = 0;
++    char *fname = "ttext-%s.%e";
++    char *out_fmt = "ascii";
++    struct export *fmt = 0;
++    int opt, ind;
++    char *arg;
++    struct vbi *vbi;
++    struct req *req;
++    struct dl_head reqs[2]; // simple linear lists of requests & captures
++    int ttpid = -1;
++
++    setlocale (LC_CTYPE, "");
++    setprgname(argv[0]);
++
++    fdset_init(fds);
++    dl_init(reqs); // the requests
++    dl_init(reqs+1); // the captured pages
++
++    ind = 1;
++    while (opt = option(argc, argv, &ind, &arg))
++      switch (opt)
++      {
++            case 1: // charset
++              if (streq(arg, "latin-1") || streq(arg, "1"))
++                  latin1 = 1;
++              else if (streq(arg, "latin-2") || streq(arg, "2"))
++                  latin1 = 0;
++              else if (streq(arg, "koi8-r") || streq(arg, "koi"))
++                  latin1 = KOI8;
++              else if (streq(arg, "iso8859-7") || streq(arg, "el"))
++                  latin1 = GREEK;
++              else
++                  fatal("bad charset (not latin-1/2/koi8-r/iso8859-7)");
++              break;
++          case 2: // format
++              if (streq(arg, "help") || streq(arg, "?") || streq(arg, "list"))
++                  exp_help(stdout);
++              out_fmt = arg;
++              fmt = 0;
++              break;
++          case 3: // help
++              usage(stdout, 0);
++              break;
++          case 4: // name
++              fname = arg;
++              break;
++          case 5: // timeout
++              timeout = strtol(arg, 0, 10);
++              if (timeout < 1 || timeout > 999999)
++              fatal("bad timeout value", timeout);
++              break;
++          case 6: // service id
++              sid = strtoul(arg, NULL, 0);
++              break;
++          case 7: // teletext pid
++              ttpid = strtoul(arg, NULL, 0);
++              break;
++          case 8: // vbi
++              vbi_name = arg;
++              break;
++          case -1: // non-option arg
++              if (not fmt)
++              fmt = export_open(out_fmt);
++              if (not fmt)
++              fatal("%s", export_errstr());
++              if (not(req = malloc(sizeof(*req))))
++              out_of_mem(sizeof(*req));
++              req->name = fname;
++              req->pgno_str = arg;
++              req->pgno = arg_pgno(arg, &req->subno);
++              req->export = fmt;
++              dl_insert_last(reqs, req->node);
++              break;
++      }
++
++    if (dl_empty(reqs))
++      fatal("no pages requested");
++
++    // setup device
++    if (not(vbi = vbi_open(vbi_name, 0, channel, outfile, sid, ttpid)))
++      fatal("cannot open %s", vbi_name);
++    vbi_add_handler(vbi, event, reqs); // register event handler
++
++    if (timeout)
++      alarm(timeout);
++
++    // capture pages (moves requests from reqs[0] to reqs[1])
++    while (not dl_empty(reqs) && not timed_out)
++      if (fdset_select(fds, 30000) == 0) // 30sec select time out
++      {
++          error("no signal.");
++          break;
++      }
++
++    alarm(0);
++    vbi_del_handler(vbi, event, reqs);
++    vbi_close(vbi);
++    if (not dl_empty(reqs))
++      error("capture aborted. Some pages are missing.");
++
++    for (req = PTR reqs[1].first; req->node->next; req = PTR req->node->next)
++    {
++      fname = export_mkname(req->export, req->name, req->vtp, req->pgno_str);
++      if (not fname || export(req->export, req->vtp, fname))
++          error("error saving page %s: %s", req->pgno_str, export_errstr());
++      if (fname)
++          free(fname);
++    }
++    exit(dl_empty(reqs) ? 0 : 1);
++}
+diff -r af23d23c278b util/alevt/alevt-date.1
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt-date.1  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,41 @@
++.TH alevt-date 1 "February 07, 2010"
++.SH NAME
++alevt-date \- print out UTC date.
++.SH SYNOPSIS
++.B alevt-date
++.RI [ options ]
++.br
++.SH DESCRIPTION
++This manual page documents briefly the
++.B alevt-date
++commands.
++.PP
++\fBalevt-date\fP is a program to print the UTC date.
++.SH OPTIONS
++.TP
++.B \-d -delta <max_secs>
++maximum delta
++.TP
++.B \-f -format <fmtstr>
++time format
++.TP
++.B \-h -help
++print this page
++.TP
++.B \-s -set
++set the system clock
++.TP
++.B \-t -timeout <seconds>
++timeout
++.TP
++.B \-v -vbi <vbidev>
++vbi device /dev/vbi; /dev/vbi0; /dev/video0; /dev/dvb/adapter0/demux0
++.TP
++.br
++.SH SEE ALSO
++.BR alevt-cap (1) , alevt (1).
++.br
++.SH AUTHOR
++alevt-date was written by Edgar Toernig <froese@gmx.de>.
++.PP
++This manual page was written by Uwe Bugla <uwe.bugla@gmx.de>.
+diff -r af23d23c278b util/alevt/alevt-date.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt-date.c  Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,225 @@
++#include <stdio.h>
++#include <string.h>
++#include <sys/time.h>
++#include <time.h>
++#include <stdlib.h>
++#include <unistd.h>
++#include <signal.h>
++#include "os.h"
++#include "vt.h"
++#include "fdset.h"
++#include "vbi.h"
++#include "lang.h"
++#include "misc.h"
++
++char *fmt = "%a %b %d %H:%M:%S %Z %Y";
++int max_diff = 2*60*60; // default: 2 hours
++int set_time = 0;
++char *outfile = "";
++static char *channel;
++u_int16_t sid;
++
++
++static void chk_time(int t)
++{
++    struct tm *tm;
++    time_t sys_t;
++    int dt;
++    char buf[256];
++
++    if (t < 0 || t > 235959 || t%100 > 59 || t/100%100 > 59)
++    return;
++
++    sys_t = time(0);
++    tm = localtime(&sys_t);
++
++    // Now convert to UTC seconds
++    t = t/100/100 * 60*60 + t/100%100 * 60 + t%100;
++#ifdef BSD
++    t -= tm->tm_gmtoff; // dst already included...
++#else
++    t += timezone;
++    if (tm->tm_isdst)
++      t -= 60*60;
++#endif
++
++    dt = t - sys_t % (24*60*60);
++    if (dt <= -12*60*60)
++      dt += 24*60*60;
++
++    if (dt <= -max_diff || dt >= max_diff)
++      fatal("time diff too big (%2d:%02d:%02d)", dt/60/60, abs(dt)/60%60, abs(dt)%60);
++
++    sys_t += dt;
++
++    if (set_time)
++    {
++      struct timeval tv[1];
++
++      tv->tv_sec = sys_t;
++      tv->tv_usec = 500000;
++      if (settimeofday(tv, 0) == -1)
++          ioerror("settimeofday");
++    }
++    if (*fmt)
++    {
++      tm = localtime(&sys_t);
++      if (strftime(buf, sizeof(buf), fmt, tm))
++          puts(buf);
++    }
++    exit(0);
++}
++
++
++static void event(void *_, struct vt_event *ev)
++{
++    switch (ev->type)
++    {
++      /* vbi may generate EV_PAGE, EV_HEADER, EV_XPACKET */
++      /* for event arguments see vt.h */
++
++      case EV_HEADER: // a new title line (for running headers)
++      {
++          static int last_t = -1;
++          u8 *s = ev->p1;
++          int i, t = 1;
++
++          if (ev->i2 & PG_OUTOFSEQ)
++              break;
++
++          for (i = 32; i < 40; ++i)
++              if (s[i] >= '0' && s[i] <= '9')
++                  t = t * 10+ s[i] - '0';
++          if (t >= 1000000 && t <= 1235959)
++              if (t == last_t || t - last_t == 1)
++                  chk_time(t - 1000000);
++          last_t = t;
++          break;
++      }
++    }
++}
++
++
++static void usage(FILE *fp, int exit_val)
++{
++    fprintf(fp, "usage: %s [options]\n", prgname);
++    fprintf(fp,
++          "\n"
++          "  Valid options:\t\tDefault:\n"
++          "    -d -delta <max_secs>\t7200 (2 hours)\n"
++          "    -f -format <fmtstr>\t\t%%c\n"
++          "    -h -help\n"
++          "    -s -set\t\t\toff\n"
++          "    -to -timeout <seconds>\t(none)\n"
++          "    -v -vbi <vbidev>\t\t/dev/vbi\n"
++              "                 \t\t/dev/vbi0\n"
++              "                 \t\t/dev/video0\n"
++              "                 \t\t/dev/dvb/adapter0/demux0\n"
++          );
++    exit(exit_val);
++}
++
++
++static int option(int argc, char **argv, int *ind, char **arg)
++{
++    static struct { char *nam, *altnam; int arg; } opts[] = {
++      { "-delta", "-d", 1 },
++      { "-format", "-f", 1 },
++      { "-help", "-h", 0 },
++      { "-set", "-s", 0 },
++      { "-timeout", "-to", 1 },
++      { "-vbi", "-v", 1 },
++    };
++    int i;
++
++    if (*ind >= argc)
++      return 0;
++
++    *arg = argv[(*ind)++];
++    for (i = 0; i < NELEM(opts); ++i)
++      if (streq(*arg, opts[i].nam) || streq(*arg, opts[i].altnam))
++      {
++          if (opts[i].arg)
++              if (*ind < argc)
++                  *arg = argv[(*ind)++];
++              else
++                  fatal("option %s requires an argument", *arg);
++          return i+1;
++      }
++
++    if (**arg == '-')
++    {
++      fatal("%s: invalid option", *arg);
++      usage(stderr, 1);
++    }
++
++    return -1;
++}
++
++
++int main(int argc, char **argv)
++{
++    char *vbi_name = NULL;
++    int timeout = 0;
++    struct vbi *vbi;
++    int opt, ind;
++    char *arg;
++    int ttpid = -1;
++
++    setprgname(argv[0]);
++    ind = 1;
++    while (opt = option(argc, argv, &ind, &arg))
++      switch (opt)
++      {
++          case 1: // -delta
++              max_diff = atoi(arg);
++              if (max_diff < 1)
++                  fatal("-delta: illegal value '%s'", arg);
++              if (max_diff > 12*60*60)
++              {
++                  max_diff = 12*60*60;
++                  error("-delta: %d too big. Assuming %d", arg, max_diff);
++              }
++              break;
++          case 2: // -format
++              fmt = arg;
++              break;
++          case 3: // help
++              usage(stdout, 0);
++              break;
++          case 4: // -set
++              set_time = 1;
++              break;
++          case 5: // -timeout
++              timeout = atoi(arg);
++              if (timeout < 1 || timeout > 60*60)
++                  fatal("-timeout: illegal value '%s'", arg);
++              break;
++          case 6: // -vbi
++              vbi_name = arg;
++              break;
++          case -1:
++              usage(stderr, 1);
++              break;
++      }
++
++    fdset_init(fds);
++
++    if (timeout)
++    {
++      signal(SIGALRM, SIG_DFL); // kill me
++      alarm(timeout);
++    }
++    vbi = vbi_open(vbi_name, 0, channel, outfile, sid, ttpid); // open device
++    if (not vbi)
++      fatal_ioerror(vbi_name);
++    vbi_add_handler(vbi, event, 0); // register event handler
++
++    for (;;)
++      fdset_select(fds, -1); // call scheduler
++
++    /* never reached */
++    vbi_del_handler(vbi, event, 0);
++    vbi_close(vbi);
++    exit(0);
++}
+diff -r af23d23c278b util/alevt/alevt.1
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt.1       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,60 @@
++.TH alevt 1 "February 07, 2010"
++.SH NAME
++alevt \- a teletext browser for analogue and DVB channels.
++.SH SYNOPSIS
++.B alevt
++.RI [ options ]
++.br
++.SH DESCRIPTION
++This manual page documents briefly the
++.B alevt
++commands.
++.PP
++\fBalevt\fP is a program to read teletext from analogue or DVB channels.
++.SH OPTIONS
++.TP
++.B \-c <channel>
++channel name (dvb only)
++.TP
++.B \-ch -child <ppp.ss>
++child window
++.TP
++.B \-cs -charset <latin-1/2/koi8-r/iso8859-7>
++character set
++.TP
++.B \-h -help
++print this page
++.TP
++.B \-o <outfile>
++path + file for all services (dvb only)
++.TP
++.B \-p -parent <ppp.ss>
++parent window
++.TP
++.B \-s -sid <sid>
++service id (dvb only)
++.TP
++.B \-t -ttpid <ttpid>
++teletext pid (dvb only)
++.TP
++.B \-v -vbi <vbidev>
++vbi device
++.TP
++Sequence: /dev/vbi; /dev/vbi0; /dev/video0; /dev/dvb/adapter0/demux0
++.TP
++Order is important! Each page number opens a new window
++with the previously given geometry, device, and display.
++.TP
++ppp.ss stands for a page number and an optional
++subpage number (example: 123.4).
++.TP
++The -child option requires a parent window. So it must
++be preceded by a parent or another child window.
++.TP
++.SH SEE ALSO
++.BR alevt-cap (1), alevt-date (1).
++.br
++.SH AUTHOR
++alevt was written by Edgar Toernig <froese@gmx.de>.
++.PP
++This manual page was written by Uwe Bugla <uwe.bugla@gmx.de>.
+diff -r af23d23c278b util/alevt/alevt.desktop
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/alevt.desktop Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,9 @@
++[Desktop Entry]
++Encoding=UTF-8
++Name=alevt
++Comment=Teletext Browser
++Exec=alevt
++Icon=alevt
++Terminal=false
++Type=Application
++Categories=GNOME;GTK;AudioVideo;Video;
+diff -r af23d23c278b util/alevt/bdf2xbm.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/bdf2xbm.c     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,212 @@
++/*
++    Simple program to convert a bdf-font to a bitmap.
++    The characters are arranged in a 32x8 matrix.
++    usage: bdf2xbm [identifier] <bdf >xbm
++    Copyright 1998,1999 by E. Toernig (froese@gmx.de)
++*/
++
++#include <stdio.h>
++#include <string.h>
++#include <stdlib.h>
++#include <ctype.h>
++#include <stdarg.h>
++
++#define not !
++#define streq(a,b) (strcmp((a),(b)) == 0)
++
++int lineno;
++char *word[64];
++int nword;
++
++char *font = "font%dx%d";
++int w, h, bpl;
++unsigned char *bmap;
++
++
++static void error(char *fmt, ...)
++{
++    va_list args;
++
++    va_start(args, fmt);
++    fprintf(stderr, "bdf2xbm");
++    if (lineno)
++      fprintf(stderr, ":%d", lineno);
++    fprintf(stderr, ": ");
++    vfprintf(stderr, fmt, args);
++    fputc('\n', stderr);
++    exit(1);
++}
++
++
++static int nextline()
++{
++    static char buf[256];
++    char *p;
++    int i;
++
++    do
++    {
++      nword = 0;
++      if (fgets(buf, sizeof(buf), stdin) == 0)
++          return nword;
++      lineno++;
++      
++      p = buf;
++      for (;;)
++      {
++          while (isspace(*p))
++              p++;
++          if (*p == 0)
++              break;
++          word[nword++] = p;
++          while (*p && not isspace(*p))
++              *p = toupper(*p), p++;
++          if (*p == 0)
++              break;
++          *p++ = 0;
++      }
++    } while (nword == 0);
++
++    for (i = nword; i < 64; ++i)
++      word[i] = "";
++    return nword;
++}
++
++
++static inline void setbit(int ch, int x, int y)
++{
++
++    int yo = ch / 32 * h + y;
++    int xo = ch % 32 * w + x;
++
++    bmap[yo * bpl + xo / 8] |= 1 << (xo % 8);
++}
++
++
++static void dobitmap(int ch, int x, int y)
++{
++    int i, j;
++
++    for (i = 0; i < y; ++i)
++    {
++      nextline();
++      if (nword > 1 || strlen(word[0]) != (x + 7) / 8 * 2)
++          error("bad BITMAP");
++      for (j = 0; j < x; ++j)
++      {
++          int c = word[0][j / 4];
++          if (c >= '0' && c <= '9')
++              c -= '0';
++          else if (c >= 'A' && c <= 'F')
++              c -= 'A' - 10;
++          else
++              error("bad hexchar in BITMAP");
++          if (c & (8 >> (j % 4)))
++              setbit(ch, j, i);
++      }
++    }
++}
++
++
++static void dochar()
++{
++    int ch = -1, x = -1,  y = -1;
++
++    while (nextline())
++    {
++      if (streq(word[0], "ENDCHAR"))
++          return;
++      else if (streq(word[0], "ENCODING") && nword == 2)
++      {
++          ch = atoi(word[1]);
++          if (ch < 0 || ch > 255)
++              error("bad character code %d", ch);
++      }
++      else if (streq(word[0], "BBX") && nword == 5)
++      {
++          x = atoi(word[1]), y = atoi(word[2]);
++          if (x < 1 || x > 64 || y < 1 || y > 64)
++              error("bad BBX (%dx%d)", x, y);
++      }
++      else if (streq(word[0], "BITMAP"))
++      {
++          if (x < 0)
++              error("missing BBX");
++          if (ch < 0)
++              error("missing ENDCODING");
++          dobitmap(ch, x, y);
++      }
++    }
++    error("unexpected EOF (missing ENDCHAR)");
++}
++
++
++static void dofile()
++{
++    lineno = 0;
++    w = h = 0;
++    bmap = 0;
++
++    nextline();
++    if (nword != 2 || not streq(word[0], "STARTFONT"))
++      error("not a bdf-file");
++
++    while (nextline())
++    {
++      if (streq(word[0], "ENDFONT"))
++          return;
++      else if (streq(word[0], "FONTBOUNDINGBOX") && nword == 5)
++      {
++          if (bmap)
++              error("multiple FONTBOUNDINGBOXes!?!");
++          w = atoi(word[1]), h = atoi(word[2]);
++          if (w < 1 || w > 64 || h < 1 || h > 64)
++              error("bad bounding box %dx%d\n", w, h);
++          bpl = (w*32+7)/8; // rounding is unnecessary
++          bmap = calloc(1, bpl * h*8);
++          if (bmap == 0)
++              error("out of memory");
++      }
++      else if (streq(word[0], "STARTCHAR"))
++      {
++          if (not bmap)
++              error("no FONTBOUNDINGBOX");
++          dochar();
++      }
++    }
++    error("unexpected EOF (missing ENDFONT)");
++}
++
++
++static void writexbm()
++{
++    char buf[256];
++    int i, j;
++    unsigned char *p = bmap;
++
++    if (not bmap)
++      return;
++
++    sprintf(buf, font, w, h);
++
++    printf("#define %s_width %d\n", buf, 32 * w);
++    printf("#define %s_height %d\n", buf, 8 * h);
++    printf("static unsigned char %s_bits[] = {\n", buf);
++    for (i = 0; i < 16 * h * w / 8; ++i)
++    {
++      for (j = 0; j < 16; ++j)
++          printf("0x%02x,", *p++);
++      printf("\n");
++    }
++    printf("};\n");
++}
++
++
++int main(int argc, char **argv)
++{
++    if (argc > 1)
++      font = argv[1];
++    dofile();
++    writexbm();
++    exit(0);
++}
+diff -r af23d23c278b util/alevt/cache.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/cache.c       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,229 @@
++#include <stdlib.h>
++#include <string.h>
++#include "misc.h"
++#include "dllist.h"
++#include "cache.h"
++#include "help.h"
++
++
++static inline int hash(int pgno)
++{
++    // very simple...
++    return pgno % HASH_SIZE;
++}
++
++
++static void do_erc(struct vt_page *ovtp, struct vt_page *nvtp)
++{
++    int l, c;
++
++    if (nvtp->errors == 0 && ovtp->lines == nvtp->lines)
++      return;
++
++    for (l = 0; l < H; ++l)
++    {
++      if (~nvtp->lines & (1 << l))
++          memcpy(nvtp->data[l], ovtp->data[l], W);
++      else if (ovtp->lines & (1 << l))
++          for (c = 0; c < W; ++c)
++              if (nvtp->data[l][c] == BAD_CHAR)
++                  nvtp->data[l][c] = ovtp->data[l][c];
++    }
++    nvtp->lines |= ovtp->lines;
++}
++
++
++static void cache_close(struct cache *ca)
++{
++    struct cache_page *cp;
++    int i;
++
++    for (i = 0; i < HASH_SIZE; ++i)
++      while (not dl_empty(ca->hash + i))
++      {
++          cp = PTR ca->hash[i].first;
++          dl_remove(cp->node);
++          free(cp);
++      }
++    free(ca);
++}
++
++
++static void cache_reset(struct cache *ca)
++{
++    struct cache_page *cp, *cpn;
++    int i;
++
++    for (i = 0; i < HASH_SIZE; ++i)
++      for (cp = PTR ca->hash[i].first; cpn = PTR cp->node->next; cp = cpn)
++          if (cp->page->pgno / 256 != 9) // don't remove help pages
++          {
++              dl_remove(cp->node);
++              free(cp);
++              ca->npages--;
++          }
++    memset(ca->hi_subno, 0, sizeof(ca->hi_subno[0]) * 0x900);
++}
++
++/*  Get a page from the cache.
++    If subno is SUB_ANY, the newest subpage of that page is returned */
++
++
++static struct vt_page * cache_get(struct cache *ca, int pgno, int subno)
++{
++    struct cache_page *cp;
++    int h = hash(pgno);
++
++    for (cp = PTR ca->hash[h].first; cp->node->next; cp = PTR cp->node->next)
++      if (cp->page->pgno == pgno)
++          if (subno == ANY_SUB || cp->page->subno == subno)
++          {
++              // found, move to front (make it 'new')
++              dl_insert_first(ca->hash + h, dl_remove(cp->node));
++              return cp->page;
++          }
++    return 0;
++}
++
++/*  Put a page in the cache.
++    If it's already there, it is updated. */
++
++
++static struct vt_page * cache_put(struct cache *ca, struct vt_page *vtp)
++{
++    struct cache_page *cp;
++    int h = hash(vtp->pgno);
++    
++    for (cp = PTR ca->hash[h].first; cp->node->next; cp = PTR cp->node->next)
++      if (cp->page->pgno == vtp->pgno && cp->page->subno == vtp->subno)
++          break;
++
++    if (cp->node->next)
++    {
++      // move to front.
++      dl_insert_first(ca->hash + h, dl_remove(cp->node));
++      if (ca->erc)
++          do_erc(cp->page, vtp);
++    }
++    else
++    {
++      cp = malloc(sizeof(*cp));
++      if (cp == 0)
++          return 0;
++      if (vtp->subno >= ca->hi_subno[vtp->pgno])
++          ca->hi_subno[vtp->pgno] = vtp->subno + 1;
++      ca->npages++;
++      dl_insert_first(ca->hash + h, cp->node);
++    }
++
++    *cp->page = *vtp;
++    return cp->page;
++}
++
++/* Same as cache_get but doesn't make the found entry new */
++
++
++static struct vt_page * cache_lookup(struct cache *ca, int pgno, int subno)
++{
++    struct cache_page *cp;
++    int h = hash(pgno);
++
++    for (cp = PTR ca->hash[h].first; cp->node->next; cp = PTR cp->node->next)
++      if (cp->page->pgno == pgno)
++          if (subno == ANY_SUB || cp->page->subno == subno)
++              return cp->page;
++    return 0;
++}
++
++
++static struct vt_page * cache_foreach_pg(struct cache *ca, int pgno, int subno,
++    int dir, int (*func)(), void *data)
++{
++    struct vt_page *vtp, *s_vtp = 0;
++
++    if (ca->npages == 0)
++      return 0;
++
++    if (vtp = cache_lookup(ca, pgno, subno))
++      subno = vtp->subno;
++    else if (subno == ANY_SUB)
++      subno = dir < 0 ? 0 : 0xffff;
++
++    for (;;)
++    {
++      subno += dir;
++      while (subno < 0 || subno >= ca->hi_subno[pgno])
++      {
++          pgno += dir;
++          if (pgno < 0x100)
++              pgno = 0x9ff;
++          if (pgno > 0x9ff)
++              pgno = 0x100;
++          subno = dir < 0 ? ca->hi_subno[pgno] - 1 : 0;
++      }
++      if (vtp = cache_lookup(ca, pgno, subno))
++      {
++          if (s_vtp == vtp)
++              return 0;
++          if (s_vtp == 0)
++              s_vtp = vtp;
++          if (func(data, vtp))
++              return vtp;
++      }
++    }
++}
++
++
++static int cache_mode(struct cache *ca, int mode, int arg)
++{
++    int res = -1;
++
++    switch (mode)
++    {
++      case CACHE_MODE_ERC:
++          res = ca->erc;
++          ca->erc = arg ? 1 : 0;
++          break;
++    }
++    return res;
++}
++
++
++static struct cache_ops cops =
++{
++    cache_close,
++    cache_get,
++    cache_put,
++    cache_reset,
++    cache_foreach_pg,
++    cache_mode,
++};
++
++
++struct cache * cache_open(void)
++{
++    struct cache *ca;
++    struct vt_page *vtp;
++    int i;
++
++    if (not(ca = malloc(sizeof(*ca))))
++      goto fail1;
++
++    for (i = 0; i < HASH_SIZE; ++i)
++      dl_init(ca->hash + i);
++
++    memset(ca->hi_subno, 0, sizeof(ca->hi_subno));
++    ca->erc = 1;
++    ca->npages = 0;
++    ca->op = &cops;
++
++    for (vtp = help_pages; vtp < help_pages + nr_help_pages; vtp++)
++      cache_put(ca, vtp);
++
++    return ca;
++
++fail2:
++    free(ca);
++fail1:
++    return 0;
++}
+diff -r af23d23c278b util/alevt/cache.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/cache.h       Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,41 @@
++#ifndef CACHE_H
++#define CACHE_H
++
++#include "vt.h"
++#include "misc.h"
++#include "dllist.h"
++
++#define HASH_SIZE 113
++
++
++struct cache
++{
++    struct dl_head hash[HASH_SIZE];
++    int erc; // error reduction circuit on
++    int npages;
++    u16 hi_subno[0x9ff + 1]; // 0:pg not in cache, 1-3f80:highest subno + 1
++    struct cache_ops *op;
++};
++
++
++struct cache_page
++{
++    struct dl_node node[1];
++    struct vt_page page[1];
++};
++
++
++struct cache_ops
++{
++    void (*close)(struct cache *ca);
++    struct vt_page *(*get)(struct cache *ca, int pgno, int subno);
++    struct vt_page *(*put)(struct cache *ca, struct vt_page *vtp);
++    void (*reset)(struct cache *ca);
++    struct vt_page *(*foreach_pg)(struct cache *ca, int pgno, int subno, int dir,
++    int (*func)(), void *data);
++    int (*mode)(struct cache *ca, int mode, int arg);
++};
++
++struct cache *cache_open(void);
++#define CACHE_MODE_ERC 1
++#endif
+diff -r af23d23c278b util/alevt/dllist.h
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/dllist.h      Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,55 @@
++#ifndef DLLIST_H
++#define DLLIST_H
++
++
++struct dl_node
++{
++    struct dl_node *next;
++    struct dl_node *prev;
++};
++
++
++struct dl_head
++{
++    struct dl_node *first;
++    struct dl_node *null;
++    struct dl_node *last;
++};
++
++
++static inline struct dl_head * dl_init(struct dl_head *h)
++{
++    h->first = (struct dl_node *)&h->null;
++    h->null = 0;
++    h->last = (struct dl_node *)&h->first;
++    return h;
++}
++
++
++static inline struct dl_node * dl_remove(struct dl_node *n)
++{
++    n->prev->next = n->next;
++    n->next->prev = n->prev;
++    return n;
++}
++
++
++static inline struct dl_node *
++    dl_insert_after(struct dl_node *p, struct dl_node *n)
++{
++    n->next = p->next;
++    n->prev = p;
++    p->next = n;
++    n->next->prev = n;
++    return n;
++}
++
++#define dl_empty(h)             ((h)->first->next == 0)
++#define dl_insert_before(p, n)  dl_insert_after((p)->prev, (n))
++#define dl_insert_first(h, n)   ({ struct dl_node *_n = (n); \
++                                      dl_insert_before((h)->first, _n); })
++#define dl_insert_last(h, n)    ({ struct dl_node *_n = (n); \
++                                      dl_insert_after((h)->last, _n); })
++#define dl_remove_first(h)      dl_remove((h)->first) // mustn't be empty!
++#define dl_remove_last(h)       dl_remove((h)->last) // mustn't be empty!
++#endif
+diff -r af23d23c278b util/alevt/exp-gfx.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/exp-gfx.c     Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,258 @@
++/* Copyright 1999 by Paul Ortyl <ortylp@from.pl> */
++
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include "lang.h"
++#include "export.h"
++#include "font.h"
++#define WW (W*CW) /* pixel width of window */
++#define WH (H*CH) /* pixel hegiht of window */
++
++
++static inline void draw_char(unsigned char * colour_matrix, int fg, int bg,
++    int c, int dbl, int _x, int _y, int sep)
++{
++  int x,y;
++  unsigned char* src= (latin1==LATIN1 ? font1_bits : font2_bits);
++  int dest_x=_x*CW;
++  int dest_y=_y*CH;
++      
++  for(y=0;y<(CH<<dbl); y++)
++    {
++      for(x=0;x<CW; x++)
++      {
++        int bitnr, bit, maskbitnr, maskbit;
++        bitnr=(c/32*CH + (y>>dbl))*CW*32+ c%32*CW +x;
++        bit=(*(src+bitnr/8))&(1<<bitnr%8);
++        if (sep)
++          {
++            maskbitnr=(0xa0/32*CH + (y>>dbl))*CW*32+ 0xa0%32*CW +x;
++            maskbit=(*(src+maskbitnr/8))&(1<<maskbitnr%8);
++            *(colour_matrix+WW*(dest_y+y)+dest_x+x)=
++              (char)((bit && (!maskbit)) ? fg : bg);
++          }
++        else 
++          *(colour_matrix+WW*(dest_y+y)+dest_x+x)=
++            (char)(bit ? fg : bg);
++      }
++    }
++  return;
++}
++
++
++static void prepare_colour_matrix(/*struct export *e,*/
++                    struct fmt_page *pg, 
++                    unsigned char *colour_matrix)
++{
++   int x, y;
++   for (y = 0; y < H; ++y)
++      {
++        for (x = 0; x < W; ++x)
++          { 
++            if (pg->dbl & (1<<(y-1)))
++              {
++                if (pg->data[y-1][x].attr & EA_HDOUBLE)
++                   draw_char(colour_matrix, pg->data[y][x].fg, 
++                          pg->data[y][x].bg, pg->data[y][x].ch, 
++                          (0), 
++                          x, y, 
++                          ((pg->data[y][x].attr & EA_SEPARATED) ? 1 : 0)
++                          );
++              }
++            else
++              {
++                draw_char(colour_matrix, pg->data[y][x].fg, 
++                          pg->data[y][x].bg, pg->data[y][x].ch, 
++                          ((pg->data[y][x].attr & EA_DOUBLE) ? 1 : 0), 
++                          x, y, 
++                          ((pg->data[y][x].attr & EA_SEPARATED) ? 1 : 0)
++                          );
++              }
++          }
++      }
++    return;
++}
++
++
++static int ppm_output(struct export *e, char *name, struct fmt_page *pg);
++
++struct export_module export_ppm = // exported module definition
++{
++    "ppm",                    // id
++    "ppm",                    // extension
++    0,                                // options
++    0,                                // size
++    0,                                // open
++    0,                                // close
++    0,                                // option
++    ppm_output                        // output
++};
++
++
++static int ppm_output(struct export *e, char *name, struct fmt_page *pg)
++{
++  FILE *fp;
++  long n;
++  static u8 rgb1[][3]={{0,0,0},
++                    {1,0,0},
++                    {0,1,0},
++                    {1,1,0},
++                    {0,0,1},
++                    {1,0,1},
++                    {0,1,1},
++                    {1,1,1}};
++  unsigned char *colour_matrix;
++
++  if (!(colour_matrix=malloc(WH*WW))) 
++    {
++      export_error("cannot allocate memory");
++      return 0;
++    }
++
++  prepare_colour_matrix(/*e,*/ pg, (unsigned char *)colour_matrix); 
++  if (not(fp = fopen(name, "w")))
++    {
++      free(colour_matrix);
++      export_error("cannot create file");
++      return -1;
++    }
++  fprintf(fp,"P6 %d %d 1\n", WW, WH);
++
++  for(n=0;n<WH*WW;n++)
++    {
++      if (!fwrite(rgb1[(int) *(colour_matrix+n)], 3, 1, fp))
++      {
++        export_error("error while writting to file");
++        free(colour_matrix);
++        fclose(fp);
++        return -1;
++      }
++    }
++  free(colour_matrix);
++  fclose(fp);
++  return 0;
++}
++
++
++#ifdef WITH_PNG
++
++#include <png.h>
++static int png_open(struct export *e);
++static int png_option(struct export *e, int opt, char *arg);
++static int png_output(struct export *e, char *name, struct fmt_page *pg);
++static char *png_opts[] =     // module options
++{
++    "compression=<0-9>",      // set compression level
++    0
++};
++
++struct png_data                       // private data in struct export
++{
++    int compression;
++};
++
++struct export_module export_png =     // exported module definition
++{
++    "png",                    // id
++    "png",                    // extension
++    png_opts,                 // options
++    sizeof(struct png_data),  // size
++    png_open,                 // open
++    0,                                // close
++    png_option,                       // option
++    png_output                        // output
++};
++
++#define D  ((struct png_data *)e->data)
++
++
++static int png_open(struct export *e)
++{
++    D->compression = Z_DEFAULT_COMPRESSION;
++    return 0;
++}
++
++
++static int png_option(struct export *e, int opt, char *arg)
++{
++    switch (opt)
++    {
++      case 1: // compression=
++          if (*arg >= '0' && *arg <= '9')
++              D->compression = *arg - '0';
++          break;
++    }
++    return 0;
++}
++
++
++static int png_output(struct export *e, char *name, struct fmt_page *pg)
++{
++  FILE *fp;
++  int x;
++  png_structp png_ptr;
++  png_infop info_ptr;
++  png_byte *row_pointers[WH];
++  static u8 rgb8[][3]={{  0,  0,  0},
++                    {255,  0,  0},
++                    {  0,255,  0},
++                    {255,255,  0},
++                    {  0,  0,255},
++                    {255,  0,255},
++                    {  0,255,255},
++                    {255,255,255}};
++  unsigned char *colour_matrix;
++
++  if (!(colour_matrix=malloc(WH*WW))) 
++    {
++      export_error("cannot allocate memory");
++      return -1;
++    }
++  prepare_colour_matrix(/*e,*/ pg, (unsigned char *)colour_matrix); 
++  if (not(fp = fopen(name, "w")))
++    {
++      free(colour_matrix);
++      export_error("cannot create file");
++      return -1;
++      }
++  png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, 
++                                  NULL, NULL, NULL);
++  if (!png_ptr)
++    {
++      free(colour_matrix);
++      fclose(fp);
++      export_error("libpng init error");
++      return -1;
++    }
++  info_ptr = png_create_info_struct(png_ptr);
++  if (!info_ptr)
++    {
++      png_destroy_write_struct(&png_ptr,
++                             (png_infopp)NULL);
++      free(colour_matrix);
++      fclose(fp);
++      export_error("libpng init error");
++      return -1;
++    }
++  png_init_io(png_ptr, fp);
++  png_set_compression_level(png_ptr, D->compression);
++  png_set_compression_mem_level(png_ptr, 9);
++  png_set_compression_window_bits(png_ptr, 15);
++  png_set_IHDR(png_ptr, info_ptr, WW, WH,
++             8, PNG_COLOR_TYPE_PALETTE , PNG_INTERLACE_NONE,
++             PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
++  png_set_PLTE(png_ptr, info_ptr,(png_color*) rgb8 , 8);
++  png_write_info(png_ptr, info_ptr);
++  for(x=0; x<WH; x++)
++    { row_pointers[x]=colour_matrix+x*WW; }
++  png_write_image(png_ptr, row_pointers);
++  png_write_end(png_ptr, info_ptr);
++  png_destroy_write_struct(&png_ptr, &info_ptr);
++  free(colour_matrix);
++  fclose(fp);
++  return 0;
++}
++
++#endif
++
+diff -r af23d23c278b util/alevt/exp-html.c
+--- /dev/null  Thu Jan 01 00:00:00 1970 +0000
++++ b/util/alevt/exp-html.c    Tue Dec 21 12:13:28 2010 +0100
+@@ -0,0 +1,299 @@
++/* Copyright 1999 by Paul Ortyl <ortylp@from.pl> */
++
++#include <stdio.h>
++#include <string.h>
++#include "lang.h"
++#include "export.h"
++
++static int html_open(struct export *e);
++static int html_option(struct export *e, int opt, char *arg);
++static int html_output(struct export *e, char *name, struct fmt_page *pg);
++static char *html_opts[] = // module options
++{
++  "gfx-chr=<char>",             // substitute <char> for gfx-symbols
++  "bare",                     // no headers
++   0
++};
++
++struct html_data // private data in struct export
++{
++  u8 gfx_chr;
++  u8 bare;
++};
++
++
++struct export_module export_html =    // exported module definition
++{
++    "html",                   // id
++    "html",                   // extension
++    html_opts,                        // options
++    sizeof(struct html_data), // size
++    html_open,                        // open
++    0,                                // close
++    html_option,              // option
++    html_output                       // output
++};
++
++#define D  ((struct html_data *)e->data)
++
++
++static int html_open(struct export *e)
++{
++    D->gfx_chr = '#';
++    D->bare = 0;
++    //e->reveal=1;    // the default should be the same for all formats.
++    return 0;
++}
++
++
++static int html_option(struct export *e, int opt, char *arg)
++{
++  switch (opt)
++    {
++    case 1: // gfx-chr=
++      D->gfx_chr = *arg ?: ' ';
++      break;
++    case 2: // bare (no headers)
++      D->bare=1;
++      break;
++    }
++  return 0;
++}
++
++#define HTML_BLACK   "#000000"
++#define HTML_RED     "#FF0000"
++#define HTML_GREEN   "#00FF00"
++#define HTML_YELLOW  "#FFFF00"
++#define HTML_BLUE    "#0000FF"
++#define HTML_MAGENTA "#FF00FF"
++#define HTML_CYAN    "#00FFFF"
++#define HTML_WHITE   "#FFFFFF"
++
++#undef UNREADABLE_HTML //no '\n'
++#define STRIPPED_HTML   //only necessary fields in header
++
++static int html_output(struct export *e, char *name, struct fmt_page *pg)
++{
++    
++  const char* html_colours[]={ HTML_BLACK,
++                             HTML_RED,
++                             HTML_GREEN,
++                             HTML_YELLOW,
++                             HTML_BLUE,
++                             HTML_MAGENTA,
++                             HTML_CYAN,
++                             HTML_WHITE};
++  FILE *fp;
++  int x, y;
++
++#ifdef UNREADABLE_HTML
++#define HTML_NL
++#else
++#define HTML_NL fputc('\n',fp);
++#endif
++  
++  if (not(fp = fopen(name, "w")))
++    {
++      export_error("cannot create file");
++      return -1;
++    }
++
++if (!D->bare)
++  {
++#ifndef STRIPPED_HTML  
++    fputs("<!doctype html public \"-//w3c//dtd html 4.0 transitional//en\">",fp);
++    HTML_NL
++#endif
++      fputs("<html><head>",fp);
++    HTML_NL
++#ifndef STRIPPED_HTML
++      fputs("<meta http-equiv=\"Content-Type\" content=\"text/html;",fp);
++    switch(latin1) {
++      case LATIN1: fprintf(fp,"charset=iso-8859-1\">"); break;
++      case LATIN2: fprintf(fp,"charset=iso-8859-2\">"); break;
++      case KOI8: fprintf(fp,"charset=koi8-r\">"); break;
++      case GREEK: fprintf(fp,"charset=iso-8859-7\">"); break;
++    }
++    HTML_NL
++      fputs("<meta name=\"GENERATOR\" content=\"alevt-cap\">",fp);
++    HTML_NL
++#else
++    switch(latin1) {
++      case LATIN1: fprintf(fp,"<meta charset=iso-8859-1\">"); break;
++      case LATIN2: fprintf(fp,"<meta charset=iso-8859-2\">"); break;
++      case KOI8: fprintf(fp,"<meta charset=koi8-r\">"); break;
++      case GREEK: fprintf(fp,"<meta charset=iso-8859-7\">"); break;
++    }
++    HTML_NL
++#endif
++      fputs("</head>",fp);
++    fputs("<body text=\"#FFFFFF\" bgcolor=\"#000000\">",fp);
++    HTML_NL
++      } //bare
++
++      fputs("<tt><b>",fp);
++    HTML_NL
++
++  // write tables in form of HTML format
++  for (y = 0; y < 25; ++y)
++    { 
++      int last_nonblank=0;
++      int first_unprinted=0;
++      int last_space=1;
++      // previous char was &nbsp;
++      // is used for deciding to put semicolon or not
++      int nbsp=0; 
++
++      // for output filled with ' ' up to 40 chars
++      // set last_nonblank=39
++      for (x = 0 ; x < 40; ++x) 
++      { 
++        if (pg->data[y][x].attr & EA_GRAPHIC)
++          {pg->data[y][x].ch= D->gfx_chr;}
++        
++        if (pg->data[y][x].ch!=' ')
++        {
++          last_nonblank=x;
++        }
++      }
++
++      for (x = 0 ; x <= last_nonblank ; ++x)
++      {
++        if (pg->data[y][x].ch==' ')
++          {
++            // if single space between blinking/colour words
++            // then make the space blinking/colour too
++            if ((x)&&(x<39))
++              {
++                if ((pg->data[y][x-1].ch!=' ')
++                    &&(pg->data[y][x+1].ch!=' ')
++                    &&(pg->data[y][x-1].attr & EA_BLINK)
++                    &&(pg->data[y][x+1].attr & EA_BLINK))
++                  {pg->data[y][x].attr |= EA_BLINK;}
++                else              
++                  {pg->data[y][x].attr &= ~EA_BLINK;}
++                          
++                if ((pg->data[y][x-1].ch!=' ')
++                    &&(pg->data[y][x+1].ch!=' ')
++                    &&(pg->data[y][x-1].fg==pg->data[y][x+1].fg))
++                  {pg->data[y][x].fg=pg->data[y][x-1].fg;}
++                else
++                  pg->data[y][x].fg=7;
++              }
++            else
++              {
++                pg->data[y][x].attr &= ~EA_BLINK;
++                pg->data[y][x].fg=7;
++              }
++          }
++        else
++          {
++            // if foreground is black set the foreground to previous 
++            // background colour to let it be visible
++            if (!pg->data[y][x].fg)
++              {pg->data[y][x].fg=pg->data[y][x].bg;}
++          }
++        //check if attributes changed,
++        //if yes then print chars and update first_unprinted
++        //if not then go to next char
++        if (x)
++          {
++            if (((
++                  (pg->data[y][x].attr & EA_BLINK)
++                  ==
++                  (pg->data[y][x-1].attr & EA_BLINK)
++                  )
++                 &&
++                 (
++                  pg->data[y][x].fg == pg->data[y][x-1].fg
++                  ))
++                &&(x!=last_nonblank))
++              
++              { continue; }
++          }
++        else continue;
++          
++        {
++          int z=first_unprinted;
++          for(;(pg->data[y][z].ch==' ') && (z<x);z++)
++            {
++              if (last_space)
++                {
++                  fprintf(fp,"&nbsp");
++                  last_space=0;
++                  nbsp=1;
++                }
++              else 
++                {
++                  fputc(' ',fp);
++                  last_space=1;
++                  nbsp=0;
++                }
++            }
++         
++          first_unprinted=z;
++          
++          if (z==x) continue; 
++          
++          if (pg->data[y][first_unprinted].attr & EA_BLINK) 
++            {
++              fprintf(fp,"<blink>");
++              nbsp=0;
++            }
++          
++          if (pg->data[y][first_unprinted].fg!=7)
++            {
++